{"version":3,"sources":["webpack:///client.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/jquery/dist/jquery.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/fasterdom/fasterdom.js","webpack:///./js/base/controller/Abstract.controller.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/Observable.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/Device.service.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/helpers/createClass.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/signal/Signal.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/root.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/instances.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/object/keys.js","webpack:///./js/helper/global.helper.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/Subscriber.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/object/assign.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/helpers/toConsumableArray.js","webpack:///./js/services/gateways/WindowGateway.service.js","webpack:///./js/base/controller/TransitionEvent.controller.js","webpack:///./js/framework/constants/Selectors.const.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/lib/helper.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/update-geometry.js","webpack:///./js/components/controller/dws01/Identifiers.const.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/update-scroll.js","webpack:///./js/framework/constants/Identifiers.const.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/_object-sap.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/weak-map.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/_object-assign.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operator/map.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/isFunction.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/errorObject.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/lib/dom.js","webpack:///./js/base/controller/Debug.controller.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/object/define-property.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/Subscription.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/fromEvent.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/get-iterator.js","webpack:///./js/base/constants/States.const.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/tryCatch.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/Observer.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/symbol/rxSubscriber.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/symbol/observable.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/object/assign.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es6.object.assign.js","webpack:///./js/modules/modal/constants/Identifiers.const.js","webpack:///./js/components/constants/Identifiers.const.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/build/node_modules/events/events.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/isArray.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/isObject.js","webpack:///./js/services/EventHelper.service.js","webpack:///./js/helper/SignalWrapper.js","webpack:///./js/framework/controller/offscreen/OffscreenNavigation.controller.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/ArrayObservable.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/isScheduler.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/lib/class.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/json/stringify.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js","webpack:///./js/base/controller/EventEmitterAbstract.controller.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/object/get-own-property-names.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/object/define-properties.js","webpack:///./js/helper/TransitionEndPromise.helper.js","webpack:///./js/helper/Element.helper.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/object/define-property.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es6.object.define-property.js","webpack:///./js/base/controller/State.controller.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/object/keys.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es6.object.keys.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/object/get-own-property-descriptor.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/object/get-own-property-names.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es6.object.get-own-property-names.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/weak-map.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es6.weak-map.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/_collection-weak.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es7.weak-map.of.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es7.weak-map.from.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/get-iterator.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/core.get-iterator.js","webpack:///./js/helper/StatesAlias.helper.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/object/define-properties.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es6.object.define-properties.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/signal/services/SignalListener.service.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/lodash.invert/index.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/lodash.values/index.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/json/stringify.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/map.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/UnsubscriptionError.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/toSubscriber.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/pipe.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/noop.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/FromEventObservable.js","webpack:///./js/base/controller/TransitionEventExecutor.controller.js","webpack:///./js/base/constants/TransitionEventTypes.const.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operator/mergeMap.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/symbol/iterator.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operator/filter.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operator/startWith.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/ScalarObservable.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/EmptyObservable.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/services/Scroll.service.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/merge.js","webpack:///./js/components/controller/dws01/DWS01.controller.js","webpack:///./js/helper/clickoutside.class.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/helpers/defineProperty.js","webpack:///./js/services/LazyImageLoader.service.js","webpack:///./js/framework/controller/Navigation.controller.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/mergeMap.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/subscribeToResult.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/isArrayLike.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/isPromise.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/OuterSubscriber.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/services/Resize.service.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/from.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/mergeAll.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/services/Viewport.service.js","webpack:///./js/framework/controller/Offscreen.controller.js","webpack:///./js/framework/controller/TargetGroupSelect.controller.js","webpack:///./js/components/controller/Iframe.controller.js","webpack:///./js/components/controller/ACC.controller.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/scheduler/async.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/throttle.js","webpack:///./js/elements/constants/Identifiers.const.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/helpers/extends.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/lodash.debounce/index.js","webpack:///./js/components/controller/Tooltip.controller.js","webpack:///./js/decorators/mixins.decorator.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/moduleLoader/ModuleLoader.service.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/debounce/index.js","webpack:///(webpack)/buildin/module.js","webpack:///./js/services/ComponentLauncher.service.js","webpack:///./js/modules/repositories/Module.repository.js","webpack:///./js/modules/map-tool/constants/Identifiers.const.js","webpack:///./js/modules/preact-test/constants/Identifiers.const.js","webpack:///./js/modules/repositories/BaseModule.repository.js","webpack:///./js/services/AppConfigParser.service.js","webpack:///./js/client.js","webpack:///./js/framework/Framework.app.js","webpack:///./js/framework/controller/NavigationItem.controller.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/services/DeviceOrientation.service.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/InnerSubscriber.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/entities/DeviceOrientation.entity.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/filter.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/startWith.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/concat.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/of.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/FromObservable.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/PromiseObservable.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/IteratorObservable.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/ArrayLikeObservable.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/observeOn.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/Notification.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/concatAll.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/identity.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/add/operator/merge.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operator/merge.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/merge.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/add/operator/filter.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/services/Breakpoint.service.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/constants/Breakpoints.const.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/entities/Breakpoint.entity.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operator/pairwise.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/pairwise.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/index.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/main.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/destroy.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/default-setting.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/lib/event-manager.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/lib/guid.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/initialize.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/handler/click-rail.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/handler/drag-scrollbar.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/handler/keyboard.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/handler/mouse-wheel.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/handler/touch.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/handler/selection.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/handler/native-scroll.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/update.js","webpack:///./js/framework/controller/offscreen/OffscreenCart.controller.js","webpack:///./js/framework/controller/offscreen/OffScreenAppDrawer.controller.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/lodash.intersection/index.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/lodash.difference/index.js","webpack:///./js/framework/controller/MainHeader.controller.js","webpack:///./js/framework/controller/CookieDisclaimer.controller.js","webpack:///./js/components/controller/IframeChild.controller.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/build/node_modules/url/url.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/build/node_modules/punycode/punycode.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/build/node_modules/url/util.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/build/node_modules/querystring-es3/index.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/build/node_modules/querystring-es3/decode.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/build/node_modules/querystring-es3/encode.js","webpack:///./js/components/controller/LAS01.controller.js","webpack:///./js/components/repositories/Component.repository.js","webpack:///./js/components/controller/ACCItem.controller.js","webpack:///./js/components/controller/TIC01.controller.js","webpack:///./js/components/controller/SRC01.controller.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/in-viewport/InViewport.service.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operator/throttleTime.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/scheduler/AsyncAction.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/scheduler/Action.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/scheduler/AsyncScheduler.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/Scheduler.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/throttleTime.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/in-viewport/entities/Node.entity.js","webpack:///./js/services/DomObserver.service.js","webpack:///./js/compatibility/MutationObserver.polyfill.js","webpack:///./js/components/controller/Layout.controller.js","webpack:///./js/components/controller/TSS01.controller.js","webpack:///./js/components/controller/SES01.controller.js","webpack:///./js/components/controller/IEB.controller.js","webpack:///./js/components/controller/JFC01.controller.js","webpack:///./js/components/controller/SRF01.controller.js","webpack:///./js/decorators/horizontalScroll.decorator.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/iscroll/build/iscroll.js","webpack:///./js/components/controller/PC01.controller.js","webpack:///./js/services/ElementLoader.service.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/moduleLoader/constants/ModuleLoader.const.js","webpack:///./js/modules/constants/ModuleIdentifier.const.js","webpack:///./js/modules/audio/constants/Identifiers.const.js","webpack:///./js/modules/video/constants/Identifiers.const.js","webpack:///./js/modules/slider/constants/Identifiers.const.js","webpack:///./js/modules/animation/constants/Identifiers.const.js","webpack:///./js/modules/responsive-tables/constants/Identifiers.const.js","webpack:///./js/forms/v2/modules/passwordMeter/constants/Identifiers.const.js","webpack:///./js/modules/productFinder/constants/Identifiers.const.js","webpack:///./js/modules/regionalization/constants/Identifiers.const.js","webpack:///./js/modules/benefitFinder/constants/Identifiers.const.js","webpack:///./js/modules/experience-modules/constants/Identifiers.const.js","webpack:///./js/modules/repositories/splitpoints/Module.splitpoints.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/fastclick/lib/fastclick.js","webpack:///./js/services/StyleLoader.service.js","webpack:///./js/compatibility/Images.polyfill.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/object-fit-images/dist/ofi.es-modules.js","webpack:////Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/picturefill/dist/picturefill.js"],"names":["webpackJsonp","module","exports","__webpack_require__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","global","factory","document","w","Error","window","this","noGlobal","isArrayLike","obj","length","type","jQuery","isWindow","winnow","elements","qualifier","not","isFunction","grep","elem","i","call","nodeType","risSimple","test","filter","indexOf","sibling","cur","dir","createOptions","options","object","each","match","rnotwhite","_","flag","completed","removeEventListener","ready","Data","expando","uid","dataAttr","key","data","name","undefined","replace","rmultiDash","toLowerCase","getAttribute","rbrace","parseJSON","e","dataUser","set","adjustCSS","prop","valueParts","tween","adjusted","scale","maxIterations","currentValue","css","initial","unit","cssNumber","initialInUnit","rcssNum","exec","style","start","end","getAll","context","tag","ret","getElementsByTagName","querySelectorAll","nodeName","merge","setGlobalEval","elems","refElements","l","dataPriv","get","buildFragment","scripts","selection","ignored","tmp","wrap","contains","j","fragment","createDocumentFragment","nodes","rhtml","appendChild","createElement","rtagName","wrapMap","_default","innerHTML","htmlPrefilter","lastChild","childNodes","firstChild","textContent","push","createTextNode","inArray","ownerDocument","rscriptType","returnTrue","returnFalse","safeActiveElement","activeElement","err","on","types","selector","fn","one","origFn","event","off","apply","arguments","guid","add","manipulationTarget","content","disableScript","restoreScript","rscriptTypeMasked","removeAttribute","cloneCopyEvent","src","dest","pdataOld","pdataCur","udataOld","udataCur","events","hasData","access","handle","extend","fixInput","rcheckableType","checked","defaultValue","domManip","collection","args","callback","concat","first","hasScripts","node","doc","iNoClone","value","support","checkClone","rchecked","index","self","eq","html","map","clone","_evalUrl","globalEval","rcleanScript","remove","keepData","cleanData","parentNode","removeChild","actualDisplay","appendTo","body","display","detach","defaultDisplay","elemdisplay","iframe","documentElement","contentDocument","write","close","curCSS","computed","width","minWidth","maxWidth","getStyles","getPropertyValue","pixelMarginRight","rnumnonpx","rmargin","addGetHookIf","conditionFn","hookFn","vendorPropName","emptyStyle","capName","toUpperCase","slice","cssPrefixes","setPositiveNumber","subtract","matches","Math","max","augmentWidthOrHeight","extra","isBorderBox","styles","val","cssExpand","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","boxSizingReliable","parseFloat","showHide","show","hidden","values","isHidden","Tween","easing","prototype","init","createFxNow","setTimeout","fxNow","now","genFx","includeWidth","which","attrs","height","opacity","createTween","animation","Animation","tweeners","defaultPrefilter","props","opts","toggle","hooks","oldfire","anim","orig","dataShow","queue","_queueHooks","unqueued","empty","fire","always","overflow","overflowX","overflowY","rfxtypes","isEmptyObject","done","hide","propFilter","specialEasing","camelCase","isArray","cssHooks","expand","properties","result","stopped","prefilters","deferred","Deferred","tick","currentTime","remaining","startTime","duration","temp","percent","tweens","run","notifyWith","resolveWith","promise","originalProperties","originalOptions","stop","gotoEnd","rejectWith","proxy","fx","timer","progress","complete","fail","getClass","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","jqXHR","inspect","selected","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","target","deep","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","ct","finalDataType","firstDataType","contents","shift","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","prev","responseFields","dataFilter","split","throws","state","error","buildParams","prefix","traditional","v","rbracket","getWindow","defaultView","arr","class2type","toString","hasOwn","hasOwnProperty","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","jquery","constructor","toArray","num","pushStack","prevObject","last","len","sort","splice","copy","copyIsArray","isPlainObject","random","isReady","msg","noop","Array","isNumeric","realStringObj","code","script","indirect","eval","trim","text","head","string","makeArray","results","Object","second","invert","callbackExpect","arg","Date","Symbol","iterator","Sizzle","seed","m","nid","nidselect","groups","newSelector","newContext","preferredDoc","setDocument","documentIsHTML","rquickExpr","getElementById","id","getElementsByClassName","qsa","compilerCache","rbuggyQSA","rescape","setAttribute","tokenize","ridentifier","toSelector","join","rsibling","testContext","qsaError","select","createCache","cache","keys","Expr","cacheLength","markFunction","assert","div","addHandle","handler","attrHandle","siblingCheck","a","b","diff","sourceIndex","MAX_NEGATIVE","nextSibling","createPositionalPseudo","argument","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","checkNonElements","doneName","xml","oldCache","uniqueCache","outerCache","newCache","dirruns","uniqueID","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","find","dirrunsUnique","pop","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","classCache","tokenCache","sortOrder","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","els","hasCompare","parent","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","attr","specified","duplicates","detectDuplicates","sortStable","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","nodeIndex","useCache","pseudo","idx","matched","has","innerText","lang","elemLang","hash","location","root","focus","hasFocus","href","tabIndex","enabled","disabled","selectedIndex","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","soFar","preFilters","cached","token","compiled","div1","unique","isXMLDoc","until","truncate","is","siblings","n","rneedsContext","rsingleTag","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","children","next","targets","closest","pos","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","reverse","Callbacks","firing","memory","fired","locked","firingIndex","once","stopOnFalse","disable","lock","fireWith","tuples","then","fns","newDefer","tuple","returned","notify","resolve","reject","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","updateFunc","readyList","readyWait","holdReady","hold","wait","triggerHandler","readyState","doScroll","chainable","emptyGet","raw","bulk","acceptData","owner","register","defineProperty","writable","configurable","stored","camel","removeData","_data","_removeData","camelKey","dequeue","startLength","setter","clearQueue","count","defer","pnum","source","el","option","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","handleObjIn","eventHandle","t","handleObj","special","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","fix","handlerQueue","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","sel","isNaN","fixHooks","keyHooks","original","charCode","keyCode","mouseHooks","eventDoc","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","originalEvent","fixHook","Event","load","noBubble","trigger","blur","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","timeStamp","isSimulated","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","related","relatedTarget","rxhtmlTag","rnoInnerhtml","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","append","prepend","insertBefore","before","after","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","insert","HTML","BODY","view","opener","getComputedStyle","swap","old","computeStyleTests","cssText","container","divStyle","pixelPositionVal","reliableMarginLeftVal","marginLeft","boxSizingReliableVal","marginRight","pixelMarginRightVal","backgroundClip","clearCloneStyle","pixelPosition","reliableMarginLeft","reliableMarginRight","marginDiv","rdisplayswap","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","cssProps","float","origName","isFinite","getBoundingClientRect","left","margin","padding","border","suffix","expanded","parts","propHooks","eased","step","linear","p","swing","cos","PI","timerId","rrun","*","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","optDisabled","radioValue","boolHook","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","rfocusable","rclickable","removeProp","tabindex","parseInt","for","class","rclass","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","classNames","hasClass","rreturn","rspaces","valHooks","optionSet","rfocusMorph","onlyHandlers","bubbleType","ontype","eventPath","isTrigger","parentWindow","simulate","hover","fnOver","fnOut","focusin","attaches","nonce","rquery","JSON","parse","parseXML","DOMParser","parseFromString","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","allTypes","originAnchor","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","status","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","urlAnchor","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","abort","finalText","method","crossDomain","host","param","hasContent","beforeSend","send","getJSON","getScript","wrapAll","firstElementChild","wrapInner","unwrap","visible","getClientRects","r20","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","serialize","serializeArray","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","onreadystatechange","responseType","responseText","binary","text script","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","bind","unbind","delegate","undelegate","size","andSelf","_jQuery","_$","$","noConflict","_interopRequireDefault","__esModule","default","fasterdomPromised","_possibleConstructorReturn2","_possibleConstructorReturn3","_inherits2","_inherits3","_classCallCheck2","_classCallCheck3","_createClass2","_createClass3","_signal","_signal2","rAF","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","FasterDom","debug","_tasks","raf","_scheduled","_flushing","_currentFlush","_currentFrame","rafCounter","hasTasks","frame","getTasks","nextTasks","tasks","addTask","setupFrame","scheduleTasks","addTaskInstant","isFlushing","_this","isScheduled","checkFlush","flush","measure","measureInstant","mutate","mutateInstant","onFrame","onFrameInstant","clear","FasterDomPromised","_FasterDom","promisedTask","addPromised","instance","receiveReInit","message","EVENTS","REINIT","$scope","$root","reInit","_Debug","_Debug2","_State","_State2","_WindowGateway","_WindowGateway2","INIT","AbstractController","_DebugController","_uid","windowGateway","messageEvent","subscribe","root_1","toSubscriber_1","observable_1","pipe_1","Observable","_isScalar","_subscribe","lift","observable","observerOrNext","sink","toSubscriber","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","forEach","PromiseCtor","Rx","config","Promise","subscription","unsubscribe","subscriber","operations","_i","pipeFromArray","toPromise","x","create","BreakpointService","ScrollService","ResizeService","OrientationService","_DeviceOrientation","enumerable","_Resize","_Scroll","_Breakpoint","_DeviceOrientation2","_Resize2","_Scroll2","_Breakpoint2","Device","resizeEvent","scrollEvent","breakpointEvent","orientationEvent","_defineProperty","_defineProperty2","defineProperties","descriptor","Constructor","protoProps","staticProps","_promise","_promise2","_SignalListener","_SignalListener2","Signal","_listener","isOnce","listener","SignalListenerPromised","getListener","isInContext","toRemove","_len","_key","execute","dispatchPromised","_len2","_key2","__window","__self","WorkerGlobalScope","__global","_root","Instance","element","cls","defaultSettings","containerWidth","containerHeight","contentWidth","contentHeight","isRtl","dom","isNegativeScroll","originalScrollLeft","negativeScrollAdjustment","scrollWidth","clientWidth","EventManager","scrollbarXRail","scrollbarX","scrollbarXActive","scrollbarXWidth","scrollbarXLeft","scrollbarXBottom","toInt","isScrollbarXUsingBottom","scrollbarXTop","railBorderXWidth","railXMarginWidth","railXWidth","railXRatio","scrollbarYRail","scrollbarY","scrollbarYActive","scrollbarYHeight","scrollbarYTop","scrollbarYRight","isScrollbarYUsingRight","scrollbarYLeft","scrollbarYOuterWidth","outerWidth","railBorderYWidth","railYMarginHeight","railYHeight","railYRatio","getId","setId","removeId","instances","newId","camelCaseSelector","str","$1","$2","capitalizeFirstLetter","charAt","getDimensions","$el","outerHeight","widthWithMargins","heightWithMargins","getHiddenDimensions","force","visibleContainer","elementClone","containerClone","_jquery2","right","maxHeight","getExpandedDimensions","getUnExpandedDimensions","secondsToMS","qualifyURL","toJQuery","_Element","isHTMLNode","isHTMLElement","isjQueryElement","_jquery","__extends","d","__","isFunction_1","Subscription_1","Observer_1","rxSubscriber_1","Subscriber","_super","destinationOrNext","isStopped","destination","SafeSubscriber","rxSubscriber","_next","_error","_complete","closed","_unsubscribeAndRecycle","_a","_parent","_parents","Subscription","_parentSubscriber","_context","__tryOrSetError","__tryOrUnsub","wrappedComplete","_unsubscribe","_from","_from2","arr2","createMessageStream","_fromEvent","fromEvent","_Observable","scope","MESSAGE","_map","_PostMessage2","sendTo","postMessage","_stringify2","_stringify","_PostMessage","_frontendLogger","WindowGateway","sendToChild","contentWindow","_setTransition","transition","createPromise","transitions","_toConsumableArray3","_set2","setTransitionEndPromise","_setTransitionEl","transitionEl","_transitionEventLogger","info","$transitionEl","_setTransitionEndPromise","_this2","transitionEndPromise","_TransitionEndPromise2","_afterTransition","_set","_toConsumableArray2","_TransitionEndPromise","_TransitionEventExecutor","_TransitionEventExecutor2","_Selectors","_global","_fasterdom","_fasterdom2","TransitionEventController","_TransitionEventExecu","_this3","debugLocal","callbacks","_before","_on","_after","_isOpen","_isAnimated","_this4","initialOpenPromise","attrOpen","SELECTORS","expandedSelector","isOpen","setTransition","setTransitionElement","$trigger","openSilent","executeSilent","closeSilent","beforeOpen","onOpen","afterOpen","afterOpenOnce","beforeClose","onClose","afterClose","afterCloseOnce","afterTransition","afterTransitionOnce","_this5","setOpen","setClosed","activeClass","activeSelector","activeSelectorValue","inactiveSelectorValue","controlsSelector","duringAnimationClass","duringAnimationCloseClass","duringAnimationOpenClass","isEditable","removePsClasses","clsList","startScrolling","axis","stopScrolling","env","isWebKit","supportsTouch","DocumentTouch","supportsIePointer","navigator","msMaxTouchPoints","getThumbSize","thumbSize","minScrollbarLength","maxScrollbarLength","min","updateCss","xRailOffset","bottom","yRailOffset","updateScroll","clientHeight","scrollHeight","existingRails","queryChildren","rail","suppressScrollX","scrollXMarginOffset","suppressScrollY","scrollYMarginOffset","ROOT","BASE","SETTINGS","TRIGGER","BUTTONS","ACCEPT_IMMEDIATE","ACCEPT_LEVEL","LEVELS","DETAILS","EXPANDER","lastTop","lastLeft","createDOMEvent","createEvent","initEvent","dispatchEvent","IDENTIFIERS","NAVIGATION","UL","OFF_SCREEN","CONTENT","APP_DRAWER","CART","OVERLAY","WRAP","QUICK_NAVIGATION","TARGET_GROUP_SELECT","MAIN_HEADER","FOOTER","HEADER","COOKIE_DISCLAIMER","META_NAVIGATION","$export","core","fails","KEY","exp","S","F","getKeys","gOPS","pIE","toObject","IObject","$assign","assign","A","B","K","k","T","aLen","getSymbols","f","isEnum","project","thisArg","map_1","errorObject","cssGet","styleName","cssSet","styleValue","cssMultiSet","DOM","tagName","child","styleNameOrObject","query","getDebugLoggerEmpty","warn","log","getDebugLogger","_LOGGER$warn","_LOGGER$error","_LOGGER$info","_LOGGER$log","pref","detailed","details","_frontendLogger2","DebugController","debugStyle","enable","logger","_debug","flattenUnsubscriptionErrors","errors","reduce","errs","UnsubscriptionError_1","UnsubscriptionError","isArray_1","isObject_1","tryCatch_1","errorObject_1","_subscriptions","hasErrors","trial","tryCatch","sub","isObject","EMPTY","_addParent","subscriptions","subscriptionIndex","FromEventObservable_1","FromEventObservable","StatesContrary","StatesAll","_keys","_keys2","_getIterator2","_getIterator3","_symbol","_symbol2","STATES","fixed","released","scrollable","animating","loading","loaded","handshaked","inViewport","outViewport","destroyed","initialized","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","return","tryCatcher","tryCatchTarget","$$rxSubscriber","getSymbolObservable","$$observable","IDENTIFIER","ACC","PARENTS","LAS01","IFRAME","TIC01","SES01","EXTENDED","QUICK_LINKS","SRC01","SRT01","SRT02","SRT01_LIST_MODIFIER","LIST_MODIFIER","SVG","TOOLTIP","CONTAINER","CLOSE","PFC02","LAYOUT","TSS01","IEB","EXPERIENCE_MODULES","SMXP01","SMXP02","SMXP03","SMXP04","JFC01","SRF01","PCC01","PC01","EventEmitter","_events","_maxListeners","isNumber","isUndefined","defaultMaxListeners","setMaxListeners","TypeError","emit","er","listeners","addListener","newListener","warned","console","trace","g","removeListener","removeAllListeners","listenerCount","evlistener","emitter","determinePrefixToUse","determinedPrefix","prefixes","propToTest","styleToTest","fakeEl","EventHelper","addPrefixedEvent","addPrefixedEventOnce","removePrefixedEvent","_signals","theFN","dispose","_signals$event","SignalSingleton","setTopPosition","scrollPos","y","$metaNav","addHandler","slaveContainer","$mainHeader","_device","getCurrent","_device2","_TransitionEvent","_TransitionEvent2","_Identifiers","_Bucket","_Bucket2","_perfectScrollbar","_perfectScrollbar2","OffScreenNavigationController","_TransitionEventContr","$mainNav","_canScroll","_childOpening","initialOpen","initialize","swipePropagation","controller","framework","offscreenNavigation","Observable_1","ScalarObservable_1","EmptyObservable_1","isScheduler_1","ArrayObservable","array","scheduler","of","isScheduler","ScalarObservable","EmptyObservable","schedule","oldAdd","oldRemove","classList","_weakMap","_weakMap2","_Abstract","_Abstract2","_eventEmitter","EventEmitterAbstractController","_AbstractController","_eeLogger","caller","subscribeOnce","subscribePre","prependListener","subscribePreOnce","prependOnceListener","createTransitionEndPromise","$transitionElement","_EventHelper2","propertyName","_EventHelper","TransitionEndPromiseHelper","_typeof2","_typeof3","o","Node","HTMLElement","$Object","it","desc","triggerStateChange","_onStateChange","_getOwnPropertyDescriptor","_getOwnPropertyDescriptor2","_getOwnPropertyNames","_getOwnPropertyNames2","_States","_States2","_StatesAlias","_StatesAlias2","_lodash","_lodash2","_lodash3","_lodash4","allowed","StateController","allowedStates","addAllowedMultiple","onStateChange","addAllowed","includes","states","removeAllowed","setState","stateContrary","removeState","setStates","_len3","_key3","hasState","$keys","getOwnPropertyDescriptor","toIObject","$getOwnPropertyDescriptor","getOwnPropertyNames","WeakMap","InternalMap","redefine","meta","weak","validate","getWeak","isExtensible","uncaughtFrozenStore","ufstore","wrapper","methods","def","$WeakMap","freeze","getConstructor","NEED","proto","_f","redefineAll","anObject","anInstance","forOf","createArrayMethod","$has","arrayFind","arrayFindIndex","that","_l","UncaughtFrozenStore","findUncaughtFrozen","store","entry","delete","NAME","IS_MAP","ADDER","C","iterable","_t","getIterator","iterFn","_defineProperties","_defineProperties2","StatesAlias","uckey","keyOpen","startsWith","openFncs","D","SignalListener","ctxt","baseTimes","iteratee","arrayLikeKeys","inherited","isArguments","skipIndexes","isIndex","baseForOwn","baseFor","baseInverter","accumulator","baseKeys","isPrototype","nativeKeys","MAX_SAFE_INTEGER","reIsUint","Ctor","objectProto","isArrayLikeObject","propertyIsEnumerable","objectToString","argsTag","isLength","isObjectLike","funcTag","genTag","identity","transform","fromRight","keysFunc","toIteratee","arrayMap","baseValues","$JSON","stringify","MapOperator","Subscriber_1","MapSubscriber","stack","nextOrObserver","noop_1","isNodeStyleEventEmitter","sourceObj","isJQueryStyleEventEmitter","isNodeList","isHTMLCollection","isEventTarget","eventName","setupSubscription","source_1","source_2","source_3","isValidType","_TransitionEventTypes2","isAttempt","checkTransitionEndPromise","_transitionEventExecutorLogger","catch","dispatchBefore","dispatchOn","dispatchAfter","emitEvents","_SignalWrapper2","dispatchSilent","_EventEmitterAbstract2","_EventEmitterAbstract3","_SignalWrapper","_TransitionEventTypes","TransitionEventExecutor","_EventEmitterAbstract","_this6","setAnimated","removeAnimated","TYPES","mergeMap","resultSelector","concurrent","Number","POSITIVE_INFINITY","mergeMap_1","symbolIteratorPonyfill","Set_1","Set","Map_1","Map","$$iterator","predicate","filter_1","startWith","startWith_1","cacheAndReturn","didChange","tryCachedReturn","getWindowScroll","determineDirection","oldX","oldY","newX","newY","SCROLL_DIRECTIONS","DOWN","UP","LEFT","RIGHT","direction","UNDEFINED","scrollX","scrollY","normalizedX","floor","normalizedY","scrollToPosition","scrollToElement","DIRECTIONS","_startWith","_mergeMap","Events","WHEEL","SCROLL","wheelStream","scrollStream","toPosition","toElement","observables","mergeAll_1","mergeAll","ArrayObservable_1","getSiblings","switchViewTo","switchViews","setCookieLevel","level","cookie","allowedValues","splittedHostName","hostname","domain","_Cookie2","setCookie","lifetime","levels","present","setupLevels","_Identifiers2","parentSiblings","detailElement","detailSiblings","querySelector","buttonImmediate","buttonLevel","expandableTrigger","expandable","isJQuery","_Cookie","DWS01Controller","handleClick","$target","$element","destroy","Clickoutside","$document","addLoadedClass","item","handleVisibleItems","items","handleVisibilityChange","addItemsToWatch","_inViewport2","clearWatchList","addItemsToWatchList","_inViewport","_DomObserver","_DomObserver2","LazyImageLoader","updateEvent","update","watch","OBSERVER_CONFIG","DEFAULT_CONFIG","getInstanceWithCallback","observe","resetMenu","_closeOpen","subController","$items","$this","controllerInstance","_NavigationItem2","$t","isDisabled","isChildOpening","_OffscreenNavigation2","_NavigationItem","_OffscreenNavigation","NavigationController","navController","closeItems","MergeMapOperator","subscribeToResult_1","OuterSubscriber_1","observer","MergeMapSubscriber","hasCompleted","buffer","_tryNext","_innerSub","ish","subscribeToResult","notifyNext","outerValue","innerValue","outerIndex","innerIndex","innerSub","_notifyResultSelector","notifyComplete","OuterSubscriber","outerSubscriber","InnerSubscriber_1","InnerSubscriber","isArrayLike_1","isPromise_1","isPromise","iterator_1","obs","notifyError","cacheSize","_Viewport2","getSize","_filter","_Viewport","RESIZE","FromObservable_1","from","FromObservable","identity_1","windowHeight","windowWidth","ViewportService","useInnerWidth","innerWidth","innerHeight","getPosition","rect","round","isVisible","OFFSET","viewport","disableScroll","enableScroll","afterResizeCalculation","checkForViewportAndExecute","getIdentifier","$btn","getContainer","getController","controllerMap","isOffScreenContainerClosed","$container","isOffScreenContainerOpened","closeOffScreenContainer","$navItem","$body","stateClasses","openOffScreenContainer","toggleOffScreenContainer","$newActiveNavItem","$curActiveNavItems","newActiveController","newActiveContainer","curActiveController","curActiveContainer","isSameContainer","_TargetGroupSelect2","navContainer","getActiveNavItems","$navItems","hideAllOffScreenContainer","controls","curActiveNavItems","newActiveNavItem","offScreenOverlay","offScreenCloseBtn","mapControllers","offScreenContainer","substr","$window","alias","_AbstractController2","_AbstractController3","_OffscreenCart","_OffscreenCart2","_OffScreenAppDrawer","_OffScreenAppDrawer2","_TargetGroupSelect","offScreenCart","offScreenAppDrawer","offScreenNavigation","OffScreenController","$navButtons","_isDisabled","offscreen","getActiveContainer","action","promiseClosed","showSelect","openContainer","_Offscreen2","hideSelect","navTrigger","initNavController","$offScreenWrap","h","_Offscreen","TargetGroupSelectController","navButtons","$offScreenContent","$parent","waitForTimeout","msec","sendHandshake","_IframeChild","HANDSHAKE","origin","connectionId","gateway","$iFrame","handshakeConfirmed","HANDSHAKE_CONFIRMED","stopPollTimer","pollTimer","pollWithHandshake","isHandshaked","waitForLoad","waitForHandshake","handshakeConfirmedPromise","setHeight","pxHeight","setLoadingState","handleLoad","attachLoadHandler","_this7","race","receiveMessage","LOAD","UNLOAD","iFrameChildControllerInstance","_IframeChild2","_url","IFrameController","_this8","_ACCItem2","desktopExpanded","mobileExpanded","multiExpandable","curOpen","itemTrigger","_initial","_userInitiated","subscribeHeight","childHeight","removeHandler","_assign","_assign2","_ACCItem","defaultOptions","itemSelector","scrollOnInitialOpen","scrollOnOpen","mobileOnly","ACCController","isInitiated","optionsViaClass","AsyncAction_1","AsyncScheduler_1","AsyncScheduler","AsyncAction","throttle","durationSelector","defaultThrottleConfig","ThrottleOperator","leading","trailing","ThrottleSubscriber","_leading","_trailing","_hasTrailingValue","throttled","_trailingValue","tryDurationSelector","_sendTrailing","DATEPICKER","VALUE_SLIDER","AUTOCOMPLETE","TOGGLE_SWITCH","LABEL","debounce","invokeFunc","lastArgs","lastThis","lastInvokeTime","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","lastCallTime","timeSinceLastInvoke","maxing","nativeMin","maxWait","shouldInvoke","trailingEdge","cancel","debounced","isInvoking","FUNC_ERROR_TEXT","toNumber","nativeMax","isSymbol","symbolTag","NAN","other","valueOf","reTrim","isBinary","reIsBinary","reIsOctal","freeParseInt","reIsBadHex","freeGlobal","freeSelf","Function","clickoutside","scroll","history","handleCloseClick","handleClickOutside","$close","_clickoutside2","handleTriggerClick","calculateHorizontalPositioning","calculateVerticalPositioning","_clickoutside","TooltipController","offScreenContent","leftOffset","topOffset","placeAbove","mixins","_launch","moduleConfig","Module","_notFound","ModuleRepository","getModuleForIdentifier","ModuleLoader","loadDependencies","modules","immediate","later","timestamp","callNow","webpackPolyfill","deprecate","paths","sortCacheDeps","deps","unsorted","$elements","InitializeClass","offsetA","offsetB","receiveInit","$elem","debugInstance","ComponentLauncher","launchDependencies","launchSingletonDependencies","_ModuleIdentifier","_ModuleIdentifier2","_BaseModule","_BaseModule2","_Module","SplitPoints","newObj","_BaseModuleRepository","registerHandlerForIdentifier","video","VIDEO","audio","AUDIO","slider","SLIDER","ANIMATION","responsiveTables","RESPTABLES","productFinder","PFC","benefitFinder","BFC","regionalization","REG","modal","MODAL","passwordMeter","PASSWORDMETER","maptool","MAPTOOL","preacttest","PREACT_TEST","reacttest","REACT_TEST","experienceModules","formsV1","FORM_V1","formsV2","FORM_V2","MODULE_IDENTIFIERS","MAP_FRAME","FLYOUT","TABS","MAP_TYPES","SHOP","ENERGY","POWERSTATION","SomeClass","BaseModuleRepository","_registry","_windowGateway","getModuleOptions","configAttr","CONFIG_ATTRIBUTE","getModuleConfig","ATTRIBUTE","SELECTOR","removeOnceRequired","loadOnce","ConfigParser","getModules","res","getConfig","launchServices","_fastclick2","attach","use","Breakpoints","_LazyImageLoader2","styleLoaderMeta","path","_StyleLoader2","_Images2","configure","_Framework2","_ComponentLauncher2","_Component2","_Component","SINGLETONS","_ElementLoader2","_moduleLoader2","_Module2","_AppConfigParser2","_ModuleLoader2","_Framework","_ComponentLauncher","_ElementLoader","_ModuleLoader","_moduleLoader","_AppConfigParser","_fastclick","_LazyImageLoader","_StyleLoader","_Images","_Navigation","_Navigation2","_MainHeader","_MainHeader2","_CookieDisclaimer","_CookieDisclaimer2","_Iframe","_LAS01Controller","_LAS01Controller2","Framework","initControllers","NavControllerInstance","mainHeaderController","languageSwitchInstance","updateCallback","updatePosition","initController","$submenu","_h","$content","NavigationItemController","_disabled","rotation","calcOrientation","LANDSCAPE","PORTRAIT","ROTATE","DeviceOrientationService","getOrientations","FilterOperator","FilterSubscriber","concat_1","from_1","concatAll_1","concatAll","of_1","PromiseObservable_1","IteratorObservable_1","ArrayLikeObservable_1","observeOn_1","PromiseObservable","IteratorObservable","ArrayLikeObservable","ObserveOnSubscriber","dispatchNext","dispatchError","StringIterator","ArrayIterator","toLength","numberIsFinite","sign","abs","maxSafeInteger","valueAsNumber","hasError","pow","arrayLike","observeOn","ObserveOnOperator","Notification_1","notification","scheduleMessage","ObserveOnMessage","Notification","createNext","createError","createComplete","kind","hasValue","do","accept","toObservable","throw","undefinedValueNotification","completeNotification","merge_1","merge_2","mergeStatic","breakPoint","setupBreakpoints","styleConfig","breakPointDefinition","_Breakpoints","KEYS","MIN","MAX","isInRange","calcBreakpoint","detectBreakpointChange","getCurrentBreakpoint","_pairwise","pairwise","getBreakpoints","BREAKPOINT_DEFINITION","Breakpoint","pairwise_1","PairwiseOperator","PairwiseSubscriber","hasPrev","unbindAll","useBothWheelAxes","wheelPropagation","wheelSpeed","theme","EventElement","isHandlerProvided","hdlr","eventElements","eventElement","ee","onceHandler","s4","substring","updateGeometry","click-rail","drag-scrollbar","keyboard","wheel","touch","nativeScrollHandler","userSettings","handlerName","bindClickRailHandler","pageOffset","positionTop","positionLeft","bindMouseScrollXHandler","updateScrollLeft","deltaX","newLeft","currentLeft","maxLeft","currentPageX","mouseMoveHandler","mouseUpHandler","bindMouseScrollYHandler","updateScrollTop","deltaY","newTop","currentTop","maxTop","currentPageY","bindKeyboardHandler","shouldPreventDefault","hovered","shouldPrevent","focused","shadowRoot","metaKey","altKey","shiftKey","ctrlKey","bindMouseWheelHandler","getDeltaFromEvent","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","shouldBeConsumedByChild","maxScrollTop","maxScrollLeft","mousewheelHandler","delta","onwheel","onmousewheel","bindTouchHandler","magnitudeX","magnitudeY","applyTouchMove","differenceX","differenceY","globalTouchStart","inGlobalTouch","globalTouchEnd","getTouch","targetTouches","shouldHandle","pointerType","MSPOINTER_TYPE_MOUSE","touchStart","inLocalTouch","startOffset","getTime","easingLoop","touchMove","currentOffset","timeGap","touchEnd","PointerEvent","MSPointerEvent","bindSelectionHandler","getRangeNode","getSelection","getRangeAt","commonAncestorContainer","scrollingLoop","scrollDiff","isSelected","mousePosition","containerGeometry","offsetLeft","offsetTop","bindNativeScrollHandler","getCookie","setCartCountFromCookie","cookieData","htmlData","$cartCounter","OffScreenCartController","$cart","determineDrawerHeight","$drawer","dim","minHeight","_drawerDim","determineMinHeight","curHeight","determineHeights","closeAppDrawerContainer","currentDrawer","openAppDrawerContainer","nextDrawer","isSearchNext","dimensionDiffers","drawerCollection","theHeight","headerHeight","isFixed","OffScreenAppDrawerController","_isFixed","_currentDrawer","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","baseFindIndex","fromIndex","baseIsNaN","baseUnary","cacheHas","getValue","isHostObject","Hash","entries","hashClear","__data__","nativeCreate","hashDelete","hashGet","HASH_UNDEFINED","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","SetCache","setCacheAdd","setCacheHas","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","outer","baseIsNative","isMasked","reIsNative","reIsHostCtor","toSource","castArrayLikeObject","isKeyable","getNative","maskSrcKey","funcToString","reRegExpChar","arrayProto","funcProto","coreJsData","IE_PROTO","intersection","otherArgs","arrayPush","baseDifference","isCommon","valuesLength","LARGE_ARRAY_SIZE","valuesIndex","baseFlatten","depth","isStrict","isFlattenable","spreadableSymbol","isConcatSpreadable","difference","resetAnimIn","animEl","marginTop","animIn","bounds","childPosition","childPositionOpen","checkAnimIn","isAnimIn","resetAnimOut","anims","out","animOut","checkAnimOut","isAnimOut","checkAnimOutAgain","threshold","wasFixed","x2","y2","$child","unfixed","MainHeaderController","_outViewport","_animIn","_animOut","$affected","frameworkNoStickyHeader","$wrap","unaction","removeContainer","$button","showContainer","hideContainer","hideAndMemorize","_CookieService2","cookieName","isCached","_CookieService","CookieDisclaimerController","makeHandshakeConfirmMessage","confirmHandshake","initializeHandshake","handshake","_message$data","makeResizeMessage","makeLoadMessage","makeUnloadMessage","_debounce2","checkForHeight","unload","_debounce","ORIGIN","IFrameChildController","isInIframe","Url","slashes","auth","port","search","pathname","urlParse","parseQueryString","slashesDenoteHost","util","u","urlFormat","isString","format","urlResolve","urlResolveObject","resolveObject","punycode","protocolPattern","portPattern","simplePathPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","http:","https:","ftp:","gopher:","file:","querystring","queryIndex","splitter","uSplit","slashRegex","rest","simplePath","lowerProto","hostEnd","hec","atSign","lastIndexOf","decodeURIComponent","parseHost","ipv6Hostname","hostparts","part","newpart","charCodeAt","validParts","notHost","bit","toASCII","ae","esc","escape","qm","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","hasTrailingSlash","up","isAbsolute","RangeError","mapDomain","regexSeparators","ucs2decode","output","counter","ucs2encode","stringFromCharCode","basicToDigit","codePoint","digitToBasic","digit","adapt","numPoints","firstTime","damp","baseMinusTMin","tMax","skew","decode","basic","oldi","baseMinusT","inputLength","initialN","bias","initialBias","delimiter","maxInt","tMin","encode","handledCPCount","basicLength","q","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","regexNonASCII","not-basic","invalid-input","version","ucs2","qs","sep","regexp","maxKeys","kstr","vstr","xs","stringifyPrimitive","objectKeys","ks","LAS01Controller","_DEPENDENCIES","_defineProperty3","_ACC","_ACC2","_TIC","_TIC2","_SRC","_SRC2","_Iframe2","_Layout","_Layout2","_TSS","_TSS2","_SES","_SES2","_IEB","_IEB2","_JFC","_JFC2","_SRF","_SRF2","_Identifiers3","_DWS","_DWS2","_PC","_PC2","_Tooltip","_Tooltip2","DEPENDENCIES","emitHeight","contentSelector","_heightEmitter","ACCItemController","extendedContentController","TIC01Controller","$searchResults","srt01ListModifier","_isListView","$toggleSwitchInput","toggleViewState","checkListView","SRC01Controller","$toggleSwitch","$toggleSwitchLabel","initToggle","_Node2","unWrap","getRoot","filterVisibility","splitOnVisibility","_Node","STATE_VISIBLE","notVisible","STATE_INVISIBLE","determineItemVisibility","_ViewportService2","setVisibility","findVisibleItems","checkWhichPositionsAreVisible","triggerRefresh","REFRESH_INTERVAL","_ViewportService","_throttleTime","InViewportService","addItemToWatch","getWatchList","throttleTime","async_1","throttle_1","throttleTime_1","Action_1","work","pending","recycleAsyncId","requestAsyncId","_execute","errored","errorValue","actions","Action","Scheduler_1","scheduled","Scheduler","SchedulerAction","ThrottleTimeOperator","clearThrottle","ThrottleTimeSubscriber","MutationObserver","childList","characterData","subtree","scheduleCallback","scheduledObservers","setImmediate","dispatchCallbacks","wrapIfNeeded","ShadowDOMPolyfill","observers","o1","o2","uid_","anyNonEmpty","takeRecords","removeTransientObserversFor","callback_","nodes_","registrations","registrationsTable","registration","removeTransientObservers","forEachAncestorAndObserverEnqueueRecord","record","enqueue","JsMutationObserver","records_","uidCounter","MutationRecord","addedNodes","removedNodes","previousSibling","attributeName","attributeNamespace","oldValue","copyMutationRecord","getRecord","currentRecord","getRecordWithOldValue","recordWithOldValue","clearRecords","recordRepresentsCurrentMutation","selectRecord","lastRecord","newRecord","Registration","transientObservedNodes","userAgent","setImmediateQueue","sentinel","attributeOldValue","attributeFilter","characterDataOldValue","SyntaxError","removeListeners","addListeners","disconnect","copyOfRecords","records","recordToReplaceLast","addListeners_","removeListeners_","addTransientObserver","handleEvent","attrName","relatedNode","namespaceURI","attrChange","MutationEvent","ADDITION","prevValue","changedNode","_isPolyfilled","selectColumns","sections","$sections","sec","$sec","$cols","$prev","$columns","columns","$col","$children","addWrapper","$main","hasMarkup","removeWrapper","LayoutController","breakpoints","showShareContainer","hideShareContainer","_BucketService2","getSelectionPosition","rangeCount","range","cloneRange","collapse","span","insertNode","isValidSelection","Selection","isCollapsed","selectionContent","clonedSelection","cloneContents","tmpDiv","elementInScope","selectionCommonAncestorInScope","$commonAncestor","selectionParentNodeInScope","selectionParentsInScope","isValidSelectionContent","isBanned","checkSelection","selectionText","mapContainerElements","$containerButtons","encodeURI","screen","_BucketService","UserAgent","TSS01Controller","isSupported","isMobile","addHandlerExtended","$accChildItem","setupExtended","addQuickLinksHandler","$quickLinks","$input","SES01Controller","mobileCTA","ctrl","tmpHeight","IEBController","_ACCController","handleStickyTagBarResize","handleStickyTagBarScroll","isInViewport","$stickyTagBar","addStickyTagBarHandler","setupStickyTagBar","JFC01Controller","checkPrevNextAvailability","scroller","currentPage","pages","handleArrowClick","c","isHorizontalScrollingEnabled","getHorizontalScroller","addScrollingClickHandlerTo","controlElements","removeScrollingClickHandlerFrom","initScolling","faqn01","initHorizontalScroll","snap","destroyScrolling","destroyHorizontalScroll","setupHandler","_dec","_class","_horizontalScroll","_horizontalScroll2","SRF01Controller","decorateClassWithHorizontalScroll","scrollingEnabled","_iscroll2","_extends3","mouseWheel","_mixins2","_extends2","_iscroll","_mixins","IScroll","scrollerStyle","resizeScrollbars","mouseWheelSpeed","snapThreshold","disablePointer","utils","hasPointer","disableTouch","hasTouch","disableMouse","startX","startY","directionLockThreshold","momentum","bounce","bounceTime","bounceEasing","preventDefaultException","HWCompositing","useTransition","useTransform","bindToWrapper","onmousedown","translateZ","hasPerspective","hasTransition","hasTransform","eventPassthrough","freeScroll","ease","circular","resizePolling","tap","shrinkScrollbars","invertWheelDirection","directionX","directionY","_init","refresh","createDefaultScrollbar","interactive","scrollbar","indicator","pointerEvents","Indicator","wrapperStyle","indicatorStyle","listenX","listenY","resize","defaultScrollbars","shrink","fade","speedRatioX","speedRatioY","sizeRatioX","sizeRatioY","maxPosX","maxPosY","addEvent","prefixPointerEvent","durationProp","transitionDuration","isBadAndroid","oRequestAnimationFrame","_prefixStyle","_vendor","me","_elementStyle","vendors","capture","pointerEvent","lowerMargin","wrapperSize","deceleration","distance","_transform","appVersion","safariVersion","transitionTimingFunction","transitionDelay","transformOrigin","newclass","re","exceptions","eventType","touchstart","touchmove","touchend","mousedown","mousemove","mouseup","pointerdown","pointermove","pointerup","MSPointerDown","MSPointerMove","MSPointerUp","quadratic","sqrt","back","elastic","sin","ev","initMouseEvent","screenX","screenY","_constructed","_initEvents","scrollbars","indicators","_initIndicators","_initWheel","_initSnap","keyBindings","_initKeys","resizeTimeout","_execEvent","_transitionEnd","isInTransition","_transitionTime","resetPosition","_start","initiated","point","touches","moved","distX","distY","directionLocked","getComputedPosition","_translate","isAnimating","absStartX","absStartY","pointX","pointY","_move","absDistX","absDistY","endTime","hasHorizontalScroll","hasVerticalScroll","maxScrollX","maxScrollY","_end","momentumX","momentumY","changedTouches","distanceX","distanceY","flick","wrapperWidth","wrapperHeight","_nearestSnap","snapSpeed","_resize","scrollerWidth","scrollerHeight","wrapperOffset","scrollBy","transitionType","_transitionTimingFunction","_animate","offsetX","offsetY","transitionTime","matrix","_indicatorsMap","interactiveScrollbars","customStyle","fadeScrollbars","wheelTimeout","_wheel","detail","goToPage","cx","cy","stepX","snapStepX","stepY","snapStepY","snapThresholdX","snapThresholdY","posX","posY","pageUp","pageDown","home","down","prevTime","keyTime","keyAcceleration","destX","destY","easingFn","destTime","fadeTimeout","lastPointX","lastPointY","_pos","indicatorWidth","minBoundaryX","maxBoundaryX","indicatorHeight","minBoundaryY","maxBoundaryY","ignoreBoundaries","switchBreakpoints","breakpoint","$mobileNavigationItems","currentBreakpoint","forceUpdate","PC01Controller","$mobileNavigation","ElementLoader","MODULES","TABLES","_AUDIO$VIDEO$SLIDER$M","_Identifiers4","_Identifiers5","_Identifiers6","_Identifiers7","_Identifiers8","_Identifiers9","_Identifiers10","_Identifiers11","_Identifiers12","_Identifiers13","require","oe","FastClick","layer","oldOnClick","trackingClick","trackingClickStart","targetElement","touchStartX","touchStartY","lastTouchIdentifier","touchBoundary","tapDelay","tapTimeout","notNeeded","deviceIsAndroid","onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","rmv","hijacked","adv","propagationStopped","onclick","deviceIsWindowsPhone","deviceIsIOS","deviceIsIOS4","deviceIsIOSWithBadTarget","deviceIsBlackBerry10","needsClick","needsFocus","readOnly","sendClick","clickEvent","determineEventType","forwardedTouchEvent","setSelectionRange","updateScrollParent","scrollParent","parentElement","fastClickScrollParent","fastClickLastScrollTop","getTargetElementFromEventTarget","eventTarget","TEXT_NODE","lastClickTime","touchHasMoved","boundary","findControl","labelElement","control","htmlFor","forElement","targetTagName","cancelNextClick","elementFromPoint","cancelable","permitted","metaViewport","chromeVersion","blackberryVersion","ontouchstart","msTouchAction","touchAction","injectStylesheetsBelowCurrentBreakpoint","indexOfCurrentBreakpoint","filePath","BREAKPOINTS","indexInBreakpoints","_StyleInjector2","injectImmediate","onBreakpointChange","_StyleInjector","StyleLoaderService","images","_objectFitImages2","watchMQ","useragent","isIE","_objectFitImages","__webpack_exports__","getStyle","fontFamily","propRegex","fixOne","requestedSrc","ಠ","parsingSrcset","skipTest","supportsObjectFit","ios7src","currentSrc","srcset","supportsCurrentSrc","picturefill","pf","ns","evaled","fillImg","reselect","curSrc","supported","srcAttr","nativeGetAttribute","srcsetAttr","keepSrcUsable","backgroundImage","backgroundPosition","backgroundRepeat","Image","loop","naturalWidth","naturalHeight","backgroundSize","descriptors","imgs","startAutoMode","autoModeEnabled","supportsObjectPosition","testImg","nativeSetAttribute","HTMLImageElement","ua","HTMLPictureElement","dummySrc","fixRespimg","img","sizes","picture","_pfLastSize","findPictureImgs","onResize","mq","matchMedia","isSpace","updateMetrics","isVwDirty","DPR","devicePixelRatio","cssCache","sizeLengthCache","units","vw","vh","evalId","em","getEmValue","rem","chooseLowRes","lowerValue","higherValue","dprValue","bonusFactor","tooMuch","bonus","meanDensity","cfg","algorithm","applyBestCandidate","srcSetCandidates","matchingSet","getSet","evaluated","setRes","applySetCandidate","ascendingSort","setSrcToCur","candidate","sets","getCandidateForSrc","makeUrl","curCan","setResolution","candidates","parseSet","getAllSourceElements","sources","media","parseSrcset","collectCharacters","regEx","chars","parseDescriptors","lastChar","intVal","floatVal","pError","regexNonNegativeInteger","regexFloatingPoint","has1x","currentDescriptor","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexLeadingSpaces","parseSizes","strValue","unparsedSizesList","unparsedSizesListLength","unparsedSize","lastComponentValue","regexCssLengthWithUnits","regexCssCalc","pushComponent","component","componentArray","pushComponentArray","listArray","chrctr","parenDepth","inComment","matchesMedia","eminpx","alwaysCheckWDescriptor","isSupportTestReady","getImgAttr","setImgAttr","removeImgAttr","supportAbort","curSrcProp","regWDesc","regSize","setOptions","picturefillCFG","fsCss","px","in","anchor","alreadyRun","memoize","evalCSS","regLength","buildStr","parsedLength","sizesattr","cWidth","calcListLength","plen","reevaluate","selShort","setupRun","teardownRun","implementation","hasFeature","supSrcset","supSizes","supPicture","image2","width1","setSize","mMQ","calcLength","sourceSizeValue","supportsType","parseSize","sourceSizeStr","cands","originalHTMLCSS","originalBodyCSS","sourceSizeListStr","uT","winningLength","bestCandidate","candidateSrc","abortCurSrc","imageData","dpr","setSrc","origWidth","parseSets","srcsetAttribute","imageSet","isWDescripor","srcsetParsed","hasPicture","pic","extreme","isDomReady","regReady","fillImgs","lastClientWidth","typeUri"],"mappings":"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,gBAAfsuD,GAAE1qD,UAQ/BiwC,EAAgB,SAAEya,GAAF,MAAgC,kBAAhBE,aAEbF,YAAaE,aAEbF,IACqB,gBAAb,KAAOA,EAAP,eAAAD,EAAAzoB,SAAO0oB,KAA+B,kBAANA,KAC5B,OAANA,GACe,IAAfA,EAAEtuD,UACoB,gBAAfsuD,GAAE1qD,UAQlCkwC,EAAkB,SAAEwa,GAAF,MAASA,QAA+C,KAAnCA,EAAEl4C,YAAY1I,UAAUyI,O3D8xcrE9X,G2D1xcCu1C,a3D2xcDv1C,E2D1xcCw1C,gB3D2xcDx1C,E2D1xcCy1C,mB3D6xcQ,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CA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","file":"client.js","sourcesContent":["/*!\r\n * frontend\r\n * name: / innogy-web,\r\n * buildDate: Wed Jul 11 2018 14:29:13 GMT+0200 (CEST),\r\n * packageVersion: 2.24.0\r\n */\nwebpackJsonp([16],[\n/* 0 */,\n/* 1 */,\n/* 2 */,\n/* 3 */,\n/* 4 */,\n/* 5 */,\n/* 6 */,\n/* 7 */,\n/* 8 */,\n/* 9 */,\n/* 10 */,\n/* 11 */,\n/* 12 */,\n/* 13 */,\n/* 14 */,\n/* 15 */,\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * jQuery JavaScript Library v2.2.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-05-20T17:23Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\"use strict\";\nvar arr = [];\n\nvar document = window.document;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"2.2.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisArray: Array.isArray,\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\tvar realStringObj = obj && obj.toString();\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Not plain objects:\n\t\t// - Any object or value whose internal [[Class]] property is not \"[object Object]\"\n\t\t// - DOM nodes\n\t\t// - window\n\t\tif ( jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype || {}, \"isPrototypeOf\" ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\n\t\t// Support: Android<4.0, iOS<6 (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tvar script,\n\t\t\tindirect = eval;\n\n\t\tcode = jQuery.trim( code );\n\n\t\tif ( code ) {\n\n\t\t\t// If the code includes a valid, prologue position\n\t\t\t// strict mode pragma, execute code by injecting a\n\t\t\t// script tag into the document.\n\t\t\tif ( code.indexOf( \"use strict\" ) === 1 ) {\n\t\t\t\tscript = document.createElement( \"script\" );\n\t\t\t\tscript.text = code;\n\t\t\t\tdocument.head.appendChild( script ).parentNode.removeChild( script );\n\t\t\t} else {\n\n\t\t\t\t// Otherwise, avoid the DOM node creation, insertion\n\t\t\t\t// and removal by using an indirect global eval\n\n\t\t\t\tindirect( code );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE9-11+\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\n// JSHint would error on this code due to the Symbol not being defined in ES5.\n// Defining this global in .jshintrc would create a danger of using the global\n// unguarded in another place, it seems safer to just disable JSHint for these\n// three lines.\n/* jshint ignore: start */\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n/* jshint ignore: end */\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.1\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-10-17\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, nidselect, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\n\t\t// Support: IE 11\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\treturn m ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"<input/>\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\t// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\n\t\t\t\t\tpos.index( cur ) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnotwhite = ( /\\S+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add( function() {\n\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 ||\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred.\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// Add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n} );\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n} );\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called\n\t\t// after the browser event has already occurred.\n\t\t// Support: IE9-10 only\n\t\t// Older IE sometimes signals \"interactive\" too soon\n\t\tif ( document.readyState === \"complete\" ||\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\twindow.setTimeout( jQuery.ready );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[ 0 ], key ) : emptyGet;\n};\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\t/* jshint -W018 */\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tregister: function( owner, initial ) {\n\t\tvar value = initial || {};\n\n\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t// use plain assignment\n\t\tif ( owner.nodeType ) {\n\t\t\towner[ this.expando ] = value;\n\n\t\t// Otherwise secure it in a non-enumerable, non-writable property\n\t\t// configurability must be true to allow the property to be\n\t\t// deleted with the delete operator\n\t\t} else {\n\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\tvalue: value,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true\n\t\t\t} );\n\t\t}\n\t\treturn owner[ this.expando ];\n\t},\n\tcache: function( owner ) {\n\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return an empty object.\n\t\tif ( !acceptData( owner ) ) {\n\t\t\treturn {};\n\t\t}\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ data ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ prop ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\t\t\towner[ this.expando ] && owner[ this.expando ][ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase( key ) );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i, name, camel,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === undefined ) {\n\t\t\tthis.register( owner );\n\n\t\t} else {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <= 35-45+\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data, camelKey;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key as-is\n\t\t\t\tdata = dataUser.get( elem, key ) ||\n\n\t\t\t\t\t// Try to find dashed key if it exists (gh-2779)\n\t\t\t\t\t// This is for 2.2.x only\n\t\t\t\t\tdataUser.get( elem, key.replace( rmultiDash, \"-$&\" ).toLowerCase() );\n\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = dataUser.get( elem, camelKey );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, camelKey, undefined );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tcamelKey = jQuery.camelCase( key );\n\t\t\tthis.each( function() {\n\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = dataUser.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdataUser.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf( \"-\" ) > -1 && data !== undefined ) {\n\t\t\t\t\tdataUser.set( this, key, value );\n\t\t\t\t}\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() { return tween.cur(); } :\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([\\w:-]+)/ );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE9\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE9-11+\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0-4.3, Safari<=5.1\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari<=5.1, Android<4.2\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<=11+\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE9\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Support (at least): Chrome, IE9\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG <use> instance trees (#13180)\n\t\t//\n\t\t// Support: Firefox<=42+\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\tif ( delegateCount && cur.nodeType &&\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: ( \"button buttons clientX clientY offsetX offsetY pageX pageY \" +\n\t\t\t\"screenX screenY toElement\" ).split( \" \" ),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX +\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY +\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://code.google.com/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\n\n\t// Support: IE 10-11, Edge 10240+\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <= 35-45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <= 35-45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\n\t// Keep domManip exposed until 3.0 (gh-2225)\n\tdomManip: domManip,\n\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\n\nvar iframe,\n\telemdisplay = {\n\n\t\t// Support: Firefox\n\t\t// We have to pre-define these values for FF (#10227)\n\t\tHTML: \"block\",\n\t\tBODY: \"block\"\n\t};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe || jQuery( \"<iframe frameborder='0' width='0' height='0'/>\" ) )\n\t\t\t\t.appendTo( doc.documentElement );\n\n\t\t\t// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse\n\t\t\tdoc = iframe[ 0 ].contentDocument;\n\n\t\t\t// Support: IE\n\t\t\tdoc.write();\n\t\t\tdoc.close();\n\n\t\t\tdisplay = actualDisplay( nodeName, doc );\n\t\t\tiframe.detach();\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn display;\n}\nvar rmargin = ( /^margin/ );\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE<=11+, Firefox<=30+ (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar documentElement = document.documentElement;\n\n\n\n( function() {\n\tvar pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE9-11+\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tcontainer.style.cssText = \"border:0;width:8px;height:0;top:0;left:-9999px;\" +\n\t\t\"padding:0;margin-top:1px;position:absolute\";\n\tcontainer.appendChild( div );\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\t\tdiv.style.cssText =\n\n\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t// Vendor-prefix box-sizing\n\t\t\t\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;\" +\n\t\t\t\"position:relative;display:block;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"top:1%;width:50%\";\n\t\tdiv.innerHTML = \"\";\n\t\tdocumentElement.appendChild( container );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\t\treliableMarginLeftVal = divStyle.marginLeft === \"2px\";\n\t\tboxSizingReliableVal = divStyle.width === \"4px\";\n\n\t\t// Support: Android 4.0 - 4.3 only\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.marginRight = \"50%\";\n\t\tpixelMarginRightVal = divStyle.marginRight === \"4px\";\n\n\t\tdocumentElement.removeChild( container );\n\t}\n\n\tjQuery.extend( support, {\n\t\tpixelPosition: function() {\n\n\t\t\t// This test is executed only once but we still do memoizing\n\t\t\t// since we can use the boxSizingReliable pre-computing.\n\t\t\t// No need to check if the test was already performed, though.\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\tboxSizingReliable: function() {\n\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelMarginRight: function() {\n\n\t\t\t// Support: Android 4.0-4.3\n\t\t\t// We're checking for boxSizingReliableVal here instead of pixelMarginRightVal\n\t\t\t// since that compresses better and they're computed together anyway.\n\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn pixelMarginRightVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\n\t\t\t// Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37\n\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\treliableMarginRight: function() {\n\n\t\t\t// Support: Android 2.3\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. (#3333)\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t// This support function is only executed once so no memoizing is needed.\n\t\t\tvar ret,\n\t\t\t\tmarginDiv = div.appendChild( document.createElement( \"div\" ) );\n\n\t\t\t// Reset CSS: box-sizing; display; margin; border; padding\n\t\t\tmarginDiv.style.cssText = div.style.cssText =\n\n\t\t\t\t// Support: Android 2.3\n\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t\"-webkit-box-sizing:content-box;box-sizing:content-box;\" +\n\t\t\t\t\"display:block;margin:0;border:0;padding:0\";\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\t\t\tdocumentElement.appendChild( container );\n\n\t\t\tret = !parseFloat( window.getComputedStyle( marginDiv ).marginRight );\n\n\t\t\tdocumentElement.removeChild( container );\n\t\t\tdiv.removeChild( marginDiv );\n\n\t\t\treturn ret;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\tret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;\n\n\t// Support: Opera 12.1x only\n\t// Fall back to style even without computed\n\t// computed is undefined for elems on document fragments\n\tif ( ( ret === \"\" || ret === undefined ) && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\tret = jQuery.style( elem, name );\n\t}\n\n\t// Support: IE9\n\t// getPropertyValue is only needed for .css('filter') (#12537)\n\tif ( computed ) {\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// http://dev.w3.org/csswg/cssom/#resolved-values\n\t\tif ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE9-11+\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// At this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// At this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// At this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar valueIsBorderBox = true,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// Some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test( val ) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// Check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox &&\n\t\t\t( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// Use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem, hidden,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalues[ index ] = dataPriv.get( elem, \"olddisplay\" );\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = dataPriv.access(\n\t\t\t\t\telem,\n\t\t\t\t\t\"olddisplay\",\n\t\t\t\t\tdefaultDisplay( elem.nodeName )\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\thidden = isHidden( elem );\n\n\t\t\tif ( display !== \"none\" || !hidden ) {\n\t\t\t\tdataPriv.set(\n\t\t\t\t\telem,\n\t\t\t\t\t\"olddisplay\",\n\t\t\t\t\thidden ? display : jQuery.css( elem, \"display\" )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t\"float\": \"cssFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] ||\n\t\t\t( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tstyle[ name ] = value;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] ||\n\t\t\t( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\t\t\t\t\telem.offsetWidth === 0 ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = extra && getStyles( elem ),\n\t\t\t\tsubtract = extra && augmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ name ] = value;\n\t\t\t\tvalue = jQuery.css( elem, name );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// Support: Android 2.3\njQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn swap( elem, { \"display\": \"inline-block\" },\n\t\t\t\tcurCSS, [ elem, \"marginRight\" ] );\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( jQuery.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE9\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = jQuery.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\t/* jshint validthis: true */\n\tvar prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHidden( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE9-10 do not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t// Test default display if display is currently \"none\"\n\t\tcheckDisplay = display === \"none\" ?\n\t\t\tdataPriv.get( elem, \"olddisplay\" ) || defaultDisplay( elem.nodeName ) : display;\n\n\t\tif ( checkDisplay === \"inline\" && jQuery.css( elem, \"float\" ) === \"none\" ) {\n\t\t\tstyle.display = \"inline-block\";\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// show/hide pass\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// If there is dataShow left over from a stopped hide or show\n\t\t\t\t// and we are going to proceed with show, we should pretend to be hidden\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\n\t\t// Any non-fx value stops us from restoring the original display value\n\t\t} else {\n\t\t\tdisplay = undefined;\n\t\t}\n\t}\n\n\tif ( !jQuery.isEmptyObject( orig ) ) {\n\t\tif ( dataShow ) {\n\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\thidden = dataShow.hidden;\n\t\t\t}\n\t\t} else {\n\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", {} );\n\t\t}\n\n\t\t// Store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done( function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t} );\n\t\t}\n\t\tanim.done( function() {\n\t\t\tvar prop;\n\n\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t} );\n\t\tfor ( prop in orig ) {\n\t\t\ttween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t// If this is a noop like .hide().hide(), restore an overwritten display value\n\t} else if ( ( display === \"none\" ? defaultDisplay( elem.nodeName ) : display ) === \"inline\" ) {\n\t\tstyle.display = display;\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( jQuery.isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tjQuery.proxy( result.stop, result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnotwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ?\n\t\topt.duration : opt.duration in jQuery.fx.speeds ?\n\t\t\tjQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tif ( timer() ) {\n\t\tjQuery.fx.start();\n\t} else {\n\t\tjQuery.timers.pop();\n\t}\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( !timerId ) {\n\t\ttimerId = window.setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.stop = function() {\n\twindow.clearInterval( timerId );\n\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: iOS<=5.1, Android<=4.2+\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE<=11+\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: Android<=2.3\n\t// Options inside disabled selects are incorrectly marked as disabled\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Support: IE<=11+\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tjQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name, propName,\n\t\t\ti = 0,\n\t\t\tattrNames = value && value.match( rnotwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\n\t\t\t\t// Boolean attributes get special treatment (#10870)\n\t\t\t\tif ( jQuery.expr.match.bool.test( name ) ) {\n\n\t\t\t\t\t// Set corresponding property to false\n\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t}\n\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle;\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ name ];\n\t\t\tattrHandle[ name ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tname.toLowerCase() :\n\t\t\t\tnull;\n\t\t\tattrHandle[ name ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\treturn tabindex ?\n\t\t\t\t\tparseInt( tabindex, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\t\trclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\t-1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\nvar rclass = /[\\t\\r\\n\\f]/g;\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof value === \"string\" && value ) {\n\t\t\tclasses = value.match( rnotwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 &&\n\t\t\t\t\t( \" \" + curValue + \" \" ).replace( rclass, \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = jQuery.trim( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tif ( typeof value === \"string\" && value ) {\n\t\t\tclasses = value.match( rnotwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 &&\n\t\t\t\t\t( \" \" + curValue + \" \" ).replace( rclass, \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = jQuery.trim( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value;\n\n\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( type === \"string\" ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = value.match( rnotwhite ) || [];\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + getClass( elem ) + \" \" ).replace( rclass, \" \" )\n\t\t\t\t\t.indexOf( className ) > -1\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g,\n\trspaces = /[\\x20\\t\\r\\n\\f]+/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\n\t\t\t\t\t// Handle most common string cases\n\t\t\t\t\tret.replace( rreturn, \"\" ) :\n\n\t\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE10-11+\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tjQuery.trim( jQuery.text( elem ) ).replace( rspaces, \" \" );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( support.optDisabled ?\n\t\t\t\t\t\t\t\t!option.disabled : option.getAttribute( \"disabled\" ) === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\n// Support: Firefox\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome, Safari\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = jQuery.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Support: Android 2.3\n// Workaround failure to string-cast null input\njQuery.parseJSON = function( data ) {\n\treturn JSON.parse( data + \"\" );\n};\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE9\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trhash = /#.*$/,\n\trts = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\t\t\tfor ( code in map ) {\n\n\t\t\t\t\t\t\t\t// Lazy-add the new callback in a way that preserves old ones\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR ).complete = completeDeferred.add;\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" ).replace( rhash, \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().match( rnotwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE8-11+\n\t\t\t// IE throws exception if url is malformed, e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE8-11+\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\tcacheURL = s.url;\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL = ( s.url += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data );\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\ts.url = rts.test( cacheURL ) ?\n\n\t\t\t\t\t// If there is already a '_' parameter, set its value\n\t\t\t\t\tcacheURL.replace( rts, \"$1_=\" + nonce++ ) :\n\n\t\t\t\t\t// Otherwise add one to the end\n\t\t\t\t\tcacheURL + ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + nonce++;\n\t\t\t}\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapAll( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( this[ 0 ] ) {\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each( function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t} ).end();\n\t}\n} );\n\n\njQuery.expr.filters.hidden = function( elem ) {\n\treturn !jQuery.expr.filters.visible( elem );\n};\njQuery.expr.filters.visible = function( elem ) {\n\n\t// Support: Opera <= 12.12\n\t// Opera reports offsetWidths and offsetHeights less than zero on some elements\n\t// Use OR instead of AND as the element is not visible if either is true\n\t// See tickets #10406 and #13132\n\treturn elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0;\n};\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t} ) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE9\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE9\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = callback( \"error\" );\n\n\t\t\t\t// Support: IE9\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\tcontext = context || document;\n\n\tvar parsed = rsingleTag.exec( data ),\n\t\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n// Keep a copy of the old load method\nvar _load = jQuery.fn.load;\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = jQuery.trim( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.filters.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\n/**\n * Gets a window from an element\n */\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;\n}\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\toffset: function( options ) {\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar docElem, win,\n\t\t\telem = this[ 0 ],\n\t\t\tbox = { top: 0, left: 0 },\n\t\t\tdoc = elem && elem.ownerDocument;\n\n\t\tif ( !doc ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure it's not a disconnected DOM node\n\t\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box;\n\t\t}\n\n\t\tbox = elem.getBoundingClientRect();\n\t\twin = getWindow( doc );\n\t\treturn {\n\t\t\ttop: box.top + win.pageYOffset - docElem.clientTop,\n\t\t\tleft: box.left + win.pageXOffset - docElem.clientLeft\n\t\t};\n\t},\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n\t\t// because it is its only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume getBoundingClientRect is there when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top += jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true );\n\t\t\tparentOffset.left += jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true );\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari<7-8+, Chrome<37-44+\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t} );\n} );\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\tsize: function() {\n\t\treturn this.length;\n\t}\n} );\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( true ) {\n\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t\treturn jQuery;\n\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\nreturn jQuery;\n}));\n\n\n/***/ }),\n/* 17 */,\n/* 18 */,\n/* 19 */,\n/* 20 */,\n/* 21 */,\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.fasterdomPromised = undefined;\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(80);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _signal = __webpack_require__(96);\n\nvar _signal2 = _interopRequireDefault(_signal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar win = window,\n rAF = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.msRequestAnimationFrame || function (cb) {\n\t// eslint-disable-line func-names\n\treturn setTimeout(cb, 16);\n};\n\nvar FasterDom = function () {\n\tfunction FasterDom() {\n\t\t(0, _classCallCheck3.default)(this, FasterDom);\n\n\t\tthis.debug = true;\n\n\t\tthis._tasks = [];\n\t\tthis.raf = rAF.bind(win);\n\n\t\tthis._scheduled = false;\n\t\tthis._flushing = false;\n\t\tthis._currentFlush = null;\n\n\t\tthis._currentFrame = 0;\n\t}\n\n\tFasterDom.prototype.rafCounter = function rafCounter() {\n\t\tvar self = this;\n\n\t\tself.raf(function (time) {\n\t\t\tself.rafCounter();\n\t\t\tself._currentFrame++;\n\t\t});\n\t};\n\n\tFasterDom.prototype.hasTasks = function hasTasks() {\n\t\tvar frame = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n\t\treturn typeof this._tasks[frame] !== 'undefined' && this._tasks[frame] instanceof _signal2.default;\n\t};\n\n\tFasterDom.prototype.getTasks = function getTasks() {\n\t\tvar frame = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n\t\tif (this.hasTasks(frame)) {\n\t\t\treturn this._tasks[frame];\n\t\t}\n\t\treturn [];\n\t};\n\n\tFasterDom.prototype.nextTasks = function nextTasks() {\n\t\tif (this._tasks.length > 0) {\n\t\t\tvar tasks = this.getTasks();\n\n\t\t\tthis._tasks.splice(0, 1);\n\t\t\treturn tasks;\n\t\t}\n\n\t\treturn new _signal2.default();\n\t};\n\n\tFasterDom.prototype.addTask = function addTask(context, fn) {\n\t\tvar frame = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n\t\tif (!this.hasTasks(frame)) {\n\t\t\tthis.setupFrame(frame);\n\t\t}\n\t\tthis._tasks[frame].add(fn, context, true);\n\t\tthis.scheduleTasks();\n\n\t\treturn this;\n\t};\n\n\tFasterDom.prototype.addTaskInstant = function addTaskInstant(context, fn) {\n\t\tvar frame = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n\t\tif (this.isFlushing && this._currentFlush !== null && frame === 0) {\n\t\t\tthis._currentFlush.add(fn, context, true);\n\t\t} else {\n\t\t\tif (this.isFlushing && this._currentFlush !== null) {\n\t\t\t\tframe -= 1; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\tthis.addTask(context, fn, frame);\n\t\t}\n\t\treturn this;\n\t};\n\n\tFasterDom.prototype.scheduleTasks = function scheduleTasks() {\n\t\tvar _this = this;\n\n\t\tvar self = this;\n\n\t\tif (!this.isScheduled) {\n\t\t\tthis.isScheduled = true;\n\n\t\t\tvar checkFlush = function checkFlush() {\n\t\t\t\tif (!_this.isFlushing) {\n\t\t\t\t\tself.flush();\n\t\t\t\t} else {\n\t\t\t\t\t_this.raf(checkFlush);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.raf(checkFlush);\n\t\t}\n\t};\n\n\tFasterDom.prototype.setupFrame = function setupFrame() {\n\t\tvar frame = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n\t\tfor (var i = 0; i <= frame; i++) {\n\t\t\tif (!this.hasTasks(i)) {\n\t\t\t\tthis._tasks[i] = new _signal2.default();\n\t\t\t}\n\t\t}\n\t};\n\n\tFasterDom.prototype.measure = function measure(fn) {\n\t\tvar frame = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t\treturn this.addTask('reads', fn, frame);\n\t};\n\n\tFasterDom.prototype.measureInstant = function measureInstant(fn) {\n\t\tvar frame = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t\treturn this.addTaskInstant('reads', fn, frame);\n\t};\n\n\tFasterDom.prototype.mutate = function mutate(fn) {\n\t\tvar frame = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t\treturn this.addTask('writes', fn, frame);\n\t};\n\n\tFasterDom.prototype.mutateInstant = function mutateInstant(fn) {\n\t\tvar frame = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t\treturn this.addTaskInstant('writes', fn, frame);\n\t};\n\n\tFasterDom.prototype.onFrame = function onFrame(fn) {\n\t\tvar frame = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t\treturn this.addTask('onframe', fn, frame);\n\t};\n\n\tFasterDom.prototype.onFrameInstant = function onFrameInstant(fn) {\n\t\tvar frame = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t\treturn this.addTaskInstant('onframe', fn, frame);\n\t};\n\n\tFasterDom.prototype.clear = function clear() {\n\t\tvar frame = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n\t\tthis.setupFrame(frame);\n\t};\n\n\tFasterDom.prototype.flush = function flush() {\n\t\tthis._currentFlush = this.nextTasks();\n\n\t\tvar error = void 0;\n\n\t\tthis.isFlushing = true;\n\t\tthis.isScheduled = false;\n\n\t\ttry {\n\t\t\tthis._currentFlush.dispatch('onframe');\n\t\t\tthis._currentFlush.dispatch('reads');\n\t\t\tthis._currentFlush.dispatch('writes');\n\t\t} catch (e) {\n\t\t\terror = e;\n\t\t}\n\n\t\tthis._currentFlush = null;\n\n\t\tif (this._tasks.length > 0) {\n\t\t\tthis.scheduleTasks();\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tthis.isFlushing = false;\n\t};\n\n\t(0, _createClass3.default)(FasterDom, [{\n\t\tkey: 'currentFrame',\n\t\tset: function set(is) {\n\t\t\tthis._currentFrame = is;\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this._currentFrame;\n\t\t}\n\t}, {\n\t\tkey: 'isScheduled',\n\t\tset: function set(is) {\n\t\t\tthis._scheduled = is === true;\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this._scheduled;\n\t\t}\n\t}, {\n\t\tkey: 'isFlushing',\n\t\tset: function set(is) {\n\t\t\tthis._flushing = is === true;\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this._flushing;\n\t\t}\n\t}]);\n\treturn FasterDom;\n}();\n\nvar FasterDomPromised = function (_FasterDom) {\n\t(0, _inherits3.default)(FasterDomPromised, _FasterDom);\n\n\tfunction FasterDomPromised() {\n\t\t(0, _classCallCheck3.default)(this, FasterDomPromised);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _FasterDom.apply(this, arguments));\n\t}\n\n\tFasterDomPromised.prototype.addTask = function addTask(context, fn) {\n\t\tvar frame = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n\t\tif (!this.hasTasks(frame)) {\n\t\t\tthis.setupFrame(frame);\n\t\t}\n\n\t\tvar promisedTask = this._tasks[frame].addPromised(fn, context, true);\n\n\t\tthis.scheduleTasks();\n\n\t\treturn promisedTask;\n\t};\n\n\tFasterDomPromised.prototype.addTaskInstant = function addTaskInstant(context, fn) {\n\t\tvar frame = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n\t\tif (this.isFlushing && this._currentFlush !== null && frame === 0) {\n\t\t\treturn this._currentFlush.addPromised(fn, context, true);\n\t\t} else {\n\t\t\tif (this.isFlushing && this._currentFlush !== null) {\n\t\t\t\tframe -= 1; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn this.addTask(context, fn, frame);\n\t\t}\n\t};\n\n\treturn FasterDomPromised;\n}(FasterDom);\n\nvar instance = new FasterDom(); // eslint-disable-line one-var\nvar fasterdomPromised = new FasterDomPromised(); // eslint-disable-line one-var\n\nexports.default = instance;\nexports.fasterdomPromised = fasterdomPromised;\n\n/***/ }),\n/* 23 */,\n/* 24 */,\n/* 25 */,\n/* 26 */,\n/* 27 */,\n/* 28 */,\n/* 29 */,\n/* 30 */,\n/* 31 */,\n/* 32 */,\n/* 33 */,\n/* 34 */,\n/* 35 */,\n/* 36 */,\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = undefined;\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Debug = __webpack_require__(205);\n\nvar _Debug2 = _interopRequireDefault(_Debug);\n\nvar _State = __webpack_require__(516);\n\nvar _State2 = _interopRequireDefault(_State);\n\nvar _WindowGateway = __webpack_require__(118);\n\nvar _WindowGateway2 = _interopRequireDefault(_WindowGateway);\n\n__webpack_require__(275);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EVENTS = {\n\tREINIT: 'reInit',\n\tINIT: 'init'\n};\n\nfunction receiveReInit(message) {\n\t// this.logger.log( 'message event received after ready:', message );\n\n\tif (message.type === EVENTS.REINIT && message.data.hasOwnProperty('id')) {\n\t\tif (typeof this.$scope !== 'undefined' || typeof this.$root !== 'undefined') {\n\t\t\tif ((this.$scope || this.$root).attr('id') === message.data.id) {\n\t\t\t\tthis.reInit();\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\r\n * @interface for controller subclasses\r\n */\n\nvar AbstractController = function (_DebugController) {\n\t(0, _inherits3.default)(AbstractController, _DebugController);\n\n\tfunction AbstractController() {\n\t\t(0, _classCallCheck3.default)(this, AbstractController);\n\n\t\tvar _this = (0, _possibleConstructorReturn3.default)(this, _DebugController.call(this));\n\n\t\t_this.debug = true;\n\t\t_this.state = new _State2.default();\n\t\t_this.cache = {};\n\t\t_this._uid = Object._uid(_this);\n\n\t\t_this.windowGateway = new _WindowGateway2.default();\n\t\t_this.windowGateway.messageEvent.subscribe(receiveReInit.bind(_this));\n\t\treturn _this;\n\t}\n\n\t/**\r\n * @abstract\r\n * @param {jQuery} $root - root node to attach the controller to\r\n * @returns {AbstractController} - instance\r\n */\n\n\n\tAbstractController.prototype.init = function init($root) {};\n\n\tAbstractController.prototype.reInit = function reInit() {};\n\n\treturn AbstractController;\n}(_Debug2.default);\n\nexports.default = AbstractController;\n\n/***/ }),\n/* 38 */,\n/* 39 */,\n/* 40 */,\n/* 41 */,\n/* 42 */,\n/* 43 */,\n/* 44 */,\n/* 45 */,\n/* 46 */,\n/* 47 */,\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar root_1 = __webpack_require__(99);\nvar toSubscriber_1 = __webpack_require__(539);\nvar observable_1 = __webpack_require__(267);\nvar pipe_1 = __webpack_require__(540);\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable<T>\n */\nvar Observable = (function () {\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n /**\n * Creates a new Observable, with this Observable as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param {Operator} operator the operator defining the operation to take on the observable\n * @return {Observable} a new observable with the Operator applied\n */\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * <span class=\"informal\">Use it when you have all these Observables, but still nothing is happening.</span>\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to a {@link create} static factory, but most of the time it is\n * a library implementation, which defines what and when will be emitted by an Observable. This means that calling\n * `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, that if `error` method is not provided, all errors will\n * be left uncaught.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where first function is equivalent\n * of a `next` method, second of an `error` method and third of a `complete` method. Just as in case of Observer,\n * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n *\n * Whatever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a {@link Scheduler}.\n *\n * @example <caption>Subscribe with an Observer</caption>\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() { // We actually could just remove this method,\n * }, // since we do not really care about errors right now.\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * Rx.Observable.of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n *\n *\n * @example <caption>Subscribe with functions</caption>\n * let sum = 0;\n *\n * Rx.Observable.of(1, 2, 3)\n * .subscribe(\n * function(value) {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * function() {\n * console.log('Sum equals: ' + sum);\n * }\n * );\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n *\n *\n * @example <caption>Cancel a subscription</caption>\n * const subscription = Rx.Observable.interval(1000).subscribe(\n * num => console.log(num),\n * undefined,\n * () => console.log('completed!') // Will not be called, even\n * ); // when cancelling subscription\n *\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // \"unsubscribed!\" after 2.5s\n *\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {ISubscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber_1.toSubscriber(observerOrNext, error, complete);\n if (operator) {\n operator.call(sink, this.source);\n }\n else {\n sink.add(this.source || !sink.syncErrorThrowable ? this._subscribe(sink) : this._trySubscribe(sink));\n }\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n sink.error(err);\n }\n };\n /**\n * @method forEach\n * @param {Function} next a handler for each value emitted by the observable\n * @param {PromiseConstructor} [PromiseCtor] a constructor function used to instantiate the Promise\n * @return {Promise} a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n Observable.prototype.forEach = function (next, PromiseCtor) {\n var _this = this;\n if (!PromiseCtor) {\n if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {\n PromiseCtor = root_1.root.Rx.config.Promise;\n }\n else if (root_1.root.Promise) {\n PromiseCtor = root_1.root.Promise;\n }\n }\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n return new PromiseCtor(function (resolve, reject) {\n // Must be declared in a separate statement to avoid a RefernceError when\n // accessing subscription below in the closure due to Temporal Dead Zone.\n var subscription;\n subscription = _this.subscribe(function (value) {\n if (subscription) {\n // if there is a subscription, then we can surmise\n // the next handling is asynchronous. Any errors thrown\n // need to be rejected explicitly and unsubscribe must be\n // called manually\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscription.unsubscribe();\n }\n }\n else {\n // if there is NO subscription, then we're getting a nexted\n // value synchronously during subscription. We can just call it.\n // If it errors, Observable's `subscribe` will ensure the\n // unsubscription logic is called, then synchronously rethrow the error.\n // After that, Promise will trap the error and send it\n // down the rejection path.\n next(value);\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n return this.source.subscribe(subscriber);\n };\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n Observable.prototype[observable_1.observable] = function () {\n return this;\n };\n /* tslint:enable:max-line-length */\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * @example\n *\n * import { map, filter, scan } from 'rxjs/operators';\n *\n * Rx.Observable.interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x))\n */\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i - 0] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipe_1.pipeFromArray(operations)(this);\n };\n /* tslint:enable:max-line-length */\n Observable.prototype.toPromise = function (PromiseCtor) {\n var _this = this;\n if (!PromiseCtor) {\n if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {\n PromiseCtor = root_1.root.Rx.config.Promise;\n }\n else if (root_1.root.Promise) {\n PromiseCtor = root_1.root.Promise;\n }\n }\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n return new PromiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new cold Observable by calling the Observable constructor\n * @static true\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new cold observable\n */\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexports.Observable = Observable;\n//# sourceMappingURL=Observable.js.map\n\n/***/ }),\n/* 49 */,\n/* 50 */,\n/* 51 */,\n/* 52 */,\n/* 53 */,\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.BreakpointService = exports.ScrollService = exports.ResizeService = exports.OrientationService = undefined;\n\nvar _DeviceOrientation = __webpack_require__(606);\n\nObject.defineProperty(exports, 'OrientationService', {\n\tenumerable: true,\n\tget: function get() {\n\t\treturn _interopRequireDefault(_DeviceOrientation).default;\n\t}\n});\n\nvar _Resize = __webpack_require__(567);\n\nObject.defineProperty(exports, 'ResizeService', {\n\tenumerable: true,\n\tget: function get() {\n\t\treturn _interopRequireDefault(_Resize).default;\n\t}\n});\n\nvar _Scroll = __webpack_require__(551);\n\nObject.defineProperty(exports, 'ScrollService', {\n\tenumerable: true,\n\tget: function get() {\n\t\treturn _interopRequireDefault(_Scroll).default;\n\t}\n});\n\nvar _Breakpoint = __webpack_require__(625);\n\nObject.defineProperty(exports, 'BreakpointService', {\n\tenumerable: true,\n\tget: function get() {\n\t\treturn _interopRequireDefault(_Breakpoint).default;\n\t}\n});\n\nvar _DeviceOrientation2 = _interopRequireDefault(_DeviceOrientation);\n\nvar _Resize2 = _interopRequireDefault(_Resize);\n\nvar _Scroll2 = _interopRequireDefault(_Scroll);\n\nvar _Breakpoint2 = _interopRequireDefault(_Breakpoint);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Device = {\n\n\t/**\n * @type {Observable<WindowDimensions>} Observable stream publishing resize events\n */\n\tresizeEvent: _Resize2.default.resizeEvent,\n\t/**\n * @type {Observable<ScrollPosition>} Observable stream publishing scroll events\n */\n\tscrollEvent: _Scroll2.default.scrollEvent,\n\t/**\n * @type {Observable<Breakpoint>} Observable stream publishing breakpoint change events\n */\n\tbreakpointEvent: _Breakpoint2.default.breakpointEvent,\n\t/**\n * @type {Observable<DeviceOrientation>} Observable stream publishing orientation change events\n */\n\torientationEvent: _DeviceOrientation2.default.orientationEvent\n\n};\n\nexports.default = Device;\n\n/***/ }),\n/* 55 */,\n/* 56 */,\n/* 57 */,\n/* 58 */,\n/* 59 */,\n/* 60 */,\n/* 61 */,\n/* 62 */,\n/* 63 */,\n/* 64 */,\n/* 65 */,\n/* 66 */,\n/* 67 */,\n/* 68 */,\n/* 69 */,\n/* 70 */,\n/* 71 */,\n/* 72 */,\n/* 73 */,\n/* 74 */,\n/* 75 */,\n/* 76 */,\n/* 77 */,\n/* 78 */,\n/* 79 */,\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(206);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n/***/ }),\n/* 81 */,\n/* 82 */,\n/* 83 */,\n/* 84 */,\n/* 85 */,\n/* 86 */,\n/* 87 */,\n/* 88 */,\n/* 89 */,\n/* 90 */,\n/* 91 */,\n/* 92 */,\n/* 93 */,\n/* 94 */,\n/* 95 */,\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _SignalListener = __webpack_require__(533);\n\nvar _SignalListener2 = _interopRequireDefault(_SignalListener);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Signal = function () {\n\tfunction Signal() {\n\t\t(0, _classCallCheck3.default)(this, Signal);\n\n\t\tthis._listener = [];\n\t}\n\n\tSignal.prototype.add = function add(fn) {\n\t\tvar context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '_';\n\t\tvar isOnce = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t\tvar self = this;\n\n\t\tif (typeof fn === 'function') {\n\t\t\tvar listener = new _SignalListener2.default(fn, context, isOnce);\n\n\t\t\tself._listener.push(listener);\n\n\t\t\treturn listener;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tSignal.prototype.addPromised = function addPromised(fn) {\n\t\tvar context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '_';\n\t\tvar isOnce = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t\tvar self = this;\n\n\t\tif (typeof fn === 'function') {\n\t\t\tvar listener = new _SignalListener.SignalListenerPromised(fn, context, isOnce);\n\n\t\t\tself._listener.push(listener);\n\n\t\t\treturn listener.promise;\n\t\t}\n\n\t\treturn _promise2.default.reject('Signal: not a valid function');\n\t};\n\n\tSignal.prototype.getListener = function getListener() {\n\t\tvar context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '_';\n\n\t\tif (context === '_') {\n\t\t\treturn this._listener;\n\t\t}\n\n\t\treturn this._listener.filter(function (l, idx, arr) {\n\t\t\treturn l.isInContext(context);\n\t\t});\n\t};\n\n\tSignal.prototype.dispatch = function dispatch() {\n\t\tvar context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '_';\n\n\t\tvar self = this,\n\t\t toRemove = [];\n\n\t\tfor (var _len = arguments.length, params = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t\t\tparams[_key - 1] = arguments[_key];\n\t\t}\n\n\t\tfor (var i = 0; i < this._listener.length; i++) {\n\t\t\tvar l = this._listener[i];\n\n\t\t\tif (l.isInContext(context)) {\n\t\t\t\tl.execute.apply(l, params);\n\t\t\t\tif (l.isOnce) {\n\t\t\t\t\ttoRemove.push(l);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttoRemove.map(function (v) {\n\t\t\tself._listener.splice(self._listener.indexOf(v), 1);\n\t\t\treturn v;\n\t\t});\n\t};\n\n\tSignal.prototype.dispatchPromised = function dispatchPromised() {\n\t\tfor (var _len2 = arguments.length, params = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n\t\t\tparams[_key2 - 1] = arguments[_key2];\n\t\t}\n\n\t\tvar context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '_';\n\n\t\tvar self = this;\n\n\t\treturn _promise2.default.all(self.getListener(context).map(function (l) {\n\t\t\tif (typeof l.promise !== 'undefined') {\n\t\t\t\treturn l.execute.apply(l, params);\n\t\t\t} else {\n\t\t\t\treturn _promise2.default.resolve(l.execute.apply(l, params));\n\t\t\t}\n\t\t}));\n\t};\n\n\tSignal.prototype.clear = function clear() {\n\t\tthis._listener = [];\n\t};\n\n\treturn Signal;\n}();\n\nexports.default = Signal;\n\n/***/ }),\n/* 97 */,\n/* 98 */,\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n// CommonJS / Node have global context exposed as \"global\" variable.\n// We don't want to include the whole node.d.ts this this compilation unit so we'll just fake\n// the global \"global\" var for now.\nvar __window = typeof window !== 'undefined' && window;\nvar __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self;\nvar __global = typeof global !== 'undefined' && global;\nvar _root = __window || __global || __self;\nexports.root = _root;\n// Workaround Closure Compiler restriction: The body of a goog.module cannot use throw.\n// This is needed when used with angular/tsickle which inserts a goog.module statement.\n// Wrap in IIFE\n(function () {\n if (!_root) {\n throw new Error('RxJS could not find any global context (window, self, global)');\n }\n})();\n//# sourceMappingURL=root.js.map\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(101)))\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(148);\nvar cls = __webpack_require__(283);\nvar defaultSettings = __webpack_require__(633);\nvar dom = __webpack_require__(204);\nvar EventManager = __webpack_require__(634);\nvar guid = __webpack_require__(635);\n\nvar instances = {};\n\nfunction Instance(element) {\n var i = this;\n\n i.settings = _.clone(defaultSettings);\n i.containerWidth = null;\n i.containerHeight = null;\n i.contentWidth = null;\n i.contentHeight = null;\n\n i.isRtl = dom.css(element, 'direction') === \"rtl\";\n i.isNegativeScroll = (function () {\n var originalScrollLeft = element.scrollLeft;\n var result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n i.negativeScrollAdjustment = i.isNegativeScroll ? element.scrollWidth - element.clientWidth : 0;\n i.event = new EventManager();\n i.ownerDocument = element.ownerDocument || document;\n\n function focus() {\n cls.add(element, 'ps-focus');\n }\n\n function blur() {\n cls.remove(element, 'ps-focus');\n }\n\n i.scrollbarXRail = dom.appendTo(dom.e('div', 'ps-scrollbar-x-rail'), element);\n i.scrollbarX = dom.appendTo(dom.e('div', 'ps-scrollbar-x'), i.scrollbarXRail);\n i.scrollbarX.setAttribute('tabindex', 0);\n i.event.bind(i.scrollbarX, 'focus', focus);\n i.event.bind(i.scrollbarX, 'blur', blur);\n i.scrollbarXActive = null;\n i.scrollbarXWidth = null;\n i.scrollbarXLeft = null;\n i.scrollbarXBottom = _.toInt(dom.css(i.scrollbarXRail, 'bottom'));\n i.isScrollbarXUsingBottom = i.scrollbarXBottom === i.scrollbarXBottom; // !isNaN\n i.scrollbarXTop = i.isScrollbarXUsingBottom ? null : _.toInt(dom.css(i.scrollbarXRail, 'top'));\n i.railBorderXWidth = _.toInt(dom.css(i.scrollbarXRail, 'borderLeftWidth')) + _.toInt(dom.css(i.scrollbarXRail, 'borderRightWidth'));\n // Set rail to display:block to calculate margins\n dom.css(i.scrollbarXRail, 'display', 'block');\n i.railXMarginWidth = _.toInt(dom.css(i.scrollbarXRail, 'marginLeft')) + _.toInt(dom.css(i.scrollbarXRail, 'marginRight'));\n dom.css(i.scrollbarXRail, 'display', '');\n i.railXWidth = null;\n i.railXRatio = null;\n\n i.scrollbarYRail = dom.appendTo(dom.e('div', 'ps-scrollbar-y-rail'), element);\n i.scrollbarY = dom.appendTo(dom.e('div', 'ps-scrollbar-y'), i.scrollbarYRail);\n i.scrollbarY.setAttribute('tabindex', 0);\n i.event.bind(i.scrollbarY, 'focus', focus);\n i.event.bind(i.scrollbarY, 'blur', blur);\n i.scrollbarYActive = null;\n i.scrollbarYHeight = null;\n i.scrollbarYTop = null;\n i.scrollbarYRight = _.toInt(dom.css(i.scrollbarYRail, 'right'));\n i.isScrollbarYUsingRight = i.scrollbarYRight === i.scrollbarYRight; // !isNaN\n i.scrollbarYLeft = i.isScrollbarYUsingRight ? null : _.toInt(dom.css(i.scrollbarYRail, 'left'));\n i.scrollbarYOuterWidth = i.isRtl ? _.outerWidth(i.scrollbarY) : null;\n i.railBorderYWidth = _.toInt(dom.css(i.scrollbarYRail, 'borderTopWidth')) + _.toInt(dom.css(i.scrollbarYRail, 'borderBottomWidth'));\n dom.css(i.scrollbarYRail, 'display', 'block');\n i.railYMarginHeight = _.toInt(dom.css(i.scrollbarYRail, 'marginTop')) + _.toInt(dom.css(i.scrollbarYRail, 'marginBottom'));\n dom.css(i.scrollbarYRail, 'display', '');\n i.railYHeight = null;\n i.railYRatio = null;\n}\n\nfunction getId(element) {\n return element.getAttribute('data-ps-id');\n}\n\nfunction setId(element, id) {\n element.setAttribute('data-ps-id', id);\n}\n\nfunction removeId(element) {\n element.removeAttribute('data-ps-id');\n}\n\nexports.add = function (element) {\n var newId = guid();\n setId(element, newId);\n instances[newId] = new Instance(element);\n return instances[newId];\n};\n\nexports.remove = function (element) {\n delete instances[getId(element)];\n removeId(element);\n};\n\nexports.get = function (element) {\n return instances[getId(element)];\n};\n\n\n/***/ }),\n/* 101 */,\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(517), __esModule: true };\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.toJQuery = exports.qualifyURL = exports.secondsToMS = exports.capitalizeFirstLetter = exports.camelCaseSelector = exports.getUnExpandedDimensions = exports.getExpandedDimensions = exports.getHiddenDimensions = exports.getDimensions = undefined;\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _Element = __webpack_require__(292);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Converts dashed string into camel-cased string\n * @param {string} str - the string beiing converted\n * @returns {string} camel-cased string\n */\nfunction camelCaseSelector(str) {\n\tif (typeof str !== 'string') {\n\t\treturn str;\n\t}\n\n\treturn str.replace(/^[#|.]/, '').replace(/-+([a-zA-Z]{1})/g, function ($1, $2) {\n\t\treturn $2.toUpperCase();\n\t});\n}\n\n/**\n * Capitalizes first character of string\n * @param {string} str - the string beiing converted\n * @returns {string} string starting with capital letter\n */\nfunction capitalizeFirstLetter(str) {\n\tif (typeof str !== 'string') {\n\t\treturn str;\n\t}\n\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n/**\n * Get DOM Element Dimensions\n * @param {jQuery} $el jquery Wrapped DOM Element\n * @return {Object} the dimensions as { width, height, outerWidth, outerHeight, widthWithMargins, heightWithMargins }\n */\nfunction getDimensions($el) {\n\t// TODO: move to fasterdom?\n\treturn {\n\t\twidth: $el.width(),\n\t\theight: $el.height(),\n\t\touterWidth: $el.outerWidth(),\n\t\touterHeight: $el.outerHeight(),\n\t\twidthWithMargins: $el.outerWidth(true),\n\t\theightWithMargins: $el.outerHeight(true)\n\t};\n}\n\n/**\n * getHiddenDimension - get DOM element dimensions if it is hidden\n * inspired by: https://github.com/jcamenisch/jQuery-Hidden-Dimension\n * @param {jQuery} $el jQuery wrapped DOM Element\n * @param {String} modified Descriptor of which dimension was modified / set to zero - can be `width` or `height`\n * @return {Object} the dimensions as { width, height, outerWidth, outerHeight, widthWithMargins, heightWithMargins }\n */\nfunction getHiddenDimensions($el, modified) {\n\tvar force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\tif ($el.is(':visible') && $el.height() > 0 && $el.width() > 0 && force === false) {\n\t\treturn getDimensions($el);\n\t}\n\t// TODO: move to fasterdom?\n\tvar visibleContainer = $el.parent().is(':visible') ? $el.parent() : $el.parent().closest(':visible'),\n\t elementClone = $el.clone(),\n\t containerClone = (0, _jquery2.default)('<div />').append(elementClone).css({\n\t\tposition: 'absolute',\n\t\tright: '32000px',\n\t\tleft: '-32000px',\n\t\ttop: '-32000px'\n\t}).appendTo(visibleContainer);\n\n\tswitch (modified) {\n\t\tcase 'height':\n\t\t\telementClone.css({ height: 'auto' });\n\t\t\tbreak;\n\t\tcase 'width':\n\t\t\telementClone.css({ width: 'auto' });\n\t\t\tbreak;\n\t\tcase 'max-height':\n\t\t\telementClone.css({ maxHeight: 'none' });\n\t\t\tbreak;\n\t\tdefault:\n\t}\n\n\tif (typeof elementClone.attr('aria-expanded') !== 'undefined') {\n\t\telementClone.attr('aria-expanded', false);\n\t}\n\n\tvar result = getDimensions(elementClone); // eslint-disable-line one-var\n\n\tcontainerClone.remove();\n\treturn result;\n}\n\nfunction getExpandedDimensions($el) {\n\tvar visibleContainer = $el.parent().is(':visible') ? $el.parent() : $el.parent().closest(':visible'),\n\t elementClone = $el.clone(),\n\t containerClone = (0, _jquery2.default)('<div />').append(elementClone).css({\n\t\tposition: 'absolute',\n\t\tright: '32000px',\n\t\tleft: '-32000px',\n\t\ttop: '-32000px'\n\t}).appendTo(visibleContainer);\n\n\tif (typeof elementClone.attr('aria-expanded') !== 'undefined') {\n\t\telementClone.attr('aria-expanded', true);\n\t}\n\n\tvar result = getDimensions(elementClone); // eslint-disable-line one-var\n\n\tcontainerClone.remove();\n\treturn result;\n}\n\nfunction getUnExpandedDimensions($el) {\n\tvar visibleContainer = $el.parent().is(':visible') ? $el.parent() : $el.parent().closest(':visible'),\n\t elementClone = $el.clone(),\n\t containerClone = (0, _jquery2.default)('<div />').append(elementClone).css({\n\t\tposition: 'absolute',\n\t\tright: '32000px',\n\t\tleft: '-32000px',\n\t\ttop: '-32000px'\n\t}).appendTo(visibleContainer);\n\n\tif (typeof elementClone.attr('aria-expanded') !== 'undefined') {\n\t\telementClone.attr('aria-expanded', false);\n\t}\n\n\tvar result = getDimensions(elementClone); // eslint-disable-line one-var\n\n\tcontainerClone.remove();\n\treturn result;\n}\n\n/**\n * convert a string with seconds to milliseconds\n * @param {string} str date-time-string\n * @return {float} milliseconds\n */\nfunction secondsToMS(str) {\n\treturn parseFloat(str.replace(/[^0-9\\.]/, ''), 10) * 1000;\n}\n\n/**\n */\nfunction qualifyURL(url) {\n\tvar a = document.createElement('a');\n\ta.href = url;\n\treturn a.href;\n}\n\n/**\n * Check if given element is a DOM- / jQuery-Element and returns a jQuery wrapped Element.\n *\n * @param {(jQuery|Object|String)} el - Element to check\n * @return {jQuery} jQuery wrapped element\n */\nfunction toJQuery(el) {\n\tif (!(0, _Element.isHTMLNode)(el) && !(0, _Element.isHTMLElement)(el) && !(0, _Element.isjQueryElement)(el)) {\n\t\tthrow new Error('Element is not a valid HTML-DOM- or jQuery-Element!', el);\n\t}\n\tif (!(0, _Element.isjQueryElement)(el)) {\n\t\treturn (0, _jquery2.default)(el);\n\t}\n\n\treturn el;\n}\n\nexports.getDimensions = getDimensions;\nexports.getHiddenDimensions = getHiddenDimensions;\nexports.getExpandedDimensions = getExpandedDimensions;\nexports.getUnExpandedDimensions = getUnExpandedDimensions;\nexports.camelCaseSelector = camelCaseSelector;\nexports.capitalizeFirstLetter = capitalizeFirstLetter;\nexports.secondsToMS = secondsToMS;\nexports.qualifyURL = qualifyURL;\nexports.toJQuery = toJQuery;\n\n/***/ }),\n/* 104 */,\n/* 105 */,\n/* 106 */,\n/* 107 */,\n/* 108 */,\n/* 109 */,\n/* 110 */,\n/* 111 */,\n/* 112 */,\n/* 113 */,\n/* 114 */,\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar isFunction_1 = __webpack_require__(202);\nvar Subscription_1 = __webpack_require__(207);\nvar Observer_1 = __webpack_require__(265);\nvar rxSubscriber_1 = __webpack_require__(266);\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber<T>\n */\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n /**\n * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n * defined Observer or a `next` callback function.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n */\n function Subscriber(destinationOrNext, error, complete) {\n _super.call(this);\n this.syncErrorValue = null;\n this.syncErrorThrown = false;\n this.syncErrorThrowable = false;\n this.isStopped = false;\n switch (arguments.length) {\n case 0:\n this.destination = Observer_1.empty;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = Observer_1.empty;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n this.destination.add(this);\n }\n else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n break;\n }\n }\n Subscriber.prototype[rxSubscriber_1.rxSubscriber] = function () { return this; };\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n * @return {Subscriber<T>} A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n */\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached {@link Error}. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _a = this, _parent = _a._parent, _parents = _a._parents;\n this._parent = null;\n this._parents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parent = _parent;\n this._parents = _parents;\n return this;\n };\n return Subscriber;\n}(Subscription_1.Subscription));\nexports.Subscriber = Subscriber;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n _super.call(this);\n this._parentSubscriber = _parentSubscriber;\n var next;\n var context = this;\n if (isFunction_1.isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== Observer_1.empty) {\n context = Object.create(observerOrNext);\n if (isFunction_1.isFunction(context.unsubscribe)) {\n this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._error) {\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n throw err;\n }\n else {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n throw err;\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=Subscriber.js.map\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(268), __esModule: true };\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _from = __webpack_require__(104);\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _stringify = __webpack_require__(284);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _map = __webpack_require__(201);\n\nvar _Observable = __webpack_require__(48);\n\nvar _fromEvent = __webpack_require__(208);\n\nvar _PostMessage = __webpack_require__(273);\n\nvar _PostMessage2 = _interopRequireDefault(_PostMessage);\n\nvar _frontendLogger = __webpack_require__(126);\n\nvar _frontendLogger2 = _interopRequireDefault(_frontendLogger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scope = window,\n EVENTS = {\n\tMESSAGE: 'message'\n};\n\n/**\r\n *\r\n * @returns {Observable<Object>} Observable event stream containing parsed cross domain messages\r\n */\nfunction createMessageStream() {\n\tvar _context;\n\n\treturn (_context = _fromEvent.fromEvent.call(_Observable.Observable, scope, EVENTS.MESSAGE), _map.map).call(_context, _PostMessage2.default);\n}\n\nfunction sendTo(el, message, target) {\n\t// console.log( el, JSON.stringify( message ), target );\n\t// el.postMessage( '', target );\n\tel.postMessage((0, _stringify2.default)(message), target);\n}\n\n/**\r\n * Gateway for cross domain iFrame communication using postMessage.\r\n *\r\n * @class\r\n */\n\nvar WindowGateway = function () {\n\tfunction WindowGateway() {\n\t\t(0, _classCallCheck3.default)(this, WindowGateway);\n\n\t\t/**\r\n * EventStream to receive cross domain messages.\r\n * @type {Observable<Object>}\r\n */\n\t\tthis.messageEvent = createMessageStream();\n\t}\n\n\t/**\r\n * Send a message cross origin message via postMessage transport\r\n * @param {object} message - Message object to send to the parent window\r\n * @param {string} target -\r\n * @returns {void}\r\n */\n\n\n\tWindowGateway.prototype.send = function send(message, target) {\n\t\tsendTo(window.parent, message, target);\n\t};\n\n\tWindowGateway.prototype.sendToChild = function sendToChild(iframe, message, target) {\n\t\tsendTo(iframe.contentWindow, message, target);\n\t};\n\n\treturn WindowGateway;\n}();\n\nexports.default = WindowGateway;\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(80);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _set = __webpack_require__(274);\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _toConsumableArray2 = __webpack_require__(117);\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _TransitionEndPromise = __webpack_require__(291);\n\nvar _TransitionEndPromise2 = _interopRequireDefault(_TransitionEndPromise);\n\nvar _TransitionEventExecutor = __webpack_require__(543);\n\nvar _TransitionEventExecutor2 = _interopRequireDefault(_TransitionEventExecutor);\n\nvar _Selectors = __webpack_require__(124);\n\nvar _global = __webpack_require__(103);\n\nvar _signal = __webpack_require__(96);\n\nvar _signal2 = _interopRequireDefault(_signal);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * Sets the transition value as a collection of the given transition types\r\n * Checks if the give transition types are within the css style definitions\r\n * @param { ?(String|Array) } [transition=['all']] - String of transition types splitted by whitespace\r\n * @returns { void }\r\n * @private\r\n */\nfunction _setTransition(transition) {\n\tvar _this = this;\n\n\tvar createPromise = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\n\tif (Array.isArray(transition)) {\n\t\tthis.transitions = transition;\n\t} else if (typeof transition === 'string') {\n\t\tthis.transitions = transition.split(' ');\n\t} else {\n\t\tthis.transitions = ['all'];\n\t}\n\n\tthis.transitions.forEach(function (v) {\n\t\t_this.transitions.push('-webkit-' + v);\n\t});\n\n\tthis.transitions = [].concat((0, _toConsumableArray3.default)(new _set2.default(this.transitions)));\n\tif (createPromise) {\n\t\tthis.setTransitionEndPromise();\n\t}\n}\n\n/**\r\n * Sets the transition element on which to listen for the transition end event\r\n * @param { jQuery } transitionEl - DOM Element to watch the transition end for\r\n * @returns { void }\r\n * @private\r\n */\nfunction _setTransitionEl(transitionEl) {\n\tvar createPromise = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\tthis._transitionEventLogger.info('Set transition element to', transitionEl);\n\tif (!(transitionEl instanceof _jquery2.default)) {\n\t\ttransitionEl = (0, _jquery2.default)(transitionEl); // eslint-disable-line no-param-reassign\n\t}\n\n\tthis.$transitionEl = transitionEl;\n\tif (createPromise) {\n\t\tthis.setTransitionEndPromise();\n\t}\n}\n\n/**\r\n * Attaches the TransitionEnd Handler\r\n *\r\n * @private\r\n * @return {void}\r\n */\nfunction _setTransitionEndPromise() {\n\tvar _this2 = this;\n\n\tthis._transitionEventLogger.info('Attach Transition End Handler as Promise to', this.$transitionEl);\n\n\tthis.transitionEndPromise = _TransitionEndPromise2.default.create(this.$transitionEl, this.transitions);\n\tthis.transitionEndPromise.then(function (data) {\n\t\t_this2._afterTransition.dispatch('transition', data);\n\t\t_setTransitionEndPromise.call(_this2);\n\t});\n}\n\n/**\r\n * Class handling\r\n * Controls\r\n * Controls\r\n * @extends { AbstractController }\r\n */\n\nvar TransitionEventController = function (_TransitionEventExecu) {\n\t(0, _inherits3.default)(TransitionEventController, _TransitionEventExecu);\n\n\tfunction TransitionEventController() {\n\t\t(0, _classCallCheck3.default)(this, TransitionEventController);\n\n\t\t// change debugging setting accordingly\n\t\tvar DEBUG = false;\n\n\t\tvar _this3 = (0, _possibleConstructorReturn3.default)(this, _TransitionEventExecu.call(this));\n\n\t\t_this3._transitionEventLogger = _this3.debugLocal(DEBUG, 'TransitionEventController', 'background: #72FF26; color: black');\n\n\t\t_this3.$scope = null;\n\t\t_this3.callbacks = {};\n\t\t_this3.transitions = [];\n\t\t_this3.$transitionEl = null;\n\n\t\t_this3.transitionEndPromise = null;\n\n\t\t_this3._before = new _signal2.default();\n\t\t_this3._on = new _signal2.default();\n\t\t_this3._after = new _signal2.default();\n\t\t_this3._afterTransition = new _signal2.default();\n\n\t\t_this3._isOpen = false;\n\t\t_this3._isAnimated = false;\n\n\t\t// addSubscriptions.call( this );\n\t\treturn _this3;\n\t}\n\n\tTransitionEventController.prototype.init = function init($root) {\n\t\tvar _this4 = this;\n\n\t\tthis.$scope = (0, _global.toJQuery)($root);\n\n\t\tthis.initialOpenPromise = _fasterdom.fasterdomPromised.mutateInstant(function () {\n\t\t\tvar attrOpen = _this4.$scope.attr(_Selectors.SELECTORS.expandedSelector);\n\n\t\t\t_this4.isOpen = attrOpen && JSON.parse(attrOpen) === true;\n\t\t});\n\n\t\tthis.setTransition(false, false);\n\t\tthis.setTransitionElement(this.$scope, false);\n\t\tthis.setTransitionEndPromise();\n\t};\n\n\t/**\r\n * Runs private execute function with opening arguments\r\n * @param { jQuery } $trigger - the trigger which initiated the event\r\n * @returns { void|Array } - returns an array of callback functions which failed to be executed\r\n * @public\r\n */\n\tTransitionEventController.prototype.open = function open($trigger) {\n\t\treturn this.execute('open', $trigger);\n\t};\n\n\tTransitionEventController.prototype.openSilent = function openSilent() {\n\t\tthis.executeSilent('open');\n\t};\n\n\t/**\r\n * Runs private execute function with closing arguments\r\n * @param { jQuery } $trigger - the trigger which initiated the event\r\n * @returns { void|Array } - returns an array of callback functions which failed to be executed\r\n * @public\r\n */\n\n\n\tTransitionEventController.prototype.close = function close($trigger) {\n\t\treturn this.execute('close', $trigger);\n\t};\n\n\tTransitionEventController.prototype.closeSilent = function closeSilent() {\n\t\tthis.executeSilent('close');\n\t};\n\n\t/**\r\n * Adds give callback function into beforeOpen function stack\r\n * @param { Function } fn - callback function\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tTransitionEventController.prototype.beforeOpen = function beforeOpen(fn) {\n\t\tthis._before.add(fn, 'open');\n\t};\n\n\t/**\r\n * Adds give callback function into onOpen function stack\r\n * @param { Function } fn - callback function\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tTransitionEventController.prototype.onOpen = function onOpen(fn) {\n\t\tthis._on.add(fn, 'open');\n\t};\n\n\t/**\r\n * Adds give callback function into afterOpen function stack\r\n * @param { Function } fn - callback function\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tTransitionEventController.prototype.afterOpen = function afterOpen(fn) {\n\t\tthis._after.add(fn, 'open');\n\t};\n\n\t/**\r\n * Adds give callback function into afterOpen function stack for execution once\r\n * @param { Function } fn - callback function\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tTransitionEventController.prototype.afterOpenOnce = function afterOpenOnce(fn) {\n\t\tthis._after.add(fn, 'open', true);\n\t};\n\n\t/**\r\n * Adds give callback function into beforeClose function stack\r\n * @param { Function } fn - callback function\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tTransitionEventController.prototype.beforeClose = function beforeClose(fn) {\n\t\tthis._before.add(fn, 'close');\n\t};\n\n\t/**\r\n * Adds give callback function into onClose function stack\r\n * @param { Function } fn - callback function\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tTransitionEventController.prototype.onClose = function onClose(fn) {\n\t\tthis._on.add(fn, 'close');\n\t};\n\n\t/**\r\n * Adds give callback function into afterClose function stack\r\n * @param { Function } fn - callback function\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tTransitionEventController.prototype.afterClose = function afterClose(fn) {\n\t\tthis._after.add(fn, 'close');\n\t};\n\n\t/**\r\n * Adds give callback function into afterClose function stack for execution once\r\n * @param { Function } fn - callback function\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tTransitionEventController.prototype.afterCloseOnce = function afterCloseOnce(fn) {\n\t\tthis._after.add(fn, 'close', true);\n\t};\n\n\tTransitionEventController.prototype.afterTransition = function afterTransition(fn) {\n\t\tthis._afterTransition.add(fn, 'transition');\n\t};\n\n\tTransitionEventController.prototype.afterTransitionOnce = function afterTransitionOnce(fn) {\n\t\tthis._afterTransition.add(fn, 'transition', true);\n\t};\n\n\t/**\r\n * Setter function to set transition types\r\n * @param { String } transition - transition types\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tTransitionEventController.prototype.setTransition = function setTransition(transition) {\n\t\tvar createPromise = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t\t_setTransition.call(this, transition, createPromise);\n\t};\n\n\tTransitionEventController.prototype.setTransitionElement = function setTransitionElement(transitionEl) {\n\t\tvar createPromise = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t\t_setTransitionEl.call(this, transitionEl, createPromise);\n\t};\n\n\tTransitionEventController.prototype.setTransitionEndPromise = function setTransitionEndPromise() {\n\t\t_setTransitionEndPromise.call(this);\n\t};\n\n\t(0, _createClass3.default)(TransitionEventController, [{\n\t\tkey: 'isOpen',\n\t\tset: function set(is) {\n\t\t\tvar _this5 = this;\n\n\t\t\tif (is === true) {\n\t\t\t\tthis.state.setOpen();\n\t\t\t} else {\n\t\t\t\tthis.state.setClosed();\n\t\t\t}\n\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\t_this5.$scope.attr(_Selectors.SELECTORS.expandedSelector, String(is === true));\n\t\t\t});\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this.state.isOpen;\n\t\t}\n\t}, {\n\t\tkey: 'isAnimated',\n\t\tset: function set(is) {\n\t\t\tthis._isAnimated = is === true;\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this._isAnimated;\n\t\t}\n\t}]);\n\treturn TransitionEventController;\n}(_TransitionEventExecutor2.default);\n\nexports.default = TransitionEventController;\n\n/***/ }),\n/* 120 */,\n/* 121 */,\n/* 122 */,\n/* 123 */,\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar SELECTORS = exports.SELECTORS = {\n\tactiveClass: 'active',\n\tactiveSelector: 'aria-selected',\n\tactiveSelectorValue: 'true',\n\tinactiveSelectorValue: 'false',\n\texpandedSelector: 'aria-expanded',\n\tcontrolsSelector: 'aria-controls',\n\tdisabled: 'disabled',\n\tduringAnimationClass: 'during-animation',\n\tduringAnimationCloseClass: 'during-animation--close',\n\tduringAnimationOpenClass: 'during-animation--open'\n\n};\n\n/***/ }),\n/* 125 */,\n/* 126 */,\n/* 127 */,\n/* 128 */,\n/* 129 */,\n/* 130 */,\n/* 131 */,\n/* 132 */,\n/* 133 */,\n/* 134 */,\n/* 135 */,\n/* 136 */,\n/* 137 */,\n/* 138 */,\n/* 139 */,\n/* 140 */,\n/* 141 */,\n/* 142 */,\n/* 143 */,\n/* 144 */,\n/* 145 */,\n/* 146 */,\n/* 147 */,\n/* 148 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar cls = __webpack_require__(283);\nvar dom = __webpack_require__(204);\n\nvar toInt = exports.toInt = function (x) {\n return parseInt(x, 10) || 0;\n};\n\nvar clone = exports.clone = function (obj) {\n if (!obj) {\n return null;\n } else if (obj.constructor === Array) {\n return obj.map(clone);\n } else if (typeof obj === 'object') {\n var result = {};\n for (var key in obj) {\n result[key] = clone(obj[key]);\n }\n return result;\n } else {\n return obj;\n }\n};\n\nexports.extend = function (original, source) {\n var result = clone(original);\n for (var key in source) {\n result[key] = clone(source[key]);\n }\n return result;\n};\n\nexports.isEditable = function (el) {\n return dom.matches(el, \"input,[contenteditable]\") ||\n dom.matches(el, \"select,[contenteditable]\") ||\n dom.matches(el, \"textarea,[contenteditable]\") ||\n dom.matches(el, \"button,[contenteditable]\");\n};\n\nexports.removePsClasses = function (element) {\n var clsList = cls.list(element);\n for (var i = 0; i < clsList.length; i++) {\n var className = clsList[i];\n if (className.indexOf('ps-') === 0) {\n cls.remove(element, className);\n }\n }\n};\n\nexports.outerWidth = function (element) {\n return toInt(dom.css(element, 'width')) +\n toInt(dom.css(element, 'paddingLeft')) +\n toInt(dom.css(element, 'paddingRight')) +\n toInt(dom.css(element, 'borderLeftWidth')) +\n toInt(dom.css(element, 'borderRightWidth'));\n};\n\nexports.startScrolling = function (element, axis) {\n cls.add(element, 'ps-in-scrolling');\n if (typeof axis !== 'undefined') {\n cls.add(element, 'ps-' + axis);\n } else {\n cls.add(element, 'ps-x');\n cls.add(element, 'ps-y');\n }\n};\n\nexports.stopScrolling = function (element, axis) {\n cls.remove(element, 'ps-in-scrolling');\n if (typeof axis !== 'undefined') {\n cls.remove(element, 'ps-' + axis);\n } else {\n cls.remove(element, 'ps-x');\n cls.remove(element, 'ps-y');\n }\n};\n\nexports.env = {\n isWebKit: 'WebkitAppearance' in document.documentElement.style,\n supportsTouch: (('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch),\n supportsIePointer: window.navigator.msMaxTouchPoints !== null\n};\n\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(148);\nvar cls = __webpack_require__(283);\nvar dom = __webpack_require__(204);\nvar instances = __webpack_require__(100);\nvar updateScroll = __webpack_require__(157);\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = {width: i.railXWidth};\n if (i.isRtl) {\n xRailOffset.left = i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth - i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - element.scrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + element.scrollTop;\n }\n dom.css(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = {top: element.scrollTop, height: i.railYHeight};\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right = i.contentWidth - (i.negativeScrollAdjustment + element.scrollLeft) - i.scrollbarYRight - i.scrollbarYOuterWidth;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left = i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth * 2 - i.contentWidth - i.scrollbarYLeft - i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n dom.css(i.scrollbarYRail, yRailOffset);\n\n dom.css(i.scrollbarX, {left: i.scrollbarXLeft, width: i.scrollbarXWidth - i.railBorderXWidth});\n dom.css(i.scrollbarY, {top: i.scrollbarYTop, height: i.scrollbarYHeight - i.railBorderYWidth});\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n\n i.containerWidth = element.clientWidth;\n i.containerHeight = element.clientHeight;\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n var existingRails;\n if (!element.contains(i.scrollbarXRail)) {\n existingRails = dom.queryChildren(element, '.ps-scrollbar-x-rail');\n if (existingRails.length > 0) {\n existingRails.forEach(function (rail) {\n dom.remove(rail);\n });\n }\n dom.appendTo(i.scrollbarXRail, element);\n }\n if (!element.contains(i.scrollbarYRail)) {\n existingRails = dom.queryChildren(element, '.ps-scrollbar-y-rail');\n if (existingRails.length > 0) {\n existingRails.forEach(function (rail) {\n dom.remove(rail);\n });\n }\n dom.appendTo(i.scrollbarYRail, element);\n }\n\n if (!i.settings.suppressScrollX && i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(i, _.toInt(i.railXWidth * i.containerWidth / i.contentWidth));\n i.scrollbarXLeft = _.toInt((i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth) / (i.contentWidth - i.containerWidth));\n } else {\n i.scrollbarXActive = false;\n }\n\n if (!i.settings.suppressScrollY && i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(i, _.toInt(i.railYHeight * i.containerHeight / i.contentHeight));\n i.scrollbarYTop = _.toInt(element.scrollTop * (i.railYHeight - i.scrollbarYHeight) / (i.contentHeight - i.containerHeight));\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n cls.add(element, 'ps-active-x');\n } else {\n cls.remove(element, 'ps-active-x');\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n updateScroll(element, 'left', 0);\n }\n if (i.scrollbarYActive) {\n cls.add(element, 'ps-active-y');\n } else {\n cls.remove(element, 'ps-active-y');\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n updateScroll(element, 'top', 0);\n }\n};\n\n\n/***/ }),\n/* 150 */,\n/* 151 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = {\n\tROOT: '[data-tpl=dws01]',\n\tBASE: '.dws01__base',\n\tSETTINGS: '.dws01__settings',\n\tTRIGGER: '.dws01__switch-trigger',\n\tBUTTONS: {\n\t\tACCEPT_IMMEDIATE: '.dws01__btn--immediate-accept',\n\t\tACCEPT_LEVEL: '.dws01__btn--accept-level'\n\t},\n\tLEVELS: '.settings--options .level',\n\tDETAILS: '.settings--descriptions > li',\n\tEXPANDER: {\n\t\tROOT: '.expander-container',\n\t\tTRIGGER: '.expander__trigger'\n\t}\n};\n\n/***/ }),\n/* 152 */,\n/* 153 */,\n/* 154 */,\n/* 155 */,\n/* 156 */,\n/* 157 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar instances = __webpack_require__(100);\n\nvar lastTop;\nvar lastLeft;\n\nvar createDOMEvent = function (name) {\n var event = document.createEvent(\"Event\");\n event.initEvent(name, true, true);\n return event;\n};\n\nmodule.exports = function (element, axis, value) {\n if (typeof element === 'undefined') {\n throw 'You must provide an element to the update-scroll function';\n }\n\n if (typeof axis === 'undefined') {\n throw 'You must provide an axis to the update-scroll function';\n }\n\n if (typeof value === 'undefined') {\n throw 'You must provide a value to the update-scroll function';\n }\n\n if (axis === 'top' && value <= 0) {\n element.scrollTop = value = 0; // don't allow negative scroll\n element.dispatchEvent(createDOMEvent('ps-y-reach-start'));\n }\n\n if (axis === 'left' && value <= 0) {\n element.scrollLeft = value = 0; // don't allow negative scroll\n element.dispatchEvent(createDOMEvent('ps-x-reach-start'));\n }\n\n var i = instances.get(element);\n\n if (axis === 'top' && value >= i.contentHeight - i.containerHeight) {\n // don't allow scroll past container\n value = i.contentHeight - i.containerHeight;\n if (value - element.scrollTop <= 1) {\n // mitigates rounding errors on non-subpixel scroll values\n value = element.scrollTop;\n } else {\n element.scrollTop = value;\n }\n element.dispatchEvent(createDOMEvent('ps-y-reach-end'));\n }\n\n if (axis === 'left' && value >= i.contentWidth - i.containerWidth) {\n // don't allow scroll past container\n value = i.contentWidth - i.containerWidth;\n if (value - element.scrollLeft <= 1) {\n // mitigates rounding errors on non-subpixel scroll values\n value = element.scrollLeft;\n } else {\n element.scrollLeft = value;\n }\n element.dispatchEvent(createDOMEvent('ps-x-reach-end'));\n }\n\n if (!lastTop) {\n lastTop = element.scrollTop;\n }\n\n if (!lastLeft) {\n lastLeft = element.scrollLeft;\n }\n\n if (axis === 'top' && value < lastTop) {\n element.dispatchEvent(createDOMEvent('ps-scroll-up'));\n }\n\n if (axis === 'top' && value > lastTop) {\n element.dispatchEvent(createDOMEvent('ps-scroll-down'));\n }\n\n if (axis === 'left' && value < lastLeft) {\n element.dispatchEvent(createDOMEvent('ps-scroll-left'));\n }\n\n if (axis === 'left' && value > lastLeft) {\n element.dispatchEvent(createDOMEvent('ps-scroll-right'));\n }\n\n if (axis === 'top') {\n element.scrollTop = lastTop = value;\n element.dispatchEvent(createDOMEvent('ps-scroll-y'));\n }\n\n if (axis === 'left') {\n element.scrollLeft = lastLeft = value;\n element.dispatchEvent(createDOMEvent('ps-scroll-x'));\n }\n\n};\n\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n/**\r\n * @typedef {String} DomID\r\n */\n\nvar IDENTIFIERS = exports.IDENTIFIERS = {\n\tNAVIGATION: {\n\t\t/**\r\n * @type {DomID}\r\n */\n\t\tROOT: '#main-navigation',\n\t\tUL: '#main-navigation ul:first'\n\t},\n\tOFF_SCREEN: {\n\t\t/**\r\n * @type {DomID}\r\n */\n\t\tROOT: '#off-screen-wrap',\n\t\tCONTENT: '#off-screen-content',\n\t\tAPP_DRAWER: '#off-screen-app-drawer',\n\t\tCART: '#off-screen-cart',\n\t\tNAVIGATION: '#off-screen-navigation',\n\t\tOVERLAY: '#off-screen-overlay',\n\t\tWRAP: '#off-screen-wrap'\n\t},\n\tQUICK_NAVIGATION: {\n\t\t/**\r\n * @type {DomID}\r\n */\n\t\tROOT: '#quick-navigation'\n\t},\n\tTARGET_GROUP_SELECT: {\n\t\t/**\r\n * @type {DomID}\r\n */\n\t\tROOT: '#target-group-select'\n\t},\n\tMAIN_HEADER: {\n\t\t/**\r\n * @type {DomID}\r\n */\n\t\tROOT: '#main-header'\n\t},\n\tFOOTER: {\n\t\t/**\r\n * @type {DomID}\r\n */\n\t\tROOT: '#main-footer'\n\t},\n\tHEADER: {\n\t\t/**\r\n * @type {DomID}\r\n */\n\t\tROOT: '#main-header, #target-group-select'\n\t},\n\tCOOKIE_DISCLAIMER: {\n\t\t/**\r\n * @type {DomID}\r\n */\n\t\tROOT: '#cookie-disclaimer'\n\t},\n\tMETA_NAVIGATION: {\n\t\t/**\r\n * @type {DomID}\r\n */\n\t\tROOT: '[data-tpl=\"meta-navigation\"]'\n\t}\n};\n\n/***/ }),\n/* 159 */,\n/* 160 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(12);\nvar core = __webpack_require__(5);\nvar fails = __webpack_require__(31);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(523), __esModule: true };\n\n/***/ }),\n/* 162 */,\n/* 163 */,\n/* 164 */,\n/* 165 */,\n/* 166 */,\n/* 167 */,\n/* 168 */,\n/* 169 */,\n/* 170 */,\n/* 171 */,\n/* 172 */,\n/* 173 */,\n/* 174 */,\n/* 175 */,\n/* 176 */,\n/* 177 */,\n/* 178 */,\n/* 179 */,\n/* 180 */,\n/* 181 */,\n/* 182 */,\n/* 183 */,\n/* 184 */,\n/* 185 */,\n/* 186 */,\n/* 187 */,\n/* 188 */,\n/* 189 */,\n/* 190 */,\n/* 191 */,\n/* 192 */,\n/* 193 */,\n/* 194 */,\n/* 195 */,\n/* 196 */,\n/* 197 */,\n/* 198 */,\n/* 199 */,\n/* 200 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(56);\nvar gOPS = __webpack_require__(114);\nvar pIE = __webpack_require__(86);\nvar toObject = __webpack_require__(58);\nvar IObject = __webpack_require__(98);\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(31)(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n\n\n/***/ }),\n/* 201 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar map_1 = __webpack_require__(537);\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * <img src=\"./img/map.png\" width=\"100%\">\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * @example <caption>Map every click to the clientX position of that click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks.map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable<R>} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nfunction map(project, thisArg) {\n return map_1.map(project, thisArg)(this);\n}\nexports.map = map;\n//# sourceMappingURL=map.js.map\n\n/***/ }),\n/* 202 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\nexports.isFunction = isFunction;\n//# sourceMappingURL=isFunction.js.map\n\n/***/ }),\n/* 203 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// typeof any so that it we don't have to cast when comparing a result to the error object\nexports.errorObject = { e: {} };\n//# sourceMappingURL=errorObject.js.map\n\n/***/ }),\n/* 204 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DOM = {};\n\nDOM.e = function (tagName, className) {\n var element = document.createElement(tagName);\n element.className = className;\n return element;\n};\n\nDOM.appendTo = function (child, parent) {\n parent.appendChild(child);\n return child;\n};\n\nfunction cssGet(element, styleName) {\n return window.getComputedStyle(element)[styleName];\n}\n\nfunction cssSet(element, styleName, styleValue) {\n if (typeof styleValue === 'number') {\n styleValue = styleValue.toString() + 'px';\n }\n element.style[styleName] = styleValue;\n return element;\n}\n\nfunction cssMultiSet(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val.toString() + 'px';\n }\n element.style[key] = val;\n }\n return element;\n}\n\nDOM.css = function (element, styleNameOrObject, styleValue) {\n if (typeof styleNameOrObject === 'object') {\n // multiple set with object\n return cssMultiSet(element, styleNameOrObject);\n } else {\n if (typeof styleValue === 'undefined') {\n return cssGet(element, styleNameOrObject);\n } else {\n return cssSet(element, styleNameOrObject, styleValue);\n }\n }\n};\n\nDOM.matches = function (element, query) {\n if (typeof element.matches !== 'undefined') {\n return element.matches(query);\n } else {\n if (typeof element.matchesSelector !== 'undefined') {\n return element.matchesSelector(query);\n } else if (typeof element.webkitMatchesSelector !== 'undefined') {\n return element.webkitMatchesSelector(query);\n } else if (typeof element.mozMatchesSelector !== 'undefined') {\n return element.mozMatchesSelector(query);\n } else if (typeof element.msMatchesSelector !== 'undefined') {\n return element.msMatchesSelector(query);\n }\n }\n};\n\nDOM.remove = function (element) {\n if (typeof element.remove !== 'undefined') {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n};\n\nDOM.queryChildren = function (element, selector) {\n return Array.prototype.filter.call(element.childNodes, function (child) {\n return DOM.matches(child, selector);\n });\n};\n\nmodule.exports = DOM;\n\n\n/***/ }),\n/* 205 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = undefined;\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(80);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _toConsumableArray2 = __webpack_require__(117);\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _frontendLogger = __webpack_require__(126);\n\nvar _frontendLogger2 = _interopRequireDefault(_frontendLogger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getDebugLoggerEmpty() {\n\treturn {\n\t\twarn: function warn() {},\n\t\terror: function error() {},\n\t\tinfo: function info() {},\n\t\tlog: function log() {}\n\t};\n}\n\nfunction getDebugLogger() {\n\tvar pref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '★';\n\n\tvar _LOGGER$warn, _LOGGER$error, _LOGGER$info, _LOGGER$log;\n\n\tvar style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\tvar detailed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\tvar details = !detailed ? [] : [':', this.constructor.name, '.', Object._uid(this)],\n\t args = [_frontendLogger2.default, '%c \\u2605 %c %c' + pref + '%c', style, '', 'font-weight: bold', ''].concat(details);\n\n\treturn {\n\t\twarn: (_LOGGER$warn = _frontendLogger2.default.warn).bind.apply(_LOGGER$warn, (0, _toConsumableArray3.default)(args)),\n\t\terror: (_LOGGER$error = _frontendLogger2.default.error).bind.apply(_LOGGER$error, (0, _toConsumableArray3.default)(args)),\n\t\tinfo: (_LOGGER$info = _frontendLogger2.default.info).bind.apply(_LOGGER$info, (0, _toConsumableArray3.default)(args)),\n\t\tlog: (_LOGGER$log = _frontendLogger2.default.log).bind.apply(_LOGGER$log, (0, _toConsumableArray3.default)(args))\n\t};\n}\n\n/**\n * @interface for controller subclasses\n */\n\nvar DebugController = function () {\n\tfunction DebugController() {\n\t\t(0, _classCallCheck3.default)(this, DebugController);\n\n\t\tthis.debugStyle = 'color: #f59b00; background: #3c3732';\n\t\tthis.debug = false;\n\t}\n\n\tDebugController.prototype.debugLocal = function debugLocal(enable) {\n\t\tvar pref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '★';\n\t\tvar style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n\t\treturn enable === true ? getDebugLogger.call(this, pref, style || this.debugStyle || '') : getDebugLoggerEmpty(); // eslint-disable-line no-constant-condition\n\t};\n\n\t(0, _createClass3.default)(DebugController, [{\n\t\tkey: 'debug',\n\t\tset: function set(is) {\n\t\t\tif (is === true || typeof is === 'string') {\n\t\t\t\tif (is === true) {\n\t\t\t\t\tis = this.constructor.name; // eslint-disable-line no-param-reassign\n\t\t\t\t}\n\t\t\t\tthis.logger = getDebugLogger.call(this, is, this.debugStyle || '');\n\t\t\t\tthis._debug = true;\n\t\t\t} else {\n\t\t\t\tthis.logger = getDebugLoggerEmpty(is);\n\t\t\t\tthis._debug = false;\n\t\t\t}\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this._debug;\n\t\t}\n\t}]);\n\treturn DebugController;\n}();\n\nexports.default = DebugController;\n\n/***/ }),\n/* 206 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(514), __esModule: true };\n\n/***/ }),\n/* 207 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar isArray_1 = __webpack_require__(276);\nvar isObject_1 = __webpack_require__(277);\nvar isFunction_1 = __webpack_require__(202);\nvar tryCatch_1 = __webpack_require__(264);\nvar errorObject_1 = __webpack_require__(203);\nvar UnsubscriptionError_1 = __webpack_require__(538);\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nvar Subscription = (function () {\n /**\n * @param {function(): void} [unsubscribe] A function describing how to\n * perform the disposal of resources when the `unsubscribe` method is called.\n */\n function Subscription(unsubscribe) {\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n * @type {boolean}\n */\n this.closed = false;\n this._parent = null;\n this._parents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n Subscription.prototype.unsubscribe = function () {\n var hasErrors = false;\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parent = _a._parent, _parents = _a._parents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parent = null;\n this._parents = null;\n // null out _subscriptions first so any child subscriptions that attempt\n // to remove themselves from this subscription will noop\n this._subscriptions = null;\n var index = -1;\n var len = _parents ? _parents.length : 0;\n // if this._parent is null, then so is this._parents, and we\n // don't have to remove ourselves from any parent subscriptions.\n while (_parent) {\n _parent.remove(this);\n // if this._parents is null or index >= len,\n // then _parent is set to null, and the loop exits\n _parent = ++index < len && _parents[index] || null;\n }\n if (isFunction_1.isFunction(_unsubscribe)) {\n var trial = tryCatch_1.tryCatch(_unsubscribe).call(this);\n if (trial === errorObject_1.errorObject) {\n hasErrors = true;\n errors = errors || (errorObject_1.errorObject.e instanceof UnsubscriptionError_1.UnsubscriptionError ?\n flattenUnsubscriptionErrors(errorObject_1.errorObject.e.errors) : [errorObject_1.errorObject.e]);\n }\n }\n if (isArray_1.isArray(_subscriptions)) {\n index = -1;\n len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject_1.isObject(sub)) {\n var trial = tryCatch_1.tryCatch(sub.unsubscribe).call(sub);\n if (trial === errorObject_1.errorObject) {\n hasErrors = true;\n errors = errors || [];\n var err = errorObject_1.errorObject.e;\n if (err instanceof UnsubscriptionError_1.UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n }\n if (hasErrors) {\n throw new UnsubscriptionError_1.UnsubscriptionError(errors);\n }\n };\n /**\n * Adds a tear down to be called during the unsubscribe() of this\n * Subscription.\n *\n * If the tear down being added is a subscription that is already\n * unsubscribed, is the same reference `add` is being called on, or is\n * `Subscription.EMPTY`, it will not be added.\n *\n * If this subscription is already in an `closed` state, the passed\n * tear down logic will be executed immediately.\n *\n * @param {TeardownLogic} teardown The additional logic to execute on\n * teardown.\n * @return {Subscription} Returns the Subscription used or created to be\n * added to the inner subscriptions list. This Subscription can be used with\n * `remove()` to remove the passed teardown logic from the inner subscriptions\n * list.\n */\n Subscription.prototype.add = function (teardown) {\n if (!teardown || (teardown === Subscription.EMPTY)) {\n return Subscription.EMPTY;\n }\n if (teardown === this) {\n return this;\n }\n var subscription = teardown;\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (typeof subscription._addParent !== 'function' /* quack quack */) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default:\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n var subscriptions = this._subscriptions || (this._subscriptions = []);\n subscriptions.push(subscription);\n subscription._addParent(this);\n return subscription;\n };\n /**\n * Removes a Subscription from the internal list of subscriptions that will\n * unsubscribe during the unsubscribe process of this Subscription.\n * @param {Subscription} subscription The subscription to remove.\n * @return {void}\n */\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.prototype._addParent = function (parent) {\n var _a = this, _parent = _a._parent, _parents = _a._parents;\n if (!_parent || _parent === parent) {\n // If we don't have a parent, or the new parent is the same as the\n // current parent, then set this._parent to the new parent.\n this._parent = parent;\n }\n else if (!_parents) {\n // If there's already one parent, but not multiple, allocate an Array to\n // store the rest of the parent Subscriptions.\n this._parents = [parent];\n }\n else if (_parents.indexOf(parent) === -1) {\n // Only add the new parent to the _parents list if it's not already there.\n _parents.push(parent);\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexports.Subscription = Subscription;\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError_1.UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map\n\n/***/ }),\n/* 208 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar FromEventObservable_1 = __webpack_require__(542);\nexports.fromEvent = FromEventObservable_1.FromEventObservable.create;\n//# sourceMappingURL=fromEvent.js.map\n\n/***/ }),\n/* 209 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(528), __esModule: true };\n\n/***/ }),\n/* 210 */,\n/* 211 */,\n/* 212 */,\n/* 213 */,\n/* 214 */,\n/* 215 */,\n/* 216 */,\n/* 217 */,\n/* 218 */,\n/* 219 */,\n/* 220 */,\n/* 221 */,\n/* 222 */,\n/* 223 */,\n/* 224 */,\n/* 225 */,\n/* 226 */,\n/* 227 */,\n/* 228 */,\n/* 229 */,\n/* 230 */,\n/* 231 */,\n/* 232 */,\n/* 233 */,\n/* 234 */,\n/* 235 */,\n/* 236 */,\n/* 237 */,\n/* 238 */,\n/* 239 */,\n/* 240 */,\n/* 241 */,\n/* 242 */,\n/* 243 */,\n/* 244 */,\n/* 245 */,\n/* 246 */,\n/* 247 */,\n/* 248 */,\n/* 249 */,\n/* 250 */,\n/* 251 */,\n/* 252 */,\n/* 253 */,\n/* 254 */,\n/* 255 */,\n/* 256 */,\n/* 257 */,\n/* 258 */,\n/* 259 */,\n/* 260 */,\n/* 261 */,\n/* 262 */,\n/* 263 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.StatesContrary = exports.StatesAll = undefined;\n\nvar _keys = __webpack_require__(102);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = __webpack_require__(209);\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _symbol = __webpack_require__(120);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar STATES = {\n\topen: (0, _symbol2.default)('open'),\n\tclosed: (0, _symbol2.default)('closed'),\n\n\tenabled: (0, _symbol2.default)('enabled'),\n\tdisabled: (0, _symbol2.default)('disabled'),\n\n\tfixed: (0, _symbol2.default)('fixed'),\n\treleased: (0, _symbol2.default)('released'),\n\n\tscrollable: (0, _symbol2.default)('scrollable'),\n\tanimating: (0, _symbol2.default)('animating'),\n\n\tvisible: (0, _symbol2.default)('visible'),\n\thidden: (0, _symbol2.default)('hidden'),\n\n\tloading: (0, _symbol2.default)('laoding'),\n\tloaded: (0, _symbol2.default)('loaded'),\n\n\thandshaked: (0, _symbol2.default)('handshaked'),\n\n\tinViewport: (0, _symbol2.default)('inViewport'),\n\toutViewport: (0, _symbol2.default)('outViewport'),\n\n\tdestroyed: (0, _symbol2.default)('destroyed'),\n\tinitialized: (0, _symbol2.default)('initialized')\n},\n StatesContrary = {\n\topen: 'closed',\n\tenabled: 'disabled',\n\tfixed: 'released',\n\tvisible: 'hidden',\n\tloading: 'loaded',\n\tinViewport: 'outViewport',\n\tdestroyed: 'initialized'\n},\n StatesAll = [];\n\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n\tfor (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(STATES)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\tvar key = _step.value;\n\n\t\tStatesAll.push(STATES[key]);\n\t}\n} catch (err) {\n\t_didIteratorError = true;\n\t_iteratorError = err;\n} finally {\n\ttry {\n\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t_iterator.return();\n\t\t}\n\t} finally {\n\t\tif (_didIteratorError) {\n\t\t\tthrow _iteratorError;\n\t\t}\n\t}\n}\n\nexports.default = STATES;\nexports.StatesAll = StatesAll;\nexports.StatesContrary = StatesContrary;\n\n/***/ }),\n/* 264 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar errorObject_1 = __webpack_require__(203);\nvar tryCatchTarget;\nfunction tryCatcher() {\n try {\n return tryCatchTarget.apply(this, arguments);\n }\n catch (e) {\n errorObject_1.errorObject.e = e;\n return errorObject_1.errorObject;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\nexports.tryCatch = tryCatch;\n;\n//# sourceMappingURL=tryCatch.js.map\n\n/***/ }),\n/* 265 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nexports.empty = {\n closed: true,\n next: function (value) { },\n error: function (err) { throw err; },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n\n/***/ }),\n/* 266 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar root_1 = __webpack_require__(99);\nvar Symbol = root_1.root.Symbol;\nexports.rxSubscriber = (typeof Symbol === 'function' && typeof Symbol.for === 'function') ?\n Symbol.for('rxSubscriber') : '@@rxSubscriber';\n/**\n * @deprecated use rxSubscriber instead\n */\nexports.$$rxSubscriber = exports.rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map\n\n/***/ }),\n/* 267 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar root_1 = __webpack_require__(99);\nfunction getSymbolObservable(context) {\n var $$observable;\n var Symbol = context.Symbol;\n if (typeof Symbol === 'function') {\n if (Symbol.observable) {\n $$observable = Symbol.observable;\n }\n else {\n $$observable = Symbol('observable');\n Symbol.observable = $$observable;\n }\n }\n else {\n $$observable = '@@observable';\n }\n return $$observable;\n}\nexports.getSymbolObservable = getSymbolObservable;\nexports.observable = getSymbolObservable(root_1.root);\n/**\n * @deprecated use observable instead\n */\nexports.$$observable = exports.observable;\n//# sourceMappingURL=observable.js.map\n\n/***/ }),\n/* 268 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(269);\nmodule.exports = __webpack_require__(5).Object.assign;\n\n\n/***/ }),\n/* 269 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(12);\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(200) });\n\n\n/***/ }),\n/* 270 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar IDENTIFIER = exports.IDENTIFIER = 'modal';\n\n/***/ }),\n/* 271 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar IDENTIFIERS = exports.IDENTIFIERS = {\n\tACC: {\n\t\tROOT: '[data-tpl*=acc], [data-tpl=er01]',\n\t\tPARENTS: '[data-tpl=\"blanko\"], [data-tpl=\"blanko-overview\"], [data-tpl=\"detail-one-marginal-column\"], [data-tpl=\"detail-two-marginal-column\"], [data-tpl=\"detail-two-flex-marginal-column\"], [data-tpl=\"detail-two-important-marginal-column\"], [data-tpl=\"detail-two-flex-marginal-column-lg\"], [data-tpl=\"detail-two-important-marginal-column-lg\"], [data-tpl=\"uikit-preview-frame\"], [data-tpl=\"order-process-form-01\"], [data-tpl=\"pfc02\"]'\n\t},\n\tLAS01: {\n\t\tROOT: '[data-tpl*=las01]'\n\t},\n\tIFRAME: {\n\t\tROOT: '[data-tpl=iframe]'\n\t},\n\tTIC01: {\n\t\tROOT: '[data-tpl=tic01], [data-tpl=tic03]'\n\t},\n\tSES01: {\n\t\tROOT: '[data-tpl=ses01]',\n\t\tEXTENDED: '[data-tpl=ses01].ses01--extended',\n\t\tQUICK_LINKS: '[data-tpl=ses01].ses01--has-quick-links'\n\t},\n\tSRC01: {\n\t\tROOT: '[data-tpl=src01]',\n\t\tSRT01: '[data-tpl=srt01], [data-tpl=srt01r]',\n\t\tSRT02: '[data-tpl=srt02]',\n\t\tSRT01_LIST_MODIFIER: 'srt01--list-view',\n\t\tLIST_MODIFIER: 'src01--list-view'\n\t},\n\tSVG: {\n\t\tROOT: '[data-tpl=svg]'\n\t},\n\tTOOLTIP: {\n\t\tROOT: '[data-tpl=tooltip]',\n\t\tTRIGGER: '.tooltip-trigger',\n\t\tCONTENT: '.tooltip-content',\n\t\tCONTAINER: '.tooltip-container',\n\t\tCLOSE: '.tooltip-close'\n\t},\n\tPFC02: {\n\t\tROOT: '[data-tpl=pfc02]'\n\t},\n\tLAYOUT: {\n\t\tROOT: '[data-tpl=detail-two-important-marginal-column], [data-tpl=detail-two-flex-marginal-column], [data-tpl=\"detail-two-flex-marginal-column-lg\"], [data-tpl=\"detail-two-important-marginal-column-lg\"]'\n\t},\n\t// INLINE_EDITING : {\n\t// \tROOT : '[data-tpl=\"inline-editing\"]'\n\t// },\n\tTSS01: {\n\t\tROOT: '[data-tss01-enabled=\"true\"]'\n\t},\n\tIEB: {\n\t\tROOT: '[data-tpl=\"iebc01\"]'\n\t},\n\t// SNOWFALL : {\n\t// \t// ROOT : '[data-tpl*=\"tea\"]',\n\t// \tSTA01 : '[data-tpl=\"sta01\"]',\n\t// \tSTA02 : '[data-tpl=\"sta02\"]',\n\t// \tSTA03 : '[data-tpl=\"sta03\"]',\n\t// \tTEAS : '[data-tpl*=\"grid-mag\"] [data-tpl*=\"tea\"][class*=\"color-teaser\"]',\n\t// \tBAS01 : '[data-tpl*=\"grid-bas-01\"][class*=\"color-background\"]'\n\t// }\n\tEXPERIENCE_MODULES: {\n\t\tSMXP01: '[data-tpl=smxp01]',\n\t\tSMXP02: '[data-tpl=smxp02]',\n\t\tSMXP03: '[data-tpl=smxp03]',\n\t\tSMXP04: '[data-tpl=smxp04]'\n\t},\n\n\tJFC01: {\n\t\tROOT: '[data-tpl=jfc01]'\n\t},\n\n\tSRF01: {\n\t\tROOT: '[data-tpl=srf01]'\n\t},\n\n\tPCC01: {\n\t\tROOT: '[data-tpl=pcc01]',\n\t\tTOOLTIP: '[data-tpl=pcc01] [data-tpl=tooltip]'\n\t},\n\n\tPC01: {\n\t\tROOT: '[data-tpl=pc01]'\n\t}\n};\n\n/***/ }),\n/* 272 */\n/***/ (function(module, exports) {\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n/***/ }),\n/* 273 */,\n/* 274 */,\n/* 275 */,\n/* 276 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nexports.isArray = Array.isArray || (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArray.js.map\n\n/***/ }),\n/* 277 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nfunction isObject(x) {\n return x != null && typeof x === 'object';\n}\nexports.isObject = isObject;\n//# sourceMappingURL=isObject.js.map\n\n/***/ }),\n/* 278 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar prefixes = ['', 'webkit', 'moz', 'MS', 'o'],\n fakeEl = document.createElement('fakeelement');\n\nvar determinedPrefix = false;\n\nfunction determinePrefixToUse() {\n\tif (determinedPrefix !== false) {\n\t\treturn determinedPrefix;\n\t}\n\tfor (var i = 0; i < prefixes.length; i++) {\n\t\tvar propToTest = 'Transition',\n\t\t styleToTest = prefixes[i] + (!prefixes[i] ? propToTest.toLowerCase() : propToTest);\n\n\t\tif (fakeEl.style[styleToTest] !== 'undefined') {\n\t\t\tdeterminedPrefix = prefixes[i];\n\t\t\treturn determinedPrefix;\n\t\t}\n\t}\n\treturn '';\n}\n\n/**\r\n * Class providing event helper functions\r\n * Is used as a singleton.\r\n */\n\nvar EventHelper = function () {\n\tfunction EventHelper() {\n\t\t(0, _classCallCheck3.default)(this, EventHelper);\n\t}\n\n\t/**\r\n * Initialises the controller singleton.\r\n * Has to be called after ready event.\r\n * @public\r\n * @returns { void }\r\n */\n\tEventHelper.prototype.init = function init() {};\n\n\t/**\r\n * Appends browser prefixes to a given event name\r\n * and adds an eventListener to the given elements\r\n * @param { jQuery } $el - jQuery wrapped DOM element\r\n * @param { string } type - event name\r\n * @param { function } callback - callback function\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tEventHelper.addPrefixedEvent = function addPrefixedEvent($el, type, callback) {\n\t\tvar prefix = determinePrefixToUse();\n\n\t\t$el.on(prefix + (!prefix ? type.toLowerCase() : type), callback);\n\t};\n\n\t/**\r\n * Appends browser prefixes to a given event name and adds\r\n * an eventListener to the given elements to run once\r\n * @param { jQuery } $el - jQuery wrapped DOM element\r\n * @param { string } type - event name\r\n * @param { function } callback - callback function\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tEventHelper.addPrefixedEventOnce = function addPrefixedEventOnce($el, type, callback) {\n\t\tvar prefix = determinePrefixToUse();\n\n\t\t$el.one(prefix + (!prefix ? type.toLowerCase() : type), callback);\n\t};\n\n\t/**\r\n * Removes a browser prefixed event\r\n * @param { object } $el - jQuery wrapped DOM element\r\n * @param { string } type - event name\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tEventHelper.removePrefixedEvent = function removePrefixedEvent($el, type) {\n\t\tvar prefix = determinePrefixToUse();\n\t\t// for ( let i = 0; i < prefixes.length; i++ ) {\n\t\t$el.off(prefix + (!prefix ? type.toLowerCase() : type));\n\t\t// }\n\t};\n\n\treturn EventHelper;\n}();\n\nexports.default = EventHelper;\n\n/***/ }),\n/* 279 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _signal = __webpack_require__(96);\n\nvar _signal2 = _interopRequireDefault(_signal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Check if event is setup in stack\n *\n * @param {String} event Event name\n * @return {Boolean} true | false\n */\nfunction has(event) {\n\treturn this._signals[event] instanceof _signal2.default;\n}\n\n/**\n * Sets up a new empty stack for the event\n *\n * @param {String} event Event name\n * @return {void}\n */\nfunction setup(event) {\n\tif (!has.call(this, event)) {\n\t\tthis._signals[event] = new _signal2.default();\n\t}\n}\n\n/**\n * Adds a function to the event stack\n *\n * @param {String} event Event name\n * @param {Function} fn Callback function to call on event happening\n * @param {Boolean} isOnce Should be called once or should persist in stream\n * @return {SignalListener} Returns the bound SignalListener\n */\nfunction add(event, fn) {\n\tvar _this = this;\n\n\tvar isOnce = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\tsetup.call(this, event);\n\n\tvar theFN = this._signals[event].add(fn, '_', isOnce);\n\n\ttheFN.dispose = function () {\n\t\t_this._signals[event]._listener.splice(_this._signals[event]._listener.indexOf(theFN), 1);\n\t};\n\n\treturn theFN;\n}\n\n/**\n * Remove the event stack from stream\n * @param {String} event Event name\n * @return {void}\n */\nfunction remove(event) {\n\tif (has.call(this, event)) {\n\t\tthis._signals[event].clear();\n\t\tdelete this._signals[event];\n\t}\n}\n\n/**\n * Runs the given stack functions on event happening\n *\n * @param {String} event Event name\n * @param {Object} data Event data passed by the triggering caller\n * @return {void}\n */\nfunction dispatch(event) {\n\tif (has.call(this, event)) {\n\t\tvar _signals$event;\n\n\t\tfor (var _len = arguments.length, data = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t\t\tdata[_key - 1] = arguments[_key];\n\t\t}\n\n\t\t(_signals$event = this._signals[event]).dispatch.apply(_signals$event, ['_'].concat(data));\n\t}\n}\n\nvar SignalSingleton = function () {\n\tfunction SignalSingleton() {\n\t\t(0, _classCallCheck3.default)(this, SignalSingleton);\n\n\t\tthis._signals = {};\n\t}\n\n\tSignalSingleton.prototype.subscribe = function subscribe(event, fn, isOnce) {\n\t\treturn add.call(this, event, fn, isOnce);\n\t};\n\n\tSignalSingleton.prototype.dispose = function dispose(event) {\n\t\tremove.call(this, event);\n\t};\n\n\tSignalSingleton.prototype.emit = function emit(event) {\n\t\tfor (var _len2 = arguments.length, data = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n\t\t\tdata[_key2 - 1] = arguments[_key2];\n\t\t}\n\n\t\tdispatch.call.apply(dispatch, [this, event].concat(data));\n\t};\n\n\treturn SignalSingleton;\n}();\n\nvar instance = new SignalSingleton();\n\nexports.default = instance;\n\n/***/ }),\n/* 280 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(80);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _TransitionEvent = __webpack_require__(119);\n\nvar _TransitionEvent2 = _interopRequireDefault(_TransitionEvent);\n\nvar _device = __webpack_require__(54);\n\nvar _device2 = _interopRequireDefault(_device);\n\nvar _Identifiers = __webpack_require__(158);\n\nvar _Bucket = __webpack_require__(125);\n\nvar _Bucket2 = _interopRequireDefault(_Bucket);\n\nvar _perfectScrollbar = __webpack_require__(630);\n\nvar _perfectScrollbar2 = _interopRequireDefault(_perfectScrollbar);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n *\n * @param scrollPos\n */\nfunction setTopPosition(scrollPos) {\n\tvar y = this.$metaNav.outerHeight() - scrollPos.y;\n\n\tthis.$scope.css({\n\t\tposition: 'fixed',\n\t\ttop: y < 0 ? 0 : y + 'px'\n\t});\n}\n\n/**\n * Add the event handlers\n *\n * @returns {void}\n */\nfunction addHandler() {\n\tvar self = this,\n\t slaveContainer = self.$mainHeader.add('#off-screen-wrap');\n\n\tself.beforeOpen(function () {\n\n\t\t_device.ScrollService.getCurrent().then(function (scrollPos) {\n\t\t\tsetTopPosition.call(self, scrollPos);\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tslaveContainer.addClass('osn--during-animation osn--during-animation--open');\n\t\t});\n\t});\n\n\tself.afterOpen(function () {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tslaveContainer.removeClass('osn--during-animation osn--during-animation--open');\n\t\t});\n\t});\n\n\tself.beforeClose(function () {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tslaveContainer.addClass('osn--during-animation osn--during-animation--close');\n\t\t});\n\t});\n\n\tself.afterClose(function () {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tslaveContainer.removeClass('osn--during-animation osn--during-animation--close');\n\t\t});\n\t});\n\n\t_device2.default.scrollEvent.subscribe(function (scrollPos) {\n\t\tsetTopPosition.call(self, scrollPos);\n\t});\n\n\t_device2.default.resizeEvent.subscribe(function () {\n\t\t_device.ScrollService.getCurrent().then(function (scrollPos) {\n\t\t\tsetTopPosition.call(self, scrollPos);\n\t\t});\n\t});\n}\n\n/**\n * Class handling the state of off-screen-navigation container.\n * Controls the state of the container\n * @extends { TransitionEventController }\n */\n\nvar OffScreenNavigationController = function (_TransitionEventContr) {\n\t(0, _inherits3.default)(OffScreenNavigationController, _TransitionEventContr);\n\n\tfunction OffScreenNavigationController() {\n\t\t(0, _classCallCheck3.default)(this, OffScreenNavigationController);\n\n\t\tvar _this = (0, _possibleConstructorReturn3.default)(this, _TransitionEventContr.call(this));\n\n\t\t_this.$scope = null;\n\t\t_this.$mainNav = null;\n\t\t_this._canScroll = false;\n\t\t_this._childOpening = false;\n\t\treturn _this;\n\t}\n\n\t/**\n * Initialises the controller singleton.\n * Has to be called after ready event.\n *\n * @param { object } $root - jQuery wrapped DOM node\n * @public\n * @returns {void}\n */\n\tOffScreenNavigationController.prototype.init = function init($root) {\n\t\tvar self = this;\n\n\t\t_TransitionEventContr.prototype.init.call(this, $root);\n\n\t\tself.$scope = $root;\n\t\tself.$mainHeader = (0, _jquery2.default)(_Identifiers.IDENTIFIERS.MAIN_HEADER.ROOT);\n\t\tself.$mainNav = (0, _jquery2.default)(_Identifiers.IDENTIFIERS.NAVIGATION.ROOT);\n\t\tself.$metaNav = (0, _jquery2.default)(_Identifiers.IDENTIFIERS.META_NAVIGATION.ROOT);\n\n\t\tthis.initialOpen = this.$scope.hasClass('initial-open');\n\n\t\tif (self.$mainNav && self.$mainNav.length > 0) {\n\n\t\t\t_perfectScrollbar2.default.initialize(self.$mainNav.get(0), {\n\t\t\t\tswipePropagation: false,\n\t\t\t\tsuppressScrollX: true,\n\t\t\t\tminScrollbarLength: 20\n\t\t\t});\n\t\t}\n\n\t\tself.setTransition('transform');\n\n\t\taddHandler.call(self);\n\n\t\t_Bucket2.default.controller.framework.offscreenNavigation = this;\n\t};\n\n\tOffScreenNavigationController.prototype.test = function test() {\n\t\tsetTopPosition.call(this, 0);\n\t};\n\n\t(0, _createClass3.default)(OffScreenNavigationController, [{\n\t\tkey: 'canScroll',\n\t\tset: function set(is) {\n\t\t\tthis._canScroll = is === true;\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this._canScroll;\n\t\t}\n\t}, {\n\t\tkey: 'isChildOpening',\n\t\tset: function set(is) {\n\t\t\tthis._childOpening = is === true;\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this._childOpening;\n\t\t}\n\t}]);\n\treturn OffScreenNavigationController;\n}(_TransitionEvent2.default);\n\n/**\n * @private\n * @type { OffScreenNavigationController }\n */\n\n\nvar instance = new OffScreenNavigationController();\n\nexports.default = instance;\n\n/***/ }),\n/* 281 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = __webpack_require__(48);\nvar ScalarObservable_1 = __webpack_require__(549);\nvar EmptyObservable_1 = __webpack_require__(550);\nvar isScheduler_1 = __webpack_require__(282);\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ArrayObservable = (function (_super) {\n __extends(ArrayObservable, _super);\n function ArrayObservable(array, scheduler) {\n _super.call(this);\n this.array = array;\n this.scheduler = scheduler;\n if (!scheduler && array.length === 1) {\n this._isScalar = true;\n this.value = array[0];\n }\n }\n ArrayObservable.create = function (array, scheduler) {\n return new ArrayObservable(array, scheduler);\n };\n /**\n * Creates an Observable that emits some values you specify as arguments,\n * immediately one after the other, and then emits a complete notification.\n *\n * <span class=\"informal\">Emits the arguments you provide, then completes.\n * </span>\n *\n * <img src=\"./img/of.png\" width=\"100%\">\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the arguments given, and the complete notification thereafter. It can\n * be used for composing with other Observables, such as with {@link concat}.\n * By default, it uses a `null` IScheduler, which means the `next`\n * notifications are sent synchronously, although with a different IScheduler\n * it is possible to determine when those notifications will be delivered.\n *\n * @example <caption>Emit 10, 20, 30, then 'a', 'b', 'c', then start ticking every second.</caption>\n * var numbers = Rx.Observable.of(10, 20, 30);\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var interval = Rx.Observable.interval(1000);\n * var result = numbers.concat(letters).concat(interval);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link create}\n * @see {@link empty}\n * @see {@link never}\n * @see {@link throw}\n *\n * @param {...T} values Arguments that represent `next` values to be emitted.\n * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable<T>} An Observable that emits each given input value.\n * @static true\n * @name of\n * @owner Observable\n */\n ArrayObservable.of = function () {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i - 0] = arguments[_i];\n }\n var scheduler = array[array.length - 1];\n if (isScheduler_1.isScheduler(scheduler)) {\n array.pop();\n }\n else {\n scheduler = null;\n }\n var len = array.length;\n if (len > 1) {\n return new ArrayObservable(array, scheduler);\n }\n else if (len === 1) {\n return new ScalarObservable_1.ScalarObservable(array[0], scheduler);\n }\n else {\n return new EmptyObservable_1.EmptyObservable(scheduler);\n }\n };\n ArrayObservable.dispatch = function (state) {\n var array = state.array, index = state.index, count = state.count, subscriber = state.subscriber;\n if (index >= count) {\n subscriber.complete();\n return;\n }\n subscriber.next(array[index]);\n if (subscriber.closed) {\n return;\n }\n state.index = index + 1;\n this.schedule(state);\n };\n ArrayObservable.prototype._subscribe = function (subscriber) {\n var index = 0;\n var array = this.array;\n var count = array.length;\n var scheduler = this.scheduler;\n if (scheduler) {\n return scheduler.schedule(ArrayObservable.dispatch, 0, {\n array: array, index: index, count: count, subscriber: subscriber\n });\n }\n else {\n for (var i = 0; i < count && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n }\n };\n return ArrayObservable;\n}(Observable_1.Observable));\nexports.ArrayObservable = ArrayObservable;\n//# sourceMappingURL=ArrayObservable.js.map\n\n/***/ }),\n/* 282 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nfunction isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\nexports.isScheduler = isScheduler;\n//# sourceMappingURL=isScheduler.js.map\n\n/***/ }),\n/* 283 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction oldAdd(element, className) {\n var classes = element.className.split(' ');\n if (classes.indexOf(className) < 0) {\n classes.push(className);\n }\n element.className = classes.join(' ');\n}\n\nfunction oldRemove(element, className) {\n var classes = element.className.split(' ');\n var idx = classes.indexOf(className);\n if (idx >= 0) {\n classes.splice(idx, 1);\n }\n element.className = classes.join(' ');\n}\n\nexports.add = function (element, className) {\n if (element.classList) {\n element.classList.add(className);\n } else {\n oldAdd(element, className);\n }\n};\n\nexports.remove = function (element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else {\n oldRemove(element, className);\n }\n};\n\nexports.list = function (element) {\n if (element.classList) {\n return Array.prototype.slice.apply(element.classList);\n } else {\n return element.className.split(' ');\n }\n};\n\n\n/***/ }),\n/* 284 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(536), __esModule: true };\n\n/***/ }),\n/* 285 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(519), __esModule: true };\n\n/***/ }),\n/* 286 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _weakMap = __webpack_require__(161);\n\nvar _weakMap2 = _interopRequireDefault(_weakMap);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _events = __webpack_require__(272);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * (private) collection of eventEmitters with each isntance\n * @type {WeakMap}\n */\nvar _eventEmitter = new _weakMap2.default();\n\nvar EventEmitterAbstractController = function (_AbstractController) {\n\t(0, _inherits3.default)(EventEmitterAbstractController, _AbstractController);\n\n\tfunction EventEmitterAbstractController() {\n\t\t(0, _classCallCheck3.default)(this, EventEmitterAbstractController);\n\n\t\tvar DEBUG = true;\n\n\t\t// change according for debugging to true\n\t\tvar _this = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this._eeLogger = _this.debugLocal(DEBUG, '♧ Local Event ♧︎');\n\n\t\t_eventEmitter.set(_this, new _events.EventEmitter());\n\t\treturn _this;\n\t}\n\n\tEventEmitterAbstractController.prototype.init = function init($scope) {\n\t\tif (_AbstractController.prototype.init) {\n\t\t\t_AbstractController.prototype.init.call(this, $scope);\n\t\t}\n\t};\n\n\tEventEmitterAbstractController.prototype.emit = function emit(event, data) {\n\t\tvar caller = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this;\n\n\t\tthis._eeLogger.log('Emitted ', event, this.constructor.name, caller.constructor.name);\n\t\t_eventEmitter.get(this).emit(event, data, caller);\n\t};\n\n\tEventEmitterAbstractController.prototype.subscribe = function subscribe(event, fn) {\n\t\tthis._eeLogger.log('Subscribed to ', event, this.constructor.name);\n\t\t_eventEmitter.get(this).on(event, fn);\n\t};\n\n\tEventEmitterAbstractController.prototype.subscribeOnce = function subscribeOnce(event, fn) {\n\t\tthis._eeLogger.log('Subscribed Once to ', event, this.constructor.name);\n\t\t_eventEmitter.get(this).once(event, fn);\n\t};\n\n\tEventEmitterAbstractController.prototype.subscribePre = function subscribePre(event, fn) {\n\t\tthis._eeLogger.log('Subscribed Prepend to ', event, this.constructor.name);\n\t\t_eventEmitter.get(this).prependListener(event, fn);\n\t};\n\n\tEventEmitterAbstractController.prototype.subscribePreOnce = function subscribePreOnce(event, fn) {\n\t\tthis._eeLogger.log('Subscribed Prepend Once to ', event, this.constructor.name);\n\t\t_eventEmitter.get(this).prependOnceListener(event, fn);\n\t};\n\n\treturn EventEmitterAbstractController;\n}(_Abstract2.default);\n\nexports.default = EventEmitterAbstractController;\n\n/***/ }),\n/* 287 */,\n/* 288 */,\n/* 289 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(521), __esModule: true };\n\n/***/ }),\n/* 290 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(531), __esModule: true };\n\n/***/ }),\n/* 291 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _EventHelper = __webpack_require__(278);\n\nvar _EventHelper2 = _interopRequireDefault(_EventHelper);\n\nvar _global = __webpack_require__(103);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Creates a TransitionEnd Handler as a promise for to use in chains\n * @param {jQuery} $transitionElement The element on which to listen for transition end event\n * @param {Array} transitions The transition properties to listen for\n * @return {Promise} Resolves, when transition end event is fired for element and transitions\n */\nfunction createTransitionEndPromise($transitionElement, transitions) {\n\tvar _this = this;\n\n\tthis.logger.info('Create Transition End Handler as Promise');\n\n\treturn new _promise2.default(function (resolve, reject) {\n\n\t\t_EventHelper2.default.addPrefixedEvent($transitionElement, 'TransitionEnd', function (e) {\n\n\t\t\t_this.logger.info('After transition end', transitions, e.originalEvent.propertyName);\n\n\t\t\tif ($transitionElement[0] === e.target && transitions.indexOf(e.originalEvent.propertyName) >= 0) {\n\n\t\t\t\t_this.logger.log('Transition End Promise Resolved');\n\n\t\t\t\t_EventHelper2.default.removePrefixedEvent($transitionElement, 'TransitionEnd');\n\t\t\t\tresolve({\n\t\t\t\t\telement: $transitionElement,\n\t\t\t\t\tevent: e.originalEvent.propertyName\n\t\t\t\t});\n\t\t\t} else if (!e.target) {\n\t\t\t\t_this.logger.warn('Transition End Promise was rejected because of no target');\n\t\t\t} else {\n\t\t\t\t_this.logger.warn('Transition End Promise was not fullfilled');\n\t\t\t}\n\t\t});\n\t});\n}\n\nvar TransitionEndPromiseHelper = function (_AbstractController) {\n\t(0, _inherits3.default)(TransitionEndPromiseHelper, _AbstractController);\n\n\tfunction TransitionEndPromiseHelper() {\n\t\t(0, _classCallCheck3.default)(this, TransitionEndPromiseHelper);\n\n\t\tvar _this2 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this2.debugStyle = 'background: #397F13; color: black';\n\t\t_this2.debug = false;\n\t\treturn _this2;\n\t}\n\n\tTransitionEndPromiseHelper.prototype.create = function create($transitionElement, transitions) {\n\t\treturn createTransitionEndPromise.call(this, (0, _global.toJQuery)($transitionElement), transitions);\n\t};\n\n\treturn TransitionEndPromiseHelper;\n}(_Abstract2.default);\n\nvar instance = new TransitionEndPromiseHelper();\n\nexports.default = instance;\n\n/***/ }),\n/* 292 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isjQueryElement = exports.isHTMLElement = exports.isHTMLNode = undefined;\n\nvar _typeof2 = __webpack_require__(81);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * Check if given object is a DOM-Node-Element\r\n *\r\n * @param {!Object} o - Object to check\r\n * @return {Boolean} true if valid DOM-Node\r\n */\nvar isHTMLNode = function isHTMLNode(o) {\n return typeof Node === 'function' ?\n // no IE browser\n o instanceof Node :\n // IE browser\n o && ((typeof o === 'undefined' ? 'undefined' : (0, _typeof3.default)(o)) === 'object' || typeof o === 'function') && typeof o.nodeType === 'number' && typeof o.nodeName === 'string';\n};\n\n/**\r\n * Check if given object is a DOM-HTML-Element\r\n *\r\n * @param {!Object} o - Object to check\r\n * @return {Boolean} true if valid DOM-Element\r\n */\nvar isHTMLElement = function isHTMLElement(o) {\n return typeof HTMLElement === 'function' ?\n // no IE browser\n o instanceof HTMLElement :\n // IE browser\n o && ((typeof o === 'undefined' ? 'undefined' : (0, _typeof3.default)(o)) === 'object' || typeof o === 'function') && o !== null && o.nodeType === 1 && typeof o.nodeName === 'string';\n};\n\n/**\r\n * Check if given object is a jQuery instance / object\r\n *\r\n * @param {object} o - Object to check\r\n * @return {boolean} - true if valid jQuery wrapped DOM-Element\r\n */\nvar isjQueryElement = function isjQueryElement(o) {\n return o && typeof o.constructor.prototype.jquery !== 'undefined';\n};\n// typeof jQuery !== 'undefined' && object instanceof jQuery\n\nexports.isHTMLNode = isHTMLNode;\nexports.isHTMLElement = isHTMLElement;\nexports.isjQueryElement = isjQueryElement;\n\n/***/ }),\n/* 293 */,\n/* 294 */,\n/* 295 */,\n/* 296 */,\n/* 297 */,\n/* 298 */,\n/* 299 */,\n/* 300 */,\n/* 301 */,\n/* 302 */,\n/* 303 */,\n/* 304 */,\n/* 305 */,\n/* 306 */,\n/* 307 */,\n/* 308 */,\n/* 309 */,\n/* 310 */,\n/* 311 */,\n/* 312 */,\n/* 313 */,\n/* 314 */,\n/* 315 */,\n/* 316 */,\n/* 317 */,\n/* 318 */,\n/* 319 */,\n/* 320 */,\n/* 321 */,\n/* 322 */,\n/* 323 */,\n/* 324 */,\n/* 325 */,\n/* 326 */,\n/* 327 */,\n/* 328 */,\n/* 329 */,\n/* 330 */,\n/* 331 */,\n/* 332 */,\n/* 333 */,\n/* 334 */,\n/* 335 */,\n/* 336 */,\n/* 337 */,\n/* 338 */,\n/* 339 */,\n/* 340 */,\n/* 341 */,\n/* 342 */,\n/* 343 */,\n/* 344 */,\n/* 345 */,\n/* 346 */,\n/* 347 */,\n/* 348 */,\n/* 349 */,\n/* 350 */,\n/* 351 */,\n/* 352 */,\n/* 353 */,\n/* 354 */,\n/* 355 */,\n/* 356 */,\n/* 357 */,\n/* 358 */,\n/* 359 */,\n/* 360 */,\n/* 361 */,\n/* 362 */,\n/* 363 */,\n/* 364 */,\n/* 365 */,\n/* 366 */,\n/* 367 */,\n/* 368 */,\n/* 369 */,\n/* 370 */,\n/* 371 */,\n/* 372 */,\n/* 373 */,\n/* 374 */,\n/* 375 */,\n/* 376 */,\n/* 377 */,\n/* 378 */,\n/* 379 */,\n/* 380 */,\n/* 381 */,\n/* 382 */,\n/* 383 */,\n/* 384 */,\n/* 385 */,\n/* 386 */,\n/* 387 */,\n/* 388 */,\n/* 389 */,\n/* 390 */,\n/* 391 */,\n/* 392 */,\n/* 393 */,\n/* 394 */,\n/* 395 */,\n/* 396 */,\n/* 397 */,\n/* 398 */,\n/* 399 */,\n/* 400 */,\n/* 401 */,\n/* 402 */,\n/* 403 */,\n/* 404 */,\n/* 405 */,\n/* 406 */,\n/* 407 */,\n/* 408 */,\n/* 409 */,\n/* 410 */,\n/* 411 */,\n/* 412 */,\n/* 413 */,\n/* 414 */,\n/* 415 */,\n/* 416 */,\n/* 417 */,\n/* 418 */,\n/* 419 */,\n/* 420 */,\n/* 421 */,\n/* 422 */,\n/* 423 */,\n/* 424 */,\n/* 425 */,\n/* 426 */,\n/* 427 */,\n/* 428 */,\n/* 429 */,\n/* 430 */,\n/* 431 */,\n/* 432 */,\n/* 433 */,\n/* 434 */,\n/* 435 */,\n/* 436 */,\n/* 437 */,\n/* 438 */,\n/* 439 */,\n/* 440 */,\n/* 441 */,\n/* 442 */,\n/* 443 */,\n/* 444 */,\n/* 445 */,\n/* 446 */,\n/* 447 */,\n/* 448 */,\n/* 449 */,\n/* 450 */,\n/* 451 */,\n/* 452 */,\n/* 453 */,\n/* 454 */,\n/* 455 */,\n/* 456 */,\n/* 457 */,\n/* 458 */,\n/* 459 */,\n/* 460 */,\n/* 461 */,\n/* 462 */,\n/* 463 */,\n/* 464 */,\n/* 465 */,\n/* 466 */,\n/* 467 */,\n/* 468 */,\n/* 469 */,\n/* 470 */,\n/* 471 */,\n/* 472 */,\n/* 473 */,\n/* 474 */,\n/* 475 */,\n/* 476 */,\n/* 477 */,\n/* 478 */,\n/* 479 */,\n/* 480 */,\n/* 481 */,\n/* 482 */,\n/* 483 */,\n/* 484 */,\n/* 485 */,\n/* 486 */,\n/* 487 */,\n/* 488 */,\n/* 489 */,\n/* 490 */,\n/* 491 */,\n/* 492 */,\n/* 493 */,\n/* 494 */,\n/* 495 */,\n/* 496 */,\n/* 497 */,\n/* 498 */,\n/* 499 */,\n/* 500 */,\n/* 501 */,\n/* 502 */,\n/* 503 */,\n/* 504 */,\n/* 505 */,\n/* 506 */,\n/* 507 */,\n/* 508 */,\n/* 509 */,\n/* 510 */,\n/* 511 */,\n/* 512 */,\n/* 513 */,\n/* 514 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(515);\nvar $Object = __webpack_require__(5).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n\n\n/***/ }),\n/* 515 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(12);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(21), 'Object', { defineProperty: __webpack_require__(20).f });\n\n\n/***/ }),\n/* 516 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _keys = __webpack_require__(102);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _toConsumableArray2 = __webpack_require__(117);\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getOwnPropertyDescriptor = __webpack_require__(285);\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nvar _defineProperty = __webpack_require__(206);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nvar _getOwnPropertyNames = __webpack_require__(289);\n\nvar _getOwnPropertyNames2 = _interopRequireDefault(_getOwnPropertyNames);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _weakMap = __webpack_require__(161);\n\nvar _weakMap2 = _interopRequireDefault(_weakMap);\n\nvar _Debug = __webpack_require__(205);\n\nvar _Debug2 = _interopRequireDefault(_Debug);\n\nvar _States = __webpack_require__(263);\n\nvar _States2 = _interopRequireDefault(_States);\n\nvar _StatesAlias = __webpack_require__(530);\n\nvar _StatesAlias2 = _interopRequireDefault(_StatesAlias);\n\nvar _signal = __webpack_require__(96);\n\nvar _signal2 = _interopRequireDefault(_signal);\n\nvar _lodash = __webpack_require__(534);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _lodash3 = __webpack_require__(535);\n\nvar _lodash4 = _interopRequireDefault(_lodash3);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar allowed = new _weakMap2.default(),\n current = new _weakMap2.default(),\n _onStateChange = new _weakMap2.default();\n\nfunction triggerStateChange(which, state) {\n\tthis.logger.log('Trigger state change', which, state);\n\t_onStateChange.get(this).dispatch(state, which, current.get(this));\n}\n\nvar StateController = function (_DebugController) {\n\t(0, _inherits3.default)(StateController, _DebugController);\n\n\tfunction StateController() {\n\t\tfor (var _len = arguments.length, allowedStates = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\tallowedStates[_key] = arguments[_key];\n\t\t}\n\n\t\t(0, _classCallCheck3.default)(this, StateController);\n\n\t\tvar _this = (0, _possibleConstructorReturn3.default)(this, _DebugController.call(this));\n\n\t\t_this.debugStyle = 'background: #3FFFF7; color: black';\n\t\t_this.debug = false;\n\n\t\tallowed.set(_this, []);\n\t\tcurrent.set(_this, []);\n\n\t\t_onStateChange.set(_this, new _signal2.default());\n\n\t\t(0, _getOwnPropertyNames2.default)(_StatesAlias2.default).forEach(function (prop) {\n\t\t\t(0, _defineProperty2.default)(_this, prop, (0, _getOwnPropertyDescriptor2.default)(_StatesAlias2.default, prop));\n\t\t});\n\n\t\tif (!Array.isArray(allowedStates) || allowedStates.length <= 0) {\n\t\t\tallowedStates = (0, _lodash4.default)(_States2.default); // eslint-disable-line no-param-reassign\n\t\t}\n\n\t\t_this.addAllowedMultiple.apply(_this, (0, _toConsumableArray3.default)(allowedStates));\n\n\t\t// this.state.setOpen();\n\t\treturn _this;\n\t}\n\n\t// generic functions\n\n\tStateController.prototype.onStateChange = function onStateChange(fn) {\n\t\tvar state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '_';\n\n\t\tif (typeof fn !== 'function') {\n\t\t\tthrow new Error('Need to pass a function as callback on state change!');\n\t\t}\n\t\tthis.logger.log('Add callback for state change');\n\t\t_onStateChange.get(this).add(fn, state);\n\t};\n\n\tStateController.prototype.addAllowed = function addAllowed(state) {\n\t\tthis.logger.log('Add allowed state', state);\n\t\tif (_States.StatesAll.includes(state) && !allowed.get(this).includes(state)) {\n\t\t\tallowed.get(this).push(state);\n\t\t}\n\t};\n\n\tStateController.prototype.addAllowedMultiple = function addAllowedMultiple() {\n\t\tthis.logger.log('Add multiple allowed states');\n\n\t\tfor (var _len2 = arguments.length, states = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n\t\t\tstates[_key2] = arguments[_key2];\n\t\t}\n\n\t\tstates.forEach(this.addAllowed.bind(this));\n\t};\n\n\tStateController.prototype.removeAllowed = function removeAllowed(state) {\n\t\tthis.logger.log('Remove allowed state', state);\n\t\tif (_States.StatesAll.includes(state) && allowed.get(this).includes(state)) {\n\t\t\tallowed.get(this).splice(allowed.get(this).indexOf(state), 1);\n\t\t}\n\t};\n\n\tStateController.prototype.setState = function setState(state) {\n\t\tthis.logger.log('Set a current state', state);\n\t\tthis.logger.log(\"\\t\", 'Performing checks:', _States.StatesAll.includes(state), allowed.get(this).includes(state), !current.get(this).includes(state));\n\t\tthis.logger.log(\"\\t\", 'Current contents:', \"\\n\", current.get(this));\n\t\tif (_States.StatesAll.includes(state) && allowed.get(this).includes(state) && !current.get(this).includes(state)) {\n\t\t\tthis.logger.log(\"\\t\", 'Can be added', state);\n\t\t\tvar stateContrary = (0, _keys2.default)(_States2.default).reduce(function (obj, key) {\n\t\t\t\tif (_States2.default[key] === state) {\n\t\t\t\t\tobj = key;\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}, false);\n\n\t\t\tif ((0, _keys2.default)(_States.StatesContrary).includes(stateContrary)) {\n\t\t\t\tthis.removeState(_States2.default[_States.StatesContrary[stateContrary]]);\n\t\t\t} else if ((0, _lodash4.default)(_States.StatesContrary).includes(stateContrary)) {\n\t\t\t\tthis.removeState(_States2.default[(0, _lodash2.default)(_States.StatesContrary)[stateContrary]]);\n\t\t\t}\n\t\t\tcurrent.get(this).push(state);\n\t\t\ttriggerStateChange.call(this, state, 'add');\n\t\t\tthis.logger.log(\"\\t\", 'Current contents after adding:', \"\\n\", current.get(this));\n\t\t\tthis.logger.log(\"\\t\", 'Added and triggered state change', state);\n\t\t}\n\t};\n\n\tStateController.prototype.setStates = function setStates() {\n\t\tthis.logger.log('Set current states');\n\n\t\tfor (var _len3 = arguments.length, states = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n\t\t\tstates[_key3] = arguments[_key3];\n\t\t}\n\n\t\tstates.forEach(this.setState.bind(this));\n\t};\n\n\tStateController.prototype.removeState = function removeState(state) {\n\t\tthis.logger.log('Remove a state', state);\n\t\tif (_States.StatesAll.includes(state) && current.get(this).includes(state)) {\n\t\t\tcurrent.get(this).splice(current.get(this).indexOf(state), 1);\n\t\t\ttriggerStateChange.call(this, state, 'remove');\n\t\t}\n\t};\n\n\tStateController.prototype.hasState = function hasState(state) {\n\t\tvar has = _States.StatesAll.includes(state) && current.get(this).includes(state);\n\n\t\tthis.logger.log('Has a state', state, has);\n\t\treturn has;\n\t};\n\n\treturn StateController;\n}(_Debug2.default);\n\nexports.default = StateController;\n\n/***/ }),\n/* 517 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(518);\nmodule.exports = __webpack_require__(5).Object.keys;\n\n\n/***/ }),\n/* 518 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(58);\nvar $keys = __webpack_require__(56);\n\n__webpack_require__(160)('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n/***/ }),\n/* 519 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(520);\nvar $Object = __webpack_require__(5).Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n\n\n/***/ }),\n/* 520 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(32);\nvar $getOwnPropertyDescriptor = __webpack_require__(146).f;\n\n__webpack_require__(160)('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n\n\n/***/ }),\n/* 521 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(522);\nvar $Object = __webpack_require__(5).Object;\nmodule.exports = function getOwnPropertyNames(it) {\n return $Object.getOwnPropertyNames(it);\n};\n\n\n/***/ }),\n/* 522 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 Object.getOwnPropertyNames(O)\n__webpack_require__(160)('getOwnPropertyNames', function () {\n return __webpack_require__(198).f;\n});\n\n\n/***/ }),\n/* 523 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(94);\n__webpack_require__(63);\n__webpack_require__(524);\n__webpack_require__(526);\n__webpack_require__(527);\nmodule.exports = __webpack_require__(5).WeakMap;\n\n\n/***/ }),\n/* 524 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar each = __webpack_require__(199)(0);\nvar redefine = __webpack_require__(97);\nvar meta = __webpack_require__(87);\nvar assign = __webpack_require__(200);\nvar weak = __webpack_require__(525);\nvar isObject = __webpack_require__(17);\nvar fails = __webpack_require__(31);\nvar validate = __webpack_require__(147);\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = __webpack_require__(260)(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n\n\n/***/ }),\n/* 525 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar redefineAll = __webpack_require__(111);\nvar getWeak = __webpack_require__(87).getWeak;\nvar anObject = __webpack_require__(18);\nvar isObject = __webpack_require__(17);\nvar anInstance = __webpack_require__(109);\nvar forOf = __webpack_require__(79);\nvar createArrayMethod = __webpack_require__(199);\nvar $has = __webpack_require__(25);\nvar validate = __webpack_require__(147);\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n\n\n/***/ }),\n/* 526 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\n__webpack_require__(261)('WeakMap');\n\n\n/***/ }),\n/* 527 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\n__webpack_require__(262)('WeakMap');\n\n\n/***/ }),\n/* 528 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(63);\n__webpack_require__(61);\nmodule.exports = __webpack_require__(529);\n\n\n/***/ }),\n/* 529 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(18);\nvar get = __webpack_require__(105);\nmodule.exports = __webpack_require__(5).getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n\n\n/***/ }),\n/* 530 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _keys = __webpack_require__(102);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = __webpack_require__(209);\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _defineProperties = __webpack_require__(290);\n\nvar _defineProperties2 = _interopRequireDefault(_defineProperties);\n\nvar _States = __webpack_require__(263);\n\nvar _States2 = _interopRequireDefault(_States);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar StatesAlias = {};\n\nvar _loop = function _loop(key) {\n\tvar uckey = key.charAt(0).toUpperCase() + key.slice(1),\n\t keyOpen = key.startsWith('can') ? key : 'is' + uckey,\n\t openFncs = {};\n\n\topenFncs[keyOpen] = {\n\t\tenumerable: true,\n\t\tget: function get() {\n\t\t\t// eslint-disable-line func-names\n\t\t\treturn this.hasState(_States2.default[key]);\n\t\t},\n\t\tset: function set(is) {\n\t\t\t// eslint-disable-line func-names\n\t\t\treturn is === true ? this.setState(_States2.default[key]) : this.removeState(_States2.default[key]);\n\t\t}\n\t};\n\t(0, _defineProperties2.default)(StatesAlias, openFncs);\n\n\tStatesAlias['set' + uckey] = function () {\n\t\t// eslint-disable-line func-names\n\t\tthis.setState(_States2.default[key]);\n\t};\n\tStatesAlias['remove' + uckey] = function () {\n\t\t// eslint-disable-line func-names\n\t\tthis.removeState(_States2.default[key]);\n\t};\n};\n\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n\tfor (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(_States2.default)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\tvar key = _step.value;\n\n\t\t_loop(key);\n\t}\n} catch (err) {\n\t_didIteratorError = true;\n\t_iteratorError = err;\n} finally {\n\ttry {\n\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t_iterator.return();\n\t\t}\n\t} finally {\n\t\tif (_didIteratorError) {\n\t\t\tthrow _iteratorError;\n\t\t}\n\t}\n}\n\nexports.default = StatesAlias;\n\n/***/ }),\n/* 531 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(532);\nvar $Object = __webpack_require__(5).Object;\nmodule.exports = function defineProperties(T, D) {\n return $Object.defineProperties(T, D);\n};\n\n\n/***/ }),\n/* 532 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(12);\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !__webpack_require__(21), 'Object', { defineProperties: __webpack_require__(127) });\n\n\n/***/ }),\n/* 533 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.SignalListenerPromised = undefined;\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SignalListener = function () {\n\tfunction SignalListener(fn, context) {\n\t\tvar isOnce = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t\t(0, _classCallCheck3.default)(this, SignalListener);\n\n\t\tthis.fn = fn;\n\t\tthis.context = context;\n\t\tthis.isOnce = isOnce;\n\t}\n\n\tSignalListener.prototype.isInContext = function isInContext(ctxt) {\n\t\treturn this.context === ctxt;\n\t};\n\n\tSignalListener.prototype.execute = function execute() {\n\t\tif (typeof this.fn === 'function') {\n\t\t\treturn this.fn.apply(this, arguments);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\treturn SignalListener;\n}();\n\nvar SignalListenerPromised = function (_SignalListener) {\n\t(0, _inherits3.default)(SignalListenerPromised, _SignalListener);\n\n\tfunction SignalListenerPromised(fn, context) {\n\t\tvar isOnce = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t\t(0, _classCallCheck3.default)(this, SignalListenerPromised);\n\n\t\tvar _this = (0, _possibleConstructorReturn3.default)(this, _SignalListener.call(this, fn, context, isOnce));\n\n\t\t_this.promise = new _promise2.default(function (resolve, reject) {\n\t\t\t_this.resolve = resolve;\n\t\t\t_this.reject = reject;\n\t\t});\n\t\treturn _this;\n\t}\n\n\tSignalListenerPromised.prototype.execute = function execute() {\n\t\tif (typeof this.fn === 'function') {\n\t\t\tthis.resolve(this.fn.apply(this, arguments));\n\t\t\treturn this.promise;\n\t\t} else {\n\t\t\tif (typeof this.reject !== 'undefined') {\n\t\t\t\treturn this.reject('Signal: Not a valid function');\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t};\n\n\treturn SignalListenerPromised;\n}(SignalListener);\n\nexports.default = SignalListener;\nexports.SignalListenerPromised = SignalListenerPromised;\n\n/***/ }),\n/* 534 */\n/***/ (function(module, exports) {\n\n/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\nfunction createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\nvar invert = createInverter(function(result, value, key) {\n result[value] = key;\n}, constant(identity));\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = invert;\n\n\n/***/ }),\n/* 535 */\n/***/ (function(module, exports) {\n\n/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object ? baseValues(object, keys(object)) : [];\n}\n\nmodule.exports = values;\n\n\n/***/ }),\n/* 536 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(5);\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n/***/ }),\n/* 537 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = __webpack_require__(115);\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * <img src=\"./img/map.png\" width=\"100%\">\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * @example <caption>Map every click to the clientX position of that click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks.map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable<R>} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nfunction map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nexports.map = map;\nvar MapOperator = (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexports.MapOperator = MapOperator;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MapSubscriber = (function (_super) {\n __extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n _super.call(this, destination);\n this.project = project;\n this.count = 0;\n this.thisArg = thisArg || this;\n }\n // NOTE: This looks unoptimized, but it's actually purposefully NOT\n // using try/catch optimizations.\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=map.js.map\n\n/***/ }),\n/* 538 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nvar UnsubscriptionError = (function (_super) {\n __extends(UnsubscriptionError, _super);\n function UnsubscriptionError(errors) {\n _super.call(this);\n this.errors = errors;\n var err = Error.call(this, errors ?\n errors.length + \" errors occurred during unsubscription:\\n \" + errors.map(function (err, i) { return ((i + 1) + \") \" + err.toString()); }).join('\\n ') : '');\n this.name = err.name = 'UnsubscriptionError';\n this.stack = err.stack;\n this.message = err.message;\n }\n return UnsubscriptionError;\n}(Error));\nexports.UnsubscriptionError = UnsubscriptionError;\n//# sourceMappingURL=UnsubscriptionError.js.map\n\n/***/ }),\n/* 539 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar Subscriber_1 = __webpack_require__(115);\nvar rxSubscriber_1 = __webpack_require__(266);\nvar Observer_1 = __webpack_require__(265);\nfunction toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber_1.Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriber_1.rxSubscriber]) {\n return nextOrObserver[rxSubscriber_1.rxSubscriber]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber_1.Subscriber(Observer_1.empty);\n }\n return new Subscriber_1.Subscriber(nextOrObserver, error, complete);\n}\nexports.toSubscriber = toSubscriber;\n//# sourceMappingURL=toSubscriber.js.map\n\n/***/ }),\n/* 540 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar noop_1 = __webpack_require__(541);\n/* tslint:enable:max-line-length */\nfunction pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i - 0] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexports.pipe = pipe;\n/* @internal */\nfunction pipeFromArray(fns) {\n if (!fns) {\n return noop_1.noop;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\nexports.pipeFromArray = pipeFromArray;\n//# sourceMappingURL=pipe.js.map\n\n/***/ }),\n/* 541 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/* tslint:disable:no-empty */\nfunction noop() { }\nexports.noop = noop;\n//# sourceMappingURL=noop.js.map\n\n/***/ }),\n/* 542 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = __webpack_require__(48);\nvar tryCatch_1 = __webpack_require__(264);\nvar isFunction_1 = __webpack_require__(202);\nvar errorObject_1 = __webpack_require__(203);\nvar Subscription_1 = __webpack_require__(207);\nvar toString = Object.prototype.toString;\nfunction isNodeStyleEventEmitter(sourceObj) {\n return !!sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return !!sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isNodeList(sourceObj) {\n return !!sourceObj && toString.call(sourceObj) === '[object NodeList]';\n}\nfunction isHTMLCollection(sourceObj) {\n return !!sourceObj && toString.call(sourceObj) === '[object HTMLCollection]';\n}\nfunction isEventTarget(sourceObj) {\n return !!sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar FromEventObservable = (function (_super) {\n __extends(FromEventObservable, _super);\n function FromEventObservable(sourceObj, eventName, selector, options) {\n _super.call(this);\n this.sourceObj = sourceObj;\n this.eventName = eventName;\n this.selector = selector;\n this.options = options;\n }\n /* tslint:enable:max-line-length */\n /**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * <span class=\"informal\">Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.</span>\n *\n * <img src=\"./img/fromEvent.png\" width=\"100%\">\n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * @example <caption>Emits clicks happening on the DOM document</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n *\n *\n * @example <caption>Use addEventListener with capture option</caption>\n * var clicksInDocument = Rx.Observable.fromEvent(document, 'click', true); // note optional configuration parameter\n * // which will be passed to addEventListener\n * var clicksInDiv = Rx.Observable.fromEvent(someDivInDocument, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {EventTargetLike} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @param {SelectorMethodSignature<T>} [selector] An optional function to\n * post-process results. It takes the arguments from the event handler and\n * should return a single value.\n * @return {Observable<T>}\n * @static true\n * @name fromEvent\n * @owner Observable\n */\n FromEventObservable.create = function (target, eventName, options, selector) {\n if (isFunction_1.isFunction(options)) {\n selector = options;\n options = undefined;\n }\n return new FromEventObservable(target, eventName, selector, options);\n };\n FromEventObservable.setupSubscription = function (sourceObj, eventName, handler, subscriber, options) {\n var unsubscribe;\n if (isNodeList(sourceObj) || isHTMLCollection(sourceObj)) {\n for (var i = 0, len = sourceObj.length; i < len; i++) {\n FromEventObservable.setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else if (isEventTarget(sourceObj)) {\n var source_1 = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = function () { return source_1.removeEventListener(eventName, handler); };\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n var source_2 = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = function () { return source_2.off(eventName, handler); };\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n var source_3 = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = function () { return source_3.removeListener(eventName, handler); };\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(new Subscription_1.Subscription(unsubscribe));\n };\n FromEventObservable.prototype._subscribe = function (subscriber) {\n var sourceObj = this.sourceObj;\n var eventName = this.eventName;\n var options = this.options;\n var selector = this.selector;\n var handler = selector ? function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i - 0] = arguments[_i];\n }\n var result = tryCatch_1.tryCatch(selector).apply(void 0, args);\n if (result === errorObject_1.errorObject) {\n subscriber.error(errorObject_1.errorObject.e);\n }\n else {\n subscriber.next(result);\n }\n } : function (e) { return subscriber.next(e); };\n FromEventObservable.setupSubscription(sourceObj, eventName, handler, subscriber, options);\n };\n return FromEventObservable;\n}(Observable_1.Observable));\nexports.FromEventObservable = FromEventObservable;\n//# sourceMappingURL=FromEventObservable.js.map\n\n/***/ }),\n/* 543 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _keys = __webpack_require__(102);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _EventEmitterAbstract2 = __webpack_require__(286);\n\nvar _EventEmitterAbstract3 = _interopRequireDefault(_EventEmitterAbstract2);\n\nvar _SignalWrapper = __webpack_require__(279);\n\nvar _SignalWrapper2 = _interopRequireDefault(_SignalWrapper);\n\nvar _TransitionEventTypes = __webpack_require__(544);\n\nvar _TransitionEventTypes2 = _interopRequireDefault(_TransitionEventTypes);\n\nvar _Selectors = __webpack_require__(124);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isValidType(type) {\n\treturn (0, _keys2.default)(_TransitionEventTypes2.default).includes(type) ? _promise2.default.resolve() : _promise2.default.reject('Not a valid type');\n}\n\nfunction isAttempt(type, $trigger) {\n\tif (type === _TransitionEventTypes2.default.open && this.isOpen || type === _TransitionEventTypes2.default.close && !this.isOpen) {\n\t\tthis.emit(type + '-attempt', {\n\t\t\t$trigger: $trigger\n\t\t});\n\t\t// fallback for versions before event emitter rollout\n\t\tthis.$scope.trigger(type + '-attempt', [$trigger]);\n\t\treturn _promise2.default.reject('Request attempt to a state it is already in');\n\t}\n\treturn _promise2.default.resolve();\n}\n\nfunction checkTransitionEndPromise() {\n\tif (this.transitionEndPromise === null) {\n\t\tthis.setTransitionEndPromise();\n\t}\n}\n\nfunction dispatch(event, type, $trigger) {\n\tvar _this = this;\n\n\tthis._transitionEventExecutorLogger.log(event + ' - ' + type);\n\treturn new _promise2.default(function (resolve, reject) {\n\t\t_this['_' + event].dispatchPromised(type, $trigger).then(function () {\n\t\t\t_this._transitionEventExecutorLogger.log(\"\\t\", 'Dispatch ' + event + ' - ' + type + ' | RESOLVED');\n\t\t}).then(resolve).catch(reject.bind(null, 'Dispatching ' + event + ' events'));\n\t});\n}\n\nfunction dispatchBefore(type, $trigger) {\n\tvar _this2 = this;\n\n\treturn dispatch.call(this, 'before', type, $trigger).then(function () {\n\t\t_this2._transitionEventExecutorLogger.log('before - ' + type + ' | RESOLVED');\n\t});\n}\n\nfunction dispatchOn(type, $trigger) {\n\tvar _this3 = this;\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\tif (type === _TransitionEventTypes2.default.open) {\n\t\t\t_this3.isOpen = true;\n\t\t}\n\n\t\t_this3.$scope.addClass([_Selectors.SELECTORS.duringAnimationClass, _Selectors.SELECTORS.duringAnimationClass + '--' + type].join(' '));\n\t});\n\n\treturn _promise2.default.all([this.transitionEndPromise, dispatch.call(this, 'on', type, $trigger)]).then(function () {\n\t\t_this3._transitionEventExecutorLogger.log('on - ' + type + ' | RESOLVED');\n\t});\n}\n\nfunction dispatchAfter(type, $trigger) {\n\tvar _this4 = this;\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\tif (type === _TransitionEventTypes2.default.close) {\n\t\t\t_this4.isOpen = false;\n\t\t}\n\t\t_this4.$scope.removeClass([_Selectors.SELECTORS.duringAnimationClass, _Selectors.SELECTORS.duringAnimationOpenClass, _Selectors.SELECTORS.duringAnimationCloseClass].join(' '));\n\t});\n\treturn dispatch.call(this, 'after', type, $trigger).then(function () {\n\t\t_this4._transitionEventExecutorLogger.log('after - ' + type + ' | RESOLVED');\n\t});\n}\n\nfunction emitEvents(type, $trigger) {\n\tthis.emit(type === _TransitionEventTypes2.default.open ? 'opened' : 'closed');\n\t// fallback for versions before event emitter rollout\n\tthis.$scope.trigger(type === _TransitionEventTypes2.default.open ? 'opened' : 'closed');\n\t_SignalWrapper2.default.emit('transition.ended');\n}\n\nfunction dispatchSilent(type, $trigger) {\n\tthis.isOpen = type === _TransitionEventTypes2.default.open;\n\n\tthis.emit(type === _TransitionEventTypes2.default.open ? 'opened' : 'closed');\n\t// fallback for versions before event emitter rollout\n\tthis.$scope.trigger(type === _TransitionEventTypes2.default.open ? 'opened' : 'closed');\n\t_SignalWrapper2.default.emit('transition.ended');\n}\n\nvar TransitionEventExecutor = function (_EventEmitterAbstract) {\n\t(0, _inherits3.default)(TransitionEventExecutor, _EventEmitterAbstract);\n\n\tfunction TransitionEventExecutor() {\n\t\t(0, _classCallCheck3.default)(this, TransitionEventExecutor);\n\n\t\t// change debugging setting accordingly\n\t\tvar DEBUG = false;\n\n\t\tvar _this5 = (0, _possibleConstructorReturn3.default)(this, _EventEmitterAbstract.call(this));\n\n\t\t_this5._transitionEventExecutorLogger = _this5.debugLocal(DEBUG, 'TransitionEventExecutor', 'background: #549968; color: black');\n\t\treturn _this5;\n\t}\n\n\tTransitionEventExecutor.prototype.execute = function execute(type, $trigger) {\n\t\tvar _this6 = this;\n\n\t\treturn isValidType(type).then(isAttempt.bind(this, type, $trigger)).then(checkTransitionEndPromise.bind(this)).then(this.state.setAnimated).then(dispatchBefore.bind(this, type, $trigger)).then(dispatchOn.bind(this, type, $trigger)).then(dispatchAfter.bind(this, type, $trigger)).then(this.state.removeAnimated).then(emitEvents.bind(this, type, $trigger)).catch(function (msg) {\n\t\t\t_this6._transitionEventExecutorLogger.warn('Error during execution:', msg);\n\t\t});\n\t};\n\n\tTransitionEventExecutor.prototype.executeSilent = function executeSilent(type, $trigger) {\n\t\tdispatchSilent.call(this, type, $trigger);\n\t};\n\n\treturn TransitionEventExecutor;\n}(_EventEmitterAbstract3.default);\n\nexports.default = TransitionEventExecutor;\n\n/***/ }),\n/* 544 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar TYPES = {\n\topen: 'open',\n\tclose: 'close'\n};\n\nexports.default = TYPES;\n\n/***/ }),\n/* 545 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar mergeMap_1 = __webpack_require__(562);\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * <img src=\"./img/mergeMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * @example <caption>Map and flatten each letter to an Observable ticking every 1 second</caption>\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var result = letters.mergeMap(x =>\n * Rx.Observable.interval(1000).map(i => x+i)\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and merging the results of the Observables obtained\n * from this transformation.\n * @method mergeMap\n * @owner Observable\n */\nfunction mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n return mergeMap_1.mergeMap(project, resultSelector, concurrent)(this);\n}\nexports.mergeMap = mergeMap;\n//# sourceMappingURL=mergeMap.js.map\n\n/***/ }),\n/* 546 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar root_1 = __webpack_require__(99);\nfunction symbolIteratorPonyfill(root) {\n var Symbol = root.Symbol;\n if (typeof Symbol === 'function') {\n if (!Symbol.iterator) {\n Symbol.iterator = Symbol('iterator polyfill');\n }\n return Symbol.iterator;\n }\n else {\n // [for Mozilla Gecko 27-35:](https://mzl.la/2ewE1zC)\n var Set_1 = root.Set;\n if (Set_1 && typeof new Set_1()['@@iterator'] === 'function') {\n return '@@iterator';\n }\n var Map_1 = root.Map;\n // required for compatability with es6-shim\n if (Map_1) {\n var keys = Object.getOwnPropertyNames(Map_1.prototype);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n // according to spec, Map.prototype[@@iterator] and Map.orototype.entries must be equal.\n if (key !== 'entries' && key !== 'size' && Map_1.prototype[key] === Map_1.prototype['entries']) {\n return key;\n }\n }\n }\n return '@@iterator';\n }\n}\nexports.symbolIteratorPonyfill = symbolIteratorPonyfill;\nexports.iterator = symbolIteratorPonyfill(root_1.root);\n/**\n * @deprecated use iterator instead\n */\nexports.$$iterator = exports.iterator;\n//# sourceMappingURL=iterator.js.map\n\n/***/ }),\n/* 547 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar filter_1 = __webpack_require__(609);\n/* tslint:enable:max-line-length */\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * <img src=\"./img/filter.png\" width=\"100%\">\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * @example <caption>Emit only click events whose target was a DIV element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV');\n * clicksOnDivs.subscribe(x => console.log(x));\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nfunction filter(predicate, thisArg) {\n return filter_1.filter(predicate, thisArg)(this);\n}\nexports.filter = filter;\n//# sourceMappingURL=filter.js.map\n\n/***/ }),\n/* 548 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar startWith_1 = __webpack_require__(610);\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins to emit\n * items emitted by the source Observable.\n *\n * <img src=\"./img/startWith.png\" width=\"100%\">\n *\n * @param {...T} values - Items you want the modified Observable to emit first.\n * @param {Scheduler} [scheduler] - A {@link IScheduler} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items\n * emitted by the source Observable.\n * @method startWith\n * @owner Observable\n */\nfunction startWith() {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i - 0] = arguments[_i];\n }\n return startWith_1.startWith.apply(void 0, array)(this);\n}\nexports.startWith = startWith;\n//# sourceMappingURL=startWith.js.map\n\n/***/ }),\n/* 549 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = __webpack_require__(48);\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ScalarObservable = (function (_super) {\n __extends(ScalarObservable, _super);\n function ScalarObservable(value, scheduler) {\n _super.call(this);\n this.value = value;\n this.scheduler = scheduler;\n this._isScalar = true;\n if (scheduler) {\n this._isScalar = false;\n }\n }\n ScalarObservable.create = function (value, scheduler) {\n return new ScalarObservable(value, scheduler);\n };\n ScalarObservable.dispatch = function (state) {\n var done = state.done, value = state.value, subscriber = state.subscriber;\n if (done) {\n subscriber.complete();\n return;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n state.done = true;\n this.schedule(state);\n };\n ScalarObservable.prototype._subscribe = function (subscriber) {\n var value = this.value;\n var scheduler = this.scheduler;\n if (scheduler) {\n return scheduler.schedule(ScalarObservable.dispatch, 0, {\n done: false, value: value, subscriber: subscriber\n });\n }\n else {\n subscriber.next(value);\n if (!subscriber.closed) {\n subscriber.complete();\n }\n }\n };\n return ScalarObservable;\n}(Observable_1.Observable));\nexports.ScalarObservable = ScalarObservable;\n//# sourceMappingURL=ScalarObservable.js.map\n\n/***/ }),\n/* 550 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = __webpack_require__(48);\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar EmptyObservable = (function (_super) {\n __extends(EmptyObservable, _super);\n function EmptyObservable(scheduler) {\n _super.call(this);\n this.scheduler = scheduler;\n }\n /**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * <span class=\"informal\">Just emits 'complete', and nothing else.\n * </span>\n *\n * <img src=\"./img/empty.png\" width=\"100%\">\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the complete notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * @example <caption>Emit the number 7, then complete.</caption>\n * var result = Rx.Observable.empty().startWith(7);\n * result.subscribe(x => console.log(x));\n *\n * @example <caption>Map and flatten only odd numbers to the sequence 'a', 'b', 'c'</caption>\n * var interval = Rx.Observable.interval(1000);\n * var result = interval.mergeMap(x =>\n * x % 2 === 1 ? Rx.Observable.of('a', 'b', 'c') : Rx.Observable.empty()\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval eg(0,1,2,3,...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1 print abc\n * // if x % 2 is not equal to 1 nothing will be output\n *\n * @see {@link create}\n * @see {@link never}\n * @see {@link of}\n * @see {@link throw}\n *\n * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n * the emission of the complete notification.\n * @return {Observable} An \"empty\" Observable: emits only the complete\n * notification.\n * @static true\n * @name empty\n * @owner Observable\n */\n EmptyObservable.create = function (scheduler) {\n return new EmptyObservable(scheduler);\n };\n EmptyObservable.dispatch = function (arg) {\n var subscriber = arg.subscriber;\n subscriber.complete();\n };\n EmptyObservable.prototype._subscribe = function (subscriber) {\n var scheduler = this.scheduler;\n if (scheduler) {\n return scheduler.schedule(EmptyObservable.dispatch, 0, { subscriber: subscriber });\n }\n else {\n subscriber.complete();\n }\n };\n return EmptyObservable;\n}(Observable_1.Observable));\nexports.EmptyObservable = EmptyObservable;\n//# sourceMappingURL=EmptyObservable.js.map\n\n/***/ }),\n/* 551 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.DIRECTIONS = undefined;\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _symbol = __webpack_require__(120);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _Observable = __webpack_require__(48);\n\nvar _fromEvent = __webpack_require__(208);\n\nvar _startWith = __webpack_require__(548);\n\nvar _mergeMap = __webpack_require__(545);\n\nvar _map = __webpack_require__(201);\n\n__webpack_require__(621);\n\n__webpack_require__(624);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _fasterdom = __webpack_require__(22);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scope = window,\n Events = {\n\tWHEEL: 'wheel',\n\tSCROLL: 'scroll'\n},\n SCROLL_DIRECTIONS = {\n\n\tUP: (0, _symbol2.default)('up'),\n\tDOWN: (0, _symbol2.default)('down'),\n\tLEFT: (0, _symbol2.default)('left'),\n\tRIGHT: (0, _symbol2.default)('right'),\n\tUNDEFINED: (0, _symbol2.default)('undefined')\n};\n\n/**\n * @typedef {object} ScrollPosition\n * @property {int|undefined} x - scroll value on x-axis\n * @property {int|undefined} y - scroll value on y-axis\n * @propert {Symbol} direction - the current scroll direction\n */\n\n/**\n *\n * @type {ScrollPosition}\n */\nvar cache = {};\n\n/**\n * Cache the current data.\n * @param {ScrollPosition} data - current scroll position\n * @return {ScrollPosition} the new cached scroll position\n */\nfunction cacheAndReturn(data) {\n\tcache = data;\n\n\treturn cache;\n}\n\n/**\n * Check whether the emitted scroll position relally changed.\n * @param {ScrollPosition} data - current scroll position\n * @return {boolean}\n */\nfunction didChange(data) {\n\n\treturn data !== cache;\n}\n\n/**\n * Try to return the cached result first to avoid recalculation and layout trashing\n * @return {Promise<void>|Promise.<*>|Promise<T>|Promise<WindowDimensions>} - promised value\n */\nfunction tryCachedReturn() {\n\n\treturn cache.x !== undefined && cache.y !== undefined ? _promise2.default.resolve(cache) : getWindowScroll();\n}\n\n/**\n * Compare the current scroll position against the last scroll position to determine the direction.\n * @param {ScrollPosition} data - new scroll data\n * @param {ScrollPosition} cache - cached scroll data\n * @return {symbol|*|Symbol} a symbol for the current direction\n */\nfunction determineDirection(data, cache) {\n\n\tvar oldX = cache.x,\n\t oldY = cache.y,\n\t newX = data.x,\n\t newY = data.y;\n\n\tif (oldX !== undefined && oldY !== undefined) {\n\n\t\treturn newY > oldY ? SCROLL_DIRECTIONS.DOWN : newY < oldY ? SCROLL_DIRECTIONS.UP : newX > oldX ? SCROLL_DIRECTIONS.LEFT : newX < oldX ? SCROLL_DIRECTIONS.RIGHT : cache.direction;\n\t} else {\n\n\t\treturn SCROLL_DIRECTIONS.UNDEFINED;\n\t}\n}\n\n/**\n * Calculate the window scroll position\n * @returns {Promise} - a fasterdom promise whch will resolve with a {ScrollPosition} object\n */\nfunction getWindowScroll() {\n\n\treturn _fasterdom.fasterdomPromised.measure(function () {\n\n\t\tvar scrollX = 0,\n\t\t scrollY = 0;\n\n\t\tif (typeof window.pageYOffset === 'number') {\n\t\t\tscrollY = window.pageYOffset;\n\t\t\tscrollX = window.pageXOffset;\n\t\t} else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {\n\t\t\t// DOM\n\t\t\tscrollY = document.body.scrollTop;\n\t\t\tscrollX = document.body.scrollLeft;\n\t\t} else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {\n\t\t\t// IE6\n\t\t\tscrollY = document.documentElement.scrollTop;\n\t\t\tscrollX = document.documentElement.scrollLeft;\n\t\t}\n\n\t\tvar normalizedX = scrollX < 0 ? 0 : Math.floor(scrollX),\n\t\t normalizedY = scrollY < 0 ? 0 : Math.floor(scrollY);\n\n\t\treturn {\n\t\t\t/**\n * @type {int} x - scroll position x\n */\n\t\t\tx: normalizedX,\n\t\t\t/**\n * @type {int} y - scroll position y\n */\n\t\t\ty: normalizedY,\n\n\t\t\tdirection: determineDirection({ x: normalizedX, y: normalizedY }, cache)\n\t\t};\n\t});\n}\n\n/**\n * @public\n * @returns {Observable<ScrollPosition>} - scroll event stream\n */\nfunction registerScrollEventStream() {\n\tvar _context;\n\n\tvar wheelStream = _fromEvent.fromEvent.call(_Observable.Observable, scope, Events.WHEEL),\n\t scrollStream = _fromEvent.fromEvent.call(_Observable.Observable, scope, Events.SCROLL);\n\n\treturn (_context = (_context = (_context = wheelStream.merge(scrollStream), _startWith.startWith).call(_context, getWindowScroll), _mergeMap.mergeMap).call(_context, getWindowScroll).filter(didChange), _map.map).call(_context, cacheAndReturn);\n}\n\n/**\n * Scroll to a position.\n * @param {ScrollPosition} data - coordinates\n * @param {object} options - Scroll options\n */\nfunction scrollToPosition(data) {\n\tvar options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { animated: false };\n\n\tif (options.animated) {\n\t\t(0, _jquery2.default)('html, body').animate({\n\t\t\tscrollTop: data.y\n\t\t}, 600);\n\t} else {\n\t\twindow.scrollTo(data.x, data.y);\n\t}\n}\n\n/**\n * Scroll to an element.\n * @param {ScrollPosition} element - the element to make visible\n * @param {object} options - Scroll options\n */\nfunction scrollToElement(element) {\n\t(0, _jquery2.default)('html, body').animate({\n\t\tscrollTop: element.offset().top\n\t}, 600);\n}\n\nvar ScrollService = { // eslint-disable-line one-var\n\n\tscrollEvent: registerScrollEventStream(),\n\tgetCurrent: tryCachedReturn,\n\ttoPosition: scrollToPosition,\n\ttoElement: scrollToElement\n};\n\nexports.DIRECTIONS = SCROLL_DIRECTIONS;\nexports.default = ScrollService;\n\n/***/ }),\n/* 552 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar Observable_1 = __webpack_require__(48);\nvar ArrayObservable_1 = __webpack_require__(281);\nvar isScheduler_1 = __webpack_require__(282);\nvar mergeAll_1 = __webpack_require__(569);\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * <img src=\"./img/merge.png\" width=\"100%\">\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * @example <caption>Merge together two Observables: 1s interval and clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var timer = Rx.Observable.interval(1000);\n * var clicksOrTimer = Rx.Observable.merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console everytime the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n *\n * @example <caption>Merge together 3 Observables, but only 2 run concurrently</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var concurrent = 2; // the argument\n * var merged = Rx.Observable.merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits it's max iteration, timer2 will\n * // continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits it's max iteration it terminates, and\n * // timer3 will continue to emit a value every 500ms until it is complete\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n * @static true\n * @name merge\n * @owner Observable\n */\nfunction merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i - 0] = arguments[_i];\n }\n var concurrent = Number.POSITIVE_INFINITY;\n var scheduler = null;\n var last = observables[observables.length - 1];\n if (isScheduler_1.isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable_1.Observable) {\n return observables[0];\n }\n return mergeAll_1.mergeAll(concurrent)(new ArrayObservable_1.ArrayObservable(observables, scheduler));\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map\n\n/***/ }),\n/* 553 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _typeof2 = __webpack_require__(81);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _from = __webpack_require__(104);\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _toConsumableArray2 = __webpack_require__(117);\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _Identifiers = __webpack_require__(151);\n\nvar _Identifiers2 = _interopRequireDefault(_Identifiers);\n\nvar _Cookie = __webpack_require__(150);\n\nvar _Cookie2 = _interopRequireDefault(_Cookie);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Yeah, some code duplication here, because it needs to be\n * an as small as possible standalone component\n * // TODO?\n */\nvar win = window,\n rAF = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.msRequestAnimationFrame || function (cb) {\n\t// eslint-disable-line func-names\n\treturn setTimeout(cb, 16);\n};\n\nfunction getSiblings(el) {\n\tvar siblings = [];\n\n\tif (el && el.parentNode) {\n\t\tvar sibling = el.parentNode.firstChild;\n\n\t\tdo {\n\t\t\tif (sibling.nodeType !== 1 || sibling === el) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsiblings.push(sibling);\n\t\t} while (sibling = sibling.nextSibling);\n\t}\n\n\treturn siblings;\n}\n\nfunction switchViewTo(el) {\n\tvar siblings = getSiblings(el);\n\n\trAF(function () {\n\t\tsiblings.forEach(function (sibling) {\n\t\t\tsibling.classList.remove('open');\n\t\t\tsibling.setAttribute('aria-hidden', true);\n\t\t});\n\t\tel.classList.add('open');\n\t\tel.setAttribute('aria-hidden', false);\n\t});\n}\n\nfunction switchViews() {\n\tif (this.base.classList.contains('open')) {\n\t\tswitchViewTo(this.settings);\n\t} else {\n\t\tswitchViewTo(this.base);\n\t}\n}\n\nfunction setCookieLevel(level) {\n\tif (!this.config || !this.config.cookie) {\n\t\treturn;\n\t}\n\n\tif (typeof level === 'number' && this.config.cookie && this.config.cookie.name) {\n\t\tvar cookie = this.config.cookie;\n\n\t\tif (cookie.allowedValues && !~cookie.allowedValues.indexOf(level)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar splittedHostName = window.location.hostname.split('.'),\n\t\t domain = splittedHostName.length > 1 ? '.' + splittedHostName[splittedHostName.length - 2] + '.' + splittedHostName[splittedHostName.length - 1] : splittedHostName[splittedHostName.length - 1];\n\n\t\tcookie.domain = domain;\n\n\t\t_Cookie2.default.setCookie(cookie.name, level, cookie.lifetime, cookie.domain);\n\t} else if (typeof level === 'string') {\n\t\tif (level === 'max') {\n\t\t\tsetCookieLevel.call(this, Math.max.apply(Math, (0, _toConsumableArray3.default)(this.levels.present)));\n\t\t} else if (level === 'min') {\n\t\t\tsetCookieLevel.call(this, Math.min.apply(Math, (0, _toConsumableArray3.default)(this.levels.present)));\n\t\t}\n\t}\n}\n\nfunction setupLevels() {\n\tvar _this = this;\n\n\tthis.levels = {\n\t\telements: this.scope.querySelectorAll(_Identifiers2.default.LEVELS),\n\t\tdetails: this.scope.querySelectorAll(_Identifiers2.default.DETAILS),\n\t\tpresent: [],\n\t\tcurrent: -1\n\t};\n\n\t(0, _from2.default)(this.levels.elements).forEach(function (element, idx) {\n\t\tvar parentSiblings = getSiblings(element),\n\t\t detailElement = _this.levels.details[idx],\n\t\t detailSiblings = getSiblings(detailElement),\n\t\t radio = element.querySelector('.radio input'),\n\t\t level = parseInt(radio.getAttribute('value'));\n\n\t\t_this.levels.present.push(level);\n\n\t\tif (element.classList.contains('selected')) {\n\t\t\t_this.levels.current = level;\n\t\t}\n\n\t\t// Disabling option to choose tracking level one\n\t\tif (idx === 0) return;\n\n\t\tradio.addEventListener('change', function () {\n\n\t\t\t_this.levels.current = level;\n\n\t\t\trAF(function () {\n\t\t\t\tparentSiblings.concat(detailSiblings).forEach(function (sibling) {\n\t\t\t\t\tsibling.classList.remove('selected');\n\t\t\t\t});\n\t\t\t\telement.classList.add('selected');\n\t\t\t\tdetailElement.classList.add('selected');\n\t\t\t});\n\t\t});\n\t});\n}\n\nfunction addHandler() {\n\tvar _this2 = this;\n\n\tvar triggerHandler = function triggerHandler(e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tswitchViews.call(_this2);\n\n\t\treturn false;\n\t};\n\n\t(0, _from2.default)(this.trigger).forEach(function (trigger) {\n\t\treturn trigger.addEventListener('click', triggerHandler);\n\t});\n\n\t(0, _from2.default)(this.buttonImmediate).forEach(function (button) {\n\t\treturn button.addEventListener('click', function () {\n\t\t\treturn setCookieLevel.call(_this2, 'max');\n\t\t});\n\t});\n\n\t(0, _from2.default)(this.buttonLevel).forEach(function (button) {\n\t\treturn button.addEventListener('click', function () {\n\t\t\treturn setCookieLevel.call(_this2, _this2.levels.current);\n\t\t});\n\t});\n\n\tthis.expandableTrigger.addEventListener('click', function () {\n\t\t_this2.expandable.classList.toggle('expanded');\n\t});\n}\n\nfunction isJQuery(obj) {\n\treturn (typeof obj === 'undefined' ? 'undefined' : (0, _typeof3.default)(obj)) === 'object' && ('jquery' in obj || obj.constructor && obj.constructor.prototype && obj.constructor.prototype.jquery);\n}\n\nvar DWS01Controller = function () {\n\tfunction DWS01Controller() {\n\t\t(0, _classCallCheck3.default)(this, DWS01Controller);\n\t}\n\n\tDWS01Controller.prototype.init = function init(scope, config) {\n\t\tif (isJQuery(scope)) {\n\t\t\tthis.$scope = scope;\n\t\t\tthis.scope = this.$scope[0];\n\t\t} else {\n\t\t\tthis.scope = scope;\n\t\t}\n\n\t\tthis.config = config;\n\t\tthis.base = this.scope.querySelector(_Identifiers2.default.BASE);\n\t\tthis.settings = this.scope.querySelector(_Identifiers2.default.SETTINGS);\n\t\tthis.trigger = this.scope.querySelectorAll(_Identifiers2.default.TRIGGER);\n\t\tthis.buttonImmediate = this.scope.querySelectorAll(_Identifiers2.default.BUTTONS.ACCEPT_IMMEDIATE);\n\t\tthis.buttonLevel = this.scope.querySelectorAll(_Identifiers2.default.BUTTONS.ACCEPT_LEVEL);\n\t\tthis.expandable = this.scope.querySelector(_Identifiers2.default.EXPANDER.ROOT);\n\t\tthis.expandableTrigger = this.scope.querySelector(_Identifiers2.default.EXPANDER.TRIGGER);\n\n\t\tsetupLevels.call(this);\n\t\taddHandler.call(this);\n\t};\n\n\treturn DWS01Controller;\n}();\n\nexports.default = DWS01Controller;\n\n/***/ }),\n/* 554 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * handles click on page wrapper\r\n * @param {object} e - click event\r\n * @returns {void}\r\n */\nfunction handleClick(e) {\n\tvar $target = (0, _jquery2.default)(e.target);\n\n\tif (!this.$element instanceof _jquery2.default) {\n\t\tthis.$element = (0, _jquery2.default)(this.$element);\n\t}\n\n\tif ($target !== this.$element && $target.parents().index(this.$element) < 0) {\n\t\tthis.callback(e);\n\t\tthis.destroy();\n\t}\n}\n\n/**\r\n * Class representing an click outside handler\r\n * @extends { AbstractController }\r\n */\n\nvar Clickoutside = function (_AbstractController) {\n\t(0, _inherits3.default)(Clickoutside, _AbstractController);\n\n\tfunction Clickoutside($element, callback) {\n\t\t(0, _classCallCheck3.default)(this, Clickoutside);\n\n\t\tvar _this = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this.$element = $element;\n\t\t_this.callback = callback;\n\t\t_this.$document = (0, _jquery2.default)('#page-wrapper');\n\t\t_this.active = true;\n\t\t_this.id = Date.now();\n\n\t\t_this.$document.on('click.clickoutside-' + _this.id, handleClick.bind(_this));\n\t\treturn _this;\n\t}\n\n\tClickoutside.prototype.destroy = function destroy() {\n\t\tthis.$document.off('click.clickoutside-' + this.id);\n\t\tthis.active = false;\n\t};\n\n\treturn Clickoutside;\n}(_Abstract2.default);\n\nexports.default = Clickoutside;\n\n/***/ }),\n/* 555 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(206);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\n/***/ }),\n/* 556 */,\n/* 557 */,\n/* 558 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _inViewport = __webpack_require__(663);\n\nvar _inViewport2 = _interopRequireDefault(_inViewport);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _DomObserver = __webpack_require__(671);\n\nvar _DomObserver2 = _interopRequireDefault(_DomObserver);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * Add loaded class to visible image.\r\n * @param {HTMLElement} item - image node\r\n * @return {void}\r\n */\nfunction addLoadedClass(item) {\n\n\t(0, _jquery2.default)(item).addClass('image--loaded');\n}\n\n/**\r\n * Add loaded class to visible images.\r\n * Use fastdom for efficient layout changes.\r\n * @param {Array<HTMLElement>} items - which are visible.\r\n * @return {void}\r\n */\nfunction handleVisibleItems(items) {\n\n\t_fasterdom.fasterdomPromised.mutate(function () {\n\t\treturn items.map(addLoadedClass);\n\t});\n}\n\n/**\r\n * Handle change events.\r\n * @param {Promise} event - promise returned from {InViewportService} which will be resolved with visible and invisible items.\r\n * @return {void}\r\n */\nfunction handleVisibilityChange(event) {\n\n\tevent.then(function (items) {\n\t\treturn handleVisibleItems(items.visible);\n\t});\n}\n\n/**\r\n * Find lazy loaded items and add to watcher.\r\n * @return {void}\r\n */\nfunction addItemsToWatch() {\n\n\t_inViewport2.default.clearWatchList().addItemsToWatchList((0, _jquery2.default)('.image--lazy-loaded').get());\n}\n\n/**\r\n * Singleton to handle lazy image loading using {InViewportService} module.\r\n */\n\nvar LazyImageLoader = function () {\n\tfunction LazyImageLoader() {\n\t\t(0, _classCallCheck3.default)(this, LazyImageLoader);\n\t}\n\n\t/**\r\n * Initialises the service singleton.\r\n * Has to be called after ready event.\r\n * @public\r\n * @return { LazyImageLoader } instance\r\n */\n\tLazyImageLoader.prototype.init = function init() {\n\n\t\taddItemsToWatch();\n\n\t\t_inViewport2.default.updateEvent.subscribe(handleVisibilityChange);\n\n\t\treturn this;\n\t};\n\n\t/**\r\n * Update the watcher. Can be called after DOM changes.\r\n * @param {function} callback - called after change\r\n * @return {void}\r\n */\n\n\n\tLazyImageLoader.prototype.update = function update(callback) {\n\t\taddItemsToWatch();\n\n\t\tif (callback) {\n\t\t\tcallback();\n\t\t}\n\t};\n\n\t/**\r\n * Watch a DOM-Node for updates on attributes, child nodes and attributes.\r\n * @param {HTMLElement} node - element to observe\r\n * @param {function} callback - triggered after watch triggered\r\n * @param {object} OBSERVER_CONFIG - watcher config\r\n * @returns {LazyImageLoader} instance\r\n */\n\n\n\tLazyImageLoader.prototype.watch = function watch(node, callback) {\n\t\tvar OBSERVER_CONFIG = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _DomObserver.DEFAULT_CONFIG;\n\n\n\t\tconsole.log('watching node', node);\n\n\t\tvar observer = _DomObserver2.default.getInstanceWithCallback(this.update.bind(this, callback));\n\n\t\tobserver.observe(node, OBSERVER_CONFIG);\n\t\treturn this;\n\t};\n\n\treturn LazyImageLoader;\n}();\n\nvar instance = new LazyImageLoader();\n\nexports.default = instance;\n\n/***/ }),\n/* 559 */,\n/* 560 */,\n/* 561 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _NavigationItem = __webpack_require__(605);\n\nvar _NavigationItem2 = _interopRequireDefault(_NavigationItem);\n\nvar _OffscreenNavigation = __webpack_require__(280);\n\nvar _OffscreenNavigation2 = _interopRequireDefault(_OffscreenNavigation);\n\nvar _Selectors = __webpack_require__(124);\n\nvar _Bucket = __webpack_require__(125);\n\nvar _Bucket2 = _interopRequireDefault(_Bucket);\n\nvar _signal = __webpack_require__(96);\n\nvar _signal2 = _interopRequireDefault(_signal);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * Resets the complete menu status to it's default values\r\n * @returns { void }\r\n * @private\r\n *\r\n * @memberof module:framework/navigation~NavigationController\r\n */\n/** @module framework/navigation */\nfunction resetMenu() {\n\tvar self = this;\n\n\tself._closeOpen.clear();\n\tself.subController.map(function (v) {\n\t\tv.reset();\n\n\t\t_fasterdom2.default.onFrameInstant(function () {\n\t\t\tif (v.isOpen) {\n\t\t\t\tself._closeOpen.add(function () {\n\t\t\t\t\tv.close(v.$trigger);\n\t\t\t\t}, '_', true);\n\t\t\t}\n\t\t}, 1);\n\n\t\treturn v;\n\t});\n}\n\n/**\r\n * Adds event listeners to submenu items and deligates opening / closing methods\r\n * @returns { void }\r\n * @private\r\n *\r\n * @memberof module:framework/navigation~NavigationController\r\n */\nfunction addHandler() {\n\tvar _this = this;\n\n\tvar self = this;\n\n\tself.$items.each(function (i, v) {\n\t\tvar $this = (0, _jquery2.default)(v),\n\t\t controllerInstance = new _NavigationItem2.default();\n\n\t\tcontrollerInstance.init($this);\n\t\tself.subController.push(controllerInstance);\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tif (controllerInstance.isOpen) {\n\t\t\t\tself._closeOpen.add(function () {\n\t\t\t\t\tcontrollerInstance.close($this);\n\t\t\t\t}, '_', true);\n\t\t\t}\n\t\t}, 1);\n\n\t\t$this.on('click', '> span', function (e) {\n\t\t\tvar $t = (0, _jquery2.default)(_this);\n\n\t\t\tif (controllerInstance.isDisabled || _Bucket2.default.controller.framework.offscreenNavigation.isChildOpening) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself._closeOpen.dispatch();\n\n\t\t\tif (!controllerInstance.isOpen) {\n\t\t\t\tcontrollerInstance.open($t);\n\t\t\t\tself._closeOpen.add(function () {\n\t\t\t\t\tcontrollerInstance.close($t);\n\t\t\t\t}, '_', true);\n\t\t\t}\n\t\t});\n\t});\n\n\t/**\r\n * reset menu state to default on OffScreenNavigation close\r\n */\n\t_OffscreenNavigation2.default.$scope.on('closed', function (e) {\n\t\tif (e.target === _OffscreenNavigation2.default.$scope[0]) {\n\t\t\tresetMenu.call(self);\n\t\t}\n\t});\n}\n\n/**\r\n * Class representing the main navigation menu.\r\n * Controls the state of the navigation.\r\n * Controls menu item behavior.\r\n * @class\r\n * \r\n * @extends { AbstractController }\r\n */\n\nvar NavigationController = function (_AbstractController) {\n\t(0, _inherits3.default)(NavigationController, _AbstractController);\n\n\t/**\r\n * @constructs\r\n */\n\tfunction NavigationController() {\n\t\t(0, _classCallCheck3.default)(this, NavigationController);\n\n\t\tvar _this2 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this2.$scope = null;\n\n\t\t_this2._closeOpen = new _signal2.default();\n\n\t\t_this2.$items = null;\n\t\t_this2.subController = [];\n\t\t_this2.navController = [];\n\t\treturn _this2;\n\t}\n\n\t/**\r\n * Initialises the controller singleton.\r\n * Has to be called after ready event.\r\n * @param { jQuery } $root - jQuery wrapped DOM node\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tNavigationController.prototype.init = function init($root) {\n\t\tvar self = this;\n\n\t\tthis.$scope = $root;\n\t\tthis.$items = self.$scope.find('> li[' + _Selectors.SELECTORS.expandedSelector + ']').has('> span');\n\n\t\taddHandler.call(self);\n\t};\n\n\t/**\r\n * Close all items\r\n * @return { void }\r\n * @public\r\n */\n\n\n\tNavigationController.prototype.closeItems = function closeItems() {\n\t\tthis._closeOpen.clear();\n\t\tthis.subController.map(function (v) {\n\t\t\tv.closeSilent();\n\t\t\treturn v;\n\t\t});\n\t};\n\n\treturn NavigationController;\n}(_Abstract2.default);\n\n/**\r\n * @private\r\n * @type { NavigationController }\r\n */\n// const instance = new NavigationController();\n\nexports.default = NavigationController;\n\n/***/ }),\n/* 562 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar subscribeToResult_1 = __webpack_require__(563);\nvar OuterSubscriber_1 = __webpack_require__(566);\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * <img src=\"./img/mergeMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * @example <caption>Map and flatten each letter to an Observable ticking every 1 second</caption>\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var result = letters.mergeMap(x =>\n * Rx.Observable.interval(1000).map(i => x+i)\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and merging the results of the Observables obtained\n * from this transformation.\n * @method mergeMap\n * @owner Observable\n */\nfunction mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n return function mergeMapOperatorFunction(source) {\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n resultSelector = null;\n }\n return source.lift(new MergeMapOperator(project, resultSelector, concurrent));\n };\n}\nexports.mergeMap = mergeMap;\nvar MergeMapOperator = (function () {\n function MergeMapOperator(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n this.project = project;\n this.resultSelector = resultSelector;\n this.concurrent = concurrent;\n }\n MergeMapOperator.prototype.call = function (observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.resultSelector, this.concurrent));\n };\n return MergeMapOperator;\n}());\nexports.MergeMapOperator = MergeMapOperator;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MergeMapSubscriber = (function (_super) {\n __extends(MergeMapSubscriber, _super);\n function MergeMapSubscriber(destination, project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n _super.call(this, destination);\n this.project = project;\n this.resultSelector = resultSelector;\n this.concurrent = concurrent;\n this.hasCompleted = false;\n this.buffer = [];\n this.active = 0;\n this.index = 0;\n }\n MergeMapSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeMapSubscriber.prototype._tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result, value, index);\n };\n MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {\n this.add(subscribeToResult_1.subscribeToResult(this, ish, value, index));\n };\n MergeMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n };\n MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n if (this.resultSelector) {\n this._notifyResultSelector(outerValue, innerValue, outerIndex, innerIndex);\n }\n else {\n this.destination.next(innerValue);\n }\n };\n MergeMapSubscriber.prototype._notifyResultSelector = function (outerValue, innerValue, outerIndex, innerIndex) {\n var result;\n try {\n result = this.resultSelector(outerValue, innerValue, outerIndex, innerIndex);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n this.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n };\n return MergeMapSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\nexports.MergeMapSubscriber = MergeMapSubscriber;\n//# sourceMappingURL=mergeMap.js.map\n\n/***/ }),\n/* 563 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar root_1 = __webpack_require__(99);\nvar isArrayLike_1 = __webpack_require__(564);\nvar isPromise_1 = __webpack_require__(565);\nvar isObject_1 = __webpack_require__(277);\nvar Observable_1 = __webpack_require__(48);\nvar iterator_1 = __webpack_require__(546);\nvar InnerSubscriber_1 = __webpack_require__(607);\nvar observable_1 = __webpack_require__(267);\nfunction subscribeToResult(outerSubscriber, result, outerValue, outerIndex) {\n var destination = new InnerSubscriber_1.InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n if (destination.closed) {\n return null;\n }\n if (result instanceof Observable_1.Observable) {\n if (result._isScalar) {\n destination.next(result.value);\n destination.complete();\n return null;\n }\n else {\n destination.syncErrorThrowable = true;\n return result.subscribe(destination);\n }\n }\n else if (isArrayLike_1.isArrayLike(result)) {\n for (var i = 0, len = result.length; i < len && !destination.closed; i++) {\n destination.next(result[i]);\n }\n if (!destination.closed) {\n destination.complete();\n }\n }\n else if (isPromise_1.isPromise(result)) {\n result.then(function (value) {\n if (!destination.closed) {\n destination.next(value);\n destination.complete();\n }\n }, function (err) { return destination.error(err); })\n .then(null, function (err) {\n // Escaping the Promise trap: globally throw unhandled errors\n root_1.root.setTimeout(function () { throw err; });\n });\n return destination;\n }\n else if (result && typeof result[iterator_1.iterator] === 'function') {\n var iterator = result[iterator_1.iterator]();\n do {\n var item = iterator.next();\n if (item.done) {\n destination.complete();\n break;\n }\n destination.next(item.value);\n if (destination.closed) {\n break;\n }\n } while (true);\n }\n else if (result && typeof result[observable_1.observable] === 'function') {\n var obs = result[observable_1.observable]();\n if (typeof obs.subscribe !== 'function') {\n destination.error(new TypeError('Provided object does not correctly implement Symbol.observable'));\n }\n else {\n return obs.subscribe(new InnerSubscriber_1.InnerSubscriber(outerSubscriber, outerValue, outerIndex));\n }\n }\n else {\n var value = isObject_1.isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = (\"You provided \" + value + \" where a stream was expected.\")\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n destination.error(new TypeError(msg));\n }\n return null;\n}\nexports.subscribeToResult = subscribeToResult;\n//# sourceMappingURL=subscribeToResult.js.map\n\n/***/ }),\n/* 564 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nexports.isArrayLike = (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArrayLike.js.map\n\n/***/ }),\n/* 565 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nfunction isPromise(value) {\n return value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\nexports.isPromise = isPromise;\n//# sourceMappingURL=isPromise.js.map\n\n/***/ }),\n/* 566 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = __webpack_require__(115);\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar OuterSubscriber = (function (_super) {\n __extends(OuterSubscriber, _super);\n function OuterSubscriber() {\n _super.apply(this, arguments);\n }\n OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n this.destination.error(error);\n };\n OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n this.destination.complete();\n };\n return OuterSubscriber;\n}(Subscriber_1.Subscriber));\nexports.OuterSubscriber = OuterSubscriber;\n//# sourceMappingURL=OuterSubscriber.js.map\n\n/***/ }),\n/* 567 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _Observable = __webpack_require__(48);\n\nvar _fromEvent = __webpack_require__(208);\n\nvar _mergeMap = __webpack_require__(545);\n\nvar _filter = __webpack_require__(547);\n\nvar _map = __webpack_require__(201);\n\nvar _startWith = __webpack_require__(548);\n\nvar _Viewport = __webpack_require__(570);\n\nvar _Viewport2 = _interopRequireDefault(_Viewport);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scope = window,\n Events = {\n RESIZE: 'resize'\n};\n\nvar cache = void 0;\n\n/**\n * @typedef {object} WindowDimensions\n * @property {int} width - The width of the current viewport\n * @property {int} height - The height of the current viewport\n */\n\n/**\n * Cache the current result and return a reference to the cached result to enable strict === comparison\n * @param {WindowDimensions} data - the window measurements\n * @return {WindowDimensions} the cached window measurements\n */\nfunction cacheSize(data) {\n\n cache = data;\n\n return cache;\n}\n\n/**\n * Check if the data has changed.\n * @param {WindowDimensions} data - the window measurements\n * @return {boolean} - whether data needs an update.\n */\nfunction didChange(data) {\n\n return data !== cache;\n}\n\n/**\n * Try to return the cached result first to avoid recalculation and layout trashing\n * @return {Promise<void>|Promise.<*>|Promise<T>|Promise<WindowDimensions>} - either immediately resolve with cache or fetch new data from service\n */\nfunction tryCachedReturn() {\n\n return cache ? _promise2.default.resolve(cache) : _Viewport2.default.getSize();\n}\n\n/**\n * Attach observable to window resize events.\n * @public\n * @return {Observable<WindowDimensions>} - stream of window resize events\n */\nfunction registerResizeEventStream() {\n var _context;\n\n return (_context = (_context = (_context = (_context = _fromEvent.fromEvent.call(_Observable.Observable, scope, Events.RESIZE), _startWith.startWith).call(_context, _Viewport2.default.getSize), _mergeMap.mergeMap).call(_context, _Viewport2.default.getSize), _filter.filter).call(_context, didChange), _map.map).call(_context, cacheSize);\n}\n\nvar ResizeService = {\n\n resizeEvent: registerResizeEventStream(),\n getCurrent: tryCachedReturn\n};\n\nexports.default = ResizeService;\n\n/***/ }),\n/* 568 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar FromObservable_1 = __webpack_require__(613);\nexports.from = FromObservable_1.FromObservable.create;\n//# sourceMappingURL=from.js.map\n\n/***/ }),\n/* 569 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar mergeMap_1 = __webpack_require__(562);\nvar identity_1 = __webpack_require__(620);\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables.</span>\n *\n * <img src=\"./img/mergeAll.png\" width=\"100%\">\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * @example <caption>Spawn a new interval Observable for each click event, and blend their outputs as one Observable</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000));\n * var firstOrder = higherOrder.mergeAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * @example <caption>Count from 0 to 9 every second for each click, but only allow 2 concurrent timers</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(10));\n * var firstOrder = higherOrder.mergeAll(2);\n * firstOrder.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits values coming from all the\n * inner Observables emitted by the source Observable.\n * @method mergeAll\n * @owner Observable\n */\nfunction mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n return mergeMap_1.mergeMap(identity_1.identity, null, concurrent);\n}\nexports.mergeAll = mergeAll;\n//# sourceMappingURL=mergeAll.js.map\n\n/***/ }),\n/* 570 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _fasterdom = __webpack_require__(22);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar cache = {\n\twidth: null,\n\theight: null,\n\twindowHeight: null,\n\twindowWidth: null\n},\n $scope = window;\n\n/**\n * @typedef {object} Position within the document\n * @param {int} top - top pos\n * @param {int} left - left pos\n * @param {int} right - right pos\n * @param {int} bottom - bottom pos\n */\n\n/**\n * Measure the viewport using {FasterDom}.\n * Is provided as a singleton.\n */\n//import $ from 'cash-dom';\n\nvar ViewportService = function () {\n\tfunction ViewportService() {\n\t\t(0, _classCallCheck3.default)(this, ViewportService);\n\t}\n\n\t/**\n * Try to return the cached result first to avoid recalculation and layout trashing\n * @return {Promise<void>|Promise.<*>|Promise<T>|Promise<WindowDimensions>} - promised value\n */\n\tViewportService.prototype.tryCachedReturn = function tryCachedReturn() {\n\n\t\treturn cache.width && cache.height ? _promise2.default.resolve(cache) : this.getSize();\n\t};\n\n\t/**\n * Determine the size of the viewport.\n * @return {Promise} promise which will resolve to an object containing width and height\n */\n\n\n\tViewportService.prototype.getSize = function getSize() {\n\n\t\treturn _fasterdom.fasterdomPromised.measure(function () {\n\n\t\t\tif (window.useInnerWidth === true) {\n\t\t\t\tcache.width = Math.min($scope.outerWidth, $scope.innerWidth);\n\t\t\t\tcache.height = Math.min($scope.outerHeight, $scope.innerHeight);\n\t\t\t} else {\n\t\t\t\tcache.width = Math.max($scope.outerWidth, $scope.innerWidth);\n\t\t\t\tcache.height = Math.max($scope.outerHeight, $scope.innerHeight);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\twidth: cache.width,\n\t\t\t\theight: cache.height\n\t\t\t};\n\t\t});\n\t};\n\n\t/**\n * Get the current position of an element within the Viewport.\n * @param {HTMLElement} element - dom element to find\n * @return {Promise} promise which will resolve to {Position}\n */\n\n\n\tViewportService.prototype.getPosition = function getPosition(element) {\n\n\t\treturn _fasterdom.fasterdomPromised.measure(function () {\n\n\t\t\tvar rect = element.getBoundingClientRect();\n\n\t\t\treturn {\n\t\t\t\ttop: Math.round(rect.top),\n\t\t\t\tright: Math.round(rect.right),\n\t\t\t\tbottom: Math.round(rect.bottom),\n\t\t\t\tleft: Math.round(rect.left)\n\t\t\t};\n\t\t});\n\t};\n\n\t/**\n * Determine if the position of a given item is within the viewport.\n * @param {HTMLElement} element - the element to find\n * @param {int} OFFSET [param=0] - offset to widen the viewport to fuzzy match\n * @return {Promise|Promise<T>} - promise will be resolved after the viewport was determined.\n */\n\n\n\tViewportService.prototype.isVisible = function isVisible(element) {\n\t\tvar _this = this;\n\n\t\tvar OFFSET = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\n\t\treturn new _promise2.default(function (resolve) {\n\n\t\t\t_promise2.default.all([_this.tryCachedReturn(), _this.getPosition(element)]).then(function (values) {\n\n\t\t\t\tvar viewport = values[0],\n\t\t\t\t position = values[1];\n\n\t\t\t\tresolve(position.top >= -OFFSET && position.top <= viewport.height + OFFSET || position.bottom >= -OFFSET && position.bottom <= viewport.height - OFFSET);\n\t\t\t});\n\t\t});\n\t};\n\n\treturn ViewportService;\n}();\n\nvar instance = new ViewportService(); //eslint-disable-line\n\nexports.default = instance;\n\n/***/ }),\n/* 571 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(80);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _typeof2 = __webpack_require__(81);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _AbstractController2 = __webpack_require__(37);\n\nvar _AbstractController3 = _interopRequireDefault(_AbstractController2);\n\nvar _OffscreenNavigation = __webpack_require__(280);\n\nvar _OffscreenNavigation2 = _interopRequireDefault(_OffscreenNavigation);\n\nvar _OffscreenCart = __webpack_require__(645);\n\nvar _OffscreenCart2 = _interopRequireDefault(_OffscreenCart);\n\nvar _OffScreenAppDrawer = __webpack_require__(646);\n\nvar _OffScreenAppDrawer2 = _interopRequireDefault(_OffScreenAppDrawer);\n\nvar _TargetGroupSelect = __webpack_require__(572);\n\nvar _TargetGroupSelect2 = _interopRequireDefault(_TargetGroupSelect);\n\nvar _global = __webpack_require__(103);\n\nvar _device = __webpack_require__(54);\n\nvar _Identifiers = __webpack_require__(158);\n\nvar _Selectors = __webpack_require__(124);\n\nvar _Bucket = __webpack_require__(125);\n\nvar _Bucket2 = _interopRequireDefault(_Bucket);\n\nvar _lodash = __webpack_require__(647);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _lodash3 = __webpack_require__(648);\n\nvar _lodash4 = _interopRequireDefault(_lodash3);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _fasterdom = __webpack_require__(22);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// import fakescroll from './../../helper/fakescroll';\n/** @module framework/offscreen */\nvar stateClasses = {},\n controllerMap = {\n\t'offScreenCart': _OffscreenCart2.default,\n\t'offScreenAppDrawer': _OffScreenAppDrawer2.default,\n\t'offScreenNavigation': _OffscreenNavigation2.default\n};\n\n/**\r\n * Binds the scroll prevent handler to the document\r\n *\r\n * @return {void}\r\n */\n\n//import globalEvents from './../../helper/SignalWrapper';\nfunction disableScroll() {}\n// fakescroll.enable();\n\n\n/**\r\n * Removes the scroll prevent handler so the document can be scrolled again\r\n *\r\n * @return {void}\r\n */\nfunction enableScroll() {}\n// fakescroll.disable();\n\n\n/**\r\n * Check whether we are above the special 1600px breakpoint to enable or disable scroll while the navigation is open.\r\n * @param {function} cb - either enableScroll or disableScroll\r\n * @param {WindowDimensions} data - calculated viewport\r\n * @return {void}\r\n */\nfunction afterResizeCalculation(cb, data) {\n\n\tif (data.width < 1600) {\n\t\t_fasterdom.fasterdomPromised.onFrame(cb, 2);\n\t}\n}\n\n/**\r\n * Wait for viewport calculation to execute the callback.\r\n * @param {function} cb - either enableScroll or disableScroll\r\n * @return {void}\r\n */\nfunction checkForViewportAndExecute(cb) {\n\n\t_device.ResizeService.getCurrent().then(afterResizeCalculation.bind(this, cb));\n}\n\n/**\r\n * Get the corresponding OffScreenIdentifier of a navItem or button element\r\n * @param { jQuery } $el - jOuery navItem or button element\r\n * @returns { Object|Array } - single or an array of OffScreenContainer jQuery elements\r\n * @private\r\n */\nfunction getIdentifier($el) {\n\tif ($el instanceof _jquery2.default && $el.length > 0) {\n\t\tvar $btn = $el.is('button') ? $el : $el.find('button[' + _Selectors.SELECTORS.controlsSelector + ']');\n\n\t\t// TODO: move to fasterdom?\n\t\treturn (0, _global.camelCaseSelector)($btn.attr(_Selectors.SELECTORS.controlsSelector));\n\t}\n\n\treturn null;\n}\n\n/**\r\n * Get the corresponding OffScreenContainer of a navItem or button element\r\n * @param { jQuery } $el - jOuery navItem or button element\r\n * @returns { Object|Array } - single or an array of OffScreenContainer jQuery elements\r\n * @private\r\n */\nfunction getContainer($el) {\n\tvar self = this,\n\t result = [];\n\n\tif (typeof $el === 'string') {\n\t\treturn self[$el];\n\t} else if ((typeof $el === 'undefined' ? 'undefined' : (0, _typeof3.default)($el)) === 'object' && $el instanceof _jquery2.default && $el.length > 0) {\n\t\t$el.each(function (i, val) {\n\t\t\tresult.push(self[getIdentifier.call(self, (0, _jquery2.default)(val))]);\n\t\t});\n\t}\n\n\treturn result;\n}\n\n/**\r\n * Get the corresponding OffScreenContainer Controller of a navItem or button element\r\n * @param { jQuery } $el - jOuery navItem or button element\r\n * @returns { Object|Array } - single OffScreenContainer Controller or an array of OffScreenContainer Controllers\r\n * @private\r\n */\nfunction getController($el) {\n\tvar self = this,\n\t result = [];\n\n\tif (typeof $el === 'string') {\n\t\treturn controllerMap[$el];\n\t} else if ((typeof $el === 'undefined' ? 'undefined' : (0, _typeof3.default)($el)) === 'object' && $el instanceof _jquery2.default && $el.length > 0) {\n\t\t$el.each(function (i, val) {\n\t\t\tresult.push(controllerMap[getIdentifier.call(self, (0, _jquery2.default)(val))]);\n\t\t});\n\t}\n\n\treturn result;\n}\n\n/**\r\n * Promise if an OffScreenContainer is closed\r\n * Method will be executed for each OffScreenContainer\r\n * @param { Object } $container - jQuery OffScreenContainer element\r\n * @returns { Promise<T> } - Promise\r\n * @private\r\n */\nfunction isOffScreenContainerClosed($container) {\n\treturn new _promise2.default(function (resolve) {\n\t\t$container.on('closed', function () {\n\t\t\tresolve($container);\n\t\t});\n\t});\n}\n\n/**\r\n * Promise if an OffScreenContainer is opened\r\n * Method will be executed for each OffScreenContainer\r\n * @param { Object } $container - jQuery OffScreenContainer element\r\n * @returns { Promise<T> } - Promise\r\n * @private\r\n */\nfunction isOffScreenContainerOpened($container) {\n\treturn new _promise2.default(function (resolve) {\n\t\t$container.on('opened', function () {\n\t\t\tresolve($container);\n\t\t});\n\t});\n}\n\n/**\r\n * Close OffScreenContainers and deactivate corresponding navItems\r\n * @param { jQuery } $navItem - jQuery object of navItems\r\n * @param { Array } controller - array of OffScreenContainer Controllers\r\n * @returns { void }\r\n * @private\r\n */\nfunction closeOffScreenContainer($navItem, controller) {\n\tvar self = this;\n\n\tif ($navItem.length > 0) {\n\n\t\tcheckForViewportAndExecute(enableScroll);\n\t\t//enableScroll.call( self );\n\n\t\t_fasterdom.fasterdomPromised.mutate(function () {\n\t\t\t$navItem.attr(_Selectors.SELECTORS.activeSelector, false).removeClass(_Selectors.SELECTORS.activeClass);\n\t\t\t$navItem.find('button').trigger('setInactive.offScreen');\n\t\t});\n\n\t\t$navItem.each(function (i, val) {\n\t\t\t_fasterdom.fasterdomPromised.mutate(function () {\n\t\t\t\tself.$body.removeClass(stateClasses[getIdentifier((0, _jquery2.default)(val))]);\n\t\t\t});\n\t\t});\n\n\t\tfor (var i = 0; i < controller.length; i++) {\n\t\t\tcontroller[i].close($navItem.eq(i).find('button'));\n\t\t}\n\t}\n}\n\n/**\r\n * Open OffScreenContainers and activate corresponding navItems\r\n * @param { jQuery } $navItem - jQuery object of navItems\r\n * @param { Array } controller - array of OffScreenContainer Controllers\r\n * @returns { void }\r\n * @private\r\n */\nfunction openOffScreenContainer($navItem, controller) {\n\tvar self = this;\n\n\tif ($navItem.length > 0) {\n\n\t\t_fasterdom.fasterdomPromised.mutate(function () {\n\t\t\t$navItem.attr(_Selectors.SELECTORS.activeSelector, true).addClass(_Selectors.SELECTORS.activeClass);\n\t\t\t$navItem.find('button').trigger('setActive.offScreen');\n\t\t});\n\n\t\t$navItem.each(function (i, val) {\n\t\t\t_fasterdom.fasterdomPromised.mutate(function () {\n\t\t\t\tself.$body.addClass(stateClasses[getIdentifier((0, _jquery2.default)(val))]);\n\t\t\t});\n\t\t});\n\n\t\tfor (var i = 0; i < controller.length; i++) {\n\t\t\tcontroller[i].open($navItem.eq(i).find('button'));\n\t\t}\n\n\t\tcheckForViewportAndExecute(disableScroll);\n\t\t/*fasterdom.onFrame( () => {\r\n disableScroll.call( self );\r\n }, 2 );*/\n\t}\n}\n\n/**\r\n * Checks which OffScreenContainers have to be closed or opened\r\n * @param { jQuery } $newActiveNavItem - jQuery object of navItems to be set active\r\n * @param { jQuery } $curActiveNavItems - jQuery object of current active navItems to be set inactive\r\n * @returns { void }\r\n * @private\r\n */\nfunction toggleOffScreenContainer($newActiveNavItem, $curActiveNavItems) {\n\tvar self = this,\n\t newActiveController = getController.call(self, $newActiveNavItem),\n\t newActiveContainer = getContainer.call(self, $newActiveNavItem),\n\t curActiveController = (0, _lodash4.default)(getController.call(self, $curActiveNavItems), newActiveController),\n\t curActiveContainer = (0, _lodash4.default)(getContainer.call(self, $curActiveNavItems), getContainer.call(self, $newActiveNavItem)),\n\t isSameContainer = (0, _lodash2.default)(getContainer.call(self, $curActiveNavItems), getContainer.call(self, $newActiveNavItem)).length > 0;\n\n\tif (_TargetGroupSelect2.default.isVisible) {\n\t\tcurActiveContainer.push(_TargetGroupSelect2.default.navContainer);\n\t}\n\n\tif (!self.isDisabled) {\n\t\tif (!isSameContainer) {\n\t\t\tself.isDisabled = true;\n\t\t}\n\n\t\t_promise2.default.all(curActiveContainer.map(isOffScreenContainerClosed)).then(function () {\n\t\t\tvar p = _promise2.default.all(newActiveContainer.map(isOffScreenContainerOpened));\n\n\t\t\topenOffScreenContainer.call(self, $newActiveNavItem, newActiveController);\n\n\t\t\treturn p;\n\t\t}).then(function () {\n\t\t\tself.isDisabled = false;\n\t\t}).catch();\n\n\t\tcloseOffScreenContainer.call(self, $curActiveNavItems, curActiveController);\n\n\t\tif (_TargetGroupSelect2.default.isVisible) {\n\t\t\t_TargetGroupSelect2.default.close();\n\t\t}\n\t}\n}\n\n/**\r\n * Returns a collection of currently active navItems\r\n * @returns { object|array } - collection of jQuery elements\r\n * @private\r\n */\nfunction getActiveNavItems() {\n\treturn this.$navItems.filter('[' + _Selectors.SELECTORS.activeSelector + '=\"' + _Selectors.SELECTORS.activeSelectorValue + '\"]');\n}\n\n/**\r\n * Sets all OffScreenContainers to be closed\r\n * @returns { void }\r\n * @private\r\n */\nfunction hideAllOffScreenContainer() {\n\tvar self = this;\n\n\ttoggleOffScreenContainer.call(self, (0, _jquery2.default)([]), getActiveNavItems.call(self));\n}\n\n/**\r\n * Add event listeners to quick-navigation buttons and OffScreenOverlay\r\n * @returns { void }\r\n * @private\r\n */\nfunction addHandler() {\n\tvar self = this;\n\n\t/**\r\n * open / close OffScreenContainers\r\n */\n\tself.$navItems.each(function (i, el) {\n\t\tvar $el = (0, _jquery2.default)(el);\n\n\t\t$el.on('click', 'button', function (e) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\n\t\t\tvar controls = e.currentTarget.getAttribute('aria-controls');\n\n\t\t\tif (controls && controls !== 'off-screen-cart') {\n\t\t\t\t_fasterdom.fasterdomPromised.measureInstant(function () {\n\t\t\t\t\tvar curActiveNavItems = self.$navItems.filter('[' + _Selectors.SELECTORS.activeSelector + '=\"' + _Selectors.SELECTORS.activeSelectorValue + '\"]'),\n\n\t\t\t\t\t// TODO: maybe check controller is active instad of element class?\n\t\t\t\t\tnewActiveNavItem = $el.hasClass(_Selectors.SELECTORS.activeClass) ? (0, _jquery2.default)([]) : $el;\n\n\t\t\t\t\ttoggleOffScreenContainer.call(self, newActiveNavItem, curActiveNavItems);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\n\t/**\r\n * Hide all OffScreenContainer while OffScreenOverly is clicked\r\n */\n\tself.offScreenOverlay.on('click', function (e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\thideAllOffScreenContainer.call(self);\n\t});\n\n\t/**\r\n * Hide all OffScreenContainer while OffScreenOverly is clicked\r\n */\n\tself.offScreenCloseBtn.on('click', function (e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\thideAllOffScreenContainer.call(self);\n\t});\n}\n\n/**\r\n * Selects all necessary OffScreen DOM-Elements and provides them on scope\r\n * Collects all OffScreenContainers in a single JQuery object\r\n * Initializes OffScreenContainer classes\r\n * @returns { void }\r\n * @private\r\n */\nfunction mapControllers() {\n\tvar _this = this;\n\n\tvar self = this;\n\n\tfor (var key in _Identifiers.IDENTIFIERS.OFF_SCREEN) {\n\n\t\tif (_Identifiers.IDENTIFIERS.OFF_SCREEN.hasOwnProperty(key) && key !== 'ROOT' && key !== 'OVERLAY' && key !== 'CONTENT' && key !== 'WRAP') {\n\t\t\t(function () {\n\n\t\t\t\tvar id = (0, _global.camelCaseSelector)(_Identifiers.IDENTIFIERS.OFF_SCREEN[key]);\n\n\t\t\t\tself[id] = (0, _jquery2.default)(_Identifiers.IDENTIFIERS.OFF_SCREEN[key]);\n\t\t\t\tself.offScreenContainer = self.offScreenContainer.add(self[id]);\n\n\t\t\t\tstateClasses[id] = 'state-' + _Identifiers.IDENTIFIERS.OFF_SCREEN[key].substr(1) + '-visible';\n\t\t\t\tcontrollerMap[id].init(self[id]);\n\n\t\t\t\tcontrollerMap[id].onOpen(function () {\n\t\t\t\t\t_fasterdom.fasterdomPromised.mutateInstant(function () {\n\t\t\t\t\t\t(0, _jquery2.default)(_Identifiers.IDENTIFIERS.MAIN_HEADER.ROOT).removeAttr('style');\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tif (controllerMap[id].initialOpen) {\n\t\t\t\t\tvar $navItem = _this.$navItems.find('button[aria-controls=' + _Identifiers.IDENTIFIERS.OFF_SCREEN[key].substr(1) + ']').parent(),\n\t\t\t\t\t controller = [controllerMap[id]];\n\n\t\t\t\t\t_Bucket2.default.$window.load(function (e) {\n\t\t\t\t\t\t_device.BreakpointService.breakpointEvent.subscribe(function (data) {\n\t\t\t\t\t\t\tconsole.log('ASDF', data, controller.isOpen);\n\t\t\t\t\t\t\tif (['xl', 'xxl'].includes(data.alias) && !controllerMap[id].isOpen) {\n\t\t\t\t\t\t\t\topenOffScreenContainer.call(_this, $navItem, controller);\n\t\t\t\t\t\t\t} else if (!['xl', 'xxl'].includes(data.alias) && controllerMap[id].isOpen) {\n\t\t\t\t\t\t\t\tcloseOffScreenContainer.call(_this, $navItem, controller);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})();\n\t\t}\n\t}\n}\n\n/**\r\n * Class handling the state of off-screen-menus.\r\n * Controls the state of the navigation.\r\n * Controls menu item behavior.\r\n * @extends { AbstractController }\r\n */\n\nvar OffScreenController = function (_AbstractController) {\n\t(0, _inherits3.default)(OffScreenController, _AbstractController);\n\n\tfunction OffScreenController() {\n\t\t(0, _classCallCheck3.default)(this, OffScreenController);\n\n\t\tvar _this2 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this2.$scope = null;\n\n\t\t_this2.$body = null;\n\t\t_this2.$navItems = null;\n\t\t_this2.$navButtons = null;\n\t\t_this2.offScreenOverlay = null;\n\t\t_this2.offScreenCloseBtn = null;\n\t\t_this2._isDisabled = false;\n\t\treturn _this2;\n\t}\n\n\t/**\r\n * Initialises the controller singleton.\r\n * Has to be called after ready event.\r\n * @param { jQuery } $root - jQuery wrapped DOM node\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tOffScreenController.prototype.init = function init($root) {\n\t\tvar self = this;\n\n\t\tself.$scope = $root;\n\n\t\tself.$body = (0, _jquery2.default)('body');\n\t\tself.$navItems = (0, _jquery2.default)(_Identifiers.IDENTIFIERS.QUICK_NAVIGATION.ROOT).find('[ role=\"menubar\" ] li');\n\t\tself.$navButtons = self.$navItems.find('button').not('[aria-controls=\"off-screen-cart\"]');\n\n\t\tself.offScreenOverlay = (0, _jquery2.default)(_Identifiers.IDENTIFIERS.OFF_SCREEN.OVERLAY);\n\t\tself.offScreenCloseBtn = self.$scope.find('.off-screen-close');\n\t\tself.offScreenContainer = (0, _jquery2.default)();\n\n\t\tmapControllers.call(self);\n\t\taddHandler.call(self);\n\n\t\t_Bucket2.default.controller.framework.offscreen = this;\n\t};\n\n\t/**\r\n * setter to disable quick navigation while animating\r\n * @param { Boolean } value - set active state value\r\n * @returns { void }\r\n * @public\r\n */\n\n\n\tOffScreenController.prototype.getActiveContainer = function getActiveContainer() {\n\t\treturn getContainer.call(this, getActiveNavItems.call(this));\n\t};\n\n\t// get isOverlay () {\n\t// \treturn this.offScreenOverlay.is( ':visible' );\n\t// }\n\t/**\r\n * Closes all OffScreenContainers\r\n * @returns { void }\r\n * @public\r\n */\n\tOffScreenController.prototype.close = function close() {\n\t\thideAllOffScreenContainer.call(this);\n\t};\n\n\t(0, _createClass3.default)(OffScreenController, [{\n\t\tkey: 'isDisabled',\n\t\tset: function set(value) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar action = value === true ? 'add' : 'remove';\n\n\t\t\t_fasterdom.fasterdomPromised.mutateInstant(function () {\n\t\t\t\t_this3.$scope[action + 'Class'](_Selectors.SELECTORS.disabled);\n\t\t\t});\n\t\t\tthis._isDisabled = value === true;\n\t\t}\n\n\t\t/**\r\n * Checks if OffScreen has style class disabled\r\n * @returns { Boolean } - if OffScreen is disabled\r\n * @public\r\n */\n\t\t,\n\t\tget: function get() {\n\t\t\treturn this._isDisabled;\n\t\t}\n\t}, {\n\t\tkey: 'isOpen',\n\t\tset: function set(is) {\n\t\t\tthis._isOpen = is === true;\n\t\t},\n\t\tget: function get() {\n\t\t\treturn getActiveNavItems.call(this).length > 0;\n\t\t}\n\t}]);\n\treturn OffScreenController;\n}(_AbstractController3.default);\n\n/**\r\n * @type { OffScreenController }\r\n * @private\r\n */\n\n\nvar instance = new OffScreenController(); // eslint-disable-line one-var\n\nexports.default = instance;\n\n/***/ }),\n/* 572 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(80);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _TransitionEvent = __webpack_require__(119);\n\nvar _TransitionEvent2 = _interopRequireDefault(_TransitionEvent);\n\nvar _Offscreen = __webpack_require__(571);\n\nvar _Offscreen2 = _interopRequireDefault(_Offscreen);\n\nvar _Bucket = __webpack_require__(125);\n\nvar _Bucket2 = _interopRequireDefault(_Bucket);\n\nvar _Selectors = __webpack_require__(124);\n\nvar _Identifiers = __webpack_require__(158);\n\nvar _device = __webpack_require__(54);\n\nvar _device2 = _interopRequireDefault(_device);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Promises if container element is closed\n * @param { jQuery } $container - jQuery element\n * @returns { Promise<T> } - Promise\n * @private\n */\nfunction promiseClosed($container) {\n\treturn new _promise2.default(function (resolve) {\n\t\t$container.on('closed', function () {\n\t\t\tresolve($container);\n\t\t});\n\t});\n}\n\n/**\n * Shows the TargetGroupSelect list\n * Closes all containers which have to be closed in first place\n * @returns { void }\n * @private\n */\nfunction showSelect() {\n\tvar self = this;\n\tvar openContainer = [];\n\n\tif (!self.disabled) {\n\t\tself.disabled = true;\n\n\t\tif (_Offscreen2.default.isOpen) {\n\t\t\topenContainer = openContainer.concat(_Offscreen2.default.getActiveContainer());\n\t\t}\n\n\t\t_promise2.default.all(openContainer.map(promiseClosed)).then(function () {\n\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\tself.$scope.addClass('container-expanded');\n\t\t\t\tself.navController.open();\n\t\t\t\tself.navContainer.addClass(_Selectors.SELECTORS.activeClass);\n\t\t\t});\n\t\t}).catch();\n\n\t\tif (_Offscreen2.default.isOpen) {\n\t\t\t_Offscreen2.default.close();\n\t\t}\n\t}\n}\n\n/**\n * Hides the TargetGroupSelect list\n * @returns { void }\n * @private\n */\nfunction hideSelect() {\n\tvar self = this;\n\n\tif (!self.disabled) {\n\t\tself.disabled = true;\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tself.$scope.removeClass('container-expanded');\n\t\t\tself.navController.close();\n\t\t\tself.navContainer.removeClass(_Selectors.SELECTORS.activeClass);\n\t\t});\n\t}\n}\n\n/**\n * Add event listeners to handle click events\n * @returns { void }\n * @private\n */\nfunction addHandler() {\n\tvar self = this;\n\n\tself.navTrigger.on('click', function (e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tif (self.isVisible) {\n\t\t\thideSelect.call(self);\n\t\t} else {\n\t\t\tshowSelect.call(self);\n\t\t}\n\t});\n\n\tself.navContainer.on('opened closed', function () {\n\t\tself.disabled = false;\n\t});\n\n\tself.navContainer.on('click', function () {\n\t\thideSelect.call(self);\n\t});\n\n\t_device2.default.breakpointEvent.subscribe(function () {\n\t\tself.navController.setTransition('transform');\n\t});\n}\n\n/**\n * Initializes the TransitionEventController for navContainer, mainHeader and OffScreenContent\n * @returns { void }\n */\nfunction initNavController() {\n\tvar self = this,\n\t controller = new _TransitionEvent2.default(),\n\t slaveContainer = self.$offScreenWrap;\n\n\tcontroller.init(self.navContainer);\n\tcontroller.setTransition('transform');\n\n\tcontroller.beforeOpen(function () {\n\t\tvar h = 0;\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\th = self.navContainer.outerHeight(true);\n\t\t});\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tslaveContainer.addClass('tgs--during-animation tgs--during-animation--open').css({\n\t\t\t\ttransform: 'translateY(' + h + 'px)'\n\t\t\t});\n\t\t});\n\t});\n\n\tcontroller.afterOpen(function () {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tself.navContainer.css({\n\t\t\t\tposition: 'relative'\n\t\t\t});\n\n\t\t\tslaveContainer.css({\n\t\t\t\ttransform: ''\n\t\t\t}).removeClass('tgs--during-animation tgs--during-animation--open');\n\t\t});\n\t});\n\n\tcontroller.beforeClose(function () {\n\t\tvar h = 0;\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\th = self.navContainer.outerHeight(true) * -1;\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tslaveContainer.css({\n\t\t\t\ttransform: 'translateY(' + h + 'px)'\n\t\t\t}).addClass('tgs--during-animation tgs--during-animation--close');\n\t\t});\n\t});\n\n\tcontroller.afterClose(function () {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tself.navContainer.css({\n\t\t\t\tposition: ''\n\t\t\t});\n\n\t\t\tslaveContainer.css({\n\t\t\t\ttransform: ''\n\t\t\t}).removeClass('tgs--during-animation tgs--during-animation--close');\n\t\t});\n\t});\n\n\tself.navController = controller;\n}\n\n/**\n * Class representing the main navigation menu.\n * Controls the state of the navigation.\n * Controls menu item behavior.\n * @extends { AbstractController }\n */\n\nvar TargetGroupSelectController = function (_AbstractController) {\n\t(0, _inherits3.default)(TargetGroupSelectController, _AbstractController);\n\n\tfunction TargetGroupSelectController() {\n\t\t(0, _classCallCheck3.default)(this, TargetGroupSelectController);\n\n\t\tvar _this = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this.navTrigger = null;\n\t\t_this.navButtons = null;\n\t\t_this.navContainer = null;\n\t\t_this.navController = null;\n\n\t\t_this.$offScreenContent = null;\n\t\t_this.$mainHeader = null;\n\n\t\t_this._isDisabled = false;\n\t\treturn _this;\n\t}\n\n\t/**\n * Initialises the controller singleton.\n * Has to be called after ready event.\n * @param { jQuery } $root - jQuery wrapped DOM node\n * @returns { void }\n * @public\n */\n\n\n\tTargetGroupSelectController.prototype.init = function init($root) {\n\t\tvar self = this;\n\n\t\t_AbstractController.prototype.init.call(this, $root);\n\n\t\tself.$scope = $root;\n\n\t\tself.$parent = self.$scope.parent();\n\t\tself.navTrigger = self.$scope.find('.target-group-select--trigger');\n\t\tself.navContainer = self.$scope.find('#target-group-select-list');\n\t\tself.navButtons = self.$scope.find('a');\n\n\t\tself.$offScreenContent = (0, _jquery2.default)(_Identifiers.IDENTIFIERS.OFF_SCREEN.CONTENT);\n\t\tself.$offScreenWrap = (0, _jquery2.default)(_Identifiers.IDENTIFIERS.OFF_SCREEN.WRAP);\n\t\tself.$mainHeader = (0, _jquery2.default)(_Identifiers.IDENTIFIERS.MAIN_HEADER.ROOT);\n\n\t\tinitNavController.call(self);\n\t\taddHandler.call(self);\n\t};\n\n\t/**\n * Dis/Enables TargetGroupSelect events\n * @param { boolean } is - flag to disable/enable events\n * @returns { void }\n * @public\n */\n\n\n\t/**\n * Close TargetGroupSelect\n * @returns { void }\n * @public\n */\n\tTargetGroupSelectController.prototype.close = function close() {\n\t\thideSelect.call(this);\n\t};\n\n\t(0, _createClass3.default)(TargetGroupSelectController, [{\n\t\tkey: 'disabled',\n\t\tset: function set(is) {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar action = is === true ? 'add' : 'remove';\n\n\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\t_this2.$scope[action + 'Class'](_Selectors.SELECTORS.disabled);\n\t\t\t});\n\t\t\tthis._isDisabled = is === true;\n\t\t}\n\n\t\t/**\n * Returns a boolean value representing if TargetGroupEvents are disabled or not\n * @returns { boolean } - are TargetGroupEvents disabled\n * @public\n */\n\t\t,\n\t\tget: function get() {\n\t\t\treturn this._isDisabled;\n\t\t}\n\n\t\t/**\n * Returns boolean value representing if TargetGroupSelect is currently visible or not\n * @returns { boolean } - is TargetGroupSelect visible\n * @public\n */\n\n\t}, {\n\t\tkey: 'isVisible',\n\t\tget: function get() {\n\t\t\treturn this.navController && this.navController.isOpen;\n\t\t}\n\t}]);\n\treturn TargetGroupSelectController;\n}(_Abstract2.default);\n\n/**\n * @private\n */\n\n\nvar instance = new TargetGroupSelectController(); // eslint-disable-line one-var\n\nexports.default = instance;\n\n/***/ }),\n/* 573 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.iFrameChildControllerInstance = undefined;\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _WindowGateway = __webpack_require__(118);\n\nvar _WindowGateway2 = _interopRequireDefault(_WindowGateway);\n\nvar _IframeChild = __webpack_require__(651);\n\nvar _IframeChild2 = _interopRequireDefault(_IframeChild);\n\nvar _url = __webpack_require__(652);\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar iFrameChildControllerInstance = new _IframeChild2.default();\n\nfunction waitForTimeout(msec) {\n\treturn new _promise2.default(function (resolve) {\n\t\treturn setTimeout(resolve, msec);\n\t});\n}\n\nfunction sendHandshake() {\n\tthis.logger.log('Sending handshake', this._uid);\n\tvar message = {\n\t\ttype: _IframeChild.EVENTS.HANDSHAKE,\n\t\tdata: {\n\t\t\torigin: window.location.origin,\n\t\t\thref: window.location.href,\n\t\t\tconnectionId: this._uid\n\t\t}\n\t};\n\n\tthis.gateway.sendToChild(this.$iFrame[0], message, '*');\n}\n\nfunction handshakeConfirmed(message) {\n\treturn message.type && message.type === _IframeChild.EVENTS.HANDSHAKE_CONFIRMED && message.connectionId === this._uid;\n}\n\nfunction stopPollTimer() {\n\tif (this.pollTimer !== null) {\n\t\tclearTimeout(this.pollTimer);\n\t\tthis.pollTimer = null;\n\t}\n}\n\nfunction pollWithHandshake() {\n\tvar _this = this;\n\n\tif (this.state.isHandshaked) {\n\t\treturn;\n\t}\n\n\tsendHandshake.call(this);\n\tstopPollTimer.call(this);\n\n\tthis.pollTimer = setTimeout(function () {\n\t\t_this.pollTimer = null;\n\t\tpollWithHandshake.call(_this);\n\t}, 250);\n}\n\nfunction waitForLoad() {\n\tvar _this2 = this;\n\n\tthis.$iFrame.on('load', function () {\n\t\tif (_this2.state.isHandshaked) {\n\t\t\treturn;\n\t\t}\n\t\tsendHandshake.call(_this2);\n\t});\n}\n\nfunction waitForHandshake() {\n\tvar _this3 = this;\n\n\tthis.handshakeConfirmedPromise = new _promise2.default(function (resolve, reject) {\n\t\t_this3.gateway.messageEvent.subscribe(function (message) {\n\t\t\tif (handshakeConfirmed.call(_this3, message)) {\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t});\n\n\twaitForLoad.call(this);\n\tpollWithHandshake.call(this);\n\n\treturn this.handshakeConfirmedPromise.then(function () {\n\t\t_this3.logger.log('Handshake confirmed', _this3._uid);\n\t\t_this3.state.isHandshaked = true;\n\t\tstopPollTimer.call(_this3);\n\t}).catch(this.logger.error);\n}\n\n/**\n * Set the respective iFrames height\n * @param {int} pxHeight - the height which was received in the data object via cross domain communication\n * @returns {void}\n */\nfunction setHeight(pxHeight) {\n\tvar _this4 = this;\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\treturn _this4.$iFrame.height(pxHeight);\n\t});\n}\n\n/**\n * Set the container state to loading.\n * @returns {void}\n */\nfunction setLoadingState() {\n\tvar _this5 = this;\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\t_this5.$scope.removeClass('iframe--loaded');\n\t\t_this5.$scope.addClass('iframe--loading');\n\t});\n}\n\n/**\n * Handle the iFrame load event.\n * @returns {void}\n */\nfunction handleLoad() {\n\tvar _this6 = this;\n\n\tthis.logger.log('iframe loaded');\n\tstopPollTimer.call(this);\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\t_this6.$scope.removeClass('iframe--loading');\n\t\t_this6.$scope.addClass('iframe--loaded');\n\t});\n}\n\nfunction attachLoadHandler() {\n\tvar _this7 = this;\n\n\t_promise2.default.race([waitForHandshake.call(this), waitForTimeout.call(this, 2000)]).then(handleLoad.bind(this)).catch(function (e) {\n\t\treturn _this7.logger.log(e);\n\t});\n}\n\n/**\n * Set the height of the current iFrame with the height received from the message\n * @param {iFrameMessage} message - the post message which was received\n * @returns {void}\n */\nfunction receiveMessage(message) {\n\n\tif (!message.type || message.connectionId !== this._uid) {\n\t\treturn;\n\t}\n\n\tswitch (message.type) {\n\n\t\tcase _IframeChild.EVENTS.RESIZE:\n\n\t\t\tif (message.data.height) {\n\t\t\t\tsetHeight.call(this, message.data.height);\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase _IframeChild.EVENTS.LOAD:\n\n\t\t\tif (message.connectionId === this._uid) {\n\t\t\t\t//TBD\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase _IframeChild.EVENTS.UNLOAD:\n\t\t\tthis.state.isHandshaked = false;\n\t\t\tattachLoadHandler.call(this);\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Class representing an iframe instance.\n * Controls the state of the iframe.\n * Controls menu item behavior.\n * @extends { AbstractController }\n */\n\nvar IFrameController = function (_AbstractController) {\n\t(0, _inherits3.default)(IFrameController, _AbstractController);\n\n\tfunction IFrameController() {\n\t\t(0, _classCallCheck3.default)(this, IFrameController);\n\n\t\tvar _this8 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this8.debug = false;\n\t\t_this8.pollTimer = null;\n\t\t_this8._uid = Object._uid(_this8);\n\t\t_this8.gateway = new _WindowGateway2.default();\n\t\treturn _this8;\n\t}\n\n\t/**\n * Initialiss the controller.\n * Has to be called after ready event.\n *\n * @override\n * @param { object } $root - jQuery wrapped DOM node\n * @public\n */\n\n\n\tIFrameController.prototype.init = function init($root) {\n\n\t\tthis.$scope = $root;\n\t\tthis.$iFrame = this.$scope.find('iframe');\n\t\tthis.src = this.$iFrame.attr('src');\n\n\t\tsetLoadingState.call(this, this);\n\t\tattachLoadHandler.call(this);\n\n\t\tthis.gateway.messageEvent.subscribe(receiveMessage.bind(this));\n\t};\n\n\treturn IFrameController;\n}(_Abstract2.default);\n\nexports.default = IFrameController;\nexports.iFrameChildControllerInstance = iFrameChildControllerInstance;\n\n/***/ }),\n/* 574 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _assign = __webpack_require__(116);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _ACCItem = __webpack_require__(660);\n\nvar _ACCItem2 = _interopRequireDefault(_ACCItem);\n\nvar _signal = __webpack_require__(96);\n\nvar _signal2 = _interopRequireDefault(_signal);\n\nvar _device = __webpack_require__(54);\n\nvar _device2 = _interopRequireDefault(_device);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar defaultOptions = {\n\titemSelector: '> ul > .accordion-item, > ol > .accordion-item',\n\titemTrigger: '> section > .accordion-item__headline',\n\tscrollOnInitialOpen: false,\n\tscrollOnOpen: true,\n\tmultiExpandable: false,\n\tdesktopExpanded: false,\n\tmobileExpanded: false,\n\tmobileOnly: false\n};\n\n/**\n * Binds event handler to the current scope\n * @private\n * @return { void }\n */\nfunction addHandler() {\n\tvar _this = this;\n\n\tvar self = this;\n\n\tself.$items.each(function (i, v) {\n\t\tvar $this = (0, _jquery2.default)(v),\n\t\t controllerInstance = new _ACCItem2.default();\n\n\t\tcontrollerInstance.init($this, _this.options);\n\t\tself.subController.push(controllerInstance);\n\n\t\t// TODO: t.kiss refactor!!!\n\t\t_device2.default.breakpointEvent.subscribe(function (e) {\n\n\t\t\tif (self.options.desktopExpanded && ['lg', 'xl', 'xxl'].includes(e.alias) || self.options.mobileExpanded && ['sm', 'md'].includes(e.alias)) {\n\n\t\t\t\t_fasterdom2.default.onFrameInstant(function () {\n\t\t\t\t\tcontrollerInstance.openSilent();\n\n\t\t\t\t\tself._closeOpen.add(function () {\n\t\t\t\t\t\tcontrollerInstance.close($this);\n\t\t\t\t\t}, '_', true);\n\t\t\t\t}, 2);\n\t\t\t}\n\t\t});\n\n\t\tcontrollerInstance.onOpen(function () {\n\t\t\tif (self.$scope.hasClass('item--opened') && self.options.multiExpandable) {\n\t\t\t\tself.$scope.addClass('items--opened');\n\t\t\t} else {\n\t\t\t\tself.$scope.addClass('item--opened');\n\t\t\t}\n\t\t});\n\n\t\tcontrollerInstance.afterClose(function () {\n\t\t\t_fasterdom2.default.measure(function () {\n\t\t\t\tvar curOpen = self.$items.filter('[aria-expanded=true]').length;\n\n\t\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\t\tif (curOpen === 1) {\n\t\t\t\t\t\tself.$scope.removeClass('items--opened');\n\t\t\t\t\t}\n\t\t\t\t\tif (curOpen === 0) {\n\t\t\t\t\t\tself.$scope.removeClass('item--opened');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\t$this.on('click', _this.options.itemTrigger, function (e) {\n\t\t\tif (controllerInstance.isDisabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar $t = (0, _jquery2.default)(_this);\n\n\t\t\tcontrollerInstance._initial = false;\n\t\t\tcontrollerInstance._userInitiated = true;\n\n\t\t\tif (!self.options.multiExpandable) {\n\t\t\t\tself._closeOpen.dispatch();\n\t\t\t} else {\n\t\t\t\tcontrollerInstance.close($t);\n\t\t\t}\n\n\t\t\tif (!controllerInstance.isOpen) {\n\t\t\t\tcontrollerInstance.open($t);\n\t\t\t\tself._closeOpen.add(function () {\n\t\t\t\t\tcontrollerInstance.close($t);\n\t\t\t\t}, '_', true);\n\t\t\t}\n\t\t});\n\n\t\t_fasterdom2.default.onFrameInstant(function () {\n\n\t\t\tif (controllerInstance.isOpen) {\n\n\t\t\t\tself._closeOpen.add(function () {\n\t\t\t\t\tcontrollerInstance.close($this);\n\t\t\t\t}, '_', true);\n\t\t\t}\n\t\t}, 2);\n\n\t\tcontrollerInstance.subscribeHeight(self.childHeight.bind(self));\n\t});\n}\n\nfunction removeHandler() {\n\tif (this.$items) {\n\t\tthis.$items.each(function (i, v) {\n\t\t\tvar $this = (0, _jquery2.default)(v);\n\n\t\t\t$this.off('click');\n\t\t});\n\t}\n}\n\n/**\n * Class representing an accordion instance.\n * Controls the state of the accordion.\n * Controls menu item behavior.\n * @extends { AbstractController }\n */\n\nvar ACCController = function (_AbstractController) {\n\t(0, _inherits3.default)(ACCController, _AbstractController);\n\n\tfunction ACCController() {\n\t\t(0, _classCallCheck3.default)(this, ACCController);\n\n\t\tvar _this2 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this2.$scope = null;\n\n\t\t_this2._closeOpen = new _signal2.default();\n\t\t_this2.isInitiated = false;\n\t\treturn _this2;\n\t}\n\n\t/**\n * Initialises the controller.\n * Has to be called after ready event.\n *\n * @public\n * @param {jQuery} $root jQuery wrapped DOM node\n * @param {Object} [options={}] Options to use on ACC Instance\n * @return { void }\n */\n\n\n\tACCController.prototype.init = function init($root) {\n\t\tvar _this3 = this;\n\n\t\tvar options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tif ($root.data('noJs') || $root.data('nojs')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$scope = $root;\n\t\tthis.scope = $root[0];\n\n\t\tvar optionsViaClass = {\n\t\t\tmultiExpandable: this.scope.classList.contains('acc--multi-expandable'),\n\t\t\tdesktopExpanded: this.scope.classList.contains('acc--desktop-expanded'),\n\t\t\tmobileExpanded: this.scope.classList.contains('acc--mobile-expanded'),\n\t\t\tmobileOnly: this.scope.classList.contains('acc--mobile-only')\n\t\t};\n\n\t\tthis.options = (0, _assign2.default)({}, defaultOptions, optionsViaClass, options);\n\n\t\tthis.$items = this.$scope.find(this.options.itemSelector);\n\t\tthis.subController = [];\n\n\t\taddHandler.call(this);\n\n\t\tif (this.options.mobileOnly) {\n\t\t\t_device2.default.breakpointEvent.subscribe(function (e) {\n\t\t\t\tif (['sm', 'md'].includes(e.alias)) {\n\t\t\t\t\t_this3.enable();\n\t\t\t\t} else {\n\t\t\t\t\t// this.options.scrollOnOpen = false;\n\t\t\t\t\t_this3.disable();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\t/**\n * Disables the accordion logic and expands all items\n * @returns {void}\n */\n\n\n\tACCController.prototype.disable = function disable() {\n\t\tthis._closeOpen.clear();\n\t\tthis._isDisabled = true;\n\n\t\tthis.subController.map(function (instance) {\n\t\t\tinstance.disable();\n\t\t\treturn instance;\n\t\t});\n\t};\n\n\t/**\n * Enables the accordion logic and collapses all items\n * @returns {void}\n */\n\n\n\tACCController.prototype.enable = function enable() {\n\t\tthis._closeOpen.clear();\n\t\tthis._isDisabled = false;\n\n\t\tthis.subController.map(function (instance) {\n\t\t\tinstance.enable();\n\t\t\treturn instance;\n\t\t});\n\t};\n\n\tACCController.prototype.childHeight = function childHeight(h) {};\n\n\tACCController.prototype.reInit = function reInit() {\n\t\tremoveHandler.call(this);\n\n\t\tthis.subController.forEach(function (controller) {\n\t\t\tcontroller = controller.destroy();\n\t\t});\n\n\t\tthis.subController = [];\n\n\t\tthis.init(this.$scope, this.options);\n\t};\n\n\treturn ACCController;\n}(_Abstract2.default);\n\nexports.default = ACCController;\n\n/***/ }),\n/* 575 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar AsyncAction_1 = __webpack_require__(665);\nvar AsyncScheduler_1 = __webpack_require__(667);\n/**\n *\n * Async Scheduler\n *\n * <span class=\"informal\">Schedule task as if you used setTimeout(task, duration)</span>\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asap} scheduler.\n *\n * @example <caption>Use async scheduler to delay task</caption>\n * const task = () => console.log('it works!');\n *\n * Rx.Scheduler.async.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n *\n *\n * @example <caption>Use async scheduler to repeat task in intervals</caption>\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * Rx.Scheduler.async.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n *\n * @static true\n * @name async\n * @owner Scheduler\n */\nexports.async = new AsyncScheduler_1.AsyncScheduler(AsyncAction_1.AsyncAction);\n//# sourceMappingURL=async.js.map\n\n/***/ }),\n/* 576 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar OuterSubscriber_1 = __webpack_require__(566);\nvar subscribeToResult_1 = __webpack_require__(563);\nexports.defaultThrottleConfig = {\n leading: true,\n trailing: false\n};\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for a duration determined by another Observable, then repeats this\n * process.\n *\n * <span class=\"informal\">It's like {@link throttleTime}, but the silencing\n * duration is determined by a second Observable.</span>\n *\n * <img src=\"./img/throttle.png\" width=\"100%\">\n *\n * `throttle` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled by calling the `durationSelector` function with the source value,\n * which returns the \"duration\" Observable. When the duration Observable emits a\n * value or completes, the timer is disabled, and this process repeats for the\n * next source value.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.throttle(ev => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration for each source value, returned as an Observable or a Promise.\n * @param {Object} config a configuration object to define `leading` and `trailing` behavior. Defaults\n * to `{ leading: true, trailing: false }`.\n * @return {Observable<T>} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttle\n * @owner Observable\n */\nfunction throttle(durationSelector, config) {\n if (config === void 0) { config = exports.defaultThrottleConfig; }\n return function (source) { return source.lift(new ThrottleOperator(durationSelector, config.leading, config.trailing)); };\n}\nexports.throttle = throttle;\nvar ThrottleOperator = (function () {\n function ThrottleOperator(durationSelector, leading, trailing) {\n this.durationSelector = durationSelector;\n this.leading = leading;\n this.trailing = trailing;\n }\n ThrottleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing));\n };\n return ThrottleOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc\n * @ignore\n * @extends {Ignored}\n */\nvar ThrottleSubscriber = (function (_super) {\n __extends(ThrottleSubscriber, _super);\n function ThrottleSubscriber(destination, durationSelector, _leading, _trailing) {\n _super.call(this, destination);\n this.destination = destination;\n this.durationSelector = durationSelector;\n this._leading = _leading;\n this._trailing = _trailing;\n this._hasTrailingValue = false;\n }\n ThrottleSubscriber.prototype._next = function (value) {\n if (this.throttled) {\n if (this._trailing) {\n this._hasTrailingValue = true;\n this._trailingValue = value;\n }\n }\n else {\n var duration = this.tryDurationSelector(value);\n if (duration) {\n this.add(this.throttled = subscribeToResult_1.subscribeToResult(this, duration));\n }\n if (this._leading) {\n this.destination.next(value);\n if (this._trailing) {\n this._hasTrailingValue = true;\n this._trailingValue = value;\n }\n }\n }\n };\n ThrottleSubscriber.prototype.tryDurationSelector = function (value) {\n try {\n return this.durationSelector(value);\n }\n catch (err) {\n this.destination.error(err);\n return null;\n }\n };\n ThrottleSubscriber.prototype._unsubscribe = function () {\n var _a = this, throttled = _a.throttled, _trailingValue = _a._trailingValue, _hasTrailingValue = _a._hasTrailingValue, _trailing = _a._trailing;\n this._trailingValue = null;\n this._hasTrailingValue = false;\n if (throttled) {\n this.remove(throttled);\n this.throttled = null;\n throttled.unsubscribe();\n }\n };\n ThrottleSubscriber.prototype._sendTrailing = function () {\n var _a = this, destination = _a.destination, throttled = _a.throttled, _trailing = _a._trailing, _trailingValue = _a._trailingValue, _hasTrailingValue = _a._hasTrailingValue;\n if (throttled && _trailing && _hasTrailingValue) {\n destination.next(_trailingValue);\n this._trailingValue = null;\n this._hasTrailingValue = false;\n }\n };\n ThrottleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this._sendTrailing();\n this._unsubscribe();\n };\n ThrottleSubscriber.prototype.notifyComplete = function () {\n this._sendTrailing();\n this._unsubscribe();\n };\n return ThrottleSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=throttle.js.map\n\n/***/ }),\n/* 577 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar IDENTIFIERS = exports.IDENTIFIERS = {\n\tDATEPICKER: {\n\t\tROOT: '[data-element=datepicker]'\n\t},\n\tVALUE_SLIDER: {\n\t\tROOT: '[data-tpl=valueSlider]'\n\t},\n\tAUTOCOMPLETE: {\n\t\tROOT: '.autocomplete'\n\t},\n\tTOGGLE_SWITCH: {\n\t\tROOT: '[data-element=toggle-switch]',\n\t\tLABEL: '[data-element=toggle-switch] label'\n\t}\n};\n\n/***/ }),\n/* 578 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _assign = __webpack_require__(116);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/***/ }),\n/* 579 */,\n/* 580 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(101)))\n\n/***/ }),\n/* 581 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _clickoutside = __webpack_require__(554);\n\nvar _clickoutside2 = _interopRequireDefault(_clickoutside);\n\nvar _Identifiers = __webpack_require__(271);\n\nvar _Selectors = __webpack_require__(124);\n\nvar _Identifiers2 = __webpack_require__(158);\n\nvar _device = __webpack_require__(54);\n\nvar _device2 = _interopRequireDefault(_device);\n\nvar _lodash = __webpack_require__(580);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * closes tooltip\r\n * @returns {boolean} - updated\r\n */\nfunction close() {\n\tvar _this = this;\n\n\tif (!this.isOpen) {\n\t\treturn false;\n\t}\n\n\tthis.logger.log('Close');\n\n\tif (this.clickoutside && this.clickoutside.active) {\n\t\tthis.clickoutside.destroy();\n\t}\n\n\t_fasterdom2.default.mutate(function () {\n\t\t_this.$root.attr(_Selectors.SELECTORS.expandedSelector, null);\n\t\t_this.isOpen = false;\n\t});\n\n\tif (this.scroll.enabled && this.scroll.history) {\n\t\t_device.ScrollService.toPosition(this.scroll.history, { animated: true });\n\t}\n\n\treturn true;\n}\n\n/**\r\n * handles click on close button\r\n * @param {object} e - click event\r\n * @returns {void}\r\n */\nfunction handleCloseClick(e) {\n\te.preventDefault();\n\te.stopImmediatePropagation();\n\n\tclose.call(this);\n}\n\n/**\r\n * handles click outside tooltip\r\n * @param {object} e - click outside event\r\n * @returns {void}\r\n */\nfunction handleClickOutside(e) {\n\tclose.call(this);\n}\n\n/**\r\n * opens tooltip\r\n * @returns {boolean} - updated\r\n */\nfunction open() {\n\tvar _this2 = this;\n\n\tif (this.isOpen) {\n\t\treturn false;\n\t}\n\tthis.logger.log('Open');\n\n\t_fasterdom2.default.measure(function () {\n\t\treturn _this2.$close.on('click', handleCloseClick.bind(_this2));\n\t});\n\n\tif (this.scroll.enabled) {\n\t\t_device.ScrollService.getCurrent().then(function (position) {\n\t\t\treturn _this2.scroll.history = position;\n\t\t}).then(_device.ScrollService.toElement(this.$root));\n\t}\n\n\t_fasterdom2.default.mutate(function () {\n\t\t// this.$root.addClass( 'open' );\n\t\t_this2.$root.attr(_Selectors.SELECTORS.expandedSelector, '');\n\t\t_this2.isOpen = true;\n\t});\n\n\tthis.clickoutside = new _clickoutside2.default(this.$root, handleClickOutside.bind(this));\n\n\treturn true;\n}\n\n/**\r\n * handles click on tooltip trigger\r\n * @param {object} e - click event\r\n * @returns {void}\r\n */\nfunction handleTriggerClick(e) {\n\tthis.logger.log('Trigger Clicked');\n\te.preventDefault();\n\n\tif (this.isOpen) {\n\t\tclose.call(this);\n\t} else {\n\t\topen.call(this);\n\t}\n}\n\n/**\r\n * @private\r\n * @returns { void }\r\n */\nfunction addHandler() {\n\n\tthis.$close.on('click', handleCloseClick.bind(this));\n\tthis.$trigger.on('click', handleTriggerClick.bind(this));\n\t_device2.default.resizeEvent.subscribe((0, _lodash2.default)(this.calculateHorizontalPositioning.bind(this), 250));\n\t_device2.default.scrollEvent.subscribe((0, _lodash2.default)(this.calculateVerticalPositioning.bind(this), 250));\n}\n\n/**\r\n * Class representing an languageswitch (LAS01)\r\n * @extends { AbstractController }\r\n */\n\nvar TooltipController = function (_AbstractController) {\n\t(0, _inherits3.default)(TooltipController, _AbstractController);\n\n\tfunction TooltipController() {\n\t\t(0, _classCallCheck3.default)(this, TooltipController);\n\n\t\tvar _this3 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this3.debug = false;\n\t\treturn _this3;\n\t}\n\n\t/**\r\n * Initialises the controller.\r\n * Has to be called after ready event.\r\n *\r\n * @param { jQuery } $root - jQuery wrapped DOM node\r\n * @public\r\n * @return { TooltipController } instance\r\n */\n\n\n\tTooltipController.prototype.init = function init($root) {\n\t\tvar _this4 = this;\n\n\t\tif ($root.data('noJs')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.logger.log('Init');\n\t\tthis.$root = $root;\n\t\tthis.isOpen = false;\n\n\t\tthis.scroll = {\n\t\t\tenabled: true,\n\t\t\thistory: false\n\t\t};\n\n\t\t_fasterdom2.default.measure(function () {\n\t\t\t_this4.offScreenContent = (0, _jquery2.default)(_Identifiers2.IDENTIFIERS.OFF_SCREEN.CONTENT);\n\t\t\t_this4.$close = _this4.$root.find(_Identifiers.IDENTIFIERS.TOOLTIP.CLOSE);\n\t\t\t_this4.$container = _this4.$root.find(_Identifiers.IDENTIFIERS.TOOLTIP.CONTAINER);\n\t\t\t_this4.$trigger = _this4.$root.find(_Identifiers.IDENTIFIERS.TOOLTIP.TRIGGER);\n\t\t\taddHandler.call(_this4);\n\t\t});\n\n\t\treturn this;\n\t};\n\n\t/**\r\n * calculates horizontal dimensions of tooltip container\r\n * @param {object} e - breakpoint event\r\n * @returns {void}\r\n */\n\n\n\tTooltipController.prototype.calculateHorizontalPositioning = function calculateHorizontalPositioning(e) {\n\t\tvar _this5 = this;\n\n\t\tvar leftOffset = void 0;\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\tleftOffset = _this5.$root.offset().left;\n\t\t\tif (!_this5.$root.is(':visible')) {\n\t\t\t\twindow.setTimeout(function () {\n\t\t\t\t\t_device.ResizeService.getCurrent().then(_this5.calculateHorizontalPositioning.bind(_this5));\n\t\t\t\t}, 200);\n\t\t\t}\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\n\t\t\t// if < 1/3 vw\n\t\t\tif (leftOffset < e.width / 3) {\n\t\t\t\t_this5.$root.addClass('tooltip--left').removeClass('tooltip--center tooltip--right');\n\t\t\t}\n\n\t\t\t// if > 2/3 vw\n\t\t\tif (leftOffset > e.width / 1.5) {\n\t\t\t\t_this5.$root.addClass('tooltip--right').removeClass('tooltip--center tooltip--left');\n\t\t\t}\n\n\t\t\t// if > 1/3 vw && < 2/3 vw\n\t\t\tif (leftOffset > e.width / 3 && leftOffset < e.width / 1.5) {\n\t\t\t\t_this5.$root.addClass('tooltip--center').removeClass('tooltip--left tooltip--right');\n\t\t\t}\n\t\t});\n\t};\n\n\t/**\r\n * calculates vertical dimensions of tooltip container\r\n * @param {object} e - breakpoint event\r\n * @returns {void}\r\n */\n\n\n\tTooltipController.prototype.calculateVerticalPositioning = function calculateVerticalPositioning(e) {\n\t\tvar _this6 = this;\n\n\t\tvar topOffset = void 0,\n\t\t scrollTop = void 0,\n\t\t placeAbove = void 0,\n\t\t containerHeight = void 0;\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\ttopOffset = _this6.$root.offset().top;\n\t\t\tscrollTop = e.y;\n\t\t\tplaceAbove = topOffset - scrollTop - _this6.offScreenContent ? _this6.offScreenContent.offset().top : 0;\n\t\t\tcontainerHeight = _this6.$container.outerHeight();\n\n\t\t\tif (!_this6.$root.is(':visible')) {\n\t\t\t\twindow.setTimeout(function () {\n\t\t\t\t\t_device.ScrollService.getCurrent().then(_this6.calculateVerticalPositioning.bind(_this6));\n\t\t\t\t}, 200);\n\t\t\t}\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tif (placeAbove > containerHeight) {\n\t\t\t\t_this6.$root.addClass('tooltip--top').removeClass('tooltip--bottom');\n\t\t\t} else {\n\t\t\t\t_this6.$root.addClass('tooltip--bottom').removeClass('tooltip--top');\n\t\t\t}\n\t\t});\n\t};\n\n\treturn TooltipController;\n}(_Abstract2.default);\n\nexports.default = TooltipController;\n\n/***/ }),\n/* 582 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _assign = __webpack_require__(116);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nexports.default = mixins;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction mixins() {\n\tfor (var _len = arguments.length, which = Array(_len), _key = 0; _key < _len; _key++) {\n\t\twhich[_key] = arguments[_key];\n\t}\n\n\treturn function (target) {\n\t\t_assign2.default.apply(Object, [target.prototype].concat(which));\n\t};\n}\n\n/***/ }),\n/* 583 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _frontendLogger = __webpack_require__(126);\n\nvar _frontendLogger2 = _interopRequireDefault(_frontendLogger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * Instantiates a module with a given config\r\n * @private\r\n * @param {BaseModule} Module\r\n * @param {moduleConfig} moduleConfig\r\n */\nfunction _launch(moduleConfig, Module) {\n\n\treturn new Module(moduleConfig).init();\n}\n\nfunction _notFound(message) {\n\n\t_frontendLogger2.default.warn(message);\n}\n\n/**\r\n * Fetches a module from the ModuleRepository and executes it.\r\n * @param {ModuleRepository} ModuleRepository\r\n * @param {moduleConfig} moduleConfig\r\n * @private\r\n */\nfunction _load(ModuleRepository, moduleConfig) {\n\n\tModuleRepository.getModuleForIdentifier(moduleConfig).then(_launch.bind(this, moduleConfig), _notFound).catch(function (e) {\n\t\treturn console.warn('module launch failed', e);\n\t});\n}\n\nvar ModuleLoader = function () {\n\tfunction ModuleLoader() {\n\t\t(0, _classCallCheck3.default)(this, ModuleLoader);\n\t}\n\n\t/**\r\n * Async fetches additional modules for components found in the DOM\r\n * @param {ModuleRepository} ModuleRepository\r\n * @param {Array<moduleConfig>} modules - Array containing component Identifiers\r\n */\n\tModuleLoader.loadDependencies = function loadDependencies(ModuleRepository, modules) {\n\n\t\tmodules.map(_load.bind(this, ModuleRepository));\n\t};\n\n\treturn ModuleLoader;\n}();\n\nexports.default = ModuleLoader;\n\n/***/ }),\n/* 584 */\n/***/ (function(module, exports) {\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\n\nmodule.exports = function debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n\n/***/ }),\n/* 585 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n/***/ }),\n/* 586 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _typeof2 = __webpack_require__(81);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _keys = __webpack_require__(102);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _Debug = __webpack_require__(205);\n\nvar _Debug2 = _interopRequireDefault(_Debug);\n\nvar _WindowGateway = __webpack_require__(118);\n\nvar _WindowGateway2 = _interopRequireDefault(_WindowGateway);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar debugInstance = new _Debug2.default(),\n logger = debugInstance.debugLocal(false, 'ComponentLauncher', false);\n// import SnowFlakes from './../elements/controller/SnowFlakes.controller';\n\n// import 'imports?jQuery=jquery!./../helper/jquery.let_it_snow';\n\nfunction sortCacheDeps(deps) {\n\tvar unsorted = [];\n\n\t(0, _keys2.default)(deps).forEach(function (identifier) {\n\t\tif (deps.hasOwnProperty(identifier)) {\n\t\t\tvar $elements = (0, _jquery2.default)(identifier),\n\t\t\t InitializeClass = deps[identifier];\n\n\t\t\tif ($elements.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tunsorted.push({\n\t\t\t\t$elements: $elements,\n\t\t\t\tinitialize: function createInstance() {\n\t\t\t\t\tvar controllerInstance = new InitializeClass();\n\n\t\t\t\t\tcontrollerInstance.init((0, _jquery2.default)(this), (0, _jquery2.default)(this).data('config'));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\treturn unsorted.sort(function (a, b) {\n\t\tvar offsetA = a.$elements.offset().top,\n\t\t offsetB = b.$elements.offset().top;\n\n\t\tif (offsetA < offsetB) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (offsetA > offsetB) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t});\n}\n\nfunction receiveInit(deps, message) {\n\tlogger.log('message event received after ready:', message);\n\n\tif (message.type === 'init' && message.data.hasOwnProperty('id')) {\n\t\tvar $elem = (0, _jquery2.default)('#' + message.data.id);\n\n\t\tif (!$elem.length) {\n\t\t\treturn;\n\t\t}\n\n\t\t(0, _keys2.default)(deps).forEach(function (identifier) {\n\t\t\tif (deps.hasOwnProperty(identifier) && $elem.is(identifier)) {\n\t\t\t\tvar InitializeClass = deps[identifier],\n\t\t\t\t controllerInstance = new InitializeClass();\n\n\t\t\t\tcontrollerInstance.init($elem, $elem.data('config'));\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Class wrapping all framework features. Controls events for navigation, quick-navigation etc.\n * Is used as a singleton.\n */\n\nvar ComponentLauncher = function () {\n\tfunction ComponentLauncher() {\n\t\t(0, _classCallCheck3.default)(this, ComponentLauncher);\n\t}\n\n\t/**\n * Initialises the controller singleton.\n * Has to be called after ready event.\n * @public\n * @return { void }\n */\n\tComponentLauncher.prototype.init = function init() {};\n\n\t/**s\n * Loads the dependencies for the components\n * Has to be called after ready event.\n * @public\n * @return { void }\n */\n\n\n\tComponentLauncher.launchDependencies = function launchDependencies(deps) {\n\t\tif ((typeof deps === 'undefined' ? 'undefined' : (0, _typeof3.default)(deps)) !== 'object') {\n\t\t\tthrow new Error('Cannot launch dependencies');\n\t\t}\n\n\t\tvar sorted = sortCacheDeps(deps);\n\n\t\tsorted.forEach(function (obj) {\n\t\t\t_jquery2.default.each(obj.$elements, obj.initialize);\n\t\t});\n\n\t\tthis.windowGateway = new _WindowGateway2.default();\n\t\tthis.windowGateway.messageEvent.subscribe(receiveInit.bind(this, deps));\n\n\t\t// Object.keys( deps ).forEach( identifier => {\n\t\t// \tlogger.log( 'Try Initializing:', identifier );\n\t\t// \tif ( deps.hasOwnProperty( identifier ) ) {\n\t\t// \t\t$.each( $( identifier ), function createInstance () {\n\t\t// \t\t\tlogger.log( 'Initializing:', identifier );\n\t\t// \t\t\tconst controllerInstance = new deps[ identifier ]();\n\n\t\t// \t\t\tcontrollerInstance.init( $( this ) );\n\t\t// \t\t} );\n\t\t// \t}\n\t\t// } );\n\n\t\t// should only snow between 2016-12-15 and 2017-01-02\n\t\t// const snowingDates = {\n\t\t// \tstart : new Date( 2016, 11, 15 ),\n\t\t// \tend : new Date( 2017, 0, 3 )\n\t\t// };\n\t\t//snowingEnabledElement = document.querySelector( 'meta[name=\"snowflakes\"]' ),\n\t\t//snowingEnabled = snowingEnabledElement && snowingEnabledElement.getAttribute( 'value' ) === 'true' ? true : false;\n\n\t\t// if ( new Date().getTime() < snowingDates.end.getTime() ) {\n\t\t// \tSnowFlakes.initFor( IDENTIFIERS.SNOWFALL );\n\t\t// }\n\t};\n\n\tComponentLauncher.launchSingletonDependencies = function launchSingletonDependencies(deps) {\n\t\tif ((typeof deps === 'undefined' ? 'undefined' : (0, _typeof3.default)(deps)) !== 'object') {\n\t\t\tthrow new Error('Cannot launch singleton dependencies');\n\t\t}\n\n\t\t(0, _keys2.default)(deps).forEach(function (identifier) {\n\t\t\tlogger.log('Try Initializing Singleton:', identifier);\n\t\t\tvar $elements = (0, _jquery2.default)(identifier);\n\n\t\t\tif (deps.hasOwnProperty(identifier) && $elements.length > 0) {\n\t\t\t\tlogger.log('Initializing Singleton:', identifier);\n\t\t\t\tdeps[identifier].init($elements);\n\t\t\t}\n\t\t});\n\t};\n\n\treturn ComponentLauncher;\n}();\n\nexports.default = ComponentLauncher;\n\n/***/ }),\n/* 587 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _ModuleIdentifier = __webpack_require__(684);\n\nvar _ModuleIdentifier2 = _interopRequireDefault(_ModuleIdentifier);\n\nvar _BaseModule = __webpack_require__(590);\n\nvar _BaseModule2 = _interopRequireDefault(_BaseModule);\n\nvar _Module = __webpack_require__(695);\n\nvar SplitPoints = _interopRequireWildcard(_Module);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @extends {BaseModuleRepository}\n */\nvar ModuleRepository = function (_BaseModuleRepository) {\n\t\t(0, _inherits3.default)(ModuleRepository, _BaseModuleRepository);\n\n\t\tfunction ModuleRepository() {\n\t\t\t\t(0, _classCallCheck3.default)(this, ModuleRepository);\n\t\t\t\treturn (0, _possibleConstructorReturn3.default)(this, _BaseModuleRepository.apply(this, arguments));\n\t\t}\n\n\t\t/**\n * @override\n * @returns {ModuleRepository} initialised instance with registered handlers for identifiers\n */\n\t\tModuleRepository.prototype.init = function init() {\n\t\t\t\t_BaseModuleRepository.prototype.init.call(this);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.video, _ModuleIdentifier2.default.VIDEO);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.audio, _ModuleIdentifier2.default.AUDIO);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.slider, _ModuleIdentifier2.default.SLIDER);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.animation, _ModuleIdentifier2.default.ANIMATION);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.responsiveTables, _ModuleIdentifier2.default.RESPTABLES);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.productFinder, _ModuleIdentifier2.default.PFC);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.benefitFinder, _ModuleIdentifier2.default.BFC);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.regionalization, _ModuleIdentifier2.default.REG);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.modal, _ModuleIdentifier2.default.MODAL);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.passwordMeter, _ModuleIdentifier2.default.PASSWORDMETER);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.maptool, _ModuleIdentifier2.default.MAPTOOL);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.preacttest, _ModuleIdentifier2.default.PREACT_TEST);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.reacttest, _ModuleIdentifier2.default.REACT_TEST);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.experienceModules, _ModuleIdentifier2.default.EXPERIENCE_MODULES);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.formsV1, _ModuleIdentifier2.default.FORM_V1);\n\n\t\t\t\tthis.registerHandlerForIdentifier(SplitPoints.formsV2, _ModuleIdentifier2.default.FORM_V2);\n\n\t\t\t\treturn this;\n\t\t};\n\n\t\treturn ModuleRepository;\n}(_BaseModule2.default);\n\nvar instance = new ModuleRepository().init();\n\nexports.default = instance;\n\n/***/ }),\n/* 588 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar MODULE_IDENTIFIERS = {\n\tMAPTOOL: 'map-tool'\n},\n IDENTIFIERS = {\n\tMAP_FRAME: {\n\t\tROOT: '[data-tpl=map-frame]'\n\t},\n\tFLYOUT: {\n\t\tROOT: '[data-tpl=flyout]'\n\t},\n\tTABS: {\n\t\tROOT: '[data-tpl=tab01]'\n\t},\n\n\tMAPTOOL: '[data-module=' + MODULE_IDENTIFIERS.MAPTOOL + ']'\n},\n MAP_TYPES = {\n\tSHOP: 'shop',\n\tENERGY: 'energy',\n\tPOWERSTATION: 'powerstation'\n};\n\nexports.IDENTIFIERS = IDENTIFIERS;\nexports.MODULE_IDENTIFIERS = MODULE_IDENTIFIERS;\nexports.MAP_TYPES = MAP_TYPES;\n\n/***/ }),\n/* 589 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar IDENTIFIER = exports.IDENTIFIER = 'preact-test';\n\n/***/ }),\n/* 590 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = undefined;\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _WindowGateway = __webpack_require__(118);\n\nvar _WindowGateway2 = _interopRequireDefault(_WindowGateway);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction receiveInit(message) {\n\tif (message.type === 'init' && message.data.hasOwnProperty('id') && message.data.hasOwnProperty('module')) {\n\t\tvar config = {\n\t\t\tidentifier: message.data.module,\n\t\t\tnode: (0, _jquery2.default)('#' + message.data.id)\n\t\t};\n\n\t\tthis.getModuleForIdentifier(config).then(function (SomeClass) {\n\t\t\tvar instance = new SomeClass(config);\n\t\t\tinstance.init();\n\t\t\treturn SomeClass;\n\t\t}).catch(function (e) {});\n\t}\n}\n\n/**\r\n * Basic repository definition providing a basic interface which is inherited by the sub-classes.\r\n * Calls for \"getModuleForIdentifier\"and \"registerHandlerForIdentifier\" are always performed on the BaseModuleRepository super class.\r\n */\n\nvar BaseModuleRepository = function () {\n\tfunction BaseModuleRepository() {\n\t\t(0, _classCallCheck3.default)(this, BaseModuleRepository);\n\t}\n\n\t/**\r\n * init an empty registry for modules.\r\n * @returns {BaseModuleRepository} - instance\r\n */\n\tBaseModuleRepository.prototype.init = function init() {\n\t\tthis._registry = {};\n\t\tthis._windowGateway = new _WindowGateway2.default();\n\t\tthis._windowGateway.messageEvent.subscribe(receiveInit.bind(this));\n\n\t\treturn this;\n\t};\n\n\t/**\r\n * Registry containing Module split points for DOM Identifiers.\r\n * Will be called by sub-classes to register their individual modules.\r\n * @param {function} handler - Handler function to launch the module\r\n * @param {string} identifier - Identifier matching DOM data-module identifiers to link the javascript module to the DOM\r\n * @returns {void}\r\n */\n\n\n\tBaseModuleRepository.prototype.registerHandlerForIdentifier = function registerHandlerForIdentifier(handler, identifier) {\n\n\t\t/**\r\n * @typedef {object} ModuleLaunchConfig\r\n * @type {{identifier: string, handler: function}}\r\n */\n\t\tthis._registry[identifier] = {\n\t\t\tidentifier: identifier,\n\t\t\thandler: handler\n\t\t};\n\t};\n\n\t/**\r\n * Loads a module given a moduleConfig.\r\n * Public method which will be called from the class requesting async modules.\r\n * @public\r\n * @param {moduleConfig} moduleConfig - configuration parsed from the DOM to access the respective module definition\r\n * @return {Promise} a Promise which will be either fulfilled if the module was loaded or rejected when no module was registered for the given moduleConfig.identifier\r\n */\n\n\n\tBaseModuleRepository.prototype.getModuleForIdentifier = function getModuleForIdentifier(moduleConfig) {\n\n\t\ttry {\n\t\t\treturn new _promise2.default(this._registry[moduleConfig.identifier].handler);\n\t\t} catch (e) {\n\t\t\treturn _promise2.default.reject('Module ' + moduleConfig.identifier + ' is not registered in Module.repository');\n\t\t}\n\t};\n\n\treturn BaseModuleRepository;\n}();\n\nexports.default = BaseModuleRepository;\n\n/***/ }),\n/* 591 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _frontendLogger = __webpack_require__(126);\n\nvar _frontendLogger2 = _interopRequireDefault(_frontendLogger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar loadOnce = ['form', 'form-v2'];\n\n/**\n * @typedef {Object} moduleConfig\n * @property {string} identifier Data-Module Identifier\n * @property {Object} config additional config options\n * @property {jQuery} node jQuery wrapped DOM-Node\n */\n\n/**\n * Get additional config options passed by data attribute. Try to access and parse, otherwise return empty object\n * @param {object} scope - DOM node\n * @param {ModuleLoaderConfig} config - config options\n * @return {object} parsed options attribute\n */\nfunction getModuleOptions(scope, config) {\n\n\ttry {\n\n\t\t/**\n * @type {string}\n */\n\t\tvar configAttr = (0, _jquery2.default)(scope).attr(config.CONFIG_ATTRIBUTE);\n\n\t\treturn JSON.parse(configAttr);\n\t} catch (e) {\n\n\t\t/**\n * JSON parse failed because of a missing config attribute or because of an invalid JSON-structure inside the config.\n * Catch and return an empty object as configuration.\n */\n\t\treturn {};\n\t}\n}\n\n/**\n * @param {ModuleLoaderConfig} config - config options\n * @param {object} scope - DOM node\n * @return {moduleConfig} config\n * @private\n */\nfunction getModuleConfig(config, scope) {\n\n\t/**\n * @type {moduleConfig}\n */\n\tvar moduleConfig = {\n\t\tnode: null,\n\t\tidentifier: null,\n\t\tconfig: null\n\t};\n\n\ttry {\n\t\tmoduleConfig.node = (0, _jquery2.default)(scope);\n\t\t// TODO: add fasterdom?\n\t\tmoduleConfig.identifier = config.ATTRIBUTE !== 'class' ? (0, _jquery2.default)(scope).attr(config.ATTRIBUTE) : config.SELECTOR;\n\t\tmoduleConfig.config = getModuleOptions(scope, config);\n\t} catch (e) {\n\t\t_frontendLogger2.default.warn('Invalid JSON structure on node, failed fast.', scope);\n\t}\n\n\treturn moduleConfig;\n}\n\nfunction removeOnceRequired(loaded, config) {\n\tvar key = config.identifier;\n\n\tif (loadOnce.includes(key) && loaded.includes(key)) {\n\t\treturn false;\n\t}\n\tloaded.push(key);\n\treturn true;\n}\n\nvar ConfigParser = {\n\n\t/**\n * Parse the DOM for modules, then get their respective configs.\n * @param {ModuleLoaderConfig} config - config options\n * @public\n * @return {Array<moduleConfig>} configs for each module present in the DOM\n */\n\tgetModules: function getModules(config) {\n\t\tvar res = [];\n\n\t\tfor (var key in config) {\n\t\t\tif (config.hasOwnProperty(key)) {\n\n\t\t\t\tres = res.concat(_jquery2.default.makeArray((0, _jquery2.default)(config[key].SELECTOR)).map(getModuleConfig.bind(this, config[key])).filter(removeOnceRequired.bind(this, [])));\n\t\t\t}\n\t\t}\n\n\t\treturn res;\n\t},\n\n\n\t/**\n * Just get the module config from a given node\n * @public\n */\n\tgetConfig: getModuleConfig\n};\n\nexports.default = ConfigParser;\n\n/***/ }),\n/* 592 */,\n/* 593 */,\n/* 594 */,\n/* 595 */,\n/* 596 */,\n/* 597 */,\n/* 598 */,\n/* 599 */,\n/* 600 */,\n/* 601 */,\n/* 602 */,\n/* 603 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _from = __webpack_require__(104);\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _Framework = __webpack_require__(604);\n\nvar _Framework2 = _interopRequireDefault(_Framework);\n\nvar _Component = __webpack_require__(659);\n\nvar _Component2 = _interopRequireDefault(_Component);\n\nvar _ComponentLauncher = __webpack_require__(586);\n\nvar _ComponentLauncher2 = _interopRequireDefault(_ComponentLauncher);\n\nvar _ElementLoader = __webpack_require__(682);\n\nvar _ElementLoader2 = _interopRequireDefault(_ElementLoader);\n\nvar _ModuleLoader = __webpack_require__(683);\n\nvar _ModuleLoader2 = _interopRequireDefault(_ModuleLoader);\n\nvar _moduleLoader = __webpack_require__(583);\n\nvar _moduleLoader2 = _interopRequireDefault(_moduleLoader);\n\nvar _Module = __webpack_require__(587);\n\nvar _Module2 = _interopRequireDefault(_Module);\n\nvar _AppConfigParser = __webpack_require__(591);\n\nvar _AppConfigParser2 = _interopRequireDefault(_AppConfigParser);\n\nvar _device = __webpack_require__(54);\n\nvar _fastclick = __webpack_require__(696);\n\nvar _fastclick2 = _interopRequireDefault(_fastclick);\n\nvar _LazyImageLoader = __webpack_require__(558);\n\nvar _LazyImageLoader2 = _interopRequireDefault(_LazyImageLoader);\n\nvar _StyleLoader = __webpack_require__(697);\n\nvar _StyleLoader2 = _interopRequireDefault(_StyleLoader);\n\nvar _Images = __webpack_require__(698);\n\nvar _Images2 = _interopRequireDefault(_Images);\n\nvar _WindowGateway = __webpack_require__(118);\n\nvar _WindowGateway2 = _interopRequireDefault(_WindowGateway);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Breakpoints = __webpack_require__(560).default,\n windowGateway = new _WindowGateway2.default();\n\n/**\r\n * Import dependencies for development.\r\n * Flag will be parsed out for production builds.\r\n */\n\n/**\r\n * @private\r\n * @return {void}\r\n */\nfunction launchServices() {\n\n\t_fastclick2.default.attach(document.body);\n\t_device.BreakpointService.use(Breakpoints);\n\t_LazyImageLoader2.default.init();\n\n\tvar styleLoaderMeta = document.querySelectorAll('meta[name=\"styleLoader\"]');\n\n\tif (styleLoaderMeta && styleLoaderMeta.length) {\n\t\t(0, _from2.default)(styleLoaderMeta).forEach(function (item) {\n\t\t\tvar file = item.getAttribute('file'),\n\t\t\t path = item.getAttribute('path');\n\n\t\t\t_StyleLoader2.default.init(path + file);\n\t\t});\n\t} else {\n\t\t_StyleLoader2.default.init(\"/css/\" + 'screen');\n\t}\n\n\t_Images2.default.init();\n}\n\n/**\r\n * @private\r\n * @returns {void}\r\n */\nfunction configure() {\n\n\t_Framework2.default.init();\n\t_ComponentLauncher2.default.launchDependencies(_Component2.default);\n\t_ComponentLauncher2.default.launchSingletonDependencies(_Component.SINGLETONS);\n\t_ElementLoader2.default.loadDependencies();\n\t_moduleLoader2.default.loadDependencies(_Module2.default, _AppConfigParser2.default.getModules(_ModuleLoader2.default));\n}\n\n/**\r\n * Primary entry point, called after document ready event\r\n * @access protected\r\n * @returns {void}\r\n */\nfunction run() {\n\n\tlaunchServices();\n\tconfigure();\n\n\twindowGateway.send({\n\t\ttype: 'scriptReady',\n\t\tsrc: window.location.href\n\t}, '*');\n}\n\n(0, _jquery2.default)().ready(run);\n\n/***/ }),\n/* 604 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _Navigation = __webpack_require__(561);\n\nvar _Navigation2 = _interopRequireDefault(_Navigation);\n\nvar _Offscreen = __webpack_require__(571);\n\nvar _Offscreen2 = _interopRequireDefault(_Offscreen);\n\nvar _TargetGroupSelect = __webpack_require__(572);\n\nvar _TargetGroupSelect2 = _interopRequireDefault(_TargetGroupSelect);\n\nvar _MainHeader = __webpack_require__(649);\n\nvar _MainHeader2 = _interopRequireDefault(_MainHeader);\n\nvar _CookieDisclaimer = __webpack_require__(650);\n\nvar _CookieDisclaimer2 = _interopRequireDefault(_CookieDisclaimer);\n\nvar _Bucket = __webpack_require__(125);\n\nvar _Bucket2 = _interopRequireDefault(_Bucket);\n\nvar _Iframe = __webpack_require__(573);\n\nvar _Identifiers = __webpack_require__(158);\n\nvar _Identifiers2 = __webpack_require__(271);\n\nvar _LAS01Controller = __webpack_require__(658);\n\nvar _LAS01Controller2 = _interopRequireDefault(_LAS01Controller);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * Class wrapping all framework features. Controls events for navigation, quick-navigation etc.\r\n * Is used as a singleton.\r\n * @class\r\n */\nvar Framework = function () {\n\tfunction Framework() {\n\t\t(0, _classCallCheck3.default)(this, Framework);\n\t}\n\n\t/**\r\n * Initialises the controller singleton.\r\n * Has to be called after ready event.\r\n * @public\r\n * @returns {void}\r\n */\n\tFramework.prototype.init = function init() {\n\t\t_Bucket2.default.init(_jquery2.default);\n\t\tthis.initControllers();\n\t};\n\n\t/**\r\n * Initialize sub-controller instances for framework components.\r\n * @private\r\n * @return {void}\r\n */\n\n\n\tFramework.prototype.initControllers = function initControllers() {\n\t\tvar NavControllerInstance = new _Navigation2.default();\n\n\t\t_Offscreen2.default.init((0, _jquery2.default)(_Identifiers.IDENTIFIERS.OFF_SCREEN.ROOT));\n\t\tNavControllerInstance.init((0, _jquery2.default)(_Identifiers.IDENTIFIERS.NAVIGATION.UL));\n\t\t//FormServiceV1.init();\n\t\t//FormService.init();\n\t\t_Iframe.iFrameChildControllerInstance.init();\n\t\tvar mainHeaderController = _MainHeader2.default.init((0, _jquery2.default)(_Identifiers.IDENTIFIERS.MAIN_HEADER.ROOT));\n\t\t// FooterController.init( $( IDENTIFIERS.FOOTER.ROOT ) );\n\t\t// HeaderController.init( $( IDENTIFIERS.HEADER.ROOT ) );\n\n\t\tif ((0, _jquery2.default)(_Identifiers2.IDENTIFIERS.LAS01.ROOT).length) {\n\t\t\tthis.languageSwitchInstance = new _LAS01Controller2.default();\n\t\t\tthis.languageSwitchInstance.init((0, _jquery2.default)(_Identifiers2.IDENTIFIERS.LAS01.ROOT));\n\t\t}\n\n\t\tvar updateCallback = mainHeaderController ? mainHeaderController.updatePosition.bind(mainHeaderController) : function () {};\n\n\t\t_CookieDisclaimer2.default.init((0, _jquery2.default)(_Identifiers.IDENTIFIERS.COOKIE_DISCLAIMER.ROOT)).afterOpen(updateCallback);\n\t\t_CookieDisclaimer2.default.afterClose(updateCallback);\n\n\t\tif ((0, _jquery2.default)(_Identifiers.IDENTIFIERS.TARGET_GROUP_SELECT.ROOT).length) {\n\t\t\t_TargetGroupSelect2.default.init((0, _jquery2.default)(_Identifiers.IDENTIFIERS.TARGET_GROUP_SELECT.ROOT));\n\t\t}\n\t};\n\n\treturn Framework;\n}();\n\n/**\r\n * @private\r\n * @type {Framework}\r\n */\n\n//import FormServiceV1 from './../forms/v1/services/Forms.service';\n//import FormService from './../forms/v2/services/Forms.service';\n\n// import FooterController from './controller/Footer.controller';\n// import HeaderController from './controller/Header.controller';\n/** @module framework */\n\n\nvar instance = new Framework();\n\nexports.default = instance;\n\n/***/ }),\n/* 605 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(80);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _TransitionEvent = __webpack_require__(119);\n\nvar _TransitionEvent2 = _interopRequireDefault(_TransitionEvent);\n\nvar _Navigation = __webpack_require__(561);\n\nvar _Navigation2 = _interopRequireDefault(_Navigation);\n\nvar _global = __webpack_require__(103);\n\nvar _Selectors = __webpack_require__(124);\n\nvar _Bucket = __webpack_require__(125);\n\nvar _Bucket2 = _interopRequireDefault(_Bucket);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * @return { void }\r\n * @private\r\n * \r\n * @memberof module:framework/navigation~NavigationItemController\r\n */\nfunction initController() {\n\tvar self = this;\n\n\tself.$submenu.each(function (i, v) {\n\t\tvar $this = (0, _jquery2.default)(v),\n\t\t controllerInstance = new _Navigation2.default();\n\n\t\tcontrollerInstance.init($this);\n\t\tself.subController.push(controllerInstance);\n\t});\n}\n\n/**\r\n * Binds event handler to the current scope\r\n * @return { void }\r\n * @private\r\n *\r\n * @memberof module:framework/navigation~NavigationItemController\r\n */\n/** @external framework/navigation */\nfunction addHandler() {\n\tvar self = this;\n\n\tself.onOpen(function ($trigger) {\n\t\tvar _h = 0;\n\n\t\t_Bucket2.default.controller.framework.offscreenNavigation.isChildOpening = true;\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\t_h = (0, _global.getHiddenDimensions)(self.$content, 'height').outerHeight;\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function (a) {\n\t\t\tself.$content.css({ height: _h });\n\t\t});\n\t});\n\n\tself.afterOpen(function ($trigger) {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tself.$content.css({ height: '' });\n\t\t});\n\t\t_Bucket2.default.controller.framework.offscreenNavigation.isChildOpening = false;\n\t});\n\n\tself.beforeClose(function ($trigger) {\n\t\tvar _h = 0;\n\n\t\t_Bucket2.default.controller.framework.offscreenNavigation.isChildOpening = true;\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\t_h = (0, _global.getHiddenDimensions)(self.$content, 'height').outerHeight;\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tself.$content.css({ height: _h });\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tself.$content.css({ height: '' });\n\t\t}, 1);\n\t});\n\n\tself.afterClose(function ($trigger) {\n\t\t_Bucket2.default.controller.framework.offscreenNavigation.isChildOpening = false;\n\t});\n\n\tself.$scope.on('closed', function (e) {\n\t\te.preventDefault();\n\t\te.stopImmediatePropagation();\n\n\t\tself.subController.map(function (v) {\n\t\t\tv.closeItems();\n\t\t\treturn v;\n\t\t});\n\t});\n}\n\n/**\r\n * Class representing an navigation menu item instance.\r\n * Controls the state of the accordion.\r\n * Controls menu item behavior.\r\n * @extends { TransitionEventController }\r\n * @class\r\n *\r\n * @name module:framework/navigation~NavigationItemController\r\n */\n\nvar NavigationItemController = function (_TransitionEventContr) {\n\t(0, _inherits3.default)(NavigationItemController, _TransitionEventContr);\n\n\tfunction NavigationItemController() {\n\t\t(0, _classCallCheck3.default)(this, NavigationItemController);\n\n\t\tvar _this = (0, _possibleConstructorReturn3.default)(this, _TransitionEventContr.call(this));\n\n\t\t_this.debug = false; //'NavigationItem';\n\n\t\t_this.$scope = null;\n\t\t_this.$content = null;\n\t\t_this.$submenu = null;\n\n\t\t_this.subController = [];\n\t\treturn _this;\n\t}\n\n\t/**\r\n * Initialises the controller.\r\n * Has to be called after ready event.\r\n *\r\n * @param { jQuery } $root - navigation menu item\r\n * @public\r\n * @return { void }\r\n */\n\n\n\tNavigationItemController.prototype.init = function init($root) {\n\t\tvar self = this;\n\n\t\t_TransitionEventContr.prototype.init.call(this, $root);\n\n\t\tthis._disabled = false;\n\n\t\tself.$scope = $root;\n\t\tself.$trigger = self.$scope.find('> span');\n\t\tself.$content = self.$scope.find('> ul');\n\t\tself.$submenu = self.$content.has('> li > ul');\n\n\t\tself.setTransition('height');\n\t\tself.setTransitionElement(self.$content);\n\n\t\tinitController.call(self);\n\t\taddHandler.call(self);\n\t};\n\n\tNavigationItemController.prototype.disable = function disable() {\n\t\tthis.isDisabled = true;\n\t};\n\n\tNavigationItemController.prototype.enable = function enable() {\n\t\tthis.isDisabled = false;\n\t};\n\n\tNavigationItemController.prototype.reset = function reset() {\n\t\tvar _this2 = this;\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\t_this2.isOpen = _this2.$scope.hasClass('active') || _this2.$scope.hasClass('current');\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t_this2.$scope.attr(_Selectors.SELECTORS.expandedSelector, _this2.isOpen);\n\t\t});\n\t};\n\n\tNavigationItemController.prototype.open = function open() {\n\t\tif (!_Bucket2.default.controller.framework.offscreenNavigation.isChildOpening) {\n\t\t\t_TransitionEventContr.prototype.open.call(this);\n\t\t}\n\t};\n\n\tNavigationItemController.prototype.close = function close() {\n\t\tif (!_Bucket2.default.controller.framework.offscreenNavigation.isChildOpening) {\n\t\t\t_TransitionEventContr.prototype.close.call(this);\n\t\t}\n\t};\n\n\t(0, _createClass3.default)(NavigationItemController, [{\n\t\tkey: 'isDisabled',\n\t\tset: function set(is) {\n\t\t\tif (is === true) {\n\t\t\t\tthis.open();\n\t\t\t} else {\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t\tthis._disabled = is === true;\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this._disabled;\n\t\t}\n\t}]);\n\treturn NavigationItemController;\n}(_TransitionEvent2.default);\n\nexports.default = NavigationItemController;\n\n/***/ }),\n/* 606 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _Observable = __webpack_require__(48);\n\nvar _fromEvent = __webpack_require__(208);\n\nvar _mergeMap = __webpack_require__(545);\n\nvar _DeviceOrientation = __webpack_require__(608);\n\nvar _DeviceOrientation2 = _interopRequireDefault(_DeviceOrientation);\n\nvar _fasterdom = __webpack_require__(22);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Events = {\n\tROTATE: 'orientationchange'\n};\n\n/**\n * @typedef {object} DeviceOrientation\n * @property {DeviceOrientationValue} rotation\n */\n\n/**\n * Factory function for orientation object.\n * @returns {DeviceOrientation} - the current orientation\n */\nfunction properties() {\n\n\treturn {\n\t\trotation: null\n\t};\n}\n\n/**\n * Determine the current orientation\n * @returns {DeviceOrientation} - the current orientation\n */\nfunction calcOrientation() {\n\n\treturn _fasterdom.fasterdomPromised.measure(function () {\n\n\t\tvar props = properties();\n\n\t\tprops.rotation = window['orientation'] === 90 || window['orientation'] === -90 ? //eslint-disable-line dot-notation\n\t\t_DeviceOrientation2.default.LANDSCAPE : _DeviceOrientation2.default.PORTRAIT;\n\n\t\treturn props;\n\t});\n}\n\n/**\n *\n * @public\n * @returns {Observable<TResult>} - event stream for orientation change events\n */\nfunction registerOrientationChangeEvent() {\n\tvar _context;\n\n\treturn (_context = _fromEvent.fromEvent.call(_Observable.Observable, window, Events.ROTATE), _mergeMap.mergeMap).call(_context, calcOrientation);\n}\n\nvar DeviceOrientationService = {\n\n\torientationEvent: registerOrientationChangeEvent(),\n\n\tgetOrientations: function getOrientations() {\n\t\treturn _DeviceOrientation2.default;\n\t}\n};\n\nexports.default = DeviceOrientationService;\n\n/***/ }),\n/* 607 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = __webpack_require__(115);\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar InnerSubscriber = (function (_super) {\n __extends(InnerSubscriber, _super);\n function InnerSubscriber(parent, outerValue, outerIndex) {\n _super.call(this);\n this.parent = parent;\n this.outerValue = outerValue;\n this.outerIndex = outerIndex;\n this.index = 0;\n }\n InnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n };\n InnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n };\n InnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return InnerSubscriber;\n}(Subscriber_1.Subscriber));\nexports.InnerSubscriber = InnerSubscriber;\n//# sourceMappingURL=InnerSubscriber.js.map\n\n/***/ }),\n/* 608 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _symbol = __webpack_require__(120);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n *\n * @typedef {Symbol} DeviceOrientationValue\n */\n\n/**\n *\n * @type {{PORTRAIT: DeviceOrientationValue, LANDSCAPE: DeviceOrientationValue}}\n */\nexports.default = {\n PORTRAIT: (0, _symbol2.default)('portrait'),\n LANDSCAPE: (0, _symbol2.default)('landscape')\n};\n\n/***/ }),\n/* 609 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = __webpack_require__(115);\n/* tslint:enable:max-line-length */\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * <img src=\"./img/filter.png\" width=\"100%\">\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * @example <caption>Emit only click events whose target was a DIV element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV');\n * clicksOnDivs.subscribe(x => console.log(x));\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nfunction filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nexports.filter = filter;\nvar FilterOperator = (function () {\n function FilterOperator(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n FilterOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n };\n return FilterOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar FilterSubscriber = (function (_super) {\n __extends(FilterSubscriber, _super);\n function FilterSubscriber(destination, predicate, thisArg) {\n _super.call(this, destination);\n this.predicate = predicate;\n this.thisArg = thisArg;\n this.count = 0;\n }\n // the try catch block below is left specifically for\n // optimization and perf reasons. a tryCatcher is not necessary here.\n FilterSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n };\n return FilterSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=filter.js.map\n\n/***/ }),\n/* 610 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayObservable_1 = __webpack_require__(281);\nvar ScalarObservable_1 = __webpack_require__(549);\nvar EmptyObservable_1 = __webpack_require__(550);\nvar concat_1 = __webpack_require__(611);\nvar isScheduler_1 = __webpack_require__(282);\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins to emit\n * items emitted by the source Observable.\n *\n * <img src=\"./img/startWith.png\" width=\"100%\">\n *\n * @param {...T} values - Items you want the modified Observable to emit first.\n * @param {Scheduler} [scheduler] - A {@link IScheduler} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items\n * emitted by the source Observable.\n * @method startWith\n * @owner Observable\n */\nfunction startWith() {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i - 0] = arguments[_i];\n }\n return function (source) {\n var scheduler = array[array.length - 1];\n if (isScheduler_1.isScheduler(scheduler)) {\n array.pop();\n }\n else {\n scheduler = null;\n }\n var len = array.length;\n if (len === 1) {\n return concat_1.concat(new ScalarObservable_1.ScalarObservable(array[0], scheduler), source);\n }\n else if (len > 1) {\n return concat_1.concat(new ArrayObservable_1.ArrayObservable(array, scheduler), source);\n }\n else {\n return concat_1.concat(new EmptyObservable_1.EmptyObservable(scheduler), source);\n }\n };\n}\nexports.startWith = startWith;\n//# sourceMappingURL=startWith.js.map\n\n/***/ }),\n/* 611 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar isScheduler_1 = __webpack_require__(282);\nvar of_1 = __webpack_require__(612);\nvar from_1 = __webpack_require__(568);\nvar concatAll_1 = __webpack_require__(619);\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from given\n * Observable and then moves on to the next.\n *\n * <span class=\"informal\">Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.</span>\n *\n * <img src=\"./img/concat.png\" width=\"100%\">\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * @example <caption>Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10</caption>\n * var timer = Rx.Observable.interval(1000).take(4);\n * var sequence = Rx.Observable.range(1, 10);\n * var result = Rx.Observable.concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n *\n *\n * @example <caption>Concatenate an array of 3 Observables</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var result = Rx.Observable.concat([timer1, timer2, timer3]); // note that array is passed\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n *\n *\n * @example <caption>Concatenate the same Observable to repeat it</caption>\n * const timer = Rx.Observable.interval(1000).take(2);\n *\n * Rx.Observable.concat(timer, timer) // concating the same Observable!\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('...and it is done!')\n * );\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // \"...and it is done!\" also after 4s\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n *\n * @param {ObservableInput} input1 An input Observable to concatenate with others.\n * @param {ObservableInput} input2 An input Observable to concatenate with others.\n * More than one input Observables may be given as argument.\n * @param {Scheduler} [scheduler=null] An optional IScheduler to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @static true\n * @name concat\n * @owner Observable\n */\nfunction concat() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i - 0] = arguments[_i];\n }\n if (observables.length === 1 || (observables.length === 2 && isScheduler_1.isScheduler(observables[1]))) {\n return from_1.from(observables[0]);\n }\n return concatAll_1.concatAll()(of_1.of.apply(void 0, observables));\n}\nexports.concat = concat;\n//# sourceMappingURL=concat.js.map\n\n/***/ }),\n/* 612 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayObservable_1 = __webpack_require__(281);\nexports.of = ArrayObservable_1.ArrayObservable.of;\n//# sourceMappingURL=of.js.map\n\n/***/ }),\n/* 613 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar isArray_1 = __webpack_require__(276);\nvar isArrayLike_1 = __webpack_require__(564);\nvar isPromise_1 = __webpack_require__(565);\nvar PromiseObservable_1 = __webpack_require__(614);\nvar IteratorObservable_1 = __webpack_require__(615);\nvar ArrayObservable_1 = __webpack_require__(281);\nvar ArrayLikeObservable_1 = __webpack_require__(616);\nvar iterator_1 = __webpack_require__(546);\nvar Observable_1 = __webpack_require__(48);\nvar observeOn_1 = __webpack_require__(617);\nvar observable_1 = __webpack_require__(267);\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar FromObservable = (function (_super) {\n __extends(FromObservable, _super);\n function FromObservable(ish, scheduler) {\n _super.call(this, null);\n this.ish = ish;\n this.scheduler = scheduler;\n }\n /**\n * Creates an Observable from an Array, an array-like object, a Promise, an\n * iterable object, or an Observable-like object.\n *\n * <span class=\"informal\">Converts almost anything to an Observable.</span>\n *\n * <img src=\"./img/from.png\" width=\"100%\">\n *\n * Convert various other objects and data types into Observables. `from`\n * converts a Promise or an array-like or an\n * [iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable)\n * object into an Observable that emits the items in that promise or array or\n * iterable. A String, in this context, is treated as an array of characters.\n * Observable-like objects (contains a function named with the ES2015 Symbol\n * for Observable) can also be converted through this operator.\n *\n * @example <caption>Converts an array to an Observable</caption>\n * var array = [10, 20, 30];\n * var result = Rx.Observable.from(array);\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // 10 20 30\n *\n * @example <caption>Convert an infinite iterable (from a generator) to an Observable</caption>\n * function* generateDoubles(seed) {\n * var i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * var iterator = generateDoubles(3);\n * var result = Rx.Observable.from(iterator).take(10);\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // 3 6 12 24 48 96 192 384 768 1536\n *\n * @see {@link create}\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n * @see {@link fromPromise}\n *\n * @param {ObservableInput<T>} ish A subscribable object, a Promise, an\n * Observable-like, an Array, an iterable or an array-like object to be\n * converted.\n * @param {Scheduler} [scheduler] The scheduler on which to schedule the\n * emissions of values.\n * @return {Observable<T>} The Observable whose values are originally from the\n * input object that was converted.\n * @static true\n * @name from\n * @owner Observable\n */\n FromObservable.create = function (ish, scheduler) {\n if (ish != null) {\n if (typeof ish[observable_1.observable] === 'function') {\n if (ish instanceof Observable_1.Observable && !scheduler) {\n return ish;\n }\n return new FromObservable(ish, scheduler);\n }\n else if (isArray_1.isArray(ish)) {\n return new ArrayObservable_1.ArrayObservable(ish, scheduler);\n }\n else if (isPromise_1.isPromise(ish)) {\n return new PromiseObservable_1.PromiseObservable(ish, scheduler);\n }\n else if (typeof ish[iterator_1.iterator] === 'function' || typeof ish === 'string') {\n return new IteratorObservable_1.IteratorObservable(ish, scheduler);\n }\n else if (isArrayLike_1.isArrayLike(ish)) {\n return new ArrayLikeObservable_1.ArrayLikeObservable(ish, scheduler);\n }\n }\n throw new TypeError((ish !== null && typeof ish || ish) + ' is not observable');\n };\n FromObservable.prototype._subscribe = function (subscriber) {\n var ish = this.ish;\n var scheduler = this.scheduler;\n if (scheduler == null) {\n return ish[observable_1.observable]().subscribe(subscriber);\n }\n else {\n return ish[observable_1.observable]().subscribe(new observeOn_1.ObserveOnSubscriber(subscriber, scheduler, 0));\n }\n };\n return FromObservable;\n}(Observable_1.Observable));\nexports.FromObservable = FromObservable;\n//# sourceMappingURL=FromObservable.js.map\n\n/***/ }),\n/* 614 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = __webpack_require__(99);\nvar Observable_1 = __webpack_require__(48);\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar PromiseObservable = (function (_super) {\n __extends(PromiseObservable, _super);\n function PromiseObservable(promise, scheduler) {\n _super.call(this);\n this.promise = promise;\n this.scheduler = scheduler;\n }\n /**\n * Converts a Promise to an Observable.\n *\n * <span class=\"informal\">Returns an Observable that just emits the Promise's\n * resolved value, then completes.</span>\n *\n * Converts an ES2015 Promise or a Promises/A+ spec compliant Promise to an\n * Observable. If the Promise resolves with a value, the output Observable\n * emits that resolved value as a `next`, and then completes. If the Promise\n * is rejected, then the output Observable emits the corresponding Error.\n *\n * @example <caption>Convert the Promise returned by Fetch to an Observable</caption>\n * var result = Rx.Observable.fromPromise(fetch('http://myserver.com/'));\n * result.subscribe(x => console.log(x), e => console.error(e));\n *\n * @see {@link bindCallback}\n * @see {@link from}\n *\n * @param {PromiseLike<T>} promise The promise to be converted.\n * @param {Scheduler} [scheduler] An optional IScheduler to use for scheduling\n * the delivery of the resolved value (or the rejection).\n * @return {Observable<T>} An Observable which wraps the Promise.\n * @static true\n * @name fromPromise\n * @owner Observable\n */\n PromiseObservable.create = function (promise, scheduler) {\n return new PromiseObservable(promise, scheduler);\n };\n PromiseObservable.prototype._subscribe = function (subscriber) {\n var _this = this;\n var promise = this.promise;\n var scheduler = this.scheduler;\n if (scheduler == null) {\n if (this._isScalar) {\n if (!subscriber.closed) {\n subscriber.next(this.value);\n subscriber.complete();\n }\n }\n else {\n promise.then(function (value) {\n _this.value = value;\n _this._isScalar = true;\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) {\n if (!subscriber.closed) {\n subscriber.error(err);\n }\n })\n .then(null, function (err) {\n // escape the promise trap, throw unhandled errors\n root_1.root.setTimeout(function () { throw err; });\n });\n }\n }\n else {\n if (this._isScalar) {\n if (!subscriber.closed) {\n return scheduler.schedule(dispatchNext, 0, { value: this.value, subscriber: subscriber });\n }\n }\n else {\n promise.then(function (value) {\n _this.value = value;\n _this._isScalar = true;\n if (!subscriber.closed) {\n subscriber.add(scheduler.schedule(dispatchNext, 0, { value: value, subscriber: subscriber }));\n }\n }, function (err) {\n if (!subscriber.closed) {\n subscriber.add(scheduler.schedule(dispatchError, 0, { err: err, subscriber: subscriber }));\n }\n })\n .then(null, function (err) {\n // escape the promise trap, throw unhandled errors\n root_1.root.setTimeout(function () { throw err; });\n });\n }\n }\n };\n return PromiseObservable;\n}(Observable_1.Observable));\nexports.PromiseObservable = PromiseObservable;\nfunction dispatchNext(arg) {\n var value = arg.value, subscriber = arg.subscriber;\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n}\nfunction dispatchError(arg) {\n var err = arg.err, subscriber = arg.subscriber;\n if (!subscriber.closed) {\n subscriber.error(err);\n }\n}\n//# sourceMappingURL=PromiseObservable.js.map\n\n/***/ }),\n/* 615 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = __webpack_require__(99);\nvar Observable_1 = __webpack_require__(48);\nvar iterator_1 = __webpack_require__(546);\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar IteratorObservable = (function (_super) {\n __extends(IteratorObservable, _super);\n function IteratorObservable(iterator, scheduler) {\n _super.call(this);\n this.scheduler = scheduler;\n if (iterator == null) {\n throw new Error('iterator cannot be null.');\n }\n this.iterator = getIterator(iterator);\n }\n IteratorObservable.create = function (iterator, scheduler) {\n return new IteratorObservable(iterator, scheduler);\n };\n IteratorObservable.dispatch = function (state) {\n var index = state.index, hasError = state.hasError, iterator = state.iterator, subscriber = state.subscriber;\n if (hasError) {\n subscriber.error(state.error);\n return;\n }\n var result = iterator.next();\n if (result.done) {\n subscriber.complete();\n return;\n }\n subscriber.next(result.value);\n state.index = index + 1;\n if (subscriber.closed) {\n if (typeof iterator.return === 'function') {\n iterator.return();\n }\n return;\n }\n this.schedule(state);\n };\n IteratorObservable.prototype._subscribe = function (subscriber) {\n var index = 0;\n var _a = this, iterator = _a.iterator, scheduler = _a.scheduler;\n if (scheduler) {\n return scheduler.schedule(IteratorObservable.dispatch, 0, {\n index: index, iterator: iterator, subscriber: subscriber\n });\n }\n else {\n do {\n var result = iterator.next();\n if (result.done) {\n subscriber.complete();\n break;\n }\n else {\n subscriber.next(result.value);\n }\n if (subscriber.closed) {\n if (typeof iterator.return === 'function') {\n iterator.return();\n }\n break;\n }\n } while (true);\n }\n };\n return IteratorObservable;\n}(Observable_1.Observable));\nexports.IteratorObservable = IteratorObservable;\nvar StringIterator = (function () {\n function StringIterator(str, idx, len) {\n if (idx === void 0) { idx = 0; }\n if (len === void 0) { len = str.length; }\n this.str = str;\n this.idx = idx;\n this.len = len;\n }\n StringIterator.prototype[iterator_1.iterator] = function () { return (this); };\n StringIterator.prototype.next = function () {\n return this.idx < this.len ? {\n done: false,\n value: this.str.charAt(this.idx++)\n } : {\n done: true,\n value: undefined\n };\n };\n return StringIterator;\n}());\nvar ArrayIterator = (function () {\n function ArrayIterator(arr, idx, len) {\n if (idx === void 0) { idx = 0; }\n if (len === void 0) { len = toLength(arr); }\n this.arr = arr;\n this.idx = idx;\n this.len = len;\n }\n ArrayIterator.prototype[iterator_1.iterator] = function () { return this; };\n ArrayIterator.prototype.next = function () {\n return this.idx < this.len ? {\n done: false,\n value: this.arr[this.idx++]\n } : {\n done: true,\n value: undefined\n };\n };\n return ArrayIterator;\n}());\nfunction getIterator(obj) {\n var i = obj[iterator_1.iterator];\n if (!i && typeof obj === 'string') {\n return new StringIterator(obj);\n }\n if (!i && obj.length !== undefined) {\n return new ArrayIterator(obj);\n }\n if (!i) {\n throw new TypeError('object is not iterable');\n }\n return obj[iterator_1.iterator]();\n}\nvar maxSafeInteger = Math.pow(2, 53) - 1;\nfunction toLength(o) {\n var len = +o.length;\n if (isNaN(len)) {\n return 0;\n }\n if (len === 0 || !numberIsFinite(len)) {\n return len;\n }\n len = sign(len) * Math.floor(Math.abs(len));\n if (len <= 0) {\n return 0;\n }\n if (len > maxSafeInteger) {\n return maxSafeInteger;\n }\n return len;\n}\nfunction numberIsFinite(value) {\n return typeof value === 'number' && root_1.root.isFinite(value);\n}\nfunction sign(value) {\n var valueAsNumber = +value;\n if (valueAsNumber === 0) {\n return valueAsNumber;\n }\n if (isNaN(valueAsNumber)) {\n return valueAsNumber;\n }\n return valueAsNumber < 0 ? -1 : 1;\n}\n//# sourceMappingURL=IteratorObservable.js.map\n\n/***/ }),\n/* 616 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = __webpack_require__(48);\nvar ScalarObservable_1 = __webpack_require__(549);\nvar EmptyObservable_1 = __webpack_require__(550);\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ArrayLikeObservable = (function (_super) {\n __extends(ArrayLikeObservable, _super);\n function ArrayLikeObservable(arrayLike, scheduler) {\n _super.call(this);\n this.arrayLike = arrayLike;\n this.scheduler = scheduler;\n if (!scheduler && arrayLike.length === 1) {\n this._isScalar = true;\n this.value = arrayLike[0];\n }\n }\n ArrayLikeObservable.create = function (arrayLike, scheduler) {\n var length = arrayLike.length;\n if (length === 0) {\n return new EmptyObservable_1.EmptyObservable();\n }\n else if (length === 1) {\n return new ScalarObservable_1.ScalarObservable(arrayLike[0], scheduler);\n }\n else {\n return new ArrayLikeObservable(arrayLike, scheduler);\n }\n };\n ArrayLikeObservable.dispatch = function (state) {\n var arrayLike = state.arrayLike, index = state.index, length = state.length, subscriber = state.subscriber;\n if (subscriber.closed) {\n return;\n }\n if (index >= length) {\n subscriber.complete();\n return;\n }\n subscriber.next(arrayLike[index]);\n state.index = index + 1;\n this.schedule(state);\n };\n ArrayLikeObservable.prototype._subscribe = function (subscriber) {\n var index = 0;\n var _a = this, arrayLike = _a.arrayLike, scheduler = _a.scheduler;\n var length = arrayLike.length;\n if (scheduler) {\n return scheduler.schedule(ArrayLikeObservable.dispatch, 0, {\n arrayLike: arrayLike, index: index, length: length, subscriber: subscriber\n });\n }\n else {\n for (var i = 0; i < length && !subscriber.closed; i++) {\n subscriber.next(arrayLike[i]);\n }\n subscriber.complete();\n }\n };\n return ArrayLikeObservable;\n}(Observable_1.Observable));\nexports.ArrayLikeObservable = ArrayLikeObservable;\n//# sourceMappingURL=ArrayLikeObservable.js.map\n\n/***/ }),\n/* 617 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = __webpack_require__(115);\nvar Notification_1 = __webpack_require__(618);\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * <span class=\"informal\">Ensure a specific scheduler is used, from outside of an Observable.</span>\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * @example <caption>Ensure values in subscribe are called just before browser repaint.</caption>\n * const intervals = Rx.Observable.interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n *\n * intervals\n * .observeOn(Rx.Scheduler.animationFrame) // ...but we will observe on animationFrame\n * .subscribe(val => { // scheduler to ensure smooth animation.\n * someDiv.style.height = val + 'px';\n * });\n *\n * @see {@link delay}\n *\n * @param {IScheduler} scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return {Observable<T>} Observable that emits the same notifications as the source Observable,\n * but with provided scheduler.\n *\n * @method observeOn\n * @owner Observable\n */\nfunction observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nexports.observeOn = observeOn;\nvar ObserveOnOperator = (function () {\n function ObserveOnOperator(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n };\n return ObserveOnOperator;\n}());\nexports.ObserveOnOperator = ObserveOnOperator;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ObserveOnSubscriber = (function (_super) {\n __extends(ObserveOnSubscriber, _super);\n function ObserveOnSubscriber(destination, scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n _super.call(this, destination);\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnSubscriber.dispatch = function (arg) {\n var notification = arg.notification, destination = arg.destination;\n notification.observe(destination);\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {\n this.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n };\n ObserveOnSubscriber.prototype._next = function (value) {\n this.scheduleMessage(Notification_1.Notification.createNext(value));\n };\n ObserveOnSubscriber.prototype._error = function (err) {\n this.scheduleMessage(Notification_1.Notification.createError(err));\n };\n ObserveOnSubscriber.prototype._complete = function () {\n this.scheduleMessage(Notification_1.Notification.createComplete());\n };\n return ObserveOnSubscriber;\n}(Subscriber_1.Subscriber));\nexports.ObserveOnSubscriber = ObserveOnSubscriber;\nvar ObserveOnMessage = (function () {\n function ObserveOnMessage(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n return ObserveOnMessage;\n}());\nexports.ObserveOnMessage = ObserveOnMessage;\n//# sourceMappingURL=observeOn.js.map\n\n/***/ }),\n/* 618 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar Observable_1 = __webpack_require__(48);\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n *\n * @class Notification<T>\n */\nvar Notification = (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n /**\n * Delivers to the given `observer` the value wrapped by this Notification.\n * @param {Observer} observer\n * @return\n */\n Notification.prototype.observe = function (observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n };\n /**\n * Given some {@link Observer} callbacks, deliver the value represented by the\n * current Notification to the correctly corresponding callback.\n * @param {function(value: T): void} next An Observer `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n Notification.prototype.do = function (next, error, complete) {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n };\n /**\n * Takes an Observer or its individual callback functions, and calls `observe`\n * or `do` methods accordingly.\n * @param {Observer|function(value: T): void} nextOrObserver An Observer or\n * the `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n };\n /**\n * Returns a simple Observable that just delivers the notification represented\n * by this Notification instance.\n * @return {any}\n */\n Notification.prototype.toObservable = function () {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return Observable_1.Observable.of(this.value);\n case 'E':\n return Observable_1.Observable.throw(this.error);\n case 'C':\n return Observable_1.Observable.empty();\n }\n throw new Error('unexpected notification kind value');\n };\n /**\n * A shortcut to create a Notification instance of the type `next` from a\n * given value.\n * @param {T} value The `next` value.\n * @return {Notification<T>} The \"next\" Notification representing the\n * argument.\n */\n Notification.createNext = function (value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n };\n /**\n * A shortcut to create a Notification instance of the type `error` from a\n * given error.\n * @param {any} [err] The `error` error.\n * @return {Notification<T>} The \"error\" Notification representing the\n * argument.\n */\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n /**\n * A shortcut to create a Notification instance of the type `complete`.\n * @return {Notification<any>} The valueless \"complete\" Notification.\n */\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n Notification.undefinedValueNotification = new Notification('N', undefined);\n return Notification;\n}());\nexports.Notification = Notification;\n//# sourceMappingURL=Notification.js.map\n\n/***/ }),\n/* 619 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar mergeAll_1 = __webpack_require__(569);\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.</span>\n *\n * <img src=\"./img/concatAll.png\" width=\"100%\">\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * @example <caption>For each click event, tick every second from 0 to 3, with no concurrency</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map(ev => Rx.Observable.interval(1000).take(4));\n * var firstOrder = higherOrder.concatAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n *\n * @see {@link combineAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable emitting values from all the inner\n * Observables concatenated.\n * @method concatAll\n * @owner Observable\n */\nfunction concatAll() {\n return mergeAll_1.mergeAll(1);\n}\nexports.concatAll = concatAll;\n//# sourceMappingURL=concatAll.js.map\n\n/***/ }),\n/* 620 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nfunction identity(x) {\n return x;\n}\nexports.identity = identity;\n//# sourceMappingURL=identity.js.map\n\n/***/ }),\n/* 621 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar Observable_1 = __webpack_require__(48);\nvar merge_1 = __webpack_require__(622);\nObservable_1.Observable.prototype.merge = merge_1.merge;\n//# sourceMappingURL=merge.js.map\n\n/***/ }),\n/* 622 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar merge_1 = __webpack_require__(623);\nvar merge_2 = __webpack_require__(552);\nexports.mergeStatic = merge_2.merge;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * <img src=\"./img/merge.png\" width=\"100%\">\n *\n * `merge` subscribes to each given input Observable (either the source or an\n * Observable given as argument), and simply forwards (without doing any\n * transformation) all the values from all the input Observables to the output\n * Observable. The output Observable only completes once all input Observables\n * have completed. Any error delivered by an input Observable will be immediately\n * emitted on the output Observable.\n *\n * @example <caption>Merge together two Observables: 1s interval and clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var timer = Rx.Observable.interval(1000);\n * var clicksOrTimer = clicks.merge(timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * @example <caption>Merge together 3 Observables, but only 2 run concurrently</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var concurrent = 2; // the argument\n * var merged = timer1.merge(timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {ObservableInput} other An input Observable to merge with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for managing\n * concurrency of input Observables.\n * @return {Observable} An Observable that emits items that are the result of\n * every input Observable.\n * @method merge\n * @owner Observable\n */\nfunction merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i - 0] = arguments[_i];\n }\n return merge_1.merge.apply(void 0, observables)(this);\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map\n\n/***/ }),\n/* 623 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar merge_1 = __webpack_require__(552);\nvar merge_2 = __webpack_require__(552);\nexports.mergeStatic = merge_2.merge;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * <img src=\"./img/merge.png\" width=\"100%\">\n *\n * `merge` subscribes to each given input Observable (either the source or an\n * Observable given as argument), and simply forwards (without doing any\n * transformation) all the values from all the input Observables to the output\n * Observable. The output Observable only completes once all input Observables\n * have completed. Any error delivered by an input Observable will be immediately\n * emitted on the output Observable.\n *\n * @example <caption>Merge together two Observables: 1s interval and clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var timer = Rx.Observable.interval(1000);\n * var clicksOrTimer = clicks.merge(timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * @example <caption>Merge together 3 Observables, but only 2 run concurrently</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var concurrent = 2; // the argument\n * var merged = timer1.merge(timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {ObservableInput} other An input Observable to merge with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for managing\n * concurrency of input Observables.\n * @return {Observable} An Observable that emits items that are the result of\n * every input Observable.\n * @method merge\n * @owner Observable\n */\nfunction merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i - 0] = arguments[_i];\n }\n return function (source) { return source.lift.call(merge_1.merge.apply(void 0, [source].concat(observables))); };\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map\n\n/***/ }),\n/* 624 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar Observable_1 = __webpack_require__(48);\nvar filter_1 = __webpack_require__(547);\nObservable_1.Observable.prototype.filter = filter_1.filter;\n//# sourceMappingURL=filter.js.map\n\n/***/ }),\n/* 625 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _Resize = __webpack_require__(567);\n\nvar _Resize2 = _interopRequireDefault(_Resize);\n\nvar _Breakpoints = __webpack_require__(626);\n\nvar _Breakpoint = __webpack_require__(627);\n\nvar _Breakpoint2 = _interopRequireDefault(_Breakpoint);\n\nvar _pairwise = __webpack_require__(628);\n\nvar _filter = __webpack_require__(547);\n\nvar _map = __webpack_require__(201);\n\nvar _startWith = __webpack_require__(548);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n *\n * @type {Array<Breakpoint>}\n */\nvar Breakpoints = [];\n\n/**\n * Register a given breakpoint definition consisting of:\n * @private\n * @param {string} key - the breakpoint alias\n * @param {int} min - min width of breakpoint\n * @param {int} max - max width of breakpoint\n * @returns {void}\n */\nfunction register(key, min, max) {\n\n\tvar breakPoint = new _Breakpoint2.default(key, min, max);\n\n\tBreakpoints.push(breakPoint);\n}\n\n/**\n * Read breakpoint definitons from config file and register them for matching.\n * @param {Object} styleConfig - JSON format\n * @returns {void}\n */\nfunction setupBreakpoints(styleConfig) {\n\n\tvar breakPointDefinition = styleConfig[_Breakpoints.BREAKPOINT_DEFINITION];\n\n\tfor (var alias in breakPointDefinition) {\n\n\t\tif (breakPointDefinition.hasOwnProperty(alias)) {\n\n\t\t\tregister(breakPointDefinition[alias][_Breakpoints.KEYS.NAME], breakPointDefinition[alias][_Breakpoints.KEYS.MIN], breakPointDefinition[alias][_Breakpoints.KEYS.MAX]);\n\t\t}\n\t}\n}\n\n/**\n * @private\n * @param {Breakpoint} breakPoint - breakpoint instance\n * @param {int} width - current viewport width\n * @returns {boolean|T} - whether the current width is in range of the breakpoint\n */\nfunction isInRange(breakPoint, width) {\n\n\treturn breakPoint.min <= width && breakPoint.max >= width;\n}\n\n/**\n * Find the current matching breakpoint in the registered breakpoints.\n * @private\n * @param {int} width - the current viewport width\n * @returns {Breakpoint} - the breakpoint which is currently active\n */\nfunction calcBreakpoint(width) {\n\n\t/**\n * @returns {Breakpoint}\n */\n\treturn Breakpoints.find(function (breakPoint) {\n\t\treturn isInRange(breakPoint, width);\n\t});\n}\n\n/**\n * Only dispatch if the new breakpoint is different to the last one.\n * @param events\n * @return {boolean}\n */\nfunction detectBreakpointChange(events) {\n\n\treturn calcBreakpoint(events[0].width) !== calcBreakpoint(events[1].width);\n}\n\n/**\n *\n * @param events\n * @return {Breakpoint}\n */\nfunction getCurrentBreakpoint(events) {\n\n\treturn calcBreakpoint(events[1].width);\n}\n\n/**\n * @public\n * @returns {Observable<TBreakpoint>} - event stream for breakpoint events\n */\nfunction registerBreakpointEvent() {\n\tvar _context;\n\n\t/*eslint-disable */\n\treturn (_context = (_context = (_context = (_context = _Resize2.default.resizeEvent, _startWith.startWith).call(_context, _Resize2.default.getCurrent), _pairwise.pairwise).call(_context), _filter.filter).call(_context, detectBreakpointChange), _map.map).call(_context, getCurrentBreakpoint);\n\t/*eslint-enable */\n}\n\nvar BreakpointService = {\n\n\t/**\n * Inject breakpoint defintions as dependency\n * @public\n */\n\tuse: setupBreakpoints,\n\n\t/**\n * Event stream for resize events\n * @public\n */\n\tbreakpointEvent: registerBreakpointEvent(),\n\n\t/**\n * Get all registered breakpoints\n * @returns {Array<Breakpoint>} - an array containg all registered breakpoints\n * @public\n */\n\tgetBreakpoints: function getBreakpoints() {\n\t\treturn Breakpoints;\n\t}\n};\n\nexports.default = BreakpointService;\n\n/***/ }),\n/* 626 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\t\t\t\t\t\tvalue: true\n});\nvar KEYS = exports.KEYS = {\n\t\t\t\t\t\tNAME: 'name',\n\t\t\t\t\t\tMIN: 'min',\n\t\t\t\t\t\tMAX: 'max'\n},\n BREAKPOINT_DEFINITION = exports.BREAKPOINT_DEFINITION = 'breakpoints';\n\n/***/ }),\n/* 627 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = undefined;\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Breakpoint = function Breakpoint(alias, min, max) {\n\t(0, _classCallCheck3.default)(this, Breakpoint);\n\n\n\tthis.alias = alias;\n\tthis.min = min;\n\tthis.max = max;\n};\n\nexports.default = Breakpoint;\n\n/***/ }),\n/* 628 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar pairwise_1 = __webpack_require__(629);\n/**\n * Groups pairs of consecutive emissions together and emits them as an array of\n * two values.\n *\n * <span class=\"informal\">Puts the current value and previous value together as\n * an array, and emits that.</span>\n *\n * <img src=\"./img/pairwise.png\" width=\"100%\">\n *\n * The Nth emission from the source Observable will cause the output Observable\n * to emit an array [(N-1)th, Nth] of the previous and the current value, as a\n * pair. For this reason, `pairwise` emits on the second and subsequent\n * emissions from the source Observable, but not on the first emission, because\n * there is no previous value in that case.\n *\n * @example <caption>On every click (starting from the second), emit the relative distance to the previous click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var pairs = clicks.pairwise();\n * var distance = pairs.map(pair => {\n * var x0 = pair[0].clientX;\n * var y0 = pair[0].clientY;\n * var x1 = pair[1].clientX;\n * var y1 = pair[1].clientY;\n * return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n * });\n * distance.subscribe(x => console.log(x));\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n *\n * @return {Observable<Array<T>>} An Observable of pairs (as arrays) of\n * consecutive values from the source Observable.\n * @method pairwise\n * @owner Observable\n */\nfunction pairwise() {\n return pairwise_1.pairwise()(this);\n}\nexports.pairwise = pairwise;\n//# sourceMappingURL=pairwise.js.map\n\n/***/ }),\n/* 629 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = __webpack_require__(115);\n/**\n * Groups pairs of consecutive emissions together and emits them as an array of\n * two values.\n *\n * <span class=\"informal\">Puts the current value and previous value together as\n * an array, and emits that.</span>\n *\n * <img src=\"./img/pairwise.png\" width=\"100%\">\n *\n * The Nth emission from the source Observable will cause the output Observable\n * to emit an array [(N-1)th, Nth] of the previous and the current value, as a\n * pair. For this reason, `pairwise` emits on the second and subsequent\n * emissions from the source Observable, but not on the first emission, because\n * there is no previous value in that case.\n *\n * @example <caption>On every click (starting from the second), emit the relative distance to the previous click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var pairs = clicks.pairwise();\n * var distance = pairs.map(pair => {\n * var x0 = pair[0].clientX;\n * var y0 = pair[0].clientY;\n * var x1 = pair[1].clientX;\n * var y1 = pair[1].clientY;\n * return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n * });\n * distance.subscribe(x => console.log(x));\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n *\n * @return {Observable<Array<T>>} An Observable of pairs (as arrays) of\n * consecutive values from the source Observable.\n * @method pairwise\n * @owner Observable\n */\nfunction pairwise() {\n return function (source) { return source.lift(new PairwiseOperator()); };\n}\nexports.pairwise = pairwise;\nvar PairwiseOperator = (function () {\n function PairwiseOperator() {\n }\n PairwiseOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new PairwiseSubscriber(subscriber));\n };\n return PairwiseOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar PairwiseSubscriber = (function (_super) {\n __extends(PairwiseSubscriber, _super);\n function PairwiseSubscriber(destination) {\n _super.call(this, destination);\n this.hasPrev = false;\n }\n PairwiseSubscriber.prototype._next = function (value) {\n if (this.hasPrev) {\n this.destination.next([this.prev, value]);\n }\n else {\n this.hasPrev = true;\n }\n this.prev = value;\n };\n return PairwiseSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=pairwise.js.map\n\n/***/ }),\n/* 630 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(631);\n\n\n/***/ }),\n/* 631 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar destroy = __webpack_require__(632);\nvar initialize = __webpack_require__(636);\nvar update = __webpack_require__(644);\n\nmodule.exports = {\n initialize: initialize,\n update: update,\n destroy: destroy\n};\n\n\n/***/ }),\n/* 632 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(148);\nvar dom = __webpack_require__(204);\nvar instances = __webpack_require__(100);\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n\n if (!i) {\n return;\n }\n\n i.event.unbindAll();\n dom.remove(i.scrollbarX);\n dom.remove(i.scrollbarY);\n dom.remove(i.scrollbarXRail);\n dom.remove(i.scrollbarYRail);\n _.removePsClasses(element);\n\n instances.remove(element);\n};\n\n\n/***/ }),\n/* 633 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n handlers: ['click-rail', 'drag-scrollbar', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipePropagation: true,\n useBothWheelAxes: false,\n wheelPropagation: false,\n wheelSpeed: 1,\n theme: 'default'\n};\n\n\n/***/ }),\n/* 634 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar EventElement = function (element) {\n this.element = element;\n this.events = {};\n};\n\nEventElement.prototype.bind = function (eventName, handler) {\n if (typeof this.events[eventName] === 'undefined') {\n this.events[eventName] = [];\n }\n this.events[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function (eventName, handler) {\n var isHandlerProvided = (typeof handler !== 'undefined');\n this.events[eventName] = this.events[eventName].filter(function (hdlr) {\n if (isHandlerProvided && hdlr !== handler) {\n return true;\n }\n this.element.removeEventListener(eventName, hdlr, false);\n return false;\n }, this);\n};\n\nEventElement.prototype.unbindAll = function () {\n for (var name in this.events) {\n this.unbind(name);\n }\n};\n\nvar EventManager = function () {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function (element) {\n var ee = this.eventElements.filter(function (eventElement) {\n return eventElement.element === element;\n })[0];\n if (typeof ee === 'undefined') {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function (element, eventName, handler) {\n this.eventElement(element).unbind(eventName, handler);\n};\n\nEventManager.prototype.unbindAll = function () {\n for (var i = 0; i < this.eventElements.length; i++) {\n this.eventElements[i].unbindAll();\n }\n};\n\nEventManager.prototype.once = function (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (e) {\n ee.unbind(eventName, onceHandler);\n handler(e);\n };\n ee.bind(eventName, onceHandler);\n};\n\nmodule.exports = EventManager;\n\n\n/***/ }),\n/* 635 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = (function () {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n return function () {\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' +\n s4() + '-' + s4() + s4() + s4();\n };\n})();\n\n\n/***/ }),\n/* 636 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(148);\nvar cls = __webpack_require__(283);\nvar instances = __webpack_require__(100);\nvar updateGeometry = __webpack_require__(149);\n\n// Handlers\nvar handlers = {\n 'click-rail': __webpack_require__(637),\n 'drag-scrollbar': __webpack_require__(638),\n 'keyboard': __webpack_require__(639),\n 'wheel': __webpack_require__(640),\n 'touch': __webpack_require__(641),\n 'selection': __webpack_require__(642)\n};\nvar nativeScrollHandler = __webpack_require__(643);\n\nmodule.exports = function (element, userSettings) {\n userSettings = typeof userSettings === 'object' ? userSettings : {};\n\n cls.add(element, 'ps-container');\n\n // Create a plugin instance.\n var i = instances.add(element);\n\n i.settings = _.extend(i.settings, userSettings);\n cls.add(element, 'ps-theme-' + i.settings.theme);\n\n i.settings.handlers.forEach(function (handlerName) {\n handlers[handlerName](element);\n });\n\n nativeScrollHandler(element);\n\n updateGeometry(element);\n};\n\n\n/***/ }),\n/* 637 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar instances = __webpack_require__(100);\nvar updateGeometry = __webpack_require__(149);\nvar updateScroll = __webpack_require__(157);\n\nfunction bindClickRailHandler(element, i) {\n function pageOffset(el) {\n return el.getBoundingClientRect();\n }\n var stopPropagation = function (e) { e.stopPropagation(); };\n\n i.event.bind(i.scrollbarY, 'click', stopPropagation);\n i.event.bind(i.scrollbarYRail, 'click', function (e) {\n var positionTop = e.pageY - window.pageYOffset - pageOffset(i.scrollbarYRail).top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n updateScroll(element, 'top', element.scrollTop + direction * i.containerHeight);\n updateGeometry(element);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'click', stopPropagation);\n i.event.bind(i.scrollbarXRail, 'click', function (e) {\n var positionLeft = e.pageX - window.pageXOffset - pageOffset(i.scrollbarXRail).left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n updateScroll(element, 'left', element.scrollLeft + direction * i.containerWidth);\n updateGeometry(element);\n\n e.stopPropagation();\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindClickRailHandler(element, i);\n};\n\n\n/***/ }),\n/* 638 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(148);\nvar dom = __webpack_require__(204);\nvar instances = __webpack_require__(100);\nvar updateGeometry = __webpack_require__(149);\nvar updateScroll = __webpack_require__(157);\n\nfunction bindMouseScrollXHandler(element, i) {\n var currentLeft = null;\n var currentPageX = null;\n\n function updateScrollLeft(deltaX) {\n var newLeft = currentLeft + (deltaX * i.railXRatio);\n var maxLeft = Math.max(0, i.scrollbarXRail.getBoundingClientRect().left) + (i.railXRatio * (i.railXWidth - i.scrollbarXWidth));\n\n if (newLeft < 0) {\n i.scrollbarXLeft = 0;\n } else if (newLeft > maxLeft) {\n i.scrollbarXLeft = maxLeft;\n } else {\n i.scrollbarXLeft = newLeft;\n }\n\n var scrollLeft = _.toInt(i.scrollbarXLeft * (i.contentWidth - i.containerWidth) / (i.containerWidth - (i.railXRatio * i.scrollbarXWidth))) - i.negativeScrollAdjustment;\n updateScroll(element, 'left', scrollLeft);\n }\n\n var mouseMoveHandler = function (e) {\n updateScrollLeft(e.pageX - currentPageX);\n updateGeometry(element);\n e.stopPropagation();\n e.preventDefault();\n };\n\n var mouseUpHandler = function () {\n _.stopScrolling(element, 'x');\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n };\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) {\n currentPageX = e.pageX;\n currentLeft = _.toInt(dom.css(i.scrollbarX, 'left')) * i.railXRatio;\n _.startScrolling(element, 'x');\n\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n e.stopPropagation();\n e.preventDefault();\n });\n}\n\nfunction bindMouseScrollYHandler(element, i) {\n var currentTop = null;\n var currentPageY = null;\n\n function updateScrollTop(deltaY) {\n var newTop = currentTop + (deltaY * i.railYRatio);\n var maxTop = Math.max(0, i.scrollbarYRail.getBoundingClientRect().top) + (i.railYRatio * (i.railYHeight - i.scrollbarYHeight));\n\n if (newTop < 0) {\n i.scrollbarYTop = 0;\n } else if (newTop > maxTop) {\n i.scrollbarYTop = maxTop;\n } else {\n i.scrollbarYTop = newTop;\n }\n\n var scrollTop = _.toInt(i.scrollbarYTop * (i.contentHeight - i.containerHeight) / (i.containerHeight - (i.railYRatio * i.scrollbarYHeight)));\n updateScroll(element, 'top', scrollTop);\n }\n\n var mouseMoveHandler = function (e) {\n updateScrollTop(e.pageY - currentPageY);\n updateGeometry(element);\n e.stopPropagation();\n e.preventDefault();\n };\n\n var mouseUpHandler = function () {\n _.stopScrolling(element, 'y');\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n };\n\n i.event.bind(i.scrollbarY, 'mousedown', function (e) {\n currentPageY = e.pageY;\n currentTop = _.toInt(dom.css(i.scrollbarY, 'top')) * i.railYRatio;\n _.startScrolling(element, 'y');\n\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n e.stopPropagation();\n e.preventDefault();\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindMouseScrollXHandler(element, i);\n bindMouseScrollYHandler(element, i);\n};\n\n\n/***/ }),\n/* 639 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(148);\nvar dom = __webpack_require__(204);\nvar instances = __webpack_require__(100);\nvar updateGeometry = __webpack_require__(149);\nvar updateScroll = __webpack_require__(157);\n\nfunction bindKeyboardHandler(element, i) {\n var hovered = false;\n i.event.bind(element, 'mouseenter', function () {\n hovered = true;\n });\n i.event.bind(element, 'mouseleave', function () {\n hovered = false;\n });\n\n var shouldPrevent = false;\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = element.scrollTop;\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if ((scrollTop === 0 && deltaY > 0) || (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if ((scrollLeft === 0 && deltaX < 0) || (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if ((e.isDefaultPrevented && e.isDefaultPrevented()) || e.defaultPrevented) {\n return;\n }\n\n var focused = dom.matches(i.scrollbarX, ':focus') ||\n dom.matches(i.scrollbarY, ':focus');\n\n if (!hovered && !focused) {\n return;\n }\n\n var activeElement = document.activeElement ? document.activeElement : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (_.isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 33: // page up\n deltaY = 90;\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = 90;\n } else {\n deltaY = -90;\n }\n break;\n case 34: // page down\n deltaY = -90;\n break;\n case 35: // end\n if (e.ctrlKey) {\n deltaY = -i.contentHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 36: // home\n if (e.ctrlKey) {\n deltaY = element.scrollTop;\n } else {\n deltaY = i.containerHeight;\n }\n break;\n default:\n return;\n }\n\n updateScroll(element, 'top', element.scrollTop - deltaY);\n updateScroll(element, 'left', element.scrollLeft + deltaX);\n updateGeometry(element);\n\n shouldPrevent = shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent) {\n e.preventDefault();\n }\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindKeyboardHandler(element, i);\n};\n\n\n/***/ }),\n/* 640 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar instances = __webpack_require__(100);\nvar updateGeometry = __webpack_require__(149);\nvar updateScroll = __webpack_require__(157);\n\nfunction bindMouseWheelHandler(element, i) {\n var shouldPrevent = false;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = element.scrollTop;\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if ((scrollTop === 0 && deltaY > 0) || (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if ((scrollLeft === 0 && deltaX < 0) || (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === \"undefined\" || typeof deltaY === \"undefined\") {\n // OS X Safari\n deltaX = -1 * e.wheelDeltaX / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY/* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(deltaX, deltaY) {\n var child = element.querySelector('textarea:hover, select[multiple]:hover, .ps-child:hover');\n if (child) {\n if (!window.getComputedStyle(child).overflow.match(/(scroll|auto)/)) {\n // if not scrollable\n return false;\n }\n\n var maxScrollTop = child.scrollHeight - child.clientHeight;\n if (maxScrollTop > 0) {\n if (!(child.scrollTop === 0 && deltaY > 0) && !(child.scrollTop === maxScrollTop && deltaY < 0)) {\n return true;\n }\n }\n var maxScrollLeft = child.scrollLeft - child.clientWidth;\n if (maxScrollLeft > 0) {\n if (!(child.scrollLeft === 0 && deltaX < 0) && !(child.scrollLeft === maxScrollLeft && deltaX > 0)) {\n return true;\n }\n }\n }\n return false;\n }\n\n function mousewheelHandler(e) {\n var delta = getDeltaFromEvent(e);\n\n var deltaX = delta[0];\n var deltaY = delta[1];\n\n if (shouldBeConsumedByChild(deltaX, deltaY)) {\n return;\n }\n\n shouldPrevent = false;\n if (!i.settings.useBothWheelAxes) {\n // deltaX will only be used for horizontal scrolling and deltaY will\n // only be used for vertical scrolling - this is the default\n updateScroll(element, 'top', element.scrollTop - (deltaY * i.settings.wheelSpeed));\n updateScroll(element, 'left', element.scrollLeft + (deltaX * i.settings.wheelSpeed));\n } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n // only vertical scrollbar is active and useBothWheelAxes option is\n // active, so let's scroll vertical bar using both mouse wheel axes\n if (deltaY) {\n updateScroll(element, 'top', element.scrollTop - (deltaY * i.settings.wheelSpeed));\n } else {\n updateScroll(element, 'top', element.scrollTop + (deltaX * i.settings.wheelSpeed));\n }\n shouldPrevent = true;\n } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n // useBothWheelAxes and only horizontal bar is active, so use both\n // wheel axes for horizontal bar\n if (deltaX) {\n updateScroll(element, 'left', element.scrollLeft + (deltaX * i.settings.wheelSpeed));\n } else {\n updateScroll(element, 'left', element.scrollLeft - (deltaY * i.settings.wheelSpeed));\n }\n shouldPrevent = true;\n }\n\n updateGeometry(element);\n\n shouldPrevent = (shouldPrevent || shouldPreventDefault(deltaX, deltaY));\n if (shouldPrevent) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n if (typeof window.onwheel !== \"undefined\") {\n i.event.bind(element, 'wheel', mousewheelHandler);\n } else if (typeof window.onmousewheel !== \"undefined\") {\n i.event.bind(element, 'mousewheel', mousewheelHandler);\n }\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindMouseWheelHandler(element, i);\n};\n\n\n/***/ }),\n/* 641 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(148);\nvar instances = __webpack_require__(100);\nvar updateGeometry = __webpack_require__(149);\nvar updateScroll = __webpack_require__(157);\n\nfunction bindTouchHandler(element, i, supportsTouch, supportsIePointer) {\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = element.scrollTop;\n var scrollLeft = element.scrollLeft;\n var magnitudeX = Math.abs(deltaX);\n var magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (((deltaY < 0) && (scrollTop === i.contentHeight - i.containerHeight)) ||\n ((deltaY > 0) && (scrollTop === 0))) {\n return !i.settings.swipePropagation;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (((deltaX < 0) && (scrollLeft === i.contentWidth - i.containerWidth)) ||\n ((deltaX > 0) && (scrollLeft === 0))) {\n return !i.settings.swipePropagation;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n updateScroll(element, 'top', element.scrollTop - differenceY);\n updateScroll(element, 'left', element.scrollLeft - differenceX);\n\n updateGeometry(element);\n }\n\n var startOffset = {};\n var startTime = 0;\n var speed = {};\n var easingLoop = null;\n var inGlobalTouch = false;\n var inLocalTouch = false;\n\n function globalTouchStart() {\n inGlobalTouch = true;\n }\n function globalTouchEnd() {\n inGlobalTouch = false;\n }\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n } else {\n // Maybe IE pointer\n return e;\n }\n }\n function shouldHandle(e) {\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (e.pointerType && e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) {\n return true;\n }\n return false;\n }\n function touchStart(e) {\n if (shouldHandle(e)) {\n inLocalTouch = true;\n\n var touch = getTouch(e);\n\n startOffset.pageX = touch.pageX;\n startOffset.pageY = touch.pageY;\n\n startTime = (new Date()).getTime();\n\n if (easingLoop !== null) {\n clearInterval(easingLoop);\n }\n\n e.stopPropagation();\n }\n }\n function touchMove(e) {\n if (!inLocalTouch && i.settings.swipePropagation) {\n touchStart(e);\n }\n if (!inGlobalTouch && inLocalTouch && shouldHandle(e)) {\n var touch = getTouch(e);\n\n var currentOffset = {pageX: touch.pageX, pageY: touch.pageY};\n\n var differenceX = currentOffset.pageX - startOffset.pageX;\n var differenceY = currentOffset.pageY - startOffset.pageY;\n\n applyTouchMove(differenceX, differenceY);\n startOffset = currentOffset;\n\n var currentTime = (new Date()).getTime();\n\n var timeGap = currentTime - startTime;\n if (timeGap > 0) {\n speed.x = differenceX / timeGap;\n speed.y = differenceY / timeGap;\n startTime = currentTime;\n }\n\n if (shouldPreventDefault(differenceX, differenceY)) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n }\n function touchEnd() {\n if (!inGlobalTouch && inLocalTouch) {\n inLocalTouch = false;\n\n clearInterval(easingLoop);\n easingLoop = setInterval(function () {\n if (!instances.get(element)) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!speed.x && !speed.y) {\n clearInterval(easingLoop);\n return;\n }\n\n if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n clearInterval(easingLoop);\n return;\n }\n\n applyTouchMove(speed.x * 30, speed.y * 30);\n\n speed.x *= 0.8;\n speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (supportsTouch) {\n i.event.bind(window, 'touchstart', globalTouchStart);\n i.event.bind(window, 'touchend', globalTouchEnd);\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (supportsIePointer) {\n if (window.PointerEvent) {\n i.event.bind(window, 'pointerdown', globalTouchStart);\n i.event.bind(window, 'pointerup', globalTouchEnd);\n i.event.bind(element, 'pointerdown', touchStart);\n i.event.bind(element, 'pointermove', touchMove);\n i.event.bind(element, 'pointerup', touchEnd);\n } else if (window.MSPointerEvent) {\n i.event.bind(window, 'MSPointerDown', globalTouchStart);\n i.event.bind(window, 'MSPointerUp', globalTouchEnd);\n i.event.bind(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n}\n\nmodule.exports = function (element) {\n if (!_.env.supportsTouch && !_.env.supportsIePointer) {\n return;\n }\n\n var i = instances.get(element);\n bindTouchHandler(element, i, _.env.supportsTouch, _.env.supportsIePointer);\n};\n\n\n/***/ }),\n/* 642 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(148);\nvar instances = __webpack_require__(100);\nvar updateGeometry = __webpack_require__(149);\nvar updateScroll = __webpack_require__(157);\n\nfunction bindSelectionHandler(element, i) {\n function getRangeNode() {\n var selection = window.getSelection ? window.getSelection() :\n document.getSelection ? document.getSelection() : '';\n if (selection.toString().length === 0) {\n return null;\n } else {\n return selection.getRangeAt(0).commonAncestorContainer;\n }\n }\n\n var scrollingLoop = null;\n var scrollDiff = {top: 0, left: 0};\n function startScrolling() {\n if (!scrollingLoop) {\n scrollingLoop = setInterval(function () {\n if (!instances.get(element)) {\n clearInterval(scrollingLoop);\n return;\n }\n\n updateScroll(element, 'top', element.scrollTop + scrollDiff.top);\n updateScroll(element, 'left', element.scrollLeft + scrollDiff.left);\n updateGeometry(element);\n }, 50); // every .1 sec\n }\n }\n function stopScrolling() {\n if (scrollingLoop) {\n clearInterval(scrollingLoop);\n scrollingLoop = null;\n }\n _.stopScrolling(element);\n }\n\n var isSelected = false;\n i.event.bind(i.ownerDocument, 'selectionchange', function () {\n if (element.contains(getRangeNode())) {\n isSelected = true;\n } else {\n isSelected = false;\n stopScrolling();\n }\n });\n i.event.bind(window, 'mouseup', function () {\n if (isSelected) {\n isSelected = false;\n stopScrolling();\n }\n });\n i.event.bind(window, 'keyup', function () {\n if (isSelected) {\n isSelected = false;\n stopScrolling();\n }\n });\n\n i.event.bind(window, 'mousemove', function (e) {\n if (isSelected) {\n var mousePosition = {x: e.pageX, y: e.pageY};\n var containerGeometry = {\n left: element.offsetLeft,\n right: element.offsetLeft + element.offsetWidth,\n top: element.offsetTop,\n bottom: element.offsetTop + element.offsetHeight\n };\n\n if (mousePosition.x < containerGeometry.left + 3) {\n scrollDiff.left = -5;\n _.startScrolling(element, 'x');\n } else if (mousePosition.x > containerGeometry.right - 3) {\n scrollDiff.left = 5;\n _.startScrolling(element, 'x');\n } else {\n scrollDiff.left = 0;\n }\n\n if (mousePosition.y < containerGeometry.top + 3) {\n if (containerGeometry.top + 3 - mousePosition.y < 5) {\n scrollDiff.top = -5;\n } else {\n scrollDiff.top = -20;\n }\n _.startScrolling(element, 'y');\n } else if (mousePosition.y > containerGeometry.bottom - 3) {\n if (mousePosition.y - containerGeometry.bottom + 3 < 5) {\n scrollDiff.top = 5;\n } else {\n scrollDiff.top = 20;\n }\n _.startScrolling(element, 'y');\n } else {\n scrollDiff.top = 0;\n }\n\n if (scrollDiff.top === 0 && scrollDiff.left === 0) {\n stopScrolling();\n } else {\n startScrolling();\n }\n }\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindSelectionHandler(element, i);\n};\n\n\n/***/ }),\n/* 643 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar instances = __webpack_require__(100);\nvar updateGeometry = __webpack_require__(149);\n\nfunction bindNativeScrollHandler(element, i) {\n i.event.bind(element, 'scroll', function () {\n updateGeometry(element);\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindNativeScrollHandler(element, i);\n};\n\n\n/***/ }),\n/* 644 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(148);\nvar dom = __webpack_require__(204);\nvar instances = __webpack_require__(100);\nvar updateGeometry = __webpack_require__(149);\nvar updateScroll = __webpack_require__(157);\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n\n if (!i) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n i.negativeScrollAdjustment = i.isNegativeScroll ? element.scrollWidth - element.clientWidth : 0;\n\n // Recalculate rail margins\n dom.css(i.scrollbarXRail, 'display', 'block');\n dom.css(i.scrollbarYRail, 'display', 'block');\n i.railXMarginWidth = _.toInt(dom.css(i.scrollbarXRail, 'marginLeft')) + _.toInt(dom.css(i.scrollbarXRail, 'marginRight'));\n i.railYMarginHeight = _.toInt(dom.css(i.scrollbarYRail, 'marginTop')) + _.toInt(dom.css(i.scrollbarYRail, 'marginBottom'));\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n dom.css(i.scrollbarXRail, 'display', 'none');\n dom.css(i.scrollbarYRail, 'display', 'none');\n\n updateGeometry(element);\n\n // Update top/left scroll to trigger events\n updateScroll(element, 'top', element.scrollTop);\n updateScroll(element, 'left', element.scrollLeft);\n\n dom.css(i.scrollbarXRail, 'display', '');\n dom.css(i.scrollbarYRail, 'display', '');\n};\n\n\n/***/ }),\n/* 645 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _TransitionEvent = __webpack_require__(119);\n\nvar _TransitionEvent2 = _interopRequireDefault(_TransitionEvent);\n\nvar _Identifiers = __webpack_require__(158);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Add the event handlers\n *\n * @returns {void}\n */\nfunction addHandler() {\n\tvar self = this,\n\t slaveContainer = self.$mainHeader.add('#off-screen-wrap');\n\n\tself.beforeOpen(function ($trigger) {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tslaveContainer.addClass('osc--during-animation osc--during-animation--open');\n\t\t});\n\t});\n\n\tself.afterOpen(function ($trigger) {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tslaveContainer.removeClass('osc--during-animation osc--during-animation--open');\n\t\t});\n\t});\n\n\tself.beforeClose(function ($trigger) {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tslaveContainer.addClass('osc--during-animation osc--during-animation--close');\n\t\t});\n\t});\n\n\tself.afterClose(function ($trigger) {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tslaveContainer.removeClass('osc--during-animation osc--during-animation--close');\n\t\t});\n\t});\n}\n\nfunction getCookie(name) {\n\tvar match = document.cookie.match(new RegExp(name + '=([^;]+)'));\n\n\tif (match) {\n\t\treturn match[1];\n\t}\n}\n\nfunction setCartCountFromCookie() {\n\tvar self = this,\n\t cookieData = getCookie('BasketCount'),\n\t htmlData = self.$cartCounter.attr('data-content') || 0,\n\t count = cookieData ? cookieData.replace(/\"/g, '').split(',')[0] : 0;\n\n\tif (count > 0 && count != htmlData) {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tself.$cartCounter.attr('data-content', count);\n\t\t});\n\t}\n}\n\n/**\n * Class handling the state of off-screen-cart container.\n * Controls the state of the container.\n * @extends { TransitionEventController }\n */\n\nvar OffScreenCartController = function (_TransitionEventContr) {\n\t(0, _inherits3.default)(OffScreenCartController, _TransitionEventContr);\n\n\tfunction OffScreenCartController() {\n\t\t(0, _classCallCheck3.default)(this, OffScreenCartController);\n\n\t\tvar _this = (0, _possibleConstructorReturn3.default)(this, _TransitionEventContr.call(this));\n\n\t\t_this.$scope = null;\n\t\treturn _this;\n\t}\n\n\t/**\n * Initialises the controller singleton.\n * Has to be called after ready event.\n *\n * @param { object } $root - jQuery wrapped DOM node\n * @public\n * @returns {void}\n */\n\n\n\tOffScreenCartController.prototype.init = function init($root) {\n\t\tvar self = this;\n\n\t\t_TransitionEventContr.prototype.init.call(this, $root);\n\n\t\tself.$scope = $root;\n\n\t\tself.$mainHeader = (0, _jquery2.default)(_Identifiers.IDENTIFIERS.MAIN_HEADER.ROOT);\n\t\tself.$cart = self.$mainHeader.find('.cart');\n\t\tself.$cartCounter = self.$mainHeader.find('.cart [data-element=\"notification-badge\"]');\n\n\t\tself.setTransition('transform');\n\n\t\tsetCartCountFromCookie.call(self);\n\t\taddHandler.call(self);\n\t};\n\n\treturn OffScreenCartController;\n}(_TransitionEvent2.default);\n\n/**\n * @private\n * @type { OffScreenCartController }\n */\n\n\nvar instance = new OffScreenCartController();\n\nexports.default = instance;\n\n/***/ }),\n/* 646 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(80);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _TransitionEvent = __webpack_require__(119);\n\nvar _TransitionEvent2 = _interopRequireDefault(_TransitionEvent);\n\nvar _global = __webpack_require__(103);\n\nvar _Identifiers = __webpack_require__(158);\n\nvar _Bucket = __webpack_require__(125);\n\nvar _Bucket2 = _interopRequireDefault(_Bucket);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _device = __webpack_require__(54);\n\nvar _device2 = _interopRequireDefault(_device);\n\nvar _WindowGateway = __webpack_require__(118);\n\nvar _WindowGateway2 = _interopRequireDefault(_WindowGateway);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar windowGateway = new _WindowGateway2.default();\n\nfunction determineDrawerHeight() {\n\tvar _this = this;\n\n\tif (!this.$drawer || this.$drawer.length < 1) {\n\t\treturn;\n\t}\n\n\tthis.$drawer.each(function (i, v) {\n\t\tvar dim = (0, _global.getHiddenDimensions)((0, _jquery2.default)(v), 'height', true);\n\n\t\tif (dim.outerHeight > _this.minHeight) {\n\t\t\t_this._drawerDim[v.getAttribute('id')] = {\n\t\t\t\theight: dim.outerHeight\n\t\t\t};\n\t\t\t(0, _jquery2.default)(v).css('height', dim.outerHeight);\n\t\t}\n\t});\n}\n\nfunction determineMinHeight() {\n\tif (!this.$drawer || this.$drawer.length < 1) {\n\t\treturn;\n\t}\n\n\tvar style = window.getComputedStyle(this.$scope[0]);\n\n\tif (style) {\n\t\tthis.minHeight = parseInt(style.getPropertyValue('height').replace('px', ''), 10);\n\t\tthis.curHeight = this.minHeight;\n\t}\n}\n\nfunction determineHeights() {\n\tdetermineMinHeight.call(this);\n\tdetermineDrawerHeight.call(this);\n}\n\n/**\n * Hide the app drawer and remove classes / attributes set\n *\n * @private\n * @param {Object} $trigger - jQuery wrapped DOM node, Button which triggered the close\n * @return {void}\n */\nfunction closeAppDrawerContainer($trigger) {\n\tvar _this2 = this;\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\t_this2.$scope.css('height', '');\n\t\t_this2.$scope.removeClass('drawer-' + _this2.currentDrawer);\n\t\t_this2.currentDrawer = '';\n\t});\n}\n\n/**\n * Hide the app drawer and remove classes / attributes set\n *\n * @private\n * @param {Object} $trigger - jQuery wrapped DOM node, Button which triggered the open\n * @return {void}\n */\nfunction openAppDrawerContainer($trigger) {\n\tvar _this3 = this;\n\n\tdetermineDrawerHeight.call(this);\n\n\tvar nextDrawer = void 0,\n\t isSearchNext = false,\n\t dimensionDiffers = false;\n\n\t_fasterdom2.default.measureInstant(function () {\n\t\tnextDrawer = $trigger.attr('aria-controls-drawer');\n\t\tisSearchNext = nextDrawer === 'search-drawer' && _this3.$scope.find('[data-tpl = ses01]').length;\n\t\tdimensionDiffers = _this3._drawerDim.hasOwnProperty(nextDrawer) && _this3._drawerDim[nextDrawer].height > _this3.minHeight || !_this3._drawerDim.hasOwnProperty(nextDrawer) && _this3.curHeight !== _this3.minHeight;\n\t});\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\tif (_this3.currentDrawer) {\n\t\t\t_this3.$scope.removeClass('drawer-' + _this3.currentDrawer);\n\t\t}\n\n\t\tif (isSearchNext) {\n\t\t\t(_this3.currentDrawer ? _this3.drawerCollection.afterTransitionOnce : _this3.afterOpenOnce).call(_this3, function () {\n\t\t\t\treturn _this3.$scope.find('[data-tpl=ses01] #search').focus();\n\t\t\t});\n\t\t}\n\n\t\t_this3.$scope.addClass('drawer-' + nextDrawer);\n\t\t_this3.currentDrawer = nextDrawer;\n\n\t\tif (dimensionDiffers) {\n\t\t\tvar theHeight = _this3._drawerDim[nextDrawer] && _this3._drawerDim[nextDrawer].height > _this3.minHeight ? _this3._drawerDim[nextDrawer].height : '';\n\n\t\t\t_this3.$scope.css('height', theHeight);\n\t\t\t_this3.curHeight = theHeight || _this3.minHeight;\n\n\t\t\tif (_this3.curHeight !== _this3.minHeight) {\n\t\t\t\t_this3.$offScreenContent.css('transform', 'translateY(' + _this3.curHeight + 'px)');\n\t\t\t} else {\n\t\t\t\t_this3.$offScreenContent.css('transform', '');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/**\n * Add the event handlers\n *\n * @returns {void}\n */\nfunction addHandler() {\n\tvar _this4 = this;\n\n\tvar self = this,\n\t slaveContainer = self.$offScreenContent.add(self.$mainHeader);\n\n\tself.$scope.on('fix.main-header', function (e, headerHeight) {\n\t\tself.isFixed = true;\n\t\t_fasterdom2.default.mutate(function () {\n\t\t\tself.$scope.css({ position: 'fixed', top: headerHeight });\n\t\t});\n\t});\n\n\tself.$scope.on('release.main-header', function (e, headerHeight) {\n\t\tself.isFixed = false;\n\t\t_fasterdom2.default.mutate(function () {\n\t\t\tself.$scope.css({ position: '', top: '' });\n\t\t});\n\t});\n\n\tself.onOpen(function ($trigger) {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tslaveContainer.addClass('osad--open osad--during-animation--open osad--during-animation');\n\t\t});\n\t\topenAppDrawerContainer.call(self, $trigger);\n\t});\n\n\tself.afterOpen(function ($trigger) {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tslaveContainer.removeClass('osad--during-animation osad--during-animation--open');\n\t\t});\n\t});\n\n\tself.onClose(function ($trigger) {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t_this4.$offScreenContent.css('transform', '');\n\t\t\tslaveContainer.addClass('osad--during-animation--close osad--during-animation');\n\t\t});\n\t});\n\n\tself.afterClose(function ($trigger) {\n\t\tcloseAppDrawerContainer.call(self, $trigger);\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tslaveContainer.removeClass('osad--during-animation osad--during-animation--close osad--open');\n\t\t});\n\t});\n\n\tself.$scope.on('open-attempt', function (e, $trigger) {\n\t\topenAppDrawerContainer.call(self, $trigger);\n\t});\n\n\tself.$scope.on('close-attempt', function (e, $trigger) {\n\t\topenAppDrawerContainer.call(self, $trigger);\n\t});\n\n\t_device2.default.breakpointEvent.subscribe(function (current) {\n\t\tif (self.isOpen && (self.currentDrawer === 'contact-drawer' || self.currentDrawer === 'login-drawer') && (current.alias === 'md' || current.alias === 'xs')) {\n\t\t\t_Bucket2.default.controller.framework.offscreen.close();\n\t\t}\n\t});\n\n\t_device2.default.resizeEvent.subscribe(determineHeights.bind(this));\n}\n\n/**\n * Class handling the state of off-screen-app-drawer container.\n * Controls the state container and sub container.\n * @extends { TransitionEventController }\n */\n\nvar OffScreenAppDrawerController = function (_TransitionEventContr) {\n\t(0, _inherits3.default)(OffScreenAppDrawerController, _TransitionEventContr);\n\n\tfunction OffScreenAppDrawerController() {\n\t\t(0, _classCallCheck3.default)(this, OffScreenAppDrawerController);\n\n\t\tvar _this5 = (0, _possibleConstructorReturn3.default)(this, _TransitionEventContr.call(this));\n\n\t\t_this5.$scope = null;\n\n\t\t_this5._isFixed = false;\n\t\t_this5._isOpen = false;\n\t\t_this5._currentDrawer = false;\n\n\t\t_this5._drawerDim = {};\n\n\t\t_this5.minHeight = 0;\n\t\t_this5.curHeight = 0;\n\t\treturn _this5;\n\t}\n\n\t/**\n * Initialises the controller singleton.\n * Has to be called after ready event.\n *\n * @public\n * @param {Object} $root - jQuery wrapped DOM node\n * @returns {void}\n */\n\n\n\tOffScreenAppDrawerController.prototype.init = function init($root) {\n\t\tvar _this6 = this;\n\n\t\t_TransitionEventContr.prototype.init.call(this, $root);\n\n\t\tthis.currentDrawer = '';\n\t\tthis.$scope = $root;\n\t\tthis.$container = $root.children('div');\n\n\t\tthis.$drawer = this.$container.children('.app-drawer');\n\n\t\tthis.drawerCollection = new _TransitionEvent2.default();\n\t\tthis.drawerCollection.init(this.$drawer);\n\t\tthis.drawerCollection.setTransition('transform');\n\n\t\tthis.$offScreenContent = (0, _jquery2.default)(_Identifiers.IDENTIFIERS.OFF_SCREEN.CONTENT);\n\t\tthis.$mainHeader = (0, _jquery2.default)(_Identifiers.IDENTIFIERS.MAIN_HEADER.ROOT);\n\n\t\tthis.setTransition('transform');\n\n\t\tdetermineHeights.call(this);\n\n\t\twindowGateway.messageEvent.subscribe(function (message) {\n\t\t\tif (message.type && (message.type === 'scriptReady' || message.type === 'styleReady')) {\n\t\t\t\tdetermineHeights.call(_this6);\n\t\t\t}\n\t\t});\n\n\t\taddHandler.call(this);\n\t};\n\n\t(0, _createClass3.default)(OffScreenAppDrawerController, [{\n\t\tkey: 'isFixed',\n\t\tset: function set(is) {\n\t\t\tif (is === true) {\n\t\t\t\tthis._isFixed = true;\n\t\t\t} else {\n\t\t\t\tthis._isFixed = false;\n\t\t\t}\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this._isFixed;\n\t\t}\n\t}, {\n\t\tkey: 'currentDrawer',\n\t\tset: function set(is) {\n\t\t\tif (typeof is === 'string') {\n\t\t\t\tthis._currentDrawer = is;\n\t\t\t} else {\n\t\t\t\tthis._currentDrawer = false;\n\t\t\t}\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this._currentDrawer;\n\t\t}\n\t}]);\n\treturn OffScreenAppDrawerController;\n}(_TransitionEvent2.default);\n\n/**\n * @private\n * @type { OffScreenAppDrawerController }\n */\n\n\nvar instance = new OffScreenAppDrawerController(); // eslint-disable-line one-var\n\nexports.default = instance;\n\n/***/ }),\n/* 647 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order of result values is determined by the\n * order they occur in the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = intersection;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(101)))\n\n/***/ }),\n/* 648 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order of result values is determined by the\n * order they occur in the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = difference;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(101)))\n\n/***/ }),\n/* 649 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(80);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _keys = __webpack_require__(102);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _assign = __webpack_require__(116);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _OffscreenNavigation = __webpack_require__(280);\n\nvar _OffscreenNavigation2 = _interopRequireDefault(_OffscreenNavigation);\n\nvar _device = __webpack_require__(54);\n\nvar _device2 = _interopRequireDefault(_device);\n\nvar _Scroll = __webpack_require__(551);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The classes used on HTML-elements\n * @type {Object}\n */\n/** @module framework/mainHeader */\nvar classes = {\n\tfixed: 'main-header--fixed',\n\tunfixed: 'main-header--unfixed',\n\toutViewport: 'main-header--out-of-viewport',\n\tinViewport: 'main-header--in-viewport',\n\tanimIn: 'main-header--anim-in',\n\tanimOut: 'main-header--anim-out'\n},\n\n/**\n * Threshold in pixel to offset the animation begining / end\n * @type {Number}\n */\nthreshold = 100,\n\n/**\n * Replacable strings for the animation steps\n * @type {Object}\n */\nanims = {\n\tout: {\n\t\topacity: '1 - %s',\n\t\ttop: '%s * ' + threshold\n\t}\n};\n\n/**\n * Reset the styles changed during animating the header in\n *\n * @private\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction resetAnimIn() {\n\tvar self = this;\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\tself.animEl.children().css({ marginTop: '' });\n\t});\n}\n\n/**\n * Animate the header in again, after it was fixed\n *\n * @private\n * @param {float} step Current step of animation between 0 and 1\n * @param {Object} data Current Scroll Event Object { x, y, direction }\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction animIn(step, data) {\n\tvar self = this;\n\n\tif (data.y < self.bounds.y + self.childPosition - self.childPositionOpen) {\n\t\tself.isFixed = false;\n\n\t\tresetAnimIn.call(self);\n\t}\n}\n\n/**\n * Checks if the header needs to be animated in again\n *\n * @private\n * @param {Object} data Current Scroll Event Object { x, y, direction }\n * @param {float} step Current step of animation between 0 and 1\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction checkAnimIn(data, step) {\n\tvar self = this;\n\n\tif (step <= 0 || step >= 1 || !self.isFixed) {\n\t\tresetAnimIn.call(self);\n\t\tself.isAnimIn = false;\n\t\treturn;\n\t}\n\n\tif (!self.isAnimIn) {\n\t\tself.isAnimIn = true;\n\t}\n\n\tanimIn.call(self, step, data);\n}\n\n/**\n * Reset the styles changed during animating the header out\n *\n * @private\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction resetAnimOut() {\n\tvar self = this;\n\n\tvar anim = (0, _assign2.default)({}, anims.out);\n\n\t(0, _keys2.default)(anim).forEach(function (key) {\n\t\tanim[key] = '';\n\t});\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\tself.animEl.css(anim);\n\t});\n}\n\n/**\n * Animate the header out\n *\n * @private\n * @param {float} step Current step of animation between 0 and 1\n * @param {Object} data Current Scroll Event Object { x, y, direction }\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction animOut(step, data) {\n\tvar self = this;\n\n\tvar anim = (0, _assign2.default)({}, anims.out);\n\n\t(0, _keys2.default)(anim).forEach(function (key) {\n\t\tvar val = anim[key],\n\t\t str = val.replace('%s', step);\n\n\t\tanim[key] = new Function('return ' + str + ';')(); // eslint-disable-line no-new-func\n\t});\n\n\tself.animEl.css(anim);\n}\n\n/**\n * Checks if the header needs to be animated out\n *\n * @private\n * @param {Object} data Current Scroll Event Object { x, y, direction }\n * @param {float} step Current step of animation between 0 and 1\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction checkAnimOut(data, step) {\n\tvar self = this;\n\n\tif (step <= 0 || step >= 1 || self.isFixed || self.isAnimIn) {\n\t\tself.isAnimOut = false;\n\t\tresetAnimOut.call(self);\n\t\treturn;\n\t}\n\n\tif (!self.isAnimOut) {\n\t\tself.isAnimOut = true;\n\t}\n\n\tanimOut.call(self, step, data);\n}\n\n/**\n * Checks if the header needs to be hidden again, after it was fixed\n *\n * @private\n * @param {Object} data Current Scroll Event Object { x, y }\n * @param {float} step Current step of animation between 0 and 1\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction checkAnimOutAgain(data, step) {\n\tif (typeof checkAnimOutAgain.last === 'undefined' || checkAnimOutAgain.last === false) {\n\t\tcheckAnimOutAgain.last = data;\n\t\treturn;\n\t}\n\n\tif (data.y - checkAnimOutAgain.last.y > threshold * 5) {\n\t\tthis.isFixed = false;\n\t\tcheckAnimOutAgain.last = false;\n\t}\n}\n\n/**\n * Binds the handler functions to Events on Scroll\n *\n * @private\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction addHandler() {\n\tvar _this = this;\n\n\tvar self = this;\n\n\t_device2.default.breakpointEvent.subscribe(function (data) {\n\t\tif (self.isFixed) {\n\t\t\treturn;\n\t\t}\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\tvar offset = self.$scope.offset(),\n\t\t\t wasFixed = self.isFixed;\n\n\t\t\tself.isFixed = false;\n\n\t\t\tself.bounds = {\n\t\t\t\tx: offset.left,\n\t\t\t\ty: offset.top,\n\t\t\t\tx2: offset.left + self.$scope.outerWidth(),\n\t\t\t\ty2: offset.top + self.$scope.outerHeight()\n\t\t\t};\n\n\t\t\tself.isFixed = wasFixed;\n\t\t});\n\t});\n\n\t_device2.default.scrollEvent.subscribe(function (data) {\n\t\tvar step = Math.max(Math.min(self.step(data), 1), 0);\n\n\t\t// header is visible in viewport\n\t\tif (data.y <= self.bounds.y2 + threshold) {\n\t\t\tself.inViewport = true;\n\t\t\tself.outViewport = false;\n\t\t}\n\n\t\t// header is not visible in viewport\n\t\tif (data.y > self.bounds.y2 + threshold) {\n\t\t\tself.outViewport = true;\n\t\t\tself.inViewport = false;\n\n\t\t\tif (data.direction === _Scroll.DIRECTIONS.DOWN && !_this.isFixed && _OffscreenNavigation2.default.isOpen) {\n\t\t\t\t_this.isFixed = true;\n\t\t\t}\n\t\t}\n\n\t\t// scrolling up and header was out of viewport\n\t\tif (data.direction === _Scroll.DIRECTIONS.UP && self.outViewport && !self.isFixed) {\n\t\t\tself.isFixed = true;\n\t\t\tif (self.$child.length) {\n\t\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\t\tself.childPositionOpen = self.$child.position().top;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (data.direction === _Scroll.DIRECTIONS.UP && data.y <= self.bounds.y && self.isFixed) {\n\t\t\tself.isFixed = false;\n\t\t}\n\n\t\tif (data.direction === _Scroll.DIRECTIONS.UP && typeof checkAnimOutAgain.last !== 'undefined' && checkAnimOutAgain.last !== false) {\n\t\t\tcheckAnimOutAgain.last = data;\n\t\t}\n\n\t\tif (data.direction === _Scroll.DIRECTIONS.DOWN && self.isFixed && !self.isAnimOut && !self.isAnimIn && !_OffscreenNavigation2.default.isOpen) {\n\t\t\tcheckAnimOutAgain.call(_this, data, step);\n\t\t}\n\n\t\t// was scrolling up and animation finished, now scrolling down\n\t\tif (step <= 0 || data.direction === _Scroll.DIRECTIONS.DOWN && self.isAnimIn && !self.isFixed && self.isAnimIn) {\n\t\t\t// eslint-disable-line no-extra-parens\n\t\t\tself.isAnimIn = false;\n\t\t}\n\n\t\t// scrolling down, anim out if needed, revert if scrolling back up during animation\n\t\tif (data.direction === _Scroll.DIRECTIONS.DOWN && !self.isAnimIn || data.direction === _Scroll.DIRECTIONS.UP && self.isAnimOut) {\n\t\t\t// eslint-disable-line no-extra-parens\n\t\t\tcheckAnimOut.call(self, data, step);\n\t\t}\n\n\t\t// scrolling up, anim in if needed\n\t\tif (data.direction === _Scroll.DIRECTIONS.UP && !self.isAnimOut) {\n\t\t\tcheckAnimIn.call(self, data, step);\n\t\t}\n\t});\n}\n\n/**\n * Class representing the main navigation menu.\n * Controls the state of the navigation.\n * Controls menu item behavior.\n * @extends { AbstractController }\n * @class\n */\n\nvar MainHeaderController = function (_AbstractController) {\n\t(0, _inherits3.default)(MainHeaderController, _AbstractController);\n\n\t/** @constructs */\n\tfunction MainHeaderController() {\n\t\t(0, _classCallCheck3.default)(this, MainHeaderController);\n\n\t\tvar _this2 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this2._isFixed = false;\n\t\t_this2._inViewport = false;\n\t\t_this2._outViewport = false;\n\t\t_this2._animIn = false;\n\t\t_this2._animOut = false;\n\t\treturn _this2;\n\t}\n\n\t/**\n * Initialises the controller singleton.\n * Has to be called after ready event.\n *\n * @public\n * @param { jQuery } $root - jQuery wrapped DOM node\n * @return { MainHeaderController } instance\n */\n\n\n\tMainHeaderController.prototype.init = function init($root) {\n\t\tvar self = this;\n\n\t\tif (!$root.length || (0, _jquery2.default)('body').hasClass('login-page') || (0, _jquery2.default)('body').hasClass('register-page')) {\n\t\t\treturn;\n\t\t}\n\n\t\tself.$scope = $root;\n\t\tself.$affected = (0, _jquery2.default)('#off-screen-app-drawer');\n\n\t\tthis.frameworkNoStickyHeader = self.$scope.siblings('#off-screen-content').children('.framework--no-sticky-header').length === 1;\n\n\t\t// TODO: self.bounds faster requested than fasterdom set it\n\t\t//fasterdom.measureInstant( () => {\n\t\tself.$scope.children().wrapAll('<div />');\n\t\tself.$wrap = self.$scope.children('div');\n\t\tself.$child = self.$wrap.children('#quick-navigation');\n\n\t\tself.animEl = self.$wrap;\n\n\t\tthis.updatePosition();\n\t\t//} );\n\n\t\taddHandler.call(self);\n\t\treturn this;\n\t};\n\n\t/** @public */\n\n\n\t/** @public */\n\tMainHeaderController.prototype.step = function step(data) {\n\t\tvar self = this;\n\n\t\tif (typeof data === 'undefined' || data.y < self.bounds.y) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn (data.y - self.bounds.y) / (self.bounds.y2 - self.bounds.y + threshold);\n\t};\n\n\t/** @public */\n\n\n\tMainHeaderController.prototype.fix = function fix() {\n\t\tthis.isFixed = true;\n\t};\n\n\t/** @public */\n\n\n\tMainHeaderController.prototype.updatePosition = function updatePosition() {\n\n\t\tvar offset = this.$scope.offset(); // eslint-disable-line one-var\n\n\t\tthis.bounds = {\n\t\t\tx: offset.left,\n\t\t\ty: offset.top,\n\t\t\tx2: offset.left + this.$scope.outerWidth(),\n\t\t\ty2: offset.top + this.$scope.outerHeight()\n\t\t};\n\n\t\tthis.childPosition = this.$child.length ? this.$child.position().top : 0;\n\t\tthis.childPositionOpen = 0;\n\t};\n\n\t(0, _createClass3.default)(MainHeaderController, [{\n\t\tkey: 'inViewport',\n\t\tset: function set(is) {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar action = is === true ? 'add' : 'remove';\n\n\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\t_this3.$scope[action + 'Class'](classes.inViewport);\n\t\t\t});\n\t\t\tthis._inViewport = is === true;\n\t\t}\n\n\t\t/** @public */\n\t\t,\n\t\tget: function get() {\n\t\t\treturn this._inViewport;\n\t\t}\n\n\t\t/** @public */\n\n\t}, {\n\t\tkey: 'outViewport',\n\t\tset: function set(is) {\n\t\t\tvar _this4 = this;\n\n\t\t\tvar action = is === true ? 'add' : 'remove';\n\n\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\t_this4.$scope[action + 'Class'](classes.outViewport);\n\t\t\t});\n\t\t\tthis._outViewport = is === true;\n\t\t}\n\n\t\t/** @public */\n\t\t,\n\t\tget: function get() {\n\t\t\treturn this._outViewport;\n\t\t}\n\n\t\t/** @public */\n\n\t}, {\n\t\tkey: 'isFixed',\n\t\tset: function set(is) {\n\t\t\tvar _this5 = this;\n\n\t\t\tif (this.frameworkNoStickyHeader) {\n\t\t\t\tis = false;\n\t\t\t}\n\n\t\t\tvar action = is === true ? 'add' : 'remove',\n\t\t\t unaction = is === true ? 'remove' : 'add',\n\t\t\t wasFixed = this._isFixed;\n\n\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\tif (is !== true) {\n\t\t\t\t\t_this5.$affected.trigger('release.main-header');\n\t\t\t\t}\n\t\t\t\tif (_this5.outViewport && (action === 'add' || action === 'remove' && wasFixed)) {\n\t\t\t\t\t// eslint-disable-line no-extra-parens\n\t\t\t\t\t_this5.$scope[unaction + 'Class'](classes.unfixed);\n\t\t\t\t}\n\t\t\t\t_this5.$scope[action + 'Class'](classes.fixed);\n\t\t\t\tif (is === true) {\n\t\t\t\t\t_this5.$affected.trigger('fix.main-header', _this5.$scope.outerHeight());\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis._isFixed = is === true;\n\t\t}\n\n\t\t/** @public */\n\t\t,\n\t\tget: function get() {\n\t\t\treturn this._isFixed;\n\t\t}\n\n\t\t/** @public */\n\n\t}, {\n\t\tkey: 'isAnimIn',\n\t\tset: function set(is) {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar action = is === true ? 'add' : 'remove';\n\n\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\t_this6.$scope[action + 'Class'](classes.animIn);\n\t\t\t});\n\t\t\tthis._animIn = is === true;\n\t\t}\n\n\t\t/** @public */\n\t\t,\n\t\tget: function get() {\n\t\t\treturn this._animIn;\n\t\t}\n\n\t\t/** @public */\n\n\t}, {\n\t\tkey: 'isAnimOut',\n\t\tset: function set(is) {\n\t\t\tvar _this7 = this;\n\n\t\t\tvar action = is === true ? 'add' : 'remove';\n\n\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\t_this7.$scope[action + 'Class'](classes.animOut);\n\t\t\t});\n\t\t\tthis._animOut = is === true;\n\t\t}\n\n\t\t/** @public */\n\t\t,\n\t\tget: function get() {\n\t\t\treturn this._animOut;\n\t\t}\n\t}]);\n\treturn MainHeaderController;\n}(_Abstract2.default);\n\n/**\n * @private\n * @type { MainHeaderController }\n */\n\n\nvar instance = new MainHeaderController(); // eslint-disable-line one-var\n\nexports.default = instance;\n\n/***/ }),\n/* 650 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _TransitionEvent = __webpack_require__(119);\n\nvar _TransitionEvent2 = _interopRequireDefault(_TransitionEvent);\n\nvar _OffscreenNavigation = __webpack_require__(280);\n\nvar _OffscreenNavigation2 = _interopRequireDefault(_OffscreenNavigation);\n\nvar _CookieService = __webpack_require__(150);\n\nvar _CookieService2 = _interopRequireDefault(_CookieService);\n\nvar _global = __webpack_require__(103);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar cookieName = 'disclaimer',\n isCached = 'is-cached';\n\n/**\n * Removes the cookie disclaimer container\n * @returns { void }\n * @private\n */\nfunction removeContainer() {\n\tthis.$button.off('click');\n\tthis.$scope.remove();\n}\n\n/**\n * Shows / expands the cookie disclaimer container\n * @returns { void }\n * @private\n */\nfunction showContainer() {\n\tvar self = this;\n\n\tself.onOpen(function () {\n\t\tvar _h = 0;\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\t_h = (0, _global.getHiddenDimensions)(self.$scope, 'height').outerHeight;\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tself.$scope.css({ height: _h });\n\t\t});\n\t});\n\n\tself.afterOpen(function () {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tself.$scope.css({ height: '' }).addClass('expanded');\n\t\t});\n\t});\n\n\tself.open();\n}\n\n/**\n * Hides / collapses the cookie disclaimer container\n * @returns { void }\n * @private\n */\nfunction hideContainer() {\n\tvar _this = this;\n\n\tvar self = this;\n\n\tself.beforeClose(function () {\n\t\tvar _h = 0;\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\t_h = (0, _global.getHiddenDimensions)(self.$scope, 'height').outerHeight;\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tself.$scope.css({ height: _h }).removeClass('expanded');\n\t\t\tself.$button.off('click');\n\n\t\t\t_OffscreenNavigation2.default.$scope.css({\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: 0\n\t\t\t});\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tself.$scope.css({ height: '' });\n\t\t}, 1);\n\t});\n\n\tself.afterClose(function () {\n\t\tremoveContainer.call(_this);\n\n\t\t_OffscreenNavigation2.default.test();\n\t});\n\n\tself.close();\n}\n\n/**\n * Sets a cookie and hides the cookie disclaimer container\n * @returns { void }\n * @private\n */\nfunction hideAndMemorize() {\n\thideContainer.call(this);\n\t_CookieService2.default.setCookie(cookieName, isCached);\n}\n\n/**\n * Add event listeners to handle click events\n * @returns { void }\n * @private\n */\nfunction addHandler() {\n\tvar self = this;\n\n\tself.$button.on('click', function (e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\thideAndMemorize.call(self);\n\t});\n}\n\n/**\n * Class representing the cookie disclaimer.\n * Controls the state of the cookie disclaimer container.\n * @extends { AbstractController }\n */\n\nvar CookieDisclaimerController = function (_TransitionEventContr) {\n\t(0, _inherits3.default)(CookieDisclaimerController, _TransitionEventContr);\n\n\tfunction CookieDisclaimerController() {\n\t\t(0, _classCallCheck3.default)(this, CookieDisclaimerController);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _TransitionEventContr.call(this));\n\t}\n\n\t/**\n * Initialises the controller singleton.\n * Has to be called after ready event.\n * @param { jQuery } $root - jQuery wrapped DOM node\n * @returns { CookieDisclaimerController } instance\n * @public\n */\n\n\n\tCookieDisclaimerController.prototype.init = function init($root) {\n\t\tvar self = this;\n\n\t\t_TransitionEventContr.prototype.init.call(this, $root);\n\n\t\tself.$scope = $root;\n\t\tself.$button = self.$scope.find('.btn');\n\n\t\tthis.setTransition('height');\n\n\t\t// check if cookie already exist\n\t\tif (!_CookieService2.default.getCookie(cookieName)) {\n\t\t\tshowContainer.call(self);\n\t\t\taddHandler.call(self);\n\t\t} else {\n\t\t\tremoveContainer.call(self);\n\t\t}\n\n\t\treturn this;\n\t};\n\n\treturn CookieDisclaimerController;\n}(_TransitionEvent2.default);\n\n/**\n * @private\n */\n\n\nvar instance = new CookieDisclaimerController(); // eslint-disable-line one-var\n\nexports.default = instance;\n\n/***/ }),\n/* 651 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.EVENTS = undefined;\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _WindowGateway = __webpack_require__(118);\n\nvar _WindowGateway2 = _interopRequireDefault(_WindowGateway);\n\nvar _SignalWrapper = __webpack_require__(279);\n\nvar _SignalWrapper2 = _interopRequireDefault(_SignalWrapper);\n\nvar _EventHelper = __webpack_require__(278);\n\nvar _EventHelper2 = _interopRequireDefault(_EventHelper);\n\nvar _debounce = __webpack_require__(584);\n\nvar _debounce2 = _interopRequireDefault(_debounce);\n\nvar _device = __webpack_require__(54);\n\nvar _device2 = _interopRequireDefault(_device);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EVENTS = {\n\tRESIZE: 'iframe.resize',\n\tORIGIN: 'iframe.origin',\n\tLOAD: 'iframe.load',\n\tUNLOAD: 'iframe.unload',\n\tHANDSHAKE: 'iframe.handshake',\n\tHANDSHAKE_CONFIRMED: 'iframe.handshakeConfirmed'\n};\n\nfunction makeHandshakeConfirmMessage() {\n\treturn {\n\t\ttype: EVENTS.HANDSHAKE_CONFIRMED,\n\t\tdata: {},\n\t\tsrc: document.location.href,\n\t\ttarget: this.parent.origin || '#',\n\t\tconnectionId: this.parent.connectionId\n\t};\n}\n\nfunction confirmHandshake() {\n\tthis.logger.log('Sending handshake confirmation');\n\tthis.gateway.send(makeHandshakeConfirmMessage.call(this), this.parent.origin);\n}\n\n/**\r\n * @typedef {Object} iFrameMessage\r\n * @property {string} event string identifying the event\r\n * @property {object} data containing the data to be passed along\r\n */\nfunction initializeHandshake() {\n\tvar _this = this;\n\n\tthis.handshake = new _promise2.default(function (resolve, reject) {\n\n\t\t_this.gateway.messageEvent.subscribe(function (message) {\n\n\t\t\tswitch (message.type) {\n\n\t\t\t\tcase EVENTS.HANDSHAKE:\n\t\t\t\t\t_this.logger.log('Handshake received', message.data.connectionId);\n\t\t\t\t\tvar _message$data = message.data,\n\t\t\t\t\t origin = _message$data.origin,\n\t\t\t\t\t href = _message$data.href,\n\t\t\t\t\t connectionId = _message$data.connectionId;\n\n\n\t\t\t\t\t_this.parent = { origin: origin, href: href, connectionId: connectionId };\n\t\t\t\t\tresolve();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t}\n\t\t});\n\t}).then(confirmHandshake.bind(this)).catch(this.logger.error);\n}\n\n/**\r\n * @private\r\n * @returns {iFrameMessage} iFrameMessage containing the current height.\r\n */\nfunction makeResizeMessage() {\n\treturn {\n\t\ttype: EVENTS.RESIZE,\n\t\tdata: {\n\t\t\theight: this.$scope.outerHeight(true),\n\t\t\twidth: this.$scope.width()\n\t\t},\n\t\tsrc: document.location.href,\n\t\ttarget: this.parent.origin || '#',\n\t\tconnectionId: this.parent.connectionId\n\t};\n}\n\nfunction makeLoadMessage() {\n\treturn {\n\t\ttype: EVENTS.LOAD,\n\t\tdata: {},\n\t\tsrc: document.location.href,\n\t\ttarget: this.parent.origin || '#',\n\t\tconnectionId: this.parent.connectionId\n\t};\n}\n\nfunction makeUnloadMessage() {\n\treturn {\n\t\ttype: EVENTS.UNLOAD,\n\t\tdata: {},\n\t\tsrc: document.location.href,\n\t\ttarget: this.parent.origin || '#',\n\t\tconnectionId: this.parent.connectionId\n\t};\n}\n\n/**\r\n *\r\n * @returns {void}\r\n */\nfunction setHeight() {\n\tvar _this2 = this;\n\n\tthis.logger.log('setHeight');\n\n\t_fasterdom2.default.measureInstant(function () {\n\t\treturn _this2.gateway.send(makeResizeMessage.call(_this2), _this2.parent.origin);\n\t});\n}\n\n/**\r\n * Setup the iframe for getting its height and add listeners\r\n * @return {void}\r\n */\nfunction setup() {\n\tvar _this3 = this;\n\n\tthis.handshake.then(function () {\n\n\t\t_this3.$scope.attr('style', 'height: auto !important');\n\t\tsetHeight.call(_this3);\n\n\t\t_device2.default.resizeEvent.subscribe(setHeight.bind(_this3));\n\t\t// globalEvents.subscribe( 'transition.ended', setHeight.bind( this ) );\n\t\t_EventHelper2.default.addPrefixedEvent((0, _jquery2.default)(document), 'TransitionEnd', (0, _debounce2.default)(setHeight.bind(_this3), 100));\n\n\t\tif (_this3.$scope.find('iframe').context && _this3.$scope.find('iframe').context.children) {\n\t\t\tvar checkForHeight = setInterval(function () {\n\t\t\t\tvar isHeightsEqual = _this3.$scope.find('iframe').context.children[0].clientHeight === _this3.$scope.find('iframe').context.children[0].scrollHeight;\n\n\t\t\t\tif (!isHeightsEqual) {\n\t\t\t\t\tsetHeight.call(_this3);\n\t\t\t\t} else {\n\t\t\t\t\twindow.clearInterval(checkForHeight);\n\t\t\t\t}\n\t\t\t}, 500);\n\t\t}\n\n\t\t_this3.gateway.send(makeLoadMessage.call(_this3), _this3.parent.origin);\n\t});\n}\n\nfunction unload() {\n\tthis.handshake = new _promise2.default(function () {});\n\tthis.gateway.send(makeUnloadMessage.call(this), this.parent.origin);\n}\n\nvar IFrameChildController = function (_AbstractController) {\n\t(0, _inherits3.default)(IFrameChildController, _AbstractController);\n\n\tfunction IFrameChildController() {\n\t\t(0, _classCallCheck3.default)(this, IFrameChildController);\n\n\t\tvar _this4 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this4.debug = false;\n\n\t\t_this4.handshake = null;\n\n\t\t_this4.parent = {\n\t\t\torigin: null,\n\t\t\thref: null,\n\t\t\tconnectionId: null\n\t\t};\n\n\t\t_this4.gateway = new _WindowGateway2.default();\n\n\t\tinitializeHandshake.call(_this4);\n\t\treturn _this4;\n\t}\n\n\t/**\r\n * @override\r\n * @returns {AbstractController} instance\r\n */\n\n\n\tIFrameChildController.prototype.init = function init() {\n\n\t\tthis.isInIframe = window.self !== window.top;\n\n\t\tthis.$scope = (0, _jquery2.default)('body');\n\n\t\tif (this.isInIframe) {\n\n\t\t\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\n\t\t\t\tsetup.call(this);\n\t\t\t} else {\n\t\t\t\twindow.addEventListener('load', setup.bind(this));\n\t\t\t}\n\n\t\t\twindow.addEventListener('beforeunload', unload.bind(this));\n\t\t}\n\n\t\treturn this;\n\t};\n\n\treturn IFrameChildController;\n}(_Abstract2.default);\n\nexports.default = IFrameChildController;\nexports.EVENTS = EVENTS;\n\n/***/ }),\n/* 652 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar punycode = __webpack_require__(653);\nvar util = __webpack_require__(654);\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = __webpack_require__(655);\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\n\n/***/ }),\n/* 653 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttrue\n\t) {\n\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t\t\treturn punycode;\n\t\t}.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(585)(module), __webpack_require__(101)))\n\n/***/ }),\n/* 654 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n\n\n/***/ }),\n/* 655 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.decode = exports.parse = __webpack_require__(656);\nexports.encode = exports.stringify = __webpack_require__(657);\n\n\n/***/ }),\n/* 656 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\n\n/***/ }),\n/* 657 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n\n\n/***/ }),\n/* 658 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _clickoutside = __webpack_require__(554);\n\nvar _clickoutside2 = _interopRequireDefault(_clickoutside);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * @private\r\n * @param { object } $el - jQuery wrapped DOM node\r\n * @returns { void }\r\n */\nfunction addHandler($el) {\n\tvar _this = this;\n\n\t$el.on('click', '.trigger', function (e) {\n\n\t\te.preventDefault();\n\t\te.stopImmediatePropagation();\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\treturn $el.toggleClass('open');\n\t\t});\n\n\t\t_this.clickoutside = new _clickoutside2.default($el, function () {\n\t\t\treturn _fasterdom2.default.mutateInstant(function () {\n\t\t\t\treturn $el.removeClass('open');\n\t\t\t});\n\t\t});\n\t});\n}\n\n/**\r\n * Class representing an languageswitch (LAS01)\r\n * @extends { AbstractController }\r\n */\n\nvar LAS01Controller = function (_AbstractController) {\n\t(0, _inherits3.default)(LAS01Controller, _AbstractController);\n\n\tfunction LAS01Controller() {\n\t\t(0, _classCallCheck3.default)(this, LAS01Controller);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\t}\n\n\t/**\r\n * Initialises the controller.\r\n * Has to be called after ready event.\r\n *\r\n * @param { jQuery } $root - jQuery wrapped DOM node\r\n * @public\r\n * @return { LAS01Controller } instance\r\n */\n\n\n\tLAS01Controller.prototype.init = function init($root) {\n\t\taddHandler.call(this, $root);\n\n\t\treturn this;\n\t};\n\n\treturn LAS01Controller;\n}(_Abstract2.default);\n\nexports.default = LAS01Controller;\n\n/***/ }),\n/* 659 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.SINGLETONS = undefined;\n\nvar _defineProperty2 = __webpack_require__(555);\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _DEPENDENCIES;\n\nvar _Identifiers = __webpack_require__(271);\n\nvar _ACC = __webpack_require__(574);\n\nvar _ACC2 = _interopRequireDefault(_ACC);\n\nvar _TIC = __webpack_require__(661);\n\nvar _TIC2 = _interopRequireDefault(_TIC);\n\nvar _SRC = __webpack_require__(662);\n\nvar _SRC2 = _interopRequireDefault(_SRC);\n\nvar _Iframe = __webpack_require__(573);\n\nvar _Iframe2 = _interopRequireDefault(_Iframe);\n\nvar _Layout = __webpack_require__(673);\n\nvar _Layout2 = _interopRequireDefault(_Layout);\n\nvar _TSS = __webpack_require__(674);\n\nvar _TSS2 = _interopRequireDefault(_TSS);\n\nvar _SES = __webpack_require__(675);\n\nvar _SES2 = _interopRequireDefault(_SES);\n\nvar _IEB = __webpack_require__(676);\n\nvar _IEB2 = _interopRequireDefault(_IEB);\n\nvar _JFC = __webpack_require__(677);\n\nvar _JFC2 = _interopRequireDefault(_JFC);\n\nvar _SRF = __webpack_require__(678);\n\nvar _SRF2 = _interopRequireDefault(_SRF);\n\nvar _Identifiers2 = __webpack_require__(151);\n\nvar _Identifiers3 = _interopRequireDefault(_Identifiers2);\n\nvar _DWS = __webpack_require__(553);\n\nvar _DWS2 = _interopRequireDefault(_DWS);\n\nvar _PC = __webpack_require__(681);\n\nvar _PC2 = _interopRequireDefault(_PC);\n\nvar _Tooltip = __webpack_require__(581);\n\nvar _Tooltip2 = _interopRequireDefault(_Tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DEPENDENCIES = (_DEPENDENCIES = {}, (0, _defineProperty3.default)(_DEPENDENCIES, _Identifiers.IDENTIFIERS.ACC.ROOT, _ACC2.default), (0, _defineProperty3.default)(_DEPENDENCIES, _Identifiers.IDENTIFIERS.IFRAME.ROOT, _Iframe2.default), (0, _defineProperty3.default)(_DEPENDENCIES, _Identifiers.IDENTIFIERS.TIC01.ROOT, _TIC2.default), (0, _defineProperty3.default)(_DEPENDENCIES, _Identifiers.IDENTIFIERS.LAYOUT.ROOT, _Layout2.default), (0, _defineProperty3.default)(_DEPENDENCIES, _Identifiers.IDENTIFIERS.SRC01.ROOT, _SRC2.default), (0, _defineProperty3.default)(_DEPENDENCIES, _Identifiers.IDENTIFIERS.SES01.EXTENDED, _SES2.default), (0, _defineProperty3.default)(_DEPENDENCIES, _Identifiers.IDENTIFIERS.SES01.QUICK_LINKS, _SES2.default), (0, _defineProperty3.default)(_DEPENDENCIES, _Identifiers.IDENTIFIERS.IEB.ROOT, _IEB2.default), (0, _defineProperty3.default)(_DEPENDENCIES, _Identifiers.IDENTIFIERS.JFC01.ROOT, _JFC2.default), (0, _defineProperty3.default)(_DEPENDENCIES, _Identifiers.IDENTIFIERS.SRF01.ROOT, _SRF2.default), (0, _defineProperty3.default)(_DEPENDENCIES, _Identifiers3.default.ROOT, _DWS2.default), (0, _defineProperty3.default)(_DEPENDENCIES, _Identifiers.IDENTIFIERS.PCC01.TOOLTIP, _Tooltip2.default), (0, _defineProperty3.default)(_DEPENDENCIES, _Identifiers.IDENTIFIERS.PC01.ROOT, _PC2.default), _DEPENDENCIES);\n\nexports.default = DEPENDENCIES;\nvar SINGLETONS = exports.SINGLETONS = (0, _defineProperty3.default)({}, _Identifiers.IDENTIFIERS.TSS01.ROOT, _TSS2.default);\n\n/***/ }),\n/* 660 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _assign = __webpack_require__(116);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(80);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _weakMap = __webpack_require__(161);\n\nvar _weakMap2 = _interopRequireDefault(_weakMap);\n\nvar _TransitionEvent = __webpack_require__(119);\n\nvar _TransitionEvent2 = _interopRequireDefault(_TransitionEvent);\n\nvar _global = __webpack_require__(103);\n\nvar _device = __webpack_require__(54);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _events = __webpack_require__(272);\n\nvar _signal = __webpack_require__(96);\n\nvar _signal2 = _interopRequireDefault(_signal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar defaultOptions = {\n\tcontentSelector: '.accordion-item__content'\n},\n _heightEmitter = new _weakMap2.default();\n\n/**\n * Binds event handler to the current scope\n * @private\n * @return { void }\n */\nfunction addHandler() {\n\tvar _this = this;\n\n\tvar self = this;\n\n\tself.beforeOpen(function ($trigger) {\n\t\t_this.logger.log('before open');\n\t\tself.$scope.trigger('beforeOpen.acc-item');\n\t});\n\n\tself.onOpen(function ($trigger) {\n\t\t_this.logger.log('on open');\n\t\tvar _h = 0;\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\t_h = (0, _global.getHiddenDimensions)(self.$content, 'height').outerHeight;\n\t\t\tself.emitHeight(_h);\n\t\t\t_this.logger.log('measured height:', _h);\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function (a) {\n\t\t\tself.$content.css({ height: _h });\n\t\t\t_this.logger.log('set measured height:', _h);\n\t\t});\n\t});\n\n\tself.afterOpen(function ($trigger) {\n\t\t_this.logger.log('after open');\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tself.$content.css({ height: '' });\n\t\t\t_this.logger.log('removed measured height');\n\t\t});\n\n\t\t//TODO refactor: issue is initial scroll and scroll is default on. page always scrolls to footer\n\t\tif (_this.options.scrollOnOpen && _this._userInitiated) {\n\t\t\t_device.ScrollService.toElement(_this.$scope);\n\t\t\t_this._userInitiated = false;\n\t\t} else if (_this.options.scrollOnOpen && _this._initial) {\n\t\t\t_this._initial = false;\n\t\t}\n\t});\n\n\tself.beforeClose(function ($trigger) {\n\t\tvar _h = 0;\n\n\t\tself.$scope.trigger('beforeClose.acc-item');\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\t_h = (0, _global.getHiddenDimensions)(self.$content, 'height').outerHeight;\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tself.$content.css({ height: _h });\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\tself.$content.css({ height: '' });\n\t\t}, 1);\n\t});\n}\n\n/**\n * Class representing an accordion item instance.\n * Controls the state of the accordion.\n * Controls menu item behavior.\n * @extends { AbstractController }\n */\n\nvar ACCItemController = function (_TransitionEventContr) {\n\t(0, _inherits3.default)(ACCItemController, _TransitionEventContr);\n\n\tfunction ACCItemController() {\n\t\t(0, _classCallCheck3.default)(this, ACCItemController);\n\n\t\tvar _this2 = (0, _possibleConstructorReturn3.default)(this, _TransitionEventContr.call(this));\n\n\t\t_this2.debugStyle = 'color: #FF823F';\n\t\t_this2.debug = false;\n\t\t// this.debug = 'ACCItem';\n\t\t//\n\t\t_this2.$scope = null;\n\t\t_this2.$content = null;\n\t\t_this2._initial = null;\n\n\t\t// self._isOpen = false;\n\t\treturn _this2;\n\t}\n\n\t/**\n * Initialises the controller.\n * Has to be called after ready event.\n *\n * @public\n * @param {jQuery} $root accordion item\n * @param {Object} options Options passed by the AccordeonController to use on its children\n * @return {void}\n */\n\n\n\tACCItemController.prototype.init = function init($root) {\n\t\tvar options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t_TransitionEventContr.prototype.init.call(this, $root);\n\n\t\tthis._initial = true;\n\t\tthis._disabled = options.disabled === true;\n\t\tthis.$scope = $root;\n\t\tthis.options = (0, _assign2.default)({}, defaultOptions, options);\n\n\t\tthis.$content = this.$scope.find(this.options.contentSelector);\n\n\t\tthis.setTransition('height');\n\t\tthis.setTransitionElement(this.$content);\n\n\t\t_heightEmitter.set(this, new _events.EventEmitter());\n\n\t\taddHandler.call(this);\n\t};\n\n\tACCItemController.prototype.disable = function disable() {\n\t\tthis.isDisabled = true;\n\t};\n\n\tACCItemController.prototype.enable = function enable() {\n\t\tthis.isDisabled = false;\n\t};\n\n\tACCItemController.prototype.emitHeight = function emitHeight(data) {\n\t\tvar caller = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this;\n\n\t\t_heightEmitter.get(this).emit('height', data, caller);\n\t};\n\n\tACCItemController.prototype.subscribeHeight = function subscribeHeight(fn) {\n\t\t_heightEmitter.get(this).on('height', fn);\n\t};\n\n\tACCItemController.prototype.destroy = function destroy() {\n\t\tthis._before.clear();\n\t\tthis._on.clear();\n\t\tthis._after.clear();\n\t\tthis._afterTransition.clear();\n\t\treturn null;\n\t};\n\n\t(0, _createClass3.default)(ACCItemController, [{\n\t\tkey: 'isDisabled',\n\t\tset: function set(is) {\n\t\t\tvar _this3 = this;\n\n\t\t\tthis.initialOpenPromise.then(function () {\n\t\t\t\tif (is === true && !_this3.isOpen) {\n\t\t\t\t\t_this3.openSilent();\n\t\t\t\t} else if (is === false && _this3.isOpen) {\n\t\t\t\t\t_this3.closeSilent();\n\t\t\t\t}\n\t\t\t\t_this3._disabled = is === true;\n\t\t\t});\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this._disabled;\n\t\t}\n\t}]);\n\treturn ACCItemController;\n}(_TransitionEvent2.default);\n\nexports.default = ACCItemController;\n\n/***/ }),\n/* 661 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _TransitionEvent = __webpack_require__(119);\n\nvar _TransitionEvent2 = _interopRequireDefault(_TransitionEvent);\n\nvar _global = __webpack_require__(103);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @private\n * @param { object } $el - jQuery wrapped DOM node\n * @returns { void }\n */\nfunction addHandler($el) {\n\tvar _this = this;\n\n\tvar $content = $el.find('.content-extended'),\n\t controller = new _TransitionEvent2.default();\n\n\tcontroller.init($content);\n\tcontroller.setTransition('height');\n\n\tcontroller.onOpen(function () {\n\t\tvar _h = 0;\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\t_h = (0, _global.getHiddenDimensions)($content, 'height').outerHeight;\n\t\t});\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t$el.addClass('content-extended--open');\n\t\t\t$content.css({ height: _h });\n\t\t});\n\t});\n\n\tcontroller.afterOpen(function () {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t$content.css({ height: '' });\n\t\t});\n\t});\n\n\tcontroller.beforeClose(function () {\n\t\tvar _h = 0;\n\n\t\t_fasterdom2.default.measureInstant(function () {\n\t\t\t_h = (0, _global.getHiddenDimensions)($content, 'height').outerHeight;\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t$el.removeClass('content-extended--open');\n\t\t\t$content.css({ height: _h });\n\t\t});\n\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t$content.css({ height: '' });\n\t\t}, 1);\n\t});\n\n\tthis.extendedContentController = controller;\n\n\t$el.on('click', '.content-extended-arrow', function (e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tif (_this.extendedContentController.isOpen) {\n\t\t\t_this.extendedContentController.close();\n\t\t} else {\n\t\t\t_this.extendedContentController.open();\n\t\t}\n\t});\n}\n\n/**\n * Class representing an text image combination instance.\n * Controls the state of the text image combination.\n * Controls expander icon behavior.\n * @extends { AbstractController }\n */\n\nvar TIC01Controller = function (_AbstractController) {\n\t(0, _inherits3.default)(TIC01Controller, _AbstractController);\n\n\tfunction TIC01Controller() {\n\t\t(0, _classCallCheck3.default)(this, TIC01Controller);\n\n\t\tvar _this2 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this2.extendedContentController = null;\n\t\treturn _this2;\n\t}\n\n\t/**\n * Initialises the controller.\n * Has to be called after ready event.\n *\n * @param { object } $root - jQuery wrapped DOM node\n * @public\n * @return { void }\n */\n\n\n\tTIC01Controller.prototype.init = function init($root) {\n\t\taddHandler.call(this, $root);\n\t};\n\n\treturn TIC01Controller;\n}(_Abstract2.default);\n\nexports.default = TIC01Controller;\n\n/***/ }),\n/* 662 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _LazyImageLoader = __webpack_require__(558);\n\nvar _LazyImageLoader2 = _interopRequireDefault(_LazyImageLoader);\n\nvar _Identifiers = __webpack_require__(271);\n\nvar _Identifiers2 = __webpack_require__(577);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n *\n *\n * @private\n * @return { void }\n */\nfunction setState() {\n\tvar _this = this;\n\n\t_fasterdom2.default.mutateInstant(function () {\n\n\t\tvar $searchResults = _this.$scope.find(_Identifiers.IDENTIFIERS.SRC01.SRT01);\n\n\t\tvar srt01ListModifier = _Identifiers.IDENTIFIERS.SRC01.SRT01_LIST_MODIFIER;\n\n\t\tif ($searchResults.attr('data-tpl') !== 'srt01') {\n\t\t\tsrt01ListModifier = srt01ListModifier.replace('srt01', $searchResults.attr('data-tpl'));\n\t\t}\n\n\t\tif (_this._isListView) {\n\n\t\t\t_this.$scope.addClass(_Identifiers.IDENTIFIERS.SRC01.LIST_MODIFIER);\n\t\t\t_this.$toggleSwitchInput.attr('checked', true);\n\t\t\t$searchResults.addClass(srt01ListModifier);\n\t\t} else {\n\n\t\t\t_this.$scope.removeClass(_Identifiers.IDENTIFIERS.SRC01.LIST_MODIFIER);\n\t\t\t_this.$toggleSwitchInput.removeAttr('checked');\n\t\t\t$searchResults.removeClass(srt01ListModifier);\n\t\t}\n\t});\n}\n\n/**\n *\n * @param {Event} e - Event\n * @private\n * @return { void }\n */\nfunction toggleViewState(e) {\n\tvar _this2 = this;\n\n\t_fasterdom2.default.measureInstant(function () {\n\n\t\t_this2._isListView = (0, _jquery2.default)(e.target).closest(_Identifiers2.IDENTIFIERS.TOGGLE_SWITCH.ROOT).find('input[type=\"checkbox\"]').is(':checked');\n\t});\n\n\tsetState.call(this);\n\t_LazyImageLoader2.default.update(null);\n}\n\n/**\n *\n *\n * @private\n * @return { void }\n */\nfunction checkListView() {\n\tvar _this3 = this;\n\n\t_fasterdom2.default.measureInstant(function () {\n\t\t_this3._isListView = _this3.$scope.hasClass(_Identifiers.IDENTIFIERS.SRC01.LIST_MODIFIER);\n\t});\n\n\tsetState.call(this);\n}\n\n/**\n * Class representing an text image combination instance.\n * Controls the state of the text image combination.\n * Controls expander icon behavior.\n * @extends { AbstractController }\n */\n\nvar SRC01Controller = function (_AbstractController) {\n\t(0, _inherits3.default)(SRC01Controller, _AbstractController);\n\n\tfunction SRC01Controller() {\n\t\t(0, _classCallCheck3.default)(this, SRC01Controller);\n\n\t\tvar _this4 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this4.$scope = null;\n\t\t_this4.$toggleSwitch = null;\n\t\t_this4.$toggleSwitchLabel = null;\n\t\t_this4.$toggleSwitchInput = null;\n\n\t\t_this4._isListView = false;\n\t\treturn _this4;\n\t}\n\n\tSRC01Controller.prototype.initToggle = function initToggle() {\n\n\t\tthis.$toggleSwitch = this.$scope.find(_Identifiers2.IDENTIFIERS.TOGGLE_SWITCH.ROOT);\n\n\t\tif (this.$toggleSwitch.length > 0) {\n\n\t\t\tthis.$toggleSwitchLabel = this.$toggleSwitch.find('label');\n\t\t\tthis.$toggleSwitchInput = this.$toggleSwitch.find('input[type=\"checkbox\"]');\n\n\t\t\tcheckListView.call(this);\n\t\t\tthis.$toggleSwitchLabel.on('click', toggleViewState.bind(this));\n\t\t}\n\t};\n\n\t/**\n * Initialises the controller.\n * Has to be called after ready event.\n *\n * @param { object } $root - jQuery wrapped DOM node\n * @public\n * @return { void }\n */\n\n\n\tSRC01Controller.prototype.init = function init($root) {\n\n\t\tthis.$scope = $root;\n\t\tthis.initToggle();\n\n\t\t_LazyImageLoader2.default.watch(this.$scope.get(0), this.initToggle.bind(this));\n\t};\n\n\treturn SRC01Controller;\n}(_Abstract2.default);\n\nexports.default = SRC01Controller;\n\n/***/ }),\n/* 663 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _device = __webpack_require__(54);\n\nvar _ViewportService = __webpack_require__(570);\n\nvar _ViewportService2 = _interopRequireDefault(_ViewportService);\n\nvar _Observable = __webpack_require__(48);\n\nvar _from = __webpack_require__(568);\n\nvar _throttleTime = __webpack_require__(664);\n\nvar _map = __webpack_require__(201);\n\nvar _Node = __webpack_require__(670);\n\nvar _Node2 = _interopRequireDefault(_Node);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar cache = [],\n INTERVAL = 200,\n REFRESH_INTERVAL = 600,\n OFFSET = 100;\n\n/**\r\n * Perform measurement of the dom node with {FasterDom} and make a new {Node} instance.\r\n * @param {HTMLElement} item - dom node\r\n * @return {Node}\r\n */\nfunction wrap(item) {\n\n\treturn new _Node2.default().init(item);\n}\n\n/**\r\n * Unwrap a given {Node} to provide acces to the original item.\r\n * @param {Node} node - the instance to unwrap.\r\n * @return {HTMLElement|*|HTMLAnchorElement}\r\n */\nfunction unWrap(node) {\n\n\treturn node.getRoot();\n}\n\n/**\r\n * Filter result based on visibility and return an array of pure {HTMLElement} dom nodes.\r\n * @param {Array<Node>} nodes - all nodes the service is watching\r\n * @param {Symbol} state - whether the items should have the property visible.\r\n * @return {Array<HTMLElement>} - visible/invisible items. {Node} instances are unwrapped and only the actual {HTMLElement}s are returned.\r\n */\nfunction filterVisibility(nodes, state) {\n\n\treturn nodes.filter(function (node) {\n\t\treturn node.isVisible() === state;\n\t}).map(unWrap);\n}\n\n/**\r\n * Sort items based on their visibility.\r\n * @param {Array.<Node>} nodes - all nodes the service is watching\r\n * @return {{visible: Array.<Node>, notVisible: Array.<Node>}} - an {object} containing nodes filtered on their current visibility\r\n */\nfunction splitOnVisibility(nodes) {\n\n\treturn {\n\t\tvisible: filterVisibility(nodes, _Node.STATE_VISIBLE),\n\t\tnotVisible: filterVisibility(nodes, _Node.STATE_INVISIBLE)\n\t};\n}\n\n/**\r\n * Check the node position against the Viewport. Pass the OFFSET to determine nodes which are near the viewport.\r\n * @param {Node} node - instance which should be determined\r\n * @return {Promise} - will be resolved when the visibility has been determined.\r\n */\nfunction determineItemVisibility(node) {\n\n\treturn _ViewportService2.default.isVisible(node.getRoot(), OFFSET).then(node.setVisibility.bind(node));\n}\n\n/**\r\n * Iterate all registered elements wrapped by a {Node} object to determine their visibility\r\n * @private\r\n * @param {Array.<Node>} nodes - all nodes the service is watching\r\n * @return {Promise<T[]>|Promise} - resolves when the visibility of all items was determined.\r\n */\nfunction findVisibleItems(nodes) {\n\n\treturn _promise2.default.all(nodes.map(determineItemVisibility));\n}\n\n/**\r\n *\r\n * @return {Promise<T>|Promise} promise - resolves with visible and invisible items\r\n */\nfunction checkWhichPositionsAreVisible(list) {\n\n\treturn new _promise2.default(function (resolve) {\n\n\t\tfindVisibleItems(list).then(function (nodes) {\n\t\t\treturn resolve(splitOnVisibility(nodes));\n\t\t});\n\t});\n}\n\n/**\r\n * Refresh the scroll position on page load when the page is reloaded and the scroll position restored.\r\n * @return {void}\r\n */\nfunction triggerRefresh() {\n\n\tsetTimeout(function () {\n\n\t\t_device.ScrollService.getCurrent().then(function (data) {\n\n\t\t\t_device.ScrollService.toPosition({\n\t\t\t\tx: data.x,\n\t\t\t\ty: data.y - 1\n\t\t\t});\n\t\t});\n\t}, REFRESH_INTERVAL);\n}\n\n/**\r\n * Watches {Array<HTMLAnchorElement>} elements for their visibility inside the Viewport.\r\n * Updates on scroll and resize events and publishes updates via updateEvent - stream.\r\n *\r\n * This class is exported as a singleton instance.\r\n */\n\nvar InViewportService = function () {\n\tfunction InViewportService() {\n\t\t(0, _classCallCheck3.default)(this, InViewportService);\n\n\n\t\t/**\r\n * The update stream.\r\n * Values will be recalculated and emitted after a throttle of 500ms.\r\n * @type {Observable<T>}\r\n */\n\t\tthis.updateEvent = null;\n\t}\n\n\t/**\r\n * Add items to watchlist.\r\n * @param {Array<HTMLElement>} items - the collection of items to watch\r\n * @return {InViewportService}\r\n */\n\n\n\tInViewportService.prototype.addItemsToWatchList = function addItemsToWatchList(items) {\n\n\t\titems.map(this.addItemToWatch);\n\t\ttriggerRefresh();\n\n\t\treturn this;\n\t};\n\n\t/**\r\n * Add a single item to watchlist.\r\n * @param {HTMLElement} item - the html node to add\r\n * @return {InViewportService}\r\n */\n\n\n\tInViewportService.prototype.addItemToWatch = function addItemToWatch(item) {\n\n\t\tcache.push(wrap(item));\n\t\ttriggerRefresh();\n\n\t\treturn this;\n\t};\n\n\t/**\r\n * Remove all items from watchlist.\r\n * @return {InViewportService}\r\n */\n\n\n\tInViewportService.prototype.clearWatchList = function clearWatchList() {\n\n\t\tcache.length = 0;\n\t\treturn this;\n\t};\n\n\t/**\r\n * Provides read access to the cache.\r\n * @return {Array<HTMLElement>} the items on the watchlist.\r\n */\n\n\n\tInViewportService.prototype.getWatchList = function getWatchList() {\n\n\t\treturn cache.map(unWrap);\n\t};\n\n\t/**\r\n * Initialize the stream.\r\n * Will be automatically called.\r\n * @private\r\n * @return {InViewportService} instance\r\n */\n\n\n\tInViewportService.prototype.init = function init() {\n\t\tvar _context;\n\n\t\t//eslint-disable\n\t\tthis.updateEvent = (_context = (_context = _from.from.call(_Observable.Observable, cache).merge(_device.ScrollService.scrollEvent).merge(_device.ResizeService.resizeEvent), _throttleTime.throttleTime).call(_context, INTERVAL), _map.map).call(_context, checkWhichPositionsAreVisible.bind(this, cache));\n\t\t//eslint-enable\n\n\t\ttriggerRefresh();\n\n\t\treturn this;\n\t};\n\n\treturn InViewportService;\n}();\n\nvar instance = new InViewportService().init(); //eslint-disable-line\n\nexports.default = instance;\n\n/***/ }),\n/* 664 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar async_1 = __webpack_require__(575);\nvar throttle_1 = __webpack_require__(576);\nvar throttleTime_1 = __webpack_require__(669);\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for `duration` milliseconds, then repeats this process.\n *\n * <span class=\"informal\">Lets a value pass, then ignores source values for the\n * next `duration` milliseconds.</span>\n *\n * <img src=\"./img/throttleTime.png\" width=\"100%\">\n *\n * `throttleTime` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled. After `duration` milliseconds (or the time unit determined\n * internally by the optional `scheduler`) has passed, the timer is disabled,\n * and this process repeats for the next source value. Optionally takes a\n * {@link IScheduler} for managing timers.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.throttleTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {number} duration Time to wait before emitting another value after\n * emitting the last value, measured in milliseconds or the time unit determined\n * internally by the optional `scheduler`.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the throttling.\n * @return {Observable<T>} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttleTime\n * @owner Observable\n */\nfunction throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n if (config === void 0) { config = throttle_1.defaultThrottleConfig; }\n return throttleTime_1.throttleTime(duration, scheduler, config)(this);\n}\nexports.throttleTime = throttleTime;\n//# sourceMappingURL=throttleTime.js.map\n\n/***/ }),\n/* 665 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = __webpack_require__(99);\nvar Action_1 = __webpack_require__(666);\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n _super.call(this, scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n // Always replace the current state with the new state.\n this.state = state;\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n var id = this.id;\n var scheduler = this.scheduler;\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n return root_1.root.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n return root_1.root.clearInterval(id) && undefined || undefined;\n };\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, delay) {\n var errored = false;\n var errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype._unsubscribe = function () {\n var id = this.id;\n var scheduler = this.scheduler;\n var actions = scheduler.actions;\n var index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n };\n return AsyncAction;\n}(Action_1.Action));\nexports.AsyncAction = AsyncAction;\n//# sourceMappingURL=AsyncAction.js.map\n\n/***/ }),\n/* 666 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscription_1 = __webpack_require__(207);\n/**\n * A unit of work to be executed in a {@link Scheduler}. An action is typically\n * created from within a Scheduler and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action<T> extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action<T>\n */\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n _super.call(this);\n }\n /**\n * Schedules this action on its parent Scheduler for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription_1.Subscription));\nexports.Action = Action;\n//# sourceMappingURL=Action.js.map\n\n/***/ }),\n/* 667 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Scheduler_1 = __webpack_require__(668);\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler() {\n _super.apply(this, arguments);\n this.actions = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n */\n this.active = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n */\n this.scheduled = undefined;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this.active) {\n actions.push(action);\n return;\n }\n var error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift()); // exhaust the scheduler queue\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler_1.Scheduler));\nexports.AsyncScheduler = AsyncScheduler;\n//# sourceMappingURL=AsyncScheduler.js.map\n\n/***/ }),\n/* 668 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an {@link Action}.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n */\nvar Scheduler = (function () {\n function Scheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.SchedulerAction(this, work).schedule(state, delay);\n };\n Scheduler.now = Date.now ? Date.now : function () { return +new Date(); };\n return Scheduler;\n}());\nexports.Scheduler = Scheduler;\n//# sourceMappingURL=Scheduler.js.map\n\n/***/ }),\n/* 669 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = __webpack_require__(115);\nvar async_1 = __webpack_require__(575);\nvar throttle_1 = __webpack_require__(576);\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for `duration` milliseconds, then repeats this process.\n *\n * <span class=\"informal\">Lets a value pass, then ignores source values for the\n * next `duration` milliseconds.</span>\n *\n * <img src=\"./img/throttleTime.png\" width=\"100%\">\n *\n * `throttleTime` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled. After `duration` milliseconds (or the time unit determined\n * internally by the optional `scheduler`) has passed, the timer is disabled,\n * and this process repeats for the next source value. Optionally takes a\n * {@link IScheduler} for managing timers.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.throttleTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {number} duration Time to wait before emitting another value after\n * emitting the last value, measured in milliseconds or the time unit determined\n * internally by the optional `scheduler`.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the throttling.\n * @return {Observable<T>} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttleTime\n * @owner Observable\n */\nfunction throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n if (config === void 0) { config = throttle_1.defaultThrottleConfig; }\n return function (source) { return source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing)); };\n}\nexports.throttleTime = throttleTime;\nvar ThrottleTimeOperator = (function () {\n function ThrottleTimeOperator(duration, scheduler, leading, trailing) {\n this.duration = duration;\n this.scheduler = scheduler;\n this.leading = leading;\n this.trailing = trailing;\n }\n ThrottleTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing));\n };\n return ThrottleTimeOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ThrottleTimeSubscriber = (function (_super) {\n __extends(ThrottleTimeSubscriber, _super);\n function ThrottleTimeSubscriber(destination, duration, scheduler, leading, trailing) {\n _super.call(this, destination);\n this.duration = duration;\n this.scheduler = scheduler;\n this.leading = leading;\n this.trailing = trailing;\n this._hasTrailingValue = false;\n this._trailingValue = null;\n }\n ThrottleTimeSubscriber.prototype._next = function (value) {\n if (this.throttled) {\n if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n else {\n this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this }));\n if (this.leading) {\n this.destination.next(value);\n }\n }\n };\n ThrottleTimeSubscriber.prototype.clearThrottle = function () {\n var throttled = this.throttled;\n if (throttled) {\n if (this.trailing && this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this._trailingValue = null;\n this._hasTrailingValue = false;\n }\n throttled.unsubscribe();\n this.remove(throttled);\n this.throttled = null;\n }\n };\n return ThrottleTimeSubscriber;\n}(Subscriber_1.Subscriber));\nfunction dispatchNext(arg) {\n var subscriber = arg.subscriber;\n subscriber.clearThrottle();\n}\n//# sourceMappingURL=throttleTime.js.map\n\n/***/ }),\n/* 670 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.STATE_INVISIBLE = exports.STATE_VISIBLE = undefined;\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _symbol = __webpack_require__(120);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\r\n * @typedef {object} Node.Position within the document\r\n * @param {int} top - top pos\r\n * @param {int} left - left pos\r\n * @param {int} right - right pos\r\n * @param {int} bottom - bottom pos\r\n */\n\nvar STATE_VISIBLE = (0, _symbol2.default)('visible'),\n STATE_INVISIBLE = (0, _symbol2.default)('invisible');\n\n/**\r\n * Helper class to wrap a dom node, its position withi the viewport and its visibility.\r\n */\n\nvar Node = function () {\n\tfunction Node() {\n\t\t(0, _classCallCheck3.default)(this, Node);\n\n\n\t\t/**\r\n *\r\n * @type {HTMLAnchorElement}\r\n */\n\t\tthis.root = null;\n\n\t\t/**\r\n *\r\n * @type {Symbol}\r\n */\n\t\tthis.visible = STATE_INVISIBLE;\n\t}\n\n\t/**\r\n * Initialize the instance.\r\n * @param {HTMLElement} root - the root node of the wrapped element.\r\n * @return {Node} instance\r\n */\n\n\n\tNode.prototype.init = function init(root) {\n\n\t\tthis.root = root;\n\n\t\treturn this;\n\t};\n\n\t/**\r\n * Set a symbol for the visibility.\r\n * @param {boolean} visibility - the state to be set\r\n * @return {Node} instance - for chaining\r\n */\n\n\n\tNode.prototype.setVisibility = function setVisibility(visibility) {\n\n\t\tif (visibility === true) {\n\t\t\tthis.visible = STATE_VISIBLE;\n\t\t} else {\n\t\t\tthis.visible = STATE_INVISIBLE;\n\t\t}\n\n\t\treturn this;\n\t};\n\n\t/**\r\n * Get item visibility.\r\n * @return {Symbol} whether the item is visible\r\n */\n\n\n\tNode.prototype.isVisible = function isVisible() {\n\t\treturn this.visible;\n\t};\n\n\t/**\r\n * Get the element to which the node is attached to.\r\n * @return {HTMLElement|*|HTMLAnchorElement} - the root node.\r\n */\n\n\n\tNode.prototype.getRoot = function getRoot() {\n\t\treturn this.root;\n\t};\n\n\treturn Node;\n}();\n\nexports.default = Node;\nexports.STATE_VISIBLE = STATE_VISIBLE;\nexports.STATE_INVISIBLE = STATE_INVISIBLE;\n\n/***/ }),\n/* 671 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.DEFAULT_CONFIG = undefined;\n\n__webpack_require__(672);\n\nexports.default = {\n\n\t/**\r\n * Get an Observer for DOM changes\r\n * @param {function} fn - callback fn to call on change\r\n * @returns {MutationObserver} instance\r\n */\n\tgetInstanceWithCallback: function getInstanceWithCallback(fn) {\n\n\t\treturn new MutationObserver(fn);\n\t}\n};\nvar DEFAULT_CONFIG = exports.DEFAULT_CONFIG = {\n\tchildList: true,\n\tattributes: false,\n\tcharacterData: true,\n\tsubtree: true\n};\n\n/***/ }),\n/* 672 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _weakMap = __webpack_require__(161);\n\nvar _weakMap2 = _interopRequireDefault(_weakMap);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*eslint-disable*/\n\n/**\r\n * @license\r\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\r\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\r\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\r\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\r\n * Code distributed by Google as part of the polymer project is also\r\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\r\n */\n\n(function (global) {\n\n\t// Don't allow this object to be redefined.\n\tif (global.JsMutationObserver) {\n\t\treturn;\n\t}\n\n\tvar registrationsTable = new _weakMap2.default();\n\n\tvar setImmediate;\n\n\t// As much as we would like to use the native implementation, IE\n\t// (all versions) suffers a rather annoying bug where it will drop or defer\n\t// callbacks when heavy DOM operations are being performed concurrently.\n\t//\n\t// For a thorough discussion on this, see:\n\t// http://codeforhire.com/2013/09/21/setimmediate-and-messagechannel-broken-on-internet-explorer-10/\n\tif (/Trident|Edge/.test(navigator.userAgent)) {\n\t\t// Sadly, this bug also affects postMessage and MessageQueues.\n\t\t//\n\t\t// We would like to use the onreadystatechange hack for IE <= 10, but it is\n\t\t// dangerous in the polyfilled environment due to requiring that the\n\t\t// observed script element be in the document.\n\t\tsetImmediate = setTimeout;\n\n\t\t// If some other browser ever implements it, let's prefer their native\n\t\t// implementation:\n\t} else if (window.setImmediate) {\n\t\tsetImmediate = window.setImmediate;\n\n\t\t// Otherwise, we fall back to postMessage as a means of emulating the next\n\t\t// task semantics of setImmediate.\n\t} else {\n\t\tvar setImmediateQueue = [];\n\t\tvar sentinel = String(Math.random());\n\t\twindow.addEventListener('message', function (e) {\n\t\t\tif (e.data === sentinel) {\n\t\t\t\tvar queue = setImmediateQueue;\n\t\t\t\tsetImmediateQueue = [];\n\t\t\t\tqueue.forEach(function (func) {\n\t\t\t\t\tfunc();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tsetImmediate = function setImmediate(func) {\n\t\t\tsetImmediateQueue.push(func);\n\t\t\twindow.postMessage(sentinel, '*');\n\t\t};\n\t}\n\n\t// This is used to ensure that we never schedule 2 callas to setImmediate\n\tvar isScheduled = false;\n\n\t// Keep track of observers that needs to be notified next time.\n\tvar scheduledObservers = [];\n\n\t/**\r\n * Schedules |dispatchCallback| to be called in the future.\r\n * @param {MutationObserver} observer\r\n */\n\tfunction scheduleCallback(observer) {\n\t\tscheduledObservers.push(observer);\n\t\tif (!isScheduled) {\n\t\t\tisScheduled = true;\n\t\t\tsetImmediate(dispatchCallbacks);\n\t\t}\n\t}\n\n\tfunction wrapIfNeeded(node) {\n\t\treturn window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(node) || node;\n\t}\n\n\tfunction dispatchCallbacks() {\n\t\t// http://dom.spec.whatwg.org/#mutation-observers\n\n\t\tisScheduled = false; // Used to allow a new setImmediate call above.\n\n\t\tvar observers = scheduledObservers;\n\t\tscheduledObservers = [];\n\t\t// Sort observers based on their creation UID (incremental).\n\t\tobservers.sort(function (o1, o2) {\n\t\t\treturn o1.uid_ - o2.uid_;\n\t\t});\n\n\t\tvar anyNonEmpty = false;\n\t\tobservers.forEach(function (observer) {\n\n\t\t\t// 2.1, 2.2\n\t\t\tvar queue = observer.takeRecords();\n\t\t\t// 2.3. Remove all transient registered observers whose observer is mo.\n\t\t\tremoveTransientObserversFor(observer);\n\n\t\t\t// 2.4\n\t\t\tif (queue.length) {\n\t\t\t\tobserver.callback_(queue, observer);\n\t\t\t\tanyNonEmpty = true;\n\t\t\t}\n\t\t});\n\n\t\t// 3.\n\t\tif (anyNonEmpty) {\n\t\t\tdispatchCallbacks();\n\t\t}\n\t}\n\n\tfunction removeTransientObserversFor(observer) {\n\t\tobserver.nodes_.forEach(function (node) {\n\t\t\tvar registrations = registrationsTable.get(node);\n\t\t\tif (!registrations) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tregistrations.forEach(function (registration) {\n\t\t\t\tif (registration.observer === observer) {\n\t\t\t\t\tregistration.removeTransientObservers();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\r\n * This function is used for the \"For each registered observer observer (with\r\n * observer's options as options) in target's list of registered observers,\r\n * run these substeps:\" and the \"For each ancestor ancestor of target, and for\r\n * each registered observer observer (with options options) in ancestor's list\r\n * of registered observers, run these substeps:\" part of the algorithms. The\r\n * |options.subtree| is checked to ensure that the callback is called\r\n * correctly.\r\n *\r\n * @param {Node} target\r\n * @param {function(MutationObserverInit):MutationRecord} callback\r\n */\n\tfunction forEachAncestorAndObserverEnqueueRecord(target, callback) {\n\t\tfor (var node = target; node; node = node.parentNode) {\n\t\t\tvar registrations = registrationsTable.get(node);\n\n\t\t\tif (registrations) {\n\t\t\t\tfor (var j = 0; j < registrations.length; j++) {\n\t\t\t\t\tvar registration = registrations[j];\n\t\t\t\t\tvar options = registration.options;\n\n\t\t\t\t\t// Only target ignores subtree.\n\t\t\t\t\tif (node !== target && !options.subtree) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar record = callback(options);\n\t\t\t\t\tif (record) {\n\t\t\t\t\t\tregistration.enqueue(record);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tvar uidCounter = 0;\n\n\t/**\r\n * The class that maps to the DOM MutationObserver interface.\r\n * @param {Function} callback.\r\n * @constructor\r\n */\n\tfunction JsMutationObserver(callback) {\n\t\tthis.callback_ = callback;\n\t\tthis.nodes_ = [];\n\t\tthis.records_ = [];\n\t\tthis.uid_ = ++uidCounter;\n\t}\n\n\tJsMutationObserver.prototype = {\n\t\tobserve: function observe(target, options) {\n\t\t\ttarget = wrapIfNeeded(target);\n\n\t\t\t// 1.1\n\t\t\tif (!options.childList && !options.attributes && !options.characterData ||\n\n\t\t\t// 1.2\n\t\t\toptions.attributeOldValue && !options.attributes ||\n\n\t\t\t// 1.3\n\t\t\toptions.attributeFilter && options.attributeFilter.length && !options.attributes ||\n\n\t\t\t// 1.4\n\t\t\toptions.characterDataOldValue && !options.characterData) {\n\n\t\t\t\tthrow new SyntaxError();\n\t\t\t}\n\n\t\t\tvar registrations = registrationsTable.get(target);\n\t\t\tif (!registrations) {\n\t\t\t\tregistrationsTable.set(target, registrations = []);\n\t\t\t}\n\n\t\t\t// 2\n\t\t\t// If target's list of registered observers already includes a registered\n\t\t\t// observer associated with the context object, replace that registered\n\t\t\t// observer's options with options.\n\t\t\tvar registration;\n\t\t\tfor (var i = 0; i < registrations.length; i++) {\n\t\t\t\tif (registrations[i].observer === this) {\n\t\t\t\t\tregistration = registrations[i];\n\t\t\t\t\tregistration.removeListeners();\n\t\t\t\t\tregistration.options = options;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// 3.\n\t\t\t// Otherwise, add a new registered observer to target's list of registered\n\t\t\t// observers with the context object as the observer and options as the\n\t\t\t// options, and add target to context object's list of nodes on which it\n\t\t\t// is registered.\n\t\t\tif (!registration) {\n\t\t\t\tregistration = new Registration(this, target, options);\n\t\t\t\tregistrations.push(registration);\n\t\t\t\tthis.nodes_.push(target);\n\t\t\t}\n\n\t\t\tregistration.addListeners();\n\t\t},\n\n\t\tdisconnect: function disconnect() {\n\t\t\tthis.nodes_.forEach(function (node) {\n\t\t\t\tvar registrations = registrationsTable.get(node);\n\t\t\t\tfor (var i = 0; i < registrations.length; i++) {\n\t\t\t\t\tvar registration = registrations[i];\n\t\t\t\t\tif (registration.observer === this) {\n\t\t\t\t\t\tregistration.removeListeners();\n\t\t\t\t\t\tregistrations.splice(i, 1);\n\t\t\t\t\t\t// Each node can only have one registered observer associated with\n\t\t\t\t\t\t// this observer.\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this);\n\t\t\tthis.records_ = [];\n\t\t},\n\n\t\ttakeRecords: function takeRecords() {\n\t\t\tvar copyOfRecords = this.records_;\n\t\t\tthis.records_ = [];\n\t\t\treturn copyOfRecords;\n\t\t}\n\t};\n\n\t/**\r\n * @param {string} type\r\n * @param {Node} target\r\n * @constructor\r\n */\n\tfunction MutationRecord(type, target) {\n\t\tthis.type = type;\n\t\tthis.target = target;\n\t\tthis.addedNodes = [];\n\t\tthis.removedNodes = [];\n\t\tthis.previousSibling = null;\n\t\tthis.nextSibling = null;\n\t\tthis.attributeName = null;\n\t\tthis.attributeNamespace = null;\n\t\tthis.oldValue = null;\n\t}\n\n\tfunction copyMutationRecord(original) {\n\t\tvar record = new MutationRecord(original.type, original.target);\n\t\trecord.addedNodes = original.addedNodes.slice();\n\t\trecord.removedNodes = original.removedNodes.slice();\n\t\trecord.previousSibling = original.previousSibling;\n\t\trecord.nextSibling = original.nextSibling;\n\t\trecord.attributeName = original.attributeName;\n\t\trecord.attributeNamespace = original.attributeNamespace;\n\t\trecord.oldValue = original.oldValue;\n\t\treturn record;\n\t};\n\n\t// We keep track of the two (possibly one) records used in a single mutation.\n\tvar currentRecord, recordWithOldValue;\n\n\t/**\r\n * Creates a record without |oldValue| and caches it as |currentRecord| for\r\n * later use.\r\n * @param {string} oldValue\r\n * @return {MutationRecord}\r\n */\n\tfunction getRecord(type, target) {\n\t\treturn currentRecord = new MutationRecord(type, target);\n\t}\n\n\t/**\r\n * Gets or creates a record with |oldValue| based in the |currentRecord|\r\n * @param {string} oldValue\r\n * @return {MutationRecord}\r\n */\n\tfunction getRecordWithOldValue(oldValue) {\n\t\tif (recordWithOldValue) {\n\t\t\treturn recordWithOldValue;\n\t\t}\n\t\trecordWithOldValue = copyMutationRecord(currentRecord);\n\t\trecordWithOldValue.oldValue = oldValue;\n\t\treturn recordWithOldValue;\n\t}\n\n\tfunction clearRecords() {\n\t\tcurrentRecord = recordWithOldValue = undefined;\n\t}\n\n\t/**\r\n * @param {MutationRecord} record\r\n * @return {boolean} Whether the record represents a record from the current\r\n * mutation event.\r\n */\n\tfunction recordRepresentsCurrentMutation(record) {\n\t\treturn record === recordWithOldValue || record === currentRecord;\n\t}\n\n\t/**\r\n * Selects which record, if any, to replace the last record in the queue.\r\n * This returns |null| if no record should be replaced.\r\n *\r\n * @param {MutationRecord} lastRecord\r\n * @param {MutationRecord} newRecord\r\n * @param {MutationRecord}\r\n */\n\tfunction selectRecord(lastRecord, newRecord) {\n\t\tif (lastRecord === newRecord) {\n\t\t\treturn lastRecord;\n\t\t}\n\n\t\t// Check if the the record we are adding represents the same record. If\n\t\t// so, we keep the one with the oldValue in it.\n\t\tif (recordWithOldValue && recordRepresentsCurrentMutation(lastRecord)) {\n\t\t\treturn recordWithOldValue;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\r\n * Class used to represent a registered observer.\r\n * @param {MutationObserver} observer\r\n * @param {Node} target\r\n * @param {MutationObserverInit} options\r\n * @constructor\r\n */\n\tfunction Registration(observer, target, options) {\n\t\tthis.observer = observer;\n\t\tthis.target = target;\n\t\tthis.options = options;\n\t\tthis.transientObservedNodes = [];\n\t}\n\n\tRegistration.prototype = {\n\t\tenqueue: function enqueue(record) {\n\t\t\tvar records = this.observer.records_;\n\t\t\tvar length = records.length;\n\n\t\t\t// There are cases where we replace the last record with the new record.\n\t\t\t// For example if the record represents the same mutation we need to use\n\t\t\t// the one with the oldValue. If we get same record (this can happen as we\n\t\t\t// walk up the tree) we ignore the new record.\n\t\t\tif (records.length > 0) {\n\t\t\t\tvar lastRecord = records[length - 1];\n\t\t\t\tvar recordToReplaceLast = selectRecord(lastRecord, record);\n\t\t\t\tif (recordToReplaceLast) {\n\t\t\t\t\trecords[length - 1] = recordToReplaceLast;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tscheduleCallback(this.observer);\n\t\t\t}\n\n\t\t\trecords[length] = record;\n\t\t},\n\n\t\taddListeners: function addListeners() {\n\t\t\tthis.addListeners_(this.target);\n\t\t},\n\n\t\taddListeners_: function addListeners_(node) {\n\t\t\tvar options = this.options;\n\t\t\tif (options.attributes) {\n\t\t\t\tnode.addEventListener('DOMAttrModified', this, true);\n\t\t\t}\n\n\t\t\tif (options.characterData) {\n\t\t\t\tnode.addEventListener('DOMCharacterDataModified', this, true);\n\t\t\t}\n\n\t\t\tif (options.childList) {\n\t\t\t\tnode.addEventListener('DOMNodeInserted', this, true);\n\t\t\t}\n\n\t\t\tif (options.childList || options.subtree) {\n\t\t\t\tnode.addEventListener('DOMNodeRemoved', this, true);\n\t\t\t}\n\t\t},\n\n\t\tremoveListeners: function removeListeners() {\n\t\t\tthis.removeListeners_(this.target);\n\t\t},\n\n\t\tremoveListeners_: function removeListeners_(node) {\n\t\t\tvar options = this.options;\n\t\t\tif (options.attributes) {\n\t\t\t\tnode.removeEventListener('DOMAttrModified', this, true);\n\t\t\t}\n\n\t\t\tif (options.characterData) {\n\t\t\t\tnode.removeEventListener('DOMCharacterDataModified', this, true);\n\t\t\t}\n\n\t\t\tif (options.childList) {\n\t\t\t\tnode.removeEventListener('DOMNodeInserted', this, true);\n\t\t\t}\n\n\t\t\tif (options.childList || options.subtree) {\n\t\t\t\tnode.removeEventListener('DOMNodeRemoved', this, true);\n\t\t\t}\n\t\t},\n\n\t\t/**\r\n * Adds a transient observer on node. The transient observer gets removed\r\n * next time we deliver the change records.\r\n * @param {Node} node\r\n */\n\t\taddTransientObserver: function addTransientObserver(node) {\n\t\t\t// Don't add transient observers on the target itself. We already have all\n\t\t\t// the required listeners set up on the target.\n\t\t\tif (node === this.target) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.addListeners_(node);\n\t\t\tthis.transientObservedNodes.push(node);\n\t\t\tvar registrations = registrationsTable.get(node);\n\t\t\tif (!registrations) {\n\t\t\t\tregistrationsTable.set(node, registrations = []);\n\t\t\t}\n\n\t\t\t// We know that registrations does not contain this because we already\n\t\t\t// checked if node === this.target.\n\t\t\tregistrations.push(this);\n\t\t},\n\n\t\tremoveTransientObservers: function removeTransientObservers() {\n\t\t\tvar transientObservedNodes = this.transientObservedNodes;\n\t\t\tthis.transientObservedNodes = [];\n\n\t\t\ttransientObservedNodes.forEach(function (node) {\n\t\t\t\t// Transient observers are never added to the target.\n\t\t\t\tthis.removeListeners_(node);\n\n\t\t\t\tvar registrations = registrationsTable.get(node);\n\t\t\t\tfor (var i = 0; i < registrations.length; i++) {\n\t\t\t\t\tif (registrations[i] === this) {\n\t\t\t\t\t\tregistrations.splice(i, 1);\n\t\t\t\t\t\t// Each node can only have one registered observer associated with\n\t\t\t\t\t\t// this observer.\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this);\n\t\t},\n\n\t\thandleEvent: function handleEvent(e) {\n\t\t\t// Stop propagation since we are managing the propagation manually.\n\t\t\t// This means that other mutation events on the page will not work\n\t\t\t// correctly but that is by design.\n\t\t\te.stopImmediatePropagation();\n\n\t\t\tswitch (e.type) {\n\t\t\t\tcase 'DOMAttrModified':\n\t\t\t\t\t// http://dom.spec.whatwg.org/#concept-mo-queue-attributes\n\n\t\t\t\t\tvar name = e.attrName;\n\t\t\t\t\tvar namespace = e.relatedNode.namespaceURI;\n\t\t\t\t\tvar target = e.target;\n\n\t\t\t\t\t// 1.\n\t\t\t\t\tvar record = new getRecord('attributes', target);\n\t\t\t\t\trecord.attributeName = name;\n\t\t\t\t\trecord.attributeNamespace = namespace;\n\n\t\t\t\t\t// 2.\n\t\t\t\t\tvar oldValue = e.attrChange === MutationEvent.ADDITION ? null : e.prevValue;\n\n\t\t\t\t\tforEachAncestorAndObserverEnqueueRecord(target, function (options) {\n\t\t\t\t\t\t// 3.1, 4.2\n\t\t\t\t\t\tif (!options.attributes) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// 3.2, 4.3\n\t\t\t\t\t\tif (options.attributeFilter && options.attributeFilter.length && options.attributeFilter.indexOf(name) === -1 && options.attributeFilter.indexOf(namespace) === -1) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// 3.3, 4.4\n\t\t\t\t\t\tif (options.attributeOldValue) {\n\t\t\t\t\t\t\treturn getRecordWithOldValue(oldValue);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// 3.4, 4.5\n\t\t\t\t\t\treturn record;\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'DOMCharacterDataModified':\n\t\t\t\t\t// http://dom.spec.whatwg.org/#concept-mo-queue-characterdata\n\t\t\t\t\tvar target = e.target;\n\n\t\t\t\t\t// 1.\n\t\t\t\t\tvar record = getRecord('characterData', target);\n\n\t\t\t\t\t// 2.\n\t\t\t\t\tvar oldValue = e.prevValue;\n\n\t\t\t\t\tforEachAncestorAndObserverEnqueueRecord(target, function (options) {\n\t\t\t\t\t\t// 3.1, 4.2\n\t\t\t\t\t\tif (!options.characterData) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// 3.2, 4.3\n\t\t\t\t\t\tif (options.characterDataOldValue) {\n\t\t\t\t\t\t\treturn getRecordWithOldValue(oldValue);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// 3.3, 4.4\n\t\t\t\t\t\treturn record;\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'DOMNodeRemoved':\n\t\t\t\t\tthis.addTransientObserver(e.target);\n\t\t\t\t// Fall through.\n\t\t\t\tcase 'DOMNodeInserted':\n\t\t\t\t\t// http://dom.spec.whatwg.org/#concept-mo-queue-childlist\n\t\t\t\t\tvar changedNode = e.target;\n\t\t\t\t\tvar addedNodes, removedNodes;\n\t\t\t\t\tif (e.type === 'DOMNodeInserted') {\n\t\t\t\t\t\taddedNodes = [changedNode];\n\t\t\t\t\t\tremovedNodes = [];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddedNodes = [];\n\t\t\t\t\t\tremovedNodes = [changedNode];\n\t\t\t\t\t}\n\t\t\t\t\tvar previousSibling = changedNode.previousSibling;\n\t\t\t\t\tvar nextSibling = changedNode.nextSibling;\n\n\t\t\t\t\t// 1.\n\t\t\t\t\tvar record = getRecord('childList', e.target.parentNode);\n\t\t\t\t\trecord.addedNodes = addedNodes;\n\t\t\t\t\trecord.removedNodes = removedNodes;\n\t\t\t\t\trecord.previousSibling = previousSibling;\n\t\t\t\t\trecord.nextSibling = nextSibling;\n\n\t\t\t\t\tforEachAncestorAndObserverEnqueueRecord(e.relatedNode, function (options) {\n\t\t\t\t\t\t// 2.1, 3.2\n\t\t\t\t\t\tif (!options.childList) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// 2.2, 3.3\n\t\t\t\t\t\treturn record;\n\t\t\t\t\t});\n\n\t\t\t}\n\n\t\t\tclearRecords();\n\t\t}\n\t};\n\n\tglobal.JsMutationObserver = JsMutationObserver;\n\n\tif (!global.MutationObserver) {\n\t\tglobal.MutationObserver = JsMutationObserver;\n\t\t// Explicltly mark MO as polyfilled for user reference.\n\t\tJsMutationObserver._isPolyfilled = true;\n\t}\n})(window);\n\n/***/ }),\n/* 673 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _device = __webpack_require__(54);\n\nvar _device2 = _interopRequireDefault(_device);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Selects all layout grid columns and content zones / marginal columns\n * @return {void}\n */\nfunction selectColumns() {\n\tvar _this = this;\n\n\tthis.sections = [];\n\n\t_fasterdom2.default.measureInstant(function () {\n\t\t_this.$sections.each(function (i, sec) {\n\t\t\tvar $sec = (0, _jquery2.default)(sec),\n\t\t\t $cols = $sec.find('> .container > .row > [class*=\"col-\"]'),\n\t\t\t obj = {};\n\n\t\t\tobj.$element = $sec;\n\t\t\tobj.$prev = $sec.prev();\n\t\t\tobj.$columns = (0, _jquery2.default)();\n\t\t\tobj.columns = [];\n\n\t\t\t$cols.each(function (j, col) {\n\t\t\t\tvar $col = (0, _jquery2.default)(col),\n\t\t\t\t $children = $col.children();\n\n\t\t\t\tobj.columns.push({\n\t\t\t\t\tclass: $col.attr('class').split(' '),\n\t\t\t\t\telements: $children\n\t\t\t\t});\n\n\t\t\t\tobj.$columns = obj.$columns.add($children);\n\t\t\t});\n\n\t\t\t_this.sections.push(obj);\n\t\t});\n\t});\n}\n\n/**\n * Wraps all content zones / marginal columns with necessary layout grid columns\n * @return {void}\n */\nfunction addWrapper() {\n\tvar _this2 = this;\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\t_this2.sections.forEach(function (sec) {\n\t\t\tif (sec.$prev.length > 0) {\n\t\t\t\tsec.$prev.after(sec.$element);\n\t\t\t} else {\n\t\t\t\t_this2.$main.prepend(sec.$element);\n\t\t\t}\n\n\t\t\tsec.columns.forEach(function (col) {\n\t\t\t\tcol.elements.appendTo(sec.$element.find('.' + col.class.join('.')));\n\t\t\t});\n\t\t});\n\n\t\t_this2.hasMarkup = true;\n\t});\n}\n\n/**\n * Unwraps all content zones / marginal columns\n * @return {void}\n */\nfunction removeWrapper() {\n\tvar _this3 = this;\n\n\tselectColumns.call(this);\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\t_this3.sections.forEach(function (sec) {\n\t\t\tvar $sec = (0, _jquery2.default)(sec.$element);\n\n\t\t\t$sec.after(sec.$columns);\n\t\t\t$sec.remove();\n\t\t});\n\n\t\t_this3.hasMarkup = false;\n\t});\n}\n\n/**\n * Class representing an layout instance.\n * Selects content zones and marginal columns to un-/wrap on breakpoint change\n * @extends { AbstractController }\n */\n\nvar LayoutController = function (_AbstractController) {\n\t(0, _inherits3.default)(LayoutController, _AbstractController);\n\n\tfunction LayoutController() {\n\t\t(0, _classCallCheck3.default)(this, LayoutController);\n\n\t\tvar _this4 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this4.breakpoints = ['xs', 'sm', 'md'];\n\t\t_this4.hasMarkup = false;\n\n\t\t_this4.sections = null;\n\n\t\t_this4.$scope = null;\n\t\t_this4.$main = null;\n\t\t_this4.$sections = null;\n\t\treturn _this4;\n\t}\n\n\t/**\n * Initialiss the controller.\n * Has to be called after ready event.\n * Subscribes to BreakpointChange event\n * @override\n * @param { object } $root - jQuery wrapped DOM node\n * @public\n */\n\n\n\tLayoutController.prototype.init = function init($root) {\n\t\tvar _this5 = this;\n\n\t\tthis.$scope = $root;\n\t\tthis.$main = this.$scope.find('main');\n\t\tthis.$sections = this.$scope.find('main > section > .container').parent();\n\n\t\tthis.hasMarkup = this.$sections.length > 0;\n\n\t\t_device2.default.breakpointEvent.subscribe(function (data) {\n\t\t\tif (_this5.breakpoints.includes(data.alias) && _this5.hasMarkup) {\n\t\t\t\tremoveWrapper.call(_this5);\n\t\t\t} else if (!_this5.breakpoints.includes(data.alias) && !_this5.hasMarkup) {\n\t\t\t\taddWrapper.call(_this5);\n\t\t\t}\n\t\t});\n\t};\n\n\treturn LayoutController;\n}(_Abstract2.default);\n\nexports.default = LayoutController;\n\n/***/ }),\n/* 674 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _BucketService = __webpack_require__(125);\n\nvar _BucketService2 = _interopRequireDefault(_BucketService);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _device = __webpack_require__(54);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar userAgent = window.UserAgent;\n\n/**\n * Show the sharing container at given position\n * @param {Object} pos Absolute position to show the sharing container at\n * @param {Number} pos.x Absolute x-position\n * @param {Number} pos.y Absolute y-position\n * @return {void}\n */\nfunction showShareContainer(pos) {\n\tvar _this = this;\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\t_device.ScrollService.getCurrent().then(function (scrollPos) {\n\t\t\t_this.$container.css({\n\t\t\t\ttop: pos.y + scrollPos.y,\n\t\t\t\tleft: pos.x + scrollPos.x\n\t\t\t});\n\t\t\tif (!_this._isOpen) {\n\t\t\t\t_this.$container.attr('aria-hidden', false);\n\t\t\t\t_this._isOpen = true;\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Hide the share container\n * @return {void}\n */\nfunction hideShareContainer() {\n\tvar _this2 = this;\n\n\t_fasterdom2.default.mutateInstant(function () {\n\t\t_this2.$container.attr('aria-hidden', true);\n\t\t_this2._isOpen = false;\n\t});\n}\n\n/**\n * Container function to get the current text selection on the page\n *\n * @private\n * @return {SelectionObject} Returns a Selection object representing the range of text selected by the user or the current position of the caret. @see https://developer.mozilla.org/de/docs/Web/API/Window/getSelection\n */\nfunction getSelection() {\n\treturn _BucketService2.default.win.getSelection();\n}\n\n/**\n * Determine selection position from current user selection. Uses {@link getSelection}\n * @return {Object} Position if the current selection\n */\nfunction getSelectionPosition() {\n\tvar selection = getSelection(),\n\t pos = {\n\t\tx: 0,\n\t\ty: 0\n\t};\n\n\tif (selection.rangeCount) {\n\t\tvar range = selection.getRangeAt(0).cloneRange();\n\t\tvar rect = void 0;\n\n\t\tif (range.getClientRects) {\n\t\t\trange.collapse(true);\n\t\t\trect = range.getClientRects()[0];\n\n\t\t\tpos.x = rect.left;\n\t\t\tpos.y = rect.top;\n\t\t}\n\n\t\tif (pos.x === 0 && pos.y === 0) {\n\t\t\tvar span = (0, _jquery2.default)('<span />');\n\n\t\t\tif (span[0].getClientRects) {\n\t\t\t\tspan.text('\\u200B');\n\t\t\t\trange.insertNode(span[0]);\n\n\t\t\t\trect = span.getClientRects()[0];\n\t\t\t\tpos.x = rect.left;\n\t\t\t\tpos.y = rect.top;\n\n\t\t\t\tspan.remove();\n\t\t\t}\n\t\t}\n\t}\n\n\treturn pos;\n}\n\n/**\n * Check if current selection is valid selection\n * @param {SelectionObject} selection Selection object to be checked\n * @return {Boolean} True, if the selection is valid and not empty, false otherwise\n */\nfunction isValidSelection(selection) {\n\treturn selection instanceof Selection && selection.toString() !== '' && !selection.isCollapsed && selection.rangeCount;\n}\n\n/**\n * Get the content of the current selection\n * @param {SelectionObject} selection Selection Object to get the content for\n * @return {String} The current selection content\n */\nfunction selectionContent(selection) {\n\tif (!isValidSelection(selection)) {\n\t\treturn '';\n\t}\n\n\tvar range = selection.getRangeAt(0),\n\t clonedSelection = range.cloneContents(),\n\t tmpDiv = document.createElement('div');\n\n\ttmpDiv.appendChild(clonedSelection);\n\n\treturn tmpDiv.innerHTML;\n}\n\n/**\n * Check if this component is available at $el's context\n * @param {DOMElement} $el Element to check, if this component is available at\n * @return {Boolean} True, if the element is in the collection of the current scope or a child of a component enabled parent, false otherwise\n */\nfunction elementInScope($el) {\n\treturn _jquery2.default.contains(this.$scope, $el) || this.$scope.index($el) > -1 || $el.closest('[data-tss01-enabled=\"true\"]').length > 0;\n}\n\n/**\n * Check if the common ancestor of the current selection is in the scope. Uses {@link elementInScope}\n * @param {SelectionObect} selection Selection object to check\n * @return {Boolean} True, if current selection is in scope or in a component enabled parent\n */\nfunction selectionCommonAncestorInScope(selection) {\n\ttry {\n\t\tvar $commonAncestor = (0, _jquery2.default)(selection.getRangeAt(0).commonAncestorContainer);\n\n\t\tif (elementInScope.call(this, $commonAncestor)) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t} catch (error) {\n\t\tthis.logger.warn('Error wrapping selection commonAncestor');\n\t\treturn false;\n\t}\n}\n\n/**\n * Check if the parent node of the current selection is in the scope. Uses {@link elementInScope}\n * @param {SelectionObject} selection Selection object to check\n * @return {Boolean} True, if current selections parent node is in scope or in a component enabled parent, false otherwise\n */\nfunction selectionParentNodeInScope(selection) {\n\ttry {\n\t\tvar $parent = (0, _jquery2.default)(selection.getRangeAt(0).commonAncestorContainer.parentNode);\n\n\t\tif (elementInScope.call(this, $parent)) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t} catch (error) {\n\t\tthis.logger.warn('Error wrapping selection parentNode');\n\t\treturn false;\n\t}\n}\n\n/**\n * Check if current selection parents are in scope\n * @param {SelectionObject} selection Selection object to check\n * @return {Boolean} True, if selection has common ancestors or parent node in scope, false otherwise\n */\nfunction selectionParentsInScope(selection) {\n\treturn selectionCommonAncestorInScope.call(this, selection) || selectionParentNodeInScope.call(this, selection);\n}\n\n/**\n * Check if current selection content is valid\n * @param {SelectionObject} selection Selection object to check\n * @param {Event} [event=null] Event on which the check was initiated\n * @return {Boolean} True, if current selection content is valid, false otherwise\n */\nfunction isValidSelectionContent(selection) {\n\tvar event = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar content = selectionContent(selection);\n\n\tif (content === '') {\n\t\treturn false;\n\t}\n\n\tif (content !== selection.toString()) {\n\t\tif (selectionParentsInScope.call(this, selection)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isBanned = false,\n\t\t $content = null;\n\n\t\ttry {\n\t\t\t$content = (0, _jquery2.default)(content);\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\n\t\t$content.each(function (i, v) {\n\t\t\tif (v.nodeType !== 3 && (0, _jquery2.default)(v).data('tss01-enabled') !== true) {\n\t\t\t\tisBanned = true;\n\t\t\t\t// break .each()\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// continue .each()\n\t\t\treturn true;\n\t\t});\n\n\t\treturn !isBanned;\n\t} else {\n\t\treturn selectionParentsInScope.call(this, selection);\n\t}\n}\n\n/**\n * Check the current selection and show or hide container\n * @param {Event} event Event on which the chek was initiated\n * @return {void}\n */\nfunction checkSelection(event) {\n\tvar _this3 = this;\n\n\t_fasterdom.fasterdomPromised.measure(function () {\n\t\tvar selection = getSelection();\n\n\t\tif (isValidSelectionContent.call(_this3, selection, event)) {\n\t\t\t_this3.isSelected = true;\n\t\t\t_this3.selectionText = selection.toString();\n\t\t\tshowShareContainer.call(_this3, getSelectionPosition());\n\t\t} else {\n\t\t\t_this3.isSelected = false;\n\t\t\t_this3.selectionText = '';\n\t\t\tif (_this3._isOpen) {\n\t\t\t\thideShareContainer.call(_this3);\n\t\t\t}\n\t\t}\n\t});\n}\n\n/**\n * Map the container elements to class variables\n * @return {void}\n */\nfunction mapContainerElements() {\n\tthis.$container = (0, _jquery2.default)('.tss01-container');\n\tthis.$containerButtons = this.$container.find('a');\n}\n\n/**\n * Setup class. Uses {@link mapContainerElements}\n * @return {Promise} Resolve, when class variables are set\n */\nfunction setup() {\n\tvar _this4 = this;\n\n\treturn new _promise2.default(function (resolve, reject) {\n\t\tmapContainerElements.call(_this4);\n\t\tresolve();\n\t});\n}\n\n/**\n * Add mouse and keyboard handler to determine to show share container or not. Uses {@link checkSelection}\n * @returns {void}\n */\nfunction addHandler() {\n\tvar self = this;\n\n\tthis.$containerButtons.on('click', function clickHandler(e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tvar $t = (0, _jquery2.default)(this);\n\t\tvar href = $t.attr('href');\n\n\t\thref = href.replace('{{shareURL}}', encodeURI(window.location.href)).replace('{{shareTitle}}', encodeURI(self.selectionText));\n\t\t_BucketService2.default.win.open(href, '_blank', 'width=450, height=650, left=' + (screen.width / 2 - 225) + ', top=' + (screen.height / 2 - 325));\n\n\t\treturn false;\n\t});\n\t_BucketService2.default.$document.on('mouseup keyup', checkSelection.bind(this));\n}\n\nvar TSS01Controller = function (_AbstractController) {\n\t(0, _inherits3.default)(TSS01Controller, _AbstractController);\n\n\tfunction TSS01Controller() {\n\t\t(0, _classCallCheck3.default)(this, TSS01Controller);\n\n\t\tvar _this5 = (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\n\t\t_this5.isSupported = typeof _BucketService2.default.win.getSelection === 'function';\n\t\t_this5.isSelected = false;\n\t\t_this5.selectionText = '';\n\t\treturn _this5;\n\t}\n\n\tTSS01Controller.prototype.init = function init($scope) {\n\t\tvar _this6 = this;\n\n\t\tthis.$scope = $scope;\n\n\t\tif (!this.isSupported || userAgent.isMobile) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetup.call(this).then(function () {\n\t\t\taddHandler.call(_this6);\n\t\t});\n\t};\n\n\treturn TSS01Controller;\n}(_Abstract2.default);\n\nvar instance = new TSS01Controller(); // eslint-disable-line one-var\n\nexports.default = instance;\n\n/***/ }),\n/* 675 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Add handler to accordeon child\n * @returns {void}\n */\nfunction addHandlerExtended() {\n\tvar _this = this;\n\n\tthis.$accChildItem.on('beforeOpen.acc-item', function () {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t_this.$scope.addClass('ses01__acc--open');\n\t\t});\n\t});\n\n\tthis.$accChildItem.on('beforeClose.acc-item', function () {\n\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t_this.$scope.removeClass('ses01__acc--open');\n\t\t});\n\t});\n}\n\n/**\n * Set up the `extend` functionality of the SES01 component, uses {@link addHandlerExtended}\n * @return {void}\n */\nfunction setupExtended() {\n\tthis.$accChildItem = this.$scope.find('[data-tpl*=acc] > ul > .accordion-item, > ol > .accordion-item');\n\taddHandlerExtended.call(this);\n}\n\nfunction addQuickLinksHandler() {\n\tvar _this2 = this;\n\n\tthis.$quickLinks = this.$scope.find('.suggestions.quick-links');\n\n\tthis.$input.on('focus', function () {\n\t\t_this2.$quickLinks.addClass('suggestions--open');\n\t});\n\n\tthis.$input.on('blur', function () {\n\t\t_this2.$quickLinks.removeClass('suggestions--open');\n\t});\n}\n\nvar SES01Controller = function (_AbstractController) {\n\t(0, _inherits3.default)(SES01Controller, _AbstractController);\n\n\tfunction SES01Controller() {\n\t\t(0, _classCallCheck3.default)(this, SES01Controller);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\t}\n\n\tSES01Controller.prototype.init = function init($root) {\n\t\tthis.$scope = $root;\n\t\tthis.$input = this.$scope.find('input');\n\n\t\tif (this.$scope.is('.ses01--extended')) {\n\t\t\tsetupExtended.call(this);\n\t\t}\n\n\t\tif (this.$scope.hasClass('ses01--has-quick-links')) {\n\t\t\taddQuickLinksHandler.call(this);\n\t\t}\n\t};\n\n\treturn SES01Controller;\n}(_Abstract2.default);\n\nexports.default = SES01Controller;\n\n/***/ }),\n/* 676 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _assign = __webpack_require__(116);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _ACC = __webpack_require__(574);\n\nvar _ACC2 = _interopRequireDefault(_ACC);\n\nvar _device = __webpack_require__(54);\n\nvar _device2 = _interopRequireDefault(_device);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Add handler to controller and breakpoint events\n * @returns {void}\n */\nfunction addHandler() {\n\tvar _this = this;\n\n\tif (this.options.mobileCTA) {\n\t\t_device2.default.breakpointEvent.subscribe(function (e) {\n\t\t\tif (['md', 'sm', 'xs'].includes(e.alias)) {\n\t\t\t\t_this.options.multiExpandable = false;\n\t\t\t\t_this.scrollOnOpen = false;\n\t\t\t\t_this.enable();\n\t\t\t\t_this.$scope.attr('aria-disabled', 'false');\n\t\t\t} else {\n\t\t\t\t_this.options.multiExpandable = true;\n\t\t\t\t_this.scrollOnOpen = true;\n\t\t\t\t_this.disable();\n\t\t\t\t_this.$scope.attr('aria-disabled', 'true');\n\t\t\t}\n\t\t});\n\t}\n\n\tif (this.options.mobileCTA) {\n\t\tthis.subController.forEach(function (ctrl) {\n\n\t\t\tctrl.onClose(function () {\n\t\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\t\t_this.$scope.css({\n\t\t\t\t\t\theight: _this.options.tmpHeight\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tctrl.afterClose(function () {\n\t\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\t\t_this.$scope.css('height', '');\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tctrl.$scope.on('click', '[data-trigger=item-close]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\n\t\t\t\tctrl.close();\n\n\t\t\t\treturn false;\n\t\t\t});\n\t\t});\n\t}\n}\n\nvar IEBController = function (_ACCController) {\n\t(0, _inherits3.default)(IEBController, _ACCController);\n\n\tfunction IEBController() {\n\t\t(0, _classCallCheck3.default)(this, IEBController);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _ACCController.call(this));\n\t}\n\n\tIEBController.prototype.init = function init($root) {\n\t\tvar options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tthis.options = {\n\t\t\tmobileCTA: options.mobileCTA = $root.is('.ieb01--mobile-cta'),\n\t\t\ttmpHeight: 0\n\t\t};\n\n\t\t_ACCController.prototype.init.call(this, $root, (0, _assign2.default)({}, {\n\t\t\titemSelector: '> [data-tpl=ieb01]',\n\t\t\titemTrigger: '> .ieb-item__header',\n\t\t\tcontentSelector: '> .ieb-item__content',\n\t\t\tmultiExpandable: true,\n\t\t\tdisabled: !this.options.mobileCTA && $root.attr('aria-disabled') === 'true'\n\t\t\t// desktopExpanded : this.options.mobileCTA,\n\t\t\t// mobileExpanded : false,\n\t\t\t// mobileOnly : false\n\t\t}, options));\n\n\t\taddHandler.call(this);\n\n\t\t// if ( !this.options.mobileCTA && this.$scope.attr( 'aria-disabled' ) === 'true' ) {\n\t\t// \tthis.disable();\n\t\t// }\n\t};\n\n\tIEBController.prototype.childHeight = function childHeight(h) {\n\t\tvar _this3 = this;\n\n\t\tif (this.options.mobileCTA && this._isDisabled === false) {\n\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\t_this3.options.tmpHeight = _this3.$scope.outerHeight();\n\t\t\t\t_this3.$scope.css({\n\t\t\t\t\theight: _this3.options.tmpHeight\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t_fasterdom2.default.mutateInstant(function () {\n\t\t\t\t_this3.$scope.css({\n\t\t\t\t\theight: h\n\t\t\t\t});\n\t\t\t}, 1);\n\t\t}\n\t};\n\n\treturn IEBController;\n}(_ACC2.default);\n\nexports.default = IEBController;\n\n/***/ }),\n/* 677 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _fasterdom2 = _interopRequireDefault(_fasterdom);\n\nvar _device = __webpack_require__(54);\n\nvar _device2 = _interopRequireDefault(_device);\n\nvar _Scroll = __webpack_require__(551);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction handleStickyTagBarResize(data) {\n\tvar _this = this;\n\n\tif (!this.bounds) {\n\t\tthis.bounds = {};\n\t}\n\n\t_fasterdom2.default.measureInstant(function () {\n\t\tvar offset = _this.$scope.offset();\n\n\t\t_this.bounds = {\n\t\t\tx: offset.left,\n\t\t\ty: offset.top,\n\t\t\tx2: offset.left + _this.$scope.outerWidth(),\n\t\t\ty2: offset.top + _this.$scope.outerHeight()\n\t\t};\n\t});\n}\n\nfunction handleStickyTagBarScroll(data) {\n\tif (data.y <= this.bounds.y2 && !this.state.isInViewport) {\n\t\tthis.state.isInViewport = true;\n\t} else if (data.y > this.bounds.y2 && this.state.isInViewport) {\n\t\tthis.state.isInViewport = false;\n\t}\n\n\tif (this.state.isFixed && this.state.isInViewport) {\n\t\tthis.state.isFixed = false;\n\t\tthis.$stickyTagBar.removeClass('open');\n\t} else if (!this.state.isFixed && !this.state.isInViewport) {\n\t\tthis.state.isFixed = true;\n\t\tthis.$stickyTagBar.addClass('open');\n\t}\n}\n\nfunction addStickyTagBarHandler() {\n\t_device2.default.resizeEvent.subscribe(handleStickyTagBarResize.bind(this));\n\t_device2.default.scrollEvent.subscribe(handleStickyTagBarScroll.bind(this));\n}\n\nfunction setupStickyTagBar() {\n\tvar _this2 = this;\n\n\tthis.$stickyTagBar.find('.tag-bar--sticky__jump-container a').on('click', function (e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\t_device.ScrollService.toElement(_this2.$scope);\n\n\t\treturn false;\n\t});\n\taddStickyTagBarHandler.call(this);\n}\n\nvar JFC01Controller = function (_AbstractController) {\n\t(0, _inherits3.default)(JFC01Controller, _AbstractController);\n\n\tfunction JFC01Controller() {\n\t\t(0, _classCallCheck3.default)(this, JFC01Controller);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _AbstractController.apply(this, arguments));\n\t}\n\n\tJFC01Controller.prototype.init = function init($scope) {\n\t\tthis.$scope = $scope;\n\n\t\tthis.$stickyTagBar = (0, _jquery2.default)(this.$scope.attr('id') ? '[data-tpl=tag-bar-sticky][for=' + this.$scope.attr('id') + ']' : '[data-tpl=tag-bar-sticky]');\n\n\t\tthis.state.isInViewport = true;\n\t\tsetupStickyTagBar.call(this);\n\t};\n\n\treturn JFC01Controller;\n}(_Abstract2.default);\n\nexports.default = JFC01Controller;\n\n/***/ }),\n/* 678 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _dec, _class;\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nvar _horizontalScroll = __webpack_require__(679);\n\nvar _horizontalScroll2 = _interopRequireDefault(_horizontalScroll);\n\nvar _device = __webpack_require__(54);\n\nvar _device2 = _interopRequireDefault(_device);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction checkPrevNextAvailability(scroller) {\n\tif (scroller.currentPage.pageX === 0) {\n\t\tthis.scope.classList.remove('has-prev');\n\t} else if (!this.scope.classList.contains('has-prev')) {\n\t\tthis.scope.classList.add('has-prev');\n\t}\n\n\tif (scroller.currentPage.pageX === scroller.pages.length - 1) {\n\t\tthis.scope.classList.remove('has-next');\n\t} else if (!this.scope.classList.contains('has-next')) {\n\t\tthis.scope.classList.add('has-next');\n\t}\n}\n\nfunction handleArrowClick(e, a, b, c) {\n\tif (!this.isHorizontalScrollingEnabled) {\n\t\treturn;\n\t}\n\n\tif (e.target.classList.contains('srf01__arrow--prev')) {\n\t\tthis.getHorizontalScroller().prev();\n\t} else if (e.target.classList.contains('srf01__arrow--next')) {\n\t\tthis.getHorizontalScroller().next();\n\t}\n}\n\nfunction addScrollingClickHandlerTo(elements) {\n\tvar _this = this;\n\n\tArray.prototype.map.call(this.controlElements, function (item) {\n\t\tif (!item.addEventListener) {\n\t\t\treturn;\n\t\t}\n\n\t\titem.addEventListener('click', handleArrowClick.bind(_this));\n\t\treturn item;\n\t});\n}\n\nfunction removeScrollingClickHandlerFrom(elements) {\n\tvar _this2 = this;\n\n\tArray.prototype.map.call(this.controlElements, function (item) {\n\t\tif (!item.removeEventListener) {\n\t\t\treturn;\n\t\t}\n\n\t\titem.removeEventListener('click', handleArrowClick.bind(_this2));\n\t\treturn item;\n\t});\n}\n\nfunction initScolling() {\n\tvar _this3 = this;\n\n\tif (this.faqn01 !== null) {\n\t\tthis.scope.classList.add('scrolling--enabled');\n\t\tvar scroller = this.initHorizontalScroll(this.faqn01, {\n\t\t\tsnap: 'li'\n\t\t});\n\n\t\tcheckPrevNextAvailability.call(this, scroller);\n\t\tscroller.on('scrollEnd', function () {\n\t\t\treturn checkPrevNextAvailability.call(_this3, scroller);\n\t\t});\n\t\taddScrollingClickHandlerTo.call(this, this.controlElements);\n\t}\n}\n\nfunction destroyScrolling() {\n\tthis.scope.classList.remove('scrolling--enabled');\n\tthis.destroyHorizontalScroll();\n\tremoveScrollingClickHandlerFrom.call(this, this.controlElements);\n}\n\nfunction setupHandler() {\n\tvar _this4 = this;\n\n\t_device2.default.breakpointEvent.subscribe(function (data) {\n\t\tif (['xs', 'sm', 'md'].includes(data.alias) && !_this4.isHorizontalScrollingEnabled()) {\n\t\t\tinitScolling.call(_this4);\n\t\t} else if (_this4.isHorizontalScrollingEnabled()) {\n\t\t\tdestroyScrolling.call(_this4);\n\t\t}\n\t});\n}\n\nvar SRF01Controller = (_dec = (0, _horizontalScroll2.default)(), _dec(_class = function (_AbstractController) {\n\t(0, _inherits3.default)(SRF01Controller, _AbstractController);\n\n\tfunction SRF01Controller() {\n\t\t(0, _classCallCheck3.default)(this, SRF01Controller);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _AbstractController.apply(this, arguments));\n\t}\n\n\tSRF01Controller.prototype.init = function init($scope) {\n\t\tthis.$scope = $scope;\n\t\tthis.scope = $scope[0];\n\n\t\tthis.faqn01 = this.scope.querySelector('[data-tpl=faqn01] .faqn01__inner');\n\n\t\tthis.controlElements = this.scope.querySelectorAll('.srf01__arrow');\n\n\t\tsetupHandler.call(this);\n\t};\n\n\treturn SRF01Controller;\n}(_Abstract2.default)) || _class);\nexports.default = SRF01Controller;\n\n/***/ }),\n/* 679 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends2 = __webpack_require__(578);\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _iscroll = __webpack_require__(680);\n\nvar _iscroll2 = _interopRequireDefault(_iscroll);\n\nvar _mixins = __webpack_require__(582);\n\nvar _mixins2 = _interopRequireDefault(_mixins);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction decorateClassWithHorizontalScroll() {\n\treturn function (target) {\n\t\tvar scroller = null,\n\t\t scrollingEnabled = false;\n\n\t\tvar extend = {\n\t\t\tisHorizontalScrollingEnabled: function isHorizontalScrollingEnabled() {\n\t\t\t\treturn scrollingEnabled;\n\t\t\t},\n\t\t\tinitHorizontalScroll: function initHorizontalScroll(element) {\n\t\t\t\tvar opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t\t\tscroller = new _iscroll2.default(element, (0, _extends3.default)({\n\t\t\t\t\tmouseWheel: true,\n\t\t\t\t\tscrollX: true,\n\t\t\t\t\tscrollY: false\n\t\t\t\t}, opts));\n\t\t\t\tscrollingEnabled = true;\n\t\t\t\treturn scroller;\n\t\t\t},\n\t\t\tdestroyHorizontalScroll: function destroyHorizontalScroll() {\n\t\t\t\tif (scrollingEnabled && scroller.destroy) {\n\t\t\t\t\tscroller.scroller.removeAttribute('style');\n\t\t\t\t\tscroller.destroy();\n\t\t\t\t\tscroller = null;\n\t\t\t\t\tscrollingEnabled = false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetHorizontalScroller: function getHorizontalScroller() {\n\t\t\t\treturn scroller;\n\t\t\t}\n\t\t};\n\n\t\t(0, _mixins2.default)(extend)(target);\n\t};\n}\n\nexports.default = decorateClassWithHorizontalScroll;\n\n/***/ }),\n/* 680 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;/*! iScroll v5.2.0 ~ (c) 2008-2016 Matteo Spinelli ~ http://cubiq.org/license */\n(function (window, document, Math) {\nvar rAF = window.requestAnimationFrame\t||\n\twindow.webkitRequestAnimationFrame\t||\n\twindow.mozRequestAnimationFrame\t\t||\n\twindow.oRequestAnimationFrame\t\t||\n\twindow.msRequestAnimationFrame\t\t||\n\tfunction (callback) { window.setTimeout(callback, 1000 / 60); };\n\nvar utils = (function () {\n\tvar me = {};\n\n\tvar _elementStyle = document.createElement('div').style;\n\tvar _vendor = (function () {\n\t\tvar vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'],\n\t\t\ttransform,\n\t\t\ti = 0,\n\t\t\tl = vendors.length;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\ttransform = vendors[i] + 'ransform';\n\t\t\tif ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1);\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tfunction _prefixStyle (style) {\n\t\tif ( _vendor === false ) return false;\n\t\tif ( _vendor === '' ) return style;\n\t\treturn _vendor + style.charAt(0).toUpperCase() + style.substr(1);\n\t}\n\n\tme.getTime = Date.now || function getTime () { return new Date().getTime(); };\n\n\tme.extend = function (target, obj) {\n\t\tfor ( var i in obj ) {\n\t\t\ttarget[i] = obj[i];\n\t\t}\n\t};\n\n\tme.addEvent = function (el, type, fn, capture) {\n\t\tel.addEventListener(type, fn, !!capture);\n\t};\n\n\tme.removeEvent = function (el, type, fn, capture) {\n\t\tel.removeEventListener(type, fn, !!capture);\n\t};\n\n\tme.prefixPointerEvent = function (pointerEvent) {\n\t\treturn window.MSPointerEvent ?\n\t\t\t'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8):\n\t\t\tpointerEvent;\n\t};\n\n\tme.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) {\n\t\tvar distance = current - start,\n\t\t\tspeed = Math.abs(distance) / time,\n\t\t\tdestination,\n\t\t\tduration;\n\n\t\tdeceleration = deceleration === undefined ? 0.0006 : deceleration;\n\n\t\tdestination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 );\n\t\tduration = speed / deceleration;\n\n\t\tif ( destination < lowerMargin ) {\n\t\t\tdestination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin;\n\t\t\tdistance = Math.abs(destination - current);\n\t\t\tduration = distance / speed;\n\t\t} else if ( destination > 0 ) {\n\t\t\tdestination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0;\n\t\t\tdistance = Math.abs(current) + destination;\n\t\t\tduration = distance / speed;\n\t\t}\n\n\t\treturn {\n\t\t\tdestination: Math.round(destination),\n\t\t\tduration: duration\n\t\t};\n\t};\n\n\tvar _transform = _prefixStyle('transform');\n\n\tme.extend(me, {\n\t\thasTransform: _transform !== false,\n\t\thasPerspective: _prefixStyle('perspective') in _elementStyle,\n\t\thasTouch: 'ontouchstart' in window,\n\t\thasPointer: !!(window.PointerEvent || window.MSPointerEvent), // IE10 is prefixed\n\t\thasTransition: _prefixStyle('transition') in _elementStyle\n\t});\n\n\t/*\n\tThis should find all Android browsers lower than build 535.19 (both stock browser and webview)\n\t- galaxy S2 is ok\n - 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1`\n - 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\n - galaxy S3 is badAndroid (stock brower, webview)\n `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\n - galaxy S4 is badAndroid (stock brower, webview)\n `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\n - galaxy S5 is OK\n `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)`\n - galaxy S6 is OK\n `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)`\n */\n\tme.isBadAndroid = (function() {\n\t\tvar appVersion = window.navigator.appVersion;\n\t\t// Android browser is not a chrome browser.\n\t\tif (/Android/.test(appVersion) && !(/Chrome\\/\\d/.test(appVersion))) {\n\t\t\tvar safariVersion = appVersion.match(/Safari\\/(\\d+.\\d)/);\n\t\t\tif(safariVersion && typeof safariVersion === \"object\" && safariVersion.length >= 2) {\n\t\t\t\treturn parseFloat(safariVersion[1]) < 535.19;\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t})();\n\n\tme.extend(me.style = {}, {\n\t\ttransform: _transform,\n\t\ttransitionTimingFunction: _prefixStyle('transitionTimingFunction'),\n\t\ttransitionDuration: _prefixStyle('transitionDuration'),\n\t\ttransitionDelay: _prefixStyle('transitionDelay'),\n\t\ttransformOrigin: _prefixStyle('transformOrigin')\n\t});\n\n\tme.hasClass = function (e, c) {\n\t\tvar re = new RegExp(\"(^|\\\\s)\" + c + \"(\\\\s|$)\");\n\t\treturn re.test(e.className);\n\t};\n\n\tme.addClass = function (e, c) {\n\t\tif ( me.hasClass(e, c) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar newclass = e.className.split(' ');\n\t\tnewclass.push(c);\n\t\te.className = newclass.join(' ');\n\t};\n\n\tme.removeClass = function (e, c) {\n\t\tif ( !me.hasClass(e, c) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar re = new RegExp(\"(^|\\\\s)\" + c + \"(\\\\s|$)\", 'g');\n\t\te.className = e.className.replace(re, ' ');\n\t};\n\n\tme.offset = function (el) {\n\t\tvar left = -el.offsetLeft,\n\t\t\ttop = -el.offsetTop;\n\n\t\t// jshint -W084\n\t\twhile (el = el.offsetParent) {\n\t\t\tleft -= el.offsetLeft;\n\t\t\ttop -= el.offsetTop;\n\t\t}\n\t\t// jshint +W084\n\n\t\treturn {\n\t\t\tleft: left,\n\t\t\ttop: top\n\t\t};\n\t};\n\n\tme.preventDefaultException = function (el, exceptions) {\n\t\tfor ( var i in exceptions ) {\n\t\t\tif ( exceptions[i].test(el[i]) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tme.extend(me.eventType = {}, {\n\t\ttouchstart: 1,\n\t\ttouchmove: 1,\n\t\ttouchend: 1,\n\n\t\tmousedown: 2,\n\t\tmousemove: 2,\n\t\tmouseup: 2,\n\n\t\tpointerdown: 3,\n\t\tpointermove: 3,\n\t\tpointerup: 3,\n\n\t\tMSPointerDown: 3,\n\t\tMSPointerMove: 3,\n\t\tMSPointerUp: 3\n\t});\n\n\tme.extend(me.ease = {}, {\n\t\tquadratic: {\n\t\t\tstyle: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n\t\t\tfn: function (k) {\n\t\t\t\treturn k * ( 2 - k );\n\t\t\t}\n\t\t},\n\t\tcircular: {\n\t\t\tstyle: 'cubic-bezier(0.1, 0.57, 0.1, 1)',\t// Not properly \"circular\" but this looks better, it should be (0.075, 0.82, 0.165, 1)\n\t\t\tfn: function (k) {\n\t\t\t\treturn Math.sqrt( 1 - ( --k * k ) );\n\t\t\t}\n\t\t},\n\t\tback: {\n\t\t\tstyle: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n\t\t\tfn: function (k) {\n\t\t\t\tvar b = 4;\n\t\t\t\treturn ( k = k - 1 ) * k * ( ( b + 1 ) * k + b ) + 1;\n\t\t\t}\n\t\t},\n\t\tbounce: {\n\t\t\tstyle: '',\n\t\t\tfn: function (k) {\n\t\t\t\tif ( ( k /= 1 ) < ( 1 / 2.75 ) ) {\n\t\t\t\t\treturn 7.5625 * k * k;\n\t\t\t\t} else if ( k < ( 2 / 2.75 ) ) {\n\t\t\t\t\treturn 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75;\n\t\t\t\t} else if ( k < ( 2.5 / 2.75 ) ) {\n\t\t\t\t\treturn 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375;\n\t\t\t\t} else {\n\t\t\t\t\treturn 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\telastic: {\n\t\t\tstyle: '',\n\t\t\tfn: function (k) {\n\t\t\t\tvar f = 0.22,\n\t\t\t\t\te = 0.4;\n\n\t\t\t\tif ( k === 0 ) { return 0; }\n\t\t\t\tif ( k == 1 ) { return 1; }\n\n\t\t\t\treturn ( e * Math.pow( 2, - 10 * k ) * Math.sin( ( k - f / 4 ) * ( 2 * Math.PI ) / f ) + 1 );\n\t\t\t}\n\t\t}\n\t});\n\n\tme.tap = function (e, eventName) {\n\t\tvar ev = document.createEvent('Event');\n\t\tev.initEvent(eventName, true, true);\n\t\tev.pageX = e.pageX;\n\t\tev.pageY = e.pageY;\n\t\te.target.dispatchEvent(ev);\n\t};\n\n\tme.click = function (e) {\n\t\tvar target = e.target,\n\t\t\tev;\n\n\t\tif ( !(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName) ) {\n\t\t\tev = document.createEvent('MouseEvents');\n\t\t\tev.initMouseEvent('click', true, true, e.view, 1,\n\t\t\t\ttarget.screenX, target.screenY, target.clientX, target.clientY,\n\t\t\t\te.ctrlKey, e.altKey, e.shiftKey, e.metaKey,\n\t\t\t\t0, null);\n\n\t\t\tev._constructed = true;\n\t\t\ttarget.dispatchEvent(ev);\n\t\t}\n\t};\n\n\treturn me;\n})();\nfunction IScroll (el, options) {\n\tthis.wrapper = typeof el == 'string' ? document.querySelector(el) : el;\n\tthis.scroller = this.wrapper.children[0];\n\tthis.scrollerStyle = this.scroller.style;\t\t// cache style for better performance\n\n\tthis.options = {\n\n\t\tresizeScrollbars: true,\n\n\t\tmouseWheelSpeed: 20,\n\n\t\tsnapThreshold: 0.334,\n\n// INSERT POINT: OPTIONS\n\t\tdisablePointer : !utils.hasPointer,\n\t\tdisableTouch : utils.hasPointer || !utils.hasTouch,\n\t\tdisableMouse : utils.hasPointer || utils.hasTouch,\n\t\tstartX: 0,\n\t\tstartY: 0,\n\t\tscrollY: true,\n\t\tdirectionLockThreshold: 5,\n\t\tmomentum: true,\n\n\t\tbounce: true,\n\t\tbounceTime: 600,\n\t\tbounceEasing: '',\n\n\t\tpreventDefault: true,\n\t\tpreventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ },\n\n\t\tHWCompositing: true,\n\t\tuseTransition: true,\n\t\tuseTransform: true,\n\t\tbindToWrapper: typeof window.onmousedown === \"undefined\"\n\t};\n\n\tfor ( var i in options ) {\n\t\tthis.options[i] = options[i];\n\t}\n\n\t// Normalize options\n\tthis.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : '';\n\n\tthis.options.useTransition = utils.hasTransition && this.options.useTransition;\n\tthis.options.useTransform = utils.hasTransform && this.options.useTransform;\n\n\tthis.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough;\n\tthis.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault;\n\n\t// If you want eventPassthrough I have to lock one of the axes\n\tthis.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY;\n\tthis.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX;\n\n\t// With eventPassthrough we also need lockDirection mechanism\n\tthis.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough;\n\tthis.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold;\n\n\tthis.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing;\n\n\tthis.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling;\n\n\tif ( this.options.tap === true ) {\n\t\tthis.options.tap = 'tap';\n\t}\n\n\tif ( this.options.shrinkScrollbars == 'scale' ) {\n\t\tthis.options.useTransition = false;\n\t}\n\n\tthis.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1;\n\n// INSERT POINT: NORMALIZATION\n\n\t// Some defaults\n\tthis.x = 0;\n\tthis.y = 0;\n\tthis.directionX = 0;\n\tthis.directionY = 0;\n\tthis._events = {};\n\n// INSERT POINT: DEFAULTS\n\n\tthis._init();\n\tthis.refresh();\n\n\tthis.scrollTo(this.options.startX, this.options.startY);\n\tthis.enable();\n}\n\nIScroll.prototype = {\n\tversion: '5.2.0',\n\n\t_init: function () {\n\t\tthis._initEvents();\n\n\t\tif ( this.options.scrollbars || this.options.indicators ) {\n\t\t\tthis._initIndicators();\n\t\t}\n\n\t\tif ( this.options.mouseWheel ) {\n\t\t\tthis._initWheel();\n\t\t}\n\n\t\tif ( this.options.snap ) {\n\t\t\tthis._initSnap();\n\t\t}\n\n\t\tif ( this.options.keyBindings ) {\n\t\t\tthis._initKeys();\n\t\t}\n\n// INSERT POINT: _init\n\n\t},\n\n\tdestroy: function () {\n\t\tthis._initEvents(true);\n\t\tclearTimeout(this.resizeTimeout);\n \t\tthis.resizeTimeout = null;\n\t\tthis._execEvent('destroy');\n\t},\n\n\t_transitionEnd: function (e) {\n\t\tif ( e.target != this.scroller || !this.isInTransition ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._transitionTime();\n\t\tif ( !this.resetPosition(this.options.bounceTime) ) {\n\t\t\tthis.isInTransition = false;\n\t\t\tthis._execEvent('scrollEnd');\n\t\t}\n\t},\n\n\t_start: function (e) {\n\t\t// React to left mouse button only\n\t\tif ( utils.eventType[e.type] != 1 ) {\n\t\t // for button property\n\t\t // http://unixpapa.com/js/mouse.html\n\t\t var button;\n\t if (!e.which) {\n\t /* IE case */\n\t button = (e.button < 2) ? 0 :\n\t ((e.button == 4) ? 1 : 2);\n\t } else {\n\t /* All others */\n\t button = e.button;\n\t }\n\t\t\tif ( button !== 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif ( !this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tvar point = e.touches ? e.touches[0] : e,\n\t\t\tpos;\n\n\t\tthis.initiated\t= utils.eventType[e.type];\n\t\tthis.moved\t\t= false;\n\t\tthis.distX\t\t= 0;\n\t\tthis.distY\t\t= 0;\n\t\tthis.directionX = 0;\n\t\tthis.directionY = 0;\n\t\tthis.directionLocked = 0;\n\n\t\tthis.startTime = utils.getTime();\n\n\t\tif ( this.options.useTransition && this.isInTransition ) {\n\t\t\tthis._transitionTime();\n\t\t\tthis.isInTransition = false;\n\t\t\tpos = this.getComputedPosition();\n\t\t\tthis._translate(Math.round(pos.x), Math.round(pos.y));\n\t\t\tthis._execEvent('scrollEnd');\n\t\t} else if ( !this.options.useTransition && this.isAnimating ) {\n\t\t\tthis.isAnimating = false;\n\t\t\tthis._execEvent('scrollEnd');\n\t\t}\n\n\t\tthis.startX = this.x;\n\t\tthis.startY = this.y;\n\t\tthis.absStartX = this.x;\n\t\tthis.absStartY = this.y;\n\t\tthis.pointX = point.pageX;\n\t\tthis.pointY = point.pageY;\n\n\t\tthis._execEvent('beforeScrollStart');\n\t},\n\n\t_move: function (e) {\n\t\tif ( !this.enabled || utils.eventType[e.type] !== this.initiated ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.options.preventDefault ) {\t// increases performance on Android? TODO: check!\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tvar point\t\t= e.touches ? e.touches[0] : e,\n\t\t\tdeltaX\t\t= point.pageX - this.pointX,\n\t\t\tdeltaY\t\t= point.pageY - this.pointY,\n\t\t\ttimestamp\t= utils.getTime(),\n\t\t\tnewX, newY,\n\t\t\tabsDistX, absDistY;\n\n\t\tthis.pointX\t\t= point.pageX;\n\t\tthis.pointY\t\t= point.pageY;\n\n\t\tthis.distX\t\t+= deltaX;\n\t\tthis.distY\t\t+= deltaY;\n\t\tabsDistX\t\t= Math.abs(this.distX);\n\t\tabsDistY\t\t= Math.abs(this.distY);\n\n\t\t// We need to move at least 10 pixels for the scrolling to initiate\n\t\tif ( timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If you are scrolling in one direction lock the other\n\t\tif ( !this.directionLocked && !this.options.freeScroll ) {\n\t\t\tif ( absDistX > absDistY + this.options.directionLockThreshold ) {\n\t\t\t\tthis.directionLocked = 'h';\t\t// lock horizontally\n\t\t\t} else if ( absDistY >= absDistX + this.options.directionLockThreshold ) {\n\t\t\t\tthis.directionLocked = 'v';\t\t// lock vertically\n\t\t\t} else {\n\t\t\t\tthis.directionLocked = 'n';\t\t// no lock\n\t\t\t}\n\t\t}\n\n\t\tif ( this.directionLocked == 'h' ) {\n\t\t\tif ( this.options.eventPassthrough == 'vertical' ) {\n\t\t\t\te.preventDefault();\n\t\t\t} else if ( this.options.eventPassthrough == 'horizontal' ) {\n\t\t\t\tthis.initiated = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdeltaY = 0;\n\t\t} else if ( this.directionLocked == 'v' ) {\n\t\t\tif ( this.options.eventPassthrough == 'horizontal' ) {\n\t\t\t\te.preventDefault();\n\t\t\t} else if ( this.options.eventPassthrough == 'vertical' ) {\n\t\t\t\tthis.initiated = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdeltaX = 0;\n\t\t}\n\n\t\tdeltaX = this.hasHorizontalScroll ? deltaX : 0;\n\t\tdeltaY = this.hasVerticalScroll ? deltaY : 0;\n\n\t\tnewX = this.x + deltaX;\n\t\tnewY = this.y + deltaY;\n\n\t\t// Slow down if outside of the boundaries\n\t\tif ( newX > 0 || newX < this.maxScrollX ) {\n\t\t\tnewX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX;\n\t\t}\n\t\tif ( newY > 0 || newY < this.maxScrollY ) {\n\t\t\tnewY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY;\n\t\t}\n\n\t\tthis.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0;\n\t\tthis.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0;\n\n\t\tif ( !this.moved ) {\n\t\t\tthis._execEvent('scrollStart');\n\t\t}\n\n\t\tthis.moved = true;\n\n\t\tthis._translate(newX, newY);\n\n/* REPLACE START: _move */\n\n\t\tif ( timestamp - this.startTime > 300 ) {\n\t\t\tthis.startTime = timestamp;\n\t\t\tthis.startX = this.x;\n\t\t\tthis.startY = this.y;\n\t\t}\n\n/* REPLACE END: _move */\n\n\t},\n\n\t_end: function (e) {\n\t\tif ( !this.enabled || utils.eventType[e.type] !== this.initiated ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tvar point = e.changedTouches ? e.changedTouches[0] : e,\n\t\t\tmomentumX,\n\t\t\tmomentumY,\n\t\t\tduration = utils.getTime() - this.startTime,\n\t\t\tnewX = Math.round(this.x),\n\t\t\tnewY = Math.round(this.y),\n\t\t\tdistanceX = Math.abs(newX - this.startX),\n\t\t\tdistanceY = Math.abs(newY - this.startY),\n\t\t\ttime = 0,\n\t\t\teasing = '';\n\n\t\tthis.isInTransition = 0;\n\t\tthis.initiated = 0;\n\t\tthis.endTime = utils.getTime();\n\n\t\t// reset if we are outside of the boundaries\n\t\tif ( this.resetPosition(this.options.bounceTime) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.scrollTo(newX, newY);\t// ensures that the last position is rounded\n\n\t\t// we scrolled less than 10 pixels\n\t\tif ( !this.moved ) {\n\t\t\tif ( this.options.tap ) {\n\t\t\t\tutils.tap(e, this.options.tap);\n\t\t\t}\n\n\t\t\tif ( this.options.click ) {\n\t\t\t\tutils.click(e);\n\t\t\t}\n\n\t\t\tthis._execEvent('scrollCancel');\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100 ) {\n\t\t\tthis._execEvent('flick');\n\t\t\treturn;\n\t\t}\n\n\t\t// start momentum animation if needed\n\t\tif ( this.options.momentum && duration < 300 ) {\n\t\t\tmomentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 };\n\t\t\tmomentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 };\n\t\t\tnewX = momentumX.destination;\n\t\t\tnewY = momentumY.destination;\n\t\t\ttime = Math.max(momentumX.duration, momentumY.duration);\n\t\t\tthis.isInTransition = 1;\n\t\t}\n\n\n\t\tif ( this.options.snap ) {\n\t\t\tvar snap = this._nearestSnap(newX, newY);\n\t\t\tthis.currentPage = snap;\n\t\t\ttime = this.options.snapSpeed || Math.max(\n\t\t\t\t\tMath.max(\n\t\t\t\t\t\tMath.min(Math.abs(newX - snap.x), 1000),\n\t\t\t\t\t\tMath.min(Math.abs(newY - snap.y), 1000)\n\t\t\t\t\t), 300);\n\t\t\tnewX = snap.x;\n\t\t\tnewY = snap.y;\n\n\t\t\tthis.directionX = 0;\n\t\t\tthis.directionY = 0;\n\t\t\teasing = this.options.bounceEasing;\n\t\t}\n\n// INSERT POINT: _end\n\n\t\tif ( newX != this.x || newY != this.y ) {\n\t\t\t// change easing function when scroller goes out of the boundaries\n\t\t\tif ( newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY ) {\n\t\t\t\teasing = utils.ease.quadratic;\n\t\t\t}\n\n\t\t\tthis.scrollTo(newX, newY, time, easing);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._execEvent('scrollEnd');\n\t},\n\n\t_resize: function () {\n\t\tvar that = this;\n\n\t\tclearTimeout(this.resizeTimeout);\n\n\t\tthis.resizeTimeout = setTimeout(function () {\n\t\t\tthat.refresh();\n\t\t}, this.options.resizePolling);\n\t},\n\n\tresetPosition: function (time) {\n\t\tvar x = this.x,\n\t\t\ty = this.y;\n\n\t\ttime = time || 0;\n\n\t\tif ( !this.hasHorizontalScroll || this.x > 0 ) {\n\t\t\tx = 0;\n\t\t} else if ( this.x < this.maxScrollX ) {\n\t\t\tx = this.maxScrollX;\n\t\t}\n\n\t\tif ( !this.hasVerticalScroll || this.y > 0 ) {\n\t\t\ty = 0;\n\t\t} else if ( this.y < this.maxScrollY ) {\n\t\t\ty = this.maxScrollY;\n\t\t}\n\n\t\tif ( x == this.x && y == this.y ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.scrollTo(x, y, time, this.options.bounceEasing);\n\n\t\treturn true;\n\t},\n\n\tdisable: function () {\n\t\tthis.enabled = false;\n\t},\n\n\tenable: function () {\n\t\tthis.enabled = true;\n\t},\n\n\trefresh: function () {\n\t\tvar rf = this.wrapper.offsetHeight;\t\t// Force reflow\n\n\t\tthis.wrapperWidth\t= this.wrapper.clientWidth;\n\t\tthis.wrapperHeight\t= this.wrapper.clientHeight;\n\n/* REPLACE START: refresh */\n\n\t\tthis.scrollerWidth\t= this.scroller.offsetWidth;\n\t\tthis.scrollerHeight\t= this.scroller.offsetHeight;\n\n\t\tthis.maxScrollX\t\t= this.wrapperWidth - this.scrollerWidth;\n\t\tthis.maxScrollY\t\t= this.wrapperHeight - this.scrollerHeight;\n\n/* REPLACE END: refresh */\n\n\t\tthis.hasHorizontalScroll\t= this.options.scrollX && this.maxScrollX < 0;\n\t\tthis.hasVerticalScroll\t\t= this.options.scrollY && this.maxScrollY < 0;\n\n\t\tif ( !this.hasHorizontalScroll ) {\n\t\t\tthis.maxScrollX = 0;\n\t\t\tthis.scrollerWidth = this.wrapperWidth;\n\t\t}\n\n\t\tif ( !this.hasVerticalScroll ) {\n\t\t\tthis.maxScrollY = 0;\n\t\t\tthis.scrollerHeight = this.wrapperHeight;\n\t\t}\n\n\t\tthis.endTime = 0;\n\t\tthis.directionX = 0;\n\t\tthis.directionY = 0;\n\n\t\tthis.wrapperOffset = utils.offset(this.wrapper);\n\n\t\tthis._execEvent('refresh');\n\n\t\tthis.resetPosition();\n\n// INSERT POINT: _refresh\n\n\t},\n\n\ton: function (type, fn) {\n\t\tif ( !this._events[type] ) {\n\t\t\tthis._events[type] = [];\n\t\t}\n\n\t\tthis._events[type].push(fn);\n\t},\n\n\toff: function (type, fn) {\n\t\tif ( !this._events[type] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar index = this._events[type].indexOf(fn);\n\n\t\tif ( index > -1 ) {\n\t\t\tthis._events[type].splice(index, 1);\n\t\t}\n\t},\n\n\t_execEvent: function (type) {\n\t\tif ( !this._events[type] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar i = 0,\n\t\t\tl = this._events[type].length;\n\n\t\tif ( !l ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tthis._events[type][i].apply(this, [].slice.call(arguments, 1));\n\t\t}\n\t},\n\n\tscrollBy: function (x, y, time, easing) {\n\t\tx = this.x + x;\n\t\ty = this.y + y;\n\t\ttime = time || 0;\n\n\t\tthis.scrollTo(x, y, time, easing);\n\t},\n\n\tscrollTo: function (x, y, time, easing) {\n\t\teasing = easing || utils.ease.circular;\n\n\t\tthis.isInTransition = this.options.useTransition && time > 0;\n\t\tvar transitionType = this.options.useTransition && easing.style;\n\t\tif ( !time || transitionType ) {\n\t\t\t\tif(transitionType) {\n\t\t\t\t\tthis._transitionTimingFunction(easing.style);\n\t\t\t\t\tthis._transitionTime(time);\n\t\t\t\t}\n\t\t\tthis._translate(x, y);\n\t\t} else {\n\t\t\tthis._animate(x, y, time, easing.fn);\n\t\t}\n\t},\n\n\tscrollToElement: function (el, time, offsetX, offsetY, easing) {\n\t\tel = el.nodeType ? el : this.scroller.querySelector(el);\n\n\t\tif ( !el ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar pos = utils.offset(el);\n\n\t\tpos.left -= this.wrapperOffset.left;\n\t\tpos.top -= this.wrapperOffset.top;\n\n\t\t// if offsetX/Y are true we center the element to the screen\n\t\tif ( offsetX === true ) {\n\t\t\toffsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2);\n\t\t}\n\t\tif ( offsetY === true ) {\n\t\t\toffsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2);\n\t\t}\n\n\t\tpos.left -= offsetX || 0;\n\t\tpos.top -= offsetY || 0;\n\n\t\tpos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left;\n\t\tpos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top;\n\n\t\ttime = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x-pos.left), Math.abs(this.y-pos.top)) : time;\n\n\t\tthis.scrollTo(pos.left, pos.top, time, easing);\n\t},\n\n\t_transitionTime: function (time) {\n\t\ttime = time || 0;\n\n\t\tvar durationProp = utils.style.transitionDuration;\n\t\tthis.scrollerStyle[durationProp] = time + 'ms';\n\n\t\tif ( !time && utils.isBadAndroid ) {\n\t\t\tthis.scrollerStyle[durationProp] = '0.0001ms';\n\t\t\t// remove 0.0001ms\n\t\t\tvar self = this;\n\t\t\trAF(function() {\n\t\t\t\tif(self.scrollerStyle[durationProp] === '0.0001ms') {\n\t\t\t\t\tself.scrollerStyle[durationProp] = '0s';\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\n\t\tif ( this.indicators ) {\n\t\t\tfor ( var i = this.indicators.length; i--; ) {\n\t\t\t\tthis.indicators[i].transitionTime(time);\n\t\t\t}\n\t\t}\n\n\n// INSERT POINT: _transitionTime\n\n\t},\n\n\t_transitionTimingFunction: function (easing) {\n\t\tthis.scrollerStyle[utils.style.transitionTimingFunction] = easing;\n\n\n\t\tif ( this.indicators ) {\n\t\t\tfor ( var i = this.indicators.length; i--; ) {\n\t\t\t\tthis.indicators[i].transitionTimingFunction(easing);\n\t\t\t}\n\t\t}\n\n\n// INSERT POINT: _transitionTimingFunction\n\n\t},\n\n\t_translate: function (x, y) {\n\t\tif ( this.options.useTransform ) {\n\n/* REPLACE START: _translate */\n\n\t\t\tthis.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ;\n\n/* REPLACE END: _translate */\n\n\t\t} else {\n\t\t\tx = Math.round(x);\n\t\t\ty = Math.round(y);\n\t\t\tthis.scrollerStyle.left = x + 'px';\n\t\t\tthis.scrollerStyle.top = y + 'px';\n\t\t}\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\n\tif ( this.indicators ) {\n\t\tfor ( var i = this.indicators.length; i--; ) {\n\t\t\tthis.indicators[i].updatePosition();\n\t\t}\n\t}\n\n\n// INSERT POINT: _translate\n\n\t},\n\n\t_initEvents: function (remove) {\n\t\tvar eventType = remove ? utils.removeEvent : utils.addEvent,\n\t\t\ttarget = this.options.bindToWrapper ? this.wrapper : window;\n\n\t\teventType(window, 'orientationchange', this);\n\t\teventType(window, 'resize', this);\n\n\t\tif ( this.options.click ) {\n\t\t\teventType(this.wrapper, 'click', this, true);\n\t\t}\n\n\t\tif ( !this.options.disableMouse ) {\n\t\t\teventType(this.wrapper, 'mousedown', this);\n\t\t\teventType(target, 'mousemove', this);\n\t\t\teventType(target, 'mousecancel', this);\n\t\t\teventType(target, 'mouseup', this);\n\t\t}\n\n\t\tif ( utils.hasPointer && !this.options.disablePointer ) {\n\t\t\teventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this);\n\t\t\teventType(target, utils.prefixPointerEvent('pointermove'), this);\n\t\t\teventType(target, utils.prefixPointerEvent('pointercancel'), this);\n\t\t\teventType(target, utils.prefixPointerEvent('pointerup'), this);\n\t\t}\n\n\t\tif ( utils.hasTouch && !this.options.disableTouch ) {\n\t\t\teventType(this.wrapper, 'touchstart', this);\n\t\t\teventType(target, 'touchmove', this);\n\t\t\teventType(target, 'touchcancel', this);\n\t\t\teventType(target, 'touchend', this);\n\t\t}\n\n\t\teventType(this.scroller, 'transitionend', this);\n\t\teventType(this.scroller, 'webkitTransitionEnd', this);\n\t\teventType(this.scroller, 'oTransitionEnd', this);\n\t\teventType(this.scroller, 'MSTransitionEnd', this);\n\t},\n\n\tgetComputedPosition: function () {\n\t\tvar matrix = window.getComputedStyle(this.scroller, null),\n\t\t\tx, y;\n\n\t\tif ( this.options.useTransform ) {\n\t\t\tmatrix = matrix[utils.style.transform].split(')')[0].split(', ');\n\t\t\tx = +(matrix[12] || matrix[4]);\n\t\t\ty = +(matrix[13] || matrix[5]);\n\t\t} else {\n\t\t\tx = +matrix.left.replace(/[^-\\d.]/g, '');\n\t\t\ty = +matrix.top.replace(/[^-\\d.]/g, '');\n\t\t}\n\n\t\treturn { x: x, y: y };\n\t},\n\t_initIndicators: function () {\n\t\tvar interactive = this.options.interactiveScrollbars,\n\t\t\tcustomStyle = typeof this.options.scrollbars != 'string',\n\t\t\tindicators = [],\n\t\t\tindicator;\n\n\t\tvar that = this;\n\n\t\tthis.indicators = [];\n\n\t\tif ( this.options.scrollbars ) {\n\t\t\t// Vertical scrollbar\n\t\t\tif ( this.options.scrollY ) {\n\t\t\t\tindicator = {\n\t\t\t\t\tel: createDefaultScrollbar('v', interactive, this.options.scrollbars),\n\t\t\t\t\tinteractive: interactive,\n\t\t\t\t\tdefaultScrollbars: true,\n\t\t\t\t\tcustomStyle: customStyle,\n\t\t\t\t\tresize: this.options.resizeScrollbars,\n\t\t\t\t\tshrink: this.options.shrinkScrollbars,\n\t\t\t\t\tfade: this.options.fadeScrollbars,\n\t\t\t\t\tlistenX: false\n\t\t\t\t};\n\n\t\t\t\tthis.wrapper.appendChild(indicator.el);\n\t\t\t\tindicators.push(indicator);\n\t\t\t}\n\n\t\t\t// Horizontal scrollbar\n\t\t\tif ( this.options.scrollX ) {\n\t\t\t\tindicator = {\n\t\t\t\t\tel: createDefaultScrollbar('h', interactive, this.options.scrollbars),\n\t\t\t\t\tinteractive: interactive,\n\t\t\t\t\tdefaultScrollbars: true,\n\t\t\t\t\tcustomStyle: customStyle,\n\t\t\t\t\tresize: this.options.resizeScrollbars,\n\t\t\t\t\tshrink: this.options.shrinkScrollbars,\n\t\t\t\t\tfade: this.options.fadeScrollbars,\n\t\t\t\t\tlistenY: false\n\t\t\t\t};\n\n\t\t\t\tthis.wrapper.appendChild(indicator.el);\n\t\t\t\tindicators.push(indicator);\n\t\t\t}\n\t\t}\n\n\t\tif ( this.options.indicators ) {\n\t\t\t// TODO: check concat compatibility\n\t\t\tindicators = indicators.concat(this.options.indicators);\n\t\t}\n\n\t\tfor ( var i = indicators.length; i--; ) {\n\t\t\tthis.indicators.push( new Indicator(this, indicators[i]) );\n\t\t}\n\n\t\t// TODO: check if we can use array.map (wide compatibility and performance issues)\n\t\tfunction _indicatorsMap (fn) {\n\t\t\tif (that.indicators) {\n\t\t\t\tfor ( var i = that.indicators.length; i--; ) {\n\t\t\t\t\tfn.call(that.indicators[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( this.options.fadeScrollbars ) {\n\t\t\tthis.on('scrollEnd', function () {\n\t\t\t\t_indicatorsMap(function () {\n\t\t\t\t\tthis.fade();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis.on('scrollCancel', function () {\n\t\t\t\t_indicatorsMap(function () {\n\t\t\t\t\tthis.fade();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis.on('scrollStart', function () {\n\t\t\t\t_indicatorsMap(function () {\n\t\t\t\t\tthis.fade(1);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis.on('beforeScrollStart', function () {\n\t\t\t\t_indicatorsMap(function () {\n\t\t\t\t\tthis.fade(1, true);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\n\t\tthis.on('refresh', function () {\n\t\t\t_indicatorsMap(function () {\n\t\t\t\tthis.refresh();\n\t\t\t});\n\t\t});\n\n\t\tthis.on('destroy', function () {\n\t\t\t_indicatorsMap(function () {\n\t\t\t\tthis.destroy();\n\t\t\t});\n\n\t\t\tdelete this.indicators;\n\t\t});\n\t},\n\n\t_initWheel: function () {\n\t\tutils.addEvent(this.wrapper, 'wheel', this);\n\t\tutils.addEvent(this.wrapper, 'mousewheel', this);\n\t\tutils.addEvent(this.wrapper, 'DOMMouseScroll', this);\n\n\t\tthis.on('destroy', function () {\n\t\t\tclearTimeout(this.wheelTimeout);\n\t\t\tthis.wheelTimeout = null;\n\t\t\tutils.removeEvent(this.wrapper, 'wheel', this);\n\t\t\tutils.removeEvent(this.wrapper, 'mousewheel', this);\n\t\t\tutils.removeEvent(this.wrapper, 'DOMMouseScroll', this);\n\t\t});\n\t},\n\n\t_wheel: function (e) {\n\t\tif ( !this.enabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tvar wheelDeltaX, wheelDeltaY,\n\t\t\tnewX, newY,\n\t\t\tthat = this;\n\n\t\tif ( this.wheelTimeout === undefined ) {\n\t\t\tthat._execEvent('scrollStart');\n\t\t}\n\n\t\t// Execute the scrollEnd event after 400ms the wheel stopped scrolling\n\t\tclearTimeout(this.wheelTimeout);\n\t\tthis.wheelTimeout = setTimeout(function () {\n\t\t\tif(!that.options.snap) {\n\t\t\t\tthat._execEvent('scrollEnd');\n\t\t\t}\n\t\t\tthat.wheelTimeout = undefined;\n\t\t}, 400);\n\n\t\tif ( 'deltaX' in e ) {\n\t\t\tif (e.deltaMode === 1) {\n\t\t\t\twheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed;\n\t\t\t\twheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed;\n\t\t\t} else {\n\t\t\t\twheelDeltaX = -e.deltaX;\n\t\t\t\twheelDeltaY = -e.deltaY;\n\t\t\t}\n\t\t} else if ( 'wheelDeltaX' in e ) {\n\t\t\twheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed;\n\t\t\twheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed;\n\t\t} else if ( 'wheelDelta' in e ) {\n\t\t\twheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed;\n\t\t} else if ( 'detail' in e ) {\n\t\t\twheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\twheelDeltaX *= this.options.invertWheelDirection;\n\t\twheelDeltaY *= this.options.invertWheelDirection;\n\n\t\tif ( !this.hasVerticalScroll ) {\n\t\t\twheelDeltaX = wheelDeltaY;\n\t\t\twheelDeltaY = 0;\n\t\t}\n\n\t\tif ( this.options.snap ) {\n\t\t\tnewX = this.currentPage.pageX;\n\t\t\tnewY = this.currentPage.pageY;\n\n\t\t\tif ( wheelDeltaX > 0 ) {\n\t\t\t\tnewX--;\n\t\t\t} else if ( wheelDeltaX < 0 ) {\n\t\t\t\tnewX++;\n\t\t\t}\n\n\t\t\tif ( wheelDeltaY > 0 ) {\n\t\t\t\tnewY--;\n\t\t\t} else if ( wheelDeltaY < 0 ) {\n\t\t\t\tnewY++;\n\t\t\t}\n\n\t\t\tthis.goToPage(newX, newY);\n\n\t\t\treturn;\n\t\t}\n\n\t\tnewX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0);\n\t\tnewY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0);\n\n\t\tthis.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0;\n\t\tthis.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0;\n\n\t\tif ( newX > 0 ) {\n\t\t\tnewX = 0;\n\t\t} else if ( newX < this.maxScrollX ) {\n\t\t\tnewX = this.maxScrollX;\n\t\t}\n\n\t\tif ( newY > 0 ) {\n\t\t\tnewY = 0;\n\t\t} else if ( newY < this.maxScrollY ) {\n\t\t\tnewY = this.maxScrollY;\n\t\t}\n\n\t\tthis.scrollTo(newX, newY, 0);\n\n// INSERT POINT: _wheel\n\t},\n\n\t_initSnap: function () {\n\t\tthis.currentPage = {};\n\n\t\tif ( typeof this.options.snap == 'string' ) {\n\t\t\tthis.options.snap = this.scroller.querySelectorAll(this.options.snap);\n\t\t}\n\n\t\tthis.on('refresh', function () {\n\t\t\tvar i = 0, l,\n\t\t\t\tm = 0, n,\n\t\t\t\tcx, cy,\n\t\t\t\tx = 0, y,\n\t\t\t\tstepX = this.options.snapStepX || this.wrapperWidth,\n\t\t\t\tstepY = this.options.snapStepY || this.wrapperHeight,\n\t\t\t\tel;\n\n\t\t\tthis.pages = [];\n\n\t\t\tif ( !this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.options.snap === true ) {\n\t\t\t\tcx = Math.round( stepX / 2 );\n\t\t\t\tcy = Math.round( stepY / 2 );\n\n\t\t\t\twhile ( x > -this.scrollerWidth ) {\n\t\t\t\t\tthis.pages[i] = [];\n\t\t\t\t\tl = 0;\n\t\t\t\t\ty = 0;\n\n\t\t\t\t\twhile ( y > -this.scrollerHeight ) {\n\t\t\t\t\t\tthis.pages[i][l] = {\n\t\t\t\t\t\t\tx: Math.max(x, this.maxScrollX),\n\t\t\t\t\t\t\ty: Math.max(y, this.maxScrollY),\n\t\t\t\t\t\t\twidth: stepX,\n\t\t\t\t\t\t\theight: stepY,\n\t\t\t\t\t\t\tcx: x - cx,\n\t\t\t\t\t\t\tcy: y - cy\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\ty -= stepY;\n\t\t\t\t\t\tl++;\n\t\t\t\t\t}\n\n\t\t\t\t\tx -= stepX;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tel = this.options.snap;\n\t\t\t\tl = el.length;\n\t\t\t\tn = -1;\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tif ( i === 0 || el[i].offsetLeft <= el[i-1].offsetLeft ) {\n\t\t\t\t\t\tm = 0;\n\t\t\t\t\t\tn++;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !this.pages[m] ) {\n\t\t\t\t\t\tthis.pages[m] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tx = Math.max(-el[i].offsetLeft, this.maxScrollX);\n\t\t\t\t\ty = Math.max(-el[i].offsetTop, this.maxScrollY);\n\t\t\t\t\tcx = x - Math.round(el[i].offsetWidth / 2);\n\t\t\t\t\tcy = y - Math.round(el[i].offsetHeight / 2);\n\n\t\t\t\t\tthis.pages[m][n] = {\n\t\t\t\t\t\tx: x,\n\t\t\t\t\t\ty: y,\n\t\t\t\t\t\twidth: el[i].offsetWidth,\n\t\t\t\t\t\theight: el[i].offsetHeight,\n\t\t\t\t\t\tcx: cx,\n\t\t\t\t\t\tcy: cy\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( x > this.maxScrollX ) {\n\t\t\t\t\t\tm++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0);\n\n\t\t\t// Update snap threshold if needed\n\t\t\tif ( this.options.snapThreshold % 1 === 0 ) {\n\t\t\t\tthis.snapThresholdX = this.options.snapThreshold;\n\t\t\t\tthis.snapThresholdY = this.options.snapThreshold;\n\t\t\t} else {\n\t\t\t\tthis.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold);\n\t\t\t\tthis.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold);\n\t\t\t}\n\t\t});\n\n\t\tthis.on('flick', function () {\n\t\t\tvar time = this.options.snapSpeed || Math.max(\n\t\t\t\t\tMath.max(\n\t\t\t\t\t\tMath.min(Math.abs(this.x - this.startX), 1000),\n\t\t\t\t\t\tMath.min(Math.abs(this.y - this.startY), 1000)\n\t\t\t\t\t), 300);\n\n\t\t\tthis.goToPage(\n\t\t\t\tthis.currentPage.pageX + this.directionX,\n\t\t\t\tthis.currentPage.pageY + this.directionY,\n\t\t\t\ttime\n\t\t\t);\n\t\t});\n\t},\n\n\t_nearestSnap: function (x, y) {\n\t\tif ( !this.pages.length ) {\n\t\t\treturn { x: 0, y: 0, pageX: 0, pageY: 0 };\n\t\t}\n\n\t\tvar i = 0,\n\t\t\tl = this.pages.length,\n\t\t\tm = 0;\n\n\t\t// Check if we exceeded the snap threshold\n\t\tif ( Math.abs(x - this.absStartX) < this.snapThresholdX &&\n\t\t\tMath.abs(y - this.absStartY) < this.snapThresholdY ) {\n\t\t\treturn this.currentPage;\n\t\t}\n\n\t\tif ( x > 0 ) {\n\t\t\tx = 0;\n\t\t} else if ( x < this.maxScrollX ) {\n\t\t\tx = this.maxScrollX;\n\t\t}\n\n\t\tif ( y > 0 ) {\n\t\t\ty = 0;\n\t\t} else if ( y < this.maxScrollY ) {\n\t\t\ty = this.maxScrollY;\n\t\t}\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( x >= this.pages[i][0].cx ) {\n\t\t\t\tx = this.pages[i][0].x;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tl = this.pages[i].length;\n\n\t\tfor ( ; m < l; m++ ) {\n\t\t\tif ( y >= this.pages[0][m].cy ) {\n\t\t\t\ty = this.pages[0][m].y;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif ( i == this.currentPage.pageX ) {\n\t\t\ti += this.directionX;\n\n\t\t\tif ( i < 0 ) {\n\t\t\t\ti = 0;\n\t\t\t} else if ( i >= this.pages.length ) {\n\t\t\t\ti = this.pages.length - 1;\n\t\t\t}\n\n\t\t\tx = this.pages[i][0].x;\n\t\t}\n\n\t\tif ( m == this.currentPage.pageY ) {\n\t\t\tm += this.directionY;\n\n\t\t\tif ( m < 0 ) {\n\t\t\t\tm = 0;\n\t\t\t} else if ( m >= this.pages[0].length ) {\n\t\t\t\tm = this.pages[0].length - 1;\n\t\t\t}\n\n\t\t\ty = this.pages[0][m].y;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t\tpageX: i,\n\t\t\tpageY: m\n\t\t};\n\t},\n\n\tgoToPage: function (x, y, time, easing) {\n\t\teasing = easing || this.options.bounceEasing;\n\n\t\tif ( x >= this.pages.length ) {\n\t\t\tx = this.pages.length - 1;\n\t\t} else if ( x < 0 ) {\n\t\t\tx = 0;\n\t\t}\n\n\t\tif ( y >= this.pages[x].length ) {\n\t\t\ty = this.pages[x].length - 1;\n\t\t} else if ( y < 0 ) {\n\t\t\ty = 0;\n\t\t}\n\n\t\tvar posX = this.pages[x][y].x,\n\t\t\tposY = this.pages[x][y].y;\n\n\t\ttime = time === undefined ? this.options.snapSpeed || Math.max(\n\t\t\tMath.max(\n\t\t\t\tMath.min(Math.abs(posX - this.x), 1000),\n\t\t\t\tMath.min(Math.abs(posY - this.y), 1000)\n\t\t\t), 300) : time;\n\n\t\tthis.currentPage = {\n\t\t\tx: posX,\n\t\t\ty: posY,\n\t\t\tpageX: x,\n\t\t\tpageY: y\n\t\t};\n\n\t\tthis.scrollTo(posX, posY, time, easing);\n\t},\n\n\tnext: function (time, easing) {\n\t\tvar x = this.currentPage.pageX,\n\t\t\ty = this.currentPage.pageY;\n\n\t\tx++;\n\n\t\tif ( x >= this.pages.length && this.hasVerticalScroll ) {\n\t\t\tx = 0;\n\t\t\ty++;\n\t\t}\n\n\t\tthis.goToPage(x, y, time, easing);\n\t},\n\n\tprev: function (time, easing) {\n\t\tvar x = this.currentPage.pageX,\n\t\t\ty = this.currentPage.pageY;\n\n\t\tx--;\n\n\t\tif ( x < 0 && this.hasVerticalScroll ) {\n\t\t\tx = 0;\n\t\t\ty--;\n\t\t}\n\n\t\tthis.goToPage(x, y, time, easing);\n\t},\n\n\t_initKeys: function (e) {\n\t\t// default key bindings\n\t\tvar keys = {\n\t\t\tpageUp: 33,\n\t\t\tpageDown: 34,\n\t\t\tend: 35,\n\t\t\thome: 36,\n\t\t\tleft: 37,\n\t\t\tup: 38,\n\t\t\tright: 39,\n\t\t\tdown: 40\n\t\t};\n\t\tvar i;\n\n\t\t// if you give me characters I give you keycode\n\t\tif ( typeof this.options.keyBindings == 'object' ) {\n\t\t\tfor ( i in this.options.keyBindings ) {\n\t\t\t\tif ( typeof this.options.keyBindings[i] == 'string' ) {\n\t\t\t\t\tthis.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthis.options.keyBindings = {};\n\t\t}\n\n\t\tfor ( i in keys ) {\n\t\t\tthis.options.keyBindings[i] = this.options.keyBindings[i] || keys[i];\n\t\t}\n\n\t\tutils.addEvent(window, 'keydown', this);\n\n\t\tthis.on('destroy', function () {\n\t\t\tutils.removeEvent(window, 'keydown', this);\n\t\t});\n\t},\n\n\t_key: function (e) {\n\t\tif ( !this.enabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar snap = this.options.snap,\t// we are using this alot, better to cache it\n\t\t\tnewX = snap ? this.currentPage.pageX : this.x,\n\t\t\tnewY = snap ? this.currentPage.pageY : this.y,\n\t\t\tnow = utils.getTime(),\n\t\t\tprevTime = this.keyTime || 0,\n\t\t\tacceleration = 0.250,\n\t\t\tpos;\n\n\t\tif ( this.options.useTransition && this.isInTransition ) {\n\t\t\tpos = this.getComputedPosition();\n\n\t\t\tthis._translate(Math.round(pos.x), Math.round(pos.y));\n\t\t\tthis.isInTransition = false;\n\t\t}\n\n\t\tthis.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0;\n\n\t\tswitch ( e.keyCode ) {\n\t\t\tcase this.options.keyBindings.pageUp:\n\t\t\t\tif ( this.hasHorizontalScroll && !this.hasVerticalScroll ) {\n\t\t\t\t\tnewX += snap ? 1 : this.wrapperWidth;\n\t\t\t\t} else {\n\t\t\t\t\tnewY += snap ? 1 : this.wrapperHeight;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase this.options.keyBindings.pageDown:\n\t\t\t\tif ( this.hasHorizontalScroll && !this.hasVerticalScroll ) {\n\t\t\t\t\tnewX -= snap ? 1 : this.wrapperWidth;\n\t\t\t\t} else {\n\t\t\t\t\tnewY -= snap ? 1 : this.wrapperHeight;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase this.options.keyBindings.end:\n\t\t\t\tnewX = snap ? this.pages.length-1 : this.maxScrollX;\n\t\t\t\tnewY = snap ? this.pages[0].length-1 : this.maxScrollY;\n\t\t\t\tbreak;\n\t\t\tcase this.options.keyBindings.home:\n\t\t\t\tnewX = 0;\n\t\t\t\tnewY = 0;\n\t\t\t\tbreak;\n\t\t\tcase this.options.keyBindings.left:\n\t\t\t\tnewX += snap ? -1 : 5 + this.keyAcceleration>>0;\n\t\t\t\tbreak;\n\t\t\tcase this.options.keyBindings.up:\n\t\t\t\tnewY += snap ? 1 : 5 + this.keyAcceleration>>0;\n\t\t\t\tbreak;\n\t\t\tcase this.options.keyBindings.right:\n\t\t\t\tnewX -= snap ? -1 : 5 + this.keyAcceleration>>0;\n\t\t\t\tbreak;\n\t\t\tcase this.options.keyBindings.down:\n\t\t\t\tnewY -= snap ? 1 : 5 + this.keyAcceleration>>0;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\tif ( snap ) {\n\t\t\tthis.goToPage(newX, newY);\n\t\t\treturn;\n\t\t}\n\n\t\tif ( newX > 0 ) {\n\t\t\tnewX = 0;\n\t\t\tthis.keyAcceleration = 0;\n\t\t} else if ( newX < this.maxScrollX ) {\n\t\t\tnewX = this.maxScrollX;\n\t\t\tthis.keyAcceleration = 0;\n\t\t}\n\n\t\tif ( newY > 0 ) {\n\t\t\tnewY = 0;\n\t\t\tthis.keyAcceleration = 0;\n\t\t} else if ( newY < this.maxScrollY ) {\n\t\t\tnewY = this.maxScrollY;\n\t\t\tthis.keyAcceleration = 0;\n\t\t}\n\n\t\tthis.scrollTo(newX, newY, 0);\n\n\t\tthis.keyTime = now;\n\t},\n\n\t_animate: function (destX, destY, duration, easingFn) {\n\t\tvar that = this,\n\t\t\tstartX = this.x,\n\t\t\tstartY = this.y,\n\t\t\tstartTime = utils.getTime(),\n\t\t\tdestTime = startTime + duration;\n\n\t\tfunction step () {\n\t\t\tvar now = utils.getTime(),\n\t\t\t\tnewX, newY,\n\t\t\t\teasing;\n\n\t\t\tif ( now >= destTime ) {\n\t\t\t\tthat.isAnimating = false;\n\t\t\t\tthat._translate(destX, destY);\n\n\t\t\t\tif ( !that.resetPosition(that.options.bounceTime) ) {\n\t\t\t\t\tthat._execEvent('scrollEnd');\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tnow = ( now - startTime ) / duration;\n\t\t\teasing = easingFn(now);\n\t\t\tnewX = ( destX - startX ) * easing + startX;\n\t\t\tnewY = ( destY - startY ) * easing + startY;\n\t\t\tthat._translate(newX, newY);\n\n\t\t\tif ( that.isAnimating ) {\n\t\t\t\trAF(step);\n\t\t\t}\n\t\t}\n\n\t\tthis.isAnimating = true;\n\t\tstep();\n\t},\n\thandleEvent: function (e) {\n\t\tswitch ( e.type ) {\n\t\t\tcase 'touchstart':\n\t\t\tcase 'pointerdown':\n\t\t\tcase 'MSPointerDown':\n\t\t\tcase 'mousedown':\n\t\t\t\tthis._start(e);\n\t\t\t\tbreak;\n\t\t\tcase 'touchmove':\n\t\t\tcase 'pointermove':\n\t\t\tcase 'MSPointerMove':\n\t\t\tcase 'mousemove':\n\t\t\t\tthis._move(e);\n\t\t\t\tbreak;\n\t\t\tcase 'touchend':\n\t\t\tcase 'pointerup':\n\t\t\tcase 'MSPointerUp':\n\t\t\tcase 'mouseup':\n\t\t\tcase 'touchcancel':\n\t\t\tcase 'pointercancel':\n\t\t\tcase 'MSPointerCancel':\n\t\t\tcase 'mousecancel':\n\t\t\t\tthis._end(e);\n\t\t\t\tbreak;\n\t\t\tcase 'orientationchange':\n\t\t\tcase 'resize':\n\t\t\t\tthis._resize();\n\t\t\t\tbreak;\n\t\t\tcase 'transitionend':\n\t\t\tcase 'webkitTransitionEnd':\n\t\t\tcase 'oTransitionEnd':\n\t\t\tcase 'MSTransitionEnd':\n\t\t\t\tthis._transitionEnd(e);\n\t\t\t\tbreak;\n\t\t\tcase 'wheel':\n\t\t\tcase 'DOMMouseScroll':\n\t\t\tcase 'mousewheel':\n\t\t\t\tthis._wheel(e);\n\t\t\t\tbreak;\n\t\t\tcase 'keydown':\n\t\t\t\tthis._key(e);\n\t\t\t\tbreak;\n\t\t\tcase 'click':\n\t\t\t\tif ( this.enabled && !e._constructed ) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n};\nfunction createDefaultScrollbar (direction, interactive, type) {\n\tvar scrollbar = document.createElement('div'),\n\t\tindicator = document.createElement('div');\n\n\tif ( type === true ) {\n\t\tscrollbar.style.cssText = 'position:absolute;z-index:9999';\n\t\tindicator.style.cssText = '-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px';\n\t}\n\n\tindicator.className = 'iScrollIndicator';\n\n\tif ( direction == 'h' ) {\n\t\tif ( type === true ) {\n\t\t\tscrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0';\n\t\t\tindicator.style.height = '100%';\n\t\t}\n\t\tscrollbar.className = 'iScrollHorizontalScrollbar';\n\t} else {\n\t\tif ( type === true ) {\n\t\t\tscrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px';\n\t\t\tindicator.style.width = '100%';\n\t\t}\n\t\tscrollbar.className = 'iScrollVerticalScrollbar';\n\t}\n\n\tscrollbar.style.cssText += ';overflow:hidden';\n\n\tif ( !interactive ) {\n\t\tscrollbar.style.pointerEvents = 'none';\n\t}\n\n\tscrollbar.appendChild(indicator);\n\n\treturn scrollbar;\n}\n\nfunction Indicator (scroller, options) {\n\tthis.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el;\n\tthis.wrapperStyle = this.wrapper.style;\n\tthis.indicator = this.wrapper.children[0];\n\tthis.indicatorStyle = this.indicator.style;\n\tthis.scroller = scroller;\n\n\tthis.options = {\n\t\tlistenX: true,\n\t\tlistenY: true,\n\t\tinteractive: false,\n\t\tresize: true,\n\t\tdefaultScrollbars: false,\n\t\tshrink: false,\n\t\tfade: false,\n\t\tspeedRatioX: 0,\n\t\tspeedRatioY: 0\n\t};\n\n\tfor ( var i in options ) {\n\t\tthis.options[i] = options[i];\n\t}\n\n\tthis.sizeRatioX = 1;\n\tthis.sizeRatioY = 1;\n\tthis.maxPosX = 0;\n\tthis.maxPosY = 0;\n\n\tif ( this.options.interactive ) {\n\t\tif ( !this.options.disableTouch ) {\n\t\t\tutils.addEvent(this.indicator, 'touchstart', this);\n\t\t\tutils.addEvent(window, 'touchend', this);\n\t\t}\n\t\tif ( !this.options.disablePointer ) {\n\t\t\tutils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this);\n\t\t\tutils.addEvent(window, utils.prefixPointerEvent('pointerup'), this);\n\t\t}\n\t\tif ( !this.options.disableMouse ) {\n\t\t\tutils.addEvent(this.indicator, 'mousedown', this);\n\t\t\tutils.addEvent(window, 'mouseup', this);\n\t\t}\n\t}\n\n\tif ( this.options.fade ) {\n\t\tthis.wrapperStyle[utils.style.transform] = this.scroller.translateZ;\n\t\tvar durationProp = utils.style.transitionDuration;\n\t\tthis.wrapperStyle[durationProp] = utils.isBadAndroid ? '0.0001ms' : '0ms';\n\t\t// remove 0.0001ms\n\t\tvar self = this;\n\t\tif(utils.isBadAndroid) {\n\t\t\trAF(function() {\n\t\t\t\tif(self.wrapperStyle[durationProp] === '0.0001ms') {\n\t\t\t\t\tself.wrapperStyle[durationProp] = '0s';\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tthis.wrapperStyle.opacity = '0';\n\t}\n}\n\nIndicator.prototype = {\n\thandleEvent: function (e) {\n\t\tswitch ( e.type ) {\n\t\t\tcase 'touchstart':\n\t\t\tcase 'pointerdown':\n\t\t\tcase 'MSPointerDown':\n\t\t\tcase 'mousedown':\n\t\t\t\tthis._start(e);\n\t\t\t\tbreak;\n\t\t\tcase 'touchmove':\n\t\t\tcase 'pointermove':\n\t\t\tcase 'MSPointerMove':\n\t\t\tcase 'mousemove':\n\t\t\t\tthis._move(e);\n\t\t\t\tbreak;\n\t\t\tcase 'touchend':\n\t\t\tcase 'pointerup':\n\t\t\tcase 'MSPointerUp':\n\t\t\tcase 'mouseup':\n\t\t\tcase 'touchcancel':\n\t\t\tcase 'pointercancel':\n\t\t\tcase 'MSPointerCancel':\n\t\t\tcase 'mousecancel':\n\t\t\t\tthis._end(e);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\tdestroy: function () {\n\t\tif ( this.options.fadeScrollbars ) {\n\t\t\tclearTimeout(this.fadeTimeout);\n\t\t\tthis.fadeTimeout = null;\n\t\t}\n\t\tif ( this.options.interactive ) {\n\t\t\tutils.removeEvent(this.indicator, 'touchstart', this);\n\t\t\tutils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this);\n\t\t\tutils.removeEvent(this.indicator, 'mousedown', this);\n\n\t\t\tutils.removeEvent(window, 'touchmove', this);\n\t\t\tutils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this);\n\t\t\tutils.removeEvent(window, 'mousemove', this);\n\n\t\t\tutils.removeEvent(window, 'touchend', this);\n\t\t\tutils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this);\n\t\t\tutils.removeEvent(window, 'mouseup', this);\n\t\t}\n\n\t\tif ( this.options.defaultScrollbars ) {\n\t\t\tthis.wrapper.parentNode.removeChild(this.wrapper);\n\t\t}\n\t},\n\n\t_start: function (e) {\n\t\tvar point = e.touches ? e.touches[0] : e;\n\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tthis.transitionTime();\n\n\t\tthis.initiated = true;\n\t\tthis.moved = false;\n\t\tthis.lastPointX\t= point.pageX;\n\t\tthis.lastPointY\t= point.pageY;\n\n\t\tthis.startTime\t= utils.getTime();\n\n\t\tif ( !this.options.disableTouch ) {\n\t\t\tutils.addEvent(window, 'touchmove', this);\n\t\t}\n\t\tif ( !this.options.disablePointer ) {\n\t\t\tutils.addEvent(window, utils.prefixPointerEvent('pointermove'), this);\n\t\t}\n\t\tif ( !this.options.disableMouse ) {\n\t\t\tutils.addEvent(window, 'mousemove', this);\n\t\t}\n\n\t\tthis.scroller._execEvent('beforeScrollStart');\n\t},\n\n\t_move: function (e) {\n\t\tvar point = e.touches ? e.touches[0] : e,\n\t\t\tdeltaX, deltaY,\n\t\t\tnewX, newY,\n\t\t\ttimestamp = utils.getTime();\n\n\t\tif ( !this.moved ) {\n\t\t\tthis.scroller._execEvent('scrollStart');\n\t\t}\n\n\t\tthis.moved = true;\n\n\t\tdeltaX = point.pageX - this.lastPointX;\n\t\tthis.lastPointX = point.pageX;\n\n\t\tdeltaY = point.pageY - this.lastPointY;\n\t\tthis.lastPointY = point.pageY;\n\n\t\tnewX = this.x + deltaX;\n\t\tnewY = this.y + deltaY;\n\n\t\tthis._pos(newX, newY);\n\n// INSERT POINT: indicator._move\n\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t},\n\n\t_end: function (e) {\n\t\tif ( !this.initiated ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.initiated = false;\n\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tutils.removeEvent(window, 'touchmove', this);\n\t\tutils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this);\n\t\tutils.removeEvent(window, 'mousemove', this);\n\n\t\tif ( this.scroller.options.snap ) {\n\t\t\tvar snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y);\n\n\t\t\tvar time = this.options.snapSpeed || Math.max(\n\t\t\t\t\tMath.max(\n\t\t\t\t\t\tMath.min(Math.abs(this.scroller.x - snap.x), 1000),\n\t\t\t\t\t\tMath.min(Math.abs(this.scroller.y - snap.y), 1000)\n\t\t\t\t\t), 300);\n\n\t\t\tif ( this.scroller.x != snap.x || this.scroller.y != snap.y ) {\n\t\t\t\tthis.scroller.directionX = 0;\n\t\t\t\tthis.scroller.directionY = 0;\n\t\t\t\tthis.scroller.currentPage = snap;\n\t\t\t\tthis.scroller.scrollTo(snap.x, snap.y, time, this.scroller.options.bounceEasing);\n\t\t\t}\n\t\t}\n\n\t\tif ( this.moved ) {\n\t\t\tthis.scroller._execEvent('scrollEnd');\n\t\t}\n\t},\n\n\ttransitionTime: function (time) {\n\t\ttime = time || 0;\n\t\tvar durationProp = utils.style.transitionDuration;\n\t\tthis.indicatorStyle[durationProp] = time + 'ms';\n\n\t\tif ( !time && utils.isBadAndroid ) {\n\t\t\tthis.indicatorStyle[durationProp] = '0.0001ms';\n\t\t\t// remove 0.0001ms\n\t\t\tvar self = this;\n\t\t\trAF(function() {\n\t\t\t\tif(self.indicatorStyle[durationProp] === '0.0001ms') {\n\t\t\t\t\tself.indicatorStyle[durationProp] = '0s';\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\n\ttransitionTimingFunction: function (easing) {\n\t\tthis.indicatorStyle[utils.style.transitionTimingFunction] = easing;\n\t},\n\n\trefresh: function () {\n\t\tthis.transitionTime();\n\n\t\tif ( this.options.listenX && !this.options.listenY ) {\n\t\t\tthis.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none';\n\t\t} else if ( this.options.listenY && !this.options.listenX ) {\n\t\t\tthis.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none';\n\t\t} else {\n\t\t\tthis.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none';\n\t\t}\n\n\t\tif ( this.scroller.hasHorizontalScroll && this.scroller.hasVerticalScroll ) {\n\t\t\tutils.addClass(this.wrapper, 'iScrollBothScrollbars');\n\t\t\tutils.removeClass(this.wrapper, 'iScrollLoneScrollbar');\n\n\t\t\tif ( this.options.defaultScrollbars && this.options.customStyle ) {\n\t\t\t\tif ( this.options.listenX ) {\n\t\t\t\t\tthis.wrapper.style.right = '8px';\n\t\t\t\t} else {\n\t\t\t\t\tthis.wrapper.style.bottom = '8px';\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tutils.removeClass(this.wrapper, 'iScrollBothScrollbars');\n\t\t\tutils.addClass(this.wrapper, 'iScrollLoneScrollbar');\n\n\t\t\tif ( this.options.defaultScrollbars && this.options.customStyle ) {\n\t\t\t\tif ( this.options.listenX ) {\n\t\t\t\t\tthis.wrapper.style.right = '2px';\n\t\t\t\t} else {\n\t\t\t\t\tthis.wrapper.style.bottom = '2px';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar r = this.wrapper.offsetHeight;\t// force refresh\n\n\t\tif ( this.options.listenX ) {\n\t\t\tthis.wrapperWidth = this.wrapper.clientWidth;\n\t\t\tif ( this.options.resize ) {\n\t\t\t\tthis.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8);\n\t\t\t\tthis.indicatorStyle.width = this.indicatorWidth + 'px';\n\t\t\t} else {\n\t\t\t\tthis.indicatorWidth = this.indicator.clientWidth;\n\t\t\t}\n\n\t\t\tthis.maxPosX = this.wrapperWidth - this.indicatorWidth;\n\n\t\t\tif ( this.options.shrink == 'clip' ) {\n\t\t\t\tthis.minBoundaryX = -this.indicatorWidth + 8;\n\t\t\t\tthis.maxBoundaryX = this.wrapperWidth - 8;\n\t\t\t} else {\n\t\t\t\tthis.minBoundaryX = 0;\n\t\t\t\tthis.maxBoundaryX = this.maxPosX;\n\t\t\t}\n\n\t\t\tthis.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX));\n\t\t}\n\n\t\tif ( this.options.listenY ) {\n\t\t\tthis.wrapperHeight = this.wrapper.clientHeight;\n\t\t\tif ( this.options.resize ) {\n\t\t\t\tthis.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8);\n\t\t\t\tthis.indicatorStyle.height = this.indicatorHeight + 'px';\n\t\t\t} else {\n\t\t\t\tthis.indicatorHeight = this.indicator.clientHeight;\n\t\t\t}\n\n\t\t\tthis.maxPosY = this.wrapperHeight - this.indicatorHeight;\n\n\t\t\tif ( this.options.shrink == 'clip' ) {\n\t\t\t\tthis.minBoundaryY = -this.indicatorHeight + 8;\n\t\t\t\tthis.maxBoundaryY = this.wrapperHeight - 8;\n\t\t\t} else {\n\t\t\t\tthis.minBoundaryY = 0;\n\t\t\t\tthis.maxBoundaryY = this.maxPosY;\n\t\t\t}\n\n\t\t\tthis.maxPosY = this.wrapperHeight - this.indicatorHeight;\n\t\t\tthis.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY));\n\t\t}\n\n\t\tthis.updatePosition();\n\t},\n\n\tupdatePosition: function () {\n\t\tvar x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0,\n\t\t\ty = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0;\n\n\t\tif ( !this.options.ignoreBoundaries ) {\n\t\t\tif ( x < this.minBoundaryX ) {\n\t\t\t\tif ( this.options.shrink == 'scale' ) {\n\t\t\t\t\tthis.width = Math.max(this.indicatorWidth + x, 8);\n\t\t\t\t\tthis.indicatorStyle.width = this.width + 'px';\n\t\t\t\t}\n\t\t\t\tx = this.minBoundaryX;\n\t\t\t} else if ( x > this.maxBoundaryX ) {\n\t\t\t\tif ( this.options.shrink == 'scale' ) {\n\t\t\t\t\tthis.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8);\n\t\t\t\t\tthis.indicatorStyle.width = this.width + 'px';\n\t\t\t\t\tx = this.maxPosX + this.indicatorWidth - this.width;\n\t\t\t\t} else {\n\t\t\t\t\tx = this.maxBoundaryX;\n\t\t\t\t}\n\t\t\t} else if ( this.options.shrink == 'scale' && this.width != this.indicatorWidth ) {\n\t\t\t\tthis.width = this.indicatorWidth;\n\t\t\t\tthis.indicatorStyle.width = this.width + 'px';\n\t\t\t}\n\n\t\t\tif ( y < this.minBoundaryY ) {\n\t\t\t\tif ( this.options.shrink == 'scale' ) {\n\t\t\t\t\tthis.height = Math.max(this.indicatorHeight + y * 3, 8);\n\t\t\t\t\tthis.indicatorStyle.height = this.height + 'px';\n\t\t\t\t}\n\t\t\t\ty = this.minBoundaryY;\n\t\t\t} else if ( y > this.maxBoundaryY ) {\n\t\t\t\tif ( this.options.shrink == 'scale' ) {\n\t\t\t\t\tthis.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8);\n\t\t\t\t\tthis.indicatorStyle.height = this.height + 'px';\n\t\t\t\t\ty = this.maxPosY + this.indicatorHeight - this.height;\n\t\t\t\t} else {\n\t\t\t\t\ty = this.maxBoundaryY;\n\t\t\t\t}\n\t\t\t} else if ( this.options.shrink == 'scale' && this.height != this.indicatorHeight ) {\n\t\t\t\tthis.height = this.indicatorHeight;\n\t\t\t\tthis.indicatorStyle.height = this.height + 'px';\n\t\t\t}\n\t\t}\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\tif ( this.scroller.options.useTransform ) {\n\t\t\tthis.indicatorStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.scroller.translateZ;\n\t\t} else {\n\t\t\tthis.indicatorStyle.left = x + 'px';\n\t\t\tthis.indicatorStyle.top = y + 'px';\n\t\t}\n\t},\n\n\t_pos: function (x, y) {\n\t\tif ( x < 0 ) {\n\t\t\tx = 0;\n\t\t} else if ( x > this.maxPosX ) {\n\t\t\tx = this.maxPosX;\n\t\t}\n\n\t\tif ( y < 0 ) {\n\t\t\ty = 0;\n\t\t} else if ( y > this.maxPosY ) {\n\t\t\ty = this.maxPosY;\n\t\t}\n\n\t\tx = this.options.listenX ? Math.round(x / this.sizeRatioX) : this.scroller.x;\n\t\ty = this.options.listenY ? Math.round(y / this.sizeRatioY) : this.scroller.y;\n\n\t\tthis.scroller.scrollTo(x, y);\n\t},\n\n\tfade: function (val, hold) {\n\t\tif ( hold && !this.visible ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout(this.fadeTimeout);\n\t\tthis.fadeTimeout = null;\n\n\t\tvar time = val ? 250 : 500,\n\t\t\tdelay = val ? 0 : 300;\n\n\t\tval = val ? '1' : '0';\n\n\t\tthis.wrapperStyle[utils.style.transitionDuration] = time + 'ms';\n\n\t\tthis.fadeTimeout = setTimeout((function (val) {\n\t\t\tthis.wrapperStyle.opacity = val;\n\t\t\tthis.visible = +val;\n\t\t}).bind(this, val), delay);\n\t}\n};\n\nIScroll.utils = utils;\n\nif ( typeof module != 'undefined' && module.exports ) {\n\tmodule.exports = IScroll;\n} else if ( true ) {\n !(__WEBPACK_AMD_DEFINE_RESULT__ = function () { return IScroll; }.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n} else {\n\twindow.IScroll = IScroll;\n}\n\n})(window, document, Math);\n\n\n/***/ }),\n/* 681 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(10);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(11);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _device = __webpack_require__(54);\n\nvar _Abstract = __webpack_require__(37);\n\nvar _Abstract2 = _interopRequireDefault(_Abstract);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction switchBreakpoints(breakpoint) {\n\tif (this.$mobileNavigationItems.filter('.visible').length) {\n\t\tthis.$mobileNavigationItems.filter('.visible').trigger('click', [true, breakpoint]);\n\t} else {\n\t\tthis.$mobileNavigationItems.eq(0).trigger('click', [true, breakpoint]);\n\t}\n}\n\nfunction addHandler() {\n\tvar _this = this;\n\n\t_device.BreakpointService.breakpointEvent.subscribe(function (data) {\n\t\tswitch (data.alias) {\n\t\t\tcase 'sm':\n\t\t\tcase 'md':\n\t\t\t\tswitchBreakpoints.call(_this, data.alias);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t_this.$mobileNavigationItems.removeClass('visible');\n\t\t\t\t_this.$items.eq(0).css('marginLeft', '');\n\t\t}\n\n\t\t_this.currentBreakpoint = data.alias;\n\t});\n\n\tthis.$mobileNavigationItems.on('click', function (e) {\n\t\tvar forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\tvar breakpoint = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t\tif (!breakpoint) {\n\t\t\tbreakpoint = _this.currentBreakpoint;\n\t\t}\n\t\tif ((!['sm', 'md'].includes(breakpoint) || _this.$mobileNavigationItems.eq(index).hasClass('visible')) && forceUpdate === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar index = _this.$mobileNavigationItems.index(e.currentTarget),\n\t\t shift = 100; // in percent\n\n\t\tif (breakpoint === 'md') {\n\t\t\tshift = 50;\n\t\t\tindex = Math.min(index, _this.$mobileNavigationItems.length - 2);\n\t\t}\n\n\t\t_this.$items.eq(0).css('marginLeft', -1 * index * shift + '%');\n\t\t_this.$mobileNavigationItems.removeClass('visible');\n\t\t_this.$mobileNavigationItems.eq(index).addClass('visible');\n\t});\n}\n\nvar PC01Controller = function (_AbstractController) {\n\t(0, _inherits3.default)(PC01Controller, _AbstractController);\n\n\tfunction PC01Controller() {\n\t\t(0, _classCallCheck3.default)(this, PC01Controller);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, _AbstractController.call(this));\n\t}\n\n\t/**\n * Initialises the controller.\n * Has to be called after ready event.\n *\n * @param { jQuery } $root - jQuery wrapped DOM node\n * @public\n * @return { PC01Controller } instance\n */\n\n\n\tPC01Controller.prototype.init = function init($root) {\n\t\tthis.$scope = $root;\n\t\tthis.$mobileNavigation = this.$scope.find('.mobile-navigation');\n\n\t\tthis.$items = this.$scope.find('> ol > li');\n\n\t\tif (this.$mobileNavigation.length) {\n\t\t\tthis.currentBreakpoint = false;\n\t\t\tthis.$mobileNavigationItems = this.$mobileNavigation.find('li');\n\t\t\taddHandler.call(this);\n\t\t}\n\n\t\treturn this;\n\t};\n\n\treturn PC01Controller;\n}(_Abstract2.default);\n\nexports.default = PC01Controller;\n\n/***/ }),\n/* 682 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _Identifiers = __webpack_require__(577);\n\nvar _jquery = __webpack_require__(16);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Class wrapping all element features.\n * Is used as a singleton.\n */\nvar ElementLoader = function () {\n\tfunction ElementLoader() {\n\t\t(0, _classCallCheck3.default)(this, ElementLoader);\n\t}\n\n\t/**\n * Initialises the controller singleton.\n * Has to be called after ready event.\n * @public\n * @return { void }\n */\n\tElementLoader.prototype.init = function init() {};\n\n\t/**\n * Loads the dependencies for the elements\n * Has to be called after ready event.\n * @public\n * @return { void }\n */\n\n\n\tElementLoader.loadDependencies = function loadDependencies() {\n\n\t\t// $.each( $( IDENTIFIERS.DATEPICKER.ROOT ), function createInstance () {\n\t\t// \tconst controllerInstance = new DatepickerController(),\n\t\t// \t config = $( this ).data( 'element-config' ) || {};\n\t\t//\n\t\t// \tcontrollerInstance.init( $( this ), config );\n\t\t// } );\n\t\t//\n\t\t// $.each( $( IDENTIFIERS.VALUE_SLIDER.ROOT ), function createInstance () {\n\t\t// \tconst controllerInstance = new ValueSliderController(),\n\t\t// \t config = $( this ).data( 'element-config' ) || {};\n\t\t//\n\t\t// \tcontrollerInstance.init( $( this ), config );\n\t\t// } );\n\t};\n\n\treturn ElementLoader;\n}();\n\nexports.default = ElementLoader;\n\n/***/ }),\n/* 683 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n/**\n *\n * @typedef {object} ModuleLoaderConfig\n * @property {string} SELECTOR\n * @property {string} ATTRIBUTE\n * @property {string} CONFIG_ATTRIBUTE\n */\n\nexports.default = {\n\t/**\n * @type ModuleLoaderConfig\n */\n\tMODULES: {\n\t\tSELECTOR: '[data-module]',\n\t\tATTRIBUTE: 'data-module',\n\t\tCONFIG_ATTRIBUTE: 'data-module-config'\n\t},\n\t/**\n * @type ModuleLoaderConfig\n */\n\tTABLES: {\n\t\tSELECTOR: '.table',\n\t\tATTRIBUTE: 'class',\n\t\tCONFIG_ATTRIBUTE: 'data-class-config'\n\t}\n};\n\n/***/ }),\n/* 684 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _defineProperty2 = __webpack_require__(555);\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _AUDIO$VIDEO$SLIDER$M; /**\r\n * @description reuse identifier defintions from the respective sub-modules. They should only be declared once.\r\n */\n\n\nvar _Identifiers = __webpack_require__(685);\n\nvar _Identifiers2 = __webpack_require__(686);\n\nvar _Identifiers3 = __webpack_require__(687);\n\nvar _Identifiers4 = __webpack_require__(270);\n\nvar _Identifiers5 = __webpack_require__(688);\n\nvar _Identifiers6 = __webpack_require__(689);\n\nvar _Identifiers7 = __webpack_require__(690);\n\nvar _Identifiers8 = __webpack_require__(691);\n\nvar _Identifiers9 = __webpack_require__(692);\n\nvar _Identifiers10 = __webpack_require__(693);\n\nvar _Identifiers11 = __webpack_require__(588);\n\nvar _Identifiers12 = __webpack_require__(589);\n\nvar _Identifiers13 = __webpack_require__(694);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (_AUDIO$VIDEO$SLIDER$M = {\n\tAUDIO: _Identifiers.IDENTIFIER,\n\tVIDEO: _Identifiers2.IDENTIFIER,\n\tSLIDER: _Identifiers3.IDENTIFIER,\n\tMODAL: _Identifiers4.IDENTIFIER,\n\tANIMATION: _Identifiers5.IDENTIFIER,\n\tRESPTABLES: _Identifiers6.IDENTIFIER,\n\tPFC: _Identifiers8.PFC.PFC,\n\tBFC: _Identifiers10.BFC.BFC,\n\tREG: _Identifiers9.REG.REG\n}, (0, _defineProperty3.default)(_AUDIO$VIDEO$SLIDER$M, 'MODAL', _Identifiers4.IDENTIFIER), (0, _defineProperty3.default)(_AUDIO$VIDEO$SLIDER$M, 'PASSWORDMETER', _Identifiers7.IDENTIFIER), (0, _defineProperty3.default)(_AUDIO$VIDEO$SLIDER$M, 'MAPTOOL', _Identifiers11.MODULE_IDENTIFIERS.MAPTOOL), (0, _defineProperty3.default)(_AUDIO$VIDEO$SLIDER$M, 'PREACT_TEST', _Identifiers12.IDENTIFIER), (0, _defineProperty3.default)(_AUDIO$VIDEO$SLIDER$M, 'REACT_TEST', 'react-test'), (0, _defineProperty3.default)(_AUDIO$VIDEO$SLIDER$M, 'EXPERIENCE_MODULES', _Identifiers13.IDENTIFIER), (0, _defineProperty3.default)(_AUDIO$VIDEO$SLIDER$M, 'FORM_V1', 'form'), (0, _defineProperty3.default)(_AUDIO$VIDEO$SLIDER$M, 'FORM_V2', 'form-v2'), _AUDIO$VIDEO$SLIDER$M);\n\n/***/ }),\n/* 685 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar IDENTIFIER = exports.IDENTIFIER = 'audio';\n\n/***/ }),\n/* 686 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar IDENTIFIER = exports.IDENTIFIER = 'video';\n\n/***/ }),\n/* 687 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar IDENTIFIER = exports.IDENTIFIER = 'sli01';\n\n/***/ }),\n/* 688 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar IDENTIFIER = exports.IDENTIFIER = 'animation';\n\n/***/ }),\n/* 689 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar IDENTIFIER = exports.IDENTIFIER = '.table';\n\n/***/ }),\n/* 690 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar IDENTIFIER = exports.IDENTIFIER = 'passwordMeter';\n\n/***/ }),\n/* 691 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar PFC = exports.PFC = {\n\tPFC: 'pfc'\n};\n//export const PCF02 = 'pfc02';\n\n/***/ }),\n/* 692 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar REG = exports.REG = {\n\tREG: 'reg'\n};\n\n/***/ }),\n/* 693 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar BFC = exports.BFC = {\n\tBFC: 'bfc01'\n};\n\n/***/ }),\n/* 694 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar IDENTIFIER = exports.IDENTIFIER = 'experience-modules';\n\n/***/ }),\n/* 695 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.preacttest = preacttest;\nexports.reacttest = reacttest;\nexports.experienceModules = experienceModules;\nexports.passwordMeter = passwordMeter;\nexports.formsV1 = formsV1;\nexports.formsV2 = formsV2;\n/* #if dynamic */\n/**\r\n * The video module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\nvar video = exports.video = function video(resolve, reject) {\n\treturn __webpack_require__.e/* require.ensure */(6).then((function (require) {\n\t\treturn resolve(__webpack_require__(706).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n};\n\n/**\r\n * The audio module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\nvar audio = exports.audio = function audio(resolve, reject) {\n\treturn __webpack_require__.e/* require.ensure */(0).then((function (require) {\n\t\treturn resolve(__webpack_require__(707).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n};\n\n/**\r\n * The slider module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\nvar slider = exports.slider = function slider(resolve, reject) {\n\treturn __webpack_require__.e/* require.ensure */(11).then((function (require) {\n\t\treturn resolve(__webpack_require__(708).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n};\n\n/**\r\n * The video module animation definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\nvar animation = exports.animation = function animation(resolve, reject) {\n\treturn __webpack_require__.e/* require.ensure */(10).then((function (require) {\n\t\treturn resolve(__webpack_require__(709).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n};\n\n/**\r\n * The tables module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\nvar responsiveTables = exports.responsiveTables = function responsiveTables(resolve, reject) {\n\treturn __webpack_require__.e/* require.ensure */(12).then((function (require) {\n\t\treturn resolve(__webpack_require__(710).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n};\n\n/**\r\n * The tables module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\nvar productFinder = exports.productFinder = function productFinder(resolve, reject) {\n\treturn __webpack_require__.e/* require.ensure */(7).then((function (require) {\n\t\treturn resolve(__webpack_require__(711).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n};\n\n/**\r\n * The tables module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\nvar regionalization = exports.regionalization = function regionalization(resolve, reject) {\n\treturn __webpack_require__.e/* require.ensure */(8).then((function (require) {\n\t\treturn resolve(__webpack_require__(712).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n};\n\n/**\r\n * The tables module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\nvar benefitFinder = exports.benefitFinder = function benefitFinder(resolve, reject) {\n\treturn __webpack_require__.e/* require.ensure */(9).then((function (require) {\n\t\treturn resolve(__webpack_require__(713).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n};\n\n/**\r\n * The modal module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\nvar modal = exports.modal = function modal(resolve, reject) {\n\treturn __webpack_require__.e/* require.ensure */(13).then((function (require) {\n\t\treturn resolve(__webpack_require__(559).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n};\n\n/**\r\n * The map tool module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\nvar maptool = exports.maptool = function maptool(resolve, reject) {\n\treturn __webpack_require__.e/* require.ensure */(14).then((function (require) {\n\t\treturn resolve(__webpack_require__(714).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n};\n\nfunction preacttest(resolve, reject) {\n\n\t__webpack_require__.e/* require.ensure */(2).then((function (require) {\n\t\tresolve(__webpack_require__(715).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n}\n\nfunction reacttest(resolve, reject) {\n\n\t__webpack_require__.e/* require.ensure */(1).then((function (require) {\n\t\tresolve(__webpack_require__(716).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n}\n\nfunction experienceModules(resolve, reject) {\n\n\t__webpack_require__.e/* require.ensure */(3).then((function (require) {\n\t\tresolve(__webpack_require__(717).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n}\n\n/**\r\n * The passwordMeter module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\nfunction passwordMeter(resolve, reject) {\n\n\t__webpack_require__.e/* require.ensure */(15).then((function (require) {\n\t\tresolve(__webpack_require__(718).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n}\n\n/**\r\n * The formsV1 module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\nfunction formsV1(resolve, reject) {\n\n\t__webpack_require__.e/* require.ensure */(5).then((function (require) {\n\t\tresolve(__webpack_require__(719).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n}\n\n/**\r\n * The formsV2 module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\nfunction formsV2(resolve, reject) {\n\n\t__webpack_require__.e/* require.ensure */(4).then((function (require) {\n\t\tresolve(__webpack_require__(720).default);\n\t}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);\n}\n\n/* #end */\n\n// Temporary for static output versions: Disable split-points and require normally.\n\n/* eslint-disable no-redeclare */\n\n/* eslint-disable */\n\n/***/ }),\n/* 696 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;;(function () {\n\t'use strict';\n\n\t/**\n\t * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs.\n\t *\n\t * @codingstandard ftlabs-jsv2\n\t * @copyright The Financial Times Limited [All Rights Reserved]\n\t * @license MIT License (see LICENSE.txt)\n\t */\n\n\t/*jslint browser:true, node:true*/\n\t/*global define, Event, Node*/\n\n\n\t/**\n\t * Instantiate fast-clicking listeners on the specified layer.\n\t *\n\t * @constructor\n\t * @param {Element} layer The layer to listen on\n\t * @param {Object} [options={}] The options to override the defaults\n\t */\n\tfunction FastClick(layer, options) {\n\t\tvar oldOnClick;\n\n\t\toptions = options || {};\n\n\t\t/**\n\t\t * Whether a click is currently being tracked.\n\t\t *\n\t\t * @type boolean\n\t\t */\n\t\tthis.trackingClick = false;\n\n\n\t\t/**\n\t\t * Timestamp for when click tracking started.\n\t\t *\n\t\t * @type number\n\t\t */\n\t\tthis.trackingClickStart = 0;\n\n\n\t\t/**\n\t\t * The element being tracked for a click.\n\t\t *\n\t\t * @type EventTarget\n\t\t */\n\t\tthis.targetElement = null;\n\n\n\t\t/**\n\t\t * X-coordinate of touch start event.\n\t\t *\n\t\t * @type number\n\t\t */\n\t\tthis.touchStartX = 0;\n\n\n\t\t/**\n\t\t * Y-coordinate of touch start event.\n\t\t *\n\t\t * @type number\n\t\t */\n\t\tthis.touchStartY = 0;\n\n\n\t\t/**\n\t\t * ID of the last touch, retrieved from Touch.identifier.\n\t\t *\n\t\t * @type number\n\t\t */\n\t\tthis.lastTouchIdentifier = 0;\n\n\n\t\t/**\n\t\t * Touchmove boundary, beyond which a click will be cancelled.\n\t\t *\n\t\t * @type number\n\t\t */\n\t\tthis.touchBoundary = options.touchBoundary || 10;\n\n\n\t\t/**\n\t\t * The FastClick layer.\n\t\t *\n\t\t * @type Element\n\t\t */\n\t\tthis.layer = layer;\n\n\t\t/**\n\t\t * The minimum time between tap(touchstart and touchend) events\n\t\t *\n\t\t * @type number\n\t\t */\n\t\tthis.tapDelay = options.tapDelay || 200;\n\n\t\t/**\n\t\t * The maximum time for a tap\n\t\t *\n\t\t * @type number\n\t\t */\n\t\tthis.tapTimeout = options.tapTimeout || 700;\n\n\t\tif (FastClick.notNeeded(layer)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Some old versions of Android don't have Function.prototype.bind\n\t\tfunction bind(method, context) {\n\t\t\treturn function() { return method.apply(context, arguments); };\n\t\t}\n\n\n\t\tvar methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel'];\n\t\tvar context = this;\n\t\tfor (var i = 0, l = methods.length; i < l; i++) {\n\t\t\tcontext[methods[i]] = bind(context[methods[i]], context);\n\t\t}\n\n\t\t// Set up event handlers as required\n\t\tif (deviceIsAndroid) {\n\t\t\tlayer.addEventListener('mouseover', this.onMouse, true);\n\t\t\tlayer.addEventListener('mousedown', this.onMouse, true);\n\t\t\tlayer.addEventListener('mouseup', this.onMouse, true);\n\t\t}\n\n\t\tlayer.addEventListener('click', this.onClick, true);\n\t\tlayer.addEventListener('touchstart', this.onTouchStart, false);\n\t\tlayer.addEventListener('touchmove', this.onTouchMove, false);\n\t\tlayer.addEventListener('touchend', this.onTouchEnd, false);\n\t\tlayer.addEventListener('touchcancel', this.onTouchCancel, false);\n\n\t\t// Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2)\n\t\t// which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick\n\t\t// layer when they are cancelled.\n\t\tif (!Event.prototype.stopImmediatePropagation) {\n\t\t\tlayer.removeEventListener = function(type, callback, capture) {\n\t\t\t\tvar rmv = Node.prototype.removeEventListener;\n\t\t\t\tif (type === 'click') {\n\t\t\t\t\trmv.call(layer, type, callback.hijacked || callback, capture);\n\t\t\t\t} else {\n\t\t\t\t\trmv.call(layer, type, callback, capture);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlayer.addEventListener = function(type, callback, capture) {\n\t\t\t\tvar adv = Node.prototype.addEventListener;\n\t\t\t\tif (type === 'click') {\n\t\t\t\t\tadv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) {\n\t\t\t\t\t\tif (!event.propagationStopped) {\n\t\t\t\t\t\t\tcallback(event);\n\t\t\t\t\t\t}\n\t\t\t\t\t}), capture);\n\t\t\t\t} else {\n\t\t\t\t\tadv.call(layer, type, callback, capture);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// If a handler is already declared in the element's onclick attribute, it will be fired before\n\t\t// FastClick's onClick handler. Fix this by pulling out the user-defined handler function and\n\t\t// adding it as listener.\n\t\tif (typeof layer.onclick === 'function') {\n\n\t\t\t// Android browser on at least 3.2 requires a new reference to the function in layer.onclick\n\t\t\t// - the old one won't work if passed to addEventListener directly.\n\t\t\toldOnClick = layer.onclick;\n\t\t\tlayer.addEventListener('click', function(event) {\n\t\t\t\toldOnClick(event);\n\t\t\t}, false);\n\t\t\tlayer.onclick = null;\n\t\t}\n\t}\n\n\t/**\n\t* Windows Phone 8.1 fakes user agent string to look like Android and iPhone.\n\t*\n\t* @type boolean\n\t*/\n\tvar deviceIsWindowsPhone = navigator.userAgent.indexOf(\"Windows Phone\") >= 0;\n\n\t/**\n\t * Android requires exceptions.\n\t *\n\t * @type boolean\n\t */\n\tvar deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0 && !deviceIsWindowsPhone;\n\n\n\t/**\n\t * iOS requires exceptions.\n\t *\n\t * @type boolean\n\t */\n\tvar deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone;\n\n\n\t/**\n\t * iOS 4 requires an exception for select elements.\n\t *\n\t * @type boolean\n\t */\n\tvar deviceIsIOS4 = deviceIsIOS && (/OS 4_\\d(_\\d)?/).test(navigator.userAgent);\n\n\n\t/**\n\t * iOS 6.0-7.* requires the target element to be manually derived\n\t *\n\t * @type boolean\n\t */\n\tvar deviceIsIOSWithBadTarget = deviceIsIOS && (/OS [6-7]_\\d/).test(navigator.userAgent);\n\n\t/**\n\t * BlackBerry requires exceptions.\n\t *\n\t * @type boolean\n\t */\n\tvar deviceIsBlackBerry10 = navigator.userAgent.indexOf('BB10') > 0;\n\n\t/**\n\t * Determine whether a given element requires a native click.\n\t *\n\t * @param {EventTarget|Element} target Target DOM element\n\t * @returns {boolean} Returns true if the element needs a native click\n\t */\n\tFastClick.prototype.needsClick = function(target) {\n\t\tswitch (target.nodeName.toLowerCase()) {\n\n\t\t// Don't send a synthetic click to disabled inputs (issue #62)\n\t\tcase 'button':\n\t\tcase 'select':\n\t\tcase 'textarea':\n\t\t\tif (target.disabled) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase 'input':\n\n\t\t\t// File inputs need real clicks on iOS 6 due to a browser bug (issue #68)\n\t\t\tif ((deviceIsIOS && target.type === 'file') || target.disabled) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase 'label':\n\t\tcase 'iframe': // iOS8 homescreen apps can prevent events bubbling into frames\n\t\tcase 'video':\n\t\t\treturn true;\n\t\t}\n\n\t\treturn (/\\bneedsclick\\b/).test(target.className);\n\t};\n\n\n\t/**\n\t * Determine whether a given element requires a call to focus to simulate click into element.\n\t *\n\t * @param {EventTarget|Element} target Target DOM element\n\t * @returns {boolean} Returns true if the element requires a call to focus to simulate native click.\n\t */\n\tFastClick.prototype.needsFocus = function(target) {\n\t\tswitch (target.nodeName.toLowerCase()) {\n\t\tcase 'textarea':\n\t\t\treturn true;\n\t\tcase 'select':\n\t\t\treturn !deviceIsAndroid;\n\t\tcase 'input':\n\t\t\tswitch (target.type) {\n\t\t\tcase 'button':\n\t\t\tcase 'checkbox':\n\t\t\tcase 'file':\n\t\t\tcase 'image':\n\t\t\tcase 'radio':\n\t\t\tcase 'submit':\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// No point in attempting to focus disabled inputs\n\t\t\treturn !target.disabled && !target.readOnly;\n\t\tdefault:\n\t\t\treturn (/\\bneedsfocus\\b/).test(target.className);\n\t\t}\n\t};\n\n\n\t/**\n\t * Send a click event to the specified element.\n\t *\n\t * @param {EventTarget|Element} targetElement\n\t * @param {Event} event\n\t */\n\tFastClick.prototype.sendClick = function(targetElement, event) {\n\t\tvar clickEvent, touch;\n\n\t\t// On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24)\n\t\tif (document.activeElement && document.activeElement !== targetElement) {\n\t\t\tdocument.activeElement.blur();\n\t\t}\n\n\t\ttouch = event.changedTouches[0];\n\n\t\t// Synthesise a click event, with an extra attribute so it can be tracked\n\t\tclickEvent = document.createEvent('MouseEvents');\n\t\tclickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);\n\t\tclickEvent.forwardedTouchEvent = true;\n\t\ttargetElement.dispatchEvent(clickEvent);\n\t};\n\n\tFastClick.prototype.determineEventType = function(targetElement) {\n\n\t\t//Issue #159: Android Chrome Select Box does not open with a synthetic click event\n\t\tif (deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select') {\n\t\t\treturn 'mousedown';\n\t\t}\n\n\t\treturn 'click';\n\t};\n\n\n\t/**\n\t * @param {EventTarget|Element} targetElement\n\t */\n\tFastClick.prototype.focus = function(targetElement) {\n\t\tvar length;\n\n\t\t// Issue #160: on iOS 7, some input elements (e.g. date datetime month) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724.\n\t\tif (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') {\n\t\t\tlength = targetElement.value.length;\n\t\t\ttargetElement.setSelectionRange(length, length);\n\t\t} else {\n\t\t\ttargetElement.focus();\n\t\t}\n\t};\n\n\n\t/**\n\t * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it.\n\t *\n\t * @param {EventTarget|Element} targetElement\n\t */\n\tFastClick.prototype.updateScrollParent = function(targetElement) {\n\t\tvar scrollParent, parentElement;\n\n\t\tscrollParent = targetElement.fastClickScrollParent;\n\n\t\t// Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the\n\t\t// target element was moved to another parent.\n\t\tif (!scrollParent || !scrollParent.contains(targetElement)) {\n\t\t\tparentElement = targetElement;\n\t\t\tdo {\n\t\t\t\tif (parentElement.scrollHeight > parentElement.offsetHeight) {\n\t\t\t\t\tscrollParent = parentElement;\n\t\t\t\t\ttargetElement.fastClickScrollParent = parentElement;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tparentElement = parentElement.parentElement;\n\t\t\t} while (parentElement);\n\t\t}\n\n\t\t// Always update the scroll top tracker if possible.\n\t\tif (scrollParent) {\n\t\t\tscrollParent.fastClickLastScrollTop = scrollParent.scrollTop;\n\t\t}\n\t};\n\n\n\t/**\n\t * @param {EventTarget} targetElement\n\t * @returns {Element|EventTarget}\n\t */\n\tFastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) {\n\n\t\t// On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node.\n\t\tif (eventTarget.nodeType === Node.TEXT_NODE) {\n\t\t\treturn eventTarget.parentNode;\n\t\t}\n\n\t\treturn eventTarget;\n\t};\n\n\n\t/**\n\t * On touch start, record the position and scroll offset.\n\t *\n\t * @param {Event} event\n\t * @returns {boolean}\n\t */\n\tFastClick.prototype.onTouchStart = function(event) {\n\t\tvar targetElement, touch, selection;\n\n\t\t// Ignore multiple touches, otherwise pinch-to-zoom is prevented if both fingers are on the FastClick element (issue #111).\n\t\tif (event.targetTouches.length > 1) {\n\t\t\treturn true;\n\t\t}\n\n\t\ttargetElement = this.getTargetElementFromEventTarget(event.target);\n\t\ttouch = event.targetTouches[0];\n\n\t\tif (deviceIsIOS) {\n\n\t\t\t// Only trusted events will deselect text on iOS (issue #49)\n\t\t\tselection = window.getSelection();\n\t\t\tif (selection.rangeCount && !selection.isCollapsed) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (!deviceIsIOS4) {\n\n\t\t\t\t// Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23):\n\t\t\t\t// when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched\n\t\t\t\t// with the same identifier as the touch event that previously triggered the click that triggered the alert.\n\t\t\t\t// Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an\n\t\t\t\t// immediately preceeding touch event (issue #52), so this fix is unavailable on that platform.\n\t\t\t\t// Issue 120: touch.identifier is 0 when Chrome dev tools 'Emulate touch events' is set with an iOS device UA string,\n\t\t\t\t// which causes all touch events to be ignored. As this block only applies to iOS, and iOS identifiers are always long,\n\t\t\t\t// random integers, it's safe to to continue if the identifier is 0 here.\n\t\t\t\tif (touch.identifier && touch.identifier === this.lastTouchIdentifier) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tthis.lastTouchIdentifier = touch.identifier;\n\n\t\t\t\t// If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and:\n\t\t\t\t// 1) the user does a fling scroll on the scrollable layer\n\t\t\t\t// 2) the user stops the fling scroll with another tap\n\t\t\t\t// then the event.target of the last 'touchend' event will be the element that was under the user's finger\n\t\t\t\t// when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check\n\t\t\t\t// is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42).\n\t\t\t\tthis.updateScrollParent(targetElement);\n\t\t\t}\n\t\t}\n\n\t\tthis.trackingClick = true;\n\t\tthis.trackingClickStart = event.timeStamp;\n\t\tthis.targetElement = targetElement;\n\n\t\tthis.touchStartX = touch.pageX;\n\t\tthis.touchStartY = touch.pageY;\n\n\t\t// Prevent phantom clicks on fast double-tap (issue #36)\n\t\tif ((event.timeStamp - this.lastClickTime) < this.tapDelay) {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\treturn true;\n\t};\n\n\n\t/**\n\t * Based on a touchmove event object, check whether the touch has moved past a boundary since it started.\n\t *\n\t * @param {Event} event\n\t * @returns {boolean}\n\t */\n\tFastClick.prototype.touchHasMoved = function(event) {\n\t\tvar touch = event.changedTouches[0], boundary = this.touchBoundary;\n\n\t\tif (Math.abs(touch.pageX - this.touchStartX) > boundary || Math.abs(touch.pageY - this.touchStartY) > boundary) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\n\t/**\n\t * Update the last position.\n\t *\n\t * @param {Event} event\n\t * @returns {boolean}\n\t */\n\tFastClick.prototype.onTouchMove = function(event) {\n\t\tif (!this.trackingClick) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// If the touch has moved, cancel the click tracking\n\t\tif (this.targetElement !== this.getTargetElementFromEventTarget(event.target) || this.touchHasMoved(event)) {\n\t\t\tthis.trackingClick = false;\n\t\t\tthis.targetElement = null;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\n\t/**\n\t * Attempt to find the labelled control for the given label element.\n\t *\n\t * @param {EventTarget|HTMLLabelElement} labelElement\n\t * @returns {Element|null}\n\t */\n\tFastClick.prototype.findControl = function(labelElement) {\n\n\t\t// Fast path for newer browsers supporting the HTML5 control attribute\n\t\tif (labelElement.control !== undefined) {\n\t\t\treturn labelElement.control;\n\t\t}\n\n\t\t// All browsers under test that support touch events also support the HTML5 htmlFor attribute\n\t\tif (labelElement.htmlFor) {\n\t\t\treturn document.getElementById(labelElement.htmlFor);\n\t\t}\n\n\t\t// If no for attribute exists, attempt to retrieve the first labellable descendant element\n\t\t// the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label\n\t\treturn labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea');\n\t};\n\n\n\t/**\n\t * On touch end, determine whether to send a click event at once.\n\t *\n\t * @param {Event} event\n\t * @returns {boolean}\n\t */\n\tFastClick.prototype.onTouchEnd = function(event) {\n\t\tvar forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement;\n\n\t\tif (!this.trackingClick) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Prevent phantom clicks on fast double-tap (issue #36)\n\t\tif ((event.timeStamp - this.lastClickTime) < this.tapDelay) {\n\t\t\tthis.cancelNextClick = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tif ((event.timeStamp - this.trackingClickStart) > this.tapTimeout) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Reset to prevent wrong click cancel on input (issue #156).\n\t\tthis.cancelNextClick = false;\n\n\t\tthis.lastClickTime = event.timeStamp;\n\n\t\ttrackingClickStart = this.trackingClickStart;\n\t\tthis.trackingClick = false;\n\t\tthis.trackingClickStart = 0;\n\n\t\t// On some iOS devices, the targetElement supplied with the event is invalid if the layer\n\t\t// is performing a transition or scroll, and has to be re-detected manually. Note that\n\t\t// for this to function correctly, it must be called *after* the event target is checked!\n\t\t// See issue #57; also filed as rdar://13048589 .\n\t\tif (deviceIsIOSWithBadTarget) {\n\t\t\ttouch = event.changedTouches[0];\n\n\t\t\t// In certain cases arguments of elementFromPoint can be negative, so prevent setting targetElement to null\n\t\t\ttargetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset) || targetElement;\n\t\t\ttargetElement.fastClickScrollParent = this.targetElement.fastClickScrollParent;\n\t\t}\n\n\t\ttargetTagName = targetElement.tagName.toLowerCase();\n\t\tif (targetTagName === 'label') {\n\t\t\tforElement = this.findControl(targetElement);\n\t\t\tif (forElement) {\n\t\t\t\tthis.focus(targetElement);\n\t\t\t\tif (deviceIsAndroid) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\ttargetElement = forElement;\n\t\t\t}\n\t\t} else if (this.needsFocus(targetElement)) {\n\n\t\t\t// Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through.\n\t\t\t// Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37).\n\t\t\tif ((event.timeStamp - trackingClickStart) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) {\n\t\t\t\tthis.targetElement = null;\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.focus(targetElement);\n\t\t\tthis.sendClick(targetElement, event);\n\n\t\t\t// Select elements need the event to go through on iOS 4, otherwise the selector menu won't open.\n\t\t\t// Also this breaks opening selects when VoiceOver is active on iOS6, iOS7 (and possibly others)\n\t\t\tif (!deviceIsIOS || targetTagName !== 'select') {\n\t\t\t\tthis.targetElement = null;\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tif (deviceIsIOS && !deviceIsIOS4) {\n\n\t\t\t// Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled\n\t\t\t// and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42).\n\t\t\tscrollParent = targetElement.fastClickScrollParent;\n\t\t\tif (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Prevent the actual click from going though - unless the target node is marked as requiring\n\t\t// real clicks or if it is in the whitelist in which case only non-programmatic clicks are permitted.\n\t\tif (!this.needsClick(targetElement)) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.sendClick(targetElement, event);\n\t\t}\n\n\t\treturn false;\n\t};\n\n\n\t/**\n\t * On touch cancel, stop tracking the click.\n\t *\n\t * @returns {void}\n\t */\n\tFastClick.prototype.onTouchCancel = function() {\n\t\tthis.trackingClick = false;\n\t\tthis.targetElement = null;\n\t};\n\n\n\t/**\n\t * Determine mouse events which should be permitted.\n\t *\n\t * @param {Event} event\n\t * @returns {boolean}\n\t */\n\tFastClick.prototype.onMouse = function(event) {\n\n\t\t// If a target element was never set (because a touch event was never fired) allow the event\n\t\tif (!this.targetElement) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (event.forwardedTouchEvent) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Programmatically generated events targeting a specific element should be permitted\n\t\tif (!event.cancelable) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Derive and check the target element to see whether the mouse event needs to be permitted;\n\t\t// unless explicitly enabled, prevent non-touch click events from triggering actions,\n\t\t// to prevent ghost/doubleclicks.\n\t\tif (!this.needsClick(this.targetElement) || this.cancelNextClick) {\n\n\t\t\t// Prevent any user-added listeners declared on FastClick element from being fired.\n\t\t\tif (event.stopImmediatePropagation) {\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t} else {\n\n\t\t\t\t// Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2)\n\t\t\t\tevent.propagationStopped = true;\n\t\t\t}\n\n\t\t\t// Cancel the event\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\n\t\t\treturn false;\n\t\t}\n\n\t\t// If the mouse event is permitted, return true for the action to go through.\n\t\treturn true;\n\t};\n\n\n\t/**\n\t * On actual clicks, determine whether this is a touch-generated click, a click action occurring\n\t * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or\n\t * an actual click which should be permitted.\n\t *\n\t * @param {Event} event\n\t * @returns {boolean}\n\t */\n\tFastClick.prototype.onClick = function(event) {\n\t\tvar permitted;\n\n\t\t// It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early.\n\t\tif (this.trackingClick) {\n\t\t\tthis.targetElement = null;\n\t\t\tthis.trackingClick = false;\n\t\t\treturn true;\n\t\t}\n\n\t\t// Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target.\n\t\tif (event.target.type === 'submit' && event.detail === 0) {\n\t\t\treturn true;\n\t\t}\n\n\t\tpermitted = this.onMouse(event);\n\n\t\t// Only unset targetElement if the click is not permitted. This will ensure that the check for !targetElement in onMouse fails and the browser's click doesn't go through.\n\t\tif (!permitted) {\n\t\t\tthis.targetElement = null;\n\t\t}\n\n\t\t// If clicks are permitted, return true for the action to go through.\n\t\treturn permitted;\n\t};\n\n\n\t/**\n\t * Remove all FastClick's event listeners.\n\t *\n\t * @returns {void}\n\t */\n\tFastClick.prototype.destroy = function() {\n\t\tvar layer = this.layer;\n\n\t\tif (deviceIsAndroid) {\n\t\t\tlayer.removeEventListener('mouseover', this.onMouse, true);\n\t\t\tlayer.removeEventListener('mousedown', this.onMouse, true);\n\t\t\tlayer.removeEventListener('mouseup', this.onMouse, true);\n\t\t}\n\n\t\tlayer.removeEventListener('click', this.onClick, true);\n\t\tlayer.removeEventListener('touchstart', this.onTouchStart, false);\n\t\tlayer.removeEventListener('touchmove', this.onTouchMove, false);\n\t\tlayer.removeEventListener('touchend', this.onTouchEnd, false);\n\t\tlayer.removeEventListener('touchcancel', this.onTouchCancel, false);\n\t};\n\n\n\t/**\n\t * Check whether FastClick is needed.\n\t *\n\t * @param {Element} layer The layer to listen on\n\t */\n\tFastClick.notNeeded = function(layer) {\n\t\tvar metaViewport;\n\t\tvar chromeVersion;\n\t\tvar blackberryVersion;\n\t\tvar firefoxVersion;\n\n\t\t// Devices that don't support touch don't need FastClick\n\t\tif (typeof window.ontouchstart === 'undefined') {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Chrome version - zero for other browsers\n\t\tchromeVersion = +(/Chrome\\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1];\n\n\t\tif (chromeVersion) {\n\n\t\t\tif (deviceIsAndroid) {\n\t\t\t\tmetaViewport = document.querySelector('meta[name=viewport]');\n\n\t\t\t\tif (metaViewport) {\n\t\t\t\t\t// Chrome on Android with user-scalable=\"no\" doesn't need FastClick (issue #89)\n\t\t\t\t\tif (metaViewport.content.indexOf('user-scalable=no') !== -1) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t// Chrome 32 and above with width=device-width or less don't need FastClick\n\t\t\t\t\tif (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Chrome desktop doesn't need FastClick (issue #15)\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tif (deviceIsBlackBerry10) {\n\t\t\tblackberryVersion = navigator.userAgent.match(/Version\\/([0-9]*)\\.([0-9]*)/);\n\n\t\t\t// BlackBerry 10.3+ does not require Fastclick library.\n\t\t\t// https://github.com/ftlabs/fastclick/issues/251\n\t\t\tif (blackberryVersion[1] >= 10 && blackberryVersion[2] >= 3) {\n\t\t\t\tmetaViewport = document.querySelector('meta[name=viewport]');\n\n\t\t\t\tif (metaViewport) {\n\t\t\t\t\t// user-scalable=no eliminates click delay.\n\t\t\t\t\tif (metaViewport.content.indexOf('user-scalable=no') !== -1) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t// width=device-width (or less than device-width) eliminates click delay.\n\t\t\t\t\tif (document.documentElement.scrollWidth <= window.outerWidth) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// IE10 with -ms-touch-action: none or manipulation, which disables double-tap-to-zoom (issue #97)\n\t\tif (layer.style.msTouchAction === 'none' || layer.style.touchAction === 'manipulation') {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Firefox version - zero for other browsers\n\t\tfirefoxVersion = +(/Firefox\\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1];\n\n\t\tif (firefoxVersion >= 27) {\n\t\t\t// Firefox 27+ does not have tap delay if the content is not zoomable - https://bugzilla.mozilla.org/show_bug.cgi?id=922896\n\n\t\t\tmetaViewport = document.querySelector('meta[name=viewport]');\n\t\t\tif (metaViewport && (metaViewport.content.indexOf('user-scalable=no') !== -1 || document.documentElement.scrollWidth <= window.outerWidth)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// IE11: prefixed -ms-touch-action is no longer supported and it's recomended to use non-prefixed version\n\t\t// http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx\n\t\tif (layer.style.touchAction === 'none' || layer.style.touchAction === 'manipulation') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\n\t/**\n\t * Factory method for creating a FastClick object\n\t *\n\t * @param {Element} layer The layer to listen on\n\t * @param {Object} [options={}] The options to override the defaults\n\t */\n\tFastClick.attach = function(layer, options) {\n\t\treturn new FastClick(layer, options);\n\t};\n\n\n\tif (true) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t\t\treturn FastClick;\n\t\t}.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = FastClick.attach;\n\t\tmodule.exports.FastClick = FastClick;\n\t} else {\n\t\twindow.FastClick = FastClick;\n\t}\n}());\n\n\n/***/ }),\n/* 697 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _classCallCheck2 = __webpack_require__(1);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _promise = __webpack_require__(36);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _device = __webpack_require__(54);\n\nvar _fasterdom = __webpack_require__(22);\n\nvar _StyleInjector = __webpack_require__(557);\n\nvar _StyleInjector2 = _interopRequireDefault(_StyleInjector);\n\nvar _WindowGateway = __webpack_require__(118);\n\nvar _WindowGateway2 = _interopRequireDefault(_WindowGateway);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BREAKPOINTS = ['md', 'lg', 'xl', 'xxl'],\n BASE_PATH = \"/css/\",\n //eslint-disable-line\nPREFIX = 'screen',\n windowGateway = new _WindowGateway2.default();\n\n/**\r\n * Fetch all stylesheets below the current breakpoint.\r\n * This is necessary for slower devices which are dropping resize events when the user resizes very fast.\r\n * Therefore also breakpoint change events are dropped.\r\n * Make sure that all stylesheets for the current viewport are present.\r\n * De-duplication is handled by StyleInjector.\r\n * @param {int} indexOfCurrentBreakpoint - self describing\r\n * @returns {Array} containing booleans whether a stylesheet was injected or not.\r\n */\nfunction injectStylesheetsBelowCurrentBreakpoint(indexOfCurrentBreakpoint, filePath) {\n\n\treturn _promise2.default.all(BREAKPOINTS.filter(function (breakpoint, indexInBreakpoints) {\n\t\treturn indexInBreakpoints <= indexOfCurrentBreakpoint;\n\t}).map(function (breakpoint) {\n\t\treturn _StyleInjector2.default.injectImmediate(filePath, breakpoint, breakpoint);\n\t}));\n}\n\n/**\r\n * Load necessary styles when a change occurs.\r\n * @param {Breakpoint} data - the current breakpoint which was met.\r\n * @return {void}\r\n */\nfunction onBreakpointChange(filePath) {\n\treturn function breakpointChange(data) {\n\t\tvar _this = this;\n\n\t\tvar indexOfCurrentBreakpoint = BREAKPOINTS.indexOf(data.alias);\n\n\t\tif (indexOfCurrentBreakpoint >= 0) {\n\n\t\t\t_fasterdom.fasterdomPromised.mutate(function () {\n\t\t\t\treturn injectStylesheetsBelowCurrentBreakpoint.call(_this, indexOfCurrentBreakpoint, filePath).then(function (res) {\n\t\t\t\t\treturn windowGateway.send({\n\t\t\t\t\t\ttype: 'styleReady',\n\t\t\t\t\t\tsrc: window.location.href,\n\t\t\t\t\t\tdata: res\n\t\t\t\t\t}, '*');\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t};\n}\n\n/**\r\n * Singleton to handle lazy style loading.\r\n */\n\nvar StyleLoaderService = function () {\n\tfunction StyleLoaderService() {\n\t\t(0, _classCallCheck3.default)(this, StyleLoaderService);\n\t}\n\n\t/**\r\n * Initialises the service singleton.\r\n * Has to be called after ready event.\r\n * @public\r\n * @return { StyleLoaderService } instance\r\n */\n\tStyleLoaderService.prototype.init = function init(filePath) {\n\t\t_device.BreakpointService.breakpointEvent.subscribe(onBreakpointChange(filePath));\n\n\t\treturn this;\n\t};\n\n\treturn StyleLoaderService;\n}();\n\nvar instance = new StyleLoaderService(); //eslint-disable-line\n\nexports.default = instance;\n\n/***/ }),\n/* 698 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _objectFitImages = __webpack_require__(699);\n\nvar _objectFitImages2 = _interopRequireDefault(_objectFitImages);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar useragent = window.UserAgent;\n\n/**\r\n * Polyfill abject fit for semantic images\r\n * @returns {void}\r\n */\nfunction init() {\n\tvar images = document.querySelectorAll('.semantic-image.media-fill--out img');\n\n\tif (images && images.length > 0) {\n\t\t(0, _objectFitImages2.default)(images, { watchMQ: true });\n\t}\n\n\tif (useragent.isIE) {\n\t\t__webpack_require__(700);\n\t}\n}\n\nexports.default = {\n\tinit: init\n};\n\n/***/ }),\n/* 699 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/*! npm.im/object-fit-images */\nvar ಠ= 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='; // transparent image, used as accessor and replacing image\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-\\w\\s%]+)/g;\nvar testImg = new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction fixOne(el, requestedSrc) {\n\tif (el[ಠ].parsingSrcset) {\n\t\treturn;\n\t}\n\tvar style = getStyle(el);\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// If the fix was already applied, don't try to skip fixing,\n\t// - because once you go ofi you never go back.\n\t// - Wait, that doesn't rhyme.\n\t// - This ain't rap, bro.\n\tif (!el[ಠ].s) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!el[ಠ].skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tvar src = el[ಠ].ios7src || el.currentSrc || el.src;\n\n\tif (requestedSrc) {\n\t\t// explicitly requested src takes precedence\n\t\t// TODO: this still should overwrite srcset\n\t\tsrc = requestedSrc;\n\t} else if (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// prevent infinite loop\n\t\t// fillImg sets the src which in turn calls fixOne\n\t\tel[ಠ].parsingSrcset = true;\n\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\t\tdelete el[ಠ].parsingSrcset;\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tsrc = el[pf.ns].curSrc || src;\n\t}\n\n\t// store info on object for later use\n\tif (el[ಠ].s) {\n\t\tel[ಠ].s = src;\n\t\tif (requestedSrc) {\n\t\t\t// the attribute reflects the user input\n\t\t\t// the property is the resolved URL\n\t\t\tel[ಠ].srcAttr = requestedSrc;\n\t\t}\n\t} else {\n\t\tel[ಠ] = {\n\t\t\ts: src,\n\t\t\tsrcAttr: requestedSrc || nativeGetAttribute.call(el, 'src'),\n\t\t\tsrcsetAttr: el.srcset\n\t\t};\n\t\tel.src = ಠ;\n\n\t\ttry {\n\t\t\t// remove srcset because it overrides src\n\t\t\tif (el.srcset) {\n\t\t\t\tel.srcset = '';\n\n\t\t\t\t// restore non-browser-readable srcset property\n\t\t\t\tObject.defineProperty(el, 'srcset', {\n\t\t\t\t\tvalue: el[ಠ].srcsetAttr\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tel[ಠ].ios7src = src;\n\t\t}\n\t}\n\n\tel.style.backgroundImage = 'url(\"' + src + '\")';\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\t// `object-fit: scale-down` is either `contain` or `auto`\n\t\tif (!el[ಠ].i) {\n\t\t\tel[ಠ].i = new Image();\n\t\t\tel[ಠ].i.src = src;\n\t\t}\n\n\t\t// naturalWidth is only available when the image headers are loaded,\n\t\t// this loop will poll it every 100ms.\n\t\t// There's currently no check to prevent this loop from starting twice\n\t\t// as a consequence of calling ofi() twice on the same image, but it's light\n\t\t// and causes no issues, so it's not worth ensuring that it doesn't.\n\t\t(function loop() {\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=495908\n\t\t\tif (el[ಠ].i.naturalWidth) {\n\t\t\t\tif (el[ಠ].i.naturalWidth > el.width || el[ಠ].i.naturalHeight > el.height) {\n\t\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t\t} else {\n\t\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetTimeout(loop, 100);\n\t\t})();\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get() {\n\t\t\treturn el[ಠ].s;\n\t\t},\n\t\tset: function set(src) {\n\t\t\tdelete el[ಠ].i; // scale-down's img sizes need to be updated too\n\t\t\tfixOne(el, src);\n\t\t\treturn src;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {get: descriptors.get}); // it should be read-only\n}\n\nfunction hijackAttributes() {\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\tif (this[ಠ] && (name === 'src' || name === 'srcset')) {\n\t\t\t\treturn this[ಠ][name + 'Attr'];\n\t\t\t}\n\t\t\treturn nativeGetAttribute.call(this, name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\tif (this[ಠ] && (name === 'src' || name === 'srcset')) {\n\t\t\t\tthis[name === 'src' ? 'src' : name + 'Attr'] = String(value);\n\t\t\t} else {\n\t\t\t\tnativeSetAttribute.call(this, name, value);\n\t\t\t}\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\tif (supportsObjectPosition && !opts.skipTest) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll('img');\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][ಠ] = imgs[i][ಠ] || opts;\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (fix);\n\n/***/ }),\n/* 700 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;/*! picturefill - v3.0.2 - 2016-02-12\n * https://scottjehl.github.io/picturefill/\n * Copyright (c) 2016 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT\n */\n/*! Gecko-Picture - v1.0\n * https://github.com/scottjehl/picturefill/tree/3.0/src/plugins/gecko-picture\n * Firefox's early picture implementation (prior to FF41) is static and does\n * not react to viewport changes. This tiny module fixes this.\n */\n(function(window) {\n\t/*jshint eqnull:true */\n\tvar ua = navigator.userAgent;\n\n\tif ( window.HTMLPictureElement && ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 < 45) ) {\n\t\taddEventListener(\"resize\", (function() {\n\t\t\tvar timer;\n\n\t\t\tvar dummySrc = document.createElement(\"source\");\n\n\t\t\tvar fixRespimg = function(img) {\n\t\t\t\tvar source, sizes;\n\t\t\t\tvar picture = img.parentNode;\n\n\t\t\t\tif (picture.nodeName.toUpperCase() === \"PICTURE\") {\n\t\t\t\t\tsource = dummySrc.cloneNode();\n\n\t\t\t\t\tpicture.insertBefore(source, picture.firstElementChild);\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpicture.removeChild(source);\n\t\t\t\t\t});\n\t\t\t\t} else if (!img._pfLastSize || img.offsetWidth > img._pfLastSize) {\n\t\t\t\t\timg._pfLastSize = img.offsetWidth;\n\t\t\t\t\tsizes = img.sizes;\n\t\t\t\t\timg.sizes += \",100vw\";\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\timg.sizes = sizes;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar findPictureImgs = function() {\n\t\t\t\tvar i;\n\t\t\t\tvar imgs = document.querySelectorAll(\"picture > img, img[srcset][sizes]\");\n\t\t\t\tfor (i = 0; i < imgs.length; i++) {\n\t\t\t\t\tfixRespimg(imgs[i]);\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar onResize = function() {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = setTimeout(findPictureImgs, 99);\n\t\t\t};\n\t\t\tvar mq = window.matchMedia && matchMedia(\"(orientation: landscape)\");\n\t\t\tvar init = function() {\n\t\t\t\tonResize();\n\n\t\t\t\tif (mq && mq.addListener) {\n\t\t\t\t\tmq.addListener(onResize);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdummySrc.srcset = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n\t\t\tif (/^[c|i]|d$/.test(document.readyState || \"\")) {\n\t\t\t\tinit();\n\t\t\t} else {\n\t\t\t\tdocument.addEventListener(\"DOMContentLoaded\", init);\n\t\t\t}\n\n\t\t\treturn onResize;\n\t\t})());\n\t}\n})(window);\n\n/*! Picturefill - v3.0.2\n * http://scottjehl.github.io/picturefill\n * Copyright (c) 2015 https://github.com/scottjehl/picturefill/blob/master/Authors.txt;\n * License: MIT\n */\n\n(function( window, document, undefined ) {\n\t// Enable strict mode\n\t\"use strict\";\n\n\t// HTML shim|v it for old IE (IE9 will still need the HTML video tag workaround)\n\tdocument.createElement( \"picture\" );\n\n\tvar warn, eminpx, alwaysCheckWDescriptor, evalId;\n\t// local object for method references and testing exposure\n\tvar pf = {};\n\tvar isSupportTestReady = false;\n\tvar noop = function() {};\n\tvar image = document.createElement( \"img\" );\n\tvar getImgAttr = image.getAttribute;\n\tvar setImgAttr = image.setAttribute;\n\tvar removeImgAttr = image.removeAttribute;\n\tvar docElem = document.documentElement;\n\tvar types = {};\n\tvar cfg = {\n\t\t//resource selection:\n\t\talgorithm: \"\"\n\t};\n\tvar srcAttr = \"data-pfsrc\";\n\tvar srcsetAttr = srcAttr + \"set\";\n\t// ua sniffing is done for undetectable img loading features,\n\t// to do some non crucial perf optimizations\n\tvar ua = navigator.userAgent;\n\tvar supportAbort = (/rident/).test(ua) || ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 > 35 );\n\tvar curSrcProp = \"currentSrc\";\n\tvar regWDesc = /\\s+\\+?\\d+(e\\d+)?w/;\n\tvar regSize = /(\\([^)]+\\))?\\s*(.+)/;\n\tvar setOptions = window.picturefillCFG;\n\t/**\n\t * Shortcut property for https://w3c.github.io/webappsec/specs/mixedcontent/#restricts-mixed-content ( for easy overriding in tests )\n\t */\n\t// baseStyle also used by getEmValue (i.e.: width: 1em is important)\n\tvar baseStyle = \"position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)\";\n\tvar fsCss = \"font-size:100%!important;\";\n\tvar isVwDirty = true;\n\n\tvar cssCache = {};\n\tvar sizeLengthCache = {};\n\tvar DPR = window.devicePixelRatio;\n\tvar units = {\n\t\tpx: 1,\n\t\t\"in\": 96\n\t};\n\tvar anchor = document.createElement( \"a\" );\n\t/**\n\t * alreadyRun flag used for setOptions. is it true setOptions will reevaluate\n\t * @type {boolean}\n\t */\n\tvar alreadyRun = false;\n\n\t// Reusable, non-\"g\" Regexes\n\n\t// (Don't use \\s, to avoid matching non-breaking space.)\n\tvar regexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t regexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t regexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t regexTrailingCommas = /[,]+$/,\n\t regexNonNegativeInteger = /^\\d+$/,\n\n\t // ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t // Must include at least one digit.\n\t // According to spec tests any decimal point must be followed by a digit.\n\t // No leading plus sign is allowed.)\n\t // https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/;\n\n\tvar on = function(obj, evt, fn, capture) {\n\t\tif ( obj.addEventListener ) {\n\t\t\tobj.addEventListener(evt, fn, capture || false);\n\t\t} else if ( obj.attachEvent ) {\n\t\t\tobj.attachEvent( \"on\" + evt, fn);\n\t\t}\n\t};\n\n\t/**\n\t * simple memoize function:\n\t */\n\n\tvar memoize = function(fn) {\n\t\tvar cache = {};\n\t\treturn function(input) {\n\t\t\tif ( !(input in cache) ) {\n\t\t\t\tcache[ input ] = fn(input);\n\t\t\t}\n\t\t\treturn cache[ input ];\n\t\t};\n\t};\n\n\t// UTILITY FUNCTIONS\n\n\t// Manual is faster than RegEx\n\t// http://jsperf.com/whitespace-character/5\n\tfunction isSpace(c) {\n\t\treturn (c === \"\\u0020\" || // space\n\t\t c === \"\\u0009\" || // horizontal tab\n\t\t c === \"\\u000A\" || // new line\n\t\t c === \"\\u000C\" || // form feed\n\t\t c === \"\\u000D\"); // carriage return\n\t}\n\n\t/**\n\t * gets a mediaquery and returns a boolean or gets a css length and returns a number\n\t * @param css mediaqueries or css length\n\t * @returns {boolean|number}\n\t *\n\t * based on: https://gist.github.com/jonathantneal/db4f77009b155f083738\n\t */\n\tvar evalCSS = (function() {\n\n\t\tvar regLength = /^([\\d\\.]+)(em|vw|px)$/;\n\t\tvar replace = function() {\n\t\t\tvar args = arguments, index = 0, string = args[0];\n\t\t\twhile (++index in args) {\n\t\t\t\tstring = string.replace(args[index], args[++index]);\n\t\t\t}\n\t\t\treturn string;\n\t\t};\n\n\t\tvar buildStr = memoize(function(css) {\n\n\t\t\treturn \"return \" + replace((css || \"\").toLowerCase(),\n\t\t\t\t// interpret `and`\n\t\t\t\t/\\band\\b/g, \"&&\",\n\n\t\t\t\t// interpret `,`\n\t\t\t\t/,/g, \"||\",\n\n\t\t\t\t// interpret `min-` as >=\n\t\t\t\t/min-([a-z-\\s]+):/g, \"e.$1>=\",\n\n\t\t\t\t// interpret `max-` as <=\n\t\t\t\t/max-([a-z-\\s]+):/g, \"e.$1<=\",\n\n\t\t\t\t//calc value\n\t\t\t\t/calc([^)]+)/g, \"($1)\",\n\n\t\t\t\t// interpret css values\n\t\t\t\t/(\\d+[\\.]*[\\d]*)([a-z]+)/g, \"($1 * e.$2)\",\n\t\t\t\t//make eval less evil\n\t\t\t\t/^(?!(e.[a-z]|[0-9\\.&=|><\\+\\-\\*\\(\\)\\/])).*/ig, \"\"\n\t\t\t) + \";\";\n\t\t});\n\n\t\treturn function(css, length) {\n\t\t\tvar parsedLength;\n\t\t\tif (!(css in cssCache)) {\n\t\t\t\tcssCache[css] = false;\n\t\t\t\tif (length && (parsedLength = css.match( regLength ))) {\n\t\t\t\t\tcssCache[css] = parsedLength[ 1 ] * units[parsedLength[ 2 ]];\n\t\t\t\t} else {\n\t\t\t\t\t/*jshint evil:true */\n\t\t\t\t\ttry{\n\t\t\t\t\t\tcssCache[css] = new Function(\"e\", buildStr(css))(units);\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t\t/*jshint evil:false */\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cssCache[css];\n\t\t};\n\t})();\n\n\tvar setResolution = function( candidate, sizesattr ) {\n\t\tif ( candidate.w ) { // h = means height: || descriptor.type === 'h' do not handle yet...\n\t\t\tcandidate.cWidth = pf.calcListLength( sizesattr || \"100vw\" );\n\t\t\tcandidate.res = candidate.w / candidate.cWidth ;\n\t\t} else {\n\t\t\tcandidate.res = candidate.d;\n\t\t}\n\t\treturn candidate;\n\t};\n\n\t/**\n\t *\n\t * @param opt\n\t */\n\tvar picturefill = function( opt ) {\n\n\t\tif (!isSupportTestReady) {return;}\n\n\t\tvar elements, i, plen;\n\n\t\tvar options = opt || {};\n\n\t\tif ( options.elements && options.elements.nodeType === 1 ) {\n\t\t\tif ( options.elements.nodeName.toUpperCase() === \"IMG\" ) {\n\t\t\t\toptions.elements = [ options.elements ];\n\t\t\t} else {\n\t\t\t\toptions.context = options.elements;\n\t\t\t\toptions.elements = null;\n\t\t\t}\n\t\t}\n\n\t\telements = options.elements || pf.qsa( (options.context || document), ( options.reevaluate || options.reselect ) ? pf.sel : pf.selShort );\n\n\t\tif ( (plen = elements.length) ) {\n\n\t\t\tpf.setupRun( options );\n\t\t\talreadyRun = true;\n\n\t\t\t// Loop through all elements\n\t\t\tfor ( i = 0; i < plen; i++ ) {\n\t\t\t\tpf.fillImg(elements[ i ], options);\n\t\t\t}\n\n\t\t\tpf.teardownRun( options );\n\t\t}\n\t};\n\n\t/**\n\t * outputs a warning for the developer\n\t * @param {message}\n\t * @type {Function}\n\t */\n\twarn = ( window.console && console.warn ) ?\n\t\tfunction( message ) {\n\t\t\tconsole.warn( message );\n\t\t} :\n\t\tnoop\n\t;\n\n\tif ( !(curSrcProp in image) ) {\n\t\tcurSrcProp = \"src\";\n\t}\n\n\t// Add support for standard mime types.\n\ttypes[ \"image/jpeg\" ] = true;\n\ttypes[ \"image/gif\" ] = true;\n\ttypes[ \"image/png\" ] = true;\n\n\tfunction detectTypeSupport( type, typeUri ) {\n\t\t// based on Modernizr's lossless img-webp test\n\t\t// note: asynchronous\n\t\tvar image = new window.Image();\n\t\timage.onerror = function() {\n\t\t\ttypes[ type ] = false;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.onload = function() {\n\t\t\ttypes[ type ] = image.width === 1;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.src = typeUri;\n\t\treturn \"pending\";\n\t}\n\n\t// test svg support\n\ttypes[ \"image/svg+xml\" ] = document.implementation.hasFeature( \"http://www.w3.org/TR/SVG11/feature#Image\", \"1.1\" );\n\n\t/**\n\t * updates the internal vW property with the current viewport width in px\n\t */\n\tfunction updateMetrics() {\n\n\t\tisVwDirty = false;\n\t\tDPR = window.devicePixelRatio;\n\t\tcssCache = {};\n\t\tsizeLengthCache = {};\n\n\t\tpf.DPR = DPR || 1;\n\n\t\tunits.width = Math.max(window.innerWidth || 0, docElem.clientWidth);\n\t\tunits.height = Math.max(window.innerHeight || 0, docElem.clientHeight);\n\n\t\tunits.vw = units.width / 100;\n\t\tunits.vh = units.height / 100;\n\n\t\tevalId = [ units.height, units.width, DPR ].join(\"-\");\n\n\t\tunits.em = pf.getEmValue();\n\t\tunits.rem = units.em;\n\t}\n\n\tfunction chooseLowRes( lowerValue, higherValue, dprValue, isCached ) {\n\t\tvar bonusFactor, tooMuch, bonus, meanDensity;\n\n\t\t//experimental\n\t\tif (cfg.algorithm === \"saveData\" ){\n\t\t\tif ( lowerValue > 2.7 ) {\n\t\t\t\tmeanDensity = dprValue + 1;\n\t\t\t} else {\n\t\t\t\ttooMuch = higherValue - dprValue;\n\t\t\t\tbonusFactor = Math.pow(lowerValue - 0.6, 1.5);\n\n\t\t\t\tbonus = tooMuch * bonusFactor;\n\n\t\t\t\tif (isCached) {\n\t\t\t\t\tbonus += 0.1 * bonusFactor;\n\t\t\t\t}\n\n\t\t\t\tmeanDensity = lowerValue + bonus;\n\t\t\t}\n\t\t} else {\n\t\t\tmeanDensity = (dprValue > 1) ?\n\t\t\t\tMath.sqrt(lowerValue * higherValue) :\n\t\t\t\tlowerValue;\n\t\t}\n\n\t\treturn meanDensity > dprValue;\n\t}\n\n\tfunction applyBestCandidate( img ) {\n\t\tvar srcSetCandidates;\n\t\tvar matchingSet = pf.getSet( img );\n\t\tvar evaluated = false;\n\t\tif ( matchingSet !== \"pending\" ) {\n\t\t\tevaluated = evalId;\n\t\t\tif ( matchingSet ) {\n\t\t\t\tsrcSetCandidates = pf.setRes( matchingSet );\n\t\t\t\tpf.applySetCandidate( srcSetCandidates, img );\n\t\t\t}\n\t\t}\n\t\timg[ pf.ns ].evaled = evaluated;\n\t}\n\n\tfunction ascendingSort( a, b ) {\n\t\treturn a.res - b.res;\n\t}\n\n\tfunction setSrcToCur( img, src, set ) {\n\t\tvar candidate;\n\t\tif ( !set && src ) {\n\t\t\tset = img[ pf.ns ].sets;\n\t\t\tset = set && set[set.length - 1];\n\t\t}\n\n\t\tcandidate = getCandidateForSrc(src, set);\n\n\t\tif ( candidate ) {\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\timg[ pf.ns ].curSrc = src;\n\t\t\timg[ pf.ns ].curCan = candidate;\n\n\t\t\tif ( !candidate.res ) {\n\t\t\t\tsetResolution( candidate, candidate.set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getCandidateForSrc( src, set ) {\n\t\tvar i, candidate, candidates;\n\t\tif ( src && set ) {\n\t\t\tcandidates = pf.parseSet( set );\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\tfor ( i = 0; i < candidates.length; i++ ) {\n\t\t\t\tif ( src === pf.makeUrl(candidates[ i ].url) ) {\n\t\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getAllSourceElements( picture, candidates ) {\n\t\tvar i, len, source, srcset;\n\n\t\t// SPEC mismatch intended for size and perf:\n\t\t// actually only source elements preceding the img should be used\n\t\t// also note: don't use qsa here, because IE8 sometimes doesn't like source as the key part in a selector\n\t\tvar sources = picture.getElementsByTagName( \"source\" );\n\n\t\tfor ( i = 0, len = sources.length; i < len; i++ ) {\n\t\t\tsource = sources[ i ];\n\t\t\tsource[ pf.ns ] = true;\n\t\t\tsrcset = source.getAttribute( \"srcset\" );\n\n\t\t\t// if source does not have a srcset attribute, skip\n\t\t\tif ( srcset ) {\n\t\t\t\tcandidates.push( {\n\t\t\t\t\tsrcset: srcset,\n\t\t\t\t\tmedia: source.getAttribute( \"media\" ),\n\t\t\t\t\ttype: source.getAttribute( \"type\" ),\n\t\t\t\t\tsizes: source.getAttribute( \"sizes\" )\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Srcset Parser\n\t * By Alex Bell | MIT License\n\t *\n\t * @returns Array [{url: _, d: _, w: _, h:_, set:_(????)}, ...]\n\t *\n\t * Based super duper closely on the reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n\t */\n\n\t// 1. Let input be the value passed to this algorithm.\n\t// (TO-DO : Explain what \"set\" argument is here. Maybe choose a more\n\t// descriptive & more searchable name. Since passing the \"set\" in really has\n\t// nothing to do with parsing proper, I would prefer this assignment eventually\n\t// go in an external fn.)\n\tfunction parseSrcset(input, set) {\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t match = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\t\t url,\n\t\t descriptors,\n\t\t currentDescriptor,\n\t\t state,\n\t\t c,\n\n\t\t // 2. Let position be a pointer into input, initially pointing at the start\n\t\t // of the string.\n\t\t pos = 0,\n\n\t\t // 3. Let candidates be an initially empty source set.\n\t\t candidates = [];\n\n\t\t/**\n\t\t* Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t* @return undefined\n\t\t*/\n\t\t// (Declared outside of the while loop so that it's only created once.\n\t\t// (This fn is defined before it is used, in order to pass JSHINT.\n\t\t// Unfortunately this breaks the sequencing of the spec comments. :/ )\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t// 10. Let width be absent.\n\t\t\t// 11. Let density be absent.\n\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t w, d, h, i,\n\t\t\t candidate = {},\n\t\t\t desc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tif (!h && !d && !w) {candidate.d = 1;}\n\t\t\t\tif (candidate.d === 1) {set.has1x = true;}\n\t\t\t\tcandidate.set = set;\n\n\t\t\t\tcandidates.push(candidate);\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t\t/**\n\t\t* Tokenizes descriptor properties prior to parsing\n\t\t* Returns undefined.\n\t\t* (Again, this fn is defined before it is used, in order to pass JSHINT.\n\t\t* Unfortunately this breaks the logical sequencing of the spec comments. :/ )\n\t\t*/\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t// Do the following depending on the value of state.\n\t\t\t\t// For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t// that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t // Space character\n\t\t\t\t // If current descriptor is not empty, append current descriptor to\n\t\t\t\t // descriptors and let current descriptor be the empty string.\n\t\t\t\t // Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t// characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t// were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t// and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t// more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\t}\n\n\t/*\n\t * Sizes Parser\n\t *\n\t * By Alex Bell | MIT License\n\t *\n\t * Non-strict but accurate and lightweight JS Parser for the string value <img sizes=\"here\">\n\t *\n\t * Reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-sizes-attribute\n\t *\n\t * Most comments are copied in directly from the spec\n\t * (except for comments in parens).\n\t *\n\t * Grammar is:\n\t * <source-size-list> = <source-size># [ , <source-size-value> ]? | <source-size-value>\n\t * <source-size> = <media-condition> <source-size-value>\n\t * <source-size-value> = <length>\n\t * http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#attr-img-sizes\n\t *\n\t * E.g. \"(max-width: 30em) 100vw, (max-width: 50em) 70vw, 100vw\"\n\t * or \"(min-width: 30em), calc(30vw - 15px)\" or just \"30vw\"\n\t *\n\t * Returns the first valid <css-length> with a media condition that evaluates to true,\n\t * or \"100vw\" if all valid media conditions evaluate to false.\n\t *\n\t */\n\n\tfunction parseSizes(strValue) {\n\n\t\t// (Percentage CSS lengths are not allowed in this case, to avoid confusion:\n\t\t// https://html.spec.whatwg.org/multipage/embedded-content.html#valid-source-size-list\n\t\t// CSS allows a single optional plus or minus sign:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#numbers\n\t\t// CSS is ASCII case-insensitive:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#characters )\n\t\t// Spec allows exponential notation for <number> type:\n\t\t// http://dev.w3.org/csswg/css-values/#numbers\n\t\tvar regexCssLengthWithUnits = /^(?:[+-]?[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i;\n\n\t\t// (This is a quick and lenient test. Because of optional unlimited-depth internal\n\t\t// grouping parens and strict spacing rules, this could get very complicated.)\n\t\tvar regexCssCalc = /^calc\\((?:[0-9a-z \\.\\+\\-\\*\\/\\(\\)]+)\\)$/i;\n\n\t\tvar i;\n\t\tvar unparsedSizesList;\n\t\tvar unparsedSizesListLength;\n\t\tvar unparsedSize;\n\t\tvar lastComponentValue;\n\t\tvar size;\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// (Toy CSS parser. The goals here are:\n\t\t// 1) expansive test coverage without the weight of a full CSS parser.\n\t\t// 2) Avoiding regex wherever convenient.\n\t\t// Quick tests: http://jsfiddle.net/gtntL4gr/3/\n\t\t// Returns an array of arrays.)\n\t\tfunction parseComponentValues(str) {\n\t\t\tvar chrctr;\n\t\t\tvar component = \"\";\n\t\t\tvar componentArray = [];\n\t\t\tvar listArray = [];\n\t\t\tvar parenDepth = 0;\n\t\t\tvar pos = 0;\n\t\t\tvar inComment = false;\n\n\t\t\tfunction pushComponent() {\n\t\t\t\tif (component) {\n\t\t\t\t\tcomponentArray.push(component);\n\t\t\t\t\tcomponent = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction pushComponentArray() {\n\t\t\t\tif (componentArray[0]) {\n\t\t\t\t\tlistArray.push(componentArray);\n\t\t\t\t\tcomponentArray = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// (Loop forwards from the beginning of the string.)\n\t\t\twhile (true) {\n\t\t\t\tchrctr = str.charAt(pos);\n\n\t\t\t\tif (chrctr === \"\") { // ( End of string reached.)\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\treturn listArray;\n\t\t\t\t} else if (inComment) {\n\t\t\t\t\tif ((chrctr === \"*\") && (str[pos + 1] === \"/\")) { // (At end of a comment.)\n\t\t\t\t\t\tinComment = false;\n\t\t\t\t\t\tpos += 2;\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpos += 1; // (Skip all characters inside comments.)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (isSpace(chrctr)) {\n\t\t\t\t\t// (If previous character in loop was also a space, or if\n\t\t\t\t\t// at the beginning of the string, do not add space char to\n\t\t\t\t\t// component.)\n\t\t\t\t\tif ( (str.charAt(pos - 1) && isSpace( str.charAt(pos - 1) ) ) || !component ) {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (parenDepth === 0) {\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tpos +=1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// (Replace any space character with a plain space for legibility.)\n\t\t\t\t\t\tchrctr = \" \";\n\t\t\t\t\t}\n\t\t\t\t} else if (chrctr === \"(\") {\n\t\t\t\t\tparenDepth += 1;\n\t\t\t\t} else if (chrctr === \")\") {\n\t\t\t\t\tparenDepth -= 1;\n\t\t\t\t} else if (chrctr === \",\") {\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\tpos += 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if ( (chrctr === \"/\") && (str.charAt(pos + 1) === \"*\") ) {\n\t\t\t\t\tinComment = true;\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcomponent = component + chrctr;\n\t\t\t\tpos += 1;\n\t\t\t}\n\t\t}\n\n\t\tfunction isValidNonNegativeSourceSizeValue(s) {\n\t\t\tif (regexCssLengthWithUnits.test(s) && (parseFloat(s) >= 0)) {return true;}\n\t\t\tif (regexCssCalc.test(s)) {return true;}\n\t\t\t// ( http://www.w3.org/TR/CSS2/syndata.html#numbers says:\n\t\t\t// \"-0 is equivalent to 0 and is not a negative number.\" which means that\n\t\t\t// unitless zero and unitless negative zero must be accepted as special cases.)\n\t\t\tif ((s === \"0\") || (s === \"-0\") || (s === \"+0\")) {return true;}\n\t\t\treturn false;\n\t\t}\n\n\t\t// When asked to parse a sizes attribute from an element, parse a\n\t\t// comma-separated list of component values from the value of the element's\n\t\t// sizes attribute (or the empty string, if the attribute is absent), and let\n\t\t// unparsed sizes list be the result.\n\t\t// http://dev.w3.org/csswg/css-syntax/#parse-comma-separated-list-of-component-values\n\n\t\tunparsedSizesList = parseComponentValues(strValue);\n\t\tunparsedSizesListLength = unparsedSizesList.length;\n\n\t\t// For each unparsed size in unparsed sizes list:\n\t\tfor (i = 0; i < unparsedSizesListLength; i++) {\n\t\t\tunparsedSize = unparsedSizesList[i];\n\n\t\t\t// 1. Remove all consecutive <whitespace-token>s from the end of unparsed size.\n\t\t\t// ( parseComponentValues() already omits spaces outside of parens. )\n\n\t\t\t// If unparsed size is now empty, that is a parse error; continue to the next\n\t\t\t// iteration of this algorithm.\n\t\t\t// ( parseComponentValues() won't push an empty array. )\n\n\t\t\t// 2. If the last component value in unparsed size is a valid non-negative\n\t\t\t// <source-size-value>, let size be its value and remove the component value\n\t\t\t// from unparsed size. Any CSS function other than the calc() function is\n\t\t\t// invalid. Otherwise, there is a parse error; continue to the next iteration\n\t\t\t// of this algorithm.\n\t\t\t// http://dev.w3.org/csswg/css-syntax/#parse-component-value\n\t\t\tlastComponentValue = unparsedSize[unparsedSize.length - 1];\n\n\t\t\tif (isValidNonNegativeSourceSizeValue(lastComponentValue)) {\n\t\t\t\tsize = lastComponentValue;\n\t\t\t\tunparsedSize.pop();\n\t\t\t} else {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 3. Remove all consecutive <whitespace-token>s from the end of unparsed\n\t\t\t// size. If unparsed size is now empty, return size and exit this algorithm.\n\t\t\t// If this was not the last item in unparsed sizes list, that is a parse error.\n\t\t\tif (unparsedSize.length === 0) {\n\t\t\t\treturn size;\n\t\t\t}\n\n\t\t\t// 4. Parse the remaining component values in unparsed size as a\n\t\t\t// <media-condition>. If it does not parse correctly, or it does parse\n\t\t\t// correctly but the <media-condition> evaluates to false, continue to the\n\t\t\t// next iteration of this algorithm.\n\t\t\t// (Parsing all possible compound media conditions in JS is heavy, complicated,\n\t\t\t// and the payoff is unclear. Is there ever an situation where the\n\t\t\t// media condition parses incorrectly but still somehow evaluates to true?\n\t\t\t// Can we just rely on the browser/polyfill to do it?)\n\t\t\tunparsedSize = unparsedSize.join(\" \");\n\t\t\tif (!(pf.matchesMedia( unparsedSize ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 5. Return size and exit this algorithm.\n\t\t\treturn size;\n\t\t}\n\n\t\t// If the above algorithm exhausts unparsed sizes list without returning a\n\t\t// size value, return 100vw.\n\t\treturn \"100vw\";\n\t}\n\n\t// namespace\n\tpf.ns = (\"pf\" + new Date().getTime()).substr(0, 9);\n\n\t// srcset support test\n\tpf.supSrcset = \"srcset\" in image;\n\tpf.supSizes = \"sizes\" in image;\n\tpf.supPicture = !!window.HTMLPictureElement;\n\n\t// UC browser does claim to support srcset and picture, but not sizes,\n\t// this extended test reveals the browser does support nothing\n\tif (pf.supSrcset && pf.supPicture && !pf.supSizes) {\n\t\t(function(image2) {\n\t\t\timage.srcset = \"data:,a\";\n\t\t\timage2.src = \"data:,a\";\n\t\t\tpf.supSrcset = image.complete === image2.complete;\n\t\t\tpf.supPicture = pf.supSrcset && pf.supPicture;\n\t\t})(document.createElement(\"img\"));\n\t}\n\n\t// Safari9 has basic support for sizes, but does't expose the `sizes` idl attribute\n\tif (pf.supSrcset && !pf.supSizes) {\n\n\t\t(function() {\n\t\t\tvar width2 = \"data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==\";\n\t\t\tvar width1 = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\t\t\tvar img = document.createElement(\"img\");\n\t\t\tvar test = function() {\n\t\t\t\tvar width = img.width;\n\n\t\t\t\tif (width === 2) {\n\t\t\t\t\tpf.supSizes = true;\n\t\t\t\t}\n\n\t\t\t\talwaysCheckWDescriptor = pf.supSrcset && !pf.supSizes;\n\n\t\t\t\tisSupportTestReady = true;\n\t\t\t\t// force async\n\t\t\t\tsetTimeout(picturefill);\n\t\t\t};\n\n\t\t\timg.onload = test;\n\t\t\timg.onerror = test;\n\t\t\timg.setAttribute(\"sizes\", \"9px\");\n\n\t\t\timg.srcset = width1 + \" 1w,\" + width2 + \" 9w\";\n\t\t\timg.src = width1;\n\t\t})();\n\n\t} else {\n\t\tisSupportTestReady = true;\n\t}\n\n\t// using pf.qsa instead of dom traversing does scale much better,\n\t// especially on sites mixing responsive and non-responsive images\n\tpf.selShort = \"picture>img,img[srcset]\";\n\tpf.sel = pf.selShort;\n\tpf.cfg = cfg;\n\n\t/**\n\t * Shortcut property for `devicePixelRatio` ( for easy overriding in tests )\n\t */\n\tpf.DPR = (DPR || 1 );\n\tpf.u = units;\n\n\t// container of supported mime types that one might need to qualify before using\n\tpf.types = types;\n\n\tpf.setSize = noop;\n\n\t/**\n\t * Gets a string and returns the absolute URL\n\t * @param src\n\t * @returns {String} absolute URL\n\t */\n\n\tpf.makeUrl = memoize(function(src) {\n\t\tanchor.href = src;\n\t\treturn anchor.href;\n\t});\n\n\t/**\n\t * Gets a DOM element or document and a selctor and returns the found matches\n\t * Can be extended with jQuery/Sizzle for IE7 support\n\t * @param context\n\t * @param sel\n\t * @returns {NodeList|Array}\n\t */\n\tpf.qsa = function(context, sel) {\n\t\treturn ( \"querySelector\" in context ) ? context.querySelectorAll(sel) : [];\n\t};\n\n\t/**\n\t * Shortcut method for matchMedia ( for easy overriding in tests )\n\t * wether native or pf.mMQ is used will be decided lazy on first call\n\t * @returns {boolean}\n\t */\n\tpf.matchesMedia = function() {\n\t\tif ( window.matchMedia && (matchMedia( \"(min-width: 0.1em)\" ) || {}).matches ) {\n\t\t\tpf.matchesMedia = function( media ) {\n\t\t\t\treturn !media || ( matchMedia( media ).matches );\n\t\t\t};\n\t\t} else {\n\t\t\tpf.matchesMedia = pf.mMQ;\n\t\t}\n\n\t\treturn pf.matchesMedia.apply( this, arguments );\n\t};\n\n\t/**\n\t * A simplified matchMedia implementation for IE8 and IE9\n\t * handles only min-width/max-width with px or em values\n\t * @param media\n\t * @returns {boolean}\n\t */\n\tpf.mMQ = function( media ) {\n\t\treturn media ? evalCSS(media) : true;\n\t};\n\n\t/**\n\t * Returns the calculated length in css pixel from the given sourceSizeValue\n\t * http://dev.w3.org/csswg/css-values-3/#length-value\n\t * intended Spec mismatches:\n\t * * Does not check for invalid use of CSS functions\n\t * * Does handle a computed length of 0 the same as a negative and therefore invalid value\n\t * @param sourceSizeValue\n\t * @returns {Number}\n\t */\n\tpf.calcLength = function( sourceSizeValue ) {\n\n\t\tvar value = evalCSS(sourceSizeValue, true) || false;\n\t\tif (value < 0) {\n\t\t\tvalue = false;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\t/**\n\t * Takes a type string and checks if its supported\n\t */\n\n\tpf.supportsType = function( type ) {\n\t\treturn ( type ) ? types[ type ] : true;\n\t};\n\n\t/**\n\t * Parses a sourceSize into mediaCondition (media) and sourceSizeValue (length)\n\t * @param sourceSizeStr\n\t * @returns {*}\n\t */\n\tpf.parseSize = memoize(function( sourceSizeStr ) {\n\t\tvar match = ( sourceSizeStr || \"\" ).match(regSize);\n\t\treturn {\n\t\t\tmedia: match && match[1],\n\t\t\tlength: match && match[2]\n\t\t};\n\t});\n\n\tpf.parseSet = function( set ) {\n\t\tif ( !set.cands ) {\n\t\t\tset.cands = parseSrcset(set.srcset, set);\n\t\t}\n\t\treturn set.cands;\n\t};\n\n\t/**\n\t * returns 1em in css px for html/body default size\n\t * function taken from respondjs\n\t * @returns {*|number}\n\t */\n\tpf.getEmValue = function() {\n\t\tvar body;\n\t\tif ( !eminpx && (body = document.body) ) {\n\t\t\tvar div = document.createElement( \"div\" ),\n\t\t\t\toriginalHTMLCSS = docElem.style.cssText,\n\t\t\t\toriginalBodyCSS = body.style.cssText;\n\n\t\t\tdiv.style.cssText = baseStyle;\n\n\t\t\t// 1em in a media query is the value of the default font size of the browser\n\t\t\t// reset docElem and body to ensure the correct value is returned\n\t\t\tdocElem.style.cssText = fsCss;\n\t\t\tbody.style.cssText = fsCss;\n\n\t\t\tbody.appendChild( div );\n\t\t\teminpx = div.offsetWidth;\n\t\t\tbody.removeChild( div );\n\n\t\t\t//also update eminpx before returning\n\t\t\teminpx = parseFloat( eminpx, 10 );\n\n\t\t\t// restore the original values\n\t\t\tdocElem.style.cssText = originalHTMLCSS;\n\t\t\tbody.style.cssText = originalBodyCSS;\n\n\t\t}\n\t\treturn eminpx || 16;\n\t};\n\n\t/**\n\t * Takes a string of sizes and returns the width in pixels as a number\n\t */\n\tpf.calcListLength = function( sourceSizeListStr ) {\n\t\t// Split up source size list, ie ( max-width: 30em ) 100%, ( max-width: 50em ) 50%, 33%\n\t\t//\n\t\t// or (min-width:30em) calc(30% - 15px)\n\t\tif ( !(sourceSizeListStr in sizeLengthCache) || cfg.uT ) {\n\t\t\tvar winningLength = pf.calcLength( parseSizes( sourceSizeListStr ) );\n\n\t\t\tsizeLengthCache[ sourceSizeListStr ] = !winningLength ? units.width : winningLength;\n\t\t}\n\n\t\treturn sizeLengthCache[ sourceSizeListStr ];\n\t};\n\n\t/**\n\t * Takes a candidate object with a srcset property in the form of url/\n\t * ex. \"images/pic-medium.png 1x, images/pic-medium-2x.png 2x\" or\n\t * \"images/pic-medium.png 400w, images/pic-medium-2x.png 800w\" or\n\t * \"images/pic-small.png\"\n\t * Get an array of image candidates in the form of\n\t * {url: \"/foo/bar.png\", resolution: 1}\n\t * where resolution is http://dev.w3.org/csswg/css-values-3/#resolution-value\n\t * If sizes is specified, res is calculated\n\t */\n\tpf.setRes = function( set ) {\n\t\tvar candidates;\n\t\tif ( set ) {\n\n\t\t\tcandidates = pf.parseSet( set );\n\n\t\t\tfor ( var i = 0, len = candidates.length; i < len; i++ ) {\n\t\t\t\tsetResolution( candidates[ i ], set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidates;\n\t};\n\n\tpf.setRes.res = setResolution;\n\n\tpf.applySetCandidate = function( candidates, img ) {\n\t\tif ( !candidates.length ) {return;}\n\t\tvar candidate,\n\t\t\ti,\n\t\t\tj,\n\t\t\tlength,\n\t\t\tbestCandidate,\n\t\t\tcurSrc,\n\t\t\tcurCan,\n\t\t\tcandidateSrc,\n\t\t\tabortCurSrc;\n\n\t\tvar imageData = img[ pf.ns ];\n\t\tvar dpr = pf.DPR;\n\n\t\tcurSrc = imageData.curSrc || img[curSrcProp];\n\n\t\tcurCan = imageData.curCan || setSrcToCur(img, curSrc, candidates[0].set);\n\n\t\t// if we have a current source, we might either become lazy or give this source some advantage\n\t\tif ( curCan && curCan.set === candidates[ 0 ].set ) {\n\n\t\t\t// if browser can abort image request and the image has a higher pixel density than needed\n\t\t\t// and this image isn't downloaded yet, we skip next part and try to save bandwidth\n\t\t\tabortCurSrc = (supportAbort && !img.complete && curCan.res - 0.1 > dpr);\n\n\t\t\tif ( !abortCurSrc ) {\n\t\t\t\tcurCan.cached = true;\n\n\t\t\t\t// if current candidate is \"best\", \"better\" or \"okay\",\n\t\t\t\t// set it to bestCandidate\n\t\t\t\tif ( curCan.res >= dpr ) {\n\t\t\t\t\tbestCandidate = curCan;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( !bestCandidate ) {\n\n\t\t\tcandidates.sort( ascendingSort );\n\n\t\t\tlength = candidates.length;\n\t\t\tbestCandidate = candidates[ length - 1 ];\n\n\t\t\tfor ( i = 0; i < length; i++ ) {\n\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\tif ( candidate.res >= dpr ) {\n\t\t\t\t\tj = i - 1;\n\n\t\t\t\t\t// we have found the perfect candidate,\n\t\t\t\t\t// but let's improve this a little bit with some assumptions ;-)\n\t\t\t\t\tif (candidates[ j ] &&\n\t\t\t\t\t\t(abortCurSrc || curSrc !== pf.makeUrl( candidate.url )) &&\n\t\t\t\t\t\tchooseLowRes(candidates[ j ].res, candidate.res, dpr, candidates[ j ].cached)) {\n\n\t\t\t\t\t\tbestCandidate = candidates[ j ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbestCandidate = candidate;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( bestCandidate ) {\n\n\t\t\tcandidateSrc = pf.makeUrl( bestCandidate.url );\n\n\t\t\timageData.curSrc = candidateSrc;\n\t\t\timageData.curCan = bestCandidate;\n\n\t\t\tif ( candidateSrc !== curSrc ) {\n\t\t\t\tpf.setSrc( img, bestCandidate );\n\t\t\t}\n\t\t\tpf.setSize( img );\n\t\t}\n\t};\n\n\tpf.setSrc = function( img, bestCandidate ) {\n\t\tvar origWidth;\n\t\timg.src = bestCandidate.url;\n\n\t\t// although this is a specific Safari issue, we don't want to take too much different code paths\n\t\tif ( bestCandidate.set.type === \"image/svg+xml\" ) {\n\t\t\torigWidth = img.style.width;\n\t\t\timg.style.width = (img.offsetWidth + 1) + \"px\";\n\n\t\t\t// next line only should trigger a repaint\n\t\t\t// if... is only done to trick dead code removal\n\t\t\tif ( img.offsetWidth + 1 ) {\n\t\t\t\timg.style.width = origWidth;\n\t\t\t}\n\t\t}\n\t};\n\n\tpf.getSet = function( img ) {\n\t\tvar i, set, supportsType;\n\t\tvar match = false;\n\t\tvar sets = img [ pf.ns ].sets;\n\n\t\tfor ( i = 0; i < sets.length && !match; i++ ) {\n\t\t\tset = sets[i];\n\n\t\t\tif ( !set.srcset || !pf.matchesMedia( set.media ) || !(supportsType = pf.supportsType( set.type )) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( supportsType === \"pending\" ) {\n\t\t\t\tset = supportsType;\n\t\t\t}\n\n\t\t\tmatch = set;\n\t\t\tbreak;\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tpf.parseSets = function( element, parent, options ) {\n\t\tvar srcsetAttribute, imageSet, isWDescripor, srcsetParsed;\n\n\t\tvar hasPicture = parent && parent.nodeName.toUpperCase() === \"PICTURE\";\n\t\tvar imageData = element[ pf.ns ];\n\n\t\tif ( imageData.src === undefined || options.src ) {\n\t\t\timageData.src = getImgAttr.call( element, \"src\" );\n\t\t\tif ( imageData.src ) {\n\t\t\t\tsetImgAttr.call( element, srcAttr, imageData.src );\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcAttr );\n\t\t\t}\n\t\t}\n\n\t\tif ( imageData.srcset === undefined || options.srcset || !pf.supSrcset || element.srcset ) {\n\t\t\tsrcsetAttribute = getImgAttr.call( element, \"srcset\" );\n\t\t\timageData.srcset = srcsetAttribute;\n\t\t\tsrcsetParsed = true;\n\t\t}\n\n\t\timageData.sets = [];\n\n\t\tif ( hasPicture ) {\n\t\t\timageData.pic = true;\n\t\t\tgetAllSourceElements( parent, imageData.sets );\n\t\t}\n\n\t\tif ( imageData.srcset ) {\n\t\t\timageSet = {\n\t\t\t\tsrcset: imageData.srcset,\n\t\t\t\tsizes: getImgAttr.call( element, \"sizes\" )\n\t\t\t};\n\n\t\t\timageData.sets.push( imageSet );\n\n\t\t\tisWDescripor = (alwaysCheckWDescriptor || imageData.src) && regWDesc.test(imageData.srcset || \"\");\n\n\t\t\t// add normal src as candidate, if source has no w descriptor\n\t\t\tif ( !isWDescripor && imageData.src && !getCandidateForSrc(imageData.src, imageSet) && !imageSet.has1x ) {\n\t\t\t\timageSet.srcset += \", \" + imageData.src;\n\t\t\t\timageSet.cands.push({\n\t\t\t\t\turl: imageData.src,\n\t\t\t\t\td: 1,\n\t\t\t\t\tset: imageSet\n\t\t\t\t});\n\t\t\t}\n\n\t\t} else if ( imageData.src ) {\n\t\t\timageData.sets.push( {\n\t\t\t\tsrcset: imageData.src,\n\t\t\t\tsizes: null\n\t\t\t} );\n\t\t}\n\n\t\timageData.curCan = null;\n\t\timageData.curSrc = undefined;\n\n\t\t// if img has picture or the srcset was removed or has a srcset and does not support srcset at all\n\t\t// or has a w descriptor (and does not support sizes) set support to false to evaluate\n\t\timageData.supported = !( hasPicture || ( imageSet && !pf.supSrcset ) || (isWDescripor && !pf.supSizes) );\n\n\t\tif ( srcsetParsed && pf.supSrcset && !imageData.supported ) {\n\t\t\tif ( srcsetAttribute ) {\n\t\t\t\tsetImgAttr.call( element, srcsetAttr, srcsetAttribute );\n\t\t\t\telement.srcset = \"\";\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcsetAttr );\n\t\t\t}\n\t\t}\n\n\t\tif (imageData.supported && !imageData.srcset && ((!imageData.src && element.src) || element.src !== pf.makeUrl(imageData.src))) {\n\t\t\tif (imageData.src === null) {\n\t\t\t\telement.removeAttribute(\"src\");\n\t\t\t} else {\n\t\t\t\telement.src = imageData.src;\n\t\t\t}\n\t\t}\n\n\t\timageData.parsed = true;\n\t};\n\n\tpf.fillImg = function(element, options) {\n\t\tvar imageData;\n\t\tvar extreme = options.reselect || options.reevaluate;\n\n\t\t// expando for caching data on the img\n\t\tif ( !element[ pf.ns ] ) {\n\t\t\telement[ pf.ns ] = {};\n\t\t}\n\n\t\timageData = element[ pf.ns ];\n\n\t\t// if the element has already been evaluated, skip it\n\t\t// unless `options.reevaluate` is set to true ( this, for example,\n\t\t// is set to true when running `picturefill` on `resize` ).\n\t\tif ( !extreme && imageData.evaled === evalId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !imageData.parsed || options.reevaluate ) {\n\t\t\tpf.parseSets( element, element.parentNode, options );\n\t\t}\n\n\t\tif ( !imageData.supported ) {\n\t\t\tapplyBestCandidate( element );\n\t\t} else {\n\t\t\timageData.evaled = evalId;\n\t\t}\n\t};\n\n\tpf.setupRun = function() {\n\t\tif ( !alreadyRun || isVwDirty || (DPR !== window.devicePixelRatio) ) {\n\t\t\tupdateMetrics();\n\t\t}\n\t};\n\n\t// If picture is supported, well, that's awesome.\n\tif ( pf.supPicture ) {\n\t\tpicturefill = noop;\n\t\tpf.fillImg = noop;\n\t} else {\n\n\t\t // Set up picture polyfill by polling the document\n\t\t(function() {\n\t\t\tvar isDomReady;\n\t\t\tvar regReady = window.attachEvent ? /d$|^c/ : /d$|^c|^i/;\n\n\t\t\tvar run = function() {\n\t\t\t\tvar readyState = document.readyState || \"\";\n\n\t\t\t\ttimerId = setTimeout(run, readyState === \"loading\" ? 200 : 999);\n\t\t\t\tif ( document.body ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t\tisDomReady = isDomReady || regReady.test(readyState);\n\t\t\t\t\tif ( isDomReady ) {\n\t\t\t\t\t\tclearTimeout( timerId );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar timerId = setTimeout(run, document.body ? 9 : 99);\n\n\t\t\t// Also attach picturefill on resize and readystatechange\n\t\t\t// http://modernjavascript.blogspot.com/2013/08/building-better-debounce.html\n\t\t\tvar debounce = function(func, wait) {\n\t\t\t\tvar timeout, timestamp;\n\t\t\t\tvar later = function() {\n\t\t\t\t\tvar last = (new Date()) - timestamp;\n\n\t\t\t\t\tif (last < wait) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait - last);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimeout = null;\n\t\t\t\t\t\tfunc();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn function() {\n\t\t\t\t\ttimestamp = new Date();\n\n\t\t\t\t\tif (!timeout) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t\tvar lastClientWidth = docElem.clientHeight;\n\t\t\tvar onResize = function() {\n\t\t\t\tisVwDirty = Math.max(window.innerWidth || 0, docElem.clientWidth) !== units.width || docElem.clientHeight !== lastClientWidth;\n\t\t\t\tlastClientWidth = docElem.clientHeight;\n\t\t\t\tif ( isVwDirty ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ton( window, \"resize\", debounce(onResize, 99 ) );\n\t\t\ton( document, \"readystatechange\", run );\n\t\t})();\n\t}\n\n\tpf.picturefill = picturefill;\n\t//use this internally for easy monkey patching/performance testing\n\tpf.fillImgs = picturefill;\n\tpf.teardownRun = noop;\n\n\t/* expose methods for testing */\n\tpicturefill._ = pf;\n\n\twindow.picturefillCFG = {\n\t\tpf: pf,\n\t\tpush: function(args) {\n\t\t\tvar name = args.shift();\n\t\t\tif (typeof pf[name] === \"function\") {\n\t\t\t\tpf[name].apply(pf, args);\n\t\t\t} else {\n\t\t\t\tcfg[name] = args[0];\n\t\t\t\tif (alreadyRun) {\n\t\t\t\t\tpf.fillImgs( { reselect: true } );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\twhile (setOptions && setOptions.length) {\n\t\twindow.picturefillCFG.push(setOptions.shift());\n\t}\n\n\t/* expose picturefill */\n\twindow.picturefill = picturefill;\n\n\t/* expose picturefill */\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// CommonJS, just export\n\t\tmodule.exports = picturefill;\n\t} else if ( true ) {\n\t\t// AMD support\n\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function() { return picturefill; }.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t}\n\n\t// IE8 evals this sync, so it must be the last thing we do\n\tif ( !pf.supPicture ) {\n\t\ttypes[ \"image/webp\" ] = detectTypeSupport(\"image/webp\", \"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==\" );\n\t}\n\n} )( window, document );\n\n\n/***/ })\n],[603]);\n\n\n// WEBPACK FOOTER //\n// client.js","/*!\n * jQuery JavaScript Library v2.2.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-05-20T17:23Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\"use strict\";\nvar arr = [];\n\nvar document = window.document;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"2.2.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisArray: Array.isArray,\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\tvar realStringObj = obj && obj.toString();\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Not plain objects:\n\t\t// - Any object or value whose internal [[Class]] property is not \"[object Object]\"\n\t\t// - DOM nodes\n\t\t// - window\n\t\tif ( jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype || {}, \"isPrototypeOf\" ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\n\t\t// Support: Android<4.0, iOS<6 (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tvar script,\n\t\t\tindirect = eval;\n\n\t\tcode = jQuery.trim( code );\n\n\t\tif ( code ) {\n\n\t\t\t// If the code includes a valid, prologue position\n\t\t\t// strict mode pragma, execute code by injecting a\n\t\t\t// script tag into the document.\n\t\t\tif ( code.indexOf( \"use strict\" ) === 1 ) {\n\t\t\t\tscript = document.createElement( \"script\" );\n\t\t\t\tscript.text = code;\n\t\t\t\tdocument.head.appendChild( script ).parentNode.removeChild( script );\n\t\t\t} else {\n\n\t\t\t\t// Otherwise, avoid the DOM node creation, insertion\n\t\t\t\t// and removal by using an indirect global eval\n\n\t\t\t\tindirect( code );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE9-11+\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\n// JSHint would error on this code due to the Symbol not being defined in ES5.\n// Defining this global in .jshintrc would create a danger of using the global\n// unguarded in another place, it seems safer to just disable JSHint for these\n// three lines.\n/* jshint ignore: start */\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n/* jshint ignore: end */\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.1\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-10-17\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, nidselect, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\n\t\t// Support: IE 11\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\treturn m ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"<input/>\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\t// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\n\t\t\t\t\tpos.index( cur ) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnotwhite = ( /\\S+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add( function() {\n\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 ||\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred.\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// Add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n} );\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n} );\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called\n\t\t// after the browser event has already occurred.\n\t\t// Support: IE9-10 only\n\t\t// Older IE sometimes signals \"interactive\" too soon\n\t\tif ( document.readyState === \"complete\" ||\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\twindow.setTimeout( jQuery.ready );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[ 0 ], key ) : emptyGet;\n};\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\t/* jshint -W018 */\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tregister: function( owner, initial ) {\n\t\tvar value = initial || {};\n\n\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t// use plain assignment\n\t\tif ( owner.nodeType ) {\n\t\t\towner[ this.expando ] = value;\n\n\t\t// Otherwise secure it in a non-enumerable, non-writable property\n\t\t// configurability must be true to allow the property to be\n\t\t// deleted with the delete operator\n\t\t} else {\n\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\tvalue: value,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true\n\t\t\t} );\n\t\t}\n\t\treturn owner[ this.expando ];\n\t},\n\tcache: function( owner ) {\n\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return an empty object.\n\t\tif ( !acceptData( owner ) ) {\n\t\t\treturn {};\n\t\t}\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ data ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ prop ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\t\t\towner[ this.expando ] && owner[ this.expando ][ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase( key ) );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i, name, camel,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === undefined ) {\n\t\t\tthis.register( owner );\n\n\t\t} else {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <= 35-45+\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data, camelKey;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key as-is\n\t\t\t\tdata = dataUser.get( elem, key ) ||\n\n\t\t\t\t\t// Try to find dashed key if it exists (gh-2779)\n\t\t\t\t\t// This is for 2.2.x only\n\t\t\t\t\tdataUser.get( elem, key.replace( rmultiDash, \"-$&\" ).toLowerCase() );\n\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = dataUser.get( elem, camelKey );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, camelKey, undefined );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tcamelKey = jQuery.camelCase( key );\n\t\t\tthis.each( function() {\n\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = dataUser.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdataUser.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf( \"-\" ) > -1 && data !== undefined ) {\n\t\t\t\t\tdataUser.set( this, key, value );\n\t\t\t\t}\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() { return tween.cur(); } :\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([\\w:-]+)/ );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE9\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE9-11+\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0-4.3, Safari<=5.1\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari<=5.1, Android<4.2\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<=11+\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE9\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Support (at least): Chrome, IE9\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG <use> instance trees (#13180)\n\t\t//\n\t\t// Support: Firefox<=42+\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\tif ( delegateCount && cur.nodeType &&\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: ( \"button buttons clientX clientY offsetX offsetY pageX pageY \" +\n\t\t\t\"screenX screenY toElement\" ).split( \" \" ),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX +\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY +\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://code.google.com/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\n\n\t// Support: IE 10-11, Edge 10240+\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <= 35-45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <= 35-45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\n\t// Keep domManip exposed until 3.0 (gh-2225)\n\tdomManip: domManip,\n\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\n\nvar iframe,\n\telemdisplay = {\n\n\t\t// Support: Firefox\n\t\t// We have to pre-define these values for FF (#10227)\n\t\tHTML: \"block\",\n\t\tBODY: \"block\"\n\t};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe || jQuery( \"<iframe frameborder='0' width='0' height='0'/>\" ) )\n\t\t\t\t.appendTo( doc.documentElement );\n\n\t\t\t// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse\n\t\t\tdoc = iframe[ 0 ].contentDocument;\n\n\t\t\t// Support: IE\n\t\t\tdoc.write();\n\t\t\tdoc.close();\n\n\t\t\tdisplay = actualDisplay( nodeName, doc );\n\t\t\tiframe.detach();\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn display;\n}\nvar rmargin = ( /^margin/ );\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE<=11+, Firefox<=30+ (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar documentElement = document.documentElement;\n\n\n\n( function() {\n\tvar pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE9-11+\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tcontainer.style.cssText = \"border:0;width:8px;height:0;top:0;left:-9999px;\" +\n\t\t\"padding:0;margin-top:1px;position:absolute\";\n\tcontainer.appendChild( div );\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\t\tdiv.style.cssText =\n\n\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t// Vendor-prefix box-sizing\n\t\t\t\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;\" +\n\t\t\t\"position:relative;display:block;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"top:1%;width:50%\";\n\t\tdiv.innerHTML = \"\";\n\t\tdocumentElement.appendChild( container );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\t\treliableMarginLeftVal = divStyle.marginLeft === \"2px\";\n\t\tboxSizingReliableVal = divStyle.width === \"4px\";\n\n\t\t// Support: Android 4.0 - 4.3 only\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.marginRight = \"50%\";\n\t\tpixelMarginRightVal = divStyle.marginRight === \"4px\";\n\n\t\tdocumentElement.removeChild( container );\n\t}\n\n\tjQuery.extend( support, {\n\t\tpixelPosition: function() {\n\n\t\t\t// This test is executed only once but we still do memoizing\n\t\t\t// since we can use the boxSizingReliable pre-computing.\n\t\t\t// No need to check if the test was already performed, though.\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\tboxSizingReliable: function() {\n\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelMarginRight: function() {\n\n\t\t\t// Support: Android 4.0-4.3\n\t\t\t// We're checking for boxSizingReliableVal here instead of pixelMarginRightVal\n\t\t\t// since that compresses better and they're computed together anyway.\n\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn pixelMarginRightVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\n\t\t\t// Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37\n\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\treliableMarginRight: function() {\n\n\t\t\t// Support: Android 2.3\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. (#3333)\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t// This support function is only executed once so no memoizing is needed.\n\t\t\tvar ret,\n\t\t\t\tmarginDiv = div.appendChild( document.createElement( \"div\" ) );\n\n\t\t\t// Reset CSS: box-sizing; display; margin; border; padding\n\t\t\tmarginDiv.style.cssText = div.style.cssText =\n\n\t\t\t\t// Support: Android 2.3\n\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t\"-webkit-box-sizing:content-box;box-sizing:content-box;\" +\n\t\t\t\t\"display:block;margin:0;border:0;padding:0\";\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\t\t\tdocumentElement.appendChild( container );\n\n\t\t\tret = !parseFloat( window.getComputedStyle( marginDiv ).marginRight );\n\n\t\t\tdocumentElement.removeChild( container );\n\t\t\tdiv.removeChild( marginDiv );\n\n\t\t\treturn ret;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\tret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;\n\n\t// Support: Opera 12.1x only\n\t// Fall back to style even without computed\n\t// computed is undefined for elems on document fragments\n\tif ( ( ret === \"\" || ret === undefined ) && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\tret = jQuery.style( elem, name );\n\t}\n\n\t// Support: IE9\n\t// getPropertyValue is only needed for .css('filter') (#12537)\n\tif ( computed ) {\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// http://dev.w3.org/csswg/cssom/#resolved-values\n\t\tif ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE9-11+\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// At this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// At this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// At this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar valueIsBorderBox = true,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// Some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test( val ) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// Check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox &&\n\t\t\t( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// Use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem, hidden,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalues[ index ] = dataPriv.get( elem, \"olddisplay\" );\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = dataPriv.access(\n\t\t\t\t\telem,\n\t\t\t\t\t\"olddisplay\",\n\t\t\t\t\tdefaultDisplay( elem.nodeName )\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\thidden = isHidden( elem );\n\n\t\t\tif ( display !== \"none\" || !hidden ) {\n\t\t\t\tdataPriv.set(\n\t\t\t\t\telem,\n\t\t\t\t\t\"olddisplay\",\n\t\t\t\t\thidden ? display : jQuery.css( elem, \"display\" )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t\"float\": \"cssFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] ||\n\t\t\t( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tstyle[ name ] = value;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] ||\n\t\t\t( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\t\t\t\t\telem.offsetWidth === 0 ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = extra && getStyles( elem ),\n\t\t\t\tsubtract = extra && augmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ name ] = value;\n\t\t\t\tvalue = jQuery.css( elem, name );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// Support: Android 2.3\njQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn swap( elem, { \"display\": \"inline-block\" },\n\t\t\t\tcurCSS, [ elem, \"marginRight\" ] );\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( jQuery.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE9\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = jQuery.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\t/* jshint validthis: true */\n\tvar prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHidden( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE9-10 do not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t// Test default display if display is currently \"none\"\n\t\tcheckDisplay = display === \"none\" ?\n\t\t\tdataPriv.get( elem, \"olddisplay\" ) || defaultDisplay( elem.nodeName ) : display;\n\n\t\tif ( checkDisplay === \"inline\" && jQuery.css( elem, \"float\" ) === \"none\" ) {\n\t\t\tstyle.display = \"inline-block\";\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// show/hide pass\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// If there is dataShow left over from a stopped hide or show\n\t\t\t\t// and we are going to proceed with show, we should pretend to be hidden\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\n\t\t// Any non-fx value stops us from restoring the original display value\n\t\t} else {\n\t\t\tdisplay = undefined;\n\t\t}\n\t}\n\n\tif ( !jQuery.isEmptyObject( orig ) ) {\n\t\tif ( dataShow ) {\n\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\thidden = dataShow.hidden;\n\t\t\t}\n\t\t} else {\n\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", {} );\n\t\t}\n\n\t\t// Store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done( function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t} );\n\t\t}\n\t\tanim.done( function() {\n\t\t\tvar prop;\n\n\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t} );\n\t\tfor ( prop in orig ) {\n\t\t\ttween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t// If this is a noop like .hide().hide(), restore an overwritten display value\n\t} else if ( ( display === \"none\" ? defaultDisplay( elem.nodeName ) : display ) === \"inline\" ) {\n\t\tstyle.display = display;\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( jQuery.isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tjQuery.proxy( result.stop, result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnotwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ?\n\t\topt.duration : opt.duration in jQuery.fx.speeds ?\n\t\t\tjQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tif ( timer() ) {\n\t\tjQuery.fx.start();\n\t} else {\n\t\tjQuery.timers.pop();\n\t}\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( !timerId ) {\n\t\ttimerId = window.setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.stop = function() {\n\twindow.clearInterval( timerId );\n\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: iOS<=5.1, Android<=4.2+\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE<=11+\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: Android<=2.3\n\t// Options inside disabled selects are incorrectly marked as disabled\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Support: IE<=11+\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tjQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name, propName,\n\t\t\ti = 0,\n\t\t\tattrNames = value && value.match( rnotwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\n\t\t\t\t// Boolean attributes get special treatment (#10870)\n\t\t\t\tif ( jQuery.expr.match.bool.test( name ) ) {\n\n\t\t\t\t\t// Set corresponding property to false\n\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t}\n\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle;\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ name ];\n\t\t\tattrHandle[ name ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tname.toLowerCase() :\n\t\t\t\tnull;\n\t\t\tattrHandle[ name ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\treturn tabindex ?\n\t\t\t\t\tparseInt( tabindex, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\t\trclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\t-1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\nvar rclass = /[\\t\\r\\n\\f]/g;\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof value === \"string\" && value ) {\n\t\t\tclasses = value.match( rnotwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 &&\n\t\t\t\t\t( \" \" + curValue + \" \" ).replace( rclass, \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = jQuery.trim( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tif ( typeof value === \"string\" && value ) {\n\t\t\tclasses = value.match( rnotwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 &&\n\t\t\t\t\t( \" \" + curValue + \" \" ).replace( rclass, \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = jQuery.trim( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value;\n\n\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( type === \"string\" ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = value.match( rnotwhite ) || [];\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + getClass( elem ) + \" \" ).replace( rclass, \" \" )\n\t\t\t\t\t.indexOf( className ) > -1\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g,\n\trspaces = /[\\x20\\t\\r\\n\\f]+/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\n\t\t\t\t\t// Handle most common string cases\n\t\t\t\t\tret.replace( rreturn, \"\" ) :\n\n\t\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE10-11+\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tjQuery.trim( jQuery.text( elem ) ).replace( rspaces, \" \" );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( support.optDisabled ?\n\t\t\t\t\t\t\t\t!option.disabled : option.getAttribute( \"disabled\" ) === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\n// Support: Firefox\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome, Safari\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = jQuery.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Support: Android 2.3\n// Workaround failure to string-cast null input\njQuery.parseJSON = function( data ) {\n\treturn JSON.parse( data + \"\" );\n};\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE9\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trhash = /#.*$/,\n\trts = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\t\t\tfor ( code in map ) {\n\n\t\t\t\t\t\t\t\t// Lazy-add the new callback in a way that preserves old ones\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR ).complete = completeDeferred.add;\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" ).replace( rhash, \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().match( rnotwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE8-11+\n\t\t\t// IE throws exception if url is malformed, e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE8-11+\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\tcacheURL = s.url;\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL = ( s.url += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data );\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\ts.url = rts.test( cacheURL ) ?\n\n\t\t\t\t\t// If there is already a '_' parameter, set its value\n\t\t\t\t\tcacheURL.replace( rts, \"$1_=\" + nonce++ ) :\n\n\t\t\t\t\t// Otherwise add one to the end\n\t\t\t\t\tcacheURL + ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + nonce++;\n\t\t\t}\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapAll( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( this[ 0 ] ) {\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each( function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t} ).end();\n\t}\n} );\n\n\njQuery.expr.filters.hidden = function( elem ) {\n\treturn !jQuery.expr.filters.visible( elem );\n};\njQuery.expr.filters.visible = function( elem ) {\n\n\t// Support: Opera <= 12.12\n\t// Opera reports offsetWidths and offsetHeights less than zero on some elements\n\t// Use OR instead of AND as the element is not visible if either is true\n\t// See tickets #10406 and #13132\n\treturn elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0;\n};\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t} ) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE9\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE9\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = callback( \"error\" );\n\n\t\t\t\t// Support: IE9\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\tcontext = context || document;\n\n\tvar parsed = rsingleTag.exec( data ),\n\t\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n// Keep a copy of the old load method\nvar _load = jQuery.fn.load;\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = jQuery.trim( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.filters.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\n/**\n * Gets a window from an element\n */\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;\n}\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\toffset: function( options ) {\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar docElem, win,\n\t\t\telem = this[ 0 ],\n\t\t\tbox = { top: 0, left: 0 },\n\t\t\tdoc = elem && elem.ownerDocument;\n\n\t\tif ( !doc ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure it's not a disconnected DOM node\n\t\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box;\n\t\t}\n\n\t\tbox = elem.getBoundingClientRect();\n\t\twin = getWindow( doc );\n\t\treturn {\n\t\t\ttop: box.top + win.pageYOffset - docElem.clientTop,\n\t\t\tleft: box.left + win.pageXOffset - docElem.clientLeft\n\t\t};\n\t},\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n\t\t// because it is its only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume getBoundingClientRect is there when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top += jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true );\n\t\t\tparentOffset.left += jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true );\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari<7-8+, Chrome<37-44+\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t} );\n} );\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\tsize: function() {\n\t\treturn this.length;\n\t}\n} );\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\nreturn jQuery;\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/jquery/dist/jquery.js\n// module id = 16\n// module chunks = 16 19","import Signal from 'signal';\n\nconst win = window,\n rAF = win.requestAnimationFrame ||\n win.webkitRequestAnimationFrame ||\n win.mozRequestAnimationFrame ||\n win.msRequestAnimationFrame ||\n function ( cb ) { // eslint-disable-line func-names\n return setTimeout( cb, 16 );\n };\n\nclass FasterDom {\n\n\tconstructor () {\n\t\tthis.debug = true;\n\n\t\tthis._tasks = [];\n\t\tthis.raf = rAF.bind( win );\n\n\t\tthis._scheduled = false;\n\t\tthis._flushing = false;\n\t\tthis._currentFlush = null;\n\n\t\tthis._currentFrame = 0;\n\t}\n\n\tset currentFrame ( is ) {\n\t\tthis._currentFrame = is;\n\t}\n\n\tget currentFrame () {\n\t\treturn this._currentFrame;\n\t}\n\n\tset isScheduled ( is ) {\n\t\tthis._scheduled = is === true;\n\t}\n\n\tget isScheduled () {\n\t\treturn this._scheduled;\n\t}\n\n\tset isFlushing ( is ) {\n\t\tthis._flushing = is === true;\n\t}\n\n\tget isFlushing () {\n\t\treturn this._flushing;\n\t}\n\n\trafCounter () {\n\t\tconst self = this;\n\n\t\tself.raf( ( time ) => {\n\t\t\tself.rafCounter();\n\t\t\tself._currentFrame++;\n\t\t} );\n\t}\n\n\thasTasks ( frame = 0 ) {\n\t\treturn typeof this._tasks[ frame ] !== 'undefined' && this._tasks[ frame ] instanceof Signal;\n\t}\n\n\tgetTasks ( frame = 0 ) {\n\t\tif ( this.hasTasks( frame ) ) {\n\t\t\treturn this._tasks[ frame ];\n\t\t}\n\t\treturn [];\n\t}\n\n\tnextTasks () {\n\t\tif ( this._tasks.length > 0 ) {\n\t\t\tconst tasks = this.getTasks();\n\n\t\t\tthis._tasks.splice( 0, 1 );\n\t\t\treturn tasks;\n\t\t}\n\n\t\treturn new Signal();\n\t}\n\n\taddTask ( context, fn, frame = 0 ) {\n\t\tif ( !this.hasTasks( frame ) ) {\n\t\t\tthis.setupFrame( frame );\n\t\t}\n\t\tthis._tasks[ frame ].add( fn, context, true );\n\t\tthis.scheduleTasks();\n\n\t\treturn this;\n\t}\n\n\taddTaskInstant ( context, fn, frame = 0 ) {\n\t\tif ( this.isFlushing && this._currentFlush !== null && frame === 0 ) {\n\t\t\tthis._currentFlush.add( fn, context, true );\n\t\t} else {\n\t\t\tif ( this.isFlushing && this._currentFlush !== null ) {\n\t\t\t\tframe -= 1; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\tthis.addTask( context, fn, frame );\n\t\t}\n\t\treturn this;\n\t}\n\n\tscheduleTasks () {\n\t\tconst self = this;\n\n\t\tif ( !this.isScheduled ) {\n\t\t\tthis.isScheduled = true;\n\n\t\t\tconst checkFlush = () => {\n\t\t\t\tif ( !this.isFlushing ) {\n\t\t\t\t\tself.flush();\n\t\t\t\t} else {\n\t\t\t\t\tthis.raf( checkFlush );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.raf( checkFlush );\n\t\t}\n\t}\n\n\tsetupFrame ( frame = 0 ) {\n\t\tfor ( let i = 0; i <= frame; i++ ) {\n\t\t\tif ( !this.hasTasks( i ) ) {\n\t\t\t\tthis._tasks[ i ] = new Signal();\n\t\t\t}\n\t\t}\n\t}\n\n\tmeasure ( fn, frame = 0 ) {\n\t\treturn this.addTask( 'reads', fn, frame );\n\t}\n\n\tmeasureInstant ( fn, frame = 0 ) {\n\t\treturn this.addTaskInstant( 'reads', fn, frame );\n\t}\n\n\tmutate ( fn, frame = 0 ) {\n\t\treturn this.addTask( 'writes', fn, frame );\n\t}\n\n\tmutateInstant ( fn, frame = 0 ) {\n\t\treturn this.addTaskInstant( 'writes', fn, frame );\n\t}\n\n\tonFrame ( fn, frame = 0 ) {\n\t\treturn this.addTask( 'onframe', fn, frame );\n\t}\n\n\tonFrameInstant ( fn, frame = 0 ) {\n\t\treturn this.addTaskInstant( 'onframe', fn, frame );\n\t}\n\n\tclear ( frame = 0 ) {\n\t\tthis.setupFrame( frame );\n\t}\n\n\tflush () {\n\t\tthis._currentFlush = this.nextTasks();\n\n\t\tlet error;\n\n\t\tthis.isFlushing = true;\n\t\tthis.isScheduled = false;\n\n\t\ttry {\n\t\t\tthis._currentFlush.dispatch( 'onframe' );\n\t\t\tthis._currentFlush.dispatch( 'reads' );\n\t\t\tthis._currentFlush.dispatch( 'writes' );\n\t\t} catch ( e ) {\n\t\t\terror = e;\n\t\t}\n\n\t\tthis._currentFlush = null;\n\n\t\tif ( this._tasks.length > 0 ) {\n\t\t\tthis.scheduleTasks();\n\t\t}\n\n\t\tif ( error ) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tthis.isFlushing = false;\n\t}\n\n}\n\nclass FasterDomPromised extends FasterDom {\n\n\taddTask ( context, fn, frame = 0 ) {\n\t\tif ( !this.hasTasks( frame ) ) {\n\t\t\tthis.setupFrame( frame );\n\t\t}\n\n\t\tconst promisedTask = this._tasks[ frame ].addPromised( fn, context, true );\n\n\t\tthis.scheduleTasks();\n\n\t\treturn promisedTask;\n\t}\n\n\taddTaskInstant ( context, fn, frame = 0 ) {\n\t\tif ( this.isFlushing && this._currentFlush !== null && frame === 0 ) {\n\t\t\treturn this._currentFlush.addPromised( fn, context, true );\n\t\t} else {\n\t\t\tif ( this.isFlushing && this._currentFlush !== null ) {\n\t\t\t\tframe -= 1; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn this.addTask( context, fn, frame );\n\t\t}\n\t}\n\t\n}\n\nconst instance = new FasterDom(); // eslint-disable-line one-var\nconst fasterdomPromised = new FasterDomPromised(); // eslint-disable-line one-var\n\nexport default instance;\nexport { fasterdomPromised };\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/fasterdom/fasterdom.js","import DebugController from './Debug.controller';\r\n\r\nimport StateController from './State.controller';\r\n\r\nimport WindowGateway from './../../services/gateways/WindowGateway.service';\r\n\r\nimport './../../helper/UID.helper';\r\n\r\nconst\r\n\tEVENTS = {\r\n\t\tREINIT : 'reInit',\r\n\t\tINIT : 'init'\r\n\t};\r\n\r\nfunction receiveReInit ( message ) {\r\n\t// this.logger.log( 'message event received after ready:', message );\r\n\r\n\tif ( message.type === EVENTS.REINIT && message.data.hasOwnProperty( 'id' ) ) {\r\n\t\tif ( typeof this.$scope !== 'undefined' || typeof this.$root !== 'undefined' ) {\r\n\t\t\tif ( ( this.$scope || this.$root ).attr( 'id' ) === message.data.id ) {\r\n\t\t\t\tthis.reInit();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * @interface for controller subclasses\r\n */\r\nexport default class AbstractController extends DebugController {\r\n\r\n\tconstructor () {\r\n\t\tsuper();\r\n\t\tthis.debug = true;\r\n\t\tthis.state = new StateController();\r\n\t\tthis.cache = {};\r\n\t\tthis._uid = Object._uid( this );\r\n\r\n\t\tthis.windowGateway = new WindowGateway();\r\n\t\tthis.windowGateway.messageEvent.subscribe( receiveReInit.bind( this ) );\r\n\t}\r\n\r\n\t/**\r\n\t * @abstract\r\n\t * @param {jQuery} $root - root node to attach the controller to\r\n\t * @returns {AbstractController} - instance\r\n\t */\r\n\tinit ( $root ) {}\r\n\r\n\treInit () {}\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/base/controller/Abstract.controller.js","\"use strict\";\nvar root_1 = require('./util/root');\nvar toSubscriber_1 = require('./util/toSubscriber');\nvar observable_1 = require('./symbol/observable');\nvar pipe_1 = require('./util/pipe');\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable<T>\n */\nvar Observable = (function () {\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n /**\n * Creates a new Observable, with this Observable as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param {Operator} operator the operator defining the operation to take on the observable\n * @return {Observable} a new observable with the Operator applied\n */\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * <span class=\"informal\">Use it when you have all these Observables, but still nothing is happening.</span>\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to a {@link create} static factory, but most of the time it is\n * a library implementation, which defines what and when will be emitted by an Observable. This means that calling\n * `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, that if `error` method is not provided, all errors will\n * be left uncaught.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where first function is equivalent\n * of a `next` method, second of an `error` method and third of a `complete` method. Just as in case of Observer,\n * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n *\n * Whatever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a {@link Scheduler}.\n *\n * @example <caption>Subscribe with an Observer</caption>\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() { // We actually could just remove this method,\n * }, // since we do not really care about errors right now.\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * Rx.Observable.of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n *\n *\n * @example <caption>Subscribe with functions</caption>\n * let sum = 0;\n *\n * Rx.Observable.of(1, 2, 3)\n * .subscribe(\n * function(value) {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * function() {\n * console.log('Sum equals: ' + sum);\n * }\n * );\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n *\n *\n * @example <caption>Cancel a subscription</caption>\n * const subscription = Rx.Observable.interval(1000).subscribe(\n * num => console.log(num),\n * undefined,\n * () => console.log('completed!') // Will not be called, even\n * ); // when cancelling subscription\n *\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // \"unsubscribed!\" after 2.5s\n *\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {ISubscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber_1.toSubscriber(observerOrNext, error, complete);\n if (operator) {\n operator.call(sink, this.source);\n }\n else {\n sink.add(this.source || !sink.syncErrorThrowable ? this._subscribe(sink) : this._trySubscribe(sink));\n }\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n sink.error(err);\n }\n };\n /**\n * @method forEach\n * @param {Function} next a handler for each value emitted by the observable\n * @param {PromiseConstructor} [PromiseCtor] a constructor function used to instantiate the Promise\n * @return {Promise} a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n Observable.prototype.forEach = function (next, PromiseCtor) {\n var _this = this;\n if (!PromiseCtor) {\n if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {\n PromiseCtor = root_1.root.Rx.config.Promise;\n }\n else if (root_1.root.Promise) {\n PromiseCtor = root_1.root.Promise;\n }\n }\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n return new PromiseCtor(function (resolve, reject) {\n // Must be declared in a separate statement to avoid a RefernceError when\n // accessing subscription below in the closure due to Temporal Dead Zone.\n var subscription;\n subscription = _this.subscribe(function (value) {\n if (subscription) {\n // if there is a subscription, then we can surmise\n // the next handling is asynchronous. Any errors thrown\n // need to be rejected explicitly and unsubscribe must be\n // called manually\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscription.unsubscribe();\n }\n }\n else {\n // if there is NO subscription, then we're getting a nexted\n // value synchronously during subscription. We can just call it.\n // If it errors, Observable's `subscribe` will ensure the\n // unsubscription logic is called, then synchronously rethrow the error.\n // After that, Promise will trap the error and send it\n // down the rejection path.\n next(value);\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n return this.source.subscribe(subscriber);\n };\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n Observable.prototype[observable_1.observable] = function () {\n return this;\n };\n /* tslint:enable:max-line-length */\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * @example\n *\n * import { map, filter, scan } from 'rxjs/operators';\n *\n * Rx.Observable.interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x))\n */\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i - 0] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipe_1.pipeFromArray(operations)(this);\n };\n /* tslint:enable:max-line-length */\n Observable.prototype.toPromise = function (PromiseCtor) {\n var _this = this;\n if (!PromiseCtor) {\n if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {\n PromiseCtor = root_1.root.Rx.config.Promise;\n }\n else if (root_1.root.Promise) {\n PromiseCtor = root_1.root.Promise;\n }\n }\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n return new PromiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new cold Observable by calling the Observable constructor\n * @static true\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new cold observable\n */\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexports.Observable = Observable;\n//# sourceMappingURL=Observable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/Observable.js\n// module id = 48\n// module chunks = 16 19","import Orientation from './services/DeviceOrientation.service';\nimport Resize from './services/Resize.service';\nimport Scroll from './services/Scroll.service';\nimport Breakpoint from './services/Breakpoint.service';\n\nconst Device = {\n\n\t/**\n\t * @type {Observable<WindowDimensions>} Observable stream publishing resize events\n\t */\n\tresizeEvent : Resize.resizeEvent,\n\t/**\n\t * @type {Observable<ScrollPosition>} Observable stream publishing scroll events\n\t */\n\tscrollEvent : Scroll.scrollEvent,\n\t/**\n\t * @type {Observable<Breakpoint>} Observable stream publishing breakpoint change events\n\t */\n\tbreakpointEvent : Breakpoint.breakpointEvent,\n\t/**\n\t * @type {Observable<DeviceOrientation>} Observable stream publishing orientation change events\n\t */\n\torientationEvent : Orientation.orientationEvent\n\n};\n\nexport default Device;\nexport { default as OrientationService } from './services/DeviceOrientation.service';\nexport { default as ResizeService } from './services/Resize.service';\nexport { default as ScrollService } from './services/Scroll.service';\nexport { default as BreakpointService } from './services/Breakpoint.service';\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/Device.service.js","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/helpers/createClass.js\n// module id = 80\n// module chunks = 16 19","import SignalListener, { SignalListenerPromised } from './services/SignalListener.service';\n\nclass Signal {\n\n\tconstructor () {\n\t\tthis._listener = [];\n\t}\n\n\tadd ( fn, context = '_', isOnce = false ) {\n\t\tconst self = this;\n\n\t\tif ( typeof fn === 'function' ) {\n\t\t\tconst listener = new SignalListener( fn, context, isOnce );\n\n\t\t\tself._listener.push( listener );\n\n\t\t\treturn listener;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\taddPromised ( fn, context = '_', isOnce = false ) {\n\t\tconst self = this;\n\n\t\tif ( typeof fn === 'function' ) {\n\t\t\tconst listener = new SignalListenerPromised( fn, context, isOnce );\n\n\t\t\tself._listener.push( listener );\n\n\t\t\treturn listener.promise;\n\t\t}\n\n\t\treturn Promise.reject( 'Signal: not a valid function' );\n\t}\n\n\tgetListener ( context = '_' ) {\n\t\tif ( context === '_' ) {\n\t\t\treturn this._listener;\n\t\t}\n\n\t\treturn this._listener.filter( ( l, idx, arr ) => {\n\t\t\treturn l.isInContext( context );\n\t\t} );\n\t}\n\n\tdispatch ( context = '_', ...params ) {\n\t\tconst self = this,\n\t\t toRemove = [];\n\t\t\n\t\tfor ( let i = 0; i < this._listener.length; i++ ) {\n\t\t\tconst l = this._listener[ i ];\n\n\t\t\tif ( l.isInContext( context ) ) {\n\t\t\t\tl.execute( ...params );\n\t\t\t\tif ( l.isOnce ) {\n\t\t\t\t\ttoRemove.push( l );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttoRemove.map( ( v ) => {\n\t\t\tself._listener.splice( self._listener.indexOf( v ), 1 );\n\t\t\treturn v;\n\t\t} );\n\t}\n\n\tdispatchPromised ( context = '_', ...params ) {\n\t\tconst self = this;\n\n\t\treturn Promise.all( self.getListener( context ).map( ( l ) => {\n\t\t\tif ( typeof l.promise !== 'undefined' ) {\n\t\t\t\treturn l.execute( ...params );\n\t\t\t} else {\n\t\t\t\treturn Promise.resolve( l.execute( ...params ) );\n\t\t\t}\n\t\t} ) );\n\t}\n\n\tclear () {\n\t\tthis._listener = [];\n\t}\n\n}\n\nexport default Signal;\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/signal/Signal.js","\"use strict\";\n// CommonJS / Node have global context exposed as \"global\" variable.\n// We don't want to include the whole node.d.ts this this compilation unit so we'll just fake\n// the global \"global\" var for now.\nvar __window = typeof window !== 'undefined' && window;\nvar __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self;\nvar __global = typeof global !== 'undefined' && global;\nvar _root = __window || __global || __self;\nexports.root = _root;\n// Workaround Closure Compiler restriction: The body of a goog.module cannot use throw.\n// This is needed when used with angular/tsickle which inserts a goog.module statement.\n// Wrap in IIFE\n(function () {\n if (!_root) {\n throw new Error('RxJS could not find any global context (window, self, global)');\n }\n})();\n//# sourceMappingURL=root.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/root.js\n// module id = 99\n// module chunks = 16 19","'use strict';\n\nvar _ = require('../lib/helper');\nvar cls = require('../lib/class');\nvar defaultSettings = require('./default-setting');\nvar dom = require('../lib/dom');\nvar EventManager = require('../lib/event-manager');\nvar guid = require('../lib/guid');\n\nvar instances = {};\n\nfunction Instance(element) {\n var i = this;\n\n i.settings = _.clone(defaultSettings);\n i.containerWidth = null;\n i.containerHeight = null;\n i.contentWidth = null;\n i.contentHeight = null;\n\n i.isRtl = dom.css(element, 'direction') === \"rtl\";\n i.isNegativeScroll = (function () {\n var originalScrollLeft = element.scrollLeft;\n var result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n i.negativeScrollAdjustment = i.isNegativeScroll ? element.scrollWidth - element.clientWidth : 0;\n i.event = new EventManager();\n i.ownerDocument = element.ownerDocument || document;\n\n function focus() {\n cls.add(element, 'ps-focus');\n }\n\n function blur() {\n cls.remove(element, 'ps-focus');\n }\n\n i.scrollbarXRail = dom.appendTo(dom.e('div', 'ps-scrollbar-x-rail'), element);\n i.scrollbarX = dom.appendTo(dom.e('div', 'ps-scrollbar-x'), i.scrollbarXRail);\n i.scrollbarX.setAttribute('tabindex', 0);\n i.event.bind(i.scrollbarX, 'focus', focus);\n i.event.bind(i.scrollbarX, 'blur', blur);\n i.scrollbarXActive = null;\n i.scrollbarXWidth = null;\n i.scrollbarXLeft = null;\n i.scrollbarXBottom = _.toInt(dom.css(i.scrollbarXRail, 'bottom'));\n i.isScrollbarXUsingBottom = i.scrollbarXBottom === i.scrollbarXBottom; // !isNaN\n i.scrollbarXTop = i.isScrollbarXUsingBottom ? null : _.toInt(dom.css(i.scrollbarXRail, 'top'));\n i.railBorderXWidth = _.toInt(dom.css(i.scrollbarXRail, 'borderLeftWidth')) + _.toInt(dom.css(i.scrollbarXRail, 'borderRightWidth'));\n // Set rail to display:block to calculate margins\n dom.css(i.scrollbarXRail, 'display', 'block');\n i.railXMarginWidth = _.toInt(dom.css(i.scrollbarXRail, 'marginLeft')) + _.toInt(dom.css(i.scrollbarXRail, 'marginRight'));\n dom.css(i.scrollbarXRail, 'display', '');\n i.railXWidth = null;\n i.railXRatio = null;\n\n i.scrollbarYRail = dom.appendTo(dom.e('div', 'ps-scrollbar-y-rail'), element);\n i.scrollbarY = dom.appendTo(dom.e('div', 'ps-scrollbar-y'), i.scrollbarYRail);\n i.scrollbarY.setAttribute('tabindex', 0);\n i.event.bind(i.scrollbarY, 'focus', focus);\n i.event.bind(i.scrollbarY, 'blur', blur);\n i.scrollbarYActive = null;\n i.scrollbarYHeight = null;\n i.scrollbarYTop = null;\n i.scrollbarYRight = _.toInt(dom.css(i.scrollbarYRail, 'right'));\n i.isScrollbarYUsingRight = i.scrollbarYRight === i.scrollbarYRight; // !isNaN\n i.scrollbarYLeft = i.isScrollbarYUsingRight ? null : _.toInt(dom.css(i.scrollbarYRail, 'left'));\n i.scrollbarYOuterWidth = i.isRtl ? _.outerWidth(i.scrollbarY) : null;\n i.railBorderYWidth = _.toInt(dom.css(i.scrollbarYRail, 'borderTopWidth')) + _.toInt(dom.css(i.scrollbarYRail, 'borderBottomWidth'));\n dom.css(i.scrollbarYRail, 'display', 'block');\n i.railYMarginHeight = _.toInt(dom.css(i.scrollbarYRail, 'marginTop')) + _.toInt(dom.css(i.scrollbarYRail, 'marginBottom'));\n dom.css(i.scrollbarYRail, 'display', '');\n i.railYHeight = null;\n i.railYRatio = null;\n}\n\nfunction getId(element) {\n return element.getAttribute('data-ps-id');\n}\n\nfunction setId(element, id) {\n element.setAttribute('data-ps-id', id);\n}\n\nfunction removeId(element) {\n element.removeAttribute('data-ps-id');\n}\n\nexports.add = function (element) {\n var newId = guid();\n setId(element, newId);\n instances[newId] = new Instance(element);\n return instances[newId];\n};\n\nexports.remove = function (element) {\n delete instances[getId(element)];\n removeId(element);\n};\n\nexports.get = function (element) {\n return instances[getId(element)];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/instances.js\n// module id = 100\n// module chunks = 16","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/object/keys.js\n// module id = 102\n// module chunks = 16 19","import $ from 'jquery';\nimport {isHTMLNode, isHTMLElement, isjQueryElement} from './Element.helper';\n\n/**\n * Converts dashed string into camel-cased string\n * @param {string} str - the string beiing converted\n * @returns {string} camel-cased string\n */\nfunction camelCaseSelector ( str ) {\n\tif ( typeof str !== 'string' ) {\n\t\treturn str;\n\t}\n\n\treturn str.replace( /^[#|.]/, '' ).replace( /-+([a-zA-Z]{1})/g, ( $1, $2 ) => {\n\t\treturn $2.toUpperCase();\n\t} );\n}\n\n/**\n * Capitalizes first character of string\n * @param {string} str - the string beiing converted\n * @returns {string} string starting with capital letter\n */\nfunction capitalizeFirstLetter ( str ) {\n\tif ( typeof str !== 'string' ) {\n\t\treturn str;\n\t}\n\n\treturn str.charAt( 0 ).toUpperCase() + str.slice( 1 );\n}\n\n/**\n * Get DOM Element Dimensions\n * @param {jQuery} $el jquery Wrapped DOM Element\n * @return {Object} the dimensions as { width, height, outerWidth, outerHeight, widthWithMargins, heightWithMargins }\n */\nfunction getDimensions ( $el ) {\n\t// TODO: move to fasterdom?\n\treturn {\n\t\twidth : $el.width(),\n\t\theight : $el.height(),\n\t\touterWidth : $el.outerWidth(),\n\t\touterHeight : $el.outerHeight(),\n\t\twidthWithMargins : $el.outerWidth( true ),\n\t\theightWithMargins : $el.outerHeight( true )\n\t};\n}\n\n/**\n * getHiddenDimension - get DOM element dimensions if it is hidden\n * inspired by: https://github.com/jcamenisch/jQuery-Hidden-Dimension\n * @param {jQuery} $el jQuery wrapped DOM Element\n * @param {String} modified Descriptor of which dimension was modified / set to zero - can be `width` or `height`\n * @return {Object} the dimensions as { width, height, outerWidth, outerHeight, widthWithMargins, heightWithMargins }\n */\nfunction getHiddenDimensions ( $el, modified, force = false ) {\n\tif ( $el.is( ':visible' ) && $el.height() > 0 && $el.width() > 0 && force === false ) {\n\t\treturn getDimensions( $el );\n\t}\n\t// TODO: move to fasterdom?\n\tconst visibleContainer = $el.parent().is( ':visible' ) ?\n\t $el.parent() :\n\t $el.parent().closest( ':visible' ),\n\t elementClone = $el.clone(),\n\t containerClone = $( '<div />' )\n\t\t\t .append( elementClone )\n\t\t\t .css( {\n\t\t\t\t position : 'absolute',\n\t\t\t\t right : '32000px',\n\t\t\t\t left : '-32000px',\n\t\t\t\t top : '-32000px'\n\t\t\t } )\n\t\t\t .appendTo( visibleContainer );\n\n\tswitch ( modified ) {\n\t\tcase 'height':\n\t\t\telementClone.css( { height : 'auto' } );\n\t\t\tbreak;\n\t\tcase 'width':\n\t\t\telementClone.css( { width : 'auto' } );\n\t\t\tbreak;\n\t\tcase 'max-height':\n\t\t\telementClone.css( { maxHeight : 'none' } );\n\t\t\tbreak;\n\t\tdefault:\n\t}\n\n\tif ( typeof elementClone.attr( 'aria-expanded' ) !== 'undefined' ) {\n\t\telementClone.attr( 'aria-expanded', false );\n\t}\n\n\tconst result = getDimensions( elementClone ); // eslint-disable-line one-var\n\n\tcontainerClone.remove();\n\treturn result;\n}\n\nfunction getExpandedDimensions ( $el ) {\n\tconst visibleContainer = $el.parent().is( ':visible' ) ?\n\t $el.parent() :\n\t $el.parent().closest( ':visible' ),\n\t elementClone = $el.clone(),\n\t containerClone = $( '<div />' )\n\t\t\t .append( elementClone )\n\t\t\t .css( {\n\t\t\t\t position : 'absolute',\n\t\t\t\t right : '32000px',\n\t\t\t\t left : '-32000px',\n\t\t\t\t top : '-32000px'\n\t\t\t } )\n\t\t\t .appendTo( visibleContainer );\n\n\tif ( typeof elementClone.attr( 'aria-expanded' ) !== 'undefined' ) {\n\t\telementClone.attr( 'aria-expanded', true );\n\t}\n\n\tconst result = getDimensions( elementClone ); // eslint-disable-line one-var\n\n\tcontainerClone.remove();\n\treturn result;\n}\n\nfunction getUnExpandedDimensions ( $el ) {\n\tconst visibleContainer = $el.parent().is( ':visible' ) ?\n\t $el.parent() :\n\t $el.parent().closest( ':visible' ),\n\t elementClone = $el.clone(),\n\t containerClone = $( '<div />' )\n\t\t\t .append( elementClone )\n\t\t\t .css( {\n\t\t\t\t position : 'absolute',\n\t\t\t\t right : '32000px',\n\t\t\t\t left : '-32000px',\n\t\t\t\t top : '-32000px'\n\t\t\t } )\n\t\t\t .appendTo( visibleContainer );\n\n\tif ( typeof elementClone.attr( 'aria-expanded' ) !== 'undefined' ) {\n\t\telementClone.attr( 'aria-expanded', false );\n\t}\n\n\tconst result = getDimensions( elementClone ); // eslint-disable-line one-var\n\n\tcontainerClone.remove();\n\treturn result;\n}\n\n/**\n * convert a string with seconds to milliseconds\n * @param {string} str date-time-string\n * @return {float} milliseconds\n */\nfunction secondsToMS ( str ) {\n\treturn parseFloat( str.replace( /[^0-9\\.]/, '' ), 10 ) * 1000;\n}\n\n/**\n */\nfunction qualifyURL ( url ) {\n\tconst a = document.createElement( 'a' );\n\ta.href = url;\n\treturn a.href;\n}\n\n/**\n * Check if given element is a DOM- / jQuery-Element and returns a jQuery wrapped Element.\n *\n * @param {(jQuery|Object|String)} el - Element to check\n * @return {jQuery} jQuery wrapped element\n */\nfunction toJQuery ( el ) {\n\tif ( !isHTMLNode( el ) && !isHTMLElement( el ) && !isjQueryElement( el ) ) {\n\t\tthrow new Error( 'Element is not a valid HTML-DOM- or jQuery-Element!', el );\n\t}\n\tif ( !isjQueryElement( el ) ) {\n\t\treturn $( el );\n\t}\n\n\treturn el;\n}\n\nexport {\n\tgetDimensions,\n\tgetHiddenDimensions,\n\tgetExpandedDimensions,\n\tgetUnExpandedDimensions,\n\tcamelCaseSelector,\n\tcapitalizeFirstLetter,\n\tsecondsToMS,\n\tqualifyURL,\n\ttoJQuery\n};\n\n\n\n// WEBPACK FOOTER //\n// ./js/helper/global.helper.js","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar isFunction_1 = require('./util/isFunction');\nvar Subscription_1 = require('./Subscription');\nvar Observer_1 = require('./Observer');\nvar rxSubscriber_1 = require('./symbol/rxSubscriber');\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber<T>\n */\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n /**\n * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n * defined Observer or a `next` callback function.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n */\n function Subscriber(destinationOrNext, error, complete) {\n _super.call(this);\n this.syncErrorValue = null;\n this.syncErrorThrown = false;\n this.syncErrorThrowable = false;\n this.isStopped = false;\n switch (arguments.length) {\n case 0:\n this.destination = Observer_1.empty;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = Observer_1.empty;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n this.destination.add(this);\n }\n else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n break;\n }\n }\n Subscriber.prototype[rxSubscriber_1.rxSubscriber] = function () { return this; };\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n * @return {Subscriber<T>} A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n */\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached {@link Error}. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _a = this, _parent = _a._parent, _parents = _a._parents;\n this._parent = null;\n this._parents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parent = _parent;\n this._parents = _parents;\n return this;\n };\n return Subscriber;\n}(Subscription_1.Subscription));\nexports.Subscriber = Subscriber;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n _super.call(this);\n this._parentSubscriber = _parentSubscriber;\n var next;\n var context = this;\n if (isFunction_1.isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== Observer_1.empty) {\n context = Object.create(observerOrNext);\n if (isFunction_1.isFunction(context.unsubscribe)) {\n this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._error) {\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n throw err;\n }\n else {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n throw err;\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=Subscriber.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/Subscriber.js\n// module id = 115\n// module chunks = 16 19","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/object/assign.js\n// module id = 116\n// module chunks = 16 19 21","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/helpers/toConsumableArray.js\n// module id = 117\n// module chunks = 16 19 21","import { map } from 'rxjs/operator/map';\r\nimport { Observable } from 'rxjs/Observable';\r\nimport { fromEvent } from 'rxjs/observable/fromEvent';\r\nimport getData from './../../helper/PostMessage.helper';\r\nimport Logger from 'frontend-logger';\r\n\r\nconst scope = window,\r\n EVENTS = {\r\n\t MESSAGE : 'message'\r\n };\r\n\r\n/**\r\n *\r\n * @returns {Observable<Object>} Observable event stream containing parsed cross domain messages\r\n */\r\nfunction createMessageStream () {\r\n\r\n\treturn Observable\r\n\t\t\t::fromEvent( scope, EVENTS.MESSAGE )\r\n\t\t\t::map( getData );\r\n}\r\n\r\nfunction sendTo ( el, message, target ) {\r\n\t// console.log( el, JSON.stringify( message ), target );\r\n\t// el.postMessage( '', target );\r\n\tel.postMessage( JSON.stringify( message ), target );\r\n}\r\n\r\n/**\r\n * Gateway for cross domain iFrame communication using postMessage.\r\n *\r\n * @class\r\n */\r\nclass WindowGateway {\r\n\r\n\tconstructor () {\r\n\t\t/**\r\n\t\t * EventStream to receive cross domain messages.\r\n\t\t * @type {Observable<Object>}\r\n\t\t */\r\n\t\tthis.messageEvent = createMessageStream();\r\n\t}\r\n\r\n\t/**\r\n\t * Send a message cross origin message via postMessage transport\r\n\t * @param {object} message - Message object to send to the parent window\r\n\t * @param {string} target -\r\n\t * @returns {void}\r\n\t */\r\n\tsend ( message, target ) {\r\n\t\tsendTo( window.parent, message, target );\r\n\t}\r\n\r\n\tsendToChild ( iframe, message, target ) {\r\n\t\tsendTo( iframe.contentWindow, message, target );\r\n\t}\r\n}\r\n\r\nexport default WindowGateway;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/services/gateways/WindowGateway.service.js","import TransitionEndPromise from './../../helper/TransitionEndPromise.helper';\r\nimport TransitionEventExecutor from './TransitionEventExecutor.controller';\r\n\r\nimport {SELECTORS} from './../../framework/constants/Selectors.const';\r\nimport {toJQuery} from './../../helper/global.helper';\r\n\r\nimport Signal from 'signal';\r\nimport fasterdom, { fasterdomPromised } from 'fasterdom';\r\n\r\nimport $ from 'jquery';\r\n\r\n/**\r\n * Sets the transition value as a collection of the given transition types\r\n * Checks if the give transition types are within the css style definitions\r\n * @param { ?(String|Array) } [transition=['all']] - String of transition types splitted by whitespace\r\n * @returns { void }\r\n * @private\r\n */\r\nfunction _setTransition ( transition, createPromise = true ) {\r\n\r\n\tif ( Array.isArray( transition ) ) {\r\n\t\tthis.transitions = transition;\r\n\t} else if ( typeof transition === 'string' ) {\r\n\t\tthis.transitions = transition.split( ' ' );\r\n\t} else {\r\n\t\tthis.transitions = [ 'all' ];\r\n\t}\r\n\r\n\tthis.transitions.forEach( ( v ) => {\r\n\t\tthis.transitions.push( '-webkit-' + v );\r\n\t} );\r\n\r\n\tthis.transitions = [ ...new Set( this.transitions ) ];\r\n\tif ( createPromise ) {\r\n\t\tthis.setTransitionEndPromise();\r\n\t}\r\n}\r\n\r\n/**\r\n * Sets the transition element on which to listen for the transition end event\r\n * @param { jQuery } transitionEl - DOM Element to watch the transition end for\r\n * @returns { void }\r\n * @private\r\n */\r\nfunction _setTransitionEl ( transitionEl, createPromise = true ) {\r\n\tthis._transitionEventLogger.info( 'Set transition element to', transitionEl );\r\n\tif ( !( transitionEl instanceof $ ) ) {\r\n\t\ttransitionEl = $( transitionEl ); // eslint-disable-line no-param-reassign\r\n\t}\r\n\r\n\tthis.$transitionEl = transitionEl;\r\n\tif ( createPromise ) {\r\n\t\tthis.setTransitionEndPromise();\r\n\t}\r\n}\r\n\r\n/**\r\n * Attaches the TransitionEnd Handler\r\n *\r\n * @private\r\n * @return {void}\r\n */\r\nfunction _setTransitionEndPromise () {\r\n\tthis._transitionEventLogger.info( 'Attach Transition End Handler as Promise to', this.$transitionEl );\r\n\r\n\tthis.transitionEndPromise = TransitionEndPromise.create( this.$transitionEl, this.transitions );\r\n\tthis.transitionEndPromise\r\n\t\t\t.then( ( data ) => {\r\n\t\t\t\tthis._afterTransition.dispatch( 'transition', data );\r\n\t\t\t\t_setTransitionEndPromise.call( this );\r\n\t\t\t} );\r\n}\r\n\r\n/**\r\n * Class handling\r\n * Controls\r\n * Controls\r\n * @extends { AbstractController }\r\n */\r\nclass TransitionEventController extends TransitionEventExecutor {\r\n\r\n\tconstructor () {\r\n\t\t// change debugging setting accordingly\r\n\t\tconst DEBUG = false;\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis._transitionEventLogger = this.debugLocal( DEBUG, 'TransitionEventController', 'background: #72FF26; color: black' );\r\n\r\n\t\tthis.$scope = null;\r\n\t\tthis.callbacks = {};\r\n\t\tthis.transitions = [];\r\n\t\tthis.$transitionEl = null;\r\n\r\n\t\tthis.transitionEndPromise = null;\r\n\r\n\t\tthis._before = new Signal();\r\n\t\tthis._on = new Signal();\r\n\t\tthis._after = new Signal();\r\n\t\tthis._afterTransition = new Signal();\r\n\r\n\t\tthis._isOpen = false;\r\n\t\tthis._isAnimated = false;\r\n\r\n\t\t// addSubscriptions.call( this );\r\n\t}\r\n\r\n\tinit ( $root ) {\r\n\t\tthis.$scope = toJQuery( $root );\r\n\r\n\t\tthis.initialOpenPromise = fasterdomPromised.mutateInstant( () => {\r\n\t\t\tconst attrOpen = this.$scope.attr( SELECTORS.expandedSelector );\r\n\r\n\t\t\tthis.isOpen = attrOpen && JSON.parse( attrOpen ) === true;\r\n\t\t} );\r\n\r\n\t\tthis.setTransition( false, false );\r\n\t\tthis.setTransitionElement( this.$scope, false );\r\n\t\tthis.setTransitionEndPromise();\r\n\t}\r\n\r\n\tset isOpen ( is ) {\r\n\t\tif ( is === true ) {\r\n\t\t\tthis.state.setOpen();\r\n\t\t} else {\r\n\t\t\tthis.state.setClosed();\r\n\t\t}\r\n\t\tfasterdom.mutateInstant( () => {\r\n\t\t\tthis.$scope.attr( SELECTORS.expandedSelector, String( is === true ) );\r\n\t\t} );\r\n\t}\r\n\r\n\tget isOpen () {\r\n\t\treturn this.state.isOpen;\r\n\t}\r\n\r\n\tset isAnimated ( is ) {\r\n\t\tthis._isAnimated = is === true;\r\n\t}\r\n\r\n\tget isAnimated () {\r\n\t\treturn this._isAnimated;\r\n\t}\r\n\r\n\t/**\r\n\t * Runs private execute function with opening arguments\r\n\t * @param { jQuery } $trigger - the trigger which initiated the event\r\n\t * @returns { void|Array } - returns an array of callback functions which failed to be executed\r\n\t * @public\r\n\t */\r\n\topen ( $trigger ) {\r\n\t\treturn this.execute( 'open', $trigger );\r\n\t}\r\n\r\n\topenSilent () {\r\n\t\tthis.executeSilent( 'open' );\r\n\t}\r\n\r\n\t/**\r\n\t * Runs private execute function with closing arguments\r\n\t * @param { jQuery } $trigger - the trigger which initiated the event\r\n\t * @returns { void|Array } - returns an array of callback functions which failed to be executed\r\n\t * @public\r\n\t */\r\n\tclose ( $trigger ) {\r\n\t\treturn this.execute( 'close', $trigger );\r\n\t}\r\n\r\n\tcloseSilent () {\r\n\t\tthis.executeSilent( 'close' );\r\n\t}\r\n\r\n\t/**\r\n\t * Adds give callback function into beforeOpen function stack\r\n\t * @param { Function } fn - callback function\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tbeforeOpen ( fn ) {\r\n\t\tthis._before.add( fn, 'open' );\r\n\t}\r\n\r\n\t/**\r\n\t * Adds give callback function into onOpen function stack\r\n\t * @param { Function } fn - callback function\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tonOpen ( fn ) {\r\n\t\tthis._on.add( fn, 'open' );\r\n\t}\r\n\r\n\t/**\r\n\t * Adds give callback function into afterOpen function stack\r\n\t * @param { Function } fn - callback function\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tafterOpen ( fn ) {\r\n\t\tthis._after.add( fn, 'open' );\r\n\t}\r\n\r\n\t/**\r\n\t * Adds give callback function into afterOpen function stack for execution once\r\n\t * @param { Function } fn - callback function\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tafterOpenOnce ( fn ) {\r\n\t\tthis._after.add( fn, 'open', true );\r\n\t}\r\n\r\n\t/**\r\n\t * Adds give callback function into beforeClose function stack\r\n\t * @param { Function } fn - callback function\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tbeforeClose ( fn ) {\r\n\t\tthis._before.add( fn, 'close' );\r\n\t}\r\n\r\n\t/**\r\n\t * Adds give callback function into onClose function stack\r\n\t * @param { Function } fn - callback function\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tonClose ( fn ) {\r\n\t\tthis._on.add( fn, 'close' );\r\n\t}\r\n\r\n\t/**\r\n\t * Adds give callback function into afterClose function stack\r\n\t * @param { Function } fn - callback function\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tafterClose ( fn ) {\r\n\t\tthis._after.add( fn, 'close' );\r\n\t}\r\n\r\n\t/**\r\n\t * Adds give callback function into afterClose function stack for execution once\r\n\t * @param { Function } fn - callback function\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tafterCloseOnce ( fn ) {\r\n\t\tthis._after.add( fn, 'close', true );\r\n\t}\r\n\r\n\tafterTransition ( fn ) {\r\n\t\tthis._afterTransition.add( fn, 'transition' );\r\n\t}\r\n\r\n\tafterTransitionOnce ( fn ) {\r\n\t\tthis._afterTransition.add( fn, 'transition', true );\r\n\t}\r\n\r\n\t/**\r\n\t * Setter function to set transition types\r\n\t * @param { String } transition - transition types\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tsetTransition ( transition, createPromise = true ) {\r\n\t\t_setTransition.call( this, transition, createPromise );\r\n\t}\r\n\r\n\tsetTransitionElement ( transitionEl, createPromise = true ) {\r\n\t\t_setTransitionEl.call( this, transitionEl, createPromise );\r\n\t}\r\n\r\n\tsetTransitionEndPromise () {\r\n\t\t_setTransitionEndPromise.call( this );\r\n\t}\r\n\r\n}\r\n\r\nexport default TransitionEventController;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/base/controller/TransitionEvent.controller.js","export const SELECTORS = {\r\n\tactiveClass : 'active',\r\n\tactiveSelector : 'aria-selected',\r\n\tactiveSelectorValue : 'true',\r\n\tinactiveSelectorValue : 'false',\r\n\texpandedSelector : 'aria-expanded',\r\n\tcontrolsSelector : 'aria-controls',\r\n\tdisabled : 'disabled',\r\n\tduringAnimationClass : 'during-animation',\r\n\tduringAnimationCloseClass : 'during-animation--close',\r\n\tduringAnimationOpenClass : 'during-animation--open'\r\n\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/framework/constants/Selectors.const.js","'use strict';\n\nvar cls = require('./class');\nvar dom = require('./dom');\n\nvar toInt = exports.toInt = function (x) {\n return parseInt(x, 10) || 0;\n};\n\nvar clone = exports.clone = function (obj) {\n if (!obj) {\n return null;\n } else if (obj.constructor === Array) {\n return obj.map(clone);\n } else if (typeof obj === 'object') {\n var result = {};\n for (var key in obj) {\n result[key] = clone(obj[key]);\n }\n return result;\n } else {\n return obj;\n }\n};\n\nexports.extend = function (original, source) {\n var result = clone(original);\n for (var key in source) {\n result[key] = clone(source[key]);\n }\n return result;\n};\n\nexports.isEditable = function (el) {\n return dom.matches(el, \"input,[contenteditable]\") ||\n dom.matches(el, \"select,[contenteditable]\") ||\n dom.matches(el, \"textarea,[contenteditable]\") ||\n dom.matches(el, \"button,[contenteditable]\");\n};\n\nexports.removePsClasses = function (element) {\n var clsList = cls.list(element);\n for (var i = 0; i < clsList.length; i++) {\n var className = clsList[i];\n if (className.indexOf('ps-') === 0) {\n cls.remove(element, className);\n }\n }\n};\n\nexports.outerWidth = function (element) {\n return toInt(dom.css(element, 'width')) +\n toInt(dom.css(element, 'paddingLeft')) +\n toInt(dom.css(element, 'paddingRight')) +\n toInt(dom.css(element, 'borderLeftWidth')) +\n toInt(dom.css(element, 'borderRightWidth'));\n};\n\nexports.startScrolling = function (element, axis) {\n cls.add(element, 'ps-in-scrolling');\n if (typeof axis !== 'undefined') {\n cls.add(element, 'ps-' + axis);\n } else {\n cls.add(element, 'ps-x');\n cls.add(element, 'ps-y');\n }\n};\n\nexports.stopScrolling = function (element, axis) {\n cls.remove(element, 'ps-in-scrolling');\n if (typeof axis !== 'undefined') {\n cls.remove(element, 'ps-' + axis);\n } else {\n cls.remove(element, 'ps-x');\n cls.remove(element, 'ps-y');\n }\n};\n\nexports.env = {\n isWebKit: 'WebkitAppearance' in document.documentElement.style,\n supportsTouch: (('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch),\n supportsIePointer: window.navigator.msMaxTouchPoints !== null\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/lib/helper.js\n// module id = 148\n// module chunks = 16","'use strict';\n\nvar _ = require('../lib/helper');\nvar cls = require('../lib/class');\nvar dom = require('../lib/dom');\nvar instances = require('./instances');\nvar updateScroll = require('./update-scroll');\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = {width: i.railXWidth};\n if (i.isRtl) {\n xRailOffset.left = i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth - i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - element.scrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + element.scrollTop;\n }\n dom.css(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = {top: element.scrollTop, height: i.railYHeight};\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right = i.contentWidth - (i.negativeScrollAdjustment + element.scrollLeft) - i.scrollbarYRight - i.scrollbarYOuterWidth;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left = i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth * 2 - i.contentWidth - i.scrollbarYLeft - i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n dom.css(i.scrollbarYRail, yRailOffset);\n\n dom.css(i.scrollbarX, {left: i.scrollbarXLeft, width: i.scrollbarXWidth - i.railBorderXWidth});\n dom.css(i.scrollbarY, {top: i.scrollbarYTop, height: i.scrollbarYHeight - i.railBorderYWidth});\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n\n i.containerWidth = element.clientWidth;\n i.containerHeight = element.clientHeight;\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n var existingRails;\n if (!element.contains(i.scrollbarXRail)) {\n existingRails = dom.queryChildren(element, '.ps-scrollbar-x-rail');\n if (existingRails.length > 0) {\n existingRails.forEach(function (rail) {\n dom.remove(rail);\n });\n }\n dom.appendTo(i.scrollbarXRail, element);\n }\n if (!element.contains(i.scrollbarYRail)) {\n existingRails = dom.queryChildren(element, '.ps-scrollbar-y-rail');\n if (existingRails.length > 0) {\n existingRails.forEach(function (rail) {\n dom.remove(rail);\n });\n }\n dom.appendTo(i.scrollbarYRail, element);\n }\n\n if (!i.settings.suppressScrollX && i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(i, _.toInt(i.railXWidth * i.containerWidth / i.contentWidth));\n i.scrollbarXLeft = _.toInt((i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth) / (i.contentWidth - i.containerWidth));\n } else {\n i.scrollbarXActive = false;\n }\n\n if (!i.settings.suppressScrollY && i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(i, _.toInt(i.railYHeight * i.containerHeight / i.contentHeight));\n i.scrollbarYTop = _.toInt(element.scrollTop * (i.railYHeight - i.scrollbarYHeight) / (i.contentHeight - i.containerHeight));\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n cls.add(element, 'ps-active-x');\n } else {\n cls.remove(element, 'ps-active-x');\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n updateScroll(element, 'left', 0);\n }\n if (i.scrollbarYActive) {\n cls.add(element, 'ps-active-y');\n } else {\n cls.remove(element, 'ps-active-y');\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n updateScroll(element, 'top', 0);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/update-geometry.js\n// module id = 149\n// module chunks = 16","export default {\n\tROOT : '[data-tpl=dws01]',\n\tBASE : '.dws01__base',\n\tSETTINGS : '.dws01__settings',\n\tTRIGGER : '.dws01__switch-trigger',\n\tBUTTONS : {\n\t\tACCEPT_IMMEDIATE : '.dws01__btn--immediate-accept',\n\t\tACCEPT_LEVEL : '.dws01__btn--accept-level'\n\t},\n\tLEVELS : '.settings--options .level',\n\tDETAILS : '.settings--descriptions > li',\n\tEXPANDER : {\n\t\tROOT : '.expander-container',\n\t\tTRIGGER : '.expander__trigger'\n\t}\n};\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/dws01/Identifiers.const.js","'use strict';\n\nvar instances = require('./instances');\n\nvar lastTop;\nvar lastLeft;\n\nvar createDOMEvent = function (name) {\n var event = document.createEvent(\"Event\");\n event.initEvent(name, true, true);\n return event;\n};\n\nmodule.exports = function (element, axis, value) {\n if (typeof element === 'undefined') {\n throw 'You must provide an element to the update-scroll function';\n }\n\n if (typeof axis === 'undefined') {\n throw 'You must provide an axis to the update-scroll function';\n }\n\n if (typeof value === 'undefined') {\n throw 'You must provide a value to the update-scroll function';\n }\n\n if (axis === 'top' && value <= 0) {\n element.scrollTop = value = 0; // don't allow negative scroll\n element.dispatchEvent(createDOMEvent('ps-y-reach-start'));\n }\n\n if (axis === 'left' && value <= 0) {\n element.scrollLeft = value = 0; // don't allow negative scroll\n element.dispatchEvent(createDOMEvent('ps-x-reach-start'));\n }\n\n var i = instances.get(element);\n\n if (axis === 'top' && value >= i.contentHeight - i.containerHeight) {\n // don't allow scroll past container\n value = i.contentHeight - i.containerHeight;\n if (value - element.scrollTop <= 1) {\n // mitigates rounding errors on non-subpixel scroll values\n value = element.scrollTop;\n } else {\n element.scrollTop = value;\n }\n element.dispatchEvent(createDOMEvent('ps-y-reach-end'));\n }\n\n if (axis === 'left' && value >= i.contentWidth - i.containerWidth) {\n // don't allow scroll past container\n value = i.contentWidth - i.containerWidth;\n if (value - element.scrollLeft <= 1) {\n // mitigates rounding errors on non-subpixel scroll values\n value = element.scrollLeft;\n } else {\n element.scrollLeft = value;\n }\n element.dispatchEvent(createDOMEvent('ps-x-reach-end'));\n }\n\n if (!lastTop) {\n lastTop = element.scrollTop;\n }\n\n if (!lastLeft) {\n lastLeft = element.scrollLeft;\n }\n\n if (axis === 'top' && value < lastTop) {\n element.dispatchEvent(createDOMEvent('ps-scroll-up'));\n }\n\n if (axis === 'top' && value > lastTop) {\n element.dispatchEvent(createDOMEvent('ps-scroll-down'));\n }\n\n if (axis === 'left' && value < lastLeft) {\n element.dispatchEvent(createDOMEvent('ps-scroll-left'));\n }\n\n if (axis === 'left' && value > lastLeft) {\n element.dispatchEvent(createDOMEvent('ps-scroll-right'));\n }\n\n if (axis === 'top') {\n element.scrollTop = lastTop = value;\n element.dispatchEvent(createDOMEvent('ps-scroll-y'));\n }\n\n if (axis === 'left') {\n element.scrollLeft = lastLeft = value;\n element.dispatchEvent(createDOMEvent('ps-scroll-x'));\n }\n\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/update-scroll.js\n// module id = 157\n// module chunks = 16","/**\r\n * @typedef {String} DomID\r\n */\r\n\r\nexport const IDENTIFIERS = {\r\n\tNAVIGATION : {\r\n\t\t/**\r\n\t\t * @type {DomID}\r\n\t\t */\r\n\t\tROOT : '#main-navigation',\r\n\t\tUL : '#main-navigation ul:first'\r\n\t},\r\n\tOFF_SCREEN : {\r\n\t\t/**\r\n\t\t * @type {DomID}\r\n\t\t */\r\n\t\tROOT : '#off-screen-wrap',\r\n\t\tCONTENT : '#off-screen-content',\r\n\t\tAPP_DRAWER : '#off-screen-app-drawer',\r\n\t\tCART : '#off-screen-cart',\r\n\t\tNAVIGATION : '#off-screen-navigation',\r\n\t\tOVERLAY : '#off-screen-overlay',\r\n\t\tWRAP : '#off-screen-wrap'\r\n\t},\r\n\tQUICK_NAVIGATION : {\r\n\t\t/**\r\n\t\t * @type {DomID}\r\n\t\t */\r\n\t\tROOT : '#quick-navigation'\r\n\t},\r\n\tTARGET_GROUP_SELECT : {\r\n\t\t/**\r\n\t\t * @type {DomID}\r\n\t\t */\r\n\t\tROOT : '#target-group-select'\r\n\t},\r\n\tMAIN_HEADER : {\r\n\t\t/**\r\n\t\t * @type {DomID}\r\n\t\t */\r\n\t\tROOT : '#main-header'\r\n\t},\r\n\tFOOTER : {\r\n\t\t/**\r\n\t\t * @type {DomID}\r\n\t\t */\r\n\t\tROOT : '#main-footer'\r\n\t},\r\n\tHEADER : {\r\n\t\t/**\r\n\t\t * @type {DomID}\r\n\t\t */\r\n\t\tROOT : '#main-header, #target-group-select'\r\n\t},\r\n\tCOOKIE_DISCLAIMER : {\r\n\t\t/**\r\n\t\t * @type {DomID}\r\n\t\t */\r\n\t\tROOT : '#cookie-disclaimer'\r\n\t},\r\n\tMETA_NAVIGATION : {\r\n\t\t/**\r\n\t\t * @type {DomID}\r\n\t\t */\r\n\t\tROOT : '[data-tpl=\"meta-navigation\"]'\r\n\t}\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/framework/constants/Identifiers.const.js","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/_object-sap.js\n// module id = 160\n// module chunks = 16 19","module.exports = { \"default\": require(\"core-js/library/fn/weak-map\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/weak-map.js\n// module id = 161\n// module chunks = 16 19","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/_object-assign.js\n// module id = 200\n// module chunks = 16 19 21","\"use strict\";\nvar map_1 = require('../operators/map');\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * <img src=\"./img/map.png\" width=\"100%\">\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * @example <caption>Map every click to the clientX position of that click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks.map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable<R>} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nfunction map(project, thisArg) {\n return map_1.map(project, thisArg)(this);\n}\nexports.map = map;\n//# sourceMappingURL=map.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operator/map.js\n// module id = 201\n// module chunks = 16 19","\"use strict\";\nfunction isFunction(x) {\n return typeof x === 'function';\n}\nexports.isFunction = isFunction;\n//# sourceMappingURL=isFunction.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/isFunction.js\n// module id = 202\n// module chunks = 16 19","\"use strict\";\n// typeof any so that it we don't have to cast when comparing a result to the error object\nexports.errorObject = { e: {} };\n//# sourceMappingURL=errorObject.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/errorObject.js\n// module id = 203\n// module chunks = 16 19","'use strict';\n\nvar DOM = {};\n\nDOM.e = function (tagName, className) {\n var element = document.createElement(tagName);\n element.className = className;\n return element;\n};\n\nDOM.appendTo = function (child, parent) {\n parent.appendChild(child);\n return child;\n};\n\nfunction cssGet(element, styleName) {\n return window.getComputedStyle(element)[styleName];\n}\n\nfunction cssSet(element, styleName, styleValue) {\n if (typeof styleValue === 'number') {\n styleValue = styleValue.toString() + 'px';\n }\n element.style[styleName] = styleValue;\n return element;\n}\n\nfunction cssMultiSet(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val.toString() + 'px';\n }\n element.style[key] = val;\n }\n return element;\n}\n\nDOM.css = function (element, styleNameOrObject, styleValue) {\n if (typeof styleNameOrObject === 'object') {\n // multiple set with object\n return cssMultiSet(element, styleNameOrObject);\n } else {\n if (typeof styleValue === 'undefined') {\n return cssGet(element, styleNameOrObject);\n } else {\n return cssSet(element, styleNameOrObject, styleValue);\n }\n }\n};\n\nDOM.matches = function (element, query) {\n if (typeof element.matches !== 'undefined') {\n return element.matches(query);\n } else {\n if (typeof element.matchesSelector !== 'undefined') {\n return element.matchesSelector(query);\n } else if (typeof element.webkitMatchesSelector !== 'undefined') {\n return element.webkitMatchesSelector(query);\n } else if (typeof element.mozMatchesSelector !== 'undefined') {\n return element.mozMatchesSelector(query);\n } else if (typeof element.msMatchesSelector !== 'undefined') {\n return element.msMatchesSelector(query);\n }\n }\n};\n\nDOM.remove = function (element) {\n if (typeof element.remove !== 'undefined') {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n};\n\nDOM.queryChildren = function (element, selector) {\n return Array.prototype.filter.call(element.childNodes, function (child) {\n return DOM.matches(child, selector);\n });\n};\n\nmodule.exports = DOM;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/lib/dom.js\n// module id = 204\n// module chunks = 16","import LOGGER from 'frontend-logger';\n\nfunction getDebugLoggerEmpty () {\n\treturn {\n\t\twarn : () => {},\n\t\terror : () => {},\n\t\tinfo : () => {},\n\t\tlog : () => {}\n\t};\n}\n\nfunction getDebugLogger ( pref = '★', style = '', detailed = false ) {\n\tconst details = !detailed ? [] : [\n\t\t\t\t\t':',\n\t\t\t\t\tthis.constructor.name,\n\t\t\t\t\t'.',\n\t\t\t\t\tObject._uid( this )\n\t\t\t\t],\n\t\t\t\targs = [\n\t\t\t\t\tLOGGER,\n\t\t\t\t\t`%c ★ %c %c${pref}%c`,\n\t\t\t\t\tstyle,\n\t\t\t\t\t'',\n\t\t\t\t\t'font-weight: bold',\n\t\t\t\t\t'',\n\t\t\t\t\t...details\n\t\t\t\t];\n\n\treturn {\n\t\twarn : LOGGER.warn.bind( ...args ),\n\t\terror : LOGGER.error.bind( ...args ),\n\t\tinfo : LOGGER.info.bind( ...args ),\n\t\tlog : LOGGER.log.bind( ...args )\n\t};\n}\n\n/**\n * @interface for controller subclasses\n */\nexport default class DebugController {\n\n\tconstructor () {\n\t\tthis.debugStyle = 'color: #f59b00; background: #3c3732';\n\t\tthis.debug = false;\n\t}\n\n\tdebugLocal ( enable, pref = '★', style = '' ) {\n\t\treturn enable === true ? getDebugLogger.call( this, pref, style || this.debugStyle || '' ) : getDebugLoggerEmpty(); // eslint-disable-line no-constant-condition\n\t}\n\n\tset debug ( is ) {\n\t\tif ( is === true || typeof is === 'string' ) {\n\t\t\tif ( is === true ) {\n\t\t\t\tis = this.constructor.name; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\tthis.logger = getDebugLogger.call( this, is, this.debugStyle || '' );\n\t\t\tthis._debug = true;\n\t\t} else {\n\t\t\tthis.logger = getDebugLoggerEmpty( is );\n\t\t\tthis._debug = false;\n\t\t}\n\t}\n\n\tget debug () {\n\t\treturn this._debug;\n\t}\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./js/base/controller/Debug.controller.js","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/object/define-property.js\n// module id = 206\n// module chunks = 16 19","\"use strict\";\nvar isArray_1 = require('./util/isArray');\nvar isObject_1 = require('./util/isObject');\nvar isFunction_1 = require('./util/isFunction');\nvar tryCatch_1 = require('./util/tryCatch');\nvar errorObject_1 = require('./util/errorObject');\nvar UnsubscriptionError_1 = require('./util/UnsubscriptionError');\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nvar Subscription = (function () {\n /**\n * @param {function(): void} [unsubscribe] A function describing how to\n * perform the disposal of resources when the `unsubscribe` method is called.\n */\n function Subscription(unsubscribe) {\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n * @type {boolean}\n */\n this.closed = false;\n this._parent = null;\n this._parents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n Subscription.prototype.unsubscribe = function () {\n var hasErrors = false;\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parent = _a._parent, _parents = _a._parents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parent = null;\n this._parents = null;\n // null out _subscriptions first so any child subscriptions that attempt\n // to remove themselves from this subscription will noop\n this._subscriptions = null;\n var index = -1;\n var len = _parents ? _parents.length : 0;\n // if this._parent is null, then so is this._parents, and we\n // don't have to remove ourselves from any parent subscriptions.\n while (_parent) {\n _parent.remove(this);\n // if this._parents is null or index >= len,\n // then _parent is set to null, and the loop exits\n _parent = ++index < len && _parents[index] || null;\n }\n if (isFunction_1.isFunction(_unsubscribe)) {\n var trial = tryCatch_1.tryCatch(_unsubscribe).call(this);\n if (trial === errorObject_1.errorObject) {\n hasErrors = true;\n errors = errors || (errorObject_1.errorObject.e instanceof UnsubscriptionError_1.UnsubscriptionError ?\n flattenUnsubscriptionErrors(errorObject_1.errorObject.e.errors) : [errorObject_1.errorObject.e]);\n }\n }\n if (isArray_1.isArray(_subscriptions)) {\n index = -1;\n len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject_1.isObject(sub)) {\n var trial = tryCatch_1.tryCatch(sub.unsubscribe).call(sub);\n if (trial === errorObject_1.errorObject) {\n hasErrors = true;\n errors = errors || [];\n var err = errorObject_1.errorObject.e;\n if (err instanceof UnsubscriptionError_1.UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n }\n if (hasErrors) {\n throw new UnsubscriptionError_1.UnsubscriptionError(errors);\n }\n };\n /**\n * Adds a tear down to be called during the unsubscribe() of this\n * Subscription.\n *\n * If the tear down being added is a subscription that is already\n * unsubscribed, is the same reference `add` is being called on, or is\n * `Subscription.EMPTY`, it will not be added.\n *\n * If this subscription is already in an `closed` state, the passed\n * tear down logic will be executed immediately.\n *\n * @param {TeardownLogic} teardown The additional logic to execute on\n * teardown.\n * @return {Subscription} Returns the Subscription used or created to be\n * added to the inner subscriptions list. This Subscription can be used with\n * `remove()` to remove the passed teardown logic from the inner subscriptions\n * list.\n */\n Subscription.prototype.add = function (teardown) {\n if (!teardown || (teardown === Subscription.EMPTY)) {\n return Subscription.EMPTY;\n }\n if (teardown === this) {\n return this;\n }\n var subscription = teardown;\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (typeof subscription._addParent !== 'function' /* quack quack */) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default:\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n var subscriptions = this._subscriptions || (this._subscriptions = []);\n subscriptions.push(subscription);\n subscription._addParent(this);\n return subscription;\n };\n /**\n * Removes a Subscription from the internal list of subscriptions that will\n * unsubscribe during the unsubscribe process of this Subscription.\n * @param {Subscription} subscription The subscription to remove.\n * @return {void}\n */\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.prototype._addParent = function (parent) {\n var _a = this, _parent = _a._parent, _parents = _a._parents;\n if (!_parent || _parent === parent) {\n // If we don't have a parent, or the new parent is the same as the\n // current parent, then set this._parent to the new parent.\n this._parent = parent;\n }\n else if (!_parents) {\n // If there's already one parent, but not multiple, allocate an Array to\n // store the rest of the parent Subscriptions.\n this._parents = [parent];\n }\n else if (_parents.indexOf(parent) === -1) {\n // Only add the new parent to the _parents list if it's not already there.\n _parents.push(parent);\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexports.Subscription = Subscription;\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError_1.UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/Subscription.js\n// module id = 207\n// module chunks = 16 19","\"use strict\";\nvar FromEventObservable_1 = require('./FromEventObservable');\nexports.fromEvent = FromEventObservable_1.FromEventObservable.create;\n//# sourceMappingURL=fromEvent.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/fromEvent.js\n// module id = 208\n// module chunks = 16 19","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/get-iterator.js\n// module id = 209\n// module chunks = 16 19","const STATES = {\n\t\t\t\topen : Symbol( 'open' ),\n\t\t\t\tclosed : Symbol( 'closed' ),\n\n\t\t\t\tenabled : Symbol( 'enabled' ),\n\t\t\t\tdisabled : Symbol( 'disabled' ),\n\n\t\t\t\tfixed : Symbol( 'fixed' ),\n\t\t\t\treleased : Symbol( 'released' ),\n\t\t\t\t\n\t\t\t\tscrollable : Symbol( 'scrollable' ),\n\t\t\t\tanimating : Symbol( 'animating' ),\n\n\t\t\t\tvisible : Symbol( 'visible' ),\n\t\t\t\thidden : Symbol( 'hidden' ),\n\n\t\t\t\tloading : Symbol( 'laoding' ),\n\t\t\t\tloaded : Symbol( 'loaded' ),\n\n\t\t\t\thandshaked : Symbol( 'handshaked' ),\n\n\t\t\t\tinViewport : Symbol( 'inViewport' ),\n\t\t\t\toutViewport : Symbol( 'outViewport' ),\n\n\t\t\t\tdestroyed : Symbol( 'destroyed' ),\n\t\t\t\tinitialized : Symbol( 'initialized')\n\t\t\t},\n\n\t\t\tStatesContrary = {\n\t\t\t\topen : 'closed',\n\t\t\t\tenabled : 'disabled',\n\t\t\t\tfixed : 'released',\n\t\t\t\tvisible : 'hidden',\n\t\t\t\tloading : 'loaded',\n\t\t\t\tinViewport : 'outViewport',\n\t\t\t\tdestroyed : 'initialized'\n\t\t\t},\n\t\t\t\n\t\t\tStatesAll = [];\n\nfor ( const key of Object.keys( STATES ) ) {\n\tStatesAll.push( STATES[ key ] );\n}\n\nexport default STATES;\nexport { StatesAll, StatesContrary };\n\n\n\n// WEBPACK FOOTER //\n// ./js/base/constants/States.const.js","\"use strict\";\nvar errorObject_1 = require('./errorObject');\nvar tryCatchTarget;\nfunction tryCatcher() {\n try {\n return tryCatchTarget.apply(this, arguments);\n }\n catch (e) {\n errorObject_1.errorObject.e = e;\n return errorObject_1.errorObject;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\nexports.tryCatch = tryCatch;\n;\n//# sourceMappingURL=tryCatch.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/tryCatch.js\n// module id = 264\n// module chunks = 16 19","\"use strict\";\nexports.empty = {\n closed: true,\n next: function (value) { },\n error: function (err) { throw err; },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/Observer.js\n// module id = 265\n// module chunks = 16 19","\"use strict\";\nvar root_1 = require('../util/root');\nvar Symbol = root_1.root.Symbol;\nexports.rxSubscriber = (typeof Symbol === 'function' && typeof Symbol.for === 'function') ?\n Symbol.for('rxSubscriber') : '@@rxSubscriber';\n/**\n * @deprecated use rxSubscriber instead\n */\nexports.$$rxSubscriber = exports.rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/symbol/rxSubscriber.js\n// module id = 266\n// module chunks = 16 19","\"use strict\";\nvar root_1 = require('../util/root');\nfunction getSymbolObservable(context) {\n var $$observable;\n var Symbol = context.Symbol;\n if (typeof Symbol === 'function') {\n if (Symbol.observable) {\n $$observable = Symbol.observable;\n }\n else {\n $$observable = Symbol('observable');\n Symbol.observable = $$observable;\n }\n }\n else {\n $$observable = '@@observable';\n }\n return $$observable;\n}\nexports.getSymbolObservable = getSymbolObservable;\nexports.observable = getSymbolObservable(root_1.root);\n/**\n * @deprecated use observable instead\n */\nexports.$$observable = exports.observable;\n//# sourceMappingURL=observable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/symbol/observable.js\n// module id = 267\n// module chunks = 16 19","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/object/assign.js\n// module id = 268\n// module chunks = 16 19 21","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es6.object.assign.js\n// module id = 269\n// module chunks = 16 19 21","export const IDENTIFIER = 'modal';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/modal/constants/Identifiers.const.js","\nexport const IDENTIFIERS = {\n\tACC : {\n\t\tROOT : '[data-tpl*=acc], [data-tpl=er01]',\n\t\tPARENTS : '[data-tpl=\"blanko\"], [data-tpl=\"blanko-overview\"], [data-tpl=\"detail-one-marginal-column\"], [data-tpl=\"detail-two-marginal-column\"], [data-tpl=\"detail-two-flex-marginal-column\"], [data-tpl=\"detail-two-important-marginal-column\"], [data-tpl=\"detail-two-flex-marginal-column-lg\"], [data-tpl=\"detail-two-important-marginal-column-lg\"], [data-tpl=\"uikit-preview-frame\"], [data-tpl=\"order-process-form-01\"], [data-tpl=\"pfc02\"]'\n\t},\n\tLAS01 : {\n\t\tROOT : '[data-tpl*=las01]'\n\t},\n\tIFRAME : {\n\t\tROOT : '[data-tpl=iframe]'\n\t},\n\tTIC01 : {\n\t\tROOT : '[data-tpl=tic01], [data-tpl=tic03]'\n\t},\n\tSES01 : {\n\t\tROOT : '[data-tpl=ses01]',\n\t\tEXTENDED : '[data-tpl=ses01].ses01--extended',\n\t\tQUICK_LINKS : '[data-tpl=ses01].ses01--has-quick-links'\n\t},\n\tSRC01 : {\n\t\tROOT : '[data-tpl=src01]',\n\t\tSRT01 : '[data-tpl=srt01], [data-tpl=srt01r]',\n\t\tSRT02 : '[data-tpl=srt02]',\n\t\tSRT01_LIST_MODIFIER : 'srt01--list-view',\n\t\tLIST_MODIFIER : 'src01--list-view'\n\t},\n\tSVG : {\n\t\tROOT : '[data-tpl=svg]'\n\t},\n\tTOOLTIP : {\n\t\tROOT : '[data-tpl=tooltip]',\n\t\tTRIGGER : '.tooltip-trigger',\n\t\tCONTENT : '.tooltip-content',\n\t\tCONTAINER : '.tooltip-container',\n\t\tCLOSE : '.tooltip-close'\n\t},\n\tPFC02 : {\n\t\tROOT : '[data-tpl=pfc02]'\n\t},\n\tLAYOUT : {\n\t\tROOT : '[data-tpl=detail-two-important-marginal-column], [data-tpl=detail-two-flex-marginal-column], [data-tpl=\"detail-two-flex-marginal-column-lg\"], [data-tpl=\"detail-two-important-marginal-column-lg\"]'\n\t},\n\t// INLINE_EDITING : {\n\t// \tROOT : '[data-tpl=\"inline-editing\"]'\n\t// },\n\tTSS01 : {\n\t\tROOT : '[data-tss01-enabled=\"true\"]'\n\t},\n\tIEB : {\n\t\tROOT : '[data-tpl=\"iebc01\"]'\n\t},\n\t// SNOWFALL : {\n\t// \t// ROOT : '[data-tpl*=\"tea\"]',\n\t// \tSTA01 : '[data-tpl=\"sta01\"]',\n\t// \tSTA02 : '[data-tpl=\"sta02\"]',\n\t// \tSTA03 : '[data-tpl=\"sta03\"]',\n\t// \tTEAS : '[data-tpl*=\"grid-mag\"] [data-tpl*=\"tea\"][class*=\"color-teaser\"]',\n\t// \tBAS01 : '[data-tpl*=\"grid-bas-01\"][class*=\"color-background\"]'\n\t// }\n\tEXPERIENCE_MODULES : {\n\t\tSMXP01 : '[data-tpl=smxp01]',\n\t\tSMXP02 : '[data-tpl=smxp02]',\n\t\tSMXP03 : '[data-tpl=smxp03]',\n\t\tSMXP04 : '[data-tpl=smxp04]'\n\t},\n\n\tJFC01 : {\n\t\tROOT : '[data-tpl=jfc01]'\n\t},\n\n\tSRF01 : {\n\t\tROOT : '[data-tpl=srf01]'\n\t},\n\n\tPCC01 : {\n\t\tROOT : '[data-tpl=pcc01]',\n\t\tTOOLTIP : '[data-tpl=pcc01] [data-tpl=tooltip]'\n\t},\n\n\tPC01 : {\n\t\tROOT : '[data-tpl=pc01]'\n\t}\n};\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/constants/Identifiers.const.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/build/node_modules/events/events.js\n// module id = 272\n// module chunks = 16 19","\"use strict\";\nexports.isArray = Array.isArray || (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArray.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/isArray.js\n// module id = 276\n// module chunks = 16 19","\"use strict\";\nfunction isObject(x) {\n return x != null && typeof x === 'object';\n}\nexports.isObject = isObject;\n//# sourceMappingURL=isObject.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/isObject.js\n// module id = 277\n// module chunks = 16 19","const prefixes = [ '', 'webkit', 'moz', 'MS', 'o' ],\r\n\t\t\tfakeEl = document.createElement( 'fakeelement' );\r\n\r\nlet determinedPrefix = false;\r\n\r\nfunction determinePrefixToUse () {\r\n\tif ( determinedPrefix !== false ) {\r\n\t\treturn determinedPrefix;\r\n\t}\r\n\tfor ( let i = 0; i < prefixes.length; i++ ) {\r\n\t\tconst propToTest = 'Transition',\r\n\t\t\t\t\tstyleToTest = prefixes[ i ] + ( !prefixes[ i ] ? propToTest.toLowerCase() : propToTest );\r\n\t\t\r\n\t\tif ( fakeEl.style[ styleToTest ] !== 'undefined' ) {\r\n\t\t\tdeterminedPrefix = prefixes[ i ];\r\n\t\t\treturn determinedPrefix;\r\n\t\t}\r\n\t}\r\n\treturn '';\r\n}\r\n\r\n/**\r\n * Class providing event helper functions\r\n * Is used as a singleton.\r\n */\r\nclass EventHelper {\r\n\t/**\r\n\t * Initialises the controller singleton.\r\n\t * Has to be called after ready event.\r\n\t * @public\r\n\t * @returns { void }\r\n\t */\r\n\tinit () {\r\n\t}\r\n\r\n\t/**\r\n\t * Appends browser prefixes to a given event name\r\n\t * and adds an eventListener to the given elements\r\n\t * @param { jQuery } $el - jQuery wrapped DOM element\r\n\t * @param { string } type - event name\r\n\t * @param { function } callback - callback function\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tstatic addPrefixedEvent ( $el, type, callback ) {\r\n\t\tconst prefix = determinePrefixToUse();\r\n\t\t\r\n\t\t$el.on( prefix + ( !prefix ? type.toLowerCase() : type ), callback );\r\n\t}\r\n\r\n\t/**\r\n\t * Appends browser prefixes to a given event name and adds\r\n\t * an eventListener to the given elements to run once\r\n\t * @param { jQuery } $el - jQuery wrapped DOM element\r\n\t * @param { string } type - event name\r\n\t * @param { function } callback - callback function\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tstatic addPrefixedEventOnce ( $el, type, callback ) {\r\n\t\tconst prefix = determinePrefixToUse();\r\n\r\n\t\t$el.one( prefix + ( !prefix ? type.toLowerCase() : type ), callback );\r\n\t}\r\n\r\n\t/**\r\n\t * Removes a browser prefixed event\r\n\t * @param { object } $el - jQuery wrapped DOM element\r\n\t * @param { string } type - event name\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tstatic removePrefixedEvent ( $el, type ) {\r\n\t\tconst prefix = determinePrefixToUse();\r\n\t\t// for ( let i = 0; i < prefixes.length; i++ ) {\r\n\t\t\t$el.off( prefix + ( !prefix ? type.toLowerCase() : type ) );\r\n\t\t// }\r\n\t}\r\n}\r\n\r\nexport default EventHelper;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/services/EventHelper.service.js","import Signal from 'signal';\n\n/**\n * Check if event is setup in stack\n *\n * @param {String} event Event name\n * @return {Boolean} true | false\n */\nfunction has ( event ) {\n\treturn this._signals[ event ] instanceof Signal;\n}\n\n/**\n * Sets up a new empty stack for the event\n *\n * @param {String} event Event name\n * @return {void}\n */\nfunction setup ( event ) {\n\tif ( !has.call( this, event ) ) {\n\t\tthis._signals[ event ] = new Signal();\n\t}\n}\n\n/**\n * Adds a function to the event stack\n *\n * @param {String} event Event name\n * @param {Function} fn Callback function to call on event happening\n * @param {Boolean} isOnce Should be called once or should persist in stream\n * @return {SignalListener} Returns the bound SignalListener\n */\nfunction add ( event, fn, isOnce = false ) {\n\tsetup.call( this, event );\n\t\n\tconst theFN = this._signals[ event ].add( fn, '_', isOnce );\n\n\ttheFN.dispose = () => {\n\t\tthis._signals[ event ]._listener.splice( this._signals[ event ]._listener.indexOf( theFN ), 1 );\n\t};\n\n\treturn theFN;\n}\n\n/**\n * Remove the event stack from stream\n * @param {String} event Event name\n * @return {void}\n */\nfunction remove ( event ) {\n\tif ( has.call( this, event ) ) {\n\t\tthis._signals[ event ].clear();\n\t\tdelete this._signals[ event ];\n\t}\n}\n\n/**\n * Runs the given stack functions on event happening\n *\n * @param {String} event Event name\n * @param {Object} data Event data passed by the triggering caller\n * @return {void}\n */\nfunction dispatch ( event, ...data ) {\n\tif ( has.call( this, event ) ) {\n\t\tthis._signals[ event ].dispatch( '_', ...data );\n\t}\n}\n\nclass SignalSingleton {\n\n\tconstructor () {\n\t\tthis._signals = {};\n\t}\n\n\tsubscribe ( event, fn, isOnce ) {\n\t\treturn add.call( this, event, fn, isOnce );\n\t}\n\n\tdispose ( event ) {\n\t\tremove.call( this, event );\n\t}\n\n\temit ( event, ...data ) {\n\t\tdispatch.call( this, event, ...data );\n\t}\n\n}\n\nconst instance = new SignalSingleton();\n\nexport default instance;\n\n\n\n// WEBPACK FOOTER //\n// ./js/helper/SignalWrapper.js","import TransitionEventController from './../../../base/controller/TransitionEvent.controller';\nimport Device, { ScrollService as ScrollService } from 'device';\nimport { IDENTIFIERS } from './../../constants/Identifiers.const';\nimport bucket from './../../../services/Bucket.service';\n\nimport scrollbar from 'perfect-scrollbar';\nimport fasterdom from 'fasterdom';\nimport $ from 'jquery';\n\n/**\n *\n * @param scrollPos\n */\nfunction setTopPosition ( scrollPos ) {\n\tconst y = this.$metaNav.outerHeight() - scrollPos.y;\n\n\tthis.$scope.css( {\n\t\t position : 'fixed',\n\t\t top : y < 0 ?\n\t\t 0 :\n\t\t y + 'px'\n\t } );\n}\n\n/**\n * Add the event handlers\n *\n * @returns {void}\n */\nfunction addHandler () {\n\tconst self = this,\n\t slaveContainer = self.$mainHeader.add( '#off-screen-wrap' );\n\n\tself.beforeOpen( () => {\n\n\t\tScrollService.getCurrent().then( ( scrollPos ) => {\n\t\t\tsetTopPosition.call( self, scrollPos );\n\t\t} );\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tslaveContainer.addClass( 'osn--during-animation osn--during-animation--open' );\n\t\t} );\n\t} );\n\n\tself.afterOpen( () => {\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tslaveContainer.removeClass( 'osn--during-animation osn--during-animation--open' );\n\t\t} );\n\t} );\n\n\tself.beforeClose( () => {\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tslaveContainer.addClass( 'osn--during-animation osn--during-animation--close' );\n\t\t} );\n\t} );\n\n\tself.afterClose( () => {\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tslaveContainer.removeClass( 'osn--during-animation osn--during-animation--close' );\n\t\t} );\n\t} );\n\n\tDevice.scrollEvent.subscribe( ( scrollPos ) => {\n\t\tsetTopPosition.call( self, scrollPos );\n\t} );\n\n\tDevice.resizeEvent.subscribe( () => {\n\t\tScrollService.getCurrent().then( ( scrollPos ) => {\n\t\t\tsetTopPosition.call( self, scrollPos );\n\t\t} );\n\t} );\n}\n\n/**\n * Class handling the state of off-screen-navigation container.\n * Controls the state of the container\n * @extends { TransitionEventController }\n */\nclass OffScreenNavigationController extends TransitionEventController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.$scope = null;\n\t\tthis.$mainNav = null;\n\t\tthis._canScroll = false;\n\t\tthis._childOpening = false;\n\t}\n\n\tset canScroll ( is ) {\n\t\tthis._canScroll = is === true;\n\t}\n\n\tget canScroll () {\n\t\treturn this._canScroll;\n\t}\n\n\tset isChildOpening ( is ) {\n\t\tthis._childOpening = is === true;\n\t}\n\n\tget isChildOpening () {\n\t\treturn this._childOpening;\n\t}\n\n\t/**\n\t * Initialises the controller singleton.\n\t * Has to be called after ready event.\n\t *\n\t * @param { object } $root - jQuery wrapped DOM node\n\t * @public\n\t * @returns {void}\n\t */\n\tinit ( $root ) {\n\t\tconst self = this;\n\n\t\tsuper.init( $root );\n\n\t\tself.$scope = $root;\n\t\tself.$mainHeader = $( IDENTIFIERS.MAIN_HEADER.ROOT );\n\t\tself.$mainNav = $( IDENTIFIERS.NAVIGATION.ROOT );\n\t\tself.$metaNav = $( IDENTIFIERS.META_NAVIGATION.ROOT );\n\n\t\tthis.initialOpen = this.$scope.hasClass( 'initial-open' );\n\n\t\tif ( self.$mainNav && self.$mainNav.length > 0 ) {\n\t\t\t\n\t\t\tscrollbar.initialize( self.$mainNav.get( 0 ), {\n\t\t\t\tswipePropagation : false,\n\t\t\t\tsuppressScrollX : true,\n\t\t\t\tminScrollbarLength : 20\n\t\t\t} );\n\t\t}\n\n\t\tself.setTransition( 'transform' );\n\n\t\taddHandler.call( self );\n\n\t\tbucket.controller.framework.offscreenNavigation = this;\n\t}\n\n\ttest () {\n\t\tsetTopPosition.call( this, 0 );\n\t}\n}\n\n/**\n * @private\n * @type { OffScreenNavigationController }\n */\nconst instance = new OffScreenNavigationController();\n\nexport default instance;\n\n\n\n// WEBPACK FOOTER //\n// ./js/framework/controller/offscreen/OffscreenNavigation.controller.js","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\nvar ScalarObservable_1 = require('./ScalarObservable');\nvar EmptyObservable_1 = require('./EmptyObservable');\nvar isScheduler_1 = require('../util/isScheduler');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ArrayObservable = (function (_super) {\n __extends(ArrayObservable, _super);\n function ArrayObservable(array, scheduler) {\n _super.call(this);\n this.array = array;\n this.scheduler = scheduler;\n if (!scheduler && array.length === 1) {\n this._isScalar = true;\n this.value = array[0];\n }\n }\n ArrayObservable.create = function (array, scheduler) {\n return new ArrayObservable(array, scheduler);\n };\n /**\n * Creates an Observable that emits some values you specify as arguments,\n * immediately one after the other, and then emits a complete notification.\n *\n * <span class=\"informal\">Emits the arguments you provide, then completes.\n * </span>\n *\n * <img src=\"./img/of.png\" width=\"100%\">\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the arguments given, and the complete notification thereafter. It can\n * be used for composing with other Observables, such as with {@link concat}.\n * By default, it uses a `null` IScheduler, which means the `next`\n * notifications are sent synchronously, although with a different IScheduler\n * it is possible to determine when those notifications will be delivered.\n *\n * @example <caption>Emit 10, 20, 30, then 'a', 'b', 'c', then start ticking every second.</caption>\n * var numbers = Rx.Observable.of(10, 20, 30);\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var interval = Rx.Observable.interval(1000);\n * var result = numbers.concat(letters).concat(interval);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link create}\n * @see {@link empty}\n * @see {@link never}\n * @see {@link throw}\n *\n * @param {...T} values Arguments that represent `next` values to be emitted.\n * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable<T>} An Observable that emits each given input value.\n * @static true\n * @name of\n * @owner Observable\n */\n ArrayObservable.of = function () {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i - 0] = arguments[_i];\n }\n var scheduler = array[array.length - 1];\n if (isScheduler_1.isScheduler(scheduler)) {\n array.pop();\n }\n else {\n scheduler = null;\n }\n var len = array.length;\n if (len > 1) {\n return new ArrayObservable(array, scheduler);\n }\n else if (len === 1) {\n return new ScalarObservable_1.ScalarObservable(array[0], scheduler);\n }\n else {\n return new EmptyObservable_1.EmptyObservable(scheduler);\n }\n };\n ArrayObservable.dispatch = function (state) {\n var array = state.array, index = state.index, count = state.count, subscriber = state.subscriber;\n if (index >= count) {\n subscriber.complete();\n return;\n }\n subscriber.next(array[index]);\n if (subscriber.closed) {\n return;\n }\n state.index = index + 1;\n this.schedule(state);\n };\n ArrayObservable.prototype._subscribe = function (subscriber) {\n var index = 0;\n var array = this.array;\n var count = array.length;\n var scheduler = this.scheduler;\n if (scheduler) {\n return scheduler.schedule(ArrayObservable.dispatch, 0, {\n array: array, index: index, count: count, subscriber: subscriber\n });\n }\n else {\n for (var i = 0; i < count && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n }\n };\n return ArrayObservable;\n}(Observable_1.Observable));\nexports.ArrayObservable = ArrayObservable;\n//# sourceMappingURL=ArrayObservable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/ArrayObservable.js\n// module id = 281\n// module chunks = 16","\"use strict\";\nfunction isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\nexports.isScheduler = isScheduler;\n//# sourceMappingURL=isScheduler.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/isScheduler.js\n// module id = 282\n// module chunks = 16","'use strict';\n\nfunction oldAdd(element, className) {\n var classes = element.className.split(' ');\n if (classes.indexOf(className) < 0) {\n classes.push(className);\n }\n element.className = classes.join(' ');\n}\n\nfunction oldRemove(element, className) {\n var classes = element.className.split(' ');\n var idx = classes.indexOf(className);\n if (idx >= 0) {\n classes.splice(idx, 1);\n }\n element.className = classes.join(' ');\n}\n\nexports.add = function (element, className) {\n if (element.classList) {\n element.classList.add(className);\n } else {\n oldAdd(element, className);\n }\n};\n\nexports.remove = function (element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else {\n oldRemove(element, className);\n }\n};\n\nexports.list = function (element) {\n if (element.classList) {\n return Array.prototype.slice.apply(element.classList);\n } else {\n return element.className.split(' ');\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/lib/class.js\n// module id = 283\n// module chunks = 16","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/json/stringify.js\n// module id = 284\n// module chunks = 16 19","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js\n// module id = 285\n// module chunks = 16 19","import AbstractController from './Abstract.controller';\n\nimport { EventEmitter } from 'events';\n\n/**\n * (private) collection of eventEmitters with each isntance\n * @type {WeakMap}\n */\nconst _eventEmitter = new WeakMap();\n\nclass EventEmitterAbstractController extends AbstractController {\n\n\tconstructor () {\n\t\tconst DEBUG = true;\n\n\t\tsuper();\n\n\t\t// change according for debugging to true\n\t\tthis._eeLogger = this.debugLocal( DEBUG, '♧ Local Event ♧︎' );\n\n\t\t_eventEmitter.set( this, new EventEmitter() );\n\t}\n\n\tinit ( $scope ) {\n\t\tif ( super.init ) {\n\t\t\tsuper.init( $scope );\n\t\t}\n\t}\n\n\temit ( event, data, caller = this ) {\n\t\tthis._eeLogger.log( 'Emitted ', event, this.constructor.name, caller.constructor.name );\n\t\t_eventEmitter.get( this ).emit( event, data, caller );\n\t}\n\n\tsubscribe ( event, fn ) {\n\t\tthis._eeLogger.log( 'Subscribed to ', event, this.constructor.name );\n\t\t_eventEmitter.get( this ).on( event, fn );\n\t}\n\n\tsubscribeOnce ( event, fn ) {\n\t\tthis._eeLogger.log( 'Subscribed Once to ', event, this.constructor.name );\n\t\t_eventEmitter.get( this ).once( event, fn );\n\t}\n\n\tsubscribePre ( event, fn ) {\n\t\tthis._eeLogger.log( 'Subscribed Prepend to ', event, this.constructor.name );\n\t\t_eventEmitter.get( this ).prependListener( event, fn );\n\t}\n\n\tsubscribePreOnce ( event, fn ) {\n\t\tthis._eeLogger.log( 'Subscribed Prepend Once to ', event, this.constructor.name );\n\t\t_eventEmitter.get( this ).prependOnceListener( event, fn );\n\t}\n\n}\n\nexport default EventEmitterAbstractController;\n\n\n\n// WEBPACK FOOTER //\n// ./js/base/controller/EventEmitterAbstract.controller.js","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-names\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/object/get-own-property-names.js\n// module id = 289\n// module chunks = 16 19","module.exports = { \"default\": require(\"core-js/library/fn/object/define-properties\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/core-js/object/define-properties.js\n// module id = 290\n// module chunks = 16 19","import AbstractController from './../base/controller/Abstract.controller';\nimport EventHelper from './../services/EventHelper.service';\nimport { toJQuery } from './global.helper';\n/**\n * Creates a TransitionEnd Handler as a promise for to use in chains\n * @param {jQuery} $transitionElement The element on which to listen for transition end event\n * @param {Array} transitions The transition properties to listen for\n * @return {Promise} Resolves, when transition end event is fired for element and transitions\n */\nfunction createTransitionEndPromise ( $transitionElement, transitions ) {\n\tthis.logger.info( 'Create Transition End Handler as Promise' );\n\n\treturn new Promise( ( resolve, reject ) => {\n\n\t\tEventHelper.addPrefixedEvent( $transitionElement, 'TransitionEnd', ( e ) => {\n\n\t\t\tthis.logger.info( 'After transition end', transitions, e.originalEvent.propertyName );\n\n\t\t\tif ( $transitionElement[ 0 ] === e.target &&\n\t\t\t\t\ttransitions.indexOf( e.originalEvent.propertyName ) >= 0 ) {\n\n\t\t\t\tthis.logger.log( 'Transition End Promise Resolved' );\n\n\t\t\t\tEventHelper.removePrefixedEvent( $transitionElement, 'TransitionEnd' );\n\t\t\t\tresolve( {\n\t\t\t\t\telement : $transitionElement,\n\t\t\t\t\tevent : e.originalEvent.propertyName\n\t\t\t\t} );\n\t\t\t} else if ( !e.target ) {\n\t\t\t\tthis.logger.warn( 'Transition End Promise was rejected because of no target' );\n\t\t\t} else {\n\t\t\t\tthis.logger.warn( 'Transition End Promise was not fullfilled' );\n\t\t\t}\n\n\t\t} );\n\n\t} );\n\n}\n\nclass TransitionEndPromiseHelper extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.debugStyle = 'background: #397F13; color: black';\n\t\tthis.debug = false;\n\t}\n\n\tcreate ( $transitionElement, transitions ) {\n\t\treturn createTransitionEndPromise.call( this, toJQuery( $transitionElement ), transitions );\n\t}\n\n}\n\nconst instance = new TransitionEndPromiseHelper();\n\nexport default instance;\n\n\n\n// WEBPACK FOOTER //\n// ./js/helper/TransitionEndPromise.helper.js","/**\r\n * Check if given object is a DOM-Node-Element\r\n *\r\n * @param {!Object} o - Object to check\r\n * @return {Boolean} true if valid DOM-Node\r\n */\r\nconst isHTMLNode = ( o ) => typeof Node === 'function' ?\r\n\t\t// no IE browser\r\n\t\t o instanceof Node :\r\n\t\t// IE browser\r\n\t\t o &&\r\n ( typeof o === 'object' || typeof o === 'function' ) &&\r\n typeof o.nodeType === 'number' &&\r\n typeof o.nodeName === 'string';\r\n\r\n/**\r\n * Check if given object is a DOM-HTML-Element\r\n *\r\n * @param {!Object} o - Object to check\r\n * @return {Boolean} true if valid DOM-Element\r\n */\r\nconst isHTMLElement = ( o ) => typeof HTMLElement === 'function' ?\r\n\t\t// no IE browser\r\n\t\t o instanceof HTMLElement :\r\n\t\t// IE browser\r\n\t\t o &&\r\n ( typeof o === 'object' || typeof o === 'function' ) &&\r\n o !== null &&\r\n o.nodeType === 1 &&\r\n typeof o.nodeName === 'string';\r\n\r\n/**\r\n * Check if given object is a jQuery instance / object\r\n *\r\n * @param {object} o - Object to check\r\n * @return {boolean} - true if valid jQuery wrapped DOM-Element\r\n */\r\nconst isjQueryElement = ( o ) => o && typeof o.constructor.prototype.jquery !== 'undefined'\r\n// typeof jQuery !== 'undefined' && object instanceof jQuery\r\n\r\nexport {\r\n\tisHTMLNode,\r\n\tisHTMLElement,\r\n\tisjQueryElement\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/helper/Element.helper.js","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/object/define-property.js\n// module id = 514\n// module chunks = 16 19","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es6.object.define-property.js\n// module id = 515\n// module chunks = 16 19","import DebugController from './Debug.controller';\n\nimport STATES, { StatesAll, StatesContrary } from './../constants/States.const';\n\nimport StatesAlias from './../../helper/StatesAlias.helper';\n\nimport Signal from 'signal';\n\nimport invert from 'lodash.invert';\nimport values from 'lodash.values';\n\nconst allowed = new WeakMap(),\n\t\t\tcurrent = new WeakMap(),\n\t\t\t_onStateChange = new WeakMap();\n\nfunction triggerStateChange ( which, state ) {\n\tthis.logger.log( 'Trigger state change', which, state );\n\t_onStateChange.get( this ).dispatch( state, which, current.get( this ) );\n}\n\nclass StateController extends DebugController {\n\n\tconstructor ( ...allowedStates ) {\n\t\tsuper();\n\n\t\tthis.debugStyle = 'background: #3FFFF7; color: black';\n\t\tthis.debug = false;\n\n\t\tallowed.set( this, [] );\n\t\tcurrent.set( this, [] );\n\n\t\t_onStateChange.set( this, new Signal() );\n\n\t\tObject.getOwnPropertyNames( StatesAlias ).forEach( ( prop ) => {\n\t\t\t\tObject.defineProperty( this, prop, Object.getOwnPropertyDescriptor( StatesAlias, prop ) );\n\t\t} );\n\n\t\tif ( !Array.isArray( allowedStates ) || allowedStates.length <= 0 ) {\n\t\t\tallowedStates = values( STATES ); // eslint-disable-line no-param-reassign\n\t\t}\n\n\t\tthis.addAllowedMultiple( ...allowedStates );\n\n\t\t// this.state.setOpen();\n\t}\n\n// generic functions\n\n\tonStateChange ( fn, state = '_' ) {\n\t\tif ( typeof fn !== 'function' ) {\n\t\t\tthrow new Error( 'Need to pass a function as callback on state change!' );\n\t\t}\n\t\tthis.logger.log( 'Add callback for state change' );\n\t\t_onStateChange.get( this ).add( fn, state );\n\t}\n\n\taddAllowed ( state ) {\n\t\tthis.logger.log( 'Add allowed state', state );\n\t\tif ( StatesAll.includes( state ) && !allowed.get( this ).includes( state ) ) {\n\t\t\tallowed.get( this ).push( state );\n\t\t}\n\t}\n\n\taddAllowedMultiple ( ...states ) {\n\t\tthis.logger.log( 'Add multiple allowed states' );\n\t\tstates.forEach( this.addAllowed.bind( this ) );\n\t}\n\n\tremoveAllowed ( state ) {\n\t\tthis.logger.log( 'Remove allowed state', state );\n\t\tif ( StatesAll.includes( state ) && allowed.get( this ).includes( state ) ) {\n\t\t\tallowed.get( this ).splice( allowed.get( this ).indexOf( state ), 1 );\n\t\t}\n\t}\n\n\tsetState ( state ) {\n\t\tthis.logger.log( 'Set a current state', state );\n\t\tthis.logger.log( \"\\t\", 'Performing checks:', StatesAll.includes( state ), allowed.get( this ).includes( state ), !current.get( this ).includes( state ) );\n\t\tthis.logger.log( \"\\t\", 'Current contents:', \"\\n\", current.get( this ) );\n\t\tif ( StatesAll.includes( state ) && allowed.get( this ).includes( state ) && !current.get( this ).includes( state ) ) {\n\t\t\tthis.logger.log( \"\\t\", 'Can be added', state );\n\t\t\tconst stateContrary = Object.keys( STATES ).reduce( ( obj, key ) => {\n\t\t\t\tif ( STATES[ key ] === state ) {\n\t\t\t\t\tobj = key;\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}, false );\n\n\t\t\tif ( Object.keys( StatesContrary ).includes( stateContrary ) ) {\n\t\t\t\tthis.removeState( STATES[ StatesContrary[ stateContrary ] ] );\n\t\t\t} else if ( values( StatesContrary ).includes( stateContrary ) ) {\n\t\t\t\tthis.removeState( STATES[ invert( StatesContrary )[ stateContrary ] ] );\n\t\t\t}\n\t\t\tcurrent.get( this ).push( state );\n\t\t\ttriggerStateChange.call( this, state, 'add' );\n\t\t\tthis.logger.log( \"\\t\", 'Current contents after adding:', \"\\n\", current.get( this ) );\n\t\t\tthis.logger.log( \"\\t\", 'Added and triggered state change', state );\n\t\t}\n\t}\n\n\tsetStates ( ...states ) {\n\t\tthis.logger.log( 'Set current states' );\n\t\tstates.forEach( this.setState.bind( this ) );\n\t}\n\n\tremoveState ( state ) {\n\t\tthis.logger.log( 'Remove a state', state );\n\t\tif ( StatesAll.includes( state ) && current.get( this ).includes( state ) ) {\n\t\t\tcurrent.get( this ).splice( current.get( this ).indexOf( state ), 1 );\n\t\t\ttriggerStateChange.call( this, state, 'remove' );\n\t\t}\n\t}\n\n\thasState ( state ) {\n\t\tconst has = StatesAll.includes( state ) && current.get( this ).includes( state );\n\n\t\tthis.logger.log( 'Has a state', state, has );\n\t\treturn has;\n\t}\n\n}\n\nexport default StateController;\n\n\n\n// WEBPACK FOOTER //\n// ./js/base/controller/State.controller.js","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/object/keys.js\n// module id = 517\n// module chunks = 16 19","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es6.object.keys.js\n// module id = 518\n// module chunks = 16 19","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/object/get-own-property-descriptor.js\n// module id = 519\n// module chunks = 16 19","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js\n// module id = 520\n// module chunks = 16 19","require('../../modules/es6.object.get-own-property-names');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyNames(it) {\n return $Object.getOwnPropertyNames(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/object/get-own-property-names.js\n// module id = 521\n// module chunks = 16 19","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es6.object.get-own-property-names.js\n// module id = 522\n// module chunks = 16 19","require('../modules/es6.object.to-string');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es7.weak-map.of');\nrequire('../modules/es7.weak-map.from');\nmodule.exports = require('../modules/_core').WeakMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/weak-map.js\n// module id = 523\n// module chunks = 16 19","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es6.weak-map.js\n// module id = 524\n// module chunks = 16 19","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/_collection-weak.js\n// module id = 525\n// module chunks = 16 19","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\nrequire('./_set-collection-of')('WeakMap');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es7.weak-map.of.js\n// module id = 526\n// module chunks = 16 19","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\nrequire('./_set-collection-from')('WeakMap');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es7.weak-map.from.js\n// module id = 527\n// module chunks = 16 19","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/get-iterator.js\n// module id = 528\n// module chunks = 16 19","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/core.get-iterator.js\n// module id = 529\n// module chunks = 16 19","import STATES from './../base/constants/States.const';\n\nconst StatesAlias = {};\n\nfor ( const key of Object.keys( STATES ) ) {\n\tconst uckey = key.charAt( 0 ).toUpperCase() + key.slice( 1 ),\n\t\t\t\tkeyOpen = key.startsWith( 'can' ) ? key : 'is' + uckey,\n\t\t\t\topenFncs = {};\n\n\topenFncs[ keyOpen ] = {\n\t\tenumerable : true,\n\t\tget : function () { // eslint-disable-line func-names\n\t\t\treturn this.hasState( STATES[ key ] );\n\t\t},\n\t\tset : function ( is ) { // eslint-disable-line func-names\n\t\t\treturn is === true ? this.setState( STATES[ key ] ) : this.removeState( STATES[ key ] );\n\t\t}\n\t};\n\tObject.defineProperties( StatesAlias, openFncs );\n\n\tStatesAlias[ 'set' + uckey ] = function () { // eslint-disable-line func-names\n\t\tthis.setState( STATES[ key ] );\n\t};\n\tStatesAlias[ 'remove' + uckey ] = function () { // eslint-disable-line func-names\n\t\tthis.removeState( STATES[ key ] );\n\t};\n}\n\nexport default StatesAlias;\n\n\n\n// WEBPACK FOOTER //\n// ./js/helper/StatesAlias.helper.js","require('../../modules/es6.object.define-properties');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperties(T, D) {\n return $Object.defineProperties(T, D);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/object/define-properties.js\n// module id = 531\n// module chunks = 16 19","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/modules/es6.object.define-properties.js\n// module id = 532\n// module chunks = 16 19","\nclass SignalListener {\n\n\tconstructor ( fn, context, isOnce = false ) {\n\t\tthis.fn = fn;\n\t\tthis.context = context;\n\t\tthis.isOnce = isOnce;\n\t}\n\n\tisInContext ( ctxt ) {\n\t\treturn this.context === ctxt;\n\t}\n\n\texecute ( ...params ) {\n\t\tif ( typeof this.fn === 'function' ) {\n\t\t\treturn this.fn( ...params );\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n}\n\nclass SignalListenerPromised extends SignalListener {\n\n\tconstructor ( fn, context, isOnce = false ) {\n\t\tsuper( fn, context, isOnce );\n\n\t\tthis.promise = new Promise( ( resolve, reject ) => {\n\t\t\tthis.resolve = resolve;\n\t\t\tthis.reject = reject;\n\t\t} );\n\t}\n\n\texecute ( ...params ) {\n\t\tif ( typeof this.fn === 'function' ) {\n\t\t\tthis.resolve( this.fn( ...params ) );\n\t\t\treturn this.promise;\n\t\t} else {\n\t\t\tif ( typeof this.reject !== 'undefined' ) {\n\t\t\t\treturn this.reject( 'Signal: Not a valid function' );\n\t\t\t}\n\t\t\t\n\t\t\treturn false;\n\t\t}\n\t}\n\n}\n\nexport default SignalListener;\nexport { SignalListenerPromised };\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/signal/services/SignalListener.service.js","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\nfunction createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\nvar invert = createInverter(function(result, value, key) {\n result[value] = key;\n}, constant(identity));\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = invert;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/lodash.invert/index.js\n// module id = 534\n// module chunks = 16 19","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object ? baseValues(object, keys(object)) : [];\n}\n\nmodule.exports = values;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/lodash.values/index.js\n// module id = 535\n// module chunks = 16 19","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/core-js/library/fn/json/stringify.js\n// module id = 536\n// module chunks = 16 19","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * <img src=\"./img/map.png\" width=\"100%\">\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * @example <caption>Map every click to the clientX position of that click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks.map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable<R>} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nfunction map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nexports.map = map;\nvar MapOperator = (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexports.MapOperator = MapOperator;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MapSubscriber = (function (_super) {\n __extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n _super.call(this, destination);\n this.project = project;\n this.count = 0;\n this.thisArg = thisArg || this;\n }\n // NOTE: This looks unoptimized, but it's actually purposefully NOT\n // using try/catch optimizations.\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=map.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/map.js\n// module id = 537\n// module chunks = 16 19","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nvar UnsubscriptionError = (function (_super) {\n __extends(UnsubscriptionError, _super);\n function UnsubscriptionError(errors) {\n _super.call(this);\n this.errors = errors;\n var err = Error.call(this, errors ?\n errors.length + \" errors occurred during unsubscription:\\n \" + errors.map(function (err, i) { return ((i + 1) + \") \" + err.toString()); }).join('\\n ') : '');\n this.name = err.name = 'UnsubscriptionError';\n this.stack = err.stack;\n this.message = err.message;\n }\n return UnsubscriptionError;\n}(Error));\nexports.UnsubscriptionError = UnsubscriptionError;\n//# sourceMappingURL=UnsubscriptionError.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/UnsubscriptionError.js\n// module id = 538\n// module chunks = 16 19","\"use strict\";\nvar Subscriber_1 = require('../Subscriber');\nvar rxSubscriber_1 = require('../symbol/rxSubscriber');\nvar Observer_1 = require('../Observer');\nfunction toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber_1.Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriber_1.rxSubscriber]) {\n return nextOrObserver[rxSubscriber_1.rxSubscriber]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber_1.Subscriber(Observer_1.empty);\n }\n return new Subscriber_1.Subscriber(nextOrObserver, error, complete);\n}\nexports.toSubscriber = toSubscriber;\n//# sourceMappingURL=toSubscriber.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/toSubscriber.js\n// module id = 539\n// module chunks = 16 19","\"use strict\";\nvar noop_1 = require('./noop');\n/* tslint:enable:max-line-length */\nfunction pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i - 0] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexports.pipe = pipe;\n/* @internal */\nfunction pipeFromArray(fns) {\n if (!fns) {\n return noop_1.noop;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\nexports.pipeFromArray = pipeFromArray;\n//# sourceMappingURL=pipe.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/pipe.js\n// module id = 540\n// module chunks = 16 19","\"use strict\";\n/* tslint:disable:no-empty */\nfunction noop() { }\nexports.noop = noop;\n//# sourceMappingURL=noop.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/noop.js\n// module id = 541\n// module chunks = 16 19","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\nvar tryCatch_1 = require('../util/tryCatch');\nvar isFunction_1 = require('../util/isFunction');\nvar errorObject_1 = require('../util/errorObject');\nvar Subscription_1 = require('../Subscription');\nvar toString = Object.prototype.toString;\nfunction isNodeStyleEventEmitter(sourceObj) {\n return !!sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return !!sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isNodeList(sourceObj) {\n return !!sourceObj && toString.call(sourceObj) === '[object NodeList]';\n}\nfunction isHTMLCollection(sourceObj) {\n return !!sourceObj && toString.call(sourceObj) === '[object HTMLCollection]';\n}\nfunction isEventTarget(sourceObj) {\n return !!sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar FromEventObservable = (function (_super) {\n __extends(FromEventObservable, _super);\n function FromEventObservable(sourceObj, eventName, selector, options) {\n _super.call(this);\n this.sourceObj = sourceObj;\n this.eventName = eventName;\n this.selector = selector;\n this.options = options;\n }\n /* tslint:enable:max-line-length */\n /**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * <span class=\"informal\">Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.</span>\n *\n * <img src=\"./img/fromEvent.png\" width=\"100%\">\n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * @example <caption>Emits clicks happening on the DOM document</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n *\n *\n * @example <caption>Use addEventListener with capture option</caption>\n * var clicksInDocument = Rx.Observable.fromEvent(document, 'click', true); // note optional configuration parameter\n * // which will be passed to addEventListener\n * var clicksInDiv = Rx.Observable.fromEvent(someDivInDocument, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {EventTargetLike} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @param {SelectorMethodSignature<T>} [selector] An optional function to\n * post-process results. It takes the arguments from the event handler and\n * should return a single value.\n * @return {Observable<T>}\n * @static true\n * @name fromEvent\n * @owner Observable\n */\n FromEventObservable.create = function (target, eventName, options, selector) {\n if (isFunction_1.isFunction(options)) {\n selector = options;\n options = undefined;\n }\n return new FromEventObservable(target, eventName, selector, options);\n };\n FromEventObservable.setupSubscription = function (sourceObj, eventName, handler, subscriber, options) {\n var unsubscribe;\n if (isNodeList(sourceObj) || isHTMLCollection(sourceObj)) {\n for (var i = 0, len = sourceObj.length; i < len; i++) {\n FromEventObservable.setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else if (isEventTarget(sourceObj)) {\n var source_1 = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = function () { return source_1.removeEventListener(eventName, handler); };\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n var source_2 = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = function () { return source_2.off(eventName, handler); };\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n var source_3 = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = function () { return source_3.removeListener(eventName, handler); };\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(new Subscription_1.Subscription(unsubscribe));\n };\n FromEventObservable.prototype._subscribe = function (subscriber) {\n var sourceObj = this.sourceObj;\n var eventName = this.eventName;\n var options = this.options;\n var selector = this.selector;\n var handler = selector ? function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i - 0] = arguments[_i];\n }\n var result = tryCatch_1.tryCatch(selector).apply(void 0, args);\n if (result === errorObject_1.errorObject) {\n subscriber.error(errorObject_1.errorObject.e);\n }\n else {\n subscriber.next(result);\n }\n } : function (e) { return subscriber.next(e); };\n FromEventObservable.setupSubscription(sourceObj, eventName, handler, subscriber, options);\n };\n return FromEventObservable;\n}(Observable_1.Observable));\nexports.FromEventObservable = FromEventObservable;\n//# sourceMappingURL=FromEventObservable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/FromEventObservable.js\n// module id = 542\n// module chunks = 16 19","import EventEmitterAbstractController from './EventEmitterAbstract.controller';\n\nimport globalEvents from './../../helper/SignalWrapper';\n\nimport TRANSITION_EVENT_TYPES from './../constants/TransitionEventTypes.const';\nimport { SELECTORS } from './../../framework/constants/Selectors.const';\n\nimport fasterdom from 'fasterdom';\n\nfunction isValidType ( type ) {\n\treturn Object.keys( TRANSITION_EVENT_TYPES ).includes( type ) ? Promise.resolve() : Promise.reject( 'Not a valid type' );\n}\n\nfunction isAttempt ( type, $trigger ) {\n\tif ( type === TRANSITION_EVENT_TYPES.open && this.isOpen ||\n\t\t\t type === TRANSITION_EVENT_TYPES.close && !this.isOpen ) {\n\t\tthis.emit( `${type}-attempt`, {\n\t\t\t$trigger\n\t\t} );\n\t\t// fallback for versions before event emitter rollout\n\t\tthis.$scope.trigger( `${type}-attempt`, [ $trigger ] );\n\t\treturn Promise.reject( 'Request attempt to a state it is already in' );\n\t}\n\treturn Promise.resolve();\n}\n\nfunction checkTransitionEndPromise () {\n\tif ( this.transitionEndPromise === null ) {\n\t\tthis.setTransitionEndPromise();\n\t}\n}\n\nfunction dispatch ( event, type, $trigger ) {\n\tthis._transitionEventExecutorLogger.log( `${event} - ${type}` );\n\treturn new Promise( ( resolve, reject ) => {\n\t\tthis[ `_${event}` ].dispatchPromised( type, $trigger )\n\t\t\t.then( () => {\n\t\t\t\tthis._transitionEventExecutorLogger.log( \"\\t\", `Dispatch ${event} - ${type} | RESOLVED` );\n\t\t\t} )\n\t\t\t.then( resolve )\n\t\t\t.catch( reject.bind( null, `Dispatching ${event} events` ) );\n\t} );\n}\n\nfunction dispatchBefore ( type, $trigger ) {\n\treturn dispatch.call( this, 'before', type, $trigger ).then( () => {\n\t\tthis._transitionEventExecutorLogger.log( `before - ${type} | RESOLVED` );\n\t} );\n}\n\nfunction dispatchOn ( type, $trigger ) {\n\tfasterdom.mutateInstant( () => {\n\t\tif ( type === TRANSITION_EVENT_TYPES.open ) {\n\t\t\tthis.isOpen = true;\n\t\t}\n\n\t\tthis.$scope.addClass( [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tSELECTORS.duringAnimationClass,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tSELECTORS.duringAnimationClass + '--' + type\n\t\t\t\t\t\t\t\t\t\t\t\t\t].join( ' ' ) );\n\t} );\n\n\treturn Promise.all( [\n\t\tthis.transitionEndPromise,\n\t\tdispatch.call( this, 'on', type, $trigger )\n\t] ).then( () => {\n\t\tthis._transitionEventExecutorLogger.log( `on - ${type} | RESOLVED` );\n\t} );\n}\n\nfunction dispatchAfter ( type, $trigger ) {\n\tfasterdom.mutateInstant( () => {\n\t\tif ( type === TRANSITION_EVENT_TYPES.close ) {\n\t\t\tthis.isOpen = false;\n\t\t}\n\t\tthis.$scope.removeClass( [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t SELECTORS.duringAnimationClass,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t SELECTORS.duringAnimationOpenClass,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t SELECTORS.duringAnimationCloseClass\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t ].join( ' ' ) );\n\t} );\n\treturn dispatch.call( this, 'after', type, $trigger ).then( () => {\n\t\tthis._transitionEventExecutorLogger.log( `after - ${type} | RESOLVED` );\n\t} );\n}\n\nfunction emitEvents ( type, $trigger ) {\n\tthis.emit( type === TRANSITION_EVENT_TYPES.open ?\n\t\t\t\t\t\t 'opened' :\n\t\t\t\t\t\t 'closed' );\n\t// fallback for versions before event emitter rollout\n\tthis.$scope.trigger( type === TRANSITION_EVENT_TYPES.open ?\n\t\t\t\t\t\t\t\t\t\t\t 'opened' :\n\t\t\t\t\t\t\t\t\t\t\t 'closed' );\n\tglobalEvents.emit( 'transition.ended' );\n}\n\nfunction dispatchSilent ( type, $trigger ) {\n\tthis.isOpen = type === TRANSITION_EVENT_TYPES.open;\n\n\tthis.emit( type === TRANSITION_EVENT_TYPES.open ?\n\t\t\t\t\t\t 'opened' :\n\t\t\t\t\t\t 'closed' );\n\t// fallback for versions before event emitter rollout\n\tthis.$scope.trigger( type === TRANSITION_EVENT_TYPES.open ?\n\t\t\t\t\t\t\t\t\t\t\t 'opened' :\n\t\t\t\t\t\t\t\t\t\t\t 'closed' );\n\tglobalEvents.emit( 'transition.ended' );\n}\n\nclass TransitionEventExecutor extends EventEmitterAbstractController {\n\n\tconstructor () {\n\t\t// change debugging setting accordingly\n\t\tconst DEBUG = false;\n\t\t\n\t\tsuper();\n\n\t\tthis._transitionEventExecutorLogger = this.debugLocal( DEBUG, 'TransitionEventExecutor', 'background: #549968; color: black' );\n\t}\n\n\texecute ( type, $trigger ) {\n\t\treturn isValidType( type )\n\t\t\t.then( isAttempt.bind( this, type, $trigger ) )\n\t\t\t.then( checkTransitionEndPromise.bind( this ) )\n\t\t\t.then( this.state.setAnimated )\n\t\t\t.then( dispatchBefore.bind( this, type, $trigger ) )\n\t\t\t.then( dispatchOn.bind( this, type, $trigger ) )\n\t\t\t.then( dispatchAfter.bind( this, type, $trigger ) )\n\t\t\t.then( this.state.removeAnimated )\n\t\t\t.then( emitEvents.bind( this, type, $trigger ) )\n\t\t\t.catch( ( msg ) => {\n\t\t\t\tthis._transitionEventExecutorLogger.warn( 'Error during execution:', msg );\n\t\t\t} );\n\t}\n\n\texecuteSilent ( type, $trigger ) {\n\t\tdispatchSilent.call( this, type, $trigger );\n\t}\n\n}\n\nexport default TransitionEventExecutor;\n\n\n\n// WEBPACK FOOTER //\n// ./js/base/controller/TransitionEventExecutor.controller.js","const TYPES = {\n\topen : 'open',\n\tclose : 'close'\n};\n\nexport default TYPES;\n\n\n\n// WEBPACK FOOTER //\n// ./js/base/constants/TransitionEventTypes.const.js","\"use strict\";\nvar mergeMap_1 = require('../operators/mergeMap');\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * <img src=\"./img/mergeMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * @example <caption>Map and flatten each letter to an Observable ticking every 1 second</caption>\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var result = letters.mergeMap(x =>\n * Rx.Observable.interval(1000).map(i => x+i)\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and merging the results of the Observables obtained\n * from this transformation.\n * @method mergeMap\n * @owner Observable\n */\nfunction mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n return mergeMap_1.mergeMap(project, resultSelector, concurrent)(this);\n}\nexports.mergeMap = mergeMap;\n//# sourceMappingURL=mergeMap.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operator/mergeMap.js\n// module id = 545\n// module chunks = 16","\"use strict\";\nvar root_1 = require('../util/root');\nfunction symbolIteratorPonyfill(root) {\n var Symbol = root.Symbol;\n if (typeof Symbol === 'function') {\n if (!Symbol.iterator) {\n Symbol.iterator = Symbol('iterator polyfill');\n }\n return Symbol.iterator;\n }\n else {\n // [for Mozilla Gecko 27-35:](https://mzl.la/2ewE1zC)\n var Set_1 = root.Set;\n if (Set_1 && typeof new Set_1()['@@iterator'] === 'function') {\n return '@@iterator';\n }\n var Map_1 = root.Map;\n // required for compatability with es6-shim\n if (Map_1) {\n var keys = Object.getOwnPropertyNames(Map_1.prototype);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n // according to spec, Map.prototype[@@iterator] and Map.orototype.entries must be equal.\n if (key !== 'entries' && key !== 'size' && Map_1.prototype[key] === Map_1.prototype['entries']) {\n return key;\n }\n }\n }\n return '@@iterator';\n }\n}\nexports.symbolIteratorPonyfill = symbolIteratorPonyfill;\nexports.iterator = symbolIteratorPonyfill(root_1.root);\n/**\n * @deprecated use iterator instead\n */\nexports.$$iterator = exports.iterator;\n//# sourceMappingURL=iterator.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/symbol/iterator.js\n// module id = 546\n// module chunks = 16","\"use strict\";\nvar filter_1 = require('../operators/filter');\n/* tslint:enable:max-line-length */\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * <img src=\"./img/filter.png\" width=\"100%\">\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * @example <caption>Emit only click events whose target was a DIV element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV');\n * clicksOnDivs.subscribe(x => console.log(x));\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nfunction filter(predicate, thisArg) {\n return filter_1.filter(predicate, thisArg)(this);\n}\nexports.filter = filter;\n//# sourceMappingURL=filter.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operator/filter.js\n// module id = 547\n// module chunks = 16","\"use strict\";\nvar startWith_1 = require('../operators/startWith');\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins to emit\n * items emitted by the source Observable.\n *\n * <img src=\"./img/startWith.png\" width=\"100%\">\n *\n * @param {...T} values - Items you want the modified Observable to emit first.\n * @param {Scheduler} [scheduler] - A {@link IScheduler} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items\n * emitted by the source Observable.\n * @method startWith\n * @owner Observable\n */\nfunction startWith() {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i - 0] = arguments[_i];\n }\n return startWith_1.startWith.apply(void 0, array)(this);\n}\nexports.startWith = startWith;\n//# sourceMappingURL=startWith.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operator/startWith.js\n// module id = 548\n// module chunks = 16","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ScalarObservable = (function (_super) {\n __extends(ScalarObservable, _super);\n function ScalarObservable(value, scheduler) {\n _super.call(this);\n this.value = value;\n this.scheduler = scheduler;\n this._isScalar = true;\n if (scheduler) {\n this._isScalar = false;\n }\n }\n ScalarObservable.create = function (value, scheduler) {\n return new ScalarObservable(value, scheduler);\n };\n ScalarObservable.dispatch = function (state) {\n var done = state.done, value = state.value, subscriber = state.subscriber;\n if (done) {\n subscriber.complete();\n return;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n state.done = true;\n this.schedule(state);\n };\n ScalarObservable.prototype._subscribe = function (subscriber) {\n var value = this.value;\n var scheduler = this.scheduler;\n if (scheduler) {\n return scheduler.schedule(ScalarObservable.dispatch, 0, {\n done: false, value: value, subscriber: subscriber\n });\n }\n else {\n subscriber.next(value);\n if (!subscriber.closed) {\n subscriber.complete();\n }\n }\n };\n return ScalarObservable;\n}(Observable_1.Observable));\nexports.ScalarObservable = ScalarObservable;\n//# sourceMappingURL=ScalarObservable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/ScalarObservable.js\n// module id = 549\n// module chunks = 16","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar EmptyObservable = (function (_super) {\n __extends(EmptyObservable, _super);\n function EmptyObservable(scheduler) {\n _super.call(this);\n this.scheduler = scheduler;\n }\n /**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * <span class=\"informal\">Just emits 'complete', and nothing else.\n * </span>\n *\n * <img src=\"./img/empty.png\" width=\"100%\">\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the complete notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * @example <caption>Emit the number 7, then complete.</caption>\n * var result = Rx.Observable.empty().startWith(7);\n * result.subscribe(x => console.log(x));\n *\n * @example <caption>Map and flatten only odd numbers to the sequence 'a', 'b', 'c'</caption>\n * var interval = Rx.Observable.interval(1000);\n * var result = interval.mergeMap(x =>\n * x % 2 === 1 ? Rx.Observable.of('a', 'b', 'c') : Rx.Observable.empty()\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval eg(0,1,2,3,...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1 print abc\n * // if x % 2 is not equal to 1 nothing will be output\n *\n * @see {@link create}\n * @see {@link never}\n * @see {@link of}\n * @see {@link throw}\n *\n * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n * the emission of the complete notification.\n * @return {Observable} An \"empty\" Observable: emits only the complete\n * notification.\n * @static true\n * @name empty\n * @owner Observable\n */\n EmptyObservable.create = function (scheduler) {\n return new EmptyObservable(scheduler);\n };\n EmptyObservable.dispatch = function (arg) {\n var subscriber = arg.subscriber;\n subscriber.complete();\n };\n EmptyObservable.prototype._subscribe = function (subscriber) {\n var scheduler = this.scheduler;\n if (scheduler) {\n return scheduler.schedule(EmptyObservable.dispatch, 0, { subscriber: subscriber });\n }\n else {\n subscriber.complete();\n }\n };\n return EmptyObservable;\n}(Observable_1.Observable));\nexports.EmptyObservable = EmptyObservable;\n//# sourceMappingURL=EmptyObservable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/EmptyObservable.js\n// module id = 550\n// module chunks = 16","import { Observable } from 'rxjs/Observable';\nimport { fromEvent } from 'rxjs/observable/fromEvent';\nimport { startWith } from 'rxjs/operator/startWith';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { map } from 'rxjs/operator/map';\nimport 'rxjs/add/operator/merge';\nimport 'rxjs/add/operator/filter';\nimport $ from 'jquery';\n\nimport { fasterdomPromised as dom } from 'fasterdom';\n\nconst scope = window,\n Events = {\n\t WHEEL : 'wheel',\n\t SCROLL : 'scroll'\n }, SCROLL_DIRECTIONS = {\n\n\t UP : Symbol( 'up' ),\n\t DOWN : Symbol( 'down' ),\n\t LEFT : Symbol( 'left' ),\n\t RIGHT : Symbol( 'right' ),\n\t UNDEFINED : Symbol( 'undefined' )\n };\n\n/**\n * @typedef {object} ScrollPosition\n * @property {int|undefined} x - scroll value on x-axis\n * @property {int|undefined} y - scroll value on y-axis\n * @propert {Symbol} direction - the current scroll direction\n */\n\n/**\n *\n * @type {ScrollPosition}\n */\nlet cache = {};\n\n/**\n * Cache the current data.\n * @param {ScrollPosition} data - current scroll position\n * @return {ScrollPosition} the new cached scroll position\n */\nfunction cacheAndReturn ( data ) {\n\tcache = data;\n\n\treturn cache;\n}\n\n/**\n * Check whether the emitted scroll position relally changed.\n * @param {ScrollPosition} data - current scroll position\n * @return {boolean}\n */\nfunction didChange ( data ) {\n\n\treturn data !== cache;\n}\n\n/**\n * Try to return the cached result first to avoid recalculation and layout trashing\n * @return {Promise<void>|Promise.<*>|Promise<T>|Promise<WindowDimensions>} - promised value\n */\nfunction tryCachedReturn () {\n\n\treturn cache.x !== undefined && cache.y !== undefined ?\n\t Promise.resolve( cache ) :\n\t getWindowScroll();\n}\n\n/**\n * Compare the current scroll position against the last scroll position to determine the direction.\n * @param {ScrollPosition} data - new scroll data\n * @param {ScrollPosition} cache - cached scroll data\n * @return {symbol|*|Symbol} a symbol for the current direction\n */\nfunction determineDirection ( data, cache ) {\n\n\tconst oldX = cache.x,\n\t oldY = cache.y,\n\t newX = data.x,\n\t newY = data.y;\n\n\tif ( oldX !== undefined && oldY !== undefined ) {\n\n\t\treturn newY > oldY ?\n\t\t SCROLL_DIRECTIONS.DOWN :\n\t\t newY < oldY ?\n\t\t SCROLL_DIRECTIONS.UP :\n\t\t newX > oldX ?\n\t\t SCROLL_DIRECTIONS.LEFT :\n\t\t newX < oldX ?\n\t\t SCROLL_DIRECTIONS.RIGHT :\n\t\t cache.direction;\n\t} else {\n\n\t\treturn SCROLL_DIRECTIONS.UNDEFINED;\n\t}\n}\n\n/**\n * Calculate the window scroll position\n * @returns {Promise} - a fasterdom promise whch will resolve with a {ScrollPosition} object\n */\nfunction getWindowScroll () {\n\n\treturn dom.measure( () => {\n\n\t\tlet scrollX = 0,\n\t\t scrollY = 0;\n\n\t\tif ( typeof window.pageYOffset === 'number' ) {\n\t\t\tscrollY = window.pageYOffset;\n\t\t\tscrollX = window.pageXOffset;\n\t\t} else if ( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) { // DOM\n\t\t\tscrollY = document.body.scrollTop;\n\t\t\tscrollX = document.body.scrollLeft;\n\t\t} else if ( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) { // IE6\n\t\t\tscrollY = document.documentElement.scrollTop;\n\t\t\tscrollX = document.documentElement.scrollLeft;\n\t\t}\n\n\t\tconst normalizedX = scrollX < 0 ?\n\t\t 0 :\n\t\t Math.floor( scrollX ),\n\t\t normalizedY = scrollY < 0 ?\n\t\t 0 :\n\t\t Math.floor( scrollY );\n\n\t\treturn {\n\t\t\t/**\n\t\t\t * @type {int} x - scroll position x\n\t\t\t */\n\t\t\tx : normalizedX,\n\t\t\t/**\n\t\t\t * @type {int} y - scroll position y\n\t\t\t */\n\t\t\ty : normalizedY,\n\n\t\t\tdirection : determineDirection( { x : normalizedX, y : normalizedY }, cache )\n\t\t};\n\t} );\n}\n\n/**\n * @public\n * @returns {Observable<ScrollPosition>} - scroll event stream\n */\nfunction registerScrollEventStream () {\n\n\tconst wheelStream = Observable::fromEvent( scope, Events.WHEEL ),\n\t scrollStream = Observable::fromEvent( scope, Events.SCROLL );\n\n\treturn wheelStream.merge( scrollStream )\n\t\t\t::startWith( getWindowScroll )\n\t\t\t::mergeMap( getWindowScroll )\n\t\t\t.filter( didChange )\n\t\t\t::map( cacheAndReturn );\n}\n\n/**\n * Scroll to a position.\n * @param {ScrollPosition} data - coordinates\n * @param {object} options - Scroll options\n */\nfunction scrollToPosition ( data, options = { animated : false } ) {\n\tif ( options.animated ) {\n\t\t$( 'html, body' ).animate( {\n\t\t scrollTop : data.y\n\t }, 600 );\n\t} else {\n\t\twindow.scrollTo( data.x, data.y );\n\t}\n}\n\n/**\n * Scroll to an element.\n * @param {ScrollPosition} element - the element to make visible\n * @param {object} options - Scroll options\n */\nfunction scrollToElement ( element ) {\n\t$( 'html, body' ).animate( {\n\t\t scrollTop : element.offset().top\n\t }, 600 );\n}\n\nconst ScrollService = { // eslint-disable-line one-var\n\n\tscrollEvent : registerScrollEventStream(),\n\tgetCurrent : tryCachedReturn,\n\ttoPosition : scrollToPosition,\n\ttoElement : scrollToElement\n};\n\nexport { SCROLL_DIRECTIONS as DIRECTIONS };\nexport default ScrollService;\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/services/Scroll.service.js","\"use strict\";\nvar Observable_1 = require('../Observable');\nvar ArrayObservable_1 = require('./ArrayObservable');\nvar isScheduler_1 = require('../util/isScheduler');\nvar mergeAll_1 = require('../operators/mergeAll');\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * <img src=\"./img/merge.png\" width=\"100%\">\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * @example <caption>Merge together two Observables: 1s interval and clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var timer = Rx.Observable.interval(1000);\n * var clicksOrTimer = Rx.Observable.merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console everytime the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n *\n * @example <caption>Merge together 3 Observables, but only 2 run concurrently</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var concurrent = 2; // the argument\n * var merged = Rx.Observable.merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits it's max iteration, timer2 will\n * // continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits it's max iteration it terminates, and\n * // timer3 will continue to emit a value every 500ms until it is complete\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n * @static true\n * @name merge\n * @owner Observable\n */\nfunction merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i - 0] = arguments[_i];\n }\n var concurrent = Number.POSITIVE_INFINITY;\n var scheduler = null;\n var last = observables[observables.length - 1];\n if (isScheduler_1.isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable_1.Observable) {\n return observables[0];\n }\n return mergeAll_1.mergeAll(concurrent)(new ArrayObservable_1.ArrayObservable(observables, scheduler));\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/merge.js\n// module id = 552\n// module chunks = 16","import IDENTIFIERS from './Identifiers.const';\n\nimport CookieService from './../../../services/Cookie.service';\n\n/**\n * Yeah, some code duplication here, because it needs to be\n * an as small as possible standalone component\n * // TODO?\n */\nconst\n\twin = window,\n\trAF = win.requestAnimationFrame ||\n\t\t\t\twin.webkitRequestAnimationFrame ||\n\t\t\t\twin.mozRequestAnimationFrame ||\n\t\t\t\twin.msRequestAnimationFrame ||\n\t\t\t\tfunction ( cb ) { // eslint-disable-line func-names\n\t\t\t\t\treturn setTimeout( cb, 16 );\n\t\t\t\t};\n\nfunction getSiblings ( el ) {\n\tconst\n\t\tsiblings = [];\n\n\tif ( el && el.parentNode ) {\n\t\tlet\n\t\t\tsibling = el.parentNode.firstChild;\n\n\t\tdo {\n\t\t\tif ( sibling.nodeType !== 1 || sibling === el ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsiblings.push( sibling );\n\t\t} while ( sibling = sibling.nextSibling )\n\t}\n\n\treturn siblings;\n}\n\nfunction switchViewTo ( el ) {\n\tconst\n\t\tsiblings = getSiblings( el );\n\n\trAF( () => {\n\t\tsiblings.forEach( sibling => {\n\t\t\tsibling.classList.remove( 'open' );\n\t\t\tsibling.setAttribute( 'aria-hidden', true );\n\t\t } );\n\t\tel.classList.add( 'open' );\n\t\tel.setAttribute( 'aria-hidden', false );\n\t} );\n}\n\nfunction switchViews () {\n\tif ( this.base.classList.contains( 'open' ) ) {\n\t\tswitchViewTo( this.settings );\n\t} else {\n\t\tswitchViewTo( this.base );\n\t}\n}\n\nfunction setCookieLevel ( level ) {\n\tif ( !this.config || !this.config.cookie ) {\n\t\treturn;\n\t}\n\n\tif ( typeof level === 'number' && this.config.cookie && this.config.cookie.name ) {\n\t\tconst\n\t\t\tcookie = this.config.cookie;\n\n\t\tif ( cookie.allowedValues && !~cookie.allowedValues.indexOf( level ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst\n\t\t\tsplittedHostName = window.location.hostname.split('.'),\n\t\t\tdomain = splittedHostName.length > 1 ? '.' + splittedHostName[splittedHostName.length - 2] + '.' + splittedHostName[splittedHostName.length - 1] : splittedHostName[splittedHostName.length - 1];\n\n\t\tcookie.domain = domain;\n\n\t\tCookieService.setCookie( cookie.name, level, cookie.lifetime, cookie.domain );\n\t} else if ( typeof level === 'string' ) {\n\t\tif ( level === 'max' ) {\n\t\t\tthis::setCookieLevel( Math.max( ...this.levels.present ) )\n\t\t} else if ( level === 'min' ) {\n\t\t\tthis::setCookieLevel( Math.min( ...this.levels.present ) )\n\t\t}\n\t}\n}\n\nfunction setupLevels () {\n\tthis.levels = {\n\t\telements : this.scope.querySelectorAll( IDENTIFIERS.LEVELS ),\n\t\tdetails : this.scope.querySelectorAll( IDENTIFIERS.DETAILS ),\n\t\tpresent : [],\n\t\tcurrent : -1\n\t};\n\n\tArray.from( this.levels.elements )\n\t\t.forEach( ( element, idx ) => {\n\t\t\tconst\n\t\t\t\tparentSiblings = getSiblings( element ),\n\t\t\t\tdetailElement = this.levels.details[ idx ],\n\t\t\t\tdetailSiblings = getSiblings( detailElement ),\n\t\t\t\tradio = element.querySelector( '.radio input' ),\n\t\t\t\tlevel = parseInt( radio.getAttribute( 'value' ) );\n\n\t\t\tthis.levels.present.push( level );\n\n\t\t\tif ( element.classList.contains( 'selected' ) ) {\n\t\t\t\tthis.levels.current = level;\n\t\t\t}\n\n\t\t\t// Disabling option to choose tracking level one\n\t\t\tif (idx === 0) return;\n\n\t\t\tradio.addEventListener( 'change', () => {\n\n\t\t\t\tthis.levels.current = level;\n\n\t\t\t\trAF( () => {\n\t\t\t\t\tparentSiblings.concat( detailSiblings ).forEach( sibling => {\n\t\t\t\t\t\tsibling.classList.remove( 'selected' );\n\t\t\t\t\t } );\n\t\t\t\t\t element.classList.add( 'selected' );\n\t\t\t\t\t detailElement.classList.add( 'selected' );\n\t\t\t\t} );\n\t\t\t} )\n\t\t} )\n}\n\nfunction addHandler () {\n\tconst\n\t\ttriggerHandler = e => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tthis::switchViews();\n\n\t\t\treturn false;\n\t\t};\n\n\tArray.from( this.trigger )\n\t\t.forEach( trigger => trigger.addEventListener( 'click', triggerHandler ) );\n\n\tArray.from( this.buttonImmediate )\n\t\t.forEach( button => button.addEventListener( 'click', () => this::setCookieLevel( 'max' ) ) );\n\n\tArray.from( this.buttonLevel )\n\t\t.forEach( button => button.addEventListener( 'click', () => this::setCookieLevel( this.levels.current ) ) );\n\n\tthis.expandableTrigger.addEventListener( 'click', () => {\n\t\tthis.expandable.classList.toggle( 'expanded' );\n\t} );\n}\n\nfunction isJQuery ( obj ) {\n\treturn ( typeof obj === 'object' && ( 'jquery' in obj || ( obj.constructor && obj.constructor.prototype && obj.constructor.prototype.jquery ) ) );\n}\n\nclass DWS01Controller {\n\n\tinit ( scope, config ) {\n\t\tif ( isJQuery( scope ) ) {\n\t\t\tthis.$scope = scope;\n\t\t\tthis.scope = this.$scope[ 0 ];\n\t\t} else {\n\t\t\tthis.scope = scope;\n\t\t}\n\n\t\tthis.config = config;\n\t\tthis.base = this.scope.querySelector( IDENTIFIERS.BASE );\n\t\tthis.settings = this.scope.querySelector( IDENTIFIERS.SETTINGS );\n\t\tthis.trigger = this.scope.querySelectorAll( IDENTIFIERS.TRIGGER );\n\t\tthis.buttonImmediate = this.scope.querySelectorAll( IDENTIFIERS.BUTTONS.ACCEPT_IMMEDIATE);\n\t\tthis.buttonLevel = this.scope.querySelectorAll( IDENTIFIERS.BUTTONS.ACCEPT_LEVEL );\n\t\tthis.expandable = this.scope.querySelector( IDENTIFIERS.EXPANDER.ROOT );\n\t\tthis.expandableTrigger = this.scope.querySelector( IDENTIFIERS.EXPANDER.TRIGGER );\n\n\t\tthis::setupLevels();\n\t\tthis::addHandler();\n\t}\n\n}\n\nexport default DWS01Controller;\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/dws01/DWS01.controller.js","import AbstractController from './../base/controller/Abstract.controller';\r\nimport $ from 'jquery';\r\n\r\n/**\r\n * handles click on page wrapper\r\n * @param {object} e - click event\r\n * @returns {void}\r\n */\r\nfunction handleClick ( e ) {\r\n\tconst $target = $( e.target );\r\n\r\n\tif ( !this.$element instanceof $ ) {\r\n\t\tthis.$element = $( this.$element );\r\n\t}\r\n\r\n\tif ( $target !== this.$element && $target.parents().index( this.$element ) < 0 ) {\r\n\t\tthis.callback( e );\r\n\t\tthis.destroy();\r\n\t}\r\n}\r\n\r\n/**\r\n * Class representing an click outside handler\r\n * @extends { AbstractController }\r\n */\r\nclass Clickoutside extends AbstractController {\r\n\r\n\tconstructor ( $element, callback ) {\r\n\t\tsuper();\r\n\r\n\t\tthis.$element = $element;\r\n\t\tthis.callback = callback;\r\n\t\tthis.$document = $( '#page-wrapper' );\r\n\t\tthis.active = true;\r\n\t\tthis.id = Date.now();\r\n\t\t\r\n\t\tthis.$document.on( 'click.clickoutside-' + this.id, handleClick.bind( this ) );\r\n\t}\r\n\r\n\tdestroy () {\r\n\t\tthis.$document.off( 'click.clickoutside-' + this.id );\r\n\t\tthis.active = false;\r\n\t}\r\n}\r\n\r\nexport default Clickoutside;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/helper/clickoutside.class.js","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/helpers/defineProperty.js\n// module id = 555\n// module chunks = 16","import InViewportService from 'in-viewport';\r\nimport $ from 'jquery';\r\nimport { fasterdomPromised as dom } from 'fasterdom';\r\nimport DomObserverService from './../services/DomObserver.service';\r\nimport { DEFAULT_CONFIG } from './../services/DomObserver.service';\r\n\r\n/**\r\n * Add loaded class to visible image.\r\n * @param {HTMLElement} item - image node\r\n * @return {void}\r\n */\r\nfunction addLoadedClass ( item ) {\r\n\r\n\t$( item ).addClass( 'image--loaded' );\r\n}\r\n\r\n/**\r\n * Add loaded class to visible images.\r\n * Use fastdom for efficient layout changes.\r\n * @param {Array<HTMLElement>} items - which are visible.\r\n * @return {void}\r\n */\r\nfunction handleVisibleItems ( items ) {\r\n\r\n\tdom.mutate( () => items.map( addLoadedClass ) );\r\n}\r\n\r\n/**\r\n * Handle change events.\r\n * @param {Promise} event - promise returned from {InViewportService} which will be resolved with visible and invisible items.\r\n * @return {void}\r\n */\r\nfunction handleVisibilityChange ( event ) {\r\n\r\n\tevent.then( ( items ) => handleVisibleItems( items.visible ) );\r\n}\r\n\r\n/**\r\n * Find lazy loaded items and add to watcher.\r\n * @return {void}\r\n */\r\nfunction addItemsToWatch () {\r\n\r\n\tInViewportService\r\n\t\t\t.clearWatchList()\r\n\t\t\t.addItemsToWatchList( $( '.image--lazy-loaded' ).get() );\r\n}\r\n\r\n/**\r\n * Singleton to handle lazy image loading using {InViewportService} module.\r\n */\r\nclass LazyImageLoader {\r\n\r\n\t/**\r\n\t * Initialises the service singleton.\r\n\t * Has to be called after ready event.\r\n\t * @public\r\n\t * @return { LazyImageLoader } instance\r\n\t */\r\n\tinit () {\r\n\r\n\t\taddItemsToWatch();\r\n\r\n\t\tInViewportService.updateEvent\r\n\t\t\t\t.subscribe( handleVisibilityChange );\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Update the watcher. Can be called after DOM changes.\r\n\t * @param {function} callback - called after change\r\n\t * @return {void}\r\n\t */\r\n\tupdate ( callback ) {\r\n\t\taddItemsToWatch();\r\n\r\n\t\tif ( callback ) {\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Watch a DOM-Node for updates on attributes, child nodes and attributes.\r\n\t * @param {HTMLElement} node - element to observe\r\n\t * @param {function} callback - triggered after watch triggered\r\n\t * @param {object} OBSERVER_CONFIG - watcher config\r\n\t * @returns {LazyImageLoader} instance\r\n\t */\r\n\twatch ( node, callback, OBSERVER_CONFIG = DEFAULT_CONFIG ) {\r\n\r\n\t\tconsole.log('watching node', node)\r\n\r\n\t\tconst observer = DomObserverService.getInstanceWithCallback( this.update.bind( this, callback ) );\r\n\r\n\t\tobserver.observe( node, OBSERVER_CONFIG );\r\n\t\treturn this;\r\n\t}\r\n}\r\n\r\nconst instance = new LazyImageLoader();\r\n\r\nexport default instance;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/services/LazyImageLoader.service.js","/** @module framework/navigation */\r\nimport AbstractController from './../../base/controller/Abstract.controller';\r\nimport NavigationItemController from './NavigationItem.controller';\r\nimport OffScreenNavigation from './offscreen/OffscreenNavigation.controller';\r\nimport { SELECTORS } from './../constants/Selectors.const';\r\nimport bucket from './../../services/Bucket.service';\r\n\r\nimport Signal from 'signal';\r\nimport fasterdom from 'fasterdom';\r\nimport $ from 'jquery';\r\n\r\n/**\r\n * Resets the complete menu status to it's default values\r\n * @returns { void }\r\n * @private\r\n *\r\n * @memberof module:framework/navigation~NavigationController\r\n */\r\nfunction resetMenu () {\r\n\tconst self = this;\r\n\r\n\tself._closeOpen.clear();\r\n\tself.subController.map( ( v ) => {\r\n\t\tv.reset();\r\n\r\n\t\tfasterdom.onFrameInstant( () => {\r\n\t\t\tif ( v.isOpen ) {\r\n\t\t\t\tself._closeOpen.add( () => {\r\n\t\t\t\t\tv.close( v.$trigger );\r\n\t\t\t\t}, '_', true );\r\n\t\t\t}\r\n\t\t}, 1 );\r\n\r\n\t\treturn v;\r\n\t} );\r\n}\r\n\r\n/**\r\n * Adds event listeners to submenu items and deligates opening / closing methods\r\n * @returns { void }\r\n * @private\r\n *\r\n * @memberof module:framework/navigation~NavigationController\r\n */\r\nfunction addHandler () {\r\n\tconst self = this;\r\n\r\n\tself.$items.each( ( i, v ) => {\r\n\t\tconst $this = $( v ),\r\n\t\t controllerInstance = new NavigationItemController();\r\n\r\n\t\tcontrollerInstance.init( $this );\r\n\t\tself.subController.push( controllerInstance );\r\n\r\n\t\tfasterdom.mutateInstant( () => {\r\n\t\t\tif ( controllerInstance.isOpen ) {\r\n\t\t\t\tself._closeOpen.add( () => {\r\n\t\t\t\t\tcontrollerInstance.close( $this );\r\n\t\t\t\t}, '_', true );\r\n\t\t\t}\r\n\t\t}, 1 );\r\n\r\n\t\t$this.on( 'click', '> span', ( e ) => {\r\n\t\t\tconst $t = $( this );\r\n\r\n\t\t\tif ( controllerInstance.isDisabled || bucket.controller.framework.offscreenNavigation.isChildOpening ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tself._closeOpen.dispatch();\r\n\r\n\t\t\tif ( !controllerInstance.isOpen ) {\r\n\t\t\t\tcontrollerInstance.open( $t );\r\n\t\t\t\tself._closeOpen.add( () => {\r\n\t\t\t\t\tcontrollerInstance.close( $t );\r\n\t\t\t\t}, '_', true );\r\n\t\t\t}\r\n\r\n\t\t} );\r\n\r\n\t} );\r\n\r\n\t/**\r\n\t * reset menu state to default on OffScreenNavigation close\r\n\t */\r\n\tOffScreenNavigation.$scope.on( 'closed', ( e ) => {\r\n\t\tif ( e.target === OffScreenNavigation.$scope[ 0 ] ) {\r\n\t\t\tresetMenu.call( self );\r\n\t\t}\r\n\t} );\r\n}\r\n\r\n/**\r\n * Class representing the main navigation menu.\r\n * Controls the state of the navigation.\r\n * Controls menu item behavior.\r\n * @class\r\n * \r\n * @extends { AbstractController }\r\n */\r\nclass NavigationController extends AbstractController {\r\n\t/**\r\n\t * @constructs\r\n\t */\r\n\tconstructor () {\r\n\t\tsuper();\r\n\r\n\t\tthis.$scope = null;\r\n\r\n\t\tthis._closeOpen = new Signal();\r\n\r\n\t\tthis.$items = null;\r\n\t\tthis.subController = [];\r\n\t\tthis.navController = [];\r\n\t}\r\n\r\n\t/**\r\n\t * Initialises the controller singleton.\r\n\t * Has to be called after ready event.\r\n\t * @param { jQuery } $root - jQuery wrapped DOM node\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tinit ( $root ) {\r\n\t\tconst self = this;\r\n\r\n\t\tthis.$scope = $root;\r\n\t\tthis.$items = self.$scope.find( '> li[' + SELECTORS.expandedSelector + ']' ).has( '> span' );\r\n\r\n\t\taddHandler.call( self );\r\n\t}\r\n\r\n\t/**\r\n\t * Close all items\r\n\t * @return { void }\r\n\t * @public\r\n\t */\r\n\tcloseItems () {\r\n\t\tthis._closeOpen.clear();\r\n\t\tthis.subController.map( ( v ) => {\r\n\t\t\tv.closeSilent();\r\n\t\t\treturn v;\r\n\t\t} );\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * @private\r\n * @type { NavigationController }\r\n */\r\n// const instance = new NavigationController();\r\n\r\nexport default NavigationController;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/framework/controller/Navigation.controller.js","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar subscribeToResult_1 = require('../util/subscribeToResult');\nvar OuterSubscriber_1 = require('../OuterSubscriber');\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * <img src=\"./img/mergeMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * @example <caption>Map and flatten each letter to an Observable ticking every 1 second</caption>\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var result = letters.mergeMap(x =>\n * Rx.Observable.interval(1000).map(i => x+i)\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and merging the results of the Observables obtained\n * from this transformation.\n * @method mergeMap\n * @owner Observable\n */\nfunction mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n return function mergeMapOperatorFunction(source) {\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n resultSelector = null;\n }\n return source.lift(new MergeMapOperator(project, resultSelector, concurrent));\n };\n}\nexports.mergeMap = mergeMap;\nvar MergeMapOperator = (function () {\n function MergeMapOperator(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n this.project = project;\n this.resultSelector = resultSelector;\n this.concurrent = concurrent;\n }\n MergeMapOperator.prototype.call = function (observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.resultSelector, this.concurrent));\n };\n return MergeMapOperator;\n}());\nexports.MergeMapOperator = MergeMapOperator;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MergeMapSubscriber = (function (_super) {\n __extends(MergeMapSubscriber, _super);\n function MergeMapSubscriber(destination, project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n _super.call(this, destination);\n this.project = project;\n this.resultSelector = resultSelector;\n this.concurrent = concurrent;\n this.hasCompleted = false;\n this.buffer = [];\n this.active = 0;\n this.index = 0;\n }\n MergeMapSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeMapSubscriber.prototype._tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result, value, index);\n };\n MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {\n this.add(subscribeToResult_1.subscribeToResult(this, ish, value, index));\n };\n MergeMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n };\n MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n if (this.resultSelector) {\n this._notifyResultSelector(outerValue, innerValue, outerIndex, innerIndex);\n }\n else {\n this.destination.next(innerValue);\n }\n };\n MergeMapSubscriber.prototype._notifyResultSelector = function (outerValue, innerValue, outerIndex, innerIndex) {\n var result;\n try {\n result = this.resultSelector(outerValue, innerValue, outerIndex, innerIndex);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n this.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n };\n return MergeMapSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\nexports.MergeMapSubscriber = MergeMapSubscriber;\n//# sourceMappingURL=mergeMap.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/mergeMap.js\n// module id = 562\n// module chunks = 16","\"use strict\";\nvar root_1 = require('./root');\nvar isArrayLike_1 = require('./isArrayLike');\nvar isPromise_1 = require('./isPromise');\nvar isObject_1 = require('./isObject');\nvar Observable_1 = require('../Observable');\nvar iterator_1 = require('../symbol/iterator');\nvar InnerSubscriber_1 = require('../InnerSubscriber');\nvar observable_1 = require('../symbol/observable');\nfunction subscribeToResult(outerSubscriber, result, outerValue, outerIndex) {\n var destination = new InnerSubscriber_1.InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n if (destination.closed) {\n return null;\n }\n if (result instanceof Observable_1.Observable) {\n if (result._isScalar) {\n destination.next(result.value);\n destination.complete();\n return null;\n }\n else {\n destination.syncErrorThrowable = true;\n return result.subscribe(destination);\n }\n }\n else if (isArrayLike_1.isArrayLike(result)) {\n for (var i = 0, len = result.length; i < len && !destination.closed; i++) {\n destination.next(result[i]);\n }\n if (!destination.closed) {\n destination.complete();\n }\n }\n else if (isPromise_1.isPromise(result)) {\n result.then(function (value) {\n if (!destination.closed) {\n destination.next(value);\n destination.complete();\n }\n }, function (err) { return destination.error(err); })\n .then(null, function (err) {\n // Escaping the Promise trap: globally throw unhandled errors\n root_1.root.setTimeout(function () { throw err; });\n });\n return destination;\n }\n else if (result && typeof result[iterator_1.iterator] === 'function') {\n var iterator = result[iterator_1.iterator]();\n do {\n var item = iterator.next();\n if (item.done) {\n destination.complete();\n break;\n }\n destination.next(item.value);\n if (destination.closed) {\n break;\n }\n } while (true);\n }\n else if (result && typeof result[observable_1.observable] === 'function') {\n var obs = result[observable_1.observable]();\n if (typeof obs.subscribe !== 'function') {\n destination.error(new TypeError('Provided object does not correctly implement Symbol.observable'));\n }\n else {\n return obs.subscribe(new InnerSubscriber_1.InnerSubscriber(outerSubscriber, outerValue, outerIndex));\n }\n }\n else {\n var value = isObject_1.isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = (\"You provided \" + value + \" where a stream was expected.\")\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n destination.error(new TypeError(msg));\n }\n return null;\n}\nexports.subscribeToResult = subscribeToResult;\n//# sourceMappingURL=subscribeToResult.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/subscribeToResult.js\n// module id = 563\n// module chunks = 16","\"use strict\";\nexports.isArrayLike = (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArrayLike.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/isArrayLike.js\n// module id = 564\n// module chunks = 16","\"use strict\";\nfunction isPromise(value) {\n return value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\nexports.isPromise = isPromise;\n//# sourceMappingURL=isPromise.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/isPromise.js\n// module id = 565\n// module chunks = 16","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('./Subscriber');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar OuterSubscriber = (function (_super) {\n __extends(OuterSubscriber, _super);\n function OuterSubscriber() {\n _super.apply(this, arguments);\n }\n OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n this.destination.error(error);\n };\n OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n this.destination.complete();\n };\n return OuterSubscriber;\n}(Subscriber_1.Subscriber));\nexports.OuterSubscriber = OuterSubscriber;\n//# sourceMappingURL=OuterSubscriber.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/OuterSubscriber.js\n// module id = 566\n// module chunks = 16","import { Observable } from 'rxjs/Observable';\nimport { fromEvent } from 'rxjs/observable/fromEvent';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { filter } from 'rxjs/operator/filter';\nimport { map } from 'rxjs/operator/map';\nimport { startWith } from 'rxjs/operator/startWith';\n\nimport Viewport from './Viewport.service';\n\nconst scope = window,\n Events = {\n\t RESIZE : 'resize'\n };\n\nlet cache;\n\n/**\n * @typedef {object} WindowDimensions\n * @property {int} width - The width of the current viewport\n * @property {int} height - The height of the current viewport\n */\n\n/**\n * Cache the current result and return a reference to the cached result to enable strict === comparison\n * @param {WindowDimensions} data - the window measurements\n * @return {WindowDimensions} the cached window measurements\n */\nfunction cacheSize ( data ) {\n\n\tcache = data;\n\n\treturn cache;\n}\n\n/**\n * Check if the data has changed.\n * @param {WindowDimensions} data - the window measurements\n * @return {boolean} - whether data needs an update.\n */\nfunction didChange ( data ) {\n\n\treturn data !== cache;\n}\n\n/**\n * Try to return the cached result first to avoid recalculation and layout trashing\n * @return {Promise<void>|Promise.<*>|Promise<T>|Promise<WindowDimensions>} - either immediately resolve with cache or fetch new data from service\n */\nfunction tryCachedReturn () {\n\n\treturn cache ?\n\t Promise.resolve( cache ) :\n\t Viewport.getSize();\n}\n\n/**\n * Attach observable to window resize events.\n * @public\n * @return {Observable<WindowDimensions>} - stream of window resize events\n */\nfunction registerResizeEventStream () {\n\n\treturn Observable\n\t\t\t::fromEvent( scope, Events.RESIZE )\n\t\t\t::startWith( Viewport.getSize )\n\t\t\t::mergeMap( Viewport.getSize )\n\t\t\t::filter( didChange )\n\t\t\t::map( cacheSize );\n}\n\nconst ResizeService = {\n\n\tresizeEvent : registerResizeEventStream(),\n\tgetCurrent : tryCachedReturn\n};\n\nexport default ResizeService;\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/services/Resize.service.js","\"use strict\";\nvar FromObservable_1 = require('./FromObservable');\nexports.from = FromObservable_1.FromObservable.create;\n//# sourceMappingURL=from.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/from.js\n// module id = 568\n// module chunks = 16","\"use strict\";\nvar mergeMap_1 = require('./mergeMap');\nvar identity_1 = require('../util/identity');\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables.</span>\n *\n * <img src=\"./img/mergeAll.png\" width=\"100%\">\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * @example <caption>Spawn a new interval Observable for each click event, and blend their outputs as one Observable</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000));\n * var firstOrder = higherOrder.mergeAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * @example <caption>Count from 0 to 9 every second for each click, but only allow 2 concurrent timers</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(10));\n * var firstOrder = higherOrder.mergeAll(2);\n * firstOrder.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits values coming from all the\n * inner Observables emitted by the source Observable.\n * @method mergeAll\n * @owner Observable\n */\nfunction mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n return mergeMap_1.mergeMap(identity_1.identity, null, concurrent);\n}\nexports.mergeAll = mergeAll;\n//# sourceMappingURL=mergeAll.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/mergeAll.js\n// module id = 569\n// module chunks = 16","//import $ from 'cash-dom';\nimport {fasterdomPromised as dom} from 'fasterdom';\n\nconst cache = {\n\t width : null,\n\t height : null,\n\t windowHeight : null,\n\t windowWidth : null\n },\n $scope = window;\n\n/**\n * @typedef {object} Position within the document\n * @param {int} top - top pos\n * @param {int} left - left pos\n * @param {int} right - right pos\n * @param {int} bottom - bottom pos\n */\n\n/**\n * Measure the viewport using {FasterDom}.\n * Is provided as a singleton.\n */\nclass ViewportService {\n\n\t/**\n\t * Try to return the cached result first to avoid recalculation and layout trashing\n\t * @return {Promise<void>|Promise.<*>|Promise<T>|Promise<WindowDimensions>} - promised value\n\t */\n\ttryCachedReturn () {\n\n\t\treturn cache.width && cache.height ?\n\t\t Promise.resolve( cache ) :\n\t\t this.getSize();\n\t}\n\n\t/**\n\t * Determine the size of the viewport.\n\t * @return {Promise} promise which will resolve to an object containing width and height\n\t */\n\tgetSize () {\n\n\t\treturn dom.measure( () => {\n\n\t\t\tif ( window.useInnerWidth === true ) {\n\t\t\t\tcache.width = Math.min( $scope.outerWidth, $scope.innerWidth );\n\t\t\t\tcache.height = Math.min( $scope.outerHeight, $scope.innerHeight );\n\t\t\t} else {\n\t\t\t\tcache.width = Math.max( $scope.outerWidth, $scope.innerWidth );\n\t\t\t\tcache.height = Math.max( $scope.outerHeight, $scope.innerHeight );\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\twidth : cache.width,\n\t\t\t\theight : cache.height\n\t\t\t};\n\t\t} );\n\t}\n\n\t/**\n\t * Get the current position of an element within the Viewport.\n\t * @param {HTMLElement} element - dom element to find\n\t * @return {Promise} promise which will resolve to {Position}\n\t */\n\tgetPosition ( element ) {\n\n\t\treturn dom.measure( () => {\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\treturn {\n\t\t\t\ttop : Math.round( rect.top ),\n\t\t\t\tright : Math.round( rect.right ),\n\t\t\t\tbottom : Math.round( rect.bottom ),\n\t\t\t\tleft : Math.round( rect.left )\n\t\t\t};\n\t\t} );\n\t}\n\n\t/**\n\t * Determine if the position of a given item is within the viewport.\n\t * @param {HTMLElement} element - the element to find\n\t * @param {int} OFFSET [param=0] - offset to widen the viewport to fuzzy match\n\t * @return {Promise|Promise<T>} - promise will be resolved after the viewport was determined.\n\t */\n\tisVisible ( element, OFFSET = 0 ) {\n\n\t\treturn new Promise( ( resolve ) => {\n\n\t\t\tPromise.all( [ this.tryCachedReturn(), this.getPosition( element ) ] )\n\t\t\t\t\t.then( ( values ) => {\n\n\t\t\t\t\t\tconst\n\t\t\t\t\t\t\t\tviewport = values [ 0 ],\n\t\t\t\t\t\t\t\tposition = values [ 1 ];\n\n\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t( position.top >= -OFFSET && position.top <= viewport.height + OFFSET )\n\t\t\t\t\t\t\t\t||\n\t\t\t\t\t\t\t\t( position.bottom >= -OFFSET && position.bottom <= viewport.height - OFFSET )\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t} );\n\t}\n}\n\nconst instance = new ViewportService();//eslint-disable-line\n\nexport default instance;\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/services/Viewport.service.js","/** @module framework/offscreen */\r\nimport AbstractController from './../../base/controller/Abstract.controller.js';\r\nimport OffScreenNavigationController from './offscreen/OffscreenNavigation.controller';\r\nimport OffScreenCartController from './offscreen/OffscreenCart.controller';\r\nimport OffScreenAppDrawerController from './offscreen/OffScreenAppDrawer.controller';\r\nimport TargetGroupSelectController from './TargetGroupSelect.controller';\r\nimport { camelCaseSelector } from './../../helper/global.helper';\r\n// import fakescroll from './../../helper/fakescroll';\r\nimport { ResizeService, BreakpointService } from 'device';\r\n//import globalEvents from './../../helper/SignalWrapper';\r\nimport { IDENTIFIERS } from './../constants/Identifiers.const';\r\nimport { SELECTORS } from './../constants/Selectors.const';\r\nimport bucket from './../../services/Bucket.service';\r\n\r\nimport intersection from 'lodash.intersection';\r\nimport difference from 'lodash.difference';\r\nimport $ from 'jquery';\r\nimport { fasterdomPromised as fasterdom } from 'fasterdom';\r\n\r\nconst stateClasses = {},\r\n controllerMap = {\r\n\t 'offScreenCart' : OffScreenCartController,\r\n\t 'offScreenAppDrawer' : OffScreenAppDrawerController,\r\n\t 'offScreenNavigation' : OffScreenNavigationController\r\n };\r\n\r\n/**\r\n * Binds the scroll prevent handler to the document\r\n *\r\n * @return {void}\r\n */\r\nfunction disableScroll () {\r\n\t// fakescroll.enable();\r\n}\r\n\r\n/**\r\n * Removes the scroll prevent handler so the document can be scrolled again\r\n *\r\n * @return {void}\r\n */\r\nfunction enableScroll () {\r\n\t// fakescroll.disable();\r\n}\r\n\r\n/**\r\n * Check whether we are above the special 1600px breakpoint to enable or disable scroll while the navigation is open.\r\n * @param {function} cb - either enableScroll or disableScroll\r\n * @param {WindowDimensions} data - calculated viewport\r\n * @return {void}\r\n */\r\nfunction afterResizeCalculation ( cb, data ) {\r\n\r\n\tif ( data.width < 1600 ) {\r\n\t\tfasterdom.onFrame( cb, 2 );\r\n\t}\r\n}\r\n\r\n/**\r\n * Wait for viewport calculation to execute the callback.\r\n * @param {function} cb - either enableScroll or disableScroll\r\n * @return {void}\r\n */\r\nfunction checkForViewportAndExecute ( cb ) {\r\n\r\n\tResizeService.getCurrent()\r\n\t\t\t.then( afterResizeCalculation.bind( this, cb ) );\r\n}\r\n\r\n/**\r\n * Get the corresponding OffScreenIdentifier of a navItem or button element\r\n * @param { jQuery } $el - jOuery navItem or button element\r\n * @returns { Object|Array } - single or an array of OffScreenContainer jQuery elements\r\n * @private\r\n */\r\nfunction getIdentifier ( $el ) {\r\n\tif ( $el instanceof $ && $el.length > 0 ) {\r\n\t\tconst $btn = $el.is( 'button' ) ?\r\n\t\t $el :\r\n\t\t $el.find( 'button[' + SELECTORS.controlsSelector + ']' );\r\n\r\n\t\t// TODO: move to fasterdom?\r\n\t\treturn camelCaseSelector( $btn.attr( SELECTORS.controlsSelector ) );\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\n/**\r\n * Get the corresponding OffScreenContainer of a navItem or button element\r\n * @param { jQuery } $el - jOuery navItem or button element\r\n * @returns { Object|Array } - single or an array of OffScreenContainer jQuery elements\r\n * @private\r\n */\r\nfunction getContainer ( $el ) {\r\n\tconst self = this,\r\n\t result = [];\r\n\r\n\tif ( typeof $el === 'string' ) {\r\n\t\treturn self[ $el ];\r\n\t} else if ( typeof $el === 'object' && $el instanceof $ && $el.length > 0 ) {\r\n\t\t$el.each( ( i, val ) => {\r\n\t\t\tresult.push( self[ getIdentifier.call( self, $( val ) ) ] );\r\n\t\t} );\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\n/**\r\n * Get the corresponding OffScreenContainer Controller of a navItem or button element\r\n * @param { jQuery } $el - jOuery navItem or button element\r\n * @returns { Object|Array } - single OffScreenContainer Controller or an array of OffScreenContainer Controllers\r\n * @private\r\n */\r\nfunction getController ( $el ) {\r\n\tconst self = this,\r\n\t result = [];\r\n\r\n\tif ( typeof $el === 'string' ) {\r\n\t\treturn controllerMap[ $el ];\r\n\t} else if ( typeof $el === 'object' && $el instanceof $ && $el.length > 0 ) {\r\n\t\t$el.each( ( i, val ) => {\r\n\t\t\tresult.push( controllerMap[ getIdentifier.call( self, $( val ) ) ] );\r\n\t\t} );\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\n/**\r\n * Promise if an OffScreenContainer is closed\r\n * Method will be executed for each OffScreenContainer\r\n * @param { Object } $container - jQuery OffScreenContainer element\r\n * @returns { Promise<T> } - Promise\r\n * @private\r\n */\r\nfunction isOffScreenContainerClosed ( $container ) {\r\n\treturn new Promise( ( resolve ) => {\r\n\t\t$container.on( 'closed', () => {\r\n\t\t\tresolve( $container );\r\n\t\t} );\r\n\t} );\r\n}\r\n\r\n/**\r\n * Promise if an OffScreenContainer is opened\r\n * Method will be executed for each OffScreenContainer\r\n * @param { Object } $container - jQuery OffScreenContainer element\r\n * @returns { Promise<T> } - Promise\r\n * @private\r\n */\r\nfunction isOffScreenContainerOpened ( $container ) {\r\n\treturn new Promise( ( resolve ) => {\r\n\t\t$container.on( 'opened', () => {\r\n\t\t\tresolve( $container );\r\n\t\t} );\r\n\t} );\r\n}\r\n\r\n/**\r\n * Close OffScreenContainers and deactivate corresponding navItems\r\n * @param { jQuery } $navItem - jQuery object of navItems\r\n * @param { Array } controller - array of OffScreenContainer Controllers\r\n * @returns { void }\r\n * @private\r\n */\r\nfunction closeOffScreenContainer ( $navItem, controller ) {\r\n\tconst self = this;\r\n\r\n\tif ( $navItem.length > 0 ) {\r\n\r\n\t\tcheckForViewportAndExecute( enableScroll );\r\n\t\t//enableScroll.call( self );\r\n\r\n\t\tfasterdom.mutate( () => {\r\n\t\t\t$navItem.attr( SELECTORS.activeSelector, false ).removeClass( SELECTORS.activeClass );\r\n\t\t\t$navItem.find( 'button' ).trigger( 'setInactive.offScreen' );\r\n\t\t} );\r\n\r\n\t\t$navItem.each( ( i, val ) => {\r\n\t\t\tfasterdom.mutate( () => {\r\n\t\t\t\tself.$body.removeClass( stateClasses[ getIdentifier( $( val ) ) ] );\r\n\t\t\t} );\r\n\t\t} );\r\n\r\n\t\tfor ( let i = 0; i < controller.length; i++ ) {\r\n\t\t\tcontroller[ i ].close( $navItem.eq( i ).find( 'button' ) );\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Open OffScreenContainers and activate corresponding navItems\r\n * @param { jQuery } $navItem - jQuery object of navItems\r\n * @param { Array } controller - array of OffScreenContainer Controllers\r\n * @returns { void }\r\n * @private\r\n */\r\nfunction openOffScreenContainer ( $navItem, controller ) {\r\n\tconst self = this;\r\n\r\n\tif ( $navItem.length > 0 ) {\r\n\r\n\t\tfasterdom.mutate( () => {\r\n\t\t\t$navItem.attr( SELECTORS.activeSelector, true ).addClass( SELECTORS.activeClass );\r\n\t\t\t$navItem.find( 'button' ).trigger( 'setActive.offScreen' );\r\n\t\t} );\r\n\r\n\t\t$navItem.each( ( i, val ) => {\r\n\t\t\tfasterdom.mutate( () => {\r\n\t\t\t\tself.$body.addClass( stateClasses[ getIdentifier( $( val ) ) ] );\r\n\t\t\t} );\r\n\t\t} );\r\n\r\n\t\tfor ( let i = 0; i < controller.length; i++ ) {\r\n\t\t\tcontroller[ i ].open( $navItem.eq( i ).find( 'button' ) );\r\n\t\t}\r\n\r\n\t\tcheckForViewportAndExecute( disableScroll );\r\n\t\t/*fasterdom.onFrame( () => {\r\n\t\t disableScroll.call( self );\r\n\t\t }, 2 );*/\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks which OffScreenContainers have to be closed or opened\r\n * @param { jQuery } $newActiveNavItem - jQuery object of navItems to be set active\r\n * @param { jQuery } $curActiveNavItems - jQuery object of current active navItems to be set inactive\r\n * @returns { void }\r\n * @private\r\n */\r\nfunction toggleOffScreenContainer ( $newActiveNavItem, $curActiveNavItems ) {\r\n\tconst self = this,\r\n\t newActiveController = getController.call( self, $newActiveNavItem ),\r\n\t newActiveContainer = getContainer.call( self, $newActiveNavItem ),\r\n\t curActiveController = difference( getController.call( self, $curActiveNavItems ), newActiveController ),\r\n\t curActiveContainer = difference( getContainer.call( self, $curActiveNavItems ), getContainer.call( self, $newActiveNavItem ) ),\r\n\t isSameContainer = intersection( getContainer.call( self, $curActiveNavItems ), getContainer.call( self, $newActiveNavItem ) ).length > 0;\r\n\r\n\tif ( TargetGroupSelectController.isVisible ) {\r\n\t\tcurActiveContainer.push( TargetGroupSelectController.navContainer );\r\n\t}\r\n\r\n\tif ( !self.isDisabled ) {\r\n\t\tif ( !isSameContainer ) {\r\n\t\t\tself.isDisabled = true;\r\n\t\t}\r\n\r\n\t\tPromise.all( curActiveContainer.map( isOffScreenContainerClosed ) )\r\n\t\t\t\t.then( () => {\r\n\t\t\t\t\tconst p = Promise.all( newActiveContainer.map( isOffScreenContainerOpened ) );\r\n\r\n\t\t\t\t\topenOffScreenContainer.call( self, $newActiveNavItem, newActiveController );\r\n\r\n\t\t\t\t\treturn p;\r\n\t\t\t\t} )\r\n\t\t\t\t.then( () => {\r\n\t\t\t\t\tself.isDisabled = false;\r\n\t\t\t\t} )\r\n\t\t\t\t.catch();\r\n\r\n\t\tcloseOffScreenContainer.call( self, $curActiveNavItems, curActiveController );\r\n\r\n\t\tif ( TargetGroupSelectController.isVisible ) {\r\n\t\t\tTargetGroupSelectController.close();\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns a collection of currently active navItems\r\n * @returns { object|array } - collection of jQuery elements\r\n * @private\r\n */\r\nfunction getActiveNavItems () {\r\n\treturn this.$navItems.filter( '[' + SELECTORS.activeSelector + '=\"' + SELECTORS.activeSelectorValue + '\"]' );\r\n}\r\n\r\n/**\r\n * Sets all OffScreenContainers to be closed\r\n * @returns { void }\r\n * @private\r\n */\r\nfunction hideAllOffScreenContainer () {\r\n\tconst self = this;\r\n\r\n\ttoggleOffScreenContainer.call( self, $( [] ), getActiveNavItems.call( self ) );\r\n}\r\n\r\n/**\r\n * Add event listeners to quick-navigation buttons and OffScreenOverlay\r\n * @returns { void }\r\n * @private\r\n */\r\nfunction addHandler () {\r\n\tconst self = this;\r\n\r\n\t/**\r\n\t * open / close OffScreenContainers\r\n\t */\r\n\tself.$navItems.each( ( i, el ) => {\r\n\t\tconst $el = $( el );\r\n\r\n\t\t$el.on( 'click', 'button', ( e ) => {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tconst\r\n\t\t\t\tcontrols = e.currentTarget.getAttribute( 'aria-controls') ;\r\n\r\n\t\t\tif ( controls && controls !== 'off-screen-cart' ) {\r\n\t\t\t\tfasterdom.measureInstant( () => {\r\n\t\t\t\t\tconst curActiveNavItems = self.$navItems.filter( '[' + SELECTORS.activeSelector + '=\"' + SELECTORS.activeSelectorValue + '\"]' ),\r\n\t\t\t\t\t // TODO: maybe check controller is active instad of element class?\r\n\t\t\t\t\t newActiveNavItem = $el.hasClass( SELECTORS.activeClass ) ?\r\n\t\t\t\t\t $( [] ) :\r\n\t\t\t\t\t $el;\r\n\r\n\t\t\t\t\ttoggleOffScreenContainer.call( self, newActiveNavItem, curActiveNavItems );\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t} );\r\n\t} );\r\n\r\n\t/**\r\n\t * Hide all OffScreenContainer while OffScreenOverly is clicked\r\n\t */\r\n\tself.offScreenOverlay.on( 'click', ( e ) => {\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\r\n\t\thideAllOffScreenContainer.call( self );\r\n\t} );\r\n\r\n\t/**\r\n\t * Hide all OffScreenContainer while OffScreenOverly is clicked\r\n\t */\r\n\tself.offScreenCloseBtn.on( 'click', ( e ) => {\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\r\n\t\thideAllOffScreenContainer.call( self );\r\n\t} );\r\n}\r\n\r\n/**\r\n * Selects all necessary OffScreen DOM-Elements and provides them on scope\r\n * Collects all OffScreenContainers in a single JQuery object\r\n * Initializes OffScreenContainer classes\r\n * @returns { void }\r\n * @private\r\n */\r\nfunction mapControllers () {\r\n\tconst self = this;\r\n\r\n\tfor ( const key in IDENTIFIERS.OFF_SCREEN ) {\r\n\r\n\t\tif ( IDENTIFIERS.OFF_SCREEN.hasOwnProperty( key ) && key !== 'ROOT' && key !== 'OVERLAY' && key !== 'CONTENT' && key !== 'WRAP' ) {\r\n\r\n\t\t\tconst id = camelCaseSelector( IDENTIFIERS.OFF_SCREEN[ key ] );\r\n\r\n\t\t\tself[ id ] = $( IDENTIFIERS.OFF_SCREEN[ key ] );\r\n\t\t\tself.offScreenContainer = self.offScreenContainer.add( self[ id ] );\r\n\r\n\t\t\tstateClasses[ id ] = 'state-' + IDENTIFIERS.OFF_SCREEN[ key ].substr( 1 ) + '-visible';\r\n\t\t\tcontrollerMap[ id ].init( self[ id ] );\r\n\r\n\t\t\tcontrollerMap[ id ].onOpen( () => {\r\n\t\t\t\tfasterdom.mutateInstant( () => {\r\n\t\t\t\t\t$( IDENTIFIERS.MAIN_HEADER.ROOT ).removeAttr( 'style' );\r\n\t\t\t\t} );\r\n\t\t\t} );\r\n\r\n\t\t\tif ( controllerMap[ id ].initialOpen ) {\r\n\t\t\t\tconst\r\n\t\t\t\t\t$navItem = this.$navItems.find( 'button[aria-controls=' + IDENTIFIERS.OFF_SCREEN[ key ].substr( 1 ) + ']').parent(),\r\n\t\t\t\t\tcontroller = [ controllerMap[ id ] ];\r\n\r\n\t\t\t\tbucket.$window.load( e => {\r\n\t\t\t\t\tBreakpointService.breakpointEvent.subscribe( data => {\r\n\t\t\t\t\t\tconsole.log( 'ASDF', data, controller.isOpen );\r\n\t\t\t\t\t\tif ( [ 'xl', 'xxl' ].includes( data.alias ) && !controllerMap[ id ].isOpen ) {\r\n\t\t\t\t\t\t\topenOffScreenContainer.call( this, $navItem, controller );\r\n\t\t\t\t\t\t} else if ( ![ 'xl', 'xxl' ].includes( data.alias ) && controllerMap[ id ].isOpen ) {\r\n\t\t\t\t\t\t\tcloseOffScreenContainer.call( this, $navItem, controller );\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\t\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Class handling the state of off-screen-menus.\r\n * Controls the state of the navigation.\r\n * Controls menu item behavior.\r\n * @extends { AbstractController }\r\n */\r\nclass OffScreenController extends AbstractController {\r\n\r\n\tconstructor () {\r\n\t\tsuper();\r\n\r\n\t\tthis.$scope = null;\r\n\r\n\t\tthis.$body = null;\r\n\t\tthis.$navItems = null;\r\n\t\tthis.$navButtons = null;\r\n\t\tthis.offScreenOverlay = null;\r\n\t\tthis.offScreenCloseBtn = null;\r\n\t\tthis._isDisabled = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Initialises the controller singleton.\r\n\t * Has to be called after ready event.\r\n\t * @param { jQuery } $root - jQuery wrapped DOM node\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tinit ( $root ) {\r\n\t\tconst self = this;\r\n\r\n\t\tself.$scope = $root;\r\n\r\n\t\tself.$body = $( 'body' );\r\n\t\tself.$navItems = $( IDENTIFIERS.QUICK_NAVIGATION.ROOT ).find( '[ role=\"menubar\" ] li' );\r\n\t\tself.$navButtons = self.$navItems.find( 'button' ).not( '[aria-controls=\"off-screen-cart\"]' );\r\n\r\n\t\tself.offScreenOverlay = $( IDENTIFIERS.OFF_SCREEN.OVERLAY );\r\n\t\tself.offScreenCloseBtn = self.$scope.find( '.off-screen-close' );\r\n\t\tself.offScreenContainer = $();\r\n\r\n\t\tmapControllers.call( self );\r\n\t\taddHandler.call( self );\r\n\r\n\t\tbucket.controller.framework.offscreen = this;\r\n\t}\r\n\r\n\t/**\r\n\t * setter to disable quick navigation while animating\r\n\t * @param { Boolean } value - set active state value\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tset isDisabled ( value ) {\r\n\t\tconst action = value === true ?\r\n\t\t 'add' :\r\n\t\t 'remove';\r\n\r\n\t\tfasterdom.mutateInstant( () => {\r\n\t\t\tthis.$scope[ action + 'Class' ]( SELECTORS.disabled );\r\n\t\t} );\r\n\t\tthis._isDisabled = value === true;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if OffScreen has style class disabled\r\n\t * @returns { Boolean } - if OffScreen is disabled\r\n\t * @public\r\n\t */\r\n\tget isDisabled () {\r\n\t\treturn this._isDisabled;\r\n\t}\r\n\r\n\tgetActiveContainer () {\r\n\t\treturn getContainer.call( this, getActiveNavItems.call( this ) );\r\n\t}\r\n\r\n\tset isOpen ( is ) {\r\n\t\tthis._isOpen = is === true;\r\n\t}\r\n\r\n\tget isOpen () {\r\n\t\treturn getActiveNavItems.call( this ).length > 0;\r\n\t}\r\n\r\n\t// get isOverlay () {\r\n\t// \treturn this.offScreenOverlay.is( ':visible' );\r\n\t// }\r\n\t/**\r\n\t * Closes all OffScreenContainers\r\n\t * @returns { void }\r\n\t * @public\r\n\t */\r\n\tclose () {\r\n\t\thideAllOffScreenContainer.call( this );\r\n\t}\r\n}\r\n\r\n/**\r\n * @type { OffScreenController }\r\n * @private\r\n */\r\nconst instance = new OffScreenController(); // eslint-disable-line one-var\r\n\r\nexport default instance;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/framework/controller/Offscreen.controller.js","import AbstractController from './../../base/controller/Abstract.controller';\nimport TransitionEventController from './../../base/controller/TransitionEvent.controller';\nimport OffScreenController from './Offscreen.controller';\nimport bucket from './../../services/Bucket.service';\nimport { SELECTORS } from './../constants/Selectors.const';\nimport { IDENTIFIERS } from './../constants/Identifiers.const';\n\nimport Device from 'device';\nimport $ from 'jquery';\nimport fasterdom from 'fasterdom';\n\n/**\n * Promises if container element is closed\n * @param { jQuery } $container - jQuery element\n * @returns { Promise<T> } - Promise\n * @private\n */\nfunction promiseClosed ( $container ) {\n\treturn new Promise( ( resolve ) => {\n\t\t$container.on( 'closed', () => {\n\t\t\tresolve( $container );\n\t\t} );\n\t} );\n}\n\n/**\n * Shows the TargetGroupSelect list\n * Closes all containers which have to be closed in first place\n * @returns { void }\n * @private\n */\nfunction showSelect () {\n\tconst self = this;\n\tlet openContainer = [];\n\n\tif ( !self.disabled ) {\n\t\tself.disabled = true;\n\n\t\tif ( OffScreenController.isOpen ) {\n\t\t\topenContainer = openContainer.concat( OffScreenController.getActiveContainer() );\n\t\t}\n\n\t\tPromise.all( openContainer.map( promiseClosed ) )\n\t\t\t\t.then( () => {\n\t\t\t\t\tfasterdom.mutateInstant( () => {\n\t\t\t\t\t\tself.$scope.addClass( 'container-expanded' );\n\t\t\t\t\t\tself.navController.open();\n\t\t\t\t\t\tself.navContainer.addClass( SELECTORS.activeClass );\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch();\n\n\t\tif ( OffScreenController.isOpen ) {\n\t\t\tOffScreenController.close();\n\t\t}\n\t}\n}\n\n/**\n * Hides the TargetGroupSelect list\n * @returns { void }\n * @private\n */\nfunction hideSelect () {\n\tconst self = this;\n\n\tif ( !self.disabled ) {\n\t\tself.disabled = true;\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tself.$scope.removeClass( 'container-expanded' );\n\t\t\tself.navController.close();\n\t\t\tself.navContainer.removeClass( SELECTORS.activeClass );\n\t\t} );\n\t}\n}\n\n/**\n * Add event listeners to handle click events\n * @returns { void }\n * @private\n */\nfunction addHandler () {\n\tconst self = this;\n\n\tself.navTrigger.on( 'click', ( e ) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tif ( self.isVisible ) {\n\t\t\thideSelect.call( self );\n\t\t} else {\n\t\t\tshowSelect.call( self );\n\t\t}\n\t} );\n\n\tself.navContainer.on( 'opened closed', () => {\n\t\tself.disabled = false;\n\t} );\n\n\tself.navContainer.on( 'click', () => {\n\t\thideSelect.call( self );\n\t} );\n\n\tDevice.breakpointEvent.subscribe( () => {\n\t\tself.navController.setTransition( 'transform' );\n\t} );\n}\n\n/**\n * Initializes the TransitionEventController for navContainer, mainHeader and OffScreenContent\n * @returns { void }\n */\nfunction initNavController () {\n\tconst self = this,\n\t controller = new TransitionEventController(),\n\t slaveContainer = self.$offScreenWrap;\n\n\tcontroller.init( self.navContainer );\n\tcontroller.setTransition( 'transform' );\n\n\tcontroller.beforeOpen( () => {\n\t\tlet h = 0;\n\n\t\tfasterdom.measureInstant( () => {\n\t\t\th = self.navContainer.outerHeight( true );\n\t\t} );\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tslaveContainer.addClass( 'tgs--during-animation tgs--during-animation--open' ).css( {\n\t\t\t\t transform : 'translateY(' + h + 'px)'\n\t\t\t } );\n\t\t} );\n\t} );\n\n\tcontroller.afterOpen( () => {\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tself.navContainer.css( {\n\t\t\t\t position : 'relative'\n\t\t\t } );\n\n\t\t\tslaveContainer.css( {\n\t\t\t\t transform : ''\n\t\t\t } ).removeClass( 'tgs--during-animation tgs--during-animation--open' );\n\t\t} );\n\t} );\n\n\tcontroller.beforeClose( () => {\n\t\tlet h = 0;\n\n\t\tfasterdom.measureInstant( () => {\n\t\t\th = self.navContainer.outerHeight( true ) * -1;\n\t\t} );\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tslaveContainer.css( {\n\t\t\t\t transform : 'translateY(' + h + 'px)'\n\t\t\t } ).addClass( 'tgs--during-animation tgs--during-animation--close' );\n\t\t} );\n\t} );\n\n\tcontroller.afterClose( () => {\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tself.navContainer.css( {\n\t\t\t\t position : ''\n\t\t\t } );\n\n\t\t\tslaveContainer.css( {\n\t\t\t\t transform : ''\n\t\t\t } ).removeClass( 'tgs--during-animation tgs--during-animation--close' );\n\t\t} );\n\n\t} );\n\n\tself.navController = controller;\n\n}\n\n/**\n * Class representing the main navigation menu.\n * Controls the state of the navigation.\n * Controls menu item behavior.\n * @extends { AbstractController }\n */\nclass TargetGroupSelectController extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.navTrigger = null;\n\t\tthis.navButtons = null;\n\t\tthis.navContainer = null;\n\t\tthis.navController = null;\n\n\t\tthis.$offScreenContent = null;\n\t\tthis.$mainHeader = null;\n\n\t\tthis._isDisabled = false;\n\t}\n\n\t/**\n\t * Initialises the controller singleton.\n\t * Has to be called after ready event.\n\t * @param { jQuery } $root - jQuery wrapped DOM node\n\t * @returns { void }\n\t * @public\n\t */\n\tinit ( $root ) {\n\t\tconst self = this;\n\n\t\tsuper.init( $root );\n\n\t\tself.$scope = $root;\n\n\t\tself.$parent = self.$scope.parent();\n\t\tself.navTrigger = self.$scope.find( '.target-group-select--trigger' );\n\t\tself.navContainer = self.$scope.find( '#target-group-select-list' );\n\t\tself.navButtons = self.$scope.find( 'a' );\n\n\t\tself.$offScreenContent = $( IDENTIFIERS.OFF_SCREEN.CONTENT );\n\t\tself.$offScreenWrap = $( IDENTIFIERS.OFF_SCREEN.WRAP );\n\t\tself.$mainHeader = $( IDENTIFIERS.MAIN_HEADER.ROOT );\n\n\t\tinitNavController.call( self );\n\t\taddHandler.call( self );\n\t}\n\n\t/**\n\t * Dis/Enables TargetGroupSelect events\n\t * @param { boolean } is - flag to disable/enable events\n\t * @returns { void }\n\t * @public\n\t */\n\tset disabled ( is ) {\n\t\tconst action = is === true ? 'add' : 'remove';\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tthis.$scope[ action + 'Class' ]( SELECTORS.disabled );\n\t\t} );\n\t\tthis._isDisabled = is === true;\n\t}\n\n\t/**\n\t * Returns a boolean value representing if TargetGroupEvents are disabled or not\n\t * @returns { boolean } - are TargetGroupEvents disabled\n\t * @public\n\t */\n\tget disabled () {\n\t\treturn this._isDisabled;\n\t}\n\n\t/**\n\t * Returns boolean value representing if TargetGroupSelect is currently visible or not\n\t * @returns { boolean } - is TargetGroupSelect visible\n\t * @public\n\t */\n\tget isVisible () {\n\t\treturn this.navController && this.navController.isOpen;\n\t}\n\n\t/**\n\t * Close TargetGroupSelect\n\t * @returns { void }\n\t * @public\n\t */\n\tclose () {\n\t\thideSelect.call( this );\n\t}\n}\n\n/**\n * @private\n */\nconst instance = new TargetGroupSelectController(); // eslint-disable-line one-var\n\nexport default instance;\n\n\n\n// WEBPACK FOOTER //\n// ./js/framework/controller/TargetGroupSelect.controller.js","import AbstractController from './../../base/controller/Abstract.controller';\nimport WindowGateway from './../../services/gateways/WindowGateway.service';\nimport IFrameChildController from './IframeChild.controller';\nimport {EVENTS} from './IframeChild.controller';\n\nimport url from 'url';\n\nimport dom from 'fasterdom';\n\nconst iFrameChildControllerInstance = new IFrameChildController();\n\nfunction waitForTimeout ( msec ) {\n\treturn new Promise( ( resolve ) => setTimeout( resolve, msec ) );\n}\n\nfunction sendHandshake () {\n\tthis.logger.log( 'Sending handshake', this._uid );\n\tconst message = {\n\t\ttype : EVENTS.HANDSHAKE,\n\t\tdata : {\n\t\t\torigin : window.location.origin,\n\t\t\thref : window.location.href,\n\t\t\tconnectionId : this._uid\n\t\t}\n\t};\n\n\tthis.gateway.sendToChild( this.$iFrame[ 0 ], message, '*' );\n}\n\nfunction handshakeConfirmed ( message ) {\n\treturn message.type && message.type === EVENTS.HANDSHAKE_CONFIRMED && message.connectionId === this._uid;\n}\n\nfunction stopPollTimer () {\n\tif ( this.pollTimer !== null ) {\n\t\tclearTimeout( this.pollTimer );\n\t\tthis.pollTimer = null;\n\t}\n}\n\nfunction pollWithHandshake () {\n\tif ( this.state.isHandshaked ) {\n\t\treturn;\n\t}\n\n\tthis::sendHandshake();\n\tthis::stopPollTimer();\n\n\tthis.pollTimer = setTimeout( () => {\n\t\tthis.pollTimer = null;\n\t\tthis::pollWithHandshake();\n\t}, 250 );\n}\n\nfunction waitForLoad () {\n\tthis.$iFrame.on( 'load', () => {\n\t\tif ( this.state.isHandshaked ) {\n\t\t\treturn;\n\t\t}\n\t\tthis::sendHandshake();\n\t} );\n}\n\nfunction waitForHandshake () {\n\tthis.handshakeConfirmedPromise = new Promise( ( resolve, reject ) => {\n\t\tthis.gateway.messageEvent.subscribe( ( message ) => {\n\t\t\tif ( this::handshakeConfirmed( message ) ) {\n\t\t\t\tresolve();\n\t\t\t}\n\t\t} );\n\t} );\n\n\tthis::waitForLoad();\n\tthis::pollWithHandshake();\n\n\treturn this.handshakeConfirmedPromise\n\t\t\t.then( () => {\n\t\t\t\tthis.logger.log( 'Handshake confirmed', this._uid );\n\t\t\t\tthis.state.isHandshaked = true;\n\t\t\t\tthis::stopPollTimer();\n\t\t\t} )\n\t\t\t.catch( this.logger.error );\n}\n\n/**\n * Set the respective iFrames height\n * @param {int} pxHeight - the height which was received in the data object via cross domain communication\n * @returns {void}\n */\nfunction setHeight ( pxHeight ) {\n\tdom.mutateInstant( () => this.$iFrame.height( pxHeight ) );\n}\n\n/**\n * Set the container state to loading.\n * @returns {void}\n */\nfunction setLoadingState () {\n\tdom.mutateInstant( () => {\n\t\tthis.$scope.removeClass( 'iframe--loaded' );\n\t\tthis.$scope.addClass( 'iframe--loading' );\n\t} );\n}\n\n/**\n * Handle the iFrame load event.\n * @returns {void}\n */\nfunction handleLoad () {\n\tthis.logger.log( 'iframe loaded' );\n\tthis::stopPollTimer();\n\n\tdom.mutateInstant( () => {\n\t\tthis.$scope.removeClass( 'iframe--loading' );\n\t\tthis.$scope.addClass( 'iframe--loaded' );\n\t} );\n}\n\nfunction attachLoadHandler () {\n\tPromise.race( [\n\t\t this::waitForHandshake(),\n\t\t this::waitForTimeout( 2000 )\n\t ] )\n\t\t\t.then( this::handleLoad )\n\t\t\t.catch( ( e ) => this.logger.log( e ) );\n}\n\n/**\n * Set the height of the current iFrame with the height received from the message\n * @param {iFrameMessage} message - the post message which was received\n * @returns {void}\n */\nfunction receiveMessage ( message ) {\n\n\tif ( !message.type || message.connectionId !== this._uid ) {\n\t\treturn;\n\t}\n\n\tswitch ( message.type ) {\n\n\t\tcase EVENTS.RESIZE:\n\n\t\t\tif ( message.data.height ) {\n\t\t\t\tthis::setHeight( message.data.height );\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase EVENTS.LOAD:\n\n\t\t\tif ( message.connectionId === this._uid ) {\n\t\t\t\t//TBD\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase EVENTS.UNLOAD:\n\t\t\tthis.state.isHandshaked = false;\n\t\t\tthis::attachLoadHandler();\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Class representing an iframe instance.\n * Controls the state of the iframe.\n * Controls menu item behavior.\n * @extends { AbstractController }\n */\nclass IFrameController extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.debug = false;\n\t\tthis.pollTimer = null;\n\t\tthis._uid = Object._uid( this );\n\t\tthis.gateway = new WindowGateway();\n\t}\n\n\t/**\n\t * Initialiss the controller.\n\t * Has to be called after ready event.\n\t *\n\t * @override\n\t * @param { object } $root - jQuery wrapped DOM node\n\t * @public\n\t */\n\tinit ( $root ) {\n\n\t\tthis.$scope = $root;\n\t\tthis.$iFrame = this.$scope.find( 'iframe' );\n\t\tthis.src = this.$iFrame.attr( 'src' );\n\n\t\tthis::setLoadingState( this );\n\t\tthis::attachLoadHandler();\n\n\t\tthis.gateway.messageEvent.subscribe( this::receiveMessage );\n\t}\n}\n\nexport default IFrameController;\nexport {iFrameChildControllerInstance};\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/Iframe.controller.js","import AbstractController from './../../base/controller/Abstract.controller';\nimport ACCItemController from './ACCItem.controller';\n\nimport Signal from 'signal';\nimport Device from 'device';\nimport fasterdom from 'fasterdom';\nimport $ from 'jquery';\n\nconst\n\tdefaultOptions = {\n\t\titemSelector : '> ul > .accordion-item, > ol > .accordion-item',\n\t\titemTrigger : '> section > .accordion-item__headline',\n\t\tscrollOnInitialOpen : false,\n\t\tscrollOnOpen : true,\n\t\tmultiExpandable : false,\n\t\tdesktopExpanded : false,\n\t\tmobileExpanded : false,\n\t\tmobileOnly : false\n\t};\n\n\n/**\n * Binds event handler to the current scope\n * @private\n * @return { void }\n */\nfunction addHandler () {\n\tconst self = this;\n\n\tself.$items.each( ( i, v ) => {\n\t\tconst $this = $( v ),\n\t\t controllerInstance = new ACCItemController();\n\n\t\tcontrollerInstance.init( $this, this.options );\n\t\tself.subController.push( controllerInstance );\n\n\t\t// TODO: t.kiss refactor!!!\n\t\tDevice.breakpointEvent.subscribe( ( e ) => {\n\n\t\t\tif ( self.options.desktopExpanded && [ 'lg', 'xl', 'xxl' ].includes( e.alias ) || self.options.mobileExpanded && [ 'sm', 'md' ].includes( e.alias ) ) {\n\n\t\t\t\tfasterdom.onFrameInstant( () => {\n\t\t\t\t\tcontrollerInstance.openSilent();\n\n\t\t\t\t\tself._closeOpen.add( () => {\n\t\t\t\t\t\tcontrollerInstance.close( $this );\n\t\t\t\t\t}, '_', true );\n\t\t\t\t}, 2 );\n\n\t\t\t}\n\t\t} );\n\n\t\tcontrollerInstance.onOpen( () => {\n\t\t\tif ( self.$scope.hasClass( 'item--opened' ) && self.options.multiExpandable ) {\n\t\t\t\tself.$scope.addClass( 'items--opened' );\n\t\t\t} else {\n\t\t\t\tself.$scope.addClass( 'item--opened' );\n\t\t\t}\n\t\t} );\n\n\t\tcontrollerInstance.afterClose( () => {\n\t\t\tfasterdom.measure( () => {\n\t\t\t\tconst curOpen = self.$items.filter( '[aria-expanded=true]' ).length;\n\n\t\t\t\tfasterdom.mutateInstant( () => {\n\t\t\t\t\tif ( curOpen === 1 ) {\n\t\t\t\t\t\tself.$scope.removeClass( 'items--opened' );\n\t\t\t\t\t}\n\t\t\t\t\tif ( curOpen === 0 ) {\n\t\t\t\t\t\tself.$scope.removeClass( 'item--opened' );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\t$this.on( 'click', this.options.itemTrigger, ( e ) => {\n\t\t\tif ( controllerInstance.isDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst $t = $( this );\n\n\t\t\tcontrollerInstance._initial = false;\n\t\t\tcontrollerInstance._userInitiated = true;\n\n\t\t\tif ( !self.options.multiExpandable ) {\n\t\t\t\tself._closeOpen.dispatch();\n\t\t\t} else {\n\t\t\t\tcontrollerInstance.close( $t );\n\t\t\t}\n\n\t\t\tif ( !controllerInstance.isOpen ) {\n\t\t\t\tcontrollerInstance.open( $t );\n\t\t\t\tself._closeOpen.add( () => {\n\t\t\t\t\tcontrollerInstance.close( $t );\n\t\t\t\t}, '_', true );\n\t\t\t}\n\n\t\t} );\n\n\t\tfasterdom.onFrameInstant( () => {\n\n\t\t\tif ( controllerInstance.isOpen ) {\n\n\t\t\t\tself._closeOpen.add( () => {\n\t\t\t\t\tcontrollerInstance.close( $this );\n\t\t\t\t}, '_', true );\n\t\t\t}\n\n\t\t}, 2 );\n\n\t\tcontrollerInstance.subscribeHeight( self.childHeight.bind( self ) );\n\n\t} );\n}\n\nfunction removeHandler () {\n\tif ( this.$items ) {\n\t\tthis.$items.each( ( i, v ) => {\n\t\t\tconst\n\t\t\t\t$this = $( v );\n\n\t\t\t$this.off( 'click' );\n\t\t} )\n\t}\n}\n\n/**\n * Class representing an accordion instance.\n * Controls the state of the accordion.\n * Controls menu item behavior.\n * @extends { AbstractController }\n */\nclass ACCController extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.$scope = null;\n\n\t\tthis._closeOpen = new Signal();\n\t\tthis.isInitiated = false;\n\t}\n\n\t/**\n\t * Initialises the controller.\n\t * Has to be called after ready event.\n\t *\n\t * @public\n\t * @param {jQuery} $root jQuery wrapped DOM node\n\t * @param {Object} [options={}] Options to use on ACC Instance\n\t * @return { void }\n\t */\n\tinit ( $root, options = {} ) {\n\t\tif ( $root.data( 'noJs' ) || $root.data( 'nojs' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$scope = $root;\n\t\tthis.scope = $root[ 0 ];\n\n\t\tconst optionsViaClass = {\n\t\t\tmultiExpandable : this.scope.classList.contains( 'acc--multi-expandable' ),\n\t\t\tdesktopExpanded : this.scope.classList.contains( 'acc--desktop-expanded' ),\n\t\t\tmobileExpanded : this.scope.classList.contains( 'acc--mobile-expanded' ),\n\t\t\tmobileOnly : this.scope.classList.contains( 'acc--mobile-only' )\n\t\t};\n\n\t\tthis.options = Object.assign( {}, defaultOptions, optionsViaClass, options );\n\n\t\tthis.$items = this.$scope.find( this.options.itemSelector );\n\t\tthis.subController = [];\n\n\t\taddHandler.call( this );\n\n\t\tif ( this.options.mobileOnly ) {\n\t\t\tDevice.breakpointEvent.subscribe( ( e ) => {\n\t\t\t\tif ( [ 'sm', 'md' ].includes( e.alias ) ) {\n\t\t\t\t\tthis.enable();\n\t\t\t\t} else {\n\t\t\t\t\t// this.options.scrollOnOpen = false;\n\t\t\t\t\tthis.disable();\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t}\n\n\t/**\n\t * Disables the accordion logic and expands all items\n\t * @returns {void}\n\t */\n\tdisable () {\n\t\tthis._closeOpen.clear();\n\t\tthis._isDisabled = true;\n\n\t\tthis.subController.map( ( instance ) => {\n\t\t\tinstance.disable();\n\t\t\treturn instance;\n\t\t} );\n\t}\n\n\t/**\n\t * Enables the accordion logic and collapses all items\n\t * @returns {void}\n\t */\n\tenable () {\n\t\tthis._closeOpen.clear();\n\t\tthis._isDisabled = false;\n\n\t\tthis.subController.map( ( instance ) => {\n\t\t\tinstance.enable();\n\t\t\treturn instance;\n\t\t} );\n\t}\n\n\tchildHeight ( h ) {}\n\n\treInit () {\n\t\tthis::removeHandler();\n\n\t\tthis.subController.forEach( controller => {\n\t\t\tcontroller = controller.destroy();\n\t\t} );\n\n\t\tthis.subController = [];\n\n\t\tthis.init( this.$scope, this.options );\n\t}\n\n}\n\nexport default ACCController;\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/ACC.controller.js","\"use strict\";\nvar AsyncAction_1 = require('./AsyncAction');\nvar AsyncScheduler_1 = require('./AsyncScheduler');\n/**\n *\n * Async Scheduler\n *\n * <span class=\"informal\">Schedule task as if you used setTimeout(task, duration)</span>\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asap} scheduler.\n *\n * @example <caption>Use async scheduler to delay task</caption>\n * const task = () => console.log('it works!');\n *\n * Rx.Scheduler.async.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n *\n *\n * @example <caption>Use async scheduler to repeat task in intervals</caption>\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * Rx.Scheduler.async.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n *\n * @static true\n * @name async\n * @owner Scheduler\n */\nexports.async = new AsyncScheduler_1.AsyncScheduler(AsyncAction_1.AsyncAction);\n//# sourceMappingURL=async.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/scheduler/async.js\n// module id = 575\n// module chunks = 16","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar OuterSubscriber_1 = require('../OuterSubscriber');\nvar subscribeToResult_1 = require('../util/subscribeToResult');\nexports.defaultThrottleConfig = {\n leading: true,\n trailing: false\n};\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for a duration determined by another Observable, then repeats this\n * process.\n *\n * <span class=\"informal\">It's like {@link throttleTime}, but the silencing\n * duration is determined by a second Observable.</span>\n *\n * <img src=\"./img/throttle.png\" width=\"100%\">\n *\n * `throttle` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled by calling the `durationSelector` function with the source value,\n * which returns the \"duration\" Observable. When the duration Observable emits a\n * value or completes, the timer is disabled, and this process repeats for the\n * next source value.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.throttle(ev => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration for each source value, returned as an Observable or a Promise.\n * @param {Object} config a configuration object to define `leading` and `trailing` behavior. Defaults\n * to `{ leading: true, trailing: false }`.\n * @return {Observable<T>} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttle\n * @owner Observable\n */\nfunction throttle(durationSelector, config) {\n if (config === void 0) { config = exports.defaultThrottleConfig; }\n return function (source) { return source.lift(new ThrottleOperator(durationSelector, config.leading, config.trailing)); };\n}\nexports.throttle = throttle;\nvar ThrottleOperator = (function () {\n function ThrottleOperator(durationSelector, leading, trailing) {\n this.durationSelector = durationSelector;\n this.leading = leading;\n this.trailing = trailing;\n }\n ThrottleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing));\n };\n return ThrottleOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc\n * @ignore\n * @extends {Ignored}\n */\nvar ThrottleSubscriber = (function (_super) {\n __extends(ThrottleSubscriber, _super);\n function ThrottleSubscriber(destination, durationSelector, _leading, _trailing) {\n _super.call(this, destination);\n this.destination = destination;\n this.durationSelector = durationSelector;\n this._leading = _leading;\n this._trailing = _trailing;\n this._hasTrailingValue = false;\n }\n ThrottleSubscriber.prototype._next = function (value) {\n if (this.throttled) {\n if (this._trailing) {\n this._hasTrailingValue = true;\n this._trailingValue = value;\n }\n }\n else {\n var duration = this.tryDurationSelector(value);\n if (duration) {\n this.add(this.throttled = subscribeToResult_1.subscribeToResult(this, duration));\n }\n if (this._leading) {\n this.destination.next(value);\n if (this._trailing) {\n this._hasTrailingValue = true;\n this._trailingValue = value;\n }\n }\n }\n };\n ThrottleSubscriber.prototype.tryDurationSelector = function (value) {\n try {\n return this.durationSelector(value);\n }\n catch (err) {\n this.destination.error(err);\n return null;\n }\n };\n ThrottleSubscriber.prototype._unsubscribe = function () {\n var _a = this, throttled = _a.throttled, _trailingValue = _a._trailingValue, _hasTrailingValue = _a._hasTrailingValue, _trailing = _a._trailing;\n this._trailingValue = null;\n this._hasTrailingValue = false;\n if (throttled) {\n this.remove(throttled);\n this.throttled = null;\n throttled.unsubscribe();\n }\n };\n ThrottleSubscriber.prototype._sendTrailing = function () {\n var _a = this, destination = _a.destination, throttled = _a.throttled, _trailing = _a._trailing, _trailingValue = _a._trailingValue, _hasTrailingValue = _a._hasTrailingValue;\n if (throttled && _trailing && _hasTrailingValue) {\n destination.next(_trailingValue);\n this._trailingValue = null;\n this._hasTrailingValue = false;\n }\n };\n ThrottleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this._sendTrailing();\n this._unsubscribe();\n };\n ThrottleSubscriber.prototype.notifyComplete = function () {\n this._sendTrailing();\n this._unsubscribe();\n };\n return ThrottleSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=throttle.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/throttle.js\n// module id = 576\n// module chunks = 16","export const IDENTIFIERS = {\n\tDATEPICKER : {\n\t\tROOT : '[data-element=datepicker]'\n\t},\n\tVALUE_SLIDER : {\n\t\tROOT : '[data-tpl=valueSlider]'\n\t},\n\tAUTOCOMPLETE : {\n\t\tROOT : '.autocomplete'\n\t},\n\tTOGGLE_SWITCH : {\n\t\tROOT : '[data-element=toggle-switch]',\n\t\tLABEL : '[data-element=toggle-switch] label'\n\t}\n};\n\n\n// WEBPACK FOOTER //\n// ./js/elements/constants/Identifiers.const.js","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/babel-runtime/helpers/extends.js\n// module id = 578\n// module chunks = 16","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/lodash.debounce/index.js\n// module id = 580\n// module chunks = 16","import AbstractController from './../../base/controller/Abstract.controller';\r\nimport fasterdom from 'fasterdom';\r\nimport ClickOutside from './../../helper/clickoutside.class';\r\nimport {IDENTIFIERS} from './../../components/constants/Identifiers.const';\r\nimport { SELECTORS } from './../../framework/constants/Selectors.const';\r\nimport {IDENTIFIERS as FRAMEWORK_IDENTIFIERS} from './../../framework/constants/Identifiers.const';\r\nimport device, { ResizeService, ScrollService } from 'device';\r\nimport debounce from 'lodash.debounce';\r\nimport $ from 'jquery';\r\n\r\n/**\r\n * closes tooltip\r\n * @returns {boolean} - updated\r\n */\r\nfunction close () {\r\n\r\n\tif ( !this.isOpen ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tthis.logger.log( 'Close' );\r\n\r\n\tif ( this.clickoutside && this.clickoutside.active ) {\r\n\t\tthis.clickoutside.destroy();\r\n\t}\r\n\r\n\tfasterdom.mutate( () => {\r\n\t\tthis.$root.attr( SELECTORS.expandedSelector, null );\r\n\t\tthis.isOpen = false;\r\n\t} );\r\n\r\n\tif ( this.scroll.enabled && this.scroll.history ) {\r\n\t\tScrollService.toPosition( this.scroll.history, { animated : true } );\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\n/**\r\n * handles click on close button\r\n * @param {object} e - click event\r\n * @returns {void}\r\n */\r\nfunction handleCloseClick ( e ) {\r\n\te.preventDefault();\r\n\te.stopImmediatePropagation();\r\n\r\n\tclose.call( this );\r\n}\r\n\r\n/**\r\n * handles click outside tooltip\r\n * @param {object} e - click outside event\r\n * @returns {void}\r\n */\r\nfunction handleClickOutside ( e ) {\r\n\tclose.call( this );\r\n}\r\n\r\n/**\r\n * opens tooltip\r\n * @returns {boolean} - updated\r\n */\r\nfunction open () {\r\n\tif ( this.isOpen ) {\r\n\t\treturn false;\r\n\t}\r\n\tthis.logger.log( 'Open' );\r\n\r\n\tfasterdom.measure( () => this.$close.on( 'click', handleCloseClick.bind( this ) ) );\r\n\r\n\tif ( this.scroll.enabled ) {\r\n\t\tScrollService\r\n\t\t\t.getCurrent()\r\n\t\t\t.then( position => this.scroll.history = position )\r\n\t\t\t.then( ScrollService.toElement( this.$root ) );\r\n\t}\r\n\r\n\tfasterdom.mutate( () => {\r\n\t\t// this.$root.addClass( 'open' );\r\n\t\tthis.$root.attr( SELECTORS.expandedSelector, '' );\r\n\t\tthis.isOpen = true;\r\n\t} );\r\n\r\n\tthis.clickoutside = new ClickOutside( this.$root, handleClickOutside.bind( this ) );\r\n\r\n\treturn true;\r\n}\r\n\r\n/**\r\n * handles click on tooltip trigger\r\n * @param {object} e - click event\r\n * @returns {void}\r\n */\r\nfunction handleTriggerClick ( e ) {\r\n\tthis.logger.log( 'Trigger Clicked' );\r\n\te.preventDefault();\r\n\r\n\tif ( this.isOpen ) {\r\n\t\tclose.call( this );\r\n\t} else {\r\n\t\topen.call( this );\r\n\t}\r\n}\r\n\r\n/**\r\n * @private\r\n * @returns { void }\r\n */\r\nfunction addHandler () {\r\n\r\n\tthis.$close.on( 'click', handleCloseClick.bind( this ) );\r\n\tthis.$trigger.on( 'click', handleTriggerClick.bind( this ) );\r\n\tdevice.resizeEvent.subscribe( debounce( ::this.calculateHorizontalPositioning, 250 ) );\r\n\tdevice.scrollEvent.subscribe( debounce( ::this.calculateVerticalPositioning, 250 ) );\r\n\r\n}\r\n\r\n/**\r\n * Class representing an languageswitch (LAS01)\r\n * @extends { AbstractController }\r\n */\r\nclass TooltipController extends AbstractController {\r\n\r\n\tconstructor () {\r\n\t\tsuper();\r\n\r\n\t\tthis.debug = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Initialises the controller.\r\n\t * Has to be called after ready event.\r\n\t *\r\n\t * @param { jQuery } $root - jQuery wrapped DOM node\r\n\t * @public\r\n\t * @return { TooltipController } instance\r\n\t */\r\n\tinit ( $root ) {\r\n\t\tif ( $root.data( 'noJs' ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.logger.log( 'Init' );\r\n\t\tthis.$root = $root;\r\n\t\tthis.isOpen = false;\r\n\r\n\t\tthis.scroll = {\r\n\t\t\tenabled : true,\r\n\t\t\thistory : false\r\n\t\t};\r\n\r\n\t\tfasterdom.measure( () => {\r\n\t\t\tthis.offScreenContent = $( FRAMEWORK_IDENTIFIERS.OFF_SCREEN.CONTENT );\r\n\t\t\tthis.$close = this.$root.find( IDENTIFIERS.TOOLTIP.CLOSE );\r\n\t\t\tthis.$container = this.$root.find( IDENTIFIERS.TOOLTIP.CONTAINER );\r\n\t\t\tthis.$trigger = this.$root.find( IDENTIFIERS.TOOLTIP.TRIGGER );\r\n\t\t\taddHandler.call( this );\r\n\t\t} );\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * calculates horizontal dimensions of tooltip container\r\n\t * @param {object} e - breakpoint event\r\n\t * @returns {void}\r\n\t */\r\n\tcalculateHorizontalPositioning ( e ) {\r\n\t\tlet leftOffset;\r\n\r\n\t\tfasterdom.measureInstant( () => {\r\n\t\t\tleftOffset = this.$root.offset().left;\r\n\t\t\tif ( !this.$root.is( ':visible' ) ) {\r\n\t\t\t\twindow.setTimeout( () => {\r\n\t\t\t\t\tResizeService.getCurrent().then( ::this.calculateHorizontalPositioning );\r\n\t\t\t\t}, 200 );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tfasterdom.mutateInstant( () => {\r\n\r\n\t\t\t// if < 1/3 vw\r\n\t\t\tif ( leftOffset < e.width / 3 ) {\r\n\t\t\t\tthis.$root.addClass( 'tooltip--left' ).removeClass( 'tooltip--center tooltip--right' );\r\n\t\t\t}\r\n\r\n\t\t\t// if > 2/3 vw\r\n\t\t\tif ( leftOffset > e.width / 1.5 ) {\r\n\t\t\t\tthis.$root.addClass( 'tooltip--right' ).removeClass( 'tooltip--center tooltip--left' );\r\n\t\t\t}\r\n\r\n\t\t\t// if > 1/3 vw && < 2/3 vw\r\n\t\t\tif ( leftOffset > e.width / 3 && leftOffset < e.width / 1.5 ) {\r\n\t\t\t\tthis.$root.addClass( 'tooltip--center' ).removeClass( 'tooltip--left tooltip--right' );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * calculates vertical dimensions of tooltip container\r\n\t * @param {object} e - breakpoint event\r\n\t * @returns {void}\r\n\t */\r\n\tcalculateVerticalPositioning ( e ) {\r\n\t\tlet topOffset,\r\n\t\t scrollTop,\r\n\t\t placeAbove,\r\n\t\t containerHeight;\r\n\r\n\t\tfasterdom.measureInstant( () => {\r\n\t\t\ttopOffset = this.$root.offset().top;\r\n\t\t\tscrollTop = e.y;\r\n\t\t\tplaceAbove = topOffset - scrollTop - this.offScreenContent ?\r\n\t\t\t this.offScreenContent.offset().top :\r\n\t\t\t 0;\r\n\t\t\tcontainerHeight = this.$container.outerHeight();\r\n\r\n\t\t\tif ( !this.$root.is( ':visible' ) ) {\r\n\t\t\t\twindow.setTimeout( () => {\r\n\t\t\t\t\tScrollService.getCurrent().then( ::this.calculateVerticalPositioning );\r\n\t\t\t\t}, 200 );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tfasterdom.mutateInstant( () => {\r\n\t\t\tif ( placeAbove > containerHeight ) {\r\n\t\t\t\tthis.$root.addClass( 'tooltip--top' ).removeClass( 'tooltip--bottom' );\r\n\t\t\t} else {\r\n\t\t\t\tthis.$root.addClass( 'tooltip--bottom' ).removeClass( 'tooltip--top' );\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n}\r\n\r\nexport default TooltipController;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/Tooltip.controller.js","\nexport default function mixins ( ...which ) {\n\treturn ( target ) => {\n\t\tObject.assign( target.prototype, ...which );\n\t};\n}\n\n\n\n// WEBPACK FOOTER //\n// ./js/decorators/mixins.decorator.js","import Logger from 'frontend-logger';\r\n\r\n/**\r\n * Instantiates a module with a given config\r\n * @private\r\n * @param {BaseModule} Module\r\n * @param {moduleConfig} moduleConfig\r\n */\r\nfunction _launch ( moduleConfig, Module ) {\r\n\r\n\treturn new Module( moduleConfig ).init();\r\n}\r\n\r\nfunction _notFound ( message ) {\r\n\r\n\tLogger.warn( message );\r\n}\r\n\r\n/**\r\n * Fetches a module from the ModuleRepository and executes it.\r\n * @param {ModuleRepository} ModuleRepository\r\n * @param {moduleConfig} moduleConfig\r\n * @private\r\n */\r\nfunction _load ( ModuleRepository, moduleConfig ) {\r\n\r\n\tModuleRepository.getModuleForIdentifier( moduleConfig )\r\n\t\t\t.then(\r\n\t\t\t\t\t_launch.bind( this, moduleConfig ),\r\n\t\t\t\t\t_notFound\r\n\t\t\t)\r\n\t\t\t.catch(e => console.warn(`module launch failed`, e))\r\n\t;\r\n}\r\n\r\nclass ModuleLoader {\r\n\r\n\t/**\r\n\t * Async fetches additional modules for components found in the DOM\r\n\t * @param {ModuleRepository} ModuleRepository\r\n\t * @param {Array<moduleConfig>} modules - Array containing component Identifiers\r\n\t */\r\n\tstatic loadDependencies ( ModuleRepository, modules ) {\r\n\r\n\t\tmodules.map( _load.bind( this, ModuleRepository ) );\r\n\t}\r\n}\r\n\r\nexport default ModuleLoader;\r\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/moduleLoader/ModuleLoader.service.js","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\n\nmodule.exports = function debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/debounce/index.js\n// module id = 584\n// module chunks = 16","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 585\n// module chunks = 16","import $ from 'jquery';\n\nimport DebugController from './../base/controller/Debug.controller';\nimport WindowGateway from './gateways/WindowGateway.service';\n\nconst\n\tdebugInstance = new DebugController(),\n\tlogger = debugInstance.debugLocal( false, 'ComponentLauncher', false );\n// import SnowFlakes from './../elements/controller/SnowFlakes.controller';\n\n// import 'imports?jQuery=jquery!./../helper/jquery.let_it_snow';\n\nfunction sortCacheDeps ( deps ) {\n\tconst unsorted = [];\n\n\tObject.keys( deps ).forEach( identifier => {\n\t\tif ( deps.hasOwnProperty( identifier ) ) {\n\t\t\tconst\n\t\t\t\t$elements = $( identifier ),\n\t\t\t\tInitializeClass = deps[ identifier ];\n\n\t\t\tif ( $elements.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tunsorted.push( {\n\t\t\t\t$elements,\n\t\t\t\tinitialize : function createInstance () {\n\t\t\t\t\tconst controllerInstance = new InitializeClass();\n\n\t\t\t\t\tcontrollerInstance.init( $( this ), $( this ).data( 'config' ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n\n\treturn unsorted.sort( ( a, b ) => {\n\t\tconst\n\t\t\toffsetA = a.$elements.offset().top,\n\t\t\toffsetB = b.$elements.offset().top;\n\n\t\tif ( offsetA < offsetB ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif ( offsetA > offsetB ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t} );\n}\n\nfunction receiveInit ( deps, message ) {\n\tlogger.log( 'message event received after ready:', message );\n\n\tif ( message.type === 'init' && message.data.hasOwnProperty( 'id' ) ) {\n\t\tconst\n\t\t\t$elem = $( '#' + message.data.id );\n\n\t\tif ( !$elem.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tObject.keys( deps ).forEach( identifier => {\n\t\t\tif ( deps.hasOwnProperty( identifier ) && $elem.is( identifier ) ) {\n\t\t\t\tconst\n\t\t\t\t\tInitializeClass = deps[ identifier ],\n\t\t\t\t\tcontrollerInstance = new InitializeClass();\n\n\t\t\t\tcontrollerInstance.init( $elem, $elem.data( 'config' ) );\n\t\t\t}\n\t\t} );\n\t}\n}\n\n/**\n * Class wrapping all framework features. Controls events for navigation, quick-navigation etc.\n * Is used as a singleton.\n */\nclass ComponentLauncher {\n\t/**\n\t * Initialises the controller singleton.\n\t * Has to be called after ready event.\n\t * @public\n\t * @return { void }\n\t */\n\tinit () {}\n\n\t/**s\n\t * Loads the dependencies for the components\n\t * Has to be called after ready event.\n\t * @public\n\t * @return { void }\n\t */\n\tstatic launchDependencies ( deps ) {\n\t\tif ( typeof deps !== 'object' ) {\n\t\t\tthrow new Error( 'Cannot launch dependencies' );\n\t\t}\n\n\t\tconst sorted = sortCacheDeps( deps );\n\n\t\tsorted.forEach( obj => {\n\t\t\t$.each( obj.$elements, obj.initialize );\n\t\t} );\n\n\t\tthis.windowGateway = new WindowGateway();\n\t\tthis.windowGateway.messageEvent.subscribe( receiveInit.bind( this, deps ) );\n\n\t\t// Object.keys( deps ).forEach( identifier => {\n\t\t// \tlogger.log( 'Try Initializing:', identifier );\n\t\t// \tif ( deps.hasOwnProperty( identifier ) ) {\n\t\t// \t\t$.each( $( identifier ), function createInstance () {\n\t\t// \t\t\tlogger.log( 'Initializing:', identifier );\n\t\t// \t\t\tconst controllerInstance = new deps[ identifier ]();\n\n\t\t// \t\t\tcontrollerInstance.init( $( this ) );\n\t\t// \t\t} );\n\t\t// \t}\n\t\t// } );\n\n\t\t// should only snow between 2016-12-15 and 2017-01-02\n\t\t// const snowingDates = {\n\t\t// \tstart : new Date( 2016, 11, 15 ),\n\t\t// \tend : new Date( 2017, 0, 3 )\n\t\t// };\n\t\t//snowingEnabledElement = document.querySelector( 'meta[name=\"snowflakes\"]' ),\n\t\t//snowingEnabled = snowingEnabledElement && snowingEnabledElement.getAttribute( 'value' ) === 'true' ? true : false;\n\n\t\t// if ( new Date().getTime() < snowingDates.end.getTime() ) {\n\t\t// \tSnowFlakes.initFor( IDENTIFIERS.SNOWFALL );\n\t\t// }\n\t}\n\n\tstatic launchSingletonDependencies ( deps ) {\n\t\tif ( typeof deps !== 'object' ) {\n\t\t\tthrow new Error( 'Cannot launch singleton dependencies' );\n\t\t}\n\n\t\tObject.keys( deps ).forEach( identifier => {\n\t\t\tlogger.log( 'Try Initializing Singleton:', identifier );\n\t\t\tconst $elements = $( identifier );\n\n\t\t\tif ( deps.hasOwnProperty( identifier ) && $elements.length > 0 ) {\n\t\t\t\tlogger.log( 'Initializing Singleton:', identifier );\n\t\t\t\tdeps[ identifier ].init( $elements );\n\t\t\t}\n\t\t} );\n\t}\n\n}\n\nexport default ComponentLauncher;\n\n\n\n// WEBPACK FOOTER //\n// ./js/services/ComponentLauncher.service.js","import IDENTIFIERS from './../constants/ModuleIdentifier.const';\nimport BaseModuleRepository from './BaseModule.repository';\nimport * as SplitPoints from './splitpoints/Module.splitpoints';\n\n/**\n * @extends {BaseModuleRepository}\n */\nclass ModuleRepository extends BaseModuleRepository {\n\n\t/**\n\t * @override\n\t * @returns {ModuleRepository} initialised instance with registered handlers for identifiers\n\t */\n\tinit () {\n\t\tsuper.init();\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\t\tSplitPoints.video,\n\t\t\t\tIDENTIFIERS.VIDEO\n\t\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\t\tSplitPoints.audio,\n\t\t\t\tIDENTIFIERS.AUDIO\n\t\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\t\tSplitPoints.slider,\n\t\t\t\tIDENTIFIERS.SLIDER\n\t\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\t\tSplitPoints.animation,\n\t\t\t\tIDENTIFIERS.ANIMATION\n\t\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\t\tSplitPoints.responsiveTables,\n\t\t\t\tIDENTIFIERS.RESPTABLES\n\t\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\t\tSplitPoints.productFinder,\n\t\t\t\tIDENTIFIERS.PFC\n\t\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\t\tSplitPoints.benefitFinder,\n\t\t\t\tIDENTIFIERS.BFC\n\t\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\t\tSplitPoints.regionalization,\n\t\t\t\tIDENTIFIERS.REG\n\t\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\t\tSplitPoints.modal,\n\t\t\t\tIDENTIFIERS.MODAL\n\t\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\t\tSplitPoints.passwordMeter,\n\t\t\t\tIDENTIFIERS.PASSWORDMETER\n\t\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\t\tSplitPoints.maptool,\n\t\t\t\tIDENTIFIERS.MAPTOOL\n\t\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\t\tSplitPoints.preacttest,\n\t\t\t\tIDENTIFIERS.PREACT_TEST\n\t\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\tSplitPoints.reacttest,\n\t\t\tIDENTIFIERS.REACT_TEST\n\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\tSplitPoints.experienceModules,\n\t\t\tIDENTIFIERS.EXPERIENCE_MODULES\n\t\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\tSplitPoints.formsV1,\n\t\t\tIDENTIFIERS.FORM_V1\n\t\t);\n\n\t\tthis.registerHandlerForIdentifier(\n\t\t\tSplitPoints.formsV2,\n\t\t\tIDENTIFIERS.FORM_V2\n\t\t);\n\n\t\treturn this;\n\t}\n}\n\nconst instance = new ModuleRepository().init();\n\nexport default instance;\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/repositories/Module.repository.js","const MODULE_IDENTIFIERS = {\n\t\t\t\tMAPTOOL : 'map-tool'\n\t\t\t},\n\n\t\t\tIDENTIFIERS = {\n\t\t\t\tMAP_FRAME : {\n\t\t\t\t\tROOT : '[data-tpl=map-frame]'\n\t\t\t\t},\n\t\t\t\tFLYOUT : {\n\t\t\t\t\tROOT : '[data-tpl=flyout]'\n\t\t\t\t},\n\t\t\t\tTABS : {\n\t\t\t\t\tROOT : '[data-tpl=tab01]'\n\t\t\t\t},\n\n\t\t\t\tMAPTOOL : `[data-module=${MODULE_IDENTIFIERS.MAPTOOL}]`\n\t\t\t},\n\n\t\t\tMAP_TYPES = {\n\t\t\t\tSHOP : 'shop',\n\t\t\t\tENERGY : 'energy',\n\t\t\t\tPOWERSTATION : 'powerstation'\n\t\t\t};\n\nexport { IDENTIFIERS, MODULE_IDENTIFIERS, MAP_TYPES };\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/map-tool/constants/Identifiers.const.js","export const IDENTIFIER = 'preact-test';\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/preact-test/constants/Identifiers.const.js","import $ from 'jquery';\r\n\r\nimport WindowGateway from './../../services/gateways/WindowGateway.service';\r\n\r\nfunction receiveInit ( message ) {\r\n\tif ( message.type === 'init' && message.data.hasOwnProperty( 'id' ) && message.data.hasOwnProperty( 'module' ) ) {\r\n\t\tconst\r\n\t\t\tconfig = {\r\n\t\t\t\tidentifier : message.data.module,\r\n\t\t\t\tnode : $( '#' + message.data.id )\r\n\t\t\t};\r\n\r\n\t\tthis.getModuleForIdentifier( config )\r\n\t\t\t.then( SomeClass => {\r\n\t\t\t\tconst\r\n\t\t\t\t\tinstance = new SomeClass( config );\r\n\t\t\t\tinstance.init();\r\n\t\t\t\treturn SomeClass;\r\n\t\t\t} )\r\n\t\t\t.catch( e => {} );\r\n\t}\r\n}\r\n\r\n/**\r\n * Basic repository definition providing a basic interface which is inherited by the sub-classes.\r\n * Calls for \"getModuleForIdentifier\"and \"registerHandlerForIdentifier\" are always performed on the BaseModuleRepository super class.\r\n */\r\nexport default class BaseModuleRepository {\r\n\r\n\t/**\r\n\t * init an empty registry for modules.\r\n\t * @returns {BaseModuleRepository} - instance\r\n\t */\r\n\tinit () {\r\n\t\tthis._registry = {};\r\n\t\tthis._windowGateway = new WindowGateway();\r\n\t\tthis._windowGateway.messageEvent.subscribe( receiveInit.bind( this ) );\r\n\r\n\t\treturn this;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Registry containing Module split points for DOM Identifiers.\r\n\t * Will be called by sub-classes to register their individual modules.\r\n\t * @param {function} handler - Handler function to launch the module\r\n\t * @param {string} identifier - Identifier matching DOM data-module identifiers to link the javascript module to the DOM\r\n\t * @returns {void}\r\n\t */\r\n\tregisterHandlerForIdentifier ( handler, identifier ) {\r\n\r\n\t\t/**\r\n\t\t * @typedef {object} ModuleLaunchConfig\r\n\t\t * @type {{identifier: string, handler: function}}\r\n\t\t */\r\n\t\tthis._registry [ identifier ] = {\r\n\t\t\tidentifier : identifier,\r\n\t\t\thandler : handler\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Loads a module given a moduleConfig.\r\n\t * Public method which will be called from the class requesting async modules.\r\n\t * @public\r\n\t * @param {moduleConfig} moduleConfig - configuration parsed from the DOM to access the respective module definition\r\n\t * @return {Promise} a Promise which will be either fulfilled if the module was loaded or rejected when no module was registered for the given moduleConfig.identifier\r\n\t */\r\n\tgetModuleForIdentifier ( moduleConfig ) {\r\n\r\n\t\ttry {\r\n\t\t\treturn new Promise( this._registry [ moduleConfig.identifier ].handler );\r\n\t\t} catch ( e ) {\r\n\t\t\treturn Promise.reject( 'Module ' + moduleConfig.identifier + ' is not registered in Module.repository' );\r\n\t\t}\r\n\t}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/repositories/BaseModule.repository.js","import $ from 'jquery';\nimport Logger from 'frontend-logger';\n\nconst\n\tloadOnce = [ 'form', 'form-v2' ];\n\n/**\n * @typedef {Object} moduleConfig\n * @property {string} identifier Data-Module Identifier\n * @property {Object} config additional config options\n * @property {jQuery} node jQuery wrapped DOM-Node\n */\n\n/**\n * Get additional config options passed by data attribute. Try to access and parse, otherwise return empty object\n * @param {object} scope - DOM node\n * @param {ModuleLoaderConfig} config - config options\n * @return {object} parsed options attribute\n */\nfunction getModuleOptions ( scope, config ) {\n\n\ttry {\n\n\t\t/**\n\t\t * @type {string}\n\t\t */\n\t\tconst configAttr = $( scope ).attr( config.CONFIG_ATTRIBUTE );\n\n\t\treturn JSON.parse( configAttr );\n\t} catch ( e ) {\n\n\t\t/**\n\t\t * JSON parse failed because of a missing config attribute or because of an invalid JSON-structure inside the config.\n\t\t * Catch and return an empty object as configuration.\n\t\t */\n\t\treturn {};\n\t}\n}\n\n/**\n * @param {ModuleLoaderConfig} config - config options\n * @param {object} scope - DOM node\n * @return {moduleConfig} config\n * @private\n */\nfunction getModuleConfig ( config, scope ) {\n\n\t/**\n\t * @type {moduleConfig}\n\t */\n\tconst moduleConfig = {\n\t\tnode : null,\n\t\tidentifier : null,\n\t\tconfig : null\n\t};\n\n\ttry {\n\t\tmoduleConfig.node = $( scope );\n\t\t// TODO: add fasterdom?\n\t\tmoduleConfig.identifier = config.ATTRIBUTE !== 'class' ?\n\t\t $( scope ).attr( config.ATTRIBUTE ) :\n\t\t config.SELECTOR;\n\t\tmoduleConfig.config = getModuleOptions( scope, config );\n\n\t} catch ( e ) {\n\t\tLogger.warn( 'Invalid JSON structure on node, failed fast.', scope );\n\n\t}\n\n\treturn moduleConfig;\n}\n\nfunction removeOnceRequired ( loaded, config ) {\n\tconst\n\t\tkey = config.identifier;\n\n\tif ( loadOnce.includes( key ) && loaded.includes( key ) ) {\n\t\treturn false;\n\t}\n\tloaded.push( key );\n\treturn true;\n}\n\nconst ConfigParser = {\n\n\t/**\n\t * Parse the DOM for modules, then get their respective configs.\n\t * @param {ModuleLoaderConfig} config - config options\n\t * @public\n\t * @return {Array<moduleConfig>} configs for each module present in the DOM\n\t */\n\tgetModules ( config ) {\n\t\tlet res = [];\n\n\t\tfor ( const key in config ) {\n\t\t\tif ( config.hasOwnProperty( key ) ) {\n\n\t\t\t\tres = res\n\t\t\t\t\t.concat(\n\t\t\t\t\t\t$.makeArray( $( config[ key ].SELECTOR ) )\n\t\t\t\t\t\t\t.map( getModuleConfig.bind( this, config[ key ] ) )\n\t\t\t\t\t\t\t.filter( removeOnceRequired.bind( this, [] ) )\n\t\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn res;\n\t},\n\n\t/**\n\t * Just get the module config from a given node\n\t * @public\n\t */\n\tgetConfig : getModuleConfig\n};\n\nexport default ConfigParser;\n\n\n\n// WEBPACK FOOTER //\n// ./js/services/AppConfigParser.service.js","import $ from 'jquery';\r\nimport Framework from './framework/Framework.app';\r\nimport componentDependencies, { SINGLETONS as singletonDependencies } from './components/repositories/Component.repository';\r\nimport ComponentLauncher from './services/ComponentLauncher.service';\r\nimport ElementLoader from './services/ElementLoader.service';\r\nimport ModuleLoaderConfig from 'module-loader/constants/ModuleLoader.const';\r\nimport ModuleLoader from 'module-loader';\r\nimport ModuleRepository from './modules/repositories/Module.repository';\r\nimport AppConfigParser from './services/AppConfigParser.service';\r\nimport { BreakpointService } from 'device';\r\nimport FastClick from 'fastclick';\r\nimport LazyImageLoaderService from './services/LazyImageLoader.service';\r\nimport StyleLoader from './services/StyleLoader.service';\r\nimport Images from './compatibility/Images.polyfill';\r\n\r\nimport WindowGatewayService from './services/gateways/WindowGateway.service';\r\n\r\nconst Breakpoints = require( '../../shared/config/styles/breakpoints' ).default,\r\n\t\t\twindowGateway = new WindowGatewayService();\r\n\r\n/**\r\n * Import dependencies for development.\r\n * Flag will be parsed out for production builds.\r\n */\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n/**\r\n * @private\r\n * @return {void}\r\n */\r\nfunction launchServices () {\r\n\r\n\tFastClick.attach( document.body );\r\n\tBreakpointService.use( Breakpoints );\r\n\tLazyImageLoaderService.init();\r\n\r\n\tconst\r\n\t\tstyleLoaderMeta = document.querySelectorAll( 'meta[name=\"styleLoader\"]');\r\n\r\n\tif ( styleLoaderMeta && styleLoaderMeta.length ) {\r\n\t\tArray.from( styleLoaderMeta )\r\n\t\t\t.forEach( item => {\r\n\t\t\t\tconst\r\n\t\t\t\t\tfile = item.getAttribute( 'file' ),\r\n\t\t\t\t\tpath = item.getAttribute( 'path' );\r\n\r\n\t\t\t\tStyleLoader.init( path + file );\r\n\t\t\t} );\r\n\t} else {\r\n\t\tStyleLoader.init( GLOBAL_CONFIG.CSS_PATH + 'screen' );\r\n\t}\r\n\r\n\tImages.init();\r\n}\r\n\r\n/**\r\n * @private\r\n * @returns {void}\r\n */\r\nfunction configure () {\r\n\r\n\tFramework.init();\r\n\tComponentLauncher.launchDependencies( componentDependencies );\r\n\tComponentLauncher.launchSingletonDependencies( singletonDependencies );\r\n\tElementLoader.loadDependencies();\r\n\tModuleLoader.loadDependencies(\r\n\t\t\tModuleRepository,\r\n\t\t\tAppConfigParser.getModules( ModuleLoaderConfig )\r\n\t);\r\n}\r\n\r\n/**\r\n * Primary entry point, called after document ready event\r\n * @access protected\r\n * @returns {void}\r\n */\r\nfunction run () {\r\n\r\n\tlaunchServices();\r\n\tconfigure();\r\n\r\n\twindowGateway.send( {\r\n\t\ttype : 'scriptReady',\r\n\t\tsrc : window.location.href\r\n\t}, '*' );\r\n}\r\n\r\n$().ready( run );\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/client.js","/** @module framework */\r\nimport NavigationController from './controller/Navigation.controller';\r\nimport OffScreenController from './controller/Offscreen.controller';\r\nimport TargetGroupSelectController from './controller/TargetGroupSelect.controller';\r\nimport MainHeaderController from './controller/MainHeader.controller';\r\n// import FooterController from './controller/Footer.controller';\r\n// import HeaderController from './controller/Header.controller';\r\nimport CookieDisclaimerController from './controller/CookieDisclaimer.controller';\r\nimport bucket from './../services/Bucket.service';\r\nimport { iFrameChildControllerInstance } from './../components/controller/Iframe.controller';\r\nimport { IDENTIFIERS } from './constants/Identifiers.const';\r\n//import FormServiceV1 from './../forms/v1/services/Forms.service';\r\n//import FormService from './../forms/v2/services/Forms.service';\r\n\r\nimport { IDENTIFIERS as COMPONENT_IDENTIFIERS } from './../components/constants/Identifiers.const';\r\nimport LAS01Controller from './../components/controller/LAS01.controller.js';\r\n\r\nimport $ from 'jquery';\r\n\r\n/**\r\n * Class wrapping all framework features. Controls events for navigation, quick-navigation etc.\r\n * Is used as a singleton.\r\n * @class\r\n */\r\nclass Framework {\r\n\r\n\t/**\r\n\t * Initialises the controller singleton.\r\n\t * Has to be called after ready event.\r\n\t * @public\r\n\t * @returns {void}\r\n\t */\r\n\tinit () {\r\n\t\tbucket.init( $ );\r\n\t\tthis.initControllers();\r\n\t}\r\n\r\n\t/**\r\n\t * Initialize sub-controller instances for framework components.\r\n\t * @private\r\n\t * @return {void}\r\n\t */\r\n\tinitControllers () {\r\n\t\tconst NavControllerInstance = new NavigationController();\r\n\r\n\t\tOffScreenController.init( $( IDENTIFIERS.OFF_SCREEN.ROOT ) );\r\n\t\tNavControllerInstance.init( $( IDENTIFIERS.NAVIGATION.UL ) );\r\n\t\t//FormServiceV1.init();\r\n\t\t//FormService.init();\r\n\t\tiFrameChildControllerInstance.init();\r\n\t\tconst mainHeaderController = MainHeaderController.init( $( IDENTIFIERS.MAIN_HEADER.ROOT ) );\r\n\t\t// FooterController.init( $( IDENTIFIERS.FOOTER.ROOT ) );\r\n\t\t// HeaderController.init( $( IDENTIFIERS.HEADER.ROOT ) );\r\n\r\n\t\tif ( $( COMPONENT_IDENTIFIERS.LAS01.ROOT ).length ) {\r\n\t\t\tthis.languageSwitchInstance = new LAS01Controller();\r\n\t\t\tthis.languageSwitchInstance.init( $( COMPONENT_IDENTIFIERS.LAS01.ROOT ) );\r\n\t\t}\r\n\r\n\t\tconst updateCallback = mainHeaderController ?\r\n\t\t mainHeaderController.updatePosition.bind( mainHeaderController ) :\r\n\t\t () => {};\r\n\r\n\t\tCookieDisclaimerController\r\n\t\t\t\t.init( $( IDENTIFIERS.COOKIE_DISCLAIMER.ROOT ) )\r\n\t\t\t\t.afterOpen( updateCallback );\r\n\t\tCookieDisclaimerController\r\n\t\t\t\t.afterClose( updateCallback );\r\n\r\n\t\tif ( $( IDENTIFIERS.TARGET_GROUP_SELECT.ROOT ).length ) {\r\n\t\t\tTargetGroupSelectController.init( $( IDENTIFIERS.TARGET_GROUP_SELECT.ROOT ) );\r\n\t\t}\r\n\r\n\t}\r\n}\r\n\r\n/**\r\n * @private\r\n * @type {Framework}\r\n */\r\nconst instance = new Framework();\r\n\r\nexport default instance;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/framework/Framework.app.js","/** @external framework/navigation */\r\nimport TransitionEventController from './../../base/controller/TransitionEvent.controller';\r\nimport NavigationController from './Navigation.controller';\r\nimport { getHiddenDimensions } from './../../helper/global.helper';\r\nimport { SELECTORS } from './../constants/Selectors.const';\r\nimport bucket from './../../services/Bucket.service';\r\n\r\nimport fasterdom from 'fasterdom';\r\nimport $ from 'jquery';\r\n\r\n/**\r\n * @return { void }\r\n * @private\r\n * \r\n * @memberof module:framework/navigation~NavigationItemController\r\n */\r\nfunction initController () {\r\n\tconst self = this;\r\n\r\n\tself.$submenu.each( ( i, v ) => {\r\n\t\tconst $this = $( v ),\r\n\t\t controllerInstance = new NavigationController();\r\n\r\n\t\tcontrollerInstance.init( $this );\r\n\t\tself.subController.push( controllerInstance );\r\n\t} );\r\n}\r\n\r\n/**\r\n * Binds event handler to the current scope\r\n * @return { void }\r\n * @private\r\n *\r\n * @memberof module:framework/navigation~NavigationItemController\r\n */\r\nfunction addHandler () {\r\n\tconst self = this;\r\n\r\n\tself.onOpen( ( $trigger ) => {\r\n\t\tlet _h = 0;\r\n\r\n\t\tbucket.controller.framework.offscreenNavigation.isChildOpening = true;\r\n\r\n\t\tfasterdom.measureInstant( () => {\r\n\t\t\t_h = getHiddenDimensions( self.$content, 'height' ).outerHeight;\r\n\t\t} );\r\n\r\n\t\tfasterdom.mutateInstant( ( a ) => {\r\n\t\t\tself.$content.css( { height : _h } );\r\n\t\t} );\r\n\t} );\r\n\r\n\tself.afterOpen( ( $trigger ) => {\r\n\t\tfasterdom.mutateInstant( () => {\r\n\t\t\tself.$content.css( { height : '' } );\r\n\t\t} );\r\n\t\tbucket.controller.framework.offscreenNavigation.isChildOpening = false;\r\n\t} );\r\n\r\n\tself.beforeClose( ( $trigger ) => {\r\n\t\tlet _h = 0;\r\n\r\n\t\tbucket.controller.framework.offscreenNavigation.isChildOpening = true;\r\n\r\n\t\tfasterdom.measureInstant( () => {\r\n\t\t\t_h = getHiddenDimensions( self.$content, 'height' ).outerHeight;\r\n\t\t} );\r\n\r\n\t\tfasterdom.mutateInstant( () => {\r\n\t\t\tself.$content.css( { height : _h } );\r\n\t\t} );\r\n\r\n\t\tfasterdom.mutateInstant( () => {\r\n\t\t\tself.$content.css( { height : '' } );\r\n\t\t}, 1 );\r\n\t} );\r\n\r\n\tself.afterClose( ( $trigger ) => {\r\n\t\tbucket.controller.framework.offscreenNavigation.isChildOpening = false;\r\n\t} );\r\n\r\n\tself.$scope.on( 'closed', ( e ) => {\r\n\t\te.preventDefault();\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tself.subController.map( ( v ) => {\r\n\t\t\tv.closeItems();\r\n\t\t\treturn v;\r\n\t\t} );\r\n\t} );\r\n}\r\n\r\n/**\r\n * Class representing an navigation menu item instance.\r\n * Controls the state of the accordion.\r\n * Controls menu item behavior.\r\n * @extends { TransitionEventController }\r\n * @class\r\n *\r\n * @name module:framework/navigation~NavigationItemController\r\n */\r\nclass NavigationItemController extends TransitionEventController {\r\n\r\n\tconstructor () {\r\n\t\tsuper();\r\n\r\n\t\tthis.debug = false;//'NavigationItem';\r\n\r\n\t\tthis.$scope = null;\r\n\t\tthis.$content = null;\r\n\t\tthis.$submenu = null;\r\n\r\n\t\tthis.subController = [];\r\n\t}\r\n\r\n\t/**\r\n\t * Initialises the controller.\r\n\t * Has to be called after ready event.\r\n\t *\r\n\t * @param { jQuery } $root - navigation menu item\r\n\t * @public\r\n\t * @return { void }\r\n\t */\r\n\tinit ( $root ) {\r\n\t\tconst self = this;\r\n\r\n\t\tsuper.init( $root );\r\n\r\n\t\tthis._disabled = false;\r\n\r\n\t\tself.$scope = $root;\r\n\t\tself.$trigger = self.$scope.find( '> span' );\r\n\t\tself.$content = self.$scope.find( '> ul' );\r\n\t\tself.$submenu = self.$content.has( '> li > ul' );\r\n\r\n\t\tself.setTransition( 'height' );\r\n\t\tself.setTransitionElement( self.$content );\r\n\r\n\t\tinitController.call( self );\r\n\t\taddHandler.call( self );\r\n\t}\r\n\r\n\tset isDisabled ( is ) {\r\n\t\tif ( is === true ) {\r\n\t\t\tthis.open();\r\n\t\t} else {\r\n\t\t\tthis.close();\r\n\t\t}\r\n\t\tthis._disabled = is === true;\r\n\t}\r\n\r\n\tget isDisabled () {\r\n\t\treturn this._disabled;\r\n\t}\r\n\r\n\tdisable () {\r\n\t\tthis.isDisabled = true;\r\n\t}\r\n\r\n\tenable () {\r\n\t\tthis.isDisabled = false;\r\n\t}\r\n\r\n\treset () {\r\n\t\tfasterdom.measureInstant( () => {\r\n\t\t\tthis.isOpen = this.$scope.hasClass( 'active' ) || this.$scope.hasClass( 'current' );\r\n\t\t} );\r\n\r\n\t\tfasterdom.mutateInstant( () => {\r\n\t\t\tthis.$scope.attr( SELECTORS.expandedSelector, this.isOpen );\r\n\t\t} );\r\n\t}\r\n\r\n\topen () {\r\n\t\tif ( !bucket.controller.framework.offscreenNavigation.isChildOpening ) {\r\n\t\t\tsuper.open();\r\n\t\t}\r\n\t}\r\n\r\n\tclose () {\r\n\t\tif ( !bucket.controller.framework.offscreenNavigation.isChildOpening ) {\r\n\t\t\tsuper.close();\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\nexport default NavigationItemController;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/framework/controller/NavigationItem.controller.js","import {Observable} from 'rxjs/Observable';\nimport {fromEvent} from 'rxjs/observable/fromEvent';\nimport {mergeMap} from 'rxjs/operator/mergeMap';\nimport Orientations from './../entities/DeviceOrientation.entity';\n\nimport { fasterdomPromised as fasterdom } from 'fasterdom';\n\nconst Events = {\n\t ROTATE : 'orientationchange'\n };\n\n/**\n * @typedef {object} DeviceOrientation\n * @property {DeviceOrientationValue} rotation\n */\n\n/**\n * Factory function for orientation object.\n * @returns {DeviceOrientation} - the current orientation\n */\nfunction properties () {\n\n\treturn {\n\t\trotation : null\n\t};\n}\n\n/**\n * Determine the current orientation\n * @returns {DeviceOrientation} - the current orientation\n */\nfunction calcOrientation () {\n\n\treturn fasterdom.measure( () => {\n\n\t\tconst props = properties();\n\n\t\tprops.rotation = window[ 'orientation' ] === 90 || window[ 'orientation' ] === -90 ? //eslint-disable-line dot-notation\n\t\t Orientations.LANDSCAPE :\n\t\t Orientations.PORTRAIT;\n\n\t\treturn props;\n\t} );\n}\n\n/**\n *\n * @public\n * @returns {Observable<TResult>} - event stream for orientation change events\n */\nfunction registerOrientationChangeEvent () {\n\n\treturn Observable\n\t\t\t::fromEvent( window, Events.ROTATE )\n\t\t\t::mergeMap( calcOrientation );\n}\n\nconst DeviceOrientationService = {\n\n\torientationEvent : registerOrientationChangeEvent(),\n\n\tgetOrientations () {\n\t\treturn Orientations;\n\t}\n};\n\nexport default DeviceOrientationService;\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/services/DeviceOrientation.service.js","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('./Subscriber');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar InnerSubscriber = (function (_super) {\n __extends(InnerSubscriber, _super);\n function InnerSubscriber(parent, outerValue, outerIndex) {\n _super.call(this);\n this.parent = parent;\n this.outerValue = outerValue;\n this.outerIndex = outerIndex;\n this.index = 0;\n }\n InnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n };\n InnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n };\n InnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return InnerSubscriber;\n}(Subscriber_1.Subscriber));\nexports.InnerSubscriber = InnerSubscriber;\n//# sourceMappingURL=InnerSubscriber.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/InnerSubscriber.js\n// module id = 607\n// module chunks = 16","/**\n *\n * @typedef {Symbol} DeviceOrientationValue\n */\n\n/**\n *\n * @type {{PORTRAIT: DeviceOrientationValue, LANDSCAPE: DeviceOrientationValue}}\n */\nexport default {\n\tPORTRAIT : Symbol( 'portrait' ),\n\tLANDSCAPE : Symbol( 'landscape' )\n};\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/entities/DeviceOrientation.entity.js","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\n/* tslint:enable:max-line-length */\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * <img src=\"./img/filter.png\" width=\"100%\">\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * @example <caption>Emit only click events whose target was a DIV element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV');\n * clicksOnDivs.subscribe(x => console.log(x));\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nfunction filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nexports.filter = filter;\nvar FilterOperator = (function () {\n function FilterOperator(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n FilterOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n };\n return FilterOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar FilterSubscriber = (function (_super) {\n __extends(FilterSubscriber, _super);\n function FilterSubscriber(destination, predicate, thisArg) {\n _super.call(this, destination);\n this.predicate = predicate;\n this.thisArg = thisArg;\n this.count = 0;\n }\n // the try catch block below is left specifically for\n // optimization and perf reasons. a tryCatcher is not necessary here.\n FilterSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n };\n return FilterSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=filter.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/filter.js\n// module id = 609\n// module chunks = 16","\"use strict\";\nvar ArrayObservable_1 = require('../observable/ArrayObservable');\nvar ScalarObservable_1 = require('../observable/ScalarObservable');\nvar EmptyObservable_1 = require('../observable/EmptyObservable');\nvar concat_1 = require('../observable/concat');\nvar isScheduler_1 = require('../util/isScheduler');\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins to emit\n * items emitted by the source Observable.\n *\n * <img src=\"./img/startWith.png\" width=\"100%\">\n *\n * @param {...T} values - Items you want the modified Observable to emit first.\n * @param {Scheduler} [scheduler] - A {@link IScheduler} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items\n * emitted by the source Observable.\n * @method startWith\n * @owner Observable\n */\nfunction startWith() {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i - 0] = arguments[_i];\n }\n return function (source) {\n var scheduler = array[array.length - 1];\n if (isScheduler_1.isScheduler(scheduler)) {\n array.pop();\n }\n else {\n scheduler = null;\n }\n var len = array.length;\n if (len === 1) {\n return concat_1.concat(new ScalarObservable_1.ScalarObservable(array[0], scheduler), source);\n }\n else if (len > 1) {\n return concat_1.concat(new ArrayObservable_1.ArrayObservable(array, scheduler), source);\n }\n else {\n return concat_1.concat(new EmptyObservable_1.EmptyObservable(scheduler), source);\n }\n };\n}\nexports.startWith = startWith;\n//# sourceMappingURL=startWith.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/startWith.js\n// module id = 610\n// module chunks = 16","\"use strict\";\nvar isScheduler_1 = require('../util/isScheduler');\nvar of_1 = require('./of');\nvar from_1 = require('./from');\nvar concatAll_1 = require('../operators/concatAll');\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from given\n * Observable and then moves on to the next.\n *\n * <span class=\"informal\">Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.</span>\n *\n * <img src=\"./img/concat.png\" width=\"100%\">\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * @example <caption>Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10</caption>\n * var timer = Rx.Observable.interval(1000).take(4);\n * var sequence = Rx.Observable.range(1, 10);\n * var result = Rx.Observable.concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n *\n *\n * @example <caption>Concatenate an array of 3 Observables</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var result = Rx.Observable.concat([timer1, timer2, timer3]); // note that array is passed\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n *\n *\n * @example <caption>Concatenate the same Observable to repeat it</caption>\n * const timer = Rx.Observable.interval(1000).take(2);\n *\n * Rx.Observable.concat(timer, timer) // concating the same Observable!\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('...and it is done!')\n * );\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // \"...and it is done!\" also after 4s\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n *\n * @param {ObservableInput} input1 An input Observable to concatenate with others.\n * @param {ObservableInput} input2 An input Observable to concatenate with others.\n * More than one input Observables may be given as argument.\n * @param {Scheduler} [scheduler=null] An optional IScheduler to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @static true\n * @name concat\n * @owner Observable\n */\nfunction concat() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i - 0] = arguments[_i];\n }\n if (observables.length === 1 || (observables.length === 2 && isScheduler_1.isScheduler(observables[1]))) {\n return from_1.from(observables[0]);\n }\n return concatAll_1.concatAll()(of_1.of.apply(void 0, observables));\n}\nexports.concat = concat;\n//# sourceMappingURL=concat.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/concat.js\n// module id = 611\n// module chunks = 16","\"use strict\";\nvar ArrayObservable_1 = require('./ArrayObservable');\nexports.of = ArrayObservable_1.ArrayObservable.of;\n//# sourceMappingURL=of.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/of.js\n// module id = 612\n// module chunks = 16","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar isArray_1 = require('../util/isArray');\nvar isArrayLike_1 = require('../util/isArrayLike');\nvar isPromise_1 = require('../util/isPromise');\nvar PromiseObservable_1 = require('./PromiseObservable');\nvar IteratorObservable_1 = require('./IteratorObservable');\nvar ArrayObservable_1 = require('./ArrayObservable');\nvar ArrayLikeObservable_1 = require('./ArrayLikeObservable');\nvar iterator_1 = require('../symbol/iterator');\nvar Observable_1 = require('../Observable');\nvar observeOn_1 = require('../operators/observeOn');\nvar observable_1 = require('../symbol/observable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar FromObservable = (function (_super) {\n __extends(FromObservable, _super);\n function FromObservable(ish, scheduler) {\n _super.call(this, null);\n this.ish = ish;\n this.scheduler = scheduler;\n }\n /**\n * Creates an Observable from an Array, an array-like object, a Promise, an\n * iterable object, or an Observable-like object.\n *\n * <span class=\"informal\">Converts almost anything to an Observable.</span>\n *\n * <img src=\"./img/from.png\" width=\"100%\">\n *\n * Convert various other objects and data types into Observables. `from`\n * converts a Promise or an array-like or an\n * [iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable)\n * object into an Observable that emits the items in that promise or array or\n * iterable. A String, in this context, is treated as an array of characters.\n * Observable-like objects (contains a function named with the ES2015 Symbol\n * for Observable) can also be converted through this operator.\n *\n * @example <caption>Converts an array to an Observable</caption>\n * var array = [10, 20, 30];\n * var result = Rx.Observable.from(array);\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // 10 20 30\n *\n * @example <caption>Convert an infinite iterable (from a generator) to an Observable</caption>\n * function* generateDoubles(seed) {\n * var i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * var iterator = generateDoubles(3);\n * var result = Rx.Observable.from(iterator).take(10);\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // 3 6 12 24 48 96 192 384 768 1536\n *\n * @see {@link create}\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n * @see {@link fromPromise}\n *\n * @param {ObservableInput<T>} ish A subscribable object, a Promise, an\n * Observable-like, an Array, an iterable or an array-like object to be\n * converted.\n * @param {Scheduler} [scheduler] The scheduler on which to schedule the\n * emissions of values.\n * @return {Observable<T>} The Observable whose values are originally from the\n * input object that was converted.\n * @static true\n * @name from\n * @owner Observable\n */\n FromObservable.create = function (ish, scheduler) {\n if (ish != null) {\n if (typeof ish[observable_1.observable] === 'function') {\n if (ish instanceof Observable_1.Observable && !scheduler) {\n return ish;\n }\n return new FromObservable(ish, scheduler);\n }\n else if (isArray_1.isArray(ish)) {\n return new ArrayObservable_1.ArrayObservable(ish, scheduler);\n }\n else if (isPromise_1.isPromise(ish)) {\n return new PromiseObservable_1.PromiseObservable(ish, scheduler);\n }\n else if (typeof ish[iterator_1.iterator] === 'function' || typeof ish === 'string') {\n return new IteratorObservable_1.IteratorObservable(ish, scheduler);\n }\n else if (isArrayLike_1.isArrayLike(ish)) {\n return new ArrayLikeObservable_1.ArrayLikeObservable(ish, scheduler);\n }\n }\n throw new TypeError((ish !== null && typeof ish || ish) + ' is not observable');\n };\n FromObservable.prototype._subscribe = function (subscriber) {\n var ish = this.ish;\n var scheduler = this.scheduler;\n if (scheduler == null) {\n return ish[observable_1.observable]().subscribe(subscriber);\n }\n else {\n return ish[observable_1.observable]().subscribe(new observeOn_1.ObserveOnSubscriber(subscriber, scheduler, 0));\n }\n };\n return FromObservable;\n}(Observable_1.Observable));\nexports.FromObservable = FromObservable;\n//# sourceMappingURL=FromObservable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/FromObservable.js\n// module id = 613\n// module chunks = 16","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = require('../util/root');\nvar Observable_1 = require('../Observable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar PromiseObservable = (function (_super) {\n __extends(PromiseObservable, _super);\n function PromiseObservable(promise, scheduler) {\n _super.call(this);\n this.promise = promise;\n this.scheduler = scheduler;\n }\n /**\n * Converts a Promise to an Observable.\n *\n * <span class=\"informal\">Returns an Observable that just emits the Promise's\n * resolved value, then completes.</span>\n *\n * Converts an ES2015 Promise or a Promises/A+ spec compliant Promise to an\n * Observable. If the Promise resolves with a value, the output Observable\n * emits that resolved value as a `next`, and then completes. If the Promise\n * is rejected, then the output Observable emits the corresponding Error.\n *\n * @example <caption>Convert the Promise returned by Fetch to an Observable</caption>\n * var result = Rx.Observable.fromPromise(fetch('http://myserver.com/'));\n * result.subscribe(x => console.log(x), e => console.error(e));\n *\n * @see {@link bindCallback}\n * @see {@link from}\n *\n * @param {PromiseLike<T>} promise The promise to be converted.\n * @param {Scheduler} [scheduler] An optional IScheduler to use for scheduling\n * the delivery of the resolved value (or the rejection).\n * @return {Observable<T>} An Observable which wraps the Promise.\n * @static true\n * @name fromPromise\n * @owner Observable\n */\n PromiseObservable.create = function (promise, scheduler) {\n return new PromiseObservable(promise, scheduler);\n };\n PromiseObservable.prototype._subscribe = function (subscriber) {\n var _this = this;\n var promise = this.promise;\n var scheduler = this.scheduler;\n if (scheduler == null) {\n if (this._isScalar) {\n if (!subscriber.closed) {\n subscriber.next(this.value);\n subscriber.complete();\n }\n }\n else {\n promise.then(function (value) {\n _this.value = value;\n _this._isScalar = true;\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) {\n if (!subscriber.closed) {\n subscriber.error(err);\n }\n })\n .then(null, function (err) {\n // escape the promise trap, throw unhandled errors\n root_1.root.setTimeout(function () { throw err; });\n });\n }\n }\n else {\n if (this._isScalar) {\n if (!subscriber.closed) {\n return scheduler.schedule(dispatchNext, 0, { value: this.value, subscriber: subscriber });\n }\n }\n else {\n promise.then(function (value) {\n _this.value = value;\n _this._isScalar = true;\n if (!subscriber.closed) {\n subscriber.add(scheduler.schedule(dispatchNext, 0, { value: value, subscriber: subscriber }));\n }\n }, function (err) {\n if (!subscriber.closed) {\n subscriber.add(scheduler.schedule(dispatchError, 0, { err: err, subscriber: subscriber }));\n }\n })\n .then(null, function (err) {\n // escape the promise trap, throw unhandled errors\n root_1.root.setTimeout(function () { throw err; });\n });\n }\n }\n };\n return PromiseObservable;\n}(Observable_1.Observable));\nexports.PromiseObservable = PromiseObservable;\nfunction dispatchNext(arg) {\n var value = arg.value, subscriber = arg.subscriber;\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n}\nfunction dispatchError(arg) {\n var err = arg.err, subscriber = arg.subscriber;\n if (!subscriber.closed) {\n subscriber.error(err);\n }\n}\n//# sourceMappingURL=PromiseObservable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/PromiseObservable.js\n// module id = 614\n// module chunks = 16","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = require('../util/root');\nvar Observable_1 = require('../Observable');\nvar iterator_1 = require('../symbol/iterator');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar IteratorObservable = (function (_super) {\n __extends(IteratorObservable, _super);\n function IteratorObservable(iterator, scheduler) {\n _super.call(this);\n this.scheduler = scheduler;\n if (iterator == null) {\n throw new Error('iterator cannot be null.');\n }\n this.iterator = getIterator(iterator);\n }\n IteratorObservable.create = function (iterator, scheduler) {\n return new IteratorObservable(iterator, scheduler);\n };\n IteratorObservable.dispatch = function (state) {\n var index = state.index, hasError = state.hasError, iterator = state.iterator, subscriber = state.subscriber;\n if (hasError) {\n subscriber.error(state.error);\n return;\n }\n var result = iterator.next();\n if (result.done) {\n subscriber.complete();\n return;\n }\n subscriber.next(result.value);\n state.index = index + 1;\n if (subscriber.closed) {\n if (typeof iterator.return === 'function') {\n iterator.return();\n }\n return;\n }\n this.schedule(state);\n };\n IteratorObservable.prototype._subscribe = function (subscriber) {\n var index = 0;\n var _a = this, iterator = _a.iterator, scheduler = _a.scheduler;\n if (scheduler) {\n return scheduler.schedule(IteratorObservable.dispatch, 0, {\n index: index, iterator: iterator, subscriber: subscriber\n });\n }\n else {\n do {\n var result = iterator.next();\n if (result.done) {\n subscriber.complete();\n break;\n }\n else {\n subscriber.next(result.value);\n }\n if (subscriber.closed) {\n if (typeof iterator.return === 'function') {\n iterator.return();\n }\n break;\n }\n } while (true);\n }\n };\n return IteratorObservable;\n}(Observable_1.Observable));\nexports.IteratorObservable = IteratorObservable;\nvar StringIterator = (function () {\n function StringIterator(str, idx, len) {\n if (idx === void 0) { idx = 0; }\n if (len === void 0) { len = str.length; }\n this.str = str;\n this.idx = idx;\n this.len = len;\n }\n StringIterator.prototype[iterator_1.iterator] = function () { return (this); };\n StringIterator.prototype.next = function () {\n return this.idx < this.len ? {\n done: false,\n value: this.str.charAt(this.idx++)\n } : {\n done: true,\n value: undefined\n };\n };\n return StringIterator;\n}());\nvar ArrayIterator = (function () {\n function ArrayIterator(arr, idx, len) {\n if (idx === void 0) { idx = 0; }\n if (len === void 0) { len = toLength(arr); }\n this.arr = arr;\n this.idx = idx;\n this.len = len;\n }\n ArrayIterator.prototype[iterator_1.iterator] = function () { return this; };\n ArrayIterator.prototype.next = function () {\n return this.idx < this.len ? {\n done: false,\n value: this.arr[this.idx++]\n } : {\n done: true,\n value: undefined\n };\n };\n return ArrayIterator;\n}());\nfunction getIterator(obj) {\n var i = obj[iterator_1.iterator];\n if (!i && typeof obj === 'string') {\n return new StringIterator(obj);\n }\n if (!i && obj.length !== undefined) {\n return new ArrayIterator(obj);\n }\n if (!i) {\n throw new TypeError('object is not iterable');\n }\n return obj[iterator_1.iterator]();\n}\nvar maxSafeInteger = Math.pow(2, 53) - 1;\nfunction toLength(o) {\n var len = +o.length;\n if (isNaN(len)) {\n return 0;\n }\n if (len === 0 || !numberIsFinite(len)) {\n return len;\n }\n len = sign(len) * Math.floor(Math.abs(len));\n if (len <= 0) {\n return 0;\n }\n if (len > maxSafeInteger) {\n return maxSafeInteger;\n }\n return len;\n}\nfunction numberIsFinite(value) {\n return typeof value === 'number' && root_1.root.isFinite(value);\n}\nfunction sign(value) {\n var valueAsNumber = +value;\n if (valueAsNumber === 0) {\n return valueAsNumber;\n }\n if (isNaN(valueAsNumber)) {\n return valueAsNumber;\n }\n return valueAsNumber < 0 ? -1 : 1;\n}\n//# sourceMappingURL=IteratorObservable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/IteratorObservable.js\n// module id = 615\n// module chunks = 16","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\nvar ScalarObservable_1 = require('./ScalarObservable');\nvar EmptyObservable_1 = require('./EmptyObservable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ArrayLikeObservable = (function (_super) {\n __extends(ArrayLikeObservable, _super);\n function ArrayLikeObservable(arrayLike, scheduler) {\n _super.call(this);\n this.arrayLike = arrayLike;\n this.scheduler = scheduler;\n if (!scheduler && arrayLike.length === 1) {\n this._isScalar = true;\n this.value = arrayLike[0];\n }\n }\n ArrayLikeObservable.create = function (arrayLike, scheduler) {\n var length = arrayLike.length;\n if (length === 0) {\n return new EmptyObservable_1.EmptyObservable();\n }\n else if (length === 1) {\n return new ScalarObservable_1.ScalarObservable(arrayLike[0], scheduler);\n }\n else {\n return new ArrayLikeObservable(arrayLike, scheduler);\n }\n };\n ArrayLikeObservable.dispatch = function (state) {\n var arrayLike = state.arrayLike, index = state.index, length = state.length, subscriber = state.subscriber;\n if (subscriber.closed) {\n return;\n }\n if (index >= length) {\n subscriber.complete();\n return;\n }\n subscriber.next(arrayLike[index]);\n state.index = index + 1;\n this.schedule(state);\n };\n ArrayLikeObservable.prototype._subscribe = function (subscriber) {\n var index = 0;\n var _a = this, arrayLike = _a.arrayLike, scheduler = _a.scheduler;\n var length = arrayLike.length;\n if (scheduler) {\n return scheduler.schedule(ArrayLikeObservable.dispatch, 0, {\n arrayLike: arrayLike, index: index, length: length, subscriber: subscriber\n });\n }\n else {\n for (var i = 0; i < length && !subscriber.closed; i++) {\n subscriber.next(arrayLike[i]);\n }\n subscriber.complete();\n }\n };\n return ArrayLikeObservable;\n}(Observable_1.Observable));\nexports.ArrayLikeObservable = ArrayLikeObservable;\n//# sourceMappingURL=ArrayLikeObservable.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/observable/ArrayLikeObservable.js\n// module id = 616\n// module chunks = 16","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\nvar Notification_1 = require('../Notification');\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * <span class=\"informal\">Ensure a specific scheduler is used, from outside of an Observable.</span>\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * @example <caption>Ensure values in subscribe are called just before browser repaint.</caption>\n * const intervals = Rx.Observable.interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n *\n * intervals\n * .observeOn(Rx.Scheduler.animationFrame) // ...but we will observe on animationFrame\n * .subscribe(val => { // scheduler to ensure smooth animation.\n * someDiv.style.height = val + 'px';\n * });\n *\n * @see {@link delay}\n *\n * @param {IScheduler} scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return {Observable<T>} Observable that emits the same notifications as the source Observable,\n * but with provided scheduler.\n *\n * @method observeOn\n * @owner Observable\n */\nfunction observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nexports.observeOn = observeOn;\nvar ObserveOnOperator = (function () {\n function ObserveOnOperator(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n };\n return ObserveOnOperator;\n}());\nexports.ObserveOnOperator = ObserveOnOperator;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ObserveOnSubscriber = (function (_super) {\n __extends(ObserveOnSubscriber, _super);\n function ObserveOnSubscriber(destination, scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n _super.call(this, destination);\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnSubscriber.dispatch = function (arg) {\n var notification = arg.notification, destination = arg.destination;\n notification.observe(destination);\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {\n this.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n };\n ObserveOnSubscriber.prototype._next = function (value) {\n this.scheduleMessage(Notification_1.Notification.createNext(value));\n };\n ObserveOnSubscriber.prototype._error = function (err) {\n this.scheduleMessage(Notification_1.Notification.createError(err));\n };\n ObserveOnSubscriber.prototype._complete = function () {\n this.scheduleMessage(Notification_1.Notification.createComplete());\n };\n return ObserveOnSubscriber;\n}(Subscriber_1.Subscriber));\nexports.ObserveOnSubscriber = ObserveOnSubscriber;\nvar ObserveOnMessage = (function () {\n function ObserveOnMessage(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n return ObserveOnMessage;\n}());\nexports.ObserveOnMessage = ObserveOnMessage;\n//# sourceMappingURL=observeOn.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/observeOn.js\n// module id = 617\n// module chunks = 16","\"use strict\";\nvar Observable_1 = require('./Observable');\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n *\n * @class Notification<T>\n */\nvar Notification = (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n /**\n * Delivers to the given `observer` the value wrapped by this Notification.\n * @param {Observer} observer\n * @return\n */\n Notification.prototype.observe = function (observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n };\n /**\n * Given some {@link Observer} callbacks, deliver the value represented by the\n * current Notification to the correctly corresponding callback.\n * @param {function(value: T): void} next An Observer `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n Notification.prototype.do = function (next, error, complete) {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n };\n /**\n * Takes an Observer or its individual callback functions, and calls `observe`\n * or `do` methods accordingly.\n * @param {Observer|function(value: T): void} nextOrObserver An Observer or\n * the `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n };\n /**\n * Returns a simple Observable that just delivers the notification represented\n * by this Notification instance.\n * @return {any}\n */\n Notification.prototype.toObservable = function () {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return Observable_1.Observable.of(this.value);\n case 'E':\n return Observable_1.Observable.throw(this.error);\n case 'C':\n return Observable_1.Observable.empty();\n }\n throw new Error('unexpected notification kind value');\n };\n /**\n * A shortcut to create a Notification instance of the type `next` from a\n * given value.\n * @param {T} value The `next` value.\n * @return {Notification<T>} The \"next\" Notification representing the\n * argument.\n */\n Notification.createNext = function (value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n };\n /**\n * A shortcut to create a Notification instance of the type `error` from a\n * given error.\n * @param {any} [err] The `error` error.\n * @return {Notification<T>} The \"error\" Notification representing the\n * argument.\n */\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n /**\n * A shortcut to create a Notification instance of the type `complete`.\n * @return {Notification<any>} The valueless \"complete\" Notification.\n */\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n Notification.undefinedValueNotification = new Notification('N', undefined);\n return Notification;\n}());\nexports.Notification = Notification;\n//# sourceMappingURL=Notification.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/Notification.js\n// module id = 618\n// module chunks = 16","\"use strict\";\nvar mergeAll_1 = require('./mergeAll');\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.</span>\n *\n * <img src=\"./img/concatAll.png\" width=\"100%\">\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * @example <caption>For each click event, tick every second from 0 to 3, with no concurrency</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map(ev => Rx.Observable.interval(1000).take(4));\n * var firstOrder = higherOrder.concatAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n *\n * @see {@link combineAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable emitting values from all the inner\n * Observables concatenated.\n * @method concatAll\n * @owner Observable\n */\nfunction concatAll() {\n return mergeAll_1.mergeAll(1);\n}\nexports.concatAll = concatAll;\n//# sourceMappingURL=concatAll.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/concatAll.js\n// module id = 619\n// module chunks = 16","\"use strict\";\nfunction identity(x) {\n return x;\n}\nexports.identity = identity;\n//# sourceMappingURL=identity.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/util/identity.js\n// module id = 620\n// module chunks = 16","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar merge_1 = require('../../operator/merge');\nObservable_1.Observable.prototype.merge = merge_1.merge;\n//# sourceMappingURL=merge.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/add/operator/merge.js\n// module id = 621\n// module chunks = 16","\"use strict\";\nvar merge_1 = require('../operators/merge');\nvar merge_2 = require('../observable/merge');\nexports.mergeStatic = merge_2.merge;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * <img src=\"./img/merge.png\" width=\"100%\">\n *\n * `merge` subscribes to each given input Observable (either the source or an\n * Observable given as argument), and simply forwards (without doing any\n * transformation) all the values from all the input Observables to the output\n * Observable. The output Observable only completes once all input Observables\n * have completed. Any error delivered by an input Observable will be immediately\n * emitted on the output Observable.\n *\n * @example <caption>Merge together two Observables: 1s interval and clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var timer = Rx.Observable.interval(1000);\n * var clicksOrTimer = clicks.merge(timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * @example <caption>Merge together 3 Observables, but only 2 run concurrently</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var concurrent = 2; // the argument\n * var merged = timer1.merge(timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {ObservableInput} other An input Observable to merge with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for managing\n * concurrency of input Observables.\n * @return {Observable} An Observable that emits items that are the result of\n * every input Observable.\n * @method merge\n * @owner Observable\n */\nfunction merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i - 0] = arguments[_i];\n }\n return merge_1.merge.apply(void 0, observables)(this);\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operator/merge.js\n// module id = 622\n// module chunks = 16","\"use strict\";\nvar merge_1 = require('../observable/merge');\nvar merge_2 = require('../observable/merge');\nexports.mergeStatic = merge_2.merge;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * <img src=\"./img/merge.png\" width=\"100%\">\n *\n * `merge` subscribes to each given input Observable (either the source or an\n * Observable given as argument), and simply forwards (without doing any\n * transformation) all the values from all the input Observables to the output\n * Observable. The output Observable only completes once all input Observables\n * have completed. Any error delivered by an input Observable will be immediately\n * emitted on the output Observable.\n *\n * @example <caption>Merge together two Observables: 1s interval and clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var timer = Rx.Observable.interval(1000);\n * var clicksOrTimer = clicks.merge(timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * @example <caption>Merge together 3 Observables, but only 2 run concurrently</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var concurrent = 2; // the argument\n * var merged = timer1.merge(timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {ObservableInput} other An input Observable to merge with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for managing\n * concurrency of input Observables.\n * @return {Observable} An Observable that emits items that are the result of\n * every input Observable.\n * @method merge\n * @owner Observable\n */\nfunction merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i - 0] = arguments[_i];\n }\n return function (source) { return source.lift.call(merge_1.merge.apply(void 0, [source].concat(observables))); };\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/merge.js\n// module id = 623\n// module chunks = 16","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar filter_1 = require('../../operator/filter');\nObservable_1.Observable.prototype.filter = filter_1.filter;\n//# sourceMappingURL=filter.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/add/operator/filter.js\n// module id = 624\n// module chunks = 16","import ResizeService from './Resize.service';\nimport { KEYS } from './../constants/Breakpoints.const';\nimport Breakpoint from './../entities/Breakpoint.entity';\nimport { BREAKPOINT_DEFINITION } from './../constants/Breakpoints.const';\nimport { pairwise } from 'rxjs/operator/pairwise';\nimport { filter } from 'rxjs/operator/filter';\nimport { map } from 'rxjs/operator/map';\nimport { startWith } from 'rxjs/operator/startWith';\n\n/**\n *\n * @type {Array<Breakpoint>}\n */\nconst Breakpoints = [];\n\n/**\n * Register a given breakpoint definition consisting of:\n * @private\n * @param {string} key - the breakpoint alias\n * @param {int} min - min width of breakpoint\n * @param {int} max - max width of breakpoint\n * @returns {void}\n */\nfunction register ( key, min, max ) {\n\n\tconst breakPoint = new Breakpoint( key, min, max );\n\n\tBreakpoints.push( breakPoint );\n}\n\n/**\n * Read breakpoint definitons from config file and register them for matching.\n * @param {Object} styleConfig - JSON format\n * @returns {void}\n */\nfunction setupBreakpoints ( styleConfig ) {\n\n\tconst breakPointDefinition = styleConfig [ BREAKPOINT_DEFINITION ];\n\n\tfor ( const alias in breakPointDefinition ) {\n\n\t\tif ( breakPointDefinition.hasOwnProperty( alias ) ) {\n\n\t\t\tregister(\n\t\t\t\t\tbreakPointDefinition[ alias ][ KEYS.NAME ],\n\t\t\t\t\tbreakPointDefinition[ alias ][ KEYS.MIN ],\n\t\t\t\t\tbreakPointDefinition[ alias ][ KEYS.MAX ]\n\t\t\t);\n\t\t}\n\t}\n}\n\n/**\n * @private\n * @param {Breakpoint} breakPoint - breakpoint instance\n * @param {int} width - current viewport width\n * @returns {boolean|T} - whether the current width is in range of the breakpoint\n */\nfunction isInRange ( breakPoint, width ) {\n\n\treturn breakPoint.min <= width && breakPoint.max >= width;\n}\n\n/**\n * Find the current matching breakpoint in the registered breakpoints.\n * @private\n * @param {int} width - the current viewport width\n * @returns {Breakpoint} - the breakpoint which is currently active\n */\nfunction calcBreakpoint ( width ) {\n\n\t/**\n\t * @returns {Breakpoint}\n\t */\n\treturn Breakpoints.find( ( breakPoint ) => isInRange( breakPoint, width ) );\n}\n\n/**\n * Only dispatch if the new breakpoint is different to the last one.\n * @param events\n * @return {boolean}\n */\nfunction detectBreakpointChange ( events ) {\n\n\treturn calcBreakpoint( events[ 0 ].width ) !== calcBreakpoint( events[ 1 ].width );\n}\n\n/**\n *\n * @param events\n * @return {Breakpoint}\n */\nfunction getCurrentBreakpoint ( events ) {\n\n\treturn calcBreakpoint( events[ 1 ].width );\n}\n\n/**\n * @public\n * @returns {Observable<TBreakpoint>} - event stream for breakpoint events\n */\nfunction registerBreakpointEvent () {\n\n\t/*eslint-disable */\n\treturn ResizeService.resizeEvent\n\t\t\t::startWith( ResizeService.getCurrent )\n\t\t\t::pairwise()\n\t\t\t::filter( detectBreakpointChange )\n\t\t\t::map( getCurrentBreakpoint );\n\t/*eslint-enable */\n}\n\nconst BreakpointService = {\n\n\t/**\n\t * Inject breakpoint defintions as dependency\n\t * @public\n\t */\n\tuse : setupBreakpoints,\n\n\t/**\n\t * Event stream for resize events\n\t * @public\n\t */\n\tbreakpointEvent : registerBreakpointEvent(),\n\n\t/**\n\t * Get all registered breakpoints\n\t * @returns {Array<Breakpoint>} - an array containg all registered breakpoints\n\t * @public\n\t */\n\tgetBreakpoints () {\n\t\treturn Breakpoints;\n\t}\n};\n\nexport default BreakpointService;\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/services/Breakpoint.service.js","export const KEYS = {\n\t NAME : 'name',\n\t MIN : 'min',\n\t MAX : 'max'\n },\n BREAKPOINT_DEFINITION = 'breakpoints';\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/constants/Breakpoints.const.js","export default class Breakpoint {\n\n\tconstructor ( alias, min, max ) {\n\n\t\tthis.alias = alias;\n\t\tthis.min = min;\n\t\tthis.max = max;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/device/entities/Breakpoint.entity.js","\"use strict\";\nvar pairwise_1 = require('../operators/pairwise');\n/**\n * Groups pairs of consecutive emissions together and emits them as an array of\n * two values.\n *\n * <span class=\"informal\">Puts the current value and previous value together as\n * an array, and emits that.</span>\n *\n * <img src=\"./img/pairwise.png\" width=\"100%\">\n *\n * The Nth emission from the source Observable will cause the output Observable\n * to emit an array [(N-1)th, Nth] of the previous and the current value, as a\n * pair. For this reason, `pairwise` emits on the second and subsequent\n * emissions from the source Observable, but not on the first emission, because\n * there is no previous value in that case.\n *\n * @example <caption>On every click (starting from the second), emit the relative distance to the previous click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var pairs = clicks.pairwise();\n * var distance = pairs.map(pair => {\n * var x0 = pair[0].clientX;\n * var y0 = pair[0].clientY;\n * var x1 = pair[1].clientX;\n * var y1 = pair[1].clientY;\n * return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n * });\n * distance.subscribe(x => console.log(x));\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n *\n * @return {Observable<Array<T>>} An Observable of pairs (as arrays) of\n * consecutive values from the source Observable.\n * @method pairwise\n * @owner Observable\n */\nfunction pairwise() {\n return pairwise_1.pairwise()(this);\n}\nexports.pairwise = pairwise;\n//# sourceMappingURL=pairwise.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operator/pairwise.js\n// module id = 628\n// module chunks = 16","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\n/**\n * Groups pairs of consecutive emissions together and emits them as an array of\n * two values.\n *\n * <span class=\"informal\">Puts the current value and previous value together as\n * an array, and emits that.</span>\n *\n * <img src=\"./img/pairwise.png\" width=\"100%\">\n *\n * The Nth emission from the source Observable will cause the output Observable\n * to emit an array [(N-1)th, Nth] of the previous and the current value, as a\n * pair. For this reason, `pairwise` emits on the second and subsequent\n * emissions from the source Observable, but not on the first emission, because\n * there is no previous value in that case.\n *\n * @example <caption>On every click (starting from the second), emit the relative distance to the previous click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var pairs = clicks.pairwise();\n * var distance = pairs.map(pair => {\n * var x0 = pair[0].clientX;\n * var y0 = pair[0].clientY;\n * var x1 = pair[1].clientX;\n * var y1 = pair[1].clientY;\n * return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n * });\n * distance.subscribe(x => console.log(x));\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n *\n * @return {Observable<Array<T>>} An Observable of pairs (as arrays) of\n * consecutive values from the source Observable.\n * @method pairwise\n * @owner Observable\n */\nfunction pairwise() {\n return function (source) { return source.lift(new PairwiseOperator()); };\n}\nexports.pairwise = pairwise;\nvar PairwiseOperator = (function () {\n function PairwiseOperator() {\n }\n PairwiseOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new PairwiseSubscriber(subscriber));\n };\n return PairwiseOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar PairwiseSubscriber = (function (_super) {\n __extends(PairwiseSubscriber, _super);\n function PairwiseSubscriber(destination) {\n _super.call(this, destination);\n this.hasPrev = false;\n }\n PairwiseSubscriber.prototype._next = function (value) {\n if (this.hasPrev) {\n this.destination.next([this.prev, value]);\n }\n else {\n this.hasPrev = true;\n }\n this.prev = value;\n };\n return PairwiseSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=pairwise.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/pairwise.js\n// module id = 629\n// module chunks = 16","'use strict';\n\nmodule.exports = require('./src/js/main');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/index.js\n// module id = 630\n// module chunks = 16","'use strict';\n\nvar destroy = require('./plugin/destroy');\nvar initialize = require('./plugin/initialize');\nvar update = require('./plugin/update');\n\nmodule.exports = {\n initialize: initialize,\n update: update,\n destroy: destroy\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/main.js\n// module id = 631\n// module chunks = 16","'use strict';\n\nvar _ = require('../lib/helper');\nvar dom = require('../lib/dom');\nvar instances = require('./instances');\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n\n if (!i) {\n return;\n }\n\n i.event.unbindAll();\n dom.remove(i.scrollbarX);\n dom.remove(i.scrollbarY);\n dom.remove(i.scrollbarXRail);\n dom.remove(i.scrollbarYRail);\n _.removePsClasses(element);\n\n instances.remove(element);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/destroy.js\n// module id = 632\n// module chunks = 16","'use strict';\n\nmodule.exports = {\n handlers: ['click-rail', 'drag-scrollbar', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipePropagation: true,\n useBothWheelAxes: false,\n wheelPropagation: false,\n wheelSpeed: 1,\n theme: 'default'\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/default-setting.js\n// module id = 633\n// module chunks = 16","'use strict';\n\nvar EventElement = function (element) {\n this.element = element;\n this.events = {};\n};\n\nEventElement.prototype.bind = function (eventName, handler) {\n if (typeof this.events[eventName] === 'undefined') {\n this.events[eventName] = [];\n }\n this.events[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function (eventName, handler) {\n var isHandlerProvided = (typeof handler !== 'undefined');\n this.events[eventName] = this.events[eventName].filter(function (hdlr) {\n if (isHandlerProvided && hdlr !== handler) {\n return true;\n }\n this.element.removeEventListener(eventName, hdlr, false);\n return false;\n }, this);\n};\n\nEventElement.prototype.unbindAll = function () {\n for (var name in this.events) {\n this.unbind(name);\n }\n};\n\nvar EventManager = function () {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function (element) {\n var ee = this.eventElements.filter(function (eventElement) {\n return eventElement.element === element;\n })[0];\n if (typeof ee === 'undefined') {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function (element, eventName, handler) {\n this.eventElement(element).unbind(eventName, handler);\n};\n\nEventManager.prototype.unbindAll = function () {\n for (var i = 0; i < this.eventElements.length; i++) {\n this.eventElements[i].unbindAll();\n }\n};\n\nEventManager.prototype.once = function (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (e) {\n ee.unbind(eventName, onceHandler);\n handler(e);\n };\n ee.bind(eventName, onceHandler);\n};\n\nmodule.exports = EventManager;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/lib/event-manager.js\n// module id = 634\n// module chunks = 16","'use strict';\n\nmodule.exports = (function () {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n return function () {\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' +\n s4() + '-' + s4() + s4() + s4();\n };\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/lib/guid.js\n// module id = 635\n// module chunks = 16","'use strict';\n\nvar _ = require('../lib/helper');\nvar cls = require('../lib/class');\nvar instances = require('./instances');\nvar updateGeometry = require('./update-geometry');\n\n// Handlers\nvar handlers = {\n 'click-rail': require('./handler/click-rail'),\n 'drag-scrollbar': require('./handler/drag-scrollbar'),\n 'keyboard': require('./handler/keyboard'),\n 'wheel': require('./handler/mouse-wheel'),\n 'touch': require('./handler/touch'),\n 'selection': require('./handler/selection')\n};\nvar nativeScrollHandler = require('./handler/native-scroll');\n\nmodule.exports = function (element, userSettings) {\n userSettings = typeof userSettings === 'object' ? userSettings : {};\n\n cls.add(element, 'ps-container');\n\n // Create a plugin instance.\n var i = instances.add(element);\n\n i.settings = _.extend(i.settings, userSettings);\n cls.add(element, 'ps-theme-' + i.settings.theme);\n\n i.settings.handlers.forEach(function (handlerName) {\n handlers[handlerName](element);\n });\n\n nativeScrollHandler(element);\n\n updateGeometry(element);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/initialize.js\n// module id = 636\n// module chunks = 16","'use strict';\n\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindClickRailHandler(element, i) {\n function pageOffset(el) {\n return el.getBoundingClientRect();\n }\n var stopPropagation = function (e) { e.stopPropagation(); };\n\n i.event.bind(i.scrollbarY, 'click', stopPropagation);\n i.event.bind(i.scrollbarYRail, 'click', function (e) {\n var positionTop = e.pageY - window.pageYOffset - pageOffset(i.scrollbarYRail).top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n updateScroll(element, 'top', element.scrollTop + direction * i.containerHeight);\n updateGeometry(element);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'click', stopPropagation);\n i.event.bind(i.scrollbarXRail, 'click', function (e) {\n var positionLeft = e.pageX - window.pageXOffset - pageOffset(i.scrollbarXRail).left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n updateScroll(element, 'left', element.scrollLeft + direction * i.containerWidth);\n updateGeometry(element);\n\n e.stopPropagation();\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindClickRailHandler(element, i);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/handler/click-rail.js\n// module id = 637\n// module chunks = 16","'use strict';\n\nvar _ = require('../../lib/helper');\nvar dom = require('../../lib/dom');\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindMouseScrollXHandler(element, i) {\n var currentLeft = null;\n var currentPageX = null;\n\n function updateScrollLeft(deltaX) {\n var newLeft = currentLeft + (deltaX * i.railXRatio);\n var maxLeft = Math.max(0, i.scrollbarXRail.getBoundingClientRect().left) + (i.railXRatio * (i.railXWidth - i.scrollbarXWidth));\n\n if (newLeft < 0) {\n i.scrollbarXLeft = 0;\n } else if (newLeft > maxLeft) {\n i.scrollbarXLeft = maxLeft;\n } else {\n i.scrollbarXLeft = newLeft;\n }\n\n var scrollLeft = _.toInt(i.scrollbarXLeft * (i.contentWidth - i.containerWidth) / (i.containerWidth - (i.railXRatio * i.scrollbarXWidth))) - i.negativeScrollAdjustment;\n updateScroll(element, 'left', scrollLeft);\n }\n\n var mouseMoveHandler = function (e) {\n updateScrollLeft(e.pageX - currentPageX);\n updateGeometry(element);\n e.stopPropagation();\n e.preventDefault();\n };\n\n var mouseUpHandler = function () {\n _.stopScrolling(element, 'x');\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n };\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) {\n currentPageX = e.pageX;\n currentLeft = _.toInt(dom.css(i.scrollbarX, 'left')) * i.railXRatio;\n _.startScrolling(element, 'x');\n\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n e.stopPropagation();\n e.preventDefault();\n });\n}\n\nfunction bindMouseScrollYHandler(element, i) {\n var currentTop = null;\n var currentPageY = null;\n\n function updateScrollTop(deltaY) {\n var newTop = currentTop + (deltaY * i.railYRatio);\n var maxTop = Math.max(0, i.scrollbarYRail.getBoundingClientRect().top) + (i.railYRatio * (i.railYHeight - i.scrollbarYHeight));\n\n if (newTop < 0) {\n i.scrollbarYTop = 0;\n } else if (newTop > maxTop) {\n i.scrollbarYTop = maxTop;\n } else {\n i.scrollbarYTop = newTop;\n }\n\n var scrollTop = _.toInt(i.scrollbarYTop * (i.contentHeight - i.containerHeight) / (i.containerHeight - (i.railYRatio * i.scrollbarYHeight)));\n updateScroll(element, 'top', scrollTop);\n }\n\n var mouseMoveHandler = function (e) {\n updateScrollTop(e.pageY - currentPageY);\n updateGeometry(element);\n e.stopPropagation();\n e.preventDefault();\n };\n\n var mouseUpHandler = function () {\n _.stopScrolling(element, 'y');\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n };\n\n i.event.bind(i.scrollbarY, 'mousedown', function (e) {\n currentPageY = e.pageY;\n currentTop = _.toInt(dom.css(i.scrollbarY, 'top')) * i.railYRatio;\n _.startScrolling(element, 'y');\n\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n e.stopPropagation();\n e.preventDefault();\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindMouseScrollXHandler(element, i);\n bindMouseScrollYHandler(element, i);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/handler/drag-scrollbar.js\n// module id = 638\n// module chunks = 16","'use strict';\n\nvar _ = require('../../lib/helper');\nvar dom = require('../../lib/dom');\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindKeyboardHandler(element, i) {\n var hovered = false;\n i.event.bind(element, 'mouseenter', function () {\n hovered = true;\n });\n i.event.bind(element, 'mouseleave', function () {\n hovered = false;\n });\n\n var shouldPrevent = false;\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = element.scrollTop;\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if ((scrollTop === 0 && deltaY > 0) || (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if ((scrollLeft === 0 && deltaX < 0) || (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if ((e.isDefaultPrevented && e.isDefaultPrevented()) || e.defaultPrevented) {\n return;\n }\n\n var focused = dom.matches(i.scrollbarX, ':focus') ||\n dom.matches(i.scrollbarY, ':focus');\n\n if (!hovered && !focused) {\n return;\n }\n\n var activeElement = document.activeElement ? document.activeElement : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (_.isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 33: // page up\n deltaY = 90;\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = 90;\n } else {\n deltaY = -90;\n }\n break;\n case 34: // page down\n deltaY = -90;\n break;\n case 35: // end\n if (e.ctrlKey) {\n deltaY = -i.contentHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 36: // home\n if (e.ctrlKey) {\n deltaY = element.scrollTop;\n } else {\n deltaY = i.containerHeight;\n }\n break;\n default:\n return;\n }\n\n updateScroll(element, 'top', element.scrollTop - deltaY);\n updateScroll(element, 'left', element.scrollLeft + deltaX);\n updateGeometry(element);\n\n shouldPrevent = shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent) {\n e.preventDefault();\n }\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindKeyboardHandler(element, i);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/handler/keyboard.js\n// module id = 639\n// module chunks = 16","'use strict';\n\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindMouseWheelHandler(element, i) {\n var shouldPrevent = false;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = element.scrollTop;\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if ((scrollTop === 0 && deltaY > 0) || (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if ((scrollLeft === 0 && deltaX < 0) || (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === \"undefined\" || typeof deltaY === \"undefined\") {\n // OS X Safari\n deltaX = -1 * e.wheelDeltaX / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY/* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(deltaX, deltaY) {\n var child = element.querySelector('textarea:hover, select[multiple]:hover, .ps-child:hover');\n if (child) {\n if (!window.getComputedStyle(child).overflow.match(/(scroll|auto)/)) {\n // if not scrollable\n return false;\n }\n\n var maxScrollTop = child.scrollHeight - child.clientHeight;\n if (maxScrollTop > 0) {\n if (!(child.scrollTop === 0 && deltaY > 0) && !(child.scrollTop === maxScrollTop && deltaY < 0)) {\n return true;\n }\n }\n var maxScrollLeft = child.scrollLeft - child.clientWidth;\n if (maxScrollLeft > 0) {\n if (!(child.scrollLeft === 0 && deltaX < 0) && !(child.scrollLeft === maxScrollLeft && deltaX > 0)) {\n return true;\n }\n }\n }\n return false;\n }\n\n function mousewheelHandler(e) {\n var delta = getDeltaFromEvent(e);\n\n var deltaX = delta[0];\n var deltaY = delta[1];\n\n if (shouldBeConsumedByChild(deltaX, deltaY)) {\n return;\n }\n\n shouldPrevent = false;\n if (!i.settings.useBothWheelAxes) {\n // deltaX will only be used for horizontal scrolling and deltaY will\n // only be used for vertical scrolling - this is the default\n updateScroll(element, 'top', element.scrollTop - (deltaY * i.settings.wheelSpeed));\n updateScroll(element, 'left', element.scrollLeft + (deltaX * i.settings.wheelSpeed));\n } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n // only vertical scrollbar is active and useBothWheelAxes option is\n // active, so let's scroll vertical bar using both mouse wheel axes\n if (deltaY) {\n updateScroll(element, 'top', element.scrollTop - (deltaY * i.settings.wheelSpeed));\n } else {\n updateScroll(element, 'top', element.scrollTop + (deltaX * i.settings.wheelSpeed));\n }\n shouldPrevent = true;\n } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n // useBothWheelAxes and only horizontal bar is active, so use both\n // wheel axes for horizontal bar\n if (deltaX) {\n updateScroll(element, 'left', element.scrollLeft + (deltaX * i.settings.wheelSpeed));\n } else {\n updateScroll(element, 'left', element.scrollLeft - (deltaY * i.settings.wheelSpeed));\n }\n shouldPrevent = true;\n }\n\n updateGeometry(element);\n\n shouldPrevent = (shouldPrevent || shouldPreventDefault(deltaX, deltaY));\n if (shouldPrevent) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n if (typeof window.onwheel !== \"undefined\") {\n i.event.bind(element, 'wheel', mousewheelHandler);\n } else if (typeof window.onmousewheel !== \"undefined\") {\n i.event.bind(element, 'mousewheel', mousewheelHandler);\n }\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindMouseWheelHandler(element, i);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/handler/mouse-wheel.js\n// module id = 640\n// module chunks = 16","'use strict';\n\nvar _ = require('../../lib/helper');\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindTouchHandler(element, i, supportsTouch, supportsIePointer) {\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = element.scrollTop;\n var scrollLeft = element.scrollLeft;\n var magnitudeX = Math.abs(deltaX);\n var magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (((deltaY < 0) && (scrollTop === i.contentHeight - i.containerHeight)) ||\n ((deltaY > 0) && (scrollTop === 0))) {\n return !i.settings.swipePropagation;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (((deltaX < 0) && (scrollLeft === i.contentWidth - i.containerWidth)) ||\n ((deltaX > 0) && (scrollLeft === 0))) {\n return !i.settings.swipePropagation;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n updateScroll(element, 'top', element.scrollTop - differenceY);\n updateScroll(element, 'left', element.scrollLeft - differenceX);\n\n updateGeometry(element);\n }\n\n var startOffset = {};\n var startTime = 0;\n var speed = {};\n var easingLoop = null;\n var inGlobalTouch = false;\n var inLocalTouch = false;\n\n function globalTouchStart() {\n inGlobalTouch = true;\n }\n function globalTouchEnd() {\n inGlobalTouch = false;\n }\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n } else {\n // Maybe IE pointer\n return e;\n }\n }\n function shouldHandle(e) {\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (e.pointerType && e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) {\n return true;\n }\n return false;\n }\n function touchStart(e) {\n if (shouldHandle(e)) {\n inLocalTouch = true;\n\n var touch = getTouch(e);\n\n startOffset.pageX = touch.pageX;\n startOffset.pageY = touch.pageY;\n\n startTime = (new Date()).getTime();\n\n if (easingLoop !== null) {\n clearInterval(easingLoop);\n }\n\n e.stopPropagation();\n }\n }\n function touchMove(e) {\n if (!inLocalTouch && i.settings.swipePropagation) {\n touchStart(e);\n }\n if (!inGlobalTouch && inLocalTouch && shouldHandle(e)) {\n var touch = getTouch(e);\n\n var currentOffset = {pageX: touch.pageX, pageY: touch.pageY};\n\n var differenceX = currentOffset.pageX - startOffset.pageX;\n var differenceY = currentOffset.pageY - startOffset.pageY;\n\n applyTouchMove(differenceX, differenceY);\n startOffset = currentOffset;\n\n var currentTime = (new Date()).getTime();\n\n var timeGap = currentTime - startTime;\n if (timeGap > 0) {\n speed.x = differenceX / timeGap;\n speed.y = differenceY / timeGap;\n startTime = currentTime;\n }\n\n if (shouldPreventDefault(differenceX, differenceY)) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n }\n function touchEnd() {\n if (!inGlobalTouch && inLocalTouch) {\n inLocalTouch = false;\n\n clearInterval(easingLoop);\n easingLoop = setInterval(function () {\n if (!instances.get(element)) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!speed.x && !speed.y) {\n clearInterval(easingLoop);\n return;\n }\n\n if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n clearInterval(easingLoop);\n return;\n }\n\n applyTouchMove(speed.x * 30, speed.y * 30);\n\n speed.x *= 0.8;\n speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (supportsTouch) {\n i.event.bind(window, 'touchstart', globalTouchStart);\n i.event.bind(window, 'touchend', globalTouchEnd);\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (supportsIePointer) {\n if (window.PointerEvent) {\n i.event.bind(window, 'pointerdown', globalTouchStart);\n i.event.bind(window, 'pointerup', globalTouchEnd);\n i.event.bind(element, 'pointerdown', touchStart);\n i.event.bind(element, 'pointermove', touchMove);\n i.event.bind(element, 'pointerup', touchEnd);\n } else if (window.MSPointerEvent) {\n i.event.bind(window, 'MSPointerDown', globalTouchStart);\n i.event.bind(window, 'MSPointerUp', globalTouchEnd);\n i.event.bind(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n}\n\nmodule.exports = function (element) {\n if (!_.env.supportsTouch && !_.env.supportsIePointer) {\n return;\n }\n\n var i = instances.get(element);\n bindTouchHandler(element, i, _.env.supportsTouch, _.env.supportsIePointer);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/handler/touch.js\n// module id = 641\n// module chunks = 16","'use strict';\n\nvar _ = require('../../lib/helper');\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindSelectionHandler(element, i) {\n function getRangeNode() {\n var selection = window.getSelection ? window.getSelection() :\n document.getSelection ? document.getSelection() : '';\n if (selection.toString().length === 0) {\n return null;\n } else {\n return selection.getRangeAt(0).commonAncestorContainer;\n }\n }\n\n var scrollingLoop = null;\n var scrollDiff = {top: 0, left: 0};\n function startScrolling() {\n if (!scrollingLoop) {\n scrollingLoop = setInterval(function () {\n if (!instances.get(element)) {\n clearInterval(scrollingLoop);\n return;\n }\n\n updateScroll(element, 'top', element.scrollTop + scrollDiff.top);\n updateScroll(element, 'left', element.scrollLeft + scrollDiff.left);\n updateGeometry(element);\n }, 50); // every .1 sec\n }\n }\n function stopScrolling() {\n if (scrollingLoop) {\n clearInterval(scrollingLoop);\n scrollingLoop = null;\n }\n _.stopScrolling(element);\n }\n\n var isSelected = false;\n i.event.bind(i.ownerDocument, 'selectionchange', function () {\n if (element.contains(getRangeNode())) {\n isSelected = true;\n } else {\n isSelected = false;\n stopScrolling();\n }\n });\n i.event.bind(window, 'mouseup', function () {\n if (isSelected) {\n isSelected = false;\n stopScrolling();\n }\n });\n i.event.bind(window, 'keyup', function () {\n if (isSelected) {\n isSelected = false;\n stopScrolling();\n }\n });\n\n i.event.bind(window, 'mousemove', function (e) {\n if (isSelected) {\n var mousePosition = {x: e.pageX, y: e.pageY};\n var containerGeometry = {\n left: element.offsetLeft,\n right: element.offsetLeft + element.offsetWidth,\n top: element.offsetTop,\n bottom: element.offsetTop + element.offsetHeight\n };\n\n if (mousePosition.x < containerGeometry.left + 3) {\n scrollDiff.left = -5;\n _.startScrolling(element, 'x');\n } else if (mousePosition.x > containerGeometry.right - 3) {\n scrollDiff.left = 5;\n _.startScrolling(element, 'x');\n } else {\n scrollDiff.left = 0;\n }\n\n if (mousePosition.y < containerGeometry.top + 3) {\n if (containerGeometry.top + 3 - mousePosition.y < 5) {\n scrollDiff.top = -5;\n } else {\n scrollDiff.top = -20;\n }\n _.startScrolling(element, 'y');\n } else if (mousePosition.y > containerGeometry.bottom - 3) {\n if (mousePosition.y - containerGeometry.bottom + 3 < 5) {\n scrollDiff.top = 5;\n } else {\n scrollDiff.top = 20;\n }\n _.startScrolling(element, 'y');\n } else {\n scrollDiff.top = 0;\n }\n\n if (scrollDiff.top === 0 && scrollDiff.left === 0) {\n stopScrolling();\n } else {\n startScrolling();\n }\n }\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindSelectionHandler(element, i);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/handler/selection.js\n// module id = 642\n// module chunks = 16","'use strict';\n\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\n\nfunction bindNativeScrollHandler(element, i) {\n i.event.bind(element, 'scroll', function () {\n updateGeometry(element);\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindNativeScrollHandler(element, i);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/handler/native-scroll.js\n// module id = 643\n// module chunks = 16","'use strict';\n\nvar _ = require('../lib/helper');\nvar dom = require('../lib/dom');\nvar instances = require('./instances');\nvar updateGeometry = require('./update-geometry');\nvar updateScroll = require('./update-scroll');\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n\n if (!i) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n i.negativeScrollAdjustment = i.isNegativeScroll ? element.scrollWidth - element.clientWidth : 0;\n\n // Recalculate rail margins\n dom.css(i.scrollbarXRail, 'display', 'block');\n dom.css(i.scrollbarYRail, 'display', 'block');\n i.railXMarginWidth = _.toInt(dom.css(i.scrollbarXRail, 'marginLeft')) + _.toInt(dom.css(i.scrollbarXRail, 'marginRight'));\n i.railYMarginHeight = _.toInt(dom.css(i.scrollbarYRail, 'marginTop')) + _.toInt(dom.css(i.scrollbarYRail, 'marginBottom'));\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n dom.css(i.scrollbarXRail, 'display', 'none');\n dom.css(i.scrollbarYRail, 'display', 'none');\n\n updateGeometry(element);\n\n // Update top/left scroll to trigger events\n updateScroll(element, 'top', element.scrollTop);\n updateScroll(element, 'left', element.scrollLeft);\n\n dom.css(i.scrollbarXRail, 'display', '');\n dom.css(i.scrollbarYRail, 'display', '');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/perfect-scrollbar/src/js/plugin/update.js\n// module id = 644\n// module chunks = 16","import TransitionEventController from './../../../base/controller/TransitionEvent.controller';\nimport {IDENTIFIERS} from './../../constants/Identifiers.const';\n\nimport $ from 'jquery';\nimport dom from 'fasterdom';\n\n/**\n * Add the event handlers\n *\n * @returns {void}\n */\nfunction addHandler () {\n\tconst self = this,\n\t slaveContainer = self.$mainHeader.add( '#off-screen-wrap' );\n\n\tself.beforeOpen( ( $trigger ) => {\n\t\tdom.mutateInstant( () => {\n\t\t\tslaveContainer.addClass( 'osc--during-animation osc--during-animation--open' );\n\t\t} );\n\t} );\n\n\tself.afterOpen( ( $trigger ) => {\n\t\tdom.mutateInstant( () => {\n\t\t\tslaveContainer.removeClass( 'osc--during-animation osc--during-animation--open' );\n\t\t} );\n\t} );\n\n\tself.beforeClose( ( $trigger ) => {\n\t\tdom.mutateInstant( () => {\n\t\t\tslaveContainer.addClass( 'osc--during-animation osc--during-animation--close' );\n\t\t} );\n\t} );\n\n\tself.afterClose( ( $trigger ) => {\n\t\tdom.mutateInstant( () => {\n\t\t\tslaveContainer.removeClass( 'osc--during-animation osc--during-animation--close' );\n\t\t} );\n\t} );\n}\n\nfunction getCookie ( name ) {\n\tconst match = document.cookie.match( new RegExp( name + '=([^;]+)' ) );\n\n\tif ( match ) {\n\t\treturn match[ 1 ];\n\t}\n}\n\nfunction setCartCountFromCookie () {\n\tconst self = this,\n\t cookieData = getCookie( 'BasketCount' ),\n\t htmlData = self.$cartCounter.attr( 'data-content' ) || 0,\n\t count = cookieData ? cookieData.replace( /\"/g, '' ).split( ',' )[ 0 ] : 0;\n\n\tif ( count > 0 && count != htmlData ) {\n\t\tdom.mutateInstant( () => {\n\t\t\tself.$cartCounter.attr( 'data-content', count );\n\t\t} );\n\t}\n}\n\n/**\n * Class handling the state of off-screen-cart container.\n * Controls the state of the container.\n * @extends { TransitionEventController }\n */\nclass OffScreenCartController extends TransitionEventController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.$scope = null;\n\t}\n\n\t/**\n\t * Initialises the controller singleton.\n\t * Has to be called after ready event.\n\t *\n\t * @param { object } $root - jQuery wrapped DOM node\n\t * @public\n\t * @returns {void}\n\t */\n\tinit ( $root ) {\n\t\tconst self = this;\n\n\t\tsuper.init( $root );\n\n\t\tself.$scope = $root;\n\n\t\tself.$mainHeader = $( IDENTIFIERS.MAIN_HEADER.ROOT );\n\t\tself.$cart = self.$mainHeader.find( '.cart' );\n\t\tself.$cartCounter = self.$mainHeader.find( '.cart [data-element=\"notification-badge\"]' );\n\n\t\tself.setTransition( 'transform' );\n\n\t\tsetCartCountFromCookie.call( self );\n\t\taddHandler.call( self );\n\t}\n}\n\n/**\n * @private\n * @type { OffScreenCartController }\n */\nconst instance = new OffScreenCartController();\n\nexport default instance;\n\n\n\n// WEBPACK FOOTER //\n// ./js/framework/controller/offscreen/OffscreenCart.controller.js","import TransitionEventController from './../../../base/controller/TransitionEvent.controller';\nimport { getHiddenDimensions } from './../../../helper/global.helper';\n\nimport { IDENTIFIERS } from './../../constants/Identifiers.const';\nimport bucket from './../../../services/Bucket.service';\n\nimport $ from 'jquery';\nimport fasterdom from 'fasterdom';\nimport Device from 'device';\n\nimport WindowGatewayService from './../../../services/gateways/WindowGateway.service';\n\nconst windowGateway = new WindowGatewayService();\n\nfunction determineDrawerHeight () {\n\tif ( !this.$drawer || this.$drawer.length < 1 ) {\n\t\treturn;\n\t}\n\n\tthis.$drawer.each( ( i, v ) => {\n\t\tconst dim = getHiddenDimensions( $( v ), 'height', true );\n\n\t\tif ( dim.outerHeight > this.minHeight ) {\n\t\t\tthis._drawerDim[ v.getAttribute( 'id' ) ] = {\n\t\t\t\theight : dim.outerHeight\n\t\t\t};\n\t\t\t$( v ).css( 'height', dim.outerHeight );\n\t\t}\n\t} );\n}\n\nfunction determineMinHeight () {\n\tif ( !this.$drawer || this.$drawer.length < 1 ) {\n\t\treturn;\n\t}\n\n\tconst style = window.getComputedStyle( this.$scope[ 0 ] );\n\n\tif ( style ) {\n\t\tthis.minHeight = parseInt( style.getPropertyValue( 'height' ).replace( 'px', '' ), 10 );\n\t\tthis.curHeight = this.minHeight;\n\t}\n}\n\nfunction determineHeights () {\n\tthis::determineMinHeight();\n\tthis::determineDrawerHeight();\n}\n\n/**\n * Hide the app drawer and remove classes / attributes set\n *\n * @private\n * @param {Object} $trigger - jQuery wrapped DOM node, Button which triggered the close\n * @return {void}\n */\nfunction closeAppDrawerContainer ( $trigger ) {\n\tfasterdom.mutateInstant( () => {\n\t\tthis.$scope.css( 'height', '' );\n\t\tthis.$scope.removeClass( 'drawer-' + this.currentDrawer );\n\t\tthis.currentDrawer = '';\n\t} );\n}\n\n/**\n * Hide the app drawer and remove classes / attributes set\n *\n * @private\n * @param {Object} $trigger - jQuery wrapped DOM node, Button which triggered the open\n * @return {void}\n */\nfunction openAppDrawerContainer ( $trigger ) {\n\tthis::determineDrawerHeight();\n\n\tlet nextDrawer,\n\t\t\tisSearchNext = false,\n\t\t\tdimensionDiffers = false;\n\n\tfasterdom.measureInstant( () => {\n\t\tnextDrawer = $trigger.attr( 'aria-controls-drawer' );\n\t\tisSearchNext = nextDrawer === 'search-drawer' && this.$scope.find( '[data-tpl = ses01]' ).length;\n\t\tdimensionDiffers = ( this._drawerDim.hasOwnProperty( nextDrawer ) && this._drawerDim[ nextDrawer ].height > this.minHeight ) || ( !this._drawerDim.hasOwnProperty( nextDrawer ) && this.curHeight !== this.minHeight );\n\t} );\n\n\tfasterdom.mutateInstant( () => {\n\t\tif ( this.currentDrawer ) {\n\t\t\tthis.$scope.removeClass( 'drawer-' + this.currentDrawer );\n\t\t}\n\n\t\tif ( isSearchNext ) {\n\t\t\t( this.currentDrawer ?\n\t\t\t\t\tthis.drawerCollection.afterTransitionOnce :\n\t\t\t\t\tthis.afterOpenOnce\n\t\t\t).call( this, () => this.$scope.find( '[data-tpl=ses01] #search' ).focus() );\n\t\t}\n\n\t\tthis.$scope.addClass( 'drawer-' + nextDrawer );\n\t\tthis.currentDrawer = nextDrawer;\n\n\t\tif ( dimensionDiffers ) {\n\t\t\tconst theHeight = this._drawerDim[ nextDrawer ] && this._drawerDim[ nextDrawer ].height > this.minHeight ? this._drawerDim[ nextDrawer ].height : '';\n\n\t\t\tthis.$scope.css( 'height', theHeight );\n\t\t\tthis.curHeight = theHeight || this.minHeight;\n\t\t\t\n\t\t\tif ( this.curHeight !== this.minHeight ) {\n\t\t\t\tthis.$offScreenContent.css( 'transform', `translateY(${this.curHeight}px)` );\n\t\t\t} else {\n\t\t\t\tthis.$offScreenContent.css( 'transform', '' );\n\t\t\t}\n\t\t}\n\t} );\n}\n\n/**\n * Add the event handlers\n *\n * @returns {void}\n */\nfunction addHandler () {\n\tconst self = this,\n\t\t\t\tslaveContainer = self.$offScreenContent.add( self.$mainHeader );\n\n\tself.$scope.on( 'fix.main-header', ( e, headerHeight ) => {\n\t\tself.isFixed = true;\n\t\tfasterdom.mutate( () => {\n\t\t\tself.$scope.css( { position : 'fixed', top : headerHeight } );\n\t\t} );\n\t} );\n\n\tself.$scope.on( 'release.main-header', ( e, headerHeight ) => {\n\t\tself.isFixed = false;\n\t\tfasterdom.mutate( () => {\n\t\t\tself.$scope.css( { position : '', top : '' } );\n\t\t} );\n\t} );\n\n\tself.onOpen( ( $trigger ) => {\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tslaveContainer.addClass( 'osad--open osad--during-animation--open osad--during-animation' );\n\t\t} );\n\t\topenAppDrawerContainer.call( self, $trigger );\n\t} );\n\n\tself.afterOpen( ( $trigger ) => {\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tslaveContainer.removeClass( 'osad--during-animation osad--during-animation--open' );\n\t\t} );\n\t} );\n\n\tself.onClose( ( $trigger ) => {\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tthis.$offScreenContent.css( 'transform', '' );\n\t\t\tslaveContainer.addClass( 'osad--during-animation--close osad--during-animation' );\n\t\t} );\n\t} );\n\n\tself.afterClose( ( $trigger ) => {\n\t\tcloseAppDrawerContainer.call( self, $trigger );\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tslaveContainer.removeClass( 'osad--during-animation osad--during-animation--close osad--open' );\n\t\t} );\n\t} );\n\n\tself.$scope.on( 'open-attempt', ( e, $trigger ) => {\n\t\topenAppDrawerContainer.call( self, $trigger );\n\t} );\n\n\tself.$scope.on( 'close-attempt', ( e, $trigger ) => {\n\t\topenAppDrawerContainer.call( self, $trigger );\n\t} );\n\n\tDevice.breakpointEvent.subscribe( ( current ) => {\n\t\tif ( self.isOpen && ( self.currentDrawer === 'contact-drawer' || self.currentDrawer === 'login-drawer' ) && ( current.alias === 'md' || current.alias === 'xs' ) ) {\n\t\t\tbucket.controller.framework.offscreen.close();\n\t\t}\n\t} );\n\n\tDevice.resizeEvent.subscribe( this::determineHeights );\n}\n\n/**\n * Class handling the state of off-screen-app-drawer container.\n * Controls the state container and sub container.\n * @extends { TransitionEventController }\n */\nclass OffScreenAppDrawerController extends TransitionEventController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.$scope = null;\n\n\t\tthis._isFixed = false;\n\t\tthis._isOpen = false;\n\t\tthis._currentDrawer = false;\n\n\t\tthis._drawerDim = {};\n\n\t\tthis.minHeight = 0;\n\t\tthis.curHeight = 0;\n\t}\n\n\t/**\n\t * Initialises the controller singleton.\n\t * Has to be called after ready event.\n\t *\n\t * @public\n\t * @param {Object} $root - jQuery wrapped DOM node\n\t * @returns {void}\n\t */\n\tinit ( $root ) {\n\t\tsuper.init( $root );\n\n\t\tthis.currentDrawer = '';\n\t\tthis.$scope = $root;\n\t\tthis.$container = $root.children( 'div' );\n\n\t\tthis.$drawer = this.$container.children( '.app-drawer' );\n\n\t\tthis.drawerCollection = new TransitionEventController();\n\t\tthis.drawerCollection.init( this.$drawer );\n\t\tthis.drawerCollection.setTransition( 'transform' );\n\n\t\tthis.$offScreenContent = $( IDENTIFIERS.OFF_SCREEN.CONTENT );\n\t\tthis.$mainHeader = $( IDENTIFIERS.MAIN_HEADER.ROOT );\n\n\t\tthis.setTransition( 'transform' );\n\n\t\tthis::determineHeights();\n\n\t\twindowGateway.messageEvent.subscribe( ( message ) => {\n\t\t\tif ( message.type && ( message.type === 'scriptReady' || message.type === 'styleReady' ) ) {\n\t\t\t\tthis::determineHeights();\n\t\t\t}\n\t\t} );\n\n\t\taddHandler.call( this );\n\t}\n\n\tset isFixed ( is ) {\n\t\tif ( is === true ) {\n\t\t\tthis._isFixed = true;\n\t\t} else {\n\t\t\tthis._isFixed = false;\n\t\t}\n\t}\n\n\tget isFixed () {\n\t\treturn this._isFixed;\n\t}\n\n\tset currentDrawer ( is ) {\n\t\tif ( typeof is === 'string' ) {\n\t\t\tthis._currentDrawer = is;\n\t\t} else {\n\t\t\tthis._currentDrawer = false;\n\t\t}\n\t}\n\n\tget currentDrawer () {\n\t\treturn this._currentDrawer;\n\t}\n\n}\n\n/**\n * @private\n * @type { OffScreenAppDrawerController }\n */\nconst instance = new OffScreenAppDrawerController(); // eslint-disable-line one-var\n\nexport default instance;\n\n\n\n// WEBPACK FOOTER //\n// ./js/framework/controller/offscreen/OffScreenAppDrawer.controller.js","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order of result values is determined by the\n * order they occur in the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = intersection;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/lodash.intersection/index.js\n// module id = 647\n// module chunks = 16","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order of result values is determined by the\n * order they occur in the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = difference;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/lodash.difference/index.js\n// module id = 648\n// module chunks = 16","/** @module framework/mainHeader */\nimport AbstractController from './../../base/controller/Abstract.controller';\nimport OffscreenNavigationController from './offscreen/OffscreenNavigation.controller';\n\nimport Device from 'device';\nimport { DIRECTIONS } from 'device/services/Scroll.service';\n\nimport $ from 'jquery';\nimport fasterdom from 'fasterdom';\n/**\n * The classes used on HTML-elements\n * @type {Object}\n */\nconst classes = {\n\t fixed : 'main-header--fixed',\n\t unfixed : 'main-header--unfixed',\n\t outViewport : 'main-header--out-of-viewport',\n\t inViewport : 'main-header--in-viewport',\n\t animIn : 'main-header--anim-in',\n\t animOut : 'main-header--anim-out'\n },\n /**\n * Threshold in pixel to offset the animation begining / end\n * @type {Number}\n */\n threshold = 100,\n /**\n * Replacable strings for the animation steps\n * @type {Object}\n */\n anims = {\n\t out : {\n\t\t opacity : '1 - %s',\n\t\t top : '%s * ' + threshold\n\t }\n };\n\n/**\n * Reset the styles changed during animating the header in\n *\n * @private\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction resetAnimIn () {\n\tconst self = this;\n\n\tfasterdom.mutateInstant( () => {\n\t\tself.animEl.children().css( { marginTop : '' } );\n\t} );\n}\n\n/**\n * Animate the header in again, after it was fixed\n *\n * @private\n * @param {float} step Current step of animation between 0 and 1\n * @param {Object} data Current Scroll Event Object { x, y, direction }\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction animIn ( step, data ) {\n\tconst self = this;\n\n\tif ( data.y < self.bounds.y + self.childPosition - self.childPositionOpen ) {\n\t\tself.isFixed = false;\n\n\t\tresetAnimIn.call( self );\n\t}\n}\n\n/**\n * Checks if the header needs to be animated in again\n *\n * @private\n * @param {Object} data Current Scroll Event Object { x, y, direction }\n * @param {float} step Current step of animation between 0 and 1\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction checkAnimIn ( data, step ) {\n\tconst self = this;\n\n\tif ( step <= 0 || step >= 1 || !self.isFixed ) {\n\t\tresetAnimIn.call( self );\n\t\tself.isAnimIn = false;\n\t\treturn;\n\t}\n\n\tif ( !self.isAnimIn ) {\n\t\tself.isAnimIn = true;\n\t}\n\n\tanimIn.call( self, step, data );\n}\n\n/**\n * Reset the styles changed during animating the header out\n *\n * @private\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction resetAnimOut () {\n\tconst self = this;\n\n\tconst anim = Object.assign( {}, anims.out );\n\n\tObject.keys( anim ).forEach( ( key ) => {\n\t\tanim[ key ] = '';\n\t} );\n\n\tfasterdom.mutateInstant( () => {\n\t\tself.animEl.css( anim );\n\t} );\n}\n\n/**\n * Animate the header out\n *\n * @private\n * @param {float} step Current step of animation between 0 and 1\n * @param {Object} data Current Scroll Event Object { x, y, direction }\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction animOut ( step, data ) {\n\tconst self = this;\n\n\tconst anim = Object.assign( {}, anims.out );\n\n\tObject.keys( anim ).forEach( ( key ) => {\n\t\tconst val = anim[ key ],\n\t\t\t\t\tstr = val.replace( '%s', step );\n\n\t\tanim[ key ] = new Function( 'return ' + str + ';' )(); // eslint-disable-line no-new-func\n\t} );\n\n\tself.animEl.css( anim );\n}\n\n/**\n * Checks if the header needs to be animated out\n *\n * @private\n * @param {Object} data Current Scroll Event Object { x, y, direction }\n * @param {float} step Current step of animation between 0 and 1\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction checkAnimOut ( data, step ) {\n\tconst self = this;\n\n\tif ( step <= 0 || step >= 1 || self.isFixed || self.isAnimIn ) {\n\t\tself.isAnimOut = false;\n\t\tresetAnimOut.call( self );\n\t\treturn;\n\t}\n\n\tif ( !self.isAnimOut ) {\n\t\tself.isAnimOut = true;\n\t}\n\n\tanimOut.call( self, step, data );\n}\n\n/**\n * Checks if the header needs to be hidden again, after it was fixed\n *\n * @private\n * @param {Object} data Current Scroll Event Object { x, y }\n * @param {float} step Current step of animation between 0 and 1\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction checkAnimOutAgain ( data, step ) {\n\tif ( typeof checkAnimOutAgain.last === 'undefined' || checkAnimOutAgain.last === false ) {\n\t\tcheckAnimOutAgain.last = data;\n\t\treturn;\n\t}\n\n\tif ( data.y - checkAnimOutAgain.last.y > threshold * 5 ) {\n\t\tthis.isFixed = false;\n\t\tcheckAnimOutAgain.last = false;\n\t}\n}\n\n/**\n * Binds the handler functions to Events on Scroll\n *\n * @private\n * @return {void}\n *\n * @memberof module:framework/mainHeader~MainHeaderController\n */\nfunction addHandler () {\n\tconst self = this;\n\n\tDevice.breakpointEvent.subscribe( ( data ) => {\n\t\tif ( self.isFixed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfasterdom.measureInstant( () => {\n\t\t\tconst offset = self.$scope.offset(),\n\t\t\t wasFixed = self.isFixed;\n\n\t\t\tself.isFixed = false;\n\n\t\t\tself.bounds = {\n\t\t\t\tx : offset.left,\n\t\t\t\ty : offset.top,\n\t\t\t\tx2 : offset.left + self.$scope.outerWidth(),\n\t\t\t\ty2 : offset.top + self.$scope.outerHeight()\n\t\t\t};\n\n\t\t\tself.isFixed = wasFixed;\n\t\t} );\n\t} );\n\n\tDevice.scrollEvent.subscribe( ( data ) => {\n\t\tconst step = Math.max( Math.min( self.step( data ), 1 ), 0 );\n\n\t\t// header is visible in viewport\n\t\tif ( data.y <= self.bounds.y2 + threshold ) {\n\t\t\tself.inViewport = true;\n\t\t\tself.outViewport = false;\n\t\t}\n\n\t\t// header is not visible in viewport\n\t\tif ( data.y > self.bounds.y2 + threshold ) {\n\t\t\tself.outViewport = true;\n\t\t\tself.inViewport = false;\n\n\t\t\tif ( data.direction === DIRECTIONS.DOWN && !this.isFixed && OffscreenNavigationController.isOpen ) {\n\t\t\t\tthis.isFixed = true;\n\t\t\t}\n\t\t}\n\n\t\t// scrolling up and header was out of viewport\n\t\tif ( data.direction === DIRECTIONS.UP && self.outViewport && !self.isFixed ) {\n\t\t\tself.isFixed = true;\n\t\t\tif ( self.$child.length ) {\n\t\t\t\tfasterdom.mutateInstant( () => {\n\t\t\t\t\tself.childPositionOpen = self.$child.position().top;\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tif ( data.direction === DIRECTIONS.UP && data.y <= self.bounds.y && self.isFixed ) {\n\t\t\tself.isFixed = false;\n\t\t}\n\n\t\tif ( data.direction === DIRECTIONS.UP && typeof checkAnimOutAgain.last !== 'undefined' && checkAnimOutAgain.last !== false ) {\n\t\t\tcheckAnimOutAgain.last = data;\n\t\t}\n\n\t\tif ( data.direction === DIRECTIONS.DOWN && self.isFixed && !self.isAnimOut && !self.isAnimIn && !OffscreenNavigationController.isOpen ) {\n\t\t\tcheckAnimOutAgain.call( this, data, step );\n\t\t}\n\n\t\t// was scrolling up and animation finished, now scrolling down\n\t\tif ( step <= 0 || ( data.direction === DIRECTIONS.DOWN && self.isAnimIn && !self.isFixed ) && self.isAnimIn ) { // eslint-disable-line no-extra-parens\n\t\t\tself.isAnimIn = false;\n\t\t}\n\n\t\t// scrolling down, anim out if needed, revert if scrolling back up during animation\n\t\tif ( ( data.direction === DIRECTIONS.DOWN && !self.isAnimIn ) || ( data.direction === DIRECTIONS.UP && self.isAnimOut ) ) { // eslint-disable-line no-extra-parens\n\t\t\tcheckAnimOut.call( self, data, step );\n\t\t}\n\n\t\t// scrolling up, anim in if needed\n\t\tif ( data.direction === DIRECTIONS.UP && !self.isAnimOut ) {\n\t\t\tcheckAnimIn.call( self, data, step );\n\t\t}\n\n\t} );\n}\n\n/**\n * Class representing the main navigation menu.\n * Controls the state of the navigation.\n * Controls menu item behavior.\n * @extends { AbstractController }\n * @class\n */\nclass MainHeaderController extends AbstractController {\n\t/** @constructs */\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis._isFixed = false;\n\t\tthis._inViewport = false;\n\t\tthis._outViewport = false;\n\t\tthis._animIn = false;\n\t\tthis._animOut = false;\n\t}\n\n\t/**\n\t * Initialises the controller singleton.\n\t * Has to be called after ready event.\n\t *\n\t * @public\n\t * @param { jQuery } $root - jQuery wrapped DOM node\n\t * @return { MainHeaderController } instance\n\t */\n\tinit ( $root ) {\n\t\tconst self = this;\n\n\t\tif ( !$root.length || $( 'body' ).hasClass( 'login-page' ) || $( 'body' ).hasClass( 'register-page' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tself.$scope = $root;\n\t\tself.$affected = $( '#off-screen-app-drawer' );\n\n\t\tthis.frameworkNoStickyHeader = self.$scope.siblings( '#off-screen-content' ).children( '.framework--no-sticky-header' ).length === 1;\n\n\t\t// TODO: self.bounds faster requested than fasterdom set it\n\t\t//fasterdom.measureInstant( () => {\n\t\tself.$scope.children().wrapAll( '<div />' );\n\t\tself.$wrap = self.$scope.children( 'div' );\n\t\tself.$child = self.$wrap.children( '#quick-navigation' );\n\n\t\tself.animEl = self.$wrap;\n\n\t\tthis.updatePosition();\n\t\t//} );\n\n\t\taddHandler.call( self );\n\t\treturn this;\n\t}\n\n\t/** @public */\n\tset inViewport ( is ) {\n\t\tconst action = is === true ?\n\t\t 'add' :\n\t\t 'remove';\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tthis.$scope[ action + 'Class' ]( classes.inViewport );\n\t\t} );\n\t\tthis._inViewport = is === true;\n\t}\n\n\t/** @public */\n\tget inViewport () {\n\t\treturn this._inViewport;\n\t}\n\n\t/** @public */\n\tset outViewport ( is ) {\n\t\tconst action = is === true ?\n\t\t 'add' :\n\t\t 'remove';\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tthis.$scope[ action + 'Class' ]( classes.outViewport );\n\t\t} );\n\t\tthis._outViewport = is === true;\n\t}\n\n\t/** @public */\n\tget outViewport () {\n\t\treturn this._outViewport;\n\t}\n\n\t/** @public */\n\tset isFixed ( is ) {\n\t\tif ( this.frameworkNoStickyHeader ) {\n\t\t\tis = false;\n\t\t}\n\t\t\n\t\tconst action = is === true ?\n\t\t 'add' :\n\t\t 'remove',\n\t\t unaction = is === true ?\n\t\t 'remove' :\n\t\t 'add',\n\t\t wasFixed = this._isFixed;\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tif ( is !== true ) {\n\t\t\t\tthis.$affected.trigger( 'release.main-header' );\n\t\t\t}\n\t\t\tif ( this.outViewport && ( action === 'add' || ( action === 'remove' && wasFixed ) ) ) { // eslint-disable-line no-extra-parens\n\t\t\t\tthis.$scope[ unaction + 'Class' ]( classes.unfixed );\n\t\t\t}\n\t\t\tthis.$scope[ action + 'Class' ]( classes.fixed );\n\t\t\tif ( is === true ) {\n\t\t\t\tthis.$affected.trigger( 'fix.main-header', this.$scope.outerHeight() );\n\t\t\t}\n\t\t} );\n\t\tthis._isFixed = is === true;\n\t}\n\n\t/** @public */\n\tget isFixed () {\n\t\treturn this._isFixed;\n\t}\n\n\t/** @public */\n\tset isAnimIn ( is ) {\n\t\tconst action = is === true ?\n\t\t 'add' :\n\t\t 'remove';\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tthis.$scope[ action + 'Class' ]( classes.animIn );\n\t\t} );\n\t\tthis._animIn = is === true;\n\t}\n\n\t/** @public */\n\tget isAnimIn () {\n\t\treturn this._animIn;\n\t}\n\n\t/** @public */\n\tset isAnimOut ( is ) {\n\t\tconst action = is === true ?\n\t\t 'add' :\n\t\t 'remove';\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tthis.$scope[ action + 'Class' ]( classes.animOut );\n\t\t} );\n\t\tthis._animOut = is === true;\n\t}\n\n\t/** @public */\n\tget isAnimOut () {\n\t\treturn this._animOut;\n\t}\n\n\t/** @public */\n\tstep ( data ) {\n\t\tconst self = this;\n\n\t\tif ( typeof data === 'undefined' || data.y < self.bounds.y ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn ( data.y - self.bounds.y ) / ( self.bounds.y2 - self.bounds.y + threshold );\n\t}\n\n\t/** @public */\n\tfix () {\n\t\tthis.isFixed = true;\n\t}\n\n\t/** @public */\n\tupdatePosition () {\n\n\t\tconst offset = this.$scope.offset(); // eslint-disable-line one-var\n\n\t\tthis.bounds = {\n\t\t\tx : offset.left,\n\t\t\ty : offset.top,\n\t\t\tx2 : offset.left + this.$scope.outerWidth(),\n\t\t\ty2 : offset.top + this.$scope.outerHeight()\n\t\t};\n\n\t\tthis.childPosition = this.$child.length ?\n\t\t this.$child.position().top :\n\t\t 0;\n\t\tthis.childPositionOpen = 0;\n\t}\n}\n\n/**\n * @private\n * @type { MainHeaderController }\n */\nconst instance = new MainHeaderController(); // eslint-disable-line one-var\n\nexport default instance;\n\n\n\n// WEBPACK FOOTER //\n// ./js/framework/controller/MainHeader.controller.js","import TransitionEventController from './../../base/controller/TransitionEvent.controller';\nimport OffscreenNavigationController from './../../framework/controller/offscreen/OffscreenNavigation.controller';\nimport CookieService from './../../services/Cookie.service.js';\nimport { getHiddenDimensions } from './../../helper/global.helper';\n\nimport fasterdom from 'fasterdom';\n\nconst cookieName = 'disclaimer',\n isCached = 'is-cached';\n\n/**\n * Removes the cookie disclaimer container\n * @returns { void }\n * @private\n */\nfunction removeContainer () {\n\tthis.$button.off( 'click' );\n\tthis.$scope.remove();\n}\n\n/**\n * Shows / expands the cookie disclaimer container\n * @returns { void }\n * @private\n */\nfunction showContainer () {\n\tconst self = this;\n\n\tself.onOpen( () => {\n\t\tlet _h = 0;\n\n\t\tfasterdom.measureInstant( () => {\n\t\t\t_h = getHiddenDimensions( self.$scope, 'height' ).outerHeight;\n\t\t} );\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tself.$scope.css( { height : _h } );\n\t\t} );\n\t} );\n\n\tself.afterOpen( () => {\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tself.$scope.css( { height : '' } ).addClass( 'expanded' );\n\t\t} );\n\t} );\n\n\tself.open();\n}\n\n/**\n * Hides / collapses the cookie disclaimer container\n * @returns { void }\n * @private\n */\nfunction hideContainer () {\n\tconst self = this;\n\n\tself.beforeClose( () => {\n\t\tlet _h = 0;\n\n\t\tfasterdom.measureInstant( () => {\n\t\t\t_h = getHiddenDimensions( self.$scope, 'height' ).outerHeight;\n\t\t} );\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tself.$scope.css( { height : _h } ).removeClass( 'expanded' );\n\t\t\tself.$button.off( 'click' );\n\n\t\t\tOffscreenNavigationController.$scope.css( {\n\t\t\t\t position : 'absolute',\n\t\t\t\t top : 0\n\t\t\t } );\n\t\t} );\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tself.$scope.css( { height : '' } );\n\t\t}, 1 );\n\n\t} );\n\n\tself.afterClose( () => {\n\t\tremoveContainer.call( this );\n\n\t\tOffscreenNavigationController.test();\n\t} );\n\n\tself.close();\n}\n\n/**\n * Sets a cookie and hides the cookie disclaimer container\n * @returns { void }\n * @private\n */\nfunction hideAndMemorize () {\n\thideContainer.call( this );\n\tCookieService.setCookie( cookieName, isCached );\n}\n\n/**\n * Add event listeners to handle click events\n * @returns { void }\n * @private\n */\nfunction addHandler () {\n\tconst self = this;\n\n\tself.$button.on( 'click', ( e ) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\thideAndMemorize.call( self );\n\t} );\n}\n\n/**\n * Class representing the cookie disclaimer.\n * Controls the state of the cookie disclaimer container.\n * @extends { AbstractController }\n */\nclass CookieDisclaimerController extends TransitionEventController {\n\n\tconstructor () {\n\t\tsuper();\n\t}\n\n\t/**\n\t * Initialises the controller singleton.\n\t * Has to be called after ready event.\n\t * @param { jQuery } $root - jQuery wrapped DOM node\n\t * @returns { CookieDisclaimerController } instance\n\t * @public\n\t */\n\tinit ( $root ) {\n\t\tconst self = this;\n\n\t\tsuper.init( $root );\n\n\t\tself.$scope = $root;\n\t\tself.$button = self.$scope.find( '.btn' );\n\n\t\tthis.setTransition( 'height' );\n\n\t\t// check if cookie already exist\n\t\tif ( !CookieService.getCookie( cookieName ) ) {\n\t\t\tshowContainer.call( self );\n\t\t\taddHandler.call( self );\n\t\t} else {\n\t\t\tremoveContainer.call( self );\n\t\t}\n\n\t\treturn this;\n\t}\n}\n\n/**\n * @private\n */\nconst instance = new CookieDisclaimerController(); // eslint-disable-line one-var\n\nexport default instance;\n\n\n\n// WEBPACK FOOTER //\n// ./js/framework/controller/CookieDisclaimer.controller.js","\r\nimport AbstractController from './../../base/controller/Abstract.controller';\r\nimport WindowGateway from './../../services/gateways/WindowGateway.service';\r\nimport globalEvents from './../../helper/SignalWrapper';\r\n\r\nimport EventHelper from './../../services/EventHelper.service';\r\n\r\nimport debounce from 'debounce';\r\n\r\nimport Device from 'device';\r\nimport dom from 'fasterdom';\r\n\r\nimport $ from 'jquery';\r\n\r\nconst EVENTS = {\r\n\tRESIZE : 'iframe.resize',\r\n\tORIGIN : 'iframe.origin',\r\n\tLOAD : 'iframe.load',\r\n\tUNLOAD : 'iframe.unload',\r\n\tHANDSHAKE : 'iframe.handshake',\r\n\tHANDSHAKE_CONFIRMED : 'iframe.handshakeConfirmed'\r\n};\r\n\r\nfunction makeHandshakeConfirmMessage () {\r\n\treturn {\r\n\t\ttype : EVENTS.HANDSHAKE_CONFIRMED,\r\n\t\tdata : {},\r\n\t\tsrc : document.location.href,\r\n\t\ttarget : this.parent.origin || '#',\r\n\t\tconnectionId : this.parent.connectionId\r\n\t};\r\n}\r\n\r\nfunction confirmHandshake () {\r\n\tthis.logger.log( 'Sending handshake confirmation' );\r\n\tthis.gateway.send( this::makeHandshakeConfirmMessage(), this.parent.origin );\r\n}\r\n\r\n/**\r\n * @typedef {Object} iFrameMessage\r\n * @property {string} event string identifying the event\r\n * @property {object} data containing the data to be passed along\r\n */\r\nfunction initializeHandshake () {\r\n\tthis.handshake = new Promise( ( resolve, reject ) => {\r\n\t\t\r\n\t\tthis.gateway.messageEvent.subscribe( ( message ) => {\r\n\r\n\t\t\tswitch ( message.type ) {\r\n\r\n\t\t\t\tcase EVENTS.HANDSHAKE:\r\n\t\t\t\t\tthis.logger.log( 'Handshake received', message.data.connectionId );\r\n\t\t\t\t\tconst { origin, href, connectionId } = message.data;\r\n\r\n\t\t\t\t\tthis.parent = { origin, href, connectionId };\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t}\r\n\t\t} );\r\n\t} )\r\n\t.then( this::confirmHandshake )\r\n\t.catch( this.logger.error );\r\n}\r\n\r\n/**\r\n * @private\r\n * @returns {iFrameMessage} iFrameMessage containing the current height.\r\n */\r\nfunction makeResizeMessage () {\r\n\treturn {\r\n\t\ttype : EVENTS.RESIZE,\r\n\t\tdata : {\r\n\t\t\theight : this.$scope.outerHeight( true ),\r\n\t\t\twidth : this.$scope.width()\r\n\t\t},\r\n\t\tsrc : document.location.href,\r\n\t\ttarget : this.parent.origin || '#',\r\n\t\tconnectionId : this.parent.connectionId\r\n\t};\r\n}\r\n\r\nfunction makeLoadMessage () {\r\n\treturn {\r\n\t\ttype : EVENTS.LOAD,\r\n\t\tdata : {},\r\n\t\tsrc : document.location.href,\r\n\t\ttarget : this.parent.origin || '#',\r\n\t\tconnectionId : this.parent.connectionId\r\n\t};\r\n}\r\n\r\nfunction makeUnloadMessage () {\r\n\treturn {\r\n\t\ttype : EVENTS.UNLOAD,\r\n\t\tdata : {},\r\n\t\tsrc : document.location.href,\r\n\t\ttarget : this.parent.origin || '#',\r\n\t\tconnectionId : this.parent.connectionId\r\n\t};\r\n}\r\n\r\n/**\r\n *\r\n * @returns {void}\r\n */\r\nfunction setHeight () {\r\n\r\n\tthis.logger.log( 'setHeight' );\r\n\r\n\tdom.measureInstant( () => this.gateway.send( makeResizeMessage.call( this ), this.parent.origin ) );\r\n}\r\n\r\n/**\r\n * Setup the iframe for getting its height and add listeners\r\n * @return {void}\r\n */\r\nfunction setup () {\r\n\r\n\tthis.handshake\r\n\t\t.then( () => {\r\n\r\n\t\t\tthis.$scope.attr( 'style', 'height: auto !important' );\r\n\t\t\tsetHeight.call( this );\r\n\r\n\t\t\tDevice.resizeEvent.subscribe( setHeight.bind( this ) );\r\n\t\t\t// globalEvents.subscribe( 'transition.ended', setHeight.bind( this ) );\r\n\t\t\tEventHelper.addPrefixedEvent( $( document ), 'TransitionEnd', debounce( setHeight.bind( this ), 100 ) );\r\n\r\n\t\t\tif (this.$scope.find( 'iframe' ).context && this.$scope.find( 'iframe' ).context.children) {\r\n\t\t\t\tconst checkForHeight = setInterval(() => {\r\n\t\t\t\t\tconst isHeightsEqual = (this.$scope.find( 'iframe' ).context.children[0].clientHeight === this.$scope.find( 'iframe' ).context.children[0].scrollHeight);\r\n\r\n\t\t\t\t\tif ( !isHeightsEqual ) {\r\n\t\t\t\t\t\tsetHeight.call( this );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\twindow.clearInterval(checkForHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 500);\r\n\t\t\t}\r\n\r\n\t\t\tthis.gateway.send( makeLoadMessage.call( this ), this.parent.origin );\r\n\t\t} );\r\n}\r\n\r\nfunction unload () {\r\n\tthis.handshake = new Promise( () => {} );\r\n\tthis.gateway.send( this::makeUnloadMessage(), this.parent.origin );\r\n}\r\n\r\nclass IFrameChildController extends AbstractController {\r\n\r\n\tconstructor () {\r\n\t\tsuper();\r\n\r\n\t\tthis.debug = false;\r\n\r\n\t\tthis.handshake = null;\r\n\r\n\t\tthis.parent = {\r\n\t\t\torigin : null,\r\n\t\t\thref : null,\r\n\t\t\tconnectionId : null\r\n\t\t};\r\n\r\n\t\tthis.gateway = new WindowGateway();\r\n\r\n\t\tthis::initializeHandshake();\r\n\t}\r\n\r\n\t/**\r\n\t * @override\r\n\t * @returns {AbstractController} instance\r\n\t */\r\n\tinit () {\r\n\r\n\t\tthis.isInIframe = window.self !== window.top;\r\n\r\n\t\tthis.$scope = $( 'body' );\r\n\r\n\t\tif ( this.isInIframe ) {\r\n\r\n\t\t\tif ( document.readyState === 'complete' || document.readyState === 'interactive' ) {\r\n\t\t\t\tthis::setup();\r\n\t\t\t} else {\r\n\t\t\t\twindow.addEventListener( 'load', this::setup );\r\n\t\t\t}\r\n\r\n\t\t\twindow.addEventListener( 'beforeunload', this::unload );\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n}\r\n\r\nexport default IFrameChildController;\r\nexport {EVENTS};\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/IframeChild.controller.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/build/node_modules/url/url.js\n// module id = 652\n// module chunks = 16","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/build/node_modules/punycode/punycode.js\n// module id = 653\n// module chunks = 16","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/build/node_modules/url/util.js\n// module id = 654\n// module chunks = 16","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/build/node_modules/querystring-es3/index.js\n// module id = 655\n// module chunks = 16","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/build/node_modules/querystring-es3/decode.js\n// module id = 656\n// module chunks = 16","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/build/node_modules/querystring-es3/encode.js\n// module id = 657\n// module chunks = 16","import AbstractController from './../../base/controller/Abstract.controller';\r\nimport fasterdom from 'fasterdom';\r\nimport ClickOutside from './../../helper/clickoutside.class';\r\n\r\n/**\r\n * @private\r\n * @param { object } $el - jQuery wrapped DOM node\r\n * @returns { void }\r\n */\r\nfunction addHandler ( $el ) {\r\n\r\n\t$el.on( 'click', '.trigger', ( e ) => {\r\n\r\n\t\te.preventDefault();\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tfasterdom.mutateInstant( () => $el.toggleClass( 'open' ) );\r\n\r\n\t\tthis.clickoutside = new ClickOutside( $el, () =>\r\n\t\t\tfasterdom.mutateInstant( () => $el.removeClass( 'open' ) ) );\r\n\t} );\r\n}\r\n\r\n/**\r\n * Class representing an languageswitch (LAS01)\r\n * @extends { AbstractController }\r\n */\r\nclass LAS01Controller extends AbstractController {\r\n\r\n\tconstructor () {\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Initialises the controller.\r\n\t * Has to be called after ready event.\r\n\t *\r\n\t * @param { jQuery } $root - jQuery wrapped DOM node\r\n\t * @public\r\n\t * @return { LAS01Controller } instance\r\n\t */\r\n\tinit ( $root ) {\r\n\t\taddHandler.call( this, $root );\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n}\r\n\r\nexport default LAS01Controller;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/LAS01.controller.js","import { IDENTIFIERS } from './../constants/Identifiers.const';\n\nimport ACC01Controller from './../controller/ACC.controller';\nimport TIC01Controller from './../controller/TIC01.controller';\nimport SRC01Controller from './../controller/SRC01.controller';\nimport IframeController from './../controller/Iframe.controller';\nimport LayoutController from './../controller/Layout.controller';\nimport TSS01Instance from './../controller/TSS01.controller';\nimport SES01Controller from './../controller/SES01.controller';\nimport IEBController from './../controller/IEB.controller';\n\nimport JFC01Controller from './../controller/JFC01.controller';\nimport SRF01Controller from './../controller/SRF01.controller';\n\nimport DWS01Identifiers from './../controller/dws01/Identifiers.const';\nimport DWS01Controller from './../controller/dws01/DWS01.controller';\n\nimport PC01Controller from './../controller/PC01.controller';\n\nimport TooltipController from './../controller/Tooltip.controller';\n\nconst DEPENDENCIES = {\n\t[ IDENTIFIERS.ACC.ROOT ] : ACC01Controller,\n\t[ IDENTIFIERS.IFRAME.ROOT ] : IframeController,\n\t[ IDENTIFIERS.TIC01.ROOT ] : TIC01Controller,\n\t[ IDENTIFIERS.LAYOUT.ROOT ] : LayoutController,\n\t[ IDENTIFIERS.SRC01.ROOT ] : SRC01Controller,\n\t[ IDENTIFIERS.SES01.EXTENDED ] : SES01Controller,\n\t[ IDENTIFIERS.SES01.QUICK_LINKS ] : SES01Controller,\n\t[ IDENTIFIERS.IEB.ROOT ] : IEBController,\n\t[ IDENTIFIERS.JFC01.ROOT ] : JFC01Controller,\n\t[ IDENTIFIERS.SRF01.ROOT ] : SRF01Controller,\n\t[ DWS01Identifiers.ROOT ] : DWS01Controller,\n\t// [ IDENTIFIERS.TOOLTIP.ROOT ] : TooltipController\n\t[ IDENTIFIERS.PCC01.TOOLTIP ] : TooltipController,\n\t[ IDENTIFIERS.PC01.ROOT ] : PC01Controller\n};\n\nexport default DEPENDENCIES;\n\nexport const SINGLETONS = {\n\t[ IDENTIFIERS.TSS01.ROOT ] : TSS01Instance\n};\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/repositories/Component.repository.js","import TransitionEventController from './../../base/controller/TransitionEvent.controller';\nimport { getHiddenDimensions } from './../../helper/global.helper';\nimport { ScrollService } from 'device';\n\nimport fasterdom from 'fasterdom';\n\nimport { EventEmitter } from 'events';\nimport Signal from '../../../../../local-packages/services/signal';\n\nconst defaultOptions = {\n\t\t\t\tcontentSelector : '.accordion-item__content'\n\t\t\t},\n\t\t\t_heightEmitter = new WeakMap();\n\n/**\n * Binds event handler to the current scope\n * @private\n * @return { void }\n */\nfunction addHandler () {\n\tconst self = this;\n\n\tself.beforeOpen( ( $trigger ) => {\n\t\tthis.logger.log( 'before open' );\n\t\tself.$scope.trigger( 'beforeOpen.acc-item' );\n\t} );\n\n\tself.onOpen( ( $trigger ) => {\n\t\tthis.logger.log( 'on open' );\n\t\tlet _h = 0;\n\n\t\tfasterdom.measureInstant( () => {\n\t\t\t_h = getHiddenDimensions( self.$content, 'height' ).outerHeight;\n\t\t\tself.emitHeight( _h );\n\t\t\tthis.logger.log( 'measured height:', _h );\n\t\t} );\n\n\t\tfasterdom.mutateInstant( ( a ) => {\n\t\t\tself.$content.css( { height : _h } );\n\t\t\tthis.logger.log( 'set measured height:', _h );\n\t\t} );\n\t} );\n\n\tself.afterOpen( ( $trigger ) => {\n\t\tthis.logger.log( 'after open' );\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tself.$content.css( { height : '' } );\n\t\t\tthis.logger.log( 'removed measured height' );\n\t\t} );\n\n\t\t//TODO refactor: issue is initial scroll and scroll is default on. page always scrolls to footer\n\t\tif ( this.options.scrollOnOpen && this._userInitiated ) {\n\t\t\tScrollService.toElement( this.$scope );\n\t\t\tthis._userInitiated = false;\n\t\t} else if ( this.options.scrollOnOpen && this._initial ) {\n\t\t\tthis._initial = false;\n\t\t}\n\n\t} );\n\n\tself.beforeClose( ( $trigger ) => {\n\t\tlet _h = 0;\n\n\t\tself.$scope.trigger( 'beforeClose.acc-item' );\n\n\t\tfasterdom.measureInstant( () => {\n\t\t\t_h = getHiddenDimensions( self.$content, 'height' ).outerHeight;\n\t\t} );\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tself.$content.css( { height : _h } );\n\t\t} );\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tself.$content.css( { height : '' } );\n\t\t}, 1 );\n\t} );\n\n}\n\n/**\n * Class representing an accordion item instance.\n * Controls the state of the accordion.\n * Controls menu item behavior.\n * @extends { AbstractController }\n */\nclass ACCItemController extends TransitionEventController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.debugStyle = 'color: #FF823F';\n\t\tthis.debug = false;\n\t\t// this.debug = 'ACCItem';\n\t\t//\n\t\tthis.$scope = null;\n\t\tthis.$content = null;\n\t\tthis._initial = null;\n\n\t\t// self._isOpen = false;\n\t}\n\n\t/**\n\t * Initialises the controller.\n\t * Has to be called after ready event.\n\t *\n\t * @public\n\t * @param {jQuery} $root accordion item\n\t * @param {Object} options Options passed by the AccordeonController to use on its children\n\t * @return {void}\n\t */\n\tinit ( $root, options = {} ) {\n\t\tsuper.init( $root );\n\n\t\tthis._initial = true;\n\t\tthis._disabled = options.disabled === true;\n\t\tthis.$scope = $root;\n\t\tthis.options = Object.assign( {}, defaultOptions, options );\n\n\t\tthis.$content = this.$scope.find( this.options.contentSelector );\n\n\t\tthis.setTransition( 'height' );\n\t\tthis.setTransitionElement( this.$content );\n\n\t\t_heightEmitter.set( this, new EventEmitter() );\n\n\t\taddHandler.call( this );\n\n\t}\n\n\tset isDisabled ( is ) {\n\t\tthis.initialOpenPromise\n\t\t\t.then( () => {\n\t\t\t\tif ( is === true && !this.isOpen ) {\n\t\t\t\t\tthis.openSilent();\n\t\t\t\t} else if ( is === false && this.isOpen ) {\n\t\t\t\t\tthis.closeSilent();\n\t\t\t\t}\n\t\t\t\tthis._disabled = is === true;\n\t\t\t} );\n\t}\n\n\tget isDisabled () {\n\t\treturn this._disabled;\n\t}\n\n\tdisable () {\n\t\tthis.isDisabled = true;\n\t}\n\n\tenable () {\n\t\tthis.isDisabled = false;\n\t}\n\n\temitHeight ( data, caller = this ) {\n\t\t_heightEmitter.get( this ).emit( 'height', data, caller );\n\t}\n\n\tsubscribeHeight ( fn ) {\n\t\t_heightEmitter.get( this ).on( 'height', fn );\n\t}\n\n\tdestroy () {\n\t\tthis._before.clear();\n\t\tthis._on.clear();\n\t\tthis._after.clear();\n\t\tthis._afterTransition.clear();\n\t\treturn null;\n\t}\n\n}\n\nexport default ACCItemController;\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/ACCItem.controller.js","import AbstractController from './../../base/controller/Abstract.controller';\nimport TransitionEventController from './../../base/controller/TransitionEvent.controller';\nimport { getHiddenDimensions } from './../../helper/global.helper';\n\nimport fasterdom from 'fasterdom';\n\n/**\n * @private\n * @param { object } $el - jQuery wrapped DOM node\n * @returns { void }\n */\nfunction addHandler ( $el ) {\n\n\tconst $content = $el.find( '.content-extended' ),\n\t controller = new TransitionEventController();\n\n\tcontroller.init( $content );\n\tcontroller.setTransition( 'height' );\n\n\tcontroller.onOpen( () => {\n\t\tlet _h = 0;\n\n\t\tfasterdom.measureInstant( () => {\n\t\t\t_h = getHiddenDimensions( $content, 'height' ).outerHeight;\n\t\t} );\n\t\tfasterdom.mutateInstant( () => {\n\t\t\t$el.addClass( 'content-extended--open' );\n\t\t\t$content.css( { height : _h } );\n\t\t} );\n\t} );\n\n\tcontroller.afterOpen( () => {\n\t\tfasterdom.mutateInstant( () => {\n\t\t\t$content.css( { height : '' } );\n\t\t} );\n\t} );\n\n\tcontroller.beforeClose( () => {\n\t\tlet _h = 0;\n\n\t\tfasterdom.measureInstant( () => {\n\t\t\t_h = getHiddenDimensions( $content, 'height' ).outerHeight;\n\t\t} );\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\t$el.removeClass( 'content-extended--open' );\n\t\t\t$content.css( { height : _h } );\n\t\t} );\n\n\t\tfasterdom.mutateInstant( () => {\n\t\t\t$content.css( { height : '' } );\n\t\t}, 1 );\n\t} );\n\n\tthis.extendedContentController = controller;\n\n\t$el.on( 'click', '.content-extended-arrow', ( e ) => {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tif ( this.extendedContentController.isOpen ) {\n\t\t\tthis.extendedContentController.close();\n\t\t} else {\n\t\t\tthis.extendedContentController.open();\n\t\t}\n\t} );\n}\n\n/**\n * Class representing an text image combination instance.\n * Controls the state of the text image combination.\n * Controls expander icon behavior.\n * @extends { AbstractController }\n */\nclass TIC01Controller extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.extendedContentController = null;\n\t}\n\n\t/**\n\t * Initialises the controller.\n\t * Has to be called after ready event.\n\t *\n\t * @param { object } $root - jQuery wrapped DOM node\n\t * @public\n\t * @return { void }\n\t */\n\tinit ( $root ) {\n\t\taddHandler.call( this, $root );\n\t}\n\n}\n\nexport default TIC01Controller;\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/TIC01.controller.js","import AbstractController from './../../base/controller/Abstract.controller';\nimport LazyImageLoaderService from './../../services/LazyImageLoader.service';\nimport { IDENTIFIERS } from './../constants/Identifiers.const';\nimport { IDENTIFIERS as ELEMENTS } from './../../elements/constants/Identifiers.const';\n\nimport dom from 'fasterdom';\nimport $ from 'jquery';\n\n/**\n *\n *\n * @private\n * @return { void }\n */\nfunction setState () {\n\n\tdom.mutateInstant( () => {\n\n\t\tconst\n\t\t\t$searchResults = this.$scope.find( IDENTIFIERS.SRC01.SRT01 );\n\n\t\tlet\n\t\t\tsrt01ListModifier = IDENTIFIERS.SRC01.SRT01_LIST_MODIFIER;\n\n\t\tif ( $searchResults.attr( 'data-tpl' ) !== 'srt01' ) {\n\t\t\tsrt01ListModifier = srt01ListModifier.replace( 'srt01', $searchResults.attr( 'data-tpl' ) );\n\t\t}\n\n\t\tif ( this._isListView ) {\n\n\t\t\tthis.$scope.addClass( IDENTIFIERS.SRC01.LIST_MODIFIER );\n\t\t\tthis.$toggleSwitchInput.attr( 'checked', true );\n\t\t\t$searchResults.addClass( srt01ListModifier );\n\n\t\t} else {\n\n\t\t\tthis.$scope.removeClass( IDENTIFIERS.SRC01.LIST_MODIFIER );\n\t\t\tthis.$toggleSwitchInput.removeAttr( 'checked' );\n\t\t\t$searchResults.removeClass( srt01ListModifier );\n\t\t}\n\t} );\n}\n\n/**\n *\n * @param {Event} e - Event\n * @private\n * @return { void }\n */\nfunction toggleViewState ( e ) {\n\n\tdom.measureInstant( () => {\n\n\t\tthis._isListView = $( e.target )\n\t\t\t\t.closest( ELEMENTS.TOGGLE_SWITCH.ROOT )\n\t\t\t\t.find( 'input[type=\"checkbox\"]' ).is( ':checked' );\n\t} );\n\n\tsetState.call( this );\n\tLazyImageLoaderService.update( null );\n}\n\n/**\n *\n *\n * @private\n * @return { void }\n */\nfunction checkListView () {\n\n\tdom.measureInstant( () => {\n\t\tthis._isListView = this.$scope.hasClass( IDENTIFIERS.SRC01.LIST_MODIFIER );\n\t} );\n\n\tsetState.call( this );\n}\n\n/**\n * Class representing an text image combination instance.\n * Controls the state of the text image combination.\n * Controls expander icon behavior.\n * @extends { AbstractController }\n */\nclass SRC01Controller extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.$scope = null;\n\t\tthis.$toggleSwitch = null;\n\t\tthis.$toggleSwitchLabel = null;\n\t\tthis.$toggleSwitchInput = null;\n\n\t\tthis._isListView = false;\n\t}\n\n\tinitToggle () {\n\n\t\tthis.$toggleSwitch = this.$scope.find( ELEMENTS.TOGGLE_SWITCH.ROOT );\n\n\t\tif ( this.$toggleSwitch.length > 0 ) {\n\n\t\t\tthis.$toggleSwitchLabel = this.$toggleSwitch.find( 'label' );\n\t\t\tthis.$toggleSwitchInput = this.$toggleSwitch.find( 'input[type=\"checkbox\"]' );\n\n\t\t\tcheckListView.call( this );\n\t\t\tthis.$toggleSwitchLabel.on( 'click', toggleViewState.bind( this ) );\n\t\t}\n\t}\n\n\t/**\n\t * Initialises the controller.\n\t * Has to be called after ready event.\n\t *\n\t * @param { object } $root - jQuery wrapped DOM node\n\t * @public\n\t * @return { void }\n\t */\n\tinit ( $root ) {\n\n\t\tthis.$scope = $root;\n\t\tthis.initToggle();\n\n\t\tLazyImageLoaderService.watch( this.$scope.get( 0 ), this.initToggle.bind( this ) );\n\t}\n\n}\n\nexport default SRC01Controller;\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/SRC01.controller.js","import { ResizeService } from 'device';\r\nimport { ScrollService } from 'device';\r\nimport Viewport from 'device/services/Viewport.service.js';\r\n\r\nimport { Observable } from 'rxjs/Observable';\r\nimport { from } from 'rxjs/observable/from';\r\nimport { throttleTime } from 'rxjs/operator/throttleTime';\r\nimport { map } from 'rxjs/operator/map';\r\n\r\nimport Node from './entities/Node.entity';\r\nimport { STATE_VISIBLE } from './entities/Node.entity';\r\nimport { STATE_INVISIBLE } from './entities/Node.entity';\r\n\r\nconst\r\n\t\tcache = [],\r\n\t\tINTERVAL = 200,\r\n\t\tREFRESH_INTERVAL = 600,\r\n\t\tOFFSET = 100;\r\n\r\n/**\r\n * Perform measurement of the dom node with {FasterDom} and make a new {Node} instance.\r\n * @param {HTMLElement} item - dom node\r\n * @return {Node}\r\n */\r\nfunction wrap ( item ) {\r\n\r\n\treturn new Node().init( item );\r\n}\r\n\r\n/**\r\n * Unwrap a given {Node} to provide acces to the original item.\r\n * @param {Node} node - the instance to unwrap.\r\n * @return {HTMLElement|*|HTMLAnchorElement}\r\n */\r\nfunction unWrap ( node ) {\r\n\r\n\treturn node.getRoot();\r\n}\r\n\r\n/**\r\n * Filter result based on visibility and return an array of pure {HTMLElement} dom nodes.\r\n * @param {Array<Node>} nodes - all nodes the service is watching\r\n * @param {Symbol} state - whether the items should have the property visible.\r\n * @return {Array<HTMLElement>} - visible/invisible items. {Node} instances are unwrapped and only the actual {HTMLElement}s are returned.\r\n */\r\nfunction filterVisibility ( nodes, state ) {\r\n\r\n\treturn nodes\r\n\t\t\t.filter( ( node ) => node.isVisible() === state )\r\n\t\t\t.map( unWrap );\r\n}\r\n\r\n/**\r\n * Sort items based on their visibility.\r\n * @param {Array.<Node>} nodes - all nodes the service is watching\r\n * @return {{visible: Array.<Node>, notVisible: Array.<Node>}} - an {object} containing nodes filtered on their current visibility\r\n */\r\nfunction splitOnVisibility ( nodes ) {\r\n\r\n\treturn {\r\n\t\tvisible : filterVisibility( nodes, STATE_VISIBLE ),\r\n\t\tnotVisible : filterVisibility( nodes, STATE_INVISIBLE )\r\n\t};\r\n}\r\n\r\n/**\r\n * Check the node position against the Viewport. Pass the OFFSET to determine nodes which are near the viewport.\r\n * @param {Node} node - instance which should be determined\r\n * @return {Promise} - will be resolved when the visibility has been determined.\r\n */\r\nfunction determineItemVisibility ( node ) {\r\n\r\n\treturn Viewport\r\n\t\t\t.isVisible( node.getRoot(), OFFSET )\r\n\t\t\t.then( node.setVisibility.bind( node ) );\r\n}\r\n\r\n/**\r\n * Iterate all registered elements wrapped by a {Node} object to determine their visibility\r\n * @private\r\n * @param {Array.<Node>} nodes - all nodes the service is watching\r\n * @return {Promise<T[]>|Promise} - resolves when the visibility of all items was determined.\r\n */\r\nfunction findVisibleItems ( nodes ) {\r\n\r\n\treturn Promise.all( nodes.map( determineItemVisibility ) );\r\n}\r\n\r\n/**\r\n *\r\n * @return {Promise<T>|Promise} promise - resolves with visible and invisible items\r\n */\r\nfunction checkWhichPositionsAreVisible ( list ) {\r\n\r\n\treturn new Promise( ( resolve ) => {\r\n\r\n\t\tfindVisibleItems( list )\r\n\t\t\t\t.then( ( nodes ) => resolve( splitOnVisibility( nodes ) ) );\r\n\t} );\r\n}\r\n\r\n/**\r\n * Refresh the scroll position on page load when the page is reloaded and the scroll position restored.\r\n * @return {void}\r\n */\r\nfunction triggerRefresh() {\r\n\r\n\tsetTimeout( () => {\r\n\r\n\t\tScrollService.getCurrent()\r\n\t\t\t\t.then( ( data ) => {\r\n\r\n\t\t\t\t\tScrollService.toPosition( {\r\n\t\t\t\t\t\t x : data.x,\r\n\t\t\t\t\t\t y : data.y - 1\r\n\t\t\t\t\t } );\r\n\t\t\t\t} );\r\n\r\n\t}, REFRESH_INTERVAL );\r\n}\r\n\r\n/**\r\n * Watches {Array<HTMLAnchorElement>} elements for their visibility inside the Viewport.\r\n * Updates on scroll and resize events and publishes updates via updateEvent - stream.\r\n *\r\n * This class is exported as a singleton instance.\r\n */\r\nclass InViewportService {\r\n\r\n\tconstructor () {\r\n\r\n\t\t/**\r\n\t\t * The update stream.\r\n\t\t * Values will be recalculated and emitted after a throttle of 500ms.\r\n\t\t * @type {Observable<T>}\r\n\t\t */\r\n\t\tthis.updateEvent = null;\r\n\t}\r\n\r\n\t/**\r\n\t * Add items to watchlist.\r\n\t * @param {Array<HTMLElement>} items - the collection of items to watch\r\n\t * @return {InViewportService}\r\n\t */\r\n\taddItemsToWatchList ( items ) {\r\n\r\n\t\titems.map( this.addItemToWatch );\r\n\t\ttriggerRefresh();\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Add a single item to watchlist.\r\n\t * @param {HTMLElement} item - the html node to add\r\n\t * @return {InViewportService}\r\n\t */\r\n\taddItemToWatch ( item ) {\r\n\r\n\t\tcache.push( wrap( item ) );\r\n\t\ttriggerRefresh();\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Remove all items from watchlist.\r\n\t * @return {InViewportService}\r\n\t */\r\n\tclearWatchList () {\r\n\r\n\t\tcache.length = 0;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Provides read access to the cache.\r\n\t * @return {Array<HTMLElement>} the items on the watchlist.\r\n\t */\r\n\tgetWatchList () {\r\n\r\n\t\treturn cache.map( unWrap );\r\n\t}\r\n\r\n\t/**\r\n\t * Initialize the stream.\r\n\t * Will be automatically called.\r\n\t * @private\r\n\t * @return {InViewportService} instance\r\n\t */\r\n\tinit () {\r\n\r\n\t\t//eslint-disable\r\n\t\tthis.updateEvent = Observable::from( cache )\r\n\t\t\t\t.merge( ScrollService.scrollEvent )\r\n\t\t\t\t.merge( ResizeService.resizeEvent )\r\n\t\t\t\t::throttleTime( INTERVAL )\r\n\t\t\t\t::map( checkWhichPositionsAreVisible.bind( this, cache ) );\r\n\t\t//eslint-enable\r\n\r\n\t\ttriggerRefresh();\r\n\r\n\t\treturn this;\r\n\t}\r\n}\r\n\r\nconst instance = new InViewportService().init(); //eslint-disable-line\r\n\r\nexport default instance;\r\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/in-viewport/InViewport.service.js","\"use strict\";\nvar async_1 = require('../scheduler/async');\nvar throttle_1 = require('../operators/throttle');\nvar throttleTime_1 = require('../operators/throttleTime');\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for `duration` milliseconds, then repeats this process.\n *\n * <span class=\"informal\">Lets a value pass, then ignores source values for the\n * next `duration` milliseconds.</span>\n *\n * <img src=\"./img/throttleTime.png\" width=\"100%\">\n *\n * `throttleTime` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled. After `duration` milliseconds (or the time unit determined\n * internally by the optional `scheduler`) has passed, the timer is disabled,\n * and this process repeats for the next source value. Optionally takes a\n * {@link IScheduler} for managing timers.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.throttleTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {number} duration Time to wait before emitting another value after\n * emitting the last value, measured in milliseconds or the time unit determined\n * internally by the optional `scheduler`.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the throttling.\n * @return {Observable<T>} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttleTime\n * @owner Observable\n */\nfunction throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n if (config === void 0) { config = throttle_1.defaultThrottleConfig; }\n return throttleTime_1.throttleTime(duration, scheduler, config)(this);\n}\nexports.throttleTime = throttleTime;\n//# sourceMappingURL=throttleTime.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operator/throttleTime.js\n// module id = 664\n// module chunks = 16","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = require('../util/root');\nvar Action_1 = require('./Action');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n _super.call(this, scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n // Always replace the current state with the new state.\n this.state = state;\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n var id = this.id;\n var scheduler = this.scheduler;\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n return root_1.root.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n return root_1.root.clearInterval(id) && undefined || undefined;\n };\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, delay) {\n var errored = false;\n var errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype._unsubscribe = function () {\n var id = this.id;\n var scheduler = this.scheduler;\n var actions = scheduler.actions;\n var index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n };\n return AsyncAction;\n}(Action_1.Action));\nexports.AsyncAction = AsyncAction;\n//# sourceMappingURL=AsyncAction.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/scheduler/AsyncAction.js\n// module id = 665\n// module chunks = 16","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscription_1 = require('../Subscription');\n/**\n * A unit of work to be executed in a {@link Scheduler}. An action is typically\n * created from within a Scheduler and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action<T> extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action<T>\n */\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n _super.call(this);\n }\n /**\n * Schedules this action on its parent Scheduler for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription_1.Subscription));\nexports.Action = Action;\n//# sourceMappingURL=Action.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/scheduler/Action.js\n// module id = 666\n// module chunks = 16","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Scheduler_1 = require('../Scheduler');\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler() {\n _super.apply(this, arguments);\n this.actions = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n */\n this.active = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n */\n this.scheduled = undefined;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this.active) {\n actions.push(action);\n return;\n }\n var error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift()); // exhaust the scheduler queue\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler_1.Scheduler));\nexports.AsyncScheduler = AsyncScheduler;\n//# sourceMappingURL=AsyncScheduler.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/scheduler/AsyncScheduler.js\n// module id = 667\n// module chunks = 16","\"use strict\";\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an {@link Action}.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n */\nvar Scheduler = (function () {\n function Scheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.SchedulerAction(this, work).schedule(state, delay);\n };\n Scheduler.now = Date.now ? Date.now : function () { return +new Date(); };\n return Scheduler;\n}());\nexports.Scheduler = Scheduler;\n//# sourceMappingURL=Scheduler.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/Scheduler.js\n// module id = 668\n// module chunks = 16","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\nvar async_1 = require('../scheduler/async');\nvar throttle_1 = require('./throttle');\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for `duration` milliseconds, then repeats this process.\n *\n * <span class=\"informal\">Lets a value pass, then ignores source values for the\n * next `duration` milliseconds.</span>\n *\n * <img src=\"./img/throttleTime.png\" width=\"100%\">\n *\n * `throttleTime` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled. After `duration` milliseconds (or the time unit determined\n * internally by the optional `scheduler`) has passed, the timer is disabled,\n * and this process repeats for the next source value. Optionally takes a\n * {@link IScheduler} for managing timers.\n *\n * @example <caption>Emit clicks at a rate of at most one click per second</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.throttleTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {number} duration Time to wait before emitting another value after\n * emitting the last value, measured in milliseconds or the time unit determined\n * internally by the optional `scheduler`.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the throttling.\n * @return {Observable<T>} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttleTime\n * @owner Observable\n */\nfunction throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n if (config === void 0) { config = throttle_1.defaultThrottleConfig; }\n return function (source) { return source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing)); };\n}\nexports.throttleTime = throttleTime;\nvar ThrottleTimeOperator = (function () {\n function ThrottleTimeOperator(duration, scheduler, leading, trailing) {\n this.duration = duration;\n this.scheduler = scheduler;\n this.leading = leading;\n this.trailing = trailing;\n }\n ThrottleTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing));\n };\n return ThrottleTimeOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ThrottleTimeSubscriber = (function (_super) {\n __extends(ThrottleTimeSubscriber, _super);\n function ThrottleTimeSubscriber(destination, duration, scheduler, leading, trailing) {\n _super.call(this, destination);\n this.duration = duration;\n this.scheduler = scheduler;\n this.leading = leading;\n this.trailing = trailing;\n this._hasTrailingValue = false;\n this._trailingValue = null;\n }\n ThrottleTimeSubscriber.prototype._next = function (value) {\n if (this.throttled) {\n if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n else {\n this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this }));\n if (this.leading) {\n this.destination.next(value);\n }\n }\n };\n ThrottleTimeSubscriber.prototype.clearThrottle = function () {\n var throttled = this.throttled;\n if (throttled) {\n if (this.trailing && this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this._trailingValue = null;\n this._hasTrailingValue = false;\n }\n throttled.unsubscribe();\n this.remove(throttled);\n this.throttled = null;\n }\n };\n return ThrottleTimeSubscriber;\n}(Subscriber_1.Subscriber));\nfunction dispatchNext(arg) {\n var subscriber = arg.subscriber;\n subscriber.clearThrottle();\n}\n//# sourceMappingURL=throttleTime.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/rxjs/operators/throttleTime.js\n// module id = 669\n// module chunks = 16","/**\r\n * @typedef {object} Node.Position within the document\r\n * @param {int} top - top pos\r\n * @param {int} left - left pos\r\n * @param {int} right - right pos\r\n * @param {int} bottom - bottom pos\r\n */\r\n\r\nconst STATE_VISIBLE = Symbol( 'visible' ),\r\n STATE_INVISIBLE = Symbol( 'invisible' );\r\n\r\n/**\r\n * Helper class to wrap a dom node, its position withi the viewport and its visibility.\r\n */\r\nclass Node {\r\n\r\n\tconstructor () {\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {HTMLAnchorElement}\r\n\t\t */\r\n\t\tthis.root = null;\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {Symbol}\r\n\t\t */\r\n\t\tthis.visible = STATE_INVISIBLE;\r\n\t}\r\n\r\n\t/**\r\n\t * Initialize the instance.\r\n\t * @param {HTMLElement} root - the root node of the wrapped element.\r\n\t * @return {Node} instance\r\n\t */\r\n\tinit ( root ) {\r\n\r\n\t\tthis.root = root;\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Set a symbol for the visibility.\r\n\t * @param {boolean} visibility - the state to be set\r\n\t * @return {Node} instance - for chaining\r\n\t */\r\n\tsetVisibility ( visibility ) {\r\n\r\n\t\tif ( visibility === true ) {\r\n\t\t\tthis.visible = STATE_VISIBLE;\r\n\t\t} else {\r\n\t\t\tthis.visible = STATE_INVISIBLE;\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Get item visibility.\r\n\t * @return {Symbol} whether the item is visible\r\n\t */\r\n\tisVisible () {\r\n\t\treturn this.visible;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the element to which the node is attached to.\r\n\t * @return {HTMLElement|*|HTMLAnchorElement} - the root node.\r\n\t */\r\n\tgetRoot () {\r\n\t\treturn this.root;\r\n\t}\r\n}\r\n\r\nexport default Node;\r\n\r\nexport { STATE_VISIBLE, STATE_INVISIBLE };\r\n\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/in-viewport/entities/Node.entity.js","import './../compatibility/MutationObserver.polyfill';\r\n\r\nexport default {\r\n\r\n\t/**\r\n\t * Get an Observer for DOM changes\r\n\t * @param {function} fn - callback fn to call on change\r\n\t * @returns {MutationObserver} instance\r\n\t */\r\n\tgetInstanceWithCallback : ( fn ) => {\r\n\r\n\t\treturn new MutationObserver( fn );\r\n\t}\r\n};\r\n\r\nexport const DEFAULT_CONFIG = {\r\n\tchildList : true,\r\n\tattributes : false,\r\n\tcharacterData : true,\r\n\tsubtree : true\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/services/DomObserver.service.js","/*eslint-disable*/\r\n\r\n/**\r\n * @license\r\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\r\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\r\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\r\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\r\n * Code distributed by Google as part of the polymer project is also\r\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\r\n */\r\n\r\n(function ( global ) {\r\n\r\n\t// Don't allow this object to be redefined.\r\n\tif ( global.JsMutationObserver ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar registrationsTable = new WeakMap();\r\n\r\n\tvar setImmediate;\r\n\r\n\t// As much as we would like to use the native implementation, IE\r\n\t// (all versions) suffers a rather annoying bug where it will drop or defer\r\n\t// callbacks when heavy DOM operations are being performed concurrently.\r\n\t//\r\n\t// For a thorough discussion on this, see:\r\n\t// http://codeforhire.com/2013/09/21/setimmediate-and-messagechannel-broken-on-internet-explorer-10/\r\n\tif ( /Trident|Edge/.test( navigator.userAgent ) ) {\r\n\t\t// Sadly, this bug also affects postMessage and MessageQueues.\r\n\t\t//\r\n\t\t// We would like to use the onreadystatechange hack for IE <= 10, but it is\r\n\t\t// dangerous in the polyfilled environment due to requiring that the\r\n\t\t// observed script element be in the document.\r\n\t\tsetImmediate = setTimeout;\r\n\r\n\t\t// If some other browser ever implements it, let's prefer their native\r\n\t\t// implementation:\r\n\t} else if ( window.setImmediate ) {\r\n\t\tsetImmediate = window.setImmediate;\r\n\r\n\t\t// Otherwise, we fall back to postMessage as a means of emulating the next\r\n\t\t// task semantics of setImmediate.\r\n\t} else {\r\n\t\tvar setImmediateQueue = [];\r\n\t\tvar sentinel = String( Math.random() );\r\n\t\twindow.addEventListener( 'message', function ( e ) {\r\n\t\t\tif ( e.data === sentinel ) {\r\n\t\t\t\tvar queue = setImmediateQueue;\r\n\t\t\t\tsetImmediateQueue = [];\r\n\t\t\t\tqueue.forEach( function ( func ) {\r\n\t\t\t\t\tfunc();\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t} );\r\n\t\tsetImmediate = function ( func ) {\r\n\t\t\tsetImmediateQueue.push( func );\r\n\t\t\twindow.postMessage( sentinel, '*' );\r\n\t\t};\r\n\t}\r\n\r\n\t// This is used to ensure that we never schedule 2 callas to setImmediate\r\n\tvar isScheduled = false;\r\n\r\n\t// Keep track of observers that needs to be notified next time.\r\n\tvar scheduledObservers = [];\r\n\r\n\t/**\r\n\t * Schedules |dispatchCallback| to be called in the future.\r\n\t * @param {MutationObserver} observer\r\n\t */\r\n\tfunction scheduleCallback ( observer ) {\r\n\t\tscheduledObservers.push( observer );\r\n\t\tif ( !isScheduled ) {\r\n\t\t\tisScheduled = true;\r\n\t\t\tsetImmediate( dispatchCallbacks );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction wrapIfNeeded ( node ) {\r\n\t\treturn window.ShadowDOMPolyfill &&\r\n\t\t\t\twindow.ShadowDOMPolyfill.wrapIfNeeded( node ) ||\r\n\t\t\t\tnode;\r\n\t}\r\n\r\n\tfunction dispatchCallbacks () {\r\n\t\t// http://dom.spec.whatwg.org/#mutation-observers\r\n\r\n\t\tisScheduled = false; // Used to allow a new setImmediate call above.\r\n\r\n\t\tvar observers = scheduledObservers;\r\n\t\tscheduledObservers = [];\r\n\t\t// Sort observers based on their creation UID (incremental).\r\n\t\tobservers.sort( function ( o1, o2 ) {\r\n\t\t\treturn o1.uid_ - o2.uid_;\r\n\t\t} );\r\n\r\n\t\tvar anyNonEmpty = false;\r\n\t\tobservers.forEach( function ( observer ) {\r\n\r\n\t\t\t// 2.1, 2.2\r\n\t\t\tvar queue = observer.takeRecords();\r\n\t\t\t// 2.3. Remove all transient registered observers whose observer is mo.\r\n\t\t\tremoveTransientObserversFor( observer );\r\n\r\n\t\t\t// 2.4\r\n\t\t\tif ( queue.length ) {\r\n\t\t\t\tobserver.callback_( queue, observer );\r\n\t\t\t\tanyNonEmpty = true;\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t// 3.\r\n\t\tif ( anyNonEmpty ) {\r\n\t\t\tdispatchCallbacks();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction removeTransientObserversFor ( observer ) {\r\n\t\tobserver.nodes_.forEach( function ( node ) {\r\n\t\t\tvar registrations = registrationsTable.get( node );\r\n\t\t\tif ( !registrations ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tregistrations.forEach( function ( registration ) {\r\n\t\t\t\tif ( registration.observer === observer ) {\r\n\t\t\t\t\tregistration.removeTransientObservers();\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t} );\r\n\t}\r\n\r\n\t/**\r\n\t * This function is used for the \"For each registered observer observer (with\r\n\t * observer's options as options) in target's list of registered observers,\r\n\t * run these substeps:\" and the \"For each ancestor ancestor of target, and for\r\n\t * each registered observer observer (with options options) in ancestor's list\r\n\t * of registered observers, run these substeps:\" part of the algorithms. The\r\n\t * |options.subtree| is checked to ensure that the callback is called\r\n\t * correctly.\r\n\t *\r\n\t * @param {Node} target\r\n\t * @param {function(MutationObserverInit):MutationRecord} callback\r\n\t */\r\n\tfunction forEachAncestorAndObserverEnqueueRecord ( target, callback ) {\r\n\t\tfor ( var node = target; node; node = node.parentNode ) {\r\n\t\t\tvar registrations = registrationsTable.get( node );\r\n\r\n\t\t\tif ( registrations ) {\r\n\t\t\t\tfor ( var j = 0; j < registrations.length; j++ ) {\r\n\t\t\t\t\tvar registration = registrations[ j ];\r\n\t\t\t\t\tvar options = registration.options;\r\n\r\n\t\t\t\t\t// Only target ignores subtree.\r\n\t\t\t\t\tif ( node !== target && !options.subtree ) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar record = callback( options );\r\n\t\t\t\t\tif ( record ) {\r\n\t\t\t\t\t\tregistration.enqueue( record );\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\tvar uidCounter = 0;\r\n\r\n\t/**\r\n\t * The class that maps to the DOM MutationObserver interface.\r\n\t * @param {Function} callback.\r\n\t * @constructor\r\n\t */\r\n\tfunction JsMutationObserver ( callback ) {\r\n\t\tthis.callback_ = callback;\r\n\t\tthis.nodes_ = [];\r\n\t\tthis.records_ = [];\r\n\t\tthis.uid_ = ++uidCounter;\r\n\t}\r\n\r\n\tJsMutationObserver.prototype = {\r\n\t\tobserve : function ( target, options ) {\r\n\t\t\ttarget = wrapIfNeeded( target );\r\n\r\n\t\t\t// 1.1\r\n\t\t\tif ( !options.childList && !options.attributes && !options.characterData ||\r\n\r\n\t\t\t\t\t// 1.2\r\n\t\t\t\t\toptions.attributeOldValue && !options.attributes ||\r\n\r\n\t\t\t\t\t// 1.3\r\n\t\t\t\t\toptions.attributeFilter && options.attributeFilter.length && !options.attributes ||\r\n\r\n\t\t\t\t\t// 1.4\r\n\t\t\t\t\toptions.characterDataOldValue && !options.characterData ) {\r\n\r\n\t\t\t\tthrow new SyntaxError();\r\n\t\t\t}\r\n\r\n\t\t\tvar registrations = registrationsTable.get( target );\r\n\t\t\tif ( !registrations ) {\r\n\t\t\t\tregistrationsTable.set( target, registrations = [] );\r\n\t\t\t}\r\n\r\n\t\t\t// 2\r\n\t\t\t// If target's list of registered observers already includes a registered\r\n\t\t\t// observer associated with the context object, replace that registered\r\n\t\t\t// observer's options with options.\r\n\t\t\tvar registration;\r\n\t\t\tfor ( var i = 0; i < registrations.length; i++ ) {\r\n\t\t\t\tif ( registrations[ i ].observer === this ) {\r\n\t\t\t\t\tregistration = registrations[ i ];\r\n\t\t\t\t\tregistration.removeListeners();\r\n\t\t\t\t\tregistration.options = options;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// 3.\r\n\t\t\t// Otherwise, add a new registered observer to target's list of registered\r\n\t\t\t// observers with the context object as the observer and options as the\r\n\t\t\t// options, and add target to context object's list of nodes on which it\r\n\t\t\t// is registered.\r\n\t\t\tif ( !registration ) {\r\n\t\t\t\tregistration = new Registration( this, target, options );\r\n\t\t\t\tregistrations.push( registration );\r\n\t\t\t\tthis.nodes_.push( target );\r\n\t\t\t}\r\n\r\n\t\t\tregistration.addListeners();\r\n\t\t},\r\n\r\n\t\tdisconnect : function () {\r\n\t\t\tthis.nodes_.forEach( function ( node ) {\r\n\t\t\t\tvar registrations = registrationsTable.get( node );\r\n\t\t\t\tfor ( var i = 0; i < registrations.length; i++ ) {\r\n\t\t\t\t\tvar registration = registrations[ i ];\r\n\t\t\t\t\tif ( registration.observer === this ) {\r\n\t\t\t\t\t\tregistration.removeListeners();\r\n\t\t\t\t\t\tregistrations.splice( i, 1 );\r\n\t\t\t\t\t\t// Each node can only have one registered observer associated with\r\n\t\t\t\t\t\t// this observer.\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}, this );\r\n\t\t\tthis.records_ = [];\r\n\t\t},\r\n\r\n\t\ttakeRecords : function () {\r\n\t\t\tvar copyOfRecords = this.records_;\r\n\t\t\tthis.records_ = [];\r\n\t\t\treturn copyOfRecords;\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * @param {string} type\r\n\t * @param {Node} target\r\n\t * @constructor\r\n\t */\r\n\tfunction MutationRecord ( type, target ) {\r\n\t\tthis.type = type;\r\n\t\tthis.target = target;\r\n\t\tthis.addedNodes = [];\r\n\t\tthis.removedNodes = [];\r\n\t\tthis.previousSibling = null;\r\n\t\tthis.nextSibling = null;\r\n\t\tthis.attributeName = null;\r\n\t\tthis.attributeNamespace = null;\r\n\t\tthis.oldValue = null;\r\n\t}\r\n\r\n\tfunction copyMutationRecord ( original ) {\r\n\t\tvar record = new MutationRecord( original.type, original.target );\r\n\t\trecord.addedNodes = original.addedNodes.slice();\r\n\t\trecord.removedNodes = original.removedNodes.slice();\r\n\t\trecord.previousSibling = original.previousSibling;\r\n\t\trecord.nextSibling = original.nextSibling;\r\n\t\trecord.attributeName = original.attributeName;\r\n\t\trecord.attributeNamespace = original.attributeNamespace;\r\n\t\trecord.oldValue = original.oldValue;\r\n\t\treturn record;\r\n\t};\r\n\r\n\t// We keep track of the two (possibly one) records used in a single mutation.\r\n\tvar currentRecord, recordWithOldValue;\r\n\r\n\t/**\r\n\t * Creates a record without |oldValue| and caches it as |currentRecord| for\r\n\t * later use.\r\n\t * @param {string} oldValue\r\n\t * @return {MutationRecord}\r\n\t */\r\n\tfunction getRecord ( type, target ) {\r\n\t\treturn currentRecord = new MutationRecord( type, target );\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or creates a record with |oldValue| based in the |currentRecord|\r\n\t * @param {string} oldValue\r\n\t * @return {MutationRecord}\r\n\t */\r\n\tfunction getRecordWithOldValue ( oldValue ) {\r\n\t\tif ( recordWithOldValue ) {\r\n\t\t\treturn recordWithOldValue;\r\n\t\t}\r\n\t\trecordWithOldValue = copyMutationRecord( currentRecord );\r\n\t\trecordWithOldValue.oldValue = oldValue;\r\n\t\treturn recordWithOldValue;\r\n\t}\r\n\r\n\tfunction clearRecords () {\r\n\t\tcurrentRecord = recordWithOldValue = undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * @param {MutationRecord} record\r\n\t * @return {boolean} Whether the record represents a record from the current\r\n\t * mutation event.\r\n\t */\r\n\tfunction recordRepresentsCurrentMutation ( record ) {\r\n\t\treturn record === recordWithOldValue || record === currentRecord;\r\n\t}\r\n\r\n\t/**\r\n\t * Selects which record, if any, to replace the last record in the queue.\r\n\t * This returns |null| if no record should be replaced.\r\n\t *\r\n\t * @param {MutationRecord} lastRecord\r\n\t * @param {MutationRecord} newRecord\r\n\t * @param {MutationRecord}\r\n\t */\r\n\tfunction selectRecord ( lastRecord, newRecord ) {\r\n\t\tif ( lastRecord === newRecord ) {\r\n\t\t\treturn lastRecord;\r\n\t\t}\r\n\r\n\t\t// Check if the the record we are adding represents the same record. If\r\n\t\t// so, we keep the one with the oldValue in it.\r\n\t\tif ( recordWithOldValue && recordRepresentsCurrentMutation( lastRecord ) ) {\r\n\t\t\treturn recordWithOldValue;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * Class used to represent a registered observer.\r\n\t * @param {MutationObserver} observer\r\n\t * @param {Node} target\r\n\t * @param {MutationObserverInit} options\r\n\t * @constructor\r\n\t */\r\n\tfunction Registration ( observer, target, options ) {\r\n\t\tthis.observer = observer;\r\n\t\tthis.target = target;\r\n\t\tthis.options = options;\r\n\t\tthis.transientObservedNodes = [];\r\n\t}\r\n\r\n\tRegistration.prototype = {\r\n\t\tenqueue : function ( record ) {\r\n\t\t\tvar records = this.observer.records_;\r\n\t\t\tvar length = records.length;\r\n\r\n\t\t\t// There are cases where we replace the last record with the new record.\r\n\t\t\t// For example if the record represents the same mutation we need to use\r\n\t\t\t// the one with the oldValue. If we get same record (this can happen as we\r\n\t\t\t// walk up the tree) we ignore the new record.\r\n\t\t\tif ( records.length > 0 ) {\r\n\t\t\t\tvar lastRecord = records[ length - 1 ];\r\n\t\t\t\tvar recordToReplaceLast = selectRecord( lastRecord, record );\r\n\t\t\t\tif ( recordToReplaceLast ) {\r\n\t\t\t\t\trecords[ length - 1 ] = recordToReplaceLast;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tscheduleCallback( this.observer );\r\n\t\t\t}\r\n\r\n\t\t\trecords[ length ] = record;\r\n\t\t},\r\n\r\n\t\taddListeners : function () {\r\n\t\t\tthis.addListeners_( this.target );\r\n\t\t},\r\n\r\n\t\taddListeners_ : function ( node ) {\r\n\t\t\tvar options = this.options;\r\n\t\t\tif ( options.attributes ) {\r\n\t\t\t\tnode.addEventListener( 'DOMAttrModified', this, true );\r\n\t\t\t}\r\n\r\n\t\t\tif ( options.characterData ) {\r\n\t\t\t\tnode.addEventListener( 'DOMCharacterDataModified', this, true );\r\n\t\t\t}\r\n\r\n\t\t\tif ( options.childList ) {\r\n\t\t\t\tnode.addEventListener( 'DOMNodeInserted', this, true );\r\n\t\t\t}\r\n\r\n\t\t\tif ( options.childList || options.subtree ) {\r\n\t\t\t\tnode.addEventListener( 'DOMNodeRemoved', this, true );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tremoveListeners : function () {\r\n\t\t\tthis.removeListeners_( this.target );\r\n\t\t},\r\n\r\n\t\tremoveListeners_ : function ( node ) {\r\n\t\t\tvar options = this.options;\r\n\t\t\tif ( options.attributes ) {\r\n\t\t\t\tnode.removeEventListener( 'DOMAttrModified', this, true );\r\n\t\t\t}\r\n\r\n\t\t\tif ( options.characterData ) {\r\n\t\t\t\tnode.removeEventListener( 'DOMCharacterDataModified', this, true );\r\n\t\t\t}\r\n\r\n\t\t\tif ( options.childList ) {\r\n\t\t\t\tnode.removeEventListener( 'DOMNodeInserted', this, true );\r\n\t\t\t}\r\n\r\n\t\t\tif ( options.childList || options.subtree ) {\r\n\t\t\t\tnode.removeEventListener( 'DOMNodeRemoved', this, true );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Adds a transient observer on node. The transient observer gets removed\r\n\t\t * next time we deliver the change records.\r\n\t\t * @param {Node} node\r\n\t\t */\r\n\t\taddTransientObserver : function ( node ) {\r\n\t\t\t// Don't add transient observers on the target itself. We already have all\r\n\t\t\t// the required listeners set up on the target.\r\n\t\t\tif ( node === this.target ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.addListeners_( node );\r\n\t\t\tthis.transientObservedNodes.push( node );\r\n\t\t\tvar registrations = registrationsTable.get( node );\r\n\t\t\tif ( !registrations ) {\r\n\t\t\t\tregistrationsTable.set( node, registrations = [] );\r\n\t\t\t}\r\n\r\n\t\t\t// We know that registrations does not contain this because we already\r\n\t\t\t// checked if node === this.target.\r\n\t\t\tregistrations.push( this );\r\n\t\t},\r\n\r\n\t\tremoveTransientObservers : function () {\r\n\t\t\tvar transientObservedNodes = this.transientObservedNodes;\r\n\t\t\tthis.transientObservedNodes = [];\r\n\r\n\t\t\ttransientObservedNodes.forEach( function ( node ) {\r\n\t\t\t\t// Transient observers are never added to the target.\r\n\t\t\t\tthis.removeListeners_( node );\r\n\r\n\t\t\t\tvar registrations = registrationsTable.get( node );\r\n\t\t\t\tfor ( var i = 0; i < registrations.length; i++ ) {\r\n\t\t\t\t\tif ( registrations[ i ] === this ) {\r\n\t\t\t\t\t\tregistrations.splice( i, 1 );\r\n\t\t\t\t\t\t// Each node can only have one registered observer associated with\r\n\t\t\t\t\t\t// this observer.\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}, this );\r\n\t\t},\r\n\r\n\t\thandleEvent : function ( e ) {\r\n\t\t\t// Stop propagation since we are managing the propagation manually.\r\n\t\t\t// This means that other mutation events on the page will not work\r\n\t\t\t// correctly but that is by design.\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tswitch ( e.type ) {\r\n\t\t\t\tcase 'DOMAttrModified':\r\n\t\t\t\t\t// http://dom.spec.whatwg.org/#concept-mo-queue-attributes\r\n\r\n\t\t\t\t\tvar name = e.attrName;\r\n\t\t\t\t\tvar namespace = e.relatedNode.namespaceURI;\r\n\t\t\t\t\tvar target = e.target;\r\n\r\n\t\t\t\t\t// 1.\r\n\t\t\t\t\tvar record = new getRecord( 'attributes', target );\r\n\t\t\t\t\trecord.attributeName = name;\r\n\t\t\t\t\trecord.attributeNamespace = namespace;\r\n\r\n\t\t\t\t\t// 2.\r\n\t\t\t\t\tvar oldValue =\r\n\t\t\t\t\t\t\t e.attrChange === MutationEvent.ADDITION ?\r\n\t\t\t\t\t\t\t null :\r\n\t\t\t\t\t\t\t e.prevValue;\r\n\r\n\t\t\t\t\tforEachAncestorAndObserverEnqueueRecord( target, function ( options ) {\r\n\t\t\t\t\t\t// 3.1, 4.2\r\n\t\t\t\t\t\tif ( !options.attributes ) {\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\t// 3.2, 4.3\r\n\t\t\t\t\t\tif ( options.attributeFilter && options.attributeFilter.length &&\r\n\t\t\t\t\t\t\t\toptions.attributeFilter.indexOf( name ) === -1 &&\r\n\t\t\t\t\t\t\t\toptions.attributeFilter.indexOf( namespace ) === -1 ) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// 3.3, 4.4\r\n\t\t\t\t\t\tif ( options.attributeOldValue ) {\r\n\t\t\t\t\t\t\treturn getRecordWithOldValue( oldValue );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// 3.4, 4.5\r\n\t\t\t\t\t\treturn record;\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'DOMCharacterDataModified':\r\n\t\t\t\t\t// http://dom.spec.whatwg.org/#concept-mo-queue-characterdata\r\n\t\t\t\t\tvar target = e.target;\r\n\r\n\t\t\t\t\t// 1.\r\n\t\t\t\t\tvar record = getRecord( 'characterData', target );\r\n\r\n\t\t\t\t\t// 2.\r\n\t\t\t\t\tvar oldValue = e.prevValue;\r\n\r\n\t\t\t\t\tforEachAncestorAndObserverEnqueueRecord( target, function ( options ) {\r\n\t\t\t\t\t\t// 3.1, 4.2\r\n\t\t\t\t\t\tif ( !options.characterData ) {\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\t// 3.2, 4.3\r\n\t\t\t\t\t\tif ( options.characterDataOldValue ) {\r\n\t\t\t\t\t\t\treturn getRecordWithOldValue( oldValue );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// 3.3, 4.4\r\n\t\t\t\t\t\treturn record;\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'DOMNodeRemoved':\r\n\t\t\t\t\tthis.addTransientObserver( e.target );\r\n\t\t\t\t\t// Fall through.\r\n\t\t\t\tcase 'DOMNodeInserted':\r\n\t\t\t\t\t// http://dom.spec.whatwg.org/#concept-mo-queue-childlist\r\n\t\t\t\t\tvar changedNode = e.target;\r\n\t\t\t\t\tvar addedNodes, removedNodes;\r\n\t\t\t\t\tif ( e.type === 'DOMNodeInserted' ) {\r\n\t\t\t\t\t\taddedNodes = [ changedNode ];\r\n\t\t\t\t\t\tremovedNodes = [];\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\taddedNodes = [];\r\n\t\t\t\t\t\tremovedNodes = [ changedNode ];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar previousSibling = changedNode.previousSibling;\r\n\t\t\t\t\tvar nextSibling = changedNode.nextSibling;\r\n\r\n\t\t\t\t\t// 1.\r\n\t\t\t\t\tvar record = getRecord( 'childList', e.target.parentNode );\r\n\t\t\t\t\trecord.addedNodes = addedNodes;\r\n\t\t\t\t\trecord.removedNodes = removedNodes;\r\n\t\t\t\t\trecord.previousSibling = previousSibling;\r\n\t\t\t\t\trecord.nextSibling = nextSibling;\r\n\r\n\t\t\t\t\tforEachAncestorAndObserverEnqueueRecord( e.relatedNode, function ( options ) {\r\n\t\t\t\t\t\t// 2.1, 3.2\r\n\t\t\t\t\t\tif ( !options.childList ) {\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\t// 2.2, 3.3\r\n\t\t\t\t\t\treturn record;\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tclearRecords();\r\n\t\t}\r\n\t};\r\n\r\n\tglobal.JsMutationObserver = JsMutationObserver;\r\n\r\n\tif ( !global.MutationObserver ) {\r\n\t\tglobal.MutationObserver = JsMutationObserver;\r\n\t\t// Explicltly mark MO as polyfilled for user reference.\r\n\t\tJsMutationObserver._isPolyfilled = true;\r\n\t}\r\n\r\n})( window );\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/compatibility/MutationObserver.polyfill.js","import AbstractController from '../../base/controller/Abstract.controller';\nimport Device from 'device';\nimport fasterdom from 'fasterdom';\nimport $ from 'jquery';\n\n/**\n * Selects all layout grid columns and content zones / marginal columns\n * @return {void}\n */\nfunction selectColumns () {\n\tthis.sections = [];\n\n\tfasterdom.measureInstant( () => {\n\t\tthis.$sections.each( ( i, sec ) => {\n\t\t\tconst $sec = $( sec ),\n\t\t\t $cols = $sec.find( '> .container > .row > [class*=\"col-\"]' ),\n\t\t\t obj = {};\n\n\t\t\tobj.$element = $sec;\n\t\t\tobj.$prev = $sec.prev();\n\t\t\tobj.$columns = $();\n\t\t\tobj.columns = [];\n\n\t\t\t$cols.each( ( j, col ) => {\n\t\t\t\tconst $col = $( col ),\n\t\t\t\t $children = $col.children();\n\n\t\t\t\tobj.columns.push( {\n\t\t\t\t\t class : $col.attr( 'class' ).split( ' ' ),\n\t\t\t\t\t elements : $children\n\t\t\t\t } );\n\n\t\t\t\tobj.$columns = obj.$columns.add( $children );\n\t\t\t} );\n\n\t\t\tthis.sections.push( obj );\n\t\t} );\n\t} );\n}\n\n/**\n * Wraps all content zones / marginal columns with necessary layout grid columns\n * @return {void}\n */\nfunction addWrapper () {\n\tfasterdom.mutateInstant( () => {\n\t\tthis.sections.forEach( ( sec ) => {\n\t\t\tif ( sec.$prev.length > 0 ) {\n\t\t\t\tsec.$prev.after( sec.$element );\n\t\t\t} else {\n\t\t\t\tthis.$main.prepend( sec.$element );\n\t\t\t}\n\n\t\t\tsec.columns.forEach( ( col ) => {\n\t\t\t\tcol.elements.appendTo( sec.$element.find( '.' + col.class.join( '.' ) ) );\n\t\t\t} );\n\t\t} );\n\n\t\tthis.hasMarkup = true;\n\t} );\n}\n\n/**\n * Unwraps all content zones / marginal columns\n * @return {void}\n */\nfunction removeWrapper () {\n\n\tselectColumns.call( this );\n\n\tfasterdom.mutateInstant( () => {\n\t\tthis.sections.forEach( ( sec ) => {\n\t\t\tconst $sec = $( sec.$element );\n\n\t\t\t$sec.after( sec.$columns );\n\t\t\t$sec.remove();\n\t\t} );\n\n\t\tthis.hasMarkup = false;\n\t} );\n}\n\n/**\n * Class representing an layout instance.\n * Selects content zones and marginal columns to un-/wrap on breakpoint change\n * @extends { AbstractController }\n */\nclass LayoutController extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.breakpoints = [ 'xs', 'sm', 'md' ];\n\t\tthis.hasMarkup = false;\n\n\t\tthis.sections = null;\n\n\t\tthis.$scope = null;\n\t\tthis.$main = null;\n\t\tthis.$sections = null;\n\t}\n\n\t/**\n\t * Initialiss the controller.\n\t * Has to be called after ready event.\n\t * Subscribes to BreakpointChange event\n\t * @override\n\t * @param { object } $root - jQuery wrapped DOM node\n\t * @public\n\t */\n\tinit ( $root ) {\n\t\tthis.$scope = $root;\n\t\tthis.$main = this.$scope.find( 'main' );\n\t\tthis.$sections = this.$scope.find( 'main > section > .container' ).parent();\n\n\t\tthis.hasMarkup = this.$sections.length > 0;\n\n\t\tDevice.breakpointEvent.subscribe( ( data ) => {\n\t\t\tif ( this.breakpoints.includes( data.alias ) && this.hasMarkup ) {\n\t\t\t\tremoveWrapper.call( this );\n\t\t\t} else if ( !this.breakpoints.includes( data.alias ) && !this.hasMarkup ) {\n\t\t\t\taddWrapper.call( this );\n\t\t\t}\n\t\t} );\n\t}\n}\n\nexport default LayoutController;\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/Layout.controller.js","import AbstractController from './../../base/controller/Abstract.controller';\n\nimport bucket from './../../services/Bucket.service.js';\n\nimport $ from 'jquery';\nimport fasterdom, { fasterdomPromised } from 'fasterdom';\nimport { ScrollService } from 'device';\n\nconst userAgent = window.UserAgent;\n\n/**\n * Show the sharing container at given position\n * @param {Object} pos Absolute position to show the sharing container at\n * @param {Number} pos.x Absolute x-position\n * @param {Number} pos.y Absolute y-position\n * @return {void}\n */\nfunction showShareContainer ( pos ) {\n\tfasterdom.mutateInstant( () => {\n\t\tScrollService.getCurrent().then( ( scrollPos ) => {\n\t\t\tthis.$container.css( {\n\t\t\t\ttop : pos.y + scrollPos.y,\n\t\t\t\tleft : pos.x + scrollPos.x\n\t\t\t} );\n\t\t\tif ( !this._isOpen ) {\n\t\t\t\tthis.$container.attr( 'aria-hidden', false );\n\t\t\t\tthis._isOpen = true;\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Hide the share container\n * @return {void}\n */\nfunction hideShareContainer () {\n\tfasterdom.mutateInstant( () => {\n\t\tthis.$container.attr( 'aria-hidden', true );\n\t\tthis._isOpen = false;\n\t} );\n}\n\n/**\n * Container function to get the current text selection on the page\n *\n * @private\n * @return {SelectionObject} Returns a Selection object representing the range of text selected by the user or the current position of the caret. @see https://developer.mozilla.org/de/docs/Web/API/Window/getSelection\n */\nfunction getSelection () {\n\treturn bucket.win.getSelection();\n}\n\n/**\n * Determine selection position from current user selection. Uses {@link getSelection}\n * @return {Object} Position if the current selection\n */\nfunction getSelectionPosition () {\n\tconst selection = getSelection(),\n\t\t\t\tpos = {\n\t\t\t\t\tx : 0,\n\t\t\t\t\ty : 0\n\t\t\t\t};\n\n\tif ( selection.rangeCount ) {\n\t\tconst range = selection.getRangeAt( 0 ).cloneRange();\n\t\tlet rect;\n\n\t\tif ( range.getClientRects ) {\n\t\t\trange.collapse( true );\n\t\t\trect = range.getClientRects()[ 0 ];\n\n\t\t\tpos.x = rect.left;\n\t\t\tpos.y = rect.top;\n\t\t}\n\n\t\tif ( pos.x === 0 && pos.y === 0 ) {\n\t\t\tconst span = $( '<span />' );\n\n\t\t\tif ( span[ 0 ].getClientRects ) {\n\t\t\t\tspan.text( '\\u200b' );\n\t\t\t\trange.insertNode( span[ 0 ] );\n\n\t\t\t\trect = span.getClientRects()[ 0 ];\n\t\t\t\tpos.x = rect.left;\n\t\t\t\tpos.y = rect.top;\n\n\t\t\t\tspan.remove();\n\t\t\t}\n\t\t}\n\t}\n\n\treturn pos;\n}\n\n/**\n * Check if current selection is valid selection\n * @param {SelectionObject} selection Selection object to be checked\n * @return {Boolean} True, if the selection is valid and not empty, false otherwise\n */\nfunction isValidSelection ( selection ) {\n\treturn selection instanceof Selection && selection.toString() !== '' && !selection.isCollapsed && selection.rangeCount;\n}\n\n/**\n * Get the content of the current selection\n * @param {SelectionObject} selection Selection Object to get the content for\n * @return {String} The current selection content\n */\nfunction selectionContent ( selection ) {\n\tif ( !isValidSelection( selection ) ) {\n\t\treturn '';\n\t}\n\n\tconst range = selection.getRangeAt( 0 ),\n\t\t\t\tclonedSelection = range.cloneContents(),\n\t\t\t\ttmpDiv = document.createElement( 'div' );\n\n\ttmpDiv.appendChild( clonedSelection );\n\n\treturn tmpDiv.innerHTML;\n}\n\n/**\n * Check if this component is available at $el's context\n * @param {DOMElement} $el Element to check, if this component is available at\n * @return {Boolean} True, if the element is in the collection of the current scope or a child of a component enabled parent, false otherwise\n */\nfunction elementInScope ( $el ) {\n\treturn $.contains( this.$scope, $el ) || this.$scope.index( $el ) > -1 || $el.closest( '[data-tss01-enabled=\"true\"]' ).length > 0;\n}\n\n/**\n * Check if the common ancestor of the current selection is in the scope. Uses {@link elementInScope}\n * @param {SelectionObect} selection Selection object to check\n * @return {Boolean} True, if current selection is in scope or in a component enabled parent\n */\nfunction selectionCommonAncestorInScope ( selection ) {\n\ttry {\n\t\tconst $commonAncestor = $( selection.getRangeAt( 0 ).commonAncestorContainer );\n\n\t\tif ( elementInScope.call( this, $commonAncestor ) ) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t} catch ( error ) {\n\t\tthis.logger.warn( 'Error wrapping selection commonAncestor' );\n\t\treturn false;\n\t}\n}\n\n/**\n * Check if the parent node of the current selection is in the scope. Uses {@link elementInScope}\n * @param {SelectionObject} selection Selection object to check\n * @return {Boolean} True, if current selections parent node is in scope or in a component enabled parent, false otherwise\n */\nfunction selectionParentNodeInScope ( selection ) {\n\ttry {\n\t\tconst $parent = $( selection.getRangeAt( 0 ).commonAncestorContainer.parentNode );\n\n\t\tif ( elementInScope.call( this, $parent ) ) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t} catch ( error ) {\n\t\tthis.logger.warn( 'Error wrapping selection parentNode' );\n\t\treturn false;\n\t}\n}\n\n/**\n * Check if current selection parents are in scope\n * @param {SelectionObject} selection Selection object to check\n * @return {Boolean} True, if selection has common ancestors or parent node in scope, false otherwise\n */\nfunction selectionParentsInScope ( selection ) {\n\treturn selectionCommonAncestorInScope.call( this, selection ) || selectionParentNodeInScope.call( this, selection );\n}\n\n/**\n * Check if current selection content is valid\n * @param {SelectionObject} selection Selection object to check\n * @param {Event} [event=null] Event on which the check was initiated\n * @return {Boolean} True, if current selection content is valid, false otherwise\n */\nfunction isValidSelectionContent ( selection, event = null ) {\n\tconst content = selectionContent( selection );\n\n\tif ( content === '' ) {\n\t\treturn false;\n\t}\n\n\tif ( content !== selection.toString() ) {\n\t\tif ( selectionParentsInScope.call( this, selection ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet isBanned = false,\n\t\t\t\t$content = null;\n\n\t\ttry {\n\t\t\t$content = $( content );\n\t\t} catch ( error ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t$content.each( ( i, v ) => {\n\t\t\tif ( v.nodeType !== 3 && $( v ).data( 'tss01-enabled' ) !== true ) {\n\t\t\t\tisBanned = true;\n\t\t\t\t// break .each()\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// continue .each()\n\t\t\treturn true;\n\t\t} );\n\n\t\treturn !isBanned;\n\t} else {\n\t\treturn selectionParentsInScope.call( this, selection );\n\t}\n}\n\n/**\n * Check the current selection and show or hide container\n * @param {Event} event Event on which the chek was initiated\n * @return {void}\n */\nfunction checkSelection ( event ) {\n\tfasterdomPromised.measure( () => {\n\t\tconst selection = getSelection();\n\n\t\tif ( isValidSelectionContent.call( this, selection, event ) ) {\n\t\t\tthis.isSelected = true;\n\t\t\tthis.selectionText = selection.toString();\n\t\t\tshowShareContainer.call( this, getSelectionPosition() );\n\t\t} else {\n\t\t\tthis.isSelected = false;\n\t\t\tthis.selectionText = '';\n\t\t\tif ( this._isOpen ) {\n\t\t\t\thideShareContainer.call( this );\n\t\t\t}\n\t\t}\n\t} );\n}\n\n/**\n * Map the container elements to class variables\n * @return {void}\n */\nfunction mapContainerElements () {\n\tthis.$container = $( '.tss01-container' );\n\tthis.$containerButtons = this.$container.find( 'a' );\n}\n\n/**\n * Setup class. Uses {@link mapContainerElements}\n * @return {Promise} Resolve, when class variables are set\n */\nfunction setup () {\n\treturn new Promise( ( resolve, reject ) => {\n\t\tmapContainerElements.call( this );\n\t\tresolve();\n\t} );\n}\n\n/**\n * Add mouse and keyboard handler to determine to show share container or not. Uses {@link checkSelection}\n * @returns {void}\n */\nfunction addHandler () {\n\tconst self = this;\n\n\tthis.$containerButtons.on( 'click', function clickHandler ( e ) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tconst $t = $( this );\n\t\tlet href = $t.attr( 'href' );\n\n\t\thref = href.replace( '{{shareURL}}', encodeURI( window.location.href ) ).replace( '{{shareTitle}}', encodeURI( self.selectionText ) );\n\t\tbucket.win.open( href, '_blank', 'width=450, height=650, left=' + ( screen.width / 2 - 225 ) + ', top=' + ( screen.height / 2 - 325 ) );\n\n\t\treturn false;\n\t} );\n\tbucket.$document.on( 'mouseup keyup', checkSelection.bind( this ) );\n}\n\nclass TSS01Controller extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.isSupported = typeof bucket.win.getSelection === 'function';\n\t\tthis.isSelected = false;\n\t\tthis.selectionText = '';\n\t}\n\n\tinit ( $scope ) {\n\t\tthis.$scope = $scope;\n\n\t\tif ( !this.isSupported || userAgent.isMobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetup.call( this ).then( () => {\n\t\t\taddHandler.call( this );\n\t\t} );\n\t}\n}\n\nconst instance = new TSS01Controller(); // eslint-disable-line one-var\n\nexport default instance;\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/TSS01.controller.js","import AbstractController from './../../base/controller/Abstract.controller';\n\nimport fasterdom from 'fasterdom';\n\n/**\n * Add handler to accordeon child\n * @returns {void}\n */\nfunction addHandlerExtended () {\n\tthis.$accChildItem.on( 'beforeOpen.acc-item', () => {\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tthis.$scope.addClass( 'ses01__acc--open' );\n\t\t} );\n\t} );\n\n\tthis.$accChildItem.on( 'beforeClose.acc-item', () => {\n\t\tfasterdom.mutateInstant( () => {\n\t\t\tthis.$scope.removeClass( 'ses01__acc--open' );\n\t\t} );\n\t} );\n}\n\n/**\n * Set up the `extend` functionality of the SES01 component, uses {@link addHandlerExtended}\n * @return {void}\n */\nfunction setupExtended () {\n\tthis.$accChildItem = this.$scope.find( '[data-tpl*=acc] > ul > .accordion-item, > ol > .accordion-item' );\n\taddHandlerExtended.call( this );\n}\n\nfunction addQuickLinksHandler () {\n\tthis.$quickLinks = this.$scope.find( '.suggestions.quick-links' );\n\n\tthis.$input.on( 'focus', () => {\n\t\tthis.$quickLinks.addClass( 'suggestions--open' );\n\t} );\n\n\tthis.$input.on( 'blur', () => {\n\t\tthis.$quickLinks.removeClass( 'suggestions--open' );\n\t} );\n}\n\nclass SES01Controller extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\t}\n\n\tinit ( $root ) {\n\t\tthis.$scope = $root;\n\t\tthis.$input = this.$scope.find( 'input' );\n\n\t\tif ( this.$scope.is( '.ses01--extended' ) ) {\n\t\t\tsetupExtended.call( this );\n\t\t}\n\n\t\tif ( this.$scope.hasClass( 'ses01--has-quick-links' ) ) {\n\t\t\tthis::addQuickLinksHandler();\n\t\t}\n\t}\n\n}\n\nexport default SES01Controller;\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/SES01.controller.js","import ACCController from './ACC.controller';\nimport Device from 'device';\nimport fasterdom from 'fasterdom';\n\n/**\n * Add handler to controller and breakpoint events\n * @returns {void}\n */\nfunction addHandler () {\n\n\tif ( this.options.mobileCTA ) {\n\t\tDevice.breakpointEvent.subscribe( ( e ) => {\n\t\t\tif ( [ 'md', 'sm', 'xs' ].includes( e.alias ) ) {\n\t\t\t\tthis.options.multiExpandable = false;\n\t\t\t\tthis.scrollOnOpen = false;\n\t\t\t\tthis.enable();\n\t\t\t\tthis.$scope.attr( 'aria-disabled', 'false' );\n\t\t\t} else {\n\t\t\t\tthis.options.multiExpandable = true;\n\t\t\t\tthis.scrollOnOpen = true;\n\t\t\t\tthis.disable();\n\t\t\t\tthis.$scope.attr( 'aria-disabled', 'true' );\n\t\t\t}\n\t\t} );\n\t}\n\n\tif ( this.options.mobileCTA ) {\n\t\tthis.subController.forEach( ( ctrl ) => {\n\n\t\t\tctrl.onClose( () => {\n\t\t\t\tfasterdom.mutateInstant( () => {\n\t\t\t\t\tthis.$scope.css( {\n\t\t\t\t\t\theight : this.options.tmpHeight\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tctrl.afterClose( () => {\n\t\t\t\tfasterdom.mutateInstant( () => {\n\t\t\t\t\tthis.$scope.css( 'height', '' );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tctrl.$scope.on( 'click', '[data-trigger=item-close]', ( e ) => {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\n\t\t\t\tctrl.close();\n\n\t\t\t\treturn false;\n\t\t\t} );\n\n\t\t} );\n\t}\n\n}\n\nclass IEBController extends ACCController {\n\n\tconstructor () {\n\t\tsuper();\n\t}\n\n\tinit ( $root, options = {} ) {\n\t\tthis.options = {\n\t\t\tmobileCTA : options.mobileCTA = $root.is( '.ieb01--mobile-cta' ),\n\t\t\ttmpHeight : 0\n\t\t};\n\n\t\tsuper.init( $root, Object.assign( {}, {\n\t\t\titemSelector : '> [data-tpl=ieb01]',\n\t\t\titemTrigger : '> .ieb-item__header',\n\t\t\tcontentSelector : '> .ieb-item__content',\n\t\t\tmultiExpandable : true,\n\t\t\tdisabled : !this.options.mobileCTA && $root.attr( 'aria-disabled' ) === 'true'\n\t\t\t// desktopExpanded : this.options.mobileCTA,\n\t\t\t// mobileExpanded : false,\n\t\t\t// mobileOnly : false\n\t\t}, options ) );\n\n\t\taddHandler.call( this );\n\n\t\t// if ( !this.options.mobileCTA && this.$scope.attr( 'aria-disabled' ) === 'true' ) {\n\t\t// \tthis.disable();\n\t\t// }\n\t}\n\n\tchildHeight ( h ) {\n\t\tif ( this.options.mobileCTA && this._isDisabled === false ) {\n\t\t\tfasterdom.mutateInstant( () => {\n\t\t\t\tthis.options.tmpHeight = this.$scope.outerHeight();\n\t\t\t\tthis.$scope.css( {\n\t\t\t\t\theight : this.options.tmpHeight\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tfasterdom.mutateInstant( () => {\n\t\t\t\tthis.$scope.css( {\n\t\t\t\t\theight : h\n\t\t\t\t} );\n\t\t\t}, 1 );\n\t\t}\n\t}\n}\n\nexport default IEBController;\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/IEB.controller.js","import $ from 'jquery';\n\nimport fasterdom from 'fasterdom';\nimport Device, { ScrollService } from 'device';\nimport { DIRECTIONS } from 'device/services/Scroll.service';\n\nimport AbstractController from './../../base/controller/Abstract.controller';\n\nfunction handleStickyTagBarResize ( data ) {\n\tif ( !this.bounds ) {\n\t\tthis.bounds = {};\n\t}\n\n\tfasterdom.measureInstant( () => {\n\t\tconst offset = this.$scope.offset();\n\n\t\tthis.bounds = {\n\t\t\tx : offset.left,\n\t\t\ty : offset.top,\n\t\t\tx2 : offset.left + this.$scope.outerWidth(),\n\t\t\ty2 : offset.top + this.$scope.outerHeight()\n\t\t};\n\t} );\n}\n\nfunction handleStickyTagBarScroll ( data ) {\n\tif ( data.y <= this.bounds.y2 && !this.state.isInViewport ) {\n\t\tthis.state.isInViewport = true;\n\t} else if ( data.y > this.bounds.y2 && this.state.isInViewport ) {\n\t\tthis.state.isInViewport = false;\n\t}\n\n\tif ( this.state.isFixed && this.state.isInViewport ) {\n\t\tthis.state.isFixed = false;\n\t\tthis.$stickyTagBar.removeClass( 'open' );\n\t} else if ( !this.state.isFixed && !this.state.isInViewport ) {\n\t\tthis.state.isFixed = true;\n\t\tthis.$stickyTagBar.addClass( 'open' );\n\t}\n}\n\nfunction addStickyTagBarHandler () {\n\tDevice.resizeEvent.subscribe( this::handleStickyTagBarResize );\n\tDevice.scrollEvent.subscribe( this::handleStickyTagBarScroll );\n}\n\nfunction setupStickyTagBar () {\n\tthis.$stickyTagBar.find( '.tag-bar--sticky__jump-container a' ).on( 'click', e => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tScrollService.toElement( this.$scope );\n\n\t\treturn false;\n\t} );\n\tthis::addStickyTagBarHandler();\n}\n\nclass JFC01Controller extends AbstractController {\n\n\tinit ( $scope ) {\n\t\tthis.$scope = $scope;\n\n\t\tthis.$stickyTagBar = $( this.$scope.attr( 'id' ) ? `[data-tpl=tag-bar-sticky][for=${this.$scope.attr( 'id' )}]` : '[data-tpl=tag-bar-sticky]' );\n\n\t\tthis.state.isInViewport = true;\n\t\tthis::setupStickyTagBar();\n\t}\n\n}\n\nexport default JFC01Controller;\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/JFC01.controller.js","import AbstractController from './../../base/controller/Abstract.controller';\n\nimport horizontalScroll from './../../decorators/horizontalScroll.decorator';\n\nimport device from 'device';\n\nfunction checkPrevNextAvailability ( scroller ) {\n\tif ( scroller.currentPage.pageX === 0 ) {\n\t\tthis.scope.classList.remove( 'has-prev' );\n\t} else if ( !this.scope.classList.contains( 'has-prev' ) ) {\n\t\tthis.scope.classList.add( 'has-prev' );\n\t}\n\n\tif ( scroller.currentPage.pageX === scroller.pages.length - 1 ) {\n\t\tthis.scope.classList.remove( 'has-next' );\n\t} else if ( !this.scope.classList.contains( 'has-next' ) ) {\n\t\tthis.scope.classList.add( 'has-next' );\n\t}\n}\n\nfunction handleArrowClick ( e, a, b, c ) {\n\tif ( !this.isHorizontalScrollingEnabled ) {\n\t\treturn;\n\t}\n\n\tif ( e.target.classList.contains( 'srf01__arrow--prev' ) ) {\n\t\tthis.getHorizontalScroller().prev();\n\t} else if ( e.target.classList.contains( 'srf01__arrow--next' ) ) {\n\t\tthis.getHorizontalScroller().next();\n\t}\n}\n\nfunction addScrollingClickHandlerTo ( elements ) {\n\tArray.prototype.map.call( this.controlElements, item => {\n\t\tif ( !item.addEventListener ) {\n\t\t\treturn;\n\t\t}\n\n\t\titem.addEventListener( 'click', this::handleArrowClick )\n\t\treturn item;\n\t} );\n}\n\nfunction removeScrollingClickHandlerFrom ( elements ) {\n\tArray.prototype.map.call( this.controlElements, item => {\n\t\tif ( !item.removeEventListener ) {\n\t\t\treturn;\n\t\t}\n\n\t\titem.removeEventListener( 'click', this::handleArrowClick )\n\t\treturn item;\n\t} );\n}\n\nfunction initScolling () {\n\tif ( this.faqn01 !== null ) {\n\t\tthis.scope.classList.add( 'scrolling--enabled' );\n\t\tconst scroller = this.initHorizontalScroll( this.faqn01, {\n\t\t\tsnap : 'li'\n\t\t} );\n\n\t\tthis::checkPrevNextAvailability( scroller);\n\t\tscroller.on( 'scrollEnd', () => this::checkPrevNextAvailability( scroller ) );\n\t\tthis::addScrollingClickHandlerTo( this.controlElements );\n\t}\n}\n\nfunction destroyScrolling () {\n\tthis.scope.classList.remove( 'scrolling--enabled' );\n\tthis.destroyHorizontalScroll();\n\tthis::removeScrollingClickHandlerFrom( this.controlElements );\n}\n\nfunction setupHandler () {\n\tdevice.breakpointEvent.subscribe( data => {\n\t\tif ( [ 'xs', 'sm', 'md' ].includes( data.alias ) && !this.isHorizontalScrollingEnabled() ) {\n\t\t\tthis::initScolling();\n\t\t} else if ( this.isHorizontalScrollingEnabled() ) {\n\t\t\tthis::destroyScrolling();\n\t\t}\n\t} );\n}\n\n@horizontalScroll()\nclass SRF01Controller extends AbstractController {\n\n\tinit ( $scope ) {\n\t\tthis.$scope = $scope;\n\t\tthis.scope = $scope[ 0 ];\n\n\t\tthis.faqn01 = this.scope.querySelector( '[data-tpl=faqn01] .faqn01__inner' );\n\n\t\tthis.controlElements = this.scope.querySelectorAll( '.srf01__arrow' );\n\n\t\tthis::setupHandler();\n\t}\n\n}\n\nexport default SRF01Controller;\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/SRF01.controller.js","import IScroll from 'iscroll';\n\nimport mixins from './mixins.decorator';\n\nfunction decorateClassWithHorizontalScroll () {\n\treturn target => {\n\t\tlet\n\t\t\tscroller = null,\n\t\t\tscrollingEnabled = false;\n\n\t\tconst\n\t\t\textend = {\n\t\t\t\tisHorizontalScrollingEnabled : () => scrollingEnabled,\n\t\t\t\tinitHorizontalScroll : ( element, opts = {} ) => {\n\t\t\t\t\tscroller = new IScroll( element, {\n\t\t\t\t\t\tmouseWheel : true,\n\t\t\t\t\t\tscrollX : true,\n\t\t\t\t\t\tscrollY : false,\n\t\t\t\t\t\t...opts\n\t\t\t\t\t} );\n\t\t\t\t\tscrollingEnabled = true;\n\t\t\t\t\treturn scroller;\n\t\t\t\t},\n\t\t\t\tdestroyHorizontalScroll : () => {\n\t\t\t\t\tif ( scrollingEnabled && scroller.destroy ) {\n\t\t\t\t\t\tscroller.scroller.removeAttribute( 'style' );\n\t\t\t\t\t\tscroller.destroy();\n\t\t\t\t\t\tscroller = null;\n\t\t\t\t\t\tscrollingEnabled = false;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tgetHorizontalScroller : () => scroller\n\t\t\t};\n\n\t\tmixins( extend )( target );\n\t};\n}\n\nexport default decorateClassWithHorizontalScroll;\n\n\n\n// WEBPACK FOOTER //\n// ./js/decorators/horizontalScroll.decorator.js","/*! iScroll v5.2.0 ~ (c) 2008-2016 Matteo Spinelli ~ http://cubiq.org/license */\n(function (window, document, Math) {\nvar rAF = window.requestAnimationFrame\t||\n\twindow.webkitRequestAnimationFrame\t||\n\twindow.mozRequestAnimationFrame\t\t||\n\twindow.oRequestAnimationFrame\t\t||\n\twindow.msRequestAnimationFrame\t\t||\n\tfunction (callback) { window.setTimeout(callback, 1000 / 60); };\n\nvar utils = (function () {\n\tvar me = {};\n\n\tvar _elementStyle = document.createElement('div').style;\n\tvar _vendor = (function () {\n\t\tvar vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'],\n\t\t\ttransform,\n\t\t\ti = 0,\n\t\t\tl = vendors.length;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\ttransform = vendors[i] + 'ransform';\n\t\t\tif ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1);\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tfunction _prefixStyle (style) {\n\t\tif ( _vendor === false ) return false;\n\t\tif ( _vendor === '' ) return style;\n\t\treturn _vendor + style.charAt(0).toUpperCase() + style.substr(1);\n\t}\n\n\tme.getTime = Date.now || function getTime () { return new Date().getTime(); };\n\n\tme.extend = function (target, obj) {\n\t\tfor ( var i in obj ) {\n\t\t\ttarget[i] = obj[i];\n\t\t}\n\t};\n\n\tme.addEvent = function (el, type, fn, capture) {\n\t\tel.addEventListener(type, fn, !!capture);\n\t};\n\n\tme.removeEvent = function (el, type, fn, capture) {\n\t\tel.removeEventListener(type, fn, !!capture);\n\t};\n\n\tme.prefixPointerEvent = function (pointerEvent) {\n\t\treturn window.MSPointerEvent ?\n\t\t\t'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8):\n\t\t\tpointerEvent;\n\t};\n\n\tme.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) {\n\t\tvar distance = current - start,\n\t\t\tspeed = Math.abs(distance) / time,\n\t\t\tdestination,\n\t\t\tduration;\n\n\t\tdeceleration = deceleration === undefined ? 0.0006 : deceleration;\n\n\t\tdestination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 );\n\t\tduration = speed / deceleration;\n\n\t\tif ( destination < lowerMargin ) {\n\t\t\tdestination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin;\n\t\t\tdistance = Math.abs(destination - current);\n\t\t\tduration = distance / speed;\n\t\t} else if ( destination > 0 ) {\n\t\t\tdestination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0;\n\t\t\tdistance = Math.abs(current) + destination;\n\t\t\tduration = distance / speed;\n\t\t}\n\n\t\treturn {\n\t\t\tdestination: Math.round(destination),\n\t\t\tduration: duration\n\t\t};\n\t};\n\n\tvar _transform = _prefixStyle('transform');\n\n\tme.extend(me, {\n\t\thasTransform: _transform !== false,\n\t\thasPerspective: _prefixStyle('perspective') in _elementStyle,\n\t\thasTouch: 'ontouchstart' in window,\n\t\thasPointer: !!(window.PointerEvent || window.MSPointerEvent), // IE10 is prefixed\n\t\thasTransition: _prefixStyle('transition') in _elementStyle\n\t});\n\n\t/*\n\tThis should find all Android browsers lower than build 535.19 (both stock browser and webview)\n\t- galaxy S2 is ok\n - 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1`\n - 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\n - galaxy S3 is badAndroid (stock brower, webview)\n `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\n - galaxy S4 is badAndroid (stock brower, webview)\n `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\n - galaxy S5 is OK\n `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)`\n - galaxy S6 is OK\n `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)`\n */\n\tme.isBadAndroid = (function() {\n\t\tvar appVersion = window.navigator.appVersion;\n\t\t// Android browser is not a chrome browser.\n\t\tif (/Android/.test(appVersion) && !(/Chrome\\/\\d/.test(appVersion))) {\n\t\t\tvar safariVersion = appVersion.match(/Safari\\/(\\d+.\\d)/);\n\t\t\tif(safariVersion && typeof safariVersion === \"object\" && safariVersion.length >= 2) {\n\t\t\t\treturn parseFloat(safariVersion[1]) < 535.19;\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t})();\n\n\tme.extend(me.style = {}, {\n\t\ttransform: _transform,\n\t\ttransitionTimingFunction: _prefixStyle('transitionTimingFunction'),\n\t\ttransitionDuration: _prefixStyle('transitionDuration'),\n\t\ttransitionDelay: _prefixStyle('transitionDelay'),\n\t\ttransformOrigin: _prefixStyle('transformOrigin')\n\t});\n\n\tme.hasClass = function (e, c) {\n\t\tvar re = new RegExp(\"(^|\\\\s)\" + c + \"(\\\\s|$)\");\n\t\treturn re.test(e.className);\n\t};\n\n\tme.addClass = function (e, c) {\n\t\tif ( me.hasClass(e, c) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar newclass = e.className.split(' ');\n\t\tnewclass.push(c);\n\t\te.className = newclass.join(' ');\n\t};\n\n\tme.removeClass = function (e, c) {\n\t\tif ( !me.hasClass(e, c) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar re = new RegExp(\"(^|\\\\s)\" + c + \"(\\\\s|$)\", 'g');\n\t\te.className = e.className.replace(re, ' ');\n\t};\n\n\tme.offset = function (el) {\n\t\tvar left = -el.offsetLeft,\n\t\t\ttop = -el.offsetTop;\n\n\t\t// jshint -W084\n\t\twhile (el = el.offsetParent) {\n\t\t\tleft -= el.offsetLeft;\n\t\t\ttop -= el.offsetTop;\n\t\t}\n\t\t// jshint +W084\n\n\t\treturn {\n\t\t\tleft: left,\n\t\t\ttop: top\n\t\t};\n\t};\n\n\tme.preventDefaultException = function (el, exceptions) {\n\t\tfor ( var i in exceptions ) {\n\t\t\tif ( exceptions[i].test(el[i]) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tme.extend(me.eventType = {}, {\n\t\ttouchstart: 1,\n\t\ttouchmove: 1,\n\t\ttouchend: 1,\n\n\t\tmousedown: 2,\n\t\tmousemove: 2,\n\t\tmouseup: 2,\n\n\t\tpointerdown: 3,\n\t\tpointermove: 3,\n\t\tpointerup: 3,\n\n\t\tMSPointerDown: 3,\n\t\tMSPointerMove: 3,\n\t\tMSPointerUp: 3\n\t});\n\n\tme.extend(me.ease = {}, {\n\t\tquadratic: {\n\t\t\tstyle: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n\t\t\tfn: function (k) {\n\t\t\t\treturn k * ( 2 - k );\n\t\t\t}\n\t\t},\n\t\tcircular: {\n\t\t\tstyle: 'cubic-bezier(0.1, 0.57, 0.1, 1)',\t// Not properly \"circular\" but this looks better, it should be (0.075, 0.82, 0.165, 1)\n\t\t\tfn: function (k) {\n\t\t\t\treturn Math.sqrt( 1 - ( --k * k ) );\n\t\t\t}\n\t\t},\n\t\tback: {\n\t\t\tstyle: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n\t\t\tfn: function (k) {\n\t\t\t\tvar b = 4;\n\t\t\t\treturn ( k = k - 1 ) * k * ( ( b + 1 ) * k + b ) + 1;\n\t\t\t}\n\t\t},\n\t\tbounce: {\n\t\t\tstyle: '',\n\t\t\tfn: function (k) {\n\t\t\t\tif ( ( k /= 1 ) < ( 1 / 2.75 ) ) {\n\t\t\t\t\treturn 7.5625 * k * k;\n\t\t\t\t} else if ( k < ( 2 / 2.75 ) ) {\n\t\t\t\t\treturn 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75;\n\t\t\t\t} else if ( k < ( 2.5 / 2.75 ) ) {\n\t\t\t\t\treturn 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375;\n\t\t\t\t} else {\n\t\t\t\t\treturn 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\telastic: {\n\t\t\tstyle: '',\n\t\t\tfn: function (k) {\n\t\t\t\tvar f = 0.22,\n\t\t\t\t\te = 0.4;\n\n\t\t\t\tif ( k === 0 ) { return 0; }\n\t\t\t\tif ( k == 1 ) { return 1; }\n\n\t\t\t\treturn ( e * Math.pow( 2, - 10 * k ) * Math.sin( ( k - f / 4 ) * ( 2 * Math.PI ) / f ) + 1 );\n\t\t\t}\n\t\t}\n\t});\n\n\tme.tap = function (e, eventName) {\n\t\tvar ev = document.createEvent('Event');\n\t\tev.initEvent(eventName, true, true);\n\t\tev.pageX = e.pageX;\n\t\tev.pageY = e.pageY;\n\t\te.target.dispatchEvent(ev);\n\t};\n\n\tme.click = function (e) {\n\t\tvar target = e.target,\n\t\t\tev;\n\n\t\tif ( !(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName) ) {\n\t\t\tev = document.createEvent('MouseEvents');\n\t\t\tev.initMouseEvent('click', true, true, e.view, 1,\n\t\t\t\ttarget.screenX, target.screenY, target.clientX, target.clientY,\n\t\t\t\te.ctrlKey, e.altKey, e.shiftKey, e.metaKey,\n\t\t\t\t0, null);\n\n\t\t\tev._constructed = true;\n\t\t\ttarget.dispatchEvent(ev);\n\t\t}\n\t};\n\n\treturn me;\n})();\nfunction IScroll (el, options) {\n\tthis.wrapper = typeof el == 'string' ? document.querySelector(el) : el;\n\tthis.scroller = this.wrapper.children[0];\n\tthis.scrollerStyle = this.scroller.style;\t\t// cache style for better performance\n\n\tthis.options = {\n\n\t\tresizeScrollbars: true,\n\n\t\tmouseWheelSpeed: 20,\n\n\t\tsnapThreshold: 0.334,\n\n// INSERT POINT: OPTIONS\n\t\tdisablePointer : !utils.hasPointer,\n\t\tdisableTouch : utils.hasPointer || !utils.hasTouch,\n\t\tdisableMouse : utils.hasPointer || utils.hasTouch,\n\t\tstartX: 0,\n\t\tstartY: 0,\n\t\tscrollY: true,\n\t\tdirectionLockThreshold: 5,\n\t\tmomentum: true,\n\n\t\tbounce: true,\n\t\tbounceTime: 600,\n\t\tbounceEasing: '',\n\n\t\tpreventDefault: true,\n\t\tpreventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ },\n\n\t\tHWCompositing: true,\n\t\tuseTransition: true,\n\t\tuseTransform: true,\n\t\tbindToWrapper: typeof window.onmousedown === \"undefined\"\n\t};\n\n\tfor ( var i in options ) {\n\t\tthis.options[i] = options[i];\n\t}\n\n\t// Normalize options\n\tthis.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : '';\n\n\tthis.options.useTransition = utils.hasTransition && this.options.useTransition;\n\tthis.options.useTransform = utils.hasTransform && this.options.useTransform;\n\n\tthis.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough;\n\tthis.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault;\n\n\t// If you want eventPassthrough I have to lock one of the axes\n\tthis.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY;\n\tthis.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX;\n\n\t// With eventPassthrough we also need lockDirection mechanism\n\tthis.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough;\n\tthis.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold;\n\n\tthis.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing;\n\n\tthis.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling;\n\n\tif ( this.options.tap === true ) {\n\t\tthis.options.tap = 'tap';\n\t}\n\n\tif ( this.options.shrinkScrollbars == 'scale' ) {\n\t\tthis.options.useTransition = false;\n\t}\n\n\tthis.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1;\n\n// INSERT POINT: NORMALIZATION\n\n\t// Some defaults\n\tthis.x = 0;\n\tthis.y = 0;\n\tthis.directionX = 0;\n\tthis.directionY = 0;\n\tthis._events = {};\n\n// INSERT POINT: DEFAULTS\n\n\tthis._init();\n\tthis.refresh();\n\n\tthis.scrollTo(this.options.startX, this.options.startY);\n\tthis.enable();\n}\n\nIScroll.prototype = {\n\tversion: '5.2.0',\n\n\t_init: function () {\n\t\tthis._initEvents();\n\n\t\tif ( this.options.scrollbars || this.options.indicators ) {\n\t\t\tthis._initIndicators();\n\t\t}\n\n\t\tif ( this.options.mouseWheel ) {\n\t\t\tthis._initWheel();\n\t\t}\n\n\t\tif ( this.options.snap ) {\n\t\t\tthis._initSnap();\n\t\t}\n\n\t\tif ( this.options.keyBindings ) {\n\t\t\tthis._initKeys();\n\t\t}\n\n// INSERT POINT: _init\n\n\t},\n\n\tdestroy: function () {\n\t\tthis._initEvents(true);\n\t\tclearTimeout(this.resizeTimeout);\n \t\tthis.resizeTimeout = null;\n\t\tthis._execEvent('destroy');\n\t},\n\n\t_transitionEnd: function (e) {\n\t\tif ( e.target != this.scroller || !this.isInTransition ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._transitionTime();\n\t\tif ( !this.resetPosition(this.options.bounceTime) ) {\n\t\t\tthis.isInTransition = false;\n\t\t\tthis._execEvent('scrollEnd');\n\t\t}\n\t},\n\n\t_start: function (e) {\n\t\t// React to left mouse button only\n\t\tif ( utils.eventType[e.type] != 1 ) {\n\t\t // for button property\n\t\t // http://unixpapa.com/js/mouse.html\n\t\t var button;\n\t if (!e.which) {\n\t /* IE case */\n\t button = (e.button < 2) ? 0 :\n\t ((e.button == 4) ? 1 : 2);\n\t } else {\n\t /* All others */\n\t button = e.button;\n\t }\n\t\t\tif ( button !== 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif ( !this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tvar point = e.touches ? e.touches[0] : e,\n\t\t\tpos;\n\n\t\tthis.initiated\t= utils.eventType[e.type];\n\t\tthis.moved\t\t= false;\n\t\tthis.distX\t\t= 0;\n\t\tthis.distY\t\t= 0;\n\t\tthis.directionX = 0;\n\t\tthis.directionY = 0;\n\t\tthis.directionLocked = 0;\n\n\t\tthis.startTime = utils.getTime();\n\n\t\tif ( this.options.useTransition && this.isInTransition ) {\n\t\t\tthis._transitionTime();\n\t\t\tthis.isInTransition = false;\n\t\t\tpos = this.getComputedPosition();\n\t\t\tthis._translate(Math.round(pos.x), Math.round(pos.y));\n\t\t\tthis._execEvent('scrollEnd');\n\t\t} else if ( !this.options.useTransition && this.isAnimating ) {\n\t\t\tthis.isAnimating = false;\n\t\t\tthis._execEvent('scrollEnd');\n\t\t}\n\n\t\tthis.startX = this.x;\n\t\tthis.startY = this.y;\n\t\tthis.absStartX = this.x;\n\t\tthis.absStartY = this.y;\n\t\tthis.pointX = point.pageX;\n\t\tthis.pointY = point.pageY;\n\n\t\tthis._execEvent('beforeScrollStart');\n\t},\n\n\t_move: function (e) {\n\t\tif ( !this.enabled || utils.eventType[e.type] !== this.initiated ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.options.preventDefault ) {\t// increases performance on Android? TODO: check!\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tvar point\t\t= e.touches ? e.touches[0] : e,\n\t\t\tdeltaX\t\t= point.pageX - this.pointX,\n\t\t\tdeltaY\t\t= point.pageY - this.pointY,\n\t\t\ttimestamp\t= utils.getTime(),\n\t\t\tnewX, newY,\n\t\t\tabsDistX, absDistY;\n\n\t\tthis.pointX\t\t= point.pageX;\n\t\tthis.pointY\t\t= point.pageY;\n\n\t\tthis.distX\t\t+= deltaX;\n\t\tthis.distY\t\t+= deltaY;\n\t\tabsDistX\t\t= Math.abs(this.distX);\n\t\tabsDistY\t\t= Math.abs(this.distY);\n\n\t\t// We need to move at least 10 pixels for the scrolling to initiate\n\t\tif ( timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If you are scrolling in one direction lock the other\n\t\tif ( !this.directionLocked && !this.options.freeScroll ) {\n\t\t\tif ( absDistX > absDistY + this.options.directionLockThreshold ) {\n\t\t\t\tthis.directionLocked = 'h';\t\t// lock horizontally\n\t\t\t} else if ( absDistY >= absDistX + this.options.directionLockThreshold ) {\n\t\t\t\tthis.directionLocked = 'v';\t\t// lock vertically\n\t\t\t} else {\n\t\t\t\tthis.directionLocked = 'n';\t\t// no lock\n\t\t\t}\n\t\t}\n\n\t\tif ( this.directionLocked == 'h' ) {\n\t\t\tif ( this.options.eventPassthrough == 'vertical' ) {\n\t\t\t\te.preventDefault();\n\t\t\t} else if ( this.options.eventPassthrough == 'horizontal' ) {\n\t\t\t\tthis.initiated = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdeltaY = 0;\n\t\t} else if ( this.directionLocked == 'v' ) {\n\t\t\tif ( this.options.eventPassthrough == 'horizontal' ) {\n\t\t\t\te.preventDefault();\n\t\t\t} else if ( this.options.eventPassthrough == 'vertical' ) {\n\t\t\t\tthis.initiated = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdeltaX = 0;\n\t\t}\n\n\t\tdeltaX = this.hasHorizontalScroll ? deltaX : 0;\n\t\tdeltaY = this.hasVerticalScroll ? deltaY : 0;\n\n\t\tnewX = this.x + deltaX;\n\t\tnewY = this.y + deltaY;\n\n\t\t// Slow down if outside of the boundaries\n\t\tif ( newX > 0 || newX < this.maxScrollX ) {\n\t\t\tnewX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX;\n\t\t}\n\t\tif ( newY > 0 || newY < this.maxScrollY ) {\n\t\t\tnewY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY;\n\t\t}\n\n\t\tthis.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0;\n\t\tthis.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0;\n\n\t\tif ( !this.moved ) {\n\t\t\tthis._execEvent('scrollStart');\n\t\t}\n\n\t\tthis.moved = true;\n\n\t\tthis._translate(newX, newY);\n\n/* REPLACE START: _move */\n\n\t\tif ( timestamp - this.startTime > 300 ) {\n\t\t\tthis.startTime = timestamp;\n\t\t\tthis.startX = this.x;\n\t\t\tthis.startY = this.y;\n\t\t}\n\n/* REPLACE END: _move */\n\n\t},\n\n\t_end: function (e) {\n\t\tif ( !this.enabled || utils.eventType[e.type] !== this.initiated ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tvar point = e.changedTouches ? e.changedTouches[0] : e,\n\t\t\tmomentumX,\n\t\t\tmomentumY,\n\t\t\tduration = utils.getTime() - this.startTime,\n\t\t\tnewX = Math.round(this.x),\n\t\t\tnewY = Math.round(this.y),\n\t\t\tdistanceX = Math.abs(newX - this.startX),\n\t\t\tdistanceY = Math.abs(newY - this.startY),\n\t\t\ttime = 0,\n\t\t\teasing = '';\n\n\t\tthis.isInTransition = 0;\n\t\tthis.initiated = 0;\n\t\tthis.endTime = utils.getTime();\n\n\t\t// reset if we are outside of the boundaries\n\t\tif ( this.resetPosition(this.options.bounceTime) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.scrollTo(newX, newY);\t// ensures that the last position is rounded\n\n\t\t// we scrolled less than 10 pixels\n\t\tif ( !this.moved ) {\n\t\t\tif ( this.options.tap ) {\n\t\t\t\tutils.tap(e, this.options.tap);\n\t\t\t}\n\n\t\t\tif ( this.options.click ) {\n\t\t\t\tutils.click(e);\n\t\t\t}\n\n\t\t\tthis._execEvent('scrollCancel');\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100 ) {\n\t\t\tthis._execEvent('flick');\n\t\t\treturn;\n\t\t}\n\n\t\t// start momentum animation if needed\n\t\tif ( this.options.momentum && duration < 300 ) {\n\t\t\tmomentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 };\n\t\t\tmomentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 };\n\t\t\tnewX = momentumX.destination;\n\t\t\tnewY = momentumY.destination;\n\t\t\ttime = Math.max(momentumX.duration, momentumY.duration);\n\t\t\tthis.isInTransition = 1;\n\t\t}\n\n\n\t\tif ( this.options.snap ) {\n\t\t\tvar snap = this._nearestSnap(newX, newY);\n\t\t\tthis.currentPage = snap;\n\t\t\ttime = this.options.snapSpeed || Math.max(\n\t\t\t\t\tMath.max(\n\t\t\t\t\t\tMath.min(Math.abs(newX - snap.x), 1000),\n\t\t\t\t\t\tMath.min(Math.abs(newY - snap.y), 1000)\n\t\t\t\t\t), 300);\n\t\t\tnewX = snap.x;\n\t\t\tnewY = snap.y;\n\n\t\t\tthis.directionX = 0;\n\t\t\tthis.directionY = 0;\n\t\t\teasing = this.options.bounceEasing;\n\t\t}\n\n// INSERT POINT: _end\n\n\t\tif ( newX != this.x || newY != this.y ) {\n\t\t\t// change easing function when scroller goes out of the boundaries\n\t\t\tif ( newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY ) {\n\t\t\t\teasing = utils.ease.quadratic;\n\t\t\t}\n\n\t\t\tthis.scrollTo(newX, newY, time, easing);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._execEvent('scrollEnd');\n\t},\n\n\t_resize: function () {\n\t\tvar that = this;\n\n\t\tclearTimeout(this.resizeTimeout);\n\n\t\tthis.resizeTimeout = setTimeout(function () {\n\t\t\tthat.refresh();\n\t\t}, this.options.resizePolling);\n\t},\n\n\tresetPosition: function (time) {\n\t\tvar x = this.x,\n\t\t\ty = this.y;\n\n\t\ttime = time || 0;\n\n\t\tif ( !this.hasHorizontalScroll || this.x > 0 ) {\n\t\t\tx = 0;\n\t\t} else if ( this.x < this.maxScrollX ) {\n\t\t\tx = this.maxScrollX;\n\t\t}\n\n\t\tif ( !this.hasVerticalScroll || this.y > 0 ) {\n\t\t\ty = 0;\n\t\t} else if ( this.y < this.maxScrollY ) {\n\t\t\ty = this.maxScrollY;\n\t\t}\n\n\t\tif ( x == this.x && y == this.y ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.scrollTo(x, y, time, this.options.bounceEasing);\n\n\t\treturn true;\n\t},\n\n\tdisable: function () {\n\t\tthis.enabled = false;\n\t},\n\n\tenable: function () {\n\t\tthis.enabled = true;\n\t},\n\n\trefresh: function () {\n\t\tvar rf = this.wrapper.offsetHeight;\t\t// Force reflow\n\n\t\tthis.wrapperWidth\t= this.wrapper.clientWidth;\n\t\tthis.wrapperHeight\t= this.wrapper.clientHeight;\n\n/* REPLACE START: refresh */\n\n\t\tthis.scrollerWidth\t= this.scroller.offsetWidth;\n\t\tthis.scrollerHeight\t= this.scroller.offsetHeight;\n\n\t\tthis.maxScrollX\t\t= this.wrapperWidth - this.scrollerWidth;\n\t\tthis.maxScrollY\t\t= this.wrapperHeight - this.scrollerHeight;\n\n/* REPLACE END: refresh */\n\n\t\tthis.hasHorizontalScroll\t= this.options.scrollX && this.maxScrollX < 0;\n\t\tthis.hasVerticalScroll\t\t= this.options.scrollY && this.maxScrollY < 0;\n\n\t\tif ( !this.hasHorizontalScroll ) {\n\t\t\tthis.maxScrollX = 0;\n\t\t\tthis.scrollerWidth = this.wrapperWidth;\n\t\t}\n\n\t\tif ( !this.hasVerticalScroll ) {\n\t\t\tthis.maxScrollY = 0;\n\t\t\tthis.scrollerHeight = this.wrapperHeight;\n\t\t}\n\n\t\tthis.endTime = 0;\n\t\tthis.directionX = 0;\n\t\tthis.directionY = 0;\n\n\t\tthis.wrapperOffset = utils.offset(this.wrapper);\n\n\t\tthis._execEvent('refresh');\n\n\t\tthis.resetPosition();\n\n// INSERT POINT: _refresh\n\n\t},\n\n\ton: function (type, fn) {\n\t\tif ( !this._events[type] ) {\n\t\t\tthis._events[type] = [];\n\t\t}\n\n\t\tthis._events[type].push(fn);\n\t},\n\n\toff: function (type, fn) {\n\t\tif ( !this._events[type] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar index = this._events[type].indexOf(fn);\n\n\t\tif ( index > -1 ) {\n\t\t\tthis._events[type].splice(index, 1);\n\t\t}\n\t},\n\n\t_execEvent: function (type) {\n\t\tif ( !this._events[type] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar i = 0,\n\t\t\tl = this._events[type].length;\n\n\t\tif ( !l ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tthis._events[type][i].apply(this, [].slice.call(arguments, 1));\n\t\t}\n\t},\n\n\tscrollBy: function (x, y, time, easing) {\n\t\tx = this.x + x;\n\t\ty = this.y + y;\n\t\ttime = time || 0;\n\n\t\tthis.scrollTo(x, y, time, easing);\n\t},\n\n\tscrollTo: function (x, y, time, easing) {\n\t\teasing = easing || utils.ease.circular;\n\n\t\tthis.isInTransition = this.options.useTransition && time > 0;\n\t\tvar transitionType = this.options.useTransition && easing.style;\n\t\tif ( !time || transitionType ) {\n\t\t\t\tif(transitionType) {\n\t\t\t\t\tthis._transitionTimingFunction(easing.style);\n\t\t\t\t\tthis._transitionTime(time);\n\t\t\t\t}\n\t\t\tthis._translate(x, y);\n\t\t} else {\n\t\t\tthis._animate(x, y, time, easing.fn);\n\t\t}\n\t},\n\n\tscrollToElement: function (el, time, offsetX, offsetY, easing) {\n\t\tel = el.nodeType ? el : this.scroller.querySelector(el);\n\n\t\tif ( !el ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar pos = utils.offset(el);\n\n\t\tpos.left -= this.wrapperOffset.left;\n\t\tpos.top -= this.wrapperOffset.top;\n\n\t\t// if offsetX/Y are true we center the element to the screen\n\t\tif ( offsetX === true ) {\n\t\t\toffsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2);\n\t\t}\n\t\tif ( offsetY === true ) {\n\t\t\toffsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2);\n\t\t}\n\n\t\tpos.left -= offsetX || 0;\n\t\tpos.top -= offsetY || 0;\n\n\t\tpos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left;\n\t\tpos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top;\n\n\t\ttime = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x-pos.left), Math.abs(this.y-pos.top)) : time;\n\n\t\tthis.scrollTo(pos.left, pos.top, time, easing);\n\t},\n\n\t_transitionTime: function (time) {\n\t\ttime = time || 0;\n\n\t\tvar durationProp = utils.style.transitionDuration;\n\t\tthis.scrollerStyle[durationProp] = time + 'ms';\n\n\t\tif ( !time && utils.isBadAndroid ) {\n\t\t\tthis.scrollerStyle[durationProp] = '0.0001ms';\n\t\t\t// remove 0.0001ms\n\t\t\tvar self = this;\n\t\t\trAF(function() {\n\t\t\t\tif(self.scrollerStyle[durationProp] === '0.0001ms') {\n\t\t\t\t\tself.scrollerStyle[durationProp] = '0s';\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\n\t\tif ( this.indicators ) {\n\t\t\tfor ( var i = this.indicators.length; i--; ) {\n\t\t\t\tthis.indicators[i].transitionTime(time);\n\t\t\t}\n\t\t}\n\n\n// INSERT POINT: _transitionTime\n\n\t},\n\n\t_transitionTimingFunction: function (easing) {\n\t\tthis.scrollerStyle[utils.style.transitionTimingFunction] = easing;\n\n\n\t\tif ( this.indicators ) {\n\t\t\tfor ( var i = this.indicators.length; i--; ) {\n\t\t\t\tthis.indicators[i].transitionTimingFunction(easing);\n\t\t\t}\n\t\t}\n\n\n// INSERT POINT: _transitionTimingFunction\n\n\t},\n\n\t_translate: function (x, y) {\n\t\tif ( this.options.useTransform ) {\n\n/* REPLACE START: _translate */\n\n\t\t\tthis.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ;\n\n/* REPLACE END: _translate */\n\n\t\t} else {\n\t\t\tx = Math.round(x);\n\t\t\ty = Math.round(y);\n\t\t\tthis.scrollerStyle.left = x + 'px';\n\t\t\tthis.scrollerStyle.top = y + 'px';\n\t\t}\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\n\tif ( this.indicators ) {\n\t\tfor ( var i = this.indicators.length; i--; ) {\n\t\t\tthis.indicators[i].updatePosition();\n\t\t}\n\t}\n\n\n// INSERT POINT: _translate\n\n\t},\n\n\t_initEvents: function (remove) {\n\t\tvar eventType = remove ? utils.removeEvent : utils.addEvent,\n\t\t\ttarget = this.options.bindToWrapper ? this.wrapper : window;\n\n\t\teventType(window, 'orientationchange', this);\n\t\teventType(window, 'resize', this);\n\n\t\tif ( this.options.click ) {\n\t\t\teventType(this.wrapper, 'click', this, true);\n\t\t}\n\n\t\tif ( !this.options.disableMouse ) {\n\t\t\teventType(this.wrapper, 'mousedown', this);\n\t\t\teventType(target, 'mousemove', this);\n\t\t\teventType(target, 'mousecancel', this);\n\t\t\teventType(target, 'mouseup', this);\n\t\t}\n\n\t\tif ( utils.hasPointer && !this.options.disablePointer ) {\n\t\t\teventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this);\n\t\t\teventType(target, utils.prefixPointerEvent('pointermove'), this);\n\t\t\teventType(target, utils.prefixPointerEvent('pointercancel'), this);\n\t\t\teventType(target, utils.prefixPointerEvent('pointerup'), this);\n\t\t}\n\n\t\tif ( utils.hasTouch && !this.options.disableTouch ) {\n\t\t\teventType(this.wrapper, 'touchstart', this);\n\t\t\teventType(target, 'touchmove', this);\n\t\t\teventType(target, 'touchcancel', this);\n\t\t\teventType(target, 'touchend', this);\n\t\t}\n\n\t\teventType(this.scroller, 'transitionend', this);\n\t\teventType(this.scroller, 'webkitTransitionEnd', this);\n\t\teventType(this.scroller, 'oTransitionEnd', this);\n\t\teventType(this.scroller, 'MSTransitionEnd', this);\n\t},\n\n\tgetComputedPosition: function () {\n\t\tvar matrix = window.getComputedStyle(this.scroller, null),\n\t\t\tx, y;\n\n\t\tif ( this.options.useTransform ) {\n\t\t\tmatrix = matrix[utils.style.transform].split(')')[0].split(', ');\n\t\t\tx = +(matrix[12] || matrix[4]);\n\t\t\ty = +(matrix[13] || matrix[5]);\n\t\t} else {\n\t\t\tx = +matrix.left.replace(/[^-\\d.]/g, '');\n\t\t\ty = +matrix.top.replace(/[^-\\d.]/g, '');\n\t\t}\n\n\t\treturn { x: x, y: y };\n\t},\n\t_initIndicators: function () {\n\t\tvar interactive = this.options.interactiveScrollbars,\n\t\t\tcustomStyle = typeof this.options.scrollbars != 'string',\n\t\t\tindicators = [],\n\t\t\tindicator;\n\n\t\tvar that = this;\n\n\t\tthis.indicators = [];\n\n\t\tif ( this.options.scrollbars ) {\n\t\t\t// Vertical scrollbar\n\t\t\tif ( this.options.scrollY ) {\n\t\t\t\tindicator = {\n\t\t\t\t\tel: createDefaultScrollbar('v', interactive, this.options.scrollbars),\n\t\t\t\t\tinteractive: interactive,\n\t\t\t\t\tdefaultScrollbars: true,\n\t\t\t\t\tcustomStyle: customStyle,\n\t\t\t\t\tresize: this.options.resizeScrollbars,\n\t\t\t\t\tshrink: this.options.shrinkScrollbars,\n\t\t\t\t\tfade: this.options.fadeScrollbars,\n\t\t\t\t\tlistenX: false\n\t\t\t\t};\n\n\t\t\t\tthis.wrapper.appendChild(indicator.el);\n\t\t\t\tindicators.push(indicator);\n\t\t\t}\n\n\t\t\t// Horizontal scrollbar\n\t\t\tif ( this.options.scrollX ) {\n\t\t\t\tindicator = {\n\t\t\t\t\tel: createDefaultScrollbar('h', interactive, this.options.scrollbars),\n\t\t\t\t\tinteractive: interactive,\n\t\t\t\t\tdefaultScrollbars: true,\n\t\t\t\t\tcustomStyle: customStyle,\n\t\t\t\t\tresize: this.options.resizeScrollbars,\n\t\t\t\t\tshrink: this.options.shrinkScrollbars,\n\t\t\t\t\tfade: this.options.fadeScrollbars,\n\t\t\t\t\tlistenY: false\n\t\t\t\t};\n\n\t\t\t\tthis.wrapper.appendChild(indicator.el);\n\t\t\t\tindicators.push(indicator);\n\t\t\t}\n\t\t}\n\n\t\tif ( this.options.indicators ) {\n\t\t\t// TODO: check concat compatibility\n\t\t\tindicators = indicators.concat(this.options.indicators);\n\t\t}\n\n\t\tfor ( var i = indicators.length; i--; ) {\n\t\t\tthis.indicators.push( new Indicator(this, indicators[i]) );\n\t\t}\n\n\t\t// TODO: check if we can use array.map (wide compatibility and performance issues)\n\t\tfunction _indicatorsMap (fn) {\n\t\t\tif (that.indicators) {\n\t\t\t\tfor ( var i = that.indicators.length; i--; ) {\n\t\t\t\t\tfn.call(that.indicators[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( this.options.fadeScrollbars ) {\n\t\t\tthis.on('scrollEnd', function () {\n\t\t\t\t_indicatorsMap(function () {\n\t\t\t\t\tthis.fade();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis.on('scrollCancel', function () {\n\t\t\t\t_indicatorsMap(function () {\n\t\t\t\t\tthis.fade();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis.on('scrollStart', function () {\n\t\t\t\t_indicatorsMap(function () {\n\t\t\t\t\tthis.fade(1);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis.on('beforeScrollStart', function () {\n\t\t\t\t_indicatorsMap(function () {\n\t\t\t\t\tthis.fade(1, true);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\n\t\tthis.on('refresh', function () {\n\t\t\t_indicatorsMap(function () {\n\t\t\t\tthis.refresh();\n\t\t\t});\n\t\t});\n\n\t\tthis.on('destroy', function () {\n\t\t\t_indicatorsMap(function () {\n\t\t\t\tthis.destroy();\n\t\t\t});\n\n\t\t\tdelete this.indicators;\n\t\t});\n\t},\n\n\t_initWheel: function () {\n\t\tutils.addEvent(this.wrapper, 'wheel', this);\n\t\tutils.addEvent(this.wrapper, 'mousewheel', this);\n\t\tutils.addEvent(this.wrapper, 'DOMMouseScroll', this);\n\n\t\tthis.on('destroy', function () {\n\t\t\tclearTimeout(this.wheelTimeout);\n\t\t\tthis.wheelTimeout = null;\n\t\t\tutils.removeEvent(this.wrapper, 'wheel', this);\n\t\t\tutils.removeEvent(this.wrapper, 'mousewheel', this);\n\t\t\tutils.removeEvent(this.wrapper, 'DOMMouseScroll', this);\n\t\t});\n\t},\n\n\t_wheel: function (e) {\n\t\tif ( !this.enabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tvar wheelDeltaX, wheelDeltaY,\n\t\t\tnewX, newY,\n\t\t\tthat = this;\n\n\t\tif ( this.wheelTimeout === undefined ) {\n\t\t\tthat._execEvent('scrollStart');\n\t\t}\n\n\t\t// Execute the scrollEnd event after 400ms the wheel stopped scrolling\n\t\tclearTimeout(this.wheelTimeout);\n\t\tthis.wheelTimeout = setTimeout(function () {\n\t\t\tif(!that.options.snap) {\n\t\t\t\tthat._execEvent('scrollEnd');\n\t\t\t}\n\t\t\tthat.wheelTimeout = undefined;\n\t\t}, 400);\n\n\t\tif ( 'deltaX' in e ) {\n\t\t\tif (e.deltaMode === 1) {\n\t\t\t\twheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed;\n\t\t\t\twheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed;\n\t\t\t} else {\n\t\t\t\twheelDeltaX = -e.deltaX;\n\t\t\t\twheelDeltaY = -e.deltaY;\n\t\t\t}\n\t\t} else if ( 'wheelDeltaX' in e ) {\n\t\t\twheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed;\n\t\t\twheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed;\n\t\t} else if ( 'wheelDelta' in e ) {\n\t\t\twheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed;\n\t\t} else if ( 'detail' in e ) {\n\t\t\twheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\twheelDeltaX *= this.options.invertWheelDirection;\n\t\twheelDeltaY *= this.options.invertWheelDirection;\n\n\t\tif ( !this.hasVerticalScroll ) {\n\t\t\twheelDeltaX = wheelDeltaY;\n\t\t\twheelDeltaY = 0;\n\t\t}\n\n\t\tif ( this.options.snap ) {\n\t\t\tnewX = this.currentPage.pageX;\n\t\t\tnewY = this.currentPage.pageY;\n\n\t\t\tif ( wheelDeltaX > 0 ) {\n\t\t\t\tnewX--;\n\t\t\t} else if ( wheelDeltaX < 0 ) {\n\t\t\t\tnewX++;\n\t\t\t}\n\n\t\t\tif ( wheelDeltaY > 0 ) {\n\t\t\t\tnewY--;\n\t\t\t} else if ( wheelDeltaY < 0 ) {\n\t\t\t\tnewY++;\n\t\t\t}\n\n\t\t\tthis.goToPage(newX, newY);\n\n\t\t\treturn;\n\t\t}\n\n\t\tnewX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0);\n\t\tnewY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0);\n\n\t\tthis.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0;\n\t\tthis.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0;\n\n\t\tif ( newX > 0 ) {\n\t\t\tnewX = 0;\n\t\t} else if ( newX < this.maxScrollX ) {\n\t\t\tnewX = this.maxScrollX;\n\t\t}\n\n\t\tif ( newY > 0 ) {\n\t\t\tnewY = 0;\n\t\t} else if ( newY < this.maxScrollY ) {\n\t\t\tnewY = this.maxScrollY;\n\t\t}\n\n\t\tthis.scrollTo(newX, newY, 0);\n\n// INSERT POINT: _wheel\n\t},\n\n\t_initSnap: function () {\n\t\tthis.currentPage = {};\n\n\t\tif ( typeof this.options.snap == 'string' ) {\n\t\t\tthis.options.snap = this.scroller.querySelectorAll(this.options.snap);\n\t\t}\n\n\t\tthis.on('refresh', function () {\n\t\t\tvar i = 0, l,\n\t\t\t\tm = 0, n,\n\t\t\t\tcx, cy,\n\t\t\t\tx = 0, y,\n\t\t\t\tstepX = this.options.snapStepX || this.wrapperWidth,\n\t\t\t\tstepY = this.options.snapStepY || this.wrapperHeight,\n\t\t\t\tel;\n\n\t\t\tthis.pages = [];\n\n\t\t\tif ( !this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.options.snap === true ) {\n\t\t\t\tcx = Math.round( stepX / 2 );\n\t\t\t\tcy = Math.round( stepY / 2 );\n\n\t\t\t\twhile ( x > -this.scrollerWidth ) {\n\t\t\t\t\tthis.pages[i] = [];\n\t\t\t\t\tl = 0;\n\t\t\t\t\ty = 0;\n\n\t\t\t\t\twhile ( y > -this.scrollerHeight ) {\n\t\t\t\t\t\tthis.pages[i][l] = {\n\t\t\t\t\t\t\tx: Math.max(x, this.maxScrollX),\n\t\t\t\t\t\t\ty: Math.max(y, this.maxScrollY),\n\t\t\t\t\t\t\twidth: stepX,\n\t\t\t\t\t\t\theight: stepY,\n\t\t\t\t\t\t\tcx: x - cx,\n\t\t\t\t\t\t\tcy: y - cy\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\ty -= stepY;\n\t\t\t\t\t\tl++;\n\t\t\t\t\t}\n\n\t\t\t\t\tx -= stepX;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tel = this.options.snap;\n\t\t\t\tl = el.length;\n\t\t\t\tn = -1;\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tif ( i === 0 || el[i].offsetLeft <= el[i-1].offsetLeft ) {\n\t\t\t\t\t\tm = 0;\n\t\t\t\t\t\tn++;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !this.pages[m] ) {\n\t\t\t\t\t\tthis.pages[m] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tx = Math.max(-el[i].offsetLeft, this.maxScrollX);\n\t\t\t\t\ty = Math.max(-el[i].offsetTop, this.maxScrollY);\n\t\t\t\t\tcx = x - Math.round(el[i].offsetWidth / 2);\n\t\t\t\t\tcy = y - Math.round(el[i].offsetHeight / 2);\n\n\t\t\t\t\tthis.pages[m][n] = {\n\t\t\t\t\t\tx: x,\n\t\t\t\t\t\ty: y,\n\t\t\t\t\t\twidth: el[i].offsetWidth,\n\t\t\t\t\t\theight: el[i].offsetHeight,\n\t\t\t\t\t\tcx: cx,\n\t\t\t\t\t\tcy: cy\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( x > this.maxScrollX ) {\n\t\t\t\t\t\tm++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0);\n\n\t\t\t// Update snap threshold if needed\n\t\t\tif ( this.options.snapThreshold % 1 === 0 ) {\n\t\t\t\tthis.snapThresholdX = this.options.snapThreshold;\n\t\t\t\tthis.snapThresholdY = this.options.snapThreshold;\n\t\t\t} else {\n\t\t\t\tthis.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold);\n\t\t\t\tthis.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold);\n\t\t\t}\n\t\t});\n\n\t\tthis.on('flick', function () {\n\t\t\tvar time = this.options.snapSpeed || Math.max(\n\t\t\t\t\tMath.max(\n\t\t\t\t\t\tMath.min(Math.abs(this.x - this.startX), 1000),\n\t\t\t\t\t\tMath.min(Math.abs(this.y - this.startY), 1000)\n\t\t\t\t\t), 300);\n\n\t\t\tthis.goToPage(\n\t\t\t\tthis.currentPage.pageX + this.directionX,\n\t\t\t\tthis.currentPage.pageY + this.directionY,\n\t\t\t\ttime\n\t\t\t);\n\t\t});\n\t},\n\n\t_nearestSnap: function (x, y) {\n\t\tif ( !this.pages.length ) {\n\t\t\treturn { x: 0, y: 0, pageX: 0, pageY: 0 };\n\t\t}\n\n\t\tvar i = 0,\n\t\t\tl = this.pages.length,\n\t\t\tm = 0;\n\n\t\t// Check if we exceeded the snap threshold\n\t\tif ( Math.abs(x - this.absStartX) < this.snapThresholdX &&\n\t\t\tMath.abs(y - this.absStartY) < this.snapThresholdY ) {\n\t\t\treturn this.currentPage;\n\t\t}\n\n\t\tif ( x > 0 ) {\n\t\t\tx = 0;\n\t\t} else if ( x < this.maxScrollX ) {\n\t\t\tx = this.maxScrollX;\n\t\t}\n\n\t\tif ( y > 0 ) {\n\t\t\ty = 0;\n\t\t} else if ( y < this.maxScrollY ) {\n\t\t\ty = this.maxScrollY;\n\t\t}\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( x >= this.pages[i][0].cx ) {\n\t\t\t\tx = this.pages[i][0].x;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tl = this.pages[i].length;\n\n\t\tfor ( ; m < l; m++ ) {\n\t\t\tif ( y >= this.pages[0][m].cy ) {\n\t\t\t\ty = this.pages[0][m].y;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif ( i == this.currentPage.pageX ) {\n\t\t\ti += this.directionX;\n\n\t\t\tif ( i < 0 ) {\n\t\t\t\ti = 0;\n\t\t\t} else if ( i >= this.pages.length ) {\n\t\t\t\ti = this.pages.length - 1;\n\t\t\t}\n\n\t\t\tx = this.pages[i][0].x;\n\t\t}\n\n\t\tif ( m == this.currentPage.pageY ) {\n\t\t\tm += this.directionY;\n\n\t\t\tif ( m < 0 ) {\n\t\t\t\tm = 0;\n\t\t\t} else if ( m >= this.pages[0].length ) {\n\t\t\t\tm = this.pages[0].length - 1;\n\t\t\t}\n\n\t\t\ty = this.pages[0][m].y;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t\tpageX: i,\n\t\t\tpageY: m\n\t\t};\n\t},\n\n\tgoToPage: function (x, y, time, easing) {\n\t\teasing = easing || this.options.bounceEasing;\n\n\t\tif ( x >= this.pages.length ) {\n\t\t\tx = this.pages.length - 1;\n\t\t} else if ( x < 0 ) {\n\t\t\tx = 0;\n\t\t}\n\n\t\tif ( y >= this.pages[x].length ) {\n\t\t\ty = this.pages[x].length - 1;\n\t\t} else if ( y < 0 ) {\n\t\t\ty = 0;\n\t\t}\n\n\t\tvar posX = this.pages[x][y].x,\n\t\t\tposY = this.pages[x][y].y;\n\n\t\ttime = time === undefined ? this.options.snapSpeed || Math.max(\n\t\t\tMath.max(\n\t\t\t\tMath.min(Math.abs(posX - this.x), 1000),\n\t\t\t\tMath.min(Math.abs(posY - this.y), 1000)\n\t\t\t), 300) : time;\n\n\t\tthis.currentPage = {\n\t\t\tx: posX,\n\t\t\ty: posY,\n\t\t\tpageX: x,\n\t\t\tpageY: y\n\t\t};\n\n\t\tthis.scrollTo(posX, posY, time, easing);\n\t},\n\n\tnext: function (time, easing) {\n\t\tvar x = this.currentPage.pageX,\n\t\t\ty = this.currentPage.pageY;\n\n\t\tx++;\n\n\t\tif ( x >= this.pages.length && this.hasVerticalScroll ) {\n\t\t\tx = 0;\n\t\t\ty++;\n\t\t}\n\n\t\tthis.goToPage(x, y, time, easing);\n\t},\n\n\tprev: function (time, easing) {\n\t\tvar x = this.currentPage.pageX,\n\t\t\ty = this.currentPage.pageY;\n\n\t\tx--;\n\n\t\tif ( x < 0 && this.hasVerticalScroll ) {\n\t\t\tx = 0;\n\t\t\ty--;\n\t\t}\n\n\t\tthis.goToPage(x, y, time, easing);\n\t},\n\n\t_initKeys: function (e) {\n\t\t// default key bindings\n\t\tvar keys = {\n\t\t\tpageUp: 33,\n\t\t\tpageDown: 34,\n\t\t\tend: 35,\n\t\t\thome: 36,\n\t\t\tleft: 37,\n\t\t\tup: 38,\n\t\t\tright: 39,\n\t\t\tdown: 40\n\t\t};\n\t\tvar i;\n\n\t\t// if you give me characters I give you keycode\n\t\tif ( typeof this.options.keyBindings == 'object' ) {\n\t\t\tfor ( i in this.options.keyBindings ) {\n\t\t\t\tif ( typeof this.options.keyBindings[i] == 'string' ) {\n\t\t\t\t\tthis.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthis.options.keyBindings = {};\n\t\t}\n\n\t\tfor ( i in keys ) {\n\t\t\tthis.options.keyBindings[i] = this.options.keyBindings[i] || keys[i];\n\t\t}\n\n\t\tutils.addEvent(window, 'keydown', this);\n\n\t\tthis.on('destroy', function () {\n\t\t\tutils.removeEvent(window, 'keydown', this);\n\t\t});\n\t},\n\n\t_key: function (e) {\n\t\tif ( !this.enabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar snap = this.options.snap,\t// we are using this alot, better to cache it\n\t\t\tnewX = snap ? this.currentPage.pageX : this.x,\n\t\t\tnewY = snap ? this.currentPage.pageY : this.y,\n\t\t\tnow = utils.getTime(),\n\t\t\tprevTime = this.keyTime || 0,\n\t\t\tacceleration = 0.250,\n\t\t\tpos;\n\n\t\tif ( this.options.useTransition && this.isInTransition ) {\n\t\t\tpos = this.getComputedPosition();\n\n\t\t\tthis._translate(Math.round(pos.x), Math.round(pos.y));\n\t\t\tthis.isInTransition = false;\n\t\t}\n\n\t\tthis.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0;\n\n\t\tswitch ( e.keyCode ) {\n\t\t\tcase this.options.keyBindings.pageUp:\n\t\t\t\tif ( this.hasHorizontalScroll && !this.hasVerticalScroll ) {\n\t\t\t\t\tnewX += snap ? 1 : this.wrapperWidth;\n\t\t\t\t} else {\n\t\t\t\t\tnewY += snap ? 1 : this.wrapperHeight;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase this.options.keyBindings.pageDown:\n\t\t\t\tif ( this.hasHorizontalScroll && !this.hasVerticalScroll ) {\n\t\t\t\t\tnewX -= snap ? 1 : this.wrapperWidth;\n\t\t\t\t} else {\n\t\t\t\t\tnewY -= snap ? 1 : this.wrapperHeight;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase this.options.keyBindings.end:\n\t\t\t\tnewX = snap ? this.pages.length-1 : this.maxScrollX;\n\t\t\t\tnewY = snap ? this.pages[0].length-1 : this.maxScrollY;\n\t\t\t\tbreak;\n\t\t\tcase this.options.keyBindings.home:\n\t\t\t\tnewX = 0;\n\t\t\t\tnewY = 0;\n\t\t\t\tbreak;\n\t\t\tcase this.options.keyBindings.left:\n\t\t\t\tnewX += snap ? -1 : 5 + this.keyAcceleration>>0;\n\t\t\t\tbreak;\n\t\t\tcase this.options.keyBindings.up:\n\t\t\t\tnewY += snap ? 1 : 5 + this.keyAcceleration>>0;\n\t\t\t\tbreak;\n\t\t\tcase this.options.keyBindings.right:\n\t\t\t\tnewX -= snap ? -1 : 5 + this.keyAcceleration>>0;\n\t\t\t\tbreak;\n\t\t\tcase this.options.keyBindings.down:\n\t\t\t\tnewY -= snap ? 1 : 5 + this.keyAcceleration>>0;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\tif ( snap ) {\n\t\t\tthis.goToPage(newX, newY);\n\t\t\treturn;\n\t\t}\n\n\t\tif ( newX > 0 ) {\n\t\t\tnewX = 0;\n\t\t\tthis.keyAcceleration = 0;\n\t\t} else if ( newX < this.maxScrollX ) {\n\t\t\tnewX = this.maxScrollX;\n\t\t\tthis.keyAcceleration = 0;\n\t\t}\n\n\t\tif ( newY > 0 ) {\n\t\t\tnewY = 0;\n\t\t\tthis.keyAcceleration = 0;\n\t\t} else if ( newY < this.maxScrollY ) {\n\t\t\tnewY = this.maxScrollY;\n\t\t\tthis.keyAcceleration = 0;\n\t\t}\n\n\t\tthis.scrollTo(newX, newY, 0);\n\n\t\tthis.keyTime = now;\n\t},\n\n\t_animate: function (destX, destY, duration, easingFn) {\n\t\tvar that = this,\n\t\t\tstartX = this.x,\n\t\t\tstartY = this.y,\n\t\t\tstartTime = utils.getTime(),\n\t\t\tdestTime = startTime + duration;\n\n\t\tfunction step () {\n\t\t\tvar now = utils.getTime(),\n\t\t\t\tnewX, newY,\n\t\t\t\teasing;\n\n\t\t\tif ( now >= destTime ) {\n\t\t\t\tthat.isAnimating = false;\n\t\t\t\tthat._translate(destX, destY);\n\n\t\t\t\tif ( !that.resetPosition(that.options.bounceTime) ) {\n\t\t\t\t\tthat._execEvent('scrollEnd');\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tnow = ( now - startTime ) / duration;\n\t\t\teasing = easingFn(now);\n\t\t\tnewX = ( destX - startX ) * easing + startX;\n\t\t\tnewY = ( destY - startY ) * easing + startY;\n\t\t\tthat._translate(newX, newY);\n\n\t\t\tif ( that.isAnimating ) {\n\t\t\t\trAF(step);\n\t\t\t}\n\t\t}\n\n\t\tthis.isAnimating = true;\n\t\tstep();\n\t},\n\thandleEvent: function (e) {\n\t\tswitch ( e.type ) {\n\t\t\tcase 'touchstart':\n\t\t\tcase 'pointerdown':\n\t\t\tcase 'MSPointerDown':\n\t\t\tcase 'mousedown':\n\t\t\t\tthis._start(e);\n\t\t\t\tbreak;\n\t\t\tcase 'touchmove':\n\t\t\tcase 'pointermove':\n\t\t\tcase 'MSPointerMove':\n\t\t\tcase 'mousemove':\n\t\t\t\tthis._move(e);\n\t\t\t\tbreak;\n\t\t\tcase 'touchend':\n\t\t\tcase 'pointerup':\n\t\t\tcase 'MSPointerUp':\n\t\t\tcase 'mouseup':\n\t\t\tcase 'touchcancel':\n\t\t\tcase 'pointercancel':\n\t\t\tcase 'MSPointerCancel':\n\t\t\tcase 'mousecancel':\n\t\t\t\tthis._end(e);\n\t\t\t\tbreak;\n\t\t\tcase 'orientationchange':\n\t\t\tcase 'resize':\n\t\t\t\tthis._resize();\n\t\t\t\tbreak;\n\t\t\tcase 'transitionend':\n\t\t\tcase 'webkitTransitionEnd':\n\t\t\tcase 'oTransitionEnd':\n\t\t\tcase 'MSTransitionEnd':\n\t\t\t\tthis._transitionEnd(e);\n\t\t\t\tbreak;\n\t\t\tcase 'wheel':\n\t\t\tcase 'DOMMouseScroll':\n\t\t\tcase 'mousewheel':\n\t\t\t\tthis._wheel(e);\n\t\t\t\tbreak;\n\t\t\tcase 'keydown':\n\t\t\t\tthis._key(e);\n\t\t\t\tbreak;\n\t\t\tcase 'click':\n\t\t\t\tif ( this.enabled && !e._constructed ) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n};\nfunction createDefaultScrollbar (direction, interactive, type) {\n\tvar scrollbar = document.createElement('div'),\n\t\tindicator = document.createElement('div');\n\n\tif ( type === true ) {\n\t\tscrollbar.style.cssText = 'position:absolute;z-index:9999';\n\t\tindicator.style.cssText = '-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px';\n\t}\n\n\tindicator.className = 'iScrollIndicator';\n\n\tif ( direction == 'h' ) {\n\t\tif ( type === true ) {\n\t\t\tscrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0';\n\t\t\tindicator.style.height = '100%';\n\t\t}\n\t\tscrollbar.className = 'iScrollHorizontalScrollbar';\n\t} else {\n\t\tif ( type === true ) {\n\t\t\tscrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px';\n\t\t\tindicator.style.width = '100%';\n\t\t}\n\t\tscrollbar.className = 'iScrollVerticalScrollbar';\n\t}\n\n\tscrollbar.style.cssText += ';overflow:hidden';\n\n\tif ( !interactive ) {\n\t\tscrollbar.style.pointerEvents = 'none';\n\t}\n\n\tscrollbar.appendChild(indicator);\n\n\treturn scrollbar;\n}\n\nfunction Indicator (scroller, options) {\n\tthis.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el;\n\tthis.wrapperStyle = this.wrapper.style;\n\tthis.indicator = this.wrapper.children[0];\n\tthis.indicatorStyle = this.indicator.style;\n\tthis.scroller = scroller;\n\n\tthis.options = {\n\t\tlistenX: true,\n\t\tlistenY: true,\n\t\tinteractive: false,\n\t\tresize: true,\n\t\tdefaultScrollbars: false,\n\t\tshrink: false,\n\t\tfade: false,\n\t\tspeedRatioX: 0,\n\t\tspeedRatioY: 0\n\t};\n\n\tfor ( var i in options ) {\n\t\tthis.options[i] = options[i];\n\t}\n\n\tthis.sizeRatioX = 1;\n\tthis.sizeRatioY = 1;\n\tthis.maxPosX = 0;\n\tthis.maxPosY = 0;\n\n\tif ( this.options.interactive ) {\n\t\tif ( !this.options.disableTouch ) {\n\t\t\tutils.addEvent(this.indicator, 'touchstart', this);\n\t\t\tutils.addEvent(window, 'touchend', this);\n\t\t}\n\t\tif ( !this.options.disablePointer ) {\n\t\t\tutils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this);\n\t\t\tutils.addEvent(window, utils.prefixPointerEvent('pointerup'), this);\n\t\t}\n\t\tif ( !this.options.disableMouse ) {\n\t\t\tutils.addEvent(this.indicator, 'mousedown', this);\n\t\t\tutils.addEvent(window, 'mouseup', this);\n\t\t}\n\t}\n\n\tif ( this.options.fade ) {\n\t\tthis.wrapperStyle[utils.style.transform] = this.scroller.translateZ;\n\t\tvar durationProp = utils.style.transitionDuration;\n\t\tthis.wrapperStyle[durationProp] = utils.isBadAndroid ? '0.0001ms' : '0ms';\n\t\t// remove 0.0001ms\n\t\tvar self = this;\n\t\tif(utils.isBadAndroid) {\n\t\t\trAF(function() {\n\t\t\t\tif(self.wrapperStyle[durationProp] === '0.0001ms') {\n\t\t\t\t\tself.wrapperStyle[durationProp] = '0s';\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tthis.wrapperStyle.opacity = '0';\n\t}\n}\n\nIndicator.prototype = {\n\thandleEvent: function (e) {\n\t\tswitch ( e.type ) {\n\t\t\tcase 'touchstart':\n\t\t\tcase 'pointerdown':\n\t\t\tcase 'MSPointerDown':\n\t\t\tcase 'mousedown':\n\t\t\t\tthis._start(e);\n\t\t\t\tbreak;\n\t\t\tcase 'touchmove':\n\t\t\tcase 'pointermove':\n\t\t\tcase 'MSPointerMove':\n\t\t\tcase 'mousemove':\n\t\t\t\tthis._move(e);\n\t\t\t\tbreak;\n\t\t\tcase 'touchend':\n\t\t\tcase 'pointerup':\n\t\t\tcase 'MSPointerUp':\n\t\t\tcase 'mouseup':\n\t\t\tcase 'touchcancel':\n\t\t\tcase 'pointercancel':\n\t\t\tcase 'MSPointerCancel':\n\t\t\tcase 'mousecancel':\n\t\t\t\tthis._end(e);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\tdestroy: function () {\n\t\tif ( this.options.fadeScrollbars ) {\n\t\t\tclearTimeout(this.fadeTimeout);\n\t\t\tthis.fadeTimeout = null;\n\t\t}\n\t\tif ( this.options.interactive ) {\n\t\t\tutils.removeEvent(this.indicator, 'touchstart', this);\n\t\t\tutils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this);\n\t\t\tutils.removeEvent(this.indicator, 'mousedown', this);\n\n\t\t\tutils.removeEvent(window, 'touchmove', this);\n\t\t\tutils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this);\n\t\t\tutils.removeEvent(window, 'mousemove', this);\n\n\t\t\tutils.removeEvent(window, 'touchend', this);\n\t\t\tutils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this);\n\t\t\tutils.removeEvent(window, 'mouseup', this);\n\t\t}\n\n\t\tif ( this.options.defaultScrollbars ) {\n\t\t\tthis.wrapper.parentNode.removeChild(this.wrapper);\n\t\t}\n\t},\n\n\t_start: function (e) {\n\t\tvar point = e.touches ? e.touches[0] : e;\n\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tthis.transitionTime();\n\n\t\tthis.initiated = true;\n\t\tthis.moved = false;\n\t\tthis.lastPointX\t= point.pageX;\n\t\tthis.lastPointY\t= point.pageY;\n\n\t\tthis.startTime\t= utils.getTime();\n\n\t\tif ( !this.options.disableTouch ) {\n\t\t\tutils.addEvent(window, 'touchmove', this);\n\t\t}\n\t\tif ( !this.options.disablePointer ) {\n\t\t\tutils.addEvent(window, utils.prefixPointerEvent('pointermove'), this);\n\t\t}\n\t\tif ( !this.options.disableMouse ) {\n\t\t\tutils.addEvent(window, 'mousemove', this);\n\t\t}\n\n\t\tthis.scroller._execEvent('beforeScrollStart');\n\t},\n\n\t_move: function (e) {\n\t\tvar point = e.touches ? e.touches[0] : e,\n\t\t\tdeltaX, deltaY,\n\t\t\tnewX, newY,\n\t\t\ttimestamp = utils.getTime();\n\n\t\tif ( !this.moved ) {\n\t\t\tthis.scroller._execEvent('scrollStart');\n\t\t}\n\n\t\tthis.moved = true;\n\n\t\tdeltaX = point.pageX - this.lastPointX;\n\t\tthis.lastPointX = point.pageX;\n\n\t\tdeltaY = point.pageY - this.lastPointY;\n\t\tthis.lastPointY = point.pageY;\n\n\t\tnewX = this.x + deltaX;\n\t\tnewY = this.y + deltaY;\n\n\t\tthis._pos(newX, newY);\n\n// INSERT POINT: indicator._move\n\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t},\n\n\t_end: function (e) {\n\t\tif ( !this.initiated ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.initiated = false;\n\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tutils.removeEvent(window, 'touchmove', this);\n\t\tutils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this);\n\t\tutils.removeEvent(window, 'mousemove', this);\n\n\t\tif ( this.scroller.options.snap ) {\n\t\t\tvar snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y);\n\n\t\t\tvar time = this.options.snapSpeed || Math.max(\n\t\t\t\t\tMath.max(\n\t\t\t\t\t\tMath.min(Math.abs(this.scroller.x - snap.x), 1000),\n\t\t\t\t\t\tMath.min(Math.abs(this.scroller.y - snap.y), 1000)\n\t\t\t\t\t), 300);\n\n\t\t\tif ( this.scroller.x != snap.x || this.scroller.y != snap.y ) {\n\t\t\t\tthis.scroller.directionX = 0;\n\t\t\t\tthis.scroller.directionY = 0;\n\t\t\t\tthis.scroller.currentPage = snap;\n\t\t\t\tthis.scroller.scrollTo(snap.x, snap.y, time, this.scroller.options.bounceEasing);\n\t\t\t}\n\t\t}\n\n\t\tif ( this.moved ) {\n\t\t\tthis.scroller._execEvent('scrollEnd');\n\t\t}\n\t},\n\n\ttransitionTime: function (time) {\n\t\ttime = time || 0;\n\t\tvar durationProp = utils.style.transitionDuration;\n\t\tthis.indicatorStyle[durationProp] = time + 'ms';\n\n\t\tif ( !time && utils.isBadAndroid ) {\n\t\t\tthis.indicatorStyle[durationProp] = '0.0001ms';\n\t\t\t// remove 0.0001ms\n\t\t\tvar self = this;\n\t\t\trAF(function() {\n\t\t\t\tif(self.indicatorStyle[durationProp] === '0.0001ms') {\n\t\t\t\t\tself.indicatorStyle[durationProp] = '0s';\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\n\ttransitionTimingFunction: function (easing) {\n\t\tthis.indicatorStyle[utils.style.transitionTimingFunction] = easing;\n\t},\n\n\trefresh: function () {\n\t\tthis.transitionTime();\n\n\t\tif ( this.options.listenX && !this.options.listenY ) {\n\t\t\tthis.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none';\n\t\t} else if ( this.options.listenY && !this.options.listenX ) {\n\t\t\tthis.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none';\n\t\t} else {\n\t\t\tthis.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none';\n\t\t}\n\n\t\tif ( this.scroller.hasHorizontalScroll && this.scroller.hasVerticalScroll ) {\n\t\t\tutils.addClass(this.wrapper, 'iScrollBothScrollbars');\n\t\t\tutils.removeClass(this.wrapper, 'iScrollLoneScrollbar');\n\n\t\t\tif ( this.options.defaultScrollbars && this.options.customStyle ) {\n\t\t\t\tif ( this.options.listenX ) {\n\t\t\t\t\tthis.wrapper.style.right = '8px';\n\t\t\t\t} else {\n\t\t\t\t\tthis.wrapper.style.bottom = '8px';\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tutils.removeClass(this.wrapper, 'iScrollBothScrollbars');\n\t\t\tutils.addClass(this.wrapper, 'iScrollLoneScrollbar');\n\n\t\t\tif ( this.options.defaultScrollbars && this.options.customStyle ) {\n\t\t\t\tif ( this.options.listenX ) {\n\t\t\t\t\tthis.wrapper.style.right = '2px';\n\t\t\t\t} else {\n\t\t\t\t\tthis.wrapper.style.bottom = '2px';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar r = this.wrapper.offsetHeight;\t// force refresh\n\n\t\tif ( this.options.listenX ) {\n\t\t\tthis.wrapperWidth = this.wrapper.clientWidth;\n\t\t\tif ( this.options.resize ) {\n\t\t\t\tthis.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8);\n\t\t\t\tthis.indicatorStyle.width = this.indicatorWidth + 'px';\n\t\t\t} else {\n\t\t\t\tthis.indicatorWidth = this.indicator.clientWidth;\n\t\t\t}\n\n\t\t\tthis.maxPosX = this.wrapperWidth - this.indicatorWidth;\n\n\t\t\tif ( this.options.shrink == 'clip' ) {\n\t\t\t\tthis.minBoundaryX = -this.indicatorWidth + 8;\n\t\t\t\tthis.maxBoundaryX = this.wrapperWidth - 8;\n\t\t\t} else {\n\t\t\t\tthis.minBoundaryX = 0;\n\t\t\t\tthis.maxBoundaryX = this.maxPosX;\n\t\t\t}\n\n\t\t\tthis.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX));\n\t\t}\n\n\t\tif ( this.options.listenY ) {\n\t\t\tthis.wrapperHeight = this.wrapper.clientHeight;\n\t\t\tif ( this.options.resize ) {\n\t\t\t\tthis.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8);\n\t\t\t\tthis.indicatorStyle.height = this.indicatorHeight + 'px';\n\t\t\t} else {\n\t\t\t\tthis.indicatorHeight = this.indicator.clientHeight;\n\t\t\t}\n\n\t\t\tthis.maxPosY = this.wrapperHeight - this.indicatorHeight;\n\n\t\t\tif ( this.options.shrink == 'clip' ) {\n\t\t\t\tthis.minBoundaryY = -this.indicatorHeight + 8;\n\t\t\t\tthis.maxBoundaryY = this.wrapperHeight - 8;\n\t\t\t} else {\n\t\t\t\tthis.minBoundaryY = 0;\n\t\t\t\tthis.maxBoundaryY = this.maxPosY;\n\t\t\t}\n\n\t\t\tthis.maxPosY = this.wrapperHeight - this.indicatorHeight;\n\t\t\tthis.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY));\n\t\t}\n\n\t\tthis.updatePosition();\n\t},\n\n\tupdatePosition: function () {\n\t\tvar x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0,\n\t\t\ty = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0;\n\n\t\tif ( !this.options.ignoreBoundaries ) {\n\t\t\tif ( x < this.minBoundaryX ) {\n\t\t\t\tif ( this.options.shrink == 'scale' ) {\n\t\t\t\t\tthis.width = Math.max(this.indicatorWidth + x, 8);\n\t\t\t\t\tthis.indicatorStyle.width = this.width + 'px';\n\t\t\t\t}\n\t\t\t\tx = this.minBoundaryX;\n\t\t\t} else if ( x > this.maxBoundaryX ) {\n\t\t\t\tif ( this.options.shrink == 'scale' ) {\n\t\t\t\t\tthis.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8);\n\t\t\t\t\tthis.indicatorStyle.width = this.width + 'px';\n\t\t\t\t\tx = this.maxPosX + this.indicatorWidth - this.width;\n\t\t\t\t} else {\n\t\t\t\t\tx = this.maxBoundaryX;\n\t\t\t\t}\n\t\t\t} else if ( this.options.shrink == 'scale' && this.width != this.indicatorWidth ) {\n\t\t\t\tthis.width = this.indicatorWidth;\n\t\t\t\tthis.indicatorStyle.width = this.width + 'px';\n\t\t\t}\n\n\t\t\tif ( y < this.minBoundaryY ) {\n\t\t\t\tif ( this.options.shrink == 'scale' ) {\n\t\t\t\t\tthis.height = Math.max(this.indicatorHeight + y * 3, 8);\n\t\t\t\t\tthis.indicatorStyle.height = this.height + 'px';\n\t\t\t\t}\n\t\t\t\ty = this.minBoundaryY;\n\t\t\t} else if ( y > this.maxBoundaryY ) {\n\t\t\t\tif ( this.options.shrink == 'scale' ) {\n\t\t\t\t\tthis.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8);\n\t\t\t\t\tthis.indicatorStyle.height = this.height + 'px';\n\t\t\t\t\ty = this.maxPosY + this.indicatorHeight - this.height;\n\t\t\t\t} else {\n\t\t\t\t\ty = this.maxBoundaryY;\n\t\t\t\t}\n\t\t\t} else if ( this.options.shrink == 'scale' && this.height != this.indicatorHeight ) {\n\t\t\t\tthis.height = this.indicatorHeight;\n\t\t\t\tthis.indicatorStyle.height = this.height + 'px';\n\t\t\t}\n\t\t}\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\tif ( this.scroller.options.useTransform ) {\n\t\t\tthis.indicatorStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.scroller.translateZ;\n\t\t} else {\n\t\t\tthis.indicatorStyle.left = x + 'px';\n\t\t\tthis.indicatorStyle.top = y + 'px';\n\t\t}\n\t},\n\n\t_pos: function (x, y) {\n\t\tif ( x < 0 ) {\n\t\t\tx = 0;\n\t\t} else if ( x > this.maxPosX ) {\n\t\t\tx = this.maxPosX;\n\t\t}\n\n\t\tif ( y < 0 ) {\n\t\t\ty = 0;\n\t\t} else if ( y > this.maxPosY ) {\n\t\t\ty = this.maxPosY;\n\t\t}\n\n\t\tx = this.options.listenX ? Math.round(x / this.sizeRatioX) : this.scroller.x;\n\t\ty = this.options.listenY ? Math.round(y / this.sizeRatioY) : this.scroller.y;\n\n\t\tthis.scroller.scrollTo(x, y);\n\t},\n\n\tfade: function (val, hold) {\n\t\tif ( hold && !this.visible ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout(this.fadeTimeout);\n\t\tthis.fadeTimeout = null;\n\n\t\tvar time = val ? 250 : 500,\n\t\t\tdelay = val ? 0 : 300;\n\n\t\tval = val ? '1' : '0';\n\n\t\tthis.wrapperStyle[utils.style.transitionDuration] = time + 'ms';\n\n\t\tthis.fadeTimeout = setTimeout((function (val) {\n\t\t\tthis.wrapperStyle.opacity = val;\n\t\t\tthis.visible = +val;\n\t\t}).bind(this, val), delay);\n\t}\n};\n\nIScroll.utils = utils;\n\nif ( typeof module != 'undefined' && module.exports ) {\n\tmodule.exports = IScroll;\n} else if ( typeof define == 'function' && define.amd ) {\n define( function () { return IScroll; } );\n} else {\n\twindow.IScroll = IScroll;\n}\n\n})(window, document, Math);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/iscroll/build/iscroll.js\n// module id = 680\n// module chunks = 16","import { BreakpointService } from 'device';\n\nimport AbstractController from './../../base/controller/Abstract.controller';\n\nfunction switchBreakpoints ( breakpoint ) {\n\tif ( this.$mobileNavigationItems.filter( '.visible' ).length ) {\n\t\tthis.$mobileNavigationItems.filter( '.visible' ).trigger( 'click', [ true, breakpoint ] );\n\t} else {\n\t\tthis.$mobileNavigationItems.eq( 0 ).trigger( 'click', [ true, breakpoint ] );\n\t}\n}\n\nfunction addHandler () {\n\tBreakpointService.breakpointEvent.subscribe( data => {\n\t\tswitch ( data.alias ) {\n\t\t\tcase 'sm':\n\t\t\tcase 'md':\n\t\t\t\tthis::switchBreakpoints( data.alias );\n\t\t\tbreak;\n\t\t\tdefault :\n\t\t\t\tthis.$mobileNavigationItems.removeClass( 'visible' );\n\t\t\t\tthis.$items.eq( 0 ).css( 'marginLeft', '' );\n\t\t}\n\n\t\tthis.currentBreakpoint = data.alias;\n\t} );\n\n\tthis.$mobileNavigationItems.on( 'click', ( e, forceUpdate = false, breakpoint = false ) => {\n\t\tif ( !breakpoint ) {\n\t\t\tbreakpoint = this.currentBreakpoint;\n\t\t}\n\t\tif ( ( ![ 'sm', 'md' ].includes( breakpoint ) || this.$mobileNavigationItems.eq( index ).hasClass( 'visible' ) ) && forceUpdate === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet\n\t\t\tindex = this.$mobileNavigationItems.index( e.currentTarget ),\n\t\t\tshift = 100; // in percent\n\n\t\tif ( breakpoint === 'md' ) {\n\t\t\tshift = 50;\n\t\t\tindex = Math.min( index, this.$mobileNavigationItems.length - 2 );\n\t\t}\n\t\t\n\t\tthis.$items.eq( 0 ).css( 'marginLeft', ( -1 * index * shift ) + '%' );\n\t\tthis.$mobileNavigationItems.removeClass( 'visible' );\n\t\tthis.$mobileNavigationItems.eq( index ).addClass( 'visible' );\n\t} );\n}\n\nclass PC01Controller extends AbstractController {\n\n\tconstructor () {\n\t\tsuper();\n\t}\n\n\t/**\n\t * Initialises the controller.\n\t * Has to be called after ready event.\n\t *\n\t * @param { jQuery } $root - jQuery wrapped DOM node\n\t * @public\n\t * @return { PC01Controller } instance\n\t */\n\tinit ( $root ) {\n\t\tthis.$scope = $root;\n\t\tthis.$mobileNavigation = this.$scope.find( '.mobile-navigation' );\n\t\t\n\t\tthis.$items = this.$scope.find( '> ol > li' );\n\n\t\tif ( this.$mobileNavigation.length ) {\n\t\t\tthis.currentBreakpoint = false;\n\t\t\tthis.$mobileNavigationItems = this.$mobileNavigation.find( 'li' );\n\t\t\tthis::addHandler();\n\t\t}\n\n\t\treturn this;\n\t}\n\n}\n\nexport default PC01Controller;\n\n\n\n// WEBPACK FOOTER //\n// ./js/components/controller/PC01.controller.js","import { IDENTIFIERS } from './../elements/constants/Identifiers.const';\n\nimport $ from 'jquery';\n\n/**\n * Class wrapping all element features.\n * Is used as a singleton.\n */\nclass ElementLoader {\n\t/**\n\t * Initialises the controller singleton.\n\t * Has to be called after ready event.\n\t * @public\n\t * @return { void }\n\t */\n\tinit () {\n\n\t}\n\n\t/**\n\t * Loads the dependencies for the elements\n\t * Has to be called after ready event.\n\t * @public\n\t * @return { void }\n\t */\n\tstatic loadDependencies () {\n\n\t\t// $.each( $( IDENTIFIERS.DATEPICKER.ROOT ), function createInstance () {\n\t\t// \tconst controllerInstance = new DatepickerController(),\n\t\t// \t config = $( this ).data( 'element-config' ) || {};\n\t\t//\n\t\t// \tcontrollerInstance.init( $( this ), config );\n\t\t// } );\n\t\t//\n\t\t// $.each( $( IDENTIFIERS.VALUE_SLIDER.ROOT ), function createInstance () {\n\t\t// \tconst controllerInstance = new ValueSliderController(),\n\t\t// \t config = $( this ).data( 'element-config' ) || {};\n\t\t//\n\t\t// \tcontrollerInstance.init( $( this ), config );\n\t\t// } );\n\t}\n\n}\n\nexport default ElementLoader;\n\n\n\n// WEBPACK FOOTER //\n// ./js/services/ElementLoader.service.js","/**\n *\n * @typedef {object} ModuleLoaderConfig\n * @property {string} SELECTOR\n * @property {string} ATTRIBUTE\n * @property {string} CONFIG_ATTRIBUTE\n */\n\nexport default {\n\t/**\n\t * @type ModuleLoaderConfig\n\t */\n\tMODULES : {\n\t\tSELECTOR : '[data-module]',\n\t\tATTRIBUTE : 'data-module',\n\t\tCONFIG_ATTRIBUTE : 'data-module-config'\n\t},\n\t/**\n\t * @type ModuleLoaderConfig\n\t */\n\tTABLES : {\n\t\tSELECTOR : '.table',\n\t\tATTRIBUTE : 'class',\n\t\tCONFIG_ATTRIBUTE : 'data-class-config'\n\t}\n};\n\n\n// WEBPACK FOOTER //\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/local-packages/services/moduleLoader/constants/ModuleLoader.const.js","/**\r\n * @description reuse identifier defintions from the respective sub-modules. They should only be declared once.\r\n */\r\nimport { IDENTIFIER as AUDIO } from './../audio/constants/Identifiers.const';\r\nimport { IDENTIFIER as VIDEO } from './../video/constants/Identifiers.const';\r\nimport { IDENTIFIER as SLIDER } from './../slider/constants/Identifiers.const';\r\nimport { IDENTIFIER as MODAL } from './../modal/constants/Identifiers.const';\r\nimport { IDENTIFIER as ANIMATION } from './../animation/constants/Identifiers.const';\r\nimport { IDENTIFIER as RESPTABLES } from './../responsive-tables/constants/Identifiers.const';\r\nimport {IDENTIFIER as PASSWORDMETER} from '../../forms/v2/modules/passwordMeter/constants/Identifiers.const';\r\nimport { PFC } from './../productFinder/constants/Identifiers.const';\r\nimport { REG } from './../regionalization/constants/Identifiers.const';\r\nimport { BFC } from './../benefitFinder/constants/Identifiers.const';\r\nimport { MODULE_IDENTIFIERS as MAPTOOL } from './../map-tool/constants/Identifiers.const';\r\nimport { IDENTIFIER as PREACT_TEST } from './../preact-test/constants/Identifiers.const';\r\nimport { IDENTIFIER as EXPERIENCE_MODULES } from './../experience-modules/constants/Identifiers.const';\r\n\r\nexport default {\r\n\tAUDIO : AUDIO,\r\n\tVIDEO : VIDEO,\r\n\tSLIDER : SLIDER,\r\n\tMODAL : MODAL,\r\n\tANIMATION : ANIMATION,\r\n\tRESPTABLES : RESPTABLES,\r\n\tPFC : PFC.PFC,\r\n\tBFC : BFC.BFC,\r\n\tREG : REG.REG,\r\n\tMODAL : MODAL,\r\n\tPASSWORDMETER : PASSWORDMETER,\r\n\tMAPTOOL : MAPTOOL.MAPTOOL,\r\n\tPREACT_TEST : PREACT_TEST,\r\n\tREACT_TEST : 'react-test',\r\n\tEXPERIENCE_MODULES : EXPERIENCE_MODULES,\r\n\tFORM_V1: 'form',\r\n\tFORM_V2: 'form-v2'\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/constants/ModuleIdentifier.const.js","export const IDENTIFIER = 'audio';\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/audio/constants/Identifiers.const.js","export const IDENTIFIER = 'video';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/video/constants/Identifiers.const.js","export const IDENTIFIER = 'sli01';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/slider/constants/Identifiers.const.js","export const IDENTIFIER = 'animation';\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/animation/constants/Identifiers.const.js","export const IDENTIFIER = '.table';\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/responsive-tables/constants/Identifiers.const.js","export const IDENTIFIER = 'passwordMeter';\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/forms/v2/modules/passwordMeter/constants/Identifiers.const.js","export const PFC = {\r\n\tPFC : 'pfc'\r\n};\r\n//export const PCF02 = 'pfc02';\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/productFinder/constants/Identifiers.const.js","export const REG = {\r\n\tREG : 'reg'\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/regionalization/constants/Identifiers.const.js","export const BFC = {\r\n\tBFC : 'bfc01'\r\n};\n\n\n// WEBPACK FOOTER //\n// ./js/modules/benefitFinder/constants/Identifiers.const.js","export const IDENTIFIER = 'experience-modules';\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/experience-modules/constants/Identifiers.const.js","/* #if dynamic */\r\n/**\r\n * The video module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\r\nexport const video = ( resolve, reject ) =>\r\n\t\trequire.ensure(\r\n\t\t\t\t[],\r\n\t\t\t\trequire => resolve( require( './../../video/Video.module' ).default ),\r\n\t\t\t\t'VideoModule'\r\n\t\t);\r\n\r\n/**\r\n * The audio module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\r\nexport const audio = ( resolve, reject ) =>\r\n\t\trequire.ensure(\r\n\t\t\t\t[],\r\n\t\t\t\trequire => resolve( require( './../../audio/Audio.module' ).default ),\r\n\t\t\t\t'AudioModule'\r\n\t\t);\r\n\r\n/**\r\n * The slider module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\r\nexport const slider = ( resolve, reject ) =>\r\n\t\trequire.ensure(\r\n\t\t\t\t[],\r\n\t\t\t\trequire => resolve( require( './../../slider/Slider.module' ).default ),\r\n\t\t\t\t'SliderModule'\r\n\t\t);\r\n\r\n/**\r\n * The video module animation definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\r\nexport const animation = ( resolve, reject ) =>\r\n\t\trequire.ensure(\r\n\t\t\t\t[ 'jquery', 'svg.js' ],\r\n\t\t\t\trequire => resolve( require( './../../animation/Animation.module' ).default ),\r\n\t\t\t\t'AnimationModule'\r\n\t\t);\r\n\r\n/**\r\n * The tables module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\r\nexport const responsiveTables = ( resolve, reject ) =>\r\n\t\trequire.ensure(\r\n\t\t\t\t[ 'jquery' ],\r\n\t\t\t\trequire => resolve( require( './../../responsive-tables/ResponsiveTables.module' ).default ),\r\n\t\t\t\t'ResponsiveTablesModule'\r\n\t\t);\r\n\r\n/**\r\n * The tables module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\r\nexport const productFinder = ( resolve, reject ) =>\r\n\t\trequire.ensure(\r\n\t\t\t\t[ 'jquery' ],\r\n\t\t\t\trequire => resolve( require( './../../productFinder/ProductFinder.module' ).default ),\r\n\t\t\t\t'ProductFinderModule'\r\n\t\t);\r\n\r\n/**\r\n * The tables module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\r\nexport const regionalization = ( resolve, reject ) =>\r\n\t\trequire.ensure(\r\n\t\t\t\t[ 'jquery' ],\r\n\t\t\t\trequire => resolve( require( './../../regionalization/Regionalization.module' ).default ),\r\n\t\t\t\t'RegionalizationModule'\r\n\t\t);\r\n\r\n/**\r\n * The tables module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\r\nexport const benefitFinder = ( resolve, reject ) =>\r\n\t\trequire.ensure(\r\n\t\t\t\t[ 'jquery' ],\r\n\t\t\t\trequire => resolve( require( './../../benefitFinder/BenefitFinder.module' ).default ),\r\n\t\t\t\t'BenefitFinderModule'\r\n\t\t);\r\n\r\n/**\r\n * The modal module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\r\nexport const modal = ( resolve, reject ) =>\r\n\t\trequire.ensure(\r\n\t\t\t\t[],\r\n\t\t\t\trequire => resolve( require( './../../modal/Modal.module' ).default ),\r\n\t\t\t\t'ModalModule'\r\n\t\t);\r\n\r\n/**\r\n * The map tool module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\r\nexport const maptool = ( resolve, reject ) =>\r\n\t\trequire.ensure(\r\n\t\t\t\t[ 'jquery' ],\r\n\t\t\t\trequire => resolve( require( './../../map-tool/MapTool.module' ).default ),\r\n\t\t\t\t'MapToolModule'\r\n\t\t);\r\n\r\nexport function preacttest ( resolve, reject ) {\r\n\r\n\trequire.ensure(\r\n\t\t\t[ 'jquery' ],\r\n\t\t\t( require ) => {\r\n\t\t\t\tresolve( require( './../../preact-test/PreactTest.module' ).default );\r\n\t\t\t}, 'PreactTestModule'\r\n\t);\r\n}\r\n\r\nexport function reacttest ( resolve, reject ) {\r\n\r\n\trequire.ensure(\r\n\t\t\t[ 'jquery' ],\r\n\t\t\t( require ) => {\r\n\t\t\t\tresolve( require( './../../react-test/ReactTest.module' ).default );\r\n\t\t\t}, 'ReactTestModule'\r\n\t);\r\n}\r\n\r\nexport function experienceModules ( resolve, reject ) {\r\n\r\n\trequire.ensure(\r\n\t\t[ 'jquery' ],\r\n\t\t( require ) => {\r\n\t\t\tresolve( require( './../../experience-modules/Experience.module' ).default );\r\n\t\t}, 'ExperienceModule'\r\n\t);\r\n}\r\n\r\n/**\r\n * The passwordMeter module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\r\nexport function passwordMeter ( resolve, reject ) {\r\n\r\n\trequire.ensure(\r\n\t\t\t[],\r\n\t\t\t( require ) => {\r\n\t\t\t\tresolve( require( '../../../forms/v2/modules/passwordMeter/PasswordMeter.module' ).default );\r\n\t\t\t}, 'PasswordMeterModule'\r\n\t);\r\n}\r\n\r\n/**\r\n * The formsV1 module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\r\nexport function formsV1 ( resolve, reject ) {\r\n\r\n\trequire.ensure(\r\n\t\t\t[],\r\n\t\t\t( require ) => {\r\n\t\t\t\tresolve( require( './../../forms/v1' ).default );\r\n\t\t\t}, 'FormsV1'\r\n\t);\r\n}\r\n\r\n/**\r\n * The formsV2 module splitpoint definition\r\n * @param {function} resolve - call once the module is loaded\r\n * @param {function} reject - call when the load fails\r\n * @returns {void}\r\n */\r\nexport function formsV2 ( resolve, reject ) {\r\n\r\n\trequire.ensure(\r\n\t\t\t[],\r\n\t\t\t( require ) => {\r\n\t\t\t\tresolve( require( './../../forms/v2' ).default );\r\n\t\t\t}, 'FormsV2'\r\n\t);\r\n}\r\n\r\n/* #end */\r\n\r\n// Temporary for static output versions: Disable split-points and require normally.\r\n\r\n/* eslint-disable no-redeclare */\r\n \r\n\r\n \r\n\r\n \r\n/* eslint-disable */\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/modules/repositories/splitpoints/Module.splitpoints.js",";(function () {\n\t'use strict';\n\n\t/**\n\t * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs.\n\t *\n\t * @codingstandard ftlabs-jsv2\n\t * @copyright The Financial Times Limited [All Rights Reserved]\n\t * @license MIT License (see LICENSE.txt)\n\t */\n\n\t/*jslint browser:true, node:true*/\n\t/*global define, Event, Node*/\n\n\n\t/**\n\t * Instantiate fast-clicking listeners on the specified layer.\n\t *\n\t * @constructor\n\t * @param {Element} layer The layer to listen on\n\t * @param {Object} [options={}] The options to override the defaults\n\t */\n\tfunction FastClick(layer, options) {\n\t\tvar oldOnClick;\n\n\t\toptions = options || {};\n\n\t\t/**\n\t\t * Whether a click is currently being tracked.\n\t\t *\n\t\t * @type boolean\n\t\t */\n\t\tthis.trackingClick = false;\n\n\n\t\t/**\n\t\t * Timestamp for when click tracking started.\n\t\t *\n\t\t * @type number\n\t\t */\n\t\tthis.trackingClickStart = 0;\n\n\n\t\t/**\n\t\t * The element being tracked for a click.\n\t\t *\n\t\t * @type EventTarget\n\t\t */\n\t\tthis.targetElement = null;\n\n\n\t\t/**\n\t\t * X-coordinate of touch start event.\n\t\t *\n\t\t * @type number\n\t\t */\n\t\tthis.touchStartX = 0;\n\n\n\t\t/**\n\t\t * Y-coordinate of touch start event.\n\t\t *\n\t\t * @type number\n\t\t */\n\t\tthis.touchStartY = 0;\n\n\n\t\t/**\n\t\t * ID of the last touch, retrieved from Touch.identifier.\n\t\t *\n\t\t * @type number\n\t\t */\n\t\tthis.lastTouchIdentifier = 0;\n\n\n\t\t/**\n\t\t * Touchmove boundary, beyond which a click will be cancelled.\n\t\t *\n\t\t * @type number\n\t\t */\n\t\tthis.touchBoundary = options.touchBoundary || 10;\n\n\n\t\t/**\n\t\t * The FastClick layer.\n\t\t *\n\t\t * @type Element\n\t\t */\n\t\tthis.layer = layer;\n\n\t\t/**\n\t\t * The minimum time between tap(touchstart and touchend) events\n\t\t *\n\t\t * @type number\n\t\t */\n\t\tthis.tapDelay = options.tapDelay || 200;\n\n\t\t/**\n\t\t * The maximum time for a tap\n\t\t *\n\t\t * @type number\n\t\t */\n\t\tthis.tapTimeout = options.tapTimeout || 700;\n\n\t\tif (FastClick.notNeeded(layer)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Some old versions of Android don't have Function.prototype.bind\n\t\tfunction bind(method, context) {\n\t\t\treturn function() { return method.apply(context, arguments); };\n\t\t}\n\n\n\t\tvar methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel'];\n\t\tvar context = this;\n\t\tfor (var i = 0, l = methods.length; i < l; i++) {\n\t\t\tcontext[methods[i]] = bind(context[methods[i]], context);\n\t\t}\n\n\t\t// Set up event handlers as required\n\t\tif (deviceIsAndroid) {\n\t\t\tlayer.addEventListener('mouseover', this.onMouse, true);\n\t\t\tlayer.addEventListener('mousedown', this.onMouse, true);\n\t\t\tlayer.addEventListener('mouseup', this.onMouse, true);\n\t\t}\n\n\t\tlayer.addEventListener('click', this.onClick, true);\n\t\tlayer.addEventListener('touchstart', this.onTouchStart, false);\n\t\tlayer.addEventListener('touchmove', this.onTouchMove, false);\n\t\tlayer.addEventListener('touchend', this.onTouchEnd, false);\n\t\tlayer.addEventListener('touchcancel', this.onTouchCancel, false);\n\n\t\t// Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2)\n\t\t// which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick\n\t\t// layer when they are cancelled.\n\t\tif (!Event.prototype.stopImmediatePropagation) {\n\t\t\tlayer.removeEventListener = function(type, callback, capture) {\n\t\t\t\tvar rmv = Node.prototype.removeEventListener;\n\t\t\t\tif (type === 'click') {\n\t\t\t\t\trmv.call(layer, type, callback.hijacked || callback, capture);\n\t\t\t\t} else {\n\t\t\t\t\trmv.call(layer, type, callback, capture);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlayer.addEventListener = function(type, callback, capture) {\n\t\t\t\tvar adv = Node.prototype.addEventListener;\n\t\t\t\tif (type === 'click') {\n\t\t\t\t\tadv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) {\n\t\t\t\t\t\tif (!event.propagationStopped) {\n\t\t\t\t\t\t\tcallback(event);\n\t\t\t\t\t\t}\n\t\t\t\t\t}), capture);\n\t\t\t\t} else {\n\t\t\t\t\tadv.call(layer, type, callback, capture);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// If a handler is already declared in the element's onclick attribute, it will be fired before\n\t\t// FastClick's onClick handler. Fix this by pulling out the user-defined handler function and\n\t\t// adding it as listener.\n\t\tif (typeof layer.onclick === 'function') {\n\n\t\t\t// Android browser on at least 3.2 requires a new reference to the function in layer.onclick\n\t\t\t// - the old one won't work if passed to addEventListener directly.\n\t\t\toldOnClick = layer.onclick;\n\t\t\tlayer.addEventListener('click', function(event) {\n\t\t\t\toldOnClick(event);\n\t\t\t}, false);\n\t\t\tlayer.onclick = null;\n\t\t}\n\t}\n\n\t/**\n\t* Windows Phone 8.1 fakes user agent string to look like Android and iPhone.\n\t*\n\t* @type boolean\n\t*/\n\tvar deviceIsWindowsPhone = navigator.userAgent.indexOf(\"Windows Phone\") >= 0;\n\n\t/**\n\t * Android requires exceptions.\n\t *\n\t * @type boolean\n\t */\n\tvar deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0 && !deviceIsWindowsPhone;\n\n\n\t/**\n\t * iOS requires exceptions.\n\t *\n\t * @type boolean\n\t */\n\tvar deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone;\n\n\n\t/**\n\t * iOS 4 requires an exception for select elements.\n\t *\n\t * @type boolean\n\t */\n\tvar deviceIsIOS4 = deviceIsIOS && (/OS 4_\\d(_\\d)?/).test(navigator.userAgent);\n\n\n\t/**\n\t * iOS 6.0-7.* requires the target element to be manually derived\n\t *\n\t * @type boolean\n\t */\n\tvar deviceIsIOSWithBadTarget = deviceIsIOS && (/OS [6-7]_\\d/).test(navigator.userAgent);\n\n\t/**\n\t * BlackBerry requires exceptions.\n\t *\n\t * @type boolean\n\t */\n\tvar deviceIsBlackBerry10 = navigator.userAgent.indexOf('BB10') > 0;\n\n\t/**\n\t * Determine whether a given element requires a native click.\n\t *\n\t * @param {EventTarget|Element} target Target DOM element\n\t * @returns {boolean} Returns true if the element needs a native click\n\t */\n\tFastClick.prototype.needsClick = function(target) {\n\t\tswitch (target.nodeName.toLowerCase()) {\n\n\t\t// Don't send a synthetic click to disabled inputs (issue #62)\n\t\tcase 'button':\n\t\tcase 'select':\n\t\tcase 'textarea':\n\t\t\tif (target.disabled) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase 'input':\n\n\t\t\t// File inputs need real clicks on iOS 6 due to a browser bug (issue #68)\n\t\t\tif ((deviceIsIOS && target.type === 'file') || target.disabled) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase 'label':\n\t\tcase 'iframe': // iOS8 homescreen apps can prevent events bubbling into frames\n\t\tcase 'video':\n\t\t\treturn true;\n\t\t}\n\n\t\treturn (/\\bneedsclick\\b/).test(target.className);\n\t};\n\n\n\t/**\n\t * Determine whether a given element requires a call to focus to simulate click into element.\n\t *\n\t * @param {EventTarget|Element} target Target DOM element\n\t * @returns {boolean} Returns true if the element requires a call to focus to simulate native click.\n\t */\n\tFastClick.prototype.needsFocus = function(target) {\n\t\tswitch (target.nodeName.toLowerCase()) {\n\t\tcase 'textarea':\n\t\t\treturn true;\n\t\tcase 'select':\n\t\t\treturn !deviceIsAndroid;\n\t\tcase 'input':\n\t\t\tswitch (target.type) {\n\t\t\tcase 'button':\n\t\t\tcase 'checkbox':\n\t\t\tcase 'file':\n\t\t\tcase 'image':\n\t\t\tcase 'radio':\n\t\t\tcase 'submit':\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// No point in attempting to focus disabled inputs\n\t\t\treturn !target.disabled && !target.readOnly;\n\t\tdefault:\n\t\t\treturn (/\\bneedsfocus\\b/).test(target.className);\n\t\t}\n\t};\n\n\n\t/**\n\t * Send a click event to the specified element.\n\t *\n\t * @param {EventTarget|Element} targetElement\n\t * @param {Event} event\n\t */\n\tFastClick.prototype.sendClick = function(targetElement, event) {\n\t\tvar clickEvent, touch;\n\n\t\t// On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24)\n\t\tif (document.activeElement && document.activeElement !== targetElement) {\n\t\t\tdocument.activeElement.blur();\n\t\t}\n\n\t\ttouch = event.changedTouches[0];\n\n\t\t// Synthesise a click event, with an extra attribute so it can be tracked\n\t\tclickEvent = document.createEvent('MouseEvents');\n\t\tclickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);\n\t\tclickEvent.forwardedTouchEvent = true;\n\t\ttargetElement.dispatchEvent(clickEvent);\n\t};\n\n\tFastClick.prototype.determineEventType = function(targetElement) {\n\n\t\t//Issue #159: Android Chrome Select Box does not open with a synthetic click event\n\t\tif (deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select') {\n\t\t\treturn 'mousedown';\n\t\t}\n\n\t\treturn 'click';\n\t};\n\n\n\t/**\n\t * @param {EventTarget|Element} targetElement\n\t */\n\tFastClick.prototype.focus = function(targetElement) {\n\t\tvar length;\n\n\t\t// Issue #160: on iOS 7, some input elements (e.g. date datetime month) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724.\n\t\tif (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') {\n\t\t\tlength = targetElement.value.length;\n\t\t\ttargetElement.setSelectionRange(length, length);\n\t\t} else {\n\t\t\ttargetElement.focus();\n\t\t}\n\t};\n\n\n\t/**\n\t * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it.\n\t *\n\t * @param {EventTarget|Element} targetElement\n\t */\n\tFastClick.prototype.updateScrollParent = function(targetElement) {\n\t\tvar scrollParent, parentElement;\n\n\t\tscrollParent = targetElement.fastClickScrollParent;\n\n\t\t// Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the\n\t\t// target element was moved to another parent.\n\t\tif (!scrollParent || !scrollParent.contains(targetElement)) {\n\t\t\tparentElement = targetElement;\n\t\t\tdo {\n\t\t\t\tif (parentElement.scrollHeight > parentElement.offsetHeight) {\n\t\t\t\t\tscrollParent = parentElement;\n\t\t\t\t\ttargetElement.fastClickScrollParent = parentElement;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tparentElement = parentElement.parentElement;\n\t\t\t} while (parentElement);\n\t\t}\n\n\t\t// Always update the scroll top tracker if possible.\n\t\tif (scrollParent) {\n\t\t\tscrollParent.fastClickLastScrollTop = scrollParent.scrollTop;\n\t\t}\n\t};\n\n\n\t/**\n\t * @param {EventTarget} targetElement\n\t * @returns {Element|EventTarget}\n\t */\n\tFastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) {\n\n\t\t// On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node.\n\t\tif (eventTarget.nodeType === Node.TEXT_NODE) {\n\t\t\treturn eventTarget.parentNode;\n\t\t}\n\n\t\treturn eventTarget;\n\t};\n\n\n\t/**\n\t * On touch start, record the position and scroll offset.\n\t *\n\t * @param {Event} event\n\t * @returns {boolean}\n\t */\n\tFastClick.prototype.onTouchStart = function(event) {\n\t\tvar targetElement, touch, selection;\n\n\t\t// Ignore multiple touches, otherwise pinch-to-zoom is prevented if both fingers are on the FastClick element (issue #111).\n\t\tif (event.targetTouches.length > 1) {\n\t\t\treturn true;\n\t\t}\n\n\t\ttargetElement = this.getTargetElementFromEventTarget(event.target);\n\t\ttouch = event.targetTouches[0];\n\n\t\tif (deviceIsIOS) {\n\n\t\t\t// Only trusted events will deselect text on iOS (issue #49)\n\t\t\tselection = window.getSelection();\n\t\t\tif (selection.rangeCount && !selection.isCollapsed) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (!deviceIsIOS4) {\n\n\t\t\t\t// Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23):\n\t\t\t\t// when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched\n\t\t\t\t// with the same identifier as the touch event that previously triggered the click that triggered the alert.\n\t\t\t\t// Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an\n\t\t\t\t// immediately preceeding touch event (issue #52), so this fix is unavailable on that platform.\n\t\t\t\t// Issue 120: touch.identifier is 0 when Chrome dev tools 'Emulate touch events' is set with an iOS device UA string,\n\t\t\t\t// which causes all touch events to be ignored. As this block only applies to iOS, and iOS identifiers are always long,\n\t\t\t\t// random integers, it's safe to to continue if the identifier is 0 here.\n\t\t\t\tif (touch.identifier && touch.identifier === this.lastTouchIdentifier) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tthis.lastTouchIdentifier = touch.identifier;\n\n\t\t\t\t// If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and:\n\t\t\t\t// 1) the user does a fling scroll on the scrollable layer\n\t\t\t\t// 2) the user stops the fling scroll with another tap\n\t\t\t\t// then the event.target of the last 'touchend' event will be the element that was under the user's finger\n\t\t\t\t// when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check\n\t\t\t\t// is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42).\n\t\t\t\tthis.updateScrollParent(targetElement);\n\t\t\t}\n\t\t}\n\n\t\tthis.trackingClick = true;\n\t\tthis.trackingClickStart = event.timeStamp;\n\t\tthis.targetElement = targetElement;\n\n\t\tthis.touchStartX = touch.pageX;\n\t\tthis.touchStartY = touch.pageY;\n\n\t\t// Prevent phantom clicks on fast double-tap (issue #36)\n\t\tif ((event.timeStamp - this.lastClickTime) < this.tapDelay) {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\treturn true;\n\t};\n\n\n\t/**\n\t * Based on a touchmove event object, check whether the touch has moved past a boundary since it started.\n\t *\n\t * @param {Event} event\n\t * @returns {boolean}\n\t */\n\tFastClick.prototype.touchHasMoved = function(event) {\n\t\tvar touch = event.changedTouches[0], boundary = this.touchBoundary;\n\n\t\tif (Math.abs(touch.pageX - this.touchStartX) > boundary || Math.abs(touch.pageY - this.touchStartY) > boundary) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\n\t/**\n\t * Update the last position.\n\t *\n\t * @param {Event} event\n\t * @returns {boolean}\n\t */\n\tFastClick.prototype.onTouchMove = function(event) {\n\t\tif (!this.trackingClick) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// If the touch has moved, cancel the click tracking\n\t\tif (this.targetElement !== this.getTargetElementFromEventTarget(event.target) || this.touchHasMoved(event)) {\n\t\t\tthis.trackingClick = false;\n\t\t\tthis.targetElement = null;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\n\t/**\n\t * Attempt to find the labelled control for the given label element.\n\t *\n\t * @param {EventTarget|HTMLLabelElement} labelElement\n\t * @returns {Element|null}\n\t */\n\tFastClick.prototype.findControl = function(labelElement) {\n\n\t\t// Fast path for newer browsers supporting the HTML5 control attribute\n\t\tif (labelElement.control !== undefined) {\n\t\t\treturn labelElement.control;\n\t\t}\n\n\t\t// All browsers under test that support touch events also support the HTML5 htmlFor attribute\n\t\tif (labelElement.htmlFor) {\n\t\t\treturn document.getElementById(labelElement.htmlFor);\n\t\t}\n\n\t\t// If no for attribute exists, attempt to retrieve the first labellable descendant element\n\t\t// the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label\n\t\treturn labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea');\n\t};\n\n\n\t/**\n\t * On touch end, determine whether to send a click event at once.\n\t *\n\t * @param {Event} event\n\t * @returns {boolean}\n\t */\n\tFastClick.prototype.onTouchEnd = function(event) {\n\t\tvar forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement;\n\n\t\tif (!this.trackingClick) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Prevent phantom clicks on fast double-tap (issue #36)\n\t\tif ((event.timeStamp - this.lastClickTime) < this.tapDelay) {\n\t\t\tthis.cancelNextClick = true;\n\t\t\treturn true;\n\t\t}\n\n\t\tif ((event.timeStamp - this.trackingClickStart) > this.tapTimeout) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Reset to prevent wrong click cancel on input (issue #156).\n\t\tthis.cancelNextClick = false;\n\n\t\tthis.lastClickTime = event.timeStamp;\n\n\t\ttrackingClickStart = this.trackingClickStart;\n\t\tthis.trackingClick = false;\n\t\tthis.trackingClickStart = 0;\n\n\t\t// On some iOS devices, the targetElement supplied with the event is invalid if the layer\n\t\t// is performing a transition or scroll, and has to be re-detected manually. Note that\n\t\t// for this to function correctly, it must be called *after* the event target is checked!\n\t\t// See issue #57; also filed as rdar://13048589 .\n\t\tif (deviceIsIOSWithBadTarget) {\n\t\t\ttouch = event.changedTouches[0];\n\n\t\t\t// In certain cases arguments of elementFromPoint can be negative, so prevent setting targetElement to null\n\t\t\ttargetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset) || targetElement;\n\t\t\ttargetElement.fastClickScrollParent = this.targetElement.fastClickScrollParent;\n\t\t}\n\n\t\ttargetTagName = targetElement.tagName.toLowerCase();\n\t\tif (targetTagName === 'label') {\n\t\t\tforElement = this.findControl(targetElement);\n\t\t\tif (forElement) {\n\t\t\t\tthis.focus(targetElement);\n\t\t\t\tif (deviceIsAndroid) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\ttargetElement = forElement;\n\t\t\t}\n\t\t} else if (this.needsFocus(targetElement)) {\n\n\t\t\t// Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through.\n\t\t\t// Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37).\n\t\t\tif ((event.timeStamp - trackingClickStart) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) {\n\t\t\t\tthis.targetElement = null;\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.focus(targetElement);\n\t\t\tthis.sendClick(targetElement, event);\n\n\t\t\t// Select elements need the event to go through on iOS 4, otherwise the selector menu won't open.\n\t\t\t// Also this breaks opening selects when VoiceOver is active on iOS6, iOS7 (and possibly others)\n\t\t\tif (!deviceIsIOS || targetTagName !== 'select') {\n\t\t\t\tthis.targetElement = null;\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tif (deviceIsIOS && !deviceIsIOS4) {\n\n\t\t\t// Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled\n\t\t\t// and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42).\n\t\t\tscrollParent = targetElement.fastClickScrollParent;\n\t\t\tif (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Prevent the actual click from going though - unless the target node is marked as requiring\n\t\t// real clicks or if it is in the whitelist in which case only non-programmatic clicks are permitted.\n\t\tif (!this.needsClick(targetElement)) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.sendClick(targetElement, event);\n\t\t}\n\n\t\treturn false;\n\t};\n\n\n\t/**\n\t * On touch cancel, stop tracking the click.\n\t *\n\t * @returns {void}\n\t */\n\tFastClick.prototype.onTouchCancel = function() {\n\t\tthis.trackingClick = false;\n\t\tthis.targetElement = null;\n\t};\n\n\n\t/**\n\t * Determine mouse events which should be permitted.\n\t *\n\t * @param {Event} event\n\t * @returns {boolean}\n\t */\n\tFastClick.prototype.onMouse = function(event) {\n\n\t\t// If a target element was never set (because a touch event was never fired) allow the event\n\t\tif (!this.targetElement) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (event.forwardedTouchEvent) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Programmatically generated events targeting a specific element should be permitted\n\t\tif (!event.cancelable) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Derive and check the target element to see whether the mouse event needs to be permitted;\n\t\t// unless explicitly enabled, prevent non-touch click events from triggering actions,\n\t\t// to prevent ghost/doubleclicks.\n\t\tif (!this.needsClick(this.targetElement) || this.cancelNextClick) {\n\n\t\t\t// Prevent any user-added listeners declared on FastClick element from being fired.\n\t\t\tif (event.stopImmediatePropagation) {\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t} else {\n\n\t\t\t\t// Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2)\n\t\t\t\tevent.propagationStopped = true;\n\t\t\t}\n\n\t\t\t// Cancel the event\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\n\t\t\treturn false;\n\t\t}\n\n\t\t// If the mouse event is permitted, return true for the action to go through.\n\t\treturn true;\n\t};\n\n\n\t/**\n\t * On actual clicks, determine whether this is a touch-generated click, a click action occurring\n\t * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or\n\t * an actual click which should be permitted.\n\t *\n\t * @param {Event} event\n\t * @returns {boolean}\n\t */\n\tFastClick.prototype.onClick = function(event) {\n\t\tvar permitted;\n\n\t\t// It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early.\n\t\tif (this.trackingClick) {\n\t\t\tthis.targetElement = null;\n\t\t\tthis.trackingClick = false;\n\t\t\treturn true;\n\t\t}\n\n\t\t// Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target.\n\t\tif (event.target.type === 'submit' && event.detail === 0) {\n\t\t\treturn true;\n\t\t}\n\n\t\tpermitted = this.onMouse(event);\n\n\t\t// Only unset targetElement if the click is not permitted. This will ensure that the check for !targetElement in onMouse fails and the browser's click doesn't go through.\n\t\tif (!permitted) {\n\t\t\tthis.targetElement = null;\n\t\t}\n\n\t\t// If clicks are permitted, return true for the action to go through.\n\t\treturn permitted;\n\t};\n\n\n\t/**\n\t * Remove all FastClick's event listeners.\n\t *\n\t * @returns {void}\n\t */\n\tFastClick.prototype.destroy = function() {\n\t\tvar layer = this.layer;\n\n\t\tif (deviceIsAndroid) {\n\t\t\tlayer.removeEventListener('mouseover', this.onMouse, true);\n\t\t\tlayer.removeEventListener('mousedown', this.onMouse, true);\n\t\t\tlayer.removeEventListener('mouseup', this.onMouse, true);\n\t\t}\n\n\t\tlayer.removeEventListener('click', this.onClick, true);\n\t\tlayer.removeEventListener('touchstart', this.onTouchStart, false);\n\t\tlayer.removeEventListener('touchmove', this.onTouchMove, false);\n\t\tlayer.removeEventListener('touchend', this.onTouchEnd, false);\n\t\tlayer.removeEventListener('touchcancel', this.onTouchCancel, false);\n\t};\n\n\n\t/**\n\t * Check whether FastClick is needed.\n\t *\n\t * @param {Element} layer The layer to listen on\n\t */\n\tFastClick.notNeeded = function(layer) {\n\t\tvar metaViewport;\n\t\tvar chromeVersion;\n\t\tvar blackberryVersion;\n\t\tvar firefoxVersion;\n\n\t\t// Devices that don't support touch don't need FastClick\n\t\tif (typeof window.ontouchstart === 'undefined') {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Chrome version - zero for other browsers\n\t\tchromeVersion = +(/Chrome\\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1];\n\n\t\tif (chromeVersion) {\n\n\t\t\tif (deviceIsAndroid) {\n\t\t\t\tmetaViewport = document.querySelector('meta[name=viewport]');\n\n\t\t\t\tif (metaViewport) {\n\t\t\t\t\t// Chrome on Android with user-scalable=\"no\" doesn't need FastClick (issue #89)\n\t\t\t\t\tif (metaViewport.content.indexOf('user-scalable=no') !== -1) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t// Chrome 32 and above with width=device-width or less don't need FastClick\n\t\t\t\t\tif (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Chrome desktop doesn't need FastClick (issue #15)\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tif (deviceIsBlackBerry10) {\n\t\t\tblackberryVersion = navigator.userAgent.match(/Version\\/([0-9]*)\\.([0-9]*)/);\n\n\t\t\t// BlackBerry 10.3+ does not require Fastclick library.\n\t\t\t// https://github.com/ftlabs/fastclick/issues/251\n\t\t\tif (blackberryVersion[1] >= 10 && blackberryVersion[2] >= 3) {\n\t\t\t\tmetaViewport = document.querySelector('meta[name=viewport]');\n\n\t\t\t\tif (metaViewport) {\n\t\t\t\t\t// user-scalable=no eliminates click delay.\n\t\t\t\t\tif (metaViewport.content.indexOf('user-scalable=no') !== -1) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t// width=device-width (or less than device-width) eliminates click delay.\n\t\t\t\t\tif (document.documentElement.scrollWidth <= window.outerWidth) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// IE10 with -ms-touch-action: none or manipulation, which disables double-tap-to-zoom (issue #97)\n\t\tif (layer.style.msTouchAction === 'none' || layer.style.touchAction === 'manipulation') {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Firefox version - zero for other browsers\n\t\tfirefoxVersion = +(/Firefox\\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1];\n\n\t\tif (firefoxVersion >= 27) {\n\t\t\t// Firefox 27+ does not have tap delay if the content is not zoomable - https://bugzilla.mozilla.org/show_bug.cgi?id=922896\n\n\t\t\tmetaViewport = document.querySelector('meta[name=viewport]');\n\t\t\tif (metaViewport && (metaViewport.content.indexOf('user-scalable=no') !== -1 || document.documentElement.scrollWidth <= window.outerWidth)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// IE11: prefixed -ms-touch-action is no longer supported and it's recomended to use non-prefixed version\n\t\t// http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx\n\t\tif (layer.style.touchAction === 'none' || layer.style.touchAction === 'manipulation') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\n\t/**\n\t * Factory method for creating a FastClick object\n\t *\n\t * @param {Element} layer The layer to listen on\n\t * @param {Object} [options={}] The options to override the defaults\n\t */\n\tFastClick.attach = function(layer, options) {\n\t\treturn new FastClick(layer, options);\n\t};\n\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine(function() {\n\t\t\treturn FastClick;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = FastClick.attach;\n\t\tmodule.exports.FastClick = FastClick;\n\t} else {\n\t\twindow.FastClick = FastClick;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/fastclick/lib/fastclick.js\n// module id = 696\n// module chunks = 16","import { BreakpointService } from 'device';\r\nimport { fasterdomPromised as dom } from 'fasterdom';\r\nimport StyleInjector from './../../../../local-packages/services/style-injector/StyleInjector.service';\r\nimport WindowGatewayService from './gateways/WindowGateway.service';\r\n\r\nconst BREAKPOINTS = [ 'md', 'lg', 'xl', 'xxl' ],\r\n BASE_PATH = GLOBAL_CONFIG.CSS_PATH, //eslint-disable-line\r\n PREFIX = 'screen',\r\n windowGateway = new WindowGatewayService();\r\n\r\n/**\r\n * Fetch all stylesheets below the current breakpoint.\r\n * This is necessary for slower devices which are dropping resize events when the user resizes very fast.\r\n * Therefore also breakpoint change events are dropped.\r\n * Make sure that all stylesheets for the current viewport are present.\r\n * De-duplication is handled by StyleInjector.\r\n * @param {int} indexOfCurrentBreakpoint - self describing\r\n * @returns {Array} containing booleans whether a stylesheet was injected or not.\r\n */\r\nfunction injectStylesheetsBelowCurrentBreakpoint ( indexOfCurrentBreakpoint, filePath ) {\r\n\r\n\treturn Promise.all(\r\n\t\tBREAKPOINTS\r\n\t\t\t.filter( ( breakpoint, indexInBreakpoints ) => {\r\n\t\t\t\treturn indexInBreakpoints <= indexOfCurrentBreakpoint;\r\n\t\t\t} )\r\n\t\t\t.map( ( breakpoint ) => {\r\n\t\t\t\treturn StyleInjector.injectImmediate( filePath, breakpoint, breakpoint );\r\n\t\t\t} )\r\n\t);\r\n}\r\n\r\n/**\r\n * Load necessary styles when a change occurs.\r\n * @param {Breakpoint} data - the current breakpoint which was met.\r\n * @return {void}\r\n */\r\nfunction onBreakpointChange ( filePath ) {\r\n\treturn function breakpointChange ( data ) {\r\n\r\n\t\tconst indexOfCurrentBreakpoint = BREAKPOINTS.indexOf( data.alias );\r\n\r\n\t\tif ( indexOfCurrentBreakpoint >= 0 ) {\r\n\r\n\t\t\tdom.mutate(\r\n\t\t\t\t() => this::injectStylesheetsBelowCurrentBreakpoint( indexOfCurrentBreakpoint, filePath )\r\n\t\t\t\t\t.then( ( res ) => windowGateway.send( {\r\n\t\t\t\t\t\t\ttype : 'styleReady',\r\n\t\t\t\t\t\t\tsrc : window.location.href,\r\n\t\t\t\t\t\t\tdata : res\r\n\t\t\t\t\t\t}, '*' ) )\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n}\r\n\r\n/**\r\n * Singleton to handle lazy style loading.\r\n */\r\nclass StyleLoaderService {\r\n\r\n\t/**\r\n\t * Initialises the service singleton.\r\n\t * Has to be called after ready event.\r\n\t * @public\r\n\t * @return { StyleLoaderService } instance\r\n\t */\r\n\tinit ( filePath ) {\r\n\t\tBreakpointService.breakpointEvent.subscribe( onBreakpointChange( filePath ) );\r\n\r\n\t\treturn this;\r\n\t}\r\n}\r\n\r\nconst instance = new StyleLoaderService();//eslint-disable-line\r\n\r\nexport default instance;\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/services/StyleLoader.service.js","import objectFitImage from 'object-fit-images';\r\n\r\nconst useragent = window.UserAgent;\r\n\r\n/**\r\n * Polyfill abject fit for semantic images\r\n * @returns {void}\r\n */\r\nfunction init () {\r\n\tconst images = document.querySelectorAll( '.semantic-image.media-fill--out img' );\r\n\r\n\tif ( images && images.length > 0 ) {\r\n\t\tobjectFitImage( images, { watchMQ : true } );\r\n\t}\r\n\r\n\tif ( useragent.isIE ) {\r\n\t\trequire( 'picturefill' );\r\n\t}\r\n\r\n}\r\n\r\nexport default {\r\n\tinit\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/compatibility/Images.polyfill.js","/*! npm.im/object-fit-images */\nvar ಠ= 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='; // transparent image, used as accessor and replacing image\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-\\w\\s%]+)/g;\nvar testImg = new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction fixOne(el, requestedSrc) {\n\tif (el[ಠ].parsingSrcset) {\n\t\treturn;\n\t}\n\tvar style = getStyle(el);\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// If the fix was already applied, don't try to skip fixing,\n\t// - because once you go ofi you never go back.\n\t// - Wait, that doesn't rhyme.\n\t// - This ain't rap, bro.\n\tif (!el[ಠ].s) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!el[ಠ].skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tvar src = el[ಠ].ios7src || el.currentSrc || el.src;\n\n\tif (requestedSrc) {\n\t\t// explicitly requested src takes precedence\n\t\t// TODO: this still should overwrite srcset\n\t\tsrc = requestedSrc;\n\t} else if (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// prevent infinite loop\n\t\t// fillImg sets the src which in turn calls fixOne\n\t\tel[ಠ].parsingSrcset = true;\n\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\t\tdelete el[ಠ].parsingSrcset;\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tsrc = el[pf.ns].curSrc || src;\n\t}\n\n\t// store info on object for later use\n\tif (el[ಠ].s) {\n\t\tel[ಠ].s = src;\n\t\tif (requestedSrc) {\n\t\t\t// the attribute reflects the user input\n\t\t\t// the property is the resolved URL\n\t\t\tel[ಠ].srcAttr = requestedSrc;\n\t\t}\n\t} else {\n\t\tel[ಠ] = {\n\t\t\ts: src,\n\t\t\tsrcAttr: requestedSrc || nativeGetAttribute.call(el, 'src'),\n\t\t\tsrcsetAttr: el.srcset\n\t\t};\n\t\tel.src = ಠ;\n\n\t\ttry {\n\t\t\t// remove srcset because it overrides src\n\t\t\tif (el.srcset) {\n\t\t\t\tel.srcset = '';\n\n\t\t\t\t// restore non-browser-readable srcset property\n\t\t\t\tObject.defineProperty(el, 'srcset', {\n\t\t\t\t\tvalue: el[ಠ].srcsetAttr\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tel[ಠ].ios7src = src;\n\t\t}\n\t}\n\n\tel.style.backgroundImage = 'url(\"' + src + '\")';\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\t// `object-fit: scale-down` is either `contain` or `auto`\n\t\tif (!el[ಠ].i) {\n\t\t\tel[ಠ].i = new Image();\n\t\t\tel[ಠ].i.src = src;\n\t\t}\n\n\t\t// naturalWidth is only available when the image headers are loaded,\n\t\t// this loop will poll it every 100ms.\n\t\t// There's currently no check to prevent this loop from starting twice\n\t\t// as a consequence of calling ofi() twice on the same image, but it's light\n\t\t// and causes no issues, so it's not worth ensuring that it doesn't.\n\t\t(function loop() {\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=495908\n\t\t\tif (el[ಠ].i.naturalWidth) {\n\t\t\t\tif (el[ಠ].i.naturalWidth > el.width || el[ಠ].i.naturalHeight > el.height) {\n\t\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t\t} else {\n\t\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetTimeout(loop, 100);\n\t\t})();\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get() {\n\t\t\treturn el[ಠ].s;\n\t\t},\n\t\tset: function set(src) {\n\t\t\tdelete el[ಠ].i; // scale-down's img sizes need to be updated too\n\t\t\tfixOne(el, src);\n\t\t\treturn src;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {get: descriptors.get}); // it should be read-only\n}\n\nfunction hijackAttributes() {\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\tif (this[ಠ] && (name === 'src' || name === 'srcset')) {\n\t\t\t\treturn this[ಠ][name + 'Attr'];\n\t\t\t}\n\t\t\treturn nativeGetAttribute.call(this, name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\tif (this[ಠ] && (name === 'src' || name === 'srcset')) {\n\t\t\t\tthis[name === 'src' ? 'src' : name + 'Attr'] = String(value);\n\t\t\t} else {\n\t\t\t\tnativeSetAttribute.call(this, name, value);\n\t\t\t}\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\tif (supportsObjectPosition && !opts.skipTest) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll('img');\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][ಠ] = imgs[i][ಠ] || opts;\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nexport default fix;\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/object-fit-images/dist/ofi.es-modules.js\n// module id = 699\n// module chunks = 16","/*! picturefill - v3.0.2 - 2016-02-12\n * https://scottjehl.github.io/picturefill/\n * Copyright (c) 2016 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT\n */\n/*! Gecko-Picture - v1.0\n * https://github.com/scottjehl/picturefill/tree/3.0/src/plugins/gecko-picture\n * Firefox's early picture implementation (prior to FF41) is static and does\n * not react to viewport changes. This tiny module fixes this.\n */\n(function(window) {\n\t/*jshint eqnull:true */\n\tvar ua = navigator.userAgent;\n\n\tif ( window.HTMLPictureElement && ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 < 45) ) {\n\t\taddEventListener(\"resize\", (function() {\n\t\t\tvar timer;\n\n\t\t\tvar dummySrc = document.createElement(\"source\");\n\n\t\t\tvar fixRespimg = function(img) {\n\t\t\t\tvar source, sizes;\n\t\t\t\tvar picture = img.parentNode;\n\n\t\t\t\tif (picture.nodeName.toUpperCase() === \"PICTURE\") {\n\t\t\t\t\tsource = dummySrc.cloneNode();\n\n\t\t\t\t\tpicture.insertBefore(source, picture.firstElementChild);\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpicture.removeChild(source);\n\t\t\t\t\t});\n\t\t\t\t} else if (!img._pfLastSize || img.offsetWidth > img._pfLastSize) {\n\t\t\t\t\timg._pfLastSize = img.offsetWidth;\n\t\t\t\t\tsizes = img.sizes;\n\t\t\t\t\timg.sizes += \",100vw\";\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\timg.sizes = sizes;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar findPictureImgs = function() {\n\t\t\t\tvar i;\n\t\t\t\tvar imgs = document.querySelectorAll(\"picture > img, img[srcset][sizes]\");\n\t\t\t\tfor (i = 0; i < imgs.length; i++) {\n\t\t\t\t\tfixRespimg(imgs[i]);\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar onResize = function() {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = setTimeout(findPictureImgs, 99);\n\t\t\t};\n\t\t\tvar mq = window.matchMedia && matchMedia(\"(orientation: landscape)\");\n\t\t\tvar init = function() {\n\t\t\t\tonResize();\n\n\t\t\t\tif (mq && mq.addListener) {\n\t\t\t\t\tmq.addListener(onResize);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdummySrc.srcset = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n\t\t\tif (/^[c|i]|d$/.test(document.readyState || \"\")) {\n\t\t\t\tinit();\n\t\t\t} else {\n\t\t\t\tdocument.addEventListener(\"DOMContentLoaded\", init);\n\t\t\t}\n\n\t\t\treturn onResize;\n\t\t})());\n\t}\n})(window);\n\n/*! Picturefill - v3.0.2\n * http://scottjehl.github.io/picturefill\n * Copyright (c) 2015 https://github.com/scottjehl/picturefill/blob/master/Authors.txt;\n * License: MIT\n */\n\n(function( window, document, undefined ) {\n\t// Enable strict mode\n\t\"use strict\";\n\n\t// HTML shim|v it for old IE (IE9 will still need the HTML video tag workaround)\n\tdocument.createElement( \"picture\" );\n\n\tvar warn, eminpx, alwaysCheckWDescriptor, evalId;\n\t// local object for method references and testing exposure\n\tvar pf = {};\n\tvar isSupportTestReady = false;\n\tvar noop = function() {};\n\tvar image = document.createElement( \"img\" );\n\tvar getImgAttr = image.getAttribute;\n\tvar setImgAttr = image.setAttribute;\n\tvar removeImgAttr = image.removeAttribute;\n\tvar docElem = document.documentElement;\n\tvar types = {};\n\tvar cfg = {\n\t\t//resource selection:\n\t\talgorithm: \"\"\n\t};\n\tvar srcAttr = \"data-pfsrc\";\n\tvar srcsetAttr = srcAttr + \"set\";\n\t// ua sniffing is done for undetectable img loading features,\n\t// to do some non crucial perf optimizations\n\tvar ua = navigator.userAgent;\n\tvar supportAbort = (/rident/).test(ua) || ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 > 35 );\n\tvar curSrcProp = \"currentSrc\";\n\tvar regWDesc = /\\s+\\+?\\d+(e\\d+)?w/;\n\tvar regSize = /(\\([^)]+\\))?\\s*(.+)/;\n\tvar setOptions = window.picturefillCFG;\n\t/**\n\t * Shortcut property for https://w3c.github.io/webappsec/specs/mixedcontent/#restricts-mixed-content ( for easy overriding in tests )\n\t */\n\t// baseStyle also used by getEmValue (i.e.: width: 1em is important)\n\tvar baseStyle = \"position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)\";\n\tvar fsCss = \"font-size:100%!important;\";\n\tvar isVwDirty = true;\n\n\tvar cssCache = {};\n\tvar sizeLengthCache = {};\n\tvar DPR = window.devicePixelRatio;\n\tvar units = {\n\t\tpx: 1,\n\t\t\"in\": 96\n\t};\n\tvar anchor = document.createElement( \"a\" );\n\t/**\n\t * alreadyRun flag used for setOptions. is it true setOptions will reevaluate\n\t * @type {boolean}\n\t */\n\tvar alreadyRun = false;\n\n\t// Reusable, non-\"g\" Regexes\n\n\t// (Don't use \\s, to avoid matching non-breaking space.)\n\tvar regexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t regexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t regexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t regexTrailingCommas = /[,]+$/,\n\t regexNonNegativeInteger = /^\\d+$/,\n\n\t // ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t // Must include at least one digit.\n\t // According to spec tests any decimal point must be followed by a digit.\n\t // No leading plus sign is allowed.)\n\t // https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/;\n\n\tvar on = function(obj, evt, fn, capture) {\n\t\tif ( obj.addEventListener ) {\n\t\t\tobj.addEventListener(evt, fn, capture || false);\n\t\t} else if ( obj.attachEvent ) {\n\t\t\tobj.attachEvent( \"on\" + evt, fn);\n\t\t}\n\t};\n\n\t/**\n\t * simple memoize function:\n\t */\n\n\tvar memoize = function(fn) {\n\t\tvar cache = {};\n\t\treturn function(input) {\n\t\t\tif ( !(input in cache) ) {\n\t\t\t\tcache[ input ] = fn(input);\n\t\t\t}\n\t\t\treturn cache[ input ];\n\t\t};\n\t};\n\n\t// UTILITY FUNCTIONS\n\n\t// Manual is faster than RegEx\n\t// http://jsperf.com/whitespace-character/5\n\tfunction isSpace(c) {\n\t\treturn (c === \"\\u0020\" || // space\n\t\t c === \"\\u0009\" || // horizontal tab\n\t\t c === \"\\u000A\" || // new line\n\t\t c === \"\\u000C\" || // form feed\n\t\t c === \"\\u000D\"); // carriage return\n\t}\n\n\t/**\n\t * gets a mediaquery and returns a boolean or gets a css length and returns a number\n\t * @param css mediaqueries or css length\n\t * @returns {boolean|number}\n\t *\n\t * based on: https://gist.github.com/jonathantneal/db4f77009b155f083738\n\t */\n\tvar evalCSS = (function() {\n\n\t\tvar regLength = /^([\\d\\.]+)(em|vw|px)$/;\n\t\tvar replace = function() {\n\t\t\tvar args = arguments, index = 0, string = args[0];\n\t\t\twhile (++index in args) {\n\t\t\t\tstring = string.replace(args[index], args[++index]);\n\t\t\t}\n\t\t\treturn string;\n\t\t};\n\n\t\tvar buildStr = memoize(function(css) {\n\n\t\t\treturn \"return \" + replace((css || \"\").toLowerCase(),\n\t\t\t\t// interpret `and`\n\t\t\t\t/\\band\\b/g, \"&&\",\n\n\t\t\t\t// interpret `,`\n\t\t\t\t/,/g, \"||\",\n\n\t\t\t\t// interpret `min-` as >=\n\t\t\t\t/min-([a-z-\\s]+):/g, \"e.$1>=\",\n\n\t\t\t\t// interpret `max-` as <=\n\t\t\t\t/max-([a-z-\\s]+):/g, \"e.$1<=\",\n\n\t\t\t\t//calc value\n\t\t\t\t/calc([^)]+)/g, \"($1)\",\n\n\t\t\t\t// interpret css values\n\t\t\t\t/(\\d+[\\.]*[\\d]*)([a-z]+)/g, \"($1 * e.$2)\",\n\t\t\t\t//make eval less evil\n\t\t\t\t/^(?!(e.[a-z]|[0-9\\.&=|><\\+\\-\\*\\(\\)\\/])).*/ig, \"\"\n\t\t\t) + \";\";\n\t\t});\n\n\t\treturn function(css, length) {\n\t\t\tvar parsedLength;\n\t\t\tif (!(css in cssCache)) {\n\t\t\t\tcssCache[css] = false;\n\t\t\t\tif (length && (parsedLength = css.match( regLength ))) {\n\t\t\t\t\tcssCache[css] = parsedLength[ 1 ] * units[parsedLength[ 2 ]];\n\t\t\t\t} else {\n\t\t\t\t\t/*jshint evil:true */\n\t\t\t\t\ttry{\n\t\t\t\t\t\tcssCache[css] = new Function(\"e\", buildStr(css))(units);\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t\t/*jshint evil:false */\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cssCache[css];\n\t\t};\n\t})();\n\n\tvar setResolution = function( candidate, sizesattr ) {\n\t\tif ( candidate.w ) { // h = means height: || descriptor.type === 'h' do not handle yet...\n\t\t\tcandidate.cWidth = pf.calcListLength( sizesattr || \"100vw\" );\n\t\t\tcandidate.res = candidate.w / candidate.cWidth ;\n\t\t} else {\n\t\t\tcandidate.res = candidate.d;\n\t\t}\n\t\treturn candidate;\n\t};\n\n\t/**\n\t *\n\t * @param opt\n\t */\n\tvar picturefill = function( opt ) {\n\n\t\tif (!isSupportTestReady) {return;}\n\n\t\tvar elements, i, plen;\n\n\t\tvar options = opt || {};\n\n\t\tif ( options.elements && options.elements.nodeType === 1 ) {\n\t\t\tif ( options.elements.nodeName.toUpperCase() === \"IMG\" ) {\n\t\t\t\toptions.elements = [ options.elements ];\n\t\t\t} else {\n\t\t\t\toptions.context = options.elements;\n\t\t\t\toptions.elements = null;\n\t\t\t}\n\t\t}\n\n\t\telements = options.elements || pf.qsa( (options.context || document), ( options.reevaluate || options.reselect ) ? pf.sel : pf.selShort );\n\n\t\tif ( (plen = elements.length) ) {\n\n\t\t\tpf.setupRun( options );\n\t\t\talreadyRun = true;\n\n\t\t\t// Loop through all elements\n\t\t\tfor ( i = 0; i < plen; i++ ) {\n\t\t\t\tpf.fillImg(elements[ i ], options);\n\t\t\t}\n\n\t\t\tpf.teardownRun( options );\n\t\t}\n\t};\n\n\t/**\n\t * outputs a warning for the developer\n\t * @param {message}\n\t * @type {Function}\n\t */\n\twarn = ( window.console && console.warn ) ?\n\t\tfunction( message ) {\n\t\t\tconsole.warn( message );\n\t\t} :\n\t\tnoop\n\t;\n\n\tif ( !(curSrcProp in image) ) {\n\t\tcurSrcProp = \"src\";\n\t}\n\n\t// Add support for standard mime types.\n\ttypes[ \"image/jpeg\" ] = true;\n\ttypes[ \"image/gif\" ] = true;\n\ttypes[ \"image/png\" ] = true;\n\n\tfunction detectTypeSupport( type, typeUri ) {\n\t\t// based on Modernizr's lossless img-webp test\n\t\t// note: asynchronous\n\t\tvar image = new window.Image();\n\t\timage.onerror = function() {\n\t\t\ttypes[ type ] = false;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.onload = function() {\n\t\t\ttypes[ type ] = image.width === 1;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.src = typeUri;\n\t\treturn \"pending\";\n\t}\n\n\t// test svg support\n\ttypes[ \"image/svg+xml\" ] = document.implementation.hasFeature( \"http://www.w3.org/TR/SVG11/feature#Image\", \"1.1\" );\n\n\t/**\n\t * updates the internal vW property with the current viewport width in px\n\t */\n\tfunction updateMetrics() {\n\n\t\tisVwDirty = false;\n\t\tDPR = window.devicePixelRatio;\n\t\tcssCache = {};\n\t\tsizeLengthCache = {};\n\n\t\tpf.DPR = DPR || 1;\n\n\t\tunits.width = Math.max(window.innerWidth || 0, docElem.clientWidth);\n\t\tunits.height = Math.max(window.innerHeight || 0, docElem.clientHeight);\n\n\t\tunits.vw = units.width / 100;\n\t\tunits.vh = units.height / 100;\n\n\t\tevalId = [ units.height, units.width, DPR ].join(\"-\");\n\n\t\tunits.em = pf.getEmValue();\n\t\tunits.rem = units.em;\n\t}\n\n\tfunction chooseLowRes( lowerValue, higherValue, dprValue, isCached ) {\n\t\tvar bonusFactor, tooMuch, bonus, meanDensity;\n\n\t\t//experimental\n\t\tif (cfg.algorithm === \"saveData\" ){\n\t\t\tif ( lowerValue > 2.7 ) {\n\t\t\t\tmeanDensity = dprValue + 1;\n\t\t\t} else {\n\t\t\t\ttooMuch = higherValue - dprValue;\n\t\t\t\tbonusFactor = Math.pow(lowerValue - 0.6, 1.5);\n\n\t\t\t\tbonus = tooMuch * bonusFactor;\n\n\t\t\t\tif (isCached) {\n\t\t\t\t\tbonus += 0.1 * bonusFactor;\n\t\t\t\t}\n\n\t\t\t\tmeanDensity = lowerValue + bonus;\n\t\t\t}\n\t\t} else {\n\t\t\tmeanDensity = (dprValue > 1) ?\n\t\t\t\tMath.sqrt(lowerValue * higherValue) :\n\t\t\t\tlowerValue;\n\t\t}\n\n\t\treturn meanDensity > dprValue;\n\t}\n\n\tfunction applyBestCandidate( img ) {\n\t\tvar srcSetCandidates;\n\t\tvar matchingSet = pf.getSet( img );\n\t\tvar evaluated = false;\n\t\tif ( matchingSet !== \"pending\" ) {\n\t\t\tevaluated = evalId;\n\t\t\tif ( matchingSet ) {\n\t\t\t\tsrcSetCandidates = pf.setRes( matchingSet );\n\t\t\t\tpf.applySetCandidate( srcSetCandidates, img );\n\t\t\t}\n\t\t}\n\t\timg[ pf.ns ].evaled = evaluated;\n\t}\n\n\tfunction ascendingSort( a, b ) {\n\t\treturn a.res - b.res;\n\t}\n\n\tfunction setSrcToCur( img, src, set ) {\n\t\tvar candidate;\n\t\tif ( !set && src ) {\n\t\t\tset = img[ pf.ns ].sets;\n\t\t\tset = set && set[set.length - 1];\n\t\t}\n\n\t\tcandidate = getCandidateForSrc(src, set);\n\n\t\tif ( candidate ) {\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\timg[ pf.ns ].curSrc = src;\n\t\t\timg[ pf.ns ].curCan = candidate;\n\n\t\t\tif ( !candidate.res ) {\n\t\t\t\tsetResolution( candidate, candidate.set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getCandidateForSrc( src, set ) {\n\t\tvar i, candidate, candidates;\n\t\tif ( src && set ) {\n\t\t\tcandidates = pf.parseSet( set );\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\tfor ( i = 0; i < candidates.length; i++ ) {\n\t\t\t\tif ( src === pf.makeUrl(candidates[ i ].url) ) {\n\t\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getAllSourceElements( picture, candidates ) {\n\t\tvar i, len, source, srcset;\n\n\t\t// SPEC mismatch intended for size and perf:\n\t\t// actually only source elements preceding the img should be used\n\t\t// also note: don't use qsa here, because IE8 sometimes doesn't like source as the key part in a selector\n\t\tvar sources = picture.getElementsByTagName( \"source\" );\n\n\t\tfor ( i = 0, len = sources.length; i < len; i++ ) {\n\t\t\tsource = sources[ i ];\n\t\t\tsource[ pf.ns ] = true;\n\t\t\tsrcset = source.getAttribute( \"srcset\" );\n\n\t\t\t// if source does not have a srcset attribute, skip\n\t\t\tif ( srcset ) {\n\t\t\t\tcandidates.push( {\n\t\t\t\t\tsrcset: srcset,\n\t\t\t\t\tmedia: source.getAttribute( \"media\" ),\n\t\t\t\t\ttype: source.getAttribute( \"type\" ),\n\t\t\t\t\tsizes: source.getAttribute( \"sizes\" )\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Srcset Parser\n\t * By Alex Bell | MIT License\n\t *\n\t * @returns Array [{url: _, d: _, w: _, h:_, set:_(????)}, ...]\n\t *\n\t * Based super duper closely on the reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n\t */\n\n\t// 1. Let input be the value passed to this algorithm.\n\t// (TO-DO : Explain what \"set\" argument is here. Maybe choose a more\n\t// descriptive & more searchable name. Since passing the \"set\" in really has\n\t// nothing to do with parsing proper, I would prefer this assignment eventually\n\t// go in an external fn.)\n\tfunction parseSrcset(input, set) {\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t match = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\t\t url,\n\t\t descriptors,\n\t\t currentDescriptor,\n\t\t state,\n\t\t c,\n\n\t\t // 2. Let position be a pointer into input, initially pointing at the start\n\t\t // of the string.\n\t\t pos = 0,\n\n\t\t // 3. Let candidates be an initially empty source set.\n\t\t candidates = [];\n\n\t\t/**\n\t\t* Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t* @return undefined\n\t\t*/\n\t\t// (Declared outside of the while loop so that it's only created once.\n\t\t// (This fn is defined before it is used, in order to pass JSHINT.\n\t\t// Unfortunately this breaks the sequencing of the spec comments. :/ )\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t// 10. Let width be absent.\n\t\t\t// 11. Let density be absent.\n\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t w, d, h, i,\n\t\t\t candidate = {},\n\t\t\t desc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tif (!h && !d && !w) {candidate.d = 1;}\n\t\t\t\tif (candidate.d === 1) {set.has1x = true;}\n\t\t\t\tcandidate.set = set;\n\n\t\t\t\tcandidates.push(candidate);\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t\t/**\n\t\t* Tokenizes descriptor properties prior to parsing\n\t\t* Returns undefined.\n\t\t* (Again, this fn is defined before it is used, in order to pass JSHINT.\n\t\t* Unfortunately this breaks the logical sequencing of the spec comments. :/ )\n\t\t*/\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t// Do the following depending on the value of state.\n\t\t\t\t// For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t// that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t // Space character\n\t\t\t\t // If current descriptor is not empty, append current descriptor to\n\t\t\t\t // descriptors and let current descriptor be the empty string.\n\t\t\t\t // Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t// characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t// were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t// and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t// more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\t}\n\n\t/*\n\t * Sizes Parser\n\t *\n\t * By Alex Bell | MIT License\n\t *\n\t * Non-strict but accurate and lightweight JS Parser for the string value <img sizes=\"here\">\n\t *\n\t * Reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-sizes-attribute\n\t *\n\t * Most comments are copied in directly from the spec\n\t * (except for comments in parens).\n\t *\n\t * Grammar is:\n\t * <source-size-list> = <source-size># [ , <source-size-value> ]? | <source-size-value>\n\t * <source-size> = <media-condition> <source-size-value>\n\t * <source-size-value> = <length>\n\t * http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#attr-img-sizes\n\t *\n\t * E.g. \"(max-width: 30em) 100vw, (max-width: 50em) 70vw, 100vw\"\n\t * or \"(min-width: 30em), calc(30vw - 15px)\" or just \"30vw\"\n\t *\n\t * Returns the first valid <css-length> with a media condition that evaluates to true,\n\t * or \"100vw\" if all valid media conditions evaluate to false.\n\t *\n\t */\n\n\tfunction parseSizes(strValue) {\n\n\t\t// (Percentage CSS lengths are not allowed in this case, to avoid confusion:\n\t\t// https://html.spec.whatwg.org/multipage/embedded-content.html#valid-source-size-list\n\t\t// CSS allows a single optional plus or minus sign:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#numbers\n\t\t// CSS is ASCII case-insensitive:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#characters )\n\t\t// Spec allows exponential notation for <number> type:\n\t\t// http://dev.w3.org/csswg/css-values/#numbers\n\t\tvar regexCssLengthWithUnits = /^(?:[+-]?[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i;\n\n\t\t// (This is a quick and lenient test. Because of optional unlimited-depth internal\n\t\t// grouping parens and strict spacing rules, this could get very complicated.)\n\t\tvar regexCssCalc = /^calc\\((?:[0-9a-z \\.\\+\\-\\*\\/\\(\\)]+)\\)$/i;\n\n\t\tvar i;\n\t\tvar unparsedSizesList;\n\t\tvar unparsedSizesListLength;\n\t\tvar unparsedSize;\n\t\tvar lastComponentValue;\n\t\tvar size;\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// (Toy CSS parser. The goals here are:\n\t\t// 1) expansive test coverage without the weight of a full CSS parser.\n\t\t// 2) Avoiding regex wherever convenient.\n\t\t// Quick tests: http://jsfiddle.net/gtntL4gr/3/\n\t\t// Returns an array of arrays.)\n\t\tfunction parseComponentValues(str) {\n\t\t\tvar chrctr;\n\t\t\tvar component = \"\";\n\t\t\tvar componentArray = [];\n\t\t\tvar listArray = [];\n\t\t\tvar parenDepth = 0;\n\t\t\tvar pos = 0;\n\t\t\tvar inComment = false;\n\n\t\t\tfunction pushComponent() {\n\t\t\t\tif (component) {\n\t\t\t\t\tcomponentArray.push(component);\n\t\t\t\t\tcomponent = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction pushComponentArray() {\n\t\t\t\tif (componentArray[0]) {\n\t\t\t\t\tlistArray.push(componentArray);\n\t\t\t\t\tcomponentArray = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// (Loop forwards from the beginning of the string.)\n\t\t\twhile (true) {\n\t\t\t\tchrctr = str.charAt(pos);\n\n\t\t\t\tif (chrctr === \"\") { // ( End of string reached.)\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\treturn listArray;\n\t\t\t\t} else if (inComment) {\n\t\t\t\t\tif ((chrctr === \"*\") && (str[pos + 1] === \"/\")) { // (At end of a comment.)\n\t\t\t\t\t\tinComment = false;\n\t\t\t\t\t\tpos += 2;\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpos += 1; // (Skip all characters inside comments.)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (isSpace(chrctr)) {\n\t\t\t\t\t// (If previous character in loop was also a space, or if\n\t\t\t\t\t// at the beginning of the string, do not add space char to\n\t\t\t\t\t// component.)\n\t\t\t\t\tif ( (str.charAt(pos - 1) && isSpace( str.charAt(pos - 1) ) ) || !component ) {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (parenDepth === 0) {\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tpos +=1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// (Replace any space character with a plain space for legibility.)\n\t\t\t\t\t\tchrctr = \" \";\n\t\t\t\t\t}\n\t\t\t\t} else if (chrctr === \"(\") {\n\t\t\t\t\tparenDepth += 1;\n\t\t\t\t} else if (chrctr === \")\") {\n\t\t\t\t\tparenDepth -= 1;\n\t\t\t\t} else if (chrctr === \",\") {\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\tpos += 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if ( (chrctr === \"/\") && (str.charAt(pos + 1) === \"*\") ) {\n\t\t\t\t\tinComment = true;\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcomponent = component + chrctr;\n\t\t\t\tpos += 1;\n\t\t\t}\n\t\t}\n\n\t\tfunction isValidNonNegativeSourceSizeValue(s) {\n\t\t\tif (regexCssLengthWithUnits.test(s) && (parseFloat(s) >= 0)) {return true;}\n\t\t\tif (regexCssCalc.test(s)) {return true;}\n\t\t\t// ( http://www.w3.org/TR/CSS2/syndata.html#numbers says:\n\t\t\t// \"-0 is equivalent to 0 and is not a negative number.\" which means that\n\t\t\t// unitless zero and unitless negative zero must be accepted as special cases.)\n\t\t\tif ((s === \"0\") || (s === \"-0\") || (s === \"+0\")) {return true;}\n\t\t\treturn false;\n\t\t}\n\n\t\t// When asked to parse a sizes attribute from an element, parse a\n\t\t// comma-separated list of component values from the value of the element's\n\t\t// sizes attribute (or the empty string, if the attribute is absent), and let\n\t\t// unparsed sizes list be the result.\n\t\t// http://dev.w3.org/csswg/css-syntax/#parse-comma-separated-list-of-component-values\n\n\t\tunparsedSizesList = parseComponentValues(strValue);\n\t\tunparsedSizesListLength = unparsedSizesList.length;\n\n\t\t// For each unparsed size in unparsed sizes list:\n\t\tfor (i = 0; i < unparsedSizesListLength; i++) {\n\t\t\tunparsedSize = unparsedSizesList[i];\n\n\t\t\t// 1. Remove all consecutive <whitespace-token>s from the end of unparsed size.\n\t\t\t// ( parseComponentValues() already omits spaces outside of parens. )\n\n\t\t\t// If unparsed size is now empty, that is a parse error; continue to the next\n\t\t\t// iteration of this algorithm.\n\t\t\t// ( parseComponentValues() won't push an empty array. )\n\n\t\t\t// 2. If the last component value in unparsed size is a valid non-negative\n\t\t\t// <source-size-value>, let size be its value and remove the component value\n\t\t\t// from unparsed size. Any CSS function other than the calc() function is\n\t\t\t// invalid. Otherwise, there is a parse error; continue to the next iteration\n\t\t\t// of this algorithm.\n\t\t\t// http://dev.w3.org/csswg/css-syntax/#parse-component-value\n\t\t\tlastComponentValue = unparsedSize[unparsedSize.length - 1];\n\n\t\t\tif (isValidNonNegativeSourceSizeValue(lastComponentValue)) {\n\t\t\t\tsize = lastComponentValue;\n\t\t\t\tunparsedSize.pop();\n\t\t\t} else {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 3. Remove all consecutive <whitespace-token>s from the end of unparsed\n\t\t\t// size. If unparsed size is now empty, return size and exit this algorithm.\n\t\t\t// If this was not the last item in unparsed sizes list, that is a parse error.\n\t\t\tif (unparsedSize.length === 0) {\n\t\t\t\treturn size;\n\t\t\t}\n\n\t\t\t// 4. Parse the remaining component values in unparsed size as a\n\t\t\t// <media-condition>. If it does not parse correctly, or it does parse\n\t\t\t// correctly but the <media-condition> evaluates to false, continue to the\n\t\t\t// next iteration of this algorithm.\n\t\t\t// (Parsing all possible compound media conditions in JS is heavy, complicated,\n\t\t\t// and the payoff is unclear. Is there ever an situation where the\n\t\t\t// media condition parses incorrectly but still somehow evaluates to true?\n\t\t\t// Can we just rely on the browser/polyfill to do it?)\n\t\t\tunparsedSize = unparsedSize.join(\" \");\n\t\t\tif (!(pf.matchesMedia( unparsedSize ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 5. Return size and exit this algorithm.\n\t\t\treturn size;\n\t\t}\n\n\t\t// If the above algorithm exhausts unparsed sizes list without returning a\n\t\t// size value, return 100vw.\n\t\treturn \"100vw\";\n\t}\n\n\t// namespace\n\tpf.ns = (\"pf\" + new Date().getTime()).substr(0, 9);\n\n\t// srcset support test\n\tpf.supSrcset = \"srcset\" in image;\n\tpf.supSizes = \"sizes\" in image;\n\tpf.supPicture = !!window.HTMLPictureElement;\n\n\t// UC browser does claim to support srcset and picture, but not sizes,\n\t// this extended test reveals the browser does support nothing\n\tif (pf.supSrcset && pf.supPicture && !pf.supSizes) {\n\t\t(function(image2) {\n\t\t\timage.srcset = \"data:,a\";\n\t\t\timage2.src = \"data:,a\";\n\t\t\tpf.supSrcset = image.complete === image2.complete;\n\t\t\tpf.supPicture = pf.supSrcset && pf.supPicture;\n\t\t})(document.createElement(\"img\"));\n\t}\n\n\t// Safari9 has basic support for sizes, but does't expose the `sizes` idl attribute\n\tif (pf.supSrcset && !pf.supSizes) {\n\n\t\t(function() {\n\t\t\tvar width2 = \"data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==\";\n\t\t\tvar width1 = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\t\t\tvar img = document.createElement(\"img\");\n\t\t\tvar test = function() {\n\t\t\t\tvar width = img.width;\n\n\t\t\t\tif (width === 2) {\n\t\t\t\t\tpf.supSizes = true;\n\t\t\t\t}\n\n\t\t\t\talwaysCheckWDescriptor = pf.supSrcset && !pf.supSizes;\n\n\t\t\t\tisSupportTestReady = true;\n\t\t\t\t// force async\n\t\t\t\tsetTimeout(picturefill);\n\t\t\t};\n\n\t\t\timg.onload = test;\n\t\t\timg.onerror = test;\n\t\t\timg.setAttribute(\"sizes\", \"9px\");\n\n\t\t\timg.srcset = width1 + \" 1w,\" + width2 + \" 9w\";\n\t\t\timg.src = width1;\n\t\t})();\n\n\t} else {\n\t\tisSupportTestReady = true;\n\t}\n\n\t// using pf.qsa instead of dom traversing does scale much better,\n\t// especially on sites mixing responsive and non-responsive images\n\tpf.selShort = \"picture>img,img[srcset]\";\n\tpf.sel = pf.selShort;\n\tpf.cfg = cfg;\n\n\t/**\n\t * Shortcut property for `devicePixelRatio` ( for easy overriding in tests )\n\t */\n\tpf.DPR = (DPR || 1 );\n\tpf.u = units;\n\n\t// container of supported mime types that one might need to qualify before using\n\tpf.types = types;\n\n\tpf.setSize = noop;\n\n\t/**\n\t * Gets a string and returns the absolute URL\n\t * @param src\n\t * @returns {String} absolute URL\n\t */\n\n\tpf.makeUrl = memoize(function(src) {\n\t\tanchor.href = src;\n\t\treturn anchor.href;\n\t});\n\n\t/**\n\t * Gets a DOM element or document and a selctor and returns the found matches\n\t * Can be extended with jQuery/Sizzle for IE7 support\n\t * @param context\n\t * @param sel\n\t * @returns {NodeList|Array}\n\t */\n\tpf.qsa = function(context, sel) {\n\t\treturn ( \"querySelector\" in context ) ? context.querySelectorAll(sel) : [];\n\t};\n\n\t/**\n\t * Shortcut method for matchMedia ( for easy overriding in tests )\n\t * wether native or pf.mMQ is used will be decided lazy on first call\n\t * @returns {boolean}\n\t */\n\tpf.matchesMedia = function() {\n\t\tif ( window.matchMedia && (matchMedia( \"(min-width: 0.1em)\" ) || {}).matches ) {\n\t\t\tpf.matchesMedia = function( media ) {\n\t\t\t\treturn !media || ( matchMedia( media ).matches );\n\t\t\t};\n\t\t} else {\n\t\t\tpf.matchesMedia = pf.mMQ;\n\t\t}\n\n\t\treturn pf.matchesMedia.apply( this, arguments );\n\t};\n\n\t/**\n\t * A simplified matchMedia implementation for IE8 and IE9\n\t * handles only min-width/max-width with px or em values\n\t * @param media\n\t * @returns {boolean}\n\t */\n\tpf.mMQ = function( media ) {\n\t\treturn media ? evalCSS(media) : true;\n\t};\n\n\t/**\n\t * Returns the calculated length in css pixel from the given sourceSizeValue\n\t * http://dev.w3.org/csswg/css-values-3/#length-value\n\t * intended Spec mismatches:\n\t * * Does not check for invalid use of CSS functions\n\t * * Does handle a computed length of 0 the same as a negative and therefore invalid value\n\t * @param sourceSizeValue\n\t * @returns {Number}\n\t */\n\tpf.calcLength = function( sourceSizeValue ) {\n\n\t\tvar value = evalCSS(sourceSizeValue, true) || false;\n\t\tif (value < 0) {\n\t\t\tvalue = false;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\t/**\n\t * Takes a type string and checks if its supported\n\t */\n\n\tpf.supportsType = function( type ) {\n\t\treturn ( type ) ? types[ type ] : true;\n\t};\n\n\t/**\n\t * Parses a sourceSize into mediaCondition (media) and sourceSizeValue (length)\n\t * @param sourceSizeStr\n\t * @returns {*}\n\t */\n\tpf.parseSize = memoize(function( sourceSizeStr ) {\n\t\tvar match = ( sourceSizeStr || \"\" ).match(regSize);\n\t\treturn {\n\t\t\tmedia: match && match[1],\n\t\t\tlength: match && match[2]\n\t\t};\n\t});\n\n\tpf.parseSet = function( set ) {\n\t\tif ( !set.cands ) {\n\t\t\tset.cands = parseSrcset(set.srcset, set);\n\t\t}\n\t\treturn set.cands;\n\t};\n\n\t/**\n\t * returns 1em in css px for html/body default size\n\t * function taken from respondjs\n\t * @returns {*|number}\n\t */\n\tpf.getEmValue = function() {\n\t\tvar body;\n\t\tif ( !eminpx && (body = document.body) ) {\n\t\t\tvar div = document.createElement( \"div\" ),\n\t\t\t\toriginalHTMLCSS = docElem.style.cssText,\n\t\t\t\toriginalBodyCSS = body.style.cssText;\n\n\t\t\tdiv.style.cssText = baseStyle;\n\n\t\t\t// 1em in a media query is the value of the default font size of the browser\n\t\t\t// reset docElem and body to ensure the correct value is returned\n\t\t\tdocElem.style.cssText = fsCss;\n\t\t\tbody.style.cssText = fsCss;\n\n\t\t\tbody.appendChild( div );\n\t\t\teminpx = div.offsetWidth;\n\t\t\tbody.removeChild( div );\n\n\t\t\t//also update eminpx before returning\n\t\t\teminpx = parseFloat( eminpx, 10 );\n\n\t\t\t// restore the original values\n\t\t\tdocElem.style.cssText = originalHTMLCSS;\n\t\t\tbody.style.cssText = originalBodyCSS;\n\n\t\t}\n\t\treturn eminpx || 16;\n\t};\n\n\t/**\n\t * Takes a string of sizes and returns the width in pixels as a number\n\t */\n\tpf.calcListLength = function( sourceSizeListStr ) {\n\t\t// Split up source size list, ie ( max-width: 30em ) 100%, ( max-width: 50em ) 50%, 33%\n\t\t//\n\t\t// or (min-width:30em) calc(30% - 15px)\n\t\tif ( !(sourceSizeListStr in sizeLengthCache) || cfg.uT ) {\n\t\t\tvar winningLength = pf.calcLength( parseSizes( sourceSizeListStr ) );\n\n\t\t\tsizeLengthCache[ sourceSizeListStr ] = !winningLength ? units.width : winningLength;\n\t\t}\n\n\t\treturn sizeLengthCache[ sourceSizeListStr ];\n\t};\n\n\t/**\n\t * Takes a candidate object with a srcset property in the form of url/\n\t * ex. \"images/pic-medium.png 1x, images/pic-medium-2x.png 2x\" or\n\t * \"images/pic-medium.png 400w, images/pic-medium-2x.png 800w\" or\n\t * \"images/pic-small.png\"\n\t * Get an array of image candidates in the form of\n\t * {url: \"/foo/bar.png\", resolution: 1}\n\t * where resolution is http://dev.w3.org/csswg/css-values-3/#resolution-value\n\t * If sizes is specified, res is calculated\n\t */\n\tpf.setRes = function( set ) {\n\t\tvar candidates;\n\t\tif ( set ) {\n\n\t\t\tcandidates = pf.parseSet( set );\n\n\t\t\tfor ( var i = 0, len = candidates.length; i < len; i++ ) {\n\t\t\t\tsetResolution( candidates[ i ], set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidates;\n\t};\n\n\tpf.setRes.res = setResolution;\n\n\tpf.applySetCandidate = function( candidates, img ) {\n\t\tif ( !candidates.length ) {return;}\n\t\tvar candidate,\n\t\t\ti,\n\t\t\tj,\n\t\t\tlength,\n\t\t\tbestCandidate,\n\t\t\tcurSrc,\n\t\t\tcurCan,\n\t\t\tcandidateSrc,\n\t\t\tabortCurSrc;\n\n\t\tvar imageData = img[ pf.ns ];\n\t\tvar dpr = pf.DPR;\n\n\t\tcurSrc = imageData.curSrc || img[curSrcProp];\n\n\t\tcurCan = imageData.curCan || setSrcToCur(img, curSrc, candidates[0].set);\n\n\t\t// if we have a current source, we might either become lazy or give this source some advantage\n\t\tif ( curCan && curCan.set === candidates[ 0 ].set ) {\n\n\t\t\t// if browser can abort image request and the image has a higher pixel density than needed\n\t\t\t// and this image isn't downloaded yet, we skip next part and try to save bandwidth\n\t\t\tabortCurSrc = (supportAbort && !img.complete && curCan.res - 0.1 > dpr);\n\n\t\t\tif ( !abortCurSrc ) {\n\t\t\t\tcurCan.cached = true;\n\n\t\t\t\t// if current candidate is \"best\", \"better\" or \"okay\",\n\t\t\t\t// set it to bestCandidate\n\t\t\t\tif ( curCan.res >= dpr ) {\n\t\t\t\t\tbestCandidate = curCan;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( !bestCandidate ) {\n\n\t\t\tcandidates.sort( ascendingSort );\n\n\t\t\tlength = candidates.length;\n\t\t\tbestCandidate = candidates[ length - 1 ];\n\n\t\t\tfor ( i = 0; i < length; i++ ) {\n\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\tif ( candidate.res >= dpr ) {\n\t\t\t\t\tj = i - 1;\n\n\t\t\t\t\t// we have found the perfect candidate,\n\t\t\t\t\t// but let's improve this a little bit with some assumptions ;-)\n\t\t\t\t\tif (candidates[ j ] &&\n\t\t\t\t\t\t(abortCurSrc || curSrc !== pf.makeUrl( candidate.url )) &&\n\t\t\t\t\t\tchooseLowRes(candidates[ j ].res, candidate.res, dpr, candidates[ j ].cached)) {\n\n\t\t\t\t\t\tbestCandidate = candidates[ j ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbestCandidate = candidate;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( bestCandidate ) {\n\n\t\t\tcandidateSrc = pf.makeUrl( bestCandidate.url );\n\n\t\t\timageData.curSrc = candidateSrc;\n\t\t\timageData.curCan = bestCandidate;\n\n\t\t\tif ( candidateSrc !== curSrc ) {\n\t\t\t\tpf.setSrc( img, bestCandidate );\n\t\t\t}\n\t\t\tpf.setSize( img );\n\t\t}\n\t};\n\n\tpf.setSrc = function( img, bestCandidate ) {\n\t\tvar origWidth;\n\t\timg.src = bestCandidate.url;\n\n\t\t// although this is a specific Safari issue, we don't want to take too much different code paths\n\t\tif ( bestCandidate.set.type === \"image/svg+xml\" ) {\n\t\t\torigWidth = img.style.width;\n\t\t\timg.style.width = (img.offsetWidth + 1) + \"px\";\n\n\t\t\t// next line only should trigger a repaint\n\t\t\t// if... is only done to trick dead code removal\n\t\t\tif ( img.offsetWidth + 1 ) {\n\t\t\t\timg.style.width = origWidth;\n\t\t\t}\n\t\t}\n\t};\n\n\tpf.getSet = function( img ) {\n\t\tvar i, set, supportsType;\n\t\tvar match = false;\n\t\tvar sets = img [ pf.ns ].sets;\n\n\t\tfor ( i = 0; i < sets.length && !match; i++ ) {\n\t\t\tset = sets[i];\n\n\t\t\tif ( !set.srcset || !pf.matchesMedia( set.media ) || !(supportsType = pf.supportsType( set.type )) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( supportsType === \"pending\" ) {\n\t\t\t\tset = supportsType;\n\t\t\t}\n\n\t\t\tmatch = set;\n\t\t\tbreak;\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tpf.parseSets = function( element, parent, options ) {\n\t\tvar srcsetAttribute, imageSet, isWDescripor, srcsetParsed;\n\n\t\tvar hasPicture = parent && parent.nodeName.toUpperCase() === \"PICTURE\";\n\t\tvar imageData = element[ pf.ns ];\n\n\t\tif ( imageData.src === undefined || options.src ) {\n\t\t\timageData.src = getImgAttr.call( element, \"src\" );\n\t\t\tif ( imageData.src ) {\n\t\t\t\tsetImgAttr.call( element, srcAttr, imageData.src );\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcAttr );\n\t\t\t}\n\t\t}\n\n\t\tif ( imageData.srcset === undefined || options.srcset || !pf.supSrcset || element.srcset ) {\n\t\t\tsrcsetAttribute = getImgAttr.call( element, \"srcset\" );\n\t\t\timageData.srcset = srcsetAttribute;\n\t\t\tsrcsetParsed = true;\n\t\t}\n\n\t\timageData.sets = [];\n\n\t\tif ( hasPicture ) {\n\t\t\timageData.pic = true;\n\t\t\tgetAllSourceElements( parent, imageData.sets );\n\t\t}\n\n\t\tif ( imageData.srcset ) {\n\t\t\timageSet = {\n\t\t\t\tsrcset: imageData.srcset,\n\t\t\t\tsizes: getImgAttr.call( element, \"sizes\" )\n\t\t\t};\n\n\t\t\timageData.sets.push( imageSet );\n\n\t\t\tisWDescripor = (alwaysCheckWDescriptor || imageData.src) && regWDesc.test(imageData.srcset || \"\");\n\n\t\t\t// add normal src as candidate, if source has no w descriptor\n\t\t\tif ( !isWDescripor && imageData.src && !getCandidateForSrc(imageData.src, imageSet) && !imageSet.has1x ) {\n\t\t\t\timageSet.srcset += \", \" + imageData.src;\n\t\t\t\timageSet.cands.push({\n\t\t\t\t\turl: imageData.src,\n\t\t\t\t\td: 1,\n\t\t\t\t\tset: imageSet\n\t\t\t\t});\n\t\t\t}\n\n\t\t} else if ( imageData.src ) {\n\t\t\timageData.sets.push( {\n\t\t\t\tsrcset: imageData.src,\n\t\t\t\tsizes: null\n\t\t\t} );\n\t\t}\n\n\t\timageData.curCan = null;\n\t\timageData.curSrc = undefined;\n\n\t\t// if img has picture or the srcset was removed or has a srcset and does not support srcset at all\n\t\t// or has a w descriptor (and does not support sizes) set support to false to evaluate\n\t\timageData.supported = !( hasPicture || ( imageSet && !pf.supSrcset ) || (isWDescripor && !pf.supSizes) );\n\n\t\tif ( srcsetParsed && pf.supSrcset && !imageData.supported ) {\n\t\t\tif ( srcsetAttribute ) {\n\t\t\t\tsetImgAttr.call( element, srcsetAttr, srcsetAttribute );\n\t\t\t\telement.srcset = \"\";\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcsetAttr );\n\t\t\t}\n\t\t}\n\n\t\tif (imageData.supported && !imageData.srcset && ((!imageData.src && element.src) || element.src !== pf.makeUrl(imageData.src))) {\n\t\t\tif (imageData.src === null) {\n\t\t\t\telement.removeAttribute(\"src\");\n\t\t\t} else {\n\t\t\t\telement.src = imageData.src;\n\t\t\t}\n\t\t}\n\n\t\timageData.parsed = true;\n\t};\n\n\tpf.fillImg = function(element, options) {\n\t\tvar imageData;\n\t\tvar extreme = options.reselect || options.reevaluate;\n\n\t\t// expando for caching data on the img\n\t\tif ( !element[ pf.ns ] ) {\n\t\t\telement[ pf.ns ] = {};\n\t\t}\n\n\t\timageData = element[ pf.ns ];\n\n\t\t// if the element has already been evaluated, skip it\n\t\t// unless `options.reevaluate` is set to true ( this, for example,\n\t\t// is set to true when running `picturefill` on `resize` ).\n\t\tif ( !extreme && imageData.evaled === evalId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !imageData.parsed || options.reevaluate ) {\n\t\t\tpf.parseSets( element, element.parentNode, options );\n\t\t}\n\n\t\tif ( !imageData.supported ) {\n\t\t\tapplyBestCandidate( element );\n\t\t} else {\n\t\t\timageData.evaled = evalId;\n\t\t}\n\t};\n\n\tpf.setupRun = function() {\n\t\tif ( !alreadyRun || isVwDirty || (DPR !== window.devicePixelRatio) ) {\n\t\t\tupdateMetrics();\n\t\t}\n\t};\n\n\t// If picture is supported, well, that's awesome.\n\tif ( pf.supPicture ) {\n\t\tpicturefill = noop;\n\t\tpf.fillImg = noop;\n\t} else {\n\n\t\t // Set up picture polyfill by polling the document\n\t\t(function() {\n\t\t\tvar isDomReady;\n\t\t\tvar regReady = window.attachEvent ? /d$|^c/ : /d$|^c|^i/;\n\n\t\t\tvar run = function() {\n\t\t\t\tvar readyState = document.readyState || \"\";\n\n\t\t\t\ttimerId = setTimeout(run, readyState === \"loading\" ? 200 : 999);\n\t\t\t\tif ( document.body ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t\tisDomReady = isDomReady || regReady.test(readyState);\n\t\t\t\t\tif ( isDomReady ) {\n\t\t\t\t\t\tclearTimeout( timerId );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar timerId = setTimeout(run, document.body ? 9 : 99);\n\n\t\t\t// Also attach picturefill on resize and readystatechange\n\t\t\t// http://modernjavascript.blogspot.com/2013/08/building-better-debounce.html\n\t\t\tvar debounce = function(func, wait) {\n\t\t\t\tvar timeout, timestamp;\n\t\t\t\tvar later = function() {\n\t\t\t\t\tvar last = (new Date()) - timestamp;\n\n\t\t\t\t\tif (last < wait) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait - last);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimeout = null;\n\t\t\t\t\t\tfunc();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn function() {\n\t\t\t\t\ttimestamp = new Date();\n\n\t\t\t\t\tif (!timeout) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t\tvar lastClientWidth = docElem.clientHeight;\n\t\t\tvar onResize = function() {\n\t\t\t\tisVwDirty = Math.max(window.innerWidth || 0, docElem.clientWidth) !== units.width || docElem.clientHeight !== lastClientWidth;\n\t\t\t\tlastClientWidth = docElem.clientHeight;\n\t\t\t\tif ( isVwDirty ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ton( window, \"resize\", debounce(onResize, 99 ) );\n\t\t\ton( document, \"readystatechange\", run );\n\t\t})();\n\t}\n\n\tpf.picturefill = picturefill;\n\t//use this internally for easy monkey patching/performance testing\n\tpf.fillImgs = picturefill;\n\tpf.teardownRun = noop;\n\n\t/* expose methods for testing */\n\tpicturefill._ = pf;\n\n\twindow.picturefillCFG = {\n\t\tpf: pf,\n\t\tpush: function(args) {\n\t\t\tvar name = args.shift();\n\t\t\tif (typeof pf[name] === \"function\") {\n\t\t\t\tpf[name].apply(pf, args);\n\t\t\t} else {\n\t\t\t\tcfg[name] = args[0];\n\t\t\t\tif (alreadyRun) {\n\t\t\t\t\tpf.fillImgs( { reselect: true } );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\twhile (setOptions && setOptions.length) {\n\t\twindow.picturefillCFG.push(setOptions.shift());\n\t}\n\n\t/* expose picturefill */\n\twindow.picturefill = picturefill;\n\n\t/* expose picturefill */\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// CommonJS, just export\n\t\tmodule.exports = picturefill;\n\t} else if ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD support\n\t\tdefine( \"picturefill\", function() { return picturefill; } );\n\t}\n\n\t// IE8 evals this sync, so it must be the last thing we do\n\tif ( !pf.supPicture ) {\n\t\ttypes[ \"image/webp\" ] = detectTypeSupport(\"image/webp\", \"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==\" );\n\t}\n\n} )( window, document );\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/stefanmichalke/Projekte/innogy_frontend/phoenix_integration/node_modules/picturefill/dist/picturefill.js\n// module id = 700\n// module chunks = 16"],"sourceRoot":""}