{ "version": 3, "sources": [ "node_modules/browserify/node_modules/browser-pack/_prelude.js", "/Users/flavio.barbosa/Development/clappr/src/main.js", "node_modules/browserify/node_modules/path-browserify/index.js", "node_modules/mousetrap/mousetrap.js", "node_modules/scrollmonitor/scrollMonitor.js", "node_modules/traceur/bin/traceur-runtime.js", "/Users/flavio.barbosa/Development/clappr/src/base/jst.js", "/Users/flavio.barbosa/Development/clappr/src/base/styler.js", "/Users/flavio.barbosa/Development/clappr/src/base/utils.js", "/Users/flavio.barbosa/Development/clappr/src/components/container/container.js", "/Users/flavio.barbosa/Development/clappr/src/components/container_factory/container_factory.js", "/Users/flavio.barbosa/Development/clappr/src/components/container_factory/index.js", "/Users/flavio.barbosa/Development/clappr/src/components/core/core.js", "/Users/flavio.barbosa/Development/clappr/src/components/core_factory/core_factory.js", "/Users/flavio.barbosa/Development/clappr/src/components/core_factory/index.js", "/Users/flavio.barbosa/Development/clappr/src/components/loader/index.js", "/Users/flavio.barbosa/Development/clappr/src/components/loader/loader.js", "/Users/flavio.barbosa/Development/clappr/src/components/media_control/media_control.js", "/Users/flavio.barbosa/Development/clappr/src/components/player.js", "/Users/flavio.barbosa/Development/clappr/src/components/seek_time/index.js", "/Users/flavio.barbosa/Development/clappr/src/components/seek_time/seek_time.js", "/Users/flavio.barbosa/Development/clappr/src/playbacks/flash/flash.js", "/Users/flavio.barbosa/Development/clappr/src/playbacks/hls/hls.js", "/Users/flavio.barbosa/Development/clappr/src/playbacks/html5_audio/html5_audio.js", "/Users/flavio.barbosa/Development/clappr/src/playbacks/html5_video/html5_video.js", "/Users/flavio.barbosa/Development/clappr/src/playbacks/html_img/html_img.js", "/Users/flavio.barbosa/Development/clappr/src/playbacks/no_op/index.js", "/Users/flavio.barbosa/Development/clappr/src/playbacks/no_op/no_op.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/click_to_pause/click_to_pause.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/click_to_pause/index.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/dvr_controls/dvr_controls.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/dvr_controls/index.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/google_analytics/google_analytics.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/google_analytics/index.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/log/index.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/log/log.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/poster/poster.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/spinner_three_bounce/index.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/spinner_three_bounce/spinner_three_bounce.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/stats/index.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/stats/stats.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/watermark/index.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/watermark/watermark.js", "/Users/flavio.barbosa/Development/clappr/src/base/base_object.js", "/Users/flavio.barbosa/Development/clappr/src/components/browser.js", "/Users/flavio.barbosa/Development/clappr/src/base/container_plugin.js", "/Users/flavio.barbosa/Development/clappr/src/components/container/index.js", "/Users/flavio.barbosa/Development/clappr/src/base/core_plugin.js", "/Users/flavio.barbosa/Development/clappr/src/components/core/index.js", "/Users/flavio.barbosa/Development/clappr/src/base/events.js", "/Users/flavio.barbosa/Development/clappr/src/playbacks/flash/index.js", "/Users/flavio.barbosa/Development/clappr/src/playbacks/hls/index.js", "/Users/flavio.barbosa/Development/clappr/src/playbacks/html5_audio/index.js", "/Users/flavio.barbosa/Development/clappr/src/playbacks/html5_video/index.js", "/Users/flavio.barbosa/Development/clappr/src/playbacks/html_img/index.js", "/Users/flavio.barbosa/Development/clappr/src/components/media_control/index.js", "/Users/flavio.barbosa/Development/clappr/src/components/mediator.js", "/Users/flavio.barbosa/Development/clappr/src/base/playback.js", "/Users/flavio.barbosa/Development/clappr/src/components/player_info.js", "/Users/flavio.barbosa/Development/clappr/src/plugins/poster/index.js", "/Users/flavio.barbosa/Development/clappr/src/base/ui_container_plugin.js", "/Users/flavio.barbosa/Development/clappr/src/base/ui_core_plugin.js", "/Users/flavio.barbosa/Development/clappr/src/base/ui_object.js", "node_modules/underscore/underscore.js", "node_modules/clappr-zepto/zepto.min.js" ], "names": [], "mappings": "AAAA;ACIA;AAAA,AAAI,EAAA,CAAA,MAAK,EAAI,CAAA,OAAM,AAAC,CAAC,qBAAoB,CAAC,CAAA;AAC1C,AAAI,EAAA,CAAA,QAAO,EAAI,CAAA,OAAM,AAAC,CAAC,UAAS,CAAC,CAAA;AAEjC,KAAK,MAAM,EAAI,MAAI,CAAA;AAEnB,KAAK,OAAO,EAAI;AAAE,OAAK,CAAG,OAAK;AAAG,SAAO,CAAG,SAAO;AAAA,AAAE,CAAA;AACrD,KAAK,OAAO,QAAQ,EAAI,cAAY,CAAA;AAEpC,KAAK,QAAQ,EAAI,CAAA,MAAK,OAAO,CAAA;AAC7B;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACz7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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OAAO,EAAI,OAAK,CAAA;AAEvB,KAAK,QAAQ,EAAI,SAAO,CAAA;AACxB;;;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACv4CA;AACA;AACA;AACA", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ "(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n", "/*global define:false */\n/**\n * Copyright 2013 Craig Campbell\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Mousetrap is a simple keyboard shortcut library for Javascript with\n * no external dependencies\n *\n * @version 1.4.6\n * @url craig.is/killing/mice\n */\n(function(window, document, undefined) {\n\n /**\n * mapping of special keycodes to their corresponding keys\n *\n * everything in this dictionary cannot use keypress events\n * so it has to be here to map to the correct keycodes for\n * keyup/keydown events\n *\n * @type {Object}\n */\n var _MAP = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'enter',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'ins',\n 46: 'del',\n 91: 'meta',\n 93: 'meta',\n 224: 'meta'\n },\n\n /**\n * mapping for special characters so they can support\n *\n * this dictionary is only used incase you want to bind a\n * keyup or keydown event to one of these keys\n *\n * @type {Object}\n */\n _KEYCODE_MAP = {\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111 : '/',\n 186: ';',\n 187: '=',\n 188: ',',\n 189: '-',\n 190: '.',\n 191: '/',\n 192: '`',\n 219: '[',\n 220: '\\\\',\n 221: ']',\n 222: '\\''\n },\n\n /**\n * this is a mapping of keys that require shift on a US keypad\n * back to the non shift equivelents\n *\n * this is so you can use keyup events with these keys\n *\n * note that this will only work reliably on US keyboards\n *\n * @type {Object}\n */\n _SHIFT_MAP = {\n '~': '`',\n '!': '1',\n '@': '2',\n '#': '3',\n '$': '4',\n '%': '5',\n '^': '6',\n '&': '7',\n '*': '8',\n '(': '9',\n ')': '0',\n '_': '-',\n '+': '=',\n ':': ';',\n '\\\"': '\\'',\n '<': ',',\n '>': '.',\n '?': '/',\n '|': '\\\\'\n },\n\n /**\n * this is a list of special strings you can use to map\n * to modifier keys when you specify your keyboard shortcuts\n *\n * @type {Object}\n */\n _SPECIAL_ALIASES = {\n 'option': 'alt',\n 'command': 'meta',\n 'return': 'enter',\n 'escape': 'esc',\n 'mod': /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? 'meta' : 'ctrl'\n },\n\n /**\n * variable to store the flipped version of _MAP from above\n * needed to check if we should use keypress or not when no action\n * is specified\n *\n * @type {Object|undefined}\n */\n _REVERSE_MAP,\n\n /**\n * a list of all the callbacks setup via Mousetrap.bind()\n *\n * @type {Object}\n */\n _callbacks = {},\n\n /**\n * direct map of string combinations to callbacks used for trigger()\n *\n * @type {Object}\n */\n _directMap = {},\n\n /**\n * keeps track of what level each sequence is at since multiple\n * sequences can start out with the same sequence\n *\n * @type {Object}\n */\n _sequenceLevels = {},\n\n /**\n * variable to store the setTimeout call\n *\n * @type {null|number}\n */\n _resetTimer,\n\n /**\n * temporary state where we will ignore the next keyup\n *\n * @type {boolean|string}\n */\n _ignoreNextKeyup = false,\n\n /**\n * temporary state where we will ignore the next keypress\n *\n * @type {boolean}\n */\n _ignoreNextKeypress = false,\n\n /**\n * are we currently inside of a sequence?\n * type of action (\"keyup\" or \"keydown\" or \"keypress\") or false\n *\n * @type {boolean|string}\n */\n _nextExpectedAction = false;\n\n /**\n * loop through the f keys, f1 to f19 and add them to the map\n * programatically\n */\n for (var i = 1; i < 20; ++i) {\n _MAP[111 + i] = 'f' + i;\n }\n\n /**\n * loop through to map numbers on the numeric keypad\n */\n for (i = 0; i <= 9; ++i) {\n _MAP[i + 96] = i;\n }\n\n /**\n * cross browser add event method\n *\n * @param {Element|HTMLDocument} object\n * @param {string} type\n * @param {Function} callback\n * @returns void\n */\n function _addEvent(object, type, callback) {\n if (object.addEventListener) {\n object.addEventListener(type, callback, false);\n return;\n }\n\n object.attachEvent('on' + type, callback);\n }\n\n /**\n * takes the event and returns the key character\n *\n * @param {Event} e\n * @return {string}\n */\n function _characterFromEvent(e) {\n\n // for keypress events we should return the character as is\n if (e.type == 'keypress') {\n var character = String.fromCharCode(e.which);\n\n // if the shift key is not pressed then it is safe to assume\n // that we want the character to be lowercase. this means if\n // you accidentally have caps lock on then your key bindings\n // will continue to work\n //\n // the only side effect that might not be desired is if you\n // bind something like 'A' cause you want to trigger an\n // event when capital A is pressed caps lock will no longer\n // trigger the event. shift+a will though.\n if (!e.shiftKey) {\n character = character.toLowerCase();\n }\n\n return character;\n }\n\n // for non keypress events the special maps are needed\n if (_MAP[e.which]) {\n return _MAP[e.which];\n }\n\n if (_KEYCODE_MAP[e.which]) {\n return _KEYCODE_MAP[e.which];\n }\n\n // if it is not in the special map\n\n // with keydown and keyup events the character seems to always\n // come in as an uppercase character whether you are pressing shift\n // or not. we should make sure it is always lowercase for comparisons\n return String.fromCharCode(e.which).toLowerCase();\n }\n\n /**\n * checks if two arrays are equal\n *\n * @param {Array} modifiers1\n * @param {Array} modifiers2\n * @returns {boolean}\n */\n function _modifiersMatch(modifiers1, modifiers2) {\n return modifiers1.sort().join(',') === modifiers2.sort().join(',');\n }\n\n /**\n * resets all sequence counters except for the ones passed in\n *\n * @param {Object} doNotReset\n * @returns void\n */\n function _resetSequences(doNotReset) {\n doNotReset = doNotReset || {};\n\n var activeSequences = false,\n key;\n\n for (key in _sequenceLevels) {\n if (doNotReset[key]) {\n activeSequences = true;\n continue;\n }\n _sequenceLevels[key] = 0;\n }\n\n if (!activeSequences) {\n _nextExpectedAction = false;\n }\n }\n\n /**\n * finds all callbacks that match based on the keycode, modifiers,\n * and action\n *\n * @param {string} character\n * @param {Array} modifiers\n * @param {Event|Object} e\n * @param {string=} sequenceName - name of the sequence we are looking for\n * @param {string=} combination\n * @param {number=} level\n * @returns {Array}\n */\n function _getMatches(character, modifiers, e, sequenceName, combination, level) {\n var i,\n callback,\n matches = [],\n action = e.type;\n\n // if there are no events related to this keycode\n if (!_callbacks[character]) {\n return [];\n }\n\n // if a modifier key is coming up on its own we should allow it\n if (action == 'keyup' && _isModifier(character)) {\n modifiers = [character];\n }\n\n // loop through all callbacks for the key that was pressed\n // and see if any of them match\n for (i = 0; i < _callbacks[character].length; ++i) {\n callback = _callbacks[character][i];\n\n // if a sequence name is not specified, but this is a sequence at\n // the wrong level then move onto the next match\n if (!sequenceName && callback.seq && _sequenceLevels[callback.seq] != callback.level) {\n continue;\n }\n\n // if the action we are looking for doesn't match the action we got\n // then we should keep going\n if (action != callback.action) {\n continue;\n }\n\n // if this is a keypress event and the meta key and control key\n // are not pressed that means that we need to only look at the\n // character, otherwise check the modifiers as well\n //\n // chrome will not fire a keypress if meta or control is down\n // safari will fire a keypress if meta or meta+shift is down\n // firefox will fire a keypress if meta or control is down\n if ((action == 'keypress' && !e.metaKey && !e.ctrlKey) || _modifiersMatch(modifiers, callback.modifiers)) {\n\n // when you bind a combination or sequence a second time it\n // should overwrite the first one. if a sequenceName or\n // combination is specified in this call it does just that\n //\n // @todo make deleting its own method?\n var deleteCombo = !sequenceName && callback.combo == combination;\n var deleteSequence = sequenceName && callback.seq == sequenceName && callback.level == level;\n if (deleteCombo || deleteSequence) {\n _callbacks[character].splice(i, 1);\n }\n\n matches.push(callback);\n }\n }\n\n return matches;\n }\n\n /**\n * takes a key event and figures out what the modifiers are\n *\n * @param {Event} e\n * @returns {Array}\n */\n function _eventModifiers(e) {\n var modifiers = [];\n\n if (e.shiftKey) {\n modifiers.push('shift');\n }\n\n if (e.altKey) {\n modifiers.push('alt');\n }\n\n if (e.ctrlKey) {\n modifiers.push('ctrl');\n }\n\n if (e.metaKey) {\n modifiers.push('meta');\n }\n\n return modifiers;\n }\n\n /**\n * prevents default for this event\n *\n * @param {Event} e\n * @returns void\n */\n function _preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n return;\n }\n\n e.returnValue = false;\n }\n\n /**\n * stops propogation for this event\n *\n * @param {Event} e\n * @returns void\n */\n function _stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n return;\n }\n\n e.cancelBubble = true;\n }\n\n /**\n * actually calls the callback function\n *\n * if your callback function returns false this will use the jquery\n * convention - prevent default and stop propogation on the event\n *\n * @param {Function} callback\n * @param {Event} e\n * @returns void\n */\n function _fireCallback(callback, e, combo, sequence) {\n\n // if this event should not happen stop here\n if (Mousetrap.stopCallback(e, e.target || e.srcElement, combo, sequence)) {\n return;\n }\n\n if (callback(e, combo) === false) {\n _preventDefault(e);\n _stopPropagation(e);\n }\n }\n\n /**\n * handles a character key event\n *\n * @param {string} character\n * @param {Array} modifiers\n * @param {Event} e\n * @returns void\n */\n function _handleKey(character, modifiers, e) {\n var callbacks = _getMatches(character, modifiers, e),\n i,\n doNotReset = {},\n maxLevel = 0,\n processedSequenceCallback = false;\n\n // Calculate the maxLevel for sequences so we can only execute the longest callback sequence\n for (i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].seq) {\n maxLevel = Math.max(maxLevel, callbacks[i].level);\n }\n }\n\n // loop through matching callbacks for this key event\n for (i = 0; i < callbacks.length; ++i) {\n\n // fire for all sequence callbacks\n // this is because if for example you have multiple sequences\n // bound such as \"g i\" and \"g t\" they both need to fire the\n // callback for matching g cause otherwise you can only ever\n // match the first one\n if (callbacks[i].seq) {\n\n // only fire callbacks for the maxLevel to prevent\n // subsequences from also firing\n //\n // for example 'a option b' should not cause 'option b' to fire\n // even though 'option b' is part of the other sequence\n //\n // any sequences that do not match here will be discarded\n // below by the _resetSequences call\n if (callbacks[i].level != maxLevel) {\n continue;\n }\n\n processedSequenceCallback = true;\n\n // keep a list of which sequences were matches for later\n doNotReset[callbacks[i].seq] = 1;\n _fireCallback(callbacks[i].callback, e, callbacks[i].combo, callbacks[i].seq);\n continue;\n }\n\n // if there were no sequence matches but we are still here\n // that means this is a regular match so we should fire that\n if (!processedSequenceCallback) {\n _fireCallback(callbacks[i].callback, e, callbacks[i].combo);\n }\n }\n\n // if the key you pressed matches the type of sequence without\n // being a modifier (ie \"keyup\" or \"keypress\") then we should\n // reset all sequences that were not matched by this event\n //\n // this is so, for example, if you have the sequence \"h a t\" and you\n // type \"h e a r t\" it does not match. in this case the \"e\" will\n // cause the sequence to reset\n //\n // modifier keys are ignored because you can have a sequence\n // that contains modifiers such as \"enter ctrl+space\" and in most\n // cases the modifier key will be pressed before the next key\n //\n // also if you have a sequence such as \"ctrl+b a\" then pressing the\n // \"b\" key will trigger a \"keypress\" and a \"keydown\"\n //\n // the \"keydown\" is expected when there is a modifier, but the\n // \"keypress\" ends up matching the _nextExpectedAction since it occurs\n // after and that causes the sequence to reset\n //\n // we ignore keypresses in a sequence that directly follow a keydown\n // for the same character\n var ignoreThisKeypress = e.type == 'keypress' && _ignoreNextKeypress;\n if (e.type == _nextExpectedAction && !_isModifier(character) && !ignoreThisKeypress) {\n _resetSequences(doNotReset);\n }\n\n _ignoreNextKeypress = processedSequenceCallback && e.type == 'keydown';\n }\n\n /**\n * handles a keydown event\n *\n * @param {Event} e\n * @returns void\n */\n function _handleKeyEvent(e) {\n\n // normalize e.which for key events\n // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion\n if (typeof e.which !== 'number') {\n e.which = e.keyCode;\n }\n\n var character = _characterFromEvent(e);\n\n // no character found then stop\n if (!character) {\n return;\n }\n\n // need to use === for the character check because the character can be 0\n if (e.type == 'keyup' && _ignoreNextKeyup === character) {\n _ignoreNextKeyup = false;\n return;\n }\n\n Mousetrap.handleKey(character, _eventModifiers(e), e);\n }\n\n /**\n * determines if the keycode specified is a modifier key or not\n *\n * @param {string} key\n * @returns {boolean}\n */\n function _isModifier(key) {\n return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta';\n }\n\n /**\n * called to set a 1 second timeout on the specified sequence\n *\n * this is so after each key press in the sequence you have 1 second\n * to press the next key before you have to start over\n *\n * @returns void\n */\n function _resetSequenceTimer() {\n clearTimeout(_resetTimer);\n _resetTimer = setTimeout(_resetSequences, 1000);\n }\n\n /**\n * reverses the map lookup so that we can look for specific keys\n * to see what can and can't use keypress\n *\n * @return {Object}\n */\n function _getReverseMap() {\n if (!_REVERSE_MAP) {\n _REVERSE_MAP = {};\n for (var key in _MAP) {\n\n // pull out the numeric keypad from here cause keypress should\n // be able to detect the keys from the character\n if (key > 95 && key < 112) {\n continue;\n }\n\n if (_MAP.hasOwnProperty(key)) {\n _REVERSE_MAP[_MAP[key]] = key;\n }\n }\n }\n return _REVERSE_MAP;\n }\n\n /**\n * picks the best action based on the key combination\n *\n * @param {string} key - character for key\n * @param {Array} modifiers\n * @param {string=} action passed in\n */\n function _pickBestAction(key, modifiers, action) {\n\n // if no action was picked in we should try to pick the one\n // that we think would work best for this key\n if (!action) {\n action = _getReverseMap()[key] ? 'keydown' : 'keypress';\n }\n\n // modifier keys don't work as expected with keypress,\n // switch to keydown\n if (action == 'keypress' && modifiers.length) {\n action = 'keydown';\n }\n\n return action;\n }\n\n /**\n * binds a key sequence to an event\n *\n * @param {string} combo - combo specified in bind call\n * @param {Array} keys\n * @param {Function} callback\n * @param {string=} action\n * @returns void\n */\n function _bindSequence(combo, keys, callback, action) {\n\n // start off by adding a sequence level record for this combination\n // and setting the level to 0\n _sequenceLevels[combo] = 0;\n\n /**\n * callback to increase the sequence level for this sequence and reset\n * all other sequences that were active\n *\n * @param {string} nextAction\n * @returns {Function}\n */\n function _increaseSequence(nextAction) {\n return function() {\n _nextExpectedAction = nextAction;\n ++_sequenceLevels[combo];\n _resetSequenceTimer();\n };\n }\n\n /**\n * wraps the specified callback inside of another function in order\n * to reset all sequence counters as soon as this sequence is done\n *\n * @param {Event} e\n * @returns void\n */\n function _callbackAndReset(e) {\n _fireCallback(callback, e, combo);\n\n // we should ignore the next key up if the action is key down\n // or keypress. this is so if you finish a sequence and\n // release the key the final key will not trigger a keyup\n if (action !== 'keyup') {\n _ignoreNextKeyup = _characterFromEvent(e);\n }\n\n // weird race condition if a sequence ends with the key\n // another sequence begins with\n setTimeout(_resetSequences, 10);\n }\n\n // loop through keys one at a time and bind the appropriate callback\n // function. for any key leading up to the final one it should\n // increase the sequence. after the final, it should reset all sequences\n //\n // if an action is specified in the original bind call then that will\n // be used throughout. otherwise we will pass the action that the\n // next key in the sequence should match. this allows a sequence\n // to mix and match keypress and keydown events depending on which\n // ones are better suited to the key provided\n for (var i = 0; i < keys.length; ++i) {\n var isFinal = i + 1 === keys.length;\n var wrappedCallback = isFinal ? _callbackAndReset : _increaseSequence(action || _getKeyInfo(keys[i + 1]).action);\n _bindSingle(keys[i], wrappedCallback, action, combo, i);\n }\n }\n\n /**\n * Converts from a string key combination to an array\n *\n * @param {string} combination like \"command+shift+l\"\n * @return {Array}\n */\n function _keysFromString(combination) {\n if (combination === '+') {\n return ['+'];\n }\n\n return combination.split('+');\n }\n\n /**\n * Gets info for a specific key combination\n *\n * @param {string} combination key combination (\"command+s\" or \"a\" or \"*\")\n * @param {string=} action\n * @returns {Object}\n */\n function _getKeyInfo(combination, action) {\n var keys,\n key,\n i,\n modifiers = [];\n\n // take the keys from this pattern and figure out what the actual\n // pattern is all about\n keys = _keysFromString(combination);\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n\n // normalize key names\n if (_SPECIAL_ALIASES[key]) {\n key = _SPECIAL_ALIASES[key];\n }\n\n // if this is not a keypress event then we should\n // be smart about using shift keys\n // this will only work for US keyboards however\n if (action && action != 'keypress' && _SHIFT_MAP[key]) {\n key = _SHIFT_MAP[key];\n modifiers.push('shift');\n }\n\n // if this key is a modifier then add it to the list of modifiers\n if (_isModifier(key)) {\n modifiers.push(key);\n }\n }\n\n // depending on what the key combination is\n // we will try to pick the best event for it\n action = _pickBestAction(key, modifiers, action);\n\n return {\n key: key,\n modifiers: modifiers,\n action: action\n };\n }\n\n /**\n * binds a single keyboard combination\n *\n * @param {string} combination\n * @param {Function} callback\n * @param {string=} action\n * @param {string=} sequenceName - name of sequence if part of sequence\n * @param {number=} level - what part of the sequence the command is\n * @returns void\n */\n function _bindSingle(combination, callback, action, sequenceName, level) {\n\n // store a direct mapped reference for use with Mousetrap.trigger\n _directMap[combination + ':' + action] = callback;\n\n // make sure multiple spaces in a row become a single space\n combination = combination.replace(/\\s+/g, ' ');\n\n var sequence = combination.split(' '),\n info;\n\n // if this pattern is a sequence of keys then run through this method\n // to reprocess each pattern one key at a time\n if (sequence.length > 1) {\n _bindSequence(combination, sequence, callback, action);\n return;\n }\n\n info = _getKeyInfo(combination, action);\n\n // make sure to initialize array if this is the first time\n // a callback is added for this key\n _callbacks[info.key] = _callbacks[info.key] || [];\n\n // remove an existing match if there is one\n _getMatches(info.key, info.modifiers, {type: info.action}, sequenceName, combination, level);\n\n // add this call back to the array\n // if it is a sequence put it at the beginning\n // if not put it at the end\n //\n // this is important because the way these are processed expects\n // the sequence ones to come first\n _callbacks[info.key][sequenceName ? 'unshift' : 'push']({\n callback: callback,\n modifiers: info.modifiers,\n action: info.action,\n seq: sequenceName,\n level: level,\n combo: combination\n });\n }\n\n /**\n * binds multiple combinations to the same callback\n *\n * @param {Array} combinations\n * @param {Function} callback\n * @param {string|undefined} action\n * @returns void\n */\n function _bindMultiple(combinations, callback, action) {\n for (var i = 0; i < combinations.length; ++i) {\n _bindSingle(combinations[i], callback, action);\n }\n }\n\n // start!\n _addEvent(document, 'keypress', _handleKeyEvent);\n _addEvent(document, 'keydown', _handleKeyEvent);\n _addEvent(document, 'keyup', _handleKeyEvent);\n\n var Mousetrap = {\n\n /**\n * binds an event to mousetrap\n *\n * can be a single key, a combination of keys separated with +,\n * an array of keys, or a sequence of keys separated by spaces\n *\n * be sure to list the modifier keys first to make sure that the\n * correct key ends up getting bound (the last key in the pattern)\n *\n * @param {string|Array} keys\n * @param {Function} callback\n * @param {string=} action - 'keypress', 'keydown', or 'keyup'\n * @returns void\n */\n bind: function(keys, callback, action) {\n keys = keys instanceof Array ? keys : [keys];\n _bindMultiple(keys, callback, action);\n return this;\n },\n\n /**\n * unbinds an event to mousetrap\n *\n * the unbinding sets the callback function of the specified key combo\n * to an empty function and deletes the corresponding key in the\n * _directMap dict.\n *\n * TODO: actually remove this from the _callbacks dictionary instead\n * of binding an empty function\n *\n * the keycombo+action has to be exactly the same as\n * it was defined in the bind method\n *\n * @param {string|Array} keys\n * @param {string} action\n * @returns void\n */\n unbind: function(keys, action) {\n return Mousetrap.bind(keys, function() {}, action);\n },\n\n /**\n * triggers an event that has already been bound\n *\n * @param {string} keys\n * @param {string=} action\n * @returns void\n */\n trigger: function(keys, action) {\n if (_directMap[keys + ':' + action]) {\n _directMap[keys + ':' + action]({}, keys);\n }\n return this;\n },\n\n /**\n * resets the library back to its initial state. this is useful\n * if you want to clear out the current keyboard shortcuts and bind\n * new ones - for example if you switch to another page\n *\n * @returns void\n */\n reset: function() {\n _callbacks = {};\n _directMap = {};\n return this;\n },\n\n /**\n * should we stop this event before firing off callbacks\n *\n * @param {Event} e\n * @param {Element} element\n * @return {boolean}\n */\n stopCallback: function(e, element) {\n\n // if the element has the class \"mousetrap\" then no need to stop\n if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n return false;\n }\n\n // stop for input, select, and textarea\n return element.tagName == 'INPUT' || element.tagName == 'SELECT' || element.tagName == 'TEXTAREA' || element.isContentEditable;\n },\n\n /**\n * exposes _handleKey publicly so it can be overwritten by extensions\n */\n handleKey: _handleKey\n };\n\n // expose mousetrap to the global object\n window.Mousetrap = Mousetrap;\n\n // expose mousetrap as an AMD module\n if (typeof define === 'function' && define.amd) {\n define(Mousetrap);\n }\n}) (window, document);\n", "(function( factory ) {\n\tif (typeof define !== 'undefined' && define.amd) {\n\t\tdefine([], factory);\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = factory();\n\t} else {\n\t\twindow.scrollMonitor = factory();\n\t}\n})(function() {\n\n\tvar scrollTop = function() {\n\t\treturn window.pageYOffset ||\n\t\t\t(document.documentElement && document.documentElement.scrollTop) ||\n\t\t\tdocument.body.scrollTop;\n\t};\n\n\tvar exports = {};\n\n\tvar watchers = [];\n\n\tvar VISIBILITYCHANGE = 'visibilityChange';\n\tvar ENTERVIEWPORT = 'enterViewport';\n\tvar FULLYENTERVIEWPORT = 'fullyEnterViewport';\n\tvar EXITVIEWPORT = 'exitViewport';\n\tvar PARTIALLYEXITVIEWPORT = 'partiallyExitViewport';\n\tvar LOCATIONCHANGE = 'locationChange';\n\tvar STATECHANGE = 'stateChange';\n\n\tvar eventTypes = [\n\t\tVISIBILITYCHANGE,\n\t\tENTERVIEWPORT,\n\t\tFULLYENTERVIEWPORT,\n\t\tEXITVIEWPORT,\n\t\tPARTIALLYEXITVIEWPORT,\n\t\tLOCATIONCHANGE,\n\t\tSTATECHANGE\n\t];\n\n\tvar defaultOffsets = {top: 0, bottom: 0};\n\n\tvar getViewportHeight = function() {\n\t\treturn window.innerHeight || document.documentElement.clientHeight;\n\t};\n\n\tvar getDocumentHeight = function() {\n\t\t// jQuery approach\n\t\t// whichever is greatest\n\t\treturn Math.max(\n\t\t\tdocument.body.scrollHeight, document.documentElement.scrollHeight,\n\t\t\tdocument.body.offsetHeight, document.documentElement.offsetHeight,\n\t\t\tdocument.documentElement.clientHeight\n\t\t);\n\t};\n\n\texports.viewportTop = null;\n\texports.viewportBottom = null;\n\texports.documentHeight = null;\n\texports.viewportHeight = getViewportHeight();\n\n\tvar previousDocumentHeight;\n\tvar latestEvent;\n\n\tvar calculateViewportI;\n\tfunction calculateViewport() {\n\t\texports.viewportTop = scrollTop();\n\t\texports.viewportBottom = exports.viewportTop + exports.viewportHeight;\n\t\texports.documentHeight = getDocumentHeight();\n\t\tif (exports.documentHeight !== previousDocumentHeight) {\n\t\t\tcalculateViewportI = watchers.length;\n\t\t\twhile( calculateViewportI-- ) {\n\t\t\t\twatchers[calculateViewportI].recalculateLocation();\n\t\t\t}\n\t\t\tpreviousDocumentHeight = exports.documentHeight;\n\t\t}\n\t}\n\n\tfunction recalculateWatchLocationsAndTrigger() {\n\t\texports.viewportHeight = getViewportHeight();\n\t\tcalculateViewport();\n\t\tupdateAndTriggerWatchers();\n\t}\n\n\tvar recalculateAndTriggerTimer;\n\tfunction debouncedRecalcuateAndTrigger() {\n\t\tclearTimeout(recalculateAndTriggerTimer);\n\t\trecalculateAndTriggerTimer = setTimeout( recalculateWatchLocationsAndTrigger, 100 );\n\t}\n\n\tvar updateAndTriggerWatchersI;\n\tfunction updateAndTriggerWatchers() {\n\t\t// update all watchers then trigger the events so one can rely on another being up to date.\n\t\tupdateAndTriggerWatchersI = watchers.length;\n\t\twhile( updateAndTriggerWatchersI-- ) {\n\t\t\twatchers[updateAndTriggerWatchersI].update();\n\t\t}\n\n\t\tupdateAndTriggerWatchersI = watchers.length;\n\t\twhile( updateAndTriggerWatchersI-- ) {\n\t\t\twatchers[updateAndTriggerWatchersI].triggerCallbacks();\n\t\t}\n\n\t}\n\n\tfunction ElementWatcher( watchItem, offsets ) {\n\t\tvar self = this;\n\n\t\tthis.watchItem = watchItem;\n\n\t\tif (!offsets) {\n\t\t\tthis.offsets = defaultOffsets;\n\t\t} else if (offsets === +offsets) {\n\t\t\tthis.offsets = {top: offsets, bottom: offsets};\n\t\t} else {\n\t\t\tthis.offsets = {\n\t\t\t\ttop: offsets.top || defaultOffsets.top,\n\t\t\t\tbottom: offsets.bottom || defaultOffsets.bottom\n\t\t\t};\n\t\t}\n\n\t\tthis.callbacks = {}; // {callback: function, isOne: true }\n\n\t\tfor (var i = 0, j = eventTypes.length; i < j; i++) {\n\t\t\tself.callbacks[eventTypes[i]] = [];\n\t\t}\n\n\t\tthis.locked = false;\n\n\t\tvar wasInViewport;\n\t\tvar wasFullyInViewport;\n\t\tvar wasAboveViewport;\n\t\tvar wasBelowViewport;\n\n\t\tvar listenerToTriggerListI;\n\t\tvar listener;\n\t\tfunction triggerCallbackArray( listeners ) {\n\t\t\tif (listeners.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlistenerToTriggerListI = listeners.length;\n\t\t\twhile( listenerToTriggerListI-- ) {\n\t\t\t\tlistener = listeners[listenerToTriggerListI];\n\t\t\t\tlistener.callback.call( self, latestEvent );\n\t\t\t\tif (listener.isOne) {\n\t\t\t\t\tlisteners.splice(listenerToTriggerListI, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.triggerCallbacks = function triggerCallbacks() {\n\n\t\t\tif (this.isInViewport && !wasInViewport) {\n\t\t\t\ttriggerCallbackArray( this.callbacks[ENTERVIEWPORT] );\n\t\t\t}\n\t\t\tif (this.isFullyInViewport && !wasFullyInViewport) {\n\t\t\t\ttriggerCallbackArray( this.callbacks[FULLYENTERVIEWPORT] );\n\t\t\t}\n\n\n\t\t\tif (this.isAboveViewport !== wasAboveViewport &&\n\t\t\t\tthis.isBelowViewport !== wasBelowViewport) {\n\n\t\t\t\ttriggerCallbackArray( this.callbacks[VISIBILITYCHANGE] );\n\n\t\t\t\t// if you skip completely past this element\n\t\t\t\tif (!wasFullyInViewport && !this.isFullyInViewport) {\n\t\t\t\t\ttriggerCallbackArray( this.callbacks[FULLYENTERVIEWPORT] );\n\t\t\t\t\ttriggerCallbackArray( this.callbacks[PARTIALLYEXITVIEWPORT] );\n\t\t\t\t}\n\t\t\t\tif (!wasInViewport && !this.isInViewport) {\n\t\t\t\t\ttriggerCallbackArray( this.callbacks[ENTERVIEWPORT] );\n\t\t\t\t\ttriggerCallbackArray( this.callbacks[EXITVIEWPORT] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!this.isFullyInViewport && wasFullyInViewport) {\n\t\t\t\ttriggerCallbackArray( this.callbacks[PARTIALLYEXITVIEWPORT] );\n\t\t\t}\n\t\t\tif (!this.isInViewport && wasInViewport) {\n\t\t\t\ttriggerCallbackArray( this.callbacks[EXITVIEWPORT] );\n\t\t\t}\n\t\t\tif (this.isInViewport !== wasInViewport) {\n\t\t\t\ttriggerCallbackArray( this.callbacks[VISIBILITYCHANGE] );\n\t\t\t}\n\t\t\tswitch( true ) {\n\t\t\t\tcase wasInViewport !== this.isInViewport:\n\t\t\t\tcase wasFullyInViewport !== this.isFullyInViewport:\n\t\t\t\tcase wasAboveViewport !== this.isAboveViewport:\n\t\t\t\tcase wasBelowViewport !== this.isBelowViewport:\n\t\t\t\t\ttriggerCallbackArray( this.callbacks[STATECHANGE] );\n\t\t\t}\n\n\t\t\twasInViewport = this.isInViewport;\n\t\t\twasFullyInViewport = this.isFullyInViewport;\n\t\t\twasAboveViewport = this.isAboveViewport;\n\t\t\twasBelowViewport = this.isBelowViewport;\n\n\t\t};\n\n\t\tthis.recalculateLocation = function() {\n\t\t\tif (this.locked) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar previousTop = this.top;\n\t\t\tvar previousBottom = this.bottom;\n\t\t\tif (this.watchItem.nodeName) { // a dom element\n\t\t\t\tvar cachedDisplay = this.watchItem.style.display;\n\t\t\t\tif (cachedDisplay === 'none') {\n\t\t\t\t\tthis.watchItem.style.display = '';\n\t\t\t\t}\n\n\t\t\t\tvar boundingRect = this.watchItem.getBoundingClientRect();\n\t\t\t\tthis.top = boundingRect.top + exports.viewportTop;\n\t\t\t\tthis.bottom = boundingRect.bottom + exports.viewportTop;\n\n\t\t\t\tif (cachedDisplay === 'none') {\n\t\t\t\t\tthis.watchItem.style.display = cachedDisplay;\n\t\t\t\t}\n\n\t\t\t} else if (this.watchItem === +this.watchItem) { // number\n\t\t\t\tif (this.watchItem > 0) {\n\t\t\t\t\tthis.top = this.bottom = this.watchItem;\n\t\t\t\t} else {\n\t\t\t\t\tthis.top = this.bottom = exports.documentHeight - this.watchItem;\n\t\t\t\t}\n\n\t\t\t} else { // an object with a top and bottom property\n\t\t\t\tthis.top = this.watchItem.top;\n\t\t\t\tthis.bottom = this.watchItem.bottom;\n\t\t\t}\n\n\t\t\tthis.top -= this.offsets.top;\n\t\t\tthis.bottom += this.offsets.bottom;\n\t\t\tthis.height = this.bottom - this.top;\n\n\t\t\tif ( (previousTop !== undefined || previousBottom !== undefined) && (this.top !== previousTop || this.bottom !== previousBottom) ) {\n\t\t\t\ttriggerCallbackArray( this.callbacks[LOCATIONCHANGE] );\n\t\t\t}\n\t\t};\n\n\t\tthis.recalculateLocation();\n\t\tthis.update();\n\n\t\twasInViewport = this.isInViewport;\n\t\twasFullyInViewport = this.isFullyInViewport;\n\t\twasAboveViewport = this.isAboveViewport;\n\t\twasBelowViewport = this.isBelowViewport;\n\t}\n\n\tElementWatcher.prototype = {\n\t\ton: function( event, callback, isOne ) {\n\n\t\t\t// trigger the event if it applies to the element right now.\n\t\t\tswitch( true ) {\n\t\t\t\tcase event === VISIBILITYCHANGE && !this.isInViewport && this.isAboveViewport:\n\t\t\t\tcase event === ENTERVIEWPORT && this.isInViewport:\n\t\t\t\tcase event === FULLYENTERVIEWPORT && this.isFullyInViewport:\n\t\t\t\tcase event === EXITVIEWPORT && this.isAboveViewport && !this.isInViewport:\n\t\t\t\tcase event === PARTIALLYEXITVIEWPORT && this.isAboveViewport:\n\t\t\t\t\tcallback.call( this, latestEvent );\n\t\t\t\t\tif (isOne) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.callbacks[event]) {\n\t\t\t\tthis.callbacks[event].push({callback: callback, isOne: isOne||false});\n\t\t\t} else {\n\t\t\t\tthrow new Error('Tried to add a scroll monitor listener of type '+event+'. Your options are: '+eventTypes.join(', '));\n\t\t\t}\n\t\t},\n\t\toff: function( event, callback ) {\n\t\t\tif (this.callbacks[event]) {\n\t\t\t\tfor (var i = 0, item; item = this.callbacks[event][i]; i++) {\n\t\t\t\t\tif (item.callback === callback) {\n\t\t\t\t\t\tthis.callbacks[event].splice(i, 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error('Tried to remove a scroll monitor listener of type '+event+'. Your options are: '+eventTypes.join(', '));\n\t\t\t}\n\t\t},\n\t\tone: function( event, callback ) {\n\t\t\tthis.on( event, callback, true);\n\t\t},\n\t\trecalculateSize: function() {\n\t\t\tthis.height = this.watchItem.offsetHeight + this.offsets.top + this.offsets.bottom;\n\t\t\tthis.bottom = this.top + this.height;\n\t\t},\n\t\tupdate: function() {\n\t\t\tthis.isAboveViewport = this.top < exports.viewportTop;\n\t\t\tthis.isBelowViewport = this.bottom > exports.viewportBottom;\n\n\t\t\tthis.isInViewport = (this.top <= exports.viewportBottom && this.bottom >= exports.viewportTop);\n\t\t\tthis.isFullyInViewport = (this.top >= exports.viewportTop && this.bottom <= exports.viewportBottom) ||\n\t\t\t\t\t\t\t\t (this.isAboveViewport && this.isBelowViewport);\n\n\t\t},\n\t\tdestroy: function() {\n\t\t\tvar index = watchers.indexOf(this),\n\t\t\t\tself = this;\n\t\t\twatchers.splice(index, 1);\n\t\t\tfor (var i = 0, j = eventTypes.length; i < j; i++) {\n\t\t\t\tself.callbacks[eventTypes[i]].length = 0;\n\t\t\t}\n\t\t},\n\t\t// prevent recalculating the element location\n\t\tlock: function() {\n\t\t\tthis.locked = true;\n\t\t},\n\t\tunlock: function() {\n\t\t\tthis.locked = false;\n\t\t}\n\t};\n\n\tvar eventHandlerFactory = function (type) {\n\t\treturn function( callback, isOne ) {\n\t\t\tthis.on.call(this, type, callback, isOne);\n\t\t};\n\t};\n\n\tfor (var i = 0, j = eventTypes.length; i < j; i++) {\n\t\tvar type = eventTypes[i];\n\t\tElementWatcher.prototype[type] = eventHandlerFactory(type);\n\t}\n\n\ttry {\n\t\tcalculateViewport();\n\t} catch (e) {\n\t\ttry {\n\t\t\twindow.$(calculateViewport);\n\t\t} catch (e) {\n\t\t\tthrow new Error('If you must put scrollMonitor in the , you must use jQuery.');\n\t\t}\n\t}\n\n\tfunction scrollMonitorListener(event) {\n\t\tlatestEvent = event;\n\t\tcalculateViewport();\n\t\tupdateAndTriggerWatchers();\n\t}\n\n\tif (window.addEventListener) {\n\t\twindow.addEventListener('scroll', scrollMonitorListener);\n\t\twindow.addEventListener('resize', debouncedRecalcuateAndTrigger);\n\t} else {\n\t\t// Old IE support\n\t\twindow.attachEvent('onscroll', scrollMonitorListener);\n\t\twindow.attachEvent('onresize', debouncedRecalcuateAndTrigger);\n\t}\n\n\texports.beget = exports.create = function( element, offsets ) {\n\t\tif (typeof element === 'string') {\n\t\t\telement = document.querySelector(element);\n\t\t} else if (element && element.length > 0) {\n\t\t\telement = element[0];\n\t\t}\n\n\t\tvar watcher = new ElementWatcher( element, offsets );\n\t\twatchers.push(watcher);\n\t\twatcher.update();\n\t\treturn watcher;\n\t};\n\n\texports.update = function() {\n\t\tlatestEvent = null;\n\t\tcalculateViewport();\n\t\tupdateAndTriggerWatchers();\n\t};\n\texports.recalculateLocations = function() {\n\t\texports.documentHeight = 0;\n\t\texports.update();\n\t};\n\n\treturn exports;\n});\n", "(function(global) {\n 'use strict';\n if (global.$traceurRuntime) {\n return;\n }\n var $Object = Object;\n var $TypeError = TypeError;\n var $create = $Object.create;\n var $defineProperties = $Object.defineProperties;\n var $defineProperty = $Object.defineProperty;\n var $freeze = $Object.freeze;\n var $getOwnPropertyDescriptor = $Object.getOwnPropertyDescriptor;\n var $getOwnPropertyNames = $Object.getOwnPropertyNames;\n var $keys = $Object.keys;\n var $hasOwnProperty = $Object.prototype.hasOwnProperty;\n var $toString = $Object.prototype.toString;\n var $preventExtensions = Object.preventExtensions;\n var $seal = Object.seal;\n var $isExtensible = Object.isExtensible;\n function nonEnum(value) {\n return {\n configurable: true,\n enumerable: false,\n value: value,\n writable: true\n };\n }\n var method = nonEnum;\n var counter = 0;\n function newUniqueString() {\n return '__$' + Math.floor(Math.random() * 1e9) + '$' + ++counter + '$__';\n }\n var symbolInternalProperty = newUniqueString();\n var symbolDescriptionProperty = newUniqueString();\n var symbolDataProperty = newUniqueString();\n var symbolValues = $create(null);\n var privateNames = $create(null);\n function isPrivateName(s) {\n return privateNames[s];\n }\n function createPrivateName() {\n var s = newUniqueString();\n privateNames[s] = true;\n return s;\n }\n function isShimSymbol(symbol) {\n return typeof symbol === 'object' && symbol instanceof SymbolValue;\n }\n function typeOf(v) {\n if (isShimSymbol(v))\n return 'symbol';\n return typeof v;\n }\n function Symbol(description) {\n var value = new SymbolValue(description);\n if (!(this instanceof Symbol))\n return value;\n throw new TypeError('Symbol cannot be new\\'ed');\n }\n $defineProperty(Symbol.prototype, 'constructor', nonEnum(Symbol));\n $defineProperty(Symbol.prototype, 'toString', method(function() {\n var symbolValue = this[symbolDataProperty];\n if (!getOption('symbols'))\n return symbolValue[symbolInternalProperty];\n if (!symbolValue)\n throw TypeError('Conversion from symbol to string');\n var desc = symbolValue[symbolDescriptionProperty];\n if (desc === undefined)\n desc = '';\n return 'Symbol(' + desc + ')';\n }));\n $defineProperty(Symbol.prototype, 'valueOf', method(function() {\n var symbolValue = this[symbolDataProperty];\n if (!symbolValue)\n throw TypeError('Conversion from symbol to string');\n if (!getOption('symbols'))\n return symbolValue[symbolInternalProperty];\n return symbolValue;\n }));\n function SymbolValue(description) {\n var key = newUniqueString();\n $defineProperty(this, symbolDataProperty, {value: this});\n $defineProperty(this, symbolInternalProperty, {value: key});\n $defineProperty(this, symbolDescriptionProperty, {value: description});\n freeze(this);\n symbolValues[key] = this;\n }\n $defineProperty(SymbolValue.prototype, 'constructor', nonEnum(Symbol));\n $defineProperty(SymbolValue.prototype, 'toString', {\n value: Symbol.prototype.toString,\n enumerable: false\n });\n $defineProperty(SymbolValue.prototype, 'valueOf', {\n value: Symbol.prototype.valueOf,\n enumerable: false\n });\n var hashProperty = createPrivateName();\n var hashPropertyDescriptor = {value: undefined};\n var hashObjectProperties = {\n hash: {value: undefined},\n self: {value: undefined}\n };\n var hashCounter = 0;\n function getOwnHashObject(object) {\n var hashObject = object[hashProperty];\n if (hashObject && hashObject.self === object)\n return hashObject;\n if ($isExtensible(object)) {\n hashObjectProperties.hash.value = hashCounter++;\n hashObjectProperties.self.value = object;\n hashPropertyDescriptor.value = $create(null, hashObjectProperties);\n $defineProperty(object, hashProperty, hashPropertyDescriptor);\n return hashPropertyDescriptor.value;\n }\n return undefined;\n }\n function freeze(object) {\n getOwnHashObject(object);\n return $freeze.apply(this, arguments);\n }\n function preventExtensions(object) {\n getOwnHashObject(object);\n return $preventExtensions.apply(this, arguments);\n }\n function seal(object) {\n getOwnHashObject(object);\n return $seal.apply(this, arguments);\n }\n freeze(SymbolValue.prototype);\n function isSymbolString(s) {\n return symbolValues[s] || privateNames[s];\n }\n function toProperty(name) {\n if (isShimSymbol(name))\n return name[symbolInternalProperty];\n return name;\n }\n function removeSymbolKeys(array) {\n var rv = [];\n for (var i = 0; i < array.length; i++) {\n if (!isSymbolString(array[i])) {\n rv.push(array[i]);\n }\n }\n return rv;\n }\n function getOwnPropertyNames(object) {\n return removeSymbolKeys($getOwnPropertyNames(object));\n }\n function keys(object) {\n return removeSymbolKeys($keys(object));\n }\n function getOwnPropertySymbols(object) {\n var rv = [];\n var names = $getOwnPropertyNames(object);\n for (var i = 0; i < names.length; i++) {\n var symbol = symbolValues[names[i]];\n if (symbol) {\n rv.push(symbol);\n }\n }\n return rv;\n }\n function getOwnPropertyDescriptor(object, name) {\n return $getOwnPropertyDescriptor(object, toProperty(name));\n }\n function hasOwnProperty(name) {\n return $hasOwnProperty.call(this, toProperty(name));\n }\n function getOption(name) {\n return global.traceur && global.traceur.options[name];\n }\n function defineProperty(object, name, descriptor) {\n if (isShimSymbol(name)) {\n name = name[symbolInternalProperty];\n }\n $defineProperty(object, name, descriptor);\n return object;\n }\n function polyfillObject(Object) {\n $defineProperty(Object, 'defineProperty', {value: defineProperty});\n $defineProperty(Object, 'getOwnPropertyNames', {value: getOwnPropertyNames});\n $defineProperty(Object, 'getOwnPropertyDescriptor', {value: getOwnPropertyDescriptor});\n $defineProperty(Object.prototype, 'hasOwnProperty', {value: hasOwnProperty});\n $defineProperty(Object, 'freeze', {value: freeze});\n $defineProperty(Object, 'preventExtensions', {value: preventExtensions});\n $defineProperty(Object, 'seal', {value: seal});\n $defineProperty(Object, 'keys', {value: keys});\n }\n function exportStar(object) {\n for (var i = 1; i < arguments.length; i++) {\n var names = $getOwnPropertyNames(arguments[i]);\n for (var j = 0; j < names.length; j++) {\n var name = names[j];\n if (isSymbolString(name))\n continue;\n (function(mod, name) {\n $defineProperty(object, name, {\n get: function() {\n return mod[name];\n },\n enumerable: true\n });\n })(arguments[i], names[j]);\n }\n }\n return object;\n }\n function isObject(x) {\n return x != null && (typeof x === 'object' || typeof x === 'function');\n }\n function toObject(x) {\n if (x == null)\n throw $TypeError();\n return $Object(x);\n }\n function checkObjectCoercible(argument) {\n if (argument == null) {\n throw new TypeError('Value cannot be converted to an Object');\n }\n return argument;\n }\n function polyfillSymbol(global, Symbol) {\n if (!global.Symbol) {\n global.Symbol = Symbol;\n Object.getOwnPropertySymbols = getOwnPropertySymbols;\n }\n if (!global.Symbol.iterator) {\n global.Symbol.iterator = Symbol('Symbol.iterator');\n }\n }\n function setupGlobals(global) {\n polyfillSymbol(global, Symbol);\n global.Reflect = global.Reflect || {};\n global.Reflect.global = global.Reflect.global || global;\n polyfillObject(global.Object);\n }\n setupGlobals(global);\n global.$traceurRuntime = {\n checkObjectCoercible: checkObjectCoercible,\n createPrivateName: createPrivateName,\n defineProperties: $defineProperties,\n defineProperty: $defineProperty,\n exportStar: exportStar,\n getOwnHashObject: getOwnHashObject,\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n getOwnPropertyNames: $getOwnPropertyNames,\n isObject: isObject,\n isPrivateName: isPrivateName,\n isSymbolString: isSymbolString,\n keys: $keys,\n setupGlobals: setupGlobals,\n toObject: toObject,\n toProperty: toProperty,\n typeof: typeOf\n };\n})(typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : this);\n(function() {\n 'use strict';\n var path;\n function relativeRequire(callerPath, requiredPath) {\n path = path || typeof require !== 'undefined' && require('path');\n function isDirectory(path) {\n return path.slice(-1) === '/';\n }\n function isAbsolute(path) {\n return path[0] === '/';\n }\n function isRelative(path) {\n return path[0] === '.';\n }\n if (isDirectory(requiredPath) || isAbsolute(requiredPath))\n return;\n return isRelative(requiredPath) ? require(path.resolve(path.dirname(callerPath), requiredPath)) : require(requiredPath);\n }\n $traceurRuntime.require = relativeRequire;\n})();\n(function() {\n 'use strict';\n function spread() {\n var rv = [],\n j = 0,\n iterResult;\n for (var i = 0; i < arguments.length; i++) {\n var valueToSpread = $traceurRuntime.checkObjectCoercible(arguments[i]);\n if (typeof valueToSpread[$traceurRuntime.toProperty(Symbol.iterator)] !== 'function') {\n throw new TypeError('Cannot spread non-iterable object.');\n }\n var iter = valueToSpread[$traceurRuntime.toProperty(Symbol.iterator)]();\n while (!(iterResult = iter.next()).done) {\n rv[j++] = iterResult.value;\n }\n }\n return rv;\n }\n $traceurRuntime.spread = spread;\n})();\n(function() {\n 'use strict';\n var $Object = Object;\n var $TypeError = TypeError;\n var $create = $Object.create;\n var $defineProperties = $traceurRuntime.defineProperties;\n var $defineProperty = $traceurRuntime.defineProperty;\n var $getOwnPropertyDescriptor = $traceurRuntime.getOwnPropertyDescriptor;\n var $getOwnPropertyNames = $traceurRuntime.getOwnPropertyNames;\n var $getPrototypeOf = Object.getPrototypeOf;\n var $__0 = Object,\n getOwnPropertyNames = $__0.getOwnPropertyNames,\n getOwnPropertySymbols = $__0.getOwnPropertySymbols;\n function superDescriptor(homeObject, name) {\n var proto = $getPrototypeOf(homeObject);\n do {\n var result = $getOwnPropertyDescriptor(proto, name);\n if (result)\n return result;\n proto = $getPrototypeOf(proto);\n } while (proto);\n return undefined;\n }\n function superConstructor(ctor) {\n return ctor.__proto__;\n }\n function superCall(self, homeObject, name, args) {\n return superGet(self, homeObject, name).apply(self, args);\n }\n function superGet(self, homeObject, name) {\n var descriptor = superDescriptor(homeObject, name);\n if (descriptor) {\n if (!descriptor.get)\n return descriptor.value;\n return descriptor.get.call(self);\n }\n return undefined;\n }\n function superSet(self, homeObject, name, value) {\n var descriptor = superDescriptor(homeObject, name);\n if (descriptor && descriptor.set) {\n descriptor.set.call(self, value);\n return value;\n }\n throw $TypeError((\"super has no setter '\" + name + \"'.\"));\n }\n function getDescriptors(object) {\n var descriptors = {};\n var names = getOwnPropertyNames(object);\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n descriptors[name] = $getOwnPropertyDescriptor(object, name);\n }\n var symbols = getOwnPropertySymbols(object);\n for (var i = 0; i < symbols.length; i++) {\n var symbol = symbols[i];\n descriptors[$traceurRuntime.toProperty(symbol)] = $getOwnPropertyDescriptor(object, $traceurRuntime.toProperty(symbol));\n }\n return descriptors;\n }\n function createClass(ctor, object, staticObject, superClass) {\n $defineProperty(object, 'constructor', {\n value: ctor,\n configurable: true,\n enumerable: false,\n writable: true\n });\n if (arguments.length > 3) {\n if (typeof superClass === 'function')\n ctor.__proto__ = superClass;\n ctor.prototype = $create(getProtoParent(superClass), getDescriptors(object));\n } else {\n ctor.prototype = object;\n }\n $defineProperty(ctor, 'prototype', {\n configurable: false,\n writable: false\n });\n return $defineProperties(ctor, getDescriptors(staticObject));\n }\n function getProtoParent(superClass) {\n if (typeof superClass === 'function') {\n var prototype = superClass.prototype;\n if ($Object(prototype) === prototype || prototype === null)\n return superClass.prototype;\n throw new $TypeError('super prototype must be an Object or null');\n }\n if (superClass === null)\n return null;\n throw new $TypeError((\"Super expression must either be null or a function, not \" + typeof superClass + \".\"));\n }\n function defaultSuperCall(self, homeObject, args) {\n if ($getPrototypeOf(homeObject) !== null)\n superCall(self, homeObject, 'constructor', args);\n }\n $traceurRuntime.createClass = createClass;\n $traceurRuntime.defaultSuperCall = defaultSuperCall;\n $traceurRuntime.superCall = superCall;\n $traceurRuntime.superConstructor = superConstructor;\n $traceurRuntime.superGet = superGet;\n $traceurRuntime.superSet = superSet;\n})();\n(function() {\n 'use strict';\n if (typeof $traceurRuntime !== 'object') {\n throw new Error('traceur runtime not found.');\n }\n var createPrivateName = $traceurRuntime.createPrivateName;\n var $defineProperties = $traceurRuntime.defineProperties;\n var $defineProperty = $traceurRuntime.defineProperty;\n var $create = Object.create;\n var $TypeError = TypeError;\n function nonEnum(value) {\n return {\n configurable: true,\n enumerable: false,\n value: value,\n writable: true\n };\n }\n var ST_NEWBORN = 0;\n var ST_EXECUTING = 1;\n var ST_SUSPENDED = 2;\n var ST_CLOSED = 3;\n var END_STATE = -2;\n var RETHROW_STATE = -3;\n function getInternalError(state) {\n return new Error('Traceur compiler bug: invalid state in state machine: ' + state);\n }\n function GeneratorContext() {\n this.state = 0;\n this.GState = ST_NEWBORN;\n this.storedException = undefined;\n this.finallyFallThrough = undefined;\n this.sent_ = undefined;\n this.returnValue = undefined;\n this.tryStack_ = [];\n }\n GeneratorContext.prototype = {\n pushTry: function(catchState, finallyState) {\n if (finallyState !== null) {\n var finallyFallThrough = null;\n for (var i = this.tryStack_.length - 1; i >= 0; i--) {\n if (this.tryStack_[i].catch !== undefined) {\n finallyFallThrough = this.tryStack_[i].catch;\n break;\n }\n }\n if (finallyFallThrough === null)\n finallyFallThrough = RETHROW_STATE;\n this.tryStack_.push({\n finally: finallyState,\n finallyFallThrough: finallyFallThrough\n });\n }\n if (catchState !== null) {\n this.tryStack_.push({catch: catchState});\n }\n },\n popTry: function() {\n this.tryStack_.pop();\n },\n get sent() {\n this.maybeThrow();\n return this.sent_;\n },\n set sent(v) {\n this.sent_ = v;\n },\n get sentIgnoreThrow() {\n return this.sent_;\n },\n maybeThrow: function() {\n if (this.action === 'throw') {\n this.action = 'next';\n throw this.sent_;\n }\n },\n end: function() {\n switch (this.state) {\n case END_STATE:\n return this;\n case RETHROW_STATE:\n throw this.storedException;\n default:\n throw getInternalError(this.state);\n }\n },\n handleException: function(ex) {\n this.GState = ST_CLOSED;\n this.state = END_STATE;\n throw ex;\n }\n };\n function nextOrThrow(ctx, moveNext, action, x) {\n switch (ctx.GState) {\n case ST_EXECUTING:\n throw new Error((\"\\\"\" + action + \"\\\" on executing generator\"));\n case ST_CLOSED:\n if (action == 'next') {\n return {\n value: undefined,\n done: true\n };\n }\n throw x;\n case ST_NEWBORN:\n if (action === 'throw') {\n ctx.GState = ST_CLOSED;\n throw x;\n }\n if (x !== undefined)\n throw $TypeError('Sent value to newborn generator');\n case ST_SUSPENDED:\n ctx.GState = ST_EXECUTING;\n ctx.action = action;\n ctx.sent = x;\n var value = moveNext(ctx);\n var done = value === ctx;\n if (done)\n value = ctx.returnValue;\n ctx.GState = done ? ST_CLOSED : ST_SUSPENDED;\n return {\n value: value,\n done: done\n };\n }\n }\n var ctxName = createPrivateName();\n var moveNextName = createPrivateName();\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n $defineProperty(GeneratorFunctionPrototype, 'constructor', nonEnum(GeneratorFunction));\n GeneratorFunctionPrototype.prototype = {\n constructor: GeneratorFunctionPrototype,\n next: function(v) {\n return nextOrThrow(this[ctxName], this[moveNextName], 'next', v);\n },\n throw: function(v) {\n return nextOrThrow(this[ctxName], this[moveNextName], 'throw', v);\n }\n };\n $defineProperties(GeneratorFunctionPrototype.prototype, {\n constructor: {enumerable: false},\n next: {enumerable: false},\n throw: {enumerable: false}\n });\n Object.defineProperty(GeneratorFunctionPrototype.prototype, Symbol.iterator, nonEnum(function() {\n return this;\n }));\n function createGeneratorInstance(innerFunction, functionObject, self) {\n var moveNext = getMoveNext(innerFunction, self);\n var ctx = new GeneratorContext();\n var object = $create(functionObject.prototype);\n object[ctxName] = ctx;\n object[moveNextName] = moveNext;\n return object;\n }\n function initGeneratorFunction(functionObject) {\n functionObject.prototype = $create(GeneratorFunctionPrototype.prototype);\n functionObject.__proto__ = GeneratorFunctionPrototype;\n return functionObject;\n }\n function AsyncFunctionContext() {\n GeneratorContext.call(this);\n this.err = undefined;\n var ctx = this;\n ctx.result = new Promise(function(resolve, reject) {\n ctx.resolve = resolve;\n ctx.reject = reject;\n });\n }\n AsyncFunctionContext.prototype = $create(GeneratorContext.prototype);\n AsyncFunctionContext.prototype.end = function() {\n switch (this.state) {\n case END_STATE:\n this.resolve(this.returnValue);\n break;\n case RETHROW_STATE:\n this.reject(this.storedException);\n break;\n default:\n this.reject(getInternalError(this.state));\n }\n };\n AsyncFunctionContext.prototype.handleException = function() {\n this.state = RETHROW_STATE;\n };\n function asyncWrap(innerFunction, self) {\n var moveNext = getMoveNext(innerFunction, self);\n var ctx = new AsyncFunctionContext();\n ctx.createCallback = function(newState) {\n return function(value) {\n ctx.state = newState;\n ctx.value = value;\n moveNext(ctx);\n };\n };\n ctx.errback = function(err) {\n handleCatch(ctx, err);\n moveNext(ctx);\n };\n moveNext(ctx);\n return ctx.result;\n }\n function getMoveNext(innerFunction, self) {\n return function(ctx) {\n while (true) {\n try {\n return innerFunction.call(self, ctx);\n } catch (ex) {\n handleCatch(ctx, ex);\n }\n }\n };\n }\n function handleCatch(ctx, ex) {\n ctx.storedException = ex;\n var last = ctx.tryStack_[ctx.tryStack_.length - 1];\n if (!last) {\n ctx.handleException(ex);\n return;\n }\n ctx.state = last.catch !== undefined ? last.catch : last.finally;\n if (last.finallyFallThrough !== undefined)\n ctx.finallyFallThrough = last.finallyFallThrough;\n }\n $traceurRuntime.asyncWrap = asyncWrap;\n $traceurRuntime.initGeneratorFunction = initGeneratorFunction;\n $traceurRuntime.createGeneratorInstance = createGeneratorInstance;\n})();\n(function() {\n function buildFromEncodedParts(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_queryData, opt_fragment) {\n var out = [];\n if (opt_scheme) {\n out.push(opt_scheme, ':');\n }\n if (opt_domain) {\n out.push('//');\n if (opt_userInfo) {\n out.push(opt_userInfo, '@');\n }\n out.push(opt_domain);\n if (opt_port) {\n out.push(':', opt_port);\n }\n }\n if (opt_path) {\n out.push(opt_path);\n }\n if (opt_queryData) {\n out.push('?', opt_queryData);\n }\n if (opt_fragment) {\n out.push('#', opt_fragment);\n }\n return out.join('');\n }\n ;\n var splitRe = new RegExp('^' + '(?:' + '([^:/?#.]+)' + ':)?' + '(?://' + '(?:([^/?#]*)@)?' + '([\\\\w\\\\d\\\\-\\\\u0100-\\\\uffff.%]*)' + '(?::([0-9]+))?' + ')?' + '([^?#]+)?' + '(?:\\\\?([^#]*))?' + '(?:#(.*))?' + '$');\n var ComponentIndex = {\n SCHEME: 1,\n USER_INFO: 2,\n DOMAIN: 3,\n PORT: 4,\n PATH: 5,\n QUERY_DATA: 6,\n FRAGMENT: 7\n };\n function split(uri) {\n return (uri.match(splitRe));\n }\n function removeDotSegments(path) {\n if (path === '/')\n return '/';\n var leadingSlash = path[0] === '/' ? '/' : '';\n var trailingSlash = path.slice(-1) === '/' ? '/' : '';\n var segments = path.split('/');\n var out = [];\n var up = 0;\n for (var pos = 0; pos < segments.length; pos++) {\n var segment = segments[pos];\n switch (segment) {\n case '':\n case '.':\n break;\n case '..':\n if (out.length)\n out.pop();\n else\n up++;\n break;\n default:\n out.push(segment);\n }\n }\n if (!leadingSlash) {\n while (up-- > 0) {\n out.unshift('..');\n }\n if (out.length === 0)\n out.push('.');\n }\n return leadingSlash + out.join('/') + trailingSlash;\n }\n function joinAndCanonicalizePath(parts) {\n var path = parts[ComponentIndex.PATH] || '';\n path = removeDotSegments(path);\n parts[ComponentIndex.PATH] = path;\n return buildFromEncodedParts(parts[ComponentIndex.SCHEME], parts[ComponentIndex.USER_INFO], parts[ComponentIndex.DOMAIN], parts[ComponentIndex.PORT], parts[ComponentIndex.PATH], parts[ComponentIndex.QUERY_DATA], parts[ComponentIndex.FRAGMENT]);\n }\n function canonicalizeUrl(url) {\n var parts = split(url);\n return joinAndCanonicalizePath(parts);\n }\n function resolveUrl(base, url) {\n var parts = split(url);\n var baseParts = split(base);\n if (parts[ComponentIndex.SCHEME]) {\n return joinAndCanonicalizePath(parts);\n } else {\n parts[ComponentIndex.SCHEME] = baseParts[ComponentIndex.SCHEME];\n }\n for (var i = ComponentIndex.SCHEME; i <= ComponentIndex.PORT; i++) {\n if (!parts[i]) {\n parts[i] = baseParts[i];\n }\n }\n if (parts[ComponentIndex.PATH][0] == '/') {\n return joinAndCanonicalizePath(parts);\n }\n var path = baseParts[ComponentIndex.PATH];\n var index = path.lastIndexOf('/');\n path = path.slice(0, index + 1) + parts[ComponentIndex.PATH];\n parts[ComponentIndex.PATH] = path;\n return joinAndCanonicalizePath(parts);\n }\n function isAbsolute(name) {\n if (!name)\n return false;\n if (name[0] === '/')\n return true;\n var parts = split(name);\n if (parts[ComponentIndex.SCHEME])\n return true;\n return false;\n }\n $traceurRuntime.canonicalizeUrl = canonicalizeUrl;\n $traceurRuntime.isAbsolute = isAbsolute;\n $traceurRuntime.removeDotSegments = removeDotSegments;\n $traceurRuntime.resolveUrl = resolveUrl;\n})();\n(function() {\n 'use strict';\n var types = {\n any: {name: 'any'},\n boolean: {name: 'boolean'},\n number: {name: 'number'},\n string: {name: 'string'},\n symbol: {name: 'symbol'},\n void: {name: 'void'}\n };\n var GenericType = function GenericType(type, argumentTypes) {\n this.type = type;\n this.argumentTypes = argumentTypes;\n };\n ($traceurRuntime.createClass)(GenericType, {}, {});\n var typeRegister = Object.create(null);\n function genericType(type) {\n for (var argumentTypes = [],\n $__1 = 1; $__1 < arguments.length; $__1++)\n argumentTypes[$__1 - 1] = arguments[$__1];\n var typeMap = typeRegister;\n var key = $traceurRuntime.getOwnHashObject(type).hash;\n if (!typeMap[key]) {\n typeMap[key] = Object.create(null);\n }\n typeMap = typeMap[key];\n for (var i = 0; i < argumentTypes.length - 1; i++) {\n key = $traceurRuntime.getOwnHashObject(argumentTypes[i]).hash;\n if (!typeMap[key]) {\n typeMap[key] = Object.create(null);\n }\n typeMap = typeMap[key];\n }\n var tail = argumentTypes[argumentTypes.length - 1];\n key = $traceurRuntime.getOwnHashObject(tail).hash;\n if (!typeMap[key]) {\n typeMap[key] = new GenericType(type, argumentTypes);\n }\n return typeMap[key];\n }\n $traceurRuntime.GenericType = GenericType;\n $traceurRuntime.genericType = genericType;\n $traceurRuntime.type = types;\n})();\n(function(global) {\n 'use strict';\n var $__2 = $traceurRuntime,\n canonicalizeUrl = $__2.canonicalizeUrl,\n resolveUrl = $__2.resolveUrl,\n isAbsolute = $__2.isAbsolute;\n var moduleInstantiators = Object.create(null);\n var baseURL;\n if (global.location && global.location.href)\n baseURL = resolveUrl(global.location.href, './');\n else\n baseURL = '';\n var UncoatedModuleEntry = function UncoatedModuleEntry(url, uncoatedModule) {\n this.url = url;\n this.value_ = uncoatedModule;\n };\n ($traceurRuntime.createClass)(UncoatedModuleEntry, {}, {});\n var ModuleEvaluationError = function ModuleEvaluationError(erroneousModuleName, cause) {\n this.message = this.constructor.name + ': ' + this.stripCause(cause) + ' in ' + erroneousModuleName;\n if (!(cause instanceof $ModuleEvaluationError) && cause.stack)\n this.stack = this.stripStack(cause.stack);\n else\n this.stack = '';\n };\n var $ModuleEvaluationError = ModuleEvaluationError;\n ($traceurRuntime.createClass)(ModuleEvaluationError, {\n stripError: function(message) {\n return message.replace(/.*Error:/, this.constructor.name + ':');\n },\n stripCause: function(cause) {\n if (!cause)\n return '';\n if (!cause.message)\n return cause + '';\n return this.stripError(cause.message);\n },\n loadedBy: function(moduleName) {\n this.stack += '\\n loaded by ' + moduleName;\n },\n stripStack: function(causeStack) {\n var stack = [];\n causeStack.split('\\n').some((function(frame) {\n if (/UncoatedModuleInstantiator/.test(frame))\n return true;\n stack.push(frame);\n }));\n stack[0] = this.stripError(stack[0]);\n return stack.join('\\n');\n }\n }, {}, Error);\n function beforeLines(lines, number) {\n var result = [];\n var first = number - 3;\n if (first < 0)\n first = 0;\n for (var i = first; i < number; i++) {\n result.push(lines[i]);\n }\n return result;\n }\n function afterLines(lines, number) {\n var last = number + 1;\n if (last > lines.length - 1)\n last = lines.length - 1;\n var result = [];\n for (var i = number; i <= last; i++) {\n result.push(lines[i]);\n }\n return result;\n }\n function columnSpacing(columns) {\n var result = '';\n for (var i = 0; i < columns - 1; i++) {\n result += '-';\n }\n return result;\n }\n var UncoatedModuleInstantiator = function UncoatedModuleInstantiator(url, func) {\n $traceurRuntime.superConstructor($UncoatedModuleInstantiator).call(this, url, null);\n this.func = func;\n };\n var $UncoatedModuleInstantiator = UncoatedModuleInstantiator;\n ($traceurRuntime.createClass)(UncoatedModuleInstantiator, {getUncoatedModule: function() {\n if (this.value_)\n return this.value_;\n try {\n var relativeRequire;\n if (typeof $traceurRuntime !== undefined) {\n relativeRequire = $traceurRuntime.require.bind(null, this.url);\n }\n return this.value_ = this.func.call(global, relativeRequire);\n } catch (ex) {\n if (ex instanceof ModuleEvaluationError) {\n ex.loadedBy(this.url);\n throw ex;\n }\n if (ex.stack) {\n var lines = this.func.toString().split('\\n');\n var evaled = [];\n ex.stack.split('\\n').some(function(frame) {\n if (frame.indexOf('UncoatedModuleInstantiator.getUncoatedModule') > 0)\n return true;\n var m = /(at\\s[^\\s]*\\s).*>:(\\d*):(\\d*)\\)/.exec(frame);\n if (m) {\n var line = parseInt(m[2], 10);\n evaled = evaled.concat(beforeLines(lines, line));\n evaled.push(columnSpacing(m[3]) + '^');\n evaled = evaled.concat(afterLines(lines, line));\n evaled.push('= = = = = = = = =');\n } else {\n evaled.push(frame);\n }\n });\n ex.stack = evaled.join('\\n');\n }\n throw new ModuleEvaluationError(this.url, ex);\n }\n }}, {}, UncoatedModuleEntry);\n function getUncoatedModuleInstantiator(name) {\n if (!name)\n return;\n var url = ModuleStore.normalize(name);\n return moduleInstantiators[url];\n }\n ;\n var moduleInstances = Object.create(null);\n var liveModuleSentinel = {};\n function Module(uncoatedModule) {\n var isLive = arguments[1];\n var coatedModule = Object.create(null);\n Object.getOwnPropertyNames(uncoatedModule).forEach((function(name) {\n var getter,\n value;\n if (isLive === liveModuleSentinel) {\n var descr = Object.getOwnPropertyDescriptor(uncoatedModule, name);\n if (descr.get)\n getter = descr.get;\n }\n if (!getter) {\n value = uncoatedModule[name];\n getter = function() {\n return value;\n };\n }\n Object.defineProperty(coatedModule, name, {\n get: getter,\n enumerable: true\n });\n }));\n Object.preventExtensions(coatedModule);\n return coatedModule;\n }\n var ModuleStore = {\n normalize: function(name, refererName, refererAddress) {\n if (typeof name !== 'string')\n throw new TypeError('module name must be a string, not ' + typeof name);\n if (isAbsolute(name))\n return canonicalizeUrl(name);\n if (/[^\\.]\\/\\.\\.\\//.test(name)) {\n throw new Error('module name embeds /../: ' + name);\n }\n if (name[0] === '.' && refererName)\n return resolveUrl(refererName, name);\n return canonicalizeUrl(name);\n },\n get: function(normalizedName) {\n var m = getUncoatedModuleInstantiator(normalizedName);\n if (!m)\n return undefined;\n var moduleInstance = moduleInstances[m.url];\n if (moduleInstance)\n return moduleInstance;\n moduleInstance = Module(m.getUncoatedModule(), liveModuleSentinel);\n return moduleInstances[m.url] = moduleInstance;\n },\n set: function(normalizedName, module) {\n normalizedName = String(normalizedName);\n moduleInstantiators[normalizedName] = new UncoatedModuleInstantiator(normalizedName, (function() {\n return module;\n }));\n moduleInstances[normalizedName] = module;\n },\n get baseURL() {\n return baseURL;\n },\n set baseURL(v) {\n baseURL = String(v);\n },\n registerModule: function(name, deps, func) {\n var normalizedName = ModuleStore.normalize(name);\n if (moduleInstantiators[normalizedName])\n throw new Error('duplicate module named ' + normalizedName);\n moduleInstantiators[normalizedName] = new UncoatedModuleInstantiator(normalizedName, func);\n },\n bundleStore: Object.create(null),\n register: function(name, deps, func) {\n if (!deps || !deps.length && !func.length) {\n this.registerModule(name, deps, func);\n } else {\n this.bundleStore[name] = {\n deps: deps,\n execute: function() {\n var $__0 = arguments;\n var depMap = {};\n deps.forEach((function(dep, index) {\n return depMap[dep] = $__0[index];\n }));\n var registryEntry = func.call(this, depMap);\n registryEntry.execute.call(this);\n return registryEntry.exports;\n }\n };\n }\n },\n getAnonymousModule: function(func) {\n return new Module(func.call(global), liveModuleSentinel);\n },\n getForTesting: function(name) {\n var $__0 = this;\n if (!this.testingPrefix_) {\n Object.keys(moduleInstances).some((function(key) {\n var m = /(traceur@[^\\/]*\\/)/.exec(key);\n if (m) {\n $__0.testingPrefix_ = m[1];\n return true;\n }\n }));\n }\n return this.get(this.testingPrefix_ + name);\n }\n };\n var moduleStoreModule = new Module({ModuleStore: ModuleStore});\n ModuleStore.set('@traceur/src/runtime/ModuleStore', moduleStoreModule);\n ModuleStore.set('@traceur/src/runtime/ModuleStore.js', moduleStoreModule);\n var setupGlobals = $traceurRuntime.setupGlobals;\n $traceurRuntime.setupGlobals = function(global) {\n setupGlobals(global);\n };\n $traceurRuntime.ModuleStore = ModuleStore;\n global.System = {\n register: ModuleStore.register.bind(ModuleStore),\n registerModule: ModuleStore.registerModule.bind(ModuleStore),\n get: ModuleStore.get,\n set: ModuleStore.set,\n normalize: ModuleStore.normalize\n };\n $traceurRuntime.getModuleImpl = function(name) {\n var instantiator = getUncoatedModuleInstantiator(name);\n return instantiator && instantiator.getUncoatedModule();\n };\n})(typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : this);\nSystem.registerModule(\"traceur-runtime@0.0.79/src/runtime/polyfills/utils.js\", [], function() {\n \"use strict\";\n var __moduleName = \"traceur-runtime@0.0.79/src/runtime/polyfills/utils.js\";\n var $ceil = Math.ceil;\n var $floor = Math.floor;\n var $isFinite = isFinite;\n var $isNaN = isNaN;\n var $pow = Math.pow;\n var $min = Math.min;\n var toObject = $traceurRuntime.toObject;\n function toUint32(x) {\n return x >>> 0;\n }\n function isObject(x) {\n return x && (typeof x === 'object' || typeof x === 'function');\n }\n function isCallable(x) {\n return typeof x === 'function';\n }\n function isNumber(x) {\n return typeof x === 'number';\n }\n function toInteger(x) {\n x = +x;\n if ($isNaN(x))\n return 0;\n if (x === 0 || !$isFinite(x))\n return x;\n return x > 0 ? $floor(x) : $ceil(x);\n }\n var MAX_SAFE_LENGTH = $pow(2, 53) - 1;\n function toLength(x) {\n var len = toInteger(x);\n return len < 0 ? 0 : $min(len, MAX_SAFE_LENGTH);\n }\n function checkIterable(x) {\n return !isObject(x) ? undefined : x[Symbol.iterator];\n }\n function isConstructor(x) {\n return isCallable(x);\n }\n function createIteratorResultObject(value, done) {\n return {\n value: value,\n done: done\n };\n }\n function maybeDefine(object, name, descr) {\n if (!(name in object)) {\n Object.defineProperty(object, name, descr);\n }\n }\n function maybeDefineMethod(object, name, value) {\n maybeDefine(object, name, {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n function maybeDefineConst(object, name, value) {\n maybeDefine(object, name, {\n value: value,\n configurable: false,\n enumerable: false,\n writable: false\n });\n }\n function maybeAddFunctions(object, functions) {\n for (var i = 0; i < functions.length; i += 2) {\n var name = functions[i];\n var value = functions[i + 1];\n maybeDefineMethod(object, name, value);\n }\n }\n function maybeAddConsts(object, consts) {\n for (var i = 0; i < consts.length; i += 2) {\n var name = consts[i];\n var value = consts[i + 1];\n maybeDefineConst(object, name, value);\n }\n }\n function maybeAddIterator(object, func, Symbol) {\n if (!Symbol || !Symbol.iterator || object[Symbol.iterator])\n return;\n if (object['@@iterator'])\n func = object['@@iterator'];\n Object.defineProperty(object, Symbol.iterator, {\n value: func,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n var polyfills = [];\n function registerPolyfill(func) {\n polyfills.push(func);\n }\n function polyfillAll(global) {\n polyfills.forEach((function(f) {\n return f(global);\n }));\n }\n return {\n get toObject() {\n return toObject;\n },\n get toUint32() {\n return toUint32;\n },\n get isObject() {\n return isObject;\n },\n get isCallable() {\n return isCallable;\n },\n get isNumber() {\n return isNumber;\n },\n get toInteger() {\n return toInteger;\n },\n get toLength() {\n return toLength;\n },\n get checkIterable() {\n return checkIterable;\n },\n get isConstructor() {\n return isConstructor;\n },\n get createIteratorResultObject() {\n return createIteratorResultObject;\n },\n get maybeDefine() {\n return maybeDefine;\n },\n get maybeDefineMethod() {\n return maybeDefineMethod;\n },\n get maybeDefineConst() {\n return maybeDefineConst;\n },\n get maybeAddFunctions() {\n return maybeAddFunctions;\n },\n get maybeAddConsts() {\n return maybeAddConsts;\n },\n get maybeAddIterator() {\n return maybeAddIterator;\n },\n get registerPolyfill() {\n return registerPolyfill;\n },\n get polyfillAll() {\n return polyfillAll;\n }\n };\n});\nSystem.registerModule(\"traceur-runtime@0.0.79/src/runtime/polyfills/Map.js\", [], function() {\n \"use strict\";\n var __moduleName = \"traceur-runtime@0.0.79/src/runtime/polyfills/Map.js\";\n var $__0 = System.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/utils.js\"),\n isObject = $__0.isObject,\n maybeAddIterator = $__0.maybeAddIterator,\n registerPolyfill = $__0.registerPolyfill;\n var getOwnHashObject = $traceurRuntime.getOwnHashObject;\n var $hasOwnProperty = Object.prototype.hasOwnProperty;\n var deletedSentinel = {};\n function lookupIndex(map, key) {\n if (isObject(key)) {\n var hashObject = getOwnHashObject(key);\n return hashObject && map.objectIndex_[hashObject.hash];\n }\n if (typeof key === 'string')\n return map.stringIndex_[key];\n return map.primitiveIndex_[key];\n }\n function initMap(map) {\n map.entries_ = [];\n map.objectIndex_ = Object.create(null);\n map.stringIndex_ = Object.create(null);\n map.primitiveIndex_ = Object.create(null);\n map.deletedCount_ = 0;\n }\n var Map = function Map() {\n var iterable = arguments[0];\n if (!isObject(this))\n throw new TypeError('Map called on incompatible type');\n if ($hasOwnProperty.call(this, 'entries_')) {\n throw new TypeError('Map can not be reentrantly initialised');\n }\n initMap(this);\n if (iterable !== null && iterable !== undefined) {\n for (var $__2 = iterable[$traceurRuntime.toProperty(Symbol.iterator)](),\n $__3; !($__3 = $__2.next()).done; ) {\n var $__4 = $__3.value,\n key = $__4[0],\n value = $__4[1];\n {\n this.set(key, value);\n }\n }\n }\n };\n ($traceurRuntime.createClass)(Map, {\n get size() {\n return this.entries_.length / 2 - this.deletedCount_;\n },\n get: function(key) {\n var index = lookupIndex(this, key);\n if (index !== undefined)\n return this.entries_[index + 1];\n },\n set: function(key, value) {\n var objectMode = isObject(key);\n var stringMode = typeof key === 'string';\n var index = lookupIndex(this, key);\n if (index !== undefined) {\n this.entries_[index + 1] = value;\n } else {\n index = this.entries_.length;\n this.entries_[index] = key;\n this.entries_[index + 1] = value;\n if (objectMode) {\n var hashObject = getOwnHashObject(key);\n var hash = hashObject.hash;\n this.objectIndex_[hash] = index;\n } else if (stringMode) {\n this.stringIndex_[key] = index;\n } else {\n this.primitiveIndex_[key] = index;\n }\n }\n return this;\n },\n has: function(key) {\n return lookupIndex(this, key) !== undefined;\n },\n delete: function(key) {\n var objectMode = isObject(key);\n var stringMode = typeof key === 'string';\n var index;\n var hash;\n if (objectMode) {\n var hashObject = getOwnHashObject(key);\n if (hashObject) {\n index = this.objectIndex_[hash = hashObject.hash];\n delete this.objectIndex_[hash];\n }\n } else if (stringMode) {\n index = this.stringIndex_[key];\n delete this.stringIndex_[key];\n } else {\n index = this.primitiveIndex_[key];\n delete this.primitiveIndex_[key];\n }\n if (index !== undefined) {\n this.entries_[index] = deletedSentinel;\n this.entries_[index + 1] = undefined;\n this.deletedCount_++;\n return true;\n }\n return false;\n },\n clear: function() {\n initMap(this);\n },\n forEach: function(callbackFn) {\n var thisArg = arguments[1];\n for (var i = 0; i < this.entries_.length; i += 2) {\n var key = this.entries_[i];\n var value = this.entries_[i + 1];\n if (key === deletedSentinel)\n continue;\n callbackFn.call(thisArg, value, key, this);\n }\n },\n entries: $traceurRuntime.initGeneratorFunction(function $__5() {\n var i,\n key,\n value;\n return $traceurRuntime.createGeneratorInstance(function($ctx) {\n while (true)\n switch ($ctx.state) {\n case 0:\n i = 0;\n $ctx.state = 12;\n break;\n case 12:\n $ctx.state = (i < this.entries_.length) ? 8 : -2;\n break;\n case 4:\n i += 2;\n $ctx.state = 12;\n break;\n case 8:\n key = this.entries_[i];\n value = this.entries_[i + 1];\n $ctx.state = 9;\n break;\n case 9:\n $ctx.state = (key === deletedSentinel) ? 4 : 6;\n break;\n case 6:\n $ctx.state = 2;\n return [key, value];\n case 2:\n $ctx.maybeThrow();\n $ctx.state = 4;\n break;\n default:\n return $ctx.end();\n }\n }, $__5, this);\n }),\n keys: $traceurRuntime.initGeneratorFunction(function $__6() {\n var i,\n key,\n value;\n return $traceurRuntime.createGeneratorInstance(function($ctx) {\n while (true)\n switch ($ctx.state) {\n case 0:\n i = 0;\n $ctx.state = 12;\n break;\n case 12:\n $ctx.state = (i < this.entries_.length) ? 8 : -2;\n break;\n case 4:\n i += 2;\n $ctx.state = 12;\n break;\n case 8:\n key = this.entries_[i];\n value = this.entries_[i + 1];\n $ctx.state = 9;\n break;\n case 9:\n $ctx.state = (key === deletedSentinel) ? 4 : 6;\n break;\n case 6:\n $ctx.state = 2;\n return key;\n case 2:\n $ctx.maybeThrow();\n $ctx.state = 4;\n break;\n default:\n return $ctx.end();\n }\n }, $__6, this);\n }),\n values: $traceurRuntime.initGeneratorFunction(function $__7() {\n var i,\n key,\n value;\n return $traceurRuntime.createGeneratorInstance(function($ctx) {\n while (true)\n switch ($ctx.state) {\n case 0:\n i = 0;\n $ctx.state = 12;\n break;\n case 12:\n $ctx.state = (i < this.entries_.length) ? 8 : -2;\n break;\n case 4:\n i += 2;\n $ctx.state = 12;\n break;\n case 8:\n key = this.entries_[i];\n value = this.entries_[i + 1];\n $ctx.state = 9;\n break;\n case 9:\n $ctx.state = (key === deletedSentinel) ? 4 : 6;\n break;\n case 6:\n $ctx.state = 2;\n return value;\n case 2:\n $ctx.maybeThrow();\n $ctx.state = 4;\n break;\n default:\n return $ctx.end();\n }\n }, $__7, this);\n })\n }, {});\n Object.defineProperty(Map.prototype, Symbol.iterator, {\n configurable: true,\n writable: true,\n value: Map.prototype.entries\n });\n function polyfillMap(global) {\n var $__4 = global,\n Object = $__4.Object,\n Symbol = $__4.Symbol;\n if (!global.Map)\n global.Map = Map;\n var mapPrototype = global.Map.prototype;\n if (mapPrototype.entries === undefined)\n global.Map = Map;\n if (mapPrototype.entries) {\n maybeAddIterator(mapPrototype, mapPrototype.entries, Symbol);\n maybeAddIterator(Object.getPrototypeOf(new global.Map().entries()), function() {\n return this;\n }, Symbol);\n }\n }\n registerPolyfill(polyfillMap);\n return {\n get Map() {\n return Map;\n },\n get polyfillMap() {\n return polyfillMap;\n }\n };\n});\nSystem.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/Map.js\" + '');\nSystem.registerModule(\"traceur-runtime@0.0.79/src/runtime/polyfills/Set.js\", [], function() {\n \"use strict\";\n var __moduleName = \"traceur-runtime@0.0.79/src/runtime/polyfills/Set.js\";\n var $__0 = System.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/utils.js\"),\n isObject = $__0.isObject,\n maybeAddIterator = $__0.maybeAddIterator,\n registerPolyfill = $__0.registerPolyfill;\n var Map = System.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/Map.js\").Map;\n var getOwnHashObject = $traceurRuntime.getOwnHashObject;\n var $hasOwnProperty = Object.prototype.hasOwnProperty;\n function initSet(set) {\n set.map_ = new Map();\n }\n var Set = function Set() {\n var iterable = arguments[0];\n if (!isObject(this))\n throw new TypeError('Set called on incompatible type');\n if ($hasOwnProperty.call(this, 'map_')) {\n throw new TypeError('Set can not be reentrantly initialised');\n }\n initSet(this);\n if (iterable !== null && iterable !== undefined) {\n for (var $__4 = iterable[$traceurRuntime.toProperty(Symbol.iterator)](),\n $__5; !($__5 = $__4.next()).done; ) {\n var item = $__5.value;\n {\n this.add(item);\n }\n }\n }\n };\n ($traceurRuntime.createClass)(Set, {\n get size() {\n return this.map_.size;\n },\n has: function(key) {\n return this.map_.has(key);\n },\n add: function(key) {\n this.map_.set(key, key);\n return this;\n },\n delete: function(key) {\n return this.map_.delete(key);\n },\n clear: function() {\n return this.map_.clear();\n },\n forEach: function(callbackFn) {\n var thisArg = arguments[1];\n var $__2 = this;\n return this.map_.forEach((function(value, key) {\n callbackFn.call(thisArg, key, key, $__2);\n }));\n },\n values: $traceurRuntime.initGeneratorFunction(function $__7() {\n var $__8,\n $__9;\n return $traceurRuntime.createGeneratorInstance(function($ctx) {\n while (true)\n switch ($ctx.state) {\n case 0:\n $__8 = this.map_.keys()[Symbol.iterator]();\n $ctx.sent = void 0;\n $ctx.action = 'next';\n $ctx.state = 12;\n break;\n case 12:\n $__9 = $__8[$ctx.action]($ctx.sentIgnoreThrow);\n $ctx.state = 9;\n break;\n case 9:\n $ctx.state = ($__9.done) ? 3 : 2;\n break;\n case 3:\n $ctx.sent = $__9.value;\n $ctx.state = -2;\n break;\n case 2:\n $ctx.state = 12;\n return $__9.value;\n default:\n return $ctx.end();\n }\n }, $__7, this);\n }),\n entries: $traceurRuntime.initGeneratorFunction(function $__10() {\n var $__11,\n $__12;\n return $traceurRuntime.createGeneratorInstance(function($ctx) {\n while (true)\n switch ($ctx.state) {\n case 0:\n $__11 = this.map_.entries()[Symbol.iterator]();\n $ctx.sent = void 0;\n $ctx.action = 'next';\n $ctx.state = 12;\n break;\n case 12:\n $__12 = $__11[$ctx.action]($ctx.sentIgnoreThrow);\n $ctx.state = 9;\n break;\n case 9:\n $ctx.state = ($__12.done) ? 3 : 2;\n break;\n case 3:\n $ctx.sent = $__12.value;\n $ctx.state = -2;\n break;\n case 2:\n $ctx.state = 12;\n return $__12.value;\n default:\n return $ctx.end();\n }\n }, $__10, this);\n })\n }, {});\n Object.defineProperty(Set.prototype, Symbol.iterator, {\n configurable: true,\n writable: true,\n value: Set.prototype.values\n });\n Object.defineProperty(Set.prototype, 'keys', {\n configurable: true,\n writable: true,\n value: Set.prototype.values\n });\n function polyfillSet(global) {\n var $__6 = global,\n Object = $__6.Object,\n Symbol = $__6.Symbol;\n if (!global.Set)\n global.Set = Set;\n var setPrototype = global.Set.prototype;\n if (setPrototype.values) {\n maybeAddIterator(setPrototype, setPrototype.values, Symbol);\n maybeAddIterator(Object.getPrototypeOf(new global.Set().values()), function() {\n return this;\n }, Symbol);\n }\n }\n registerPolyfill(polyfillSet);\n return {\n get Set() {\n return Set;\n },\n get polyfillSet() {\n return polyfillSet;\n }\n };\n});\nSystem.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/Set.js\" + '');\nSystem.registerModule(\"traceur-runtime@0.0.79/node_modules/rsvp/lib/rsvp/asap.js\", [], function() {\n \"use strict\";\n var __moduleName = \"traceur-runtime@0.0.79/node_modules/rsvp/lib/rsvp/asap.js\";\n var len = 0;\n function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n scheduleFlush();\n }\n }\n var $__default = asap;\n var browserGlobal = (typeof window !== 'undefined') ? window : {};\n var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\n var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n function useNextTick() {\n return function() {\n process.nextTick(flush);\n };\n }\n function useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, {characterData: true});\n return function() {\n node.data = (iterations = ++iterations % 2);\n };\n }\n function useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function() {\n channel.port2.postMessage(0);\n };\n }\n function useSetTimeout() {\n return function() {\n setTimeout(flush, 1);\n };\n }\n var queue = new Array(1000);\n function flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n callback(arg);\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n len = 0;\n }\n var scheduleFlush;\n if (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]') {\n scheduleFlush = useNextTick();\n } else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n } else if (isWorker) {\n scheduleFlush = useMessageChannel();\n } else {\n scheduleFlush = useSetTimeout();\n }\n return {get default() {\n return $__default;\n }};\n});\nSystem.registerModule(\"traceur-runtime@0.0.79/src/runtime/polyfills/Promise.js\", [], function() {\n \"use strict\";\n var __moduleName = \"traceur-runtime@0.0.79/src/runtime/polyfills/Promise.js\";\n var async = System.get(\"traceur-runtime@0.0.79/node_modules/rsvp/lib/rsvp/asap.js\").default;\n var registerPolyfill = System.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/utils.js\").registerPolyfill;\n var promiseRaw = {};\n function isPromise(x) {\n return x && typeof x === 'object' && x.status_ !== undefined;\n }\n function idResolveHandler(x) {\n return x;\n }\n function idRejectHandler(x) {\n throw x;\n }\n function chain(promise) {\n var onResolve = arguments[1] !== (void 0) ? arguments[1] : idResolveHandler;\n var onReject = arguments[2] !== (void 0) ? arguments[2] : idRejectHandler;\n var deferred = getDeferred(promise.constructor);\n switch (promise.status_) {\n case undefined:\n throw TypeError;\n case 0:\n promise.onResolve_.push(onResolve, deferred);\n promise.onReject_.push(onReject, deferred);\n break;\n case +1:\n promiseEnqueue(promise.value_, [onResolve, deferred]);\n break;\n case -1:\n promiseEnqueue(promise.value_, [onReject, deferred]);\n break;\n }\n return deferred.promise;\n }\n function getDeferred(C) {\n if (this === $Promise) {\n var promise = promiseInit(new $Promise(promiseRaw));\n return {\n promise: promise,\n resolve: (function(x) {\n promiseResolve(promise, x);\n }),\n reject: (function(r) {\n promiseReject(promise, r);\n })\n };\n } else {\n var result = {};\n result.promise = new C((function(resolve, reject) {\n result.resolve = resolve;\n result.reject = reject;\n }));\n return result;\n }\n }\n function promiseSet(promise, status, value, onResolve, onReject) {\n promise.status_ = status;\n promise.value_ = value;\n promise.onResolve_ = onResolve;\n promise.onReject_ = onReject;\n return promise;\n }\n function promiseInit(promise) {\n return promiseSet(promise, 0, undefined, [], []);\n }\n var Promise = function Promise(resolver) {\n if (resolver === promiseRaw)\n return;\n if (typeof resolver !== 'function')\n throw new TypeError;\n var promise = promiseInit(this);\n try {\n resolver((function(x) {\n promiseResolve(promise, x);\n }), (function(r) {\n promiseReject(promise, r);\n }));\n } catch (e) {\n promiseReject(promise, e);\n }\n };\n ($traceurRuntime.createClass)(Promise, {\n catch: function(onReject) {\n return this.then(undefined, onReject);\n },\n then: function(onResolve, onReject) {\n if (typeof onResolve !== 'function')\n onResolve = idResolveHandler;\n if (typeof onReject !== 'function')\n onReject = idRejectHandler;\n var that = this;\n var constructor = this.constructor;\n return chain(this, function(x) {\n x = promiseCoerce(constructor, x);\n return x === that ? onReject(new TypeError) : isPromise(x) ? x.then(onResolve, onReject) : onResolve(x);\n }, onReject);\n }\n }, {\n resolve: function(x) {\n if (this === $Promise) {\n if (isPromise(x)) {\n return x;\n }\n return promiseSet(new $Promise(promiseRaw), +1, x);\n } else {\n return new this(function(resolve, reject) {\n resolve(x);\n });\n }\n },\n reject: function(r) {\n if (this === $Promise) {\n return promiseSet(new $Promise(promiseRaw), -1, r);\n } else {\n return new this((function(resolve, reject) {\n reject(r);\n }));\n }\n },\n all: function(values) {\n var deferred = getDeferred(this);\n var resolutions = [];\n try {\n var count = values.length;\n if (count === 0) {\n deferred.resolve(resolutions);\n } else {\n for (var i = 0; i < values.length; i++) {\n this.resolve(values[i]).then(function(i, x) {\n resolutions[i] = x;\n if (--count === 0)\n deferred.resolve(resolutions);\n }.bind(undefined, i), (function(r) {\n deferred.reject(r);\n }));\n }\n }\n } catch (e) {\n deferred.reject(e);\n }\n return deferred.promise;\n },\n race: function(values) {\n var deferred = getDeferred(this);\n try {\n for (var i = 0; i < values.length; i++) {\n this.resolve(values[i]).then((function(x) {\n deferred.resolve(x);\n }), (function(r) {\n deferred.reject(r);\n }));\n }\n } catch (e) {\n deferred.reject(e);\n }\n return deferred.promise;\n }\n });\n var $Promise = Promise;\n var $PromiseReject = $Promise.reject;\n function promiseResolve(promise, x) {\n promiseDone(promise, +1, x, promise.onResolve_);\n }\n function promiseReject(promise, r) {\n promiseDone(promise, -1, r, promise.onReject_);\n }\n function promiseDone(promise, status, value, reactions) {\n if (promise.status_ !== 0)\n return;\n promiseEnqueue(value, reactions);\n promiseSet(promise, status, value);\n }\n function promiseEnqueue(value, tasks) {\n async((function() {\n for (var i = 0; i < tasks.length; i += 2) {\n promiseHandle(value, tasks[i], tasks[i + 1]);\n }\n }));\n }\n function promiseHandle(value, handler, deferred) {\n try {\n var result = handler(value);\n if (result === deferred.promise)\n throw new TypeError;\n else if (isPromise(result))\n chain(result, deferred.resolve, deferred.reject);\n else\n deferred.resolve(result);\n } catch (e) {\n try {\n deferred.reject(e);\n } catch (e) {}\n }\n }\n var thenableSymbol = '@@thenable';\n function isObject(x) {\n return x && (typeof x === 'object' || typeof x === 'function');\n }\n function promiseCoerce(constructor, x) {\n if (!isPromise(x) && isObject(x)) {\n var then;\n try {\n then = x.then;\n } catch (r) {\n var promise = $PromiseReject.call(constructor, r);\n x[thenableSymbol] = promise;\n return promise;\n }\n if (typeof then === 'function') {\n var p = x[thenableSymbol];\n if (p) {\n return p;\n } else {\n var deferred = getDeferred(constructor);\n x[thenableSymbol] = deferred.promise;\n try {\n then.call(x, deferred.resolve, deferred.reject);\n } catch (r) {\n deferred.reject(r);\n }\n return deferred.promise;\n }\n }\n }\n return x;\n }\n function polyfillPromise(global) {\n if (!global.Promise)\n global.Promise = Promise;\n }\n registerPolyfill(polyfillPromise);\n return {\n get Promise() {\n return Promise;\n },\n get polyfillPromise() {\n return polyfillPromise;\n }\n };\n});\nSystem.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/Promise.js\" + '');\nSystem.registerModule(\"traceur-runtime@0.0.79/src/runtime/polyfills/StringIterator.js\", [], function() {\n \"use strict\";\n var $__2;\n var __moduleName = \"traceur-runtime@0.0.79/src/runtime/polyfills/StringIterator.js\";\n var $__0 = System.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/utils.js\"),\n createIteratorResultObject = $__0.createIteratorResultObject,\n isObject = $__0.isObject;\n var toProperty = $traceurRuntime.toProperty;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var iteratedString = Symbol('iteratedString');\n var stringIteratorNextIndex = Symbol('stringIteratorNextIndex');\n var StringIterator = function StringIterator() {};\n ($traceurRuntime.createClass)(StringIterator, ($__2 = {}, Object.defineProperty($__2, \"next\", {\n value: function() {\n var o = this;\n if (!isObject(o) || !hasOwnProperty.call(o, iteratedString)) {\n throw new TypeError('this must be a StringIterator object');\n }\n var s = o[toProperty(iteratedString)];\n if (s === undefined) {\n return createIteratorResultObject(undefined, true);\n }\n var position = o[toProperty(stringIteratorNextIndex)];\n var len = s.length;\n if (position >= len) {\n o[toProperty(iteratedString)] = undefined;\n return createIteratorResultObject(undefined, true);\n }\n var first = s.charCodeAt(position);\n var resultString;\n if (first < 0xD800 || first > 0xDBFF || position + 1 === len) {\n resultString = String.fromCharCode(first);\n } else {\n var second = s.charCodeAt(position + 1);\n if (second < 0xDC00 || second > 0xDFFF) {\n resultString = String.fromCharCode(first);\n } else {\n resultString = String.fromCharCode(first) + String.fromCharCode(second);\n }\n }\n o[toProperty(stringIteratorNextIndex)] = position + resultString.length;\n return createIteratorResultObject(resultString, false);\n },\n configurable: true,\n enumerable: true,\n writable: true\n }), Object.defineProperty($__2, Symbol.iterator, {\n value: function() {\n return this;\n },\n configurable: true,\n enumerable: true,\n writable: true\n }), $__2), {});\n function createStringIterator(string) {\n var s = String(string);\n var iterator = Object.create(StringIterator.prototype);\n iterator[toProperty(iteratedString)] = s;\n iterator[toProperty(stringIteratorNextIndex)] = 0;\n return iterator;\n }\n return {get createStringIterator() {\n return createStringIterator;\n }};\n});\nSystem.registerModule(\"traceur-runtime@0.0.79/src/runtime/polyfills/String.js\", [], function() {\n \"use strict\";\n var __moduleName = \"traceur-runtime@0.0.79/src/runtime/polyfills/String.js\";\n var createStringIterator = System.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/StringIterator.js\").createStringIterator;\n var $__1 = System.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/utils.js\"),\n maybeAddFunctions = $__1.maybeAddFunctions,\n maybeAddIterator = $__1.maybeAddIterator,\n registerPolyfill = $__1.registerPolyfill;\n var $toString = Object.prototype.toString;\n var $indexOf = String.prototype.indexOf;\n var $lastIndexOf = String.prototype.lastIndexOf;\n function startsWith(search) {\n var string = String(this);\n if (this == null || $toString.call(search) == '[object RegExp]') {\n throw TypeError();\n }\n var stringLength = string.length;\n var searchString = String(search);\n var searchLength = searchString.length;\n var position = arguments.length > 1 ? arguments[1] : undefined;\n var pos = position ? Number(position) : 0;\n if (isNaN(pos)) {\n pos = 0;\n }\n var start = Math.min(Math.max(pos, 0), stringLength);\n return $indexOf.call(string, searchString, pos) == start;\n }\n function endsWith(search) {\n var string = String(this);\n if (this == null || $toString.call(search) == '[object RegExp]') {\n throw TypeError();\n }\n var stringLength = string.length;\n var searchString = String(search);\n var searchLength = searchString.length;\n var pos = stringLength;\n if (arguments.length > 1) {\n var position = arguments[1];\n if (position !== undefined) {\n pos = position ? Number(position) : 0;\n if (isNaN(pos)) {\n pos = 0;\n }\n }\n }\n var end = Math.min(Math.max(pos, 0), stringLength);\n var start = end - searchLength;\n if (start < 0) {\n return false;\n }\n return $lastIndexOf.call(string, searchString, start) == start;\n }\n function includes(search) {\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n if (search && $toString.call(search) == '[object RegExp]') {\n throw TypeError();\n }\n var stringLength = string.length;\n var searchString = String(search);\n var searchLength = searchString.length;\n var position = arguments.length > 1 ? arguments[1] : undefined;\n var pos = position ? Number(position) : 0;\n if (pos != pos) {\n pos = 0;\n }\n var start = Math.min(Math.max(pos, 0), stringLength);\n if (searchLength + start > stringLength) {\n return false;\n }\n return $indexOf.call(string, searchString, pos) != -1;\n }\n function repeat(count) {\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var n = count ? Number(count) : 0;\n if (isNaN(n)) {\n n = 0;\n }\n if (n < 0 || n == Infinity) {\n throw RangeError();\n }\n if (n == 0) {\n return '';\n }\n var result = '';\n while (n--) {\n result += string;\n }\n return result;\n }\n function codePointAt(position) {\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var size = string.length;\n var index = position ? Number(position) : 0;\n if (isNaN(index)) {\n index = 0;\n }\n if (index < 0 || index >= size) {\n return undefined;\n }\n var first = string.charCodeAt(index);\n var second;\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n }\n function raw(callsite) {\n var raw = callsite.raw;\n var len = raw.length >>> 0;\n if (len === 0)\n return '';\n var s = '';\n var i = 0;\n while (true) {\n s += raw[i];\n if (i + 1 === len)\n return s;\n s += arguments[++i];\n }\n }\n function fromCodePoint() {\n var codeUnits = [];\n var floor = Math.floor;\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n if (!length) {\n return '';\n }\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n if (!isFinite(codePoint) || codePoint < 0 || codePoint > 0x10FFFF || floor(codePoint) != codePoint) {\n throw RangeError('Invalid code point: ' + codePoint);\n }\n if (codePoint <= 0xFFFF) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xD800;\n lowSurrogate = (codePoint % 0x400) + 0xDC00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n }\n return String.fromCharCode.apply(null, codeUnits);\n }\n function stringPrototypeIterator() {\n var o = $traceurRuntime.checkObjectCoercible(this);\n var s = String(o);\n return createStringIterator(s);\n }\n function polyfillString(global) {\n var String = global.String;\n maybeAddFunctions(String.prototype, ['codePointAt', codePointAt, 'endsWith', endsWith, 'includes', includes, 'repeat', repeat, 'startsWith', startsWith]);\n maybeAddFunctions(String, ['fromCodePoint', fromCodePoint, 'raw', raw]);\n maybeAddIterator(String.prototype, stringPrototypeIterator, Symbol);\n }\n registerPolyfill(polyfillString);\n return {\n get startsWith() {\n return startsWith;\n },\n get endsWith() {\n return endsWith;\n },\n get includes() {\n return includes;\n },\n get repeat() {\n return repeat;\n },\n get codePointAt() {\n return codePointAt;\n },\n get raw() {\n return raw;\n },\n get fromCodePoint() {\n return fromCodePoint;\n },\n get stringPrototypeIterator() {\n return stringPrototypeIterator;\n },\n get polyfillString() {\n return polyfillString;\n }\n };\n});\nSystem.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/String.js\" + '');\nSystem.registerModule(\"traceur-runtime@0.0.79/src/runtime/polyfills/ArrayIterator.js\", [], function() {\n \"use strict\";\n var $__2;\n var __moduleName = \"traceur-runtime@0.0.79/src/runtime/polyfills/ArrayIterator.js\";\n var $__0 = System.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/utils.js\"),\n toObject = $__0.toObject,\n toUint32 = $__0.toUint32,\n createIteratorResultObject = $__0.createIteratorResultObject;\n var ARRAY_ITERATOR_KIND_KEYS = 1;\n var ARRAY_ITERATOR_KIND_VALUES = 2;\n var ARRAY_ITERATOR_KIND_ENTRIES = 3;\n var ArrayIterator = function ArrayIterator() {};\n ($traceurRuntime.createClass)(ArrayIterator, ($__2 = {}, Object.defineProperty($__2, \"next\", {\n value: function() {\n var iterator = toObject(this);\n var array = iterator.iteratorObject_;\n if (!array) {\n throw new TypeError('Object is not an ArrayIterator');\n }\n var index = iterator.arrayIteratorNextIndex_;\n var itemKind = iterator.arrayIterationKind_;\n var length = toUint32(array.length);\n if (index >= length) {\n iterator.arrayIteratorNextIndex_ = Infinity;\n return createIteratorResultObject(undefined, true);\n }\n iterator.arrayIteratorNextIndex_ = index + 1;\n if (itemKind == ARRAY_ITERATOR_KIND_VALUES)\n return createIteratorResultObject(array[index], false);\n if (itemKind == ARRAY_ITERATOR_KIND_ENTRIES)\n return createIteratorResultObject([index, array[index]], false);\n return createIteratorResultObject(index, false);\n },\n configurable: true,\n enumerable: true,\n writable: true\n }), Object.defineProperty($__2, Symbol.iterator, {\n value: function() {\n return this;\n },\n configurable: true,\n enumerable: true,\n writable: true\n }), $__2), {});\n function createArrayIterator(array, kind) {\n var object = toObject(array);\n var iterator = new ArrayIterator;\n iterator.iteratorObject_ = object;\n iterator.arrayIteratorNextIndex_ = 0;\n iterator.arrayIterationKind_ = kind;\n return iterator;\n }\n function entries() {\n return createArrayIterator(this, ARRAY_ITERATOR_KIND_ENTRIES);\n }\n function keys() {\n return createArrayIterator(this, ARRAY_ITERATOR_KIND_KEYS);\n }\n function values() {\n return createArrayIterator(this, ARRAY_ITERATOR_KIND_VALUES);\n }\n return {\n get entries() {\n return entries;\n },\n get keys() {\n return keys;\n },\n get values() {\n return values;\n }\n };\n});\nSystem.registerModule(\"traceur-runtime@0.0.79/src/runtime/polyfills/Array.js\", [], function() {\n \"use strict\";\n var __moduleName = \"traceur-runtime@0.0.79/src/runtime/polyfills/Array.js\";\n var $__0 = System.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/ArrayIterator.js\"),\n entries = $__0.entries,\n keys = $__0.keys,\n values = $__0.values;\n var $__1 = System.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/utils.js\"),\n checkIterable = $__1.checkIterable,\n isCallable = $__1.isCallable,\n isConstructor = $__1.isConstructor,\n maybeAddFunctions = $__1.maybeAddFunctions,\n maybeAddIterator = $__1.maybeAddIterator,\n registerPolyfill = $__1.registerPolyfill,\n toInteger = $__1.toInteger,\n toLength = $__1.toLength,\n toObject = $__1.toObject;\n function from(arrLike) {\n var mapFn = arguments[1];\n var thisArg = arguments[2];\n var C = this;\n var items = toObject(arrLike);\n var mapping = mapFn !== undefined;\n var k = 0;\n var arr,\n len;\n if (mapping && !isCallable(mapFn)) {\n throw TypeError();\n }\n if (checkIterable(items)) {\n arr = isConstructor(C) ? new C() : [];\n for (var $__2 = items[$traceurRuntime.toProperty(Symbol.iterator)](),\n $__3; !($__3 = $__2.next()).done; ) {\n var item = $__3.value;\n {\n if (mapping) {\n arr[k] = mapFn.call(thisArg, item, k);\n } else {\n arr[k] = item;\n }\n k++;\n }\n }\n arr.length = k;\n return arr;\n }\n len = toLength(items.length);\n arr = isConstructor(C) ? new C(len) : new Array(len);\n for (; k < len; k++) {\n if (mapping) {\n arr[k] = typeof thisArg === 'undefined' ? mapFn(items[k], k) : mapFn.call(thisArg, items[k], k);\n } else {\n arr[k] = items[k];\n }\n }\n arr.length = len;\n return arr;\n }\n function of() {\n for (var items = [],\n $__4 = 0; $__4 < arguments.length; $__4++)\n items[$__4] = arguments[$__4];\n var C = this;\n var len = items.length;\n var arr = isConstructor(C) ? new C(len) : new Array(len);\n for (var k = 0; k < len; k++) {\n arr[k] = items[k];\n }\n arr.length = len;\n return arr;\n }\n function fill(value) {\n var start = arguments[1] !== (void 0) ? arguments[1] : 0;\n var end = arguments[2];\n var object = toObject(this);\n var len = toLength(object.length);\n var fillStart = toInteger(start);\n var fillEnd = end !== undefined ? toInteger(end) : len;\n fillStart = fillStart < 0 ? Math.max(len + fillStart, 0) : Math.min(fillStart, len);\n fillEnd = fillEnd < 0 ? Math.max(len + fillEnd, 0) : Math.min(fillEnd, len);\n while (fillStart < fillEnd) {\n object[fillStart] = value;\n fillStart++;\n }\n return object;\n }\n function find(predicate) {\n var thisArg = arguments[1];\n return findHelper(this, predicate, thisArg);\n }\n function findIndex(predicate) {\n var thisArg = arguments[1];\n return findHelper(this, predicate, thisArg, true);\n }\n function findHelper(self, predicate) {\n var thisArg = arguments[2];\n var returnIndex = arguments[3] !== (void 0) ? arguments[3] : false;\n var object = toObject(self);\n var len = toLength(object.length);\n if (!isCallable(predicate)) {\n throw TypeError();\n }\n for (var i = 0; i < len; i++) {\n var value = object[i];\n if (predicate.call(thisArg, value, i, object)) {\n return returnIndex ? i : value;\n }\n }\n return returnIndex ? -1 : undefined;\n }\n function polyfillArray(global) {\n var $__5 = global,\n Array = $__5.Array,\n Object = $__5.Object,\n Symbol = $__5.Symbol;\n maybeAddFunctions(Array.prototype, ['entries', entries, 'keys', keys, 'values', values, 'fill', fill, 'find', find, 'findIndex', findIndex]);\n maybeAddFunctions(Array, ['from', from, 'of', of]);\n maybeAddIterator(Array.prototype, values, Symbol);\n maybeAddIterator(Object.getPrototypeOf([].values()), function() {\n return this;\n }, Symbol);\n }\n registerPolyfill(polyfillArray);\n return {\n get from() {\n return from;\n },\n get of() {\n return of;\n },\n get fill() {\n return fill;\n },\n get find() {\n return find;\n },\n get findIndex() {\n return findIndex;\n },\n get polyfillArray() {\n return polyfillArray;\n }\n };\n});\nSystem.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/Array.js\" + '');\nSystem.registerModule(\"traceur-runtime@0.0.79/src/runtime/polyfills/Object.js\", [], function() {\n \"use strict\";\n var __moduleName = \"traceur-runtime@0.0.79/src/runtime/polyfills/Object.js\";\n var $__0 = System.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/utils.js\"),\n maybeAddFunctions = $__0.maybeAddFunctions,\n registerPolyfill = $__0.registerPolyfill;\n var $__1 = $traceurRuntime,\n defineProperty = $__1.defineProperty,\n getOwnPropertyDescriptor = $__1.getOwnPropertyDescriptor,\n getOwnPropertyNames = $__1.getOwnPropertyNames,\n isPrivateName = $__1.isPrivateName,\n keys = $__1.keys;\n function is(left, right) {\n if (left === right)\n return left !== 0 || 1 / left === 1 / right;\n return left !== left && right !== right;\n }\n function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n var props = source == null ? [] : keys(source);\n var p,\n length = props.length;\n for (p = 0; p < length; p++) {\n var name = props[p];\n if (isPrivateName(name))\n continue;\n target[name] = source[name];\n }\n }\n return target;\n }\n function mixin(target, source) {\n var props = getOwnPropertyNames(source);\n var p,\n descriptor,\n length = props.length;\n for (p = 0; p < length; p++) {\n var name = props[p];\n if (isPrivateName(name))\n continue;\n descriptor = getOwnPropertyDescriptor(source, props[p]);\n defineProperty(target, props[p], descriptor);\n }\n return target;\n }\n function polyfillObject(global) {\n var Object = global.Object;\n maybeAddFunctions(Object, ['assign', assign, 'is', is, 'mixin', mixin]);\n }\n registerPolyfill(polyfillObject);\n return {\n get is() {\n return is;\n },\n get assign() {\n return assign;\n },\n get mixin() {\n return mixin;\n },\n get polyfillObject() {\n return polyfillObject;\n }\n };\n});\nSystem.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/Object.js\" + '');\nSystem.registerModule(\"traceur-runtime@0.0.79/src/runtime/polyfills/Number.js\", [], function() {\n \"use strict\";\n var __moduleName = \"traceur-runtime@0.0.79/src/runtime/polyfills/Number.js\";\n var $__0 = System.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/utils.js\"),\n isNumber = $__0.isNumber,\n maybeAddConsts = $__0.maybeAddConsts,\n maybeAddFunctions = $__0.maybeAddFunctions,\n registerPolyfill = $__0.registerPolyfill,\n toInteger = $__0.toInteger;\n var $abs = Math.abs;\n var $isFinite = isFinite;\n var $isNaN = isNaN;\n var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;\n var MIN_SAFE_INTEGER = -Math.pow(2, 53) + 1;\n var EPSILON = Math.pow(2, -52);\n function NumberIsFinite(number) {\n return isNumber(number) && $isFinite(number);\n }\n ;\n function isInteger(number) {\n return NumberIsFinite(number) && toInteger(number) === number;\n }\n function NumberIsNaN(number) {\n return isNumber(number) && $isNaN(number);\n }\n ;\n function isSafeInteger(number) {\n if (NumberIsFinite(number)) {\n var integral = toInteger(number);\n if (integral === number)\n return $abs(integral) <= MAX_SAFE_INTEGER;\n }\n return false;\n }\n function polyfillNumber(global) {\n var Number = global.Number;\n maybeAddConsts(Number, ['MAX_SAFE_INTEGER', MAX_SAFE_INTEGER, 'MIN_SAFE_INTEGER', MIN_SAFE_INTEGER, 'EPSILON', EPSILON]);\n maybeAddFunctions(Number, ['isFinite', NumberIsFinite, 'isInteger', isInteger, 'isNaN', NumberIsNaN, 'isSafeInteger', isSafeInteger]);\n }\n registerPolyfill(polyfillNumber);\n return {\n get MAX_SAFE_INTEGER() {\n return MAX_SAFE_INTEGER;\n },\n get MIN_SAFE_INTEGER() {\n return MIN_SAFE_INTEGER;\n },\n get EPSILON() {\n return EPSILON;\n },\n get isFinite() {\n return NumberIsFinite;\n },\n get isInteger() {\n return isInteger;\n },\n get isNaN() {\n return NumberIsNaN;\n },\n get isSafeInteger() {\n return isSafeInteger;\n },\n get polyfillNumber() {\n return polyfillNumber;\n }\n };\n});\nSystem.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/Number.js\" + '');\nSystem.registerModule(\"traceur-runtime@0.0.79/src/runtime/polyfills/polyfills.js\", [], function() {\n \"use strict\";\n var __moduleName = \"traceur-runtime@0.0.79/src/runtime/polyfills/polyfills.js\";\n var polyfillAll = System.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/utils.js\").polyfillAll;\n polyfillAll(Reflect.global);\n var setupGlobals = $traceurRuntime.setupGlobals;\n $traceurRuntime.setupGlobals = function(global) {\n setupGlobals(global);\n polyfillAll(global);\n };\n return {};\n});\nSystem.get(\"traceur-runtime@0.0.79/src/runtime/polyfills/polyfills.js\" + '');\n", "//This file is generated by bin/hook.js\nvar _ = require('underscore');\nmodule.exports = { 'media_control': _.template('
<% var renderBar=function(name) { %>
>
>
>
>
>
>
>
<% }; %><% var renderSegmentedBar=function(name, segments) { segments=segments || 10; %>
><% for (var i = 0; i < segments; i++) { %>
>
<% } %>
<% }; %><% var renderDrawer=function(name, renderContent) { %>
>
>
>
>
<% renderContent(name); %>
<% }; %><% var renderIndicator=function(name) { %>
>
<% }; %><% var renderButton=function(name) { %><% }; %><% var templates={ bar: renderBar, segmentedBar: renderSegmentedBar, }; var render=function(settingsList) { _.each(settingsList, function(setting) { if(setting === \"seekbar\") { renderBar(setting); } else if (setting === \"volume\") { renderDrawer(setting, settings.volumeBarTemplate ? templates[settings.volumeBarTemplate] : function(name) { return renderSegmentedBar(name); }); } else if (setting === \"duration\" || setting=== \"position\") { renderIndicator(setting); } else { renderButton(setting); } }); }; %><% if (settings.default && settings.default.length) { %>
<% render(settings.default); %>
<% } %><% if (settings.left && settings.left.length) { %>
<% render(settings.left); %>
<% } %><% if (settings.right && settings.right.length) { %>
<% render(settings.right); %>
<% } %>
'),'seek_time': _.template(''),'flash': _.template('\">\" />\" src=\"<%= swfPath %>\">'),'hls': _.template('?inline=1\">\" />\" src=\"<%= swfPath %>\" width=\"100%\" height=\"100%\">'),'html5_video': _.template('\" type=\"<%=type%>\">'),'no_op': _.template('

Your browser does not support the playback of this video. Try to use a differente browser.

'),'background_button': _.template('

'),'dvr_controls': _.template('
LIVE
'),'poster': _.template('
'),'spinner_three_bounce': _.template('
'),'watermark': _.template('
>\">
'),CSS: {'container': '.container[data-container]{position:absolute;background-color:#000;height:100%;width:100%}.container[data-container].pointer-enabled{cursor:pointer}','core': '[data-player]{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);position:relative;margin:0;padding:0;border:0;font-style:normal;font-weight:400;text-align:center;overflow:hidden;font-size:100%;font-family:\"lucida grande\",tahoma,verdana,arial,sans-serif;text-shadow:0 0 0;box-sizing:border-box}[data-player] a,[data-player] abbr,[data-player] acronym,[data-player] address,[data-player] applet,[data-player] article,[data-player] aside,[data-player] audio,[data-player] b,[data-player] big,[data-player] blockquote,[data-player] canvas,[data-player] caption,[data-player] center,[data-player] cite,[data-player] code,[data-player] dd,[data-player] del,[data-player] details,[data-player] dfn,[data-player] div,[data-player] dl,[data-player] dt,[data-player] em,[data-player] embed,[data-player] fieldset,[data-player] figcaption,[data-player] figure,[data-player] footer,[data-player] form,[data-player] h1,[data-player] h2,[data-player] h3,[data-player] h4,[data-player] h5,[data-player] h6,[data-player] header,[data-player] hgroup,[data-player] i,[data-player] iframe,[data-player] img,[data-player] ins,[data-player] kbd,[data-player] label,[data-player] legend,[data-player] li,[data-player] mark,[data-player] menu,[data-player] nav,[data-player] object,[data-player] ol,[data-player] output,[data-player] p,[data-player] pre,[data-player] q,[data-player] ruby,[data-player] s,[data-player] samp,[data-player] section,[data-player] small,[data-player] span,[data-player] strike,[data-player] strong,[data-player] sub,[data-player] summary,[data-player] sup,[data-player] table,[data-player] tbody,[data-player] td,[data-player] tfoot,[data-player] th,[data-player] thead,[data-player] time,[data-player] tr,[data-player] tt,[data-player] u,[data-player] ul,[data-player] var,[data-player] video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}[data-player] table{border-collapse:collapse;border-spacing:0}[data-player] caption,[data-player] td,[data-player] th{text-align:left;font-weight:400;vertical-align:middle}[data-player] blockquote,[data-player] q{quotes:none}[data-player] blockquote:after,[data-player] blockquote:before,[data-player] q:after,[data-player] q:before{content:\"\";content:none}[data-player] a img{border:none}[data-player] *{max-width:initial;box-sizing:inherit;float:initial}[data-player].fullscreen{width:100%;height:100%}[data-player].nocursor{cursor:none}.clappr-style{display:none!important}@media screen{[data-player]{opacity:.99}}','media_control': '@font-face{font-family:Player;src:url(http://cdn.clappr.io/latest/assets/Player-Regular.eot);src:url(http://cdn.clappr.io/latest/assets/Player-Regular.eot?#iefix) format(\"embedded-opentype\"),url(http://cdn.clappr.io/latest/assets/Player-Regular.ttf) format(\"truetype\"),url(http://cdn.clappr.io/latest/assets/Player-Regular.svg#player) format(\"svg\")}.media-control-notransition{-webkit-transition:none!important;-webkit-transition-delay:0s;-moz-transition:none!important;-o-transition:none!important;transition:none!important}.media-control[data-media-control]{position:absolute;width:100%;height:100%;z-index:9999;pointer-events:none}.media-control[data-media-control].dragging{pointer-events:auto;cursor:-webkit-grabbing!important;cursor:grabbing!important}.media-control[data-media-control].dragging *{cursor:-webkit-grabbing!important;cursor:grabbing!important}.media-control[data-media-control] .media-control-background[data-background]{position:absolute;height:40%;width:100%;bottom:0;background-image:-owg(linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.9)));background-image:-webkit(linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.9)));background-image:-moz(linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.9)));background-image:-o(linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.9)));background-image:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.9));-webkit-transition:opacity .6s;-webkit-transition-delay:ease-out;-moz-transition:opacity .6s ease-out;-o-transition:opacity .6s ease-out;transition:opacity .6s ease-out}.media-control[data-media-control] .media-control-icon{font-family:Player;font-weight:400;font-style:normal;font-size:26px;line-height:32px;letter-spacing:0;speak:none;color:#fff;opacity:.5;vertical-align:middle;text-align:left;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:all .1s;-webkit-transition-delay:ease;-moz-transition:all .1s ease;-o-transition:all .1s ease;transition:all .1s ease}.media-control[data-media-control] .media-control-icon:hover{color:#fff;opacity:.75;text-shadow:rgba(255,255,255,.8) 0 0 5px}.media-control[data-media-control].media-control-hide .media-control-background[data-background]{opacity:0}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls]{bottom:-50px}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls]{position:absolute;bottom:7px;width:100%;height:32px;vertical-align:middle;pointer-events:auto;-webkit-transition:bottom .4s;-webkit-transition-delay:ease-out;-moz-transition:bottom .4s ease-out;-o-transition:bottom .4s ease-out;transition:bottom .4s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-left-panel[data-media-control]{position:absolute;top:0;left:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-center-panel[data-media-control]{height:100%;text-align:center;line-height:32px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-right-panel[data-media-control]{position:absolute;top:0;right:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button{background-color:transparent;border:0;margin:0 6px;padding:0;cursor:pointer;display:inline-block}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button:focus{outline:0}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-play]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-play]:before{content:\"\\\\e001\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-pause]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-pause]:before{content:\"\\\\e002\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-stop]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-stop]:before{content:\"\\\\e003\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen]{float:right;background-color:transparent;border:0;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen]:before{content:\"\\\\e006\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen].shrink:before{content:\"\\\\e007\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator]{cursor:default;float:right;background-color:transparent;border:0;height:100%;opacity:0}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator]:before{content:\"\\\\e008\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled:hover{opacity:1;text-shadow:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause]:before{content:\"\\\\e001\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause].playing:before{content:\"\\\\e002\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause].paused:before{content:\"\\\\e001\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop]:before{content:\"\\\\e001\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop].playing:before{content:\"\\\\e003\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop].stopped:before{content:\"\\\\e001\"}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration],.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{display:inline-block;font-size:10px;color:#fff;cursor:default;line-height:32px;position:relative}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{margin-left:6px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]{color:rgba(255,255,255,.5);margin-right:6px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]:before{content:\"|\";margin:0 3px}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]{position:absolute;top:-20px;left:0;display:inline-block;vertical-align:middle;width:100%;height:25px;cursor:pointer}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar]{width:100%;height:1px;position:relative;top:12px;background-color:#666}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-1[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#c2c2c2;-webkit-transition:all .1s;-webkit-transition-delay:ease-out;-moz-transition:all .1s ease-out;-o-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#005aff;-webkit-transition:all .1s;-webkit-transition-delay:ease-out;-moz-transition:all .1s ease-out;-o-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0;position:absolute;top:-3px;width:5px;height:7px;background-color:rgba(255,255,255,.5);-webkit-transition:opacity .1s;-webkit-transition-delay:ease;-moz-transition:opacity .1s ease;-o-transition:opacity .1s ease;transition:opacity .1s ease}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled{cursor:default}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{position:absolute;top:2px;left:0;width:20px;height:20px;opacity:1;-webkit-transition:all .1s;-webkit-transition-delay:ease-out;-moz-transition:all .1s ease-out;-o-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar] .bar-scrubber-icon[data-seekbar]{position:absolute;left:6px;top:6px;width:8px;height:8px;border-radius:10px;box-shadow:0 0 0 6px rgba(255,255,255,.2);background-color:#fff}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume]{float:right;display:inline-block;height:32px;cursor:pointer;margin:0 6px;box-sizing:border-box}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume]{float:left;bottom:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]{background-color:transparent;border:0;box-sizing:content-box;width:16px;height:32px;margin-right:6px;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]:hover{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]:before{content:\"\\\\e004\"}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted{opacity:.5}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted:hover{opacity:.7}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted:before{content:\"\\\\e005\"}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume]{float:left;position:relative;top:6px;width:42px;height:18px;padding:3px 0;overflow:hidden;-webkit-transition:width .2s;-webkit-transition-delay:ease-out;-moz-transition:width .2s ease-out;-o-transition:width .2s ease-out;transition:width .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]{float:left;width:4px;padding-left:2px;height:12px;opacity:.5;-webkit-box-shadow:inset 2px 0 0 #fff;-moz-box-shadow:inset 2px 0 0 #fff;-ms-box-shadow:inset 2px 0 0 #fff;-o-box-shadow:inset 2px 0 0 #fff;box-shadow:inset 2px 0 0 #fff;-webkit-transition:-webkit-transform .2s;-webkit-transition-delay:ease-out;-moz-transition:-moz-transform .2s ease-out;-o-transition:-o-transform .2s ease-out;transition:transform .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume].fill{-webkit-box-shadow:inset 2px 0 0 #fff;-moz-box-shadow:inset 2px 0 0 #fff;-ms-box-shadow:inset 2px 0 0 #fff;-o-box-shadow:inset 2px 0 0 #fff;box-shadow:inset 2px 0 0 #fff;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:nth-of-type(1){padding-left:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:hover{-webkit-transform:scaleY(1.5);-moz-transform:scaleY(1.5);-ms-transform:scaleY(1.5);-o-transform:scaleY(1.5);transform:scaleY(1.5)}.media-control[data-media-control].w320 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume].volume-bar-hide{height:12px;top:9px;padding:0;width:0}','seek_time': '.seek-time[data-seek-time]{position:absolute;width:auto;height:20px;line-height:20px;bottom:55px;background-color:rgba(2,2,2,.5);z-index:9999;-webkit-transition:opacity .1s;-webkit-transition-delay:ease;-moz-transition:opacity .1s ease;-o-transition:opacity .1s ease;transition:opacity .1s ease}.seek-time[data-seek-time].hidden[data-seek-time]{opacity:0}.seek-time[data-seek-time] span[data-seek-time]{position:relative;color:#fff;font-size:10px;padding-left:7px;padding-right:7px}','flash': '[data-flash]{position:absolute;height:100%;width:100%;background-color:#000;display:block;pointer-events:none}','hls': '[data-hls]{position:absolute;display:block;pointer-events:none;top:0}','html5_video': '[data-html5-video]{position:absolute;height:100%;width:100%;display:block}','html_img': '[data-html-img]{max-width:100%;max-height:100%}','no_op': '[data-no-op]{z-index:1000;position:absolute;height:100%;width:100%;text-align:center}[data-no-op] p[data-no-op-msg]{position:absolute;font-size:25px;top:40%;color:#fff}[data-no-op] canvas[data-no-op-canvas]{background-color:#777;height:100%;width:100%}','background_button': '.background-button[data-background-button]{font-family:Player;position:absolute;height:100%;width:100%;background-color:rgba(0,0,0,.2);pointer-events:none;-webkit-transition:all .4s;-webkit-transition-delay:ease-out;-moz-transition:all .4s ease-out;-o-transition:all .4s ease-out;transition:all .4s ease-out}.background-button[data-background-button].hide{background-color:transparent}.background-button[data-background-button].hide .background-button-wrapper[data-background-button]{opacity:0}.background-button[data-background-button] .background-button-wrapper[data-background-button]{position:absolute;overflow:hidden;width:100%;height:25%;line-height:100%;font-size:25%;top:50%;text-align:center}.background-button[data-background-button] .background-button-wrapper[data-background-button] .background-button-icon[data-background-button]{cursor:pointer;pointer-events:auto;font-family:Player;font-weight:400;font-style:normal;line-height:1;letter-spacing:0;speak:none;color:#fff;opacity:.75;border:0;outline:0;background-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:all .1s;-webkit-transition-delay:ease;-moz-transition:all .1s ease;-o-transition:all .1s ease;transition:all .1s ease}.background-button[data-background-button] .background-button-wrapper[data-background-button] .background-button-icon[data-background-button]:hover{opacity:1;text-shadow:rgba(255,255,255,.8) 0 0 15px}.background-button[data-background-button] .background-button-wrapper[data-background-button] .background-button-icon[data-background-button].playing:before{content:\"\\\\e002\"}.background-button[data-background-button] .background-button-wrapper[data-background-button] .background-button-icon[data-background-button].notplaying:before{content:\"\\\\e001\"}.background-button[data-background-button] .background-button-wrapper[data-background-button] .background-button-icon[data-background-button].playstop.playing:before{content:\"\\\\e003\"}.background-button[data-background-button] .background-button-wrapper[data-background-button] .background-button-icon[data-background-button].playstop.notplaying:before{content:\"\\\\e001\"}.media-control.media-control-hide[data-media-control] .background-button[data-background-button]{opacity:0}','dvr_controls': '@import url(http://fonts.googleapis.com/css?family=Roboto);.dvr-controls[data-dvr-controls]{display:inline-block;float:left;color:#fff;line-height:32px;font-size:10px;font-weight:700;margin-left:6px}.dvr-controls[data-dvr-controls] .live-info{cursor:default;font-family:Roboto,\"Open Sans\",Arial,sans-serif}.dvr-controls[data-dvr-controls] .live-info:before{content:\"\";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#ff0101}.dvr-controls[data-dvr-controls] .live-info.disabled{opacity:.3}.dvr-controls[data-dvr-controls] .live-info.disabled:before{background-color:#fff}.dvr-controls[data-dvr-controls] .live-button{cursor:pointer;outline:0;display:none;border:0;color:#fff;background-color:transparent;height:32px;padding:0;opacity:.7;font-family:Roboto,\"Open Sans\",Arial,sans-serif;-webkit-transition:all .1s;-webkit-transition-delay:ease;-moz-transition:all .1s ease;-o-transition:all .1s ease;transition:all .1s ease}.dvr-controls[data-dvr-controls] .live-button:before{content:\"\";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#fff}.dvr-controls[data-dvr-controls] .live-button:hover{opacity:1;text-shadow:rgba(255,255,255,.75) 0 0 5px}.dvr .dvr-controls[data-dvr-controls] .live-info{display:none}.dvr .dvr-controls[data-dvr-controls] .live-button{display:block}.dvr.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#005aff}.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#ff0101}.seek-time[data-seek-time] span[data-duration]{position:relative;color:rgba(255,255,255,.5);font-size:10px;padding-right:7px}.seek-time[data-seek-time] span[data-duration]:before{content:\"|\";margin-right:7px}','poster': '@font-face{font-family:Player;src:url(http://cdn.clappr.io/latest/assets/Player-Regular.eot);src:url(http://cdn.clappr.io/latest/assets/Player-Regular.eot?#iefix) format(\"embedded-opentype\"),url(http://cdn.clappr.io/latest/assets/Player-Regular.ttf) format(\"truetype\"),url(http://cdn.clappr.io/latest/assets/Player-Regular.svg#player) format(\"svg\")}.player-poster[data-poster]{cursor:pointer;position:absolute;height:100%;width:100%;z-index:998;top:0}.player-poster[data-poster] .poster-background[data-poster]{width:100%;height:100%;background-size:cover;background-repeat:no-repeat;background-position:50% 50%}.player-poster[data-poster] .play-wrapper[data-poster]{position:absolute;width:100%;height:25%;line-height:100%;font-size:25%;top:50%;text-align:center}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster]{font-family:Player;font-weight:400;font-style:normal;line-height:1;letter-spacing:0;speak:none;color:#fff;opacity:.75;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:opacity text-shadow;-webkit-transition-delay:.1s;-moz-transition:opacity text-shadow .1s;-o-transition:opacity text-shadow .1s;transition:opacity text-shadow .1s ease}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster].play[data-poster]:before{content:\"\\\\e001\"}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster]:hover{opacity:1;text-shadow:rgba(255,255,255,.8) 0 0 15px}','spinner_three_bounce': '.spinner-three-bounce[data-spinner]{position:absolute;margin:0 auto;width:70px;text-align:center;z-index:999;top:47%;left:0;right:0}.spinner-three-bounce[data-spinner]>div{width:18px;height:18px;background-color:#FFF;border-radius:100%;display:inline-block;-webkit-animation:bouncedelay 1.4s infinite ease-in-out;-moz-animation:bouncedelay 1.4s infinite ease-in-out;-ms-animation:bouncedelay 1.4s infinite ease-in-out;-o-animation:bouncedelay 1.4s infinite ease-in-out;animation:bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both}.spinner-three-bounce[data-spinner] [data-bounce1],.spinner-three-bounce[data-spinner] [data-bounce2]{-webkit-animation-delay:-.32s;-moz-animation-delay:-.32s;-ms-animation-delay:-.32s;-o-animation-delay:-.32s;animation-delay:-.32s}@-moz-keyframes bouncedelay{0%,100%,80%{-moz-transform:scale(0);transform:scale(0)}40%{-moz-transform:scale(1);transform:scale(1)}}@-webkit-keyframes bouncedelay{0%,100%,80%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@-o-keyframes bouncedelay{0%,100%,80%{-o-transform:scale(0);transform:scale(0)}40%{-o-transform:scale(1);transform:scale(1)}}@-ms-keyframes bouncedelay{0%,100%,80%{-ms-transform:scale(0);transform:scale(0)}40%{-ms-transform:scale(1);transform:scale(1)}}@keyframes bouncedelay{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}','watermark': '[data-watermark]{position:absolute;margin:100px auto 0;width:70px;text-align:center;z-index:10}[data-watermark-bottom-left]{bottom:10px;left:10px}[data-watermark-bottom-right]{bottom:10px;right:42px}[data-watermark-top-left]{top:-95px;left:10px}[data-watermark-top-right]{top:-95px;right:37px}',}};", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar $ = require('zepto');\nvar _ = require('underscore');\nvar JST = require('./jst');\n\nvar Styler = {\n getStyleFor: function(name, options={}) {\n return $('').html(_.template(JST.CSS[name])(options))[0];\n }\n};\n\nmodule.exports = Styler;\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar _ = require('underscore');\nvar Browser = require('browser');\n\nvar extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n _.extend(child, parent, staticProps);\n\n var Surrogate = function(){ this.constructor = child; };\n Surrogate.prototype = parent.prototype;\n child.prototype = new Surrogate();\n\n if (protoProps) _.extend(child.prototype, protoProps);\n\n child.__super__ = parent.prototype;\n\n child.super = function(name) {\n return parent.prototype[name];\n };\n\n child.prototype.getClass = function() {\n return child;\n }\n\n return child;\n};\n\nvar formatTime = function(time) {\n time = time * 1000\n time = parseInt(time/1000)\n var seconds = time % 60\n time = parseInt(time/60)\n var minutes = time % 60\n time = parseInt(time/60)\n var hours = time % 24\n var out = \"\"\n if (hours && hours > 0) out += (\"0\" + hours).slice(-2) + \":\"\n out += (\"0\" + minutes).slice(-2) + \":\"\n out += (\"0\" + seconds).slice(-2)\n return out.trim()\n}\n\nvar Fullscreen = {\n isFullscreen: function() {\n return document.webkitIsFullScreen || document.mozFullScreen || !!document.msFullscreenElement;\n },\n requestFullscreen: function(el) {\n if(el.requestFullscreen) {\n el.requestFullscreen();\n } else if(el.webkitRequestFullscreen) {\n el.webkitRequestFullscreen();\n } else if(el.mozRequestFullScreen) {\n el.mozRequestFullScreen();\n } else if(el.msRequestFullscreen) {\n el.msRequestFullscreen();\n }\n },\n cancelFullscreen: function() {\n if(document.exitFullscreen) {\n document.exitFullscreen();\n } else if(document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n } else if(document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if(document.msExitFullscreen) {\n document.msExitFullscreen();\n }\n }\n};\n\nclass Config {\n\n static _defaultConfig() {\n return {\n volume: {\n value: 100,\n parse: parseInt\n }\n }\n }\n\n static _defaultValueFor(key) {\n try {\n return this._defaultConfig()[key]['parse'](this._defaultConfig()[key]['value']);\n } catch(e) {\n return undefined\n }\n }\n\n static _create_keyspace(key){\n return 'clappr.' + document.domain + '.' + key\n }\n\n static restore(key) {\n if (Browser.hasLocalstorage && localStorage[this._create_keyspace(key)]){\n return this._defaultConfig()[key]['parse'](localStorage[this._create_keyspace(key)])\n }\n return this._defaultValueFor(key)\n }\n\n static persist(key, value) {\n if (Browser.hasLocalstorage) {\n try {\n localStorage[this._create_keyspace(key)] = value\n return true\n } catch(e) {\n return false\n }\n }\n }\n}\n\n\nvar seekStringToSeconds = function(url) {\n var elements = _.rest(_.compact(url.match(/t=([0-9]*)h?([0-9]*)m?([0-9]*)s/))).reverse();\n var seconds = 0;\n var factor = 1;\n _.each(elements, function (el) {\n seconds += (parseInt(el) * factor)\n factor = factor * 60\n }, this);\n return seconds;\n};\n\nmodule.exports = {\n extend: extend,\n formatTime: formatTime,\n Fullscreen: Fullscreen,\n Config: Config,\n seekStringToSeconds: seekStringToSeconds\n};\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * Container is responsible for the video rendering and state\n */\n\nvar UIObject = require('ui_object');\nvar Styler = require('../../base/styler');\nvar _ = require('underscore');\nvar Events = require('events')\n\nclass Container extends UIObject {\n get name() { return 'Container' }\n get attributes() { return { class: 'container', 'data-container': '' } }\n get events() {\n return {'click': 'clicked', 'mouseenter': 'mouseEnter', 'mouseleave': 'mouseLeave'}\n }\n\n constructor(options) {\n super(options);\n this.playback = options.playback;\n this.settings = this.playback.settings;\n this.isReady = false;\n this.mediaControlDisabled = false;\n this.plugins = [this.playback];\n this.bindEvents();\n }\n\n bindEvents() {\n this.listenTo(this.playback, Events.PLAYBACK_PROGRESS, this.progress);\n this.listenTo(this.playback, Events.PLAYBACK_TIMEUPDATE, this.timeUpdated);\n this.listenTo(this.playback, Events.PLAYBACK_READY, this.ready);\n this.listenTo(this.playback, Events.PLAYBACK_BUFFERING, this.buffering);\n this.listenTo(this.playback, Events.PLAYBACK_BUFFERFULL, this.bufferfull);\n this.listenTo(this.playback, Events.PLAYBACK_SETTINGSUPDATE, this.settingsUpdate);\n this.listenTo(this.playback, Events.PLAYBACK_LOADEDMETADATA, this.loadedMetadata);\n this.listenTo(this.playback, Events.PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinitionUpdate);\n this.listenTo(this.playback, Events.PLAYBACK_BITRATE, this.updateBitrate);\n this.listenTo(this.playback, Events.PLAYBACK_PLAYBACKSTATE, this.playbackStateChanged);\n this.listenTo(this.playback, Events.PLAYBACK_DVR, this.playbackDvrStateChanged);\n this.listenTo(this.playback, Events.PLAYBACK_MEDIACONTROL_DISABLE, this.disableMediaControl);\n this.listenTo(this.playback, Events.PLAYBACK_MEDIACONTROL_ENABLE, this.enableMediaControl);\n this.listenTo(this.playback, Events.PLAYBACK_ENDED, this.ended);\n this.listenTo(this.playback, Events.PLAYBACK_PLAY, this.playing);\n this.listenTo(this.playback, Events.PLAYBACK_ERROR, this.error);\n }\n\n with(klass) {\n _.extend(this, klass);\n return this;\n }\n\n playbackStateChanged() {\n this.trigger(Events.CONTAINER_PLAYBACKSTATE);\n }\n\n playbackDvrStateChanged(dvrInUse) {\n this.settings = this.playback.settings\n this.dvrInUse = dvrInUse\n this.trigger(Events.CONTAINER_PLAYBACKDVRSTATECHANGED, dvrInUse)\n }\n\n updateBitrate(newBitrate) {\n this.trigger(Events.CONTAINER_BITRATE, newBitrate)\n }\n\n statsReport(metrics) {\n this.trigger(Events.CONTAINER_STATS_REPORT, metrics)\n }\n\n getPlaybackType() {\n return this.playback.getPlaybackType()\n }\n\n isDvrEnabled() {\n return !!this.playback.dvrEnabled\n }\n\n isDvrInUse() {\n return !!this.dvrInUse\n }\n\n destroy() {\n this.trigger(Events.CONTAINER_DESTROYED, this, this.name);\n this.playback.destroy();\n _(this.plugins).each((plugin) => plugin.destroy())\n this.$el.remove();\n }\n\n setStyle(style) {\n this.$el.css(style);\n }\n\n animate(style, duration) {\n return this.$el.animate(style, duration).promise();\n }\n\n ready() {\n this.isReady = true;\n this.trigger(Events.CONTAINER_READY, this.name);\n }\n\n isPlaying() {\n return this.playback.isPlaying();\n }\n\n getDuration() {\n return this.playback.getDuration();\n }\n\n error(errorObj) {\n this.$el.append(errorObj.render().el)\n this.trigger(Events.CONTAINER_ERROR, {error: errorObj, container: this}, this.name);\n }\n\n loadedMetadata(duration) {\n this.trigger(Events.CONTAINER_LOADEDMETADATA, duration);\n }\n\n timeUpdated(position, duration) {\n this.trigger(Events.CONTAINER_TIMEUPDATE, position, duration, this.name);\n }\n\n progress(startPosition, endPosition, duration) {\n this.trigger(Events.CONTAINER_PROGRESS, startPosition, endPosition, duration, this.name);\n }\n\n playing() {\n this.trigger(Events.CONTAINER_PLAY, this.name);\n }\n\n play() {\n this.playback.play();\n }\n\n stop() {\n this.trigger(Events.CONTAINER_STOP, this.name);\n this.playback.stop();\n }\n\n pause() {\n this.trigger(Events.CONTAINER_PAUSE, this.name);\n this.playback.pause();\n }\n\n ended() {\n this.trigger(Events.CONTAINER_ENDED, this, this.name);\n }\n\n clicked() {\n this.trigger(Events.CONTAINER_CLICK, this, this.name);\n }\n\n setCurrentTime(time) {\n this.trigger(Events.CONTAINER_SEEK, time, this.name);\n this.playback.seek(time);\n }\n\n setVolume(value) {\n this.trigger(Events.CONTAINER_VOLUME, value, this.name);\n this.playback.volume(value);\n }\n\n fullscreen() {\n this.trigger(Events.CONTAINER_FULLSCREEN, this.name);\n }\n\n buffering() {\n this.trigger(Events.CONTAINER_STATE_BUFFERING, this.name);\n }\n\n bufferfull() {\n this.trigger(Events.CONTAINER_STATE_BUFFERFULL, this.name);\n }\n\n addPlugin(plugin) {\n this.plugins.push(plugin);\n }\n\n hasPlugin(name) {\n return !!this.getPlugin(name);\n }\n\n getPlugin(name) {\n return _(this.plugins).find(function(plugin) { return plugin.name === name });\n }\n\n mouseEnter() {\n this.trigger(Events.CONTAINER_MOUSE_ENTER)\n }\n\n mouseLeave() {\n this.trigger(Events.CONTAINER_MOUSE_LEAVE)\n }\n\n settingsUpdate() {\n this.settings = this.playback.settings;\n this.trigger(Events.CONTAINER_SETTINGSUPDATE);\n }\n\n highDefinitionUpdate() {\n this.trigger(Events.CONTAINER_HIGHDEFINITIONUPDATE);\n }\n\n isHighDefinitionInUse() {\n return this.playback.isHighDefinitionInUse()\n }\n\n disableMediaControl() {\n this.mediaControlDisabled = true;\n this.trigger(Events.CONTAINER_MEDIACONTROL_DISABLE);\n }\n\n enableMediaControl() {\n this.mediaControlDisabled = false;\n this.trigger(Events.CONTAINER_MEDIACONTROL_ENABLE);\n }\n\n render() {\n var style = Styler.getStyleFor('container');\n this.$el.append(style);\n this.$el.append(this.playback.render().el);\n return this;\n }\n}\n\nmodule.exports = Container;\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * The ContainerFactory is responsible for manage playback bootstrap and create containers.\n */\n\nvar _ = require('underscore');\nvar BaseObject = require('base_object');\nvar Container = require('container');\nvar $ = require('zepto');\nvar Events = require('events');\n\nclass ContainerFactory extends BaseObject {\n constructor(options, loader) {\n super(options);\n this.options = options;\n this.loader = loader;\n }\n\n createContainers() {\n return $.Deferred((promise) => {\n promise.resolve( _.map(this.options.sources, (source) => {\n return this.createContainer(source);\n }, this));\n });\n }\n\n findPlaybackPlugin(source) {\n return _.find(this.loader.playbackPlugins, (p) => { return p.canPlay(source.toString()) }, this);\n }\n\n createContainer(source) {\n var playbackPlugin = this.findPlaybackPlugin(source)\n var options = _.extend({}, this.options, {src: source, autoPlay: !!this.options.autoPlay})\n var playback = new playbackPlugin(options)\n var container = new Container({playback: playback})\n var defer = $.Deferred()\n this.listenToOnce(container, Events.CONTAINER_READY, () => defer.resolve(container))\n defer.promise(container)\n this.addContainerPlugins(container, source)\n return container\n }\n\n addContainerPlugins(container, source) {\n _.each(this.loader.containerPlugins, function(Plugin) {\n var options = _.extend(this.options, {container: container, src: source});\n container.addPlugin(new Plugin(options));\n }, this);\n }\n}\n\nmodule.exports = ContainerFactory;\n", "module.exports = require('./container_factory');\n\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * The Core is responsible to manage Containers, the mediator, MediaControl\n * and the player state.\n */\n\nvar _ = require('underscore')\nvar $ = require('zepto')\n\nvar UIObject = require('ui_object')\nvar ContainerFactory = require('../container_factory')\nvar Fullscreen = require('../../base/utils').Fullscreen\nvar Styler = require('../../base/styler')\nvar MediaControl = require('media_control')\nvar PlayerInfo = require('player_info')\nvar Mediator = require('mediator')\nvar Events = require('events');\n\nclass Core extends UIObject {\n get events() {\n return {\n 'webkitfullscreenchange': 'exit',\n 'mousemove': 'showMediaControl',\n 'mouseleave': 'hideMediaControl'\n }\n }\n\n get attributes() {\n return {\n 'data-player': ''\n }\n }\n\n constructor(options) {\n super(options)\n PlayerInfo.options = options\n this.options = options\n this.plugins = []\n this.containers = []\n this.createContainers(options)\n //FIXME fullscreen api sucks\n $(document).bind('fullscreenchange', () => this.exit())\n $(document).bind('MSFullscreenChange', () => this.exit())\n $(document).bind('mozfullscreenchange', () => this.exit())\n }\n\n createContainers(options) {\n this.defer = $.Deferred()\n this.defer.promise(this)\n this.containerFactory = new ContainerFactory(options, options.loader)\n this.containerFactory\n .createContainers()\n .then((containers) => this.setupContainers(containers))\n .then((containers) => this.resolveOnContainersReady(containers))\n }\n\n updateSize() {\n if (Fullscreen.isFullscreen()) {\n this.setFullscreen()\n } else {\n this.setPlayerSize()\n }\n Mediator.trigger(Events.PLAYER_RESIZE)\n }\n\n setFullscreen() {\n this.$el.addClass('fullscreen')\n this.$el.removeAttr('style')\n PlayerInfo.previousSize = PlayerInfo.currentSize\n PlayerInfo.currentSize = { width: $(window).width(), height: $(window).height() }\n }\n\n setPlayerSize() {\n this.$el.removeClass('fullscreen')\n PlayerInfo.currentSize = PlayerInfo.previousSize\n PlayerInfo.previousSize = { width: $(window).width(), height: $(window).height() }\n this.resize(PlayerInfo.currentSize)\n }\n\n resize(options) {\n var size = _.pick(options, 'width', 'height')\n this.el.style.height = `${size.height}px`;\n this.el.style.width = `${size.width}px`;\n PlayerInfo.previousSize = PlayerInfo.currentSize\n PlayerInfo.currentSize = size\n Mediator.trigger(Events.PLAYER_RESIZE)\n }\n\n resolveOnContainersReady(containers) {\n $.when.apply($, containers).done(() =>this.defer.resolve(this))\n }\n\n addPlugin(plugin) {\n this.plugins.push(plugin)\n }\n\n hasPlugin(name) {\n return !!this.getPlugin(name)\n }\n\n getPlugin(name) {\n return _(this.plugins).find((plugin) => plugin.name === name)\n }\n\n load(sources) {\n sources = _.isArray(sources) ? sources : [sources.toString()];\n _(this.containers).each((container) => container.destroy())\n this.containerFactory.options = _(this.options).extend({sources})\n this.containerFactory.createContainers().then((containers) => {\n this.setupContainers(containers)\n })\n }\n\n destroy() {\n _(this.containers).each((container) => container.destroy())\n _(this.plugins).each((plugin) => plugin.destroy())\n this.$el.remove()\n this.mediaControl.destroy()\n $(document).unbind('fullscreenchange')\n $(document).unbind('MSFullscreenChange')\n $(document).unbind('mozfullscreenchange')\n}\n\n exit() {\n this.updateSize()\n this.mediaControl.show()\n }\n\n setMediaControlContainer(container) {\n this.mediaControl.setContainer(container)\n this.mediaControl.render()\n }\n\n disableMediaControl() {\n this.mediaControl.disable()\n this.$el.removeClass('nocursor')\n }\n\n enableMediaControl() {\n this.mediaControl.enable()\n }\n\n removeContainer(container) {\n this.stopListening(container)\n this.containers = _.without(this.containers, container)\n }\n\n appendContainer(container) {\n this.listenTo(container, Events.CONTAINER_DESTROYED, this.removeContainer)\n this.el.appendChild(container.render().el)\n this.containers.push(container)\n }\n\n setupContainers(containers) {\n _.map(containers, this.appendContainer, this)\n this.setupMediaControl(this.getCurrentContainer())\n this.render()\n this.$el.appendTo(this.options.parentElement)\n return containers\n }\n\n createContainer(source) {\n var container = this.containerFactory.createContainer(source)\n this.appendContainer(container)\n return container\n }\n\n setupMediaControl(container) {\n if (this.mediaControl) {\n this.mediaControl.setContainer(container)\n } else {\n this.mediaControl = this.createMediaControl(_.extend({container: container}, this.options))\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_FULLSCREEN, this.toggleFullscreen)\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_SHOW, this.onMediaControlShow.bind(this, true))\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_HIDE, this.onMediaControlShow.bind(this, false))\n }\n }\n\n createMediaControl(options) {\n if(options.mediacontrol && options.mediacontrol.external) {\n return new options.mediacontrol.external(options);\n } else {\n return new MediaControl(options);\n }\n }\n\n getCurrentContainer() {\n return this.containers[0]\n }\n\n toggleFullscreen() {\n if (!Fullscreen.isFullscreen()) {\n Fullscreen.requestFullscreen(this.el)\n this.$el.addClass('fullscreen')\n } else {\n Fullscreen.cancelFullscreen()\n this.$el.removeClass('fullscreen nocursor')\n }\n this.mediaControl.show()\n }\n\n showMediaControl(event) {\n this.mediaControl.show(event)\n }\n\n hideMediaControl(event) {\n this.mediaControl.hide(event)\n }\n\n onMediaControlShow(showing) {\n if (showing)\n this.$el.removeClass('nocursor')\n else if (Fullscreen.isFullscreen())\n this.$el.addClass('nocursor')\n }\n\n render() {\n var style = Styler.getStyleFor('core')\n //FIXME\n //this.$el.empty()\n this.$el.append(style)\n this.$el.append(this.mediaControl.render().el)\n\n this.options.width = this.options.width || this.$el.width()\n this.options.height = this.options.height || this.$el.height()\n PlayerInfo.previousSize = PlayerInfo.currentSize = _.pick(this.options, 'width', 'height')\n this.updateSize()\n\n return this\n }\n}\n\nmodule.exports = Core\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * The Core Factory is responsible for instantiate the core and it's plugins.\n */\n\nvar _ = require('underscore');\nvar BaseObject = require('base_object');\nvar Core = require('core');\n\nclass CoreFactory extends BaseObject {\n constructor(player, loader) {\n this.player = player\n this.options = player.options\n this.loader = loader\n this.options.loader = this.loader\n }\n\n create() {\n this.core = new Core(this.options)\n this.core.then(this.addCorePlugins.bind(this))\n return this.core\n }\n\n addCorePlugins() {\n _.each(this.loader.corePlugins, function(Plugin) {\n var plugin = new Plugin(this.core)\n this.core.addPlugin(plugin)\n this.setupExternalInterface(plugin)\n }, this)\n return this.core\n }\n\n setupExternalInterface(plugin) {\n _.each(plugin.getExternalInterface(), function(value, key) {\n this.player[key] = value.bind(plugin)\n }, this)\n }\n}\n\nmodule.exports = CoreFactory;\n", "module.exports = require('./core_factory');\n\n", "module.exports = require('./loader');\n\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar BaseObject = require('base_object');\nvar _ = require('underscore');\nvar PlayerInfo = require('player_info')\n\n/* Playback Plugins */\nvar HTML5VideoPlayback = require('html5_video');\nvar FlashVideoPlayback = require('flash');\nvar HTML5AudioPlayback = require('html5_audio');\nvar HLSVideoPlayback = require('hls');\nvar HTMLImgPlayback = require('html_img');\nvar NoOp = require('../../playbacks/no_op');\n\n/* Container Plugins */\nvar SpinnerThreeBouncePlugin = require('../../plugins/spinner_three_bounce');\nvar StatsPlugin = require('../../plugins/stats');\nvar WaterMarkPlugin = require('../../plugins/watermark');\nvar PosterPlugin = require('poster');\nvar GoogleAnalyticsPlugin = require('../../plugins/google_analytics');\nvar ClickToPausePlugin = require('../../plugins/click_to_pause');\n\n/* Core Plugins */\nvar DVRControls = require('../../plugins/dvr_controls');\n\nclass Loader extends BaseObject {\n constructor(externalPlugins) {\n super()\n this.playbackPlugins = [HTML5VideoPlayback, FlashVideoPlayback, HTML5AudioPlayback, HLSVideoPlayback, HTMLImgPlayback, NoOp]\n this.containerPlugins = [SpinnerThreeBouncePlugin, WaterMarkPlugin, PosterPlugin, StatsPlugin, GoogleAnalyticsPlugin, ClickToPausePlugin]\n this.corePlugins = [DVRControls]\n if (externalPlugins) {\n this.addExternalPlugins(externalPlugins)\n }\n }\n\n addExternalPlugins(plugins) {\n var pluginName = function(plugin) { return plugin.prototype.name }\n if (plugins.playback) { this.playbackPlugins = _.uniq(plugins.playback.concat(this.playbackPlugins), pluginName) }\n if (plugins.container) { this.containerPlugins = _.uniq(plugins.container.concat(this.containerPlugins), pluginName) }\n if (plugins.core) { this.corePlugins = _.uniq(plugins.core.concat(this.corePlugins), pluginName) }\n PlayerInfo.playbackPlugins = this.playbackPlugins\n }\n\n getPlugin(name) {\n var allPlugins = _.union(this.containerPlugins, this.playbackPlugins, this.corePlugins)\n return _.find(allPlugins, function(plugin) { return plugin.prototype.name === name })\n }\n}\n\nmodule.exports = Loader;\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * The MediaControl is responsible for displaying the Player controls.\n */\n\nvar _ = require('underscore')\nvar $ = require('zepto')\nvar JST = require('../../base/jst')\nvar Styler = require('../../base/styler')\nvar UIObject = require('ui_object')\nvar Utils = require('../../base/utils')\nvar SeekTime = require('../seek_time')\nvar Mediator = require('mediator')\nvar PlayerInfo = require('player_info')\nvar Events = require('events')\nrequire('mousetrap')\n\nclass MediaControl extends UIObject {\n get name() { return 'MediaControl' }\n\n get attributes() {\n return {\n class: 'media-control',\n 'data-media-control': ''\n }\n }\n\n get events() {\n return {\n 'click [data-play]': 'play',\n 'click [data-pause]': 'pause',\n 'click [data-playpause]': 'togglePlayPause',\n 'click [data-stop]': 'stop',\n 'click [data-playstop]': 'togglePlayStop',\n 'click [data-fullscreen]': 'toggleFullscreen',\n 'click .bar-container[data-seekbar]': 'seek',\n 'click .bar-container[data-volume]': 'volume',\n 'click .drawer-icon[data-volume]': 'toggleMute',\n 'mouseenter .drawer-container[data-volume]': 'showVolumeBar',\n 'mouseleave .drawer-container[data-volume]': 'hideVolumeBar',\n 'mousedown .bar-scrubber[data-volume]': 'startVolumeDrag',\n 'mousedown .bar-scrubber[data-seekbar]': 'startSeekDrag',\n 'mousemove .bar-container[data-seekbar]': 'mousemoveOnSeekBar',\n 'mouseleave .bar-container[data-seekbar]': 'mouseleaveOnSeekBar',\n 'mouseenter .media-control-layer[data-controls]': 'setKeepVisible',\n 'mouseleave .media-control-layer[data-controls]': 'resetKeepVisible'\n }\n }\n\n get template() { return JST.media_control }\n\n constructor(options) {\n super(options);\n this.seekTime = new SeekTime(this)\n this.options = options\n this.mute = this.options.mute\n this.persistConfig = this.options.persistConfig\n this.container = options.container\n var initialVolume = (this.persistConfig) ? Utils.Config.restore(\"volume\") : 100;\n this.setVolume(this.mute ? 0 : initialVolume)\n this.keepVisible = false\n this.addEventListeners()\n this.settings = {\n left: ['play', 'stop', 'pause'],\n right: ['volume'],\n default: ['position', 'seekbar', 'duration']\n }\n this.settings = _.isEmpty(this.container.settings) ? this.settings : this.container.settings\n this.disabled = false\n if (this.container.mediaControlDisabled || this.options.chromeless) {\n this.disable()\n }\n $(document).bind('mouseup', (event) => this.stopDrag(event))\n $(document).bind('mousemove', (event) => this.updateDrag(event))\n Mediator.on(Events.PLAYER_RESIZE, () => this.playerResize())\n }\n\n addEventListeners() {\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.changeTogglePlay)\n this.listenTo(this.container, Events.CONTAINER_TIMEUPDATE, this.updateSeekBar)\n this.listenTo(this.container, Events.CONTAINER_PROGRESS, this.updateProgressBar)\n this.listenTo(this.container, Events.CONTAINER_SETTINGSUPDATE, this.settingsUpdate)\n this.listenTo(this.container, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.settingsUpdate)\n this.listenTo(this.container, Events.CONTAINER_HIGHDEFINITIONUPDATE, this.highDefinitionUpdate)\n this.listenTo(this.container, Events.CONTAINER_MEDIACONTROL_DISABLE, this.disable)\n this.listenTo(this.container, Events.CONTAINER_MEDIACONTROL_ENABLE, this.enable)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.ended)\n }\n\n disable() {\n this.disabled = true\n this.hide()\n this.$el.hide()\n }\n\n enable() {\n if (this.options.chromeless) return\n this.disabled = false\n this.show()\n }\n\n play() {\n this.container.play()\n }\n\n pause() {\n this.container.pause()\n }\n\n stop() {\n this.container.stop()\n }\n\n changeTogglePlay() {\n if (this.container.isPlaying()) {\n this.$playPauseToggle.removeClass('paused').addClass('playing')\n this.$playStopToggle.removeClass('stopped').addClass('playing')\n this.trigger(Events.MEDIACONTROL_PLAYING);\n } else {\n this.$playPauseToggle.removeClass('playing').addClass('paused')\n this.$playStopToggle.removeClass('playing').addClass('stopped')\n this.trigger(Events.MEDIACONTROL_NOTPLAYING);\n }\n }\n\n mousemoveOnSeekBar(event) {\n if (this.container.settings.seekEnabled) {\n var offsetX = event.pageX - this.$seekBarContainer.offset().left - (this.$seekBarHover.width() / 2)\n this.$seekBarHover.css({left: offsetX})\n }\n this.trigger(Events.MEDIACONTROL_MOUSEMOVE_SEEKBAR, event);\n }\n\n mouseleaveOnSeekBar(event) {\n this.trigger(Events.MEDIACONTROL_MOUSELEAVE_SEEKBAR, event);\n }\n\n playerResize() {\n if (Utils.Fullscreen.isFullscreen()) {\n this.$fullscreenToggle.addClass('shrink')\n } else {\n this.$fullscreenToggle.removeClass('shrink')\n }\n this.$el.removeClass('w320')\n if (PlayerInfo.currentSize.width <= 320 || this.options.hideVolumeBar) {\n this.$el.addClass('w320')\n }\n }\n\n togglePlayPause() {\n if (this.container.isPlaying()) {\n this.container.pause()\n } else {\n this.container.play()\n }\n this.changeTogglePlay()\n }\n\n togglePlayStop() {\n if (this.container.isPlaying()) {\n this.container.stop()\n } else {\n this.container.play()\n }\n this.changeTogglePlay()\n }\n\n startSeekDrag(event) {\n if (!this.container.settings.seekEnabled) return\n this.draggingSeekBar = true\n this.$el.addClass('dragging')\n this.$seekBarLoaded.addClass('media-control-notransition')\n this.$seekBarPosition.addClass('media-control-notransition')\n this.$seekBarScrubber.addClass('media-control-notransition')\n if (event) {\n event.preventDefault()\n }\n }\n\n startVolumeDrag(event) {\n this.draggingVolumeBar = true\n this.$el.addClass('dragging')\n if (event) {\n event.preventDefault()\n }\n }\n\n stopDrag(event) {\n if (this.draggingSeekBar) {\n this.seek(event)\n }\n this.$el.removeClass('dragging')\n this.$seekBarLoaded.removeClass('media-control-notransition')\n this.$seekBarPosition.removeClass('media-control-notransition')\n this.$seekBarScrubber.removeClass('media-control-notransition dragging')\n this.draggingSeekBar = false\n this.draggingVolumeBar = false\n }\n\n updateDrag(event) {\n if (event) {\n event.preventDefault()\n }\n if (this.draggingSeekBar) {\n var offsetX = event.pageX - this.$seekBarContainer.offset().left\n var pos = offsetX / this.$seekBarContainer.width() * 100\n pos = Math.min(100, Math.max(pos, 0))\n this.setSeekPercentage(pos)\n } else if (this.draggingVolumeBar) {\n this.volume(event)\n }\n }\n\n volume(event) {\n var offsetY = event.pageX - this.$volumeBarContainer.offset().left\n var volumeFromUI = (offsetY / this.$volumeBarContainer.width()) * 100\n this.setVolume(volumeFromUI)\n }\n\n toggleMute() {\n if (this.mute) {\n if (this.currentVolume <= 0) {\n this.currentVolume = 100\n }\n this.setVolume(this.currentVolume)\n } else {\n this.setVolume(0)\n }\n }\n\n setVolume(value) {\n this.currentVolume = Math.min(100, Math.max(value, 0))\n this.container.setVolume(this.currentVolume)\n this.setVolumeLevel(this.currentVolume)\n this.mute = this.currentVolume === 0\n this.persistConfig && Utils.Config.persist(\"volume\", this.currentVolume)\n }\n\n toggleFullscreen() {\n this.trigger(Events.MEDIACONTROL_FULLSCREEN, this.name)\n this.container.fullscreen()\n this.resetKeepVisible()\n }\n\n setContainer(container) {\n this.stopListening(this.container)\n this.container = container\n this.changeTogglePlay()\n this.addEventListeners()\n this.settingsUpdate()\n this.container.trigger(Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.container.isDvrInUse())\n this.setVolume(this.currentVolume)\n if (this.container.mediaControlDisabled) {\n this.disable()\n }\n this.trigger(Events.MEDIACONTROL_CONTAINERCHANGED)\n }\n\n showVolumeBar() {\n if (this.hideVolumeId) {\n clearTimeout(this.hideVolumeId)\n }\n this.$volumeBarContainer.removeClass('volume-bar-hide')\n }\n\n hideVolumeBar() {\n var timeout = 400\n if (!this.$volumeBarContainer) return\n if (this.draggingVolumeBar) {\n this.hideVolumeId = setTimeout(() => this.hideVolumeBar(), timeout)\n } else {\n if (this.hideVolumeId) {\n clearTimeout(this.hideVolumeId)\n }\n this.hideVolumeId = setTimeout(() => this.$volumeBarContainer.addClass('volume-bar-hide'), timeout)\n }\n }\n\n ended() {\n this.changeTogglePlay()\n }\n\n updateProgressBar(startPosition, endPosition, duration) {\n var loadedStart = startPosition / duration * 100\n var loadedEnd = endPosition / duration * 100\n this.$seekBarLoaded.css({ left: loadedStart + '%', width: (loadedEnd - loadedStart) + '%' })\n }\n\n updateSeekBar(position, duration) {\n if (this.draggingSeekBar) return\n if (position < 0) position = duration\n this.$seekBarPosition.removeClass('media-control-notransition')\n this.$seekBarScrubber.removeClass('media-control-notransition')\n var seekbarValue = (100 / duration) * position\n this.setSeekPercentage(seekbarValue)\n this.$('[data-position]').html(Utils.formatTime(position))\n this.$('[data-duration]').html(Utils.formatTime(duration))\n }\n\n seek(event) {\n if (!this.container.settings.seekEnabled) return\n var offsetX = event.pageX - this.$seekBarContainer.offset().left\n var pos = offsetX / this.$seekBarContainer.width() * 100\n pos = Math.min(100, Math.max(pos, 0))\n this.container.setCurrentTime(pos)\n this.setSeekPercentage(pos)\n return false\n }\n\n setKeepVisible() {\n this.keepVisible = true\n }\n\n resetKeepVisible() {\n this.keepVisible = false\n }\n\n isVisible() {\n return !this.$el.hasClass('media-control-hide')\n }\n\n show(event) {\n if (this.disabled) return\n var timeout = 2000\n if (!event || (event.clientX !== this.lastMouseX && event.clientY !== this.lastMouseY) || navigator.userAgent.match(/firefox/i)) {\n clearTimeout(this.hideId)\n this.$el.show()\n this.trigger(Events.MEDIACONTROL_SHOW, this.name)\n this.$el.removeClass('media-control-hide')\n this.hideId = setTimeout(() => this.hide(), timeout)\n if (event) {\n this.lastMouseX = event.clientX\n this.lastMouseY = event.clientY\n }\n }\n }\n\n hide() {\n var timeout = 2000\n clearTimeout(this.hideId)\n if (!this.isVisible() || this.options.hideMediaControl === false) return\n if (this.keepVisible || this.draggingSeekBar || this.draggingVolumeBar) {\n this.hideId = setTimeout(() => this.hide(), timeout)\n } else {\n this.trigger(Events.MEDIACONTROL_HIDE, this.name)\n this.$el.addClass('media-control-hide')\n this.hideVolumeBar()\n }\n }\n\n settingsUpdate() {\n if (this.container.getPlaybackType() !== null && !_.isEmpty(this.container.settings)) {\n this.settings = this.container.settings\n this.render()\n } else {\n this.disable()\n }\n }\n\n highDefinitionUpdate() {\n if (this.container.isHighDefinitionInUse()) {\n this.$el.find('button[data-hd-indicator]').addClass(\"enabled\")\n } else {\n this.$el.find('button[data-hd-indicator]').removeClass(\"enabled\")\n }\n }\n\n createCachedElements() {\n this.$playPauseToggle = this.$el.find('button.media-control-button[data-playpause]')\n this.$playStopToggle = this.$el.find('button.media-control-button[data-playstop]')\n this.$fullscreenToggle = this.$el.find('button.media-control-button[data-fullscreen]')\n this.$seekBarContainer = this.$el.find('.bar-container[data-seekbar]')\n this.$seekBarLoaded = this.$el.find('.bar-fill-1[data-seekbar]')\n this.$seekBarPosition = this.$el.find('.bar-fill-2[data-seekbar]')\n this.$seekBarScrubber = this.$el.find('.bar-scrubber[data-seekbar]')\n this.$seekBarHover = this.$el.find('.bar-hover[data-seekbar]')\n this.$volumeBarContainer = this.$el.find('.bar-container[data-volume]')\n this.$volumeIcon = this.$el.find('.drawer-icon[data-volume]')\n }\n\n setVolumeLevel(value) {\n if (!this.container.isReady || !this.$volumeBarContainer) {\n this.listenToOnce(this.container, Events.CONTAINER_READY, () => this.setVolumeLevel(value))\n } else {\n this.$volumeBarContainer.find('.segmented-bar-element').removeClass('fill')\n var item = Math.ceil(value / 10.0)\n this.$volumeBarContainer.find('.segmented-bar-element').slice(0, item).addClass('fill')\n if (value > 0) {\n this.$volumeIcon.removeClass('muted')\n } else {\n this.$volumeIcon.addClass('muted')\n }\n }\n }\n\n setSeekPercentage(value) {\n if (value > 100) return\n var pos = this.$seekBarContainer.width() * value / 100.0 - (this.$seekBarScrubber.width() / 2.0)\n this.currentSeekPercentage = value;\n this.$seekBarPosition.css({ width: value + '%' })\n this.$seekBarScrubber.css({ left: pos })\n }\n\n bindKeyEvents() {\n Mousetrap.bind(['space'], () => this.togglePlayPause())\n }\n\n unbindKeyEvents() {\n Mousetrap.unbind('space')\n }\n\n parseColors() {\n if (this.options.mediacontrol) {\n var buttonsColor = this.options.mediacontrol.buttons;\n var seekbarColor = this.options.mediacontrol.seekbar;\n this.$el.find('.bar-fill-2[data-seekbar]').css('background-color', seekbarColor)\n this.$el.find('[data-media-control] > .media-control-icon, .drawer-icon').css('color', buttonsColor)\n this.$el.find('.segmented-bar-element[data-volume]').css('boxShadow', \"inset 2px 0 0 \" + buttonsColor)\n }\n }\n\n render() {\n var timeout = 1000\n var style = Styler.getStyleFor('media_control')\n this.$el.html(this.template({ settings: this.settings }))\n this.$el.append(style)\n this.createCachedElements()\n this.$playPauseToggle.addClass('paused')\n this.$playStopToggle.addClass('stopped')\n\n this.changeTogglePlay()\n this.hideId = setTimeout(() => this.hide(), timeout)\n if (this.disabled) {\n this.hide()\n }\n\n this.$seekBarPosition.addClass('media-control-notransition')\n this.$seekBarScrubber.addClass('media-control-notransition')\n\n if (!this.currentSeekPercentage) {\n this.currentSeekPercentage = 0\n }\n this.setSeekPercentage(this.currentSeekPercentage)\n\n this.$el.ready(() => {\n if (!this.container.settings.seekEnabled) {\n this.$seekBarContainer.addClass('seek-disabled')\n }\n\n this.setVolume(this.currentVolume)\n this.bindKeyEvents()\n this.hideVolumeBar()\n })\n\n this.parseColors()\n this.seekTime.render()\n this.highDefinitionUpdate()\n\n this.trigger(Events.MEDIACONTROL_RENDERED)\n return this\n }\n\n destroy() {\n $(document).unbind('mouseup')\n $(document).unbind('mousemove')\n this.unbindKeyEvents()\n }\n}\n\nmodule.exports = MediaControl\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar BaseObject = require('base_object')\nvar CoreFactory = require('./core_factory')\nvar Loader = require('./loader')\nvar _ = require('underscore');\nvar ScrollMonitor = require('scrollmonitor');\nvar PlayerInfo = require('player_info')\n\nclass Player extends BaseObject {\n constructor(options) {\n super(options)\n window.p = this\n var defaultOptions = {persistConfig: true, width: 640, height: 360}\n this.options = _.extend(defaultOptions, options)\n this.options.sources = this.normalizeSources(options)\n this.loader = new Loader(this.options.plugins || {})\n this.coreFactory = new CoreFactory(this, this.loader)\n PlayerInfo.currentSize = {width: options.width, height: options.height}\n if (this.options.parentId) {\n this.setParentId(this.options.parentId)\n }\n }\n\n setParentId(parentId) {\n var el = document.querySelector(parentId)\n if (el) {\n this.attachTo(el)\n }\n }\n\n attachTo(element) {\n this.options.parentElement = element\n this.core = this.coreFactory.create()\n if (this.options.autoPlayVisible) {\n this.bindAutoPlayVisible(this.options.autoPlayVisible)\n }\n }\n\n bindAutoPlayVisible(option) {\n this.elementWatcher = ScrollMonitor.create(this.core.$el)\n if (option === 'full') {\n this.elementWatcher.fullyEnterViewport(() => this.enterViewport())\n } else if (option === 'partial') {\n this.elementWatcher.enterViewport(() => this.enterViewport())\n }\n }\n\n enterViewport() {\n if (this.elementWatcher.top !== 0 && !this.isPlaying()) {\n this.play()\n }\n }\n\n normalizeSources(options) {\n var sources = _.compact(_.flatten([options.source, options.sources]))\n return _.isEmpty(sources)? ['no.op'] : sources\n }\n\n resize(size) {\n this.core.resize(size);\n }\n\n load(sources) {\n this.core.load(sources)\n }\n\n destroy() {\n this.core.destroy()\n }\n\n play() {\n this.core.mediaControl.container.play();\n }\n\n pause() {\n this.core.mediaControl.container.pause();\n }\n\n stop() {\n this.core.mediaControl.container.stop();\n }\n\n seek(time) {\n this.core.mediaControl.container.setCurrentTime(time);\n }\n\n setVolume(volume) {\n this.core.mediaControl.container.setVolume(volume);\n }\n\n mute() {\n this.core.mediaControl.container.setVolume(0);\n }\n\n unmute() {\n this.core.mediaControl.container.setVolume(100);\n }\n\n isPlaying() {\n return this.core.mediaControl.container.isPlaying();\n }\n\n getContainerPlugin(name) {\n return this.core.mediaControl.container.getPlugin(name)\n }\n\n getCorePlugin(name) {\n return this.core.getPlugin(name)\n }\n}\n\nmodule.exports = Player\n\n", "module.exports = require('./seek_time');\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar UIObject = require('ui_object')\nvar Styler = require('../../base/styler')\nvar JST = require('../../base/jst')\nvar formatTime = require('../../base/utils').formatTime\nvar Events = require('events')\n\nclass SeekTime extends UIObject {\n get name() { return 'seek_time' }\n get template() {\n return JST.seek_time;\n }\n get attributes() {\n return {\n 'class': 'seek-time hidden',\n 'data-seek-time': ''\n };\n }\n constructor(mediaControl) {\n super()\n this.mediaControl = mediaControl\n this.addEventListeners()\n }\n\n addEventListeners() {\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_MOUSEMOVE_SEEKBAR, this.showTime)\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_MOUSELEAVE_SEEKBAR, this.hideTime)\n }\n\n showTime(event) {\n var offset = event.pageX - this.mediaControl.$seekBarContainer.offset().left\n var timePosition = Math.min(100, Math.max((offset) / this.mediaControl.$seekBarContainer.width() * 100, 0))\n var pointerPosition = event.pageX - this.mediaControl.$el.offset().left - (this.$el.width() / 2)\n pointerPosition = Math.min(Math.max(0, pointerPosition), this.mediaControl.$el.width() - this.$el.width())\n var currentTime = timePosition * this.mediaControl.container.getDuration() / 100\n var options = {\n timestamp: currentTime,\n formattedTime: formatTime(currentTime),\n pointerPosition: pointerPosition\n }\n this.update(options)\n }\n\n hideTime() {\n this.$el.addClass('hidden')\n this.$el.css('left', '-100%')\n }\n\n update(options) {\n if (this.mediaControl.container.getPlaybackType() === 'vod' || this.mediaControl.container.isDvrInUse()) {\n this.$el.find('[data-seek-time]').text(options.formattedTime)\n this.$el.css('left', options.pointerPosition)\n this.$el.removeClass('hidden')\n }\n }\n\n render() {\n var style = Styler.getStyleFor(this.name);\n this.$el.html(this.template());\n this.$el.append(style);\n this.mediaControl.$el.append(this.el);\n }\n}\n\nmodule.exports = SeekTime;\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar Playback = require('playback')\nvar Styler = require('../../base/styler')\nvar JST = require('../../base/jst')\nvar Mediator = require('mediator')\nvar _ = require('underscore')\nvar $ = require('zepto')\nvar Browser = require('browser')\nvar seekStringToSeconds = require('../../base/utils').seekStringToSeconds\nvar Events = require('events')\n\nrequire('mousetrap')\n\nvar objectIE = '\" classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" data-flash-vod=\"\">\"> \" /> '\n\nclass Flash extends Playback {\n get name() { return 'flash' }\n get tagName() { return 'object' }\n get template() { return JST.flash }\n\n constructor(options) {\n super(options)\n this.src = options.src\n this.defaultBaseSwfPath = \"http://cdn.clappr.io/\" + Clappr.version + \"/assets/\"\n this.swfPath = (options.swfBasePath || this.defaultBaseSwfPath) + \"Player.swf\"\n this.autoPlay = options.autoPlay\n this.settings = {default: ['seekbar']}\n this.settings.left = [\"playpause\", \"position\", \"duration\"]\n this.settings.right = [\"fullscreen\", \"volume\"]\n this.settings.seekEnabled = true\n this.isReady = false\n this.addListeners()\n }\n\n\n bootstrap() {\n this.el.width = \"100%\"\n this.el.height = \"100%\"\n this.isReady = true\n if (this.currentState === 'PLAYING') {\n this.firstPlay()\n } else {\n this.currentState = \"IDLE\"\n this.autoPlay && this.play()\n }\n $('
').insertAfter(this.$el)\n this.trigger(Events.PLAYBACK_READY, this.name)\n }\n\n getPlaybackType() {\n return 'vod'\n }\n\n setupFirefox() {\n var $el = this.$('embed')\n $el.attr('data-flash', '')\n this.setElement($el[0])\n }\n\n isHighDefinitionInUse() {\n return false\n }\n\n updateTime() {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, this.el.getPosition(), this.el.getDuration(), this.name)\n }\n\n addListeners() {\n Mediator.on(this.uniqueId + ':progress', this.progress, this)\n Mediator.on(this.uniqueId + ':timeupdate', this.updateTime, this)\n Mediator.on(this.uniqueId + ':statechanged', this.checkState, this)\n Mediator.on(this.uniqueId + ':flashready', this.bootstrap, this)\n _.each(_.range(1,10), function (i) { Mousetrap.bind([i.toString()], () => this.seek(i * 10)) }.bind(this))\n }\n\n stopListening() {\n super()\n Mediator.off(this.uniqueId + ':progress')\n Mediator.off(this.uniqueId + ':timeupdate')\n Mediator.off(this.uniqueId + ':statechanged')\n Mediator.off(this.uniqueId + ':flashready')\n _.each(_.range(1,10), function (i) { Mousetrap.unbind([i.toString()], () => this.seek(i * 10)) }.bind(this))\n }\n\n checkState() {\n if (this.currentState === \"PAUSED\") {\n return\n } else if (this.currentState !== \"PLAYING_BUFFERING\" && this.el.getState() === \"PLAYING_BUFFERING\") {\n this.trigger(Events.PLAYBACK_BUFFERING, this.name)\n this.currentState = \"PLAYING_BUFFERING\"\n } else if (this.el.getState() === \"PLAYING\") {\n this.trigger(Events.PLAYBACK_BUFFERFULL, this.name)\n this.currentState = \"PLAYING\"\n } else if (this.el.getState() === \"IDLE\") {\n this.currentState = \"IDLE\"\n } else if (this.el.getState() === \"ENDED\") {\n this.trigger(Events.PLAYBACK_ENDED, this.name)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, 0, this.el.getDuration(), this.name)\n this.currentState = \"ENDED\"\n }\n }\n\n progress() {\n if (this.currentState !== \"IDLE\" && this.currentState !== \"ENDED\") {\n this.trigger(Events.PLAYBACK_PROGRESS, 0, this.el.getBytesLoaded(), this.el.getBytesTotal(), this.name)\n }\n }\n\n firstPlay() {\n if (this.el.playerPlay) {\n this.el.playerPlay(this.src)\n this.listenToOnce(this, Events.PLAYBACK_BUFFERFULL, () => this.checkInitialSeek())\n this.currentState = \"PLAYING\"\n } else {\n this.listenToOnce(this, Events.PLAYBACK_READY, this.firstPlay)\n }\n }\n\n checkInitialSeek() {\n var seekTime = seekStringToSeconds(window.location.href)\n if (seekTime !== 0) {\n this.seekSeconds(seekTime)\n }\n }\n\n play() {\n if (this.el.getState() === 'PAUSED' || this.el.getState() === 'PLAYING_BUFFERING') {\n this.currentState = \"PLAYING\"\n this.el.playerResume()\n } else if (this.el.getState() !== 'PLAYING') {\n this.firstPlay()\n }\n this.trigger(Events.PLAYBACK_PLAY, this.name)\n }\n\n volume(value) {\n if (this.isReady) {\n this.el.playerVolume(value)\n } else {\n this.listenToOnce(this, Events.PLAYBACK_BUFFERFULL, () => this.volume(value))\n }\n }\n\n pause() {\n this.currentState = \"PAUSED\"\n this.el.playerPause()\n }\n\n stop() {\n this.el.playerStop()\n this.trigger(Events.PLAYBACK_TIMEUPDATE, 0, this.name)\n }\n\n isPlaying() {\n return !!(this.isReady && this.currentState.indexOf(\"PLAYING\") > -1)\n }\n\n getDuration() {\n return this.el.getDuration()\n }\n\n seek(seekBarValue) {\n var seekTo = this.el.getDuration() * (seekBarValue / 100)\n this.seekSeconds(seekTo)\n }\n\n seekSeconds(seekTo) {\n this.el.playerSeek(seekTo)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, seekTo, this.el.getDuration(), this.name)\n if (this.currentState === \"PAUSED\") {\n this.el.playerPause()\n }\n }\n\n destroy() {\n clearInterval(this.bootstrapId)\n this.stopListening()\n this.$el.remove()\n }\n\n setupIE() {\n this.setElement($(_.template(objectIE)({ cid: this.cid, swfPath: this.swfPath, playbackId: this.uniqueId })))\n }\n\n render() {\n var style = Styler.getStyleFor(this.name)\n this.$el.html(this.template({ cid: this.cid, swfPath: this.swfPath, playbackId: this.uniqueId }))\n if(Browser.isFirefox) {\n this.setupFirefox()\n } else if(Browser.isLegacyIE) {\n this.setupIE()\n }\n this.$el.append(style)\n return this\n }\n}\n\nFlash.canPlay = function(resource) {\n if (!Browser.hasFlash) {\n return false\n } else if ((!Browser.isMobile && Browser.isFirefox) || Browser.isLegacyIE) {\n return _.isString(resource) && !!resource.match(/(.*)\\.(mp4|mov|f4v|3gpp|3gp)/)\n } else {\n return _.isString(resource) && !!resource.match(/(.*)\\.(mov|f4v|3gpp|3gp)/)\n }\n}\n\nmodule.exports = Flash\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar Playback = require('playback')\nvar JST = require('../../base/jst')\nvar _ = require(\"underscore\")\nvar Mediator = require('mediator')\nvar Browser = require('browser')\nvar Events = require('events')\nvar Styler = require('../../base/styler')\n\nvar objectIE = '\" class=\"hls-playback\" classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" data-hls=\"\" width=\"100%\" height=\"100%\">\"> \" /> '\n\nclass HLS extends Playback {\n get name() { return 'hls' }\n get tagName() { return 'object' }\n get template() { return JST.hls }\n get attributes() {\n return {\n 'class': 'hls-playback',\n 'data-hls': '',\n 'type': 'application/x-shockwave-flash',\n 'width': '100%',\n 'height': '100%'\n }\n }\n\n constructor(options) {\n super(options)\n this.src = options.src\n this.defaultBaseSwfPath = \"http://cdn.clappr.io/\" + Clappr.version + \"/assets/\"\n this.swfPath = (options.swfBasePath || this.defaultBaseSwfPath) + \"HLSPlayer.swf\"\n this.flushLiveURLCache = (options.flushLiveURLCache === undefined)? true: options.flushLiveURLCache\n this.capLevelToStage = (options.capLevelToStage === undefined)? false: options.capLevelToStage\n this.highDefinition = false\n this.autoPlay = options.autoPlay\n this.defaultSettings = {\n left: [\"playstop\"],\n default: ['seekbar'],\n right: [\"fullscreen\", \"volume\", \"hd-indicator\"],\n seekEnabled: false\n }\n this.settings = _.extend({}, this.defaultSettings)\n this.playbackType = 'live'\n this.addListeners()\n }\n\n addListeners() {\n Mediator.on(this.uniqueId + ':flashready', () => this.bootstrap())\n Mediator.on(this.uniqueId + ':timeupdate', () => this.updateTime())\n Mediator.on(this.uniqueId + ':playbackstate', (state) => this.setPlaybackState(state))\n Mediator.on(this.uniqueId + ':levelchanged', (isHD) => this.updateHighDefinition(isHD))\n Mediator.on(this.uniqueId + ':playbackerror', () => this.flashPlaybackError())\n }\n\n stopListening() {\n super()\n Mediator.off(this.uniqueId + ':flashready')\n Mediator.off(this.uniqueId + ':timeupdate')\n Mediator.off(this.uniqueId + ':playbackstate')\n Mediator.off(this.uniqueId + ':levelchanged')\n Mediator.off(this.uniqueId + ':playbackerror')\n }\n\n bootstrap() {\n this.el.width = \"100%\"\n this.el.height = \"100%\"\n this.isReady = true\n this.currentState = \"IDLE\"\n this.setFlashSettings()\n this.updatePlaybackType()\n this.autoPlay && this.play()\n this.trigger(Events.PLAYBACK_READY, this.name)\n }\n\n setFlashSettings() {\n this.el.globoPlayerSetflushLiveURLCache(this.flushLiveURLCache)\n this.el.globoPlayerCapLeveltoStage(this.capLevelToStage)\n this.el.globoPlayerSetmaxBufferLength(0)\n }\n\n updateHighDefinition(isHD) {\n this.highDefinition = (isHD === \"hd\");\n this.trigger(Events.PLAYBACK_HIGHDEFINITIONUPDATE)\n this.trigger(Events.PLAYBACK_BITRATE, {'bitrate': this.getCurrentBitrate()})\n }\n\n updateTime() {\n var duration = this.getDuration()\n var position = Math.min(Math.max(this.el.globoGetPosition(), 0), duration)\n var previousDVRStatus = this.dvrEnabled\n var livePlayback = (this.playbackType === 'live')\n this.dvrEnabled = (livePlayback && duration > 240)\n\n if (duration === 100 || livePlayback === undefined) {\n return;\n }\n\n if (this.dvrEnabled !== previousDVRStatus) {\n this.updateSettings()\n this.trigger(Events.PLAYBACK_SETTINGSUPDATE, this.name)\n }\n\n if (livePlayback && (!this.dvrEnabled || !this.dvrInUse)) {\n position = duration\n }\n\n this.trigger(Events.PLAYBACK_TIMEUPDATE, position, duration, this.name)\n }\n\n play() {\n if(this.currentState === 'PAUSED') {\n this.el.globoPlayerResume()\n } else if (this.currentState !== \"PLAYING\") {\n this.firstPlay()\n }\n this.trigger(Events.PLAYBACK_PLAY, this.name)\n }\n\n getPlaybackType() {\n if (this.playbackType === 'live') {\n this.updateTime()\n }\n return this.playbackType? this.playbackType: null\n }\n\n getCurrentBitrate() {\n var currentLevel = this.getLevels()[this.el.globoGetLevel()]\n return currentLevel.bitrate\n }\n\n getLastProgramDate() {\n var programDate = this.el.globoGetLastProgramDate()\n // normalizing for BRT\n return programDate - 1.08e+7\n }\n\n isHighDefinitionInUse() {\n return this.highDefinition\n }\n\n getLevels() {\n if (!this.levels || this.levels.length === 0) {\n this.levels = this.el.globoGetLevels()\n }\n return this.levels\n }\n\n setPlaybackState(state) {\n var bufferLength = this.el.globoGetbufferLength()\n if (state === \"PLAYING_BUFFERING\" && bufferLength < 1) {\n this.trigger(Events.PLAYBACK_BUFFERING, this.name)\n this.updateCurrentState(state)\n } else if (state === \"PLAYING\") {\n if (_.contains([\"PLAYING_BUFFERING\", \"PAUSED\", \"IDLE\"], this.currentState)) {\n this.trigger(Events.PLAYBACK_BUFFERFULL, this.name)\n this.updateCurrentState(state)\n }\n } else if (state === \"PAUSED\") {\n this.updateCurrentState(state)\n } else if (state === \"IDLE\") {\n this.trigger(Events.PLAYBACK_ENDED, this.name)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, 0, this.el.globoGetDuration(), this.name)\n this.updateCurrentState(state)\n }\n this.lastBufferLength = bufferLength\n }\n\n updateCurrentState(state) {\n this.currentState = state\n this.updatePlaybackType()\n }\n\n updatePlaybackType() {\n this.playbackType = this.el.globoGetType()\n if (this.playbackType) {\n this.playbackType = this.playbackType.toLowerCase()\n if (this.playbackType === 'vod') {\n this.startReportingProgress()\n } else {\n this.stopReportingProgress()\n }\n }\n this.trigger(Events.PLAYBACK_PLAYBACKSTATE)\n }\n\n startReportingProgress() {\n if (!this.reportingProgress) {\n this.reportingProgress = true\n Mediator.on(this.uniqueId + ':fragmentloaded', this.onFragmentLoaded)\n }\n }\n\n stopReportingProgress() {\n Mediator.off(this.uniqueId + ':fragmentloaded', this.onFragmentLoaded, this)\n }\n\n onFragmentLoaded() {\n var buffered = this.el.globoGetPosition() + this.el.globoGetbufferLength()\n this.trigger(Events.PLAYBACK_PROGRESS, this.el.globoGetPosition(), buffered, this.getDuration(), this.name)\n }\n\n firstPlay() {\n this.setFlashSettings() //ensure flushLiveURLCache will work (#327)\n this.el.globoPlayerLoad(this.src)\n this.el.globoPlayerPlay()\n }\n\n volume(value) {\n if (this.isReady) {\n this.el.globoPlayerVolume(value)\n } else {\n this.listenToOnce(this, Events.PLAYBACK_BUFFERFULL, () => this.volume(value))\n }\n }\n\n pause() {\n if (this.playbackType !== 'live' || this.dvrEnabled) {\n this.el.globoPlayerPause()\n if (this.playbackType === 'live' && this.dvrEnabled) {\n this.updateDvr(true)\n }\n }\n }\n\n stop() {\n this.el.globoPlayerStop()\n this.trigger(Events.PLAYBACK_TIMEUPDATE, 0, this.name)\n }\n\n isPlaying() {\n if (this.currentState) {\n return !!(this.currentState.match(/playing/i))\n }\n return false\n }\n\n getDuration() {\n var duration = this.el.globoGetDuration()\n if (this.playbackType === 'live') {\n // estimate 10 seconds of buffer time for live streams for seek positions\n duration = duration - 10\n }\n return duration\n }\n\n seek(time) {\n var duration = this.getDuration()\n if (time > 0) {\n time = duration * time / 100\n }\n\n if (this.playbackType === 'live') {\n // seek operations to a time within 5 seconds from live stream will position playhead back to live\n var dvrInUse = (time >= 0 && duration - time > 5)\n if (!dvrInUse) {\n time = -1\n }\n this.updateDvr(dvrInUse)\n }\n this.el.globoPlayerSeek(time)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, time, duration, this.name)\n this.trigger(Events.PLAYBACK_HIGHDEFINITIONUPDATE)\n }\n\n updateDvr(dvrInUse) {\n var previousDvrInUse = !!this.dvrInUse\n this.dvrInUse = dvrInUse\n if (this.dvrInUse !== previousDvrInUse) {\n this.updateSettings()\n this.trigger(Events.PLAYBACK_DVR, this.dvrInUse)\n this.trigger(Events.PLAYBACK_STATS_ADD, {'dvr': this.dvrInUse})\n }\n }\n\n flashPlaybackError() {\n this.trigger(Events.PLAYBACK_STOP)\n }\n\n timeUpdate(time, duration) {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, time, duration, this.name)\n }\n\n destroy() {\n this.stopListening()\n this.$el.remove()\n }\n\n setupFirefox() {\n var $el = this.$('embed')\n $el.attr('data-hls', '')\n this.setElement($el)\n }\n\n setupIE() {\n this.setElement($(_.template(objectIE)({cid: this.cid, swfPath: this.swfPath, playbackId: this.uniqueId})))\n }\n\n updateSettings() {\n this.settings = _.extend({}, this.defaultSettings)\n if (this.playbackType === \"vod\" || this.dvrInUse) {\n this.settings.left = [\"playpause\", \"position\", \"duration\"]\n this.settings.seekEnabled = true\n } else if (this.dvrEnabled) {\n this.settings.left = [\"playpause\"]\n this.settings.seekEnabled = true\n } else {\n this.settings.seekEnabled = false\n }\n }\n\n setElement(element) {\n this.$el = element\n this.el = element[0]\n }\n\n render() {\n var style = Styler.getStyleFor(this.name)\n if(Browser.isLegacyIE) {\n this.setupIE()\n } else {\n this.$el.html(this.template({cid: this.cid, swfPath: this.swfPath, playbackId: this.uniqueId}))\n if(Browser.isFirefox) {\n this.setupFirefox()\n } else if (Browser.isIE) {\n this.$('embed').remove()\n }\n }\n this.el.id = this.cid\n this.$el.append(style)\n return this\n }\n}\n\nHLS.canPlay = function(resource) {\n return !!(resource.match(/^http(.*).m3u8?/) && Browser.hasFlash)\n}\n\nmodule.exports = HLS\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar Playback = require('playback')\nvar Events = require('events')\nvar _ = require('underscore')\n\nclass HTML5Audio extends Playback {\n get name() { return 'html5_audio' }\n get tagName() { return 'audio' }\n get events() {\n return {\n 'timeupdate': 'timeUpdated',\n 'ended': 'ended',\n 'canplaythrough': 'bufferFull'\n }\n }\n\n constructor(params) {\n super(params)\n this.el.src = params.src\n this.settings = {\n left: ['playpause', 'position', 'duration'],\n right: ['fullscreen', 'volume'],\n default: ['seekbar']\n }\n this.render()\n params.autoPlay && this.play()\n }\n\n bindEvents() {\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.play)\n this.listenTo(this.container, Events.CONTAINER_PAUSE, this.pause)\n this.listenTo(this.container, Events.CONTAINER_SEEK, this.seek)\n this.listenTo(this.container, Events.CONTAINER_VOLUME, this.volume)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.stop)\n }\n\n getPlaybackType() {\n return \"aod\"\n }\n\n play() {\n this.el.play()\n this.trigger(Events.PLAYBACK_PLAY);\n }\n\n pause() {\n this.el.pause()\n }\n\n stop() {\n this.pause()\n this.el.currentTime = 0\n }\n\n volume(value) {\n this.el.volume = value / 100\n }\n\n mute() {\n this.el.volume = 0\n }\n\n unmute() {\n this.el.volume = 1\n }\n\n isMuted() {\n return !!this.el.volume\n }\n\n ended() {\n this.trigger(Events.CONTAINER_TIMEUPDATE, 0)\n }\n\n seek(seekBarValue) {\n var time = this.el.duration * (seekBarValue / 100)\n this.el.currentTime = time\n }\n\n getCurrentTime() {\n return this.el.currentTime\n }\n\n getDuration() {\n return this.el.duration\n }\n\n isPlaying() {\n return !this.el.paused && !this.el.ended\n }\n\n timeUpdated() {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, this.el.currentTime, this.el.duration, this.name)\n }\n\n bufferFull() {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, this.el.currentTime, this.el.duration, this.name)\n this.trigger(Events.PLAYBACK_BUFFERFULL)\n }\n\n render() {\n this.trigger(Events.PLAYBACK_READY, this.name)\n return this\n }\n }\n\nHTML5Audio.canPlay = function(resource) {\n var mimetypes = {\n 'wav': ['audio/wav'],\n 'mp3': ['audio/mp3', 'audio/mpeg;codecs=\"mp3\"'],\n 'aac': ['audio/mp4;codecs=\"mp4a.40.5\"']\n }\n var extension = resource.split('?')[0].match(/.*\\.(.*)$/)[1]\n\n if (_.has(mimetypes, extension)) {\n var a = document.createElement('audio')\n return !!_.find(mimetypes[extension], function (ext) { return !!a.canPlayType(ext).replace(/no/, '') })\n }\n return false\n}\n\n\nmodule.exports = HTML5Audio\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar Playback = require('playback')\nvar JST = require('../../base/jst')\nvar Styler = require('../../base/styler')\nvar Browser = require('browser')\nvar seekStringToSeconds = require('../../base/utils').seekStringToSeconds\nvar Events = require('events')\n\nvar _ = require('underscore')\n\nrequire('mousetrap')\n\nclass HTML5Video extends Playback {\n get name() { return 'html5_video' }\n get tagName() { return 'video' }\n get template() { return JST.html5_video }\n\n get attributes() {\n return {\n 'data-html5-video': ''\n }\n }\n\n get events() {\n return {\n 'timeupdate': 'timeUpdated',\n 'progress': 'progress',\n 'ended': 'ended',\n 'stalled': 'stalled',\n 'waiting': 'waiting',\n 'canplaythrough': 'bufferFull',\n 'loadedmetadata': 'loadedMetadata'\n }\n }\n\n constructor(options) {\n super(options)\n this.options = options\n this.src = options.src\n this.el.src = options.src\n this.el.loop = options.loop\n this.firstBuffer = true\n this.isHLS = (this.src.indexOf('m3u8') > -1)\n this.settings = {default: ['seekbar']}\n if (Browser.isSafari) {\n this.setupSafari()\n } else {\n this.el.preload = options.preload ? options.preload: 'metadata'\n this.settings.seekEnabled = true\n }\n this.settings.left = this.isHLS ? [\"playstop\"] : [\"playpause\", \"position\", \"duration\"]\n this.settings.right = [\"fullscreen\", \"volume\"]\n this.bindEvents()\n }\n\n setupSafari() {\n this.el.preload = 'auto'\n if (!this.isHLS) {\n this.settings.seekEnabled = true\n }\n }\n\n bindEvents() {\n _.each(_.range(1,10), function (i) { Mousetrap.bind([i.toString()], () => this.seek(i * 10)) }.bind(this))\n }\n\n stopListening() {\n _.each(_.range(1,10), function (i) { Mousetrap.unbind([i.toString()], () => this.seek(i * 10)) }.bind(this))\n }\n\n loadedMetadata(e) {\n this.trigger(Events.PLAYBACK_LOADEDMETADATA, e.target.duration)\n this.trigger(Events.PLAYBACK_SETTINGSUPDATE)\n this.checkInitialSeek()\n }\n\n getPlaybackType() {\n return this.isHLS && _.contains([0, undefined, Infinity], this.el.duration) ? 'live' : 'vod'\n }\n\n isHighDefinitionInUse() {\n return false\n }\n\n play() {\n this.el.play()\n this.trigger(Events.PLAYBACK_PLAY);\n if (this.isHLS) {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, 1, 1, this.name)\n }\n }\n\n pause() {\n this.el.pause()\n }\n\n stop() {\n this.pause()\n if (this.el.readyState !== 0) {\n this.el.currentTime = 0\n }\n }\n\n volume(value) {\n this.el.volume = value / 100\n }\n\n mute() {\n this.el.volume = 0\n }\n\n unmute() {\n this.el.volume = 1\n }\n\n isMuted() {\n return !!this.el.volume\n }\n\n isPlaying() {\n return !this.el.paused && !this.el.ended\n }\n\n ended() {\n this.trigger(Events.PLAYBACK_ENDED, this.name)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, 0, this.el.duration, this.name)\n }\n\n stalled() {\n if (this.getPlaybackType() === 'vod' && this.el.readyState < this.el.HAVE_FUTURE_DATA) {\n this.trigger(Events.PLAYBACK_BUFFERING, this.name)\n }\n }\n\n waiting() {\n if(this.el.readyState < this.el.HAVE_FUTURE_DATA) {\n this.trigger(Events.PLAYBACK_BUFFERING, this.name)\n }\n }\n\n bufferFull() {\n if (this.options.poster && this.firstBuffer) {\n this.firstBuffer = false\n if (!this.isPlaying()) {\n this.el.poster = this.options.poster\n }\n } else {\n this.el.poster = ''\n }\n this.trigger(Events.PLAYBACK_BUFFERFULL, this.name)\n }\n\n destroy() {\n this.stopListening()\n this.stop()\n this.el.src = ''\n this.$el.remove()\n }\n\n seek(seekBarValue) {\n var time = this.el.duration * (seekBarValue / 100)\n this.seekSeconds(time)\n }\n\n seekSeconds(time) {\n this.el.currentTime = time\n }\n\n checkInitialSeek() {\n var seekTime = seekStringToSeconds(window.location.href)\n this.seekSeconds(seekTime)\n }\n\n getCurrentTime() {\n return this.el.currentTime\n }\n\n getDuration() {\n return this.el.duration\n }\n\n timeUpdated() {\n if (this.getPlaybackType() === 'live') {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, 1, 1, this.name)\n } else {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, this.el.currentTime, this.el.duration, this.name)\n }\n }\n\n progress() {\n if (!this.el.buffered.length) return\n var bufferedPos = 0\n for (var i = 0; i < this.el.buffered.length; i++) {\n if (this.el.currentTime >= this.el.buffered.start(i) && this.el.currentTime <= this.el.buffered.end(i)) {\n bufferedPos = i\n break\n }\n }\n this.trigger(Events.PLAYBACK_PROGRESS, this.el.buffered.start(bufferedPos), this.el.buffered.end(bufferedPos), this.el.duration, this.name)\n }\n\n typeFor(src) {\n return (src.indexOf('.m3u8') > 0) ? 'application/vnd.apple.mpegurl' : 'video/mp4'\n }\n\n render() {\n var style = Styler.getStyleFor(this.name)\n this.$el.html(this.template({ src: this.src, type: this.typeFor(this.src) }))\n this.$el.append(style)\n this.trigger(Events.PLAYBACK_READY, this.name)\n setTimeout(() => this.options.autoPlay && this.play(), 0);\n return this\n }\n}\n\nHTML5Video.canPlay = function(resource) {\n var mimetypes = {\n 'mp4': _.map([\"avc1.42E01E\", \"avc1.58A01E\", \"avc1.4D401E\", \"avc1.64001E\", \"mp4v.20.8\", \"mp4v.20.240\", \"mp4a.40.2\"],\n function (codec) { return 'video/mp4; codecs=\"' + codec + ', mp4a.40.2\"'}),\n 'ogg': ['video/ogg; codecs=\"theora, vorbis\"', 'video/ogg; codecs=\"dirac\"', 'video/ogg; codecs=\"theora, speex\"'],\n '3gpp': ['video/3gpp; codecs=\"mp4v.20.8, samr\"'],\n 'webm': ['video/webm; codecs=\"vp8, vorbis\"'],\n 'mkv': ['video/x-matroska; codecs=\"theora, vorbis\"'],\n 'm3u8': ['application/x-mpegURL']\n }\n mimetypes['ogv'] = mimetypes['ogg']\n mimetypes['3gp'] = mimetypes['3gpp']\n var extension = resource.split('?')[0].match(/.*\\.(.*)$/)[1]\n\n if (_.has(mimetypes, extension)) {\n var v = document.createElement('video')\n return !!_.find(mimetypes[extension], function (ext) { return !!v.canPlayType(ext).replace(/no/, '') })\n }\n return false\n}\n\nmodule.exports = HTML5Video\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar Playback = require('playback')\nvar Styler = require('../../base/styler')\n\nclass HTMLImg extends Playback {\n get name() { return 'html_img' }\n get tagName() { return 'img' }\n get attributes() {\n return {\n 'data-html-img': ''\n }\n }\n\n getPlaybackType() {\n return null\n }\n\n constructor(params) {\n super(params)\n this.el.src = params.src\n }\n\n render() {\n var style = Styler.getStyleFor(this.name)\n this.$el.append(style)\n return this\n }\n }\n\nHTMLImg.canPlay = function(resource) {\n return !!resource.match(/(.*).(png|jpg|jpeg|gif|bmp)/)\n}\n\nmodule.exports = HTMLImg\n", "module.exports = require('./no_op');\n", "var Playback = require('playback')\nvar JST = require('../../base/jst')\nvar Styler = require('../../base/styler')\n\nclass NoOp extends Playback {\n get name() { return 'no_op' }\n get template() { return JST.no_op }\n get attributes() {\n return {'data-no-op': ''}\n }\n\n constructor(options) {\n super(options);\n }\n\n render() {\n var style = Styler.getStyleFor(this.name);\n this.$el.html(this.template())\n this.$el.append(style);\n this.animate()\n return this\n }\n\n noise() {\n var idata = this.context.createImageData(this.context.canvas.width, this.context.canvas.height)\n var buffer32 = new Uint32Array(idata.data.buffer)\n var len = buffer32.length\n var run = 0\n var color = 0\n var m = Math.random() * 6 + 4\n\n for (var i = 0; i < len;) {\n if (run < 0) {\n run = m * Math.random();\n var p = Math.pow(Math.random(), 0.4);\n color = (255 * p) << 24;\n }\n run -= 1;\n buffer32[i++] = color;\n }\n this.context.putImageData(idata, 0, 0);\n }\n\n loop() {\n this.noise()\n requestAnimationFrame(() => this.loop())\n }\n\n animate() {\n this.canvas = this.$el.find('canvas[data-no-op-canvas]')[0]\n this.context = this.canvas.getContext('2d')\n this.loop()\n }\n}\n\nNoOp.canPlay = (source) => {\n return true\n}\n\nmodule.exports = NoOp\n", "//Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar ContainerPlugin = require('container_plugin')\nvar Events = require('events')\n\nclass ClickToPausePlugin extends ContainerPlugin {\n get name() { return 'click_to_pause' }\n\n constructor(options) {\n if (!options.chromeless) {\n super(options)\n }\n }\n\n bindEvents() {\n this.listenTo(this.container, Events.CONTAINER_CLICK, this.click)\n this.listenTo(this.container, Events.CONTAINER_SETTINGSUPDATE, this.settingsUpdate)\n }\n\n click() {\n if (this.container.getPlaybackType() !== 'live' || this.container.isDvrEnabled()) {\n if (this.container.isPlaying()) {\n this.container.pause()\n } else {\n this.container.play()\n }\n }\n }\n\n settingsUpdate() {\n this.container.$el.removeClass('pointer-enabled')\n if (this.container.getPlaybackType() !== 'live' || this.container.isDvrEnabled()) {\n this.container.$el.addClass('pointer-enabled')\n }\n }\n}\n\nmodule.exports = ClickToPausePlugin\n", "module.exports = require('./click_to_pause')\n", "var UICorePlugin = require('ui_core_plugin')\nvar JST = require('../../base/jst')\nvar Styler = require('../../base/styler')\nvar Events = require('events')\n\nclass DVRControls extends UICorePlugin {\n get template() { return JST.dvr_controls }\n get name() { return 'dvr_controls' }\n get events() {\n return {\n 'click .live-button': 'click'\n }\n }\n get attributes() {\n return {\n 'class': 'dvr-controls',\n 'data-dvr-controls': '',\n }\n }\n\n constructor(core) {\n super(core)\n this.core = core\n this.settingsUpdate()\n }\n\n bindEvents() {\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_RENDERED, this.settingsUpdate)\n this.listenTo(this.core.mediaControl.container, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.dvrChanged)\n }\n\n dvrChanged(dvrEnabled) {\n this.settingsUpdate()\n this.core.mediaControl.$el.addClass('live')\n if (dvrEnabled) {\n this.core.mediaControl.$el.addClass('dvr')\n this.core.mediaControl.$el.find('.media-control-indicator[data-position], .media-control-indicator[data-duration]').hide()\n } else {\n this.core.mediaControl.$el.removeClass('dvr')\n }\n }\n\n click() {\n if (!this.core.mediaControl.container.isPlaying()) {\n this.core.mediaControl.container.play()\n }\n if (this.core.mediaControl.$el.hasClass('dvr')) {\n this.core.mediaControl.container.setCurrentTime(-1)\n }\n }\n\n settingsUpdate() {\n this.stopListening()\n if(this.shouldRender()) {\n this.render()\n this.$el.click(() => this.click())\n }\n this.bindEvents()\n }\n\n shouldRender() {\n var useDvrControls = this.core.options.useDvrControls === undefined || !!this.core.options.useDvrControls\n return useDvrControls && this.core.mediaControl.container.getPlaybackType() === 'live'\n }\n\n render() {\n var style = Styler.getStyleFor(this.name)\n this.$el.html(this.template())\n this.$el.append(style)\n if (this.shouldRender()) {\n this.core.mediaControl.$el.addClass('live')\n this.core.mediaControl.$('.media-control-left-panel[data-media-control]').append(this.$el)\n if (this.$duration) {\n this.$duration.remove()\n }\n this.$duration = $('')\n this.core.mediaControl.seekTime.$el.append(this.$duration)\n }\n return this\n }\n}\n\nmodule.exports = DVRControls\n", "module.exports = require('./dvr_controls')\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar ContainerPlugin = require('container_plugin');\nvar Events = require('events')\n\nclass GoogleAnalytics extends ContainerPlugin {\n get name() { return 'google_analytics' }\n constructor(options) {\n super(options)\n if (options.gaAccount) {\n this.embedScript()\n this.account = options.gaAccount\n this.trackerName = options.gaTrackerName + \".\" || 'Clappr.'\n this.currentHDState = undefined\n }\n }\n\n embedScript() {\n if (!window._gat) {\n var script = document.createElement('script')\n script.setAttribute(\"type\", \"text/javascript\")\n script.setAttribute(\"async\", \"async\")\n script.setAttribute(\"src\", \"http://www.google-analytics.com/ga.js\")\n script.onload = () => this.addEventListeners()\n document.body.appendChild(script)\n } else {\n this.addEventListeners()\n }\n }\n\n addEventListeners() {\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_PAUSE, this.onPause)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.onEnded)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.onBufferFull)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.onEnded)\n this.listenTo(this.container, Events.CONTAINER_ERROR, this.onError)\n this.listenTo(this.container, Events.CONTAINER_PLAYBACKSTATE, this.onPlaybackChanged)\n this.listenTo(this.container, Events.CONTAINER_VOLUME, (event) => this.onVolumeChanged(event))\n this.listenTo(this.container, Events.CONTAINER_SEEK, (event) => this.onSeek(event))\n this.listenTo(this.container, Events.CONTAINER_FULL_SCREEN, this.onFullscreen)\n this.listenTo(this.container, Events.CONTAINER_HIGHDEFINITIONUPDATE, this.onHD)\n this.listenTo(this.container, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.onDVR)\n _gaq.push([this.trackerName + '_setAccount', this.account]);\n }\n\n onPlay() {\n this.push([\"Video\", \"Play\", this.container.playback.src])\n }\n\n onStop() {\n this.push([\"Video\", \"Stop\", this.container.playback.src])\n }\n\n onEnded() {\n this.push([\"Video\", \"Ended\", this.container.playback.src])\n }\n\n onBuffering() {\n this.push([\"Video\", \"Buffering\", this.container.playback.src])\n }\n\n onBufferFull() {\n this.push([\"Video\", \"Bufferfull\", this.container.playback.src])\n }\n\n onError() {\n this.push([\"Video\", \"Error\", this.container.playback.src])\n }\n\n onHD() {\n var status = this.container.isHighDefinitionInUse()? \"ON\": \"OFF\"\n if (status !== this.currentHDState) {\n this.currentHDState = status\n this.push([\"Video\", \"HD - \" + status, this.container.playback.src])\n }\n }\n\n\n onPlaybackChanged() {\n var type = this.container.getPlaybackType()\n if (type !== null) {\n this.push([\"Video\", \"Playback Type - \" + type, this.container.playback.src])\n }\n }\n\n onDVR(dvrInUse) {\n var status = dvrInUse? \"ON\": \"OFF\"\n this.push([\"Interaction\", \"DVR - \" + status, this.container.playback.src])\n }\n\n onPause() {\n this.push([\"Video\", \"Pause\", this.container.playback.src])\n }\n\n onSeek() {\n this.push([\"Video\", \"Seek\", this.container.playback.src])\n }\n\n onVolumeChanged() {\n this.push([\"Interaction\", \"Volume\", this.container.playback.src])\n }\n\n onFullscreen() {\n this.push([\"Interaction\", \"Fullscreen\", this.container.playback.src])\n }\n\n\n push(array) {\n var res = [this.trackerName + \"_trackEvent\"].concat(array)\n _gaq.push(res)\n }\n\n}\n\nmodule.exports = GoogleAnalytics;\n", "module.exports = require('./google_analytics');\n", "module.exports = require('./log');\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar _ = require('underscore')\n\nrequire('mousetrap')\n\nclass Log {\n constructor() {\n Mousetrap.bind(['ctrl+shift+d'], () => this.onOff())\n this.BLACKLIST = ['playback:timeupdate', 'playback:progress', 'container:hover', 'container:timeupdate', 'container:progress'];\n }\n\n info(klass, message) {this.log(klass, 'info', message)}\n warn(klass, message) {this.log(klass, 'warn', message)}\n debug(klass, message) {this.log(klass, 'debug', message)}\n\n onOff() {\n window.DEBUG = !window.DEBUG\n if (window.DEBUG) { console.log('log enabled'); }\n else { console.log('log disabled'); }\n }\n\n log(klass, level, message) {\n if (!window.DEBUG || _.contains(this.BLACKLIST, message)) return\n var color\n if (level === 'warn') { color = '#FF8000' }\n else if (level === 'info') { color = '#006600' }\n else if (level === 'error') { color = '#FF0000'}\n console.log(\"%c [\" + klass + \"] [\" + level + \"] \" + message, 'color: '+color);\n }\n}\n\nLog.getInstance = function() {\n if (this._instance === undefined) {\n this._instance = new this()\n }\n return this._instance\n}\n\n\nmodule.exports = Log\n", "//Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar UIContainerPlugin = require('ui_container_plugin')\nvar Styler = require('../../base/styler')\nvar JST = require('../../base/jst')\nvar Events = require('events')\n\nvar Mediator = require('mediator')\nvar PlayerInfo = require('player_info')\n\nvar $ = require('zepto')\n\nclass PosterPlugin extends UIContainerPlugin {\n get name() { return 'poster' }\n get template() { return JST.poster }\n\n get attributes() {\n return {\n 'class': 'player-poster',\n 'data-poster': ''\n }\n }\n\n get events() {\n return {\n 'click': 'clicked'\n }\n }\n\n constructor(options) {\n super(options)\n this.options = options\n this.container.disableMediaControl()\n this.render()\n this.bufferFull = false\n }\n\n load(source) {\n this.options.poster = source\n this.render()\n }\n\n bindEvents() {\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.onBufferfull)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.onStop)\n Mediator.on(Events.PLAYER_RESIZE, this.updateSize, this)\n }\n\n stopListening() {\n super()\n Mediator.off(Events.PLAYER_RESIZE, this.updateSize, this)\n }\n\n onBuffering() {\n this.bufferFull = false\n this.hidePlayButton()\n }\n\n onPlay() {\n if (this.bufferFull) {\n this.$el.hide()\n this.container.enableMediaControl()\n }\n }\n\n onBufferfull() {\n this.bufferFull = true\n if (this.container.playback.name === 'html5_video' && !this.container.isPlaying()) return\n this.$el.hide()\n this.container.enableMediaControl()\n }\n\n onStop() {\n this.$el.show()\n this.container.disableMediaControl()\n this.showPlayButton()\n }\n\n showPlayButton() {\n this.$playButton.show()\n this.updateSize()\n }\n\n hidePlayButton() {\n this.$playButton.hide()\n }\n\n clicked() {\n if (!this.options.chromeless) {\n this.container.play()\n this.hidePlayButton()\n }\n return false\n }\n\n updateSize() {\n if (this.container.playback.name === 'html_img') return\n var height = PlayerInfo.currentSize ? PlayerInfo.currentSize.height : this.$el.height()\n this.$el.css({ fontSize: height })\n if (this.$playWrapper.is(':visible')) {\n this.$playWrapper.css({ marginTop: -(this.$playWrapper.height() / 2) })\n }\n }\n\n render() {\n if (this.container.playback.name === 'html_img') return\n var style = Styler.getStyleFor(this.name)\n this.$el.html(this.template())\n this.$el.append(style)\n if (this.options.poster) {\n var imgEl = $('
')\n imgEl.css({'background-image': 'url(' + this.options.poster + ')'})\n this.$el.prepend(imgEl)\n }\n this.container.$el.append(this.el)\n this.$playButton = this.$el.find('.poster-icon')\n this.$playWrapper = this.$el.find('.play-wrapper')\n setTimeout(() => this.updateSize(), 0)\n if (this.options.chromeless) {\n this.hidePlayButton()\n this.$el.css({'cursor': 'initial'})\n }\n return this\n }\n}\n\nmodule.exports = PosterPlugin\n", "module.exports = require('./spinner_three_bounce');\n\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar UIContainerPlugin = require('ui_container_plugin');\nvar Styler = require('../../base/styler');\nvar JST = require('../../base/jst');\nvar Events = require('events');\n\nclass SpinnerThreeBouncePlugin extends UIContainerPlugin {\n get name() { return 'spinner' }\n get attributes() {\n return {\n 'data-spinner':'',\n 'class': 'spinner-three-bounce'\n }\n }\n\n constructor(options) {\n super(options)\n this.template = JST.spinner_three_bounce\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.onBufferFull)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.render()\n }\n\n onBuffering() {\n this.$el.show()\n }\n\n onBufferFull() {\n this.$el.hide()\n }\n\n onStop() {\n this.$el.hide()\n }\n\n render() {\n this.$el.html(this.template())\n var style = Styler.getStyleFor('spinner_three_bounce')\n this.container.$el.append(style)\n this.container.$el.append(this.$el)\n this.$el.hide()\n return this\n }\n}\n\nmodule.exports = SpinnerThreeBouncePlugin;\n", "module.exports = require('./stats');\n\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar ContainerPlugin = require('container_plugin');\nvar $ = require(\"zepto\");\nvar Events = require('events');\n\nclass StatsPlugin extends ContainerPlugin {\n get name() { return 'stats' }\n\n constructor(options) {\n super(options)\n this.setInitialAttrs()\n this.reportInterval = options.reportInterval || 5000\n this.state = \"IDLE\"\n }\n\n bindEvents() {\n this.listenTo(this.container.playback, Events.PLAYBACK_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_DESTROYED, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.onBufferFull)\n this.listenTo(this.container, Events.CONTAINER_STATS_ADD, this.onStatsAdd)\n this.listenTo(this.container, Events.CONTAINER_BITRATE, this.onStatsAdd)\n this.listenTo(this.container.playback, Events.PLAYBACK_STATS_ADD, this.onStatsAdd)\n }\n\n setInitialAttrs() {\n this.firstPlay = true\n this.startupTime = 0\n this.rebufferingTime = 0\n this.watchingTime = 0\n this.rebuffers = 0\n this.externalMetrics = {}\n }\n\n onPlay() {\n this.state = \"PLAYING\"\n this.watchingTimeInit = Date.now()\n if (!this.intervalId) {\n this.intervalId = setInterval(this.report.bind(this), this.reportInterval)\n }\n }\n\n onStop() {\n clearInterval(this.intervalId)\n this.intervalId = undefined\n this.state = \"STOPPED\"\n }\n\n onBuffering() {\n if (this.firstPlay) {\n this.startupTimeInit = Date.now()\n } else {\n this.rebufferingTimeInit = Date.now()\n }\n this.state = \"BUFFERING\"\n this.rebuffers++\n }\n\n onBufferFull() {\n if (this.firstPlay && !!this.startupTimeInit) {\n this.firstPlay = false\n this.startupTime = Date.now() - this.startupTimeInit\n this.watchingTimeInit = Date.now()\n } else if (!!this.rebufferingTimeInit) {\n this.rebufferingTime += this.getRebufferingTime()\n }\n this.rebufferingTimeInit = undefined\n this.state = \"PLAYING\"\n }\n\n getRebufferingTime() {\n return Date.now() - this.rebufferingTimeInit\n }\n\n getWatchingTime() {\n var totalTime = (Date.now() - this.watchingTimeInit)\n return totalTime - this.rebufferingTime\n }\n\n isRebuffering() {\n return !!this.rebufferingTimeInit\n }\n\n onStatsAdd(metric) {\n $.extend(this.externalMetrics, metric)\n }\n\n getStats() {\n var metrics = {\n startupTime: this.startupTime,\n rebuffers: this.rebuffers,\n rebufferingTime: this.isRebuffering()? this.rebufferingTime + this.getRebufferingTime(): this.rebufferingTime,\n watchingTime: this.isRebuffering()? this.getWatchingTime() - this.getRebufferingTime(): this.getWatchingTime()\n }\n $.extend(metrics, this.externalMetrics)\n return metrics\n }\n\n report() {\n this.container.statsReport(this.getStats())\n }\n}\n\nmodule.exports = StatsPlugin;\n", "module.exports = require('./watermark');\n\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar UIContainerPlugin = require('ui_container_plugin')\nvar Styler = require('../../base/styler')\nvar JST = require('../../base/jst')\nvar Events = require('events')\n\nclass WaterMarkPlugin extends UIContainerPlugin {\n get name() { return 'watermark' }\n\n constructor(options) {\n super(options)\n this.template = JST[this.name]\n this.position = options.position || \"bottom-right\"\n if (options.watermark) {\n this.imageUrl = options.watermark\n this.render()\n } else {\n this.$el.remove()\n }\n }\n\n bindEvents() {\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n }\n\n onPlay() {\n if (!this.hidden)\n this.$el.show()\n }\n\n onStop() {\n this.$el.hide()\n }\n\n render() {\n this.$el.hide()\n var templateOptions = {position: this.position, imageUrl: this.imageUrl}\n this.$el.html(this.template(templateOptions))\n var style = Styler.getStyleFor(this.name)\n this.container.$el.append(style)\n this.container.$el.append(this.$el)\n return this\n }\n}\n\nmodule.exports = WaterMarkPlugin\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar _ = require('underscore')\nvar extend = require('./utils').extend\nvar Events = require('events')\n\nvar pluginOptions = ['container']\n\nclass BaseObject extends Events {\n constructor(options={}) {\n this.uniqueId = _.uniqueId('o')\n _.extend(this, _.pick(options, pluginOptions))\n }\n}\n\nBaseObject.extend = extend\n\nmodule.exports = BaseObject\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nclass Browser {\n}\n\nvar hasLocalstorage = function(){\n try {\n localStorage.setItem('clappr', 'clappr')\n localStorage.removeItem('clappr')\n return true\n } catch(e) {\n return false\n }\n}\n\nvar hasFlash = function() {\n try {\n var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');\n return !!fo;\n } catch (e) {\n return !!(navigator.mimeTypes && navigator.mimeTypes['application/x-shockwave-flash'] !== undefined &&\n navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin);\n }\n}\n\nBrowser.isSafari = (!!navigator.userAgent.match(/safari/i) && navigator.userAgent.indexOf('Chrome') === -1)\nBrowser.isChrome = !!(navigator.userAgent.match(/chrome/i))\nBrowser.isFirefox = !!(navigator.userAgent.match(/firefox/i))\nBrowser.isLegacyIE = !!(window.ActiveXObject)\nBrowser.isIE = Browser.isLegacyIE || !!(navigator.userAgent.match(/trident.*rv:1\\d/i))\nBrowser.isIE11 = !!(navigator.userAgent.match(/trident.*rv:11/i))\nBrowser.isMobile = !!(/Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone|IEMobile|Opera Mini/i.test(navigator.userAgent))\nBrowser.isWin8App = !!(/MSAppHost/i.test(navigator.userAgent))\nBrowser.isWiiU = !!(/WiiU/i.test(navigator.userAgent))\nBrowser.isPS4 = !!(/PlayStation 4/i.test(navigator.userAgent))\nBrowser.hasLocalstorage = hasLocalstorage()\nBrowser.hasFlash = hasFlash()\n\nmodule.exports = Browser\n", "var BaseObject = require('base_object')\n\nclass ContainerPlugin extends BaseObject {\n constructor(options) {\n super(options)\n this.enabled = true\n this.bindEvents()\n }\n\n enable() {\n if (!this.enabled) {\n this.bindEvents()\n this.enabled = true\n }\n }\n\n disable() {\n if (this.enabled) {\n this.stopListening()\n this.enabled = false\n }\n }\n\n bindEvents() {}\n\n destroy() {\n this.stopListening()\n }\n}\n\nmodule.exports = ContainerPlugin\n", "module.exports = require('./container');\n", "var BaseObject = require('base_object')\n\nclass CorePlugin extends BaseObject {\n constructor(core) {\n super(core)\n this.core = core\n }\n\n getExternalInterface() { return {} }\n\n destroy() {}\n}\n\nmodule.exports = CorePlugin\n", "module.exports = require('./core');\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar _ = require('underscore')\nvar Log = require('../plugins/log').getInstance()\n\nvar slice = Array.prototype.slice\n\nclass Events {\n on(name, callback, context) {\n if (!eventsApi(this, 'on', name, [callback, context]) || !callback) return this\n this._events || (this._events = {})\n var events = this._events[name] || (this._events[name] = [])\n events.push({callback: callback, context: context, ctx: context || this})\n return this\n }\n\n once(name, callback, context) {\n if (!eventsApi(this, 'once', name, [callback, context]) || !callback) return this\n var self = this\n var once = _.once(function() {\n self.off(name, once)\n callback.apply(this, arguments)\n })\n once._callback = callback\n return this.on(name, once, context)\n }\n\n off(name, callback, context) {\n var retain, ev, events, names, i, l, j, k\n if (!this._events || !eventsApi(this, 'off', name, [callback, context])) return this\n if (!name && !callback && !context) {\n this._events = void 0\n return this\n }\n names = name ? [name] : _.keys(this._events)\n for (i = 0, l = names.length; i < l; i++) {\n name = names[i]\n events = this._events[name]\n if (events) {\n this._events[name] = retain = []\n if (callback || context) {\n for (j = 0, k = events.length; j < k; j++) {\n ev = events[j]\n if ((callback && callback !== ev.callback && callback !== ev.callback._callback) ||\n (context && context !== ev.context)) {\n retain.push(ev)\n }\n }\n }\n if (!retain.length) delete this._events[name]\n }\n }\n return this\n }\n\n trigger(name) {\n var klass = arguments[arguments.length - 1]\n Log.info(klass, name)\n if (!this._events) return this\n var args = slice.call(arguments, 1)\n if (!eventsApi(this, 'trigger', name, args)) return this\n var events = this._events[name]\n var allEvents = this._events.all\n if (events) triggerEvents(events, args)\n if (allEvents) triggerEvents(allEvents, arguments)\n return this\n }\n\n stopListening(obj, name, callback) {\n var listeningTo = this._listeningTo\n if (!listeningTo) return this\n var remove = !name && !callback\n if (!callback && typeof name === 'object') callback = this\n if (obj) (listeningTo = {})[obj._listenId] = obj\n for (var id in listeningTo) {\n obj = listeningTo[id]\n obj.off(name, callback, this)\n if (remove || _.isEmpty(obj._events)) delete this._listeningTo[id]\n }\n return this\n }\n}\n\nvar eventSplitter = /\\s+/\n\nvar eventsApi = function(obj, action, name, rest) {\n if (!name) return true\n\n // Handle event maps.\n if (typeof name === 'object') {\n for (var key in name) {\n obj[action].apply(obj, [key, name[key]].concat(rest))\n }\n return false\n }\n\n // Handle space separated event names.\n if (eventSplitter.test(name)) {\n var names = name.split(eventSplitter)\n for (var i = 0, l = names.length; i < l; i++) {\n obj[action].apply(obj, [names[i]].concat(rest))\n }\n return false\n }\n\n return true\n}\n\nvar triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2]\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return\n }\n}\n\nvar listenMethods = {listenTo: 'on', listenToOnce: 'once'}\n\n_.each(listenMethods, function(implementation, method) {\n Events.prototype[method] = function(obj, name, callback) {\n var listeningTo = this._listeningTo || (this._listeningTo = {})\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'))\n listeningTo[id] = obj\n if (!callback && typeof name === 'object') callback = this\n obj[implementation](name, callback, this)\n return this\n }\n})\n\n// PLAYER EVENTS\nEvents.PLAYER_RESIZE = 'player:resize'\n\n// Playback Events\nEvents.PLAYBACK_PROGRESS = 'playback:progress'\nEvents.PLAYBACK_TIMEUPDATE = 'playback:timeupdate'\nEvents.PLAYBACK_READY = 'playback:ready'\nEvents.PLAYBACK_BUFFERING = 'playback:buffering'\nEvents.PLAYBACK_BUFFERFULL = 'playback:bufferfull'\nEvents.PLAYBACK_SETTINGSUPDATE = 'playback:settingsupdate'\nEvents.PLAYBACK_LOADEDMETADATA = 'playback:loadedmetadata'\nEvents.PLAYBACK_HIGHDEFINITIONUPDATE = 'playback:highdefinitionupdate'\nEvents.PLAYBACK_BITRATE = 'playback:bitrate'\nEvents.PLAYBACK_PLAYBACKSTATE = 'playback:playbackstate'\nEvents.PLAYBACK_DVR = 'playback:dvr'\nEvents.PLAYBACK_MEDIACONTROL_DISABLE = 'playback:mediacontrol:disable'\nEvents.PLAYBACK_MEDIACONTROL_ENABLE = 'playback:mediacontrol:enable'\nEvents.PLAYBACK_ENDED = 'playback:ended'\nEvents.PLAYBACK_PLAY = 'playback:play'\nEvents.PLAYBACK_ERROR = 'playback:error'\nEvents.PLAYBACK_STATS_ADD = 'playback:stats:add'\n\n// Container Events\nEvents.CONTAINER_PLAYBACKSTATE = 'container:playbackstate'\nEvents.CONTAINER_PLAYBACKDVRSTATECHANGED = 'container:dvr'\nEvents.CONTAINER_BITRATE = 'container:bitrate'\nEvents.CONTAINER_STATS_REPORT = 'container:stats:report'\nEvents.CONTAINER_DESTROYED = 'container:destroyed'\nEvents.CONTAINER_READY = 'container:ready'\nEvents.CONTAINER_ERROR = 'container:error'\nEvents.CONTAINER_LOADEDMETADATA = 'container:loadedmetadata'\nEvents.CONTAINER_TIMEUPDATE = 'container:timeupdate'\nEvents.CONTAINER_PROGRESS = 'container:progress'\nEvents.CONTAINER_PLAY = 'container:play'\nEvents.CONTAINER_STOP = 'container:stop'\nEvents.CONTAINER_PAUSE = 'container:pause'\nEvents.CONTAINER_ENDED = 'container:ended'\nEvents.CONTAINER_CLICK = 'container:click'\nEvents.CONTAINER_MOUSE_ENTER = 'container:mouseenter'\nEvents.CONTAINER_MOUSE_LEAVE = 'container:mouseleave'\nEvents.CONTAINER_SEEK = 'container:seek'\nEvents.CONTAINER_VOLUME = 'container:volume'\nEvents.CONTAINER_FULLSCREEN = 'container:fullscreen'\nEvents.CONTAINER_STATE_BUFFERING = 'container:state:buffering'\nEvents.CONTAINER_STATE_BUFFERFULL = 'container:state:bufferfull'\nEvents.CONTAINER_SETTINGSUPDATE = 'container:settingsupdate'\nEvents.CONTAINER_HIGHDEFINITIONUPDATE = 'container:highdefinitionupdate'\nEvents.CONTAINER_MEDIACONTROL_DISABLE = 'container:mediacontrol:disable'\nEvents.CONTAINER_MEDIACONTROL_ENABLE = 'container:mediacontrol:enable'\nEvents.CONTAINER_STATS_ADD = 'container:stats:add'\n\n// MediaControl Events\nEvents.MEDIACONTROL_RENDERED = 'mediacontrol:rendered'\nEvents.MEDIACONTROL_FULLSCREEN = 'mediacontrol:fullscreen'\nEvents.MEDIACONTROL_SHOW = 'mediacontrol:show'\nEvents.MEDIACONTROL_HIDE = 'mediacontrol:hide'\nEvents.MEDIACONTROL_MOUSEMOVE_SEEKBAR = 'mediacontrol:mousemove:seekbar'\nEvents.MEDIACONTROL_MOUSELEAVE_SEEKBAR = 'mediacontrol:mouseleave:seekbar'\nEvents.MEDIACONTROL_PLAYING = 'mediacontrol:playing'\nEvents.MEDIACONTROL_NOTPLAYING = 'mediacontrol:notplaying'\nEvents.MEDIACONTROL_CONTAINERCHANGED = 'mediacontrol:containerchanged'\n\nmodule.exports = Events\n", "module.exports = require('./flash');\n\n", "module.exports = require('./hls');\n\n", "module.exports = require('./html5_audio');\n\n", "module.exports = require('./html5_video');\n\n", "module.exports = require('./html_img');\n\n", "module.exports = require('./media_control');\n\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * The mediator is a singleton for handling global events.\n */\n\nvar Events = require('events')\n\nvar events = new Events()\n\nclass Mediator {\n}\n\nMediator.on = function(name, callback, context) {\n events.on(name, callback, context)\n return\n}\n\nMediator.once = function(name, callback, context) {\n events.once(name, callback, context)\n return\n}\n\nMediator.off = function(name, callback, context) {\n events.off(name, callback, context)\n return\n}\n\nMediator.trigger = function(name, opts) {\n events.trigger(name, opts)\n return\n}\n\nMediator.stopListening = function(obj, name, callback) {\n events.stopListening(obj, name, callback)\n return\n}\n\nmodule.exports = Mediator\n", "var UIObject = require('ui_object')\n\nclass Playback extends UIObject {\n constructor(options) {\n super(options)\n this.settings = {}\n }\n\n play() {}\n\n pause() {}\n\n stop() {}\n\n seek(time) {}\n\n getDuration() { return 0 }\n\n isPlaying() {\n return false\n }\n\n getPlaybackType() {\n return 'no_op'\n }\n\n isHighDefinitionInUse() {\n return false\n }\n\n volume(value) {}\n\n destroy() {\n this.$el.remove()\n }\n}\n\nPlayback.canPlay = (source) => {\n return false\n}\n\nmodule.exports = Playback\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar PlayerInfo ={\n options: {},\n playbackPlugins: [],\n currentSize: { width: 0, height: 0 }\n}\n\nmodule.exports = PlayerInfo\n\n", "module.exports = require('./poster');\n\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar UIObject = require('ui_object')\n\nclass UIContainerPlugin extends UIObject {\n constructor(options) {\n super(options)\n this.enabled = true\n this.bindEvents()\n }\n\n enable() {\n if (!this.enabled) {\n this.bindEvents()\n this.$el.show()\n this.enabled = true\n }\n }\n\n disable() {\n this.stopListening()\n this.$el.hide()\n this.enabled = false\n }\n\n bindEvents() {}\n\n destroy() {\n this.remove()\n }\n}\n\nmodule.exports = UIContainerPlugin\n", "var UIObject = require('ui_object')\n\nclass UICorePlugin extends UIObject {\n constructor(core) {\n super(core)\n this.core = core\n this.enabled = true\n this.bindEvents()\n this.render()\n }\n\n bindEvents() {}\n\n getExternalInterface() { return {} }\n\n enable() {\n if (!this.enabled) {\n this.bindEvents()\n this.$el.show()\n this.enabled = true\n }\n }\n\n disable() {\n this.stopListening()\n this.$el.hide()\n this.enabled = false\n }\n\n destroy() {\n this.remove()\n }\n\n render() {\n this.$el.html(this.template())\n this.$el.append(this.styler.getStyleFor(this.name))\n this.core.$el.append(this.el)\n return this\n }\n}\n\nmodule.exports = UICorePlugin\n", "// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar $ = require('zepto')\nvar _ = require('underscore')\nvar extend = require('./utils').extend\nvar BaseObject = require('base_object')\n\nvar delegateEventSplitter = /^(\\S+)\\s*(.*)$/\n\nclass UIObject extends BaseObject {\n\n get tagName() { return 'div' }\n\n constructor(options) {\n super(options)\n this.cid = _.uniqueId('c');\n this._ensureElement();\n this.delegateEvents();\n }\n\n $(selector) {\n return this.$el.find(selector)\n }\n\n render() {\n return this\n }\n\n remove() {\n this.$el.remove()\n this.stopListening()\n return this\n }\n\n setElement(element, delegate) {\n if (this.$el) this.undelegateEvents()\n this.$el = element instanceof $ ? element : $(element)\n this.el = this.$el[0]\n if (delegate !== false) this.delegateEvents()\n return this\n }\n\n delegateEvents(events) {\n if (!(events || (events = _.result(this, 'events')))) return this\n this.undelegateEvents()\n for (var key in events) {\n var method = events[key]\n if (!_.isFunction(method)) method = this[events[key]]\n if (!method) continue\n\n var match = key.match(delegateEventSplitter)\n var eventName = match[1], selector = match[2]\n method = _.bind(method, this)\n eventName += '.delegateEvents' + this.cid\n if (selector === '') {\n this.$el.on(eventName, method)\n } else {\n this.$el.on(eventName, selector, method)\n }\n }\n return this\n }\n\n undelegateEvents() {\n this.$el.off('.delegateEvents' + this.cid)\n return this\n }\n\n _ensureElement() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'))\n if (this.id) attrs.id = _.result(this, 'id')\n if (this.className) attrs['class'] = _.result(this, 'className')\n var $el = $('<' + _.result(this, 'tagName') + '>').attr(attrs)\n this.setElement($el, false)\n } else {\n this.setElement(_.result(this, 'el'), false)\n }\n }\n}\n\nUIObject.extend = extend\n\nmodule.exports = UIObject\n", "// Underscore.js 1.7.0\n// http://underscorejs.org\n// (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` in the browser, or `exports` on the server.\n var root = this;\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;\n\n // Create quick reference variables for speed access to core prototypes.\n var\n push = ArrayProto.push,\n slice = ArrayProto.slice,\n concat = ArrayProto.concat,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var\n nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeBind = FuncProto.bind;\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for the old `require()` API. If we're in\n // the browser, add `_` as a global object.\n if (typeof exports !== 'undefined') {\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.7.0';\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n var createCallback = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n case 2: return function(value, other) {\n return func.call(context, value, other);\n };\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n };\n\n // A mostly-internal function to generate callbacks that can be applied\n // to each element in a collection, returning the desired result — either\n // identity, an arbitrary callback, a property matcher, or a property accessor.\n _.iteratee = function(value, context, argCount) {\n if (value == null) return _.identity;\n if (_.isFunction(value)) return createCallback(value, context, argCount);\n if (_.isObject(value)) return _.matches(value);\n return _.property(value);\n };\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n _.each = _.forEach = function(obj, iteratee, context) {\n if (obj == null) return obj;\n iteratee = createCallback(iteratee, context);\n var i, length = obj.length;\n if (length === +length) {\n for (i = 0; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var keys = _.keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n iteratee(obj[keys[i]], keys[i], obj);\n }\n }\n return obj;\n };\n\n // Return the results of applying the iteratee to each element.\n _.map = _.collect = function(obj, iteratee, context) {\n if (obj == null) return [];\n iteratee = _.iteratee(iteratee, context);\n var keys = obj.length !== +obj.length && _.keys(obj),\n length = (keys || obj).length,\n results = Array(length),\n currentKey;\n for (var index = 0; index < length; index++) {\n currentKey = keys ? keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n var reduceError = 'Reduce of empty array with no initial value';\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n _.reduce = _.foldl = _.inject = function(obj, iteratee, memo, context) {\n if (obj == null) obj = [];\n iteratee = createCallback(iteratee, context, 4);\n var keys = obj.length !== +obj.length && _.keys(obj),\n length = (keys || obj).length,\n index = 0, currentKey;\n if (arguments.length < 3) {\n if (!length) throw new TypeError(reduceError);\n memo = obj[keys ? keys[index++] : index++];\n }\n for (; index < length; index++) {\n currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n // The right-associative version of reduce, also known as `foldr`.\n _.reduceRight = _.foldr = function(obj, iteratee, memo, context) {\n if (obj == null) obj = [];\n iteratee = createCallback(iteratee, context, 4);\n var keys = obj.length !== + obj.length && _.keys(obj),\n index = (keys || obj).length,\n currentKey;\n if (arguments.length < 3) {\n if (!index) throw new TypeError(reduceError);\n memo = obj[keys ? keys[--index] : --index];\n }\n while (index--) {\n currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function(obj, predicate, context) {\n var result;\n predicate = _.iteratee(predicate, context);\n _.some(obj, function(value, index, list) {\n if (predicate(value, index, list)) {\n result = value;\n return true;\n }\n });\n return result;\n };\n\n // Return all the elements that pass a truth test.\n // Aliased as `select`.\n _.filter = _.select = function(obj, predicate, context) {\n var results = [];\n if (obj == null) return results;\n predicate = _.iteratee(predicate, context);\n _.each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function(obj, predicate, context) {\n return _.filter(obj, _.negate(_.iteratee(predicate)), context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Aliased as `all`.\n _.every = _.all = function(obj, predicate, context) {\n if (obj == null) return true;\n predicate = _.iteratee(predicate, context);\n var keys = obj.length !== +obj.length && _.keys(obj),\n length = (keys || obj).length,\n index, currentKey;\n for (index = 0; index < length; index++) {\n currentKey = keys ? keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Aliased as `any`.\n _.some = _.any = function(obj, predicate, context) {\n if (obj == null) return false;\n predicate = _.iteratee(predicate, context);\n var keys = obj.length !== +obj.length && _.keys(obj),\n length = (keys || obj).length,\n index, currentKey;\n for (index = 0; index < length; index++) {\n currentKey = keys ? keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n };\n\n // Determine if the array or object contains a given value (using `===`).\n // Aliased as `include`.\n _.contains = _.include = function(obj, target) {\n if (obj == null) return false;\n if (obj.length !== +obj.length) obj = _.values(obj);\n return _.indexOf(obj, target) >= 0;\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = function(obj, method) {\n var args = slice.call(arguments, 2);\n var isFunc = _.isFunction(method);\n return _.map(obj, function(value) {\n return (isFunc ? method : value[method]).apply(value, args);\n });\n };\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function(obj, key) {\n return _.map(obj, _.property(key));\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function(obj, attrs) {\n return _.filter(obj, _.matches(attrs));\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function(obj, attrs) {\n return _.find(obj, _.matches(attrs));\n };\n\n // Return the maximum element (or element-based computation).\n _.max = function(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null && obj != null) {\n obj = obj.length === +obj.length ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value > result) {\n result = value;\n }\n }\n } else {\n iteratee = _.iteratee(iteratee, context);\n _.each(obj, function(value, index, list) {\n computed = iteratee(value, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = value;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null && obj != null) {\n obj = obj.length === +obj.length ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value < result) {\n result = value;\n }\n }\n } else {\n iteratee = _.iteratee(iteratee, context);\n _.each(obj, function(value, index, list) {\n computed = iteratee(value, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = value;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Shuffle a collection, using the modern version of the\n // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n _.shuffle = function(obj) {\n var set = obj && obj.length === +obj.length ? obj : _.values(obj);\n var length = set.length;\n var shuffled = Array(length);\n for (var index = 0, rand; index < length; index++) {\n rand = _.random(0, index);\n if (rand !== index) shuffled[index] = shuffled[rand];\n shuffled[rand] = set[index];\n }\n return shuffled;\n };\n\n // Sample **n** random values from a collection.\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `map`.\n _.sample = function(obj, n, guard) {\n if (n == null || guard) {\n if (obj.length !== +obj.length) obj = _.values(obj);\n return obj[_.random(obj.length - 1)];\n }\n return _.shuffle(obj).slice(0, Math.max(0, n));\n };\n\n // Sort the object's values by a criterion produced by an iteratee.\n _.sortBy = function(obj, iteratee, context) {\n iteratee = _.iteratee(iteratee, context);\n return _.pluck(_.map(obj, function(value, index, list) {\n return {\n value: value,\n index: index,\n criteria: iteratee(value, index, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function(behavior) {\n return function(obj, iteratee, context) {\n var result = {};\n iteratee = _.iteratee(iteratee, context);\n _.each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = group(function(result, value, key) {\n if (_.has(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\n // when you know that your index values will be unique.\n _.indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = group(function(result, value, key) {\n if (_.has(result, key)) result[key]++; else result[key] = 1;\n });\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function(array, obj, iteratee, context) {\n iteratee = _.iteratee(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = array.length;\n while (low < high) {\n var mid = low + high >>> 1;\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n };\n\n // Safely create a real, live array from anything iterable.\n _.toArray = function(obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (obj.length === +obj.length) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function(obj) {\n if (obj == null) return 0;\n return obj.length === +obj.length ? obj.length : _.keys(obj).length;\n };\n\n // Split a collection into two arrays: one whose elements all satisfy the given\n // predicate, and one whose elements all do not satisfy the predicate.\n _.partition = function(obj, predicate, context) {\n predicate = _.iteratee(predicate, context);\n var pass = [], fail = [];\n _.each(obj, function(value, key, obj) {\n (predicate(value, key, obj) ? pass : fail).push(value);\n });\n return [pass, fail];\n };\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function(array, n, guard) {\n if (array == null) return void 0;\n if (n == null || guard) return array[0];\n if (n < 0) return [];\n return slice.call(array, 0, n);\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N. The **guard** check allows it to work with\n // `_.map`.\n _.initial = function(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array. The **guard** check allows it to work with `_.map`.\n _.last = function(array, n, guard) {\n if (array == null) return void 0;\n if (n == null || guard) return array[array.length - 1];\n return slice.call(array, Math.max(array.length - n, 0));\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array. The **guard**\n // check allows it to work with `_.map`.\n _.rest = _.tail = _.drop = function(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function(array) {\n return _.filter(array, _.identity);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function(input, shallow, strict, output) {\n if (shallow && _.every(input, _.isArray)) {\n return concat.apply(output, input);\n }\n for (var i = 0, length = input.length; i < length; i++) {\n var value = input[i];\n if (!_.isArray(value) && !_.isArguments(value)) {\n if (!strict) output.push(value);\n } else if (shallow) {\n push.apply(output, value);\n } else {\n flatten(value, shallow, strict, output);\n }\n }\n return output;\n };\n\n // Flatten out an array, either recursively (by default), or just one level.\n _.flatten = function(array, shallow) {\n return flatten(array, shallow, false, []);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = function(array) {\n return _.difference(array, slice.call(arguments, 1));\n };\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n if (array == null) return [];\n if (!_.isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = _.iteratee(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = array.length; i < length; i++) {\n var value = array[i];\n if (isSorted) {\n if (!i || seen !== value) result.push(value);\n seen = value;\n } else if (iteratee) {\n var computed = iteratee(value, i, array);\n if (_.indexOf(seen, computed) < 0) {\n seen.push(computed);\n result.push(value);\n }\n } else if (_.indexOf(result, value) < 0) {\n result.push(value);\n }\n }\n return result;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = function() {\n return _.uniq(flatten(arguments, true, true, []));\n };\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function(array) {\n if (array == null) return [];\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = array.length; i < length; i++) {\n var item = array[i];\n if (_.contains(result, item)) continue;\n for (var j = 1; j < argsLength; j++) {\n if (!_.contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = function(array) {\n var rest = flatten(slice.call(arguments, 1), true, true, []);\n return _.filter(array, function(value){\n return !_.contains(rest, value);\n });\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = function(array) {\n if (array == null) return [];\n var length = _.max(arguments, 'length').length;\n var results = Array(length);\n for (var i = 0; i < length; i++) {\n results[i] = _.pluck(arguments, i);\n }\n return results;\n };\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values.\n _.object = function(list, values) {\n if (list == null) return {};\n var result = {};\n for (var i = 0, length = list.length; i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = function(array, item, isSorted) {\n if (array == null) return -1;\n var i = 0, length = array.length;\n if (isSorted) {\n if (typeof isSorted == 'number') {\n i = isSorted < 0 ? Math.max(0, length + isSorted) : isSorted;\n } else {\n i = _.sortedIndex(array, item);\n return array[i] === item ? i : -1;\n }\n }\n for (; i < length; i++) if (array[i] === item) return i;\n return -1;\n };\n\n _.lastIndexOf = function(array, item, from) {\n if (array == null) return -1;\n var idx = array.length;\n if (typeof from == 'number') {\n idx = from < 0 ? idx + from + 1 : Math.min(idx, from + 1);\n }\n while (--idx >= 0) if (array[idx] === item) return idx;\n return -1;\n };\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](http://docs.python.org/library/functions.html#range).\n _.range = function(start, stop, step) {\n if (arguments.length <= 1) {\n stop = start || 0;\n start = 0;\n }\n step = step || 1;\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Reusable constructor function for prototype setting.\n var Ctor = function(){};\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = function(func, context) {\n var args, bound;\n if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n args = slice.call(arguments, 2);\n bound = function() {\n if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));\n Ctor.prototype = func.prototype;\n var self = new Ctor;\n Ctor.prototype = null;\n var result = func.apply(self, args.concat(slice.call(arguments)));\n if (_.isObject(result)) return result;\n return self;\n };\n return bound;\n };\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\n // as a placeholder, allowing any combination of arguments to be pre-filled.\n _.partial = function(func) {\n var boundArgs = slice.call(arguments, 1);\n return function() {\n var position = 0;\n var args = boundArgs.slice();\n for (var i = 0, length = args.length; i < length; i++) {\n if (args[i] === _) args[i] = arguments[position++];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return func.apply(this, args);\n };\n };\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n _.bindAll = function(obj) {\n var i, length = arguments.length, key;\n if (length <= 1) throw new Error('bindAll must be passed function names');\n for (i = 1; i < length; i++) {\n key = arguments[i];\n obj[key] = _.bind(obj[key], obj);\n }\n return obj;\n };\n\n // Memoize an expensive function by storing its results.\n _.memoize = function(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = hasher ? hasher.apply(this, arguments) : key;\n if (!_.has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = function(func, wait) {\n var args = slice.call(arguments, 2);\n return setTimeout(function(){\n return func.apply(null, args);\n }, wait);\n };\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = function(func) {\n return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));\n };\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function(func, wait, options) {\n var context, args, result;\n var timeout = null;\n var previous = 0;\n if (!options) options = {};\n var later = function() {\n previous = options.leading === false ? 0 : _.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n return function() {\n var now = _.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\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.\n _.debounce = function(func, wait, immediate) {\n var timeout, args, context, timestamp, result;\n\n var later = function() {\n var last = _.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 if (!timeout) context = args = null;\n }\n }\n };\n\n return function() {\n context = this;\n args = arguments;\n timestamp = _.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\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function(func, wrapper) {\n return _.partial(wrapper, func);\n };\n\n // Returns a negated version of the passed-in predicate.\n _.negate = function(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n };\n\n // Returns a function that will only be executed after being called N times.\n _.after = function(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Returns a function that will only be executed before being called N times.\n _.before = function(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n } else {\n func = null;\n }\n return memo;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = _.partial(_.before, 2);\n\n // Object Functions\n // ----------------\n\n // Retrieve the names of an object's properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`\n _.keys = function(obj) {\n if (!_.isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (_.has(obj, key)) keys.push(key);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[keys[i]];\n }\n return values;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n _.pairs = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [keys[i], obj[keys[i]]];\n }\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function(obj) {\n var result = {};\n var keys = _.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`\n _.functions = _.methods = function(obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = function(obj) {\n if (!_.isObject(obj)) return obj;\n var source, prop;\n for (var i = 1, length = arguments.length; i < length; i++) {\n source = arguments[i];\n for (prop in source) {\n if (hasOwnProperty.call(source, prop)) {\n obj[prop] = source[prop];\n }\n }\n }\n return obj;\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = function(obj, iteratee, context) {\n var result = {}, key;\n if (obj == null) return result;\n if (_.isFunction(iteratee)) {\n iteratee = createCallback(iteratee, context);\n for (key in obj) {\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n } else {\n var keys = concat.apply([], slice.call(arguments, 1));\n obj = new Object(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n if (key in obj) result[key] = obj[key];\n }\n }\n return result;\n };\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = function(obj, iteratee, context) {\n if (_.isFunction(iteratee)) {\n iteratee = _.negate(iteratee);\n } else {\n var keys = _.map(concat.apply([], slice.call(arguments, 1)), String);\n iteratee = function(value, key) {\n return !_.contains(keys, key);\n };\n }\n return _.pick(obj, iteratee, context);\n };\n\n // Fill in a given object with default properties.\n _.defaults = function(obj) {\n if (!_.isObject(obj)) return obj;\n for (var i = 1, length = arguments.length; i < length; i++) {\n var source = arguments[i];\n for (var prop in source) {\n if (obj[prop] === void 0) obj[prop] = source[prop];\n }\n }\n return obj;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function(obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function(obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Internal recursive comparison function for `isEqual`.\n var eq = function(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // A strict comparison is necessary because `null == undefined`.\n if (a == null || b == null) return a === b;\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n }\n if (typeof a != 'object' || typeof b != 'object') return false;\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n // Objects with different constructors are not equivalent, but `Object`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (\n aCtor !== bCtor &&\n // Handle Object.create(x) cases\n 'constructor' in a && 'constructor' in b &&\n !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n _.isFunction(bCtor) && bCtor instanceof bCtor)\n ) {\n return false;\n }\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n var size, result;\n // Recursively compare objects and arrays.\n if (className === '[object Array]') {\n // Compare array lengths to determine if a deep comparison is necessary.\n size = a.length;\n result = size === b.length;\n if (result) {\n // Deep compare the contents, ignoring non-numeric properties.\n while (size--) {\n if (!(result = eq(a[size], b[size], aStack, bStack))) break;\n }\n }\n } else {\n // Deep compare objects.\n var keys = _.keys(a), key;\n size = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n result = _.keys(b).length === size;\n if (result) {\n while (size--) {\n // Deep compare each member\n key = keys[size];\n if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break;\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return result;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function(a, b) {\n return eq(a, b, [], []);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function(obj) {\n if (obj == null) return true;\n if (_.isArray(obj) || _.isString(obj) || _.isArguments(obj)) return obj.length === 0;\n for (var key in obj) if (_.has(obj, key)) return false;\n return true;\n };\n\n // Is a given value a DOM element?\n _.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp.\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {\n _['is' + name] = function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function(obj) {\n return _.has(obj, 'callee');\n };\n }\n\n // Optimize `isFunction` if appropriate. Work around an IE 11 bug.\n if (typeof /./ !== 'function') {\n _.isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function(obj) {\n return isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`? (NaN is the only number which does not equal itself).\n _.isNaN = function(obj) {\n return _.isNumber(obj) && obj !== +obj;\n };\n\n // Is a given value a boolean?\n _.isBoolean = function(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function(obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function(obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function() {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iteratees.\n _.identity = function(value) {\n return value;\n };\n\n _.constant = function(value) {\n return function() {\n return value;\n };\n };\n\n _.noop = function(){};\n\n _.property = function(key) {\n return function(obj) {\n return obj[key];\n };\n };\n\n // Returns a predicate for checking whether an object has a given set of `key:value` pairs.\n _.matches = function(attrs) {\n var pairs = _.pairs(attrs), length = pairs.length;\n return function(obj) {\n if (obj == null) return !length;\n obj = new Object(obj);\n for (var i = 0; i < length; i++) {\n var pair = pairs[i], key = pair[0];\n if (pair[1] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n };\n };\n\n // Run a function **n** times.\n _.times = function(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = createCallback(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // A (possibly faster) way to get the current timestamp as an integer.\n _.now = Date.now || function() {\n return new Date().getTime();\n };\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = _.invert(escapeMap);\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped\n var source = '(?:' + _.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n _.escape = createEscaper(escapeMap);\n _.unescape = createEscaper(unescapeMap);\n\n // If the value of the named `property` is a function then invoke it with the\n // `object` as context; otherwise, return it.\n _.result = function(object, property) {\n if (object == null) return void 0;\n var value = object[property];\n return _.isFunction(value) ? object[property]() : value;\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate : /<%([\\s\\S]+?)%>/g,\n interpolate : /<%=([\\s\\S]+?)%>/g,\n escape : /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escaper = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n var escapeChar = function(match) {\n return '\\\\' + escapes[match];\n };\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n _.template = function(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escaper, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offest.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n try {\n var render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n _.chain = function(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var result = function(obj) {\n return this._chain ? _(obj).chain() : obj;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function(obj) {\n _.each(_.functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return result.call(this, func.apply(_, args));\n };\n });\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n return result.call(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n _.each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n return result.call(this, method.apply(this._wrapped, arguments));\n };\n });\n\n // Extracts the result from a wrapped and chained object.\n _.prototype.value = function() {\n return this._wrapped;\n };\n\n // AMD registration happens at the end for compatibility with AMD loaders\n // that may not enforce next-turn semantics on modules. Even though general\n // practice for AMD registration is to be anonymous, underscore registers\n // as a named module because, like jQuery, it is a base library that is\n // popular enough to be bundled in a third party lib, but not be part of\n // an AMD load request. Those cases could generate an error when an\n // anonymous define() is called outside of a loader request.\n if (typeof define === 'function' && define.amd) {\n define('underscore', [], function() {\n return _;\n });\n }\n}.call(this));\n", "/* Zepto v1.1.4-76-g2bd5d7a - zepto event ajax callbacks deferred touch selector - zeptojs.com/license */\nvar Zepto=function(){function D(t){return null==t?String(t):j[S.call(t)]||\"object\"}function L(t){return\"function\"==D(t)}function k(t){return null!=t&&t==t.window}function Z(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function $(t){return\"object\"==D(t)}function F(t){return $(t)&&!k(t)&&Object.getPrototypeOf(t)==Object.prototype}function R(t){return\"number\"==typeof t.length}function q(t){return s.call(t,function(t){return null!=t})}function W(t){return t.length>0?n.fn.concat.apply([],t):t}function z(t){return t.replace(/::/g,\"/\").replace(/([A-Z]+)([A-Z][a-z])/g,\"$1_$2\").replace(/([a-z\\d])([A-Z])/g,\"$1_$2\").replace(/_/g,\"-\").toLowerCase()}function H(t){return t in c?c[t]:c[t]=new RegExp(\"(^|\\\\s)\"+t+\"(\\\\s|$)\")}function _(t,e){return\"number\"!=typeof e||l[z(t)]?e:e+\"px\"}function I(t){var e,n;return f[t]||(e=u.createElement(t),u.body.appendChild(e),n=getComputedStyle(e,\"\").getPropertyValue(\"display\"),e.parentNode.removeChild(e),\"none\"==n&&(n=\"block\"),f[t]=n),f[t]}function U(t){return\"children\"in t?a.call(t.children):n.map(t.childNodes,function(t){return 1==t.nodeType?t:void 0})}function X(t,e){var n,i=t?t.length:0;for(n=0;i>n;n++)this[n]=t[n];this.length=i,this.selector=e||\"\"}function B(n,i,r){for(e in i)r&&(F(i[e])||A(i[e]))?(F(i[e])&&!F(n[e])&&(n[e]={}),A(i[e])&&!A(n[e])&&(n[e]=[]),B(n[e],i[e],r)):i[e]!==t&&(n[e]=i[e])}function V(t,e){return null==e?n(t):n(t).filter(e)}function Y(t,e,n,i){return L(e)?e.call(t,n,i):e}function J(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function G(e,n){var i=e.className||\"\",r=i&&i.baseVal!==t;return n===t?r?i.baseVal:i:void(r?i.baseVal=n:e.className=n)}function K(t){try{return t?\"true\"==t||(\"false\"==t?!1:\"null\"==t?null:+t+\"\"==t?+t:/^[\\[\\{]/.test(t)?n.parseJSON(t):t):t}catch(e){return t}}function Q(t,e){e(t);for(var n=0,i=t.childNodes.length;i>n;n++)Q(t.childNodes[n],e)}var t,e,n,i,N,P,r=[],o=r.concat,s=r.filter,a=r.slice,u=window.document,f={},c={},l={\"column-count\":1,columns:1,\"font-weight\":1,\"line-height\":1,opacity:1,\"z-index\":1,zoom:1},h=/^\\s*<(\\w+|!)[^>]*>/,p=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,d=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,m=/^(?:body|html)$/i,g=/([A-Z])/g,v=[\"val\",\"css\",\"html\",\"text\",\"data\",\"width\",\"height\",\"offset\"],y=[\"after\",\"prepend\",\"before\",\"append\"],w=u.createElement(\"table\"),x=u.createElement(\"tr\"),b={tr:u.createElement(\"tbody\"),tbody:w,thead:w,tfoot:w,td:x,th:x,\"*\":u.createElement(\"div\")},E=/complete|loaded|interactive/,T=/^[\\w-]*$/,j={},S=j.toString,C={},O=u.createElement(\"div\"),M={tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},A=Array.isArray||function(t){return t instanceof Array};return C.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var i,r=t.parentNode,o=!r;return o&&(r=O).appendChild(t),i=~C.qsa(r,e).indexOf(t),o&&O.removeChild(t),i},N=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():\"\"})},P=function(t){return s.call(t,function(e,n){return t.indexOf(e)==n})},C.fragment=function(e,i,r){var o,s,f;return p.test(e)&&(o=n(u.createElement(RegExp.$1))),o||(e.replace&&(e=e.replace(d,\"<$1>\")),i===t&&(i=h.test(e)&&RegExp.$1),i in b||(i=\"*\"),f=b[i],f.innerHTML=\"\"+e,o=n.each(a.call(f.childNodes),function(){f.removeChild(this)})),F(r)&&(s=n(o),n.each(r,function(t,e){v.indexOf(t)>-1?s[t](e):s.attr(t,e)})),o},C.Z=function(t,e){return new X(t,e)},C.isZ=function(t){return t instanceof C.Z},C.init=function(e,i){var r;if(!e)return C.Z();if(\"string\"==typeof e)if(e=e.trim(),\"<\"==e[0]&&h.test(e))r=C.fragment(e,RegExp.$1,i),e=null;else{if(i!==t)return n(i).find(e);r=C.qsa(u,e)}else{if(L(e))return n(u).ready(e);if(C.isZ(e))return e;if(A(e))r=q(e);else if($(e))r=[e],e=null;else if(h.test(e))r=C.fragment(e.trim(),RegExp.$1,i),e=null;else{if(i!==t)return n(i).find(e);r=C.qsa(u,e)}}return C.Z(r,e)},n=function(t,e){return C.init(t,e)},n.extend=function(t){var e,n=a.call(arguments,1);return\"boolean\"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){B(t,n,e)}),t},C.qsa=function(t,e){var n,i=\"#\"==e[0],r=!i&&\".\"==e[0],o=i||r?e.slice(1):e,s=T.test(o);return t.getElementById&&s&&i?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:a.call(s&&!i&&t.getElementsByClassName?r?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},n.contains=u.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},n.type=D,n.isFunction=L,n.isWindow=k,n.isArray=A,n.isPlainObject=F,n.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},n.inArray=function(t,e,n){return r.indexOf.call(e,t,n)},n.camelCase=N,n.trim=function(t){return null==t?\"\":String.prototype.trim.call(t)},n.uuid=0,n.support={},n.expr={},n.noop=function(){},n.map=function(t,e){var n,r,o,i=[];if(R(t))for(r=0;r=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return r.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return L(t)?this.not(this.not(t)):n(s.call(this,function(e){return C.matches(e,t)}))},add:function(t,e){return n(P(this.concat(n(t,e))))},is:function(t){return this.length>0&&C.matches(this[0],t)},not:function(e){var i=[];if(L(e)&&e.call!==t)this.each(function(t){e.call(this,t)||i.push(this)});else{var r=\"string\"==typeof e?this.filter(e):R(e)&&L(e.item)?a.call(e):n(e);this.forEach(function(t){r.indexOf(t)<0&&i.push(t)})}return n(i)},has:function(t){return this.filter(function(){return $(t)?n.contains(this,t):n(this).find(t).size()})},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!$(t)?t:n(t)},last:function(){var t=this[this.length-1];return t&&!$(t)?t:n(t)},find:function(t){var e,i=this;return e=t?\"object\"==typeof t?n(t).filter(function(){var t=this;return r.some.call(i,function(e){return n.contains(e,t)})}):1==this.length?n(C.qsa(this[0],t)):this.map(function(){return C.qsa(this,t)}):n()},closest:function(t,e){var i=this[0],r=!1;for(\"object\"==typeof t&&(r=n(t));i&&!(r?r.indexOf(i)>=0:C.matches(i,t));)i=i!==e&&!Z(i)&&i.parentNode;return n(i)},parents:function(t){for(var e=[],i=this;i.length>0;)i=n.map(i,function(t){return(t=t.parentNode)&&!Z(t)&&e.indexOf(t)<0?(e.push(t),t):void 0});return V(e,t)},parent:function(t){return V(P(this.pluck(\"parentNode\")),t)},children:function(t){return V(this.map(function(){return U(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||a.call(this.childNodes)})},siblings:function(t){return V(this.map(function(t,e){return s.call(U(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=\"\"})},pluck:function(t){return n.map(this,function(e){return e[t]})},show:function(){return this.each(function(){\"none\"==this.style.display&&(this.style.display=\"\"),\"none\"==getComputedStyle(this,\"\").getPropertyValue(\"display\")&&(this.style.display=I(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=L(t);if(this[0]&&!e)var i=n(t).get(0),r=i.parentNode||this.length>1;return this.each(function(o){n(this).wrapAll(e?t.call(this,o):r?i.cloneNode(!0):i)})},wrapAll:function(t){if(this[0]){n(this[0]).before(t=n(t));for(var e;(e=t.children()).length;)t=e.first();n(t).append(this)}return this},wrapInner:function(t){var e=L(t);return this.each(function(i){var r=n(this),o=r.contents(),s=e?t.call(this,i):t;o.length?o.wrapAll(s):r.append(s)})},unwrap:function(){return this.parent().each(function(){n(this).replaceWith(n(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css(\"display\",\"none\")},toggle:function(e){return this.each(function(){var i=n(this);(e===t?\"none\"==i.css(\"display\"):e)?i.show():i.hide()})},prev:function(t){return n(this.pluck(\"previousElementSibling\")).filter(t||\"*\")},next:function(t){return n(this.pluck(\"nextElementSibling\")).filter(t||\"*\")},html:function(t){return 0 in arguments?this.each(function(e){var i=this.innerHTML;n(this).empty().append(Y(this,t,e,i))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=Y(this,t,e,this.textContent);this.textContent=null==n?\"\":\"\"+n}):0 in this?this[0].textContent:null},attr:function(n,i){var r;return\"string\"!=typeof n||1 in arguments?this.each(function(t){if(1===this.nodeType)if($(n))for(e in n)J(this,e,n[e]);else J(this,n,Y(this,i,t,this.getAttribute(n)))}):this.length&&1===this[0].nodeType?!(r=this[0].getAttribute(n))&&n in this[0]?this[0][n]:r:t},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(\" \").forEach(function(t){J(this,t)},this)})},prop:function(t,e){return t=M[t]||t,1 in arguments?this.each(function(n){this[t]=Y(this,e,n,this[t])}):this[0]&&this[0][t]},data:function(e,n){var i=\"data-\"+e.replace(g,\"-$1\").toLowerCase(),r=1 in arguments?this.attr(i,n):this.attr(i);return null!==r?K(r):t},val:function(t){return 0 in arguments?this.each(function(e){this.value=Y(this,t,e,this.value)}):this[0]&&(this[0].multiple?n(this[0]).find(\"option\").filter(function(){return this.selected}).pluck(\"value\"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var i=n(this),r=Y(this,t,e,i.offset()),o=i.offsetParent().offset(),s={top:r.top-o.top,left:r.left-o.left};\"static\"==i.css(\"position\")&&(s.position=\"relative\"),i.css(s)});if(!this.length)return null;var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(t,i){if(arguments.length<2){var r,o=this[0];if(!o)return;if(r=getComputedStyle(o,\"\"),\"string\"==typeof t)return o.style[N(t)]||r.getPropertyValue(t);if(A(t)){var s={};return n.each(t,function(t,e){s[e]=o.style[N(e)]||r.getPropertyValue(e)}),s}}var a=\"\";if(\"string\"==D(t))i||0===i?a=z(t)+\":\"+_(t,i):this.each(function(){this.style.removeProperty(z(t))});else for(e in t)t[e]||0===t[e]?a+=z(e)+\":\"+_(e,t[e])+\";\":this.each(function(){this.style.removeProperty(z(e))});return this.each(function(){this.style.cssText+=\";\"+a})},index:function(t){return t?this.indexOf(n(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return t?r.some.call(this,function(t){return this.test(G(t))},H(t)):!1},addClass:function(t){return t?this.each(function(e){if(\"className\"in this){i=[];var r=G(this),o=Y(this,t,e,r);o.split(/\\s+/g).forEach(function(t){n(this).hasClass(t)||i.push(t)},this),i.length&&G(this,r+(r?\" \":\"\")+i.join(\" \"))}}):this},removeClass:function(e){return this.each(function(n){if(\"className\"in this){if(e===t)return G(this,\"\");i=G(this),Y(this,e,n,i).split(/\\s+/g).forEach(function(t){i=i.replace(H(t),\" \")}),G(this,i.trim())}})},toggleClass:function(e,i){return e?this.each(function(r){var o=n(this),s=Y(this,e,r,G(this));s.split(/\\s+/g).forEach(function(e){(i===t?!o.hasClass(e):i)?o.addClass(e):o.removeClass(e)})}):this},scrollTop:function(e){if(this.length){var n=\"scrollTop\"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var n=\"scrollLeft\"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),i=this.offset(),r=m.test(e[0].nodeName)?{top:0,left:0}:e.offset();return i.top-=parseFloat(n(t).css(\"margin-top\"))||0,i.left-=parseFloat(n(t).css(\"margin-left\"))||0,r.top+=parseFloat(n(e[0]).css(\"border-top-width\"))||0,r.left+=parseFloat(n(e[0]).css(\"border-left-width\"))||0,{top:i.top-r.top,left:i.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||u.body;t&&!m.test(t.nodeName)&&\"static\"==n(t).css(\"position\");)t=t.offsetParent;return t})}},n.fn.detach=n.fn.remove,[\"width\",\"height\"].forEach(function(e){var i=e.replace(/./,function(t){return t[0].toUpperCase()});n.fn[e]=function(r){var o,s=this[0];return r===t?k(s)?s[\"inner\"+i]:Z(s)?s.documentElement[\"scroll\"+i]:(o=this.offset())&&o[e]:this.each(function(t){s=n(this),s.css(e,Y(this,r,t,s[e]()))})}}),y.forEach(function(t,e){var i=e%2;n.fn[t]=function(){var t,o,r=n.map(arguments,function(e){return t=D(e),\"object\"==t||\"array\"==t||null==e?e:C.fragment(e)}),s=this.length>1;return r.length<1?this:this.each(function(t,a){o=i?a:a.parentNode,a=0==e?a.nextSibling:1==e?a.firstChild:2==e?a:null;var f=n.contains(u.documentElement,o);r.forEach(function(t){if(s)t=t.cloneNode(!0);else if(!o)return n(t).remove();o.insertBefore(t,a),f&&Q(t,function(t){null==t.nodeName||\"SCRIPT\"!==t.nodeName.toUpperCase()||t.type&&\"text/javascript\"!==t.type||t.src||window.eval.call(window,t.innerHTML)})})})},n.fn[i?t+\"To\":\"insert\"+(e?\"Before\":\"After\")]=function(e){return n(e)[t](this),this}}),C.Z.prototype=X.prototype=n.fn,C.uniq=P,C.deserializeValue=K,n.zepto=C,n}();window.Zepto=Zepto,void 0===window.$&&(window.$=Zepto),function(t){function l(t){return t._zid||(t._zid=e++)}function h(t,e,n,i){if(e=p(e),e.ns)var r=d(e.ns);return(s[l(t)]||[]).filter(function(t){return!(!t||e.e&&t.e!=e.e||e.ns&&!r.test(t.ns)||n&&l(t.fn)!==l(n)||i&&t.sel!=i)})}function p(t){var e=(\"\"+t).split(\".\");return{e:e[0],ns:e.slice(1).sort().join(\" \")}}function d(t){return new RegExp(\"(?:^| )\"+t.replace(\" \",\" .* ?\")+\"(?: |$)\")}function m(t,e){return t.del&&!u&&t.e in f||!!e}function g(t){return c[t]||u&&f[t]||t}function v(e,i,r,o,a,u,f){var h=l(e),d=s[h]||(s[h]=[]);i.split(/\\s/).forEach(function(i){if(\"ready\"==i)return t(document).ready(r);var s=p(i);s.fn=r,s.sel=a,s.e in c&&(r=function(e){var n=e.relatedTarget;return!n||n!==this&&!t.contains(this,n)?s.fn.apply(this,arguments):void 0}),s.del=u;var l=u||r;s.proxy=function(t){if(t=T(t),!t.isImmediatePropagationStopped()){t.data=o;var i=l.apply(e,t._args==n?[t]:[t].concat(t._args));return i===!1&&(t.preventDefault(),t.stopPropagation()),i}},s.i=d.length,d.push(s),\"addEventListener\"in e&&e.addEventListener(g(s.e),s.proxy,m(s,f))})}function y(t,e,n,i,r){var o=l(t);(e||\"\").split(/\\s/).forEach(function(e){h(t,e,n,i).forEach(function(e){delete s[o][e.i],\"removeEventListener\"in t&&t.removeEventListener(g(e.e),e.proxy,m(e,r))})})}function T(e,i){return(i||!e.isDefaultPrevented)&&(i||(i=e),t.each(E,function(t,n){var r=i[t];e[t]=function(){return this[n]=w,r&&r.apply(i,arguments)},e[n]=x}),(i.defaultPrevented!==n?i.defaultPrevented:\"returnValue\"in i?i.returnValue===!1:i.getPreventDefault&&i.getPreventDefault())&&(e.isDefaultPrevented=w)),e}function j(t){var e,i={originalEvent:t};for(e in t)b.test(e)||t[e]===n||(i[e]=t[e]);return T(i,t)}var n,e=1,i=Array.prototype.slice,r=t.isFunction,o=function(t){return\"string\"==typeof t},s={},a={},u=\"onfocusin\"in window,f={focus:\"focusin\",blur:\"focusout\"},c={mouseenter:\"mouseover\",mouseleave:\"mouseout\"};a.click=a.mousedown=a.mouseup=a.mousemove=\"MouseEvents\",t.event={add:v,remove:y},t.proxy=function(e,n){var s=2 in arguments&&i.call(arguments,2);if(r(e)){var a=function(){return e.apply(n,s?s.concat(i.call(arguments)):arguments)};return a._zid=l(e),a}if(o(n))return s?(s.unshift(e[n],e),t.proxy.apply(null,s)):t.proxy(e[n],e);throw new TypeError(\"expected function\")},t.fn.bind=function(t,e,n){return this.on(t,e,n)},t.fn.unbind=function(t,e){return this.off(t,e)},t.fn.one=function(t,e,n,i){return this.on(t,e,n,i,1)};var w=function(){return!0},x=function(){return!1},b=/^([A-Z]|returnValue$|layer[XY]$)/,E={preventDefault:\"isDefaultPrevented\",stopImmediatePropagation:\"isImmediatePropagationStopped\",stopPropagation:\"isPropagationStopped\"};t.fn.delegate=function(t,e,n){return this.on(e,t,n)},t.fn.undelegate=function(t,e,n){return this.off(e,t,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,s,a,u,f){var c,l,h=this;return e&&!o(e)?(t.each(e,function(t,e){h.on(t,s,a,e,f)}),h):(o(s)||r(u)||u===!1||(u=a,a=s,s=n),(u===n||a===!1)&&(u=a,a=n),u===!1&&(u=x),h.each(function(n,r){f&&(c=function(t){return y(r,t.type,u),u.apply(this,arguments)}),s&&(l=function(e){var n,o=t(e.target).closest(s,r).get(0);return o&&o!==r?(n=t.extend(j(e),{currentTarget:o,liveFired:r}),(c||u).apply(o,[n].concat(i.call(arguments,1)))):void 0}),v(r,e,u,a,s,l||c)}))},t.fn.off=function(e,i,s){var a=this;return e&&!o(e)?(t.each(e,function(t,e){a.off(t,i,e)}),a):(o(i)||r(s)||s===!1||(s=i,i=n),s===!1&&(s=x),a.each(function(){y(this,e,s,i)}))},t.fn.trigger=function(e,n){return e=o(e)||t.isPlainObject(e)?t.Event(e):T(e),e._args=n,this.each(function(){e.type in f&&\"function\"==typeof this[e.type]?this[e.type]():\"dispatchEvent\"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,n){var i,r;return this.each(function(s,a){i=j(o(e)?t.Event(e):e),i._args=n,i.target=a,t.each(h(a,e.type||e),function(t,e){return r=e.proxy(i),i.isImmediatePropagationStopped()?!1:void 0})}),r},\"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error\".split(\" \").forEach(function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(t,e){o(t)||(e=t,t=e.type);var n=document.createEvent(a[t]||\"Events\"),i=!0;if(e)for(var r in e)\"bubbles\"==r?i=!!e[r]:n[r]=e[r];return n.initEvent(t,i,!0),T(n)}}(Zepto),function(t){function h(e,n,i){var r=t.Event(n);return t(e).trigger(r,i),!r.isDefaultPrevented()}function p(t,e,i,r){return t.global?h(e||n,i,r):void 0}function d(e){e.global&&0===t.active++&&p(e,null,\"ajaxStart\")}function m(e){e.global&&!--t.active&&p(e,null,\"ajaxStop\")}function g(t,e){var n=e.context;return e.beforeSend.call(n,t,e)===!1||p(e,n,\"ajaxBeforeSend\",[t,e])===!1?!1:void p(e,n,\"ajaxSend\",[t,e])}function v(t,e,n,i){var r=n.context,o=\"success\";n.success.call(r,t,o,e),i&&i.resolveWith(r,[t,o,e]),p(n,r,\"ajaxSuccess\",[e,n,t]),w(o,e,n)}function y(t,e,n,i,r){var o=i.context;i.error.call(o,n,e,t),r&&r.rejectWith(o,[n,e,t]),p(i,o,\"ajaxError\",[n,i,t||e]),w(e,n,i)}function w(t,e,n){var i=n.context;n.complete.call(i,e,t),p(n,i,\"ajaxComplete\",[e,n]),m(n)}function x(){}function b(t){return t&&(t=t.split(\";\",2)[0]),t&&(t==f?\"html\":t==u?\"json\":s.test(t)?\"script\":a.test(t)&&\"xml\")||\"text\"}function E(t,e){return\"\"==e?t:(t+\"&\"+e).replace(/[&?]{1,2}/,\"?\")}function T(e){e.processData&&e.data&&\"string\"!=t.type(e.data)&&(e.data=t.param(e.data,e.traditional)),!e.data||e.type&&\"GET\"!=e.type.toUpperCase()||(e.url=E(e.url,e.data),e.data=void 0)}function j(e,n,i,r){return t.isFunction(n)&&(r=i,i=n,n=void 0),t.isFunction(i)||(r=i,i=void 0),{url:e,data:n,success:i,dataType:r}}function C(e,n,i,r){var o,s=t.isArray(n),a=t.isPlainObject(n);t.each(n,function(n,u){o=t.type(u),r&&(n=i?r:r+\"[\"+(a||\"object\"==o||\"array\"==o?n:\"\")+\"]\"),!r&&s?e.add(u.name,u.value):\"array\"==o||!i&&\"object\"==o?C(e,u,i,n):e.add(n,u)})}var i,r,e=0,n=window.document,o=/)<[^<]*)*<\\/script>/gi,s=/^(?:text|application)\\/javascript/i,a=/^(?:text|application)\\/xml/i,u=\"application/json\",f=\"text/html\",c=/^\\s*$/,l=n.createElement(\"a\");l.href=window.location.href,t.active=0,t.ajaxJSONP=function(i,r){if(!(\"type\"in i))return t.ajax(i);var f,h,o=i.jsonpCallback,s=(t.isFunction(o)?o():o)||\"jsonp\"+ ++e,a=n.createElement(\"script\"),u=window[s],c=function(e){t(a).triggerHandler(\"error\",e||\"abort\")},l={abort:c};return r&&r.promise(l),t(a).on(\"load error\",function(e,n){clearTimeout(h),t(a).off().remove(),\"error\"!=e.type&&f?v(f[0],l,i,r):y(null,n||\"error\",l,i,r),window[s]=u,f&&t.isFunction(u)&&u(f[0]),u=f=void 0}),g(l,i)===!1?(c(\"abort\"),l):(window[s]=function(){f=arguments},a.src=i.url.replace(/\\?(.+)=\\?/,\"?$1=\"+s),n.head.appendChild(a),i.timeout>0&&(h=setTimeout(function(){c(\"timeout\")},i.timeout)),l)},t.ajaxSettings={type:\"GET\",beforeSend:x,success:x,error:x,complete:x,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:\"text/javascript, application/javascript, application/x-javascript\",json:u,xml:\"application/xml, text/xml\",html:f,text:\"text/plain\"},crossDomain:!1,timeout:0,processData:!0,cache:!0},t.ajax=function(e){var a,u,o=t.extend({},e||{}),s=t.Deferred&&t.Deferred();for(i in t.ajaxSettings)void 0===o[i]&&(o[i]=t.ajaxSettings[i]);d(o),o.crossDomain||(a=n.createElement(\"a\"),a.href=o.url,a.href=a.href,o.crossDomain=l.protocol+\"//\"+l.host!=a.protocol+\"//\"+a.host),o.url||(o.url=window.location.toString()),(u=o.url.indexOf(\"#\"))>-1&&(o.url=o.url.slice(0,u)),T(o);var f=o.dataType,h=/\\?.+=\\?/.test(o.url);if(h&&(f=\"jsonp\"),o.cache!==!1&&(e&&e.cache===!0||\"script\"!=f&&\"jsonp\"!=f)||(o.url=E(o.url,\"_=\"+Date.now())),\"jsonp\"==f)return h||(o.url=E(o.url,o.jsonp?o.jsonp+\"=?\":o.jsonp===!1?\"\":\"callback=?\")),t.ajaxJSONP(o,s);var N,p=o.accepts[f],m={},w=function(t,e){m[t.toLowerCase()]=[t,e]},j=/^([\\w-]+:)\\/\\//.test(o.url)?RegExp.$1:window.location.protocol,S=o.xhr(),C=S.setRequestHeader;if(s&&s.promise(S),o.crossDomain||w(\"X-Requested-With\",\"XMLHttpRequest\"),w(\"Accept\",p||\"*/*\"),(p=o.mimeType||p)&&(p.indexOf(\",\")>-1&&(p=p.split(\",\",2)[0]),S.overrideMimeType&&S.overrideMimeType(p)),(o.contentType||o.contentType!==!1&&o.data&&\"GET\"!=o.type.toUpperCase())&&w(\"Content-Type\",o.contentType||\"application/x-www-form-urlencoded\"),o.headers)for(r in o.headers)w(r,o.headers[r]);if(S.setRequestHeader=w,S.onreadystatechange=function(){if(4==S.readyState){S.onreadystatechange=x,clearTimeout(N);var e,n=!1;if(S.status>=200&&S.status<300||304==S.status||0==S.status&&\"file:\"==j){f=f||b(o.mimeType||S.getResponseHeader(\"content-type\")),e=S.responseText;try{\"script\"==f?(1,eval)(e):\"xml\"==f?e=S.responseXML:\"json\"==f&&(e=c.test(e)?null:t.parseJSON(e))}catch(i){n=i}n?y(n,\"parsererror\",S,o,s):v(e,S,o,s)}else y(S.statusText||null,S.status?\"error\":\"abort\",S,o,s)}},g(S,o)===!1)return S.abort(),y(null,\"abort\",S,o,s),S;if(o.xhrFields)for(r in o.xhrFields)S[r]=o.xhrFields[r];var P=\"async\"in o?o.async:!0;S.open(o.type,o.url,P,o.username,o.password);for(r in m)C.apply(S,m[r]);return o.timeout>0&&(N=setTimeout(function(){S.onreadystatechange=x,S.abort(),y(null,\"timeout\",S,o,s)},o.timeout)),S.send(o.data?o.data:null),S},t.get=function(){return t.ajax(j.apply(null,arguments))},t.post=function(){var e=j.apply(null,arguments);return e.type=\"POST\",t.ajax(e)},t.getJSON=function(){var e=j.apply(null,arguments);return e.dataType=\"json\",t.ajax(e)},t.fn.load=function(e,n,i){if(!this.length)return this;var a,r=this,s=e.split(/\\s/),u=j(e,n,i),f=u.success;return s.length>1&&(u.url=s[0],a=s[1]),u.success=function(e){r.html(a?t(\"
\").html(e.replace(o,\"\")).find(a):e),f&&f.apply(r,arguments)},t.ajax(u),this};var S=encodeURIComponent;t.param=function(e,n){var i=[];return i.add=function(e,n){t.isFunction(n)&&(n=n()),null==n&&(n=\"\"),this.push(S(e)+\"=\"+S(n))},C(i,e,n),i.join(\"&\").replace(/%20/g,\"+\")}}(Zepto),function(t){t.Callbacks=function(e){e=t.extend({},e);var n,i,r,o,s,a,u=[],f=!e.once&&[],c=function(t){for(n=e.memory&&t,i=!0,a=o||0,o=0,s=u.length,r=!0;u&&s>a;++a)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}r=!1,u&&(f?f.length&&c(f.shift()):n?u.length=0:l.disable())},l={add:function(){if(u){var i=u.length,a=function(n){t.each(n,function(t,n){\"function\"==typeof n?e.unique&&l.has(n)||u.push(n):n&&n.length&&\"string\"!=typeof n&&a(n)})};a(arguments),r?s=u.length:n&&(o=i,c(n))}return this},remove:function(){return u&&t.each(arguments,function(e,n){for(var i;(i=t.inArray(n,u,i))>-1;)u.splice(i,1),r&&(s>=i&&--s,a>=i&&--a)}),this},has:function(e){return!(!u||!(e?t.inArray(e,u)>-1:u.length))},empty:function(){return s=u.length=0,this},disable:function(){return u=f=n=void 0,this},disabled:function(){return!u},lock:function(){return f=void 0,n||l.disable(),this},locked:function(){return!f},fireWith:function(t,e){return!u||i&&!f||(e=e||[],e=[t,e.slice?e.slice():e],r?f.push(e):c(e)),this},fire:function(){return l.fireWith(this,arguments)},fired:function(){return!!i}};return l}}(Zepto),function(t){function n(e){var i=[[\"resolve\",\"done\",t.Callbacks({once:1,memory:1}),\"resolved\"],[\"reject\",\"fail\",t.Callbacks({once:1,memory:1}),\"rejected\"],[\"notify\",\"progress\",t.Callbacks({memory:1})]],r=\"pending\",o={state:function(){return r},always:function(){return s.done(arguments).fail(arguments),this},then:function(){var e=arguments;return n(function(n){t.each(i,function(i,r){var a=t.isFunction(e[i])&&e[i];s[r[1]](function(){var e=a&&a.apply(this,arguments);if(e&&t.isFunction(e.promise))e.promise().done(n.resolve).fail(n.reject).progress(n.notify);else{var i=this===o?n.promise():this,s=a?[e]:arguments;n[r[0]+\"With\"](i,s)}})}),e=null}).promise()},promise:function(e){return null!=e?t.extend(e,o):o}},s={};return t.each(i,function(t,e){var n=e[2],a=e[3];o[e[1]]=n.add,a&&n.add(function(){r=a},i[1^t][2].disable,i[2][2].lock),s[e[0]]=function(){return s[e[0]+\"With\"](this===s?o:this,arguments),this},s[e[0]+\"With\"]=n.fireWith}),o.promise(s),e&&e.call(s,s),s}var e=Array.prototype.slice;t.when=function(i){var f,c,l,r=e.call(arguments),o=r.length,s=0,a=1!==o||i&&t.isFunction(i.promise)?o:0,u=1===a?i:n(),h=function(t,n,i){return function(r){n[t]=this,i[t]=arguments.length>1?e.call(arguments):r,i===f?u.notifyWith(n,i):--a||u.resolveWith(n,i)}};if(o>1)for(f=new Array(o),c=new Array(o),l=new Array(o);o>s;++s)r[s]&&t.isFunction(r[s].promise)?r[s].promise().done(h(s,l,r)).fail(u.reject).progress(h(s,c,f)):--a;return a||u.resolveWith(l,r),u.promise()},t.Deferred=n}(Zepto),function(t){function u(t,e,n,i){return Math.abs(t-e)>=Math.abs(n-i)?t-e>0?\"Left\":\"Right\":n-i>0?\"Up\":\"Down\"}function f(){o=null,e.last&&(e.el.trigger(\"longTap\"),e={})}function c(){o&&clearTimeout(o),o=null}function l(){n&&clearTimeout(n),i&&clearTimeout(i),r&&clearTimeout(r),o&&clearTimeout(o),n=i=r=o=null,e={}}function h(t){return(\"touch\"==t.pointerType||t.pointerType==t.MSPOINTER_TYPE_TOUCH)&&t.isPrimary}function p(t,e){return t.type==\"pointer\"+e||t.type.toLowerCase()==\"mspointer\"+e}var n,i,r,o,a,e={},s=750;t(document).ready(function(){var d,m,y,w,g=0,v=0;\"MSGesture\"in window&&(a=new MSGesture,a.target=document.body),t(document).bind(\"MSGestureEnd\",function(t){var n=t.velocityX>1?\"Right\":t.velocityX<-1?\"Left\":t.velocityY>1?\"Down\":t.velocityY<-1?\"Up\":null;n&&(e.el.trigger(\"swipe\"),e.el.trigger(\"swipe\"+n))}).on(\"touchstart MSPointerDown pointerdown\",function(i){(!(w=p(i,\"down\"))||h(i))&&(y=w?i:i.touches[0],i.touches&&1===i.touches.length&&e.x2&&(e.x2=void 0,e.y2=void 0),d=Date.now(),m=d-(e.last||d),e.el=t(\"tagName\"in y.target?y.target:y.target.parentNode),n&&clearTimeout(n),e.x1=y.pageX,e.y1=y.pageY,m>0&&250>=m&&(e.isDoubleTap=!0),e.last=d,o=setTimeout(f,s),a&&w&&a.addPointer(i.pointerId))}).on(\"touchmove MSPointerMove pointermove\",function(t){(!(w=p(t,\"move\"))||h(t))&&(y=w?t:t.touches[0],c(),e.x2=y.pageX,e.y2=y.pageY,g+=Math.abs(e.x1-e.x2),v+=Math.abs(e.y1-e.y2))}).on(\"touchend MSPointerUp pointerup\",function(o){(!(w=p(o,\"up\"))||h(o))&&(c(),e.x2&&Math.abs(e.x1-e.x2)>30||e.y2&&Math.abs(e.y1-e.y2)>30?r=setTimeout(function(){e.el.trigger(\"swipe\"),e.el.trigger(\"swipe\"+u(e.x1,e.x2,e.y1,e.y2)),e={}},0):\"last\"in e&&(30>g&&30>v?i=setTimeout(function(){var i=t.Event(\"tap\");i.cancelTouch=l,e.el.trigger(i),e.isDoubleTap?(e.el&&e.el.trigger(\"doubleTap\"),e={}):n=setTimeout(function(){n=null,e.el&&e.el.trigger(\"singleTap\"),e={}},250)},0):e={}),g=v=0)}).on(\"touchcancel MSPointerCancel pointercancel\",l),t(window).on(\"scroll\",l)}),[\"swipe\",\"swipeLeft\",\"swipeRight\",\"swipeUp\",\"swipeDown\",\"doubleTap\",\"tap\",\"singleTap\",\"longTap\"].forEach(function(e){t.fn[e]=function(t){return this.on(e,t)}})}(Zepto),function(t){function r(e){return e=t(e),!(!e.width()&&!e.height())&&\"none\"!==e.css(\"display\")}function f(t,e){t=t.replace(/=#\\]/g,'=\"#\"]');var n,i,r=s.exec(t);if(r&&r[2]in o&&(n=o[r[2]],i=r[3],t=r[1],i)){var a=Number(i);i=isNaN(a)?i.replace(/^[\"']|[\"']$/g,\"\"):a}return e(t,n,i)}var e=t.zepto,n=e.qsa,i=e.matches,o=t.expr[\":\"]={visible:function(){return r(this)?this:void 0},hidden:function(){return r(this)?void 0:this},selected:function(){return this.selected?this:void 0},checked:function(){return this.checked?this:void 0},parent:function(){return this.parentNode},first:function(t){return 0===t?this:void 0},last:function(t,e){return t===e.length-1?this:void 0},eq:function(t,e,n){return t===n?this:void 0},contains:function(e,n,i){return t(this).text().indexOf(i)>-1?this:void 0},has:function(t,n,i){return e.qsa(this,i).length?this:void 0}},s=new RegExp(\"(.*):(\\\\w+)(?:\\\\(([^)]+)\\\\))?$\\\\s*\"),a=/^\\s*>/,u=\"Zepto\"+ +new Date;e.qsa=function(i,r){return f(r,function(o,s,f){try{var c;!o&&s?o=\"*\":a.test(o)&&(c=t(i).addClass(u),o=\".\"+u+\" \"+o);var l=n(i,o)}catch(h){throw console.error(\"error performing selector: %o\",r),h}finally{c&&c.removeClass(u)}return s?e.uniq(t.map(l,function(t,e){return s.call(t,e,l,f)})):l})},e.matches=function(t,e){return f(e,function(e,n,r){return!(e&&!i(t,e)||n&&n.call(t,null,r)!==t)})}}(Zepto);\nmodule.exports = Zepto;\n" ] }