From a4937fb2e5325c5a0d929001d191296fa7d25d34 Mon Sep 17 00:00:00 2001 From: Lee Lawlor Date: Mon, 17 Feb 2014 12:05:39 -0500 Subject: [PATCH] update with changes from Production branch --- .ruby-gemset | 2 + .ruby-version | 2 + Gemfile | 65 +- Gemfile.lock | 388 ++++++--- README.textile | 12 +- app/assets/images/GitHub_ThingSpeak_API.jpg | Bin 0 -> 26303 bytes app/assets/images/eye.png | Bin 0 -> 3294 bytes app/assets/images/flag_gray.gif | Bin 0 -> 983 bytes app/assets/images/flag_red.gif | Bin 0 -> 987 bytes app/assets/images/front.png | Bin 0 -> 17717 bytes app/assets/images/icon_location_24.png | Bin 0 -> 618 bytes app/assets/images/icon_rss.gif | Bin 0 -> 1008 bytes app/assets/images/icons/InfoBox.png | Bin 0 -> 837 bytes app/assets/images/icons/Locked.png | Bin 0 -> 1882 bytes app/assets/images/icons/Public_32.png | Bin 0 -> 4788 bytes app/assets/images/icons/Unlocked.png | Bin 0 -> 1652 bytes app/assets/images/icons/delete.png | Bin 0 -> 715 bytes app/assets/images/my_house_status_update.png | Bin 0 -> 13437 bytes app/assets/images/rails.png | Bin 0 -> 6646 bytes app/assets/images/shading.png | Bin 0 -> 565 bytes .../images/social_sensor_network_logo.png | Bin 0 -> 15370 bytes .../images/social_sensor_network_main.png | Bin 0 -> 132931 bytes app/assets/images/thingspeak_logo.png | Bin 0 -> 1609 bytes app/assets/javascripts/application.js | 28 +- app/assets/javascripts/channels.js | 21 + app/assets/javascripts/custom.js | 11 + app/assets/javascripts/docs.js | 23 + app/assets/javascripts/exporting.js | 21 + app/assets/javascripts/highcharts.js | 295 +++++++ app/assets/javascripts/jquery.cookie.js | 47 ++ app/assets/javascripts/jquery.shorten.min.js | 7 + app/assets/javascripts/nested_form.js | 114 +++ app/assets/javascripts/noapi.js | 5 + app/assets/javascripts/prettify.js | 35 + app/assets/javascripts/rest.js | 137 ++++ app/assets/javascripts/sidebar.js | 32 + app/assets/javascripts/tabby.js | 267 +++++++ app/assets/javascripts/timeago.min.js | 11 + app/assets/javascripts/updateChart.js | 296 +++++++ app/assets/javascripts/validate.min.js | 16 + app/assets/stylesheets/.gitkeep | 0 app/assets/stylesheets/application.css | 15 +- .../stylesheets/bootstrap_custom.min.css | 9 + .../stylesheets/bootstrap_overrides.css | 6 + app/assets/stylesheets/custom.css | 630 +++++++++++++-- .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 260 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 251 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 104 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 125 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 3762 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 90 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 129 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_228ef1_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ef8c08_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffd27a_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../stylesheets/jquery-ui-1.8.24.custom.css | 563 +++++++++++++ app/assets/stylesheets/prettify.css | 31 + app/assets/stylesheets/sidebar.css | 28 + app/assets/stylesheets/status.css | 9 + app/controllers/api_keys_controller.rb | 72 +- app/controllers/application_controller.rb | 362 ++++++--- app/controllers/apps_controller.rb | 9 + app/controllers/channels_controller.rb | 656 +++++++++------ app/controllers/charts_controller.rb | 146 ++-- app/controllers/comments_controller.rb | 47 ++ app/controllers/cors_controller.rb | 8 + app/controllers/docs_controller.rb | 19 + app/controllers/feed_controller.rb | 744 +++++------------- app/controllers/mailer_controller.rb | 33 +- app/controllers/maps_controller.rb | 44 ++ app/controllers/pages_controller.rb | 22 +- app/controllers/pipes_controller.rb | 16 + app/controllers/plugins_controller.rb | 161 ++++ app/controllers/status_controller.rb | 240 +++--- app/controllers/subdomains_controller.rb | 20 +- app/controllers/tags_controller.rb | 37 + app/controllers/user_sessions_controller.rb | 65 +- app/controllers/users_controller.rb | 207 +++-- app/controllers/windows_controller.rb | 219 ++++++ app/helpers/application_helper.rb | 10 + app/helpers/apps_helper.rb | 2 + app/helpers/channels_helper.rb | 11 + app/helpers/comments_helper.rb | 2 + app/helpers/feed_helper.rb | 363 +++++++++ app/helpers/maps_helper.rb | 2 + app/helpers/pages_helper.rb | 26 + app/helpers/pipes_helper.rb | 2 + app/helpers/plugins_helper.rb | 2 + app/jobs/clear_channel_job.rb | 14 + app/models/api_key.rb | 34 +- app/models/channel.rb | 525 ++++++++++-- app/models/chart.rb | 8 + app/models/chart_window.rb | 22 + app/models/chart_window_detail.rb | 14 + app/models/comment.rb | 32 + app/models/daily_feed.rb | 47 ++ app/models/error_response.rb | 41 + app/models/failedlogin.rb | 14 + app/models/feed.rb | 154 +++- app/models/feed_factory.rb | 197 +++++ app/models/header.rb | 16 + app/models/mailer.rb | 12 +- app/models/pipe.rb | 22 + app/models/plugin.rb | 134 ++++ app/models/plugin_window.rb | 23 + app/models/plugin_window_detail.rb | 16 + app/models/portlet_window.rb | 22 + app/models/portlet_window_detail.rb | 12 + app/models/tag.rb | 19 + app/models/tagging.rb | 15 + app/models/twitter_account.rb | 57 ++ app/models/user.rb | 99 ++- app/models/user_session.rb | 4 +- app/models/watching.rb | 22 + app/models/window.rb | 50 ++ app/views/api_keys/_index.html.erb | 52 ++ app/views/api_keys/index.html.erb | 45 +- app/views/apps/index.html.erb | 118 +++ app/views/channels/_addportlet.html.erb | 2 + app/views/channels/_channelinfo.html.erb | 24 + app/views/channels/_devinfo.html.erb | 29 + app/views/channels/_edit.html.erb | 174 ++++ app/views/channels/_import.html.erb | 48 ++ app/views/channels/_list.html.erb | 23 + app/views/channels/_private_show.html.erb | 31 + app/views/channels/_public_show.html.erb | 75 ++ app/views/channels/_socialbuttons.html.erb | 26 + app/views/channels/index.html.erb | 102 ++- app/views/channels/private_show.html.erb | 133 ++++ app/views/channels/public.html.erb | 11 + app/views/channels/public_show.html.erb | 92 +++ app/views/channels/social_feed.html.erb | 93 +++ app/views/channels/social_new.html.erb | 107 +++ app/views/channels/social_show.html.erb | 308 ++++++++ app/views/channels/watched.html.erb | 18 + app/views/charts/_config.html.erb | 300 ++++--- app/views/charts/_display.html.erb | 11 + app/views/charts/index.html.erb | 158 ++-- app/views/charts/show.html.erb | 247 +++--- app/views/comments/_comment.html.erb | 45 ++ app/views/docs/_response.html.erb | 5 + app/views/docs/index.html.erb | 4 + app/views/feed/debug.html.erb | 11 + app/views/feed/index.csv.erb | 2 +- app/views/feed/index.html.erb | 2 +- app/views/headers/_fields.html.erb | 14 + app/views/layouts/_footer.html.erb | 20 + app/views/layouts/_ga.html.erb | 12 + app/views/layouts/_header.html.erb | 76 +- app/views/layouts/application.html.erb | 44 +- app/views/mailer/password_reset.html.erb | 14 +- app/views/maps/channel_show.html.erb | 44 ++ app/views/maps/show.html.erb | 119 +++ app/views/pages/about.html.erb | 1 + app/views/pages/export.html.erb | 116 +++ app/views/pages/features.html.erb | 22 + app/views/pages/headers.html.erb | 7 + app/views/pages/home.html.erb | 235 +++++- app/views/pages/social_home.html.erb | 145 ++++ app/views/pipes/index.html.erb | 19 + app/views/pipes/new.html.erb | 30 + app/views/plugins/_plugins.html.erb | 8 + app/views/plugins/default.css | 3 + app/views/plugins/default.html | 13 + app/views/plugins/default.js | 3 + app/views/plugins/edit.html.erb | 109 +++ app/views/plugins/index.html.erb | 43 + app/views/plugins/show.html.erb | 1 + app/views/status/_recent.html.erb | 46 ++ app/views/tags/show.html.erb | 24 + app/views/user_sessions/new.html.erb | 68 +- app/views/users/edit.html.erb | 104 ++- app/views/users/edit_profile.html.erb | 43 + app/views/users/forgot_password.html.erb | 39 +- app/views/users/list_channels.html.erb | 19 + app/views/users/new.html.erb | 96 ++- app/views/users/profile.html.erb | 19 + app/views/users/reset_password.html.erb | 65 +- app/views/users/show.html.erb | 70 +- app/views/windows/_hidden_windows.html.erb | 104 +++ autotest/discover.rb | 2 + config/application.rb | 35 +- config/database.yml.local | 50 ++ config/environments/development.rb | 20 +- config/environments/test.rb | 13 +- config/initializers/constants.rb | 25 +- config/initializers/secret_token.rb | 3 +- .../initializers/timestamp_json_override.rb | 11 + config/locales/en.yml | 367 ++++++++- config/locales/it.yml | 9 +- config/locales/pt-br.yml | 267 ++++++- config/routes.rb | 200 ++++- db/migrate/20101111054358_create_users.rb | 29 + db/migrate/20101116224140_create_api_keys.rb | 18 + .../20101116225014_add_indexes_to_api_key.rb | 11 + ...01117005031_remove_feed_id_from_api_key.rb | 9 + db/migrate/20101117211040_create_feeds.rb | 22 + .../20101117211209_add_index_to_feeds.rb | 9 + .../20101118061100_add_time_zone_to_user.rb | 9 + .../20101119231040_add_entry_id_to_feeds.rb | 9 + .../20101123073857_add_note_to_api_keys.rb | 9 + ...101207175152_change_feed_data_to_fields.rb | 23 + .../20101210151518_add_status_to_feeds.rb | 9 + ...217193433_add_field_options_to_channels.rb | 23 + db/migrate/20101218173400_create_tags.rb | 15 + db/migrate/20101218174125_create_taggings.rb | 16 + .../20110119170853_add_geolocation_to_feed.rb | 13 + db/migrate/20110126140659_create_twitters.rb | 23 + .../20110126144150_add_api_key_to_twitters.rb | 11 + db/migrate/20110217135144_create_headers.rb | 14 + db/migrate/20110225042321_create_plugins.rb | 21 + ...227025236_change_feed_fields_to_strings.rb | 23 + ...025649_change_channel_fields_to_strings.rb | 39 + ...227211312_add_created_at_index_to_feeds.rb | 9 + ...0110227221002_add_double_index_to_feeds.rb | 13 + ..._add_channel_id_entry_id_index_to_feeds.rb | 9 + db/migrate/20110405211741_create_pipes.rb | 19 + .../20110406220648_add_fields_to_pipes.rb | 11 + .../20110407034539_add_social_to_channels.rb | 15 + .../20110409071450_add_location_to_feeds.rb | 9 + .../20110409221058_add_status_to_channels.rb | 9 + .../20110419173839_add_url_to_channel.rb | 9 + db/migrate/20110425145717_create_comments.rb | 17 + ...110427021512_add_channel_id_to_comments.rb | 9 + .../20110427021659_add_indices_to_comments.rb | 9 + db/migrate/20110428182848_create_watchings.rb | 18 + ...0428225855_add_video_fields_to_channels.rb | 11 + .../20110513192617_add_fields_to_users.rb | 13 + .../20110528172838_create_failedlogins.rb | 15 + .../20111209111008_rename_twitters_table.rb | 9 + .../20111220200743_add_index_to_channels.rb | 11 + ...20111220205057_add_index_to_user_logins.rb | 9 + ...111222205615_add_index_to_headers_table.rb | 9 + db/migrate/20120209003458_create_windows.rb | 15 + .../20120213011639_add_html_to_window.rb | 9 + .../20120215111613_add_index_to_users.rb | 9 + ...0215111708_add_clearing_flag_to_channel.rb | 9 + .../20120220015055_add_col_to_windows.rb | 11 + ...0220031559_remove_plugin_id_from_window.rb | 9 + .../20120220035936_add_wtype_to_windows.rb | 9 + .../20120227002240_add_name_to_window.rb | 9 + ...20317011252_create_chart_window_details.rb | 14 + ...319001841_create_portlet_window_details.rb | 13 + .../20120321013341_add_type_to_window.rb | 9 + ...306_add_options_to_chart_window_details.rb | 9 + ...20331221037_add_private_flag_to_windows.rb | 9 + ...20120521003815_add_show_flag_to_windows.rb | 9 + ...20709152043_add_private_flag_to_plugins.rb | 9 + ...0716160028_create_plugin_window_details.rb | 14 + .../20120821145951_add_ranking_to_channel.rb | 9 + .../20120907024520_add_index_to_channel.rb | 8 + db/migrate/20130618221922_change_api_key.rb | 6 + .../20130621124211_change_api_key_limit.rb | 6 + .../20131203192610_add_indexes_to_portlets.rb | 7 + ...94235_add_index_to_chart_window_details.rb | 6 + ...03194541_add_persistence_index_to_users.rb | 6 + ...5328_add_index_to_plugin_window_details.rb | 6 + .../20131218181245_add_api_key_to_users.rb | 6 + ...218191938_add_index_on_api_keys_to_user.rb | 6 + .../20140121232049_create_daily_feeds.rb | 15 + ...2754_remove_timestamps_from_daily_feeds.rb | 12 + ...20140122223014_add_field_to_daily_feeds.rb | 6 + ...140130213435_remove_raw_data_from_feeds.rb | 6 + ...1645_change_twitter_accounts_twitter_id.rb | 6 + db/schema.rb | 345 +++++++- lib/api_keys.rb | 11 + lib/key_utilities.rb | 20 +- public/500.html | 11 +- ...k_API-f39bba3caddbf4af63e208b8552a98ac.jpg | Bin 0 -> 26303 bytes ..._Logo-3139b15204b5af565fca3a5f342ef19c.png | Bin 0 -> 9258 bytes public/assets/ThingSpeak_Logo.png | Bin 0 -> 9258 bytes ...cation-1369f895a819b8f9cb3fdb98c04ee8e0.js | 6 + ...ion-1369f895a819b8f9cb3fdb98c04ee8e0.js.gz | Bin 0 -> 70526 bytes ...ation-29a45c9a6c794a4499e57fc0bb19c87f.css | 99 +++ ...on-29a45c9a6c794a4499e57fc0bb19c87f.css.gz | Bin 0 -> 10735 bytes ...ation-6b141b11b3826cf03d9c3fa5cc7fd6dd.css | 103 +++ ...on-6b141b11b3826cf03d9c3fa5cc7fd6dd.css.gz | Bin 0 -> 27351 bytes ...ation-7190531a22e0dae7db2fbb715e0d2fe5.css | 99 +++ ...on-7190531a22e0dae7db2fbb715e0d2fe5.css.gz | Bin 0 -> 10581 bytes ...cation-9a8391e7623b717b5e3815c9802c8c19.js | 6 + ...ion-9a8391e7623b717b5e3815c9802c8c19.js.gz | Bin 0 -> 70523 bytes ...ation-c2ba8a3fdde171077398b657e1ae7906.css | 103 +++ ...on-c2ba8a3fdde171077398b657e1ae7906.css.gz | Bin 0 -> 27232 bytes ...ation-cef60c60a5550b2bf95cf2102b747be8.css | 99 +++ ...on-cef60c60a5550b2bf95cf2102b747be8.css.gz | Bin 0 -> 10692 bytes .../eye-b67d3d940541ae7d0b469ed20ee92fe3.png | Bin 0 -> 3294 bytes public/assets/eye.png | Bin 0 -> 3294 bytes ..._gray-319110a59d1d75cad2d8f29af88fdb23.gif | Bin 0 -> 983 bytes ...g_red-16607fd54284010c4e95d5e9a3935b40.gif | Bin 0 -> 987 bytes ...front-b28e4f9d550ff0101a0140b1fb1ec1da.png | Bin 0 -> 17717 bytes ...on_24-40aef0eb9d6824f7538c1056c90a2156.png | Bin 0 -> 618 bytes ...n_rss-3ce0d86e00a9e937993988e73720950e.gif | Bin 0 -> 1008 bytes ...foBox-54072dd9794a709a9fee5ab80d4be545.png | Bin 0 -> 837 bytes ...ocked-84572b6d8c7a390e424483b16f28410f.png | Bin 0 -> 1882 bytes ...ic_32-2bcfb892862a4396e3a5593a5e1df202.png | Bin 0 -> 4788 bytes ...ocked-226c08041c55d88ecf7898dffe6568aa.png | Bin 0 -> 1652 bytes ...elete-9a7fbc7ba573f4ab735f66bc17466a84.png | Bin 0 -> 715 bytes public/assets/images/eye.png | Bin 0 -> 3294 bytes ...40x40-7cff5779324125bfa623755a21cb7d08.png | Bin 0 -> 260 bytes ...40x40-e3476d26e53f4b2bdba1cbd4216bd169.png | Bin 0 -> 251 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 251 bytes ...0x100-b4d9562e67d66d83845d2edeaae222d7.png | Bin 0 -> 178 bytes ...1x400-4d37c970a424e84d47dd48ae788eaef8.png | Bin 0 -> 104 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 104 bytes ...1x400-657936ddb303bcc8c34554da5279debe.png | Bin 0 -> 125 bytes ...1x400-5f18db79610dfa0b148ff6335bbc42cb.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes ...0x100-93fadea558da2231315ae756b3be6bbf.png | Bin 0 -> 3762 bytes ...1x100-4310274c0febae96f7f3d2f54b0a4f42.png | Bin 0 -> 90 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 90 bytes ...1x100-21008ee33c710d7e484d7f88f2c7dc21.png | Bin 0 -> 129 bytes ...6x240-d83eeaaf84f04ca2c5d6a684bc7629af.png | Bin 0 -> 4369 bytes ...6x240-65e412c112f4e7ee270afb71005fd17d.png | Bin 0 -> 4369 bytes ...6x240-8b462cb27e07227bac8bd0020d9933e4.png | Bin 0 -> 4369 bytes .../assets/images/ui-icons_ef8c08_256x240.png | Bin 0 -> 4369 bytes ...6x240-3d95bb913fb70688654b00e8ed1eb247.png | Bin 0 -> 4369 bytes ...6x240-2066cf4b1373355dbf4a2031099e1a04.png | Bin 0 -> 4369 bytes .../assets/images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes ...fest-27c2ec8d97bd8487cae01bba17cdddb9.json | 1 + ...pdate-526a896242134f12bf2882dfad48fe24.png | Bin 0 -> 13437 bytes ...rails-6a9a73b3eeba7d35c79c3de6fc98b6f1.png | Bin 0 -> 6646 bytes ...ading-4c8cafd8b85355f46eedb553ece6a663.png | Bin 0 -> 565 bytes ..._logo-2cc4b27d8115a3efcf38c0c6539d06fe.png | Bin 0 -> 15370 bytes ..._main-f2114a6f96a027de3c3b39aefd11a34b.png | Bin 0 -> 132931 bytes ..._logo-95d6e7cb7f17bbbc1526407176244ca8.png | Bin 0 -> 1609 bytes public/favicon.ico | Bin 0 -> 1150 bytes public/resque/favicon.ico | Bin 0 -> 1150 bytes public/resque/idle.png | Bin 0 -> 661 bytes public/resque/jquery-1.3.2.min.js | 19 + public/resque/jquery.relatize_date.js | 95 +++ public/resque/poll.png | Bin 0 -> 627 bytes public/resque/ranger.js | 78 ++ public/resque/reset.css | 44 ++ public/resque/style.css | 91 +++ public/resque/working.png | Bin 0 -> 792 bytes public/robots.txt | 15 +- spec/controllers/apps_controller_spec.rb | 5 + spec/controllers/channels_controller_spec.rb | 113 +++ spec/controllers/charts_controller_spec.rb | 19 + spec/controllers/comments_controller_spec.rb | 5 + spec/controllers/feed_controller_spec.rb | 59 ++ spec/controllers/maps_controller_spec.rb | 5 + spec/controllers/pipes_controller_spec.rb | 5 + spec/controllers/plugins_controller_spec.rb | 20 + spec/controllers/tags_controller_spec.rb | 5 + .../user_sessions_controller_spec.rb | 44 ++ spec/controllers/users_controller_spec.rb | 80 ++ spec/controllers/windows_controller_spec.rb | 136 ++++ spec/factories/api_key.rb | 6 + spec/factories/channel.rb | 11 + spec/factories/chart_window.rb | 10 + spec/factories/chart_window_details.rb | 20 + spec/factories/feed.rb | 12 + spec/factories/plugin.rb | 11 + spec/factories/plugin_window.rb | 11 + spec/factories/plugin_window_details.rb | 19 + spec/factories/portlet_window_details.rb | 17 + spec/factories/tag.rb | 5 + spec/factories/user.rb | 13 + spec/factories/user_sessions.rb | 4 + spec/factories/windows.rb | 29 + spec/helpers/feed_helper_spec.rb | 113 ++- spec/models/api_key_spec.rb | 27 +- spec/models/channel_spec.rb | 127 +++ spec/models/comment_spec.rb | 21 + spec/models/failedlogin_spec.rb | 17 + spec/models/header_spec.rb | 18 + spec/models/pipe_spec.rb | 20 + spec/models/plugin_spec.rb | 134 ++++ spec/models/plugin_window_detail_spec.rb | 54 ++ spec/models/tag_spec.rb | 15 + spec/models/tagging_spec.rb | 16 + spec/models/twitter_account_spec.rb | 22 + spec/models/watching_spec.rb | 16 + spec/models/window_spec.rb | 29 + spec/routing/routing_spec.rb | 12 + spec/spec_helper.rb | 61 ++ spec/support/matchers/simple_matcher.rb | 21 + test/fixtures/daily_feeds.yml | 25 + test/unit/daily_feed_test.rb | 19 + 384 files changed, 14690 insertions(+), 2242 deletions(-) create mode 100644 .ruby-gemset create mode 100644 .ruby-version create mode 100644 app/assets/images/GitHub_ThingSpeak_API.jpg create mode 100644 app/assets/images/eye.png create mode 100644 app/assets/images/flag_gray.gif create mode 100644 app/assets/images/flag_red.gif create mode 100644 app/assets/images/front.png create mode 100644 app/assets/images/icon_location_24.png create mode 100644 app/assets/images/icon_rss.gif create mode 100755 app/assets/images/icons/InfoBox.png create mode 100644 app/assets/images/icons/Locked.png create mode 100644 app/assets/images/icons/Public_32.png create mode 100644 app/assets/images/icons/Unlocked.png create mode 100755 app/assets/images/icons/delete.png create mode 100644 app/assets/images/my_house_status_update.png create mode 100644 app/assets/images/rails.png create mode 100644 app/assets/images/shading.png create mode 100644 app/assets/images/social_sensor_network_logo.png create mode 100644 app/assets/images/social_sensor_network_main.png create mode 100644 app/assets/images/thingspeak_logo.png create mode 100644 app/assets/javascripts/channels.js create mode 100644 app/assets/javascripts/custom.js create mode 100644 app/assets/javascripts/docs.js create mode 100644 app/assets/javascripts/exporting.js create mode 100644 app/assets/javascripts/highcharts.js create mode 100644 app/assets/javascripts/jquery.cookie.js create mode 100644 app/assets/javascripts/jquery.shorten.min.js create mode 100644 app/assets/javascripts/nested_form.js create mode 100644 app/assets/javascripts/noapi.js create mode 100644 app/assets/javascripts/prettify.js create mode 100644 app/assets/javascripts/rest.js create mode 100644 app/assets/javascripts/sidebar.js create mode 100644 app/assets/javascripts/tabby.js create mode 100644 app/assets/javascripts/timeago.min.js create mode 100644 app/assets/javascripts/updateChart.js create mode 100644 app/assets/javascripts/validate.min.js create mode 100644 app/assets/stylesheets/.gitkeep create mode 100644 app/assets/stylesheets/bootstrap_custom.min.css create mode 100644 app/assets/stylesheets/bootstrap_overrides.css create mode 100755 app/assets/stylesheets/images/ui-bg_diagonals-thick_18_b81900_40x40.png create mode 100755 app/assets/stylesheets/images/ui-bg_diagonals-thick_20_666666_40x40.png create mode 100755 app/assets/stylesheets/images/ui-bg_flat_10_000000_40x100.png create mode 100755 app/assets/stylesheets/images/ui-bg_glass_100_f6f6f6_1x400.png create mode 100755 app/assets/stylesheets/images/ui-bg_glass_100_fdf5ce_1x400.png create mode 100755 app/assets/stylesheets/images/ui-bg_glass_65_ffffff_1x400.png create mode 100755 app/assets/stylesheets/images/ui-bg_gloss-wave_35_f6a828_500x100.png create mode 100755 app/assets/stylesheets/images/ui-bg_highlight-soft_100_eeeeee_1x100.png create mode 100755 app/assets/stylesheets/images/ui-bg_highlight-soft_75_ffe45c_1x100.png create mode 100755 app/assets/stylesheets/images/ui-icons_222222_256x240.png create mode 100755 app/assets/stylesheets/images/ui-icons_228ef1_256x240.png create mode 100755 app/assets/stylesheets/images/ui-icons_ef8c08_256x240.png create mode 100755 app/assets/stylesheets/images/ui-icons_ffd27a_256x240.png create mode 100755 app/assets/stylesheets/images/ui-icons_ffffff_256x240.png create mode 100755 app/assets/stylesheets/jquery-ui-1.8.24.custom.css create mode 100644 app/assets/stylesheets/prettify.css create mode 100644 app/assets/stylesheets/sidebar.css create mode 100644 app/assets/stylesheets/status.css create mode 100644 app/controllers/apps_controller.rb create mode 100644 app/controllers/comments_controller.rb create mode 100644 app/controllers/cors_controller.rb create mode 100644 app/controllers/docs_controller.rb create mode 100644 app/controllers/maps_controller.rb create mode 100644 app/controllers/pipes_controller.rb create mode 100644 app/controllers/plugins_controller.rb create mode 100644 app/controllers/tags_controller.rb create mode 100644 app/controllers/windows_controller.rb create mode 100644 app/helpers/apps_helper.rb create mode 100644 app/helpers/channels_helper.rb create mode 100644 app/helpers/comments_helper.rb create mode 100644 app/helpers/maps_helper.rb create mode 100644 app/helpers/pipes_helper.rb create mode 100644 app/helpers/plugins_helper.rb create mode 100644 app/jobs/clear_channel_job.rb create mode 100644 app/models/chart.rb create mode 100644 app/models/chart_window.rb create mode 100644 app/models/chart_window_detail.rb create mode 100644 app/models/comment.rb create mode 100644 app/models/daily_feed.rb create mode 100644 app/models/error_response.rb create mode 100644 app/models/failedlogin.rb create mode 100644 app/models/feed_factory.rb create mode 100644 app/models/header.rb create mode 100644 app/models/pipe.rb create mode 100644 app/models/plugin.rb create mode 100644 app/models/plugin_window.rb create mode 100644 app/models/plugin_window_detail.rb create mode 100644 app/models/portlet_window.rb create mode 100644 app/models/portlet_window_detail.rb create mode 100644 app/models/tag.rb create mode 100644 app/models/tagging.rb create mode 100644 app/models/twitter_account.rb create mode 100644 app/models/watching.rb create mode 100644 app/models/window.rb create mode 100644 app/views/api_keys/_index.html.erb create mode 100644 app/views/apps/index.html.erb create mode 100644 app/views/channels/_addportlet.html.erb create mode 100644 app/views/channels/_channelinfo.html.erb create mode 100644 app/views/channels/_devinfo.html.erb create mode 100644 app/views/channels/_edit.html.erb create mode 100644 app/views/channels/_import.html.erb create mode 100644 app/views/channels/_list.html.erb create mode 100644 app/views/channels/_private_show.html.erb create mode 100644 app/views/channels/_public_show.html.erb create mode 100644 app/views/channels/_socialbuttons.html.erb create mode 100644 app/views/channels/private_show.html.erb create mode 100644 app/views/channels/public.html.erb create mode 100644 app/views/channels/public_show.html.erb create mode 100644 app/views/channels/social_feed.html.erb create mode 100644 app/views/channels/social_new.html.erb create mode 100644 app/views/channels/social_show.html.erb create mode 100644 app/views/channels/watched.html.erb create mode 100644 app/views/charts/_display.html.erb create mode 100644 app/views/comments/_comment.html.erb create mode 100644 app/views/docs/_response.html.erb create mode 100644 app/views/docs/index.html.erb create mode 100644 app/views/feed/debug.html.erb create mode 100644 app/views/headers/_fields.html.erb create mode 100644 app/views/layouts/_footer.html.erb create mode 100644 app/views/layouts/_ga.html.erb create mode 100644 app/views/maps/channel_show.html.erb create mode 100644 app/views/maps/show.html.erb create mode 100644 app/views/pages/about.html.erb create mode 100644 app/views/pages/export.html.erb create mode 100644 app/views/pages/features.html.erb create mode 100644 app/views/pages/headers.html.erb create mode 100644 app/views/pages/social_home.html.erb create mode 100644 app/views/pipes/index.html.erb create mode 100644 app/views/pipes/new.html.erb create mode 100644 app/views/plugins/_plugins.html.erb create mode 100644 app/views/plugins/default.css create mode 100644 app/views/plugins/default.html create mode 100644 app/views/plugins/default.js create mode 100644 app/views/plugins/edit.html.erb create mode 100644 app/views/plugins/index.html.erb create mode 100644 app/views/plugins/show.html.erb create mode 100644 app/views/status/_recent.html.erb create mode 100644 app/views/tags/show.html.erb create mode 100644 app/views/users/edit_profile.html.erb create mode 100644 app/views/users/list_channels.html.erb create mode 100644 app/views/users/profile.html.erb create mode 100644 app/views/windows/_hidden_windows.html.erb create mode 100644 autotest/discover.rb create mode 100644 config/database.yml.local create mode 100644 config/initializers/timestamp_json_override.rb create mode 100644 db/migrate/20101111054358_create_users.rb create mode 100644 db/migrate/20101116224140_create_api_keys.rb create mode 100644 db/migrate/20101116225014_add_indexes_to_api_key.rb create mode 100644 db/migrate/20101117005031_remove_feed_id_from_api_key.rb create mode 100644 db/migrate/20101117211040_create_feeds.rb create mode 100644 db/migrate/20101117211209_add_index_to_feeds.rb create mode 100644 db/migrate/20101118061100_add_time_zone_to_user.rb create mode 100644 db/migrate/20101119231040_add_entry_id_to_feeds.rb create mode 100644 db/migrate/20101123073857_add_note_to_api_keys.rb create mode 100644 db/migrate/20101207175152_change_feed_data_to_fields.rb create mode 100644 db/migrate/20101210151518_add_status_to_feeds.rb create mode 100644 db/migrate/20101217193433_add_field_options_to_channels.rb create mode 100644 db/migrate/20101218173400_create_tags.rb create mode 100644 db/migrate/20101218174125_create_taggings.rb create mode 100644 db/migrate/20110119170853_add_geolocation_to_feed.rb create mode 100644 db/migrate/20110126140659_create_twitters.rb create mode 100644 db/migrate/20110126144150_add_api_key_to_twitters.rb create mode 100644 db/migrate/20110217135144_create_headers.rb create mode 100644 db/migrate/20110225042321_create_plugins.rb create mode 100644 db/migrate/20110227025236_change_feed_fields_to_strings.rb create mode 100644 db/migrate/20110227025649_change_channel_fields_to_strings.rb create mode 100644 db/migrate/20110227211312_add_created_at_index_to_feeds.rb create mode 100644 db/migrate/20110227221002_add_double_index_to_feeds.rb create mode 100644 db/migrate/20110329204643_add_channel_id_entry_id_index_to_feeds.rb create mode 100644 db/migrate/20110405211741_create_pipes.rb create mode 100644 db/migrate/20110406220648_add_fields_to_pipes.rb create mode 100644 db/migrate/20110407034539_add_social_to_channels.rb create mode 100644 db/migrate/20110409071450_add_location_to_feeds.rb create mode 100644 db/migrate/20110409221058_add_status_to_channels.rb create mode 100644 db/migrate/20110419173839_add_url_to_channel.rb create mode 100644 db/migrate/20110425145717_create_comments.rb create mode 100644 db/migrate/20110427021512_add_channel_id_to_comments.rb create mode 100644 db/migrate/20110427021659_add_indices_to_comments.rb create mode 100644 db/migrate/20110428182848_create_watchings.rb create mode 100644 db/migrate/20110428225855_add_video_fields_to_channels.rb create mode 100644 db/migrate/20110513192617_add_fields_to_users.rb create mode 100644 db/migrate/20110528172838_create_failedlogins.rb create mode 100644 db/migrate/20111209111008_rename_twitters_table.rb create mode 100644 db/migrate/20111220200743_add_index_to_channels.rb create mode 100644 db/migrate/20111220205057_add_index_to_user_logins.rb create mode 100644 db/migrate/20111222205615_add_index_to_headers_table.rb create mode 100644 db/migrate/20120209003458_create_windows.rb create mode 100644 db/migrate/20120213011639_add_html_to_window.rb create mode 100644 db/migrate/20120215111613_add_index_to_users.rb create mode 100644 db/migrate/20120215111708_add_clearing_flag_to_channel.rb create mode 100644 db/migrate/20120220015055_add_col_to_windows.rb create mode 100644 db/migrate/20120220031559_remove_plugin_id_from_window.rb create mode 100644 db/migrate/20120220035936_add_wtype_to_windows.rb create mode 100644 db/migrate/20120227002240_add_name_to_window.rb create mode 100644 db/migrate/20120317011252_create_chart_window_details.rb create mode 100644 db/migrate/20120319001841_create_portlet_window_details.rb create mode 100644 db/migrate/20120321013341_add_type_to_window.rb create mode 100644 db/migrate/20120323173306_add_options_to_chart_window_details.rb create mode 100644 db/migrate/20120331221037_add_private_flag_to_windows.rb create mode 100644 db/migrate/20120521003815_add_show_flag_to_windows.rb create mode 100644 db/migrate/20120709152043_add_private_flag_to_plugins.rb create mode 100644 db/migrate/20120716160028_create_plugin_window_details.rb create mode 100644 db/migrate/20120821145951_add_ranking_to_channel.rb create mode 100644 db/migrate/20120907024520_add_index_to_channel.rb create mode 100644 db/migrate/20130618221922_change_api_key.rb create mode 100644 db/migrate/20130621124211_change_api_key_limit.rb create mode 100644 db/migrate/20131203192610_add_indexes_to_portlets.rb create mode 100644 db/migrate/20131203194235_add_index_to_chart_window_details.rb create mode 100644 db/migrate/20131203194541_add_persistence_index_to_users.rb create mode 100644 db/migrate/20131203195328_add_index_to_plugin_window_details.rb create mode 100644 db/migrate/20131218181245_add_api_key_to_users.rb create mode 100644 db/migrate/20131218191938_add_index_on_api_keys_to_user.rb create mode 100644 db/migrate/20140121232049_create_daily_feeds.rb create mode 100644 db/migrate/20140122222754_remove_timestamps_from_daily_feeds.rb create mode 100644 db/migrate/20140122223014_add_field_to_daily_feeds.rb create mode 100644 db/migrate/20140130213435_remove_raw_data_from_feeds.rb create mode 100644 db/migrate/20140203191645_change_twitter_accounts_twitter_id.rb create mode 100644 lib/api_keys.rb create mode 100644 public/assets/GitHub_ThingSpeak_API-f39bba3caddbf4af63e208b8552a98ac.jpg create mode 100644 public/assets/ThingSpeak_Logo-3139b15204b5af565fca3a5f342ef19c.png create mode 100644 public/assets/ThingSpeak_Logo.png create mode 100644 public/assets/application-1369f895a819b8f9cb3fdb98c04ee8e0.js create mode 100644 public/assets/application-1369f895a819b8f9cb3fdb98c04ee8e0.js.gz create mode 100644 public/assets/application-29a45c9a6c794a4499e57fc0bb19c87f.css create mode 100644 public/assets/application-29a45c9a6c794a4499e57fc0bb19c87f.css.gz create mode 100644 public/assets/application-6b141b11b3826cf03d9c3fa5cc7fd6dd.css create mode 100644 public/assets/application-6b141b11b3826cf03d9c3fa5cc7fd6dd.css.gz create mode 100644 public/assets/application-7190531a22e0dae7db2fbb715e0d2fe5.css create mode 100644 public/assets/application-7190531a22e0dae7db2fbb715e0d2fe5.css.gz create mode 100644 public/assets/application-9a8391e7623b717b5e3815c9802c8c19.js create mode 100644 public/assets/application-9a8391e7623b717b5e3815c9802c8c19.js.gz create mode 100644 public/assets/application-c2ba8a3fdde171077398b657e1ae7906.css create mode 100644 public/assets/application-c2ba8a3fdde171077398b657e1ae7906.css.gz create mode 100644 public/assets/application-cef60c60a5550b2bf95cf2102b747be8.css create mode 100644 public/assets/application-cef60c60a5550b2bf95cf2102b747be8.css.gz create mode 100644 public/assets/eye-b67d3d940541ae7d0b469ed20ee92fe3.png create mode 100644 public/assets/eye.png create mode 100644 public/assets/flag_gray-319110a59d1d75cad2d8f29af88fdb23.gif create mode 100644 public/assets/flag_red-16607fd54284010c4e95d5e9a3935b40.gif create mode 100644 public/assets/front-b28e4f9d550ff0101a0140b1fb1ec1da.png create mode 100644 public/assets/icon_location_24-40aef0eb9d6824f7538c1056c90a2156.png create mode 100644 public/assets/icon_rss-3ce0d86e00a9e937993988e73720950e.gif create mode 100755 public/assets/icons/InfoBox-54072dd9794a709a9fee5ab80d4be545.png create mode 100644 public/assets/icons/Locked-84572b6d8c7a390e424483b16f28410f.png create mode 100644 public/assets/icons/Public_32-2bcfb892862a4396e3a5593a5e1df202.png create mode 100644 public/assets/icons/Unlocked-226c08041c55d88ecf7898dffe6568aa.png create mode 100755 public/assets/icons/delete-9a7fbc7ba573f4ab735f66bc17466a84.png create mode 100644 public/assets/images/eye.png create mode 100755 public/assets/images/ui-bg_diagonals-thick_18_b81900_40x40-7cff5779324125bfa623755a21cb7d08.png create mode 100755 public/assets/images/ui-bg_diagonals-thick_20_666666_40x40-e3476d26e53f4b2bdba1cbd4216bd169.png create mode 100644 public/assets/images/ui-bg_diagonals-thick_20_666666_40x40.png create mode 100755 public/assets/images/ui-bg_flat_10_000000_40x100-b4d9562e67d66d83845d2edeaae222d7.png create mode 100755 public/assets/images/ui-bg_glass_100_f6f6f6_1x400-4d37c970a424e84d47dd48ae788eaef8.png create mode 100644 public/assets/images/ui-bg_glass_100_f6f6f6_1x400.png create mode 100755 public/assets/images/ui-bg_glass_100_fdf5ce_1x400-657936ddb303bcc8c34554da5279debe.png create mode 100755 public/assets/images/ui-bg_glass_65_ffffff_1x400-5f18db79610dfa0b148ff6335bbc42cb.png create mode 100644 public/assets/images/ui-bg_glass_65_ffffff_1x400.png create mode 100755 public/assets/images/ui-bg_gloss-wave_35_f6a828_500x100-93fadea558da2231315ae756b3be6bbf.png create mode 100755 public/assets/images/ui-bg_highlight-soft_100_eeeeee_1x100-4310274c0febae96f7f3d2f54b0a4f42.png create mode 100644 public/assets/images/ui-bg_highlight-soft_100_eeeeee_1x100.png create mode 100755 public/assets/images/ui-bg_highlight-soft_75_ffe45c_1x100-21008ee33c710d7e484d7f88f2c7dc21.png create mode 100755 public/assets/images/ui-icons_222222_256x240-d83eeaaf84f04ca2c5d6a684bc7629af.png create mode 100755 public/assets/images/ui-icons_228ef1_256x240-65e412c112f4e7ee270afb71005fd17d.png create mode 100755 public/assets/images/ui-icons_ef8c08_256x240-8b462cb27e07227bac8bd0020d9933e4.png create mode 100644 public/assets/images/ui-icons_ef8c08_256x240.png create mode 100755 public/assets/images/ui-icons_ffd27a_256x240-3d95bb913fb70688654b00e8ed1eb247.png create mode 100755 public/assets/images/ui-icons_ffffff_256x240-2066cf4b1373355dbf4a2031099e1a04.png create mode 100644 public/assets/images/ui-icons_ffffff_256x240.png create mode 100644 public/assets/manifest-27c2ec8d97bd8487cae01bba17cdddb9.json create mode 100644 public/assets/my_house_status_update-526a896242134f12bf2882dfad48fe24.png create mode 100644 public/assets/rails-6a9a73b3eeba7d35c79c3de6fc98b6f1.png create mode 100644 public/assets/shading-4c8cafd8b85355f46eedb553ece6a663.png create mode 100644 public/assets/social_sensor_network_logo-2cc4b27d8115a3efcf38c0c6539d06fe.png create mode 100644 public/assets/social_sensor_network_main-f2114a6f96a027de3c3b39aefd11a34b.png create mode 100644 public/assets/thingspeak_logo-95d6e7cb7f17bbbc1526407176244ca8.png create mode 100644 public/resque/favicon.ico create mode 100755 public/resque/idle.png create mode 100644 public/resque/jquery-1.3.2.min.js create mode 100644 public/resque/jquery.relatize_date.js create mode 100755 public/resque/poll.png create mode 100644 public/resque/ranger.js create mode 100644 public/resque/reset.css create mode 100644 public/resque/style.css create mode 100755 public/resque/working.png create mode 100644 spec/controllers/apps_controller_spec.rb create mode 100644 spec/controllers/channels_controller_spec.rb create mode 100644 spec/controllers/comments_controller_spec.rb create mode 100644 spec/controllers/maps_controller_spec.rb create mode 100644 spec/controllers/pipes_controller_spec.rb create mode 100644 spec/controllers/plugins_controller_spec.rb create mode 100644 spec/controllers/tags_controller_spec.rb create mode 100644 spec/controllers/user_sessions_controller_spec.rb create mode 100644 spec/controllers/users_controller_spec.rb create mode 100644 spec/controllers/windows_controller_spec.rb create mode 100644 spec/factories/api_key.rb create mode 100644 spec/factories/channel.rb create mode 100644 spec/factories/chart_window.rb create mode 100644 spec/factories/chart_window_details.rb create mode 100644 spec/factories/feed.rb create mode 100644 spec/factories/plugin.rb create mode 100644 spec/factories/plugin_window.rb create mode 100644 spec/factories/plugin_window_details.rb create mode 100644 spec/factories/portlet_window_details.rb create mode 100644 spec/factories/tag.rb create mode 100644 spec/factories/user.rb create mode 100644 spec/factories/user_sessions.rb create mode 100644 spec/factories/windows.rb create mode 100644 spec/models/channel_spec.rb create mode 100644 spec/models/comment_spec.rb create mode 100644 spec/models/failedlogin_spec.rb create mode 100644 spec/models/header_spec.rb create mode 100644 spec/models/pipe_spec.rb create mode 100644 spec/models/plugin_spec.rb create mode 100644 spec/models/plugin_window_detail_spec.rb create mode 100644 spec/models/tag_spec.rb create mode 100644 spec/models/tagging_spec.rb create mode 100644 spec/models/twitter_account_spec.rb create mode 100644 spec/models/watching_spec.rb create mode 100644 spec/models/window_spec.rb create mode 100644 spec/routing/routing_spec.rb create mode 100644 spec/spec_helper.rb create mode 100644 spec/support/matchers/simple_matcher.rb create mode 100644 test/fixtures/daily_feeds.yml create mode 100644 test/unit/daily_feed_test.rb diff --git a/.ruby-gemset b/.ruby-gemset new file mode 100644 index 0000000..8ffaef2 --- /dev/null +++ b/.ruby-gemset @@ -0,0 +1,2 @@ +thingspeak + diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..c6dcdce --- /dev/null +++ b/.ruby-version @@ -0,0 +1,2 @@ +ruby-2.1.0 + diff --git a/Gemfile b/Gemfile index c191e62..a364c6a 100644 --- a/Gemfile +++ b/Gemfile @@ -1,18 +1,61 @@ source 'http://rubygems.org' -gem 'rails', '3.2.1' +gem 'rails', '4.0.2' +gem 'jquery-rails', '3.0.4' +gem 'rails_autolink' gem 'mysql2' gem 'authlogic' -gem 'jquery-rails', '2.0.1' +gem 'twitter_oauth', git: 'git://github.com/moomerman/twitter_oauth.git' +gem 'therubyracer' +gem 'exception_notification' +gem 'nested_form' +gem 'dalli' +gem 'kgio' +gem 'will_paginate', '~> 3.0.pre2' +gem 'nokogiri' +gem 'acts_as_tree' +gem 'acts_as_list' +gem 'gravatarify' +gem 'dynamic_form' +gem 'geokit' +gem 'redis' +gem 'resque-scheduler', '2.3.1', :require => 'resque_scheduler' +gem 'resque-timeout' +gem 'daemons' +#gem 'db2fog' (not compatible with Rails 4, see https://github.com/hakanensari/db2fog for Rails 4 version) +gem 'simplificator-rwebthumb', :git => "git://github.com/simplificator/rwebthumb.git" +gem 'tweetstream' +gem 'capistrano', '~> 2.15.4' +gem 'rack-utf8_sanitizer' +gem 'newrelic_rpm' +gem 'actionpack-xml_parser' +# To use debugger +# gem 'ruby-debug' -# Bundle gems for the local environment. Make sure to -# put test-only gems in this group so their generators -# and rake tasks are available in development mode: -group :development, :test do - gem 'rspec', '>= 2.0.0.beta.20' - gem 'rspec-rails', '>= 2.0.0.beta.20' - gem 'autotest' - gem 'webrat' - gem 'annotate' +# assets +gem 'sass-rails', " ~> 4.0" +gem 'coffee-rails', " ~> 4.0" +gem 'uglifier' + +group :development do + gem 'annotate', '~> 2.6.1' + gem 'quiet_assets' + gem 'thin' + gem 'i18n-tasks', '~> 0.2.10' end + +group :test do + gem 'sqlite3-ruby', '1.3.3', :require => 'sqlite3' + gem 'rspec-rails', '~> 2.14.1' + gem 'spork' + gem 'factory_girl_rails' + gem 'webrat' + gem 'faker' + gem 'json_spec' + gem 'autotest' + gem 'autotest-rails' + gem 'ZenTest' + gem 'database_cleaner', '~> 1.2.0' +end + diff --git a/Gemfile.lock b/Gemfile.lock index caa6abe..9902680 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,123 +1,333 @@ +GIT + remote: git://github.com/moomerman/twitter_oauth.git + revision: 04e6bbfe635a376cae342d234214cdab864fe797 + specs: + twitter_oauth (0.4.94) + json (>= 1.8.0) + mime-types (>= 1.16) + oauth (>= 0.4.7) + +GIT + remote: git://github.com/simplificator/rwebthumb.git + revision: dbd96a62787201f7bf901c39c8df003a22b45ec9 + specs: + simplificator-rwebthumb (0.3.4) + GEM remote: http://rubygems.org/ specs: - ZenTest (4.6.2) - actionmailer (3.2.1) - actionpack (= 3.2.1) - mail (~> 2.4.0) - actionpack (3.2.1) - activemodel (= 3.2.1) - activesupport (= 3.2.1) - builder (~> 3.0.0) + ZenTest (4.9.5) + actionmailer (4.0.2) + actionpack (= 4.0.2) + mail (~> 2.5.4) + actionpack (4.0.2) + activesupport (= 4.0.2) + builder (~> 3.1.0) erubis (~> 2.7.0) - journey (~> 1.0.1) - rack (~> 1.4.0) - rack-cache (~> 1.1) - rack-test (~> 0.6.1) - sprockets (~> 2.1.2) - activemodel (3.2.1) - activesupport (= 3.2.1) - builder (~> 3.0.0) - activerecord (3.2.1) - activemodel (= 3.2.1) - activesupport (= 3.2.1) - arel (~> 3.0.0) - tzinfo (~> 0.3.29) - activeresource (3.2.1) - activemodel (= 3.2.1) - activesupport (= 3.2.1) - activesupport (3.2.1) - i18n (~> 0.6) - multi_json (~> 1.0) - annotate (2.4.0) - arel (3.0.0) - authlogic (3.1.0) - activerecord (>= 3.0.7) - activerecord (>= 3.0.7) + rack (~> 1.5.2) + rack-test (~> 0.6.2) + actionpack-xml_parser (1.0.1) + actionpack (>= 4.0.0.rc1) + activemodel (4.0.2) + activesupport (= 4.0.2) + builder (~> 3.1.0) + activerecord (4.0.2) + activemodel (= 4.0.2) + activerecord-deprecated_finders (~> 1.0.2) + activesupport (= 4.0.2) + arel (~> 4.0.0) + activerecord-deprecated_finders (1.0.3) + activesupport (4.0.2) + i18n (~> 0.6, >= 0.6.4) + minitest (~> 4.2) + multi_json (~> 1.3) + thread_safe (~> 0.1) + tzinfo (~> 0.3.37) + acts_as_list (0.3.0) + activerecord (>= 3.0) + acts_as_tree (1.5.0) + activerecord (>= 3.0.0) + addressable (2.3.5) + annotate (2.6.1) + activerecord (>= 2.3.0) + rake (>= 0.8.7) + arel (4.0.1) + atomic (1.1.14) + authlogic (3.3.0) + activerecord (>= 3.2) + activesupport (>= 3.2) autotest (4.4.6) ZenTest (>= 4.4.1) - builder (3.0.0) - diff-lcs (1.1.3) + autotest-rails (4.2.1) + ZenTest (~> 4.5) + builder (3.1.4) + capistrano (2.15.4) + highline + net-scp (>= 1.0.0) + net-sftp (>= 2.0.0) + net-ssh (>= 2.0.14) + net-ssh-gateway (>= 1.1.0) + coffee-rails (4.0.1) + coffee-script (>= 2.2.0) + railties (>= 4.0.0, < 5.0) + coffee-script (2.2.0) + coffee-script-source + execjs + coffee-script-source (1.6.3) + cookiejar (0.3.0) + daemons (1.1.9) + dalli (2.7.0) + database_cleaner (1.2.0) + diff-lcs (1.2.5) + dynamic_form (1.1.4) + easy_translate (0.4.0) + json + thread + thread_safe + em-http-request (1.1.2) + addressable (>= 2.3.4) + cookiejar + em-socksify (>= 0.3) + eventmachine (>= 1.0.3) + http_parser.rb (>= 0.6.0) + em-socksify (0.3.0) + eventmachine (>= 1.0.0.beta.4) + em-twitter (0.3.2) + eventmachine (~> 1.0) + http_parser.rb (~> 0.6) + simple_oauth (~> 0.2) erubis (2.7.0) - hike (1.2.1) - i18n (0.6.0) - journey (1.0.1) - jquery-rails (2.0.1) - railties (>= 3.2.0, < 5.0) - thor (~> 0.14) - json (1.6.5) - mail (2.4.1) - i18n (>= 0.4.0) + eventmachine (1.0.3) + exception_notification (4.0.1) + actionmailer (>= 3.0.4) + activesupport (>= 3.0.4) + execjs (2.0.2) + factory_girl (4.3.0) + activesupport (>= 3.0.0) + factory_girl_rails (4.3.0) + factory_girl (~> 4.3.0) + railties (>= 3.0.0) + faker (1.2.0) + i18n (~> 0.5) + faraday (0.8.9) + multipart-post (~> 1.2.0) + geokit (1.8.4) + multi_json (>= 1.3.2) + gravatarify (3.1.0) + highline (1.6.20) + hike (1.2.3) + http_parser.rb (0.6.0) + i18n (0.6.9) + i18n-tasks (0.2.18) + activesupport + easy_translate (>= 0.4.0) + erubis + highline + rake + term-ansicolor + terminal-table + jquery-rails (3.0.4) + railties (>= 3.0, < 5.0) + thor (>= 0.14, < 2.0) + json (1.8.1) + json_spec (1.1.1) + multi_json (~> 1.0) + rspec (~> 2.0) + kgio (2.8.1) + libv8 (3.16.14.3) + mail (2.5.4) mime-types (~> 1.16) treetop (~> 1.4.8) - mime-types (1.17.2) - multi_json (1.0.4) - mysql2 (0.3.11) - nokogiri (1.5.0) + mime-types (1.25.1) + mini_portile (0.5.2) + minitest (4.7.5) + mono_logger (1.1.0) + multi_json (1.8.4) + multipart-post (1.2.0) + mysql2 (0.3.14) + nested_form (0.3.2) + net-scp (1.1.2) + net-ssh (>= 2.6.5) + net-sftp (2.1.2) + net-ssh (>= 2.6.5) + net-ssh (2.7.0) + net-ssh-gateway (1.2.0) + net-ssh (>= 2.6.5) + newrelic_rpm (3.7.1.182) + nokogiri (1.6.1) + mini_portile (~> 0.5.0) + oauth (0.4.7) polyglot (0.3.3) - rack (1.4.1) - rack-cache (1.1) - rack (>= 0.4) - rack-ssl (1.3.2) + quiet_assets (1.0.2) + railties (>= 3.1, < 5.0) + rack (1.5.2) + rack-protection (1.5.2) rack - rack-test (0.6.1) + rack-test (0.6.2) rack (>= 1.0) - rails (3.2.1) - actionmailer (= 3.2.1) - actionpack (= 3.2.1) - activerecord (= 3.2.1) - activeresource (= 3.2.1) - activesupport (= 3.2.1) - bundler (~> 1.0) - railties (= 3.2.1) - railties (3.2.1) - actionpack (= 3.2.1) - activesupport (= 3.2.1) - rack-ssl (~> 1.3.2) + rack-utf8_sanitizer (1.1.0) + rack (~> 1.0) + rails (4.0.2) + actionmailer (= 4.0.2) + actionpack (= 4.0.2) + activerecord (= 4.0.2) + activesupport (= 4.0.2) + bundler (>= 1.3.0, < 2.0) + railties (= 4.0.2) + sprockets-rails (~> 2.0.0) + rails_autolink (1.1.5) + rails (> 3.1) + railties (4.0.2) + actionpack (= 4.0.2) + activesupport (= 4.0.2) rake (>= 0.8.7) - rdoc (~> 3.4) - thor (~> 0.14.6) - rake (0.9.2.2) - rdoc (3.12) - json (~> 1.4) - rspec (2.8.0) - rspec-core (~> 2.8.0) - rspec-expectations (~> 2.8.0) - rspec-mocks (~> 2.8.0) - rspec-core (2.8.0) - rspec-expectations (2.8.0) - diff-lcs (~> 1.1.2) - rspec-mocks (2.8.0) - rspec-rails (2.8.1) + thor (>= 0.18.1, < 2.0) + rake (10.1.1) + redis (3.0.7) + redis-namespace (1.4.1) + redis (~> 3.0.4) + ref (1.0.5) + resque (1.25.1) + mono_logger (~> 1.0) + multi_json (~> 1.0) + redis-namespace (~> 1.2) + sinatra (>= 0.9.2) + vegas (~> 0.1.2) + resque-scheduler (2.3.1) + redis (>= 3.0.0) + resque (~> 1.25) + rufus-scheduler (~> 2.0) + resque-timeout (1.0.0) + resque (~> 1.0) + rspec (2.14.1) + rspec-core (~> 2.14.0) + rspec-expectations (~> 2.14.0) + rspec-mocks (~> 2.14.0) + rspec-core (2.14.7) + rspec-expectations (2.14.4) + diff-lcs (>= 1.1.3, < 2.0) + rspec-mocks (2.14.4) + rspec-rails (2.14.1) actionpack (>= 3.0) + activemodel (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) - rspec (~> 2.8.0) - sprockets (2.1.2) + rspec-core (~> 2.14.0) + rspec-expectations (~> 2.14.0) + rspec-mocks (~> 2.14.0) + rufus-scheduler (2.0.24) + tzinfo (>= 0.3.22) + sass (3.2.13) + sass-rails (4.0.1) + railties (>= 4.0.0, < 5.0) + sass (>= 3.1.10) + sprockets-rails (~> 2.0.0) + simple_oauth (0.2.0) + sinatra (1.4.4) + rack (~> 1.4) + rack-protection (~> 1.4) + tilt (~> 1.3, >= 1.3.4) + spork (0.9.2) + sprockets (2.10.1) hike (~> 1.2) + multi_json (~> 1.0) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) - thor (0.14.6) - tilt (1.3.3) - treetop (1.4.10) + sprockets-rails (2.0.1) + actionpack (>= 3.0) + activesupport (>= 3.0) + sprockets (~> 2.8) + sqlite3 (1.3.8) + sqlite3-ruby (1.3.3) + sqlite3 (>= 1.3.3) + term-ansicolor (1.2.2) + tins (~> 0.8) + terminal-table (1.4.5) + therubyracer (0.12.0) + libv8 (~> 3.16.14.0) + ref + thin (1.6.1) + daemons (>= 1.0.9) + eventmachine (>= 1.0.0) + rack (>= 1.0.0) + thor (0.18.1) + thread (0.1.3) + thread_safe (0.1.3) + atomic + tilt (1.4.1) + tins (0.13.1) + treetop (1.4.15) polyglot polyglot (>= 0.3.1) - tzinfo (0.3.31) + tweetstream (2.6.0) + daemons (~> 1.1) + em-http-request (>= 1.1.1) + em-twitter (~> 0.3) + multi_json (~> 1.3) + twitter (~> 4.8) + twitter (4.8.1) + faraday (~> 0.8, < 0.10) + multi_json (~> 1.0) + simple_oauth (~> 0.2) + tzinfo (0.3.38) + uglifier (2.4.0) + execjs (>= 0.3.0) + json (>= 1.8.0) + vegas (0.1.11) + rack (>= 1.0.0) webrat (0.7.3) nokogiri (>= 1.2.0) rack (>= 1.0) rack-test (>= 0.5.3) + will_paginate (3.0.5) PLATFORMS ruby DEPENDENCIES - annotate + ZenTest + actionpack-xml_parser + acts_as_list + acts_as_tree + annotate (~> 2.6.1) authlogic autotest - jquery-rails (= 2.0.1) + autotest-rails + capistrano (~> 2.15.4) + coffee-rails (~> 4.0) + daemons + dalli + database_cleaner (~> 1.2.0) + dynamic_form + exception_notification + factory_girl_rails + faker + geokit + gravatarify + i18n-tasks (~> 0.2.10) + jquery-rails (= 3.0.4) + json_spec + kgio mysql2 - rails (= 3.2.1) - rspec (>= 2.0.0.beta.20) - rspec-rails (>= 2.0.0.beta.20) + nested_form + newrelic_rpm + nokogiri + quiet_assets + rack-utf8_sanitizer + rails (= 4.0.2) + rails_autolink + redis + resque-scheduler (= 2.3.1) + resque-timeout + rspec-rails (~> 2.14.1) + sass-rails (~> 4.0) + simplificator-rwebthumb! + spork + sqlite3-ruby (= 1.3.3) + therubyracer + thin + tweetstream + twitter_oauth! + uglifier webrat + will_paginate (~> 3.0.pre2) diff --git a/README.textile b/README.textile index a8b2b42..638c1cb 100644 --- a/README.textile +++ b/README.textile @@ -24,7 +24,7 @@ h3. Run The Application 1. Start the server: rails server -Your application will now be running at http://localhost:3000/ +Your application will now be running at http://localhost:3000/ h2. Changing Application Text @@ -36,14 +36,9 @@ h2. (Optional) Memcached Support and Rate Limiting Please see our "official memcached fork":https://github.com/llawlor/thingspeak -h2. (Optional) HTTP GET Support - -By default the application will accept channel updates via GET or POST. To only allow POSTs, change the value of GET_SUPPORT found in config/initializers/constants.rb - h2. (Optional) Email Setup Set your domain, user_name, and password in config/environment.rb -Also set your password reset link in app/controllers/mailer.controller.rb line 14 (and uncomment the line) h1. Installation on clean install of Ubuntu 10.10 and 11.10 @@ -57,8 +52,8 @@ Start Terminal bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer ) echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile - -source ~/.bash_profile + +source .bash_profile sudo aptitude install mysql-server libmysqlclient-dev libmysql-ruby Note: Enter and confirm a new MySQL password @@ -83,3 +78,4 @@ Start Terminal rake db:schema:load rails server + diff --git a/app/assets/images/GitHub_ThingSpeak_API.jpg b/app/assets/images/GitHub_ThingSpeak_API.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5d77b0ae0a94fee4a93f896f6af23891bd58b866 GIT binary patch literal 26303 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�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 O|F3ud&-JH&7XBC3qTdn# literal 0 HcmV?d00001 diff --git a/app/assets/images/eye.png b/app/assets/images/eye.png new file mode 100644 index 0000000000000000000000000000000000000000..209f8c2a8dd25c91552c70700832ab6240efb3af GIT binary patch literal 3294 zcmd5|WNAB$N3l%*yS9I_w(kNQ;Ag zVo-7~Y-se`muaC}Y2N}slVpG({RBgLr~pgREENFdKX+RL2 z_x3YhP0tWiFc>6AnxJV9w(uAODiTT_)o3yyYz!V6qAur=tf|1n6neA*3cKBS9+biJ zSq*7MR?Al@RHK|VoIj#EO;BEva5^UPNc7>nm|<3ZF_&nGGmu0$Ei88{do>`~zv^4V zTN3h<7_o6O`OoILTn)T|VnrNpId^pljPyVr5-DhC1zm)(B2-b6GfYXW`sWL}Vg)CO z1XN%Sn;KXoRYQqIrsPZ(8CAEsw7O+udscJIas`ytbfZ%6WT1 zwox5QG7iqHhzypZz+ORwUc6`%40!=TY>eM=ozo;mdPoYtEGy>{u?ZDHMZsJJL0Jq{ zb6N8;X3pq>jfrDplepd`0SP9m1CB}46w5Fy#oS9$EJ<4E)`GE1aICT_D7+>X%$z0o zup7^KC0SylzKAbQGtmGQ_wzA|3dXodkmUWOKfuL9`5?35)8K z#6<9=dfB{A2@z%w0U>(@+hqgS-+=YVZY*7JwLP+jifknT0BggsI5AfB8bT3Dw${p& zTxS`sstB+e8@xXY@y4juF`cGJmJYBjl%w#f#$r}bGiKcrW}i0e)@?^tZjjd|oboeK zjwES5VplI0#C@HKksL+0Fp)T48~P;Sc*jr_*8blM|JTB=Su&X{$ash_kDyBB zgow$t6_P|2$+(j_DveW6ZKav#7OUW8#a+ZB;igwmkh`t6+(EAnA&^CU>=_W*#EM)- zwPaLaLqrXyslX`otinyup&=qB?#CAg?H` zR&4zQq_eUC@C#+jf%ocK4&XNKI2f*^#W3^Y1@$CW_$-MNC7Cis^DNPHhs4U7RwcG^ z3M>h#1ad;h=`5fw^EGVEu13c8_qJXf2QBPup)RO3sWH!c>b%e7^4Iu;5P|q3vAF+R@&JNLW zE5wrRXZW^>FSdFT9By&O!CzX+QulQ{vuM`#le6#Xe_~Ga@Q$I|&o+KEb9me7H zndiR^9XP)I@WJsN%^OyHerE4acWv6a{6){6+=>NgFv&c9wmrUlr0>*Y+*4cUugZPt z-T25Gqo3^Ewe^k@r>Mrn`FFm0>B#8l&KXB;`S80RroZKXTi%jBdQm*_+l-Ne@ki&Z zn{nXsly~Xmh3Rd<4&r?0(TiihJU0Tb6X%~K);wFB*>&>tX5WuDekNWYnL6Hl=+cSt bTUNS8_Y5DqZT#_^`LiSu>)>}qR<8XEsTLvg literal 0 HcmV?d00001 diff --git a/app/assets/images/flag_gray.gif b/app/assets/images/flag_gray.gif new file mode 100644 index 0000000000000000000000000000000000000000..b0a565aa325d447f111fc47ccd47e9d4d0ca6111 GIT binary patch literal 983 zcmZ?wbhEHb6krfw_|5Wzj*QDrAwEtUAuPu`t=((Zrr?i^Uj?+ckkZ4fB*i22M-=TeE8_m zqbEC^Y`5PyR`KT3@35K#Qd!pOkzpFsx{44^#0z_EqlKc|ex zh6Rp|QgS9c44fQVoB#8*Lq?Xq9v@nY|MsFZY*5fA*AG6 z_8_1j`G5nrrCU$OL1s@OSuKSP0tLnFoWe$R2AY!&yRu2T{9n0)@i9x6q{BQ3Nuft9 z>{I@mJ^Ay2>BK}CCA&2iii)ic+~zf31d13Bw%407O>r;~Xld+YQxWhfP||W~)KC+# evngn7Kic!3)1uK)`SD3XC2k%?1(t&i4AuZ+Gw9m@ literal 0 HcmV?d00001 diff --git a/app/assets/images/flag_red.gif b/app/assets/images/flag_red.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c4d62da9a754afc1396312c4831f47578c659b8 GIT binary patch literal 987 zcmZ?wbhEHb6krfw_|5SQ|E;xK7c}i#+In%ujGMD&9$eXVV9SChliL1wHvaEw`rp&~XZGZOv#0!@2#DtXUo!vCvibj4Ec(A<@&8pz|F2v5f5WPOo7Vi>w(0-Q zt^ap#`@ehp|2;dN9PIypaPR*k2mT*F^8e(~|EG@sKXc;W`P2W;pZ$N~?Efnl|KGa) z|H1wLFP{JY{vI5tqr}h%0mYvzj0_C_8FWC-1?33_jvWmDIb}RHEO2a8vdiHRbaCiy z{;xF0WxAp`UAL9^VVfOY}siev?OFw6og`q;)fdhQOK?@v$ zmi9<$847(7Ffd>i71f=T63MK_HBs8Gi+mM W@JmU_M~68?F5qP}<6vW9um%7qgb?2V literal 0 HcmV?d00001 diff --git a/app/assets/images/front.png b/app/assets/images/front.png new file mode 100644 index 0000000000000000000000000000000000000000..265e75c6016684d7393cce233a525b6ebced0304 GIT binary patch literal 17717 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/icon_location_24.png b/app/assets/images/icon_location_24.png new file mode 100644 index 0000000000000000000000000000000000000000..e4df9261316faec8de426a24773b3f7094e90270 GIT binary patch literal 618 zcmV-w0+s!VP)u8s z5OX6*T?gVlK)ifat=|<~`WbOq05sSYNVNm8F#};R0f>u$7X2s60-)i!Kxz^LY2XYH zy8|tGht~q2;ZZ&ZKY)rW2}Jbv{Vm-1vFu0;2NCob2g zctfvqehKrq&kEx?-NK7IR%Q}g$qe+Zh3Y{46>x##9fhOa+M;_ z>HD}W_=wGdz1UQK`}v!pX~{8$m+!x#i0?l4fMNTod$=q(iZv$#lj?0CrGiZd8w)do zxuzsIncjT-j^Xyx_jt=lU~XQGk`JJu8i-e7)A8%iUxve%pAeIqLEc(}H75gYT?O(z z17#ozxm3lLv4Vm4CYgrk0u4WjuPg%j0+j!)$*`mtsCNn}6^<~Fx(38zL>OKLG`yWq zMnm_>Tc}Uo5-_|Mm*IGQfaDW(Aaw;xiUWa}K*KYLEh=#N1QZvJK>Qa?Y6T&~iShxG zPe8@_HYj%w&~R5`^f3{eM1Tfv2h~>4riv%A`Tzn90C35vuGdF=PXGV_07*qoM6N<$ Eg6u>E?f?J) literal 0 HcmV?d00001 diff --git a/app/assets/images/icon_rss.gif b/app/assets/images/icon_rss.gif new file mode 100644 index 0000000000000000000000000000000000000000..316f7691e6a9df6b6df75b85d3ccb9113bef373a GIT binary patch literal 1008 zcmeH`+fPyf9LIlYI`JO5WEzT>g__-_Hp@39(|powtF0y^mAa;yx7;3tSL!+UX z$)=S~n~Ha>v^yEmDkUVOi*R4gyeeVza08jNxdL=p06=U}vLBF8kv+E)p2 z!-7gNZfYTKNytV?5H34Tybf`8g*duGeszZteNpXG?3^Z zyE@3b(qM};SpVX@zCBU@GD#~h-kE;X-}}l`19+pmUf`}1xD(GjT+JS4p{Kpsi;()E zk~7wxjOF$`W!p9D=zYT&S3f0K8|1r$;AjB64)A)|s|6DRdOql?0IdXVC0JX}{*!lQJd8kdhg4--QCZPH7ZAh}CnLF56-TtwPAjltge;xj>eRRB-7R*zTpdV@IYDE}klCP=#w6x3Sph-{3{NSWUe62;h~SuTRab$J zKlKtr+sqQw_)y~U*dW={THjlvVv4GX6hO`n^-!?x%uBXY}PH3Os$I z^Tk(rk#vNdT!i?>kr{OoVAoZX;G|y%y}-@4-0f~IoWAWggAHv8KPTLX@?g5t5gMb` ucFvoIHMCwpl;iwhgEAtGN7nYFzws|ht?)kR8CIw|H3Rvnxp{FkNc|0z0boS{ literal 0 HcmV?d00001 diff --git a/app/assets/images/icons/InfoBox.png b/app/assets/images/icons/InfoBox.png new file mode 100755 index 0000000000000000000000000000000000000000..dd413d9a270e7918e289ff945f19c54b7ad2b3af GIT binary patch literal 837 zcmV-L1G@Z)P)R(Ws?1~B+<%7X9VGw8ga=rfcmt5So zfMJ2bEPh(UGoElP+SGqAZ63a6O=%D{Ul3X-Ni+UA|2 zDaa;rj7f@|00`06m1PT%$T5~BA{UUp<_``GH78Dl(aPuAKiG zz&6=`{eW573P%eKqd_RKaPx9Q4JPQUd&m%lg(VKOhl9qO`v_(fJX z9><5A$pq@U`72m^;3Crk9k@J9MqE1k8P_j;g8Keq&m)3q?zc209u)os^m28roEun< P00000NkvXXu0mjfR9cj7 literal 0 HcmV?d00001 diff --git a/app/assets/images/icons/Locked.png b/app/assets/images/icons/Locked.png new file mode 100644 index 0000000000000000000000000000000000000000..6f285c70e16cc917e8ab987195ee70f960305a47 GIT binary patch literal 1882 zcmV-g2c`IlP)Eng+F7*1`WX&yRlNK*o{pv)@0{}FlQ}KBG_p`IJ{q61T^!N9#CC{ZurBZZtb?KU#ngg!u z4(x7imm|M=Lq0zHsazk;Nq%ZZre_N>Gh2}S)Qnso&B@1SKb0e|zahI@+r@R=fts3{ z16^HRI+aR2+TqR3&38+G$n(70`<{DI-aqwk$qtT4ZhTU5;}bHP8<*kHoD7fVWHdJ} zxmy#G8=sIb2S?=n(;vyc=Ux=g^KK^+i9?HHt|~z~oo0A=7{_tGZH)Qn54xXk`svSq z!H(^Zqm<&#ooTKOTw`cxh?$vb0M@UsWBZOBq|-a7udl;eVQ^@KKOB9Vk3Kwo-F4lU zj4?e;O-&383{=nF^E~45xCb2H)7Bx!PMnfUpJ%1#N=A;o`+@BL(aW-BYsz@B*re9Z zu-4A7=f%F-vNdJ)zx1*kKXFPf^=0JJ=UF*+;k#00JRbKv&s%n$^KcsS-AKfH z{os!e$M$x0BEXf){k;9VH~Hj${~0Ki=6@55#eQ8XmHsFqfAze`yK{51*~}OHI|r`~ zZfM+|X2XUJ#MdPVLQC((3ysEvpBQ6CL}bZHdhtVNXD7xOj4|C?Q;o?z?cV~exOHoS zlPCU0-{qcxWHNa;2!f+qwrsfqi~u7I4UPRl5FAY=lZUTd{%qhMe?QLHt*<~S+S;FF zTdFZ>jOjMU(An9!GJ&zNG1BRD)LQ9iXl$mou8tryWV2a%E}XYY@m4;cKiAUILN=Sd z=aNnKW@c4GDm5y{e9UU7RTSCBH{4g;w0Z;>M zPS$TkX^kA+uB$_=LWGULo4_n9U*Q7Oim-8hKA<=sP@7nfF#t5VZseDdi2F_$nxRA@ z&eYUYg@Et-xURb`2>icv>@nZ(`VQ=B{esqplQh&_ru%yr*%Xy^Ryeqp?6nr2XuZPj zl%*lr!}HJf(OAdE^PdGrdi(9uk%)K5_x&78GEvc2TXqD0`rsY(uAK_3fCvI8rC4Qe zJ-ir;{gvYCfUy4+Y-TX>8dCoAJqarIL8@shy1Cv(@~~L8M^pddx+n$B_0Y5})R}9+ zz3t>KHd9u?ynuf6eAfgE$}COEeb4|OaF$l!n}AY)SvX@6mJkpN1Zy~400nx%+lKdl ztLB1XnVw4ss0B-9L8>UP6a*ghO;`{``(v8Oyi_Hwl&WO^fX(uYNQA0wC!n^jN{a|o}O0%r=5umK;y{MVY!(<+MFKQ_3m3=Jtv#%xr0)(sq zmVSzW1M zwaNt!*rhhhB?vS`HKMACpun}f@JuBeaV%o0Pk|BzfwPR{vWrLp2QjkH?$sgM+$V0F z>b9~FyV^~tL_w%4nyxa|_bRbgEW}nTRzO8=k4*^^d50#~L6m&$Ex4Gb62;9tj74Lvuta^`utHpH*H+Bt7ci0}LSA7||>Irb_vssI20E_zg0 zbYpU5VRU6JWMOn=004N}GcqtV&^0jAH8Kk^G`BJ|u`;&QHn6ZVFaQ8S(ghkjaSm(% z001s}R9JLvZ)9m^c`amNbY%blc-k{EFf`CLFxE9R4l%T_GBUF=Fwr)!ure?J06|Fw U56UO&F8}}l07*qoM6N<$g3Nh>TL1t6 literal 0 HcmV?d00001 diff --git a/app/assets/images/icons/Public_32.png b/app/assets/images/icons/Public_32.png new file mode 100644 index 0000000000000000000000000000000000000000..4db4fee05b290019baa57ff342a65b5b86a3d95d GIT binary patch literal 4788 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 OMNUMnLSTY4H#js`L=QLs literal 0 HcmV?d00001 diff --git a/app/assets/images/icons/Unlocked.png b/app/assets/images/icons/Unlocked.png new file mode 100644 index 0000000000000000000000000000000000000000..8b5b5e03f386a33ceaab4a2b043bbf87ee41abbb GIT binary patch literal 1652 zcmV-)28;QLP)NfRKNvIwoI3$`p3%68dhyE~noxy;VoJNF(x zOm``Ecin0A6DN5xALjg@=YRg^Ef?PJX8)I$<@0$8g@TQusH0x5w*kpaCgTnc4o1_{ z)B1mjpsTBk2OfA3*L62J)_%(vbHG|VYK(o!7<=4Wd(2w zp2=iLr_V`u zpQ_brV{&rx${#Nj3iR~!Bt6f2c>RVCRPX)HefsQQMs@1#SuK@)E&Ek1`&BKKeVv?| z(IZEn)35ISre-qPdCyDS-`CgY6bgkaQ=m{NFf}!W>$>00WOI)WfA0s$J9gbkM`|4x zE|fSoF+rtL0fcNe!{*JKNoP7Jl`8BX8R79?{j%))m9IxpbjZ090>1B)N~QY4uyOxg zpT9f#nOkooj$@vF`UnU2Kf&pLzFZB0AOJ`vlgaHnhLT_U@>dwzIm8{i?qXtMB7Nw| zeGlc*9e->2@xj4C07T@W{(-J5#qz&^*Zx2(_ShjO{xkn6g) ziO5qQ+}amC_UnE6{P8jU&Avn0)4QeNd5IsIRte0_&C%7>l@yVi2eh=1p2){e^%2+rt zaSm%8x~|!Th+Nk)fl8%9rBY5Jv>EFVtK$0=Y6}a+AP8QMqsP=biH1`HVA6}wI~~nMhsk|u_kKu5NjNa7@|0`v1(sOdun0F zj_apOrLvwpc@h9sz4)WLP^*zhI2dD46sNu2yP^8d{Ezdw_@l1FniNsRSgR?|ogtMx z&-$!SVPn)8h8&nLmnTO@U;Ig}wlK17+cw6>$Cq%iD&?||Yc0kID2VHN&wSx?^_w0X zhNQRlREP-cQXOQo8EUl}bF;IkDo-7OA3bWv!>IjJj-zLN-(Q66OeWipe(1wDX1h0a zb7uTi{&8Y-M!bZ)z5nNCG+cuf?U)uXBqC$1lncuoZX& zNC8T74P0=Bj5_8i|z$irT zmX7>~w+6N;#o84Rhz!~gbeX^w35ksn+tgVjx$OU?9E7%|PH+^7{C5Ni5*Ufsj$FnJ zP_GKLKmeoG3Q@FrJvgy(pMCt9+80e^X-i0}ZMAKC4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc literal 0 HcmV?d00001 diff --git a/app/assets/images/my_house_status_update.png b/app/assets/images/my_house_status_update.png new file mode 100644 index 0000000000000000000000000000000000000000..4cb4421739936ecf20caba3ccc7d8fc298eed821 GIT binary patch literal 13437 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/rails.png b/app/assets/images/rails.png new file mode 100644 index 0000000000000000000000000000000000000000..d5edc04e65f555e3ba4dcdaad39dc352e75b575e GIT binary patch literal 6646 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 AQ~&?~ literal 0 HcmV?d00001 diff --git a/app/assets/images/shading.png b/app/assets/images/shading.png new file mode 100644 index 0000000000000000000000000000000000000000..b0aaeca35413c712c81cff75c4d6bce015992e1d GIT binary patch literal 565 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�uNRD$4{+CYdnYC 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 z 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/thingspeak_logo.png b/app/assets/images/thingspeak_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5f4fa2e71c77c147a8e5c58fd9a9715668d5bc51 GIT binary patch literal 1609 zcmV-P2DbT$P)q$gGRCwC#UD0*oI209owg7Jh&R8kNf zlWloBf!MF1e86`Qc09Y&l06_o%1Ob4v$U%TS+AQBmMfp4}+Lmlv z)@aUeLA))Y_Il#;ESf}+q{2CCYDh_rK6|eWL7umzOTWtn%~1{8C!`nyv6~^3cp*~D zdtILR^S?6;av+F?euZ;VBFMh#(`9kgi6D{?LmFXCu`67j0ZCx7YKS$B!h!a>PUM)8 z{c|B}A~`^iuOrCqw)~=wHmFf-Jp(zW+ww}ktHs!~sSmG71Zf%U!;IOf&XKO2*0ht| zvDY0#oB>O2K@h+jF^#ezS&&DIg-RT++nU$UC_f3bx&um(mhWrJjaOTiK@P-ke?`= z3$f8k`xJVn+-jo5TxGkyyw8nRTy-SuSeeu=*xzJ%H#D>`9OtS#qI!JmRz$U(!|T_d z?~1)Q)^epH=;tNWCL2o(k)va-9Os!P4s6G(vanol=4gk7p^jZUfFP9!;wtZkPF98> z?LYAc^7J|6|2U`hLmxz~b5CJ!h6w z-4lH1KRN(!=KBjU5cs#H}FUia8hceh~V3jB)P2p~do(22MYCrajmGzmW5*s! z!l$oC>^?#*_G`mnm1xEEK7T!?PW?`uzgO}Z{9=R{m=qVYScgIOP1lV)W}$pBp%PN( z=@~jyTCxq6taFEC>3G~lyBq>$xq1g^JD%J8FdYO10Zh5ogUGK5b!!k?%*c^x`N+Os z+R-zqBoyTIJ2O|5)G_*&L3)7rYzoKYE?S^nYAUAVc8@qSQp_H+l9##~LP1U&F9sVF zunrm(jL5NtM7@&sEjB1lz{s3g;#S1AmCQo8bdS96p7M@0t78m{bv~FH65$2;^r0x8 z-MiD0T{W#M%Sz;Dr5+3F8j6qa2}neK7U{_mw~93uA3FUI(q>+~lF9$04#OC+(8!wzxvn0O@8eM`c<6rZ>Fo8oQ@^Gw;Bre53<^+mOhG4Meq z75N3!KgtCKIekpXE|_MKMh=heYe`1JZxiRz@%N4)zKP(Aa%Nm;zYiSO8Hwt%i4O*{ zKQ~=L*5dQr{klZLnwG3C4?Y<`%!WpXtr`kr6>UMPHd-Iym70v_)wf~;z# zh@B*Bs0mPO9BUn]+)/g,'id="$1"').replace(/class=([^" ]+)/g,'class="$1"').replace(/ transform /g," ").replace(/:(path|rect)/g,"$1").replace(/style="([^"]+)"/g,function(l){return l.toLowerCase()});f=f.replace(/(url\(#highcharts-[0-9]+)"/g,"$1").replace(/"/g, +"'");if(f.match(/ xmlns="/g).length==2)f=f.replace(/xmlns="[^"]+"/,"");return f},exportChart:function(b,c){var a,f=this.getSVG(c);b=w(this.options.exporting,b);a=r("form",{method:"post",action:b.url},{display:"none"},q.body);s(["filename","type","width","svg"],function(d){r("input",{type:"hidden",name:d,value:{filename:b.filename||"chart",type:b.type,width:b.width,svg:f}[d]},null,a)});a.submit();z(a)},print:function(){var b=this,c=b.container,a=[],f=c.parentNode,d=q.body,i=d.childNodes;if(!b.isPrinting){b.isPrinting= +true;s(i,function(e,h){if(e.nodeType==1){a[h]=e.style.display;e.style.display="none"}});d.appendChild(c);E.print();setTimeout(function(){f.appendChild(c);s(i,function(e,h){if(e.nodeType==1)e.style.display=a[h]});b.isPrinting=false},1E3)}},contextMenu:function(b,c,a,f,d,i){var e=this,h=e.options.navigation,j=h.menuItemStyle,l=e.chartWidth,g=e.chartHeight,n="cache-"+b,m=e[n],o=D(d,i),t,x;if(!m){e[n]=m=r("div",{className:"highcharts-"+b},{position:"absolute",zIndex:1E3,padding:o+"px"},e.container);t= +r("div",null,p({MozBoxShadow:"3px 3px 10px #888",WebkitBoxShadow:"3px 3px 10px #888",boxShadow:"3px 3px 10px #888"},h.menuStyle),m);x=function(){u(m,{display:"none"})};C(m,"mouseleave",x);s(c,function(v){if(v)r("div",{onmouseover:function(){u(this,h.menuItemHoverStyle)},onmouseout:function(){u(this,j)},innerHTML:v.text||k.getOptions().lang[v.textKey]},p({cursor:"pointer"},j),t)[A?"ontouchstart":"onclick"]=function(){x();v.onclick.apply(e,arguments)}});e.exportMenuWidth=m.offsetWidth;e.exportMenuHeight= +m.offsetHeight}b={display:"block"};if(a+e.exportMenuWidth>l)b.right=l-a-d-o+"px";else b.left=a-o+"px";if(f+i+e.exportMenuHeight>g)b.bottom=g-f-o+"px";else b.top=f+i-o+"px";u(m,b)},addButton:function(b){function c(){g.attr(o);l.attr(m)}var a=this,f=a.renderer,d=w(a.options.navigation.buttonOptions,b),i=d.onclick,e=d.menuItems,h=d.width,j=d.height,l,g,n;b=d.borderWidth;var m={stroke:d.borderColor},o={stroke:d.symbolStroke,fill:d.symbolFill};if(d.enabled!==false){l=f.rect(0,0,h,j,d.borderRadius,b).align(d, +true).attr(p({fill:d.backgroundColor,"stroke-width":b,zIndex:19},m)).add();n=f.rect(0,0,h,j,0).align(d).attr({fill:"rgba(255, 255, 255, 0.001)",title:k.getOptions().lang[d._titleKey],zIndex:21}).css({cursor:"pointer"}).on("mouseover",function(){g.attr({stroke:d.hoverSymbolStroke,fill:d.hoverSymbolFill});l.attr({stroke:d.hoverBorderColor})}).on("mouseout",c).on("click",c).add();if(e)i=function(){c();var t=n.getBBox();a.contextMenu("export-menu",e,t.x,t.y,h,j)};n.on("click",function(){i.apply(a,arguments)}); +g=f.symbol(d.symbol,d.symbolX,d.symbolY,(d.symbolSize||12)/2).align(d,true).attr(p(o,{"stroke-width":d.symbolStrokeWidth||1,zIndex:20})).add()}}});k.Renderer.prototype.symbols.exportIcon=function(b,c,a){return["M",b-a,c+a,"L",b+a,c+a,b+a,c+a*0.5,b-a,c+a*0.5,"Z","M",b,c+a*0.5,"L",b-a*0.5,c-a/3,b-a/6,c-a/3,b-a/6,c-a,b+a/6,c-a,b+a/6,c-a/3,b+a*0.5,c-a/3,"Z"]};k.Renderer.prototype.symbols.printIcon=function(b,c,a){return["M",b-a,c+a*0.5,"L",b+a,c+a*0.5,b+a,c-a/3,b-a,c-a/3,"Z","M",b-a*0.5,c-a/3,"L",b-a* +0.5,c-a,b+a*0.5,c-a,b+a*0.5,c-a/3,"Z","M",b-a*0.5,c+a*0.5,"L",b-a*0.75,c+a,b+a*0.75,c+a,b+a*0.5,c+a*0.5,"Z"]};y.prototype.callbacks.push(function(b){var c,a=b.options.exporting,f=a.buttons;if(a.enabled!==false)for(c in f)b.addButton(f[c])})})(); diff --git a/app/assets/javascripts/highcharts.js b/app/assets/javascripts/highcharts.js new file mode 100644 index 0000000..12d7080 --- /dev/null +++ b/app/assets/javascripts/highcharts.js @@ -0,0 +1,295 @@ +/* + Highcharts JS v3.0.8 (2014-01-09) + + (c) 2009-2014 Torstein Honsi + + License: www.highcharts.com/license +*/ +(function(){function r(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}function x(){var a,b=arguments,c,d={},e=function(a,b){var c,d;typeof a!=="object"&&(a={});for(d in b)b.hasOwnProperty(d)&&(c=b[d],a[d]=c&&typeof c==="object"&&Object.prototype.toString.call(c)!=="[object Array]"&&typeof c.nodeType!=="number"?e(a[d]||{},c):b[d]);return a};b[0]===!0&&(d=b[1],b=Array.prototype.slice.call(b,2));c=b.length;for(a=0;a3?c.length%3:0;return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{3})(?=\d)/g,"$1"+d)+(f?b+M(a-c).toFixed(f).slice(2):"")}function Fa(a,b){return Array((b||2)+1-String(a).length).join(0)+a}function Ua(a,b,c){var d=a[b];a[b]=function(){var a=Array.prototype.slice.call(arguments);a.unshift(d);return c.apply(this, +a)}}function Ga(a,b){for(var c="{",d=!1,e,f,g,h,i,j=[];(c=a.indexOf(c))!==-1;){e=a.slice(0,c);if(d){f=e.split(":");g=f.shift().split(".");i=g.length;e=b;for(h=0;h-1?h.thousandsSep:"")):e=$a(f,e)}j.push(e);a=a.slice(c+1);c=(d=!d)?"}":"{"}j.push(a);return j.join("")}function lb(a){return P.pow(10,N(P.log(a)/P.LN10))}function mb(a,b,c,d){var e,c=o(c, +1);e=a/c;b||(b=[1,2,2.5,5,10],d&&d.allowDecimals===!1&&(c===1?b=[1,2,5,10]:c<=0.1&&(b=[1/c])));for(d=0;dc&&(c= +a[b]);return c}function Na(a,b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),delete a[c]}function Oa(a){ab||(ab=T(Ha));a&&ab.appendChild(a);ab.innerHTML=""}function la(a,b){var c="Highcharts error #"+a+": www.highcharts.com/errors/"+a;if(b)throw c;else C.console&&console.log(c)}function ha(a){return parseFloat(a.toPrecision(14))}function Pa(a,b){pa=o(a,b.animation)}function Bb(){var a=G.global.useUTC,b=a?"getUTC":"get",c=a?"setUTC":"set";Qa=(a&&G.global.timezoneOffset||0)*6E4;bb=a? +Date.UTC:function(a,b,c,g,h,i){return(new Date(a,b,o(c,1),o(g,0),o(h,0),o(i,0))).getTime()};ob=b+"Minutes";pb=b+"Hours";qb=b+"Day";Va=b+"Date";cb=b+"Month";db=b+"FullYear";Cb=c+"Minutes";Db=c+"Hours";rb=c+"Date";Eb=c+"Month";Fb=c+"FullYear"}function qa(){}function Ra(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!0;!c&&!d&&this.addLabel()}function ra(){this.init.apply(this,arguments)}function Gb(a,b,c,d,e,f){var g=a.chart.inverted;this.axis=a;this.isNegative=c;this.options=b;this.x=d; +this.total=null;this.points={};this.stack=e;this.percent=f==="percent";this.alignOptions={align:b.align||(g?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(g?"middle":c?"bottom":"top"),y:o(b.y,g?4:c?14:-6),x:o(b.x,g?c?-6:6:0)};this.textAlign=b.textAlign||(g?c?"right":"left":"center")}function sb(){this.init.apply(this,arguments)}function eb(){this.init.apply(this,arguments)}var u,v=document,C=window,P=Math,w=P.round,N=P.floor,Ia=P.ceil,t=P.max,I=P.min,M=P.abs,U=P.cos,$=P.sin,Ba=P.PI,Ca= +Ba*2/360,sa=navigator.userAgent,Hb=C.opera,za=/msie/i.test(sa)&&!Hb,fb=v.documentMode===8,gb=/AppleWebKit/.test(sa),Wa=/Firefox/.test(sa),Ib=/(Mobile|Android|Windows Phone)/.test(sa),Da="http://www.w3.org/2000/svg",V=!!v.createElementNS&&!!v.createElementNS(Da,"svg").createSVGRect,Nb=Wa&&parseInt(sa.split("Firefox/")[1],10)<4,ba=!V&&!za&&!!v.createElement("canvas").getContext,Xa,hb=v.documentElement.ontouchstart!==u,Jb={},tb=0,ab,G,$a,pa,ub,E,ma=function(){},Ja=[],Ha="div",Q="none",Ob=/^[0-9]+$/, +Kb="rgba(192,192,192,"+(V?1.0E-4:0.002)+")",Lb="stroke-width",bb,Qa,ob,pb,qb,Va,cb,db,Cb,Db,rb,Eb,Fb,L={};C.Highcharts=C.Highcharts?la(16,!0):{};$a=function(a,b,c){if(!s(b)||isNaN(b))return"Invalid date";var a=o(a,"%Y-%m-%d %H:%M:%S"),d=new Date(b-Qa),e,f=d[pb](),g=d[qb](),h=d[Va](),i=d[cb](),j=d[db](),k=G.lang,l=k.weekdays,d=r({a:l[g].substr(0,3),A:l[g],d:Fa(h),e:h,b:k.shortMonths[i],B:k.months[i],m:Fa(i+1),y:j.toString().substr(2,2),Y:j,H:Fa(f),I:Fa(f%12||12),l:f%12||12,M:Fa(d[ob]()),p:f<12?"AM": +"PM",P:f<12?"am":"pm",S:Fa(d.getSeconds()),L:Fa(w(b%1E3),3)},Highcharts.dateFormats);for(e in d)for(;a.indexOf("%"+e)!==-1;)a=a.replace("%"+e,typeof d[e]==="function"?d[e](b):d[e]);return c?a.substr(0,1).toUpperCase()+a.substr(1):a};Ab.prototype={wrapColor:function(a){if(this.color>=a)this.color=0},wrapSymbol:function(a){if(this.symbol>=a)this.symbol=0}};E=function(){for(var a=0,b=arguments,c=b.length,d={};a-1,f=e?7:3,g,b=b.split(" "),c=[].concat(c),h,i,j=function(a){for(g=a.length;g--;)a[g]==="M"&&a.splice(g+1,0,a[g+1],a[g+2],a[g+1],a[g+2])};e&&(j(b),j(c));a.isArea&&(h=b.splice(b.length-6,6),i=c.splice(c.length-6,6));if(d<=c.length/f&&b.length===c.length)for(;d--;)c=[].concat(c).splice(0,f).concat(c);a.shift=0;if(b.length)for(a=c.length;b.length{point.key}
    ',pointFormat:'{series.name}: {point.y}
    ',shadow:!0,snap:Ib?25:10,style:{color:"#333333",cursor:"default",fontSize:"12px",padding:"8px",whiteSpace:"nowrap"}},credits:{enabled:!0,text:"ThingSpeak.com",href:"https://thingspeak.com",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#D62020",fontSize:"9px"}}};var Y=G.plotOptions,W=Y.line;Bb(); +var Sb=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,Tb=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,Ub=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,ua=function(a){var b=[],c,d;(function(a){a&&a.stops?d=Sa(a.stops,function(a){return ua(a[1])}):(c=Sb.exec(a))?b=[z(c[1]),z(c[2]),z(c[3]),parseFloat(c[4],10)]:(c=Tb.exec(a))?b=[z(c[1],16),z(c[2],16),z(c[3],16),1]:(c=Ub.exec(a))&&(b=[z(c[1]),z(c[2]),z(c[3]),1])})(a);return{get:function(c){var f; +d?(f=x(a),f.stops=[].concat(f.stops),n(d,function(a,b){f.stops[b]=[f.stops[b][0],a.get(c)]})):f=b&&!isNaN(b[0])?c==="rgb"?"rgb("+b[0]+","+b[1]+","+b[2]+")":c==="a"?b[3]:"rgba("+b.join(",")+")":a;return f},brighten:function(a){if(d)n(d,function(b){b.brighten(a)});else if(xa(a)&&a!==0){var c;for(c=0;c<3;c++)b[c]+=z(a*255),b[c]<0&&(b[c]=0),b[c]>255&&(b[c]=255)}return this},rgba:b,setOpacity:function(a){b[3]=a;return this}}};qa.prototype={init:function(a,b){this.element=b==="span"?T(b):v.createElementNS(Da, +b);this.renderer=a;this.attrSetters={}},opacity:1,animate:function(a,b,c){b=o(b,pa,!0);Ya(this);if(b){b=x(b);if(c)b.complete=c;jb(this,a,b)}else this.attr(a),c&&c()},attr:function(a,b){var c,d,e,f,g=this.element,h=g.nodeName.toLowerCase(),i=this.renderer,j,k=this.attrSetters,l=this.shadows,m,p,q=this;da(a)&&s(b)&&(c=a,a={},a[c]=b);if(da(a))c=a,h==="circle"?c={x:"cx",y:"cy"}[c]||c:c==="strokeWidth"&&(c="stroke-width"),q=y(g,c)||this[c]||0,c!=="d"&&c!=="visibility"&&c!=="fill"&&(q=parseFloat(q));else{for(c in a)if(j= +!1,d=a[c],e=k[c]&&k[c].call(this,d,c),e!==!1){e!==u&&(d=e);if(c==="d")d&&d.join&&(d=d.join(" ")),/(NaN| {2}|^$)/.test(d)&&(d="M 0 0");else if(c==="x"&&h==="text")for(e=0;e1100)&&b.call(d,a)}):d["on"+a]=b;return this},setRadialReference:function(a){this.element.radialReference=a;return this},translate:function(a,b){return this.attr({translateX:a,translateY:b})},invert:function(){this.inverted= +!0;this.updateTransform();return this},updateTransform:function(){var a=this.translateX||0,b=this.translateY||0,c=this.scaleX,d=this.scaleY,e=this.inverted,f=this.rotation;e&&(a+=this.attr("width"),b+=this.attr("height"));a=["translate("+a+","+b+")"];e?a.push("rotate(90) scale(-1,1)"):f&&a.push("rotate("+f+" "+(this.x||0)+" "+(this.y||0)+")");(s(c)||s(d))&&a.push("scale("+o(c,1)+" "+o(d,1)+")");a.length&&y(this.element,"transform",a.join(" "))},toFront:function(){var a=this.element;a.parentNode.appendChild(a); +return this},align:function(a,b,c){var d,e,f,g,h={};e=this.renderer;f=e.alignedObjects;if(a){if(this.alignOptions=a,this.alignByTranslate=b,!c||da(c))this.alignTo=d=c||"renderer",fa(f,this),f.push(this),c=null}else a=this.alignOptions,b=this.alignByTranslate,d=this.alignTo;c=o(c,e[d],e);d=a.align;e=a.verticalAlign;f=(c.x||0)+(a.x||0);g=(c.y||0)+(a.y||0);if(d==="right"||d==="center")f+=(c.width-(a.width||0))/{right:1,center:2}[d];h[b?"translateX":"x"]=w(f);if(e==="bottom"||e==="middle")g+=(c.height- +(a.height||0))/({bottom:1,middle:2}[e]||1);h[b?"translateY":"y"]=w(g);this[this.placed?"animate":"attr"](h);this.placed=!0;this.alignAttr=h;return this},getBBox:function(){var a=this.bBox,b=this.renderer,c,d,e=this.rotation;c=this.element;var f=this.styles,g=e*Ca;d=this.textStr;var h;if(d===""||Ob.test(d))h=d.length+"|"+f.fontSize+"|"+f.fontFamily,a=b.cache[h];if(!a){if(c.namespaceURI===Da||b.forExport){try{a=c.getBBox?r({},c.getBBox()):{width:c.offsetWidth,height:c.offsetHeight}}catch(i){}if(!a|| +a.width<0)a={width:0,height:0}}else a=this.htmlGetBBox();if(b.isSVG){c=a.width;d=a.height;if(za&&f&&f.fontSize==="11px"&&d.toPrecision(3)==="22.7")a.height=d=14;if(e)a.width=M(d*$(g))+M(c*U(g)),a.height=M(d*U(g))+M(c*$(g))}this.bBox=a;h&&(b.cache[h]=a)}return a},show:function(){return this.attr({visibility:"visible"})},hide:function(){return this.attr({visibility:"hidden"})},fadeOut:function(a){var b=this;b.animate({opacity:0},{duration:a||150,complete:function(){b.hide()}})},add:function(a){var b= +this.renderer,c=a||b,d=c.element||b.box,e=d.childNodes,f=this.element,g=y(f,"zIndex"),h;if(a)this.parentGroup=a;this.parentInverted=a&&a.inverted;this.textStr!==void 0&&b.buildText(this);if(g)c.handleZ=!0,g=z(g);if(c.handleZ)for(c=0;cg||!s(g)&&s(b))){d.insertBefore(f,a);h=!0;break}h||d.appendChild(f);this.added=!0;A(this,"add");return this},safeRemoveChild:function(a){var b=a.parentNode;b&&b.removeChild(a)},destroy:function(){var a=this,b=a.element|| +{},c=a.shadows,d=a.renderer.isSVG&&b.nodeName==="SPAN"&&a.parentGroup,e,f;b.onclick=b.onmouseout=b.onmouseover=b.onmousemove=b.point=null;Ya(a);if(a.clipPath)a.clipPath=a.clipPath.destroy();if(a.stops){for(f=0;f/g,'').replace(/<(i|em)>/g,'').replace(/
    /g,"").split(//g),f=b.childNodes, +g=/style="([^"]+)"/,h=/href="(http[^"]+)"/,i=y(b,"x"),j=a.styles,k=a.textWidth,l=j&&j.lineHeight,m=f.length;m--;)b.removeChild(f[m]);k&&!a.added&&this.box.appendChild(b);e[e.length-1]===""&&e.pop();n(e,function(e,f){var m,o=0,e=e.replace(//g,"|||");m=e.split("|||");n(m,function(e){if(e!==""||m.length===1){var p={},n=v.createElementNS(Da,"tspan"),s;g.test(e)&&(s=e.match(g)[1].replace(/(;| |^)color([ :])/,"$1fill$2"),y(n,"style",s));h.test(e)&&!d&&(y(n,"onclick", +'location.href="'+e.match(h)[1]+'"'),D(n,{cursor:"pointer"}));e=(e.replace(/<(.|\n)*?>/g,"")||" ").replace(/</g,"<").replace(/>/g,">");if(e!==" "&&(n.appendChild(v.createTextNode(e)),o?p.dx=0:p.x=i,y(n,p),!o&&f&&(!V&&d&&D(n,{display:"block"}),y(n,"dy",l||c.fontMetrics(/px$/.test(n.style.fontSize)?n.style.fontSize:j.fontSize).h,gb&&n.offsetHeight)),b.appendChild(n),o++,k))for(var e=e.replace(/([^\^])-/g,"$1- ").split(" "),p=e.length>1&&j.whiteSpace!=="nowrap",t,w,u=a._clipHeight,r=[],B=z(l|| +16),x=1;p&&(e.length||r.length);)delete a.bBox,t=a.getBBox(),w=t.width,!V&&c.forExport&&(w=c.measureSpanWidth(n.firstChild.data,a.styles)),t=w>k,!t||e.length===1?(e=r,r=[],e.length&&(x++,u&&x*B>u?(e=["..."],a.attr("title",a.textStr)):(n=v.createElementNS(Da,"tspan"),y(n,{dy:B,x:i}),s&&y(n,"style",s),b.appendChild(n),w>k&&(k=w)))):(n.removeChild(n.firstChild),r.unshift(e.pop())),e.length&&n.appendChild(v.createTextNode(e.join(" ").replace(/- /g,"-")))}})})},button:function(a,b,c,d,e,f,g,h,i){var j= +this.label(a,b,c,i,null,null,null,null,"button"),k=0,l,m,p,q,n,o,a={x1:0,y1:0,x2:0,y2:1},e=x({"stroke-width":1,stroke:"#CCCCCC",fill:{linearGradient:a,stops:[[0,"#FEFEFE"],[1,"#F6F6F6"]]},r:2,padding:5,style:{color:"black"}},e);p=e.style;delete e.style;f=x(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#FFF"],[1,"#ACF"]]}},f);q=f.style;delete f.style;g=x(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#9BD"],[1,"#CDF"]]}},g);n=g.style;delete g.style;h=x(e,{style:{color:"#CCC"}},h);o=h.style; +delete h.style;F(j.element,za?"mouseover":"mouseenter",function(){k!==3&&j.attr(f).css(q)});F(j.element,za?"mouseout":"mouseleave",function(){k!==3&&(l=[e,f,g][k],m=[p,q,n][k],j.attr(l).css(m))});j.setState=function(a){(j.state=k=a)?a===2?j.attr(g).css(n):a===3&&j.attr(h).css(o):j.attr(e).css(p)};return j.on("click",function(){k!==3&&d.call(j)}).attr(e).css(r({cursor:"default"},p))},crispLine:function(a,b){a[1]===a[4]&&(a[1]=a[4]=w(a[1])-b%2/2);a[2]===a[5]&&(a[2]=a[5]=w(a[2])+b%2/2);return a},path:function(a){var b= +{fill:Q};La(a)?b.d=a:S(a)&&r(b,a);return this.createElement("path").attr(b)},circle:function(a,b,c){a=S(a)?a:{x:a,y:b,r:c};return this.createElement("circle").attr(a)},arc:function(a,b,c,d,e,f){if(S(a))b=a.y,c=a.r,d=a.innerR,e=a.start,f=a.end,a=a.x;a=this.symbol("arc",a||0,b||0,c||0,c||0,{innerR:d||0,start:e||0,end:f||0});a.r=c;return a},rect:function(a,b,c,d,e,f){e=S(a)?a.r:e;e=this.createElement("rect").attr({rx:e,ry:e,fill:Q});return e.attr(S(a)?a:e.crisp(f,a,b,t(c,0),t(d,0)))},setSize:function(a, +b,c){var d=this.alignedObjects,e=d.length;this.width=a;this.height=b;for(this.boxWrapper[o(c,!0)?"animate":"attr"]({width:a,height:b});e--;)d[e].align()},g:function(a){var b=this.createElement("g");return s(a)?b.attr({"class":"highcharts-"+a}):b},image:function(a,b,c,d,e){var f={preserveAspectRatio:Q};arguments.length>1&&r(f,{x:b,y:c,width:d,height:e});f=this.createElement("image").attr(f);f.element.setAttributeNS?f.element.setAttributeNS("http://www.w3.org/1999/xlink","href",a):f.element.setAttribute("hc-svg-href", +a);return f},symbol:function(a,b,c,d,e,f){var g,h=this.symbols[a],h=h&&h(w(b),w(c),d,e,f),i=/^url\((.*?)\)$/,j,k;if(h)g=this.path(h),r(g,{symbolName:a,x:b,y:c,width:d,height:e}),f&&r(g,f);else if(i.test(a))k=function(a,b){a.element&&(a.attr({width:b[0],height:b[1]}),a.alignByTranslate||a.translate(w((d-b[0])/2),w((e-b[1])/2)))},j=a.match(i)[1],a=Jb[j],g=this.image(j).attr({x:b,y:c}),g.isImg=!0,a?k(g,a):(g.attr({width:0,height:0}),T("img",{onload:function(){k(g,Jb[j]=[this.width,this.height])},src:j})); +return g},symbols:{circle:function(a,b,c,d){var e=0.166*c;return["M",a+c/2,b,"C",a+c+e,b,a+c+e,b+d,a+c/2,b+d,"C",a-e,b+d,a-e,b,a+c/2,b,"Z"]},square:function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c,b+d,a,b+d,"Z"]},triangle:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d,a,b+d,"Z"]},"triangle-down":function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c/2,b+d,"Z"]},diamond:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d/2,a+c/2,b+d,a,b+d/2,"Z"]},arc:function(a,b,c,d,e){var f=e.start,c=e.r||c||d,g=e.end-0.001, +d=e.innerR,h=e.open,i=U(f),j=$(f),k=U(g),g=$(g),e=e.end-fl&&/[ \-]/.test(b.textContent||b.innerText))D(b,{width:l+"px",display:"block",whiteSpace:"normal"}),i=l;this.getSpanCorrection(i,k,h,j,g)}D(b,{left:e+(this.xCorr||0)+"px",top:f+(this.yCorr||0)+"px"});if(gb)k=b.offsetHeight;this.cTT=m}}else this.alignOnAdd=!0},setSpanRotation:function(a,b,c){var d= +{},e=za?"-ms-transform":gb?"-webkit-transform":Wa?"MozTransform":Hb?"-o-transform":"";d[e]=d.transform="rotate("+a+"deg)";d[e+(Wa?"Origin":"-origin")]=b*100+"% "+c+"px";D(this.element,d)},getSpanCorrection:function(a,b,c){this.xCorr=-a*c;this.yCorr=-b}});r(va.prototype,{html:function(a,b,c){var d=G.chart.style,e=this.createElement("span"),f=e.attrSetters,g=e.element,h=e.renderer;f.text=function(a){a!==g.innerHTML&&delete this.bBox;g.innerHTML=a;return!1};f.x=f.y=f.align=f.rotation=function(a,b){b=== +"align"&&(b="textAlign");e[b]=a;e.htmlUpdateTransform();return!1};e.attr({text:a,x:w(b),y:w(c)}).css({position:"absolute",whiteSpace:"nowrap",fontFamily:d.fontFamily,fontSize:d.fontSize});e.css=e.htmlCss;if(h.isSVG)e.add=function(a){var b,c=h.box.parentNode,d=[];if(this.parentGroup=a){if(b=a.div,!b){for(;a;)d.push(a),a=a.parentGroup;n(d.reverse(),function(a){var d;b=a.div=a.div||T(Ha,{className:y(a.element,"class")},{position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px"},b||c); +d=b.style;r(a.attrSetters,{translateX:function(a){d.left=a+"px"},translateY:function(a){d.top=a+"px"},visibility:function(a,b){d[b]=a}})})}}else b=c;b.appendChild(g);e.added=!0;e.alignOnAdd&&e.htmlUpdateTransform();return e};return e}});var R;if(!V&&!ba){Highcharts.VMLElement=R={init:function(a,b){var c=["<",b,' filled="f" stroked="f"'],d=["position: ","absolute",";"],e=b===Ha;(b==="shape"||e)&&d.push("left:0;top:0;width:1px;height:1px;");d.push("visibility: ",e?"hidden":"visible");c.push(' style="', +d.join(""),'"/>');if(b)c=e||b==="span"||b==="img"?c.join(""):a.prepVML(c),this.element=T(c);this.renderer=a;this.attrSetters={}},add:function(a){var b=this.renderer,c=this.element,d=b.box,d=a?a.element||a:d;a&&a.inverted&&b.invertChild(c,d);d.appendChild(c);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();A(this,"add");return this},updateTransform:qa.prototype.htmlUpdateTransform,setSpanRotation:function(){var a=this.rotation,b=U(a*Ca),c=$(a*Ca);D(this.element,{filter:a? +["progid:DXImageTransform.Microsoft.Matrix(M11=",b,", M12=",-c,", M21=",c,", M22=",b,", sizingMethod='auto expand')"].join(""):Q})},getSpanCorrection:function(a,b,c,d,e){var f=d?U(d*Ca):1,g=d?$(d*Ca):0,h=o(this.elemHeight,this.element.offsetHeight),i;this.xCorr=f<0&&-a;this.yCorr=g<0&&-h;i=f*g<0;this.xCorr+=g*b*(i?1-c:c);this.yCorr-=f*b*(d?i?c:1-c:1);e&&e!=="left"&&(this.xCorr-=a*c*(f<0?-1:1),d&&(this.yCorr-=h*c*(g<0?-1:1)),D(this.element,{textAlign:e}))},pathToVML:function(a){for(var b=a.length, +c=[];b--;)if(xa(a[b]))c[b]=w(a[b]*10)-5;else if(a[b]==="Z")c[b]="x";else if(c[b]=a[b],a.isArc&&(a[b]==="wa"||a[b]==="at"))c[b+5]===c[b+7]&&(c[b+7]+=a[b+7]>a[b+5]?1:-1),c[b+6]===c[b+8]&&(c[b+8]+=a[b+8]>a[b+6]?1:-1);return c.join(" ")||"x"},attr:function(a,b){var c,d,e,f=this.element||{},g=f.style,h=f.nodeName,i=this.renderer,j=this.symbolName,k,l=this.shadows,m,p=this.attrSetters,q=this;da(a)&&s(b)&&(c=a,a={},a[c]=b);if(da(a))c=a,q=c==="strokeWidth"||c==="stroke-width"?this.strokeweight:this[c];else for(c in a)if(d= +a[c],m=!1,e=p[c]&&p[c].call(this,d,c),e!==!1&&d!==null){e!==u&&(d=e);if(j&&/^(x|y|r|start|end|width|height|innerR|anchorX|anchorY)/.test(c))k||(this.symbolAttr(a),k=!0),m=!0;else if(c==="d"){d=d||[];this.d=d.join(" ");f.path=d=this.pathToVML(d);if(l)for(e=l.length;e--;)l[e].path=l[e].cutOff?this.cutOffPath(d,l[e].cutOff):d;m=!0}else if(c==="visibility"){if(l)for(e=l.length;e--;)l[e].style[c]=d;h==="DIV"&&(d=d==="hidden"?"-999em":0,fb||(g[c]=d?"visible":"hidden"),c="top");g[c]=d;m=!0}else if(c==="zIndex")d&& +(g[c]=d),m=!0;else if(ta(c,["x","y","width","height"])!==-1)this[c]=d,c==="x"||c==="y"?c={x:"left",y:"top"}[c]:d=t(0,d),this.updateClipping?(this[c]=d,this.updateClipping()):g[c]=d,m=!0;else if(c==="class"&&h==="DIV")f.className=d;else if(c==="stroke")d=i.color(d,f,c),c="strokecolor";else if(c==="stroke-width"||c==="strokeWidth")f.stroked=d?!0:!1,c="strokeweight",this[c]=d,xa(d)&&(d+="px");else if(c==="dashstyle")(f.getElementsByTagName("stroke")[0]||T(i.prepVML([""]),null,null,f))[c]=d|| +"solid",this.dashstyle=d,m=!0;else if(c==="fill")if(h==="SPAN")g.color=d;else{if(h!=="IMG")f.filled=d!==Q?!0:!1,d=i.color(d,f,c,this),c="fillcolor"}else if(c==="opacity")m=!0;else if(h==="shape"&&c==="rotation")this[c]=f.style[c]=d,f.style.left=-w($(d*Ca)+1)+"px",f.style.top=w(U(d*Ca))+"px";else if(c==="translateX"||c==="translateY"||c==="rotation")this[c]=d,this.updateTransform(),m=!0;m||(fb?f[c]=d:y(f,c,d))}return q},clip:function(a){var b=this,c;a?(c=a.members,fa(c,b),c.push(b),b.destroyClip=function(){fa(c, +b)},a=a.getCSS(b)):(b.destroyClip&&b.destroyClip(),a={clip:fb?"inherit":"rect(auto)"});return b.css(a)},css:qa.prototype.htmlCss,safeRemoveChild:function(a){a.parentNode&&Oa(a)},destroy:function(){this.destroyClip&&this.destroyClip();return qa.prototype.destroy.apply(this)},on:function(a,b){this.element["on"+a]=function(){var a=C.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var c,a=a.split(/[ ,]/);c=a.length;if(c===9||c===11)a[c-4]=a[c-2]=z(a[c-2])-10*b;return a.join(" ")}, +shadow:function(a,b,c){var d=[],e,f=this.element,g=this.renderer,h,i=f.style,j,k=f.path,l,m,p,q;k&&typeof k.value!=="string"&&(k="x");m=k;if(a){p=o(a.width,3);q=(a.opacity||0.15)/p;for(e=1;e<=3;e++){l=p*2+1-2*e;c&&(m=this.cutOffPath(k.value,l+0.5));j=[''];h=T(g.prepVML(j),null,{left:z(i.left)+o(a.offsetX,1),top:z(i.top)+o(a.offsetY,1)});if(c)h.cutOff=l+1;j=[''];T(g.prepVML(j),null,null,h);b?b.element.appendChild(h):f.parentNode.insertBefore(h,f);d.push(h)}this.shadows=d}return this}};R=ga(qa,R);var xb={Element:R,isIE8:sa.indexOf("MSIE 8.0")>-1,init:function(a,b,c){var d,e;this.alignedObjects=[];d=this.createElement(Ha);e=d.element;e.style.position="relative";a.appendChild(d.element);this.isVML=!0;this.box=e;this.boxWrapper=d;this.cache={};this.setSize(b,c,!1);if(!v.namespaces.hcv){v.namespaces.add("hcv","urn:schemas-microsoft-com:vml"); +try{v.createStyleSheet().cssText="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}catch(f){v.styleSheets[0].cssText+="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}}},isHidden:function(){return!this.box.offsetWidth},clipRect:function(a,b,c,d){var e=this.createElement(),f=S(a);return r(e,{members:[],left:(f?a.x:a)+1,top:(f?a.y:b)+1,width:(f?a.width:c)-1,height:(f?a.height:d)-1,getCSS:function(a){var b= +a.element,c=b.nodeName,a=a.inverted,d=this.top-(c==="shape"?b.offsetTop:0),e=this.left,b=e+this.width,f=d+this.height,d={clip:"rect("+w(a?e:d)+"px,"+w(a?f:b)+"px,"+w(a?b:f)+"px,"+w(a?d:e)+"px)"};!a&&fb&&c==="DIV"&&r(d,{width:b+"px",height:f+"px"});return d},updateClipping:function(){n(e.members,function(a){a.css(e.getCSS(a))})}})},color:function(a,b,c,d){var e=this,f,g=/^rgba/,h,i,j=Q;a&&a.linearGradient?i="gradient":a&&a.radialGradient&&(i="pattern");if(i){var k,l,m=a.linearGradient||a.radialGradient, +p,q,o,H,t,s="",a=a.stops,w,r=[],u=function(){h=[''];T(e.prepVML(h),null,null,b)};p=a[0];w=a[a.length-1];p[0]>0&&a.unshift([0,p[1]]);w[0]<1&&a.push([1,w[1]]);n(a,function(a,b){g.test(a[1])?(f=ua(a[1]),k=f.get("rgb"),l=f.get("a")):(k=a[1],l=1);r.push(a[0]*100+"% "+k);b?(o=l,H=k):(q=l,t=k)});if(c==="fill")if(i==="gradient")c=m.x1||m[0]||0,a=m.y1||m[1]||0,p=m.x2||m[2]||0,m=m.y2||m[3]||0,s='angle="'+ +(90-P.atan((m-a)/(p-c))*180/Ba)+'"',u();else{var j=m.r,x=j*2,Z=j*2,y=m.cx,B=m.cy,v=b.radialReference,ja,j=function(){v&&(ja=d.getBBox(),y+=(v[0]-ja.x)/ja.width-0.5,B+=(v[1]-ja.y)/ja.height-0.5,x*=v[2]/ja.width,Z*=v[2]/ja.height);s='src="'+G.global.VMLRadialGradientURL+'" size="'+x+","+Z+'" origin="0.5,0.5" position="'+y+","+B+'" color2="'+t+'" ';u()};d.added?j():F(d,"add",j);j=H}else j=k}else if(g.test(a)&&b.tagName!=="IMG")f=ua(a),h=["<",c,' opacity="',f.get("a"),'"/>'],T(this.prepVML(h),null,null, +b),j=f.get("rgb");else{j=b.getElementsByTagName(c);if(j.length)j[0].opacity=1,j[0].type="solid";j=a}return j},prepVML:function(a){var b=this.isIE8,a=a.join("");b?(a=a.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />'),a=a.indexOf('style="')===-1?a.replace("/>",' style="display:inline-block;behavior:url(#default#VML);" />'):a.replace('style="','style="display:inline-block;behavior:url(#default#VML);')):a=a.replace("<","1&&f.attr({x:b,y:c,width:d,height:e});return f},rect:function(a,b,c,d,e,f){var g=this.symbol("rect");g.r= +S(a)?a.r:e;return g.attr(S(a)?a:g.crisp(f,a,b,t(c,0),t(d,0)))},invertChild:function(a,b){var c=b.style;D(a,{flip:"x",left:z(c.width)-1,top:z(c.height)-1,rotation:-90})},symbols:{arc:function(a,b,c,d,e){var f=e.start,g=e.end,h=e.r||c||d,c=e.innerR,d=U(f),i=$(f),j=U(g),k=$(g);if(g-f===0)return["x"];f=["wa",a-h,b-h,a+h,b+h,a+h*d,b+h*i,a+h*j,b+h*k];e.open&&!c&&f.push("e","M",a,b);f.push("at",a-c,b-c,a+c,b+c,a+c*j,b+c*k,a+c*d,b+c*i,"x","e");f.isArc=!0;return f},circle:function(a,b,c,d,e){e&&(c=d=2*e.r); +e&&e.isCircle&&(a-=c/2,b-=d/2);return["wa",a,b,a+c,b+d,a+c,b+d/2,a+c,b+d/2,"e"]},rect:function(a,b,c,d,e){var f=a+c,g=b+d,h;!s(e)||!e.r?f=va.prototype.symbols.square.apply(0,arguments):(h=I(e.r,c,d),f=["M",a+h,b,"L",f-h,b,"wa",f-2*h,b,f,b+2*h,f-h,b,f,b+h,"L",f,g-h,"wa",f-2*h,g-2*h,f,g,f,g-h,f-h,g,"L",a+h,g,"wa",a,g-2*h,a+2*h,g,a+h,g,a,g-h,"L",a,b+h,"wa",a,b,a+2*h,b+2*h,a,b+h,a+h,b,"x","e"]);return f}}};Highcharts.VMLRenderer=R=function(){this.init.apply(this,arguments)};R.prototype=x(va.prototype, +xb);Xa=R}va.prototype.measureSpanWidth=function(a,b){var c=v.createElement("span"),d;d=v.createTextNode(a);c.appendChild(d);D(c,b);this.box.appendChild(c);d=c.offsetWidth;Oa(c);return d};var Mb;if(ba)Highcharts.CanVGRenderer=R=function(){Da="http://www.w3.org/1999/xhtml"},R.prototype.symbols={},Mb=function(){function a(){var a=b.length,d;for(d=0;dq[p]?q[p]=g+j:o||(c=!1);if(o)B=(d=d.ticks[i[a+(e?1:-1)]])&&d.label.xy&&d.label.xy.x+d.getLabelSides()[e?0:1],i=B,e&&!h||f&&h?g+ki&&(c=!1)):g+j>m&&(g= +m-j,d&&g+k0&&b.height>0){f=x({align:c&&k&& +"center",x:c?!k&&4:10,verticalAlign:!c&&k&&"middle",y:c?k?16:10:k?6:-4,rotation:c&&!k&&90},f);if(!g)a.label=g=u.text(f.text,0,0,f.useHTML).attr({align:f.textAlign||f.align,rotation:f.rotation,zIndex:w}).css(f.style).add();b=[q[1],q[4],o(q[6],q[1])];q=[q[2],q[5],o(q[7],q[2])];c=Ma(b);k=Ma(q);g.align(f,!1,{x:c,y:k,width:Aa(b)-c,height:Aa(q)-k});g.show()}else g&&g.hide();return a},destroy:function(){fa(this.axis.plotLinesAndBands,this);delete this.axis;Na(this)}};ra.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L", +second:"%H:%M:%S",minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,gridLineColor:"#C0C0C0",labels:J,lineColor:"#C0D0E0",lineWidth:1,minPadding:0.01,maxPadding:0.01,minorGridLineColor:"#E0E0E0",minorGridLineWidth:1,minorTickColor:"#A0A0A0",minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickColor:"#C0D0E0",tickLength:5,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",tickWidth:1,title:{align:"middle",style:{color:"#4d759e", +fontWeight:"bold"}},type:"linear"},defaultYAxisOptions:{endOnTick:!0,gridLineWidth:1,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8,y:3},lineWidth:0,maxPadding:0.05,minPadding:0.05,startOnTick:!0,tickWidth:0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return Ea(this.total,-1)},style:J.style}},defaultLeftAxisOptions:{labels:{x:-8,y:null},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:8,y:null},title:{rotation:90}},defaultBottomAxisOptions:{labels:{x:0, +y:14},title:{rotation:0}},defaultTopAxisOptions:{labels:{x:0,y:-5},title:{rotation:0}},init:function(a,b){var c=b.isX;this.horiz=a.inverted?!c:c;this.coll=(this.isXAxis=c)?"xAxis":"yAxis";this.opposite=b.opposite;this.side=b.side||(this.horiz?this.opposite?0:2:this.opposite?1:3);this.setOptions(b);var d=this.options,e=d.type;this.labelFormatter=d.labels.formatter||this.defaultLabelFormatter;this.userOptions=b;this.minPixelPadding=0;this.chart=a;this.reversed=d.reversed;this.zoomEnabled=d.zoomEnabled!== +!1;this.categories=d.categories||e==="category";this.names=[];this.isLog=e==="logarithmic";this.isDatetimeAxis=e==="datetime";this.isLinked=s(d.linkedTo);this.tickmarkOffset=this.categories&&d.tickmarkPlacement==="between"?0.5:0;this.ticks={};this.labelEdge=[];this.minorTicks={};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=d.minRange||d.maxZoom;this.range=d.range;this.offset=d.offset||0;this.stacks={};this.oldStacks={};this.stackExtremes={};this.min= +this.max=null;this.crosshair=o(d.crosshair,ka(a.options.tooltip.crosshairs)[c?0:1],!1);var f,d=this.options.events;ta(this,a.axes)===-1&&(a.axes.push(this),a[this.coll].push(this));this.series=this.series||[];if(a.inverted&&c&&this.reversed===u)this.reversed=!0;this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(f in d)F(this,f,d[f]);if(this.isLog)this.val2lin=ya,this.lin2val=ea},setOptions:function(a){this.options=x(this.defaultOptions,this.isXAxis?{}:this.defaultYAxisOptions,[this.defaultTopAxisOptions, +this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],x(G[this.coll],a))},defaultLabelFormatter:function(){var a=this.axis,b=this.value,c=a.categories,d=this.dateTimeLabelFormat,e=G.lang.numericSymbols,f=e&&e.length,g,h=a.options.labels.format,a=a.isLog?b:a.tickInterval;if(h)g=Ga(h,this);else if(c)g=b;else if(d)g=$a(d,b);else if(f&&a>=1E3)for(;f--&&g===u;)c=Math.pow(1E3,f+1),a>=c&&e[f]!==null&&(g=Ea(b/c,-1)+e[f]);g===u&&(g=b>=1E4?Ea(b,0):Ea(b,-1,u,"")); +return g},getSeriesExtremes:function(){var a=this,b=a.chart;a.hasVisibleSeries=!1;a.dataMin=a.dataMax=null;a.stackExtremes={};a.buildStacks();n(a.series,function(c){if(c.visible||!b.options.chart.ignoreHiddenSeries){var d;d=c.options.threshold;var e;a.hasVisibleSeries=!0;a.isLog&&d<=0&&(d=null);if(a.isXAxis){if(d=c.xData,d.length)a.dataMin=I(o(a.dataMin,d[0]),Ma(d)),a.dataMax=t(o(a.dataMax,d[0]),Aa(d))}else{c.getExtremes();e=c.dataMax;c=c.dataMin;if(s(c)&&s(e))a.dataMin=I(o(a.dataMin,c),c),a.dataMax= +t(o(a.dataMax,e),e);if(s(d))if(a.dataMin>=d)a.dataMin=d,a.ignoreMinPadding=!0;else if(a.dataMaxg+this.width)m=!0}else if(a=g,c=l-this.right,ih+this.height)m=!0;return m&&!d?null:f.renderer.crispLine(["M",a,i,"L",c,j],b||1)},getLinearTickPositions:function(a,b,c){for(var d,b=ha(N(b/a)*a),c=ha(Ia(c/a)*a),e=[];b<=c;){e.push(b);b=ha(b+a);if(b===d)break;d=b}return e},getMinorTickPositions:function(){var a=this.options,b=this.tickPositions,c=this.minorTickInterval,d=[],e;if(this.isLog){e=b.length;for(a=1;a=this.minRange,f,g,h,i,j;if(this.isXAxis&&this.minRange===u&&!this.isLog)s(a.min)||s(a.max)?this.minRange=null:(n(this.series,function(a){i=a.xData;for(g=j=a.xIncrement?1:i.length- +1;g>0;g--)if(h=i[g]-i[g-1],f===u||hb&&(g=0);c=t(c,g);e=t(e,da(i)?0:g/2);f=t(f,i==="on"?0:g);!a.noSharedTooltip&&s(m)&&(d=s(d)?I(d,m):m)}),g=this.ordinalSlope&&d?this.ordinalSlope/d:1,this.minPointOffset=e*=g,this.pointRangePadding=f*=g,this.pointRange=I(c,b),this.closestPointRange=d;if(a)this.oldTransA=i;this.translationSlope=this.transA=i=this.len/(b+f||1);this.transB=this.horiz?this.left:this.bottom;this.minPixelPadding=i*e},setTickPositions:function(a){var b= +this,c=b.chart,d=b.options,e=b.isLog,f=b.isDatetimeAxis,g=b.isXAxis,h=b.isLinked,i=b.options.tickPositioner,j=d.maxPadding,k=d.minPadding,l=d.tickInterval,m=d.minTickInterval,p=d.tickPixelInterval,q,na=b.categories;h?(b.linkedParent=c[b.coll][d.linkedTo],c=b.linkedParent.getExtremes(),b.min=o(c.min,c.dataMin),b.max=o(c.max,c.dataMax),d.type!==b.linkedParent.options.type&&la(11,1)):(b.min=o(b.userMin,d.min,b.dataMin),b.max=o(b.userMax,d.max,b.dataMax));if(e)!a&&I(b.min,o(b.dataMin,b.min))<=0&&la(10, +1),b.min=ha(ya(b.min)),b.max=ha(ya(b.max));if(b.range&&s(b.max))b.userMin=b.min=t(b.min,b.max-b.range),b.userMax=b.max,b.range=null;b.beforePadding&&b.beforePadding();b.adjustForMinRange();if(!na&&!b.usePercentage&&!h&&s(b.min)&&s(b.max)&&(c=b.max-b.min)){if(!s(d.min)&&!s(b.userMin)&&k&&(b.dataMin<0||!b.ignoreMinPadding))b.min-=c*k;if(!s(d.max)&&!s(b.userMax)&&j&&(b.dataMax>0||!b.ignoreMaxPadding))b.max+=c*j}b.min===b.max||b.min===void 0||b.max===void 0?b.tickInterval=1:h&&!l&&p===b.linkedParent.options.tickPixelInterval? +b.tickInterval=b.linkedParent.tickInterval:(b.tickInterval=o(l,na?1:(b.max-b.min)*p/t(b.len,p)),!s(l)&&b.lent(2*b.len,200)&&la(19,!0),a=f?b.getTimeTicks(b.normalizeTimeTickInterval(b.tickInterval,d.units),b.min,b.max,d.startOfWeek,b.ordinalPositions,b.closestPointRange, +!0):e?b.getLogTickPositions(b.tickInterval,b.min,b.max):b.getLinearTickPositions(b.tickInterval,b.min,b.max),q&&a.splice(1,a.length-2),b.tickPositions=a;if(!h)e=a[0],f=a[a.length-1],h=b.minPointOffset||0,d.startOnTick?b.min=e:b.min-h>e&&a.shift(),d.endOnTick?b.max=f:b.max+h(b[d]||0)&&this.options.alignTicks!==!1)b[d]=c.length;a.maxTicks=b},adjustTickAmount:function(){var a=this._maxTicksKey,b=this.tickPositions,c=this.chart.maxTicks;if(c&&c[a]&&!this.isDatetimeAxis&&!this.categories&&!this.isLinked&&this.options.alignTicks!==!1&&this.min!==u){var d=this.tickAmount,e=b.length;this.tickAmount=a=c[a];if(e=this.dataMax&&(b=u));this.displayBtn=a!==u||b!==u;this.setExtremes(a,b,!1,u,{trigger:"zoom"});return!0},setAxisSize:function(){var a=this.chart,b=this.options,c=b.offsetLeft||0,d=b.offsetRight||0,e=this.horiz,f,g;this.left=g=o(b.left,a.plotLeft+c);this.top=f=o(b.top,a.plotTop);this.width=c=o(b.width,a.plotWidth-c+d);this.height=b=o(b.height,a.plotHeight);this.bottom=a.chartHeight-b-f;this.right=a.chartWidth-c-g;this.len=t(e?c:b,0);this.pos=e?g:f},getExtremes:function(){var a= +this.isLog;return{min:a?ha(ea(this.min)):this.min,max:a?ha(ea(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,c=b?ea(this.min):this.min,b=b?ea(this.max):this.max;c>a||a===null?a=c:b15&&a<165?"right":a>195&&a<345?"left":"center"},getOffset:function(){var a=this,b=a.chart,c=b.renderer,d=a.options, +e=a.tickPositions,f=a.ticks,g=a.horiz,h=a.side,i=b.inverted?[1,0,3,2][h]:h,j,k=0,l,m=0,p=d.title,q=d.labels,na=0,H=b.axisOffset,w=b.clipOffset,r=[-1,1,1,-1][h],v,x=1,y=o(q.maxStaggerLines,5),z,Z,K,B;a.hasData=j=a.hasVisibleSeries||s(a.min)&&s(a.max)&&!!e;a.showAxis=b=j||o(d.showEmpty,!0);a.staggerLines=a.horiz&&q.staggerLines;if(!a.axisGroup)a.gridGroup=c.g("grid").attr({zIndex:d.gridZIndex||1}).add(),a.axisGroup=c.g("axis").attr({zIndex:d.zIndex||2}).add(),a.labelGroup=c.g("axis-labels").attr({zIndex:q.zIndex|| +7}).add();if(j||a.isLinked){a.labelAlign=o(q.align||a.autoLabelAlign(q.rotation));n(e,function(b){f[b]?f[b].addLabel():f[b]=new Ra(a,b)});if(a.horiz&&!a.staggerLines&&y&&!q.rotation){for(v=a.reversed?[].concat(e).reverse():e;x1)a.staggerLines=x}n(e,function(b){if(h===0||h===2||{1:"left",3:"right"}[h]===a.labelAlign)na= +t(f[b].getLabelSize(),na)});if(a.staggerLines)na*=a.staggerLines,a.labelOffset=na}else for(v in f)f[v].destroy(),delete f[v];if(p&&p.text&&p.enabled!==!1){if(!a.axisTitle)a.axisTitle=c.text(p.text,0,0,p.useHTML).attr({zIndex:7,rotation:p.rotation||0,align:p.textAlign||{low:"left",middle:"center",high:"right"}[p.align]}).css(p.style).add(a.axisGroup),a.axisTitle.isNew=!0;if(b)k=a.axisTitle.getBBox()[g?"height":"width"],m=o(p.margin,g?5:10),l=p.offset;a.axisTitle[b?"show":"hide"]()}a.offset=r*o(d.offset, +H[h]);a.axisTitleMargin=o(l,na+m+(h!==2&&na&&r*d.labels[g?"y":"x"]));H[h]=t(H[h],a.axisTitleMargin+k+r*a.offset);w[i]=t(w[i],N(d.lineWidth/2)*2)},getLinePath:function(a){var b=this.chart,c=this.opposite,d=this.offset,e=this.horiz,f=this.left+(c?this.width:0)+d,d=b.chartHeight-this.bottom-(c?this.height:0)+d;c&&(a*=-1);return b.renderer.crispLine(["M",e?this.left:f,e?d:this.top,"L",e?b.chartWidth-this.right:f,e?d:b.chartHeight-this.bottom],a)},getTitlePosition:function(){var a=this.horiz,b=this.left, +c=this.top,d=this.len,e=this.options.title,f=a?b:c,g=this.opposite,h=this.offset,i=z(e.style.fontSize||12),d={low:f+(a?0:d),middle:f+d/2,high:f+(a?d:0)}[e.align],b=(a?c+this.height:b)+(a?1:-1)*(g?-1:1)*this.axisTitleMargin+(this.side===2?i:0);return{x:a?d:b+(g?this.width:0)+h+(e.x||0),y:a?b-(g?this.height:0)+h:d+(e.y||0)}},render:function(){var a=this,b=a.horiz,c=a.reversed,d=a.chart,e=d.renderer,f=a.options,g=a.isLog,h=a.isLinked,i=a.tickPositions,j,k=a.axisTitle,l=a.stacks,m=a.ticks,p=a.minorTicks, +q=a.alternateBands,o=f.stackLabels,H=f.alternateGridColor,t=a.tickmarkOffset,w=f.lineWidth,r=d.hasRendered&&s(a.oldMin)&&!isNaN(a.oldMin),v=a.hasData,x=a.showAxis,y,z=a.justifyLabels=!a.staggerLines&&b&&f.labels.overflow==="justify",K;a.labelEdge.length=0;n([m,p,q],function(a){for(var b in a)a[b].isActive=!1});if(v||h)if(a.minorTickInterval&&!a.categories&&n(a.getMinorTickPositions(),function(b){p[b]||(p[b]=new Ra(a,b,"minor"));r&&p[b].isNew&&p[b].render(null,!0);p[b].render(null,!1,1)}),i.length&& +(j=i.slice(),(b&&c||!b&&!c)&&j.reverse(),z&&(j=j.slice(1).concat([j[0]])),n(j,function(b,c){z&&(c=c===j.length-1?0:c+1);if(!h||b>=a.min&&b<=a.max)m[b]||(m[b]=new Ra(a,b)),r&&m[b].isNew&&m[b].render(c,!0,0.1),m[b].render(c,!1,1)}),t&&a.min===0&&(m[-1]||(m[-1]=new Ra(a,-1,null,!0)),m[-1].render(-1))),H&&n(i,function(b,c){if(c%2===0&&b=0.5)a=w(a),g=this.getLinearTickPositions(a,b,c);else if(a>=0.08)for(var f=N(b),h,i,j,k,l,e=a>0.3?[1,2,4]:a>0.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];fb&&(!d||k<=c)&&g.push(k),k>c&&(l=!0),k=j}else if(b=ea(b),c=ea(c),a=e[d?"minorTickInterval":"tickInterval"],a=o(a==="auto"?null:a,this._minorAutoInterval,(c-b)*(e.tickPixelInterval/(d?5:1))/((d?f/this.tickPositions.length:f)|| +1)),a=mb(a,null,lb(a)),g=Sa(this.getLinearTickPositions(a,b,c),ya),!d)this._minorAutoInterval=a/5;if(!d)this.tickInterval=a;return g};ra.prototype.getTimeTicks=function(a,b,c,d){var e=[],f={},g=G.global.useUTC,h,i=new Date(b-Qa),j=a.unitRange,k=a.count;if(s(b)){j>=E.second&&(i.setMilliseconds(0),i.setSeconds(j>=E.minute?0:k*N(i.getSeconds()/k)));if(j>=E.minute)i[Cb](j>=E.hour?0:k*N(i[ob]()/k));if(j>=E.hour)i[Db](j>=E.day?0:k*N(i[pb]()/k));if(j>=E.day)i[rb](j>=E.month?1:k*N(i[Va]()/k));j>=E.month&& +(i[Eb](j>=E.year?0:k*N(i[cb]()/k)),h=i[db]());j>=E.year&&(h-=h%k,i[Fb](h));if(j===E.week)i[rb](i[Va]()-i[qb]()+o(d,1));b=1;Qa&&(i=new Date(i.getTime()+Qa));h=i[db]();for(var d=i.getTime(),l=i[cb](),m=i[Va](),p=g?Qa:(864E5+i.getTimezoneOffset()*6E4)%864E5;d1||M(b-f.y)>1))clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){e&&e.move(a,b,c,d)},32)},hide:function(){var a=this,b;clearTimeout(this.hideTimer);if(!this.isHidden)b=this.chart.hoverPoints,this.hideTimer=setTimeout(function(){a.label.fadeOut();a.isHidden=!0},o(this.options.hideDelay,500)),b&&n(b,function(a){a.setState()}),this.chart.hoverPoints=null},getAnchor:function(a,b){var c,d=this.chart,e=d.inverted, +f=d.plotTop,g=0,h=0,i,a=ka(a);c=a[0].tooltipPos;this.followPointer&&b&&(b.chartX===u&&(b=d.pointer.normalize(b)),c=[b.chartX-d.plotLeft,b.chartY-f]);c||(n(a,function(a){i=a.series.yAxis;g+=a.plotX;h+=(a.plotLow?(a.plotLow+a.plotHigh)/2:a.plotY)+(!e&&i?i.top-f:0)}),g/=a.length,h/=a.length,c=[e?d.plotWidth-h:g,this.shared&&!e&&a.length>1&&b?b.chartY-f:e?d.plotHeight-g:h]);return Sa(c,w)},getPosition:function(a,b,c){var d=this.chart,e=d.plotLeft,f=d.plotTop,g=d.plotWidth,h=d.plotHeight,i=o(this.options.distance, +12),j=c.plotX,c=c.plotY,d=j+e+(d.inverted?i:-a-i),k=c-b+f+15,l;d<7&&(d=e+t(j,0)+i);d+a>e+g&&(d-=d+a-(e+g),k=c-b+f-i,l=!0);k=k&&c<=k+b&&(k=c+f+i));k+b>f+h&&(k=t(f,f+h-b-i));return{x:d,y:k}},defaultFormatter:function(a){var b=this.points||ka(this),c=b[0].series,d;d=[c.tooltipHeaderFormatter(b[0])];n(b,function(a){c=a.series;d.push(c.tooltipFormatter&&c.tooltipFormatter(a)||a.point.tooltipFormatter(c.tooltipOptions.pointFormat))});d.push(a.options.footerFormat||"");return d.join("")}, +refresh:function(a,b){var c=this.chart,d=this.label,e=this.options,f,g,h={},i,j=[];i=e.formatter||this.defaultFormatter;var h=c.hoverPoints,k,l=this.shared;clearTimeout(this.hideTimer);this.followPointer=ka(a)[0].series.tooltipOptions.followPointer;g=this.getAnchor(a,b);f=g[0];g=g[1];l&&(!a.series||!a.series.noSharedTooltip)?(c.hoverPoints=a,h&&n(h,function(a){a.setState()}),n(a,function(a){a.setState("hover");j.push(a.getLabelConfig())}),h={x:a[0].category,y:a[0].y},h.points=j,a=a[0]):h=a.getLabelConfig(); +i=i.call(h,this);h=a.series;i===!1?this.hide():(this.isHidden&&(Ya(d),d.attr("opacity",1).show()),d.attr({text:i}),k=e.borderColor||a.color||h.color||"#606060",d.attr({stroke:k}),this.updatePosition({plotX:f,plotY:g}),this.isHidden=!1);A(c,"tooltipRefresh",{text:i,x:f+c.plotLeft,y:g+c.plotTop,borderColor:k})},updatePosition:function(a){var b=this.chart,c=this.label,c=(this.options.positioner||this.getPosition).call(this,c.width,c.height,a);this.move(w(c.x),w(c.y),a.plotX+b.plotLeft,a.plotY+b.plotTop)}}; +var Za=Highcharts.Pointer=function(a,b){this.init(a,b)};Za.prototype={init:function(a,b){var c=b.chart,d=c.events,e=ba?"":c.zoomType,c=a.inverted,f;this.options=b;this.chart=a;this.zoomX=f=/x/.test(e);this.zoomY=e=/y/.test(e);this.zoomHor=f&&!c||e&&c;this.zoomVert=e&&!c||f&&c;this.runChartClick=d&&!!d.click;this.pinchDown=[];this.lastValidTouch={};if(b.tooltip.enabled)a.tooltip=new sb(a,b.tooltip);this.setDOMEvents()},normalize:function(a,b){var c,d,a=a||C.event;if(!a.target)a.target=a.srcElement; +a=Rb(a);d=a.touches?a.touches.item(0):a;if(!b)this.chartPosition=b=Qb(this.chart.container);d.pageX===u?(c=t(a.x,a.clientX-b.left),d=a.y):(c=d.pageX-b.left,d=d.pageY-b.top);return r(a,{chartX:w(c),chartY:w(d)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};n(this.chart.axes,function(c){b[c.isXAxis?"xAxis":"yAxis"].push({axis:c,value:c.toValue(a[c.horiz?"chartX":"chartY"])})});return b},getIndex:function(a){var b=this.chart;return b.inverted?b.plotHeight+b.plotTop-a.chartY:a.chartX-b.plotLeft}, +runPointActions:function(a){var b=this,c=b.chart,d=c.series,e=c.tooltip,f,g,h=c.hoverPoint,i=c.hoverSeries,j,k,l=c.chartWidth,m=b.getIndex(a);if(e&&b.options.tooltip.shared&&(!i||!i.noSharedTooltip)){g=[];j=d.length;for(k=0;kl&&g.splice(j,1);if(g.length&&g[0].clientX!==b.hoverX)e.refresh(g, +a),b.hoverX=g[0].clientX}if(i&&i.tracker){if((f=i.tooltipPoints[m])&&f!==h)f.onMouseOver(a)}else e&&e.followPointer&&!e.isHidden&&(d=e.getAnchor([{}],a),e.updatePosition({plotX:d[0],plotY:d[1]}));if(e&&!b._onDocumentMouseMove)b._onDocumentMouseMove=function(a){b.onDocumentMouseMove(a)},F(v,"mousemove",b._onDocumentMouseMove);n(c.axes,function(b){b.drawCrosshair(a,o(h,f))})},reset:function(a){var b=this.chart,c=b.hoverSeries,d=b.hoverPoint,e=b.tooltip,f=e&&e.shared?b.hoverPoints:d;(a=a&&e&&f)&&ka(f)[0].plotX=== +u&&(a=!1);if(a)e.refresh(f),d&&d.setState(d.state,!0);else{if(d)d.onMouseOut();if(c)c.onMouseOut();e&&e.hide();if(this._onDocumentMouseMove)X(v,"mousemove",this._onDocumentMouseMove),this._onDocumentMouseMove=null;n(b.axes,function(a){a.hideCrosshair()});this.hoverX=null}},scaleGroups:function(a,b){var c=this.chart,d;n(c.series,function(e){d=a||e.getPlotBox();e.xAxis&&e.xAxis.zoomEnabled&&(e.group.attr(d),e.markerGroup&&(e.markerGroup.attr(d),e.markerGroup.clip(b?c.clipRect:null)),e.dataLabelsGroup&& +e.dataLabelsGroup.attr(d))});c.clipRect.attr(b||c.clipBox)},pinchTranslate:function(a,b,c,d,e,f,g,h){a&&this.pinchTranslateDirection(!0,c,d,e,f,g,h);b&&this.pinchTranslateDirection(!1,c,d,e,f,g,h)},pinchTranslateDirection:function(a,b,c,d,e,f,g,h){var i=this.chart,j=a?"x":"y",k=a?"X":"Y",l="chart"+k,m=a?"width":"height",p=i["plot"+(a?"Left":"Top")],q,o,n=h||1,t=i.inverted,w=i.bounds[a?"h":"v"],r=b.length===1,s=b[0][l],u=c[0][l],v=!r&&b[1][l],x=!r&&c[1][l],y,c=function(){!r&&M(s-v)>20&&(n=h||M(u-x)/ +M(s-v));o=(p-u)/n+s;q=i["plot"+(a?"Width":"Height")]/n};c();b=o;bw.max&&(b=w.max-q,y=!0);y?(u-=0.8*(u-g[j][0]),r||(x-=0.8*(x-g[j][1])),c()):g[j]=[u,x];t||(f[j]=o-p,f[m]=q);f=t?1/n:n;e[m]=q;e[j]=b;d[t?a?"scaleY":"scaleX":"scale"+k]=n;d["translate"+k]=f*p+(u-f*s)},pinch:function(a){var b=this,c=b.chart,d=b.pinchDown,e=c.tooltip&&c.tooltip.options.followTouchMove,f=a.touches,g=f.length,h=b.lastValidTouch,i=b.zoomHor||b.pinchHor,j=b.zoomVert||b.pinchVert,k=i||j,l=b.selectionMarker, +m={},p=g===1&&(b.inClass(a.target,"highcharts-tracker")&&c.runTrackerClick||c.runChartClick),q={};(k||e)&&!p&&a.preventDefault();Sa(f,function(a){return b.normalize(a)});if(a.type==="touchstart")n(f,function(a,b){d[b]={chartX:a.chartX,chartY:a.chartY}}),h.x=[d[0].chartX,d[1]&&d[1].chartX],h.y=[d[0].chartY,d[1]&&d[1].chartY],n(c.axes,function(a){if(a.zoomEnabled){var b=c.bounds[a.horiz?"h":"v"],d=a.minPixelPadding,e=a.toPixels(a.dataMin),f=a.toPixels(a.dataMax),g=I(e,f),e=t(e,f);b.min=I(a.pos,g-d); +b.max=t(a.pos+a.len,e+d)}});else if(d.length){if(!l)b.selectionMarker=l=r({destroy:ma},c.plotBox);b.pinchTranslate(i,j,d,f,m,l,q,h);b.hasPinched=k;b.scaleGroups(m,q);!k&&e&&g===1&&this.runPointActions(b.normalize(a))}},dragStart:function(a){var b=this.chart;b.mouseIsDown=a.type;b.cancelClick=!1;b.mouseDownX=this.mouseDownX=a.chartX;b.mouseDownY=this.mouseDownY=a.chartY},drag:function(a){var b=this.chart,c=b.options.chart,d=a.chartX,e=a.chartY,f=this.zoomHor,g=this.zoomVert,h=b.plotLeft,i=b.plotTop, +j=b.plotWidth,k=b.plotHeight,l,m=this.mouseDownX,p=this.mouseDownY;dh+j&&(d=h+j);ei+k&&(e=i+k);this.hasDragged=Math.sqrt(Math.pow(m-d,2)+Math.pow(p-e,2));if(this.hasDragged>10){l=b.isInsidePlot(m-h,p-i);if(b.hasCartesianSeries&&(this.zoomX||this.zoomY)&&l&&!this.selectionMarker)this.selectionMarker=b.renderer.rect(h,i,f?1:j,g?1:k,0).attr({fill:c.selectionMarkerFill||"rgba(69,114,167,0.25)",zIndex:7}).add();this.selectionMarker&&f&&(d-=m,this.selectionMarker.attr({width:M(d),x:(d> +0?0:d)+m}));this.selectionMarker&&g&&(d=e-p,this.selectionMarker.attr({height:M(d),y:(d>0?0:d)+p}));l&&!this.selectionMarker&&c.panning&&b.pan(a,c.panning)}},drop:function(a){var b=this.chart,c=this.hasPinched;if(this.selectionMarker){var d={xAxis:[],yAxis:[],originalEvent:a.originalEvent||a},e=this.selectionMarker,f=e.x,g=e.y,h;if(this.hasDragged||c)n(b.axes,function(a){if(a.zoomEnabled){var b=a.horiz,c=a.toValue(b?f:g),b=a.toValue(b?f+e.width:g+e.height);!isNaN(c)&&!isNaN(b)&&(d[a.coll].push({axis:a, +min:I(c,b),max:t(c,b)}),h=!0)}}),h&&A(b,"selection",d,function(a){b.zoom(r(a,c?{animation:!1}:null))});this.selectionMarker=this.selectionMarker.destroy();c&&this.scaleGroups()}if(b)D(b.container,{cursor:b._cursor}),b.cancelClick=this.hasDragged>10,b.mouseIsDown=this.hasDragged=this.hasPinched=!1,this.pinchDown=[]},onContainerMouseDown:function(a){a=this.normalize(a);a.preventDefault&&a.preventDefault();this.dragStart(a)},onDocumentMouseUp:function(a){this.drop(a)},onDocumentMouseMove:function(a){var b= +this.chart,c=this.chartPosition,d=b.hoverSeries,a=this.normalize(a,c);c&&d&&!this.inClass(a.target,"highcharts-tracker")&&!b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)&&this.reset()},onContainerMouseLeave:function(){this.reset();this.chartPosition=null},onContainerMouseMove:function(a){var b=this.chart,a=this.normalize(a);b.mouseIsDown==="mousedown"&&this.drag(a);(this.inClass(a.target,"highcharts-tracker")||b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop))&&!b.openMenu&&this.runPointActions(a)}, +inClass:function(a,b){for(var c;a;){if(c=y(a,"class"))if(c.indexOf(b)!==-1)return!0;else if(c.indexOf("highcharts-container")!==-1)return!1;a=a.parentNode}},onTrackerMouseOut:function(a){var b=this.chart.hoverSeries,a=a.relatedTarget||a.toElement,c=a.point&&a.point.series;if(b&&!b.options.stickyTracking&&!this.inClass(a,"highcharts-tooltip")&&c!==b)b.onMouseOut()},onContainerClick:function(a){var b=this.chart,c=b.hoverPoint,d=b.plotLeft,e=b.plotTop,f=b.inverted,g,h,i,a=this.normalize(a);a.cancelBubble= +!0;if(!b.cancelClick)c&&this.inClass(a.target,"highcharts-tracker")?(g=this.chartPosition,h=c.plotX,i=c.plotY,r(c,{pageX:g.left+d+(f?b.plotWidth-i:h),pageY:g.top+e+(f?b.plotHeight-h:i)}),A(c.series,"click",r(a,{point:c})),b.hoverPoint&&c.firePointEvent("click",a)):(r(a,this.getCoordinates(a)),b.isInsidePlot(a.chartX-d,a.chartY-e)&&A(b,"click",a))},onContainerTouchStart:function(a){var b=this.chart;a.touches.length===1?(a=this.normalize(a),b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)?(this.runPointActions(a), +this.pinch(a)):this.reset()):a.touches.length===2&&this.pinch(a)},onContainerTouchMove:function(a){(a.touches.length===1||a.touches.length===2)&&this.pinch(a)},onDocumentTouchEnd:function(a){this.drop(a)},setDOMEvents:function(){var a=this,b=a.chart.container,c;this._events=c=[[b,"onmousedown","onContainerMouseDown"],[b,"onmousemove","onContainerMouseMove"],[b,"onclick","onContainerClick"],[b,"mouseleave","onContainerMouseLeave"],[v,"mouseup","onDocumentMouseUp"]];hb&&c.push([b,"ontouchstart","onContainerTouchStart"], +[b,"ontouchmove","onContainerTouchMove"],[v,"touchend","onDocumentTouchEnd"]);n(c,function(b){a["_"+b[2]]=function(c){a[b[2]](c)};b[1].indexOf("on")===0?b[0][b[1]]=a["_"+b[2]]:F(b[0],b[1],a["_"+b[2]])})},destroy:function(){var a=this;n(a._events,function(b){b[1].indexOf("on")===0?b[0][b[1]]=null:X(b[0],b[1],a["_"+b[2]])});delete a._events;clearInterval(a.tooltipTimeout)}};J=Highcharts.TrackerMixin={drawTrackerPoint:function(){var a=this,b=a.chart,c=b.pointer,d=a.options.cursor,e=d&&{cursor:d},f=function(c){var d= +c.target,e;if(b.hoverSeries!==a)a.onMouseOver();for(;d&&!e;)e=d.point,d=d.parentNode;if(e!==u&&e!==b.hoverPoint)e.onMouseOver(c)};n(a.points,function(a){if(a.graphic)a.graphic.element.point=a;if(a.dataLabel)a.dataLabel.element.point=a});if(!a._hasTracking)n(a.trackerGroups,function(b){if(a[b]&&(a[b].addClass("highcharts-tracker").on("mouseover",f).on("mouseout",function(a){c.onTrackerMouseOut(a)}).css(e),hb))a[b].on("touchstart",f)}),a._hasTracking=!0},drawTrackerGraph:function(){var a=this,b=a.options, +c=b.trackByArea,d=[].concat(c?a.areaPath:a.graphPath),e=d.length,f=a.chart,g=f.pointer,h=f.renderer,i=f.options.tooltip.snap,j=a.tracker,k=b.cursor,l=k&&{cursor:k},k=a.singlePoints,m,p=function(){if(f.hoverSeries!==a)a.onMouseOver()};if(e&&!c)for(m=e+1;m--;)d[m]==="M"&&d.splice(m+1,0,d[m+1]-i,d[m+2],"L"),(m&&d[m]==="M"||m===e)&&d.splice(m,0,"L",d[m-2]+i,d[m-1]);for(m=0;mc-6&&g(p||c.chartWidth-2*k-r))b.itemX=r,b.itemY+=n+b.lastLineHeight+q,b.lastLineHeight=0;b.maxItemWidth=t(b.maxItemWidth,e);b.lastItemY=n+b.itemY+q;b.lastLineHeight=t(g,b.lastLineHeight); +a._legendItemPos=[b.itemX,b.itemY];f?b.itemX+=e:(b.itemY+=n+g+q,b.lastLineHeight=g);b.offsetWidth=p||t((f?b.itemX-r-l:e)+k,b.offsetWidth)},getAllItems:function(){var a=[];n(this.chart.series,function(b){var c=b.options;if(o(c.showInLegend,!s(c.linkedTo)?u:!1,!0))a=a.concat(b.legendItems||(c.legendType==="point"?b.data:b))});return a},render:function(){var a=this,b=a.chart,c=b.renderer,d=a.group,e,f,g,h,i=a.box,j=a.options,k=a.padding,l=j.borderWidth,m=j.backgroundColor;a.itemX=a.initialItemX;a.itemY= +a.initialItemY;a.offsetWidth=0;a.lastItemY=0;if(!d)a.group=d=c.g("legend").attr({zIndex:7}).add(),a.contentGroup=c.g().attr({zIndex:1}).add(d),a.scrollGroup=c.g().add(a.contentGroup);a.renderTitle();e=a.getAllItems();nb(e,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});j.reversed&&e.reverse();a.allItems=e;a.display=f=!!e.length;n(e,function(b){a.renderItem(b)});g=j.width||a.offsetWidth;h=a.lastItemY+a.lastLineHeight+a.titleHeight;h=a.handleOverflow(h); +if(l||m){g+=k;h+=k;if(i){if(g>0&&h>0)i[i.isNew?"attr":"animate"](i.crisp(null,null,null,g,h)),i.isNew=!1}else a.box=i=c.rect(0,0,g,h,j.borderRadius,l||0).attr({stroke:j.borderColor,"stroke-width":l||0,fill:m||Q}).add(d).shadow(j.shadow),i.isNew=!0;i[f?"show":"hide"]()}a.legendWidth=g;a.legendHeight=h;n(e,function(b){a.positionItem(b)});f&&d.align(r({width:g,height:h},j),!0,"spacingBox");b.isResizing||this.positionCheckboxes()},handleOverflow:function(a){var b=this,c=this.chart,d=c.renderer,e=this.options, +f=e.y,f=c.spacingBox.height+(e.verticalAlign==="top"?-f:f)-this.padding,g=e.maxHeight,h,i=this.clipRect,j=e.navigation,k=o(j.animation,!0),l=j.arrowSize||12,m=this.nav,p=this.pages,q,t=this.allItems;e.layout==="horizontal"&&(f/=2);g&&(f=I(f,g));p.length=0;if(a>f&&!e.useHTML){this.clipHeight=h=f-20-this.titleHeight-this.padding;this.currentPage=o(this.currentPage,1);this.fullHeight=a;n(t,function(a,b){var c=a._legendItemPos[1],d=w(a.legendItem.bBox.height),e=p.length;if(!e||c-p[e-1]>h)p.push(q||c); +b===t.length-1&&c+d-p[e-1]>h&&p.push(c);c!==q&&(q=c)});if(!i)i=b.clipRect=d.clipRect(0,this.padding,9999,0),b.contentGroup.clip(i);i.attr({height:h});if(!m)this.nav=m=d.g().attr({zIndex:1}).add(this.group),this.up=d.symbol("triangle",0,0,l,l).on("click",function(){b.scroll(-1,k)}).add(m),this.pager=d.text("",15,10).css(j.style).add(m),this.down=d.symbol("triangle-down",0,0,l,l).on("click",function(){b.scroll(1,k)}).add(m);b.scroll(0);a=f}else if(m)i.attr({height:c.chartHeight}),m.hide(),this.scrollGroup.attr({translateY:1}), +this.clipHeight=0;return a},scroll:function(a,b){var c=this.pages,d=c.length,e=this.currentPage+a,f=this.clipHeight,g=this.options.navigation,h=g.activeColor,g=g.inactiveColor,i=this.pager,j=this.padding;e>d&&(e=d);if(e>0)b!==u&&Pa(b,this.chart),this.nav.attr({translateX:j,translateY:f+this.padding+7+this.titleHeight,visibility:"visible"}),this.up.attr({fill:e===1?g:h}).css({cursor:e===1?"default":"pointer"}),i.attr({text:e+"/"+d}),this.down.attr({x:18+this.pager.getBBox().width,fill:e===d?g:h}).css({cursor:e=== +d?"default":"pointer"}),c=-c[e-1]+this.initialItemY,this.scrollGroup.animate({translateY:c}),this.currentPage=e,this.positionCheckboxes(c)}};R=Highcharts.LegendSymbolMixin={drawRectangle:function(a,b){var c=a.options.symbolHeight||12;b.legendSymbol=this.chart.renderer.rect(0,a.baseline-5-c/2,a.symbolWidth,c,o(a.options.symbolRadius,2)).attr({zIndex:3}).add(b.legendGroup)},drawLineMarker:function(a){var b=this.options,c=b.marker,d;d=a.symbolWidth;var e=this.chart.renderer,f=this.legendGroup,a=a.baseline- +w(e.fontMetrics(a.options.itemStyle.fontSize).b*0.3),g;if(b.lineWidth){g={"stroke-width":b.lineWidth};if(b.dashStyle)g.dashstyle=b.dashStyle;this.legendLine=e.path(["M",0,a,"L",d,a]).attr(g).add(f)}if(c&&c.enabled)b=c.radius,this.legendSymbol=d=e.symbol(this.symbol,d/2-b,a-b,2*b,2*b).add(f),d.isMarker=!0}};/Trident\/7\.0/.test(sa)&&Ua(zb.prototype,"positionItem",function(a,b){var c=this,d=function(){b._legendItemPos&&a.call(c,b)};c.chart.renderer.forExport?d():setTimeout(d)});eb.prototype={init:function(a, +b){var c,d=a.series;a.series=null;c=x(G,a);c.series=a.series=d;this.userOptions=a;d=c.chart;this.margin=this.splashArray("margin",d);this.spacing=this.splashArray("spacing",d);var e=d.events;this.bounds={h:{},v:{}};this.callback=b;this.isResizing=0;this.options=c;this.axes=[];this.series=[];this.hasCartesianSeries=d.showAxes;var f=this,g;f.index=Ja.length;Ja.push(f);d.reflow!==!1&&F(f,"load",function(){f.initReflow()});if(e)for(g in e)F(f,g,e[g]);f.xAxis=[];f.yAxis=[];f.animation=ba?!1:o(d.animation, +!0);f.pointCount=0;f.counters=new Ab;f.firstRender()},initSeries:function(a){var b=this.options.chart;(b=L[a.type||b.type||b.defaultSeriesType])||la(17,!0);b=new b;b.init(this,a);return b},isInsidePlot:function(a,b,c){var d=c?b:a,a=c?a:b;return d>=0&&d<=this.plotWidth&&a>=0&&a<=this.plotHeight},adjustTickAmounts:function(){this.options.chart.alignTicks!==!1&&n(this.axes,function(a){a.adjustTickAmount()});this.maxTicks=null},redraw:function(a){var b=this.axes,c=this.series,d=this.pointer,e=this.legend, +f=this.isDirtyLegend,g,h,i=this.isDirtyBox,j=c.length,k=j,l=this.renderer,m=l.isHidden(),p=[];Pa(a,this);m&&this.cloneRenderTo();for(this.layOutTitles();k--;)if(a=c[k],a.options.stacking&&(g=!0,a.isDirty)){h=!0;break}if(h)for(k=j;k--;)if(a=c[k],a.options.stacking)a.isDirty=!0;n(c,function(a){a.isDirty&&a.options.legendType==="point"&&(f=!0)});if(f&&e.options.enabled)e.render(),this.isDirtyLegend=!1;g&&this.getStacks();if(this.hasCartesianSeries){if(!this.isResizing)this.maxTicks=null,n(b,function(a){a.setScale()}); +this.adjustTickAmounts();this.getMargins();n(b,function(a){a.isDirty&&(i=!0)});n(b,function(a){if(a.isDirtyExtremes)a.isDirtyExtremes=!1,p.push(function(){A(a,"afterSetExtremes",r(a.eventArgs,a.getExtremes()));delete a.eventArgs});(i||g)&&a.redraw()})}i&&this.drawChartBox();n(c,function(a){a.isDirty&&a.visible&&(!a.isCartesian||a.xAxis)&&a.redraw()});d&&d.reset&&d.reset(!0);l.draw();A(this,"redraw");m&&this.cloneRenderTo(!0);n(p,function(a){a.call()})},get:function(a){var b=this.axes,c=this.series, +d,e;for(d=0;dI(k.dataMin,k.min)&&i=18&&a<=25&&(a=15);c&&(c.css({width:(d.width||f)+"px"}).align(r({y:a+e.margin},d),!1,"spacingBox"),!d.floating&& +!d.verticalAlign&&(a=Ia(a+c.getBBox().height)));this.titleOffset=a},getChartSize:function(){var a=this.options.chart,b=this.renderToClone||this.renderTo;this.containerWidth=ib(b,"width");this.containerHeight=ib(b,"height");this.chartWidth=t(0,a.width||this.containerWidth||600);this.chartHeight=t(0,o(a.height,this.containerHeight>19?this.containerHeight:400))},cloneRenderTo:function(a){var b=this.renderToClone,c=this.container;a?b&&(this.renderTo.appendChild(c),Oa(b),delete this.renderToClone):(c&& +c.parentNode===this.renderTo&&this.renderTo.removeChild(c),this.renderToClone=b=this.renderTo.cloneNode(0),D(b,{position:"absolute",top:"-9999px",display:"block"}),v.body.appendChild(b),c&&b.appendChild(c))},getContainer:function(){var a,b=this.options.chart,c,d,e;this.renderTo=a=b.renderTo;e="highcharts-"+tb++;if(da(a))this.renderTo=a=v.getElementById(a);a||la(13,!0);c=z(y(a,"data-highcharts-chart"));!isNaN(c)&&Ja[c]&&Ja[c].destroy();y(a,"data-highcharts-chart",this.index);a.innerHTML="";a.offsetWidth|| +this.cloneRenderTo();this.getChartSize();c=this.chartWidth;d=this.chartHeight;this.container=a=T(Ha,{className:"highcharts-container"+(b.className?" "+b.className:""),id:e},r({position:"relative",overflow:"hidden",width:c+"px",height:d+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)"},b.style),this.renderToClone||a);this._cursor=a.style.cursor;this.renderer=b.forExport?new va(a,c,d,!0):new Xa(a,c,d);ba&&this.renderer.create(this,a,c,d)},getMargins:function(){var a= +this.spacing,b,c=this.legend,d=this.margin,e=this.options.legend,f=o(e.margin,10),g=e.x,h=e.y,i=e.align,j=e.verticalAlign,k=this.titleOffset;this.resetMargins();b=this.axisOffset;if(k&&!s(d[0]))this.plotTop=t(this.plotTop,k+this.options.title.margin+a[0]);if(c.display&&!e.floating)if(i==="right"){if(!s(d[1]))this.marginRight=t(this.marginRight,c.legendWidth-g+f+a[1])}else if(i==="left"){if(!s(d[3]))this.plotLeft=t(this.plotLeft,c.legendWidth+g+f+a[3])}else if(j==="top"){if(!s(d[0]))this.plotTop=t(this.plotTop, +c.legendHeight+h+f+a[0])}else if(j==="bottom"&&!s(d[2]))this.marginBottom=t(this.marginBottom,c.legendHeight-h+f+a[2]);this.extraBottomMargin&&(this.marginBottom+=this.extraBottomMargin);this.extraTopMargin&&(this.plotTop+=this.extraTopMargin);this.hasCartesianSeries&&n(this.axes,function(a){a.getOffset()});s(d[3])||(this.plotLeft+=b[3]);s(d[0])||(this.plotTop+=b[0]);s(d[2])||(this.marginBottom+=b[2]);s(d[1])||(this.marginRight+=b[1]);this.setChartSize()},reflow:function(a){var b=this,c=b.options.chart, +d=b.renderTo,e=c.width||ib(d,"width"),f=c.height||ib(d,"height"),c=a?a.target:C,d=function(){if(b.container)b.setSize(e,f,!1),b.hasUserSize=null};if(!b.hasUserSize&&e&&f&&(c===C||c===v)){if(e!==b.containerWidth||f!==b.containerHeight)clearTimeout(b.reflowTimeout),a?b.reflowTimeout=setTimeout(d,100):d();b.containerWidth=e;b.containerHeight=f}},initReflow:function(){var a=this,b=function(b){a.reflow(b)};F(C,"resize",b);F(a,"destroy",function(){X(C,"resize",b)})},setSize:function(a,b,c){var d=this,e, +f,g;d.isResizing+=1;g=function(){d&&A(d,"endResize",null,function(){d.isResizing-=1})};Pa(c,d);d.oldChartHeight=d.chartHeight;d.oldChartWidth=d.chartWidth;if(s(a))d.chartWidth=e=t(0,w(a)),d.hasUserSize=!!e;if(s(b))d.chartHeight=f=t(0,w(b));(pa?jb:D)(d.container,{width:e+"px",height:f+"px"},pa);d.setChartSize(!0);d.renderer.setSize(e,f,c);d.maxTicks=null;n(d.axes,function(a){a.isDirty=!0;a.setScale()});n(d.series,function(a){a.isDirty=!0});d.isDirtyLegend=!0;d.isDirtyBox=!0;d.getMargins();d.redraw(c); +d.oldChartHeight=null;A(d,"resize");pa===!1?g():setTimeout(g,pa&&pa.duration||500)},setChartSize:function(a){var b=this.inverted,c=this.renderer,d=this.chartWidth,e=this.chartHeight,f=this.options.chart,g=this.spacing,h=this.clipOffset,i,j,k,l;this.plotLeft=i=w(this.plotLeft);this.plotTop=j=w(this.plotTop);this.plotWidth=k=t(0,w(d-i-this.marginRight));this.plotHeight=l=t(0,w(e-j-this.marginBottom));this.plotSizeX=b?l:k;this.plotSizeY=b?k:l;this.plotBorderWidth=f.plotBorderWidth||0;this.spacingBox= +c.spacingBox={x:g[3],y:g[0],width:d-g[3]-g[1],height:e-g[0]-g[2]};this.plotBox=c.plotBox={x:i,y:j,width:k,height:l};d=2*N(this.plotBorderWidth/2);b=Ia(t(d,h[3])/2);c=Ia(t(d,h[0])/2);this.clipBox={x:b,y:c,width:N(this.plotSizeX-t(d,h[1])/2-b),height:N(this.plotSizeY-t(d,h[2])/2-c)};a||n(this.axes,function(a){a.setAxisSize();a.setAxisTranslation()})},resetMargins:function(){var a=this.spacing,b=this.margin;this.plotTop=o(b[0],a[0]);this.marginRight=o(b[1],a[1]);this.marginBottom=o(b[2],a[2]);this.plotLeft= +o(b[3],a[3]);this.axisOffset=[0,0,0,0];this.clipOffset=[0,0,0,0]},drawChartBox:function(){var a=this.options.chart,b=this.renderer,c=this.chartWidth,d=this.chartHeight,e=this.chartBackground,f=this.plotBackground,g=this.plotBorder,h=this.plotBGImage,i=a.borderWidth||0,j=a.backgroundColor,k=a.plotBackgroundColor,l=a.plotBackgroundImage,m=a.plotBorderWidth||0,p,q=this.plotLeft,o=this.plotTop,n=this.plotWidth,t=this.plotHeight,s=this.plotBox,r=this.clipRect,w=this.clipBox;p=i+(a.shadow?8:0);if(i||j)if(e)e.animate(e.crisp(null, +null,null,c-p,d-p));else{e={fill:j||Q};if(i)e.stroke=a.borderColor,e["stroke-width"]=i;this.chartBackground=b.rect(p/2,p/2,c-p,d-p,a.borderRadius,i).attr(e).add().shadow(a.shadow)}if(k)f?f.animate(s):this.plotBackground=b.rect(q,o,n,t,0).attr({fill:k}).add().shadow(a.plotShadow);if(l)h?h.animate(s):this.plotBGImage=b.image(l,q,o,n,t).add();r?r.animate({width:w.width,height:w.height}):this.clipRect=b.clipRect(w);if(m)g?g.animate(g.crisp(null,q,o,n,t)):this.plotBorder=b.rect(q,o,n,t,0,-m).attr({stroke:a.plotBorderColor, +"stroke-width":m,zIndex:1}).add();this.isDirtyBox=!1},propFromSeries:function(){var a=this,b=a.options.chart,c,d=a.options.series,e,f;n(["inverted","angular","polar"],function(g){c=L[b.type||b.defaultSeriesType];f=a[g]||b[g]||c&&c.prototype[g];for(e=d&&d.length;!f&&e--;)(c=L[d[e].type])&&c.prototype[g]&&(f=!0);a[g]=f})},linkSeries:function(){var a=this,b=a.series;n(b,function(a){a.linkedSeries.length=0});n(b,function(b){var d=b.options.linkedTo;if(da(d)&&(d=d===":previous"?a.series[b.index-1]:a.get(d)))d.linkedSeries.push(b), +b.linkedParent=d})},render:function(){var a=this,b=a.axes,c=a.renderer,d=a.options,e=d.labels,f=d.credits,g;a.setTitle();a.legend=new zb(a,d.legend);a.getStacks();n(b,function(a){a.setScale()});a.getMargins();a.maxTicks=null;n(b,function(a){a.setTickPositions(!0);a.setMaxTicks()});a.adjustTickAmounts();a.getMargins();a.drawChartBox();a.hasCartesianSeries&&n(b,function(a){a.render()});if(!a.seriesGroup)a.seriesGroup=c.g("series-group").attr({zIndex:3}).add();n(a.series,function(a){a.translate();a.setTooltipPoints(); +a.render()});e.items&&n(e.items,function(b){var d=r(e.style,b.style),f=z(d.left)+a.plotLeft,g=z(d.top)+a.plotTop+12;delete d.left;delete d.top;c.text(b.html,f,g).attr({zIndex:2}).css(d).add()});if(f.enabled&&!a.credits)g=f.href,a.credits=c.text(f.text,0,0).on("click",function(){if(g)location.href=g}).attr({align:f.position.align,zIndex:8}).css(f.style).add().align(f.position);a.hasRendered=!0},destroy:function(){var a=this,b=a.axes,c=a.series,d=a.container,e,f=d&&d.parentNode;A(a,"destroy");Ja[a.index]= +u;a.renderTo.removeAttribute("data-highcharts-chart");X(a);for(e=b.length;e--;)b[e]=b[e].destroy();for(e=c.length;e--;)c[e]=c[e].destroy();n("title,subtitle,chartBackground,plotBackground,plotBGImage,plotBorder,seriesGroup,clipRect,credits,pointer,scroller,rangeSelector,legend,resetZoomButton,tooltip,renderer".split(","),function(b){var c=a[b];c&&c.destroy&&(a[b]=c.destroy())});if(d)d.innerHTML="",X(d),f&&Oa(d);for(e in a)delete a[e]},isReadyToRender:function(){var a=this;return!V&&C==C.top&&v.readyState!== +"complete"||ba&&!C.canvg?(ba?Mb.push(function(){a.firstRender()},a.options.global.canvasToolsURL):v.attachEvent("onreadystatechange",function(){v.detachEvent("onreadystatechange",a.firstRender);v.readyState==="complete"&&a.firstRender()}),!1):!0},firstRender:function(){var a=this,b=a.options,c=a.callback;if(a.isReadyToRender())a.getContainer(),A(a,"init"),a.resetMargins(),a.setChartSize(),a.propFromSeries(),a.getAxes(),n(b.series||[],function(b){a.initSeries(b)}),a.linkSeries(),A(a,"beforeRender"), +a.pointer=new Za(a,b),a.render(),a.renderer.draw(),c&&c.apply(a,[a]),n(a.callbacks,function(b){b.apply(a,[a])}),a.cloneRenderTo(!0),A(a,"load")},splashArray:function(a,b){var c=b[a],c=S(c)?c:[c,c,c,c];return[o(b[a+"Top"],c[0]),o(b[a+"Right"],c[1]),o(b[a+"Bottom"],c[2]),o(b[a+"Left"],c[3])]}};eb.prototype.callbacks=[];var xb=Highcharts.CenteredSeriesMixin={getCenter:function(){var a=this.options,b=this.chart,c=2*(a.slicedOffset||0),d,e=b.plotWidth-2*c,f=b.plotHeight-2*c,b=a.center,a=[o(b[0],"50%"), +o(b[1],"50%"),a.size||"100%",a.innerSize||0],g=I(e,f),h;return Sa(a,function(a,b){h=/%$/.test(a);d=b<2||b===2&&h;return(h?[e,f,g,g][b]*z(a)/100:a)+(d?c:0)})}},Ka=function(){};Ka.prototype={init:function(a,b,c){this.series=a;this.applyOptions(b,c);this.pointAttr={};if(a.options.colorByPoint&&(b=a.options.colors||a.chart.options.colors,this.color=this.color||b[a.colorCounter++],a.colorCounter===b.length))a.colorCounter=0;a.chart.pointCount++;return this},applyOptions:function(a,b){var c=this.series, +d=c.pointValKey,a=Ka.prototype.optionsToObject.call(this,a);r(this,a);this.options=this.options?r(this.options,a):a;if(d)this.y=this[d];if(this.x===u&&c)this.x=b===u?c.autoIncrement():b;return this},optionsToObject:function(a){var b={},c=this.series,d=c.pointArrayMap||["y"],e=d.length,f=0,g=0;if(typeof a==="number"||a===null)b[d[0]]=a;else if(La(a)){if(a.length>e){c=typeof a[0];if(c==="string")b.name=a[0];else if(c==="number")b.x=a[0];f++}for(;ga+1&&b.push(d.slice(a+1,g)),a=g):g===e-1&&b.push(d.slice(a+1,g+1))});this.segments= +b},setOptions:function(a){var b=this.chart,c=b.options.plotOptions,b=b.userOptions||{},d=b.plotOptions||{},e=c[this.type];this.userOptions=a;c=x(e,c.series,a);this.tooltipOptions=x(G.tooltip,G.plotOptions[this.type].tooltip,b.tooltip,d.series&&d.series.tooltip,d[this.type]&&d[this.type].tooltip,a.tooltip);e.marker===null&&delete c.marker;return c},getColor:function(){var a=this.options,b=this.userOptions,c=this.chart.options.colors,d=this.chart.counters,e;e=a.color||Y[this.type].color;if(!e&&!a.colorByPoint)s(b._colorIndex)? +a=b._colorIndex:(b._colorIndex=d.color,a=d.color++),e=c[a];this.color=e;d.wrapColor(c.length)},getSymbol:function(){var a=this.userOptions,b=this.options.marker,c=this.chart,d=c.options.symbols,c=c.counters;this.symbol=b.symbol;if(!this.symbol)s(a._symbolIndex)?a=a._symbolIndex:(a._symbolIndex=c.symbol,a=c.symbol++),this.symbol=d[a];if(/^url/.test(this.symbol))b.radius=0;c.wrapSymbol(d.length)},drawLegendSymbol:R.drawLineMarker,setData:function(a,b){var c=this,d=c.points,e=c.options,f=c.chart,g=null, +h=c.xAxis,i=h&&!!h.categories,j;c.xIncrement=null;c.pointRange=i?1:e.pointRange;c.colorCounter=0;var a=a||[],k=a.length;j=e.turboThreshold;var l=this.xData,m=this.yData,p=c.pointArrayMap,p=p&&p.length;n(this.parallelArrays,function(a){c[a+"Data"].length=0});if(j&&k>j){for(j=0;g===null&&jj||this.forceCrop))if(a=h.min,h=h.max,b[d-1]h)b=[],c=[];else if(b[0]h)e=this.cropData(this.xData,this.yData,a,h),b=e.xData,c=e.yData,e=e.start,f=!0;for(h=b.length-1;h>=0;h--)d=b[h]-b[h-1],d>0&&(g===u||d=c){f=t(0,i-h);break}for(;id){g=i+h;break}return{xData:a.slice(f,g),yData:b.slice(f,g),start:f,end:g}},generatePoints:function(){var a=this.options.data,b=this.data,c,d=this.processedXData,e=this.processedYData,f=this.pointClass,g=d.length,h=this.cropStart||0,i,j=this.hasGroupedData,k,l=[],m;if(!b&&!j)b=[],b.length=a.length,b=this.data=b;for(m=0;m0),j=this.getExtremesFromAll||this.cropped||(c[l+1]||j)>=g&&(c[l-1]||j)<=h,i&&j)if(i=k.length)for(;i--;)k[i]!==null&&(e[f++]=k[i]);else e[f++]=k;this.dataMin=o(void 0,Ma(e));this.dataMax=o(void 0,Aa(e))},translate:function(){this.processedXData||this.processData();this.generatePoints();for(var a=this.options,b=a.stacking,c=this.xAxis,d=c.categories,e=this.yAxis,f=this.points,g=f.length,h=!!this.modifyValue,i=a.pointPlacement,j=i=== +"between"||xa(i),k=a.threshold,a=0;a=f.min&&c<=f.max){h=b[i+1];c=d===u?0:d+1;for(d=b[i+1]?I(t(0,N((e.clientX+(h?h.wrappedClientX||h.clientX:g))/2)),g):g;c>=0&&c<=d;)j[c++]=e}this.tooltipPoints=j}},tooltipHeaderFormatter:function(a){var b=this.tooltipOptions,c=b.dateTimeLabelFormats,d=b.xDateFormat||c.year,e=this.xAxis,f=e&&e.options.type==="datetime",b=b.headerFormat,e=e&&e.closestPointRange,g;if(f&&!d)if(e)for(g in E){if(E[g]>=e){d=c[g]; +break}}else d=c.day;f&&d&&xa(a.key)&&(b=b.replace("{point.key}","{point.key:"+d+"}"));return Ga(b,{point:a,series:this})},onMouseOver:function(){var a=this.chart,b=a.hoverSeries;if(b&&b!==this)b.onMouseOut();this.options.events.mouseOver&&A(this,"mouseOver");this.setState("hover");a.hoverSeries=this},onMouseOut:function(){var a=this.options,b=this.chart,c=b.tooltip,d=b.hoverPoint;if(d)d.onMouseOut();this&&a.events.mouseOut&&A(this,"mouseOut");c&&!a.stickyTracking&&(!c.shared||this.noSharedTooltip)&& +c.hide();this.setState();b.hoverSeries=null},animate:function(a){var b=this,c=b.chart,d=c.renderer,e;e=b.options.animation;var f=c.clipBox,g=c.inverted,h;if(e&&!S(e))e=Y[b.type].animation;h="_sharedClip"+e.duration+e.easing;if(a)a=c[h],e=c[h+"m"],a||(c[h]=a=d.clipRect(r(f,{width:0})),c[h+"m"]=e=d.clipRect(-99,g?-c.plotLeft:-c.plotTop,99,g?c.chartWidth:c.chartHeight)),b.group.clip(a),b.markerGroup.clip(e),b.sharedClipKey=h;else{if(a=c[h])a.animate({width:c.plotSizeX},e),c[h+"m"].animate({width:c.plotSizeX+ +99},e);b.animate=null;b.animationTimeout=setTimeout(function(){b.afterAnimate()},e.duration)}},afterAnimate:function(){var a=this.chart,b=this.sharedClipKey,c=this.group;c&&this.options.clip!==!1&&(c.clip(a.clipRect),this.markerGroup.clip());setTimeout(function(){b&&a[b]&&(a[b]=a[b].destroy(),a[b+"m"]=a[b+"m"].destroy())},100)},drawPoints:function(){var a,b=this.points,c=this.chart,d,e,f,g,h,i,j,k,l=this.options.marker,m=this.pointAttr[""],p,q=this.markerGroup;if(l.enabled||this._hasPointMarkers)for(f= +b.length;f--;)if(g=b[f],d=N(g.plotX),e=g.plotY,k=g.graphic,i=g.marker||{},a=l.enabled&&i.enabled===u||i.enabled,p=c.isInsidePlot(w(d),e,c.inverted),a&&e!==u&&!isNaN(e)&&g.y!==null)if(a=g.pointAttr[g.selected?"select":""]||m,h=a.r,i=o(i.symbol,this.symbol),j=i.indexOf("url")===0,k)k.attr({visibility:p?V?"inherit":"visible":"hidden"}).animate(r({x:d-h,y:e-h},k.symbolName?{width:2*h,height:2*h}:{}));else{if(p&&(h>0||j))g.graphic=c.renderer.symbol(i,d-h,e-h,2*h,2*h).attr(a).add(q)}else if(k)g.graphic= +k.destroy()},convertAttribs:function(a,b,c,d){var e=this.pointAttrToOptions,f,g,h={},a=a||{},b=b||{},c=c||{},d=d||{};for(f in e)g=e[f],h[f]=o(a[g],b[f],c[f],d[f]);return h},getAttribs:function(){var a=this,b=a.options,c=Y[a.type].marker?b.marker:b,d=c.states,e=d.hover,f,g=a.color;f={stroke:g,fill:g};var h=a.points||[],i,j=[],k,l=a.pointAttrToOptions;i=b.turboThreshold;var m=b.negativeColor,p=c.lineColor,q;b.marker?(e.radius=e.radius||c.radius+2,e.lineWidth=e.lineWidth||c.lineWidth+1):e.color=e.color|| +ua(e.color||g).brighten(e.brightness).get();j[""]=a.convertAttribs(c,f);n(["hover","select"],function(b){j[b]=a.convertAttribs(d[b],j[""])});a.pointAttr=j;g=h.length;if(!i||g1?b=b.concat(c):d.push(e[0])});a.singlePoints=d;return a.graphPath=b},drawGraph:function(){var a=this,b=this.options,c=[["graph",b.lineColor||this.color]],d=b.lineWidth,e=b.dashStyle,f=b.linecap!=="square",g=this.getGraphPath(),h=b.negativeColor; +h&&c.push(["graphNeg",h]);n(c,function(c,h){var k=c[0],l=a[k];if(l)Ya(l),l.animate({d:g});else if(d&&g.length)l={stroke:c[1],"stroke-width":d,zIndex:1},e?l.dashstyle=e:f&&(l["stroke-linecap"]=l["stroke-linejoin"]="round"),a[k]=a.chart.renderer.path(g).attr(l).add(a.group).shadow(!h&&b.shadow)})},clipNeg:function(){var a=this.options,b=this.chart,c=b.renderer,d=a.negativeColor||a.negativeFillColor,e,f=this.graph,g=this.area,h=this.posClip,i=this.negClip;e=b.chartWidth;var j=b.chartHeight,k=t(e,j), +l=this.yAxis;if(d&&(f||g)){d=w(l.toPixels(a.threshold||0,!0));d<0&&(k-=d);a={x:0,y:0,width:k,height:d};k={x:0,y:d,width:k,height:k};if(b.inverted)a.height=k.y=b.plotWidth-d,c.isVML&&(a={x:b.plotWidth-d-b.plotLeft,y:0,width:e,height:j},k={x:d+b.plotLeft-e,y:0,width:b.plotLeft+d,height:e});l.reversed?(b=k,e=a):(b=a,e=k);h?(h.animate(b),i.animate(e)):(this.posClip=h=c.clipRect(b),this.negClip=i=c.clipRect(e),f&&this.graphNeg&&(f.clip(h),this.graphNeg.clip(i)),g&&(g.clip(h),this.areaNeg.clip(i)))}},invertGroups:function(){function a(){var a= +{width:b.yAxis.len,height:b.xAxis.len};n(["group","markerGroup"],function(c){b[c]&&b[c].attr(a).invert()})}var b=this,c=b.chart;if(b.xAxis)F(c,"resize",a),F(b,"destroy",function(){X(c,"resize",a)}),a(),b.invertGroups=a},plotGroup:function(a,b,c,d,e){var f=this[a],g=!f;g&&(this[a]=f=this.chart.renderer.g(b).attr({visibility:c,zIndex:d||0.1}).add(e));f[g?"attr":"animate"](this.getPlotBox());return f},getPlotBox:function(){return{translateX:this.xAxis?this.xAxis.left:this.chart.plotLeft,translateY:this.yAxis? +this.yAxis.top:this.chart.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this.chart,b,c=this.options,d=c.animation&&!!this.animate&&a.renderer.isSVG,e=this.visible?"visible":"hidden",f=c.zIndex,g=this.hasRendered,h=a.seriesGroup;b=this.plotGroup("group","series",e,f,h);this.markerGroup=this.plotGroup("markerGroup","markers",e,f,h);d&&this.animate(!0);this.getAttribs();b.inverted=this.isCartesian?a.inverted:!1;this.drawGraph&&(this.drawGraph(),this.clipNeg());this.drawDataLabels&&this.drawDataLabels(); +this.visible&&this.drawPoints();this.options.enableMouseTracking!==!1&&this.drawTracker();a.inverted&&this.invertGroups();c.clip!==!1&&!this.sharedClipKey&&!g&&b.clip(a.clipRect);d?this.animate():g||this.afterAnimate();this.isDirty=this.isDirtyData=!1;this.hasRendered=!0},redraw:function(){var a=this.chart,b=this.isDirtyData,c=this.group,d=this.xAxis,e=this.yAxis;c&&(a.inverted&&c.attr({width:a.plotWidth,height:a.plotHeight}),c.animate({translateX:o(d&&d.left,a.plotLeft),translateY:o(e&&e.top,a.plotTop)})); +this.translate();this.setTooltipPoints(!0);this.render();b&&A(this,"updatedData")},setState:function(a){var b=this.options,c=this.graph,d=this.graphNeg,e=b.states,b=b.lineWidth,a=a||"";if(this.state!==a)this.state=a,e[a]&&e[a].enabled===!1||(a&&(b=e[a].lineWidth||b+1),c&&!c.dashstyle&&(a={"stroke-width":b},c.attr(a),d&&d.attr(a)))},setVisible:function(a,b){var c=this,d=c.chart,e=c.legendItem,f,g=d.options.chart.ignoreHiddenSeries,h=c.visible;f=(c.visible=a=c.userOptions.visible=a===u?!h:a)?"show": +"hide";n(["group","dataLabelsGroup","markerGroup","tracker"],function(a){if(c[a])c[a][f]()});if(d.hoverSeries===c)c.onMouseOut();e&&d.legend.colorizeItem(c,a);c.isDirty=!0;c.options.stacking&&n(d.series,function(a){if(a.options.stacking&&a.visible)a.isDirty=!0});n(c.linkedSeries,function(b){b.setVisible(a,!1)});if(g)d.isDirtyBox=!0;b!==!1&&d.redraw();A(c,f)},show:function(){this.setVisible(!0)},hide:function(){this.setVisible(!1)},select:function(a){this.selected=a=a===u?!this.selected:a;if(this.checkbox)this.checkbox.checked= +a;A(this,a?"select":"unselect")},drawTracker:J.drawTrackerGraph};r(eb.prototype,{addSeries:function(a,b,c){var d,e=this;a&&(b=o(b,!0),A(e,"addSeries",{options:a},function(){d=e.initSeries(a);e.isDirtyLegend=!0;e.linkSeries();b&&e.redraw(c)}));return d},addAxis:function(a,b,c,d){var e=b?"xAxis":"yAxis",f=this.options;new ra(this,x(a,{index:this[e].length,isX:b}));f[e]=ka(f[e]||{});f[e].push(a);o(c,!0)&&this.redraw(d)},showLoading:function(a){var b=this.options,c=this.loadingDiv,d=b.loading;if(!c)this.loadingDiv= +c=T(Ha,{className:"highcharts-loading"},r(d.style,{zIndex:10,display:Q}),this.container),this.loadingSpan=T("span",null,d.labelStyle,c);this.loadingSpan.innerHTML=a||b.lang.loading;if(!this.loadingShown)D(c,{opacity:0,display:"",left:this.plotLeft+"px",top:this.plotTop+"px",width:this.plotWidth+"px",height:this.plotHeight+"px"}),jb(c,{opacity:d.style.opacity},{duration:d.showDuration||0}),this.loadingShown=!0},hideLoading:function(){var a=this.options,b=this.loadingDiv;b&&jb(b,{opacity:0},{duration:a.loading.hideDuration|| +100,complete:function(){D(b,{display:Q})}});this.loadingShown=!1}});r(Ka.prototype,{update:function(a,b,c){var d=this,e=d.series,f=d.graphic,g,h=e.data,i=e.chart,j=e.options,b=o(b,!0);d.firePointEvent("update",{options:a},function(){d.applyOptions(a);if(S(a)){e.getAttribs();if(f)a&&a.marker&&a.marker.symbol?d.graphic=f.destroy():f.attr(d.pointAttr[d.state||""]);if(a&&a.dataLabels&&d.dataLabel)d.dataLabel=d.dataLabel.destroy()}g=ta(d,h);e.updateParallelArrays(d,g);j.data[g]=d.options;e.isDirty=e.isDirtyData= +!0;if(!e.fixedBox&&e.hasCartesianSeries)i.isDirtyBox=!0;j.legendType==="point"&&i.legend.destroyItem(d);b&&i.redraw(c)})},remove:function(a,b){var c=this,d=c.series,e=d.points,f=d.chart,g,h=d.data;Pa(b,f);a=o(a,!0);c.firePointEvent("remove",null,function(){g=ta(c,h);h.length===e.length&&e.splice(g,1);h.splice(g,1);d.options.data.splice(g,1);d.updateParallelArrays(c,"splice",g,1);c.destroy();d.isDirty=!0;d.isDirtyData=!0;a&&f.redraw()})}});r(O.prototype,{addPoint:function(a,b,c,d){var e=this.options, +f=this.data,g=this.graph,h=this.area,i=this.chart,j=this.xAxis&&this.xAxis.names,k=g&&g.shift||0,l=e.data,m,p=this.xData;Pa(d,i);c&&n([g,h,this.graphNeg,this.areaNeg],function(a){if(a)a.shift=k+1});if(h)h.isArea=!0;b=o(b,!0);d={series:this};this.pointClass.prototype.applyOptions.apply(d,[a]);g=d.x;h=p.length;if(this.requireSorting&&gg;)h--;this.updateParallelArrays(d,"splice",h);this.updateParallelArrays(d,h);if(j)j[g]=d.name;l.splice(h,0,a);m&&(this.data.splice(h,0,null), +this.processData());e.legendType==="point"&&this.generatePoints();c&&(f[0]&&f[0].remove?f[0].remove(!1):(f.shift(),this.updateParallelArrays(d,"shift"),l.shift()));this.isDirtyData=this.isDirty=!0;b&&(this.getAttribs(),i.redraw())},remove:function(a,b){var c=this,d=c.chart,a=o(a,!0);if(!c.isRemoving)c.isRemoving=!0,A(c,"remove",null,function(){c.destroy();d.isDirtyLegend=d.isDirtyBox=!0;d.linkSeries();a&&d.redraw(b)});c.isRemoving=!1},update:function(a,b){var c=this.chart,d=this.type,e=L[d].prototype, +f,a=x(this.userOptions,{animation:!1,index:this.index,pointStart:this.xData[0]},{data:this.options.data},a);this.remove(!1);for(f in e)e.hasOwnProperty(f)&&(this[f]=u);r(this,L[a.type||d].prototype);this.init(c,a);o(b,!0)&&c.redraw(!1)}});r(ra.prototype,{update:function(a,b){var c=this.chart,a=c.options[this.coll][this.options.index]=x(this.userOptions,a);this.destroy(!0);this._addedPlotLB=this.userMin=this.userMax=u;this.init(c,r(a,{events:u}));c.isDirtyBox=!0;o(b,!0)&&c.redraw()},remove:function(a){var b= +this.chart,c=this.coll;n(this.series,function(a){a.remove(!1)});fa(b.axes,this);fa(b[c],this);b.options[c].splice(this.options.index,1);n(b[c],function(a,b){a.options.index=b});this.destroy();b.isDirtyBox=!0;o(a,!0)&&b.redraw()},setTitle:function(a,b){this.update({title:a},b)},setCategories:function(a,b){this.update({categories:a},b)}});var aa=ga(O);L.line=aa;Y.area=x(W,{threshold:0});var Ta=ga(O,{type:"area",getSegments:function(){var a=[],b=[],c=[],d=this.xAxis,e=this.yAxis,f=e.stacks[this.stackKey], +g={},h,i,j=this.points,k=this.options.connectNulls,l,m,p;if(this.options.stacking&&!this.cropped){for(m=0;m=0;d--)g=o(a[d].yBottom,f),da&&i>e?(i=t(a,e),k=2*e-i):ig&&k>e?(k=t(g,e),i=2*e-k):kf?b-f:e-(d.translate(a.y,0,1,0, +1)<=e?f:0)));a.barX=n;a.pointWidth=g;b=M(n)<0.5;s=w(n+s)+j;n=w(n)+j;s-=n;u=M(r)<0.5;c=w(r+c)+k;r=w(r)+k;c-=r;b&&(n+=1,s-=1);u&&(r-=1,c+=1);a.shapeType="rect";a.shapeArgs={x:n,y:r,width:s,height:c}})},getSymbol:ma,drawLegendSymbol:R.drawRectangle,drawGraph:ma,drawPoints:function(){var a=this,b=this.chart,c=a.options,d=b.renderer,e=b.options.animationLimit||250,f;n(a.points,function(g){var h=g.plotY,i=g.graphic;if(h!==u&&!isNaN(h)&&g.y!==null)f=g.shapeArgs,i?(Ya(i),i[b.pointCount{series.name}
    ',pointFormat:"x: {point.x}
    y: {point.y}
    ",followPointer:!0},stickyTracking:!1});aa=ga(O,{type:"scatter",sorted:!1, +requireSorting:!1,noSharedTooltip:!0,trackerGroups:["markerGroup"],takeOrdinalPosition:!1,drawTracker:J.drawTrackerPoint,drawGraph:function(){this.options.lineWidth&&O.prototype.drawGraph.call(this)},setTooltipPoints:ma});L.scatter=aa;Y.pie=x(W,{borderColor:"#FFFFFF",borderWidth:1,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return this.point.name}},ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,states:{hover:{brightness:0.1, +shadow:!1}},stickyTracking:!1,tooltip:{followPointer:!0}});W={type:"pie",isCartesian:!1,pointClass:ga(Ka,{init:function(){Ka.prototype.init.apply(this,arguments);var a=this,b;if(a.y<0)a.y=null;r(a,{visible:a.visible!==!1,name:o(a.name,"Slice")});b=function(b){a.slice(b.type==="select")};F(a,"select",b);F(a,"unselect",b);return a},setVisible:function(a){var b=this,c=b.series,d=c.chart,e;b.visible=b.options.visible=a=a===u?!b.visible:a;c.options.data[ta(b,c.data)]=b.options;e=a?"show":"hide";n(["graphic", +"dataLabel","connector","shadowGroup"],function(a){if(b[a])b[a][e]()});b.legendItem&&d.legend.colorizeItem(b,a);if(!c.isDirty&&c.options.ignoreHiddenPoint)c.isDirty=!0,d.redraw()},slice:function(a,b,c){var d=this.series;Pa(c,d.chart);o(b,!0);this.sliced=this.options.sliced=a=s(a)?a:!this.sliced;d.options.data[ta(this,d.data)]=this.options;a=a?this.slicedTranslation:{translateX:0,translateY:0};this.graphic.animate(a);this.shadowGroup&&this.shadowGroup.animate(a)}}),requireSorting:!1,noSharedTooltip:!0, +trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",fill:"color"},getColor:ma,animate:function(a){var b=this,c=b.points,d=b.startAngleRad;if(!a)n(c,function(a){var c=a.graphic,a=a.shapeArgs;c&&(c.attr({r:b.center[3]/2,start:d,end:d}),c.animate({r:a.r,start:a.start,end:a.end},b.options.animation))}),b.animate=null},setData:function(a,b){O.prototype.setData.call(this,a,!1);this.processData();this.generatePoints();o(b,!0)&&this.chart.redraw()}, +generatePoints:function(){var a,b=0,c,d,e,f=this.options.ignoreHiddenPoint;O.prototype.generatePoints.call(this);c=this.points;d=c.length;for(a=0;a0?e.y/b*100:0,e.total=b},translate:function(a){this.generatePoints();var b=0,c=this.options,d=c.slicedOffset,e=d+c.borderWidth,f,g,h,i=c.startAngle||0,j=this.startAngleRad=Ba/180*(i-90),i=(this.endAngleRad=Ba/180*((c.endAngle||i+360)-90))-j,k=this.points,l=c.dataLabels.distance, +c=c.ignoreHiddenPoint,m,n=k.length,o;if(!a)this.center=a=this.getCenter();this.getX=function(b,c){h=P.asin((b-a[1])/(a[2]/2+l));return a[0]+(c?-1:1)*U(h)*(a[2]/2+l)};for(m=0;m0.75*i&&(h-=2*Ba);o.slicedTranslation={translateX:w(U(h)*d),translateY:w($(h)*d)};f=U(h)*a[2]/2;g=$(h)*a[2]/2;o.tooltipPos=[a[0]+f*0.7,a[1]+g* +0.7];o.half=h<-Ba/2||h>Ba/2?1:0;o.angle=h;e=I(e,l/2);o.labelPos=[a[0]+f+U(h)*l,a[1]+g+$(h)*l,a[0]+f+U(h)*e,a[1]+g+$(h)*e,a[0]+f,a[1]+g,l<0?"center":o.half?"right":"left",h]}},setTooltipPoints:ma,drawGraph:null,drawPoints:function(){var a=this,b=a.chart.renderer,c,d,e=a.options.shadow,f,g;if(e&&!a.shadowGroup)a.shadowGroup=b.g("shadow").add(a.group);n(a.points,function(h){d=h.graphic;g=h.shapeArgs;f=h.shadowGroup;if(e&&!f)f=h.shadowGroup=b.g("shadow").add(a.shadowGroup);c=h.sliced?h.slicedTranslation: +{translateX:0,translateY:0};f&&f.attr(c);d?d.animate(r(g,c)):h.graphic=d=b.arc(g).setRadialReference(a.center).attr(h.pointAttr[h.selected?"select":""]).attr({"stroke-linejoin":"round"}).attr(c).add(a.group).shadow(e,f);h.visible!==void 0&&h.setVisible(h.visible)})},sortByAngle:function(a,b){a.sort(function(a,d){return a.angle!==void 0&&(d.angle-a.angle)*b})},drawTracker:J.drawTrackerPoint,drawLegendSymbol:R.drawRectangle,getCenter:xb.getCenter,getSymbol:ma};W=ga(O,W);L.pie=W;O.prototype.drawDataLabels= +function(){var a=this,b=a.options,c=b.cursor,d=b.dataLabels,b=a.points,e,f,g,h;if(d.enabled||a._hasPointLabels)a.dlProcessOptions&&a.dlProcessOptions(d),h=a.plotGroup("dataLabelsGroup","data-labels",a.visible?"visible":"hidden",d.zIndex||6),f=d,n(b,function(b){var j,k=b.dataLabel,l,m,n=b.connector,q=!0;e=b.options&&b.options.dataLabels;j=o(e&&e.enabled,f.enabled);if(k&&!j)b.dataLabel=k.destroy();else if(j){d=x(f,e);j=d.rotation;l=b.getLabelConfig();g=d.format?Ga(d.format,l):d.formatter.call(l,d); +d.style.color=o(d.color,d.style.color,a.color,"black");if(k)if(s(g))k.attr({text:g}),q=!1;else{if(b.dataLabel=k=k.destroy(),n)b.connector=n.destroy()}else if(s(g)){k={fill:d.backgroundColor,stroke:d.borderColor,"stroke-width":d.borderWidth,r:d.borderRadius||0,rotation:j,padding:d.padding,zIndex:1};for(m in k)k[m]===u&&delete k[m];k=b.dataLabel=a.chart.renderer[j?"text":"label"](g,0,-999,null,null,null,d.useHTML).attr(k).css(r(d.style,c&&{cursor:c})).add(h).shadow(d.shadow)}k&&a.alignDataLabel(b,k, +d,null,q)}})};O.prototype.alignDataLabel=function(a,b,c,d,e){var f=this.chart,g=f.inverted,h=o(a.plotX,-999),i=o(a.plotY,-999),j=b.getBBox();if(a=this.visible&&(a.series.forceDL||f.isInsidePlot(a.plotX,a.plotY,g)))d=r({x:g?f.plotWidth-i:h,y:w(g?f.plotHeight-h:i),width:0,height:0},d),r(c,{width:j.width,height:j.height}),c.rotation?(g={align:c.align,x:d.x+c.x+d.width/2,y:d.y+c.y+d.height/2},b[e?"attr":"animate"](g)):(b.align(c,null,d),g=b.alignAttr,o(c.overflow,"justify")==="justify"?this.justifyDataLabel(b, +c,g,j,d,e):o(c.crop,!0)&&(a=f.isInsidePlot(g.x,g.y)&&f.isInsidePlot(g.x+j.width,g.y+j.height)));if(!a)b.attr({y:-999}),b.placed=!1};O.prototype.justifyDataLabel=function(a,b,c,d,e,f){var g=this.chart,h=b.align,i=b.verticalAlign,j,k;j=c.x;if(j<0)h==="right"?b.align="left":b.x=-j,k=!0;j=c.x+d.width;if(j>g.plotWidth)h==="left"?b.align="right":b.x=g.plotWidth-j,k=!0;j=c.y;if(j<0)i==="bottom"?b.verticalAlign="top":b.y=-j,k=!0;j=c.y+d.height;if(j>g.plotHeight)i==="top"?b.verticalAlign="bottom":b.y=g.plotHeight- +j,k=!0;if(k)a.placed=!f,a.align(b,null,e)};if(L.pie)L.pie.prototype.drawDataLabels=function(){var a=this,b=a.data,c,d=a.chart,e=a.options.dataLabels,f=o(e.connectorPadding,10),g=o(e.connectorWidth,1),h=d.plotWidth,d=d.plotHeight,i,j,k=o(e.softConnector,!0),l=e.distance,m=a.center,p=m[2]/2,q=m[1],s=l>0,r,u,v,x,y=[[],[]],z,A,E,K,B,D=[0,0,0,0],I=function(a,b){return b.y-a.y};if(a.visible&&(e.enabled||a._hasPointLabels)){O.prototype.drawDataLabels.apply(a);n(b,function(a){a.dataLabel&&a.visible&&y[a.half].push(a)}); +for(K=0;!x&&b[K];)x=b[K]&&b[K].dataLabel&&(b[K].dataLabel.getBBox().height||21),K++;for(K=2;K--;){var b=[],J=[],F=y[K],G=F.length,C;a.sortByAngle(F,K-0.5);if(l>0){for(B=q-p-l;B<=q+p+l;B+=x)b.push(B);u=b.length;if(G>u){c=[].concat(F);c.sort(I);for(B=G;B--;)c[B].rank=B;for(B=G;B--;)F[B].rank>=u&&F.splice(B,1);G=F.length}for(B=0;B0){if(u=J.pop(),C=u.i,A=u.y,c>A&&b[C+1]!==null||ch-f&&(D[1]=t(w(z+u-h+f),D[1])),A-x/2<0?D[0]= +t(w(-A+x/2),D[0]):A+x/2>d&&(D[2]=t(w(A+x/2-d),D[2]))}}if(Aa(D)===0||this.verifyDataLabelOverflow(D))this.placeDataLabels(),s&&g&&n(this.points,function(b){i=b.connector;v=b.labelPos;if((r=b.dataLabel)&&r._pos)E=r._attr.visibility,z=r.connX,A=r.connY,j=k?["M",z+(v[6]==="left"?5:-5),A,"C",z,A,2*v[2]-v[4],2*v[3]-v[5],v[2],v[3],"L",v[4],v[5]]:["M",z+(v[6]==="left"?5:-5),A,"L",v[2],v[3],"L",v[4],v[5]],i?(i.animate({d:j}),i.attr("visibility",E)):b.connector=i=a.chart.renderer.path(j).attr({"stroke-width":g, +stroke:e.connectorColor||b.color||"#606060",visibility:E}).add(a.group);else if(i)b.connector=i.destroy()})}},L.pie.prototype.placeDataLabels=function(){n(this.points,function(a){var a=a.dataLabel,b;if(a)(b=a._pos)?(a.attr(a._attr),a[a.moved?"animate":"attr"](b),a.moved=!0):a&&a.attr({y:-999})})},L.pie.prototype.alignDataLabel=ma,L.pie.prototype.verifyDataLabelOverflow=function(a){var b=this.center,c=this.options,d=c.center,e=c=c.minSize||80,f;d[0]!==null?e=t(b[2]-t(a[1],a[3]),c):(e=t(b[2]-a[1]-a[3], +c),b[0]+=(a[3]-a[1])/2);d[1]!==null?e=t(I(e,b[2]-t(a[0],a[2])),c):(e=t(I(e,b[2]-a[0]-a[2]),c),b[1]+=(a[0]-a[2])/2);eo(this.translatedThreshold,f.plotSizeY),j=o(c.inside,!!this.options.stacking);if(h&&(d=x(h), +g&&(d={x:f.plotWidth-d.y-d.height,y:f.plotHeight-d.x-d.width,width:d.height,height:d.width}),!j))g?(d.x+=i?0:d.width,d.width=0):(d.y+=i?d.height:0,d.height=0);c.align=o(c.align,!g||j?"center":i?"right":"left");c.verticalAlign=o(c.verticalAlign,g||j?"middle":i?"top":"bottom");O.prototype.alignDataLabel.call(this,a,b,c,d,e)};r(Highcharts,{Axis:ra,Chart:eb,Color:ua,Point:Ka,Tick:Ra,Tooltip:sb,Renderer:Xa,Series:O,SVGElement:qa,SVGRenderer:va,arrayMin:Ma,arrayMax:Aa,charts:Ja,dateFormat:$a,format:Ga, +pathAnim:ub,getOptions:function(){return G},hasBidiBug:Nb,isTouchDevice:Ib,numberFormat:Ea,seriesTypes:L,setOptions:function(a){G=x(!0,G,a);Bb();return G},addEvent:F,removeEvent:X,createElement:T,discardElement:Oa,css:D,each:n,extend:r,map:Sa,merge:x,pick:o,splat:ka,extendClass:ga,pInt:z,wrap:Ua,svg:V,canvas:ba,vml:!V&&!ba,product:"Highcharts",version:"3.0.8"})})(); + diff --git a/app/assets/javascripts/jquery.cookie.js b/app/assets/javascripts/jquery.cookie.js new file mode 100644 index 0000000..6d5974a --- /dev/null +++ b/app/assets/javascripts/jquery.cookie.js @@ -0,0 +1,47 @@ +/*! + * jQuery Cookie Plugin + * https://github.com/carhartl/jquery-cookie + * + * Copyright 2011, Klaus Hartl + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://www.opensource.org/licenses/mit-license.php + * http://www.opensource.org/licenses/GPL-2.0 + */ +(function($) { + $.cookie = function(key, value, options) { + + // key and at least value given, set cookie... + if (arguments.length > 1 && (!/Object/.test(Object.prototype.toString.call(value)) || value === null || value === undefined)) { + options = $.extend({}, options); + + if (value === null || value === undefined) { + options.expires = -1; + } + + if (typeof options.expires === 'number') { + var days = options.expires, t = options.expires = new Date(); + t.setDate(t.getDate() + days); + } + + value = String(value); + + return (document.cookie = [ + encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value), + options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE + options.path ? '; path=' + options.path : '', + options.domain ? '; domain=' + options.domain : '', + options.secure ? '; secure' : '' + ].join('')); + } + + // key and possibly options given, get cookie... + options = value || {}; + var decode = options.raw ? function(s) { return s; } : decodeURIComponent; + + var pairs = document.cookie.split('; '); + for (var i = 0, pair; pair = pairs[i] && pairs[i].split('='); i++) { + if (decode(pair[0]) === key) return decode(pair[1] || ''); // IE saves cookies with empty string as "c; ", e.g. without "=" as opposed to EOMB, thus pair[1] may be undefined + } + return null; + }; +})(jQuery); diff --git a/app/assets/javascripts/jquery.shorten.min.js b/app/assets/javascripts/jquery.shorten.min.js new file mode 100644 index 0000000..c0f3fa7 --- /dev/null +++ b/app/assets/javascripts/jquery.shorten.min.js @@ -0,0 +1,7 @@ +/* + * Shorten, a jQuery plugin to automatically shorten text to fit in a block or a pre-set width and configure how the text ends. + * Copyright (C) 2009-2011 Marc Diethelm + * License: (GPL 3, http://www.gnu.org/licenses/gpl-3.0.txt) see license.txt + */ + +(function(a){function s(g,c){return c.measureText(g).width}function t(g,c){c.text(g);return c.width()}var q=false,o,j,k;a.fn.shorten=function(){var g={},c=arguments,r=c.callee;if(c.length)if(c[0].constructor==Object)g=c[0];else if(c[0]=="options")return a(this).eq(0).data("shorten-options");else g={width:parseInt(c[0]),tail:c[1]};this.css("visibility","hidden");var h=a.extend({},r.defaults,g);return this.each(function(){var e=a(this),d=e.text(),p=d.length,i,f=a("").html(h.tail).text(),l={shortened:false, textOverflow:false};i=e.css("float")!="none"?h.width||e.width():h.width||e.parent().width();if(i<0)return true;e.data("shorten-options",h);this.style.display="inline-block";this.style.whiteSpace="nowrap";if(o){var b=a(this),n=document.createElement("canvas");ctx=n.getContext("2d");b.html(n);ctx.font=b.css("font-style")+" "+b.css("font-variant")+" "+b.css("font-weight")+" "+Math.ceil(parseFloat(b.css("font-size")))+"px "+b.css("font-family");j=ctx;k=s}else{b=a('
    '); $td=a("td",b);a(this).html(b);j=$td;k=t}b=k.call(this,d,j);if(b"+h.tail+"
    ").text();if(n.length==1&&n.charCodeAt(0)==8230){e.text(d);this.style.overflow="hidden";this.style[r._native]="ellipsis";this.style.visibility="visible";l.shortened=true;l.textOverflow="ellipsis";e.data("shorten-info",l);return true}}f=k.call(this,f,j);i-=f;f=i*1.15; if(b-f>0){f=d.substring(0,Math.ceil(p*(f/b)));if(k.call(this,f,j)>i){d=f;p=d.length}}do{p--;d=d.substring(0,p)}while(k.call(this,d,j)>=i);e.html(a.trim(a("").text(d).html())+h.tail);this.style.visibility="visible";l.shortened=true;e.data("shorten-info",l);return true})};var m=document.documentElement.style;if("textOverflow"in m)q="textOverflow";else if("OTextOverflow"in m)q="OTextOverflow";if(typeof Modernizr!="undefined"&&Modernizr.canvastext)o=Modernizr.canvastext;else{m=document.createElement("canvas"); o=!!(m.getContext&&m.getContext("2d")&&typeof m.getContext("2d").fillText==="function")}a.fn.shorten._is_canvasTextSupported=o;a.fn.shorten._native=q;a.fn.shorten.defaults={tail:"…",tooltip:true}})(jQuery); diff --git a/app/assets/javascripts/nested_form.js b/app/assets/javascripts/nested_form.js new file mode 100644 index 0000000..dcdbc8a --- /dev/null +++ b/app/assets/javascripts/nested_form.js @@ -0,0 +1,114 @@ +(function($) { + window.NestedFormEvents = function() { + this.addFields = $.proxy(this.addFields, this); + this.removeFields = $.proxy(this.removeFields, this); + }; + + NestedFormEvents.prototype = { + addFields: function(e) { + // Setup + var link = e.currentTarget; + var assoc = $(link).data('association'); // Name of child + var blueprint = $('#' + $(link).data('blueprint-id')); + var content = blueprint.data('blueprint'); // Fields template + + // Make the context correct by replacing with the generated ID + // of each of the parent objects + var context = ($(link).closest('.fields').closestChild('input, textarea, select').eq(0).attr('name') || '').replace(new RegExp('\[[a-z_]+\]$'), ''); + + // context will be something like this for a brand new form: + // project[tasks_attributes][1255929127459][assignments_attributes][1255929128105] + // or for an edit form: + // project[tasks_attributes][0][assignments_attributes][1] + if (context) { + var parentNames = context.match(/[a-z_]+_attributes(?=\]\[(new_)?\d+\])/g) || []; + var parentIds = context.match(/[0-9]+/g) || []; + + for(var i = 0; i < parentNames.length; i++) { + if(parentIds[i]) { + content = content.replace( + new RegExp('(_' + parentNames[i] + ')_.+?_', 'g'), + '$1_' + parentIds[i] + '_'); + + content = content.replace( + new RegExp('(\\[' + parentNames[i] + '\\])\\[.+?\\]', 'g'), + '$1[' + parentIds[i] + ']'); + } + } + } + + // Make a unique ID for the new child + var regexp = new RegExp('new_' + assoc, 'g'); + var new_id = this.newId(); + content = $.trim(content.replace(regexp, new_id)); + + var field = this.insertFields(content, assoc, link); + // bubble up event upto document (through form) + field + .trigger({ type: 'nested:fieldAdded', field: field }) + .trigger({ type: 'nested:fieldAdded:' + assoc, field: field }); + return false; + }, + newId: function() { + return new Date().getTime(); + }, + insertFields: function(content, assoc, link) { + var target = $(link).data('target'); + if (target) { + return $(content).appendTo($(target)); + } else { + return $(content).insertBefore(link); + } + }, + removeFields: function(e) { + var $link = $(e.currentTarget), + assoc = $link.data('association'); // Name of child to be removed + + var hiddenField = $link.prev('input[type=hidden]'); + hiddenField.val('1'); + + var field = $link.closest('.fields'); + field.hide(); + + field + .trigger({ type: 'nested:fieldRemoved', field: field }) + .trigger({ type: 'nested:fieldRemoved:' + assoc, field: field }); + return false; + } + }; + + window.nestedFormEvents = new NestedFormEvents(); + $(document) + .delegate('form a.add_nested_fields', 'click', nestedFormEvents.addFields) + .delegate('form a.remove_nested_fields', 'click', nestedFormEvents.removeFields); +})(jQuery); + +// http://plugins.jquery.com/project/closestChild +/* + * Copyright 2011, Tobias Lindig + * + * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) + * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. + * + */ +(function($) { + $.fn.closestChild = function(selector) { + // breadth first search for the first matched node + if (selector && selector != '') { + var queue = []; + queue.push(this); + while(queue.length > 0) { + var node = queue.shift(); + var children = node.children(); + for(var i = 0; i < children.length; ++i) { + var child = $(children[i]); + if (child.is(selector)) { + return child; //well, we found one + } + queue.push(child); + } + } + } + return $();//nothing found + }; +})(jQuery); diff --git a/app/assets/javascripts/noapi.js b/app/assets/javascripts/noapi.js new file mode 100644 index 0000000..d47b992 --- /dev/null +++ b/app/assets/javascripts/noapi.js @@ -0,0 +1,5 @@ +// if on api subdomain, redirect +var wloc = window.location.toString(); +if (wloc.indexOf('api') != -1 && wloc.indexOf('api') < 10) { + window.location = wloc.replace('api', 'www'); +} \ No newline at end of file diff --git a/app/assets/javascripts/prettify.js b/app/assets/javascripts/prettify.js new file mode 100644 index 0000000..ba5bd43 --- /dev/null +++ b/app/assets/javascripts/prettify.js @@ -0,0 +1,35 @@ +var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= +[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p ss) || (el >= es && sl < es) || (sl > ss && el < es)}); + sl = el + 1;// for "\n" + } + + // walk through the array of lines (indices) and add tabs where appropriate + var modifier = 0; + for (var i in indices) { + if (indices[i].selected) { + var pos = indices[i].start + modifier; // adjust for tabs already inserted/removed + // SHIFT+TAB + if (shft && options.tabString == o.value.substring(pos,pos+options.tabString.length)) { // only SHIFT+TAB if there's a tab at the start of the line + o.value = o.value.substring(0,pos) + o.value.substring(pos + options.tabString.length); // omit the tabstring to the right + modifier -= options.tabString.length; + } + // TAB + else if (!shft) { + o.value = o.value.substring(0,pos) + options.tabString + o.value.substring(pos); // insert the tabstring + modifier += options.tabString.length; + } + } + } + o.focus(); + var ns = ss + ((modifier > 0) ? options.tabString.length : (modifier < 0) ? -options.tabString.length : 0); + var ne = es + modifier; + o.setSelectionRange(ns,ne); + } + } + + function ie_tab (o, shft, options) { + var range = document.selection.createRange(); + + if (o == range.parentElement()) { + // when there's no selection and we're just working with the caret, we'll add/remove the tabs at the caret, providing more control + if ('' == range.text) { + // SHIFT+TAB + if (shft) { + var bookmark = range.getBookmark(); + //first try to the left by moving opening up our empty range to the left + range.moveStart('character', -options.tabString.length); + if (options.tabString == range.text) { + range.text = ''; + } else { + // if that didn't work then reset the range and try opening it to the right + range.moveToBookmark(bookmark); + range.moveEnd('character', options.tabString.length); + if (options.tabString == range.text) + range.text = ''; + } + // move the pointer to the start of them empty range and select it + range.collapse(true); + range.select(); + } + + else { + // very simple here. just insert the tab into the range and put the pointer at the end + range.text = options.tabString; + range.collapse(false); + range.select(); + } + } + // selections will always add/remove tabs from the start of the line + else { + + var selection_text = range.text; + var selection_len = selection_text.length; + var selection_arr = selection_text.split("\r\n"); + + var before_range = document.body.createTextRange(); + before_range.moveToElementText(o); + before_range.setEndPoint("EndToStart", range); + var before_text = before_range.text; + var before_arr = before_text.split("\r\n"); + var before_len = before_text.length; // - before_arr.length + 1; + + var after_range = document.body.createTextRange(); + after_range.moveToElementText(o); + after_range.setEndPoint("StartToEnd", range); + var after_text = after_range.text; // we can accurately calculate distance to the end because we're not worried about MSIE trimming a \r\n + + var end_range = document.body.createTextRange(); + end_range.moveToElementText(o); + end_range.setEndPoint("StartToEnd", before_range); + var end_text = end_range.text; // we can accurately calculate distance to the end because we're not worried about MSIE trimming a \r\n + + var check_html = $(o).html(); + $("#r3").text(before_len + " + " + selection_len + " + " + after_text.length + " = " + check_html.length); + if((before_len + end_text.length) < check_html.length) { + before_arr.push(""); + before_len += 2; // for the \r\n that was trimmed + if (shft && options.tabString == selection_arr[0].substring(0,options.tabString.length)) + selection_arr[0] = selection_arr[0].substring(options.tabString.length); + else if (!shft) selection_arr[0] = options.tabString + selection_arr[0]; + } else { + if (shft && options.tabString == before_arr[before_arr.length-1].substring(0,options.tabString.length)) + before_arr[before_arr.length-1] = before_arr[before_arr.length-1].substring(options.tabString.length); + else if (!shft) before_arr[before_arr.length-1] = options.tabString + before_arr[before_arr.length-1]; + } + + for (var i = 1; i < selection_arr.length; i++) { + if (shft && options.tabString == selection_arr[i].substring(0,options.tabString.length)) + selection_arr[i] = selection_arr[i].substring(options.tabString.length); + else if (!shft) selection_arr[i] = options.tabString + selection_arr[i]; + } + + if (1 == before_arr.length && 0 == before_len) { + if (shft && options.tabString == selection_arr[0].substring(0,options.tabString.length)) + selection_arr[0] = selection_arr[0].substring(options.tabString.length); + else if (!shft) selection_arr[0] = options.tabString + selection_arr[0]; + } + + if ((before_len + selection_len + after_text.length) < check_html.length) { + selection_arr.push(""); + selection_len += 2; // for the \r\n that was trimmed + } + + before_range.text = before_arr.join("\r\n"); + range.text = selection_arr.join("\r\n"); + + var new_range = document.body.createTextRange(); + new_range.moveToElementText(o); + + if (0 < before_len) new_range.setEndPoint("StartToEnd", before_range); + else new_range.setEndPoint("StartToStart", before_range); + new_range.setEndPoint("EndToEnd", range); + + new_range.select(); + + } + } + } + +// end of closure +})(jQuery); diff --git a/app/assets/javascripts/timeago.min.js b/app/assets/javascripts/timeago.min.js new file mode 100644 index 0000000..940c7b8 --- /dev/null +++ b/app/assets/javascripts/timeago.min.js @@ -0,0 +1,11 @@ +(function($){$.timeago=function(timestamp){if(timestamp instanceof Date){return inWords(timestamp);}else if(typeof timestamp==="string"){return inWords($.timeago.parse(timestamp));}else{return inWords($.timeago.datetime(timestamp));}};var $t=$.timeago;$.extend($.timeago,{settings:{refreshMillis:60000,allowFuture:false,strings:{prefixAgo:null,prefixFromNow:null,suffixAgo:"ago",suffixFromNow:"from now",seconds:"less than a minute",minute:"about a minute",minutes:"%d minutes",hour:"about an hour",hours:"about %d hours",day:"a day",days:"%d days",month:"about a month",months:"%d months",year:"about a year",years:"%d years",numbers:[]}},inWords:function(distanceMillis){var $l=this.settings.strings;var prefix=$l.prefixAgo;var suffix=$l.suffixAgo;if(this.settings.allowFuture){if(distanceMillis<0){prefix=$l.prefixFromNow;suffix=$l.suffixFromNow;} +distanceMillis=Math.abs(distanceMillis);} +var seconds=distanceMillis/1000;var minutes=seconds/60;var hours=minutes/60;var days=hours/24;var years=days/365;function substitute(stringOrFunction,number){var string=$.isFunction(stringOrFunction)?stringOrFunction(number,distanceMillis):stringOrFunction;var value=($l.numbers&&$l.numbers[number])||number;return string.replace(/%d/i,value);} +var words=seconds<45&&substitute($l.seconds,Math.round(seconds))||seconds<90&&substitute($l.minute,1)||minutes<45&&substitute($l.minutes,Math.round(minutes))||minutes<90&&substitute($l.hour,1)||hours<24&&substitute($l.hours,Math.round(hours))||hours<48&&substitute($l.day,1)||days<30&&substitute($l.days,Math.floor(days))||days<60&&substitute($l.month,1)||days<365&&substitute($l.months,Math.floor(days/30))||years<2&&substitute($l.year,1)||substitute($l.years,Math.floor(years));return $.trim([prefix,words,suffix].join(" "));},parse:function(iso8601){var s=$.trim(iso8601);s=s.replace(/\.\d\d\d+/,"");s=s.replace(/-/,"/").replace(/-/,"/");s=s.replace(/T/," ").replace(/Z/," UTC");s=s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2");return new Date(s);},datetime:function(elem){var isTime=$(elem).get(0).tagName.toLowerCase()==="time";var iso8601=isTime?$(elem).attr("datetime"):$(elem).attr("title");return $t.parse(iso8601);}});$.fn.timeago=function(){var self=this;self.each(refresh);var $s=$t.settings;if($s.refreshMillis>0){setInterval(function(){self.each(refresh);},$s.refreshMillis);} +return self;};function refresh(){var data=prepareData(this);if(!isNaN(data.datetime)){$(this).text(inWords(data.datetime));} +return this;} +function prepareData(element){element=$(element);if(!element.data("timeago")){element.data("timeago",{datetime:$t.datetime(element)});var text=$.trim(element.text());if(text.length>0){element.attr("title",text);}} +return element.data("timeago");} +function inWords(date){return $t.inWords(distance(date));} +function distance(date){return(new Date().getTime()-date.getTime());} +document.createElement("abbr");document.createElement("time");}(jQuery)); \ No newline at end of file diff --git a/app/assets/javascripts/updateChart.js b/app/assets/javascripts/updateChart.js new file mode 100644 index 0000000..c544552 --- /dev/null +++ b/app/assets/javascripts/updateChart.js @@ -0,0 +1,296 @@ +// update the chart with all the textbox values +function openDialogCenter(element) { + element.dialog("open"); + var sizeArr = getDimensions( element.parent() ); + element.dialog({position:[ sizeArr[0], sizeArr[1] ] }); + +} +function getDimensions(element) { + var sizeArr = new Array(2); + sizeArr[0] = $(window).width()/2 - element.width()/2; + sizeArr[1] = $(window).height()/2 - element.height()/2; + return sizeArr; +} + +function updateChart(index, + postUpdate, + width, + height, + channelId, + newOptionsSave) { + // default width and height + var width = width; + var height = height; + // get old src + + var iframe = $('#iframe' + index).attr("default_src"); + + if (!iframe) { + iframe = $('#iframe' + index).attr('src'); + } + + src = iframe.split('?')[0]; + // if not a line chart, a timeslice should be present or set timescale=30 + if ($('#type_' + index).val() != 'line') { + if ($('#timescale_' + index).val().length == 0 && $('#average_' + index).val().length == 0 && $('#median_' + index).val().length == 0 && $('#sum_' + index).val().length == 0) { + $('#timescale_' + index).val(30); + } + } + + // add inputs to array + var inputs = []; + $('.chart_options' + index).each(function() { + var v = $(this).val(); + var id = $(this).attr('id'); + var tag = id.split("_")[0]; + + if (v.length > 0) { inputs.push([tag, v]); } + }); + + // create querystring + var qs = ''; + while (inputs.length > 0) { + var p = inputs.pop(); + if (p[0] == 'width') { width = parseInt(p[1]); } + if (p[0] == 'height') { height = parseInt(p[1]); } + + // don't add type=line to querystring, it's the default value + if (!(p[0] == 'type' && p[1] == 'line')) { + qs += '&' + p[0] + '=' + encodeURIComponent(p[1]); + } + } + // if querystring exists, add it to src + if (qs.length > 0) { src += '?' + qs.substring(1); } + + // save chart options to database + if (postUpdate && index > 0 && newOptionsSave) { + $.update("/channels/" + channelId + "/charts/" + index, + { + newOptions : { options: qs } + } ); + } + else if (postUpdate && index > 0) { + $.update("/channels/" + channelId + "/charts/" + index, + { options: qs } ); + } + + // set embed code + $('#embed' + index).val(''); + + // set new src + $('#iframe' + index).attr('src', src); + $('#iframe' + index).attr('width', width); + $('#iframe' + index).attr('height', height); +} +function updateSelectValues() { + selectedValue = $(this).val(); + $(".mutuallyexclusive"+index).each(function () { $(this).val(""); }); + $(this).val(selectedValue); +} + +function setupChartForm(channelIndex) { + return function(index, value) { + if (value.length > 0) { + $('#' + value.split('=')[0] + "_" + channelIndex).val(decodeURIComponent(value.split('=')[1])); + } + }; +} + + + + +function setupColumns(current_user, channel_id) +{ + $( sortColumnSetup(current_user, channel_id) ) ; + $( ".column" ).disableSelection(); +} + +function createWindowsWithData (data, current_user, channel_id, colName) { + + for (var i in data) { + //each array element has a single chart object as an associative array with the type as the key + // so I need to iterate over a array with size=1 to get a string with the window type + for (var type in data[i]) { + var wtype = type; + } + if (data[i].chart_window) window = data[i].chart_window; + if (data[i].plugin_window) window = data[i].plugin_window; + if (data[i].portlet_window) window = data[i].portlet_window; + + if (window == "undefined") + var window = (data[i].portlet_window) ? data[i].portlet_window : data[i].chart_window; + colId = window.col; + title = window.title; + + var content = window.html; + if (data[i].chart_window) { + var windowId = window.id; + $("body").append("
    "); + } + var portlet = addWindow(colName, colId, window.id, wtype, title, content); + portlet.each ( decoratePortlet(current_user) ) ; + + portlet.find( ".ui-toggle" ).click( uiToggleClick ); + portlet.find( ".ui-view" ).click( uiViewClick (channel_id) ); + portlet.find( ".ui-edit" ).click( uiEditClick (channel_id) ); + portlet.find( ".ui-close" ).click( uiCloseClick (channel_id) ); + } +} +var createWindows = function (current_user, channel_id, colName) { + return function(data) { + createWindowsWithData(data, current_user, channel_id, colName); + }; +} + +function addWindow(colName, colId, windowId, wtype, title, content) { + $("#"+colName+"_dialog"+colId).append('
    ' + title + + '
    '+content+'
    ') ; + + if ($("#portlet_"+windowId).length > 1) { + throw "Portlet count doesn't match what's expected"; + } else { + return $("#portlet_"+windowId); + } + +} + + +var updatePortletPositions = function( current_user, channel_id) { + return function() { + if (current_user) { + var result = $(this).sortable('serialize'); + colId = $(this).attr('id').charAt($(this).attr('id').length - 1); + portletArray = getPortletArray(result); + jsonResult = { + "col" : colId, + "positions" : portletArray + } ; + + if (portletArray.length > 0) { + $.ajax({ + type: 'PUT', + url: '../channels/' + channel_id + '/windows', + data: {_method:'PUT', page : JSON.stringify(jsonResult ) }, + dataType: 'json' + }); + } + } +} +} + +function sortColumnSetup(current_user, channel_id) { + + $( ".column" ).sortable({ + opacity: 0.6, + helper: function( event ) { + return $("
    Drop to re-position
    "); + }, + connectWith: ".column", + update: updatePortletPositions(current_user, channel_id) + }); +} +var decoratePortlet = function (current_user) { + return function() { + var portletHeader = $(this).find( ".portlet-header") ; + portletHeader.append( ""); + + thisObject = $(this); + if (current_user == "true") { + // Use feature Rollout here - needs to be implemented for this user, and this channel needs to belong to this user. + thisObject.find('.wtype').prepend( ""); + thisObject.find(".wtype-chart_window").append(""); + thisObject.find(".wtype").append(""); + thisObject.find(".portlet-header").css("cursor","move"); + } + else { + $(".column").sortable({ disabled:true }); + } + return $(this).attr("id"); + } +} +function getPortletArray(data) { + + var resultArray = new Array(); + var inputArray = data.split("&"); + + for (i in inputArray) { + + val = inputArray[i].split("=")[1] ; + resultArray.push(val); + } + + return resultArray; +} + + +var uiEditClick = function (channel_id) { + return function() { + var id = $( this ).parents( ".portlet:first" ).attr("id").substring(8); + + var options = ""; + $("#chartConfig"+id).load("/channels/"+channel_id+"/charts/"+id+"/edit", + function() { + options = $("#chartOptions"+id).html(); + + if (options != "undefined" && options.length >2) { + $.each((options.split('&')), setupChartForm( id )); + } + $("#button"+id).click( function() { + updateChart(id, true, 450, 250, channel_id, true); + $("#chartConfig"+id).dialog("close"); + + }); + }) + .dialog({ title:"Chart Options", modal: true, resizable: false, width: 500, dialogClass: "dev-info-dialog" }); + + }; +} + +var uiViewClick = function (channel_id) { + return function() { + var x = $( this ).parents( ".portlet:first" ).find( ".portlet-content" ).offset().left; + var y = $( this ).parents( ".portlet:first" ).find( ".portlet-content" ).offset().top; + var id = $( this ).parents( ".portlet:first" ).attr("id").substring(8); + + $("body").append(''); + + $.get("/channels/"+channel_id+"/windows/"+id+"/iframe", + function(response) { + var display = response.replace(/id=\"iframe[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?\"/, "" ); + $("#iframeinner"+id).text(display); + } + ); + + $("#iframepopup"+id).dialog({ + resizable:false, + width: "300px", + position:[x+200,y-200], + title: "Chart Iframe", + dialogClass: "dev-info-dialog" + }); + }; +} + +var uiCloseClick = function (channel_id) { + return function() { + var id = $( this ).parents( ".portlet:first" ).attr("id").substring(8); + var portlet = $( this ).parents( ".portlet:first" ) ; + $.update("/channels/"+channel_id+"/windows/"+id+"/hide" , + function(response) { + portlet.hide("drop", function(){ + portlet.remove();}); + }) ; + } +} + + +function uiToggleClick() { + $( this ).toggleClass( "ui-icon-minusthick" ).toggleClass( "ui-icon-plusthick" ); + $( this ).parents( ".portlet:first" ).find( ".portlet-content" ).toggle(); +} + diff --git a/app/assets/javascripts/validate.min.js b/app/assets/javascripts/validate.min.js new file mode 100644 index 0000000..e551e34 --- /dev/null +++ b/app/assets/javascripts/validate.min.js @@ -0,0 +1,16 @@ +/* + * validate.js 1.0.1 + * Copyright (c) 2011 Rick Harrison, http://rickharrison.me + * validate.js is open sourced under the MIT license. + * Portions of validate.js are inspired by CodeIgniter. + * http://rickharrison.github.com/validate.js + */ + +(function(j,k,i){var l={required:"The %s field is required.",matches:"The %s field does not match the %s field.",valid_email:"The %s field must contain a valid email address.",min_length:"The %s field must be at least %s characters in length.",max_length:"The %s field must not exceed %s characters in length.",exact_length:"The %s field must be exactly %s characters in length.",greater_than:"The %s field must contain a number greater than %s.",less_than:"The %s field must contain a number less than %s.", +alpha:"The %s field must only contain alphabetical characters.",alpha_numeric:"The %s field must only contain alpha-numeric characters.",alpha_dash:"The %s field must only contain alpha-numeric characters, underscores, and dashes.",numeric:"The %s field must contain only numbers.",integer:"The %s field must contain an integer."},m=function(){},n=/^(.+)\[(.+)\]$/,g=/^[0-9]+$/,o=/^\-?[0-9]+$/,h=/^\-?[0-9]*\.?[0-9]+$/,p=/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}$/i,q=/^[a-z]+$/i,r=/^[a-z0-9]+$/i,s=/^[a-z0-9_-]+$/i, +e=function(a,b,d){this.callback=d||m;this.errors=[];this.fields={};this.form=k.forms[a]||{};this.messages={};this.handlers={};a=0;for(d=b.length;a0)if(a&&a.preventDefault)a.preventDefault();else return false;return true};e.prototype._validateField= +function(a){var b=a.rules.split("|");if(!(a.rules.indexOf("required")===-1&&(!a.value||a.value===""||a.value===i)))for(var d=0,c=b.length;d=b},max_length:function(a,b){return!g.test(b)? +false:a.value.length<=b},exact_length:function(a,b){return!g.test(b)?false:a.value.length==b},greater_than:function(a,b){return!h.test(a.value)?false:parseFloat(a.value)>parseFloat(b)},less_than:function(a,b){return!h.test(a.value)?false:parseFloat(a.value).caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}.list-inline>li:first-child{padding-left:0}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media (min-width:992px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666666666666%}.col-xs-10{width:83.33333333333334%}.col-xs-9{width:75%}.col-xs-8{width:66.66666666666666%}.col-xs-7{width:58.333333333333336%}.col-xs-6{width:50%}.col-xs-5{width:41.66666666666667%}.col-xs-4{width:33.33333333333333%}.col-xs-3{width:25%}.col-xs-2{width:16.666666666666664%}.col-xs-1{width:8.333333333333332%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666666666666%}.col-xs-pull-10{right:83.33333333333334%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666666666666%}.col-xs-pull-7{right:58.333333333333336%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666666666667%}.col-xs-pull-4{right:33.33333333333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.666666666666664%}.col-xs-pull-1{right:8.333333333333332%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666666666666%}.col-xs-push-10{left:83.33333333333334%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666666666666%}.col-xs-push-7{left:58.333333333333336%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666666666667%}.col-xs-push-4{left:33.33333333333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.666666666666664%}.col-xs-push-1{left:8.333333333333332%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666666666666%}.col-xs-offset-10{margin-left:83.33333333333334%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666666666666%}.col-xs-offset-7{margin-left:58.333333333333336%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666666666667%}.col-xs-offset-4{margin-left:33.33333333333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.666666666666664%}.col-xs-offset-1{margin-left:8.333333333333332%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6)}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type="date"]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:992px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:none}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:992px){.navbar{border-radius:4px}}@media (min-width:992px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:992px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:992px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:992px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:992px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:992px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:none}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:992px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:991px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:992px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:992px){.navbar-left{float:left !important}.navbar-right{float:right !important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:991px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:992px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:992px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:991px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:991px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.428571429;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group .list-group-item:first-child{border-top:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel>.list-group:first-child .list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tfoot>tr:first-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tfoot>tr:first-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:first-child>td{border-top:0}.panel>.table-bordered>thead>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:last-child>th,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:last-child>td,.panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.428571429px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top .arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right .arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom .arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left .arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.5) 0), color-stop(rgba(0,0,0,0.0001) 100%));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.0001) 0), color-stop(rgba(0,0,0,0.5) 100%));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:none;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,tr.visible-xs,th.visible-xs,td.visible-xs{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}.visible-sm,tr.visible-sm,th.visible-sm,td.visible-sm{display:none !important}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}.visible-md,tr.visible-md,th.visible-md,td.visible-md{display:none !important}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}.visible-lg,tr.visible-lg,th.visible-lg,td.visible-lg{display:none !important}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (max-width:767px){.hidden-xs,tr.hidden-xs,th.hidden-xs,td.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,tr.hidden-sm,th.hidden-sm,td.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,tr.hidden-md,th.hidden-md,td.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg,tr.hidden-lg,th.hidden-lg,td.hidden-lg{display:none !important}}.visible-print,tr.visible-print,th.visible-print,td.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}@media print{.hidden-print,tr.hidden-print,th.hidden-print,td.hidden-print{display:none !important}} diff --git a/app/assets/stylesheets/bootstrap_overrides.css b/app/assets/stylesheets/bootstrap_overrides.css new file mode 100644 index 0000000..acb3812 --- /dev/null +++ b/app/assets/stylesheets/bootstrap_overrides.css @@ -0,0 +1,6 @@ +/* 3D button styles */ +.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe0e0e0',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:linear-gradient(to bottom,#428bca 0,#2d6ca2 100%);background-repeat:repeat-x;border-color:#2b669a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff2d6ca2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff419641',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffeb9316',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);background-repeat:repeat-x;border-color:#b92c28;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc12e2a',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2aabd2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff3f3f3',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff282828',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)} + +/* force line breaks */ +code { word-wrap: break-word; white-space: normal; } + diff --git a/app/assets/stylesheets/custom.css b/app/assets/stylesheets/custom.css index 862769c..faea9a1 100644 --- a/app/assets/stylesheets/custom.css +++ b/app/assets/stylesheets/custom.css @@ -1,85 +1,545 @@ -html, body { height: 100%; margin: 0; padding: 0; font-family: Helvetica, Arial, sans-serif; color: #333333; } -img { border: 0; } -h2 { margin-top: 5px; } -h3 { margin-top: 0; } -a { color: #2565a5; text-decoration: none; } -a:hover, a:hover div, -a:hover .info { color: #0066ff; text-decoration: underline; } -ul { margin: 0; padding: 0 0 0 20px; } -ul li { margin-left: 15px; } -table { border-collapse: collapse; } -#logo { margin: 6px 0 0 20px; font-size: 45px; font-weight: bold; font-family: Tahoma, Geneva, Kalimati, sans-serif; } -#logo a { color: #d62020; } -#logo a span, .paygray { color: #666666; } -#logo a:hover { text-decoration: none; } -#logo.small { font-size: 30px; color: #666666; } -#options { float: right; text-align: right; } -#options span { padding-right: 10px; } -#login { padding: 6px; border: 1px solid #bbbbbb; border-collapse: separate; border-spacing: 3px; background-color: #eeeeee; background: -webkit-gradient(linear, left top, right top, from(#dddddd), to(#f5f5f5)); background: -moz-linear-gradient(left, #dddddd, #f5f5f5); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#f5f5f5', GradientType=1)); } -#menu { height: 40px; margin: 0 auto; border: 1px solid #dddddd; background-color: #d6d6d6; background: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#bbbbbb)); background: -moz-linear-gradient(top, #eeeeee, #bbbbbb); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#bbbbbb')); } -#menu div { float: left; } -#menu div a { color: #777777; padding: 10px 30px; display: block; font-weight: bold; } -#menu div:hover { background-color: #cccccc; } -#menu div:hover a { color: #000000; text-decoration: none; } -#menu .selected, -#menu .selected:hover { background-color: #e5e5e5; } -#menu .selected a { color: #000000; } -.userlogin { display:none; } -.login_info { font-weight: bold; text-align: right; font-size: 12px; } -.round { -moz-border-radius: 7px; -webkit-border-radius: 7px; } -.text_center { text-align: center; } -.big { font-size: 18px; } -.large { font-size: 20px; } -.xlarge { font-size: 30px; } -.small { font-size: 12px; } -.action { margin-right: 30px; position: relative; top: 25px; font-weight: bold; } -.nicetable { font-size: 14px; border: 1px solid #bbbbbb; } -.nicetable .header { font-weight: bold; background-color: #e5e5e5; } -.nicetable .header td { padding-top: 3px; } -.nicetable td { padding: 2px 10px; border-bottom: 1px solid #bbbbbb; } -.nicetable .stripe { background-color: #f9f9f9; } -.table_no_header { font-size: 14px; border: 1px solid #bbbbbb; } -.table_no_header td { padding: 2px 10px; border-bottom: 1px solid #bbbbbb; } -.table_no_header .left { font-weight: bold; } -.pagination { font-size: 14px; } -.centerme { display: table; margin: 0 auto; } -.fixedwidth { width: 990px; display: table; margin: 0 auto; } - -/* error messages */ -.errorExplanation { background-color: #ffffe0; display: table; margin-bottom: 20px; padding: 10px; border: 1px solid #aaaaaa; } -.field_with_errors { display: inline; } - -/* main layout */ -#wrapper { min-height: 100%; position: relative; } -#header { height: 75px; } -#menuwrap { padding: 0 20px; } -#content { padding: 23px 20px 58px 23px; } - -/* shortcuts */ -.FL { float: left; } -.FR { float: right; } -.FN { float: none; } -.DT { display: table; } -.CL { clear: left; } -.UL { text-decoration: underline; } -.TAR { text-align: right; } -.TAC { text-align: center; } -.VAT { vertical-align: top; } -.PB10 { padding-bottom: 10px; } -.PR20 { padding-right: 20px; } -.PL20 { padding-left: 20px; } -.PL30 { padding-left: 30px; } -.MR20 { margin-right: 20px; } -.MR60 { margin-right: 60px; } -.ML20 { margin-left: 20px; } -.W100 { width: 100%; } -.left20 { position: relative; left: -20px; } -.up2 { position: relative; top: -2px; } -.up20 { position: relative; top: -20px; } - -/* form styling */ -input[type='text'], -input[type='password'] { border: 1px inset #999999; width: 165px; } -input[type='text']:focus, -input[type='password']:focus { background-color: #ffffdd; } -input[type='submit'] { font-size: 14px; padding: 3px 6px; color: #333333; } \ No newline at end of file +/* bootstrap overrides */ +.navbar-collapse { max-height: 350px; } +.breadcrumb { margin-top: 10px; margin-bottom: 20px; } /* margins to make sure breadcrumb and h4.breadcrumb line up properly */ +.table td { word-break: break-word; } + +/* misc */ +body { padding-top: 70px; } +.break-word { word-break: break-word; } +.col-pad { padding: 0 15px; } + +/* multiline forms */ +.form-horizontal .multiline-label { margin-top: -10px; } + +/* nested fields */ +.nested-fields { border: 1px solid #d6d6d6; padding: 10px 10px 0 10px; max-width: 275px; } + +/* prettify code */ +.customcode, +.customcode .str, +.customcode .lit, +.customcode .pln { color: #00ab9b; } + +/* response types */ +.response-div { margin-top: 12px; font-size: 0.8em; } +.response { background-color: #ddd; margin: 0 1px; border: 1px solid #555; padding: 2px; font-weight: bold; color: #555; cursor: pointer; } +.response:hover { background-color: #eeb; } +.response.active { background-color: #beb; cursor: initial; } +.format-json, +.format-xml { display: none; } +.format-block { min-height: 200px; } +.format-block-lg { min-height: 350px; } + + +/* Sticky footer styles +-------------------------------------------------- */ + +html, +body { + height: 100%; + /* The html and body elements cannot have any padding or margin. */ +} + +/* Wrapper for page content to push down footer */ +#wrap { + min-height: 100%; + height: auto; + /* Negative indent footer by its height */ + margin: 0 auto -30px; + padding: 0 0 60px; +} + +/* Set the fixed height of the footer here */ +#footer { + padding-top: 5px; + border-top: 1px solid #ddd; + height: 30px; + background-color: #f5f5f5; +} +#footer .container { background-color: #f5f5f5; } +@media (max-width: 767px) { + #footer span { display: block; text-align: center; float: none !important; } +} + +/* old styles */ +.infobox { + vertical-align:bottom; +} +.spanlink { cursor: pointer; } +.boldlink { font-weight: bold; } +.apps a:hover, +.apps:hover div { text-decoration: none; } +.commentarea { width: 300px; height: 80px; } +#options { float: right; text-align: right; } +#login { + padding: 6px; + border: 1px solid #bbbbbb; + border-collapse: separate; + border-spacing: 3px; + background-color: #eeeeee; + background: -webkit-gradient(linear, left top, right top, from(#dddddd), to(#f5f5f5)); + background: -moz-linear-gradient(left, #dddddd, #f5f5f5); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#f5f5f5', GradientType=1); +} +#channel_info { padding-bottom: 20px; } +.signed_in_channel_header {display:inline-block; } +.public_private_icon {display:inline-block;} +.signed_in_channel_header { width:300px;height: 10px;} +#list_progress_bar { width:300px;height: 10px;} +.public_channel_box { +margin:5px;border-radius:7px;height:300px;border:solid 1px red;display:inline-block;width:260px;vertical-align:top +} +.public_channel_inner { +margin-left:10px; +margin-right:5px +} +.public_channel_name { + height: 11px; + font-size: 1.3em; + font-weight:bold; + color: #2565A5; +} +.public_channel_user { + height:15px; + margin-left:7px; + font-size: 0.9em; +} +.progressbar { + height:10px; + +} +.public_channel_desc { + height:140px; + word-break:break-all; +} +.public_channel_url { + height:10px; +} +.public_channel_tags { + height:57px; + margin-bottom:10px; + overflow: hidden; +} +.public_channel_thumbnail { +position:absolute;border:2px solid red;display:none +} +h1.channel_info { + margin:0; + padding-top: 10px +} + +div.list_tags { +padding-top:20px; +} +.channelLinks { + padding: 0 0 0 0; + margin-bottom: 15px; +} +.channelLinks li { + padding : 7px; + border: 1px solid #CCC ; + border-radius: 15px; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + display:inline; + margin:0 0 0 0; + list-style: none; +} +#comments { width: 100%; } +#commentsmain { float:left; width: 190px; background-color: #fffff9; border: 1px dashed #d0d0d0; padding: 5px; margin-right: 16px; overflow: hidden; display:none } +.commentlink { float:left;width:100%} +#public_statuses { width: 455px; height: 380px; overflow: auto; font-size: 1.5em; } +#public_statuses div { margin-left: 15px; } +.statusIFrame { + border : 1px solid #cccccc ; + background-color: #ffffff; +} + +.userlogin { display:none; } +.login_info { font-weight: bold; text-align: right; font-size: 12px; } +.round { -moz-border-radius: 7px; -webkit-border-radius: 7px; } +.text_center { text-align: center; } +.big { font-size: 18px; } +.large { font-size: 20px; } +.xlarge { font-size: 30px; } +.small { font-size: 12px; } +.action { margin-right: 20px; position: relative; top: 35px; font-weight: bold; padding:10px;} +.action_reverse { margin-right: 20px; position: relative; top: 35px; font-weight: bold; background-color: #d62020; padding:8px; color: #000000;} +.action_reverse a { color: #FFFFFF;} +.section_header_reverse { margin: 15px 0 5px 0; display: inline-block; font-weight: bold; color:#FFFFFF; background-color: #d62020; padding:8px;} +.nicetable { font-size: 14px; border: 1px solid #bbbbbb; } +.nicetable-borderless { font-size: 14px; border: none; } +.nicetable-borderless p { margin-left:20px; margin-top:5px; margin-bottom:10px; } +.nicetable-borderless h3 { margin-bottom:0; } +.nicetable-borderless h3.signed_in_channel_header { margin-bottom:10px; } +.nicetable .header { font-weight: bold; background-color: #e5e5e5; } +.nicetable .header td { padding-top: 3px; } +.nicetable td { padding: 2px 10px; border-bottom: 1px solid #bbbbbb; word-wrap:word} +.nicetable .stripe { background-color: #f9f9f9; } +.nicetable .disabled { background-color: #eee; } +.nicetable .disabled a { color: #888; } +.fulltable { width: 95%; } + +.fullform { width: 100%; margin-bottom: 1.5em;} +.deletecol { width: 1em; } + +.table_no_header { font-size: 14px; } +.table_no_header td { padding: 2px 10px; } +.table_no_header .left { font-weight: bold; } + +.max_width_400 { max-width:40; word-wrap:break-word; } +.helplink { float: right; margin-top: 3px; } +.votediv, +.votedivphoto, +.votedivlink { color: #3478e3; } +.votedivlink { padding-right: 20px; } +.votediv { float: right; display: none;} +.voteicon { padding: 2px; background: #f8f8f8; border: 1px solid #ddd; cursor: pointer; } +.voteicon:hover { text-decoration: none; } +.voteicon img { position: relative; top: 3px; } +.nestedcomment { padding-left: 30px; } +.commenttable { padding: 0; margin: 0; width: 100%; } +.commenttable td { padding: 4px 10px 4px 5px; } +.commentchannel { color: #f08600; font-weight: bold; } +.commentbody { color: #333333; } +.commentdiv { width:100%; padding: 5px 0 5px 0; + font-size: 12px; + border-top: 1px solid #aaa; } +.gravatar { border: 1px solid #999; } +.noavatar { width: 50px; height: 50px; border: 1px solid #ddd; color: #ddd; text-align: center; } +.noavatartext { padding-top: 5px; } +.prettydate { color: #aaa; } +.username a { color: #3478E3; font-weight: bold; } + +.timeago { + + + font-size: 0.8em; + color: #ccc; +} + +.pagination { font-size: 14px; } +.centerme { display: table; margin: 0 auto; } +.fixedwidth { width: 960px; display: table; margin: 0 auto; } +.code { margin: 10px 0; background-color: #fafafa; white-space: pre-wrap; font: 12px Monaco, Lucida Console, monospace; color: #000000; border: 1px solid #bbbbbb; padding: 10px; } +.apps { padding: 0 30px 40px 0; font-size: 20px; float: left; text-align: center; margin: 0 auto; width: 150px; } +input[type="text"].shortfield { width: 30px; } +input[type="text"].midfield { width: 120px; } +textarea.tweet { margin-top: 0.5em; width: 40em; height: 3em; } + +/* error messages */ +.errorExplanation { width: 95%; background-color: #ffffe0; display: table; margin-bottom: 20px; padding: 10px; border: 1px solid #aaaaaa; } +#error { + color: red; +} +.field_with_errors { display: inline; } +/*.error_box { margin-top: 15px; padding: 5px; background-color: #f99; color: #300; border: 1px solid #f66; }*/ +.warning_box { margin: 15px 0 15px 0; padding: 10px; background-color: #fc3; color: #000; border: 1px solid #f90; } + +/* main layout */ +#maincontent { float: left; width:980px; padding-bottom: 20px; margin-left:10px; overflow:false} +#maincontent.thin { width: 400px; } +#maincontent.medium { + + width: 500px; +} + +#maincontent .thinghttptable { table-layout:fixed; width: 400px; word-wrap: break-word; } +#maincontent .thinghttptable .url { width: 100px; } +#maincontent .thinghttptable .apikey { width: 80px; } + +input#upload_csv { padding-top:5px;margin:20px 0;} + +#sidebar { } +#sidebar.wide { width: 520px; } +#sidebar.medium { width: 470px; } +#sidebar.narrow { width: 470px; margin-left: 520px;} +#sidebar .helplink { float: right; margin-top: 5px; font-weight: normal; font-size: 12px; } + +/* shortcuts */ +.FL { float: left; } +.FR { float: right; } +.FN { float: none; } +.DT { display: table; } +.CL { clear: left; } +.CR { clear: right; } +.CB { clear: both; } +.UL { text-decoration: underline; } +.TAR { text-align: right; } +.TAC { text-align: center; } +.VAT { vertical-align: top; } +.PB10 { padding-bottom: 10px; } +.PR20 { padding-right: 20px; } +.PL20 { padding-left: 20px; } +.PL30 { padding-left: 30px; } +.MT10 { margin-top: 5px; } +.MR20 { margin-right: 20px; } +.MR60 { margin-right: 60px; margin-bottom: 20px; } +.ML20 { margin-left: 20px; } +.ML60 { margin-left: 60px; } +.W50 { width: 50%; } +.W100 { width: 100%; } +.left20 { position: relative; left: -20px; } +.up2 { position: relative; top: -2px; } +.up20 { position: relative; top: -20px; } + +/* form styling */ +input.video_narrow {width:100px; } +/* home page */ +#feature_signup {} +#feature_signup a {border-bottom: 3px solid #d62020; text-decoration: none; font-weight: bold;} +#feature_signup a:hover {text-decoration: none;} + + +/* jQuery Nav */ +#nav { list-style: none; padding:0 10px 0 92px; margin: 0;} +#nav li { float:left; margin: 0px 0px 0px 10px;padding:0px 15px 0px 0px;position:relative;font-size:14px;line-height: 1.4;zoom: 1} +#nav li:last-child {padding:0;} +#nav .current-cat a, +#nav .current_page_item a {color: #d62020; border-bottom:5px solid #2565A5;} +#nav .current-cat li a, +#nav .current_page_item li a {color: #000} +#nav .current-cat li a:hover, +#nav .current_page_item li a:hover {color: #d62020; border-bottom:5px solid #2565A5;} + +#nav li a { text-transform: uppercase; font-weight: bold; text-decoration: none; color: #000;border:none; text-decoration: none; float: left; border-bottom:5px solid #FFFFFF;} +#nav li a:hover {color:#d62020; border-bottom:5px solid #aaa;} +#nav li span { width: 12px; height:20px; background: url('arrow-down.gif') no-repeat left 7px;margin:0;padding:0;position: absolute;right:0;top:0} +#nav ul {display:none} +#nav li span.child { width: 12px; height: 20px; background: url('arrow-right.gif') no-repeat left 10px;margin:0;padding:0;position: absolute;right:0;top:0; } + +#nav li a.rss {background: url(rss_feed.png) right 0px no-repeat; padding:0px 30px 0px 0;} +#nav li a.rss:hover {background: url(rss_feed.png) right -24px no-repeat; padding:0px 30px 0px 0; border-bottom:0 solid #aaa;} + +/* jQuery Overrides */ +.ui-widget { font-size: .8em; } +.ui-widget-header { + border: 1px solid #0867A3; + background: #0867a3 none top right no-repeat; +} +.ui-progressbar { + height: 5px; +} +.ui-progressbar-value { + background-color: green; +} +.ui-widget-content a{ + color:blue; + text-decoration: underline; + margin:0; +} +.ui-widget-content p { + margin:0 0 10px 10px; + +} + +.column { width: 470px; float: left; padding-bottom: 50px; padding-left: 5px; } +.portlet { margin: 0 1em 1em 0; } + +.portlet-header { margin: 0.3em; padding: 7px 7px 7px 7px; } +.portlet-header .ui-icon { float: right; margin-top: -2px; cursor:pointer; cursor:hand;} +.portlet-content { padding: 0.4em; } +.ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 50px !important; } +.ui-sortable-placeholder * { visibility: hidden; } + +.buttonlets { + float:left; + overflow:hidden; + max-width:95px; +} + +.tweetButton { + width:80px; +} +.facebookButton { + width:85px; +} +.googleplusButton { + width:70px; +} + +.padded { + margin-top:2px; +} + +.ui-button { + height: 19px; + line-height:1em; +} +.ui-button-text-only .ui-button-text { + padding: 0.2em 1em 0.2em 0.4em ; + font-size: 12px; +} + +.ui-state-active { + border: 1px solid #2565a5; + background: #ddd none 50% 50% repeat-x; + color: #2565a5; +} + +.ui-state-default { + border: 1px solid #ccc; + color: #2565a5; +} + +.ui-state-hover { + background: #ccc none 50% 50% repeat-x; +} + +.topLink { + font-size: 16px; + +} +.developerlink { + + padding:7px; + margin-left:10px; + border-bottom-left-radius: 15px; + border-bottom-right-radius: 15px; + -webkit-border-bottom-left-radius: 15px; + -webkit-border-bottom-right-radius: 15px; + -moz-border-bottom-left-radius: 15px; + -moz-border-bottom-right-radius: 15px; + background-color:#aaa; + +} + +.addpluginlink { + color:white; + padding:7px; + margin-left:10px; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + background-color:#aaa; + cursor:pointer; +} +.addpluginlink:hover { + background-color: #ccc; +} + +.pluginrectangle { + display:none; + background-color:#aaa; + border-radius:5px; + position:absolute; + height:70%; + width:100%; + top:30px; + right:0; +} + + +.developerlink:hover { + background-color: #ccc; +} +.developerlink a { + color : white; + text-decoration:none; +} + +.channelInfo { + max-width: 500px; +} +.channelDescription { + width: 450px; + height: 60px; + +} + +.socialButtons { + float:right; + display:inline; + +} + +.dev-info-dialog { + border : 2px solid #bbb; + +} +.dev-info-dialog .ui-dialog-titlebar { + background-color: #aaa; + color : white; +} + + +.dev-info-dialog a { + text-decoration : underline; +} + +.ui-tabs { +height:100%; +} +.dev-info-dialog ul { +/* display: inline; */ + list-style-type: none; + background-color: whitesmoke; +} +#devInfo { + font-size: 1.2em; +} +.dev-info-dialog ul li { + display: inline; + list-style-type: none; +} + +.dev_info_table1 { + margin-bottom:10px; +} + +.dev_info_table2 { + margin-left: 10px; +} +.dev_info_table2 td { + max-width:300px; +} +.watchButtonLabel { + white-space: nowrap; + padding-right:10px; +} + +.watchButtonImage { +float:left;background-position:left;background-image:url('eye.png');background-repeat:no-repeat;width:19px;height:16px; +} + +.watchButtonPadding { + padding-right : 5px; +} + +.chartOptions { + display: none; +} +.fade { + display: none; + font-size : 1.2em; +} +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #d82020; background: #f5cece url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #d82020; } +.ui-state-hover a, .ui-state-hover a:hover { color: #d82020; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #d82020; background: #f5cece url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #d82020; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #d82020; text-decoration: none; } +.ui-widget :active { outline: none; } + +.ui-tabs .ui-tabs-panel { + padding-top:0; +} + +.addportlet { + padding:5px; + width:50px; + margin:5px; + border-radius:5px; + border : 2px solid red; + cursor: pointer; + display:inline-block; +} + +.channel_stats_location { +clear:right; float:right;width:475px;padding-top:23px +} +.channel_stats_text { +font-weight:bold;font-size:1.2em +} +.channel_time_text { +color:black;font-size:1em; +} + diff --git a/app/assets/stylesheets/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/app/assets/stylesheets/images/ui-bg_diagonals-thick_18_b81900_40x40.png new file mode 100755 index 0000000000000000000000000000000000000000..954e22dbd99e8c6dd7091335599abf2d10bf8003 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEr#)R9Ln2z=UU%d=WFXS=@V?HT z#xG*`>Yvsgk=}99w^d^D^d*@m74oMo<%#FcopJf?u00-~YVKV2wzrI*_R6;UORMea zBFVSEnN~eiVA6V&z`E)YLz5Aok^D)In}Yn=OzDpgR5Wv0XfT8pOkmV{sKAJ-PO9#T zZK}IXj&Q-V!U)!LcB_3K0&C*{ literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/images/ui-bg_diagonals-thick_20_666666_40x40.png b/app/assets/stylesheets/images/ui-bg_diagonals-thick_20_666666_40x40.png new file mode 100755 index 0000000000000000000000000000000000000000..64ece5707d91a6edf9fad4bfcce0c4dbcafcf58d GIT binary patch literal 251 zcmVbvPcjKS|RKP(6sDcCAB(_QB%0978a<$Ah$!b|E zwn;|HO0i8cQj@~)s!ajF0S002ovPDHLkV1oEp BYH0uf literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/images/ui-bg_flat_10_000000_40x100.png b/app/assets/stylesheets/images/ui-bg_flat_10_000000_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..abdc01082bf3534eafecc5819d28c9574d44ea89 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQY-ImG zFPf9b{J;c_6SHRK%WcbN_hZpM=(Ry;4Rxv2@@2Y=$K57eF$X$=!PC{xWt~$(69B)$ BI)4BF literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/images/ui-bg_glass_100_f6f6f6_1x400.png b/app/assets/stylesheets/images/ui-bg_glass_100_f6f6f6_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..9b383f4d2eab09c0f2a739d6b232c32934bc620b GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour1U*q978O6-yYw{%b*}|_(02F z@qbE9)0CJMo;*v*PWv`Vh2h6EmG8IS-Cm{3U~` zFlmZ}YMcJY=eo?o%*@I?2`NblNeMudl#t?{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/app/assets/stylesheets/images/ui-bg_gloss-wave_35_f6a828_500x100.png new file mode 100755 index 0000000000000000000000000000000000000000..39d5824d6af5456f1e89fc7847ea3599ea5fd815 GIT binary patch literal 3762 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 literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/app/assets/stylesheets/images/ui-bg_highlight-soft_100_eeeeee_1x100.png new file mode 100755 index 0000000000000000000000000000000000000000..f1273672d253263b7564e9e21d69d7d9d0b337d9 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l%l7LV~E7mxPQ=F85a&M@g_{ d|GeK{$Y5lo%PMu^>wln`44$rjF6*2UngE4^EGqy2 literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/images/ui-icons_222222_256x240.png b/app/assets/stylesheets/images/ui-icons_222222_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a GIT binary patch literal 4369 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
    t&;p)D%&Z%Nw$gSPa!nz8Slh7=ko2am)XARwOWw zpsz0~K!s{(dM$NB=(A=kkp>T(*yU6<_dwIx>cH4+LWl282hXa6-EUq>R3t?G2623< z*RwTN%-fgBmD{fu*ejNn)1@KG?Sg*8z3hYtkQJQjB6 zQ|x>wA=o$=O)+nLmgTXW3_6diA;b4EY{*i*R%6dO2EMg z@6g?M3rpbnfB@hOdUeb96=~I?OIA3@BWAGmTwiQ{x5Cqq<8c10L!P zd@Qk^BseTX%$Q7^s}5n%HB|)gKx}H$d8Sb$bBnq9-AglT2dGR2(+I;_fL|R4p$odJ zllfb0NqI)7=^z~qAm1V{(PkpxXsQ#4*NH9yYZ`Vf@)?#ueGgtCmGGY|9U#v|hRdg- zQ%0#cGIfXCd{Y)JB~qykO;KPvHu|5Ck&(Hn%DF~cct@}j+87xhs2ew;fLm5#2+mb| z8{9e*YI(u|gt|{x1G+U=DA3y)9s2w7@cvQ($ZJIA)x$e~5_3LKFV~ASci8W}jF&VeJoPDUy(BB>ExJpck;%;!`0AAo zAcHgcnT8%OX&UW_n|%{2B|<6Wp2MMGvd5`T2KKv;ltt_~H+w00x6+SlAD`{K4!9zx z*1?EpQ%Lwiik){3n{-+YNrT;fH_niD_Ng9|58@m8RsKFVF!6pk@qxa{BH-&8tsim0 zdAQ(GyC^9ane7_KW*#^vMIoeQdpJqmPp%%px3GIftbwESu#+vPyI*YTuJ6+4`z{s? zpkv~0x4c_PFH`-tqafw5)>4AuQ78SkZ!$8}INLK;Egr;2tS18hEO5=t;QDmZ-qu?I zG+=DN`nR72Xto{{bJp||`k}-2G;5#xg8E~xgz22)^_Z;=K|4@(E&5J)SY2of=olcw z5)@L)_Ntcm!*5nEy0M9v0`S33;pO4TN;>4(Z+19p_0>u#e-vE zXCU(6gAvu~I7Cw(xd%0e59MNLw^U37ZDbsBrj%eDCexw8a3G`nTcXVNL6{B7Hj@i& zbVB{;ApEtHk76q08DJ48dSxd$C(;$K6=FpU<~l9pVoT9arW^Vu{%Bcn4`eIpkOVC| z$)AKYG_`ypM{0@BUb3^9lqi_c?ONH|4UJMJWDowMVjacycX7}9g={O7swOB+{;+?; zjBo!9?+nd)ie#x5IbFW-zBOo0c4q@9wGVt5;pNt`=-~Zgcw#*`m($6ibxtZ`H=e=} zF#GZ~5$%AUn};8U#tRem0J(JTR}d4vR(dgK2ML~lZsPhayJ2h1%sD4FVst| zKF)+@`iNzLRjg4=K8@**0=5cE>%?FDc({I^+g9USk<8$&^qD~@%W0i4b|yMG*p4`N zh}I!ltTRI8Ex$+@V{02Br%xq#O?UlhO{r8WsaZnZCZq0MK9%AXU%MDLT;3=0A9(BV z9VxxxJd7jo$hw3q;3o?yBLmA=azBUrd9>-<_ANs0n3?-Ic*6&ytb@H~?0E(*d>T5n z-HiH2jsDf6uWhID%#n>SzOqrFCPDfUcu5QPd?<(=w6pv1BE#nsxS{n!UnC9qAha1< z;3cpZ9A-e$+Y)%b;w@!!YRA9p%Kf9IHGGg^{+p`mh;q8i7}&e@V3EQaMsItEMS&=X plT@$;k0WcB_jb;cn%_Idz4HO$QU*abf4}+wi?e96N>fbq{{i|W0@(ln literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/images/ui-icons_228ef1_256x240.png b/app/assets/stylesheets/images/ui-icons_228ef1_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..a641a371afa0fbb08ba599dc7ddf14b9bfc3c84f GIT binary patch literal 4369 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 oBo%DI*Kv;w;*%(i9W@e{{5C=l}o! literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/images/ui-icons_ef8c08_256x240.png b/app/assets/stylesheets/images/ui-icons_ef8c08_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..85e63e9f604ce042d59eb06a8428eeb7cb7896c9 GIT binary patch literal 4369 zcmd^?`8O2)_s3^phOrG}UnfiUEn8(9QW1?MNkxXVDEpFin2{xWrLx5kBC;k~GmC-Ajq!3AfU8Dx90^_ zp3}MKjJzYC+`T(&egFXQ#9Ek{*oVAaa!zrZtmlRFnwQPRJXH<%pkK2*eP`pT=lwD7 zifq+4BY_rUTa+U|2#&?i7>PVvD?7R4ZfOLPT{e9G~G!Ls3s8JtQE`jMM9wl2V9&Q+K2DHW0M+uQmEr%nYJ^7cK?uIpU-)=wn71ZZ-=@ar0;3^AY z5+TI{2b(e%t{2PZ^HKF*vu@+Xr&BAc@2BC4 z_vCgww#i=)ea5Vo$glEEVBBg_VPBj!)OO>)f@}#dg6ULOeC>LBHz<;*5Y;YfE0lNx zg{N+4@lO~ozxpF69qV@VOGnc248Iuag4C1T)P^(hWkpP!{h!JekX}m^Q#b2B4f1oT zIjsGz)4}-$rQ*-tSuc%qG>%<4xM#E& zN)7lRK~^2VdiloY4>;#}A!yHOAXEmEi^+eA#05pawGXs>!z)gSoDuI#>bRCq-qjJe zZ)r=A`*EMX6+)~er1kdv1L^)0-PsAEM7JF$O6G8>496$24lkOSR^RTfUuIz%iSfn5b-t!##cs7sQI);gdAvqmn_v|%I9k;fCPl0Z)R1+hNQONJN zH%3jT9sOq*a`LF*MiY=zlSSQZ;{_FL9M07A=In+O!~wR}=bzGEQpk2!Vc0p)qKAH? zOk{(%06W#)DdICQ_S%Q@<0Y+!?9%#$gWJ%)EO->^YZP{<`oB4~9xh zL9-0*c4@B#O2ylYs_g`Ky$zb~v!M`NRaMNFYF*Gsu|7)=JyyMHjFC=HhGUE@{aI|B zJ~ITXU052%7jFb5Ys#fhS_?4kqc7H0EU49B8(Chg0&JzU=Gka#xOz1)H0d4m7ZnRA z=M^tdY|U6T!fmte{W?_r8H~qdq|q{5AMU_2It1I4143n~xL?4&K#BOB48l9_Rdm!(c^C?JU;tF0 zEh@o1y6Qa_>}#AwX{VY+`C^kNkxhgb1P5cB0%xupAXyg9NO=SnXrJUE?rQg{Lcsn+ zAZKctGLfbK_B#^&Nev|0^fB&?DN=ak8|0!np524LD25=s84BP8Vl(3=jflNp{X>e@ z637Ri5xx;&JNl+XYImA|{;XR~P*svYDEWYJ6I5!6uO~2twFC1ZQevB7#3z~(apxn& z^J@>Mc`>PJair{yT`iuan-V+i%|Ho-pA<1?V-k^R2Q<5;Co%XxmL` z018t4T0TTwO^w)Gx{9OSJ^9_|kgwX`7%0Rw!PO~@?xvnfUehvN;2Rc;^l>3kfbtk3 z8{j7p;S&{uTlTe9&HTc38q@%_KQFk<&n{vmrN7y&Cz{etcE->rq!6HL)2F!aa=0%! zM%Bwo!7TQ5t;@a_#Q}sjk{UebWQZ8{cp&HN^$*JfH#8spkhk{R@CVBiPuP@yEhu{} zsQfuhTqV%rioATpEphMfhyRYbVfVW`YwLFXUWm-===J(byMf!5;W^CV1g~2194Xx) zFK|z{pm%n-)-DRe{Qhk(d!QaoI*y%Wn6h7<6A{i*Sob&B^y|Spg!&J$`kN>zwUJ3x zaB$ciu*0FJKg}T ztgnh)ASF8njz5>h6?f#{c=*Yr4W_34$GmVIo8OLWjcZK4a0`+Yv-!*}9 zBwKm;DAsA(nDI-`iH@;`=gP+m{lgFLHK3m$W@?)&dGhDA_Z2xOzI0$p(ZJtH$vCxE zj>+kYNBJzs-TlSx!tSH}%I9fQv)mc!C7X0bKlZv4f&}C3+O-4k7AmVO|KYZ9ydP%(N1^uisV8y;~p`x4qFXD?!_OyN9=w(Od6W; zGrT?G;l2v@Ob5k^8w<9w%Jbjb^|H}PYKo}I~bobd!XrTbzp2Zp~H8lgJ)I3?l&(bDiWf8gE&6b z>)9GB=Iu-6%I((+>=jGP>CzD8c0oWITFZGgM!Q7|JrUYq4#^Y(vuDu-a>OWDa4Y4} z5a_*lW#IL_aVf8L+Ty}c&2VojLEIA-;eQK6Wo?xAuK>i;1VWx3c=!s2;j_*iRHOsb*>6-CgcYP+Ho=L@XLd*j~2ln-;WHg)|cCixksH$K={5rGSD@yB%LI|(NCc8 z1Er8H+QO)~S~K{g?nH|2dB8SKs)BxQ?%G}}o*LV!NG2m*TmR|pWj~g`>)ClJCE#F$ zcj)fBg(dKOKmc$Cy}IRlasngIR>z~kP&WW~9cC951{AKmnZ~ZMsqup6QQf7J0T1;C zK9*Qd5*(HxW=tl|RfjO>nkoW#AU3t>JkuzWxy4-l?xmTv15_r1X@p@dz^{&j&;{Mq z$^0$0q&y?kbdZh)kZ+NfXfqLTG}Q^j>qHlUH4VEK`3y^-z6Y<6O88Hf4v^;}!{t-a zDWg;znYu%6zA1~A5~w?fxO~i8-Ib(^02{c4pXjhDI^2 zXB1LP4dvWuc%PXQ{r!d#6>${rm+M8EJM8yf#!H$Kp8AxwUXm5`7Tu-J$mHeCG>vw|&Ay415}_1w&*9K8+2d3v1N+@a$|820o4u60Tj@u&kI!~q2V9X; z>tMvQDI|O$#m+m2O**ZHq`_{#8)ry6`&5s~2k{O4Du16Fn0P;&_(0!e5%Bel){nU0 zJX~<8U6hoI%yx}qGY_1Tq7YKDJ)ETOCs&W)TiCrK*1%DE*vXdD-7hwE*LUgjeHRM` z&@pkhTi>m#Kc+QIK+2Ybn9-sFVKNHyIgfob4H_77yYh))Rq$7Pw|+aD6&yZ|ki9 z8Zb6s{oBt1G+PgfIcxd}{m@~1nzhe;LH)5;!gS8@ddyabpdBc?7JVl?tS+<#bPSMT z2@0uYdsWN(;Ww)n-PlA-0r+62@bYkEa`k{0s})fJgYZ#5=DmIdEvok7aZJRi{w-|} zkea&6X}ZA3b7&vbDb7)v8CuI(+zzSf3z&P2eOrPNP?D~ zf zn0@)0h;~5F&BG5vOFU!=woW&ZSl~nrs{?1w>nWfW_dnpTd z4qvLDYJ*ft>Sp%M(^_xCZpNBnc66JX}A|ZL9IENM`U>`ph7d<+RQiI}@E8Y)70s zMC*_&))}GlmR}@{v9*nm)29-=rn`Q$rc^4G)GVQHlTr6BpGxtHuU(8AF7Ffh54?5w zj+EYT9>x)PWL-iQ@RNmT?R+|c@=FOmj)5Za6_ z@DkVy4l^L>Z3#SI@s_eVwd3D)<^Ivq8a~J{|4mhOL^<7M4D8){ut;GIqqn`oqCk|x pNh;Wa$C0(mdpqYz&F>xK-uVD=DT5%Jzh8ZT#aXmjr70%*{{RacS`YvL literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/images/ui-icons_ffd27a_256x240.png b/app/assets/stylesheets/images/ui-icons_ffd27a_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..e117effa3dca24e7978cfc5f8b967f661e81044f GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/jquery-ui-1.8.24.custom.css b/app/assets/stylesheets/jquery-ui-1.8.24.custom.css new file mode 100755 index 0000000..2522079 --- /dev/null +++ b/app/assets/stylesheets/jquery-ui-1.8.24.custom.css @@ -0,0 +1,563 @@ +/*! + * jQuery UI CSS Framework 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; } +.ui-helper-clearfix:after { clear: both; } +.ui-helper-clearfix { zoom: 1; } +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/*! + * jQuery UI CSS Framework 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller&ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; } +.ui-widget-content a { color: #333333; } +.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +.ui-widget-header a { color: #ffffff; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } +.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } +.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } + +/* Overlays */ +.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } +.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*! + * jQuery UI Resizable 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Resizable#theming + */ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; } +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*! + * jQuery UI Selectable 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectable#theming + */ +.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } +/*! + * jQuery UI Accordion 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */ +/* IE/Win - Fix animation bug - #4615 */ +.ui-accordion { width: 100%; } +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } +.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } +.ui-accordion .ui-accordion-content-active { display: block; } +/*! + * jQuery UI Autocomplete 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */ +.ui-autocomplete { position: absolute; cursor: default; } + +/* workarounds */ +* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ + +/* + * jQuery UI Menu 1.8.24 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ +.ui-menu { + list-style:none; + padding: 2px; + margin: 0; + display:block; + float: left; +} +.ui-menu .ui-menu { + margin-top: -3px; +} +.ui-menu .ui-menu-item { + margin:0; + padding: 0; + zoom: 1; + float: left; + clear: left; + width: 100%; +} +.ui-menu .ui-menu-item a { + text-decoration:none; + display:block; + padding:.2em .4em; + line-height:1.5; + zoom:1; +} +.ui-menu .ui-menu-item a.ui-state-hover, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} +/*! + * jQuery UI Button 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ +.ui-button .ui-button-text { display: block; line-height: 1.4; } +.ui-button-text-only .ui-button-text { padding: .4em 1em; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +input.ui-button { padding: .4em 1em; } + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ +/*! + * jQuery UI Dialog 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } +/*! + * jQuery UI Slider 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; }/*! + * jQuery UI Tabs 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs#theming + */ +.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } +.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } +/*! + * jQuery UI Datepicker 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */ +.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +}/*! + * jQuery UI Progressbar 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar#theming + */ +.ui-progressbar { height:2em; text-align: left; overflow: hidden; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file diff --git a/app/assets/stylesheets/prettify.css b/app/assets/stylesheets/prettify.css new file mode 100644 index 0000000..34841f1 --- /dev/null +++ b/app/assets/stylesheets/prettify.css @@ -0,0 +1,31 @@ +.com { color: #93a1a1; } +.lit { color: #195f91; } +.pun, .opn, .clo { color: #93a1a1; } +.fun { color: #dc322f; } +.str, .atv { color: #D14; } +.kwd, .prettyprint .tag { color: #1e347b; } +.typ, .atn, .dec, .var { color: teal; } +.pln { color: #48484c; } + +.prettyprint { + padding: 8px; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} +.prettyprint.linenums { + -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin: 0 0 0 33px; /* IE indents via margin-left */ +} +ol.linenums li { + padding-left: 12px; + color: #bebec5; + line-height: 20px; + text-shadow: 0 1px 0 #fff; +} + diff --git a/app/assets/stylesheets/sidebar.css b/app/assets/stylesheets/sidebar.css new file mode 100644 index 0000000..a5acce1 --- /dev/null +++ b/app/assets/stylesheets/sidebar.css @@ -0,0 +1,28 @@ +.affix-top,.affix{ + position: static; +} + +#bootstrap-sidebar { + background-color: #eee; + border: 1px solid #bbb; + border-radius: 5px; + padding: 2px 0; +} + +#bootstrap-sidebar li a:hover { + background-color: #fafafa; +} + +#bootstrap-sidebar li.active { + border:0 #666 solid; + border-right-width:4px; +} + +@media (min-width: 979px) { + #bootstrap-sidebar.affix-top, #bootstrap-sidebar.affix { + position: fixed; + top:90px; + width:228px; + } +} + diff --git a/app/assets/stylesheets/status.css b/app/assets/stylesheets/status.css new file mode 100644 index 0000000..c569113 --- /dev/null +++ b/app/assets/stylesheets/status.css @@ -0,0 +1,9 @@ +.recent_status { + font-family: sans-serif; + margin: 4px; +} +.timeago { + font-size: 0.8em; + color: #ccc; + margin-left:10px; +} \ No newline at end of file diff --git a/app/controllers/api_keys_controller.rb b/app/controllers/api_keys_controller.rb index 87d4c38..9653962 100644 --- a/app/controllers/api_keys_controller.rb +++ b/app/controllers/api_keys_controller.rb @@ -1,42 +1,50 @@ class ApiKeysController < ApplicationController - include KeyUtilities + include KeyUtilities, ApiKeys - before_filter :require_user, :set_channels_menu + before_filter :require_user, :set_channels_menu - def index - @channel = current_user.channels.find(params[:channel_id]) - @write_key = @channel.api_keys.write_keys.first - @read_keys = @channel.api_keys.read_keys - end + def index + api_index params[:channel_id] + end - def destroy - current_user.api_keys.find_by_api_key(params[:id]).try(:destroy) - redirect_to :back - end + def destroy + current_user.api_keys.find_by_api_key(params[:id]).try(:destroy) + redirect_to :back + end - def create - @channel = current_user.channels.find(params[:channel_id]) - @api_key = @channel.api_keys.write_keys.first + def create + @channel = current_user.channels.find(params[:channel_id]) + @api_key = @channel.api_keys.write_keys.first - # if no api key found or read api key - if (@api_key.nil? or params[:write] == '0') - @api_key = ApiKey.new - @api_key.channel_id = @channel.id - @api_key.user_id = current_user.id - @api_key.write_flag = params[:write] - end + # if no api key found or read api key + if (@api_key.nil? || params[:write] == '0') + @api_key = ApiKey.new + @api_key.channel_id = @channel.id + @api_key.user_id = current_user.id + @api_key.write_flag = params[:write] + end - # set new api key and save - @api_key.api_key = generate_api_key - @api_key.save + # set new api key and save + @api_key.api_key = generate_api_key + @api_key.save - # redirect - redirect_to channel_api_keys_path(@channel) - end + # redirect +# redirect_to channel_api_keys_path(@channel.id) + redirect_to channel_path(@channel.id, :anchor => "apikeys") + end + + def update + @api_key = current_user.api_keys.find_by_api_key(params[:id]) + @api_key.update_attributes(api_key_params) + redirect_to :back + end + + private + + # only allow these params + def api_key_params + params.require(:api_key).permit(:note) + end - def update - @api_key = current_user.api_keys.find_by_api_key(params[:id]) - @api_key.update_attributes(params[:api_key]) - redirect_to :back - end end + diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 4795ed0..141c002 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,51 +1,134 @@ class ApplicationController < ActionController::Base - # include all helpers for controllers + # include all helpers for controllers helper :all - # include these helper methods for views - helper_method :current_user_session, :current_user, :get_header_value + # include these helper methods for views + helper_method :current_user_session, :current_user, :logged_in?, :is_admin?, :get_header_value, :to_bytes protect_from_forgery - before_filter :set_variables + before_filter :allow_cross_domain_access, :set_variables - # set up some variables across the entire application + # responds with blank + def respond_with_blank + respond_to do |format| + format.html { render :text => '' } + format.json { render :json => {}.to_json } + # fix xml response line breaks + format.xml { render :xml => {}.to_xml.gsub("\n", '').gsub("", "\n") } + end + end + + # responds with an error + def respond_with_error(error_code) + error_response = ErrorResponse.new(error_code) + respond_to do |format| + format.html { render :text => error_response.error_code, :status => error_response.http_status } + format.json { render :json => error_response.to_json, :status => error_response.http_status } + format.xml { render :xml => error_response.to_xml, :status => error_response.http_status } + end + end + + # set up some variables across the entire application def set_variables + @api_domain ||= api_domain + @ssl_api_domain ||= ssl_api_domain @locale ||= get_locale - I18n.locale = ALLOWED_LOCALES.include?(@locale) ? @locale : I18n.default_locale + I18n.locale = @locale # sets timezone for current user, all DateTime outputs will be automatically formatted Time.zone = current_user.time_zone if current_user end - + # get the locale, but don't fail if header value doesn't exist def get_locale locale = get_header_value('HTTP_ACCEPT_LANGUAGE') - # only look for 'pt-br' as first 5 letters, can make more robust in future if other languages are needed - locale = locale[0..4].downcase if locale + + if locale and ALLOWED_LOCALES.include?(locale[0..1].downcase) + locale = locale[0..1].downcase + elsif locale and ALLOWED_LOCALES.include?(locale[0..4].downcase) + locale = locale[0..4].downcase + else + locale = I18n.default_locale + end + return locale end private - def set_channels_menu - @menu = 'channels' - end + # allow javascript requests from any domain + def allow_cross_domain_access + response.headers['Access-Control-Allow-Origin'] = '*' + response.headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, OPTIONS, DELETE, PATCH' + response.headers['Access-Control-Allow-Headers'] = 'origin, content-type, X-Requested-With' + response.headers['Access-Control-Max-Age'] = '1800' + end + + def logged_in? + true if current_user + end + + # check that user's email address matches admin + def is_admin? + current_user && ADMIN_EMAILS.include?(current_user.email) + end + + def set_admin_menu + @menu = 'admin' + end + + # converts a string to a byte string for c output + def to_bytes(input, separator='.', prefix='') + return '' if input == nil + output = [] + # split the input array using the separator, and add necessary prefixes to each item + input.split(separator).each { |i| output.push(prefix + i) } + # rejoin the array into a comma separated string + return output.join(', ') + end + + def set_channels_menu + @menu = 'channels' + end + + def set_apps_menu + @menu = 'apps' + end + + def set_plugins_menu + @menu = 'plugins' + end + + def set_devices_menu + @menu = 'devices' + end def current_user_session return @current_user_session if defined?(@current_user_session) @current_user_session = UserSession.find end - + def current_user return @current_user if defined?(@current_user) @current_user = current_user_session && current_user_session.record end - - # check that user is logged in - def require_user - if current_user.nil? - redirect_to login_path - false - end - end - + + def require_user + logger.info "Require User" + if current_user.nil? + respond_to do |format| + format.html { + session[:link_back] = request.url + logger.debug "Redirecting to login" + redirect_to login_path + return true + } + format.json do + render :json => {'error' => 'Could not authenticate you.'}, :status => :unauthorized + return true + end + end + return false + end + end + def require_no_user if current_user store_location @@ -54,142 +137,205 @@ class ApplicationController < ActionController::Base end end - def store_location - if params[:controller] != "user_sessions" - session[:return_to] = request.fullpath - end + def require_admin + unless current_user && is_admin? + render :nothing => true, :status => 403 and return + false + end end - + + def store_location + if params[:controller] != "user_sessions" + session[:return_to] = request.fullpath + end + end + def redirect_back_or_default(default) redirect_to(session[:return_to] || default) session[:return_to] = nil end - def domain - u = request.url - begin - # the number 12 is the position at which to begin searching for '/', so we don't get the intitial '/' from http:// - u = u[0..u.index('/', 12)] - rescue - u += '/' - end - # uncomment the line below for https support in a production environment - #u = u.sub(/http:/, 'https:') if Rails.env == 'production' - return u - end + def domain(ssl=true) + u = request.url + begin + # the number 12 is the position at which to begin searching for '/', so we don't get the intitial '/' from http:// + u = u[0..u.index('/', 12)] + rescue + u += '/' + end + u = u.sub(/http:/, 'https:') if (Rails.env == 'production' and ssl) + return u + end - # gets the api key - def get_userkey - return get_header_value('THINGSPEAKAPIKEY') || params[:key] || params[:api_key] || params[:apikey] - end + def ssl + (Rails.env == 'production') ? 'https' : 'http' + end - # get specified header value - def get_header_value(name) - value = nil - for header in request.env - value = header[1] if (header[0].upcase.index(name.upcase)) - end - return value - end + # domain for the api + def api_domain + (Rails.env == 'production') ? API_DOMAIN : domain + end + + # ssl domain for the api + def ssl_api_domain; (Rails.env == 'production') ? api_domain.sub('http', 'https'): api_domain; end + + # gets the api key + def get_apikey + key = get_header_value(HTTP_HEADER_API_KEY_NAME) || params[:key] || params[:api_key] || params[:apikey] + key.strip if key.present? + return key + end + + # get specified header value + def get_header_value(name) + name.upcase! + request.env.select {|header| header.upcase.index(name) }.values[0] + end + + # generates a hash key unique to the user and url + def cache_key(type) + cache_key = request.host + request.path + user_id = current_user ? current_user.id : '0' + + params.each do |key, value| + # add the parameter if appropriate + cache_key += "&#{key}=#{value}" if key != 'callback' && key != 'controller' && key != 'action' && key != 'format' + end + + return "#{user_id}-#{type}-#{cache_key}" + end + + # reads a file using the relative path to the file + def read_file(file_path) + path = file_path[0, file_path.rindex('/')] + filename = file_path[file_path.rindex('/') + 1, file_path.length] + output = '' + + File.open("#{File.expand_path(path)}/#{filename}", 'r') do |f| + while line = f.gets + output += line + end + end + + return output + end + + # prepends or appends text + def add_prepend_append(input) + output = input.to_s + output = params[:prepend] + output if params[:prepend] + output += params[:append] if params[:append] + return output + end # gets the same data for showing or editing def get_channel_data @channel = current_user.channels.find(params[:channel_id]) if params[:channel_id] @channel = current_user.channels.find(params[:id]) if @channel.nil? and params[:id] + + if @channel.ranking.blank? + @channel.ranking = @channel.calc_ranking + end + @key = @channel.api_keys.write_keys.first.try(:api_key) || "" end - def check_permissions(channel) - render :text => t(:channel_permission) and return if (current_user.nil? || (channel.user_id != current_user.id)) - end + def check_permissions(channel) + render :text => t(:channel_permission) and return if (current_user.nil? || (channel.user_id != current_user.id)) + end - # checks permission for channel using api_key - def channel_permission?(channel, api_key) - if channel.public_flag or (api_key and api_key.channel_id == channel.id) or (current_user and channel.user_id == current_user.id) - return true - else - return false - end - end + # checks permission for channel using api_key + def channel_permission?(channel, api_key) + if channel.public_flag or (api_key and api_key.channel_id == channel.id) or (current_user and channel.user_id == current_user.id) + return true + else + return false + end + end - # outputs error for bad channel - def bad_channel_xml - channel_unauthorized = Channel.new - channel_unauthorized.id = -1 - return channel_unauthorized.to_xml(:only => :id) - end + # outputs error for bad channel + def bad_channel_xml + channel_unauthorized = Channel.new + channel_unauthorized.id = -1 + return channel_unauthorized.to_xml(:only => :id) + end - # outputs error for bad feed - def bad_feed_xml - feed_unauthorized = Feed.new - feedl_unauthorized.id = -1 - return feed_unauthorized.to_xml(:only => :entry_id) - end + # outputs error for bad feed + def bad_feed_xml + feed_unauthorized = Feed.new + feed_unauthorized.id = -1 + return feed_unauthorized.to_xml(:only => :entry_id) + end - # options: days = how many days ago, start = start date, end = end date, offset = timezone offset - def get_date_range(params) - # set timezone correctly - set_time_zone(params) + # options: days = how many days ago, start = start date, end = end date, offset = timezone offset + def get_date_range(params) + # set timezone correctly + set_time_zone(params) - # if results are specified without start or days parameters, allow start date to be larger - get_old_data = (params[:results] && params[:start].blank? and params[:days].blank?) ? true : false + # allow more past data if necessary + get_old_data = (params[:results].present? || params[:start].present? || params[:days].present?) ? true : false - start_date = (get_old_data) ? (Time.now - 1.year) : (Time.now - 1.day) - end_date = Time.now - start_date = (Time.now - params[:days].to_i.days) if params[:days] - start_date = DateTime.strptime(params[:start]) if params[:start] - end_date = DateTime.strptime(params[:end]) if params[:end] - date_range = (start_date..end_date) - # only get a maximum of 30 days worth of data - date_range = (end_date - 30.days..end_date) if ((end_date - start_date) > 30.days and !get_old_data) - - return date_range - end + start_date = (get_old_data) ? Time.parse('2010-01-01') : (Time.now - 1.day) + end_date = Time.now + start_date = (Time.now - params[:days].to_i.days) if params[:days] + start_date = DateTime.parse(params[:start]) if params[:start] + end_date = DateTime.parse(params[:end]) if params[:end] + date_range = (start_date..end_date) + # only get a maximum of 30 days worth of data + date_range = (end_date - 30.days..end_date) if ((end_date - start_date) > 30.days and !get_old_data) + return date_range + end - def is_a_number?(s) - s.to_s.gsub(/,/, '.').match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true - end - def set_time_zone(params) - # set timezone correctly - if params[:offset] + def set_time_zone(params) + # set timezone correctly + if params[:offset] # check for 0 offset first since it's the most common if params[:offset] == '0' Time.zone = 'UTC' else - Time.zone = set_timezone_from_offset(params[:offset]) + Time.zone = set_timezone_from_offset(params[:offset]) end - elsif current_user - Time.zone = current_user.time_zone - else - Time.zone = 'UTC' - end - end + elsif current_user + Time.zone = current_user.time_zone + else + Time.zone = 'UTC' + end + end # use the offset to find an appropriate timezone def set_timezone_from_offset(offset) offset = offset.to_i # keep track of whether a match was found found = false - + # loop through each timezone ActiveSupport::TimeZone.zones_map.each do |z| # set time zone Time.zone = z[0] timestring = Time.zone.now.to_s - + # if time zone matches the offset, leave it as the current timezone if (timestring.slice(-5..-3).to_i == offset and timestring.slice(-2..-1).to_i == 0) found = true break end end - + # if no time zone found, set to utc Time.zone = 'UTC' if !found - + return Time.zone end + def help + Helper.instance + end + + class Helper + include Singleton + include ActionView::Helpers::TextHelper + end end + diff --git a/app/controllers/apps_controller.rb b/app/controllers/apps_controller.rb new file mode 100644 index 0000000..e1db658 --- /dev/null +++ b/app/controllers/apps_controller.rb @@ -0,0 +1,9 @@ +class AppsController < ApplicationController + + def index + @menu = 'apps' + @title = 'Internet of Things Apps' if current_user.nil? + # @twitters = TwitterAccount.find(:all, :conditions => { :user_id => current_user.id }) if current_user + end + +end diff --git a/app/controllers/channels_controller.rb b/app/controllers/channels_controller.rb index 2734222..f8e69e9 100644 --- a/app/controllers/channels_controller.rb +++ b/app/controllers/channels_controller.rb @@ -1,258 +1,474 @@ class ChannelsController < ApplicationController - before_filter :require_user, :except => [ :show, :post_data ] - before_filter :set_channels_menu - protect_from_forgery :except => :post_data - require 'csv' + include ChannelsHelper, ApiKeys + before_filter :require_user, :except => [ :show, :post_data, :social_show, :social_feed, :public] + before_filter :set_channels_menu + layout 'application', :except => [:social_show, :social_feed] + protect_from_forgery :except => :post_data + require 'csv' - def index - @channels = current_user.channels - end + # view list of watched channels + def watched + @channels = current_user.watched_channels + end - def show - @channel = Channel.find(params[:id]) if params[:id] - @domain = domain + # user watches a channel + def watch + @watching = Watching.find_by_user_id_and_channel_id(current_user.id, params[:id]) - # if owner of channel - get_channel_data if current_user and @channel.user_id == current_user.id - end + # add watching + if params[:flag] == 'true' + @watching = Watching.new(:user_id => current_user.id, :channel_id => params[:id]) if @watching.nil? + @watching.save + # delete watching + else + @watching.delete if !@watching.nil? + end - def edit - get_channel_data - end + render :text => '1' + end - def update - @channel = current_user.channels.find(params[:id]) - @channel.update_attributes(params[:channel]) + # list public channels + def public + # get channels by ids + if params[:channel_ids].present? + flash[:notice] = t(:selected_channels) + @channels = Channel.public_viewable.by_array(params[:channel_ids]).order('ranking desc, updated_at DESC').paginate :page => params[:page] + # get channels that match a tag + elsif params[:tag].present? + flash[:notice] = "#{t(:tag).capitalize}: #{params[:tag]}" + @channels = Channel.public_viewable.active.order('ranking desc, updated_at DESC').with_tag(params[:tag]).paginate :page => params[:page] + # normal channel list + else + flash[:notice] = t(:featured_channels) + @channels = Channel.public_viewable.active.order('ranking desc, updated_at DESC').paginate :page => params[:page] + end - redirect_to channel_path(@channel.id) - end + respond_to do |format| + format.html + format.json { render :json => Channel.paginated_hash(@channels).to_json } + format.xml { render :xml => Channel.paginated_hash(@channels).to_xml(:root => 'response') } + end + end + + # widget for social feeds + def social_feed + # get domain based on ssl + @domain = domain((get_header_value('x_ssl') == 'true')) + end + + # main page for a socialsensornetwork.com project + def social_show + @channel = Channel.find_by_slug(params[:slug]) + + # redirect home if wrong slug + redirect_to '/' and return if @channel.nil? + + api_key = ApiKey.find(:first, :conditions => { :channel_id => @channel.id, :write_flag => 1 } ) + @post_url = "/update?key=#{api_key.api_key}" + + # names of non-blank channel fields + @fields = [] + @channel.attribute_names.each do |attr| + @fields.push(attr) if attr.index('field') and !@channel[attr].blank? + end + end + + def social_new + @channel = Channel.new + end + + def social_create + @channel = Channel.new(channel_params) + + # check for blank name + @channel.errors.add(:base, t(:social_channel_error_name_blank)) if @channel.name.blank? + + # check for blank slug + @channel.errors.add(:base, t(:social_channel_error_slug_blank)) if @channel.slug.blank? + + # check for at least one field + fields = false + @channel.attribute_names.each do |attr| + if (attr.index('field') or attr.index('status')) and !@channel[attr].blank? + fields = true + break + end + end + @channel.errors.add(:base, t(:social_channel_error_fields)) if !fields + + # check for existing slug + if @channel.errors.count == 0 + @channel.errors.add(:base, t(:social_channel_error_slug_exists)) if Channel.find_by_slug(@channel.slug) + end + + # if there are no errors + if @channel.errors.count == 0 + @channel.user_id = current_user.id + @channel.social = true + @channel.public_flag = true + @channel.save + + # create an api key for this channel + channel.add_write_api_key + + redirect_to channels_path + else + render :action => :social_new + end + + end + + def index + + @channels = current_user.channels + respond_to do |format| + format.html + format.json { render :json => @channels } + end + end + + def show + + @channel = Channel.find(params[:id]) if params[:id] + + @title = @channel.name + @domain = domain + @mychannel = (current_user && current_user.id == @channel.user_id) + @width = Chart.default_width + @height = Chart.default_height + + api_index @channel.id + # if owner of channel + get_channel_data if @mychannel + respond_to do |format| + format.html do + if @mychannel + render "private_show" + session[:errors] = nil + else + render "public_show" + session[:errors] = nil + end + end + format.json { render :json => @channel } + end + end + + def edit + get_channel_data + end + + + def update + + @channel = current_user.channels.find(params[:id]) + puts params[:channel].inspect + # make sure channel isn't social + #render :text => '' and return if @channel.social + if params["channel"]["video_type"].blank? && !params["channel"]["video_id"].blank? + @channel.errors.add(:base, t(:channel_video_type_blank)) + end + if @channel.errors.count <= 0 + @channel.save_tags(params[:tags][:name]) + @channel.assign_attributes(channel_params) + @channel.set_windows + @channel.save + else + session[:errors] = @channel.errors + redirect_to channel_path(@channel.id, :anchor => "channelsettings") and return + end + + flash[:notice] = t(:channel_update_success) + redirect_to channel_path(@channel.id) + + end def create channel = current_user.channels.create(:field1 => "#{t(:channel_default_field)} 1") + channel.set_windows + channel.save channel.add_write_api_key - - # redirect to edit the newly created channel - redirect_to edit_channel_path(channel) + @channel_id = channel.id + redirect_to channel_path(@channel_id, :anchor => "channelsettings") end # clear all data from a channel def clear channel = current_user.channels.find(params[:id]) channel.delete_feeds - channel.update_attribute(:last_entry_id, nil) + redirect_to channel_path(channel.id) + end + def destroy + channel = current_user.channels.find(params[:id]) + channel.destroy redirect_to channels_path - end + end - def destroy - channel = current_user.channels.find(params[:id]) - channel.destroy + # response is '0' if failure, 'entry_id' if success + def post_data - redirect_to channels_path - end + status = '0' + feed = Feed.new - # response is '0' if failure, 'entry_id' if success - def post_data - status = '0' - feed = Feed.new - - api_key = ApiKey.find_by_api_key(get_userkey) + api_key = ApiKey.find_by_api_key(get_apikey) - # if write persmission, allow post - if (api_key && api_key.write_flag) - channel = Channel.find(api_key.channel_id) + # if write permission, allow post + if (api_key && api_key.write_flag) + channel = api_key.channel - # update entry_id for channel and feed - entry_id = channel.last_entry_id.nil? ? 1 : channel.last_entry_id + 1 - channel.last_entry_id = entry_id - feed.entry_id = entry_id + # don't rate limit if tstream parameter is present + tstream = params[:tstream] || false; - # try to get created_at datetime if appropriate - if params[:created_at] - begin - feed.created_at = DateTime.parse(params[:created_at]) - # if invalid datetime, don't do anything--rails will set created_at - rescue - end - end - - # modify parameters - params.each do |key, value| - # strip line feeds from end of parameters - params[key] = value.sub(/\\n$/, '').sub(/\\r$/, '') if value - # use ip address if found - params[key] = request.remote_addr if value.upcase == 'IP_ADDRESS' - end - - # set feed details - feed.channel_id = channel.id - feed.raw_data = params - feed.field1 = params[:field1] if params[:field1] - feed.field2 = params[:field2] if params[:field2] - feed.field3 = params[:field3] if params[:field3] - feed.field4 = params[:field4] if params[:field4] - feed.field5 = params[:field5] if params[:field5] - feed.field6 = params[:field6] if params[:field6] - feed.field7 = params[:field7] if params[:field7] - feed.field8 = params[:field8] if params[:field8] - feed.status = params[:status] if params[:status] - feed.latitude = params[:lat] if params[:lat] - feed.latitude = params[:latitude] if params[:latitude] - feed.longitude = params[:long] if params[:long] - feed.longitude = params[:longitude] if params[:longitude] - feed.elevation = params[:elevation] if params[:elevation] + # don't rate limit if talkback_key parameter is present + talkback_key = params[:talkback_key] || false; - if channel.save && feed.save - status = entry_id - end - end - - # output response code - render :text => '0', :status => 400 and return if status == '0' - render :text => status - end + # rate limit posts if channel is not social and timespan is smaller than the allowed window + render :text => '0' and return if (RATE_LIMIT && !tstream && !talkback_key && !channel.social && Time.now < channel.updated_at + RATE_LIMIT_FREQUENCY.to_i.seconds) + + # if social channel, latitude MUST be present + render :text => '0' and return if (channel.social && params[:latitude].blank?) + + # update entry_id for channel and feed + entry_id = channel.next_entry_id + channel.last_entry_id = entry_id + feed.entry_id = entry_id + + # try to get created_at datetime if appropriate + if params[:created_at].present? + begin + feed.created_at = DateTime.parse(params[:created_at]) + # if invalid datetime, don't do anything--rails will set created_at + rescue + end + end + + # modify parameters + params.each do |key, value| + # this fails so much due to encoding problems that we need to ignore errors + begin + # strip line feeds from end of parameters + params[key] = value.sub(/\\n$/, '').sub(/\\r$/, '') if value + # use ip address if found + params[key] = get_header_value('X_REAL_IP') if value.try(:upcase) == 'IP_ADDRESS' + rescue + end + end + + # set feed details + feed.channel_id = channel.id + feed.field1 = params[:field1] || params['1'] if params[:field1] || params['1'] + feed.field2 = params[:field2] || params['2'] if params[:field2] || params['2'] + feed.field3 = params[:field3] || params['3'] if params[:field3] || params['3'] + feed.field4 = params[:field4] || params['4'] if params[:field4] || params['4'] + feed.field5 = params[:field5] || params['5'] if params[:field5] || params['5'] + feed.field6 = params[:field6] || params['6'] if params[:field6] || params['6'] + feed.field7 = params[:field7] || params['7'] if params[:field7] || params['7'] + feed.field8 = params[:field8] || params['8'] if params[:field8] || params['8'] + feed.status = params[:status] if params[:status] + feed.latitude = params[:lat] if params[:lat] + feed.latitude = params[:latitude] if params[:latitude] + feed.longitude = params[:long] if params[:long] + feed.longitude = params[:longitude] if params[:longitude] + feed.elevation = params[:elevation] if params[:elevation] + feed.location = params[:location] if params[:location] + + # if the saves were successful + if channel.save && feed.save + status = entry_id + + # check for tweet + if params[:twitter] && params[:tweet] + # check username + twitter_account = TwitterAccount.find_by_user_id_and_screen_name(api_key.user_id, params[:twitter]) + if twitter_account + twitter_account.tweet(params[:tweet]) + end + end + else + raise "Channel or Feed didn't save correctly" + end + end + + # if there is a talkback to execute + if params[:talkback_key].present? + talkback = Talkback.find_by_api_key(params[:talkback_key]) + command = talkback.execute_command! if talkback.present? + end + + # output response code + render(:text => '0', :status => 400) and return if status == '0' + + # if there is a talkback_key and a command that was executed + if params[:talkback_key].present? && command.present? + respond_to do |format| + format.html { render :text => command.command_string } + format.json { render :json => command.to_json } + format.xml { render :xml => command.to_xml(Command.public_options) } + end and return + end + + # if there is a talkback_key but no command + respond_with_blank and return if params[:talkback_key].present? && command.blank? + + # normal route, respond with the entry id of the feed + render :text => status + end + + # import view + def import + get_channel_data + end + + # upload csv file to channel + def upload + channel = Channel.find(params[:id]) + check_permissions(channel) + + # if no data + if params[:upload].blank? || params[:upload][:csv].blank? + flash[:error] = t(:upload_no_file) + redirect_to channel_path(channel.id, :anchor => "dataimport") and return + end + + # set time zone + Time.zone = params[:feed][:time_zone] + + # read data from uploaded file + csv_array = CSV.parse(params[:upload][:csv].read) + if csv_array.nil? || csv_array.blank? + flash[:error] = t(:upload_no_data) + redirect_to channel_path(channel.id, :anchor => "dataimport") and return + end + + # does the column have headers + headers = has_headers?(csv_array) + + # remember the column positions + entry_id_column = -1 + latitude_column = -1 + longitude_column = -1 + elevation_column = -1 + location_column = -1 + status_column = -1 + if headers + csv_array[0].each_with_index do |column, index| + entry_id_column = index if column.downcase == 'entry_id' + latitude_column = index if column.downcase == 'latitude' + longitude_column = index if column.downcase == 'longitude' + elevation_column = index if column.downcase == 'elevation' + location_column = index if column.downcase == 'location' + status_column = index if column.downcase == 'status' + end + end + + # delete the first row if it contains headers + csv_array.delete_at(0) if headers + + # determine if the date can be parsed + parse_date = date_parsable?(csv_array[0][0]) unless csv_array[0].nil? || csv_array[0][0].nil? + + # if 2 or more rows + if !csv_array[1].blank? + date1 = parse_date ? Time.parse(csv_array[0][0]) : Time.at(csv_array[0][0]) + date2 = parse_date ? Time.parse(csv_array[1][0]) : Time.at(csv_array[1][0]) + + # reverse the array if 1st date is larger than 2nd date + csv_array = csv_array.reverse if date1 > date2 + end + + # loop through each row + csv_array.each do |row| + # if row isn't blank + if !row.blank? + feed = Feed.new + + # set location and status then delete the rows + # these 5 deletes must be performed in the proper (reverse) order + feed.status = row.delete_at(status_column) if status_column > 0 + feed.location = row.delete_at(location_column) if location_column > 0 + feed.elevation = row.delete_at(elevation_column) if elevation_column > 0 + feed.longitude = row.delete_at(longitude_column) if longitude_column > 0 + feed.latitude = row.delete_at(latitude_column) if latitude_column > 0 + + # remove entry_id column if necessary + row.delete_at(entry_id_column) if entry_id_column > 0 + + # update entry_id for channel and feed + entry_id = channel.last_entry_id.nil? ? 1 : channel.last_entry_id + 1 + channel.last_entry_id = entry_id + feed.entry_id = entry_id + + # set feed data + feed.channel_id = channel.id + feed.created_at = parse_date ? Time.zone.parse(row[0]) : Time.zone.at(row[0].to_f) + feed.field1 = row[1] + feed.field2 = row[2] + feed.field3 = row[3] + feed.field4 = row[4] + feed.field5 = row[5] + feed.field6 = row[6] + feed.field7 = row[7] + feed.field8 = row[8] + + # save channel and feed + feed.save + channel.save + + end + end + + # set the user's time zone back + set_time_zone(params) + + # redirect + flash[:notice] = t(:upload_successful) + redirect_to channel_path(channel.id, :anchor => "dataimport") + end - # import view - def import - get_channel_data - end + private - # upload csv file to channel - def upload - # if no data - render :text => t(:select_file) and return if params[:upload].blank? or params[:upload][:csv].blank? + # only allow these params + def channel_params + params.require(:channel).permit(:name, :url, :description, :latitude, :longitude, :field1, :field2, :field3, :field4, :field5, :field6, :field7, :field8, :elevation, :public_flag, :status, :video_id, :video_type) + end - channel = Channel.find(params[:channel_id]) - channel_id = channel.id - # make sure channel belongs to current user - check_permissions(channel) - - # set time zone - Time.zone = params[:feed][:time_zone] + # determine if the date can be parsed + def date_parsable?(date) + return !is_a_number?(date) + end - # read data from uploaded file - csv_array = CSV.parse(params[:upload][:csv].read) + # determine if the csv file has headers + def has_headers?(csv_array) + headers = false - # does the column have headers - headers = has_headers?(csv_array) + # if there are at least 2 rows + if (csv_array[0] and csv_array[1]) + row0_integers = 0 + row1_integers = 0 - # remember the column positions - entry_id_column = -1 - latitude_column = -1 - longitude_column = -1 - elevation_column = -1 - status_column = -1 - if headers - csv_array[0].each_with_index do |column, index| - entry_id_column = index if column.downcase == 'entry_id' - latitude_column = index if column.downcase == 'latitude' - longitude_column = index if column.downcase == 'longitude' - elevation_column = index if column.downcase == 'elevation' - status_column = index if column.downcase == 'status' - end - end + # if first row, first value contains 'create' or 'date', assume it has headers + if (csv_array[0][0].downcase.include?('create') or csv_array[0][0].downcase.include?('date')) + headers = true + else + # count integers in row0 + csv_array[0].each_with_index do |value, i| + row0_integers += 1 if is_a_number?(value) + end - # delete the first row if it contains headers - csv_array.delete_at(0) if headers + # count integers in row1 + csv_array[1].each_with_index do |value, i| + row1_integers += 1 if is_a_number?(value) + end - # determine if the date can be parsed - parse_date = date_parsable?(csv_array[0][0]) + # if row1 has more integers, assume row0 is headers + headers = true if row1_integers > row0_integers + end + end - # if 2 or more rows - if !csv_array[1].blank? - date1 = parse_date ? Time.parse(csv_array[0][0]) : Time.at(csv_array[0][0]) - date2 = parse_date ? Time.parse(csv_array[1][0]) : Time.at(csv_array[1][0]) + return headers + end - # reverse the array if 1st date is larger than 2nd date - csv_array = csv_array.reverse if date1 > date2 - end +end - # loop through each row - csv_array.each do |row| - # if row isn't blank - if !row.blank? - feed = Feed.new - - # set location and status then delete the rows - # these 4 deletes must be performed in the proper (reverse) order - feed.status = row.delete_at(status_column) if status_column > 0 - feed.elevation = row.delete_at(elevation_column) if elevation_column > 0 - feed.longitude = row.delete_at(longitude_column) if longitude_column > 0 - feed.latitude = row.delete_at(latitude_column) if latitude_column > 0 - - # remove entry_id column if necessary - row.delete_at(entry_id_column) if entry_id_column > 0 - - # update entry_id for channel and feed - entry_id = channel.last_entry_id.nil? ? 1 : channel.last_entry_id + 1 - channel.last_entry_id = entry_id - feed.entry_id = entry_id - - # set feed data - feed.channel_id = channel_id - feed.created_at = parse_date ? Time.zone.parse(row[0]) : Time.zone.at(row[0].to_f) - feed.raw_data = row.to_s - feed.field1 = row[1] - feed.field2 = row[2] - feed.field3 = row[3] - feed.field4 = row[4] - feed.field5 = row[5] - feed.field6 = row[6] - feed.field7 = row[7] - feed.field8 = row[8] - - # save channel and feed - feed.save - channel.save - - end - end - - # set the user's time zone back - set_time_zone(params) - - # redirect - redirect_to channel_path(channel.id) - end - - -private - - # determine if the date can be parsed - def date_parsable?(date) - return !is_a_number?(date) - end - - # determine if the csv file has headers - def has_headers?(csv_array) - headers = false - - # if there are at least 2 rows - if (csv_array[0] and csv_array[1]) - row0_integers = 0 - row1_integers = 0 - - # if first row, first value contains 'create' or 'date', assume it has headers - if (csv_array[0][0].downcase.include?('create') or csv_array[0][0].downcase.include?('date')) - headers = true - else - # count integers in row0 - csv_array[0].each_with_index do |value, i| - row0_integers += 1 if is_a_number?(value) - end - - # count integers in row1 - csv_array[1].each_with_index do |value, i| - row1_integers += 1 if is_a_number?(value) - end - - # if row1 has more integers, assume row0 is headers - headers = true if row1_integers > row0_integers - end - end - - return headers - end - -end \ No newline at end of file diff --git a/app/controllers/charts_controller.rb b/app/controllers/charts_controller.rb index 0ab5b9a..556afc5 100644 --- a/app/controllers/charts_controller.rb +++ b/app/controllers/charts_controller.rb @@ -1,78 +1,110 @@ class ChartsController < ApplicationController + before_filter :require_user, :only => [:edit] + def edit + # params[:id] is the windows ID + @channel = current_user.channels.find(params[:channel_id]) - def index - set_channels_menu - @channel = Channel.find(params[:channel_id]) - @channel_id = params[:channel_id] - @domain = domain + window_id = params[:id] + logger.debug "Windows ID is #{window_id}" + window_detail = @channel.windows.find(window_id).becomes(ChartWindow).window_detail + options = window_detail.options unless window_detail.nil? + logger.debug "Options for window #{window_id} are " + options.inspect - # default chart size - @width = default_width - @height = default_height + render :partial => "charts/config", :locals => { + :displayconfig => false, + :title => @channel.name, + :src => "/channels/#{@channel.id}/charts/#{window_id}", + :options => options, + :index => window_id, + :width => Chart.default_width, + :height => Chart.default_height + } + end - check_permissions(@channel) - end + def index - def show - # allow these parameters when creating feed querystring - feed_params = ['key','days','start','end','round','timescale','average','median','sum'] + set_channels_menu + @channel = Channel.find(params[:channel_id]) + @channel_id = params[:channel_id] + @domain = domain - # default chart size - @width = default_width - @height = default_height + # default chart size + @width = Chart.default_width + @height = Chart.default_height - # add extra parameters to querystring - @qs = '' - params.each do |p| - @qs += "&#{p[0]}=#{p[1]}" if feed_params.include?(p[0]) - end + check_permissions(@channel) + end - # fix chart colors if necessary - params[:color] = fix_color(params[:color]) - params[:bgcolor] = fix_color(params[:bgcolor]) + def show - @domain = domain - render :layout => false - end + # allow these parameters when creating feed querystring + feed_params = ['key','days','start','end','round','timescale','average','median','sum','results','location','status'] - # save chart options - def update - @channel = Channel.find(params[:channel_id]) - @status = 0 + # default chart size + @width = Chart.default_width + @height = Chart.default_height - # check permissions - if @channel.user_id == current_user.id + # add extra parameters to querystring + @qs = '' + params.each do |p| + @qs += "&#{p[0]}=#{p[1]}" if feed_params.include?(p[0]) + end - # save data - @channel["options#{params[:id]}"] = params[:options] - if @channel.save - @status = 1 - end + # fix chart colors if necessary + params[:color] = fix_color(params[:color]) + params[:bgcolor] = fix_color(params[:bgcolor]) - end + # set ssl + @ssl = (get_header_value('x_ssl') == 'true') + @domain = domain(@ssl) - # return response: 1=success, 0=failure - render :json => @status.to_json - end + # should data be pushed off the end in dynamic chart + @push = (params[:push] and params[:push] == 'false') ? false : true + @results = params[:results] + render :layout => false + end - private - def default_width - 450 - end + # save chart options + def update + #Check to see if we're using the new options, or the old - def default_height - 250 - end + @channel = Channel.find(params[:channel_id]) + @status = 0 - # fixes chart color if user forgets the leading '#' - def fix_color(color) - # check for 3 or 6 character hexadecimal value - if (color and color.match(/^([0-9]|[a-f]|[A-F]){3}(([0-9]|[a-f]|[A-F]){3})?$/)) - color = '#' + color - end + # check permissions + if @channel.user_id == current_user.id + logger.debug "Saving Data with new options " + params[:newOptions].to_s + # save data + if params[:newOptions] + logger.debug "Updating new style options on window id #{params[:id]} with #{params[:newOptions][:options]}" + chart_window = @channel.windows.find(params[:id]).becomes(ChartWindow) + chart_window.window_detail.options = params[:newOptions][:options] + if !chart_window.save + raise "Couldn't save the Chart Window" + end + end + if @channel.save + @status = 1 + end - return color - end + end + + # return response: 1=success, 0=failure + render :json => @status.to_json + end + + private + + # fixes chart color if user forgets the leading '#' + def fix_color(color) + # check for 3 or 6 character hexadecimal value + if (color and color.match(/^([0-9]|[a-f]|[A-F]){3}(([0-9]|[a-f]|[A-F]){3})?$/)) + color = '#' + color + end + + return color + end end + diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb new file mode 100644 index 0000000..7e29f5d --- /dev/null +++ b/app/controllers/comments_controller.rb @@ -0,0 +1,47 @@ +class CommentsController < ApplicationController + before_filter :require_user + + def index + redirect_to channel_path(:id => params[:channel_id], :public => true) + end + + def create + render :text => '' and return if params[:userlogin].length > 0 + + @channel = Channel.find(params[:channel_id]) + @comment = @channel.comments.new + @comment.user = current_user + @comment.ip_address = get_header_value('X_REAL_IP') + @comment.parent_id = params[:parent_id] + @comment.body = params[:comment][:body].gsub(/<\/?[^>]*>/, '').gsub(/\n/, '
    ') + # save comment + if @comment.save + flash[:success] = "Thanks for adding a comment!" + else + flash[:error] = "Comment can't be blank!" + end + redirect_to :back + end + + def vote + # make sure this is a post + render :text => '' and return if !request.post? + + @comment = Comment.find(params[:id]) + @comment.flags += 1 + # delete if too many flags + if (@comment.flags > 3) + @comment.destroy + render :text => '' + # else save + else + @comment.save + render :text => '1' + end + end + + def destroy + comment = current_user.comments.find(params[:id]).destroy + redirect_to :back + end +end diff --git a/app/controllers/cors_controller.rb b/app/controllers/cors_controller.rb new file mode 100644 index 0000000..bebe86d --- /dev/null +++ b/app/controllers/cors_controller.rb @@ -0,0 +1,8 @@ +class CorsController < ApplicationController + skip_before_filter :verify_authenticity_token + + # dummy method that responds with status 200 for CORS preflighting + def preflight; render :nothing => true; end + +end + diff --git a/app/controllers/docs_controller.rb b/app/controllers/docs_controller.rb new file mode 100644 index 0000000..3a4b123 --- /dev/null +++ b/app/controllers/docs_controller.rb @@ -0,0 +1,19 @@ +class DocsController < ApplicationController + + def index; ;end + + def talkback + # default values + @talkback_id = 3 + @talkback_api_key = 'XXXXXXXXXXXXXXXX' + + # if user is signed in + if current_user && current_user.talkbacks.any? + @talkback = current_user.talkbacks.order('updated_at desc').first + @talkback_id = @talkback.id + @talkback_api_key = @talkback.api_key + end + end + +end + diff --git a/app/controllers/feed_controller.rb b/app/controllers/feed_controller.rb index bdf05cd..8bbf376 100644 --- a/app/controllers/feed_controller.rb +++ b/app/controllers/feed_controller.rb @@ -1,570 +1,254 @@ class FeedController < ApplicationController - require 'csv' - layout 'application', :except => :index + include FeedHelper + require 'csv' + layout 'application', :except => [:index, :debug] - def index - channel = Channel.find(params[:channel_id]) - api_key = ApiKey.find_by_api_key(get_userkey) - @success = channel_permission?(channel, api_key) + def index + feed_factory = FeedFactory.new(params) + channel = Channel.find(params[:channel_id]) + api_key = ApiKey.find_by_api_key(get_apikey) + @success = channel_permission?(channel, api_key) - # set timezone correctly - set_time_zone(params) + # set callback for jsonp + @callback = params[:callback] if params[:callback] - # set limits - limit = params[:results].to_i if params[:results] + # set csv headers if necessary + @csv_headers = feed_factory.feed_select_options if params[:format] == 'csv' - # check for access - if @success + # set timezone correctly + set_time_zone(params) - # create options hash - channel_options = { :only => channel_select_data(channel) } - select_options = feed_select_data(channel) + # check for access + if @success - # get feed based on conditions - feeds = Feed.find( - :all, - :conditions => { :channel_id => channel.id, :created_at => get_date_range(params) }, - :select => select_options, - :order => 'created_at desc', - :limit => limit - ) - - # keep track of whether data has been rounded already - rounded = false - - # if a feed has data - if !feeds.empty? - # convert to timescales if necessary - if timeparam_valid?(params[:timescale]) - feeds = feeds_into_timescales(feeds) - # convert to sums if necessary - elsif timeparam_valid?(params[:sum]) - feeds = feeds_into_sums(feeds) - rounded = true - # convert to averages if necessary - elsif timeparam_valid?(params[:average]) - feeds = feeds_into_averages(feeds) - rounded = true - # convert to medians if necessary - elsif timeparam_valid?(params[:median]) - feeds = feeds_into_medians(feeds) - rounded = true - end - end - - # if a feed needs to be rounded - if params[:round] and !rounded - feeds = object_round(feeds, params[:round].to_i) + if feed_factory.cache_feeds + # check cache for stored value + feed_output_cache_key = cache_key('feed_output') + channel_output_cache_key = cache_key('channel_output') + @feed_output = Rails.cache.read(feed_output_cache_key) + @channel_output = Rails.cache.read(channel_output_cache_key) end - # set output correctly - if params[:format] == 'xml' - @channel_output = channel.to_xml(channel_options).sub('', '').strip - @feed_output = feeds.to_xml(:skip_instruct => true).gsub(/\n/, "\n ").chop.chop - elsif params[:format] == 'csv' - @feed_output = feeds - else - @channel_output = channel.to_json(channel_options).chop - @feed_output = feeds.to_json - end + # if cache miss, get data + if @feed_output.nil? or @channel_output.nil? - # else no access, set error code - else - if params[:format] == 'xml' - @channel_output = bad_channel_xml - else - @channel_output = '-1'.to_json - end - end + # get feeds + feeds = feed_factory.get_output_feeds - # set callback for jsonp - @callback = params[:callback] if params[:callback] + # set output correctly + if params[:format] == 'xml' + @channel_output = channel.to_xml(channel.select_options).sub('', '').strip + @feed_output = feeds.to_xml(:skip_instruct => true).gsub(/\n/, "\n ").chop.chop + elsif params[:format] == 'csv' + @feed_output = feeds + else + @channel_output = channel.to_json(channel.select_options).chop + @feed_output = feeds.to_json(:only => feed_factory.feed_select_options) + end - # set csv headers if necessary - @csv_headers = select_options if params[:format] == 'csv' + if feed_factory.cache_feeds + # save to cache + Rails.cache.write(feed_output_cache_key, @feed_output, :expires_in => 5.minutes) + Rails.cache.write(channel_output_cache_key, @channel_output, :expires_in => 5.minutes) + end - # output proper http response if error - render :text => '-1', :status => 400 and return if !@success + end # end if feeds not empty - # output data in proper format - respond_to do |format| - format.html - format.json - format.xml - format.csv - end - end + # else no access, set error code + else + if params[:format] == 'xml' + @channel_output = bad_channel_xml + else + @channel_output = '-1'.to_json + end + end - def show - @channel = Channel.find(params[:channel_id]) - @api_key = ApiKey.find_by_api_key(get_userkey) - output = '-1' + # output proper http response if error + render :text => '-1', :status => 400 and return if !@success - # get most recent entry if necessary - params[:id] = @channel.last_entry_id if params[:id] == 'last' + # output data in proper format + respond_to do |format| + format.html + format.json + format.xml + format.csv + end + end - # set timezone correctly - set_time_zone(params) + def last_sum + last_method = method('last_group_call') + last_method.call('sums') + end - @feed = Feed.find( - :first, - :conditions => { :channel_id => @channel.id, :entry_id => params[:id] }, - :select => feed_select_data(@channel) - ) - @success = channel_permission?(@channel, @api_key) + def last_median + last_method = method('last_group_call') + last_method.call('medians') + end + + def last_average + last_method = method('last_group_call') + last_method.call('averages') + end + + def last_group_call(arg) + @channel = Channel.find(params[:channel_id]) + @api_key = ApiKey.find_by_api_key(get_apikey) + set_time_zone(params) + + # limit for the number of results to get + limit = 30 + limit = params[:sum].to_i if params[:sum].present? + limit = params[:median].to_i if params[:median].present? + limit = params[:average].to_i if params[:average].present? + # max limit of 100 past results + limit = 100 if limit > 100 + + # get the last (limit) feeds + last_feeds = Feed.where(:channel_id => @channel.id).limit(limit).order('created_at desc') + # put feeds in correct order (oldest to most recent) + last_feeds.reverse! + + feeds_into = self.method("feeds_into_#{arg}") + feed = feeds_into.call(last_feeds, params).last if last_feeds.length > 0 + create_group_result(feed) + end + + def create_group_result(feed) + @success = channel_permission?(@channel, @api_key) + + # if a feed needs to be rounded + if params[:round] && feed.present? + feed = item_round(feed, params[:round].to_i) + end + + # check for access + if @success && feed.present? + # set output correctly + if params[:format] == 'xml' + output = feed.to_xml + elsif params[:format] == 'csv' + @csv_headers = Feed.select_options(@channel, params) + elsif (params[:format] == 'txt' or params[:format] == 'text') + output = add_prepend_append(feed["field#{params[:field_id]}"]) + else + output = feed.to_json + end + # else set error code + else + if params[:format] == 'xml' + output = bad_feed_xml + else + output = '-1'.to_json + end + end + + # output data in proper format + respond_to do |format| + format.html { render :json => output } + format.json { render :json => output, :callback => params[:callback] } + format.xml { render :xml => output } + format.csv + format.text { render :text => output } + end + end + + def show + + @channel = Channel.find(params[:channel_id]) + @api_key = ApiKey.find_by_api_key(get_apikey) + output = '-1' + + # set timezone correctly + set_time_zone(params) + + # make sure field parameter is set correctly, changes "field1" to "1" + params[:field_id] = params[:field_id].sub('field', '') if params[:field_id].present? + + # if last entry + if params[:id] == 'last' && params[:field_id].present? && params[:field_id].to_i != 0 + # look for a feed where the value isn't null + @feed = Feed.where(:channel_id => @channel.id) + .where("field? is not null", params[:field_id].to_i) + .select(Feed.select_options(@channel, params)) + .order('entry_id desc') + .first + # else get by entry + else + # get most recent entry if necessary + params[:id] = @channel.last_entry_id if params[:id] == 'last' + @feed = Feed.where(:channel_id => @channel.id, :entry_id => params[:id]).select(Feed.select_options(@channel, params)).first + end + + @success = channel_permission?(@channel, @api_key) # if a feed needs to be rounded if params[:round] @feed = item_round(@feed, params[:round].to_i) end - # check for access - if @success - # set output correctly - if params[:format] == 'xml' - output = @feed.to_xml - elsif params[:format] == 'csv' - @csv_headers = feed_select_data(@channel) - elsif (params[:format] == 'txt' or params[:format] == 'text') - output = add_prepend_append(@feed["field#{params[:field_id]}"]) - else - output = @feed.to_json - end - # else set error code - else - if params[:format] == 'xml' - output = bad_feed_xml - else - output = '-1'.to_json - end - end + # check for access + if @success and @feed - # output data in proper format - respond_to do |format| - format.html { render :json => output } - format.json { render :json => output, :callback => params[:callback] } - format.xml { render :xml => output } - format.csv - format.text { render :text => output } - end - end + # set output correctly + if params[:format] == 'xml' + output = @feed.to_xml + elsif params[:format] == 'csv' + @csv_headers = Feed.select_options(@channel, params) + elsif (params[:format] == 'txt' or params[:format] == 'text') + output = add_prepend_append(@feed["field#{params[:field_id]}"]) + else + output = @feed.to_json - private - - # only output these fields for channel - def channel_select_data(channel) - only = [:name, :created_at, :updated_at, :id, :last_entry_id] - only += [:description] unless channel.description.blank? - only += [:latitude] unless channel.latitude.blank? - only += [:longitude] unless channel.longitude.blank? - only += [:elevation] unless channel.elevation.blank? - only += [:field1] unless channel.field1.blank? - only += [:field2] unless channel.field2.blank? - only += [:field3] unless channel.field3.blank? - only += [:field4] unless channel.field4.blank? - only += [:field5] unless channel.field5.blank? - only += [:field6] unless channel.field6.blank? - only += [:field7] unless channel.field7.blank? - only += [:field8] unless channel.field8.blank? - - return only - end - - # only output these fields for feed - def feed_select_data(channel) - only = [:created_at] - only += [:entry_id] unless timeparam_valid?(params[:timescale]) or timeparam_valid?(params[:average]) or timeparam_valid?(params[:median]) or timeparam_valid?(params[:sum]) - only += [:field1] unless channel.field1.blank? or (params[:field_id] and params[:field_id] != '1') - only += [:field2] unless channel.field2.blank? or (params[:field_id] and params[:field_id] != '2') - only += [:field3] unless channel.field3.blank? or (params[:field_id] and params[:field_id] != '3') - only += [:field4] unless channel.field4.blank? or (params[:field_id] and params[:field_id] != '4') - only += [:field5] unless channel.field5.blank? or (params[:field_id] and params[:field_id] != '5') - only += [:field6] unless channel.field6.blank? or (params[:field_id] and params[:field_id] != '6') - only += [:field7] unless channel.field7.blank? or (params[:field_id] and params[:field_id] != '7') - only += [:field8] unless channel.field8.blank? or (params[:field_id] and params[:field_id] != '8') - - # add geolocation data if necessary - if params[:location] and params[:location].upcase == 'TRUE' - only += [:latitude] - only += [:longitude] - only += [:elevation] - end - - # add status if necessary - only += [:status] if params[:status] and params[:status].upcase == 'TRUE' - - return only - end - - # checks for valid timescale - def timeparam_valid?(timeparam) - valid_minutes = [10, 15, 20, 30, 60, 240, 720, 1440] - if timeparam and valid_minutes.include?(timeparam.to_i) - return true - else - return false - end - end - - # applies rounding to an enumerable object - def object_round(object, round=nil, match='field') - object.each_with_index do |o, index| - object[index] = item_round(o, round, match) end - - return object + # else set error code + else + if params[:format] == 'xml' + output = bad_feed_xml + else + output = '-1'.to_json + end end - # applies rounding to a single item's attributes if necessary - def item_round(item, round=nil, match='field') - # for each attribute - item.attribute_names.each do |attr| - # only add non-null numeric fields - if attr.index(match) and !item[attr].nil? and is_a_number?(item[attr]) - # keep track of whether the value contains commas - comma_flag = (item[attr].to_s.index(',')) ? true : false - - # replace commas with decimals if appropriate - item[attr] = item[attr].to_s.gsub(/,/, '.') if comma_flag - - # do the actual rounding - item[attr] = sprintf "%.#{round}f", item[attr] - - # replace decimals with commas if appropriate - item[attr] = item[attr].to_s.gsub(/\./, ',') if comma_flag - end - end - - # output new item - return item + # output data in proper format + respond_to do |format| + format.html { render :json => output } + format.json { render :json => output, :callback => params[:callback] } + format.xml { render :xml => output } + format.csv + format.text { render :text => output } end + end - # slice feed into timescales - def feeds_into_timescales(feeds) - # convert timescale (minutes) into seconds - seconds = params[:timescale].to_i * 60 - # get floored time ranges - start_time = get_floored_time(feeds.first.created_at, seconds) - end_time = get_floored_time(feeds.last.created_at, seconds) + def debug + @time_start = Time.now - # create empty array with appropriate size - timeslices = Array.new((((end_time - start_time) / seconds).abs).floor) + channel = Channel.find(params[:channel_id]) + api_key = ApiKey.find_by_api_key(get_apikey) + @success = channel_permission?(channel, api_key) + # create options hash + select_options = Feed.select_options(channel, params) - # create a blank clone of the first feed so that we only get the necessary attributes - empty_feed = create_empty_clone(feeds.first) + # get feed based on conditions + feeds = Feed.find( + :all, + :conditions => { :channel_id => channel.id, :created_at => get_date_range(params) }, + :select => select_options, + :order => 'created_at desc' + ) + @count = feeds.count + @time_after_db = Time.now - # add feeds to array - feeds.each do |f| - i = ((f.created_at - start_time) / seconds).floor - f.created_at = start_time + i * seconds - timeslices[i] = f if timeslices[i].nil? - end + # sort properly + feeds.reverse! - # fill in empty array elements - timeslices.each_index do |i| - if timeslices[i].nil? - current_feed = empty_feed.clone - current_feed.created_at = (start_time + (i * seconds)) - timeslices[i] = current_feed - end - end + @time_after_sort = Time.now - return timeslices - end + @channel_output = channel.to_json(channel.select_options).chop + @feed_output = feeds.to_json - # slice feed into averages - def feeds_into_averages(feeds) - # convert timescale (minutes) into seconds - seconds = params[:average].to_i * 60 - # get floored time ranges - start_time = get_floored_time(feeds.first.created_at, seconds) - end_time = get_floored_time(feeds.last.created_at, seconds) - - # create empty array with appropriate size - timeslices = Array.new(((end_time - start_time) / seconds).floor) - - # create a blank clone of the first feed so that we only get the necessary attributes - empty_feed = create_empty_clone(feeds.first) - - # add feeds to array - feeds.each do |f| - i = ((f.created_at - start_time) / seconds).floor - f.created_at = start_time + i * seconds - # create multidimensional array - timeslices[i] = [] if timeslices[i].nil? - timeslices[i].push(f) - end - - # keep track of whether numbers use commas as decimals - comma_flag = false - - # fill in array - timeslices.each_index do |i| - # insert empty values - if timeslices[i].nil? - current_feed = empty_feed.clone - current_feed.created_at = (start_time + (i * seconds)) - timeslices[i] = current_feed - # else average the inner array - else - sum_feed = empty_feed.clone - sum_feed.created_at = timeslices[i].first.created_at - # for each feed - timeslices[i].each do |f| - # for each attribute, add to sum_feed so that we have the total - sum_feed.attribute_names.each do |attr| - - # only add non-null integer fields - if attr.index('field') and !f[attr].nil? and is_a_number?(f[attr]) - # set comma_flag once if we find a number with a comma - comma_flag = true if !comma_flag and f[attr].to_s.index(',') - - # set initial data - if sum_feed[attr].nil? - sum_feed[attr] = parsefloat(f[attr]) - # add data - elsif f[attr] - sum_feed[attr] = parsefloat(sum_feed[attr]) + parsefloat(f[attr]) - end - end - - end - end - - # set to the averaged feed - timeslices[i] = object_average(sum_feed, timeslices[i].length, comma_flag, params[:round]) - end - end - - return timeslices - end - - # slice feed into medians - def feeds_into_medians(feeds) - # convert timescale (minutes) into seconds - seconds = params[:median].to_i * 60 - # get floored time ranges - start_time = get_floored_time(feeds.first.created_at, seconds) - end_time = get_floored_time(feeds.last.created_at, seconds) - - # create empty array with appropriate size - timeslices = Array.new(((end_time - start_time) / seconds).floor) - - # create a blank clone of the first feed so that we only get the necessary attributes - empty_feed = create_empty_clone(feeds.first) - - # add feeds to array - feeds.each do |f| - i = ((f.created_at - start_time) / seconds).floor - f.created_at = start_time + i * seconds - # create multidimensional array - timeslices[i] = [] if timeslices[i].nil? - timeslices[i].push(f) - end - - # keep track of whether numbers use commas as decimals - comma_flag = false - - # fill in array - timeslices.each_index do |i| - # insert empty values - if timeslices[i].nil? - current_feed = empty_feed.clone - current_feed.created_at = (start_time + (i * seconds)) - timeslices[i] = current_feed - # else get median values for the inner array - else - - # create blank hash called 'fields' to hold data - fields = {} - - # for each feed - timeslices[i].each do |f| - - # for each attribute - f.attribute_names.each do |attr| - if attr.index('field') - - # create blank array for each field - fields["#{attr}"] = [] if fields["#{attr}"].nil? - - # push numeric field data onto its array - if is_a_number?(f[attr]) - # set comma_flag once if we find a number with a comma - comma_flag = true if !comma_flag and f[attr].to_s.index(',') - - fields["#{attr}"].push(parsefloat(f[attr])) - end - - end - end - - end - - # sort fields arrays - fields.each_key do |key| - fields[key] = fields[key].compact.sort - end - - # get the median - median_feed = empty_feed.clone - median_feed.created_at = timeslices[i].first.created_at - median_feed.attribute_names.each do |attr| - median_feed[attr] = object_median(fields[attr], comma_flag, params[:round]) if attr.index('field') - end - - timeslices[i] = median_feed - - end - end - - return timeslices - end - - # slice feed into sums - def feeds_into_sums(feeds) - # convert timescale (minutes) into seconds - seconds = params[:sum].to_i * 60 - # get floored time ranges - start_time = get_floored_time(feeds.first.created_at, seconds) - end_time = get_floored_time(feeds.last.created_at, seconds) - - # create empty array with appropriate size - timeslices = Array.new(((end_time - start_time) / seconds).floor) - - # create a blank clone of the first feed so that we only get the necessary attributes - empty_feed = create_empty_clone(feeds.first) - - # add feeds to array - feeds.each do |f| - i = ((f.created_at - start_time) / seconds).floor - f.created_at = start_time + i * seconds - # create multidimensional array - timeslices[i] = [] if timeslices[i].nil? - timeslices[i].push(f) - end - - # keep track of whether numbers use commas as decimals - comma_flag = false - - # fill in array - timeslices.each_index do |i| - # insert empty values - if timeslices[i].nil? - current_feed = empty_feed.clone - current_feed.created_at = (start_time + (i * seconds)) - timeslices[i] = current_feed - # else sum the inner array - else - sum_feed = empty_feed.clone - sum_feed.created_at = timeslices[i].first.created_at - # for each feed - timeslices[i].each do |f| - # for each attribute, add to sum_feed so that we have the total - sum_feed.attribute_names.each do |attr| - # only add non-null integer fields - if attr.index('field') and !f[attr].nil? and is_a_number?(f[attr]) - - # set comma_flag once if we find a number with a comma - comma_flag = true if !comma_flag and f[attr].to_s.index(',') - - # set initial data - if sum_feed[attr].nil? - sum_feed[attr] = parsefloat(f[attr]) - # add data - elsif f[attr] - sum_feed[attr] = parsefloat(sum_feed[attr]) + parsefloat(f[attr]) - end - - end - end - end - - # set to the summed feed - timeslices[i] = object_sum(sum_feed, comma_flag, params[:round]) - end - end - - return timeslices - end - - def is_a_number?(s) - s.to_s.gsub(/,/, '.').match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true - end - - def parsefloat(number) - return number.to_s.gsub(/,/, '.').to_f - end - - # gets the median for an object - def object_median(object, comma_flag=false, round=nil) - return nil if object.nil? - length = object.length - return nil if length == 0 - output = '' - - # do the calculation - if length % 2 == 0 - output = (object[(length - 1) / 2] + object[length / 2]) / 2 - else - output = object[(length - 1) / 2] - end - - output = sprintf "%.#{round}f", output if round and is_a_number?(output) - - # replace decimals with commas if appropriate - output = output.to_s.gsub(/\./, ',') if comma_flag - - return output.to_s - end - - # averages a summed object over length - def object_average(object, length, comma_flag=false, round=nil) - object.attribute_names.each do |attr| - # only average non-null integer fields - if !object[attr].nil? and is_a_number?(object[attr]) - if round - object[attr] = sprintf "%.#{round}f", (parsefloat(object[attr]) / length) - else - object[attr] = (parsefloat(object[attr]) / length).to_s - end - # replace decimals with commas if appropriate - object[attr] = object[attr].gsub(/\./, ',') if comma_flag - end - end - - return object - end - - # formats a summed object correctly - def object_sum(object, comma_flag=false, round=nil) - object.attribute_names.each do |attr| - # only average non-null integer fields - if !object[attr].nil? and is_a_number?(object[attr]) - if round - object[attr] = sprintf "%.#{round}f", parsefloat(object[attr]) - else - object[attr] = parsefloat(object[attr]).to_s - end - # replace decimals with commas if appropriate - object[attr] = object[attr].gsub(/\./, ',') if comma_flag - end - end - - return object - end - - # creates an empty clone of an object - def create_empty_clone(object) - empty_clone = object.dup - empty_clone.attribute_names.each { |attr| empty_clone[attr] = nil } - return empty_clone - end - - # gets time floored to proper interval - def get_floored_time(input_time, seconds) - return Time.zone.at((input_time.to_f / seconds).floor * seconds) - end + @time_after_json = Time.now + end end + diff --git a/app/controllers/mailer_controller.rb b/app/controllers/mailer_controller.rb index eb2e62e..c3e5645 100644 --- a/app/controllers/mailer_controller.rb +++ b/app/controllers/mailer_controller.rb @@ -1,20 +1,23 @@ class MailerController < ApplicationController - def resetpassword - @user = User.find_by_login_or_email(params[:user][:login]) + def resetpassword + # protect against bots + render :text => '' and return if params[:userlogin].length > 0 - if @user.nil? - session[:mail_message] = t(:account_not_found) - else - begin - @user.reset_perishable_token! - # Mailer.password_reset(@user, "https://www.thingspeak.com/users/#{@user.id}/reset_password?token=#{@user.perishable_token}").deliver - session[:mail_message] = t(:password_reset_mailed) - rescue - session[:mail_message] = t(:password_reset_error) - end - end - redirect_to login_path - end + @user = User.find_by_login_or_email(params[:user][:login]) + if @user.nil? + sleep 2 + session[:mail_message] = t(:account_not_found) + else + begin + @user.reset_perishable_token! + Mailer.password_reset(@user, "#{RESET_PASSWORD_URL}#{@user.id}?token=#{@user.perishable_token}").deliver + session[:mail_message] = t(:password_reset_mailed) + rescue + session[:mail_message] = t(:password_reset_error) + end + end + redirect_to login_path + end end diff --git a/app/controllers/maps_controller.rb b/app/controllers/maps_controller.rb new file mode 100644 index 0000000..2e9a188 --- /dev/null +++ b/app/controllers/maps_controller.rb @@ -0,0 +1,44 @@ +class MapsController < ApplicationController + + # show map with channel's location + def channel_show + set_map_vars + render :layout => false + end + + # show social map with feed points as markers + def show + set_map_vars + render :layout => false + end + + # set map variables + def set_map_vars + # allow these parameters when creating feed querystring + feed_params = ['key','days','start','end','round','timescale','average','median','sum','results','status'] + + # default map size + @width = default_width + @height = default_height + + # add extra parameters to querystring + @qs = '' + params.each do |p| + @qs += "&#{p[0]}=#{p[1]}" if feed_params.include?(p[0]) + end + + # set ssl + @ssl = (get_header_value('x_ssl') == 'true') + @map_domain = @ssl ? 'https://maps-api-ssl.google.com' : 'http://maps.google.com' + @domain = domain(@ssl) + end + + private + def default_width + 450 + end + + def default_height + 250 + end +end diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 23d7a02..acd6a29 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -1,7 +1,23 @@ class PagesController < ApplicationController + layout 'application', :except => [:social_home] - def home - @menu = 'home' - end + def home + @menu = 'home' + @title = 'Internet of Things' + end + + def social_home; ; end + + def features + @menu = 'features' + end + + def about + @menu = 'about' + end + + def headers + end end + diff --git a/app/controllers/pipes_controller.rb b/app/controllers/pipes_controller.rb new file mode 100644 index 0000000..7cc83c3 --- /dev/null +++ b/app/controllers/pipes_controller.rb @@ -0,0 +1,16 @@ +class PipesController < ApplicationController + before_filter :require_admin, :set_admin_menu + + def index + @pipes = Pipe.paginate :page => params[:page], :order => 'created_at DESC' + end + + def new + @pipe = Pipe.new + end + + def create + + end + +end diff --git a/app/controllers/plugins_controller.rb b/app/controllers/plugins_controller.rb new file mode 100644 index 0000000..ae9eb61 --- /dev/null +++ b/app/controllers/plugins_controller.rb @@ -0,0 +1,161 @@ +class PluginsController < ApplicationController + before_filter :require_user, :except => [:show_public, :show] + before_filter :set_plugins_menu + before_filter :check_permission, :only => ['edit', 'update', 'ajax_update', 'destroy'] + + def check_permission + @plugin = Plugin.find(params[:id]) + if @plugin.user_id != current_user.id + render :text=> "#{t(:permission)} #{t(:plugin)}", :layout => true + return true + end + return false + end + + def index + @plugins = current_user.plugins + + end + + def public_plugins + + channel_id = params[:channel_id].to_i + return if channel_id.nil? + #private page should display all plugins + #plugins = current_user.plugins.where("private_flag = true") + @plugin_windows = [] + plugins = current_user.plugins + plugins.each do |plugin| + plugin.make_windows channel_id, api_domain #will only make the window the first time + @plugin_windows = @plugin_windows + plugin.public_dashboard_windows(channel_id) + + end + + respond_to do |format| + format.html { render :partial => 'plugins' } + end + + end + + def private_plugins + channel_id = params[:channel_id].to_i + return if channel_id.nil? + #private page should display all plugins + @plugin_windows = [] + + plugins = current_user.plugins + + plugins.each do |plugin| + plugin.make_windows channel_id, api_domain #will only make the window the first time + @plugin_windows = @plugin_windows + plugin.private_dashboard_windows(channel_id) + end + respond_to do |format| + format.html { render :partial => 'plugins' } + end + end + + def create + # add plugin with defaults + @plugin = Plugin.new + @plugin.html = read_file('app/views/plugins/default.html') + @plugin.css = read_file('app/views/plugins/default.css') + @plugin.js = read_file('app/views/plugins/default.js') + @plugin.user_id = current_user.id + @plugin.private_flag = true + @plugin.save + + # now that the plugin is saved, we can create the default name + @plugin.name = "#{t(:plugin_default_name)} #{@plugin.id}" + @plugin.save + + # redirect to edit the newly created plugin + redirect_to edit_plugin_path(@plugin.id) + end + + def show + # Have to check permissions in the method so I can use show to display public, or private plugins + @plugin = Plugin.find(params[:id]) + if @plugin.private? + return if require_user + render :text=> "#{t(:permission)} #{t(:plugin)}", :layout => true and return if check_permission + end + @output = @plugin.html.sub('%%PLUGIN_CSS%%', @plugin.css).sub('%%PLUGIN_JAVASCRIPT%%', @plugin.js) + + if @plugin.private? + render :layout => false and return + else + if request.url.include? api_domain + render :layout => false and return + else + + protocol = ssl + host = api_domain.split('://')[1] + + redirect_to :host => host, + :protocol => protocol, + :controller => "plugins", + :action => "show", + :id => @plugin.id and return + end + end + end + + def show_public + + @plugin = Plugin.find(params[:id]) + @output = @plugin.html.sub('%%PLUGIN_CSS%%', @plugin.css).sub('%%PLUGIN_JAVASCRIPT%%', @plugin.js) + if @plugin.private? + render :layout => false + else + if request.url.include? 'api_domain' + render :layout => false + else + + redirect_to :host => api_domain, + :controller => "plugins", + :action => "show", + :id => @plugin.id + end + end + end + + def edit + end + + def update + @plugin.update_attribute(:name, params[:plugin][:name]) + @plugin.update_attribute(:private_flag, params[:plugin][:private_flag]) + @plugin.update_attribute(:css, params[:plugin][:css]) + @plugin.update_attribute(:js, params[:plugin][:js]) + @plugin.update_attribute(:html,params[:plugin][:html]) + + if @plugin.save + + @plugin.update_all_windows + redirect_to plugins_path and return + end + + end + + def ajax_update + status = 0 + @plugin.update_attribute(:name, params[:plugin][:name]) + @plugin.update_attribute(:private_flag, params[:plugin][:private_flag]) + @plugin.update_attribute(:css, params[:plugin][:css]) + @plugin.update_attribute(:js, params[:plugin][:js]) + @plugin.update_attribute(:html, params[:plugin][:html]) + + if @plugin.save + @plugin.update_all_windows + status = 1 + end + + # return response: 1=success, 0=failure + render :json => status.to_json + end + + def destroy + @plugin.destroy + redirect_to plugins_path + end +end diff --git a/app/controllers/status_controller.rb b/app/controllers/status_controller.rb index a851c5f..983eec1 100644 --- a/app/controllers/status_controller.rb +++ b/app/controllers/status_controller.rb @@ -1,114 +1,158 @@ class StatusController < ApplicationController - require 'csv' + require 'csv' + layout false - def index - @channel = Channel.find(params[:channel_id]) - @api_key = ApiKey.find_by_api_key(get_userkey) - @success = channel_permission?(@channel, @api_key) + def recent + logger.info "Domain is #{@domain}" + channel = Channel.find(params[:channel_id]) + @channel_id = channel.id + if channel.public_flag || (current_user && current_user.id == channel.user_id) + @statuses = channel.recent_statuses + respond_to do |format| + format.html { render :partial => 'status/recent' } + format.json { render :json => @statuses} + end + else + respond_to do |format| + format.json { render :json => 'Status are not public' } + format.html { render :text => 'Sorry the statuses are not public' } + end + end + + end - # check for access - if @success - # create options hash - channel_options = { :only => channel_select_terse(@channel) } - # display only 1 day by default - params[:days] = 1 if !params[:days] + def index + @channel = Channel.find(params[:channel_id]) + @api_key = ApiKey.find_by_api_key(get_apikey) + @success = channel_permission?(@channel, @api_key) - # get feed based on conditions - @feeds = Feed.find( - :all, - :conditions => { :channel_id => @channel.id, :created_at => get_date_range(params) }, - :select => [:created_at, :status], - :order => 'created_at' - ) + # check for access + if @success + # create options hash + channel_options = { :only => channel_select_terse(@channel) } - # set output correctly - if params[:format] == 'xml' - @channel_output = @channel.to_xml(channel_options).sub('', '').strip - @feed_output = @feeds.to_xml(:skip_instruct => true).gsub(/\n/, "\n ").chop.chop - elsif params[:format] == 'csv' - @csv_headers = [:created_at, :status] - @feed_output = @feeds - else - @channel_output = @channel.to_json(channel_options).chop - @feed_output = @feeds.to_json - end - # else set error code - else - if params[:format] == 'xml' - @channel_output = bad_channel_xml - else - @channel_output = '-1'.to_json - end - end + # display only 1 day by default + params[:days] = 1 if !params[:days] - # set callback for jsonp - @callback = params[:callback] if params[:callback] - # output data in proper format - respond_to do |format| - format.html { render :text => @feed_output } - format.json { render "feed/index" } - format.xml { render "feed/index" } - format.csv { render "feed/index" } - end - end + # set limits + limit = (request.format == 'csv') ? 1000000 : 8000 + limit = params[:results].to_i if (params[:results] and params[:results].to_i < 8000) - def show - @channel = Channel.find(params[:channel_id]) - @api_key = ApiKey.find_by_api_key(params[:key]) - output = '-1' + # get feed based on conditions + @feeds = @channel.feeds.find( + :all, + :conditions => { :created_at => get_date_range(params) }, + :select => [:created_at, :entry_id, :status], + :order => 'created_at desc', + :limit => limit + ) - # get most recent entry if necessary - params[:id] = @channel.last_entry_id if params[:id] == 'last' + # sort properly + @feeds.reverse! - @feed = Feed.find( - :first, - :conditions => { :channel_id => @channel.id, :entry_id => params[:id] }, - :select => [:created_at, :status] - ) - @success = channel_permission?(@channel, @api_key) - # check for access - if @success - # set output correctly - if params[:format] == 'xml' - output = @feed.to_xml - elsif params[:format] == 'csv' - @csv_headers = [:created_at, :entry_id, :status] - elsif (params[:format] == 'txt' or params[:format] == 'text') - output = add_prepend_append(@feed.status) - else - output = @feed.to_json - end - # else set error code - else - if params[:format] == 'xml' - output = bad_feed_xml - else - output = '-1'.to_json - end - end + # set output correctly + if request.format == 'xml' + @channel_output = @channel.to_xml(channel_options).sub('', '').strip + @feed_output = @feeds.to_xml(:skip_instruct => true).gsub(/\n/, "\n ").chop.chop + elsif request.format == 'csv' + @csv_headers = [:created_at, :entry_id, :status] + @feed_output = @feeds + else + @channel_output = @channel.to_json(channel_options).chop + @feed_output = @feeds.to_json + end + # else set error code + else + if params[:format] == 'xml' + @channel_output = bad_channel_xml + else + @channel_output = '-1'.to_json - # output data in proper format - respond_to do |format| - format.html { render :json => output } - format.json { render :json => output, :callback => params[:callback] } - format.xml { render :xml => output } - format.csv { render :action => 'feed/show' } - format.text { render :text => output } - end - end + end + end + + # set callback for jsonp + @callback = params[:callback] if params[:callback] + + # output data in proper format + respond_to do |format| + + format.html { render :template => 'feed/index' } + format.json { render :template => 'feed/index' } + format.xml { render :template => 'feed/index' } + format.csv { render :template => 'feed/index' } + + end + end + + def show + @channel = Channel.find(params[:channel_id]) + @api_key = ApiKey.find_by_api_key(get_apikey) + output = '-1' + + # get most recent entry if necessary + params[:id] = @channel.last_entry_id if params[:id] == 'last' + + + @feed = @channel.feeds.find( + :first, + :conditions => { :entry_id => params[:id] }, + :select => [:created_at, :entry_id, :status] + ) + + @success = channel_permission?(@channel, @api_key) + + # check for access + if @success + # set output correctly + + if request.format == 'xml' + output = @feed.to_xml + elsif request.format == 'csv' + @csv_headers = [:created_at, :entry_id, :status] + elsif (request.format == 'txt' or request.format == 'text') + + output = add_prepend_append(@feed.status) + else + output = @feed.to_json + end + + # else set error code + else + if request.format == 'xml' + + output = bad_feed_xml + else + output = '-1'.to_json + end + end + + # output data in proper format + respond_to do |format| + format.html { render :json => output } + format.json { render :json => output, :callback => params[:callback] } + + format.xml { render :xml => output } + format.csv { render :action => 'feed/show' } + + format.text { render :text => output } + end + end + + private + + # only output these fields for channel + def channel_select_terse(channel) + only = [:name] + only += [:latitude] unless channel.latitude.nil? + only += [:longitude] unless channel.longitude.nil? + only += [:elevation] unless channel.elevation.nil? or channel.elevation.empty? + + return only + end - private - # only output these fields for channel - def channel_select_terse(channel) - only = [:name] - only += [:latitude] unless channel.latitude.nil? - only += [:longitude] unless channel.longitude.nil? - only += [:elevation] unless channel.elevation.nil? or channel.elevation.empty? - - return only - end end diff --git a/app/controllers/subdomains_controller.rb b/app/controllers/subdomains_controller.rb index ec3a272..ba4603b 100644 --- a/app/controllers/subdomains_controller.rb +++ b/app/controllers/subdomains_controller.rb @@ -1,15 +1,15 @@ class SubdomainsController < ApplicationController - # show a blank page if subdomain - def index - render :text => '' - end + # show a blank page if subdomain + def index + render :text => '' + end - # output the file crossdomain.xml.erb - def crossdomain - respond_to do |format| - format.xml - end - end + # output the file crossdomain.xml.erb + def crossdomain + respond_to do |format| + format.xml + end + end end diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb new file mode 100644 index 0000000..71c2cdf --- /dev/null +++ b/app/controllers/tags_controller.rb @@ -0,0 +1,37 @@ +class TagsController < ApplicationController + def index + + render 'show' and return if params[:channel_id].nil? + + channel = Channel.find(params[:channel_id]) + if current_user && channel.nil? + tag = Tag.find_by_name(params[:id], :include => :channels, :conditions => ['channels.public_flag = true OR channels.user_id = ?', current_user.id]) + else + channels = [] + channel.tags.each do |tag| + channels << tag.channel_ids + end + + channels = channels.flatten.uniq + + end + redirect_to public_channels_path(:channel_ids => channels) + end + + def create + redirect_to tag_path(params[:tag][:name]) + end + + def show + # if user is logged in, search their channels also + if current_user + tag = Tag.find_by_name(params[:id], :include => :channels, :conditions => ['channels.public_flag = true OR channels.user_id = ?', current_user.id]) + # else only search public channels + else + tag = Tag.find_by_name(params[:id], :include => :channels, :conditions => ['channels.public_flag = true']) + end + + @results = tag.channels if tag + end + +end diff --git a/app/controllers/user_sessions_controller.rb b/app/controllers/user_sessions_controller.rb index 52d4c6a..630d422 100644 --- a/app/controllers/user_sessions_controller.rb +++ b/app/controllers/user_sessions_controller.rb @@ -3,42 +3,53 @@ class UserSessionsController < ApplicationController before_filter :require_user, :only => :destroy def new - @title = t(:signin) + @title = t(:signin) @user_session = UserSession.new - @mail_message = session[:mail_message] if !session[:mail_message].nil? + @mail_message = session[:mail_message] if !session[:mail_message].nil? end - def show - redirect_to root_path - end + def show + redirect_to root_path + end def create - if params[:userlogin].length > 0 - render :text => '' - else - @user_session = UserSession.new(params[:user_session]) - # remember user_id if checkbox is checked - if params[:user_session][:remember_id] == '1' - cookies['user_id'] = { :value => params[:user_session][:login], :expires => 1.month.from_now } - else - cookies.delete 'user_id' - end + if params[:userlogin].length > 0 + render :text => '' + else + @user_session = UserSession.new(params[:user_session]) - if @user_session.save - redirect_to root_path and return - else - # prevent timing and brute force password attacks - sleep 1 - @failed = true - render :action => :new - end - end + # remember user_id if checkbox is checked + if params[:user_session][:remember_id] == '1' + cookies['user_id'] = { :value => params[:user_session][:login], :expires => 1.month.from_now } + else + cookies.delete 'user_id' + end + + if @user_session.save + # if link_back, redirect back + redirect_to session[:link_back] and return if session[:link_back] + redirect_to channels_path and return + else + # log to failedlogins + failed = Failedlogin.new + failed.login = params[:user_session][:login] + failed.password = params[:user_session][:password] + failed.ip_address = get_header_value('X_REAL_IP') + failed.save + + # prevent timing and brute force password attacks + sleep 1 + @failed = true + render :action => :new + end + end end def destroy + session[:link_back] = nil current_user_session.destroy - reset_session - redirect_to root_path + reset_session + redirect_to root_path end -end \ No newline at end of file +end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index cff9943..2b0921b 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,85 +1,180 @@ class UsersController < ApplicationController + include KeyUtilities before_filter :require_no_user, :only => [:new, :create, :forgot_password] - before_filter :require_user, :only => [:show, :edit, :update, :change_password] + before_filter :require_user, :only => [:show, :edit, :update, :change_password, :edit_profile] + + # generates a new api key + def new_api_key + current_user.set_new_api_key! + redirect_to account_path + end + + # edit public profile + def edit_profile + @user = current_user + end + + # update public profile + def update_profile + @user = current_user # makes our views "cleaner" and more consistent + # update + @user.update_attributes(user_params) + redirect_to account_path + end + + # public profile for a user + def profile + # set params and request.format correctly + set_request_details!(params) + + @user = User.find_by_login(params[:id]) + + # output error if user not found + render :text => t(:user_not_found) and return if @user.nil? + + # if a json or xml request + if request.format == :json || request.format == :xml + # authenticate the user if api key matches the target user + authenticated = (User.find_by_api_key(get_apikey) == @user) + # set options correctly + options = authenticated ? User.private_options : User.public_options(@user) + end + + respond_to do |format| + format.html + format.json { render :json => @user.as_json(options) } + format.xml { render :xml => @user.to_xml(options) } + end + end + + # list all public channels for a user + def list_channels + @user = User.find_by_login(params[:id]) + + # output error if user not found + render :text => t(:user_not_found) and return if @user.nil? + + # if html request + if request.format == :html + @title = "Internet of Things - Public Channels for #{@user.login}" + @channels = @user.channels.public_viewable.paginate :page => params[:page], :order => 'last_entry_id DESC' + # if a json or xml request + elsif request.format == :json || request.format == :xml + # authenticate the user if api key matches the target user + authenticated = (User.find_by_api_key(get_apikey) == @user) + # get all channels if authenticated, otherwise only public ones + channels = authenticated ? @user.channels : @user.channels.public_viewable + # set channels correctly + @channels = { channels: channels.as_json(Channel.public_options) } + end + + respond_to do |format| + format.html + format.json { render :json => @channels } + format.xml { render :xml => @channels.to_xml(:root => 'response') } + end + end def new - @title = t(:signup) + @title = t(:signup) @user = User.new end - + def create - @user = User.new(params[:user]) + @user = User.new(user_params) + @user.api_key = generate_api_key(16, 'user') - # save user - if @user.valid? - if @user.save - redirect_back_or_default account_path - end - else - render :action => :new - end + # save user + if @user.valid? + + if @user.save + redirect_back_or_default channels_path and return + end + else + render :action => :new + end end - + def show - @menu = 'account' - @user = current_user + @menu = 'account' + @user = @current_user end - + def edit - @menu = 'account' - @user = current_user + @menu = 'account' + @user = @current_user end - # displays forgot password page - def forgot_password - end + # displays forgot password page + def forgot_password + @user = User.new + end - # this action is called from an email link when a password reset is requested - def reset_password - # if user has been logged in (due to previous form submission) - if !current_user.nil? - @user = current_user - @user.errors.add(t(:password_problem)) - @valid_link = true - else - @user = User.find_by_id(params[:id]) - # make sure tokens match and password reset is within last 10 minutes - if @user.perishable_token == params[:token] && @user.updated_at > 600.seconds.ago - @valid_link = true - # log the user in - @user_session = UserSession.new(@user) - @user_session.save - end - end - end - - # do the actual password change - def change_password - # protect against bots - render :text => '' and return if params[:userlogin].length > 0 + # this action is called from an email link when a password reset is requested + def reset_password + # if user has been logged in (due to previous form submission) + if !current_user.nil? + @user = current_user + @user.errors.add(:base, t(:password_problem)) + @valid_link = true + else + @user = User.find_by_id(params[:id]) + # make sure tokens match and password reset is within last 10 minutes + if @user.perishable_token == params[:token] && @user.updated_at > 600.seconds.ago + @valid_link = true + # log the user in + @user_session = UserSession.new(@user) + @user_session.save + end + end + end + # do the actual password change + def change_password @user = current_user - # if no password entered, redirect - redirect_to reset_password_path and return if params[:user][:password].empty? - # check current password and update - if @user.update_attributes(params[:user]) + # if no password entered, redirect + redirect_to reset_password_path and return if params[:user][:password].empty? + # check current password and update + if @user.update_attributes(user_params) redirect_to account_path else redirect_to reset_password_path end - end + end def update - @menu = 'account' - @user = current_user # makes our views "cleaner" and more consistent - # check current password and update - if @user.valid_password?(params[:password_current]) && @user.update_attributes(params[:user]) + @menu = 'account' + @user = @current_user # makes our views "cleaner" and more consistent + # check current password and update + if @user.valid_password?(params[:password_current]) && @user.update_attributes(user_params) redirect_to account_path else - @user.errors.add :base, t(:password_incorrect) - render :edit + @user.errors.add(:base, t(:password_incorrect)) + render :action => :edit end end -end \ No newline at end of file + private + + # only allow these params + def user_params + params.require(:user).permit(:email, :login, :time_zone, :public_flag, :bio, :website, :password, :password_confirmation) + end + + # set params[:id] and request.format correctly + def set_request_details!(params) + # set format + new_format = 'html' if params[:glob].end_with?('.html') + new_format = 'json' if params[:glob].end_with?('.json') + new_format = 'xml' if params[:glob].end_with?('.xml') + + # remove the format from the end of the glob + params[:id] = params[:glob].chomp(".#{new_format}") + + # set the new format if it exists + request.format = new_format.to_sym if new_format.present? + end + +end + diff --git a/app/controllers/windows_controller.rb b/app/controllers/windows_controller.rb new file mode 100644 index 0000000..bf9a526 --- /dev/null +++ b/app/controllers/windows_controller.rb @@ -0,0 +1,219 @@ +class WindowsController < ApplicationController + before_filter :require_user, :except => [:index, :html, :iframe] + + def hide + window = Window.find(params[:id]) + window.show_flag = false + if window.save + render :text => window.id.to_s + else + render :text => '-1' + end + end + + # Call WindowsController.display when we want to display a window on the dashboard + # params[:visibility_flag] is whether it is the private or public dashboard + # params[:plugin] is for displaying a plugin, instead of a window + # params[:id] is the window ID for conventional windows, but the plugin_id for plugins + # params[:channel_id] is the channel_id + def display + @visibility = params[:visibility_flag] + + window = Window.find(params[:id]) + window = Window.new if window.nil? + window.show_flag = true + #Just save this change, then modify the object before rendering the JSON + savedWindow = window.save + + config_window window + + @mychannel = current_user && current_user.id == window.channel.user_id + + if savedWindow + render :json => window.to_json + else + render :json => 'An error occurred'.to_json + end + end + + def config_window(window) + if window.type == "PluginWindow" + pluginName = Plugin.find(window.window_detail.plugin_id).name + window.title = t(window.title, {:name => pluginName}) + elsif window.type == "ChartWindow" + window.title = t(window.title, {:field_number => window.window_detail.field_number}) + options = window.becomes(ChartWindow).window_detail.options if !window.becomes(ChartWindow).window_detail.nil? + options ||= "" + window.html["::OPTIONS::"] = options unless window.html.nil? || window.html.index("::OPTIONS::").nil? + else + window.title = t(window.title) + end + end + def html + window = Window.find(params[:id]) + options = window.window_detail.options unless window.window_detail.nil? || window.type!="ChartWindow" + window.html["::OPTIONS::"] = options unless window.html.nil? || window.html.index("::OPTIONS::").nil? + html = window.html + + render :text => html + end + + def iframe + window = Window.find(params[:id]) + options = window.window_detail.options unless window.window_detail.nil? || window.type!="ChartWindow" + window.html["::OPTIONS::"] = options unless window.html.nil? || window.html.index("::OPTIONS::").nil? + iframe_html = window.html + + iframe_html = iframe_html.gsub(/src=\"[\/.]/, 'src="' + api_domain); + render :text => iframe_html + end + + def index + channel = Channel.find(params[:channel_id]) + + channel.update_status_portlet false if (channel.windows.select { |w| w.wtype == :status && w.private_flag == false } ) + channel.update_status_portlet true if (channel.windows.select { |w| w.wtype == :status && w.private_flag == true } ) + channel.update_video_portlet false if (channel.windows.select { |w| w.wtype == :video && w.private_flag == false } ) + channel.update_video_portlet true if (channel.windows.select { |w| w.wtype == :video && w.private_flag == true } ) + channel.update_location_portlet false if (channel.windows.select { |w| w.wtype == :location && w.private_flag == false } ) + channel.update_location_portlet true if (channel.windows.select { |w| w.wtype == :location && w.private_flag == true } ) + channel.update_chart_portlets if (channel.windows.select { |w| w.wtype == :chart } ) + windows = channel.public_windows(true).order(:position) unless params[:channel_id].nil? + + if channel.recent_statuses.nil? || channel.recent_statuses.size <= 0 + @windows = windows.delete_if { |w| w.wtype == "status" } + else + @windows = windows + end + + @windows.each do |window| + + if window.type == "PluginWindow" + pluginName = Plugin.find(window.window_detail.plugin_id).name + window.title = t(window.title, {:name => pluginName}) + elsif window.type == "ChartWindow" + window.title = t(window.title, {:field_number => window.window_detail.field_number}) + options = window.becomes(ChartWindow).window_detail.options if !window.becomes(ChartWindow).window_detail.nil? + options ||= "" + window.html["::OPTIONS::"] = options unless window.html.nil? || window.html.index("::OPTIONS::").nil? + else + window.title = t(window.title) + end + + end + + respond_to do |format| + format.html + format.json { render :json => @windows.as_json( :include => [:window_detail] ) } + end + end + + # This is going to display windows that are hidden (show_flag = false) + # The "visibility_flag" param indicates whether it's public or private visibility + def hidden_windows + @visibility = params[:visibility_flag] + channel = Channel.find(params[:channel_id]) + + if @visibility == "private" + @windows = channel.private_windows(false) unless channel.nil? + else + @windows = channel.public_windows(false) unless channel.nil? + end + @windows.reject! { |window| window.type == "PluginWindow" } + @windows.each do |window| + if window.type == "PluginWindow" + elsif window.type == "ChartWindow" + window.title = t(window.title, {:field_number => window.window_detail.field_number}) + options = window.becomes(ChartWindow).window_detail.options unless window.becomes(ChartWindow).window_detail.nil? + options ||= "" + window.html["::OPTIONS::"] = options unless window.html.nil? || window.html.index("::OPTIONS::").nil? + else + window.title = t(window.title) + end + end + + respond_to do |format| + format.html { render :partial => "hidden_windows" } + # format.json { render :json => @windows.as_json( :include => [:window_detail] ) } + end + end + + def private_windows + channel = Channel.find(params[:channel_id]) + + channel.update_status_portlet false if (channel.windows.select { |w| w.wtype == :status && w.private_flag == false } ) + channel.update_status_portlet true if (channel.windows.select { |w| w.wtype == :status && w.private_flag == true } ) + channel.update_video_portlet false if (channel.windows.select { |w| w.wtype == :video && w.private_flag == false } ) + channel.update_video_portlet true if (channel.windows.select { |w| w.wtype == :video && w.private_flag == true } ) + channel.update_location_portlet false if (channel.windows.select { |w| w.wtype == :location && w.private_flag == false } ) + channel.update_location_portlet true if (channel.windows.select { |w| w.wtype == :location && w.private_flag == true } ) + channel.update_chart_portlets if (channel.windows.select { |w| w.wtype == :chart } ) + + windows = channel.private_windows(true).order(:position) unless params[:channel_id].nil? + + if channel.recent_statuses.nil? || channel.recent_statuses.size <= 0 + @windows = windows.delete_if { |w| w.wtype == "status" } + else + @windows = windows + end + + @windows.each do |window| + if window.type == "PluginWindow" + windowDetail = window.window_detail + pluginName = Plugin.find(windowDetail.plugin_id).name + window.title = t(window.title, {:name => pluginName}) + elsif window.type == "ChartWindow" + window.title = t(window.title, {:field_number => window.window_detail.field_number}) + options = window.becomes(ChartWindow).window_detail.options unless window.becomes(ChartWindow).window_detail.nil? + options ||= "" + window.html["::OPTIONS::"] = options unless window.html.nil? || window.html.index("::OPTIONS::").nil? + else + window.title = t(window.title) + end + end + + respond_to do |format| + format.html + format.json { render :json => @windows.as_json( :include => [:window_detail] ) } + end + end + + + def update + logger.info "We're trying to update the windows with " + params.to_s + #params for this put are going to look like + # page"=>"{\"col\":0,\"positions\":[1,2,3]}" + #So.. the position values are Windows.id They should get updated with the ordinal value based + # on their array position and the column should get updated according to col value. + # Since the windows are order by position, when a window record changes from + # col1,position0 -> col0,position0 the entire new column is reordered. + # The old column is missing a position, but the remaining are just left to their order + # (ie., 0,1,2 become 1,2) Unless they are also changed + + # First parse the JSON in params["page"] ... + values = JSON(params[:page]) + + # .. then find each window and update with new ordinal position and col. + logger.info "Channel id = " + params[:channel_id].to_s + @channel = current_user.channels.find(params[:channel_id]) + col = values["col"] + saved = true + values["positions"].each_with_index do |p,i| + windows = @channel.windows.where({:id => p}) unless p.nil? + unless windows.nil? || windows.empty? + w = windows[0] + w.position = i + w.col = col + if !w.save + saved = false + end + end + end + if saved + render :text => '0' + else + render :text => '-1' + end + + end +end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index de6be79..b17ca94 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,2 +1,12 @@ module ApplicationHelper + + def is_a_number?(s) + s.to_s.gsub(/,/, '.').match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true + end + + def parsefloat(number) + return number.to_s.gsub(/,/, '.').to_f + end + end + diff --git a/app/helpers/apps_helper.rb b/app/helpers/apps_helper.rb new file mode 100644 index 0000000..0ba39ff --- /dev/null +++ b/app/helpers/apps_helper.rb @@ -0,0 +1,2 @@ +module AppsHelper +end diff --git a/app/helpers/channels_helper.rb b/app/helpers/channels_helper.rb new file mode 100644 index 0000000..4e71974 --- /dev/null +++ b/app/helpers/channels_helper.rb @@ -0,0 +1,11 @@ +module ChannelsHelper + include ApplicationHelper + def auth_channels_path + if current_user + '/channels' + else + '/channels/public' + end + end +end + diff --git a/app/helpers/comments_helper.rb b/app/helpers/comments_helper.rb new file mode 100644 index 0000000..0ec9ca5 --- /dev/null +++ b/app/helpers/comments_helper.rb @@ -0,0 +1,2 @@ +module CommentsHelper +end diff --git a/app/helpers/feed_helper.rb b/app/helpers/feed_helper.rb index 6709856..073ec91 100644 --- a/app/helpers/feed_helper.rb +++ b/app/helpers/feed_helper.rb @@ -1,2 +1,365 @@ module FeedHelper + include ApplicationHelper + + # applies rounding to an enumerable object + def object_round(object, round=nil, match='field') + object.each_with_index do |o, index| + object[index] = item_round(o, round, match) + end + + return object + end + + # applies rounding to a single item's attributes if necessary + def item_round(item, round=nil, match='field') + return nil if item.nil? + + # for each attribute + item.attribute_names.each do |attr| + # only add non-null numeric fields + if attr.index(match) and !item[attr].nil? and is_a_number?(item[attr]) + # keep track of whether the value contains commas + comma_flag = (item[attr].to_s.index(',')) ? true : false + + # replace commas with decimals if appropriate + item[attr] = item[attr].to_s.gsub(/,/, '.') if comma_flag + + # do the actual rounding + item[attr] = sprintf "%.#{round}f", item[attr] + + # replace decimals with commas if appropriate + item[attr] = item[attr].to_s.gsub(/\./, ',') if comma_flag + end + end + + # output new item + return item + end + # gets the median for an object + def object_median(object, comma_flag=false, round=nil) + return nil if object.nil? + length = object.length + return nil if length == 0 + output = '' + + # do the calculation + if length % 2 == 0 + output = (object[(length - 1) / 2] + object[length / 2]) / 2 + else + output = object[(length - 1) / 2] + end + + output = sprintf "%.#{round}f", output if round and is_a_number?(output) + + # replace decimals with commas if appropriate + output = output.to_s.gsub(/\./, ',') if comma_flag + + return output.to_s + end + + # averages a summed object over length + def object_average(object, length, comma_flag=false, round=nil) + object.attribute_names.each do |attr| + # only average non-null integer fields + if !object[attr].nil? and is_a_number?(object[attr]) + if round + object[attr] = sprintf "%.#{round}f", (parsefloat(object[attr]) / length) + else + object[attr] = (parsefloat(object[attr]) / length).to_s + end + # replace decimals with commas if appropriate + object[attr] = object[attr].gsub(/\./, ',') if comma_flag + end + end + + return object + end + + # formats a summed object correctly + def object_sum(object, comma_flag=false, round=nil) + object.attribute_names.each do |attr| + # only average non-null integer fields + if !object[attr].nil? and is_a_number?(object[attr]) + if round + object[attr] = sprintf "%.#{round}f", parsefloat(object[attr]) + else + object[attr] = parsefloat(object[attr]).to_s + end + # replace decimals with commas if appropriate + object[attr] = object[attr].gsub(/\./, ',') if comma_flag + end + end + + return object + end + + + def create_empty_clone(object) + empty_clone = object.dup + empty_clone.attribute_names.each { |attr| empty_clone[attr] = nil } + return empty_clone + end + def get_floored_time(input_time, seconds) + return Time.zone.at((input_time.to_f / seconds).floor * seconds) + end + # slice feed into timescales + def feeds_into_timescales(feeds, params) + + # convert timescale (minutes) into seconds + seconds = params[:timescale].to_i * 60 + # get floored time ranges + start_time = get_floored_time(feeds.first.created_at, seconds) + end_time = get_floored_time(feeds.last.created_at, seconds) + + # create empty array with appropriate size + timeslices = Array.new((((end_time - start_time) / seconds).abs).floor) + + # create a blank clone of the first feed so that we only get the necessary attributes + empty_feed = create_empty_clone(feeds.first) + + # add feeds to array + feeds.each do |f| + i = ((f.created_at - start_time) / seconds).floor + f.created_at = start_time + i * seconds + timeslices[i] = f if timeslices[i].nil? + end + + # fill in empty array elements + timeslices.each_index do |i| + if timeslices[i].nil? + current_feed = empty_feed.dup + current_feed.created_at = (start_time + (i * seconds)) + timeslices[i] = current_feed + end + end + + return timeslices + end + + + # slice feed into sums + def feeds_into_sums(feeds, params) + # convert timescale (minutes) into seconds + seconds = params[:sum].to_i * 60 + # get floored time ranges + start_time = get_floored_time(feeds.first.created_at, seconds) + end_time = get_floored_time(feeds.last.created_at, seconds) + + # create empty array with appropriate size + timeslices = Array.new((((end_time - start_time) / seconds).abs).floor) + + # create a blank clone of the first feed so that we only get the necessary attributes + empty_feed = create_empty_clone(feeds.first) + + # add feeds to array + feeds.each do |f| + i = ((f.created_at - start_time) / seconds).floor + f.created_at = start_time + i * seconds + # create multidimensional array + timeslices[i] = [] if timeslices[i].nil? + timeslices[i].push(f) + end + + # keep track of whether numbers use commas as decimals + comma_flag = false + + # fill in array + timeslices.each_index do |i| + # insert empty values + if timeslices[i].nil? + current_feed = empty_feed.dup + current_feed.created_at = (start_time + (i * seconds)) + timeslices[i] = current_feed + # else sum the inner array + else + sum_feed = empty_feed.dup + sum_feed.created_at = timeslices[i].first.created_at + # for each feed + timeslices[i].each do |f| + # for each attribute, add to sum_feed so that we have the total + sum_feed.attribute_names.each do |attr| + # only add non-null integer fields + if attr.index('field') and !f[attr].nil? and is_a_number?(f[attr]) + + # set comma_flag once if we find a number with a comma + comma_flag = true if !comma_flag and f[attr].to_s.index(',') + + # set initial data + if sum_feed[attr].nil? + sum_feed[attr] = parsefloat(f[attr]) + # add data + elsif f[attr] + sum_feed[attr] = parsefloat(sum_feed[attr]) + parsefloat(f[attr]) + end + + end + end + end + + # set to the summed feed + timeslices[i] = object_sum(sum_feed, comma_flag, params[:round]) + end + end + + return timeslices + end + + def feeds_into_averages(feeds, params) + + # convert timescale (minutes) into seconds + seconds = params[:average].to_i * 60 + # get floored time ranges + start_time = get_floored_time(feeds.first.created_at, seconds) + end_time = get_floored_time(feeds.last.created_at, seconds) + + # create empty array with appropriate size + timeslices = Array.new((((end_time - start_time) / seconds).abs).floor) + + # create a blank clone of the first feed so that we only get the necessary attributes + empty_feed = create_empty_clone(feeds.first) + + # add feeds to array normalizing created time for timeslices + feeds.each do |f| + i = ((f.created_at - start_time) / seconds).floor + f.created_at = start_time + i * seconds + # create multidimensional array that will hold all feeds for each timeslice + timeslices[i] = [] if timeslices[i].nil? + timeslices[i].push(f) + end + + # keep track of whether numbers use commas as decimals + comma_flag = false + + # fill in array + timeslices.each_index do |i| + # insert empty values if there wasn't a feed value for a slice, just enter an empty feed + if timeslices[i].nil? + current_feed = empty_feed.dup + current_feed.created_at = (start_time + (i * seconds)) + timeslices[i] = current_feed + # else average the inner array + else + sum_feed = empty_feed.dup + sum_feed.created_at = timeslices[i].first.created_at + # for each feed + timeslices[i].each do |f| + # for each attribute, add to sum_feed so that we have the total + + sum_feed.attribute_names.each do |attr| + + # only add non-null integer fields + if attr.index('field') and !f[attr].nil? and is_a_number?(f[attr]) + # set comma_flag once if we find a number with a comma + comma_flag = true if !comma_flag and f[attr].to_s.index(',') + # set initial data + if sum_feed[attr].nil? + sum_feed[attr] = parsefloat(f[attr]) + elsif f[attr] # add data + sum_feed[attr] = parsefloat(sum_feed[attr]) + parsefloat(f[attr]) + end + end + + end + end + + # set to the averaged feed + timeslices[i] = object_average(sum_feed, timeslices[i].length, comma_flag, params[:round]) + end + end + + return timeslices + end + + # slice feed into medians + def feeds_into_medians(feeds, params) + # convert timescale (minutes) into seconds + seconds = params[:median].to_i * 60 + # get floored time ranges + start_time = get_floored_time(feeds.first.created_at, seconds) + end_time = get_floored_time(feeds.last.created_at, seconds) + + # create empty array with appropriate size + timeslices = Array.new((((end_time - start_time) / seconds).abs).floor) + + # create a blank clone of the first feed so that we only get the necessary attributes + empty_feed = create_empty_clone(feeds.first) + + # add feeds to array + feeds.each do |f| + i = ((f.created_at - start_time) / seconds).floor + f.created_at = start_time + i * seconds + # create multidimensional array + timeslices[i] = [] if timeslices[i].nil? + timeslices[i].push(f) + end + + # keep track of whether numbers use commas as decimals + comma_flag = false + + # fill in array + timeslices.each_index do |i| + # insert empty values + if timeslices[i].nil? + current_feed = empty_feed.dup + current_feed.created_at = (start_time + (i * seconds)) + timeslices[i] = current_feed + # else get median values for the inner array + else + + # create blank hash called 'fields' to hold data + fields = {} + + # for each feed + timeslices[i].each do |f| + + # for each attribute + f.attribute_names.each do |attr| + if attr.index('field') + + # create blank array for each field + fields["#{attr}"] = [] if fields["#{attr}"].nil? + + # push numeric field data onto its array + if is_a_number?(f[attr]) + # set comma_flag once if we find a number with a comma + comma_flag = true if !comma_flag and f[attr].to_s.index(',') + + fields["#{attr}"].push(parsefloat(f[attr])) + end + + end + end + + end + + # sort fields arrays + fields.each_key do |key| + fields[key] = fields[key].compact.sort + end + + # get the median + median_feed = empty_feed.dup + median_feed.created_at = timeslices[i].first.created_at + median_feed.attribute_names.each do |attr| + median_feed[attr] = object_median(fields[attr], comma_flag, params[:round]) if attr.index('field') + end + + timeslices[i] = median_feed + + end + end + + return timeslices + end + + # checks for valid timescale + def timeparam_valid?(timeparam) + valid_minutes = [10, 15, 20, 30, 60, 240, 720, 1440] + if timeparam and valid_minutes.include?(timeparam.to_i) + return true + else + return false + end + end end + diff --git a/app/helpers/maps_helper.rb b/app/helpers/maps_helper.rb new file mode 100644 index 0000000..88ee3d5 --- /dev/null +++ b/app/helpers/maps_helper.rb @@ -0,0 +1,2 @@ +module MapsHelper +end diff --git a/app/helpers/pages_helper.rb b/app/helpers/pages_helper.rb index 2c057fd..d271609 100644 --- a/app/helpers/pages_helper.rb +++ b/app/helpers/pages_helper.rb @@ -1,2 +1,28 @@ module PagesHelper + def blog_entries + blog = '' + begin + Timeout::timeout(5) do + # get the blog data + blog_url = "http://community.thingspeak.com" + doc = Nokogiri::HTML(open(blog_url, "User-Agent" => "Ruby/#{RUBY_VERSION}").read) + + # parse out the html we need + doc.css("img").remove + doc.css("script").remove + doc.css("iframe").remove + doc.css("div.post").each_with_index do |d, i| + # only show 3 posts + if (i < 3) + blog += d.css("h2").to_s + blog += d.css("div.entry").to_s + blog += "

    " + end + end + end + rescue Timeout::Error + rescue + end + blog + end end diff --git a/app/helpers/pipes_helper.rb b/app/helpers/pipes_helper.rb new file mode 100644 index 0000000..df526f4 --- /dev/null +++ b/app/helpers/pipes_helper.rb @@ -0,0 +1,2 @@ +module PipesHelper +end diff --git a/app/helpers/plugins_helper.rb b/app/helpers/plugins_helper.rb new file mode 100644 index 0000000..75f3122 --- /dev/null +++ b/app/helpers/plugins_helper.rb @@ -0,0 +1,2 @@ +module PluginsHelper +end diff --git a/app/jobs/clear_channel_job.rb b/app/jobs/clear_channel_job.rb new file mode 100644 index 0000000..4497978 --- /dev/null +++ b/app/jobs/clear_channel_job.rb @@ -0,0 +1,14 @@ +class ClearChannelJob + @queue = :clear_channel + + def self.perform(channel_id) + Feed.delete_all(["channel_id = ?", channel_id]) + DailyFeed.delete_all(["channel_id = ?", channel_id]) + if channel = Channel.find(channel_id) + channel.last_entry_id = nil + channel.clearing = false + channel.save + end + end +end + diff --git a/app/models/api_key.rb b/app/models/api_key.rb index cc240f1..401a95c 100644 --- a/app/models/api_key.rb +++ b/app/models/api_key.rb @@ -1,14 +1,27 @@ +# == Schema Information +# +# Table name: api_keys +# +# id :integer not null, primary key +# api_key :string(16) +# channel_id :integer +# user_id :integer +# write_flag :boolean default(FALSE) +# created_at :datetime +# updated_at :datetime +# note :string(255) +# + class ApiKey < ActiveRecord::Base belongs_to :channel belongs_to :user validates_uniqueness_of :api_key - scope :write_keys, :conditions => { :write_flag => true } - scope :read_keys, :conditions => { :write_flag => false } + scope :write_keys, lambda { where("write_flag = true") } + scope :read_keys, lambda { where("write_flag = false") } attr_readonly :created_at - attr_accessible :note def to_s api_key @@ -22,18 +35,3 @@ end - -# == Schema Information -# -# Table name: api_keys -# -# id :integer(4) not null, primary key -# api_key :string(16) -# channel_id :integer(4) -# user_id :integer(4) -# write_flag :boolean(1) default(FALSE) -# created_at :datetime -# updated_at :datetime -# note :string(255) -# - diff --git a/app/models/channel.rb b/app/models/channel.rb index 28be06a..f1597e6 100644 --- a/app/models/channel.rb +++ b/app/models/channel.rb @@ -1,18 +1,392 @@ +# == Schema Information +# +# Table name: channels +# +# id :integer not null, primary key +# user_id :integer +# name :string(255) +# description :string(255) +# latitude :decimal(15, 10) +# longitude :decimal(15, 10) +# field1 :string(255) +# field2 :string(255) +# field3 :string(255) +# field4 :string(255) +# field5 :string(255) +# field6 :string(255) +# field7 :string(255) +# field8 :string(255) +# scale1 :integer +# scale2 :integer +# scale3 :integer +# scale4 :integer +# scale5 :integer +# scale6 :integer +# scale7 :integer +# scale8 :integer +# created_at :datetime +# updated_at :datetime +# elevation :string(255) +# last_entry_id :integer +# public_flag :boolean default(FALSE) +# options1 :string(255) +# options2 :string(255) +# options3 :string(255) +# options4 :string(255) +# options5 :string(255) +# options6 :string(255) +# options7 :string(255) +# options8 :string(255) +# social :boolean default(FALSE) +# slug :string(255) +# status :string(255) +# url :string(255) +# video_id :string(255) +# video_type :string(255) +# clearing :boolean default(FALSE), not null +# ranking :integer +# + class Channel < ActiveRecord::Base include KeyUtilities - + belongs_to :user - has_many :feeds - has_many :api_keys + has_many :feeds + has_many :daily_feeds + has_many :api_keys, :dependent => :destroy + has_many :taggings + has_many :tags, :through => :taggings + has_many :comments, :dependent => :destroy + has_many :windows, :dependent => :destroy, :autosave => true + + self.include_root_in_json = true attr_readonly :created_at - attr_protected :user_id, :last_entry_id - after_create :set_initial_default_name - before_validation :set_default_name - after_destroy :delete_feeds - - validates :name, :presence => true, :on => :update + after_commit :set_default_name + after_commit :set_ranking, :unless => "ranking == calc_ranking" + + before_destroy :delete_feeds + + validates :video_type, :presence => true, :if => lambda{ |channel| !channel.video_id.nil? && !channel.video_id.empty?} + + scope :public_viewable, lambda { where("public_flag = true AND social != true") } + scope :is_public, lambda { where("public_flag = true") } + scope :active, lambda { where("channels.last_entry_id > 1 and channels.updated_at > ?", DateTime.now.utc - 7.day) } + scope :being_cleared, lambda { where("clearing = true") } + scope :by_array, lambda {|ids| { :conditions => ["id in (?)", ids.uniq] } } + scope :with_tag, lambda {|name| joins(:tags).where("tags.name = ?", name) } + + # pagination variables + cattr_reader :per_page + @@per_page = 15 + + # select options + def select_options + only = [:name, :created_at, :updated_at, :id, :last_entry_id] + only += [:description] unless self.description.blank? + only += [:latitude] unless self.latitude.blank? + only += [:longitude] unless self.longitude.blank? + only += [:elevation] unless self.elevation.blank? + only += [:field1] unless self.field1.blank? + only += [:field2] unless self.field2.blank? + only += [:field3] unless self.field3.blank? + only += [:field4] unless self.field4.blank? + only += [:field5] unless self.field5.blank? + only += [:field6] unless self.field6.blank? + only += [:field7] unless self.field7.blank? + only += [:field8] unless self.field8.blank? + + # return a hash + return { :only => only } + end + + # adds a feed to the channel + def add_status_feed(status) + # update the entry_id for the channel + entry_id = self.next_entry_id + self.last_entry_id = entry_id + self.save + # create the new feed with the correct status and entry_id + self.feeds.create(:status => status, :entry_id => entry_id) + end + + # get next last_entry_id for a channel + def next_entry_id + self.last_entry_id.nil? ? 1 : self.last_entry_id + 1 + end + + # for internal admin use, shows the ids of a channel per month (useful as a proxy for growth) + def show_growth + output = [] + date = self.feeds.order("entry_id asc").first.created_at + + # while the date is in the past + while (date < Time.now) + # get a feed on that day + feed = self.feeds.where("created_at > ?", date).where("created_at < ?", date + 1.day).first + # output the date and feed id + output << "#{date.strftime('%Y-%m-%d')},#{feed.id}" if feed.present? + # set the date 1 month further + date = date + 1.month + end + + # show the output + puts output.join("\n") + end + + # paginated hash for json and xml output + # channels input must be paginated + def self.paginated_hash(channels) + { + pagination: + { + current_page: channels.current_page, + per_page: channels.per_page, + total_entries: channels.total_entries, + }, + channels: channels.as_json(Channel.public_options) + } + end + + # for to_json or to_xml, return only the public attributes + def self.public_options + { + :root => false, + :only => [:id, :name, :description, :latitude, :longitude, :last_entry_id, :elevation, :created_at, :ranking], + :methods => :username, + :include => { :tags => {:only => [:id, :name]}} + } + end + + # login name of the user who created the channel + def username; self.user.try(:login); end + + # custom as_json method to allow: root => false + def as_json(options = nil) + root = include_root_in_json + root = options[:root] if options.try(:key?, :root) + if root + root = self.class.model_name.element if root == true + { root => serializable_hash(options) } + else + serializable_hash(options) + end + end + + def private_windows *hidden + if hidden.size >= 1 + return windows.where("private_flag = true and show_flag = #{hidden[0].to_s}") + else + return windows.where("private_flag = true" ) + end + end + + # overloaded version witthout private/public flag for the has_many dependent destroy action + def public_windows hidden + return windows.where("private_flag = false and show_flag = #{hidden}") + end + # measure of activity in terms of feeds per time period + + def public? + return public_flag + end + + def video_changed? + video_id_changed? || video_type_changed? + end + + def location_changed? + latitude_changed? || longitude_changed? + end + + def feeds_changed? + field1_changed? || + field2_changed? || + field3_changed? || + field4_changed? || + field5_changed? || + field6_changed? || + field7_changed? || + field8_changed? + end + + def update_chart_portlets + self.fields.each do |field| + update_chart_portlet field, true + update_chart_portlet field, false + end + #remove portlets for fields that don't exist + #iterate all chart windows... and look for a matching field + chartWindows = windows.where(:wtype => :chart ) + chartWindows.each do |window| + if self.send(window.name).blank? + window.destroy + end + + end + + end + + def update_status_portlet isPrivate + + window = windows.where(:wtype => :status, :private_flag => isPrivate ) + + status_html = "" + + if window.nil? || window[0].nil? + + window = PortletWindow.new + window.wtype = :status + window.position = 1 + window.col = 1 + window.title = "window_status" + else + + window = window[0] + end + + window.private_flag = isPrivate + window.html = status_html + window.window_detail = PortletWindowDetail.new if window.window_detail.nil? + self.windows.push window + + end + + def video_fields_valid? + !video_id.nil? && !video_id.empty? && !video_type.nil? && !video_type.empty? + end + + def update_video_portlet isPrivate + window = windows.where(:wtype => :video, :private_flag => isPrivate ) + if video_fields_valid? + youtube_html = "" + vimeo_html = "" + if window.nil? || window[0].nil? + window = PortletWindow.new + window.wtype = :video + window.position = 1 + window.col = 1 + window.title = "window_channel_video" + else + window = window[0] + end + window.private_flag = isPrivate + window.html = youtube_html if video_type == 'youtube' + window.html = vimeo_html if video_type == 'vimeo' + window.window_detail = PortletWindowDetail.new if window.window_detail.nil? + self.windows.push window + else + unless window[0].nil? + window[0].delete + end + end + end + + def update_location_portlet isPrivate + window = windows.where(:wtype => :location, :private_flag => isPrivate ) + if !latitude.nil? && !longitude.nil? + maps_html = "" + if window.nil? || window[0].nil? + window = PortletWindow.new + window.wtype = :location + window.position = 0 + window.col = 1 + window.title = "window_map" + else + window = window[0] + end + window.private_flag = isPrivate + window.html = maps_html + window.window_detail = PortletWindowDetail.new if window.window_detail.nil? + + self.windows.push window + + else + unless window[0].nil? + + window[0].delete + end + end + end + + # get recent status messages from channel + def recent_statuses + self.feeds.select('status, created_at, entry_id').order('created_at DESC').limit(30).collect {|f| f unless f.status.blank? }.compact + end + + def latest_feed + self.feeds.where(:entry_id => self.last_entry_id).first + end + + def delete_feeds + if self.feeds.count < 1000 + Feed.delete_all(["channel_id = ?", self.id]) + DailyFeed.delete_all(["channel_id = ?", self.id]) + begin + self.update_attribute(:last_entry_id, nil) + rescue Exception => e + end + + else + self.update_attribute(:clearing, true) + Resque.enqueue(ClearChannelJob, self.id) + end + end + + # true if channel is active + def active? + return (last_entry_id and updated_at and last_entry_id > 1 and updated_at > DateTime.now.utc - 1.days) + end + + def list_tags + (self.tags.collect { |t| t.name }).join(', ') + end + + def save_tags(tags) + # for each tag + tags.split(',').each do |name| + tag = Tag.find_by_name(name.strip) + # save if new tag + if tag.nil? + tag = Tag.new + tag.name = name.strip + tag.save + end + + tagging = Tagging.find(:first, :conditions => { :tag_id => tag.id, :channel_id => self.id}) + # save if new tagging + if tagging.nil? + tagging = Tagging.new + tagging.channel_id = self.id + tagging.tag_id = tag.id + tagging.save + end + end + + # delete any tags that were removed + self.remove_tags(tags) + end + + # if tags don't exist anymore, remove them + def remove_tags(tags) + tag_array = tags.split(',') + # remove white space + tag_array = tag_array.collect {|t| t.strip } + + # get all taggings for this channel + taggings = Tagging.find(:all, :conditions => { :channel_id => self.id }, :include => :tag) + + # check for existence + taggings.each do |tagging| + # if tagging is not in list + if !tag_array.include?(tagging.tag.name) + # delete tagging + tagging.delete + end + end + end def add_write_api_key write_key = self.api_keys.new @@ -22,61 +396,102 @@ class Channel < ActiveRecord::Base write_key.save end + def queue_react + self.reacts.on_insertion.each do |react| + begin + Resque.enqueue(ReactJob, react.id) + rescue Exception => e + + end + end + end + def field_label(field_number) self.attributes["field#{field_number}"] end - - def delete_feeds - Feed.delete_all(["channel_id = ?", self.id]) + + def fields + fields = attribute_names.reject { |x| + !(x.index('field') && self[x] && !self[x].empty?) + } end -private + def calc_ranking + result = 0 + result = result + 15 unless name.blank? + result = result + 20 unless description.blank? + result = result + 15 unless latitude.blank? || longitude.blank? + result = result + 15 unless url.blank? + result = result + 15 unless video_id.blank? || video_type.blank? - def set_default_name - self.name = "#{I18n.t(:channel_default_name)} #{self.id}" if self.name.blank? + result = result + 20 unless tags.empty? + result end - def set_initial_default_name - update_attribute(:name, "#{I18n.t(:channel_default_name)} #{self.id}") + def set_windows + #check for video window + if video_changed? + update_video_portlet true + update_video_portlet false + end + + #does channel have a location and corresponding google map + if location_changed? + update_location_portlet true + update_location_portlet false + end + + #does channel have status and corresponding status window. Add the status window no matter what. Only display if it has values + update_status_portlet true + update_status_portlet false + + #does channel have a window for every chart element + if feeds_changed? + update_chart_portlets + end end + private + + def set_ranking + update_attribute(:ranking, calc_ranking) unless ranking == calc_ranking + + end + def update_chart_portlet (field, isPrivate) + + chartWindows = windows.where(:type => "ChartWindow", :name => "field#{field.last.to_s}", :private_flag => isPrivate ) + if chartWindows.nil? || chartWindows[0].nil? + window = ChartWindow.new + window.wtype = :chart + window.position = 0 + window.col = 0 + window.title = "window_field_chart" + window.name = field.to_s + window.window_detail = ChartWindowDetail.new + window.window_detail.options = "&results=60&dynamic=true" + else + window = chartWindows[0] + # If there are options, use them.. if options are not available, then assign defaults + window.window_detail.options ||= "&results=60&dynamic=true" + end + + window.window_detail.field_number = field.last + window.private_flag = isPrivate + windows.push window + window.html ="" + + if !window.save + raise "The Window could not be saved" + end + end + + def set_default_name + update_attribute(:name, "#{I18n.t(:channel_default_name)} #{self.id}") if self.name.blank? + end + + + + + end - - - - - -# == Schema Information -# -# Table name: channels -# -# id :integer(4) not null, primary key -# user_id :integer(4) -# name :string(255) -# description :string(255) -# latitude :decimal(15, 10) -# longitude :decimal(15, 10) -# field1 :text -# field2 :text -# field3 :text -# field4 :text -# field5 :text -# field6 :text -# field7 :text -# field8 :text -# scale1 :integer(4) -# scale2 :integer(4) -# scale3 :integer(4) -# scale4 :integer(4) -# scale5 :integer(4) -# scale6 :integer(4) -# scale7 :integer(4) -# scale8 :integer(4) -# created_at :datetime -# updated_at :datetime -# elevation :string(255) -# last_entry_id :integer(4) -# public_flag :boolean(1) default(FALSE) -# - diff --git a/app/models/chart.rb b/app/models/chart.rb new file mode 100644 index 0000000..da92ee1 --- /dev/null +++ b/app/models/chart.rb @@ -0,0 +1,8 @@ +class Chart + def self.default_width + 450 + end + def self.default_height + 250 + end +end diff --git a/app/models/chart_window.rb b/app/models/chart_window.rb new file mode 100644 index 0000000..a271e49 --- /dev/null +++ b/app/models/chart_window.rb @@ -0,0 +1,22 @@ +# == Schema Information +# +# Table name: windows +# +# id :integer not null, primary key +# channel_id :integer +# position :integer +# created_at :datetime +# updated_at :datetime +# html :text +# col :integer +# title :string(255) +# wtype :string(255) +# name :string(255) +# type :string(255) +# private_flag :boolean default(FALSE) +# show_flag :boolean default(TRUE) +# + +class ChartWindow < Window + relate_to_details +end diff --git a/app/models/chart_window_detail.rb b/app/models/chart_window_detail.rb new file mode 100644 index 0000000..d66cb8a --- /dev/null +++ b/app/models/chart_window_detail.rb @@ -0,0 +1,14 @@ +# == Schema Information +# +# Table name: chart_window_details +# +# id :integer not null, primary key +# chart_window_id :integer +# field_number :integer +# created_at :datetime +# updated_at :datetime +# options :string(255) +# + +class ChartWindowDetail < ActiveRecord::Base +end diff --git a/app/models/comment.rb b/app/models/comment.rb new file mode 100644 index 0000000..3d20858 --- /dev/null +++ b/app/models/comment.rb @@ -0,0 +1,32 @@ +# == Schema Information +# +# Table name: comments +# +# id :integer not null, primary key +# parent_id :integer +# body :text +# flags :integer +# user_id :integer +# ip_address :string(255) +# created_at :datetime +# updated_at :datetime +# channel_id :integer +# + +class Comment < ActiveRecord::Base + belongs_to :channel + belongs_to :user + acts_as_tree :order => 'created_at' + + validates :body, :presence => true + validates_associated :user + + before_create :set_defaults + + private + + def set_defaults + self.flags = 0 + end +end + diff --git a/app/models/daily_feed.rb b/app/models/daily_feed.rb new file mode 100644 index 0000000..47a68bd --- /dev/null +++ b/app/models/daily_feed.rb @@ -0,0 +1,47 @@ +# == Schema Information +# +# Table name: daily_feeds +# +# id :integer not null, primary key +# channel_id :integer +# date :date +# calculation :string(20) +# result :string(255) +# field :integer +# + +class DailyFeed < ActiveRecord::Base + belongs_to :channel + + self.include_root_in_json = false + + # update a feed if it exists, or else create it + def self.my_create_or_update(attributes) + # try to get daily feed + daily_feed = DailyFeed.where(attributes).first + # if there is an existing daily feed + if daily_feed.present? + # update it + daily_feed.update_attributes(attributes) + # else create it + else + daily_feed = DailyFeed.create(attributes) + end + end + + # gets the calculation type + def self.calculation_type(params) + output = nil + output = 'timescale' if params[:timescale].present? + output = 'sum' if params[:sum].present? + output = 'average' if params[:average].present? + output = 'median' if params[:median].present? + return output + end + + # checks to see if this is a daily feed + def self.valid_params(params) + (params[:timescale] == '1440' || params[:sum] == '1440' || params[:average] == '1440' || params[:median] == '1440') ? true : false + end + +end diff --git a/app/models/error_response.rb b/app/models/error_response.rb new file mode 100644 index 0000000..8cea7f8 --- /dev/null +++ b/app/models/error_response.rb @@ -0,0 +1,41 @@ +class ErrorResponse + + def initialize(error_code) + error_object = I18n.t(:error_codes)[error_code] + @error_code = error_code.to_s + @http_status = error_object[:http_status] + @message = error_object[:message] + @details = error_object[:details] + end + + # attributes that can be read + attr_reader :error_code, :http_status, :message, :details + + # custom json format + def as_json(options = nil) + { + :status => "#{http_status}", + :error => { + :error_code => error_code, + :message => message, + :details => details + } + } + end + + # custom xml format + def to_xml + output = "\n" + output += "\n" + output += " #{http_status}\n" + output += " \n" + output += " #{error_code}\n" + output += " #{message}\n" + output += "
    #{details}
    \n" + output += "
    \n" + output += "
    " + return output + end + +end + diff --git a/app/models/failedlogin.rb b/app/models/failedlogin.rb new file mode 100644 index 0000000..6116397 --- /dev/null +++ b/app/models/failedlogin.rb @@ -0,0 +1,14 @@ +# == Schema Information +# +# Table name: failedlogins +# +# id :integer not null, primary key +# login :string(255) +# password :string(255) +# ip_address :string(255) +# created_at :datetime +# updated_at :datetime +# + +class Failedlogin < ActiveRecord::Base +end diff --git a/app/models/feed.rb b/app/models/feed.rb index dca681c..f7a4563 100644 --- a/app/models/feed.rb +++ b/app/models/feed.rb @@ -1,33 +1,137 @@ -class Feed < ActiveRecord::Base - belongs_to :channel - - self.include_root_in_json = false - - attr_readonly :created_at - attr_protected :channel_id -end - - - - - # == Schema Information # # Table name: feeds # -# id :integer(4) not null, primary key -# channel_id :integer(4) -# raw_data :text -# field1 :text -# field2 :text -# field3 :text -# field4 :text -# field5 :text -# field6 :text -# field7 :text -# field8 :text +# id :integer not null, primary key +# channel_id :integer +# field1 :string(255) +# field2 :string(255) +# field3 :string(255) +# field4 :string(255) +# field5 :string(255) +# field6 :string(255) +# field7 :string(255) +# field8 :string(255) # created_at :datetime # updated_at :datetime -# entry_id :integer(4) +# entry_id :integer +# status :string(255) +# latitude :decimal(15, 10) +# longitude :decimal(15, 10) +# elevation :string(255) +# location :string(255) # +class Feed < ActiveRecord::Base + extend FeedHelper + belongs_to :channel + + after_commit :queue_react + delegate :queue_react, :to => :channel + + self.include_root_in_json = false + + attr_readonly :created_at + + # only output these fields for feed + def self.select_options(channel, params) + only = [:created_at] + only += [:entry_id] unless timeparam_valid?(params[:timescale]) or timeparam_valid?(params[:average]) or timeparam_valid?(params[:median]) or timeparam_valid?(params[:sum]) + only += [:field1] unless channel.field1.blank? or (params[:field_id] and !params[:field_id].index('1')) + only += [:field2] unless channel.field2.blank? or (params[:field_id] and !params[:field_id].index('2')) + only += [:field3] unless channel.field3.blank? or (params[:field_id] and !params[:field_id].index('3')) + only += [:field4] unless channel.field4.blank? or (params[:field_id] and !params[:field_id].index('4')) + only += [:field5] unless channel.field5.blank? or (params[:field_id] and !params[:field_id].index('5')) + only += [:field6] unless channel.field6.blank? or (params[:field_id] and !params[:field_id].index('6')) + only += [:field7] unless channel.field7.blank? or (params[:field_id] and !params[:field_id].index('7')) + only += [:field8] unless channel.field8.blank? or (params[:field_id] and !params[:field_id].index('8')) + + # add geolocation data if necessary + if params[:location] and params[:location].upcase == 'TRUE' + only += [:latitude] + only += [:longitude] + only += [:elevation] + only += [:location] + end + + # add status if necessary + only += [:status] if params[:status] and params[:status].upcase == 'TRUE' + return only + end + + # outputs feed info correctly, used by daily_feeds + def self.normalize_feeds(daily_feeds) + output = [] + hash = {} + + # for each daily feed + daily_feeds.each do |daily_feed| + # check if the feed already exists + existing_feed = hash[daily_feed['date']] + + # skip blank feeds + next if daily_feed['date'].blank? + + # if the feed exists + if existing_feed.present? + # add the new field + existing_feed["field#{daily_feed['field']}"] = daily_feed['result'] + # else add a new feed + else + new_feed = Feed.new(:created_at => daily_feed['date']) + # set the field attribute correctly + new_feed["field#{daily_feed['field']}"] = daily_feed['result'] + # add the feed + hash[daily_feed['date']] = new_feed + end + + end + + # turn the hash into an array + output = hash.values + + # sort by date + return output + end + + # custom json output + def as_json(options = {}) + super(options.merge(:except => [:updated_at, :id])) + end + + # check if a field value is a number + # usage: Feed.numeric?(field_value) + def self.numeric?(object) + true if Float(object) rescue false + end + + def field(number) + self.attributes["field#{number.to_i}"] + end + + # make sure any selected fields are greater than a minimum + def greater_than?(minimum) + output = true + self.attributes.each do |attribute| + # if this attribute is a numeric field with a value + if attribute[0].to_s.index('field') == 0 && attribute[1].present? && Feed.numeric?(attribute[1]) + output = false if attribute[1].to_f < minimum.to_f + end + end + return output + end + + # make sure any selected fields are less than a minimum + def less_than?(maximum) + output = true + self.attributes.each do |attribute| + # if this attribute is a numeric field with a value + if attribute[0].to_s.index('field') == 0 && attribute[1].present? && Feed.numeric?(attribute[1]) + output = false if attribute[1].to_f > maximum.to_f + end + end + return output + end + +end + diff --git a/app/models/feed_factory.rb b/app/models/feed_factory.rb new file mode 100644 index 0000000..e9bb221 --- /dev/null +++ b/app/models/feed_factory.rb @@ -0,0 +1,197 @@ +class FeedFactory < ApplicationController + include FeedHelper + + def initialize(options = {}) + @options = options # alias for params + @feeds = nil + @daily_feeds = nil + @output_feeds = nil + @rounded = false + @channel = Channel.find(options[:channel_id]) + @date_range = get_date_range(options) + @daily_date_range = @date_range.first.to_date..@date_range.last.to_date + @limit = calculate_limit + @use_daily_feed = DailyFeed.valid_params(options) # determine whether daily feed should be used + @calculation_type = DailyFeed.calculation_type(options) # set the calculation type + @feed_select_options = Feed.select_options(@channel, @options) + @cache_feeds = cache_feeds? + end + + # attributes that can be read + attr_reader :feeds, :daily_feeds, :limit, :use_daily_feed, :feed_select_options, :cache_feeds + + # calculate the limit that should be used + def calculate_limit + limit = 100 + limit = 8000 if @options[:results].present? || @options[:days].present? || @options[:start].present? || @options[:end].present? + limit = @options[:results].to_i if (@options[:results].present? && @options[:results].to_i < 8000) + return limit + end + + # determine if data should be cached + def cache_feeds? + cache = false + cache = true if (@channel.last_entry_id.present? && @channel.last_entry_id > 100 && @limit > 100) + cache = true if @options[:days].present? + return cache + end + + # if daily feeds exist, use that first, or else use regular feeds + def get_output_feeds + # get daily feeds + get_daily_feeds if @use_daily_feed == true + + # get feeds normally if no daily feeds + get_feeds if @daily_feeds.blank? + + # set minimum and maximum parameters, and round output feeds + format_output_feeds + + return @output_feeds + end + + # get feed for a date + def get_feed_data_for_date(date) + # get feeds for this date + feeds = Feed.where(:channel_id => @channel.id, :created_at => date..(date + 1.day)) + .select(@feed_select_options).order('created_at asc').load + + # calculate the feed + feed = calculate_feeds(feeds).first + + # add blank feed for this date if necessary + feed = Feed.new(:created_at => date) if feed.nil? + + return feed + end + + # add a daily feed for a specific date + def add_daily_feed_for_date(date) + # get the feed data + feed = get_feed_data_for_date(date) + + # for each attribute + @feed_select_options.each do |attr| + key = attr.to_s + # if this attribute is a field + if key.index('field') == 0 + # get the field number + field_number = key.sub('field', '').to_i + # add the feed; replace with Rails 4 create_or_update if appropriate + DailyFeed.my_create_or_update({:channel_id => @channel.id, :date => feed.created_at, :calculation => @calculation_type, :field => field_number, :result => feed[key]}) + end + end + + # add to existing daily feeds + @daily_feeds << feed + end + + # get feeds + def get_feeds + # get feed based on conditions + @feeds = Feed.where(:channel_id => @channel.id, :created_at => @date_range) + .select(@feed_select_options) + .order('created_at desc') + .limit(@limit) + .load + + # sort properly + @feeds.reverse! + + # calculate feeds + @feeds = calculate_feeds(@feeds) + end + + # gets daily feeds + def get_daily_feeds + sql_date_range = (@daily_date_range.first + 1.day)..(@daily_date_range.last + 1.day) + # if this is for a specific field + if @options[:field_id].present? + @daily_feeds = DailyFeed.where(:channel_id => @channel.id, :calculation => @calculation_type, :date => sql_date_range, :field => @options[:field_id]).order('date desc').load + # else get daily feeds for all fields + else + @daily_feeds = DailyFeed.where(:channel_id => @channel.id, :calculation => @calculation_type, :date => sql_date_range).order('date desc').load + end + + # normalize if there are daily feeds + @daily_feeds = Feed.normalize_feeds(@daily_feeds) if @daily_feeds.present? + + # get dates that are missing from daily feed + add_missing_daily_feeds + + # add todays data + add_daily_feed_for_today + + # sort correctly + @daily_feeds.sort!{ |x, y| x.created_at <=> y.created_at } + end + + # add feed data for today + def add_daily_feed_for_today + @daily_feeds << get_feed_data_for_date(Time.now.to_date) if @options[:days].present? + end + + # get dates that are missing from daily feed + def add_missing_daily_feeds + missing_dates = [] + current_date = @daily_date_range.first + 1.day + # if current date is older than channel date, set it to channel date + current_date = @channel.created_at.to_date if @date_range.first < @channel.created_at + end_date = @daily_date_range.last + + # get dates that exist in daily feeds + daily_feed_dates = {} + @daily_feeds.each { |feed| daily_feed_dates[feed.created_at.to_date] = true } + + # iterate through each date + while current_date < end_date + # add missing dates + missing_dates << current_date if daily_feed_dates[current_date] != true + # go to the next day + current_date += 1.day + end + + # add daily feeds for any missing days + missing_dates.each { |date| add_daily_feed_for_date(date) } + end + + # apply rounding and min/max + def format_output_feeds + # set output feeds + @output_feeds = (@daily_feeds.present? ? @daily_feeds : @feeds) + + # only get feeds that match min and max values + @output_feeds = @output_feeds.select{ |x| x.greater_than?(@options[:min]) } if @options[:min].present? + @output_feeds = @output_feeds.select{ |x| x.less_than?(@options[:max]) } if @options[:max].present? + + # round feeds if necessary + @output_feeds = object_round(@output_feeds, @options[:round].to_i) if @options[:round] && !@rounded + end + + # calculate feeds + def calculate_feeds(feeds) + # if a feed has data + if feeds.present? + # convert to timescales if necessary + if timeparam_valid?(@options[:timescale]) + feeds = feeds_into_timescales(feeds, @options) + # convert to sums if necessary + elsif timeparam_valid?(@options[:sum]) + feeds = feeds_into_sums(feeds, @options) + @rounded = true + # convert to averages if necessary + elsif timeparam_valid?(@options[:average]) + feeds = feeds_into_averages(feeds, @options) + @rounded = true + # convert to medians if necessary + elsif timeparam_valid?(@options[:median]) + feeds = feeds_into_medians(feeds, @options) + @rounded = true + end + end + + return feeds + end + +end + diff --git a/app/models/header.rb b/app/models/header.rb new file mode 100644 index 0000000..3455f1f --- /dev/null +++ b/app/models/header.rb @@ -0,0 +1,16 @@ +# == Schema Information +# +# Table name: headers +# +# id :integer not null, primary key +# name :string(255) +# value :string(255) +# created_at :datetime +# updated_at :datetime +# thinghttp_id :integer +# + +class Header < ActiveRecord::Base + belongs_to :thinghttp +end + diff --git a/app/models/mailer.rb b/app/models/mailer.rb index 9bd88d9..9bb2b98 100644 --- a/app/models/mailer.rb +++ b/app/models/mailer.rb @@ -1,11 +1,11 @@ class Mailer < ActionMailer::Base - #default :from => 'support@thingspeak.com' + default :from => 'support@thingspeak.com' def password_reset(user, webpage) - @user = user - @webpage = webpage - mail(:to => @user.email, - :subject => t(:password_reset_subject)) - end + @user = user + @webpage = webpage + mail(:to => @user.email, + :subject => t(:password_reset_subject)) + end end diff --git a/app/models/pipe.rb b/app/models/pipe.rb new file mode 100644 index 0000000..ce91adf --- /dev/null +++ b/app/models/pipe.rb @@ -0,0 +1,22 @@ +# == Schema Information +# +# Table name: pipes +# +# id :integer not null, primary key +# name :string(255) not null +# url :string(255) not null +# slug :string(255) not null +# created_at :datetime +# updated_at :datetime +# parse :string(255) +# cache :integer +# + +class Pipe < ActiveRecord::Base + + # pagination variables + cattr_reader :per_page + @@per_page = 50 + +end + diff --git a/app/models/plugin.rb b/app/models/plugin.rb new file mode 100644 index 0000000..a91ab99 --- /dev/null +++ b/app/models/plugin.rb @@ -0,0 +1,134 @@ +# == Schema Information +# +# Table name: plugins +# +# id :integer not null, primary key +# name :string(255) +# user_id :integer +# html :text +# css :text +# js :text +# created_at :datetime +# updated_at :datetime +# private_flag :boolean default(TRUE) +# + +class Plugin < ActiveRecord::Base + belongs_to :user + has_many :plugin_window_details + has_many :windows, :through => :plugin_window_details, :source => :plugin_window + before_destroy { |record| record.windows.each { |window| window.delete } } + + def destroy_window + window_id = PluginWindowDetail.find_by_plugin_id(self.id).plugin_window_id + Window.delete(window_id) + end + + def private? + private_flag + end + + def public? + !private_flag + end + + def has_private_windows(channel_id) + has_private_windows = false + windows.each do |window| + + if window.private? && window.channel_id == channel_id + has_private_windows = true + + end + + end + + return has_private_windows + end + + def has_public_windows(channel_id) + has_public_windows = false + windows.each do |window| + has_public_windows = true if !window.private? && window.channel_id == channel_id + end + return has_public_windows + end + + #private_dashboard_visibility + def private_dashboard_windows(channel_id) + dashboard_windows channel_id, true + end + + def public_dashboard_windows(channel_id) + dashboard_windows channel_id, false + end + def dashboard_windows(channel_id, privacy) + dashboard_windows = [] + windows.each do |window| + if window.private_flag == privacy && !window.show_flag && channel_id == window.channel_id + dashboard_windows << window + end + end + dashboard_windows + end + + #public_dashboard_visibility + def public_window + public_window = nil + windows.each do |window| + if !window.private_flag # && !window.show_flag + public_window = window + end + end + unless public_window.nil? + public_window + else + nil + end + end + + def make_windows(channel_id, api_domain) + pluginWindows = [] + #create all the windows as appropriate + #Private plugins have one window.. + #Public plugins have a private/private windows, private/public window and a public window + if !has_public_windows(channel_id) && self.public? + windows << PluginWindow.new_from(self, channel_id, :public, api_domain) + else + update_windows(channel_id) + end + + if !has_private_windows(channel_id) + windows << Window.new_from(self, channel_id, :private, api_domain) + end + save + end + + def update_windows(channel_id) + + windows.each do |window| + window.name = self.name + window.save + end + + if has_public_windows(channel_id) && self.private? + windows.delete(public_window.destroy) unless public_window.nil? + end + + end + + def update_all_windows + channel_ids = Set.new + windows.each do |window| + window.name = self.name + channel_ids.add( window.channel_id) + window.save + end + channel_ids.each do |id| + if has_public_windows(id) && self.private? + windows.delete(public_window.destroy) unless public_window.nil? + end + end + end + +end diff --git a/app/models/plugin_window.rb b/app/models/plugin_window.rb new file mode 100644 index 0000000..f0308ec --- /dev/null +++ b/app/models/plugin_window.rb @@ -0,0 +1,23 @@ +# == Schema Information +# +# Table name: windows +# +# id :integer not null, primary key +# channel_id :integer +# position :integer +# created_at :datetime +# updated_at :datetime +# html :text +# col :integer +# title :string(255) +# wtype :string(255) +# name :string(255) +# type :string(255) +# private_flag :boolean default(FALSE) +# show_flag :boolean default(TRUE) +# + +class PluginWindow < Window + relate_to_details +end + diff --git a/app/models/plugin_window_detail.rb b/app/models/plugin_window_detail.rb new file mode 100644 index 0000000..f8d3d53 --- /dev/null +++ b/app/models/plugin_window_detail.rb @@ -0,0 +1,16 @@ +# == Schema Information +# +# Table name: plugin_window_details +# +# id :integer not null, primary key +# plugin_id :integer +# plugin_window_id :integer +# created_at :datetime +# updated_at :datetime +# + +class PluginWindowDetail < ActiveRecord::Base + belongs_to :plugin_window + belongs_to :plugin + +end diff --git a/app/models/portlet_window.rb b/app/models/portlet_window.rb new file mode 100644 index 0000000..d37ceda --- /dev/null +++ b/app/models/portlet_window.rb @@ -0,0 +1,22 @@ +# == Schema Information +# +# Table name: windows +# +# id :integer not null, primary key +# channel_id :integer +# position :integer +# created_at :datetime +# updated_at :datetime +# html :text +# col :integer +# title :string(255) +# wtype :string(255) +# name :string(255) +# type :string(255) +# private_flag :boolean default(FALSE) +# show_flag :boolean default(TRUE) +# + +class PortletWindow < Window + relate_to_details +end diff --git a/app/models/portlet_window_detail.rb b/app/models/portlet_window_detail.rb new file mode 100644 index 0000000..bed16ae --- /dev/null +++ b/app/models/portlet_window_detail.rb @@ -0,0 +1,12 @@ +# == Schema Information +# +# Table name: portlet_window_details +# +# id :integer not null, primary key +# portlet_window_id :integer +# created_at :datetime +# updated_at :datetime +# + +class PortletWindowDetail < ActiveRecord::Base +end diff --git a/app/models/tag.rb b/app/models/tag.rb new file mode 100644 index 0000000..357d167 --- /dev/null +++ b/app/models/tag.rb @@ -0,0 +1,19 @@ +# == Schema Information +# +# Table name: tags +# +# id :integer not null, primary key +# name :string(255) +# created_at :datetime +# updated_at :datetime +# + +class Tag < ActiveRecord::Base + has_many :taggings + has_many :channels, :through => :taggings + + validates_presence_of :name + + self.include_root_in_json = false + +end diff --git a/app/models/tagging.rb b/app/models/tagging.rb new file mode 100644 index 0000000..bcf8574 --- /dev/null +++ b/app/models/tagging.rb @@ -0,0 +1,15 @@ +# == Schema Information +# +# Table name: taggings +# +# id :integer not null, primary key +# tag_id :integer +# channel_id :integer +# created_at :datetime +# updated_at :datetime +# + +class Tagging < ActiveRecord::Base + belongs_to :tag + belongs_to :channel +end diff --git a/app/models/twitter_account.rb b/app/models/twitter_account.rb new file mode 100644 index 0000000..bbc14c7 --- /dev/null +++ b/app/models/twitter_account.rb @@ -0,0 +1,57 @@ +# == Schema Information +# +# Table name: twitter_accounts +# +# id :integer not null, primary key +# screen_name :string(255) +# user_id :integer +# twitter_id :integer +# token :string(255) +# secret :string(255) +# created_at :datetime +# updated_at :datetime +# api_key :string(17) not null +# + +class TwitterAccount < ActiveRecord::Base + include KeyUtilities + + belongs_to :user + has_many :reacts, :as => :actionable, :dependent => :restrict_with_exception + + # pagination variables + cattr_reader :per_page + @@per_page = 50 + + before_create :set_api_key + + def renew_api_key + self.update_attribute(:api_key, generate_api_key(16, 'twitter')) + end + + def tweet(status, opts = {}) + opts.delete('api_key') + opts.delete('controller') + opts.delete('action') + + client = TwitterOAuth::Client.new( + :consumer_key => CONSUMER_KEY, + :consumer_secret => CONSUMER_SECRET, + :token => self.token, + :secret => self.secret + ) + + client.update(status, opts) + + rescue Twitter::Error::Unauthorized + + end + + private + + def set_api_key + self.api_key = generate_api_key(16, 'twitter') + end +end + + diff --git a/app/models/user.rb b/app/models/user.rb index 200807d..b184864 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,26 +1,14 @@ -class User < ActiveRecord::Base - has_many :channels - has_many :api_keys - - acts_as_authentic - - def self.find_by_login_or_email(login) - User.find_by_login(login) || User.find_by_email(login) - end -end - - # == Schema Information # # Table name: users # -# id :integer(4) not null, primary key -# login :string(255) not null -# email :string(255) not null -# crypted_password :string(255) not null -# password_salt :string(255) not null -# persistence_token :string(255) not null -# perishable_token :string(255) not null +# id :integer not null, primary key +# login :string(255) not null +# email :string(255) not null +# crypted_password :string(255) not null +# password_salt :string(255) not null +# persistence_token :string(255) not null +# perishable_token :string(255) not null # current_login_at :datetime # last_login_at :datetime # current_login_ip :string(255) @@ -28,5 +16,78 @@ end # created_at :datetime # updated_at :datetime # time_zone :string(255) +# public_flag :boolean default(FALSE) +# bio :text +# website :string(255) +# api_key :string(16) # +####### NOTE ####### +# user.api_keys is a collection of channel api_keys (read and write) +# user.api_key is a single api_key that allows control of a user's account +#################### +class User < ActiveRecord::Base + include KeyUtilities + has_many :channels + has_many :twitter_accounts, :dependent => :destroy + has_many :thinghttps, :dependent => :destroy + has_many :tweetcontrols, :dependent => :destroy + has_many :reacts, :dependent => :destroy + has_many :scheduled_thinghttps, :dependent => :destroy + has_many :talkbacks, :dependent => :destroy + has_many :plugins + has_many :devices + has_many :api_keys + has_many :watchings, :dependent => :destroy + has_many :watched_channels, :through => :watchings, :source => :channel + has_many :comments + + acts_as_authentic + + self.include_root_in_json = false + + # pagination variables + cattr_reader :per_page + @@per_page = 50 + + # find a user using login or email + def self.find_by_login_or_email(login) + User.find_by_login(login) || User.find_by_email(login) + end + + # get user signups per day + def self.signups_per_day + sql = 'select DATE_FORMAT(created_at,"%Y-%m-%d") as day, count(id) as signups from users group by day' + days = ActiveRecord::Base.connection.execute(sql) + return days + end + + # for to_json or to_xml, return only the public attributes + def self.public_options(user) + output = { :only => [:id, :login, :created_at] } + + # if the profile is public + if user.public_flag == true + additional_options = { :only => [:website, :bio] } + # merge in the additional options by adding the values + output.merge!(additional_options){ |key, oldval, newval| oldval + newval } + end + + return output + end + + # for to_json or to_xml, return the correct private attributes + def self.private_options + { :only => [:id, :login, :created_at, :email, :website, :bio] } + end + + # set new api key + def set_new_api_key! + new_api_key = generate_api_key(16, 'user') + self.update_column(:api_key, new_api_key) + return new_api_key + end + +end + + diff --git a/app/models/user_session.rb b/app/models/user_session.rb index 457f515..c85f03e 100644 --- a/app/models/user_session.rb +++ b/app/models/user_session.rb @@ -1,7 +1,7 @@ class UserSession < Authlogic::Session::Base - find_by_login_method :find_by_login_or_email + find_by_login_method :find_by_login_or_email def to_key new_record? ? nil : [ self.send(self.class.primary_key) ] end -end \ No newline at end of file +end diff --git a/app/models/watching.rb b/app/models/watching.rb new file mode 100644 index 0000000..074db06 --- /dev/null +++ b/app/models/watching.rb @@ -0,0 +1,22 @@ +# == Schema Information +# +# Table name: watchings +# +# id :integer not null, primary key +# user_id :integer +# channel_id :integer +# created_at :datetime +# updated_at :datetime +# + +class Watching < ActiveRecord::Base + belongs_to :user + belongs_to :channel + + # check if the channel is being watched by this user + def self.check(user_id, channel_id) + @watching = Watching.find_by_user_id_and_channel_id(user_id, channel_id) + return @watching.nil? ? false : true + end + +end diff --git a/app/models/window.rb b/app/models/window.rb new file mode 100644 index 0000000..c8fa105 --- /dev/null +++ b/app/models/window.rb @@ -0,0 +1,50 @@ +# == Schema Information +# +# Table name: windows +# +# id :integer not null, primary key +# channel_id :integer +# position :integer +# created_at :datetime +# updated_at :datetime +# html :text +# col :integer +# title :string(255) +# wtype :string(255) +# name :string(255) +# type :string(255) +# private_flag :boolean default(FALSE) +# show_flag :boolean default(TRUE) +# + +class Window < ActiveRecord::Base + belongs_to :channel + + self.include_root_in_json = true + + def self.relate_to_details + class_eval <<-EOF + has_one :window_detail, :class_name => "#{self.name}Detail" + accepts_nested_attributes_for :window_detail + default_scope { includes(:window_detail) } + EOF + end + def private? + return private_flag + end + + def self.new_from( plugin, channel_id, privacy_flag, api_domain ) + window = PluginWindow.new + window.wtype = :plugin + window.position = 0 + window.col = 0 + window.title = "window_plugin" + window.name = plugin.name + window.private_flag = (privacy_flag == :private) + window.channel = Channel.find(channel_id) + window.html ="" + window.show_flag = false + window if window.save + + end +end diff --git a/app/views/api_keys/_index.html.erb b/app/views/api_keys/_index.html.erb new file mode 100644 index 0000000..c08ef8a --- /dev/null +++ b/app/views/api_keys/_index.html.erb @@ -0,0 +1,52 @@ +
    +

    <%= t(:api_key_write) %>

    + <%= @write_key %> +

    + + <%= button_to t(:api_key_write_new), channel_api_keys_path(@channel, :write => 1), :data => { :confirm => t(:confirm_new_api_key) } %> + +

    + +

    <%= t(:api_key_read) %>

    + <% @read_keys.each do |read_key| %> + + + + + + + + + + + + + +
    <%= t(:api_key_key) %>:<%= read_key %>
    <%= t(:note) %>: + <%= form_for read_key, :as => :api_key, :url => channel_api_key_path(@channel, read_key), :html => {:method => 'put'} do |f| %> + <%= f.text_area :note, :cols => 30, :rows => 4 %> +
    +
    <%= f.submit t(:note_save) %>
    + <% end %> + <%= button_to t(:api_key_delete), channel_api_key_path(@channel, read_key), :method => 'delete', :data => { :confirm => t(:confirm_read_key_delete) } %>
    +

    + + <% end %> + + <%= button_to t(:api_key_read_new), channel_api_keys_path(@channel, :write => 0) %> +
    +
    +
    + diff --git a/app/views/api_keys/index.html.erb b/app/views/api_keys/index.html.erb index 142d6fc..e89012f 100644 --- a/app/views/api_keys/index.html.erb +++ b/app/views/api_keys/index.html.erb @@ -1,43 +1,4 @@ -

    - <%= link_to t(:channels), channels_path %> » - <%= link_to channel_path(@channel.id) do %> <%= t(:channel) %> <%= @channel.id %><% end %> » - <%= t(:api_keys) %> -

    - -

    <%= t(:api_key_write) %>

    -<%= @write_key %> +
    +<%= render :partial => "index" %> +
    -

    - -<%= button_to t(:api_key_write_new), channel_api_keys_path(@channel, :write => 1), :confirm => t(:confirm_new_api_key) %> - -

    - -

    <%= t(:api_key_read) %>

    -<% @read_keys.each do |read_key| %> - - - - - - - - - - - - - -
    <%= t(:api_key_key) %>:<%= read_key %>
    <%= t(:note) %>: - <%= form_for read_key, :as => :api_key, :url => channel_api_key_path(@channel, read_key), :html => {:method => 'put'} do |f| %> - <%= f.text_area :note, :cols => 30, :rows => 4 %> -
    -
    <%= f.submit t(:note_save) %>
    - <% end %> - <%= button_to t(:api_key_delete), channel_api_key_path(@channel, read_key) , :method => 'delete', :confirm => t(:confirm_read_key_delete) %>
    -

    - -<% end %> - -<%= button_to t(:api_key_read_new), channel_api_keys_path(@channel, :write => 0) %> -
    diff --git a/app/views/apps/index.html.erb b/app/views/apps/index.html.erb new file mode 100644 index 0000000..e7925ef --- /dev/null +++ b/app/views/apps/index.html.erb @@ -0,0 +1,118 @@ +
    +
    + + + +
    + +
    + <%= link_to thingtweets_path do %> + <%= image_tag 'thingtweet.png', :size => '104x104' %> +
    + <%= t(:thingtweet) %> + <% end %> +
    + +
    + <%= link_to thinghttp_index_path do %> + <%= image_tag 'thinghttp.png', :size => '104x104' %> +
    + <%= t(:thinghttp) %> + <% end %> +
    + +
    + <%= link_to tweetcontrol_index_path do %> + <%= image_tag 'tweetcontrol.png', :size => '104x104' %> +
    + <%= t(:tweetcontrol) %> + <% end %> +
    + +
    + <%= link_to reacts_path do %> + <%= image_tag 'react.png', :size => '104x104' %> +
    + <%= t(:react) %> + <% end %> +
    + +
    + <%= link_to talkbacks_path do %> + <%= image_tag 'talkback.png', :size => '104x104' %> +
    + <%= t(:talkback) %> + <% end %> +
    + + <% if is_admin? %> +
    + <%= link_to scheduled_thinghttps_path do %> + <%= image_tag 'scheduled_thinghttp.png', :size => '104x104' %> +
    + <%= t(:scheduled_thinghttp) %> + <% end %> +
    + <% end %> + +
    +
    + + +
    + + + diff --git a/app/views/channels/_addportlet.html.erb b/app/views/channels/_addportlet.html.erb new file mode 100644 index 0000000..0aab268 --- /dev/null +++ b/app/views/channels/_addportlet.html.erb @@ -0,0 +1,2 @@ +
    + diff --git a/app/views/channels/_channelinfo.html.erb b/app/views/channels/_channelinfo.html.erb new file mode 100644 index 0000000..e6744ce --- /dev/null +++ b/app/views/channels/_channelinfo.html.erb @@ -0,0 +1,24 @@ +
    +

    <%= @channel.name %>

    +
    <%= @channel.list_tags %>
    +
    +

    by <%= link_to @channel.user.login, user_profile_path(@channel.user.login) %>

    +

    <%= @channel.description %>

    +

    +
    + + diff --git a/app/views/channels/_devinfo.html.erb b/app/views/channels/_devinfo.html.erb new file mode 100644 index 0000000..44bb3b8 --- /dev/null +++ b/app/views/channels/_devinfo.html.erb @@ -0,0 +1,29 @@ +
    + + + + + + +
    <%= @channel.name %> <%= t(:channel_feed) %>: + <%= link_to 'JSON', "#{@api_domain}channels/#{@channel.id}/feed.json", :target => "_blank" %> + <%= link_to 'XML', "#{@api_domain}channels/#{@channel.id}/feed.xml", :target => "_blank" %> + <%= link_to 'CSV', "#{@api_domain}channels/#{@channel.id}/feed.csv", :target => "_blank" %> +
    + + <% @channel.attribute_names.each do |attr| %> + <% if attr.index('field') and @channel[attr] and !@channel[attr].empty? %> + + + + + <% end %> + <% end %> + +
    <%= t(:field) %> <%= attr[-1] %> <%= t(:data) %>: <%= @channel[attr] %> + <%= link_to 'JSON', "#{@api_domain}channels/#{@channel.id}/field/#{attr[-1]}.json", :target => "_blank" %> + <%= link_to 'XML', "#{@api_domain}channels/#{@channel.id}/field/#{attr[-1]}.xml", :target => "_blank" %> + <%= link_to 'CSV', "#{@api_domain}channels/#{@channel.id}/field/#{attr[-1]}.csv", :target => "_blank" %> +
    + +
    diff --git a/app/views/channels/_edit.html.erb b/app/views/channels/_edit.html.erb new file mode 100644 index 0000000..0d4a397 --- /dev/null +++ b/app/views/channels/_edit.html.erb @@ -0,0 +1,174 @@ +
    +<% flash.each do |name, msg| %> +
    +

    <%= msg %>

    +
    +
    +<% end %> + <%= form_for @channel, :html => {:method => 'put'} do |c| %> + <% unless session[:errors].nil? + session[:errors].each do |attr, msg| + @channel.errors.add(attr, msg) + end + session[:errors] = nil %> + <% end %> + +

    + <%= error_messages_for 'channel', :header_message => t(:try_again), :message => t(:channel_error) %> +

    + + + + + + + + + + + + + + + + + + + <%= fields_for :tags do |t| %> + + + + + <% end %> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    <%= t(:channel_ranking) %><%= @channel.ranking %>%
    <%= t(:channel_id) %><%= @channel.id %>
    <%= t(:channel_name) %><%= c.text_field :name %>
    <%= t(:channel_description) %><%= c.text_area :description, :cols => 30, :rows => 4 %>
    <%= t(:tags) %><%= t.text_area :name, :cols => 30, :rows => 2, :value => @channel.list_tags %>
    <%= t(:latitude) %><%= c.text_field :latitude %>
    <%= t(:longitude) %><%= c.text_field :longitude %>
    <%= t(:elevation) %><%= c.text_field :elevation %>
    <%= t(:public) %><%= c.check_box :public_flag %>
    <%= t(:channel_url) %><%= c.text_field :url %>
    <%= t(:video_id) %> + <%= c.text_field :video_id, :class=>'video_narrow'%> + <%= c.radio_button :video_type, 'youtube' %> + <%= t(:youtube) %> + <%= c.radio_button :video_type, 'vimeo' %> + <%= t(:vimeo) %> +
    <%= t(:field) %> 1<%= c.text_field :field1, :class => 'field' %>
    <%= t(:field) %> 2<%= c.text_field :field2, :class => 'field' %>
    <%= t(:field) %> 3<%= c.text_field :field3, :class => 'field' %>
    <%= t(:field) %> 4<%= c.text_field :field4, :class => 'field' %>
    <%= t(:field) %> 5<%= c.text_field :field5, :class => 'field' %>
    <%= t(:field) %> 6<%= c.text_field :field6, :class => 'field' %>
    <%= t(:field) %> 7<%= c.text_field :field7, :class => 'field' %>
    <%= t(:field) %> 8<%= c.text_field :field8, :class => 'field' %>
    <%= c.submit t(:channel_update) %>
    + <% end %> + +

    + +

    <%= t(:channel_clear_message) %>

    + <%= button_to t(:channel_clear), { :controller => 'channels', :action => 'clear', :id => @channel.id }, :data => { :confirm => t(:confirm_channel_clear) } %> + +

    + +

    <%= t(:channel_delete_message) %>

    + <%= button_to t(:channel_delete), channel_path(@channel.id), :method => 'delete', :data => { :confirm => t(:confirm_channel_delete) } %> +
    + + + diff --git a/app/views/channels/_import.html.erb b/app/views/channels/_import.html.erb new file mode 100644 index 0000000..4ee45e8 --- /dev/null +++ b/app/views/channels/_import.html.erb @@ -0,0 +1,48 @@ +
    + <%= t(:upload_select) %> +

    +<% flash.each do |name, msg| %> +
    +

    <%= msg %>

    +
    +
    +<% end %> + <%= form_for :upload, :url => upload_channel_path(@channel), :html => { :multipart => true } do |f| %> + <%= f.file_field :csv %> +

    + <%= t(:time_zone) %> + <%= time_zone_select 'feed', 'time_zone', nil, :default => 'UTC' %> +

    + <%= f.submit t(:upload), :disable_with => t(:uploading) %> + <% end %> + +
    + + diff --git a/app/views/channels/_list.html.erb b/app/views/channels/_list.html.erb new file mode 100644 index 0000000..e9d94da --- /dev/null +++ b/app/views/channels/_list.html.erb @@ -0,0 +1,23 @@ +
    + <% @channels.each do |channel| %> + + <% channel.ranking = channel.calc_ranking if channel.ranking.blank? %> +
    +
    +

    + <%= link_to channel.name, channel_path(channel.id), :id => "showsite_#{channel.id}" %> +

    +

    by <%= channel.user.login %>

    +

    <%= channel.description %>

    +
    +

    + <% channel.tags.each do |tag| %> + <%= tag.name %><% unless tag == channel.tags.last %>, <% end %> + <% end %> +

    +
    +
    + + <% end %> +
    + diff --git a/app/views/channels/_private_show.html.erb b/app/views/channels/_private_show.html.erb new file mode 100644 index 0000000..148b4f6 --- /dev/null +++ b/app/views/channels/_private_show.html.erb @@ -0,0 +1,31 @@ +<%= render :partial => 'channelinfo', :locals => { :zone => "private" } %> +
    + Channel Stats + + + +
    Created<%= @channel.created_at %>
    Updated<%= @channel.updated_at %>
    + <%= @channel.feeds.count %> Entries +
    +
    +
    +
    +
    + diff --git a/app/views/channels/_public_show.html.erb b/app/views/channels/_public_show.html.erb new file mode 100644 index 0000000..a54e24d --- /dev/null +++ b/app/views/channels/_public_show.html.erb @@ -0,0 +1,75 @@ +<% if @channel.public? %> + +<%= render :partial => 'channelinfo', :locals => { :zone => "public" } %> + +
    +
    +
    +
    + + + + +<% else %> +
    +

    <%= t(:channel_not_public) %>

    +
    +<% end %> + diff --git a/app/views/channels/_socialbuttons.html.erb b/app/views/channels/_socialbuttons.html.erb new file mode 100644 index 0000000..661f562 --- /dev/null +++ b/app/views/channels/_socialbuttons.html.erb @@ -0,0 +1,26 @@ + + + diff --git a/app/views/channels/index.html.erb b/app/views/channels/index.html.erb index 6ea0d2d..d0011ba 100644 --- a/app/views/channels/index.html.erb +++ b/app/views/channels/index.html.erb @@ -1,25 +1,79 @@ -

    <%= t(:channels) %>

    -<% if @channels.length > 0 %> - - - - - - - <% @channels.each do |d| %> - - - - +
    +
    + + + +
    + + <% if @channels.length > 0 %> + +
    <%= t(:channel_id) %><%= t(:channel_name) %>
    <%= link_to d.id, channel_path(d.id) %><%= link_to d.name, channel_path(d.id) %>
    + + <% @channels.each do |channel| %> + <% if !channel.social %> + + + + + + <% end %> + <% end %> + +
    +

    <%= link_to channel.name, channel_path(channel.id), :id => "showsite_#{channel.id}" %>

    +
    + <%= channel.public_flag ? image_tag('icons/Unlocked.png', :title=> t(:public_true)) : image_tag('icons/Locked.png', :title=> t(:channel_not_public)) %> +
    + + +

    <%= link_to t(:private_link), channel_path(channel.id, :anchor => 'privateview') %> | + <%= link_to t(:public_link), channel_path(channel.id, :anchor => 'publicview') %> | + <%= link_to t(:settings_link), channel_path(channel.id, :anchor => 'channelsettings') %> | + <%= link_to t(:api_key_link), channel_path(channel.id, :anchor => 'apikeys') %> | + <%= link_to t(:data_import_link), channel_path(channel.id, :anchor => 'dataimport') %>

    <%= channel.description %>

    + +
    + <% end %> - - - -

    - -<% end %> - -<%= form_for :channel do |d| %> - - <%= d.submit t(:channel_create) %> -<% end %> \ No newline at end of file + + <%= form_for :channel do |d| %> + + <%= d.submit t(:channel_create), :class => 'btn btn-primary' %> + <% end %> + + <% if is_admin? %> + +


    + + <% @channels.each do |c| %> + <% if c.social %> + <%= t(:social_channel) %>: <%= link_to c.name, (Rails.env == 'production') ? "http://www.socialsensornetwork.com/#{c.slug}" : "/s/#{c.slug}" %> +
    + <% end %> + <% end %> + +
    + + <%= link_to t(:social_channel_create), :controller => 'channels', :action => 'social_new' %> + <% end %> + +
    + + + + + + diff --git a/app/views/channels/private_show.html.erb b/app/views/channels/private_show.html.erb new file mode 100644 index 0000000..d5c7db8 --- /dev/null +++ b/app/views/channels/private_show.html.erb @@ -0,0 +1,133 @@ +<%= render :partial => "devinfo" %> +<%= render :partial => "addportlet" %> + +
    + + + +
    + +<%= render :partial => "socialbuttons" %> + +
    + + +
    + <%= render :partial => "private_show" %> +
    + +
    + <%= render :partial => "public_show" %> +
    + +
    + <%= render :partial => "edit" %> +
    + +
    + <%= render :partial => "api_keys/index" %> +
    + +
    + <%= render :partial => "import" %> +
    + + +
    + + + diff --git a/app/views/channels/public.html.erb b/app/views/channels/public.html.erb new file mode 100644 index 0000000..19d295a --- /dev/null +++ b/app/views/channels/public.html.erb @@ -0,0 +1,11 @@ +
    +
    + + + <%= render :partial => 'list' %> +
    + <%= will_paginate @channels %> + +
    +
    + diff --git a/app/views/channels/public_show.html.erb b/app/views/channels/public_show.html.erb new file mode 100644 index 0000000..91bd579 --- /dev/null +++ b/app/views/channels/public_show.html.erb @@ -0,0 +1,92 @@ +<%= render :partial => "devinfo" %> + +
    + + + +
    + +<%= render :partial=>"socialbuttons" %> + +
    + +
    + <%= render :partial => "public_show" %> +
    +
    + + diff --git a/app/views/channels/social_feed.html.erb b/app/views/channels/social_feed.html.erb new file mode 100644 index 0000000..9c45f16 --- /dev/null +++ b/app/views/channels/social_feed.html.erb @@ -0,0 +1,93 @@ + + + + + + + +;'> +
    + + diff --git a/app/views/channels/social_new.html.erb b/app/views/channels/social_new.html.erb new file mode 100644 index 0000000..327ff78 --- /dev/null +++ b/app/views/channels/social_new.html.erb @@ -0,0 +1,107 @@ +
    +

    + <%= link_to t(:channels), channels_path %> » + <%= t(:social_channel_new) %> +

    + + <%= form_for @channel, :url => { :action => 'social_create' } do |c| %> + <%= error_messages_for 'channel', :header_message => t(:try_again), :message => t(:channel_error) %> + + + + + + + + + + + + + + + <%= fields_for :tags do |t| %> + + + + + <% end %> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    <%= t(:channel_name) %><%= c.text_field :name %>
    <%= t(:slug) %><%= c.text_field :slug %>
    <%= t(:channel_directions) %><%= c.text_area :description, :cols => 30, :rows => 4 %>
    <%= t(:tags) %><%= t.text_area :name, :cols => 30, :rows => 2, :value => @channel.list_tags %>
    <%= t(:field) %> 1<%= c.text_field :field1 %>
    <%= t(:field) %> 2<%= c.text_field :field2 %>
    <%= t(:field) %> 3<%= c.text_field :field3 %>
    <%= t(:field) %> 4<%= c.text_field :field4 %>
    <%= t(:field) %> 5<%= c.text_field :field5 %>
    <%= t(:field) %> 6<%= c.text_field :field6 %>
    <%= t(:field) %> 7<%= c.text_field :field7 %>
    <%= t(:field) %> 8<%= c.text_field :field8 %>
    <%= t(:message_field) %><%= c.text_field :status %>
    <%= c.submit t(:social_channel_create) %>
    + <% end %> + +
    + + + + \ No newline at end of file diff --git a/app/views/channels/social_show.html.erb b/app/views/channels/social_show.html.erb new file mode 100644 index 0000000..e3b095b --- /dev/null +++ b/app/views/channels/social_show.html.erb @@ -0,0 +1,308 @@ + + + + <%= @channel.name %> + + + + + +
    + +
    + + + +
    + +
    + Developers? + <%= link_to 'JSON', "#{@api_domain}channels/#{@channel.id}/feed.json?results=100&location=true&offset=0&round=2&status=true" %> + <%= link_to 'XML', "#{@api_domain}channels/#{@channel.id}/feed.xml?results=100&location=true&offset=0&round=2&status=true" %> + <%= link_to 'CSV', "#{@api_domain}channels/#{@channel.id}/feed.csv?results=100&location=true&offset=0&round=2&status=true" %> +
    + +
    + +
    + + + +
    + +
    +

    <%= @channel.name %>

    +
    + +
    + + <% if !@channel.description.blank? %> +
    <%= t(:channel_directions) %>: <%= @channel.description %>
    +
    + <% end %> + + <%= form_tag "#{@post_url}" do %> + + <% @fields.each do |f| %> + + + + + <% end %> + <% if !@channel.status.blank? %> + + + + + <% end %> + + + + + + +
    <%= @channel[f] %><%= text_field_tag "#{f}" %>
    <%= @channel.status %>
    <%= text_area_tag :status %>
    + <%= submit_tag t(:submit), :id => 'submit' %> + +
    + <% end %> + +

    + +
    + + + + <% @fields.each do |f| %> +

    + + <% end %> + + + +
    + +
    + + + +
    + +
    + + + + + + + + diff --git a/app/views/channels/watched.html.erb b/app/views/channels/watched.html.erb new file mode 100644 index 0000000..4cd8108 --- /dev/null +++ b/app/views/channels/watched.html.erb @@ -0,0 +1,18 @@ +
    +
    + + + +
    + <% if @channels.empty? %> + <%= t(:watched_empty) %> +

    + <%= link_to t(:watched_find), public_channels_path %> + <% else %> + <%= render :partial => 'list' %> + <% end %> +
    + +
    +
    + diff --git a/app/views/charts/_config.html.erb b/app/views/charts/_config.html.erb index 1fe5332..9d23d5f 100644 --- a/app/views/charts/_config.html.erb +++ b/app/views/charts/_config.html.erb @@ -1,126 +1,196 @@ -<% options = '×cale=10' if options.blank? %> -
    -

    <%= title %>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    <%= t(:title) %>:
    <%= t(:chart_xaxis) %>:
    <%= t(:chart_yaxis) %>:
    <%= t(:chart_color) %>:
    <%= t(:chart_background_color) %>:
    <%= t(:chart_type) %>: - -
    +
    <%= options %>
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    <%= t(:days) %>:
    <%= t(:timescale) %>:
    <%= t(:average) %>:
    <%= t(:median) %>:
    <%= t(:sum) %>:
    <%= t(:chart_round) %>:
    <%= t(:width) %>:
    <%= t(:height) %>:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + -
    + - + + + + + + + + +<% if displayconfig %> + + + + + + + + +<% end %> -

    - <%= t(:chart_embed_code) %>: -
    - - +
    <%= t(:title) %>:
    <%= t(:chart_xaxis) %>:
    <%= t(:chart_yaxis) %>:
    <%= t(:chart_color) %>:
    <%= t(:chart_background_color) %>:
    <%= t(:chart_type) %>: + +
    <%= t(:chart_is_dynamic) %>: + +
    <%= t(:days) %>:
    <%= t(:results) %>:
    <%= t(:width) %>:
    <%= t(:height) %>:
    -


    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    <%= t(:timescale) %>: + +
    <%= t(:average) %>: + +
    <%= t(:median) %>: + +
    <%= t(:sum) %>: + +
    <%= t(:chart_round) %>:
    <%= t(:chart_min) %>:
    <%= t(:chart_max) %>:
    + +<% if displayconfig %> + <%= render :partial => 'charts/display', + :locals => { + :index => index, + :width => @width, + :height => @height, + :src => src, + :options => options + } + %> +<% end %> \ No newline at end of file + }); + + // event to capture update button click + $('#button<%= index %>').click(function() { + var width = <%= (@width) ? @width : 450 %>; + var height = <%= @height ? @height : 260 %>; + updateChart(<%= index %>, true, width, height, <%= @channel.id %>); + + }); + + + $('.mutuallyexclusive<%= index %>').change(function() { + selectedValue = $(this).val(); + $('.mutuallyexclusive<%= index %>').each(function () { + $(this).val(""); + }); + $(this).val(selectedValue); + }); + + + diff --git a/app/views/charts/_display.html.erb b/app/views/charts/_display.html.erb new file mode 100644 index 0000000..49fb42b --- /dev/null +++ b/app/views/charts/_display.html.erb @@ -0,0 +1,11 @@ +
    + + + +

    + + <%= t(:chart_embed_code) %>: +
    + + +


    diff --git a/app/views/charts/index.html.erb b/app/views/charts/index.html.erb index 2e1fe33..c5c7e40 100644 --- a/app/views/charts/index.html.erb +++ b/app/views/charts/index.html.erb @@ -1,104 +1,66 @@ - +
    +

    + <%= link_to t(:channels), channels_path %> » + <%= link_to channel_path(@channel.id) do %> <%= t(:channel) %> <%= @channel.id %><% end %> » + <%= t(:charts) %> +

    + + <% if !@channel.active? %> + <%= render :partial => 'config', + :locals => { + :displayconfig => true, + :title => t(:chart_example), + :src => "https://api.thingspeak.com/channels/3/charts/1", + :options => '×cale=60&round=2', + :index => 0, + :width => @width, + :height => @height + } + %> + +

    <%= t(:chart_owned) %>

    + <% end %> + + <% @channel.attribute_names.each do |attr| %> + <% if attr.index('field') and @channel[attr] and !@channel[attr].empty? %> + <%= render :partial => 'config', + :locals => { + :displayconfig => true, + :title => "#{@channel.name} - #{@channel[attr]}", + :src => "#{@domain}channels/#{@channel_id}/charts/#{attr[-1]}", + :options => @channel["options#{attr[-1]}"], + :index => attr[-1], + :width => @width, + :height => @height + } + %> + + <% end %> + <% end %> +
    -

    - <%= link_to t(:channels), channels_path %> » - <%= link_to channel_path(@channel.id) do %> <%= t(:channel) %> <%= @channel.id %><% end %> » - <%= t(:charts) %> -

    - -<%= render :partial => 'config', - :locals => { - :title => t(:chart_example), - :src => "https://api.thingspeak.com/channels/3/charts/1", - :options => '×cale=60&round=2', - :index => 0, - :width => @width, - :height => @height - } -%> - -

    <%= t(:chart_owned) %>

    - -<% @channel.attribute_names.each do |attr| %> - <% if attr.index('field') and @channel[attr] and !@channel[attr].empty? %> - - <%= render :partial => 'config', - :locals => { - :title => "#{@channel.name} - #{@channel[attr]}", - :src => "#{@domain}channels/#{@channel_id}/charts/#{attr[-1]}", - :options => @channel["options#{attr[-1]}"], - :index => attr[-1], - :width => @width, - :height => @height - } - %> - - <% end %> -<% end %> + \ No newline at end of file + diff --git a/app/views/charts/show.html.erb b/app/views/charts/show.html.erb index b279c01..d1d1245 100644 --- a/app/views/charts/show.html.erb +++ b/app/views/charts/show.html.erb @@ -1,89 +1,127 @@ - - - - - + <%= javascript_include_tag 'application' %> - $(document).ready(function() { - // blank array for holding chart data - var chartData = []; - // variable for the local date in milliseconds - var localDate; - // variable for the last date added to the chart - var last_date; + ;'>
    + diff --git a/app/views/comments/_comment.html.erb b/app/views/comments/_comment.html.erb new file mode 100644 index 0000000..ee2ba90 --- /dev/null +++ b/app/views/comments/_comment.html.erb @@ -0,0 +1,45 @@ +
    > +
    + + + + + +
    + <%= gravatar_tag User.find(comment.user_id), :default => 'wavatar', :secure => true %> + + <% if current_user %> +
    + <%= t(:comment_flag) %> +
    + <% end %> + <%= link_to User.find(comment.user_id).login, list_channels_path(User.find(comment.user_id).login) %> + <%= time_ago_in_words(comment.created_at) %> <%= t(:ago) %> +
    +
    + <%= auto_link_urls(comment.body) %> +
    + <% if current_user %> + <% if comment.user == current_user %> + <%= link_to t(:delete), comment_path(comment), :method => :delete, :data => { :confirm => t(:confirm_comment_delete) } %> + <% else %> + <%= t(:comment_reply) %> + <% end %> + <% else %> + <%= link_to t(:comment_reply), channel_comments_path(@channel) %> + <% end %> + +
    +
    + <%= render :partial => 'comments/comment', :collection => comment.children %> +
    + diff --git a/app/views/docs/_response.html.erb b/app/views/docs/_response.html.erb new file mode 100644 index 0000000..edff5c3 --- /dev/null +++ b/app/views/docs/_response.html.erb @@ -0,0 +1,5 @@ +
    + Response in: + TEXTJSONXML +
    + diff --git a/app/views/docs/index.html.erb b/app/views/docs/index.html.erb new file mode 100644 index 0000000..c88aa0d --- /dev/null +++ b/app/views/docs/index.html.erb @@ -0,0 +1,4 @@ +
    + welcome +
    + diff --git a/app/views/feed/debug.html.erb b/app/views/feed/debug.html.erb new file mode 100644 index 0000000..f36242c --- /dev/null +++ b/app/views/feed/debug.html.erb @@ -0,0 +1,11 @@ +<%= @count %> records processed +
    +<%= @time_start %> => start controller +
    +<%= @time_after_db %> => after database operations (<%= @time_after_db - @time_start %> seconds) +
    +<%= @time_after_sort %> => after sorting (<%= @time_after_sort - @time_after_db %> seconds) +
    +<%= @time_after_json %> => after to_json is processed (<%= @time_after_json - @time_after_sort %> seconds) +
    +<%= Time.now %> => after view output (<%= Time.now - @time_after_json %> seconds) \ No newline at end of file diff --git a/app/views/feed/index.csv.erb b/app/views/feed/index.csv.erb index 0bbbd25..dac5bb8 100644 --- a/app/views/feed/index.csv.erb +++ b/app/views/feed/index.csv.erb @@ -1,2 +1,2 @@ -<% if @success %><%= CSV.generate_line @csv_headers %><% @feed_output.each do |feed| %><% row = [] %><% @csv_headers.each do |attr| %><% row.push(feed.send(attr)) %><% end %><%= CSV.generate_line row %><% end %><% else %>-1<% end %> +<% if @success %><%= CSV.generate_line @csv_headers %><% @feed_output.each do |feed| %><% row = [] %><% @csv_headers.each do |attr| %><% row.push(feed.send(attr)) %><% end %><%= CSV.generate_line(row).html_safe %><% end %><% else %>-1<% end %> diff --git a/app/views/feed/index.html.erb b/app/views/feed/index.html.erb index d19c639..088f036 100644 --- a/app/views/feed/index.html.erb +++ b/app/views/feed/index.html.erb @@ -1 +1 @@ -<%= render :partial => 'index.json.erb' %> \ No newline at end of file +<%= render :partial => 'feed/index.json.erb' %> \ No newline at end of file diff --git a/app/views/headers/_fields.html.erb b/app/views/headers/_fields.html.erb new file mode 100644 index 0000000..a2810a3 --- /dev/null +++ b/app/views/headers/_fields.html.erb @@ -0,0 +1,14 @@ +
    +
    +
    + <%= t(:thinghttp_header_name) %> + <%= header.text_field :name, :class => 'form-control input-sm' %> +
    + <%= t(:thinghttp_header_value) %> + <%= header.text_field :value, :class => 'form-control input-sm' %> + <%= header.link_to_remove t(:thinghttp_header_remove) %> +
    +
    +
    +
    + diff --git a/app/views/layouts/_footer.html.erb b/app/views/layouts/_footer.html.erb new file mode 100644 index 0000000..e04d0c8 --- /dev/null +++ b/app/views/layouts/_footer.html.erb @@ -0,0 +1,20 @@ + + diff --git a/app/views/layouts/_ga.html.erb b/app/views/layouts/_ga.html.erb new file mode 100644 index 0000000..0f10532 --- /dev/null +++ b/app/views/layouts/_ga.html.erb @@ -0,0 +1,12 @@ + + diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index 0aaa2ff..86e1ebd 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -1,12 +1,68 @@ -
    - <% if current_user %> - <%= link_to t(:signout), logout_path, :method => 'delete' %> - <% else %> - - <%= link_to t(:signup), new_user_path %> - - <%= link_to t(:signin), login_path %> - <% end %> + - diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index c6d20f8..9929d8c 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -1,16 +1,34 @@ - - <%= @title.nil? ? (@menu.nil? ? t(:application_name) : @menu.capitalize + ' - ' + t(:application_name)) : @title + ' - ' + t(:application_name) %> - <%= stylesheet_link_tag "application" %> - <%= javascript_include_tag "application" %> - <%= csrf_meta_tag %> - - -
    - - -
    <%= yield %>
    -
    - + + <%= @title.nil? ? (@menu.nil? ? 'ThingSpeak' : @menu.capitalize + ' - ThingSpeak') : @title + ' - ThingSpeak' %> + + <%= stylesheet_link_tag 'application' %> + + + + + <%= javascript_include_tag 'application' %> + + <%= csrf_meta_tag %> + <% if Rails.env == 'production' %> + <%= render 'layouts/ga' %> + <% end %> + + <%= yield :head %> + + + + +
    + <%= render 'layouts/header' %> +
    + <%= yield %> +
    +
    + + <%= render 'layouts/footer' %> + + + diff --git a/app/views/mailer/password_reset.html.erb b/app/views/mailer/password_reset.html.erb index 3707c0e..e22845e 100644 --- a/app/views/mailer/password_reset.html.erb +++ b/app/views/mailer/password_reset.html.erb @@ -5,13 +5,13 @@

    - <%= t(:password_reset_message1) %> -
    - <%= t(:password_reset_message2) %> -
    - <%= t(:password_reset_message3) %> -

    - <%= @webpage %> + <%= t(:password_reset_message1) %> +
    + <%= t(:password_reset_message2) %> +
    + <%= t(:password_reset_message3) %> +

    + <%= @webpage %>

    \ No newline at end of file diff --git a/app/views/maps/channel_show.html.erb b/app/views/maps/channel_show.html.erb new file mode 100644 index 0000000..c875a7a --- /dev/null +++ b/app/views/maps/channel_show.html.erb @@ -0,0 +1,44 @@ + + + + + + + + +
    + + \ No newline at end of file diff --git a/app/views/maps/show.html.erb b/app/views/maps/show.html.erb new file mode 100644 index 0000000..687256e --- /dev/null +++ b/app/views/maps/show.html.erb @@ -0,0 +1,119 @@ + + + + + + + + +
    + + diff --git a/app/views/pages/about.html.erb b/app/views/pages/about.html.erb new file mode 100644 index 0000000..9a586d2 --- /dev/null +++ b/app/views/pages/about.html.erb @@ -0,0 +1 @@ +

    <%= t(:about) %>

    \ No newline at end of file diff --git a/app/views/pages/export.html.erb b/app/views/pages/export.html.erb new file mode 100644 index 0000000..70c5af6 --- /dev/null +++ b/app/views/pages/export.html.erb @@ -0,0 +1,116 @@ +

    export test

    +
    + + + + +
    + +
    diff --git a/app/views/pages/features.html.erb b/app/views/pages/features.html.erb new file mode 100644 index 0000000..b573795 --- /dev/null +++ b/app/views/pages/features.html.erb @@ -0,0 +1,22 @@ +

    <%= t(:features) %>

    + +
    All-purpose Data Storage and Retrieval
    +

    You use ThingSpeak to Send and Receive "data" via simple HTTP requests, much like going to a web page and filling out a form. Data can be from anything -- Blood Sugar Levels measured by a glucose meter, Server Usage and Uptime reported by servers, or Location Info from a mobile phone. Once the data is in ThingSpeak, you can build applications that retrieve the data, use the data for process decision making, and reporting.

    +

    Data is stored in a ThingSpeak Channel. Each channel allows you to store up to 8 fields of data up to 255 alphanumeric characters; 4 dedicated location fields for Location Description, Latitude, Longitude, and Elevation; Status Update to augment the data; and a Time Date Stamp to time code each piece of incoming data.

    +
    Data Importing
    +

    Do you already have a bunch of data collected from data acquisition devices, server logs, or sensors? Then you can use the ThingSpeak Importer to bring in your existing data and leverage the ThingSpeak API and Charts to share with and connect to applications instantly.

    +
    Dynamic Charting
    +

    When you need to visualize your data, ThingSpeak has dynamic charts and an API to make customizations. The charts are perfect for displaying sensor data over time and finding some meaning behind the data. ThingSpeak Charts work on all desktop browsers, iPhones, and Android devices by using JavaScript instead of Flash. The chart types supported are Line, Bar, Column, and Step. You can set colors, sizing, and labels to allow the charts to fit perfectly into your web page or web application.

    +
    Data Processing
    +

    When pulling data out of ThingSpeak, you can process the data to get it ready for your application. You can also filter the data by setting minimum and maximum value thresholds. Processing options include time scaling, summing, averaging, and median.

    +
    Integration with Twitter
    +

    Often enough you will find times where you want to share significant data across social networks like Twitter. You can have your garage door Tweet, + "You left your garage door open" or have your house, say "Today's Power Use was 6150 watts." The ThingSpeak API has Twitter baked in, so you can send status updates to Twitter along with storing your data in a ThingSpeak Channel at the same time.

    +
    Fully Localized
    +

    ThingSpeak supports over 40 time zones and time offsets for locations that support Day Light Savings. When charts and data are presented to users, we format times and dates using the viewer's time zone. The user interface for ThingSpeak currently supports English and Brazilian Portuguese languages automatically, but the localization file is available for translation into other languages. ThingSpeak numerical data supports commas used as decimals, for example, it's getting 38,2 degrees in here, for our friends in Brazil and many other countries.

    +
    Privacy Options for Open Data
    +

    We respect your privacy. You can choose to make your data public or private. Over 95% of ThingSpeak Channels are private meaning that the data is not publicly accessible without API keys and user authentication. You can control who has access to your data and build applications that are open to those that you choose. We don't sell your data to third-parties. You can even run ThingSpeak on a private network at your facility or home and build tightly secured applications for your organization's needs.

    +
    Open Source for Open Source
    +

    The ThingSpeak API is available on GitHub for download and installation on your own servers. You can also take the source code and make changes and contribute new features. ThingSpeak is a modern Ruby on Rails 3.0 application and includes everything to get started including, a full web application, User Management, API Key Management, Channel Management, and Charting. The license for ThingSpeak is under GPLv3 for open source use and can be licensed from ioBridge for closed source applications. ThingSpeak has been installed on over 500 servers and licenced commercially since its release on GitHub in March 2011. Contact ioBridge for licensing options for commercial use. ThingSpeak will be powering many new services and products coming to market in 2012.

    +

    <%= image_tag 'GitHub_ThingSpeak_API.jpg', :size => '300x288' %>

    + diff --git a/app/views/pages/headers.html.erb b/app/views/pages/headers.html.erb new file mode 100644 index 0000000..dba94f3 --- /dev/null +++ b/app/views/pages/headers.html.erb @@ -0,0 +1,7 @@ + +<% for header in request.env.select {|k,v| k.match("^HTTP.*")} %> + + + +<% end %> +
    <%=header[0].split('_',2)[1]%><%=header[1]%>
    diff --git a/app/views/pages/home.html.erb b/app/views/pages/home.html.erb index 9a5b16a..5b327a6 100644 --- a/app/views/pages/home.html.erb +++ b/app/views/pages/home.html.erb @@ -1,5 +1,230 @@ -<% if current_user %> - <%= t(:homepage_logged_in) %> -<% else %> - <%= t(:homepage) %> -<% end %> \ No newline at end of file + + +
    +
    + <%= image_tag 'front.png', :size => '854x144' %> +
    +
    + +


    + + + +


    + +
    + +
    + +

    +

      +
    • Open Source API
    • +
    • Real-time data collection
    • +
    • Data processing
    • +
    • Data visualizations
    • +
    • Location-awareness
    • +
    • Status context
    • +
    • Application infrastructure
    • +
    • Twitter proxy
    • +
    • Apps
    • +
    • Plugins
    • +
    • <%= link_to '... more', features_pages_path %>
    • +
    +

    +
    + +
    + +

    +

      +
    • Sensor monitoring
    • +
    • Energy monitoring
    • +
    • Connecting devices and systems
    • +
    • Geo location tracking
    • +
    • Interfacing with social networks
    • +
    • RFID transactions
    • +
    +

    + +

    +

      +
    • Application developers
    • +
    • Product integrators
    • +
    • Web designers
    • +
    +

    +
    + +
    + +
    + If you are ready to get started, <%= link_to t(:signup), new_account_path %> for a free user account. +
    + +

    +

    +

    +
    + +
    + +


    + +
    +
    + +
    +

    latest news <%= image_tag 'icon_rss.gif' %>

    +
    + + <% cache("blog-posts-on-homepage", :expires_in => 10.minutes) do %> + <%= raw blog_entries %> + <% end %> +
    + +
    +
    + diff --git a/app/views/pages/social_home.html.erb b/app/views/pages/social_home.html.erb new file mode 100644 index 0000000..7786c8f --- /dev/null +++ b/app/views/pages/social_home.html.erb @@ -0,0 +1,145 @@ + + + + The Social Sensor Network + + + + +
    + +
    + + + +
    + +
    + + <% link_to 'irs-refund/' do %> + + <% end %> +

    the social sensor network is forming.

    +

    We have one thing in common. At almost all times we are connected to the web.
    + The Social Sensor Network allows everyone to report and share data in an open and meaningful way.

    + +
    + +
    + + + + + + + + + + +
    + + + +
    +
    + + demo channels + +
    + + IRS Refunds + Frozen Online Poker Money + +
    + + + + diff --git a/app/views/pipes/index.html.erb b/app/views/pipes/index.html.erb new file mode 100644 index 0000000..bda2e6c --- /dev/null +++ b/app/views/pipes/index.html.erb @@ -0,0 +1,19 @@ +

    Pipes

    +<%= link_to 'New Pipe', new_pipe_path %> + +

    + + + + <% @pipes.each do |m| %> + > + + + + + + + <% end %> +
    IDNameSlugURLDate
    <%= link_to m.id, channel_path(m.id) %><%= link_to m.name, channel_path(m.id) %><%= link_to m.slug, channel_path(m.id) %><%= m.url %><%= raw(m.created_at.strftime("%m/%d/%Y %I:%M%p")) %>
    +
    +<%= will_paginate @pipes %> diff --git a/app/views/pipes/new.html.erb b/app/views/pipes/new.html.erb new file mode 100644 index 0000000..b9de776 --- /dev/null +++ b/app/views/pipes/new.html.erb @@ -0,0 +1,30 @@ +

    Add New Pipe

    + +<%= form_for @pipe, :url => pipes_path do |f| %> + + + + + + + + + + + + + + + + + + + + + + + + + +
    Name<%= f.text_field :name %>
    Slug<%= f.text_field :slug %>
    URL<%= f.text_field :url %>
    Parse String<%= f.text_field :parse %>
    Minutes to Cache<%= f.text_field :cache %>
    <%= f.submit 'Create Pipe' %>
    +<% end %> \ No newline at end of file diff --git a/app/views/plugins/_plugins.html.erb b/app/views/plugins/_plugins.html.erb new file mode 100644 index 0000000..0694770 --- /dev/null +++ b/app/views/plugins/_plugins.html.erb @@ -0,0 +1,8 @@ +<% if @plugin_windows.blank? %> +

    All plugins are attached to a window.

    +<% else %> +

    Click a rectangle to view that Plugin in a dashboard window.

    +<% @plugin_windows.each do |plugin| %> +
    <%= plugin.name %>
    +<% end %> +<% end %> diff --git a/app/views/plugins/default.css b/app/views/plugins/default.css new file mode 100644 index 0000000..6508946 --- /dev/null +++ b/app/views/plugins/default.css @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/app/views/plugins/default.html b/app/views/plugins/default.html new file mode 100644 index 0000000..071c44c --- /dev/null +++ b/app/views/plugins/default.html @@ -0,0 +1,13 @@ + + + + %%PLUGIN_CSS%% + %%PLUGIN_JAVASCRIPT%% + + + + + my plugin + + + \ No newline at end of file diff --git a/app/views/plugins/default.js b/app/views/plugins/default.js new file mode 100644 index 0000000..f4a722e --- /dev/null +++ b/app/views/plugins/default.js @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/app/views/plugins/edit.html.erb b/app/views/plugins/edit.html.erb new file mode 100644 index 0000000..a3fd2f9 --- /dev/null +++ b/app/views/plugins/edit.html.erb @@ -0,0 +1,109 @@ +
    + + + + <%= form_for @plugin, :html => {:method => 'put', :class => 'form-horizontal'} do |c| %> + <%= error_messages_for 'plugin', :header_message => t(:try_again), :message => t(:plugin_error) %> + + +
    +
    +
    + +
    +
    +
    + +
    + +
    <%= c.text_field :name, :class => 'form-control' %>
    +
    + +
    + +
    <%= c.text_area :html, :class => 'form-control', :rows => 14 %>
    +
    + +
    + +
    <%= c.text_area :css, :class => 'form-control', :rows => 14 %>
    +
    + +
    + +
    <%= c.text_area :js, :class => 'form-control', :rows => 14 %>
    +
    + +
    + +

    <%= c.submit t(:plugin_edit), :class => 'btn btn-primary' %>

    +
    + + <% end %> + +

    + +

    <%= t(:plugin_delete_message) %>

    + <%= button_to t(:plugin_delete), plugin_path(@plugin.id), :method => 'delete', :data => { :confirm => t(:confirm_plugin_delete) }, :class => 'btn btn-danger' %> + +
    + + + diff --git a/app/views/plugins/index.html.erb b/app/views/plugins/index.html.erb new file mode 100644 index 0000000..e51e6ba --- /dev/null +++ b/app/views/plugins/index.html.erb @@ -0,0 +1,43 @@ +
    +
    + + + + <% if @plugins.length > 0 %> + + + + + + + <% @plugins.each do |p| %> + + + + + <% end %> + +
    <%= t(:plugin_name) %><%= t(:action) %>
    <%= link_to p.name, plugin_path(p.id) %><%= link_to t(:edit), edit_plugin_path(p.id) %>
    + +

    + <% end %> + + <%= form_for :plugin do |p| %> + + <%= p.submit t(:plugin_create), :class => 'btn btn-primary' %> + <% end %> +
    + + + +
    + diff --git a/app/views/plugins/show.html.erb b/app/views/plugins/show.html.erb new file mode 100644 index 0000000..4931261 --- /dev/null +++ b/app/views/plugins/show.html.erb @@ -0,0 +1 @@ +<%= raw(@output) %> \ No newline at end of file diff --git a/app/views/status/_recent.html.erb b/app/views/status/_recent.html.erb new file mode 100644 index 0000000..a5b1adc --- /dev/null +++ b/app/views/status/_recent.html.erb @@ -0,0 +1,46 @@ + + + <%= stylesheet_link_tag 'application' %> + + <%= javascript_include_tag 'application' %> + + + +
    +<% @statuses.each do |r| %> +
    <%= r.status %>
    <%= r.created_at %>
    +
    +<% end %> +
    + + + diff --git a/app/views/tags/show.html.erb b/app/views/tags/show.html.erb new file mode 100644 index 0000000..2ce51e5 --- /dev/null +++ b/app/views/tags/show.html.erb @@ -0,0 +1,24 @@ +<%= form_for :tag, :url => tags_path do |t| %> + + + + + + +
    <%= t(:tags_search) %>:<%= t.text_field :name %><%= t.submit t(:submit) %>
    +
    + + <% if @tag_name %> + <% if @results %> + + <% @results.each do |channel| %> + <%= link_to channel.name, channel_path(channel.id) %> +
    + <% end %> + + <% else %> + <%= t(:search_empty) %> + <% end %> + <% end %> + +<% end %> \ No newline at end of file diff --git a/app/views/user_sessions/new.html.erb b/app/views/user_sessions/new.html.erb index c3b80ac..28d0ff4 100644 --- a/app/views/user_sessions/new.html.erb +++ b/app/views/user_sessions/new.html.erb @@ -1,13 +1,57 @@ -
    <%= render :partial => 'users/login' %>
    -
    - <% if @failed %> -

    <%= t(:signin_failure) %>

    - <%= t(:signin_try_again) %> - <% else %> -
    - <%= t(:signin_please) %> -
    -
    - <%= @mail_message %> - <% end %> +
    + + + + <% if @failed %><%= t(:signin_try_again) %>

    <% end %> + <% if @mail_message.present? %><%= @mail_message %>

    <% end %> + + <%= form_for @user_session, :url => user_session_path, :html => { :id => 'loginform', :class => 'form-horizontal' } do |f| %> + + <%= f.hidden_field :remember_me, :value => false %> + +
    + +
    <%= f.text_field :login, :value => cookies['user_id'], :class => 'form-control' %>
    +
    + +
    + +
    + <%= f.password_field :password, :class => 'form-control' %> + <%= link_to t(:forgot), forgot_password_path, :id => 'forgot_password' %> +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +

    <%= f.submit t(:signin), :class => 'btn btn-primary' %>

    +
    + <% end %> +
    + + + + diff --git a/app/views/users/edit.html.erb b/app/views/users/edit.html.erb index 98e651b..6244891 100644 --- a/app/views/users/edit.html.erb +++ b/app/views/users/edit.html.erb @@ -1,62 +1,54 @@ -

    - <%= link_to t(:myaccount), account_path %> » - <%= t(:account_edit) %> -

    +
    -<%= form_for @user, :url => account_path do |f| %> - <%= error_messages_for 'user', :header_message => t(:try_again), :message => t(:account_error_edit) %> + + <%= form_for @user, :url => account_path, :html => {:class => 'form-horizontal'} do |f| %> + <%= error_messages_for 'user', :header_message => t(:try_again), :message => t(:account_error_edit) %> - - - - - - - - - - - - +
    + +
    <%= f.text_field :login, :class => 'form-control' %>
    +
    - - - - - - - - - - - - - - - - -
    -
    <%= f.label :login, t(:userid) %>
    -
    - <%= f.text_field :login %> -
    -
    <%= f.label t(:email) %>
    -
    - <%= f.text_field :email %> -
    <%= t(:time_zone) %><%= time_zone_select 'user', 'time_zone', nil, :default => 'Eastern Time (US & Canada)' %>
    -
    <%= f.label :password, raw(t(:password_change_raw)) %>
    -
    - <%= f.password_field :password %> -
    - <%= f.label :password_confirmation, raw(t(:password_confirmation_raw)) %> - - <%= f.password_field :password_confirmation %> +
    + +
    <%= f.text_field :email, :class => 'form-control' %>
    +
    + +
    + +
    +

    + <%= time_zone_select 'user', 'time_zone', nil, {:default => 'Eastern Time (US & Canada)'}, {:class => 'form-control'} %> +

    +
    +
    + +
    + +
    <%= f.password_field :password, :class => 'form-control' %>
    +
    + + +
    + +
    <%= f.password_field :password_confirmation, :class => 'form-control' %>
    +
    + +
    + +
    <%= f.password_field :password_current, :class => 'form-control' %>
    +
    + +
    +

    <%= f.submit t(:account_update), :class => 'btn btn-primary' %>

    +
    + + <% end %> + + -
    - <%= raw(t(:password_current_raw)) %> - - -
    <%= f.submit t(:account_update) %>
    -<% end %> \ No newline at end of file diff --git a/app/views/users/edit_profile.html.erb b/app/views/users/edit_profile.html.erb new file mode 100644 index 0000000..991a58d --- /dev/null +++ b/app/views/users/edit_profile.html.erb @@ -0,0 +1,43 @@ +
    + + + + + <%= form_for @user, :url => update_profile_path, :html => {:class => 'form-horizontal'} do |f| %> + + +
    +
    +
    + +
    +
    +
    + +
    + +
    <%= f.text_field :website, :class => 'form-control' %>
    +
    + + +
    + +
    <%= f.text_area :bio, :class => 'form-control', :rows => 4 %>
    +
    + + +
    + +

    <%= f.submit t(:profile_update), :class => 'btn btn-primary' %>

    +
    + + <% end %> + +
    + diff --git a/app/views/users/forgot_password.html.erb b/app/views/users/forgot_password.html.erb index 19f27a9..966f287 100644 --- a/app/views/users/forgot_password.html.erb +++ b/app/views/users/forgot_password.html.erb @@ -1,11 +1,30 @@ -

    <%= t(:password_forgot) %>

    -<%= t(:password_forgot_message) %> -

    -<%= form_for :user, :url => resetpassword_path do |f| %> - - <%= f.text_field :login %> - <%= f.submit t(:submit) %> -<% end %> +
    + + + + <%= t(:password_forgot_message) %> + +

    + + <%= form_for @user, :url => { :controller => 'mailer', :action => 'resetpassword' }, :html => {:class => 'form-horizontal' } do |f| %> + + +
    + +
    <%= f.text_field :login, :class => 'form-control' %>
    +
    + + +
    +

    <%= f.submit t(:submit), :class => 'btn btn-primary' %>

    +
    + + <% end %> + +
    + + \ No newline at end of file + document.getElementById('user_login').focus(); + + diff --git a/app/views/users/list_channels.html.erb b/app/views/users/list_channels.html.erb new file mode 100644 index 0000000..7ce8826 --- /dev/null +++ b/app/views/users/list_channels.html.erb @@ -0,0 +1,19 @@ +

    <%= t(:user_public_channels) %> <%= @user.login %>

    + +<% if @channels.present? && @channels.count > 0 %> + + + <% @channels.each do |m| %> + > + + + + + <% end %> +
    <%= t(:channel_name) %><%= t(:channel_description) %><%= t(:tags) %>
    <%= link_to m.name, channel_path(m.id) %><%= m.description %><%= m.list_tags %>
    +
    + <%= will_paginate @channels %> +<% else %> + <%= t(:user_no_public_channels) %> +<% end %> + diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb index 6650c37..f5c0407 100644 --- a/app/views/users/new.html.erb +++ b/app/views/users/new.html.erb @@ -1,51 +1,49 @@ -

    <%= t(:signup_header) %>

    -
    -<%= form_for @user, :url => account_path do |f| %> - <%= error_messages_for 'user', :header_message => t(:try_again), :message => t(:account_error) %> - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    <%= f.label :login, t(:userid) %>
    -
    - <%= f.text_field :login %> -
    -
    <%= f.label t(:email) %>
    -
    - <%= f.text_field :email %> -
    <%= t(:time_zone) %><%= time_zone_select 'user', 'time_zone', nil, :default => 'Eastern Time (US & Canada)' %>
    -
    <%= f.label t(:password) %>
    -
    - <%= f.password_field :password %> -
    - <%= f.label :password_confirmation, raw(t(:password_confirmation_raw)) %> - - <%= f.password_field :password_confirmation %> -
    <%= f.submit t(:create_account) %>
    -<% end %> +
    + + + + <%= form_for @user, :url => account_path, :html => {:class => 'form-horizontal'} do |f| %> + <%= error_messages_for 'user', :header_message => t(:try_again), :message => t(:account_error) %> + + +
    + +
    <%= f.text_field :login, :class => 'form-control' %>
    +
    + +
    + +
    <%= f.text_field :email, :class => 'form-control' %>
    +
    + +
    + +
    +

    + <%= time_zone_select 'user', 'time_zone', nil, {:default => 'Eastern Time (US & Canada)'}, {:class => 'form-control'} %> +

    +
    +
    + +
    + +
    <%= f.password_field :password, :class => 'form-control' %>
    +
    + +
    + +
    <%= f.password_field :password_confirmation, :class => 'form-control' %>
    +
    + +
    + +

    <%= f.submit t(:create_account), :id => "user_submit", :class => 'btn btn-primary' %>

    +
    + + <% end %> +
    \ No newline at end of file + document.getElementById('user_login').focus(); + + diff --git a/app/views/users/profile.html.erb b/app/views/users/profile.html.erb new file mode 100644 index 0000000..6a79c93 --- /dev/null +++ b/app/views/users/profile.html.erb @@ -0,0 +1,19 @@ +<% if @user.public_flag == true %> + +
    +

    + <%= gravatar_tag @user, :default => 'wavatar', :secure => true %> +
    + +

    <%= t(:profile_for) %> <%= @user.login %>

    + <%= link_to t(:channels_public_view), list_channels_path(@user.login) %> +

    + <%= t(:member_since) %> <%= @user.created_at.strftime('%B %-d, %Y') %> +

    + <%= t(:profile_website) %>: <%= link_to @user.website, @user.website %> +

    + <%= t(:profile_bio) %>: <%= @user.bio %> + +<% else %> + <%= t(:profile_not_public) %> +<% end %> \ No newline at end of file diff --git a/app/views/users/reset_password.html.erb b/app/views/users/reset_password.html.erb index 0e7e26c..3a1c0df 100644 --- a/app/views/users/reset_password.html.erb +++ b/app/views/users/reset_password.html.erb @@ -1,34 +1,35 @@ <% if @valid_link %> -

    <%= t(:password_new) %>

    - <%= form_for @user, :url => change_password_user_path(@user) do |f| %> - <%= error_messages_for 'user', :header_message => t(:try_again), :message => t(:password_new_error) %> - - - - - - - - - - - - - -
    -
    <%= f.label :password %>
    -
    - <%= f.password_field :password %> -
    - <%= t(:password_new_choose) %> -
    - <%= f.label :password_confirmation, raw(t(:password_confirmation_raw)) %> - - <%= f.password_field :password_confirmation %> -
    - <%= t(:password_new_confirmation) %> -
    <%= f.submit t(:submit) %>
    - <% end %> +

    <%= t(:password_new) %>

    + <%= form_for @user, :url => { :controller => 'users', :action => 'change_password', :id => @user.id } do |f| %> + <%= error_messages_for 'user', :header_message => t(:try_again), :message => t(:password_new_error) %> + + + + + + + + + + + + + +
    +
    <%= f.label :password %>
    +
    + <%= f.password_field :password %> +
    + <%= t(:password_new_choose) %> +
    + <%= f.label :password_confirmation, raw(t(:password_confirmation)) %> + + <%= f.password_field :password_confirmation %> +
    + <%= t(:password_new_confirmation) %> +
    <%= f.submit t(:submit) %>
    + <% end %> <% else %> - <%= t(:password_link_expired) %> -<% end %> \ No newline at end of file + <%= t(:password_link_expired) %> +<% end %> + diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index df22620..5d26e5b 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -1,20 +1,56 @@ -

    <%= t(:account_info) %>

    +
    -<%= link_to t(:account_edit), edit_account_path %> + -

    +
    + <%= link_to t(:account_edit), edit_account_path, :class => 'btn btn-primary btn-sm' %> +

    + + + + + + + + + + + + + + + + + + +
    <%= t(:userid) %><%= @user.login %>
    <%= t(:email) %><%= @user.email %>
    <%= t(:time_zone) %><%= @user.time_zone %>
    <%= t(:api_key) %> + <%= @user.api_key %>
    + <%= button_to t(:api_key_new), user_new_api_key_path, :data => { :confirm => t(:confirm_new_user_api_key) }, :class => 'btn btn-primary btn-sm' %> +
    +
    + +

    + +
    + <%= link_to t(:profile_edit), edit_profile_path, :class => 'btn btn-primary btn-sm' %> +

    + <%= link_to t(:profile_view), user_profile_path(@user.login) %> +

    + <% if @user.public_flag %> + + + + + + + + + +
    <%= t(:profile_website) %><%= @user.website %>
    <%= t(:profile_bio) %><%= @user.bio %>
    + <% else %> + <%= t(:profile_not_public_me) %> + <% end %> + +
    +
    - - - - - - - - - - - - - -
    <%= t(:userid) %><%= @user.login %>
    <%= t(:email) %><%= @user.email %>
    <%= t(:time_zone) %><%= @user.time_zone %>
    diff --git a/app/views/windows/_hidden_windows.html.erb b/app/views/windows/_hidden_windows.html.erb new file mode 100644 index 0000000..0c61408 --- /dev/null +++ b/app/views/windows/_hidden_windows.html.erb @@ -0,0 +1,104 @@ + +
    + + +
    + <% if @windows.blank? %> +

    <%= t("portlets_all_displayed") %>

    + <% else %> +

    <%= t("portlets_add") %>

    + <% @windows.each do |window| %> +
    + <%= window.title %> +
    + <% end %> + <% end %> +
    + +
    + diff --git a/autotest/discover.rb b/autotest/discover.rb new file mode 100644 index 0000000..f421dc5 --- /dev/null +++ b/autotest/discover.rb @@ -0,0 +1,2 @@ +Autotest.add_discovery { "rails" } +Autotest.add_discovery { "rspec2" } diff --git a/config/application.rb b/config/application.rb index cc909aa..1ee183e 100644 --- a/config/application.rb +++ b/config/application.rb @@ -2,25 +2,23 @@ require File.expand_path('../boot', __FILE__) require 'rails/all' -if defined?(Bundler) - # If you precompile assets before deploying to production, use this line - # Bundler.require *Rails.groups(:assets => %w(development test)) - # If you want your assets lazily compiled in production, use this line - Bundler.require(:default, :assets, Rails.env) -end +Bundler.require(:default, Rails.env) module Thingspeak class Application < Rails::Application - # Settings in config/environments/* take precedence over those specified here. - # Application configuration should go into files in config/initializers - # -- all .rb files in that directory are automatically loaded. # Custom directories with classes and modules you want to be autoloadable. + # config.autoload_paths += %W(#{config.root}/extras) config.autoload_paths += %W(#{config.root}/lib) - # Only load the plugins named here, in the order given (default is alphabetical). - # :all can be used as a placeholder for all plugins not explicitly named. - # config.plugins = [ :exception_notification, :ssl_requirement, :all ] + # fix invalid utf8 characters + config.middleware.insert_before "Rack::Runtime", Rack::UTF8Sanitizer + + # allow xml params + config.middleware.insert_after ActionDispatch::ParamsParser, ActionDispatch::XmlParamsParser + + # allow frames to work + config.action_dispatch.default_headers = { 'X-Frame-Options' => 'ALLOWALL' } # Activate observers that should always be running. # config.active_record.observers = :cacher, :garbage_collector, :forum_observer @@ -29,23 +27,18 @@ module Thingspeak # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. # config.time_zone = 'Central Time (US & Canada)' + # must be placed before other config.i18n lines + config.i18n.enforce_available_locales = false + # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] config.i18n.default_locale = :en - # JavaScript files you want as :defaults (application.js is always included). - # config.action_view.javascript_expansions[:defaults] = %w(jquery rails) - # Configure the default encoding used in templates for Ruby 1.9. config.encoding = "utf-8" # Configure sensitive parameters which will be filtered from the log file. config.filter_parameters += [:password] - - # Enable the asset pipeline - config.assets.enabled = true - - # Version of your assets, change this if you want to expire all your assets - config.assets.version = '1.0' end end + diff --git a/config/database.yml.local b/config/database.yml.local new file mode 100644 index 0000000..e11affd --- /dev/null +++ b/config/database.yml.local @@ -0,0 +1,50 @@ +# MySQL. Versions 4.1 and 5.0 are recommended. +# +# Install the MySQL driver: +# gem install mysql +# On Mac OS X: +# sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql +# On Mac OS X Leopard: +# sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config +# This sets the ARCHFLAGS environment variable to your native architecture +# On Windows: +# gem install mysql +# Choose the win32 build. +# Install MySQL and put its /bin directory on your path. +# +# And be sure to use new-style password hashing: +# http://dev.mysql.com/doc/refman/5.0/en/old-client.html +development: + adapter: mysql2 + encoding: utf8 + reconnect: false + database: thingspeak_development + pool: 5 + username: thing + password: "speak" +# socket: /var/lib/mysql/mysql.sock + socket: /var/run/mysqld/mysqld.sock + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + adapter: mysql2 + encoding: utf8 + reconnect: false + database: thingspeak_test + pool: 5 + username: thing + password: "speak" +# socket: /var/lib/mysql/mysql.sock + socket: /var/run/mysqld/mysqld.sock + +production: + adapter: mysql2 + encoding: utf8 + reconnect: true + database: thingspeak_production + pool: 5 + username: root + password: "notimplemented" + socket: /var/run/mysqld/mysqld.sock diff --git a/config/environments/development.rb b/config/environments/development.rb index a2d2c25..45af11d 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -6,8 +6,9 @@ Thingspeak::Application.configure do # since you don't have to restart the webserver when you make code changes. config.cache_classes = false - # Log error messages when you accidentally call methods on nil. - config.whiny_nils = true + config.eager_load = false + + config.assets.prefix = "/dev-assets" # Show full error reports and disable caching config.consider_all_requests_local = true @@ -19,20 +20,7 @@ Thingspeak::Application.configure do # Print deprecation notices to the Rails logger config.active_support.deprecation = :log - # Only use best-standards-support built into browsers - config.action_dispatch.best_standards_support = :builtin - - # Raise exception on mass assignment protection for Active Record models - config.active_record.mass_assignment_sanitizer = :strict - - # Log the query plan for queries taking more than this (works - # with SQLite, MySQL, and PostgreSQL) - config.active_record.auto_explain_threshold_in_seconds = 0.5 - - # Do not compress assets - config.assets.compress = false - - # Expands the lines which load the assets config.assets.debug = true + end diff --git a/config/environments/test.rb b/config/environments/test.rb index 8ccb53b..c480996 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -7,8 +7,7 @@ Thingspeak::Application.configure do # and recreated between test runs. Don't rely on the data there! config.cache_classes = true - # Log error messages when you accidentally call methods on nil. - config.whiny_nils = true + config.eager_load = false # Show full error reports and disable caching config.consider_all_requests_local = true @@ -31,12 +30,8 @@ Thingspeak::Application.configure do # config.active_record.schema_format = :sql # Print deprecation notices to the stderr - config.active_support.deprecation = :stderr - - # Allow pass debug_assets=true as a query parameter to load pages with unpackaged assets - config.assets.allow_debugging = true - - # Configure static asset server for tests with Cache-Control for performance + config.active_support.deprecation = :notify config.serve_static_assets = true - config.static_cache_control = "public, max-age=3600" + end + diff --git a/config/initializers/constants.rb b/config/initializers/constants.rb index 451657a..f6b070f 100644 --- a/config/initializers/constants.rb +++ b/config/initializers/constants.rb @@ -2,5 +2,28 @@ # set to false to only allow updates via HTTP POST GET_SUPPORT = true +# rate limit channel updates +RATE_LIMIT = false + +# number of seconds to wait before a channel can be updated again +RATE_LIMIT_FREQUENCY = '15' + +# main production server to handle all requests (can be a proxy) +APPLICATION_IP_ADDRESS = '127.0.0.1' + +# domain for the API +API_DOMAIN = 'http://127.0.0.1:3000/' + +# get api key from HTTP headers if this value is present +HTTP_HEADER_API_KEY_NAME = 'THINGSPEAKAPIKEY' + +# Twitter api credentials +CONSUMER_KEY = '' +CONSUMER_SECRET = '' + +# reset password base url +RESET_PASSWORD_URL = 'http://127.0.0.1:3000//users/reset_password/' + # allow only these additional locales (use downcase, easier to parse) -ALLOWED_LOCALES = ['pt-br','it'] \ No newline at end of file +ALLOWED_LOCALES = ['pt-br','it'] + diff --git a/config/initializers/secret_token.rb b/config/initializers/secret_token.rb index ffcd463..c0f7b9e 100644 --- a/config/initializers/secret_token.rb +++ b/config/initializers/secret_token.rb @@ -4,4 +4,5 @@ # If you change this key, all old signed cookies will become invalid! # Make sure the secret is at least 30 characters and all random, # no regular words or you'll be exposed to dictionary attacks. -Thingspeak::Application.config.secret_token = '44a84c8a4b53e95aecc92b38a267eaef3853d876968ad30f0b21023922b9dbaed1976e8a29884121e124720bfe3a13f8b1b0078f94f840866f83fc9bfbd75f73' +Thingspeak::Application.config.secret_key_base = '8dbb2d4ce6ad0f87b886c4bf796b1f8f94268837776ae730f2fa2724ef1643e0eb3d4a814a01512e9e73902ea88d5553e367e321d44522bc802153369ebe4cf9' + diff --git a/config/initializers/timestamp_json_override.rb b/config/initializers/timestamp_json_override.rb new file mode 100644 index 0000000..e48eff1 --- /dev/null +++ b/config/initializers/timestamp_json_override.rb @@ -0,0 +1,11 @@ +#Changing the as_json method to remove the milliseconds from TimeWithZone to_json result (just like in Rails 3) +class ActiveSupport::TimeWithZone + def as_json(options = {}) + if ActiveSupport::JSON::Encoding.use_standard_json_time_format + xmlschema + else + %(#{time.strftime("%Y/%m/%d %H:%M:%S")} #{formatted_offset(false)}) + end + end +end + diff --git a/config/locales/en.yml b/config/locales/en.yml index d31ccf4..4e040dd 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -7,8 +7,9 @@ en: formats: pretty: "%a, %b %e at %l:%M %p" about: "About" + account: "Account" account_changes: "Confirm account changes" - account_edit: "Edit Account Information" + account_edit: "Edit Account" account_error: "There were some problems creating your account:" account_error_edit: "There were some problems editing your account:" account_info: "Account Information" @@ -21,6 +22,7 @@ en: api_key: "API Key" api_key_delete: "Delete API Key" api_key_key: "Key" + api_key_new: "Generate New API Key" api_key_read: "Read API Keys" api_key_read_new: "Generate New Read API Key" api_key_write: "Write API Key" @@ -39,6 +41,7 @@ en: channel_create: "Create New Channel" channel_edit: "Edit Channel" channel_error: "There were some problems creating your channel:" + channel_update_success: "The Channel was updated." channel_feed: "Channel Feed" channel_default_field: "Field Label" channel_default_name: "Channel" @@ -47,7 +50,10 @@ en: channel_description: "Description" channel_directions: "Directions" channel_id: "Channel ID" + channel_log_to: "Log to Channel" + channel_logged_to: "Logged to Channel" channel_name: "Name" + channel_ranking: "Percentage Complete" channel_not_public: "This channel is not public." channel_permission: "You don't have permission to view that channel!" channel_public: "Viewing public channel" @@ -56,9 +62,15 @@ en: channel_url: "URL" channels: "Channels" channels_my: "My Channels" + channels_public: "Public Channels" channels_public_view: "View Public Channels" + channel_being_cleared: "This channel is currently being cleared. Any data you post to this channel before clearing is complete may be deleted." + channel_video_type_blank: "Either Youtube, or Vimeo, is required if a Video ID is specified." chart: "Chart" + chart_max: "Max" + chart_min: "Min" chart_background_color: "Background" + chart_is_dynamic: "Dynamic?" chart_embed_code: "Embed Code" chart_example: "Example Chart" chart_color: "Color" @@ -66,7 +78,7 @@ en: chart_owned: "Your Charts" chart_round: "Rounding" chart_type: "Type" - chart_update: "Update" + chart_update: "Update Chart" chart_xaxis: "X-Axis" chart_yaxis: "Y-Axis" charts: "Charts" @@ -84,9 +96,12 @@ en: confirm_device_random_mac: "Are you sure you want to generate a random MAC address for this device?" confirm_device_unique_mac: "Are you sure you want to generate a unique MAC address for this device?" confirm_new_api_key: "Are you sure you want to generate a new write API key?" + confirm_new_talkback_key: "Are you sure you want to generate a new TalkBack API key?" confirm_new_thinghttp_key: "Are you sure you want to generate a new ThingHTTP API key?" confirm_new_thingtweet_key: "Are you sure you want to generate a new ThingTweet API key?" + confirm_new_user_api_key: "Are you sure you want to generate a new API key?" confirm_plugin_delete: "Are you sure you want to delete this plugin?" + confirm_talkback_delete: "Are you sure you want to delete this TalkBack?" confirm_thinghttp_delete: "Are you sure you want to delete this ThingHTTP?" confirm_tweetcontrol_delete: "Are you sure you want to delete this TweetControl?" confirm_twitter_delete: "Are you sure you want to unlink this Twitter account?" @@ -95,6 +110,8 @@ en: data: "Data" days: "Days" delete: "delete" + developer_info: "Developer Info" + device: "Device" device_create: "Add New Device" device_custom_mac: "Enter Custom MAC Address" device_default_name: "Device" @@ -107,6 +124,7 @@ en: device_local_ip_address: "Local IP Address" device_local_port: "Local Port" device_mac: "MAC Address" + device_mac_invalid: "Invalid MAC Address." device_model: "Model" device_port: "Public Port Number" device_random_mac: "Generate Random MAC Address" @@ -123,11 +141,13 @@ en: email: "Email" email_form_add: "Add Email" featured_channels: "Featured Channels" + selected_channels: "Channels" features: "Features" field: "Field" footer: "This is the footer message." forgot: "Forgot your password?" forum: "Forum" + for_more_information: "More Information" generate_thingtweet_arduino_code: "Generate ThingTweet Arduino Code" height: "Height" home: "Home" @@ -140,16 +160,16 @@ en: median: "Median" member_since: "Member since" message_field: "Message Field" - myaccount: "Account" + myaccount: "My Account" mychannels: "My Channels" new: "New" + news: "News" note: "Note" note_save: "Save Note" password: "Password" - password_change_raw: "Change
    Password" + password_change: "Change Password" password_confirmation: "Password Confirmation" - password_confirmation_raw: "Password
    Confirmation" - password_current_raw: "Current
    Password" + password_current: "Current Password" password_forgot: "Forgot your password?" password_forgot_message: "Enter your email address below and we'll send you a link where you can reset your password." password_incorrect: "Your current password was not entered correctly." @@ -178,6 +198,7 @@ en: plugin_name: "Name" plugin_permission: "You don't have permission to access this plugin!" plugins: "Plugins" + plugin_private_flag: "Private?" profile_bio: "Bio" profile_edit: "Edit Public Profile" profile_for: "Profile for" @@ -189,11 +210,73 @@ en: public: "Make Public?" public_header: "Public?" public_profile: "Public Profile" - public_true: "Yes" + public_true: "This channel is public" questions: "Questions" + react: "React" + react_header_name: "Name" + react_new_button: "Create New React" + react_delete_confirm: "Are you sure you wish to delete this condition?" + react_thinghttp_error: "'%{thinghttp_name}' request doesn't belong to you" + react_channel_error: "'%{channel_name}' request doesn't belong to you" + react_invalid_error: "%{value} is not a valid value" + react_invalid_number_error: "%{value} is not a value field number" + react_invalid_condition_error: "%{value} is not a valid condition" + react_invalid_condition_type_error: "%{value} is not a valid condition type" + react_twitter_account_required: "You need to add a twitter account to enable tweeting" + react_add_twitter_account: "Add a twitter account" + react_thinghttp_required: "You need to add a ThingHTTP request " + react_add_thinghttp_req: "Add ThingHTTP request" + react_tweet_cant_be_blank: "The tweet can't be blank" + react_type_string: "String" + react_type_status: "Status" + react_type_numeric: "Numeric" + react_type_geo: "Geo" + react_type_nodata: "No Data Check" + react_when_insert: "On Data Insertion" + react_when_10m: "Every 10 minutes" + react_when_30m: "Every 30 minutes" + react_when_60m: "Every 60 minutes" + react_condition_prefix: "If channel" + react_condition_field: "field" + react_condition_contains: "contains" + react_condition_begins: "starts with" + react_condition_ends: "ends with" + react_condition_gt: "is greater than" + react_condition_gte: "is greater than or equal to" + react_condition_lt: "is less than" + react_condition_lte: "is less than or equal to" + react_condition_eq: "is equal to" + react_condition_ne: "is not equal to" + react_condition_within: "is within" + react_condition_further: "is further than" + react_condition_nodata_prefix: "has not been updated for" + react_condition_nodata_suffix: "minutes" + react_condition_geo: "km from" + react_latitude: "latitude" + react_longitude: "longitude" + react_delete: "Delete this React" + react_twitter_delete_warning1: "Cannot delete this twitter account as it is used by %{reacts_count}: %{reacts_list}" + react_twitter_delete_warning2: "Please delete or modify this react before unlinking this twitter account." + react_thinghttp_delete_warning1: "Cannot delete this ThingHTTP as it is used by %{reacts_count}: %{reacts_list}" + react_thinghttp_delete_warning2: "Please delete or modify this react before unlinking this ThingHTTP." + react_default_name: "React" + react_label_condition: "Condition" + react_label_test_frequency: "Test Frequency" + react_label_react_name: "React Name" + react_label_condition_type: "Condition Type" + react_label_action: "Action" + react_label_options: "Options" + react_action_tweet_prefix: "then tweet" + react_action_tweet_suffix: "using Twitter account" + react_action_thinghttp_prefix: "then perform ThingHTTP" + react_option_run_first_time: "Run action only the first time the condition is met" + react_option_run_every_time: "Run action each time condition is met" + react_create_button: "Create React" + react_save_button: "Create React" remember_me: "Remember my User ID" results: "Results" rss: "RSS Feed" + save: "Save" saved: "Saved." saved_error: "Error while saving data." search_empty: "No search results were found." @@ -216,10 +299,42 @@ en: social_channel_error_slug_exists: "Slug is already taken." social_channel_new: "New Social Channel" social_saved: "Submitted, thank you!" + status_messages: "Status Messages" submit: "Submit" sum: "Sum" + scheduled_thinghttp: "Scheduled ThingHTTP" + scheduled_thinghttp_header_name: "name" + scheduled_thinghttp_new_button: "New Scheduled ThingHTTP" + scheduled_thinghttp_delete_confirm: "Are you sure you wish to delete this scheduled ThingHTTP?" + scheduled_thinghttp_label_name: "Name" + scheduledthinghttp_label_frequency: "Frequency" + scheduled_thinghttp_save_button: "Save Scheduled ThingHTTP" + scheduled_thinghttp_create_button: "Create Scheduled ThingHTTP" + scheduledthinghttp_default_name: "Scheduled ThingHTTP" + scheduled_thinghttp_thinghttp_error: "'%{thinghttp_name}' request doesn't belong to you" + scheduled_thinghttp_channel_error: "'%{channel_name}' channel doesn't belong to you" + scheduled_thinghttp_label_rule: "Rule" + scheduled_thinghttp_field_error: "Not a valid field" + support: "Support" + help_scheduled_thinghttp_edit: "" + tag: "tag" tags: "Tags" tags_search: "Search Channels" + talkback: "TalkBack" + talkback_command_add: "Add a new command" + talkback_command_command_string: "Command string" + talkback_command_id: "Command ID" + talkback_command_position: "Position" + talkback_command_remove: "Remove command" + talkback_commands: "Commands" + talkback_create: "New TalkBack" + talkback_delete: "Delete TalkBack" + talkback_delete_message: "Want to delete this TalkBack?" + talkback_edit: "Edit TalkBack" + talkback_id: "TalkBack ID" + talkback_name: "Name" + talkback_new_api_key: "Regenerate API Key" + talkback_update: "Update TalkBack" thinghttp: "ThingHTTP" thinghttp_auth_name: "HTTP Auth Username" thinghttp_auth_pass: "HTTP Auth Password" @@ -256,6 +371,7 @@ en: tos: "Terms of Service" tos_agree: "By signing up, you agree to the" try_again: "Please try again!" + tutorials: "Tutorials" tweetcontrol: "TweetControl" tweetcontrol_delete: "Delete TweetControl" tweetcontrol_delete_message: "Want to delete this TweetControl?" @@ -263,7 +379,7 @@ en: tweetcontrol_new: "Create New TweetControl" tweetcontrol_edit: "Update TweetControl" tweetcontrol_thinghttp: "ThingHTTP Action" - tweetcontrol_trigger: "Hashtag Trigger" + tweetcontrol_trigger: "Trigger" twitter_accounts: "Current Twitter accounts" twitter_delete: "Unlink Account" twitter_failure: "Twitter failure." @@ -271,10 +387,13 @@ en: twitter_link_account: "Link Twitter Account" twitter_link_success: "has been successfully linked to ThingTweet." twitter_new_api_key: "Regenerate API Key" - twitter_screen_name: "Twitter Screen Name" + twitter_screen_name: "Twitter Account" upload: "Upload" upload_select: "Upload a CSV file to import data into this channel" uploading: "uploading file..." + upload_successful: "Upload successful." + upload_no_file: "Please specify a file to be uploaded." + upload_no_data: "The uploaded file was empty." url: "URL" user: "User" user_no_public_channels: "This user has no public channels." @@ -288,16 +407,26 @@ en: watched_empty: "You aren't watching any channels." watched_find: "Find some channels to watch." watched_view: "View Watched Channels" + public_link: "Public" + private_link: "Private" + settings_link: "Settings" + api_key_link: "API Key" + data_import_link: "Data Import" + width: "Width" youtube: "YouTube" # help section help: "Help" + help_api_documentation: "API documentation" + help_apps_talkback: "Allow devices to execute queued commands." help_apps_thinghttp: "Create custom POSTs or GETs to other webservices and retrieve the data." help_apps_thingtweet: "Link your Twitter account to ThingSpeak and send Twitter messages using our simple API." help_apps_tweetcontrol: "Listen to commands from Twitter and then perform an action." + help_apps_react: "Perform actions when conditions are met by your data in your channels." help_channel: "Create a channel -- it can be for a device, app, or anything that can send data to ThingSpeak." help_channel_clear: "Clicking on the \"Clear Channel\" button will delete ALL feed data associated with this channel, but will leave the channel's info intact." + help_channel_ranking: "Completeness will help your channel appear higher in the list of public channels." help_channel_feed: "Viewing Data" help_channel_fields: "Add up to 8 fields that can be tracked. A field must be added before it can store data." help_channel_import: "Select a CSV file on your hard drive and import all of its data directly into this channel. Your CSV file should contain a date field in the first column. If your data doesn't contain timezone info, select one appropriately." @@ -320,13 +449,225 @@ en: help_plugins: "Plugins allow you to create custom HTML, JavaScript, and CSS files that can be used to parse and display your data." help_social_channel: "Create a new social channel which will be accessible at:" help_social_channel_public: "All social channels are public. Use the Message Field to allow users to enter other data, such as a message to go along with their submission." + help_talkback: "Send queued commands to your devices with TalkBack." + help_talkback_index: "Create a TalkBack and add some commands. Your device can then execute the stored commands, and those commands will be removed from the queue." + help_talkback_channel: "If a channel log is set, executed commands will be automatically logged to the 'status' field of that channel." + help_talkback_commands_1: "Commands can be added here or" + help_talkback_commands_2: "via the API" + help_talkback_show: "To learn more about using TalkBack, we suggest checking out our" help_thinghttp: "Use ThingHTTP to access other APIs or webpages and parse the responses. You can create and save a full HTTP request to any URL, and then easily access it by using your ThingHTTP API key." help_thinghttp_edit: "Create your custom HTTP request on this page. For example, try the following options:" help_thinghttp_example: "This will send your HTTP GET request to Google Finance and parse the response for an element having an ID of ref_626307_c, which corresponds to the S&P 500 current price change for the day." help_thinghttp_show: "You can now send your ThingHTTP request and view the response using the following URL:" help_thingtweet: "ThingTweet acts as a proxy to Twitter so that your devices can update Twitter statuses without having to implement Open Authentication (OAuth)." - help_tweetcontrol: "Use TweetControl to listen to specific hashtags from Twitter, and then perform customized actions." - help_tweetcontrol_edit: "Fill in the Twitter screen name and a hashtag to listen for." - help_tweetcontrol_hashtag: "The hashtag #thingspeak must also be present in the Twitter status, for example:" - help_tweetcontrol_thinghttp: "Select a ThingHTTP request to use with this TweetControl. The ThingHTTP request will be executed when the TweetControl is triggered." + help_tweetcontrol: "Use TweetControl to listen to specific trigger words from Twitter, and then process a ThingHTTP request." + help_tweetcontrol_edit: "Select Anonymous TweetControl to allow anyone to trigger your TweetControl or fill in a specfic Twitter Account." + help_tweetcontrol_hashtag: "To trigger a TweetControl, you need to send a Twitter Status Update with at least the hashtag #thingspeak and the trigger word, for example:" + help_tweetcontrol_thinghttp: "Select a ThingHTTP request to use with this TweetControl. The ThingHTTP request will be executed when the TweetControl is triggered." + help_tweetcontrol_trigger: "Fill in a trigger to listen for." help_options: "more help" + help_react: "React allow you to trigger a ThingHTTP request or send a tweet using ThingTweet when your ThingSpeak Channel meets a certain condition. " + help_react_create: "Create your React condition here." + help_react_edit: "Update your React condition here." + help_react_edit1: "Select a condition type to correspond with the type of data you wish to check and set your condition values." + help_react_edit2: "Use the Test Frequency setting to choose to test your condition on every insert or on a periodic basis." + help_react_edit3: "Select ThingTweet or ThingHTTP as the action to be performed if the condition is met." + + # unsorted + window_map: "Channel Location" + window_status: "Channel Status Updates" + window_channel_video: "Channel Video" + window_field_chart: "Field %{field_number} Chart" + window_plugin: "%{name} (Plugin)" + portlets_available: "Available Windows" + private_view: "Private View" + public_view: "Public View" + channel_settings: "Channel Settings" + data_import: "Data Import" + portlets_all_displayed: "All available windows are being displayed" + portlets_add: "Click a rectangle to add that windows to the dashboard" + add_portlets: "Add Windows" + + # documentation error headers + error_code: "Error Code" + error_http_status: "HTTP Status" + error_message: "Message" + error_details: "Details" + + # errors + error_codes: + error_auth_required: + message: "Authorization Required" + http_status: 401 + details: "Please make sure that your API key is correct." + error_resource_not_found: + message: "Resource Not Found" + http_status: 404 + details: "The requested resource was not found. Please check the URL and try again." + error_method_invalid: + message: "Method Not Allowed" + http_status: 405 + details: "Please use the proper HTTP method for this request." + error_no_action: + message: "No Action Performed" + http_status: 421 + details: "The server attempted to process your request, but has no action to perform." + error_too_many_requests: + message: "Too Many Requests" + http_status: 429 + details: "Please wait before making another request." + + number: + # Used in number_with_delimiter() + # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' + format: + # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) + separator: "." + # Delimits thousands (e.g. 1,000,000 is a million) (always in groups of three) + delimiter: "," + # Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00) + precision: 3 + # If set to true, precision will mean the number of significant digits instead + # of the number of decimal digits (1234 with precision 2 becomes 1200, 1.23543 becomes 1.2) + significant: false + # If set, the zeros after the decimal separator will always be stripped (eg.: 1.200 will be 1.2) + strip_insignificant_zeros: false + + # Used in number_to_currency() + currency: + format: + # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) + format: "%u%n" + unit: "$" + # These five are to override number.format and are optional + separator: "." + delimiter: "," + precision: 2 + significant: false + strip_insignificant_zeros: false + + # Used in number_to_percentage() + percentage: + format: + # These five are to override number.format and are optional + # separator: + delimiter: "" + # precision: + # significant: false + # strip_insignificant_zeros: false + format: "%n%" + + # Used in number_to_precision() + precision: + format: + # These five are to override number.format and are optional + # separator: + delimiter: "" + # precision: + # significant: false + # strip_insignificant_zeros: false + + # Used in number_to_human_size() and number_to_human() + human: + format: + # These five are to override number.format and are optional + # separator: + delimiter: "" + precision: 3 + significant: true + strip_insignificant_zeros: true + # Used in number_to_human_size() + storage_units: + # Storage units output formatting. + # %u is the storage unit, %n is the number (default: 2 MB) + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + # Used in number_to_human() + decimal_units: + format: "%n %u" + # Decimal units output formatting + # By default we will only quantify some of the exponents + # but the commented ones might be defined or overridden + # by the user. + units: + # femto: Quadrillionth + # pico: Trillionth + # nano: Billionth + # micro: Millionth + # mili: Thousandth + # centi: Hundredth + # deci: Tenth + unit: "" + # ten: + # one: Ten + # other: Tens + # hundred: Hundred + thousand: Thousand + million: Million + billion: Billion + trillion: Trillion + quadrillion: Quadrillion + + # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() + datetime: + distance_in_words: + half_a_minute: "half a minute" + less_than_x_seconds: + one: "less than 1 second" + other: "less than %{count} seconds" + x_seconds: + one: "1 second" + other: "%{count} seconds" + less_than_x_minutes: + one: "less than a minute" + other: "less than %{count} minutes" + x_minutes: + one: "1 minute" + other: "%{count} minutes" + about_x_hours: + one: "about 1 hour" + other: "about %{count} hours" + x_days: + one: "1 day" + other: "%{count} days" + about_x_months: + one: "about 1 month" + other: "about %{count} months" + x_months: + one: "1 month" + other: "%{count} months" + about_x_years: + one: "about 1 year" + other: "about %{count} years" + over_x_years: + one: "over 1 year" + other: "over %{count} years" + almost_x_years: + one: "almost 1 year" + other: "almost %{count} years" + prompts: + year: "Year" + month: "Month" + day: "Day" + hour: "Hour" + minute: "Minute" + second: "Seconds" + + helpers: + select: + # Default value for :prompt => true in FormOptionsHelper + prompt: "Please select" + + # Default translation keys for submit and button FormHelper + submit: + create: 'Create %{model}' + update: 'Update %{model}' + submit: 'Save %{model}' + diff --git a/config/locales/it.yml b/config/locales/it.yml index 6c96e2a..566c0fa 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -365,6 +365,11 @@ it: watched_empty: "Non sta guardando alcun canale." watched_find: "Trova qualche canale da guardare." watched_view: "Visualizza i Canali Visti" + public_link: "Public" + private_link: "Private" + settings_link: "Settings" + api_key_link: "API Key" + data_import_link: "Data Import" width: "Larghezza" youtube: "YouTube" @@ -413,7 +418,7 @@ it: help_react: "React allow you to trigger a ThingHTTP request or send a tweet using ThingTweet when your ThingSpeak Channel meets a certain condition. " help_react_create: "Create your React condition here." help_react_edit: "Update your React condition here." - help_react_edit1: "Select a condtion type to corespond with the type of data you wish to check and set your condition values." + help_react_edit1: "Select a condition type to correspond with the type of data you wish to check and set your condition values." help_react_edit2: "Use the Test Frequency setting to choose to test your condition on every insert or on a periodic basis." help_react_edit3: "Select ThingTweet or ThingHTTP as the action to be performed if the condition is met." window_map: "Mappa" @@ -582,4 +587,4 @@ it: submit: create: 'Create %{model}' update: 'Update %{model}' - submit: 'Save %{model}' + submit: 'Save %{model}' \ No newline at end of file diff --git a/config/locales/pt-br.yml b/config/locales/pt-br.yml index e3acf74..e699922 100644 --- a/config/locales/pt-br.yml +++ b/config/locales/pt-br.yml @@ -39,6 +39,7 @@ channel_create: "Criar novo canal" channel_edit: "Editar Canal" channel_error: "Ocorreram alguns problemas ao criar seu canal:" + channel_update_success: "The Channel was updated." channel_feed: "Dados do Canal" channel_default_field: "Rótulo do campo" channel_default_name: "Canal" @@ -48,7 +49,8 @@ channel_directions: "Direções" channel_id: "ID do canal" channel_name: "Nome" - channel_not_public: "Este canal é público." + channel_ranking: "Percentage Complete" + channel_not_public: "Este canal não é público." channel_permission: "Você não tem permissão para visualizar este canal!" channel_public: "Visualizar canal público" channel_public_view: "Visualização Pública" @@ -57,7 +59,12 @@ channels: "Canais" channels_my: "Meus Canais" channels_public_view: "Visualizar canais públicos" + channel_being_cleared: "This channel is currently being cleared. Any data you post to this channel before clearing is complete may be deleted." + channel_video_type_blank: "Ou Youtube, ou Vimeo, é necessário se Video ID é especificado." chart: "Gráfico" + chart_max: "Máximo" + chart_min: "Mínimo" + chart_is_dynamic: "Dinâmico" chart_background_color: "Cor do fundo" chart_embed_code: "Código para embutir" chart_example: "Gráfico de exemplo" @@ -66,7 +73,7 @@ chart_owned: "Seus gráficos" chart_round: "Arredondamento" chart_type: "Tipo" - chart_update: "Atualizar" + chart_update: "Atualizar gráficos" chart_xaxis: "Eixo X" chart_yaxis: "Eixo Y" charts: "Gráficos" @@ -95,6 +102,7 @@ data: "Dados" days: "Dias" delete: "apagar" + device: "Device" device_create: "Adicionar um novo dispositivo" device_custom_mac: "Digitar um endereço MAC personalizado" device_default_name: "Dispositivo" @@ -107,6 +115,7 @@ device_local_ip_address: "Endereço IP Local" device_local_port: "Porta Local" device_mac: "Endereço MAC" + device_mac_invalid: "Invalid MAC Address." device_model: "Modelo" device_port: "Número da porta pública" device_random_mac: "Gerar endereço MAC aleatório" @@ -128,6 +137,7 @@ footer: "Esta é a mensagem de rodapé." forgot: "Esqueceu sua senha?" forum: "Fórum" + for_more_information: "Para Mais Informações" generate_thingtweet_arduino_code: "Gerar código Arduino para o ThingTweet" height: "Altura" home: "Início" @@ -177,7 +187,9 @@ plugin_js: "JavaScript" plugin_name: "Nome" plugin_permission: "Você não tem permissão para apagar isto!" + plugin_private_flag: "Private only?" plugins: "Plugins" + plugin_private_flag: "Private?" profile_bio: "Biografia" profile_edit: "Editar perfil público" profile_for: "Perfil de" @@ -189,8 +201,69 @@ public: "Tornar Público?" public_header: "Público?" public_profile: "Perfil Público" - public_true: "Sim" + public_true: "Este canal é público." questions: "Perguntas" + react: "React" + react_header_name: "Name" + react_new_button: "Create New React" + react_delete_confirm: "Are you sure you wish to delete this condition?" + react_thinghttp_error: "'%{thinghttp_name}' request doesn't belong to you" + react_channel_error: "'%{channel_name}' request doesn't belong to you" + react_invalid_error: "%{value} is not a valid value" + react_invalid_number_error: "%{value} is not a value field number" + react_invalid_condition_error: "%{value} is not a valid condition" + react_invalid_condition_type_error: "%{value} is not a valid condition type" + react_twitter_account_required: "You need to add a twitter account to enable tweeting" + react_add_twitter_account: "Add a twitter account" + react_thinghttp_required: "You need to add a ThingHTTP request " + react_add_thinghttp_req: "Add ThingHTTP request" + react_tweet_cant_be_blank: "The tweet can't be blank" + react_type_string: "String" + react_type_status: "Status" + react_type_numeric: "Numeric" + react_type_geo: "Geo" + react_type_nodata: "No Data Check" + react_when_insert: "On Data Insertion" + react_when_10m: "Every 10 minutes" + react_when_30m: "Every 30 minutes" + react_when_60m: "Every 60 minutes" + react_condition_prefix: "If channel" + react_condition_field: "field" + react_condition_contains: "contains" + react_condition_begins: "starts with" + react_condition_ends: "ends with" + react_condition_gt: "is greater than" + react_condition_gte: "is greater than or equal to" + react_condition_lt: "is less than" + react_condition_lte: "is less than or equal to" + react_condition_eq: "is equal to" + react_condition_ne: "is not equal to" + react_condition_within: "is within" + react_condition_further: "is further than" + react_condition_nodata_prefix: "has not been updated for" + react_condition_nodata_suffix: "minutes" + react_condition_geo: "km from" + react_latitude: "latitude" + react_longitude: "longitude" + react_delete: "Delete this React" + react_twitter_delete_warning1: "Cannot delete this twitter account as it is used by %{reacts_count}: %{reacts_list}" + react_twitter_delete_warning2: "Please delete or modify this react before unlinking this twitter account." + react_thinghttp_delete_warning1: "Cannot delete this ThingHTTP as it is used by %{reacts_count}: %{reacts_list}" + react_thinghttp_delete_warning2: "Please delete or modify this react before unlinking this ThingHTTP." + react_default_name: "React" + react_label_condition: "Condition" + react_label_test_frequency: "Test Frequency" + react_label_react_name: "React Name" + react_label_condition_type: "Condition Type" + react_label_action: "Action" + react_label_options: "Options" + react_action_tweet_prefix: "then tweet" + react_action_tweet_suffix: "using Twitter account" + react_action_thinghttp_prefix: "then perform thinghttp" + react_option_run_first_time: "Run action only the first time the condition is met" + react_option_run_every_time: "Run action each time condition is met" + react_create_button: "Create React" + react_save_button: "Create React" remember_me: "Lembrar meu Login" results: "Resultados" rss: "RSS Feed" @@ -216,6 +289,7 @@ social_channel_error_slug_exists: "Slug já foi usado." social_channel_new: "Novo canal social" social_saved: "Enviado, obrigado!" + status_messages: "Status Messages" submit: "Enviar" sum: "Soma" tags: "Tags" @@ -275,6 +349,9 @@ upload: "Upload" upload_select: "Faça o upload de um arquivo CSV para importar dados para este canal" uploading: "fazendo upload..." + upload_successful: "Upload successful." + upload_no_file: "Please specify a file to be uploaded." + upload_no_data: "The uploaded file was empty." url: "URL" user: "Login" user_no_public_channels: "Este usuário não possui canais públicos." @@ -288,6 +365,11 @@ watched_empty: "Você não está monitorando nenhum canal." watched_find: "Encontrar algum canal para monitorar." watched_view: "Ver canais monitorados" + public_link: "Públicos" + private_link: "Private" + settings_link: "Settings" + api_key_link: "API Key" + data_import_link: "Data Import" width: "Largura" youtube: "YouTube" @@ -296,8 +378,10 @@ help_apps_thinghttp: "Crie POSTs ou GETs personalizados para outros webservices e receba os dados." help_apps_thingtweet: "Conecte sua conta do Twitter ao ThingSpeak e envie mensagens para o Twitter usando nossa API." help_apps_tweetcontrol: "Receba comandos via Twitter e execute ações." + help_apps_react: "Perform actions when conditions are met by your data in your channels." help_channel: "Crie um canal, pode ser para um dispositivo, aplicação ou qualquer outra coisa que envie dados para o ThingSpeak." help_channel_clear: "Clicando em \"Limpar Canal\" todos os registros recebidos por este canal serão apagados, porém as informações do canal permanecerão intactas." + help_channel_ranking: "Completeness will help your channel appear higher in the list of public channels." help_channel_feed: "Como ver os dados enviados" help_channel_fields: "Adiciona até 8 campos de registro. Você deve adicionar um campo antes de armazenar os dados." help_channel_import: "Seleciona um arquivo CSV do seu disco rígido e importe todos os dados diretamente para este canal. Seu arquivo CSV deve conter, no primeiro campo, a data do registro. Se seus dados não contém a zona horária, selecione o timezone correto." @@ -326,7 +410,182 @@ help_thinghttp_show: "Você pode enviar sua chamada via ThingHTTP com a seguinte URL:" help_thingtweet: "ThingTweet atua como um proxy para o Twitter. Assim seus dispositivos podem atualizar o status do Twitter sem precisar implementar o Open Authentication (OAuth)." help_tweetcontrol: "Use o TweetControl para monitorar hashtags específicas do Twitter, e então realizar ações personalizadas." - help_tweetcontrol_edit: "Preencha o login do Twitter e a hashtag que você deseja monitorar." + help_tweetcontrol_edit: "Preencha o login do Twitter." help_tweetcontrol_hashtag: "A hashtag #thingspeak deve estar presente no status do Twitter, por exemplo:" help_tweetcontrol_thinghttp: "Selecione uma chamada ThingHTTP para ser usada por este TweetControl. A chamada ThingHTTP será executada quando o TweetControl for disparado." + help_tweetcontrol_trigger: "Preencha a hashtag que você deseja monitorar." help_options: "mais ajuda" + help_react: "React allow you to trigger a ThingHTTP request or send a tweet using ThingTweet when your ThingSpeak Channel meets a certain condition. " + help_react_create: "Create your React condition here." + help_react_edit: "Update your React condition here." + help_react_edit1: "Select a condition type to correspond with the type of data you wish to check and set your condition values." + help_react_edit2: "Use the Test Frequency setting to choose to test your condition on every insert or on a periodic basis." + help_react_edit3: "Select ThingTweet or ThingHTTP as the action to be performed if the condition is met." + window_map: "Channel Location" + window_status: "Channel Status Updates" + window_channel_video: "Channel Video" + window_field_chart: "Field Chart" + window_plugin: "%{name} (Plugin)" + portlets_available: "Available Portlets" + private_view: "Private View" + public_view: "Public View" + channel_settings: "Channel Settings" + data_import: "Data Import" + portlets_all_displayed: "All available portlets are being displayed" + portlets_add: "Click a rectangle to add that portlet to the dashboard" + add_portlets: "Add Windows" + + + number: + # Used in number_with_delimiter() + # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' + format: + # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) + separator: "." + # Delimits thousands (e.g. 1,000,000 is a million) (always in groups of three) + delimiter: "," + # Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00) + precision: 3 + # If set to true, precision will mean the number of significant digits instead + # of the number of decimal digits (1234 with precision 2 becomes 1200, 1.23543 becomes 1.2) + significant: false + # If set, the zeros after the decimal separator will always be stripped (eg.: 1.200 will be 1.2) + strip_insignificant_zeros: false + + # Used in number_to_currency() + currency: + format: + # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) + format: "%u%n" + unit: "$" + # These five are to override number.format and are optional + separator: "." + delimiter: "," + precision: 2 + significant: false + strip_insignificant_zeros: false + + # Used in number_to_percentage() + percentage: + format: + # These five are to override number.format and are optional + # separator: + delimiter: "" + # precision: + # significant: false + # strip_insignificant_zeros: false + format: "%n%" + + # Used in number_to_precision() + precision: + format: + # These five are to override number.format and are optional + # separator: + delimiter: "" + # precision: + # significant: false + # strip_insignificant_zeros: false + + # Used in number_to_human_size() and number_to_human() + human: + format: + # These five are to override number.format and are optional + # separator: + delimiter: "" + precision: 3 + significant: true + strip_insignificant_zeros: true + # Used in number_to_human_size() + storage_units: + # Storage units output formatting. + # %u is the storage unit, %n is the number (default: 2 MB) + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + # Used in number_to_human() + decimal_units: + format: "%n %u" + # Decimal units output formatting + # By default we will only quantify some of the exponents + # but the commented ones might be defined or overridden + # by the user. + units: + # femto: Quadrillionth + # pico: Trillionth + # nano: Billionth + # micro: Millionth + # mili: Thousandth + # centi: Hundredth + # deci: Tenth + unit: "" + # ten: + # one: Ten + # other: Tens + # hundred: Hundred + thousand: Thousand + million: Million + billion: Billion + trillion: Trillion + quadrillion: Quadrillion + + # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() + datetime: + distance_in_words: + half_a_minute: "half a minute" + less_than_x_seconds: + one: "less than 1 second" + other: "less than %{count} seconds" + x_seconds: + one: "1 second" + other: "%{count} seconds" + less_than_x_minutes: + one: "less than a minute" + other: "less than %{count} minutes" + x_minutes: + one: "1 minute" + other: "%{count} minutes" + about_x_hours: + one: "about 1 hour" + other: "about %{count} hours" + x_days: + one: "1 day" + other: "%{count} days" + about_x_months: + one: "about 1 month" + other: "about %{count} months" + x_months: + one: "1 month" + other: "%{count} months" + about_x_years: + one: "about 1 year" + other: "about %{count} years" + over_x_years: + one: "over 1 year" + other: "over %{count} years" + almost_x_years: + one: "almost 1 year" + other: "almost %{count} years" + prompts: + year: "Year" + month: "Month" + day: "Day" + hour: "Hour" + minute: "Minute" + second: "Seconds" + + helpers: + select: + # Default value for :prompt => true in FormOptionsHelper + prompt: "Please select" + + # Default translation keys for submit and button FormHelper + submit: + create: 'Create %{model}' + update: 'Update %{model}' + submit: 'Save %{model}' \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index ffe55d2..0fb04c1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,52 +1,204 @@ Thingspeak::Application.routes.draw do + # main data posts using this route - match 'update', :to => 'channels#post_data', :as => 'update', :via => ((GET_SUPPORT) ? ['get', 'post'] : 'post') + match 'update', :to => 'channels#post_data', :via => ((GET_SUPPORT) ? [:get, :post] : :post) + match 's/update', :to => 'channels#post_data', :via => [:get, :post] # handle subdomain routes - match '/', :to => 'subdomains#index', :constraints => { :subdomain => 'api' } - match 'crossdomain', :to => 'subdomains#crossdomain', :constraints => { :subdomain => 'api' } - match 'crossdomain', :to => 'subdomains#crossdomain' + get '/', :to => 'subdomains#index', :constraints => { :subdomain => 'api' } + get 'crossdomain', :to => 'subdomains#crossdomain', :constraints => { :subdomain => 'api' } root :to => 'pages#home' - resource :user_session - resource 'account', :to => 'users' - resources :users do - member do - get :reset_password - put :change_password - end + resource :pages do collection do - get :forgot_password + get :home + get :features + get :about + get :headers + get :social_home end end + match 'users/reset_password/:id', :to => 'users#reset_password', :as => 'reset_password', :via => [:get, :post] + patch 'users/change_password/:id', :to => 'users#change_password' + post 'mailer/resetpassword', :to => 'mailer#resetpassword' + + # public user profiles + match 'account/edit_profile' => 'users#edit_profile', :as => 'edit_profile', :via => [:get, :post] + patch 'account/update_profile' => 'users#update_profile', :as => 'update_profile' + # users paths + post 'users/new_api_key' => 'users#new_api_key', :as => 'user_new_api_key' + get 'users/:id/channels(.:format)' => 'users#list_channels', :as => 'list_channels', :constraints => { :id => /.*/ } + get 'users/:glob' => 'users#profile', :as => 'user_profile', :constraints => { :glob => /.*/ } + + resource :user_session + resource 'account', :to => 'users' + resources :users + + # social channels + get 's/' => 'pages#social_home' + get 's/:slug' => 'channels#social_show', :constraints => { :slug => /.*/ } + get 'channels/social_new' => 'channels#social_new' + + # search + resources :tags + # specific feeds - match 'channels/:channel_id/feed(s)(.:format)' => 'feed#index' - match 'channels/:channel_id/field(s)/:field_id(.:format)' => 'feed#index' - match 'channels/:channel_id/field(s)/:field_id/:id(.:format)' => 'feed#show' - match 'channels/:channel_id/feed(s)/entry/:id(.:format)' => 'feed#show' + get 'channels/:channel_id/feed(s)(.:format)' => 'feed#index' + get 'channels/:channel_id/field(s)/:field_id(.:format)' => 'feed#index' + get 'channels/:channel_id/field(s)/:field_id/:id(.:format)' => 'feed#show' + get 'channels/:channel_id/feed(s)/last_average(.:format)' => 'feed#last_average' + get 'channels/:channel_id/feed(s)/last_median(.:format)' => 'feed#last_median' + get 'channels/:channel_id/feed(s)/last_sum(.:format)' => 'feed#last_sum' + get 'channels/:channel_id/feed/entry/:id(.:format)' => 'feed#show' # not sure why this doesn't work with (s) + get 'channels/:channel_id/feeds/entry/:id(.:format)' => 'feed#show' # not sure why this doesn't work with (s) + get 'channels/:channel_id/social_feed' => 'channels#social_feed' + get 'channels/:channel_id/feed(s)/debug' => 'feed#debug' - # import - match 'channels/:channel_id/import' => 'channels#import', :as => 'channel_import' - match 'channels/:channel_id/upload' => 'channels#upload' + # maps + get 'channels/:channel_id/maps/channel_show' => 'maps#channel_show' + get 'channels/:channel_id/status/recent' => 'status#recent' - # nest feeds into channels + # nest the following controllers inside channels resources :channels do + collection do + get :public + get :watched + end member do get :import post :upload post :clear + put :watch end resources :feed + resources :feeds, :to => 'feed' resources :api_keys, :except => [:show, :edit] resources :status - resources :statuses, :to => 'statuses' + resources :statuses, :to => 'status' resources :charts + resources :maps + resources :channels + resources :tags + resources :comments + resources :windows, :only => [:index, :update] do + member do + get :iframe + get :html + put :hide + put :display + end + end end - match 'login' => 'user_sessions#new', :as => :login, :via => :get - match 'logout' => 'user_sessions#destroy', :as => :logout, :via => :delete - match 'mailer/resetpassword', :to => 'mailer#resetpassword', :as => :resetpassword, :via => :post + get 'channels/:channel_id/private_windows' => 'windows#private_windows' + get 'channels/:channel_id/hidden_windows' => 'windows#hidden_windows' + match 'channels/:channel_id/windows' => 'windows#update', :via => [:post, :put] + + resources :comments do + member do + post :vote + end + end + + resources :plugins do + collection do + get 'private_plugins' + get 'public_plugins' + end + end + + resources :devices do + member do + get :thingtweet_arduino_code + get :thingtweet_arduino_select_thingtweet + post :add_mac_address + put :ajax_update + end + end + + resources :pipes + + # twitter status update (version 1) + match 'apps/thingtweet/1/statuses/update(.:format)' => 'thingtweets#update', :via => [:get, :post] + match 'apps/thingtweet/1/statuses/update_debug(.:format)' => 'thingtweets#update_debug', :via => [:get, :post] + + + # thinghttp action + match 'apps/thinghttp/send_request' => 'thinghttp#send_request', :via => [:get, :post] + + # process responses for tweetcontrol + match 'apps/tweetcontrol/process_response' => 'tweetcontrol#process_response', :via => [:get, :post] + + # apps and nested controllers + scope 'apps' do + resources :thingtweets do + collection do + get :authorize_response + end + member do + put :new_api_key + end + end + resources :thinghttp do + resources :header + member do + put :new_api_key + end + end + resources :talkbacks do + member do + put :new_api_key + end + end + resources :tweetcontrol + resources :reacts + resources :scheduled_thinghttps + end + + # talkback api + delete 'talkbacks/:id/commands', :to => 'commands#destroy_all' + delete 'talkbacks/:id/commands/destroy_all', :to => 'commands#destroy_all' + resources :talkbacks do + resources :commands do + collection do + match :execute, :via => [:post, :get] + delete :destroy_all + end + end + end + + resources :apps, :only => ['index'] + + get 'admin', :to => 'admin#index', :as => 'admin' + namespace :admin do + resources :users + resources :channels + resources :twitter_accounts + resources :thinghttps + resources :devices + resources :failedlogins + resources :emails + end + + # app shortcuts + get 'apps/thingtweet', :to => 'thingtweets#index' + get 'apps/react', :to => 'react#index' + + # docs + get 'docs(/:action)', :to => 'docs' + + # users + match 'login' => 'user_sessions#new', :as => :login, :via => [:get, :post] + match 'logout' => 'user_sessions#destroy', :as => :logout, :via => [:get, :post] + match 'forgot_password', :to => 'users#forgot_password', :as => 'forgot_password', :via => [:get, :post] + + # add support for CORS preflighting (matches any OPTIONS route up to 4 levels deep) + # examples: /talkbacks, /talkbacks/4, /talkbacks/4/commands, /talkbacks/4/commands/6 + match '/:foo(/:foo(/:foo)(/:foo))', :to => 'cors#preflight', :via => 'options' + + #match ':controller(/:action(/:id(.:format)))', :via => :all end + diff --git a/db/migrate/20101111054358_create_users.rb b/db/migrate/20101111054358_create_users.rb new file mode 100644 index 0000000..9be2b76 --- /dev/null +++ b/db/migrate/20101111054358_create_users.rb @@ -0,0 +1,29 @@ +class CreateUsers < ActiveRecord::Migration + def self.up + create_table :users do |t| + + t.string :login, :null => false # optional, you can use email instead, or both + t.string :email, :null => false # optional, you can use login instead, or both + t.string :crypted_password, :null => false # optional, see below + t.string :password_salt, :null => false # optional, but highly recommended + t.string :persistence_token, :null => false # required + #t.string :single_access_token, :null => false # optional, see Authlogic::Session::Params + t.string :perishable_token, :null => false # optional, see Authlogic::Session::Perishability + + # Magic columns, just like ActiveRecord's created_at and updated_at. These are automatically maintained by Authlogic if they are present. + #t.integer :login_count, :null => false, :default => 0 # optional, see Authlogic::Session::MagicColumns + #t.integer :failed_login_count, :null => false, :default => 0 # optional, see Authlogic::Session::MagicColumns + #t.datetime :last_request_at # optional, see Authlogic::Session::MagicColumns + t.datetime :current_login_at # optional, see Authlogic::Session::MagicColumns + t.datetime :last_login_at # optional, see Authlogic::Session::MagicColumns + t.string :current_login_ip # optional, see Authlogic::Session::MagicColumns + t.string :last_login_ip + + t.timestamps + end + end + + def self.down + drop_table :users + end +end diff --git a/db/migrate/20101116224140_create_api_keys.rb b/db/migrate/20101116224140_create_api_keys.rb new file mode 100644 index 0000000..6e74b48 --- /dev/null +++ b/db/migrate/20101116224140_create_api_keys.rb @@ -0,0 +1,18 @@ +class CreateApiKeys < ActiveRecord::Migration + def self.up + create_table :api_keys do |t| + t.string :api_key, :limit => 16 + t.integer :device_id + t.integer :feed_id + t.integer :user_id + t.boolean :write_flag, :default => 0 + t.boolean :public_flag, :default => 0 + + t.timestamps + end + end + + def self.down + drop_table :api_keys + end +end diff --git a/db/migrate/20101116225014_add_indexes_to_api_key.rb b/db/migrate/20101116225014_add_indexes_to_api_key.rb new file mode 100644 index 0000000..a9a518f --- /dev/null +++ b/db/migrate/20101116225014_add_indexes_to_api_key.rb @@ -0,0 +1,11 @@ +class AddIndexesToApiKey < ActiveRecord::Migration + def self.up + add_index :api_keys, :api_key, :unique => true + add_index :api_keys, :device_id + end + + def self.down + remove_index :api_keys, :device_id + remove_index :api_keys, :api_key + end +end diff --git a/db/migrate/20101117005031_remove_feed_id_from_api_key.rb b/db/migrate/20101117005031_remove_feed_id_from_api_key.rb new file mode 100644 index 0000000..a01fee8 --- /dev/null +++ b/db/migrate/20101117005031_remove_feed_id_from_api_key.rb @@ -0,0 +1,9 @@ +class RemoveFeedIdFromApiKey < ActiveRecord::Migration + def self.up + remove_column :api_keys, :feed_id + end + + def self.down + add_column :api_keys, :feed_id, :integer + end +end diff --git a/db/migrate/20101117211040_create_feeds.rb b/db/migrate/20101117211040_create_feeds.rb new file mode 100644 index 0000000..75bad85 --- /dev/null +++ b/db/migrate/20101117211040_create_feeds.rb @@ -0,0 +1,22 @@ +class CreateFeeds < ActiveRecord::Migration + def self.up + create_table :feeds do |t| + t.integer :device_id + t.text :raw_data + t.text :data1 + t.text :data2 + t.text :data3 + t.text :data4 + t.text :data5 + t.text :data6 + t.text :data7 + t.text :data8 + + t.timestamps + end + end + + def self.down + drop_table :feeds + end +end diff --git a/db/migrate/20101117211209_add_index_to_feeds.rb b/db/migrate/20101117211209_add_index_to_feeds.rb new file mode 100644 index 0000000..9353632 --- /dev/null +++ b/db/migrate/20101117211209_add_index_to_feeds.rb @@ -0,0 +1,9 @@ +class AddIndexToFeeds < ActiveRecord::Migration + def self.up + add_index :feeds, :device_id + end + + def self.down + remove_index :feeds, :device_id + end +end diff --git a/db/migrate/20101118061100_add_time_zone_to_user.rb b/db/migrate/20101118061100_add_time_zone_to_user.rb new file mode 100644 index 0000000..fddfa9c --- /dev/null +++ b/db/migrate/20101118061100_add_time_zone_to_user.rb @@ -0,0 +1,9 @@ +class AddTimeZoneToUser < ActiveRecord::Migration + def self.up + add_column :users, :time_zone, :string + end + + def self.down + remove_column :users, :time_zone + end +end diff --git a/db/migrate/20101119231040_add_entry_id_to_feeds.rb b/db/migrate/20101119231040_add_entry_id_to_feeds.rb new file mode 100644 index 0000000..97b8e08 --- /dev/null +++ b/db/migrate/20101119231040_add_entry_id_to_feeds.rb @@ -0,0 +1,9 @@ +class AddEntryIdToFeeds < ActiveRecord::Migration + def self.up + add_column :feeds, :entry_id, :integer + end + + def self.down + remove_column :feeds, :entry_id + end +end diff --git a/db/migrate/20101123073857_add_note_to_api_keys.rb b/db/migrate/20101123073857_add_note_to_api_keys.rb new file mode 100644 index 0000000..965d896 --- /dev/null +++ b/db/migrate/20101123073857_add_note_to_api_keys.rb @@ -0,0 +1,9 @@ +class AddNoteToApiKeys < ActiveRecord::Migration + def self.up + add_column :api_keys, :note, :string + end + + def self.down + remove_column :api_keys, :note + end +end diff --git a/db/migrate/20101207175152_change_feed_data_to_fields.rb b/db/migrate/20101207175152_change_feed_data_to_fields.rb new file mode 100644 index 0000000..ff16cea --- /dev/null +++ b/db/migrate/20101207175152_change_feed_data_to_fields.rb @@ -0,0 +1,23 @@ +class ChangeFeedDataToFields < ActiveRecord::Migration + def self.up + rename_column :feeds, :data1, :field1 + rename_column :feeds, :data2, :field2 + rename_column :feeds, :data3, :field3 + rename_column :feeds, :data4, :field4 + rename_column :feeds, :data5, :field5 + rename_column :feeds, :data6, :field6 + rename_column :feeds, :data7, :field7 + rename_column :feeds, :data8, :field8 + end + + def self.down + rename_column :feeds, :field1, :data1 + rename_column :feeds, :field2, :data2 + rename_column :feeds, :field3, :data3 + rename_column :feeds, :field4, :data4 + rename_column :feeds, :field5, :data5 + rename_column :feeds, :field6, :data6 + rename_column :feeds, :field7, :data7 + rename_column :feeds, :field8, :data8 + end +end diff --git a/db/migrate/20101210151518_add_status_to_feeds.rb b/db/migrate/20101210151518_add_status_to_feeds.rb new file mode 100644 index 0000000..fe265ea --- /dev/null +++ b/db/migrate/20101210151518_add_status_to_feeds.rb @@ -0,0 +1,9 @@ +class AddStatusToFeeds < ActiveRecord::Migration + def self.up + add_column :feeds, :status, :string + end + + def self.down + remove_column :feeds, :status + end +end diff --git a/db/migrate/20101217193433_add_field_options_to_channels.rb b/db/migrate/20101217193433_add_field_options_to_channels.rb new file mode 100644 index 0000000..db31fea --- /dev/null +++ b/db/migrate/20101217193433_add_field_options_to_channels.rb @@ -0,0 +1,23 @@ +class AddFieldOptionsToChannels < ActiveRecord::Migration + def self.up + add_column :channels, :options1, :text + add_column :channels, :options2, :text + add_column :channels, :options3, :text + add_column :channels, :options4, :text + add_column :channels, :options5, :text + add_column :channels, :options6, :text + add_column :channels, :options7, :text + add_column :channels, :options8, :text + end + + def self.down + remove_column :channels, :options1 + remove_column :channels, :options2 + remove_column :channels, :options3 + remove_column :channels, :options4 + remove_column :channels, :options5 + remove_column :channels, :options6 + remove_column :channels, :options7 + remove_column :channels, :options8 + end +end diff --git a/db/migrate/20101218173400_create_tags.rb b/db/migrate/20101218173400_create_tags.rb new file mode 100644 index 0000000..7cbedff --- /dev/null +++ b/db/migrate/20101218173400_create_tags.rb @@ -0,0 +1,15 @@ +class CreateTags < ActiveRecord::Migration + def self.up + create_table :tags do |t| + t.string :name + + t.timestamps + end + + add_index :tags, :name + end + + def self.down + drop_table :tags + end +end diff --git a/db/migrate/20101218174125_create_taggings.rb b/db/migrate/20101218174125_create_taggings.rb new file mode 100644 index 0000000..513d4a6 --- /dev/null +++ b/db/migrate/20101218174125_create_taggings.rb @@ -0,0 +1,16 @@ +class CreateTaggings < ActiveRecord::Migration + def self.up + create_table :taggings do |t| + t.integer :tag_id + t.integer :channel_id + + t.timestamps + end + add_index :taggings, :tag_id + add_index :taggings, :channel_id + end + + def self.down + drop_table :taggings + end +end diff --git a/db/migrate/20110119170853_add_geolocation_to_feed.rb b/db/migrate/20110119170853_add_geolocation_to_feed.rb new file mode 100644 index 0000000..964db23 --- /dev/null +++ b/db/migrate/20110119170853_add_geolocation_to_feed.rb @@ -0,0 +1,13 @@ +class AddGeolocationToFeed < ActiveRecord::Migration + def self.up + add_column :feeds, :latitude, :decimal, :precision => 15, :scale => 10 + add_column :feeds, :longitude, :decimal, :precision => 15, :scale => 10 + add_column :feeds, :elevation, :string + end + + def self.down + remove_column :feeds, :latitude + remove_column :feeds, :longitude + remove_column :feeds, :elevation + end +end diff --git a/db/migrate/20110126140659_create_twitters.rb b/db/migrate/20110126140659_create_twitters.rb new file mode 100644 index 0000000..a11ed8e --- /dev/null +++ b/db/migrate/20110126140659_create_twitters.rb @@ -0,0 +1,23 @@ +class CreateTwitters < ActiveRecord::Migration + def self.up + create_table :twitters do |t| + t.string :screen_name + t.integer :user_id + t.integer :twitter_id + t.string :token + t.string :secret + + t.timestamps + end + + add_index :twitters, :user_id + add_index :twitters, :twitter_id + end + + def self.down + remove_index :twitters, :user_id + remove_index :twitters, :twitter_id + + drop_table :twitters + end +end diff --git a/db/migrate/20110126144150_add_api_key_to_twitters.rb b/db/migrate/20110126144150_add_api_key_to_twitters.rb new file mode 100644 index 0000000..77b5ca8 --- /dev/null +++ b/db/migrate/20110126144150_add_api_key_to_twitters.rb @@ -0,0 +1,11 @@ +class AddApiKeyToTwitters < ActiveRecord::Migration + def self.up + add_column :twitters, :api_key, :string, :limit => 16 + add_index :twitters, :api_key + end + + def self.down + remove_index :twitters, :api_key + remove_column :twitters, :api_key + end +end diff --git a/db/migrate/20110217135144_create_headers.rb b/db/migrate/20110217135144_create_headers.rb new file mode 100644 index 0000000..2bacc6b --- /dev/null +++ b/db/migrate/20110217135144_create_headers.rb @@ -0,0 +1,14 @@ +class CreateHeaders < ActiveRecord::Migration + def self.up + create_table :headers do |t| + t.string :name + t.string :value + + t.timestamps + end + end + + def self.down + drop_table :headers + end +end diff --git a/db/migrate/20110225042321_create_plugins.rb b/db/migrate/20110225042321_create_plugins.rb new file mode 100644 index 0000000..65ef7fb --- /dev/null +++ b/db/migrate/20110225042321_create_plugins.rb @@ -0,0 +1,21 @@ +class CreatePlugins < ActiveRecord::Migration + def self.up + create_table :plugins do |t| + t.string :name + t.integer :user_id + t.text :html + t.text :css + t.text :js + + t.timestamps + end + + add_index :plugins, :user_id + end + + def self.down + remove_index :plugins, :user_id + + drop_table :plugins + end +end diff --git a/db/migrate/20110227025236_change_feed_fields_to_strings.rb b/db/migrate/20110227025236_change_feed_fields_to_strings.rb new file mode 100644 index 0000000..41b98d7 --- /dev/null +++ b/db/migrate/20110227025236_change_feed_fields_to_strings.rb @@ -0,0 +1,23 @@ +class ChangeFeedFieldsToStrings < ActiveRecord::Migration + def self.up + change_column :feeds, :field1, :string + change_column :feeds, :field2, :string + change_column :feeds, :field3, :string + change_column :feeds, :field4, :string + change_column :feeds, :field5, :string + change_column :feeds, :field6, :string + change_column :feeds, :field7, :string + change_column :feeds, :field8, :string + end + + def self.down + change_column :feeds, :field1, :text + change_column :feeds, :field2, :text + change_column :feeds, :field3, :text + change_column :feeds, :field4, :text + change_column :feeds, :field5, :text + change_column :feeds, :field6, :text + change_column :feeds, :field7, :text + change_column :feeds, :field8, :text + end +end diff --git a/db/migrate/20110227025649_change_channel_fields_to_strings.rb b/db/migrate/20110227025649_change_channel_fields_to_strings.rb new file mode 100644 index 0000000..19e70f2 --- /dev/null +++ b/db/migrate/20110227025649_change_channel_fields_to_strings.rb @@ -0,0 +1,39 @@ +class ChangeChannelFieldsToStrings < ActiveRecord::Migration + def self.up + change_column :channels, :field1, :string + change_column :channels, :field2, :string + change_column :channels, :field3, :string + change_column :channels, :field4, :string + change_column :channels, :field5, :string + change_column :channels, :field6, :string + change_column :channels, :field7, :string + change_column :channels, :field8, :string + change_column :channels, :options1, :string + change_column :channels, :options2, :string + change_column :channels, :options3, :string + change_column :channels, :options4, :string + change_column :channels, :options5, :string + change_column :channels, :options6, :string + change_column :channels, :options7, :string + change_column :channels, :options8, :string + end + + def self.down + change_column :channels, :field1, :text + change_column :channels, :field2, :text + change_column :channels, :field3, :text + change_column :channels, :field4, :text + change_column :channels, :field5, :text + change_column :channels, :field6, :text + change_column :channels, :field7, :text + change_column :channels, :field8, :text + change_column :channels, :options1, :text + change_column :channels, :options2, :text + change_column :channels, :options3, :text + change_column :channels, :options4, :text + change_column :channels, :options5, :text + change_column :channels, :options6, :text + change_column :channels, :options7, :text + change_column :channels, :options8, :text + end +end diff --git a/db/migrate/20110227211312_add_created_at_index_to_feeds.rb b/db/migrate/20110227211312_add_created_at_index_to_feeds.rb new file mode 100644 index 0000000..7a34df0 --- /dev/null +++ b/db/migrate/20110227211312_add_created_at_index_to_feeds.rb @@ -0,0 +1,9 @@ +class AddCreatedAtIndexToFeeds < ActiveRecord::Migration + def self.up + add_index :feeds, :created_at + end + + def self.down + remove_index :feeds, :created_at + end +end diff --git a/db/migrate/20110227221002_add_double_index_to_feeds.rb b/db/migrate/20110227221002_add_double_index_to_feeds.rb new file mode 100644 index 0000000..327ec7a --- /dev/null +++ b/db/migrate/20110227221002_add_double_index_to_feeds.rb @@ -0,0 +1,13 @@ +class AddDoubleIndexToFeeds < ActiveRecord::Migration + def self.up + remove_index :feeds, :channel_id + remove_index :feeds, :created_at + add_index :feeds, [:channel_id, :created_at] + end + + def self.down + remove_index :feeds, [:channel_id, :created_at] + add_index :feeds, :channel_id + add_index :feeds, :created_at + end +end diff --git a/db/migrate/20110329204643_add_channel_id_entry_id_index_to_feeds.rb b/db/migrate/20110329204643_add_channel_id_entry_id_index_to_feeds.rb new file mode 100644 index 0000000..6f15a3c --- /dev/null +++ b/db/migrate/20110329204643_add_channel_id_entry_id_index_to_feeds.rb @@ -0,0 +1,9 @@ +class AddChannelIdEntryIdIndexToFeeds < ActiveRecord::Migration + def self.up + add_index :feeds, [:channel_id, :entry_id] + end + + def self.down + remove_index :feeds, [:channel_id, :entry_id] + end +end diff --git a/db/migrate/20110405211741_create_pipes.rb b/db/migrate/20110405211741_create_pipes.rb new file mode 100644 index 0000000..50ade73 --- /dev/null +++ b/db/migrate/20110405211741_create_pipes.rb @@ -0,0 +1,19 @@ +class CreatePipes < ActiveRecord::Migration + def self.up + create_table :pipes do |t| + t.string :name, :null => false + t.string :url, :null => false + t.string :slug, :null => false, :unique => true + + t.timestamps + end + + add_index :pipes, :slug + end + + def self.down + remove_index :pipes, :slug + + drop_table :pipes + end +end diff --git a/db/migrate/20110406220648_add_fields_to_pipes.rb b/db/migrate/20110406220648_add_fields_to_pipes.rb new file mode 100644 index 0000000..b77e37c --- /dev/null +++ b/db/migrate/20110406220648_add_fields_to_pipes.rb @@ -0,0 +1,11 @@ +class AddFieldsToPipes < ActiveRecord::Migration + def self.up + add_column :pipes, :parse, :string + add_column :pipes, :cache, :integer + end + + def self.down + remove_column :pipes, :parse + remove_column :pipes, :cache + end +end diff --git a/db/migrate/20110407034539_add_social_to_channels.rb b/db/migrate/20110407034539_add_social_to_channels.rb new file mode 100644 index 0000000..68f4f43 --- /dev/null +++ b/db/migrate/20110407034539_add_social_to_channels.rb @@ -0,0 +1,15 @@ +class AddSocialToChannels < ActiveRecord::Migration + def self.up + add_column :channels, :social, :boolean, :default => 0 + add_column :channels, :slug, :string + + add_index :channels, :slug + end + + def self.down + remove_index :channels, :slug + + remove_column :channels, :slug + remove_column :channels, :social + end +end diff --git a/db/migrate/20110409071450_add_location_to_feeds.rb b/db/migrate/20110409071450_add_location_to_feeds.rb new file mode 100644 index 0000000..cb9f76a --- /dev/null +++ b/db/migrate/20110409071450_add_location_to_feeds.rb @@ -0,0 +1,9 @@ +class AddLocationToFeeds < ActiveRecord::Migration + def self.up + add_column :feeds, :location, :string, :after => :elevation + end + + def self.down + remove_column :feeds, :location + end +end diff --git a/db/migrate/20110409221058_add_status_to_channels.rb b/db/migrate/20110409221058_add_status_to_channels.rb new file mode 100644 index 0000000..df0ae8c --- /dev/null +++ b/db/migrate/20110409221058_add_status_to_channels.rb @@ -0,0 +1,9 @@ +class AddStatusToChannels < ActiveRecord::Migration + def self.up + add_column :channels, :status, :string + end + + def self.down + remove_column :channels, :status + end +end diff --git a/db/migrate/20110419173839_add_url_to_channel.rb b/db/migrate/20110419173839_add_url_to_channel.rb new file mode 100644 index 0000000..4a378b0 --- /dev/null +++ b/db/migrate/20110419173839_add_url_to_channel.rb @@ -0,0 +1,9 @@ +class AddUrlToChannel < ActiveRecord::Migration + def self.up + add_column :channels, :url, :string + end + + def self.down + remove_column :channels, :status + end +end diff --git a/db/migrate/20110425145717_create_comments.rb b/db/migrate/20110425145717_create_comments.rb new file mode 100644 index 0000000..0153fb1 --- /dev/null +++ b/db/migrate/20110425145717_create_comments.rb @@ -0,0 +1,17 @@ +class CreateComments < ActiveRecord::Migration + def self.up + create_table :comments do |t| + t.integer :parent_id + t.text :body + t.integer :flags + t.integer :user_id + t.string :ip_address + + t.timestamps + end + end + + def self.down + drop_table :comments + end +end diff --git a/db/migrate/20110427021512_add_channel_id_to_comments.rb b/db/migrate/20110427021512_add_channel_id_to_comments.rb new file mode 100644 index 0000000..1aa49b2 --- /dev/null +++ b/db/migrate/20110427021512_add_channel_id_to_comments.rb @@ -0,0 +1,9 @@ +class AddChannelIdToComments < ActiveRecord::Migration + def self.up + add_column :comments, :channel_id, :integer + end + + def self.down + remove_column :comments, :channel_id + end +end diff --git a/db/migrate/20110427021659_add_indices_to_comments.rb b/db/migrate/20110427021659_add_indices_to_comments.rb new file mode 100644 index 0000000..b72a3ea --- /dev/null +++ b/db/migrate/20110427021659_add_indices_to_comments.rb @@ -0,0 +1,9 @@ +class AddIndicesToComments < ActiveRecord::Migration + def self.up + add_index :comments, :channel_id + end + + def self.down + remove_index :comments, :channel_id + end +end diff --git a/db/migrate/20110428182848_create_watchings.rb b/db/migrate/20110428182848_create_watchings.rb new file mode 100644 index 0000000..7124a00 --- /dev/null +++ b/db/migrate/20110428182848_create_watchings.rb @@ -0,0 +1,18 @@ +class CreateWatchings < ActiveRecord::Migration + def self.up + create_table :watchings do |t| + t.integer :user_id + t.integer :channel_id + + t.timestamps + end + + add_index :watchings, [:user_id, :channel_id] + end + + def self.down + remove_index :watchings, [:user_id, :channel_id] + + drop_table :watchings + end +end diff --git a/db/migrate/20110428225855_add_video_fields_to_channels.rb b/db/migrate/20110428225855_add_video_fields_to_channels.rb new file mode 100644 index 0000000..50b4f8b --- /dev/null +++ b/db/migrate/20110428225855_add_video_fields_to_channels.rb @@ -0,0 +1,11 @@ +class AddVideoFieldsToChannels < ActiveRecord::Migration + def self.up + add_column :channels, :video_id, :string + add_column :channels, :video_type, :string + end + + def self.down + remove_column :channels, :video_id + remove_column :channels, :video_type + end +end diff --git a/db/migrate/20110513192617_add_fields_to_users.rb b/db/migrate/20110513192617_add_fields_to_users.rb new file mode 100644 index 0000000..24cc6fc --- /dev/null +++ b/db/migrate/20110513192617_add_fields_to_users.rb @@ -0,0 +1,13 @@ +class AddFieldsToUsers < ActiveRecord::Migration + def self.up + add_column :users, :public_flag, :boolean, :default => false + add_column :users, :bio, :text + add_column :users, :website, :string + end + + def self.down + remove_column :users, :website + remove_column :users, :bio + remove_column :users, :public_flag + end +end diff --git a/db/migrate/20110528172838_create_failedlogins.rb b/db/migrate/20110528172838_create_failedlogins.rb new file mode 100644 index 0000000..e5b6817 --- /dev/null +++ b/db/migrate/20110528172838_create_failedlogins.rb @@ -0,0 +1,15 @@ +class CreateFailedlogins < ActiveRecord::Migration + def self.up + create_table :failedlogins do |t| + t.string :login + t.string :password + t.string :ip_address + + t.timestamps + end + end + + def self.down + drop_table :failedlogins + end +end diff --git a/db/migrate/20111209111008_rename_twitters_table.rb b/db/migrate/20111209111008_rename_twitters_table.rb new file mode 100644 index 0000000..1e5b154 --- /dev/null +++ b/db/migrate/20111209111008_rename_twitters_table.rb @@ -0,0 +1,9 @@ +class RenameTwittersTable < ActiveRecord::Migration + def self.up + rename_table :twitters, :twitter_accounts + end + + def self.down + rename_table :twitter_accounts, :twitters + end +end diff --git a/db/migrate/20111220200743_add_index_to_channels.rb b/db/migrate/20111220200743_add_index_to_channels.rb new file mode 100644 index 0000000..3004233 --- /dev/null +++ b/db/migrate/20111220200743_add_index_to_channels.rb @@ -0,0 +1,11 @@ +class AddIndexToChannels < ActiveRecord::Migration + def self.up + add_index :channels, :user_id + add_index :channels, [:public_flag, :last_entry_id, :updated_at], :name => 'channels_public_viewable' + end + + def self.down + remove_index :channels, :user_id + remove_index :channels, :name => 'channels_public_viewable' + end +end diff --git a/db/migrate/20111220205057_add_index_to_user_logins.rb b/db/migrate/20111220205057_add_index_to_user_logins.rb new file mode 100644 index 0000000..994a90c --- /dev/null +++ b/db/migrate/20111220205057_add_index_to_user_logins.rb @@ -0,0 +1,9 @@ +class AddIndexToUserLogins < ActiveRecord::Migration + def self.up + add_index :users, :login + end + + def self.down + remove_index :users, :login + end +end diff --git a/db/migrate/20111222205615_add_index_to_headers_table.rb b/db/migrate/20111222205615_add_index_to_headers_table.rb new file mode 100644 index 0000000..fb8e2a7 --- /dev/null +++ b/db/migrate/20111222205615_add_index_to_headers_table.rb @@ -0,0 +1,9 @@ +class AddIndexToHeadersTable < ActiveRecord::Migration + def self.up + add_index :headers, :thinghttp_id + end + + def self.down + remove_index :headers, :thinghttp_id + end +end diff --git a/db/migrate/20120209003458_create_windows.rb b/db/migrate/20120209003458_create_windows.rb new file mode 100644 index 0000000..e6b632b --- /dev/null +++ b/db/migrate/20120209003458_create_windows.rb @@ -0,0 +1,15 @@ +class CreateWindows < ActiveRecord::Migration + def self.up + create_table :windows do |t| + t.integer :channel_id + t.integer :plugin_id + t.integer :position + + t.timestamps + end + end + + def self.down + drop_table :windows + end +end diff --git a/db/migrate/20120213011639_add_html_to_window.rb b/db/migrate/20120213011639_add_html_to_window.rb new file mode 100644 index 0000000..14c57f6 --- /dev/null +++ b/db/migrate/20120213011639_add_html_to_window.rb @@ -0,0 +1,9 @@ +class AddHtmlToWindow < ActiveRecord::Migration + def self.up + add_column :windows, :html, :text + end + + def self.down + remove_column :windows, :html + end +end diff --git a/db/migrate/20120215111613_add_index_to_users.rb b/db/migrate/20120215111613_add_index_to_users.rb new file mode 100644 index 0000000..fc62737 --- /dev/null +++ b/db/migrate/20120215111613_add_index_to_users.rb @@ -0,0 +1,9 @@ +class AddIndexToUsers < ActiveRecord::Migration + def self.up + add_index :users, :email + end + + def self.down + remove_index :users, :email + end +end diff --git a/db/migrate/20120215111708_add_clearing_flag_to_channel.rb b/db/migrate/20120215111708_add_clearing_flag_to_channel.rb new file mode 100644 index 0000000..96588f1 --- /dev/null +++ b/db/migrate/20120215111708_add_clearing_flag_to_channel.rb @@ -0,0 +1,9 @@ +class AddClearingFlagToChannel < ActiveRecord::Migration + def self.up + add_column :channels, :clearing, :boolean, :null => false, :default => false + end + + def self.down + remove_column :channels, :clearing + end +end diff --git a/db/migrate/20120220015055_add_col_to_windows.rb b/db/migrate/20120220015055_add_col_to_windows.rb new file mode 100644 index 0000000..61fbe89 --- /dev/null +++ b/db/migrate/20120220015055_add_col_to_windows.rb @@ -0,0 +1,11 @@ +class AddColToWindows < ActiveRecord::Migration + def self.up + add_column :windows, :col, :integer + add_column :windows, :title, :string + end + + def self.down + remove_column :windows, :title + remove_column :windows, :col + end +end diff --git a/db/migrate/20120220031559_remove_plugin_id_from_window.rb b/db/migrate/20120220031559_remove_plugin_id_from_window.rb new file mode 100644 index 0000000..e02b8fa --- /dev/null +++ b/db/migrate/20120220031559_remove_plugin_id_from_window.rb @@ -0,0 +1,9 @@ +class RemovePluginIdFromWindow < ActiveRecord::Migration + def self.up + remove_column :windows, :plugin_id + end + + def self.down + add_column :windows, :plugin_id, :string + end +end diff --git a/db/migrate/20120220035936_add_wtype_to_windows.rb b/db/migrate/20120220035936_add_wtype_to_windows.rb new file mode 100644 index 0000000..29e2ac6 --- /dev/null +++ b/db/migrate/20120220035936_add_wtype_to_windows.rb @@ -0,0 +1,9 @@ +class AddWtypeToWindows < ActiveRecord::Migration + def self.up + add_column :windows, :wtype, :string + end + + def self.down + remove_column :windows, :wtype + end +end diff --git a/db/migrate/20120227002240_add_name_to_window.rb b/db/migrate/20120227002240_add_name_to_window.rb new file mode 100644 index 0000000..54cc667 --- /dev/null +++ b/db/migrate/20120227002240_add_name_to_window.rb @@ -0,0 +1,9 @@ +class AddNameToWindow < ActiveRecord::Migration + def self.up + add_column :windows, :name, :string + end + + def self.down + remove_column :windows, :name + end +end diff --git a/db/migrate/20120317011252_create_chart_window_details.rb b/db/migrate/20120317011252_create_chart_window_details.rb new file mode 100644 index 0000000..f0cbfcd --- /dev/null +++ b/db/migrate/20120317011252_create_chart_window_details.rb @@ -0,0 +1,14 @@ +class CreateChartWindowDetails < ActiveRecord::Migration + def self.up + create_table :chart_window_details do |t| + t.integer :chart_window_id + t.integer :field_number + + t.timestamps + end + end + + def self.down + drop_table :chart_window_details + end +end diff --git a/db/migrate/20120319001841_create_portlet_window_details.rb b/db/migrate/20120319001841_create_portlet_window_details.rb new file mode 100644 index 0000000..0e70e3d --- /dev/null +++ b/db/migrate/20120319001841_create_portlet_window_details.rb @@ -0,0 +1,13 @@ +class CreatePortletWindowDetails < ActiveRecord::Migration + def self.up + create_table :portlet_window_details do |t| + t.integer :portlet_window_id + + t.timestamps + end + end + + def self.down + drop_table :portlet_window_details + end +end diff --git a/db/migrate/20120321013341_add_type_to_window.rb b/db/migrate/20120321013341_add_type_to_window.rb new file mode 100644 index 0000000..da47c6f --- /dev/null +++ b/db/migrate/20120321013341_add_type_to_window.rb @@ -0,0 +1,9 @@ +class AddTypeToWindow < ActiveRecord::Migration + def self.up + add_column :windows, :type, :string + end + + def self.down + remove_column :windows, :type + end +end diff --git a/db/migrate/20120323173306_add_options_to_chart_window_details.rb b/db/migrate/20120323173306_add_options_to_chart_window_details.rb new file mode 100644 index 0000000..e469462 --- /dev/null +++ b/db/migrate/20120323173306_add_options_to_chart_window_details.rb @@ -0,0 +1,9 @@ +class AddOptionsToChartWindowDetails < ActiveRecord::Migration + def self.up + add_column :chart_window_details, :options, :string + end + + def self.down + remove_column :chart_window_details, :options + end +end diff --git a/db/migrate/20120331221037_add_private_flag_to_windows.rb b/db/migrate/20120331221037_add_private_flag_to_windows.rb new file mode 100644 index 0000000..355625a --- /dev/null +++ b/db/migrate/20120331221037_add_private_flag_to_windows.rb @@ -0,0 +1,9 @@ +class AddPrivateFlagToWindows < ActiveRecord::Migration + def self.up + add_column :windows, :private_flag, :boolean, :default => false + end + + def self.down + remove_column :windows, :private_flag + end +end diff --git a/db/migrate/20120521003815_add_show_flag_to_windows.rb b/db/migrate/20120521003815_add_show_flag_to_windows.rb new file mode 100644 index 0000000..08f0f27 --- /dev/null +++ b/db/migrate/20120521003815_add_show_flag_to_windows.rb @@ -0,0 +1,9 @@ +class AddShowFlagToWindows < ActiveRecord::Migration + def self.up + add_column :windows, :show_flag, :boolean, :default => true + end + + def self.down + remove_column :windows, :show_flag + end +end diff --git a/db/migrate/20120709152043_add_private_flag_to_plugins.rb b/db/migrate/20120709152043_add_private_flag_to_plugins.rb new file mode 100644 index 0000000..44d8754 --- /dev/null +++ b/db/migrate/20120709152043_add_private_flag_to_plugins.rb @@ -0,0 +1,9 @@ +class AddPrivateFlagToPlugins < ActiveRecord::Migration + def self.up + add_column :plugins, :private_flag, :boolean, :default => true + end + + def self.down + remove_column :plugins, :private_flag + end +end diff --git a/db/migrate/20120716160028_create_plugin_window_details.rb b/db/migrate/20120716160028_create_plugin_window_details.rb new file mode 100644 index 0000000..bba01e4 --- /dev/null +++ b/db/migrate/20120716160028_create_plugin_window_details.rb @@ -0,0 +1,14 @@ +class CreatePluginWindowDetails < ActiveRecord::Migration + def self.up + create_table :plugin_window_details do |t| + t.integer :plugin_id + t.integer :plugin_window_id + + t.timestamps + end + end + + def self.down + drop_table :plugin_window_details + end +end diff --git a/db/migrate/20120821145951_add_ranking_to_channel.rb b/db/migrate/20120821145951_add_ranking_to_channel.rb new file mode 100644 index 0000000..7b27c21 --- /dev/null +++ b/db/migrate/20120821145951_add_ranking_to_channel.rb @@ -0,0 +1,9 @@ +class AddRankingToChannel < ActiveRecord::Migration + def self.up + add_column :channels, :ranking, :integer + end + + def self.down + remove_column :channels, :ranking + end +end diff --git a/db/migrate/20120907024520_add_index_to_channel.rb b/db/migrate/20120907024520_add_index_to_channel.rb new file mode 100644 index 0000000..63f1549 --- /dev/null +++ b/db/migrate/20120907024520_add_index_to_channel.rb @@ -0,0 +1,8 @@ +class AddIndexToChannel < ActiveRecord::Migration + def self.up + add_index(:channels, :ranking) + end + + def self.down + end +end diff --git a/db/migrate/20130618221922_change_api_key.rb b/db/migrate/20130618221922_change_api_key.rb new file mode 100644 index 0000000..ecf8d09 --- /dev/null +++ b/db/migrate/20130618221922_change_api_key.rb @@ -0,0 +1,6 @@ +class ChangeApiKey < ActiveRecord::Migration + def change + change_column :twitter_accounts, :api_key, :string + end + +end diff --git a/db/migrate/20130621124211_change_api_key_limit.rb b/db/migrate/20130621124211_change_api_key_limit.rb new file mode 100644 index 0000000..523fe47 --- /dev/null +++ b/db/migrate/20130621124211_change_api_key_limit.rb @@ -0,0 +1,6 @@ +class ChangeApiKeyLimit < ActiveRecord::Migration + def change + change_column :twitter_accounts, :api_key, :string, :limit => 17, :null => false + end + +end diff --git a/db/migrate/20131203192610_add_indexes_to_portlets.rb b/db/migrate/20131203192610_add_indexes_to_portlets.rb new file mode 100644 index 0000000..32eadf2 --- /dev/null +++ b/db/migrate/20131203192610_add_indexes_to_portlets.rb @@ -0,0 +1,7 @@ +class AddIndexesToPortlets < ActiveRecord::Migration + def change + add_index :windows, :channel_id + add_index :portlet_window_details, :portlet_window_id + end +end + diff --git a/db/migrate/20131203194235_add_index_to_chart_window_details.rb b/db/migrate/20131203194235_add_index_to_chart_window_details.rb new file mode 100644 index 0000000..49e97c1 --- /dev/null +++ b/db/migrate/20131203194235_add_index_to_chart_window_details.rb @@ -0,0 +1,6 @@ +class AddIndexToChartWindowDetails < ActiveRecord::Migration + def change + add_index :chart_window_details, :chart_window_id + end +end + diff --git a/db/migrate/20131203194541_add_persistence_index_to_users.rb b/db/migrate/20131203194541_add_persistence_index_to_users.rb new file mode 100644 index 0000000..7fee8b9 --- /dev/null +++ b/db/migrate/20131203194541_add_persistence_index_to_users.rb @@ -0,0 +1,6 @@ +class AddPersistenceIndexToUsers < ActiveRecord::Migration + def change + add_index :users, :persistence_token + end +end + diff --git a/db/migrate/20131203195328_add_index_to_plugin_window_details.rb b/db/migrate/20131203195328_add_index_to_plugin_window_details.rb new file mode 100644 index 0000000..bb121ed --- /dev/null +++ b/db/migrate/20131203195328_add_index_to_plugin_window_details.rb @@ -0,0 +1,6 @@ +class AddIndexToPluginWindowDetails < ActiveRecord::Migration + def change + add_index :plugin_window_details, :plugin_window_id + end +end + diff --git a/db/migrate/20131218181245_add_api_key_to_users.rb b/db/migrate/20131218181245_add_api_key_to_users.rb new file mode 100644 index 0000000..42f148b --- /dev/null +++ b/db/migrate/20131218181245_add_api_key_to_users.rb @@ -0,0 +1,6 @@ +class AddApiKeyToUsers < ActiveRecord::Migration + def change + add_column :users, :api_key, :string, :limit => 16 + end +end + diff --git a/db/migrate/20131218191938_add_index_on_api_keys_to_user.rb b/db/migrate/20131218191938_add_index_on_api_keys_to_user.rb new file mode 100644 index 0000000..867b3a6 --- /dev/null +++ b/db/migrate/20131218191938_add_index_on_api_keys_to_user.rb @@ -0,0 +1,6 @@ +class AddIndexOnApiKeysToUser < ActiveRecord::Migration + def change + add_index :users, :api_key + end +end + diff --git a/db/migrate/20140121232049_create_daily_feeds.rb b/db/migrate/20140121232049_create_daily_feeds.rb new file mode 100644 index 0000000..26ef8e3 --- /dev/null +++ b/db/migrate/20140121232049_create_daily_feeds.rb @@ -0,0 +1,15 @@ +class CreateDailyFeeds < ActiveRecord::Migration + def change + create_table :daily_feeds do |t| + t.integer :channel_id + t.date :date + t.string :calculation, :limit => 20 + t.string :result + + t.timestamps + end + + add_index :daily_feeds, [:channel_id, :date] + end +end + diff --git a/db/migrate/20140122222754_remove_timestamps_from_daily_feeds.rb b/db/migrate/20140122222754_remove_timestamps_from_daily_feeds.rb new file mode 100644 index 0000000..b56d426 --- /dev/null +++ b/db/migrate/20140122222754_remove_timestamps_from_daily_feeds.rb @@ -0,0 +1,12 @@ +class RemoveTimestampsFromDailyFeeds < ActiveRecord::Migration + def up + remove_column :daily_feeds, :created_at + remove_column :daily_feeds, :updated_at + end + + def down + add_column :daily_feeds, :created_at, :datetime + add_column :daily_feeds, :updated_at, :datetime + end +end + diff --git a/db/migrate/20140122223014_add_field_to_daily_feeds.rb b/db/migrate/20140122223014_add_field_to_daily_feeds.rb new file mode 100644 index 0000000..b07077b --- /dev/null +++ b/db/migrate/20140122223014_add_field_to_daily_feeds.rb @@ -0,0 +1,6 @@ +class AddFieldToDailyFeeds < ActiveRecord::Migration + def change + add_column :daily_feeds, :field, :integer, :limit => 1 + end +end + diff --git a/db/migrate/20140130213435_remove_raw_data_from_feeds.rb b/db/migrate/20140130213435_remove_raw_data_from_feeds.rb new file mode 100644 index 0000000..48493bd --- /dev/null +++ b/db/migrate/20140130213435_remove_raw_data_from_feeds.rb @@ -0,0 +1,6 @@ +class RemoveRawDataFromFeeds < ActiveRecord::Migration + def change + remove_column :feeds, :raw_data + end +end + diff --git a/db/migrate/20140203191645_change_twitter_accounts_twitter_id.rb b/db/migrate/20140203191645_change_twitter_accounts_twitter_id.rb new file mode 100644 index 0000000..2489b2a --- /dev/null +++ b/db/migrate/20140203191645_change_twitter_accounts_twitter_id.rb @@ -0,0 +1,6 @@ +class ChangeTwitterAccountsTwitterId < ActiveRecord::Migration + def change + change_column :twitter_accounts, :twitter_id, :integer, :limit => 8 + end +end + diff --git a/db/schema.rb b/db/schema.rb index db637f9..a78c55a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1,3 +1,4 @@ +# encoding: UTF-8 # This file is auto-generated from the current state of the database. Instead # of editing this file, please use the migrations feature of Active Record to # incrementally modify your database, and then regenerate this schema definition. @@ -8,29 +9,29 @@ # from scratch. The latter is a flawed and unsustainable approach (the more migrations # you'll amass, the slower it'll run and the greater likelihood for issues). # -# It's strongly recommended to check this file into your version control system. +# It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(:version => 20110329210210) do +ActiveRecord::Schema.define(version: 20140203191645) do - create_table "api_keys", :force => true do |t| - t.string "api_key", :limit => 16 + create_table "api_keys", force: true do |t| + t.string "api_key", limit: 16 t.integer "channel_id" t.integer "user_id" - t.boolean "write_flag", :default => false + t.boolean "write_flag", default: false t.datetime "created_at" t.datetime "updated_at" t.string "note" end - add_index "api_keys", ["api_key"], :name => "index_api_keys_on_api_key", :unique => true - add_index "api_keys", ["channel_id"], :name => "index_api_keys_on_channel_id" + add_index "api_keys", ["api_key"], name: "index_api_keys_on_api_key", unique: true, using: :btree + add_index "api_keys", ["channel_id"], name: "index_api_keys_on_channel_id", using: :btree - create_table "channels", :force => true do |t| + create_table "channels", force: true do |t| t.integer "user_id" t.string "name" t.string "description" - t.decimal "latitude", :precision => 15, :scale => 10 - t.decimal "longitude", :precision => 15, :scale => 10 + t.decimal "latitude", precision: 15, scale: 10 + t.decimal "longitude", precision: 15, scale: 10 t.string "field1" t.string "field2" t.string "field3" @@ -51,7 +52,7 @@ ActiveRecord::Schema.define(:version => 20110329210210) do t.datetime "updated_at" t.string "elevation" t.integer "last_entry_id" - t.boolean "public_flag", :default => false + t.boolean "public_flag", default: false t.string "options1" t.string "options2" t.string "options3" @@ -60,11 +61,93 @@ ActiveRecord::Schema.define(:version => 20110329210210) do t.string "options6" t.string "options7" t.string "options8" + t.boolean "social", default: false + t.string "slug" + t.string "status" + t.string "url" + t.string "video_id" + t.string "video_type" + t.boolean "clearing", default: false, null: false + t.integer "ranking" end - create_table "feeds", :force => true do |t| + add_index "channels", ["public_flag", "last_entry_id", "updated_at"], name: "channels_public_viewable", using: :btree + add_index "channels", ["ranking"], name: "index_channels_on_ranking", using: :btree + add_index "channels", ["slug"], name: "index_channels_on_slug", using: :btree + add_index "channels", ["user_id"], name: "index_channels_on_user_id", using: :btree + + create_table "chart_window_details", force: true do |t| + t.integer "chart_window_id" + t.integer "field_number" + t.datetime "created_at" + t.datetime "updated_at" + t.string "options" + end + + add_index "chart_window_details", ["chart_window_id"], name: "index_chart_window_details_on_chart_window_id", using: :btree + + create_table "commands", force: true do |t| + t.string "command_string" + t.integer "position" + t.integer "talkback_id" + t.datetime "executed_at" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "commands", ["talkback_id", "executed_at"], name: "index_commands_on_talkback_id_and_executed_at", using: :btree + + create_table "comments", force: true do |t| + t.integer "parent_id" + t.text "body" + t.integer "flags" + t.integer "user_id" + t.string "ip_address" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "channel_id" + end + + add_index "comments", ["channel_id"], name: "index_comments_on_channel_id", using: :btree + + create_table "daily_feeds", force: true do |t| + t.integer "channel_id" + t.date "date" + t.string "calculation", limit: 20 + t.string "result" + t.integer "field", limit: 1 + end + + add_index "daily_feeds", ["channel_id", "date"], name: "index_daily_feeds_on_channel_id_and_date", using: :btree + + create_table "devices", force: true do |t| + t.integer "user_id" + t.string "title" + t.string "model" + t.string "ip_address" + t.integer "port" + t.string "mac_address" + t.datetime "created_at" + t.datetime "updated_at" + t.string "local_ip_address" + t.integer "local_port" + t.string "default_gateway" + t.string "subnet_mask" + end + + add_index "devices", ["mac_address"], name: "index_devices_on_mac_address", using: :btree + add_index "devices", ["user_id"], name: "index_devices_on_user_id", using: :btree + + create_table "failedlogins", force: true do |t| + t.string "login" + t.string "password" + t.string "ip_address" + t.datetime "created_at" + t.datetime "updated_at" + end + + create_table "feeds", force: true do |t| t.integer "channel_id" - t.text "raw_data" t.string "field1" t.string "field2" t.string "field3" @@ -77,21 +160,200 @@ ActiveRecord::Schema.define(:version => 20110329210210) do t.datetime "updated_at" t.integer "entry_id" t.string "status" - t.decimal "latitude", :precision => 15, :scale => 10 - t.decimal "longitude", :precision => 15, :scale => 10 + t.decimal "latitude", precision: 15, scale: 10 + t.decimal "longitude", precision: 15, scale: 10 t.string "elevation" + t.string "location" end - add_index "feeds", ["channel_id", "created_at"], :name => "index_feeds_on_channel_id_and_created_at" - add_index "feeds", ["channel_id", "entry_id"], :name => "index_feeds_on_channel_id_and_entry_id" + add_index "feeds", ["channel_id", "created_at"], name: "index_feeds_on_channel_id_and_created_at", using: :btree + add_index "feeds", ["channel_id", "entry_id"], name: "index_feeds_on_channel_id_and_entry_id", using: :btree - create_table "users", :force => true do |t| - t.string "login", :null => false - t.string "email", :null => false - t.string "crypted_password", :null => false - t.string "password_salt", :null => false - t.string "persistence_token", :null => false - t.string "perishable_token", :null => false + create_table "headers", force: true do |t| + t.string "name" + t.string "value" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "thinghttp_id" + end + + add_index "headers", ["thinghttp_id"], name: "index_headers_on_thinghttp_id", using: :btree + + create_table "pipes", force: true do |t| + t.string "name", null: false + t.string "url", null: false + t.string "slug", null: false + t.datetime "created_at" + t.datetime "updated_at" + t.string "parse" + t.integer "cache" + end + + add_index "pipes", ["slug"], name: "index_pipes_on_slug", using: :btree + + create_table "plugin_window_details", force: true do |t| + t.integer "plugin_id" + t.integer "plugin_window_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "plugin_window_details", ["plugin_window_id"], name: "index_plugin_window_details_on_plugin_window_id", using: :btree + + create_table "plugins", force: true do |t| + t.string "name" + t.integer "user_id" + t.text "html" + t.text "css" + t.text "js" + t.datetime "created_at" + t.datetime "updated_at" + t.boolean "private_flag", default: true + end + + add_index "plugins", ["user_id"], name: "index_plugins_on_user_id", using: :btree + + create_table "portlet_window_details", force: true do |t| + t.integer "portlet_window_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "portlet_window_details", ["portlet_window_id"], name: "index_portlet_window_details_on_portlet_window_id", using: :btree + + create_table "reacts", force: true do |t| + t.integer "user_id" + t.string "name" + t.string "react_type", limit: 10 + t.integer "run_interval" + t.boolean "run_on_insertion", default: true, null: false + t.datetime "last_run_at" + t.integer "channel_id" + t.integer "field_number" + t.string "condition", limit: 15 + t.string "condition_value" + t.float "condition_lat" + t.float "condition_long" + t.float "condition_elev" + t.integer "actionable_id" + t.boolean "last_result", default: false + t.datetime "created_at" + t.datetime "updated_at" + t.string "actionable_type", default: "Thinghttp" + t.string "action_value" + t.string "latest_value" + t.boolean "activated", default: true + t.boolean "run_action_every_time", default: false + end + + add_index "reacts", ["channel_id", "run_on_insertion"], name: "index_reacts_on_channel_id_and_run_on_insertion", using: :btree + add_index "reacts", ["channel_id"], name: "index_reacts_on_channel_id", using: :btree + add_index "reacts", ["run_interval"], name: "index_reacts_on_run_interval", using: :btree + add_index "reacts", ["user_id"], name: "index_reacts_on_user_id", using: :btree + + create_table "scheduled_thinghttps", force: true do |t| + t.integer "user_id" + t.string "name" + t.boolean "activated", default: true, null: false + t.integer "run_interval" + t.integer "thinghttp_id" + t.integer "channel_id" + t.string "field_name" + t.datetime "last_run_at" + t.string "last_result" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "scheduled_thinghttps", ["activated", "run_interval"], name: "index_scheduled_thinghttps_on_activated_and_run_interval", using: :btree + add_index "scheduled_thinghttps", ["user_id"], name: "index_scheduled_thinghttps_on_user_id", using: :btree + + create_table "taggings", force: true do |t| + t.integer "tag_id" + t.integer "channel_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "taggings", ["channel_id"], name: "index_taggings_on_channel_id", using: :btree + add_index "taggings", ["tag_id"], name: "index_taggings_on_tag_id", using: :btree + + create_table "tags", force: true do |t| + t.string "name" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "tags", ["name"], name: "index_tags_on_name", using: :btree + + create_table "talkbacks", force: true do |t| + t.string "api_key", limit: 16 + t.datetime "created_at" + t.datetime "updated_at" + t.integer "user_id" + t.string "name" + t.integer "channel_id" + end + + add_index "talkbacks", ["api_key"], name: "index_talkbacks_on_api_key", using: :btree + add_index "talkbacks", ["user_id"], name: "index_talkbacks_on_user_id", using: :btree + + create_table "thinghttps", force: true do |t| + t.integer "user_id" + t.string "api_key", limit: 16 + t.text "url" + t.string "auth_name" + t.string "auth_pass" + t.string "method" + t.string "content_type" + t.string "http_version" + t.string "host" + t.text "body" + t.datetime "created_at" + t.datetime "updated_at" + t.string "name" + t.string "parse" + end + + add_index "thinghttps", ["api_key"], name: "index_thinghttps_on_api_key", using: :btree + add_index "thinghttps", ["user_id"], name: "index_thinghttps_on_user_id", using: :btree + + create_table "tweetcontrols", force: true do |t| + t.string "screen_name" + t.string "trigger" + t.string "control_type" + t.integer "control_key" + t.string "control_string" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "user_id" + end + + add_index "tweetcontrols", ["screen_name"], name: "index_tweetcontrols_on_screen_name", using: :btree + add_index "tweetcontrols", ["user_id"], name: "index_tweetcontrols_on_user_id", using: :btree + + create_table "twitter_accounts", force: true do |t| + t.string "screen_name" + t.integer "user_id" + t.integer "twitter_id", limit: 8 + t.string "token" + t.string "secret" + t.datetime "created_at" + t.datetime "updated_at" + t.string "api_key", limit: 17, null: false + end + + add_index "twitter_accounts", ["api_key"], name: "index_twitters_on_api_key", using: :btree + add_index "twitter_accounts", ["twitter_id"], name: "index_twitters_on_twitter_id", using: :btree + add_index "twitter_accounts", ["user_id"], name: "index_twitters_on_user_id", using: :btree + + create_table "users", force: true do |t| + t.string "login", null: false + t.string "email", null: false + t.string "crypted_password", null: false + t.string "password_salt", null: false + t.string "persistence_token", null: false + t.string "perishable_token", null: false t.datetime "current_login_at" t.datetime "last_login_at" t.string "current_login_ip" @@ -99,6 +361,41 @@ ActiveRecord::Schema.define(:version => 20110329210210) do t.datetime "created_at" t.datetime "updated_at" t.string "time_zone" + t.boolean "public_flag", default: false + t.text "bio" + t.string "website" + t.string "api_key", limit: 16 end + add_index "users", ["api_key"], name: "index_users_on_api_key", using: :btree + add_index "users", ["email"], name: "index_users_on_email", using: :btree + add_index "users", ["login"], name: "index_users_on_login", using: :btree + add_index "users", ["persistence_token"], name: "index_users_on_persistence_token", using: :btree + + create_table "watchings", force: true do |t| + t.integer "user_id" + t.integer "channel_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "watchings", ["user_id", "channel_id"], name: "index_watchings_on_user_id_and_channel_id", using: :btree + + create_table "windows", force: true do |t| + t.integer "channel_id" + t.integer "position" + t.datetime "created_at" + t.datetime "updated_at" + t.text "html" + t.integer "col" + t.string "title" + t.string "wtype" + t.string "name" + t.string "type" + t.boolean "private_flag", default: false + t.boolean "show_flag", default: true + end + + add_index "windows", ["channel_id"], name: "index_windows_on_channel_id", using: :btree + end diff --git a/lib/api_keys.rb b/lib/api_keys.rb new file mode 100644 index 0000000..0fcace5 --- /dev/null +++ b/lib/api_keys.rb @@ -0,0 +1,11 @@ +module ApiKeys + def api_index (channel_id) + if current_user && !current_user.channels.find_by_id(channel_id).nil? + @channel = current_user.channels.find(channel_id) + end + if current_user && current_user.id == @channel.user_id + @write_key = @channel.api_keys.write_keys.first + @read_keys = @channel.api_keys.read_keys + end + end +end diff --git a/lib/key_utilities.rb b/lib/key_utilities.rb index 6071c57..7781288 100644 --- a/lib/key_utilities.rb +++ b/lib/key_utilities.rb @@ -1,14 +1,18 @@ module KeyUtilities - + # generates a database unique api key - def generate_api_key(size = 16) + def generate_api_key(size = 16, type = 'channel') alphanumerics = ('0'..'9').to_a + ('A'..'Z').to_a - k = (0..(size - 1)).map {alphanumerics[Kernel.rand(36)]}.join - + new_key = (1..size).map {alphanumerics[Kernel.rand(36)]}.join + # if key exists in database, regenerate key - k = generate_api_key if ApiKey.find_by_api_key(k) - - # output the key - k + new_key = generate_api_key if type == 'channel' and ApiKey.find_by_api_key(new_key) + new_key = generate_api_key(16, 'user') if type == 'user' and User.find_by_api_key(new_key) + new_key = generate_api_key(16, 'twitter') if type == 'twitter' and TwitterAccount.find_by_api_key(new_key) + new_key = generate_api_key(16, 'thinghttp') if type == 'thinghttp' and Thinghttp.find_by_api_key(new_key) + new_key = generate_api_key(16, 'talkback') if type == 'talkback' and Talkback.find_by_api_key(new_key) + return new_key end + end + diff --git a/public/500.html b/public/500.html index b80307f..dacf26f 100644 --- a/public/500.html +++ b/public/500.html @@ -5,12 +5,7 @@ @@ -18,9 +13,11 @@ +

    We're sorry, but something went wrong.

    -

    We've been notified about this issue and we'll take a look at it shortly.

    +
    +

    Please send an email to support@thingspeak.com if this problem persists.

    diff --git a/public/assets/GitHub_ThingSpeak_API-f39bba3caddbf4af63e208b8552a98ac.jpg b/public/assets/GitHub_ThingSpeak_API-f39bba3caddbf4af63e208b8552a98ac.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5d77b0ae0a94fee4a93f896f6af23891bd58b866 GIT binary patch literal 26303 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�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 O|F3ud&-JH&7XBC3qTdn# literal 0 HcmV?d00001 diff --git a/public/assets/ThingSpeak_Logo-3139b15204b5af565fca3a5f342ef19c.png b/public/assets/ThingSpeak_Logo-3139b15204b5af565fca3a5f342ef19c.png new file mode 100644 index 0000000000000000000000000000000000000000..78a4d45cc5b91254c0ac5fa8963dd81e4dda7123 GIT binary patch literal 9258 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 M07*qoM6N<$f(+#W{Qv*} literal 0 HcmV?d00001 diff --git a/public/assets/ThingSpeak_Logo.png b/public/assets/ThingSpeak_Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..78a4d45cc5b91254c0ac5fa8963dd81e4dda7123 GIT binary patch literal 9258 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 M07*qoM6N<$f(+#W{Qv*} literal 0 HcmV?d00001 diff --git a/public/assets/application-1369f895a819b8f9cb3fdb98c04ee8e0.js b/public/assets/application-1369f895a819b8f9cb3fdb98c04ee8e0.js new file mode 100644 index 0000000..9e6428d --- /dev/null +++ b/public/assets/application-1369f895a819b8f9cb3fdb98c04ee8e0.js @@ -0,0 +1,6 @@ +function openDialogCenter(t){t.dialog("open");var e=getDimensions(t.parent());t.dialog({position:[e[0],e[1]]})}function getDimensions(t){var e=new Array(2);return e[0]=$(window).width()/2-t.width()/2,e[1]=$(window).height()/2-t.height()/2,e}function updateChart(t,e,i,n,r,s){var i=i,n=n,o=$("#iframe"+t).attr("default_src");o||(o=$("#iframe"+t).attr("src")),src=o.split("?")[0],"line"!=$("#type_"+t).val()&&0==$("#timescale_"+t).val().length&&0==$("#average_"+t).val().length&&0==$("#median_"+t).val().length&&0==$("#sum_"+t).val().length&&$("#timescale_"+t).val(30);var a=[];$(".chart_options"+t).each(function(){var t=$(this).val(),e=$(this).attr("id"),i=e.split("_")[0];t.length>0&&a.push([i,t])});for(var l="";a.length>0;){var h=a.pop();"width"==h[0]&&(i=parseInt(h[1])),"height"==h[0]&&(n=parseInt(h[1])),("type"!=h[0]||"line"!=h[1])&&(l+="&"+h[0]+"="+encodeURIComponent(h[1]))}l.length>0&&(src+="?"+l.substring(1)),e&&t>0&&s?$.update("/channels/"+r+"/charts/"+t,{newOptions:{options:l}}):e&&t>0&&$.update("/channels/"+r+"/charts/"+t,{options:l}),$("#embed"+t).val(''),$("#iframe"+t).attr("src",src),$("#iframe"+t).attr("width",i),$("#iframe"+t).attr("height",n)}function updateSelectValues(){selectedValue=$(this).val(),$(".mutuallyexclusive"+index).each(function(){$(this).val("")}),$(this).val(selectedValue)}function setupChartForm(t){return function(e,i){i.length>0&&$("#"+i.split("=")[0]+"_"+t).val(decodeURIComponent(i.split("=")[1]))}}function setupColumns(t,e){$(sortColumnSetup(t,e)),$(".column").disableSelection()}function createWindowsWithData(t,e,i,n){for(var r in t){for(var s in t[r])var o=s;if(t[r].chart_window&&(a=t[r].chart_window),t[r].plugin_window&&(a=t[r].plugin_window),t[r].portlet_window&&(a=t[r].portlet_window),"undefined"==a)var a=t[r].portlet_window?t[r].portlet_window:t[r].chart_window;colId=a.col,title=a.title;var l=a.html;if(t[r].chart_window){var h=a.id;$("body").append("
    ")}var c=addWindow(n,colId,a.id,o,title,l);c.each(decoratePortlet(e)),c.find(".ui-toggle").click(uiToggleClick),c.find(".ui-view").click(uiViewClick(i)),c.find(".ui-edit").click(uiEditClick(i)),c.find(".ui-close").click(uiCloseClick(i))}}function addWindow(t,e,i,n,r,s){if($("#"+t+"_dialog"+e).append('
    '+r+'
    '+s+"
    "),$("#portlet_"+i).length>1)throw"Portlet count doesn't match what's expected";return $("#portlet_"+i)}function sortColumnSetup(t,e){$(".column").sortable({opacity:.6,helper:function(){return $("
    Drop to re-position
    ")},connectWith:".column",update:updatePortletPositions(t,e)})}function getPortletArray(t){var e=new Array,n=t.split("&");for(i in n)val=n[i].split("=")[1],e.push(val);return e}function uiToggleClick(){$(this).toggleClass("ui-icon-minusthick").toggleClass("ui-icon-plusthick"),$(this).parents(".portlet:first").find(".portlet-content").toggle()}!function(t,e){t.rails!==e&&t.error("jquery-ujs has already been loaded!");var i,n=t(document);t.rails=i={linkClickSelector:"a[data-confirm], a[data-method], a[data-remote], a[data-disable-with]",buttonClickSelector:"button[data-remote]",inputChangeSelector:"select[data-remote], input[data-remote], textarea[data-remote]",formSubmitSelector:"form",formInputClickSelector:"form input[type=submit], form input[type=image], form button[type=submit], form button:not([type])",disableSelector:"input[data-disable-with], button[data-disable-with], textarea[data-disable-with]",enableSelector:"input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled",requiredInputSelector:"input[name][required]:not([disabled]),textarea[name][required]:not([disabled])",fileInputSelector:"input[type=file]",linkDisableSelector:"a[data-disable-with]",CSRFProtection:function(e){var i=t('meta[name="csrf-token"]').attr("content");i&&e.setRequestHeader("X-CSRF-Token",i)},fire:function(e,i,n){var r=t.Event(i);return e.trigger(r,n),r.result!==!1},confirm:function(t){return confirm(t)},ajax:function(e){return t.ajax(e)},href:function(t){return t.attr("href")},handleRemote:function(n){var r,s,o,a,l,h,c,d;if(i.fire(n,"ajax:before")){if(a=n.data("cross-domain"),l=a===e?null:a,h=n.data("with-credentials")||null,c=n.data("type")||t.ajaxSettings&&t.ajaxSettings.dataType,n.is("form")){r=n.attr("method"),s=n.attr("action"),o=n.serializeArray();var u=n.data("ujs:submit-button");u&&(o.push(u),n.data("ujs:submit-button",null))}else n.is(i.inputChangeSelector)?(r=n.data("method"),s=n.data("url"),o=n.serialize(),n.data("params")&&(o=o+"&"+n.data("params"))):n.is(i.buttonClickSelector)?(r=n.data("method")||"get",s=n.data("url"),o=n.serialize(),n.data("params")&&(o=o+"&"+n.data("params"))):(r=n.data("method"),s=i.href(n),o=n.data("params")||null);d={type:r||"GET",data:o,dataType:c,beforeSend:function(t,r){return r.dataType===e&&t.setRequestHeader("accept","*/*;q=0.5, "+r.accepts.script),i.fire(n,"ajax:beforeSend",[t,r])},success:function(t,e,i){n.trigger("ajax:success",[t,e,i])},complete:function(t,e){n.trigger("ajax:complete",[t,e])},error:function(t,e,i){n.trigger("ajax:error",[t,e,i])},crossDomain:l},h&&(d.xhrFields={withCredentials:h}),s&&(d.url=s);var p=i.ajax(d);return n.trigger("ajax:send",p),p}return!1},handleMethod:function(n){var r=i.href(n),s=n.data("method"),o=n.attr("target"),a=t("meta[name=csrf-token]").attr("content"),l=t("meta[name=csrf-param]").attr("content"),h=t('
    '),c='';l!==e&&a!==e&&(c+=''),o&&h.attr("target",o),h.hide().append(c).appendTo("body"),h.submit()},disableFormElements:function(e){e.find(i.disableSelector).each(function(){var e=t(this),i=e.is("button")?"html":"val";e.data("ujs:enable-with",e[i]()),e[i](e.data("disable-with")),e.prop("disabled",!0)})},enableFormElements:function(e){e.find(i.enableSelector).each(function(){var e=t(this),i=e.is("button")?"html":"val";e.data("ujs:enable-with")&&e[i](e.data("ujs:enable-with")),e.prop("disabled",!1)})},allowAction:function(t){var e,n=t.data("confirm"),r=!1;return n?(i.fire(t,"confirm")&&(r=i.confirm(n),e=i.fire(t,"confirm:complete",[r])),r&&e):!0},blankInputs:function(e,i,n){var r,s,o=t(),a=i||"input,textarea",l=e.find(a);return l.each(function(){if(r=t(this),s=r.is("input[type=checkbox],input[type=radio]")?r.is(":checked"):r.val(),!s==!n){if(r.is("input[type=radio]")&&l.filter('input[type=radio]:checked[name="'+r.attr("name")+'"]').length)return!0;o=o.add(r)}}),o.length?o:!1},nonBlankInputs:function(t,e){return i.blankInputs(t,e,!0)},stopEverything:function(e){return t(e.target).trigger("ujs:everythingStopped"),e.stopImmediatePropagation(),!1},disableElement:function(t){t.data("ujs:enable-with",t.html()),t.html(t.data("disable-with")),t.bind("click.railsDisable",function(t){return i.stopEverything(t)})},enableElement:function(t){t.data("ujs:enable-with")!==e&&(t.html(t.data("ujs:enable-with")),t.removeData("ujs:enable-with")),t.unbind("click.railsDisable")}},i.fire(n,"rails:attachBindings")&&(t.ajaxPrefilter(function(t,e,n){t.crossDomain||i.CSRFProtection(n)}),n.delegate(i.linkDisableSelector,"ajax:complete",function(){i.enableElement(t(this))}),n.delegate(i.linkClickSelector,"click.rails",function(n){var r=t(this),s=r.data("method"),o=r.data("params");if(!i.allowAction(r))return i.stopEverything(n);if(r.is(i.linkDisableSelector)&&i.disableElement(r),r.data("remote")!==e){if(!(!n.metaKey&&!n.ctrlKey||s&&"GET"!==s||o))return!0;var a=i.handleRemote(r);return a===!1?i.enableElement(r):a.error(function(){i.enableElement(r)}),!1}return r.data("method")?(i.handleMethod(r),!1):void 0}),n.delegate(i.buttonClickSelector,"click.rails",function(e){var n=t(this);return i.allowAction(n)?(i.handleRemote(n),!1):i.stopEverything(e)}),n.delegate(i.inputChangeSelector,"change.rails",function(e){var n=t(this);return i.allowAction(n)?(i.handleRemote(n),!1):i.stopEverything(e)}),n.delegate(i.formSubmitSelector,"submit.rails",function(n){var r=t(this),s=r.data("remote")!==e,o=i.blankInputs(r,i.requiredInputSelector),a=i.nonBlankInputs(r,i.fileInputSelector);if(!i.allowAction(r))return i.stopEverything(n);if(o&&r.attr("novalidate")==e&&i.fire(r,"ajax:aborted:required",[o]))return i.stopEverything(n);if(s){if(a){setTimeout(function(){i.disableFormElements(r)},13);var l=i.fire(r,"ajax:aborted:file",[a]);return l||setTimeout(function(){i.enableFormElements(r)},13),l}return i.handleRemote(r),!1}setTimeout(function(){i.disableFormElements(r)},13)}),n.delegate(i.formInputClickSelector,"click.rails",function(e){var n=t(this);if(!i.allowAction(n))return i.stopEverything(e);var r=n.attr("name"),s=r?{name:r,value:n.val()}:null;n.closest("form").data("ujs:submit-button",s)}),n.delegate(i.formSubmitSelector,"ajax:beforeSend.rails",function(e){this==e.target&&i.disableFormElements(t(this))}),n.delegate(i.formSubmitSelector,"ajax:complete.rails",function(e){this==e.target&&i.enableFormElements(t(this))}),t(function(){var e=t("meta[name=csrf-token]").attr("content"),i=t("meta[name=csrf-param]").attr("content");t('form input[name="'+i+'"]').val(e)}))}(jQuery),function(t){t.cookie=function(e,i,n){if(arguments.length>1&&(!/Object/.test(Object.prototype.toString.call(i))||null===i||void 0===i)){if(n=t.extend({},n),(null===i||void 0===i)&&(n.expires=-1),"number"==typeof n.expires){var r=n.expires,s=n.expires=new Date;s.setDate(s.getDate()+r)}return i=String(i),document.cookie=[encodeURIComponent(e),"=",n.raw?i:encodeURIComponent(i),n.expires?"; expires="+n.expires.toUTCString():"",n.path?"; path="+n.path:"",n.domain?"; domain="+n.domain:"",n.secure?"; secure":""].join("")}n=i||{};for(var o,a=n.raw?function(t){return t}:decodeURIComponent,l=document.cookie.split("; "),h=0;o=l[h]&&l[h].split("=");h++)if(a(o[0])===e)return a(o[1]||"");return null}}(jQuery),function(){function t(t,e){var i;t||(t={});for(i in e)t[i]=e[i];return t}function e(){var t,e,i=arguments,n={},r=function(t,e){var i,n;"object"!=typeof t&&(t={});for(n in e)e.hasOwnProperty(n)&&(i=e[n],t[n]=i&&"object"==typeof i&&"[object Array]"!==Object.prototype.toString.call(i)&&"number"!=typeof i.nodeType?r(t[n]||{},i):e[n]);return t};for(i[0]===!0&&(n=i[1],i=Array.prototype.slice.call(i,2)),e=i.length,t=0;e>t;t++)n=r(n,i[t]);return n}function i(t,e){return parseInt(t,e||10)}function n(t){return"string"==typeof t}function r(t){return"object"==typeof t}function s(t){return"[object Array]"===Object.prototype.toString.call(t)}function o(t){return"number"==typeof t}function a(t){return le.log(t)/le.LN10}function l(t){return le.pow(10,t)}function h(t,e){for(var i=t.length;i--;)if(t[i]===e){t.splice(i,1);break}}function c(t){return t!==_&&null!==t}function d(t,e,i){var s,o;if(n(e))c(i)?t.setAttribute(e,i):t&&t.getAttribute&&(o=t.getAttribute(e));else if(c(e)&&r(e))for(s in e)t.setAttribute(s,e[s]);return o}function u(t){return s(t)?t:[t]}function p(){var t,e,i=arguments,n=i.length;for(t=0;n>t;t++)if(e=i[t],"undefined"!=typeof e&&null!==e)return e}function f(e,i){we&&i&&i.opacity!==_&&(i.filter="alpha(opacity="+100*i.opacity+")"),t(e.style,i)}function g(e,i,n,r,s){return e=oe.createElement(e),i&&t(e,i),s&&f(e,{padding:0,border:Be,margin:0}),n&&f(e,n),r&&r.appendChild(e),e}function m(e,i){var n=function(){};return n.prototype=new e,t(n.prototype,i),n}function y(t,e,n,r){var s=X.lang,t=+t||0,o=-1===e?(t.toString().split(".")[1]||"").length:isNaN(e=fe(e))?2:e,e=void 0===n?s.decimalPoint:n,r=void 0===r?s.thousandsSep:r,s=0>t?"-":"",n=String(i(t=fe(t).toFixed(o))),a=n.length>3?n.length%3:0;return s+(a?n.substr(0,a)+r:"")+n.substr(a).replace(/(\d{3})(?=\d)/g,"$1"+r)+(o?e+fe(t-n).toFixed(o).slice(2):"")}function v(t,e){return Array((e||2)+1-String(t).length).join(0)+t}function x(t,e,i){var n=t[e];t[e]=function(){var t=Array.prototype.slice.call(arguments);return t.unshift(n),i.apply(this,t)}}function b(t,e){for(var i,n,r,s,o,a="{",l=!1,h=[];-1!==(a=t.indexOf(a));){if(i=t.slice(0,a),l){for(n=i.split(":"),r=n.shift().split("."),o=r.length,i=e,s=0;o>s;s++)i=i[r[s]];n.length&&(n=n.join(":"),r=/\.([0-9])/,s=X.lang,o=void 0,/f$/.test(n)?(o=(o=n.match(r))?o[1]:-1,i=y(i,o,s.decimalPoint,n.indexOf(",")>-1?s.thousandsSep:"")):i=G(n,i))}h.push(i),t=t.slice(a+1),a=(l=!l)?"}":"{"}return h.push(t),h.join("")}function w(t){return le.pow(10,ce(le.log(t)/le.LN10))}function k(t,e,i,n){var r,i=p(i,1);for(r=t/i,e||(e=[1,2,2.5,5,10],n&&n.allowDecimals===!1&&(1===i?e=[1,2,5,10]:.1>=i&&(e=[1/i]))),n=0;nn;n++)t[n].ss_i=n;for(t.sort(function(t,n){return i=e(t,n),0===i?t.ss_i-n.ss_i:i}),n=0;r>n;n++)delete t[n].ss_i}function C(t){for(var e=t.length,i=t[0];e--;)t[e]i&&(i=t[e]);return i}function A(t,e){for(var i in t)t[i]&&t[i]!==e&&t[i].destroy&&t[i].destroy(),delete t[i]}function L(t){W||(W=g(ze)),t&&W.appendChild(t),W.innerHTML=""}function M(t,e){var i="Highcharts error #"+t+": www.highcharts.com/errors/"+t;if(e)throw i;ae.console&&console.log(i)}function I(t){return parseFloat(t.toPrecision(14))}function D(t,e){$=p(t,e.animation)}function E(){var t=X.global.useUTC,e=t?"getUTC":"get",i=t?"setUTC":"set";q=6e4*(t&&X.global.timezoneOffset||0),V=t?Date.UTC:function(t,e,i,n,r,s){return new Date(t,e,p(i,1),p(n,0),p(r,0),p(s,0)).getTime()},U=e+"Minutes",Z=e+"Hours",K=e+"Day",Q=e+"Date",J=e+"Month",te=e+"FullYear",ee=i+"Minutes",ie=i+"Hours",ne=i+"Date",re=i+"Month",se=i+"FullYear"}function O(){}function R(t,e,i,n){this.axis=t,this.pos=e,this.type=i||"",this.isNew=!0,!i&&!n&&this.addLabel()}function z(){this.init.apply(this,arguments)}function B(t,e,i,n,r,s){var o=t.chart.inverted;this.axis=t,this.isNegative=i,this.options=e,this.x=n,this.total=null,this.points={},this.stack=r,this.percent="percent"===s,this.alignOptions={align:e.align||(o?i?"left":"right":"center"),verticalAlign:e.verticalAlign||(o?"middle":i?"bottom":"top"),y:p(e.y,o?4:i?14:-6),x:p(e.x,o?i?-6:6:0)},this.textAlign=e.textAlign||(o?i?"right":"left":"center")}function F(){this.init.apply(this,arguments)}function N(){this.init.apply(this,arguments)}var _,H,W,X,G,$,Y,j,V,q,U,Z,K,Q,J,te,ee,ie,ne,re,se,oe=document,ae=window,le=Math,he=le.round,ce=le.floor,de=le.ceil,ue=le.max,pe=le.min,fe=le.abs,ge=le.cos,me=le.sin,ye=le.PI,ve=2*ye/360,xe=navigator.userAgent,be=ae.opera,we=/msie/i.test(xe)&&!be,ke=8===oe.documentMode,Se=/AppleWebKit/.test(xe),Te=/Firefox/.test(xe),Ce=/(Mobile|Android|Windows Phone)/.test(xe),Pe="http://www.w3.org/2000/svg",Ae=!!oe.createElementNS&&!!oe.createElementNS(Pe,"svg").createSVGRect,Le=Te&&parseInt(xe.split("Firefox/")[1],10)<4,Me=!Ae&&!we&&!!oe.createElement("canvas").getContext,Ie=oe.documentElement.ontouchstart!==_,De={},Ee=0,Oe=function(){},Re=[],ze="div",Be="none",Fe=/^[0-9]+$/,Ne="rgba(192,192,192,"+(Ae?1e-4:.002)+")",_e="stroke-width",He={};ae.Highcharts=ae.Highcharts?M(16,!0):{},G=function(e,i,n){if(!c(i)||isNaN(i))return"Invalid date";var r,e=p(e,"%Y-%m-%d %H:%M:%S"),s=new Date(i-q),o=s[Z](),a=s[K](),l=s[Q](),h=s[J](),d=s[te](),u=X.lang,f=u.weekdays,s=t({a:f[a].substr(0,3),A:f[a],d:v(l),e:l,b:u.shortMonths[h],B:u.months[h],m:v(h+1),y:d.toString().substr(2,2),Y:d,H:v(o),I:v(o%12||12),l:o%12||12,M:v(s[U]()),p:12>o?"AM":"PM",P:12>o?"am":"pm",S:v(s.getSeconds()),L:v(he(i%1e3),3)},Highcharts.dateFormats);for(r in s)for(;-1!==e.indexOf("%"+r);)e=e.replace("%"+r,"function"==typeof s[r]?s[r](i):s[r]);return n?e.substr(0,1).toUpperCase()+e.substr(1):e},S.prototype={wrapColor:function(t){this.color>=t&&(this.color=0)},wrapSymbol:function(t){this.symbol>=t&&(this.symbol=0)}},j=function(){for(var t=0,e=arguments,i=e.length,n={};i>t;t++)n[e[t++]]=e[t];return n}("millisecond",1,"second",1e3,"minute",6e4,"hour",36e5,"day",864e5,"week",6048e5,"month",26784e5,"year",31556952e3),Y={init:function(t,e,i){var n,r,s,e=e||"",o=t.shift,a=e.indexOf("C")>-1,l=a?7:3,e=e.split(" "),i=[].concat(i),h=function(t){for(n=t.length;n--;)"M"===t[n]&&t.splice(n+1,0,t[n+1],t[n+2],t[n+1],t[n+2])};if(a&&(h(e),h(i)),t.isArea&&(r=e.splice(e.length-6,6),s=i.splice(i.length-6,6)),o<=i.length/l&&e.length===i.length)for(;o--;)i=[].concat(i).splice(0,l).concat(i);if(t.shift=0,e.length)for(t=i.length;e.lengthi)for(;s--;)n=parseFloat(t[s]),r[s]=isNaN(n)?t[s]:i*parseFloat(e[s]-n)+n;else r=e;return r}},function(e){ae.HighchartsAdapter=ae.HighchartsAdapter||e&&{init:function(t){var i,r=e.fx,s=r.step,o=e.Tween,a=o&&o.propHooks;i=e.cssHooks.opacity,e.extend(e.easing,{easeOutQuad:function(t,e,i,n,r){return-n*(e/=r)*(e-2)+i}}),e.each(["cur","_default","width","height","opacity"],function(t,e){var i,n=s;"cur"===e?n=r.prototype:"_default"===e&&o&&(n=a[e],e="set"),(i=n[e])&&(n[e]=function(n){var r,n=t?n:this;return"align"!==n.prop?(r=n.elem,r.attr?r.attr(n.prop,"cur"===e?_:n.now):i.apply(this,arguments)):void 0})}),x(i,"get",function(t,e,i){return e.attr?e.opacity||0:t.call(this,e,i)}),i=function(e){var i,n=e.elem;e.started||(i=t.init(n,n.d,n.toD),e.start=i[0],e.end=i[1],e.started=!0),n.attr("d",t.step(e.start,e.end,e.pos,n.toD))},o?a.d={set:i}:s.d=i,this.each=Array.prototype.forEach?function(t,e){return Array.prototype.forEach.call(t,e)}:function(t,e){for(var i=0,n=t.length;n>i;i++)if(e.call(t[i],t[i],i,t)===!1)return i},e.fn.highcharts=function(){var t,e,i="Chart",r=arguments;return n(r[0])&&(i=r[0],r=Array.prototype.slice.call(r,1)),t=r[0],t!==_&&(t.chart=t.chart||{},t.chart.renderTo=this[0],new Highcharts[i](t,r[1]),e=this),t===_&&(e=Re[d(this[0],"data-highcharts-chart")]),e}},getScript:e.getScript,inArray:e.inArray,adapterRun:function(t,i){return e(t)[i]()},grep:e.grep,map:function(t,e){for(var i=[],n=0,r=t.length;r>n;n++)i[n]=e.call(t[n],t[n],n,t);return i},offset:function(t){return e(t).offset()},addEvent:function(t,i,n){e(t).bind(i,n)},removeEvent:function(t,i,n){var r=oe.removeEventListener?"removeEventListener":"detachEvent";oe[r]&&t&&!t[r]&&(t[r]=function(){}),e(t).unbind(i,n)},fireEvent:function(i,n,r,s){var o,a=e.Event(n),l="detached"+n;!we&&r&&(delete r.layerX,delete r.layerY),t(a,r),i[n]&&(i[l]=i[n],i[n]=null),e.each(["preventDefault","stopPropagation"],function(t,e){var i=a[e];a[e]=function(){try{i.call(a)}catch(t){"preventDefault"===e&&(o=!0)}}}),e(i).trigger(a),i[l]&&(i[n]=i[l],i[l]=null),s&&!a.isDefaultPrevented()&&!o&&s(a)},washMouseEvent:function(t){var e=t.originalEvent||t;return e.pageX===_&&(e.pageX=t.pageX,e.pageY=t.pageY),e},animate:function(t,i,n){var r=e(t);t.style||(t.style={}),i.d&&(t.toD=i.d,i.d=1),r.stop(),i.opacity!==_&&t.attr&&(i.opacity+="px"),r.animate(i,n)},stop:function(t){e(t).stop()}}}(ae.jQuery);var We=ae.HighchartsAdapter,Xe=We||{};We&&We.init.call(We,Y);var Ge=Xe.adapterRun,$e=Xe.getScript,Ye=Xe.inArray,je=Xe.each,Ve=Xe.grep,qe=Xe.offset,Ue=Xe.map,Ze=Xe.addEvent,Ke=Xe.removeEvent,Qe=Xe.fireEvent,Je=Xe.washMouseEvent,ti=Xe.animate,ei=Xe.stop,Xe={enabled:!0,x:0,y:15,style:{color:"#666",cursor:"default",fontSize:"11px",lineHeight:"14px"}};X={colors:"#2f7ed8,#0d233a,#8bbc21,#910000,#1aadce,#492970,#f28f43,#77a1e5,#c42525,#a6c96a".split(","),symbols:["circle","diamond","square","triangle","triangle-down"],lang:{loading:"Loading...",months:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),shortMonths:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),weekdays:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),decimalPoint:".",numericSymbols:"k,M,G,T,P,E".split(","),resetZoom:"Reset zoom",resetZoomTitle:"Reset zoom level 1:1",thousandsSep:","},global:{useUTC:!0,canvasToolsURL:"http://code.highcharts.com/3.0.8/modules/canvas-tools.js",VMLRadialGradientURL:"http://code.highcharts.com/3.0.8/gfx/vml-radial-gradient.png"},chart:{borderColor:"#4572A7",borderRadius:5,defaultSeriesType:"line",ignoreHiddenSeries:!0,spacing:[10,10,15,10],style:{fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif',fontSize:"12px"},backgroundColor:"#FFFFFF",plotBorderColor:"#C0C0C0",resetZoomButton:{theme:{zIndex:20},position:{align:"right",x:-10,y:10}}},title:{text:"Chart title",align:"center",margin:15,style:{color:"#274b6d",fontSize:"16px"}},subtitle:{text:"",align:"center",style:{color:"#4d759e"}},plotOptions:{line:{allowPointSelect:!1,showCheckbox:!1,animation:{duration:1e3},events:{},lineWidth:2,marker:{enabled:!0,lineWidth:0,radius:4,lineColor:"#FFFFFF",states:{hover:{enabled:!0},select:{fillColor:"#FFFFFF",lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:e(Xe,{align:"center",enabled:!1,formatter:function(){return null===this.y?"":y(this.y,-1)},verticalAlign:"bottom",y:0}),cropThreshold:300,pointRange:0,states:{hover:{marker:{}},select:{marker:{}}},stickyTracking:!0,turboThreshold:1e3}},labels:{style:{position:"absolute",color:"#3E576F"}},legend:{enabled:!0,align:"center",layout:"horizontal",labelFormatter:function(){return this.name},borderWidth:1,borderColor:"#909090",borderRadius:5,navigation:{activeColor:"#274b6d",inactiveColor:"#CCC"},shadow:!1,itemStyle:{cursor:"pointer",color:"#274b6d",fontSize:"12px"},itemHoverStyle:{color:"#000"},itemHiddenStyle:{color:"#CCC"},itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{style:{fontWeight:"bold"}}},loading:{labelStyle:{fontWeight:"bold",position:"relative",top:"1em"},style:{position:"absolute",backgroundColor:"white",opacity:.5,textAlign:"center"}},tooltip:{enabled:!0,animation:Ae,backgroundColor:"rgba(255, 255, 255, .85)",borderWidth:1,borderRadius:3,dateTimeLabelFormats:{millisecond:"%A, %b %e, %H:%M:%S.%L",second:"%A, %b %e, %H:%M:%S",minute:"%A, %b %e, %H:%M",hour:"%A, %b %e, %H:%M",day:"%A, %b %e, %Y",week:"Week from %A, %b %e, %Y",month:"%B %Y",year:"%Y"},headerFormat:'{point.key}
    ',pointFormat:'{series.name}: {point.y}
    ',shadow:!0,snap:Ce?25:10,style:{color:"#333333",cursor:"default",fontSize:"12px",padding:"8px",whiteSpace:"nowrap"}},credits:{enabled:!0,text:"ThingSpeak.com",href:"https://thingspeak.com",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#D62020",fontSize:"9px"}}};var ii=X.plotOptions,We=ii.line;E();var ni=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,ri=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,si=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,oi=function(t){var n,r,s=[];return function(t){t&&t.stops?r=Ue(t.stops,function(t){return oi(t[1])}):(n=ni.exec(t))?s=[i(n[1]),i(n[2]),i(n[3]),parseFloat(n[4],10)]:(n=ri.exec(t))?s=[i(n[1],16),i(n[2],16),i(n[3],16),1]:(n=si.exec(t))&&(s=[i(n[1]),i(n[2]),i(n[3]),1])}(t),{get:function(i){var n;return r?(n=e(t),n.stops=[].concat(n.stops),je(r,function(t,e){n.stops[e]=[n.stops[e][0],t.get(i)]})):n=s&&!isNaN(s[0])?"rgb"===i?"rgb("+s[0]+","+s[1]+","+s[2]+")":"a"===i?s[3]:"rgba("+s.join(",")+")":t,n},brighten:function(t){if(r)je(r,function(e){e.brighten(t)});else if(o(t)&&0!==t){var e;for(e=0;3>e;e++)s[e]+=i(255*t),s[e]<0&&(s[e]=0),s[e]>255&&(s[e]=255)}return this},rgba:s,setOpacity:function(t){return s[3]=t,this}}};O.prototype={init:function(t,e){this.element="span"===e?g(e):oe.createElementNS(Pe,e),this.renderer=t,this.attrSetters={}},opacity:1,animate:function(t,i,n){i=p(i,$,!0),ei(this),i?(i=e(i),n&&(i.complete=n),ti(this,t,i)):(this.attr(t),n&&n())},attr:function(t,e){var r,s,o,a,l,h,u,f=this.element,g=f.nodeName.toLowerCase(),m=this.renderer,y=this.attrSetters,v=this.shadows,x=this;if(n(t)&&c(e)&&(r=t,t={},t[r]=e),n(t))r=t,"circle"===g?r={x:"cx",y:"cy"}[r]||r:"strokeWidth"===r&&(r="stroke-width"),x=d(f,r)||this[r]||0,"d"!==r&&"visibility"!==r&&"fill"!==r&&(x=parseFloat(x));else{for(r in t)if(l=!1,s=t[r],o=y[r]&&y[r].call(this,s,r),o!==!1){if(o!==_&&(s=o),"d"===r)s&&s.join&&(s=s.join(" ")),/(NaN| {2}|^$)/.test(s)&&(s="M 0 0");else if("x"===r&&"text"===g)for(o=0;os&&(s=0),this[r]=s,"text"===r?(s!==this.textStr&&delete this.bBox,this.textStr=s,this.added&&m.buildText(this)):l||d(f,r,s)}u&&this.updateTransform()}return x},addClass:function(t){var e=this.element,i=d(e,"class")||"";return-1===i.indexOf(t)&&d(e,"class",i+" "+t),this},symbolAttr:function(t){var e=this;je("x,y,r,start,end,width,height,innerR,anchorX,anchorY".split(","),function(i){e[i]=p(t[i],e[i])}),e.attr({d:e.renderer.symbols[e.symbolName](e.x,e.y,e.width,e.height,e)})},clip:function(t){return this.attr("clip-path",t?"url("+this.renderer.url+"#"+t.id+")":Be)},crisp:function(t,e,i,n,r){var s,o,a={},l={},t=t||this.strokeWidth||this.attr&&this.attr("stroke-width")||0;o=he(t)%2/2,l.x=ce(e||this.x||0)+o,l.y=ce(i||this.y||0)+o,l.width=ce((n||this.width||0)-2*o),l.height=ce((r||this.height||0)-2*o),l.strokeWidth=t;for(s in l)this[s]!==l[s]&&(this[s]=a[s]=l[s]);return a},css:function(e){var n,r=this.element,s=this.textWidth=e&&e.width&&"text"===r.nodeName.toLowerCase()&&i(e.width),o="",a=function(t,e){return"-"+e.toLowerCase()};if(e&&e.color&&(e.fill=e.color),this.styles=e=t(this.styles,e),s&&delete e.width,we&&!Ae)f(this.element,e);else{for(n in e)o+=n.replace(/([A-Z])/g,a)+":"+e[n]+";";d(r,"style",o)}return s&&this.added&&this.renderer.buildText(this),this},on:function(t,e){var i=this,n=i.element;return Ie&&"click"===t?(n.ontouchstart=function(t){i.touchEventFired=Date.now(),t.preventDefault(),e.call(n,t)},n.onclick=function(t){(-1===xe.indexOf("Android")||Date.now()-(i.touchEventFired||0)>1100)&&e.call(n,t)}):n["on"+t]=e,this},setRadialReference:function(t){return this.element.radialReference=t,this},translate:function(t,e){return this.attr({translateX:t,translateY:e})},invert:function(){return this.inverted=!0,this.updateTransform(),this},updateTransform:function(){var t=this.translateX||0,e=this.translateY||0,i=this.scaleX,n=this.scaleY,r=this.inverted,s=this.rotation;r&&(t+=this.attr("width"),e+=this.attr("height")),t=["translate("+t+","+e+")"],r?t.push("rotate(90) scale(-1,1)"):s&&t.push("rotate("+s+" "+(this.x||0)+" "+(this.y||0)+")"),(c(i)||c(n))&&t.push("scale("+p(i,1)+" "+p(n,1)+")"),t.length&&d(this.element,"transform",t.join(" "))},toFront:function(){var t=this.element;return t.parentNode.appendChild(t),this},align:function(t,e,i){var r,s,o,a,l={};return s=this.renderer,o=s.alignedObjects,t?(this.alignOptions=t,this.alignByTranslate=e,(!i||n(i))&&(this.alignTo=r=i||"renderer",h(o,this),o.push(this),i=null)):(t=this.alignOptions,e=this.alignByTranslate,r=this.alignTo),i=p(i,s[r],s),r=t.align,s=t.verticalAlign,o=(i.x||0)+(t.x||0),a=(i.y||0)+(t.y||0),("right"===r||"center"===r)&&(o+=(i.width-(t.width||0))/{right:1,center:2}[r]),l[e?"translateX":"x"]=he(o),("bottom"===s||"middle"===s)&&(a+=(i.height-(t.height||0))/({bottom:1,middle:2}[s]||1)),l[e?"translateY":"y"]=he(a),this[this.placed?"animate":"attr"](l),this.placed=!0,this.alignAttr=l,this},getBBox:function(){var e,i,n=this.bBox,r=this.renderer,s=this.rotation;e=this.element;var o=this.styles,a=s*ve;i=this.textStr;var l;if((""===i||Fe.test(i))&&(l=i.length+"|"+o.fontSize+"|"+o.fontFamily,n=r.cache[l]),!n){if(e.namespaceURI===Pe||r.forExport){try{n=e.getBBox?t({},e.getBBox()):{width:e.offsetWidth,height:e.offsetHeight}}catch(h){}(!n||n.width<0)&&(n={width:0,height:0})}else n=this.htmlGetBBox();r.isSVG&&(e=n.width,i=n.height,we&&o&&"11px"===o.fontSize&&"22.7"===i.toPrecision(3)&&(n.height=i=14),s&&(n.width=fe(i*me(a))+fe(e*ge(a)),n.height=fe(i*ge(a))+fe(e*me(a)))),this.bBox=n,l&&(r.cache[l]=n)}return n},show:function(){return this.attr({visibility:"visible"})},hide:function(){return this.attr({visibility:"hidden"})},fadeOut:function(t){var e=this;e.animate({opacity:0},{duration:t||150,complete:function(){e.hide()}})},add:function(t){var e,n=this.renderer,r=t||n,s=r.element||n.box,o=s.childNodes,a=this.element,l=d(a,"zIndex");if(t&&(this.parentGroup=t),this.parentInverted=t&&t.inverted,void 0!==this.textStr&&n.buildText(this),l&&(r.handleZ=!0,l=i(l)),r.handleZ)for(r=0;rl||!c(l)&&c(n))){s.insertBefore(a,t),e=!0;break}return e||s.appendChild(a),this.added=!0,Qe(this,"add"),this},safeRemoveChild:function(t){var e=t.parentNode;e&&e.removeChild(t)},destroy:function(){var t,e,i=this,n=i.element||{},r=i.shadows,s=i.renderer.isSVG&&"SPAN"===n.nodeName&&i.parentGroup;if(n.onclick=n.onmouseout=n.onmouseover=n.onmousemove=n.point=null,ei(i),i.clipPath&&(i.clipPath=i.clipPath.destroy()),i.stops){for(e=0;e=n;n++)r=c.cloneNode(0),s=2*o+1-2*n,d(r,{isShadow:"true",stroke:t.color||"black","stroke-opacity":a*n,"stroke-width":s,transform:"translate"+l,fill:Be}),i&&(d(r,"height",ue(d(r,"height")-s,0)),r.cutHeight=s),e?e.element.appendChild(r):c.parentNode.insertBefore(r,c),h.push(r);this.shadows=h}return this}};var ai=function(){this.init.apply(this,arguments)};ai.prototype={Element:O,init:function(t,e,i,n){var r,s,o=location;r=this.createElement("svg").attr({version:"1.1"}),s=r.element,t.appendChild(s),-1===t.innerHTML.indexOf("xmlns")&&d(s,"xmlns",Pe),this.isSVG=!0,this.box=s,this.boxWrapper=r,this.alignedObjects=[],this.url=(Te||Se)&&oe.getElementsByTagName("base").length?o.href.replace(/#.*?$/,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"",this.createElement("desc").add().element.appendChild(oe.createTextNode("Created with Highcharts 3.0.8")),this.defs=this.createElement("defs").add(),this.forExport=n,this.gradients={},this.cache={},this.setSize(e,i,!1);var a;Te&&t.getBoundingClientRect&&(this.subPixelFix=e=function(){f(t,{left:0,top:0}),a=t.getBoundingClientRect(),f(t,{left:de(a.left)-a.left+"px",top:de(a.top)-a.top+"px"})},e(),Ze(ae,"resize",e))},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var t=this.defs;return this.box=null,this.boxWrapper=this.boxWrapper.destroy(),A(this.gradients||{}),this.gradients=null,t&&(this.defs=t.destroy()),this.subPixelFix&&Ke(ae,"resize",this.subPixelFix),this.alignedObjects=null},createElement:function(t){var e=new this.Element;return e.init(this,t),e},draw:function(){},buildText:function(t){for(var e=t.element,n=this,r=n.forExport,s=p(t.textStr,"").toString().replace(/<(b|strong)>/g,'').replace(/<(i|em)>/g,'').replace(/
    /g,"").split(//g),o=e.childNodes,a=/style="([^"]+)"/,l=/href="(http[^"]+)"/,h=d(e,"x"),c=t.styles,u=t.textWidth,g=c&&c.lineHeight,m=o.length;m--;)e.removeChild(o[m]); +u&&!t.added&&this.box.appendChild(e),""===s[s.length-1]&&s.pop(),je(s,function(s,o){var p,m=0,s=s.replace(//g,"|||");p=s.split("|||"),je(p,function(s){if(""!==s||1===p.length){var y,v={},x=oe.createElementNS(Pe,"tspan");if(a.test(s)&&(y=s.match(a)[1].replace(/(;| |^)color([ :])/,"$1fill$2"),d(x,"style",y)),l.test(s)&&!r&&(d(x,"onclick",'location.href="'+s.match(l)[1]+'"'),f(x,{cursor:"pointer"})),s=(s.replace(/<(.|\n)*?>/g,"")||" ").replace(/</g,"<").replace(/>/g,">")," "!==s&&(x.appendChild(oe.createTextNode(s)),m?v.dx=0:v.x=h,d(x,v),!m&&o&&(!Ae&&r&&f(x,{display:"block"}),d(x,"dy",g||n.fontMetrics(/px$/.test(x.style.fontSize)?x.style.fontSize:c.fontSize).h,Se&&x.offsetHeight)),e.appendChild(x),m++,u))for(var b,w,s=s.replace(/([^\^])-/g,"$1- ").split(" "),v=s.length>1&&"nowrap"!==c.whiteSpace,k=t._clipHeight,S=[],T=i(g||16),C=1;v&&(s.length||S.length);)delete t.bBox,b=t.getBBox(),w=b.width,!Ae&&n.forExport&&(w=n.measureSpanWidth(x.firstChild.data,t.styles)),b=w>u,b&&1!==s.length?(x.removeChild(x.firstChild),S.unshift(s.pop())):(s=S,S=[],s.length&&(C++,k&&C*T>k?(s=["..."],t.attr("title",t.textStr)):(x=oe.createElementNS(Pe,"tspan"),d(x,{dy:T,x:h}),y&&d(x,"style",y),e.appendChild(x),w>u&&(u=w)))),s.length&&x.appendChild(oe.createTextNode(s.join(" ").replace(/- /g,"-")))}})})},button:function(i,n,r,s,o,a,l,h,c){var d,u,p,f,g,m,y=this.label(i,n,r,c,null,null,null,null,"button"),v=0,i={x1:0,y1:0,x2:0,y2:1},o=e({"stroke-width":1,stroke:"#CCCCCC",fill:{linearGradient:i,stops:[[0,"#FEFEFE"],[1,"#F6F6F6"]]},r:2,padding:5,style:{color:"black"}},o);return p=o.style,delete o.style,a=e(o,{stroke:"#68A",fill:{linearGradient:i,stops:[[0,"#FFF"],[1,"#ACF"]]}},a),f=a.style,delete a.style,l=e(o,{stroke:"#68A",fill:{linearGradient:i,stops:[[0,"#9BD"],[1,"#CDF"]]}},l),g=l.style,delete l.style,h=e(o,{style:{color:"#CCC"}},h),m=h.style,delete h.style,Ze(y.element,we?"mouseover":"mouseenter",function(){3!==v&&y.attr(a).css(f)}),Ze(y.element,we?"mouseout":"mouseleave",function(){3!==v&&(d=[o,a,l][v],u=[p,f,g][v],y.attr(d).css(u))}),y.setState=function(t){(y.state=v=t)?2===t?y.attr(l).css(g):3===t&&y.attr(h).css(m):y.attr(o).css(p)},y.on("click",function(){3!==v&&s.call(y)}).attr(o).css(t({cursor:"default"},p))},crispLine:function(t,e){return t[1]===t[4]&&(t[1]=t[4]=he(t[1])-e%2/2),t[2]===t[5]&&(t[2]=t[5]=he(t[2])+e%2/2),t},path:function(e){var i={fill:Be};return s(e)?i.d=e:r(e)&&t(i,e),this.createElement("path").attr(i)},circle:function(t,e,i){return t=r(t)?t:{x:t,y:e,r:i},this.createElement("circle").attr(t)},arc:function(t,e,i,n,s,o){return r(t)&&(e=t.y,i=t.r,n=t.innerR,s=t.start,o=t.end,t=t.x),t=this.symbol("arc",t||0,e||0,i||0,i||0,{innerR:n||0,start:s||0,end:o||0}),t.r=i,t},rect:function(t,e,i,n,s,o){return s=r(t)?t.r:s,s=this.createElement("rect").attr({rx:s,ry:s,fill:Be}),s.attr(r(t)?t:s.crisp(o,t,e,ue(i,0),ue(n,0)))},setSize:function(t,e,i){var n=this.alignedObjects,r=n.length;for(this.width=t,this.height=e,this.boxWrapper[p(i,!0)?"animate":"attr"]({width:t,height:e});r--;)n[r].align()},g:function(t){var e=this.createElement("g");return c(t)?e.attr({"class":"highcharts-"+t}):e},image:function(e,i,n,r,s){var o={preserveAspectRatio:Be};return arguments.length>1&&t(o,{x:i,y:n,width:r,height:s}),o=this.createElement("image").attr(o),o.element.setAttributeNS?o.element.setAttributeNS("http://www.w3.org/1999/xlink","href",e):o.element.setAttribute("hc-svg-href",e),o},symbol:function(e,i,n,r,s,o){var a,l,h,c=this.symbols[e],c=c&&c(he(i),he(n),r,s,o),d=/^url\((.*?)\)$/;return c?(a=this.path(c),t(a,{symbolName:e,x:i,y:n,width:r,height:s}),o&&t(a,o)):d.test(e)&&(h=function(t,e){t.element&&(t.attr({width:e[0],height:e[1]}),t.alignByTranslate||t.translate(he((r-e[0])/2),he((s-e[1])/2)))},l=e.match(d)[1],e=De[l],a=this.image(l).attr({x:i,y:n}),a.isImg=!0,e?h(a,e):(a.attr({width:0,height:0}),g("img",{onload:function(){h(a,De[l]=[this.width,this.height])},src:l}))),a},symbols:{circle:function(t,e,i,n){var r=.166*i;return["M",t+i/2,e,"C",t+i+r,e,t+i+r,e+n,t+i/2,e+n,"C",t-r,e+n,t-r,e,t+i/2,e,"Z"]},square:function(t,e,i,n){return["M",t,e,"L",t+i,e,t+i,e+n,t,e+n,"Z"]},triangle:function(t,e,i,n){return["M",t+i/2,e,"L",t+i,e+n,t,e+n,"Z"]},"triangle-down":function(t,e,i,n){return["M",t,e,"L",t+i,e,t+i/2,e+n,"Z"]},diamond:function(t,e,i,n){return["M",t+i/2,e,"L",t+i,e+n/2,t+i/2,e+n,t,e+n/2,"Z"]},arc:function(t,e,i,n,r){var s=r.start,i=r.r||i||n,o=r.end-.001,n=r.innerR,a=r.open,l=ge(s),h=me(s),c=ge(o),o=me(o),r=r.end-st?t+4:he(1.2*t),e=he(.8*t);return{h:t,b:e}},label:function(i,n,r,s,o,a,l,h,d){function u(){var t,i;t=P.element.style,y=(void 0===v||void 0===x||C.styles.textAlign)&&P.getBBox(),C.width=(v||y.width||0)+2*L+M,C.height=(x||y.height||0)+2*L,k=L+T.fontMetrics(t&&t.fontSize).b,S&&(m||(t=he(-A*L),i=h?-k:0,C.box=m=s?T.symbol(s,t,i,C.width,C.height,D):T.rect(t,i,C.width,C.height,0,D[_e]),m.add(C)),m.isImg||m.attr(e({width:C.width,height:C.height},D)),D=null)}function p(){var t,e=C.styles,e=e&&e.textAlign,i=M+L*(1-A);t=h?0:k,!c(v)||"center"!==e&&"right"!==e||(i+={center:.5,right:1}[e]*(v-y.width)),(i!==P.x||t!==P.y)&&P.attr({x:i,y:t}),P.x=i,P.y=t}function f(t,e){m?m.attr(t,e):D[t]=e}function g(){P.add(C),C.attr({text:i,x:n,y:r}),m&&c(o)&&C.attr({anchorX:o,anchorY:a})}var m,y,v,x,b,w,k,S,T=this,C=T.g(d),P=T.text("",0,0,l).attr({zIndex:1}),A=0,L=3,M=0,I=0,D={},l=C.attrSetters;Ze(C,"add",g),l.width=function(t){return v=t,!1},l.height=function(t){return x=t,!1},l.padding=function(t){return c(t)&&t!==L&&(L=t,p()),!1},l.paddingLeft=function(t){return c(t)&&t!==M&&(M=t,p()),!1},l.align=function(t){return A={left:0,center:.5,right:1}[t],!1},l.text=function(t,e){return P.attr(e,t),u(),p(),!1},l[_e]=function(t,e){return S=!0,I=t%2/2,f(e,t),!1},l.stroke=l.fill=l.r=function(t,e){return"fill"===e&&(S=!0),f(e,t),!1},l.anchorX=function(t,e){return o=t,f(e,t+I-b),!1},l.anchorY=function(t,e){return a=t,f(e,t-w),!1},l.x=function(t){return C.x=t,t-=A*((v||y.width)+L),b=he(t),C.attr("translateX",b),!1},l.y=function(t){return w=C.y=he(t),C.attr("translateY",w),!1};var E=C.css;return t(C,{css:function(t){if(t){var i={},t=e(t);je("fontSize,fontWeight,fontFamily,color,lineHeight,width,textDecoration,textShadow".split(","),function(e){t[e]!==_&&(i[e]=t[e],delete t[e])}),P.css(i)}return E.call(C,t)},getBBox:function(){return{width:y.width+2*L,height:y.height+2*L,x:y.x-L,y:y.y-L}},shadow:function(t){return m&&m.shadow(t),C},destroy:function(){Ke(C,"add",g),Ke(C.element,"mouseenter"),Ke(C.element,"mouseleave"),P&&(P=P.destroy()),m&&(m=m.destroy()),O.prototype.destroy.call(C),C=T=u=p=f=g=null}})}},H=ai,t(O.prototype,{htmlCss:function(e){var i=this.element;return(i=e&&"SPAN"===i.tagName&&e.width)&&(delete e.width,this.textWidth=i,this.updateTransform()),this.styles=t(this.styles,e),f(this.element,e),this},htmlGetBBox:function(){var t=this.element,e=this.bBox;return e||("text"===t.nodeName&&(t.style.position="absolute"),e=this.bBox={x:t.offsetLeft,y:t.offsetTop,width:t.offsetWidth,height:t.offsetHeight}),e},htmlUpdateTransform:function(){if(this.added){var t=this.renderer,e=this.element,n=this.translateX||0,r=this.translateY||0,s=this.x||0,o=this.y||0,a=this.textAlign||"left",l={left:0,center:.5,right:1}[a],h=this.shadows;if(f(e,{marginLeft:n,marginTop:r}),h&&je(h,function(t){f(t,{marginLeft:n+1,marginTop:r+1})}),this.inverted&&je(e.childNodes,function(i){t.invertChild(i,e)}),"SPAN"===e.tagName){var d,u=this.rotation,g=i(this.textWidth),m=[u,a,e.innerHTML,this.textWidth].join(",");m!==this.cTT&&(d=t.fontMetrics(e.style.fontSize).b,c(u)&&this.setSpanRotation(u,l,d),h=p(this.elemWidth,e.offsetWidth),h>g&&/[ \-]/.test(e.textContent||e.innerText)&&(f(e,{width:g+"px",display:"block",whiteSpace:"normal"}),h=g),this.getSpanCorrection(h,d,l,u,a)),f(e,{left:s+(this.xCorr||0)+"px",top:o+(this.yCorr||0)+"px"}),Se&&(d=e.offsetHeight),this.cTT=m}}else this.alignOnAdd=!0},setSpanRotation:function(t,e,i){var n={},r=we?"-ms-transform":Se?"-webkit-transform":Te?"MozTransform":be?"-o-transform":"";n[r]=n.transform="rotate("+t+"deg)",n[r+(Te?"Origin":"-origin")]=100*e+"% "+i+"px",f(this.element,n)},getSpanCorrection:function(t,e,i){this.xCorr=-t*i,this.yCorr=-e}}),t(ai.prototype,{html:function(e,i,n){var r=X.chart.style,s=this.createElement("span"),o=s.attrSetters,a=s.element,l=s.renderer;return o.text=function(t){return t!==a.innerHTML&&delete this.bBox,a.innerHTML=t,!1},o.x=o.y=o.align=o.rotation=function(t,e){return"align"===e&&(e="textAlign"),s[e]=t,s.htmlUpdateTransform(),!1},s.attr({text:e,x:he(i),y:he(n)}).css({position:"absolute",whiteSpace:"nowrap",fontFamily:r.fontFamily,fontSize:r.fontSize}),s.css=s.htmlCss,l.isSVG&&(s.add=function(e){var i,n=l.box.parentNode,r=[];if(this.parentGroup=e){if(i=e.div,!i){for(;e;)r.push(e),e=e.parentGroup;je(r.reverse(),function(e){var r;i=e.div=e.div||g(ze,{className:d(e.element,"class")},{position:"absolute",left:(e.translateX||0)+"px",top:(e.translateY||0)+"px"},i||n),r=i.style,t(e.attrSetters,{translateX:function(t){r.left=t+"px"},translateY:function(t){r.top=t+"px"},visibility:function(t,e){r[e]=t}})})}}else i=n;return i.appendChild(a),s.added=!0,s.alignOnAdd&&s.htmlUpdateTransform(),s}),s}});var li;if(!Ae&&!Me){Highcharts.VMLElement=li={init:function(t,e){var i=["<",e,' filled="f" stroked="f"'],n=["position: ","absolute",";"],r=e===ze;("shape"===e||r)&&n.push("left:0;top:0;width:1px;height:1px;"),n.push("visibility: ",r?"hidden":"visible"),i.push(' style="',n.join(""),'"/>'),e&&(i=r||"span"===e||"img"===e?i.join(""):t.prepVML(i),this.element=g(i)),this.renderer=t,this.attrSetters={}},add:function(t){var e=this.renderer,i=this.element,n=e.box,n=t?t.element||t:n;return t&&t.inverted&&e.invertChild(i,n),n.appendChild(i),this.added=!0,this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform(),Qe(this,"add"),this},updateTransform:O.prototype.htmlUpdateTransform,setSpanRotation:function(){var t=this.rotation,e=ge(t*ve),i=me(t*ve);f(this.element,{filter:t?["progid:DXImageTransform.Microsoft.Matrix(M11=",e,", M12=",-i,", M21=",i,", M22=",e,", sizingMethod='auto expand')"].join(""):Be})},getSpanCorrection:function(t,e,i,n,r){var s,o=n?ge(n*ve):1,a=n?me(n*ve):0,l=p(this.elemHeight,this.element.offsetHeight);this.xCorr=0>o&&-t,this.yCorr=0>a&&-l,s=0>o*a,this.xCorr+=a*e*(s?1-i:i),this.yCorr-=o*e*(n?s?i:1-i:1),r&&"left"!==r&&(this.xCorr-=t*i*(0>o?-1:1),n&&(this.yCorr-=l*i*(0>a?-1:1)),f(this.element,{textAlign:r}))},pathToVML:function(t){for(var e=t.length,i=[];e--;)o(t[e])?i[e]=he(10*t[e])-5:"Z"===t[e]?i[e]="x":(i[e]=t[e],!t.isArc||"wa"!==t[e]&&"at"!==t[e]||(i[e+5]===i[e+7]&&(i[e+7]+=t[e+7]>t[e+5]?1:-1),i[e+6]===i[e+8]&&(i[e+8]+=t[e+8]>t[e+6]?1:-1)));return i.join(" ")||"x"},attr:function(t,e){var i,r,s,a,l,h=this.element||{},u=h.style,p=h.nodeName,f=this.renderer,m=this.symbolName,y=this.shadows,v=this.attrSetters,x=this;if(n(t)&&c(e)&&(i=t,t={},t[i]=e),n(t))i=t,x="strokeWidth"===i||"stroke-width"===i?this.strokeweight:this[i];else for(i in t)if(r=t[i],l=!1,s=v[i]&&v[i].call(this,r,i),s!==!1&&null!==r){if(s!==_&&(r=s),m&&/^(x|y|r|start|end|width|height|innerR|anchorX|anchorY)/.test(i))a||(this.symbolAttr(t),a=!0),l=!0;else if("d"===i){if(r=r||[],this.d=r.join(" "),h.path=r=this.pathToVML(r),y)for(s=y.length;s--;)y[s].path=y[s].cutOff?this.cutOffPath(r,y[s].cutOff):r;l=!0}else if("visibility"===i){if(y)for(s=y.length;s--;)y[s].style[i]=r;"DIV"===p&&(r="hidden"===r?"-999em":0,ke||(u[i]=r?"visible":"hidden"),i="top"),u[i]=r,l=!0}else"zIndex"===i?(r&&(u[i]=r),l=!0):-1!==Ye(i,["x","y","width","height"])?(this[i]=r,"x"===i||"y"===i?i={x:"left",y:"top"}[i]:r=ue(0,r),this.updateClipping?(this[i]=r,this.updateClipping()):u[i]=r,l=!0):"class"===i&&"DIV"===p?h.className=r:"stroke"===i?(r=f.color(r,h,i),i="strokecolor"):"stroke-width"===i||"strokeWidth"===i?(h.stroked=r?!0:!1,i="strokeweight",this[i]=r,o(r)&&(r+="px")):"dashstyle"===i?((h.getElementsByTagName("stroke")[0]||g(f.prepVML([""]),null,null,h))[i]=r||"solid",this.dashstyle=r,l=!0):"fill"===i?"SPAN"===p?u.color=r:"IMG"!==p&&(h.filled=r!==Be?!0:!1,r=f.color(r,h,i,this),i="fillcolor"):"opacity"===i?l=!0:"shape"===p&&"rotation"===i?(this[i]=h.style[i]=r,h.style.left=-he(me(r*ve)+1)+"px",h.style.top=he(ge(r*ve))+"px"):("translateX"===i||"translateY"===i||"rotation"===i)&&(this[i]=r,this.updateTransform(),l=!0);l||(ke?h[i]=r:d(h,i,r))}return x},clip:function(t){var e,i=this;return t?(e=t.members,h(e,i),e.push(i),i.destroyClip=function(){h(e,i)},t=t.getCSS(i)):(i.destroyClip&&i.destroyClip(),t={clip:ke?"inherit":"rect(auto)"}),i.css(t)},css:O.prototype.htmlCss,safeRemoveChild:function(t){t.parentNode&&L(t)},destroy:function(){return this.destroyClip&&this.destroyClip(),O.prototype.destroy.apply(this)},on:function(t,e){return this.element["on"+t]=function(){var t=ae.event;t.target=t.srcElement,e(t)},this},cutOffPath:function(t,e){var n,t=t.split(/[ ,]/);return n=t.length,(9===n||11===n)&&(t[n-4]=t[n-2]=i(t[n-2])-10*e),t.join(" ")},shadow:function(t,e,n){var r,s,o,a,l,h,c,d=[],u=this.element,f=this.renderer,m=u.style,y=u.path;if(y&&"string"!=typeof y.value&&(y="x"),l=y,t){for(h=p(t.width,3),c=(t.opacity||.15)/h,r=1;3>=r;r++)a=2*h+1-2*r,n&&(l=this.cutOffPath(y.value,a+.5)),o=[''],s=g(f.prepVML(o),null,{left:i(m.left)+p(t.offsetX,1),top:i(m.top)+p(t.offsetY,1)}),n&&(s.cutOff=a+1),o=[''],g(f.prepVML(o),null,null,s),e?e.element.appendChild(s):u.parentNode.insertBefore(s,u),d.push(s);this.shadows=d}return this}},li=m(O,li);var hi={Element:li,isIE8:xe.indexOf("MSIE 8.0")>-1,init:function(t,e,i){var n,r;if(this.alignedObjects=[],n=this.createElement(ze),r=n.element,r.style.position="relative",t.appendChild(n.element),this.isVML=!0,this.box=r,this.boxWrapper=n,this.cache={},this.setSize(e,i,!1),!oe.namespaces.hcv){oe.namespaces.add("hcv","urn:schemas-microsoft-com:vml");try{oe.createStyleSheet().cssText="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}catch(s){oe.styleSheets[0].cssText+="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}}},isHidden:function(){return!this.box.offsetWidth},clipRect:function(e,i,n,s){var o=this.createElement(),a=r(e);return t(o,{members:[],left:(a?e.x:e)+1,top:(a?e.y:i)+1,width:(a?e.width:n)-1,height:(a?e.height:s)-1,getCSS:function(e){var i=e.element,n=i.nodeName,e=e.inverted,r=this.top-("shape"===n?i.offsetTop:0),s=this.left,i=s+this.width,o=r+this.height,r={clip:"rect("+he(e?s:r)+"px,"+he(e?o:i)+"px,"+he(e?i:o)+"px,"+he(e?r:s)+"px)"};return!e&&ke&&"DIV"===n&&t(r,{width:i+"px",height:o+"px"}),r},updateClipping:function(){je(o.members,function(t){t.css(o.getCSS(t))})}})},color:function(t,e,i,n){var r,s,o,a=this,l=/^rgba/,h=Be;if(t&&t.linearGradient?o="gradient":t&&t.radialGradient&&(o="pattern"),o){var c,d,u,p,f,m,y,v,x=t.linearGradient||t.radialGradient,b="",t=t.stops,w=[],k=function(){s=[''],g(a.prepVML(s),null,null,e)};if(u=t[0],v=t[t.length-1],u[0]>0&&t.unshift([0,u[1]]),v[0]<1&&t.push([1,v[1]]),je(t,function(t,e){l.test(t[1])?(r=oi(t[1]),c=r.get("rgb"),d=r.get("a")):(c=t[1],d=1),w.push(100*t[0]+"% "+c),e?(f=d,m=c):(p=d,y=c)}),"fill"===i)if("gradient"===o)i=x.x1||x[0]||0,t=x.y1||x[1]||0,u=x.x2||x[2]||0,x=x.y2||x[3]||0,b='angle="'+(90-180*le.atan((x-t)/(u-i))/ye)+'"',k();else{var S,h=x.r,T=2*h,C=2*h,P=x.cx,A=x.cy,L=e.radialReference,h=function(){L&&(S=n.getBBox(),P+=(L[0]-S.x)/S.width-.5,A+=(L[1]-S.y)/S.height-.5,T*=L[2]/S.width,C*=L[2]/S.height),b='src="'+X.global.VMLRadialGradientURL+'" size="'+T+","+C+'" origin="0.5,0.5" position="'+P+","+A+'" color2="'+y+'" ',k()};n.added?h():Ze(n,"add",h),h=m}else h=c}else l.test(t)&&"IMG"!==e.tagName?(r=oi(t),s=["<",i,' opacity="',r.get("a"),'"/>'],g(this.prepVML(s),null,null,e),h=r.get("rgb")):(h=e.getElementsByTagName(i),h.length&&(h[0].opacity=1,h[0].type="solid"),h=t);return h},prepVML:function(t){var e=this.isIE8,t=t.join("");return e?(t=t.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />'),t=-1===t.indexOf('style="')?t.replace("/>",' style="display:inline-block;behavior:url(#default#VML);" />'):t.replace('style="','style="display:inline-block;behavior:url(#default#VML);')):t=t.replace("<","1&&s.attr({x:e,y:i,width:n,height:r}),s},rect:function(t,e,i,n,s,o){var a=this.symbol("rect");return a.r=r(t)?t.r:s,a.attr(r(t)?t:a.crisp(o,t,e,ue(i,0),ue(n,0)))},invertChild:function(t,e){var n=e.style;f(t,{flip:"x",left:i(n.width)-1,top:i(n.height)-1,rotation:-90})},symbols:{arc:function(t,e,i,n,r){var s=r.start,o=r.end,a=r.r||i||n,i=r.innerR,n=ge(s),l=me(s),h=ge(o),c=me(o);return o-s===0?["x"]:(s=["wa",t-a,e-a,t+a,e+a,t+a*n,e+a*l,t+a*h,e+a*c],r.open&&!i&&s.push("e","M",t,e),s.push("at",t-i,e-i,t+i,e+i,t+i*h,e+i*c,t+i*n,e+i*l,"x","e"),s.isArc=!0,s)},circle:function(t,e,i,n,r){return r&&(i=n=2*r.r),r&&r.isCircle&&(t-=i/2,e-=n/2),["wa",t,e,t+i,e+n,t+i,e+n/2,t+i,e+n/2,"e"]},rect:function(t,e,i,n,r){var s,o=t+i,a=e+n;return c(r)&&r.r?(s=pe(r.r,i,n),o=["M",t+s,e,"L",o-s,e,"wa",o-2*s,e,o,e+2*s,o-s,e,o,e+s,"L",o,a-s,"wa",o-2*s,a-2*s,o,a,o,a-s,o-s,a,"L",t+s,a,"wa",t,a-2*s,t+2*s,a,t+s,a,t,a-s,"L",t,e+s,"wa",t,e,t+2*s,e+2*s,t,e+s,t+s,e,"x","e"]):o=ai.prototype.symbols.square.apply(0,arguments),o}}};Highcharts.VMLRenderer=li=function(){this.init.apply(this,arguments)},li.prototype=e(ai.prototype,hi),H=li}ai.prototype.measureSpanWidth=function(t,e){var i,n=oe.createElement("span");return i=oe.createTextNode(t),n.appendChild(i),f(n,e),this.box.appendChild(n),i=n.offsetWidth,L(n),i};var ci;Me&&(Highcharts.CanVGRenderer=li=function(){Pe="http://www.w3.org/1999/xhtml"},li.prototype.symbols={},ci=function(){function t(){var t,i=e.length;for(t=0;i>t;t++)e[t]();e=[]}var e=[];return{push:function(i,n){0===e.length&&$e(n,t),e.push(i)}}}(),H=li),R.prototype={addLabel:function(){var e,i=this.axis,n=i.options,r=i.chart,s=i.horiz,a=i.categories,h=i.names,d=this.pos,u=n.labels,f=i.tickPositions,s=s&&a&&!u.step&&!u.staggerLines&&!u.rotation&&r.plotWidth/f.length||!s&&(r.margin[3]||.33*r.chartWidth),g=d===f[0],m=d===f[f.length-1],h=a?p(a[d],h[d],d):d,a=this.label,y=f.info;i.isDatetimeAxis&&y&&(e=n.dateTimeLabelFormats[y.higherRanks[d]||y.unitName]),this.isFirst=g,this.isLast=m,n=i.labelFormatter.call({axis:i,chart:r,isFirst:g,isLast:m,dateTimeLabelFormat:e,value:i.isLog?I(l(h)):h}),d=s&&{width:ue(1,he(s-2*(u.padding||10)))+"px"},d=t(d,u.style),c(a)?a&&a.attr({text:n}).css(d):(e={align:i.labelAlign},o(u.rotation)&&(e.rotation=u.rotation),s&&u.ellipsis&&(e._clipHeight=i.len/f.length),this.label=c(n)&&u.enabled?r.renderer.text(n,0,0,u.useHTML).attr(e).css(d).add(i.labelGroup):null)},getLabelSize:function(){var t=this.label,e=this.axis;return t?t.getBBox()[e.horiz?"height":"width"]:0},getLabelSides:function(){var t=this.label.getBBox(),e=this.axis,i=e.horiz,n=e.options.labels,t=i?t.width:t.height,e=i?t*{left:0,center:.5,right:1}[e.labelAlign]-n.x:t;return[-e,t-e]},handleOverflow:function(t,e){var i,n=!0,r=this.axis,s=this.isFirst,o=this.isLast,a=r.horiz?e.x:e.y,l=r.reversed,h=r.tickPositions,c=this.getLabelSides(),d=c[0],c=c[1],u=r.pos,p=u+r.len,f=this.label.line||0,g=r.labelEdge,m=r.justifyLabels&&(s||o);return g[f]===_||a+d>g[f]?g[f]=a+c:m||(n=!1),m&&(i=(r=r.ticks[h[t+(s?1:-1)]])&&r.label.xy&&r.label.xy.x+r.getLabelSides()[s?0:1],h=i,s&&!l||o&&l?u>a+d&&(a=u-d,r&&a+c>h&&(n=!1)):a+c>p&&(a=p-c,r&&h>a+d&&(n=!1)),e.x=a),n},getPosition:function(t,e,i,n){var r=this.axis,s=r.chart,o=n&&s.oldChartHeight||s.chartHeight;return{x:t?r.translate(e+i,null,null,n)+r.transB:r.left+r.offset+(r.opposite?(n&&s.oldChartWidth||s.chartWidth)-r.right-r.left:0),y:t?o-r.bottom+r.offset-(r.opposite?r.height:0):o-r.translate(e+i,null,null,n)-r.transB}},getLabelPosition:function(t,e,i,n,r,s,o,a){var l=this.axis,h=l.transA,d=l.reversed,u=l.staggerLines,p=l.chart.renderer.fontMetrics(r.style.fontSize).b,f=r.rotation,t=t+r.x-(s&&n?s*h*(d?-1:1):0),e=e+r.y-(s&&!n?s*h*(d?1:-1):0);return f&&2===l.side&&(e-=p-p*ge(f*ve)),!c(r.y)&&!f&&(e+=p-i.getBBox().height/2),u&&(i.line=o/(a||1)%u,e+=i.line*(l.labelOffset/u)),{x:t,y:e}},getMarkPath:function(t,e,i,n,r,s){return s.crispLine(["M",t,e,"L",t+(r?0:-i),e+(r?i:0)],n)},render:function(t,e,i){var n=this.axis,r=n.options,s=n.chart.renderer,o=n.horiz,a=this.type,l=this.label,h=this.pos,c=r.labels,d=this.gridLine,u=a?a+"Grid":"grid",f=a?a+"Tick":"tick",g=r[u+"LineWidth"],m=r[u+"LineColor"],y=r[u+"LineDashStyle"],v=r[f+"Length"],u=r[f+"Width"]||0,x=r[f+"Color"],b=r[f+"Position"],f=this.mark,w=c.step,k=!0,S=n.tickmarkOffset,T=this.getPosition(o,h,S,e),C=T.x,T=T.y,P=o&&C===n.pos+n.len||!o&&T===n.pos?-1:1;this.isActive=!0,g&&(h=n.getPlotLinePath(h+S,g*P,e,!0),d===_&&(d={stroke:m,"stroke-width":g},y&&(d.dashstyle=y),a||(d.zIndex=1),e&&(d.opacity=0),this.gridLine=d=g?s.path(h).attr(d).add(n.gridGroup):null),!e&&d&&h&&d[this.isNew?"attr":"animate"]({d:h,opacity:i})),u&&v&&("inside"===b&&(v=-v),n.opposite&&(v=-v),a=this.getMarkPath(C,T,v,u*P,o,s),f?f.animate({d:a,opacity:i}):this.mark=s.path(a).attr({stroke:x,"stroke-width":u,opacity:i}).add(n.axisGroup)),l&&!isNaN(C)&&(l.xy=T=this.getLabelPosition(C,T,l,o,c,S,t,w),this.isFirst&&!this.isLast&&!p(r.showFirstLabel,1)||this.isLast&&!this.isFirst&&!p(r.showLastLabel,1)?k=!1:!n.isRadial&&!c.step&&!c.rotation&&!e&&0!==i&&(k=this.handleOverflow(t,T)),w&&t%w&&(k=!1),k&&!isNaN(T.y)?(T.opacity=i,l[this.isNew?"attr":"animate"](T),this.isNew=!1):l.attr("y",-9999))},destroy:function(){A(this,this.axis)}};var di=function(t,e){this.axis=t,e&&(this.options=e,this.id=e.id)};di.prototype={render:function(){var t,i=this,n=i.axis,r=n.horiz,s=(n.pointRange||0)/2,o=i.options,l=o.label,h=i.label,d=o.width,u=o.to,f=o.from,g=c(f)&&c(u),m=o.value,y=o.dashStyle,v=i.svgElem,x=[],b=o.color,w=o.zIndex,k=o.events,S=n.chart.renderer;if(n.isLog&&(f=a(f),u=a(u),m=a(m)),d)x=n.getPlotLinePath(m,d),s={stroke:b,"stroke-width":d},y&&(s.dashstyle=y);else{if(!g)return;f=ue(f,n.min-s),u=pe(u,n.max+s),x=n.getPlotBandPath(f,u,o),s={fill:b},o.borderWidth&&(s.stroke=o.borderColor,s["stroke-width"]=o.borderWidth)}if(c(w)&&(s.zIndex=w),v)x?v.animate({d:x},null,v.onGetPath):(v.hide(),v.onGetPath=function(){v.show()},h&&(i.label=h=h.destroy()));else if(x&&x.length&&(i.svgElem=v=S.path(x).attr(s).add(),k))for(t in o=function(t){v.on(t,function(e){k[t].apply(i,[e])})},k)o(t);return l&&c(l.text)&&x&&x.length&&n.width>0&&n.height>0?(l=e({align:r&&g&&"center",x:r?!g&&4:10,verticalAlign:!r&&g&&"middle",y:r?g?16:10:g?6:-4,rotation:r&&!g&&90},l),h||(i.label=h=S.text(l.text,0,0,l.useHTML).attr({align:l.textAlign||l.align,rotation:l.rotation,zIndex:w}).css(l.style).add()),n=[x[1],x[4],p(x[6],x[1])],x=[x[2],x[5],p(x[7],x[2])],r=C(n),g=C(x),h.align(l,!1,{x:r,y:g,width:P(n)-r,height:P(x)-g}),h.show()):h&&h.hide(),i},destroy:function(){h(this.axis.plotLinesAndBands,this),delete this.axis,A(this)}},z.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S",minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,gridLineColor:"#C0C0C0",labels:Xe,lineColor:"#C0D0E0",lineWidth:1,minPadding:.01,maxPadding:.01,minorGridLineColor:"#E0E0E0",minorGridLineWidth:1,minorTickColor:"#A0A0A0",minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickColor:"#C0D0E0",tickLength:5,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",tickWidth:1,title:{align:"middle",style:{color:"#4d759e",fontWeight:"bold"}},type:"linear"},defaultYAxisOptions:{endOnTick:!0,gridLineWidth:1,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8,y:3},lineWidth:0,maxPadding:.05,minPadding:.05,startOnTick:!0,tickWidth:0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return y(this.total,-1)},style:Xe.style}},defaultLeftAxisOptions:{labels:{x:-8,y:null},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:8,y:null},title:{rotation:90}},defaultBottomAxisOptions:{labels:{x:0,y:14},title:{rotation:0}},defaultTopAxisOptions:{labels:{x:0,y:-5},title:{rotation:0}},init:function(t,e){var i=e.isX;this.horiz=t.inverted?!i:i,this.coll=(this.isXAxis=i)?"xAxis":"yAxis",this.opposite=e.opposite,this.side=e.side||(this.horiz?this.opposite?0:2:this.opposite?1:3),this.setOptions(e);var n=this.options,r=n.type;this.labelFormatter=n.labels.formatter||this.defaultLabelFormatter,this.userOptions=e,this.minPixelPadding=0,this.chart=t,this.reversed=n.reversed,this.zoomEnabled=n.zoomEnabled!==!1,this.categories=n.categories||"category"===r,this.names=[],this.isLog="logarithmic"===r,this.isDatetimeAxis="datetime"===r,this.isLinked=c(n.linkedTo),this.tickmarkOffset=this.categories&&"between"===n.tickmarkPlacement?.5:0,this.ticks={},this.labelEdge=[],this.minorTicks={},this.plotLinesAndBands=[],this.alternateBands={},this.len=0,this.minRange=this.userMinRange=n.minRange||n.maxZoom,this.range=n.range,this.offset=n.offset||0,this.stacks={},this.oldStacks={},this.stackExtremes={},this.min=this.max=null,this.crosshair=p(n.crosshair,u(t.options.tooltip.crosshairs)[i?0:1],!1);var s,n=this.options.events;-1===Ye(this,t.axes)&&(t.axes.push(this),t[this.coll].push(this)),this.series=this.series||[],t.inverted&&i&&this.reversed===_&&(this.reversed=!0),this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(s in n)Ze(this,s,n[s]);this.isLog&&(this.val2lin=a,this.lin2val=l)},setOptions:function(t){this.options=e(this.defaultOptions,this.isXAxis?{}:this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],e(X[this.coll],t))},defaultLabelFormatter:function(){var t,e=this.axis,i=this.value,n=e.categories,r=this.dateTimeLabelFormat,s=X.lang.numericSymbols,o=s&&s.length,a=e.options.labels.format,e=e.isLog?i:e.tickInterval;if(a)t=b(a,this);else if(n)t=i;else if(r)t=G(r,i);else if(o&&e>=1e3)for(;o--&&t===_;)n=Math.pow(1e3,o+1),e>=n&&null!==s[o]&&(t=y(i/n,-1)+s[o]);return t===_&&(t=i>=1e4?y(i,0):y(i,-1,_,"")),t},getSeriesExtremes:function(){var t=this,e=t.chart;t.hasVisibleSeries=!1,t.dataMin=t.dataMax=null,t.stackExtremes={},t.buildStacks(),je(t.series,function(i){if(i.visible||!e.options.chart.ignoreHiddenSeries){var n;n=i.options.threshold;var r;t.hasVisibleSeries=!0,t.isLog&&0>=n&&(n=null),t.isXAxis?(n=i.xData,n.length&&(t.dataMin=pe(p(t.dataMin,n[0]),C(n)),t.dataMax=ue(p(t.dataMax,n[0]),P(n)))):(i.getExtremes(),r=i.dataMax,i=i.dataMin,c(i)&&c(r)&&(t.dataMin=pe(p(t.dataMin,i),i),t.dataMax=ue(p(t.dataMax,r),r)),c(n)&&(t.dataMin>=n?(t.dataMin=n,t.ignoreMinPadding=!0):t.dataMaxt||t>h+this.width)&&(a=!0)):(t=h,i=u-this.right,(c>s||s>c+this.height)&&(a=!0)),a&&!n?null:l.renderer.crispLine(["M",t,s,"L",i,o],e||1)},getLinearTickPositions:function(t,e,i){for(var n,e=I(ce(e/t)*t),i=I(de(i/t)*t),r=[];i>=e&&(r.push(e),e=I(e+t),e!==n);)n=e;return r},getMinorTickPositions:function(){var t,e=this.options,i=this.tickPositions,n=this.minorTickInterval,r=[];if(this.isLog)for(t=i.length,e=1;t>e;e++)r=r.concat(this.getLogTickPositions(n,i[e-1],i[e],!0));else if(this.isDatetimeAxis&&"auto"===e.minorTickInterval)r=r.concat(this.getTimeTicks(this.normalizeTimeTickInterval(n),this.min,this.max,e.startOfWeek)),r[0]=this.minRange;if(this.isXAxis&&this.minRange===_&&!this.isLog&&(c(o.min)||c(o.max)?this.minRange=null:(je(this.series,function(t){for(r=t.xData,i=s=t.xIncrement?1:r.length-1;i>0;i--)n=r[i]-r[i-1],(e===_||e>n)&&(e=n)}),this.minRange=pe(5*e,this.dataMax-this.dataMin))),l-al-a&&(t[0]=l-d,t[1]=p(o.min,l-d),a=P(t))}this.min=a,this.max=l},setAxisTranslation:function(t){var e,i=this.max-this.min,r=0,s=0,o=0,a=this.linkedParent,l=!!this.categories,h=this.transA;(this.isXAxis||l)&&(a?(s=a.minPointOffset,o=a.pointRangePadding):je(this.series,function(t){var a=ue(t.pointRange,+l),h=t.options.pointPlacement,d=t.closestPointRange;a>i&&(a=0),r=ue(r,a),s=ue(s,n(h)?0:a/2),o=ue(o,"on"===h?0:a),!t.noSharedTooltip&&c(d)&&(e=c(e)?pe(e,d):d)}),a=this.ordinalSlope&&e?this.ordinalSlope/e:1,this.minPointOffset=s*=a,this.pointRangePadding=o*=a,this.pointRange=pe(r,i),this.closestPointRange=e),t&&(this.oldTransA=h),this.translationSlope=this.transA=h=this.len/(i+o||1),this.transB=this.horiz?this.left:this.bottom,this.minPixelPadding=h*s},setTickPositions:function(t){var e,i=this,n=i.chart,r=i.options,s=i.isLog,o=i.isDatetimeAxis,l=i.isXAxis,h=i.isLinked,d=i.options.tickPositioner,u=r.maxPadding,f=r.minPadding,g=r.tickInterval,m=r.minTickInterval,y=r.tickPixelInterval,v=i.categories;h?(i.linkedParent=n[i.coll][r.linkedTo],n=i.linkedParent.getExtremes(),i.min=p(n.min,n.dataMin),i.max=p(n.max,n.dataMax),r.type!==i.linkedParent.options.type&&M(11,1)):(i.min=p(i.userMin,r.min,i.dataMin),i.max=p(i.userMax,r.max,i.dataMax)),s&&(!t&&pe(i.min,p(i.dataMin,i.min))<=0&&M(10,1),i.min=I(a(i.min)),i.max=I(a(i.max))),i.range&&c(i.max)&&(i.userMin=i.min=ue(i.min,i.max-i.range),i.userMax=i.max,i.range=null),i.beforePadding&&i.beforePadding(),i.adjustForMinRange(),!v&&!i.usePercentage&&!h&&c(i.min)&&c(i.max)&&(n=i.max-i.min)&&(c(r.min)||c(i.userMin)||!f||!(i.dataMin<0)&&i.ignoreMinPadding||(i.min-=n*f),c(r.max)||c(i.userMax)||!u||!(i.dataMax>0)&&i.ignoreMaxPadding||(i.max+=n*u)),i.min===i.max||void 0===i.min||void 0===i.max?i.tickInterval=1:h&&!g&&y===i.linkedParent.options.tickPixelInterval?i.tickInterval=i.linkedParent.tickInterval:(i.tickInterval=p(g,v?1:(i.max-i.min)*y/ue(i.len,y)),!c(g)&&i.lenue(2*i.len,200)&&M(19,!0),t=o?i.getTimeTicks(i.normalizeTimeTickInterval(i.tickInterval,r.units),i.min,i.max,r.startOfWeek,i.ordinalPositions,i.closestPointRange,!0):s?i.getLogTickPositions(i.tickInterval,i.min,i.max):i.getLinearTickPositions(i.tickInterval,i.min,i.max),e&&t.splice(1,t.length-2),i.tickPositions=t),h||(s=t[0],o=t[t.length-1],h=i.minPointOffset||0,r.startOnTick?i.min=s:i.min-h>s&&t.shift(),r.endOnTick?i.max=o:i.max+h(e[n]||0)&&this.options.alignTicks!==!1&&(e[n]=i.length),t.maxTicks=e},adjustTickAmount:function(){var t=this._maxTicksKey,e=this.tickPositions,i=this.chart.maxTicks;if(i&&i[t]&&!this.isDatetimeAxis&&!this.categories&&!this.isLinked&&this.options.alignTicks!==!1&&this.min!==_){var n=this.tickAmount,r=e.length;if(this.tickAmount=t=i[t],t>r){for(;e.length=this.dataMax&&(e=_)),this.displayBtn=t!==_||e!==_,this.setExtremes(t,e,!1,_,{trigger:"zoom"}),!0},setAxisSize:function(){var t,e,i=this.chart,n=this.options,r=n.offsetLeft||0,s=n.offsetRight||0,o=this.horiz;this.left=e=p(n.left,i.plotLeft+r),this.top=t=p(n.top,i.plotTop),this.width=r=p(n.width,i.plotWidth-r+s),this.height=n=p(n.height,i.plotHeight),this.bottom=i.chartHeight-n-t,this.right=i.chartWidth-r-e,this.len=ue(o?r:n,0),this.pos=o?e:t},getExtremes:function(){var t=this.isLog;return{min:t?I(l(this.min)):this.min,max:t?I(l(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(t){var e=this.isLog,i=e?l(this.min):this.min,e=e?l(this.max):this.max;return i>t||null===t?t=i:t>e&&(t=e),this.translate(t,0,1,0,1)},autoLabelAlign:function(t){return t=(p(t,0)-90*this.side+720)%360,t>15&&165>t?"right":t>195&&345>t?"left":"center"},getOffset:function(){var t,e,i,n,r,s,o,a=this,l=a.chart,h=l.renderer,d=a.options,u=a.tickPositions,f=a.ticks,g=a.horiz,m=a.side,y=l.inverted?[1,0,3,2][m]:m,v=0,x=0,b=d.title,w=d.labels,k=0,S=l.axisOffset,T=l.clipOffset,C=[-1,1,1,-1][m],P=1,A=p(w.maxStaggerLines,5);if(a.hasData=t=a.hasVisibleSeries||c(a.min)&&c(a.max)&&!!u,a.showAxis=l=t||p(d.showEmpty,!0),a.staggerLines=a.horiz&&w.staggerLines,a.axisGroup||(a.gridGroup=h.g("grid").attr({zIndex:d.gridZIndex||1}).add(),a.axisGroup=h.g("axis").attr({zIndex:d.zIndex||2}).add(),a.labelGroup=h.g("axis-labels").attr({zIndex:w.zIndex||7}).add()),t||a.isLinked){if(a.labelAlign=p(w.align||a.autoLabelAlign(w.rotation)),je(u,function(t){f[t]?f[t].addLabel():f[t]=new R(a,t)}),a.horiz&&!a.staggerLines&&A&&!w.rotation){for(i=a.reversed?[].concat(u).reverse():u;A>P;){for(t=[],n=!1,w=0;w1&&(a.staggerLines=P)}je(u,function(t){(0===m||2===m||{1:"left",3:"right"}[m]===a.labelAlign)&&(k=ue(f[t].getLabelSize(),k))}),a.staggerLines&&(k*=a.staggerLines,a.labelOffset=k)}else for(i in f)f[i].destroy(),delete f[i];b&&b.text&&b.enabled!==!1&&(a.axisTitle||(a.axisTitle=h.text(b.text,0,0,b.useHTML).attr({zIndex:7,rotation:b.rotation||0,align:b.textAlign||{low:"left",middle:"center",high:"right"}[b.align]}).css(b.style).add(a.axisGroup),a.axisTitle.isNew=!0),l&&(v=a.axisTitle.getBBox()[g?"height":"width"],x=p(b.margin,g?5:10),e=b.offset),a.axisTitle[l?"show":"hide"]()),a.offset=C*p(d.offset,S[m]),a.axisTitleMargin=p(e,k+x+(2!==m&&k&&C*d.labels[g?"y":"x"])),S[m]=ue(S[m],a.axisTitleMargin+v+C*a.offset),T[y]=ue(T[y],2*ce(d.lineWidth/2))},getLinePath:function(t){var e=this.chart,i=this.opposite,n=this.offset,r=this.horiz,s=this.left+(i?this.width:0)+n,n=e.chartHeight-this.bottom-(i?this.height:0)+n;return i&&(t*=-1),e.renderer.crispLine(["M",r?this.left:s,r?n:this.top,"L",r?e.chartWidth-this.right:s,r?n:e.chartHeight-this.bottom],t)},getTitlePosition:function(){var t=this.horiz,e=this.left,n=this.top,r=this.len,s=this.options.title,o=t?e:n,a=this.opposite,l=this.offset,h=i(s.style.fontSize||12),r={low:o+(t?0:r),middle:o+r/2,high:o+(t?r:0)}[s.align],e=(t?n+this.height:e)+(t?1:-1)*(a?-1:1)*this.axisTitleMargin+(2===this.side?h:0);return{x:t?r:e+(a?this.width:0)+l+(s.x||0),y:t?e-(a?this.height:0)+l:r+(s.y||0)}},render:function(){var t,e,i,n=this,r=n.horiz,s=n.reversed,o=n.chart,a=o.renderer,h=n.options,d=n.isLog,u=n.isLinked,p=n.tickPositions,f=n.axisTitle,g=n.stacks,m=n.ticks,y=n.minorTicks,v=n.alternateBands,x=h.stackLabels,b=h.alternateGridColor,w=n.tickmarkOffset,k=h.lineWidth,S=o.hasRendered&&c(n.oldMin)&&!isNaN(n.oldMin),T=n.hasData,C=n.showAxis,P=n.justifyLabels=!n.staggerLines&&r&&"justify"===h.labels.overflow;if(n.labelEdge.length=0,je([m,y,v],function(t){for(var e in t)t[e].isActive=!1}),(T||u)&&(n.minorTickInterval&&!n.categories&&je(n.getMinorTickPositions(),function(t){y[t]||(y[t]=new R(n,t,"minor")),S&&y[t].isNew&&y[t].render(null,!0),y[t].render(null,!1,1)}),p.length&&(t=p.slice(),(r&&s||!r&&!s)&&t.reverse(),P&&(t=t.slice(1).concat([t[0]])),je(t,function(e,i){P&&(i=i===t.length-1?0:i+1),(!u||e>=n.min&&e<=n.max)&&(m[e]||(m[e]=new R(n,e)),S&&m[e].isNew&&m[e].render(i,!0,.1),m[e].render(i,!1,1))}),w&&0===n.min&&(m[-1]||(m[-1]=new R(n,-1,null,!0)),m[-1].render(-1))),b&&je(p,function(t,r){r%2===0&&t=.5)t=he(t),o=this.getLinearTickPositions(t,e,i);else if(t>=.08)for(var h,c,d,u,f,s=ce(e),r=t>.3?[1,2,4]:t>.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];i+1>s&&!f;s++)for(c=r.length,h=0;c>h&&!f;h++)d=a(l(s)*r[h]),d>e&&(!n||i>=u)&&o.push(u),u>i&&(f=!0),u=d;else e=l(e),i=l(i),t=r[n?"minorTickInterval":"tickInterval"],t=p("auto"===t?null:t,this._minorAutoInterval,(i-e)*(r.tickPixelInterval/(n?5:1))/((n?s/this.tickPositions.length:s)||1)),t=k(t,null,w(t)),o=Ue(this.getLinearTickPositions(t,e,i),a),n||(this._minorAutoInterval=t/5);return n||(this.tickInterval=t),o},z.prototype.getTimeTicks=function(e,i,n,r){var s,o=[],a={},l=X.global.useUTC,h=new Date(i-q),d=e.unitRange,u=e.count;if(c(i)){d>=j.second&&(h.setMilliseconds(0),h.setSeconds(d>=j.minute?0:u*ce(h.getSeconds()/u))),d>=j.minute&&h[ee](d>=j.hour?0:u*ce(h[U]()/u)),d>=j.hour&&h[ie](d>=j.day?0:u*ce(h[Z]()/u)),d>=j.day&&h[ne](d>=j.month?1:u*ce(h[Q]()/u)),d>=j.month&&(h[re](d>=j.year?0:u*ce(h[J]()/u)),s=h[te]()),d>=j.year&&(s-=s%u,h[se](s)),d===j.week&&h[ne](h[Q]()-h[K]()+p(r,1)),i=1,q&&(h=new Date(h.getTime()+q)),s=h[te]();for(var r=h.getTime(),f=h[J](),g=h[Q](),m=l?q:(864e5+6e4*h.getTimezoneOffset())%864e5;n>r;)o.push(r),d===j.year?r=V(s+i*u,0):d===j.month?r=V(s,f+i*u):l||d!==j.day&&d!==j.week?r+=d*u:r=V(s,f,g+i*u*(d===j.day?1:7)),i++;o.push(r),je(Ve(o,function(t){return d<=j.hour&&t%j.day===m}),function(t){a[t]="day"})}return o.info=t(e,{higherRanks:a,totalRange:d*u}),o},z.prototype.normalizeTimeTickInterval=function(t,e){var i,n=e||[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2]],["week",[1,2]],["month",[1,2,3,4,6]],["year",null]],r=n[n.length-1],s=j[r[0]],o=r[1];for(i=0;it&&(o=[1,2,5]),n=k(t/s,o,"year"===r[0]?ue(w(t/s),1):1),{unitRange:s,count:n,unitName:r[0]}},B.prototype={destroy:function(){A(this,this.axis)},render:function(t){var e=this.options,i=e.format,i=i?b(i,this):e.formatter.call(this);this.label?this.label.attr({text:i,visibility:"hidden"}):this.label=this.axis.chart.renderer.text(i,0,0,e.useHTML).css(e.style).attr({align:this.textAlign,rotation:e.rotation,visibility:"hidden"}).add(t)},setOffset:function(t,e){var i=this.axis,n=i.chart,r=n.inverted,s=this.isNegative,o=i.translate(this.percent?100:this.total,0,0,0,1),i=i.translate(0),i=fe(o-i),a=n.xAxis[0].translate(this.x)+t,l=n.plotHeight,s={x:r?s?o:o-i:a,y:r?l-a-e:s?l-o-i:l-o,width:r?i:e,height:r?e:i};(r=this.label)&&(r.align(this.alignOptions,null,s),s=r.alignAttr,r.attr({visibility:this.options.crop===!1||n.isInsidePlot(s.x,s.y)?Ae?"inherit":"visible":"hidden"}))}},F.prototype={init:function(t,e){var n=e.borderWidth,r=e.style,s=i(r.padding);this.chart=t,this.options=e,this.crosshairs=[],this.now={x:0,y:0},this.isHidden=!0,this.label=t.renderer.label("",0,0,e.shape,null,null,e.useHTML,null,"tooltip").attr({padding:s,fill:e.backgroundColor,"stroke-width":n,r:e.borderRadius,zIndex:8}).css(r).css({padding:0}).add().attr({y:-999}),Me||this.label.shadow(e.shadow),this.shared=e.shared},destroy:function(){this.label&&(this.label=this.label.destroy()),clearTimeout(this.hideTimer),clearTimeout(this.tooltipTimeout)},move:function(e,i,n,r){var s=this,o=s.now,a=s.options.animation!==!1&&!s.isHidden;t(o,{x:a?(2*o.x+e)/3:e,y:a?(o.y+i)/2:i,anchorX:a?(2*o.anchorX+n)/3:n,anchorY:a?(o.anchorY+r)/2:r}),s.label.attr(o),a&&(fe(e-o.x)>1||fe(i-o.y)>1)&&(clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){s&&s.move(e,i,n,r)},32))},hide:function(){var t,e=this;clearTimeout(this.hideTimer),this.isHidden||(t=this.chart.hoverPoints,this.hideTimer=setTimeout(function(){e.label.fadeOut(),e.isHidden=!0},p(this.options.hideDelay,500)),t&&je(t,function(t){t.setState()}),this.chart.hoverPoints=null)},getAnchor:function(t,e){var i,n,r=this.chart,s=r.inverted,o=r.plotTop,a=0,l=0,t=u(t);return i=t[0].tooltipPos,this.followPointer&&e&&(e.chartX===_&&(e=r.pointer.normalize(e)),i=[e.chartX-r.plotLeft,e.chartY-o]),i||(je(t,function(t){n=t.series.yAxis,a+=t.plotX,l+=(t.plotLow?(t.plotLow+t.plotHigh)/2:t.plotY)+(!s&&n?n.top-o:0)}),a/=t.length,l/=t.length,i=[s?r.plotWidth-l:a,this.shared&&!s&&t.length>1&&e?e.chartY-o:s?r.plotHeight-a:l]),Ue(i,he)},getPosition:function(t,e,i){var n,r=this.chart,s=r.plotLeft,o=r.plotTop,a=r.plotWidth,l=r.plotHeight,h=p(this.options.distance,12),c=i.plotX,i=i.plotY,r=c+s+(r.inverted?h:-t-h),d=i-e+o+15;return 7>r&&(r=s+ue(c,0)+h),r+t>s+a&&(r-=r+t-(s+a),d=i-e+o-h,n=!0),o+5>d&&(d=o+5,n&&i>=d&&d+e>=i&&(d=i+o+h)),d+e>o+l&&(d=ue(o,o+l-e-h)),{x:r,y:d}},defaultFormatter:function(t){var e,i=this.points||u(this),n=i[0].series;return e=[n.tooltipHeaderFormatter(i[0])],je(i,function(t){n=t.series,e.push(n.tooltipFormatter&&n.tooltipFormatter(t)||t.point.tooltipFormatter(n.tooltipOptions.pointFormat))}),e.push(t.options.footerFormat||""),e.join("")},refresh:function(t,e){var i,n,r,s=this.chart,o=this.label,a=this.options,l={},h=[];r=a.formatter||this.defaultFormatter;var c,l=s.hoverPoints,d=this.shared;clearTimeout(this.hideTimer),this.followPointer=u(t)[0].series.tooltipOptions.followPointer,n=this.getAnchor(t,e),i=n[0],n=n[1],!d||t.series&&t.series.noSharedTooltip?l=t.getLabelConfig():(s.hoverPoints=t,l&&je(l,function(t){t.setState()}),je(t,function(t){t.setState("hover"),h.push(t.getLabelConfig())}),l={x:t[0].category,y:t[0].y},l.points=h,t=t[0]),r=r.call(l,this),l=t.series,r===!1?this.hide():(this.isHidden&&(ei(o),o.attr("opacity",1).show()),o.attr({text:r}),c=a.borderColor||t.color||l.color||"#606060",o.attr({stroke:c}),this.updatePosition({plotX:i,plotY:n}),this.isHidden=!1),Qe(s,"tooltipRefresh",{text:r,x:i+s.plotLeft,y:n+s.plotTop,borderColor:c})},updatePosition:function(t){var e=this.chart,i=this.label,i=(this.options.positioner||this.getPosition).call(this,i.width,i.height,t);this.move(he(i.x),he(i.y),t.plotX+e.plotLeft,t.plotY+e.plotTop)}};var ui=Highcharts.Pointer=function(t,e){this.init(t,e)};if(ui.prototype={init:function(t,e){var i,n=e.chart,r=n.events,s=Me?"":n.zoomType,n=t.inverted;this.options=e,this.chart=t,this.zoomX=i=/x/.test(s),this.zoomY=s=/y/.test(s),this.zoomHor=i&&!n||s&&n,this.zoomVert=s&&!n||i&&n,this.runChartClick=r&&!!r.click,this.pinchDown=[],this.lastValidTouch={},e.tooltip.enabled&&(t.tooltip=new F(t,e.tooltip)),this.setDOMEvents()},normalize:function(e,i){var n,r,e=e||ae.event;return e.target||(e.target=e.srcElement),e=Je(e),r=e.touches?e.touches.item(0):e,i||(this.chartPosition=i=qe(this.chart.container)),r.pageX===_?(n=ue(e.x,e.clientX-i.left),r=e.y):(n=r.pageX-i.left,r=r.pageY-i.top),t(e,{chartX:he(n),chartY:he(r)})},getCoordinates:function(t){var e={xAxis:[],yAxis:[]};return je(this.chart.axes,function(i){e[i.isXAxis?"xAxis":"yAxis"].push({axis:i,value:i.toValue(t[i.horiz?"chartX":"chartY"])})}),e},getIndex:function(t){var e=this.chart;return e.inverted?e.plotHeight+e.plotTop-t.chartY:t.chartX-e.plotLeft},runPointActions:function(t){var e,i,n,r,s=this,o=s.chart,a=o.series,l=o.tooltip,h=o.hoverPoint,c=o.hoverSeries,d=o.chartWidth,u=s.getIndex(t);if(l&&s.options.tooltip.shared&&(!c||!c.noSharedTooltip)){for(i=[],n=a.length,r=0;n>r;r++)a[r].visible&&a[r].options.enableMouseTracking!==!1&&!a[r].noSharedTooltip&&a[r].tooltipPoints.length&&(e=a[r].tooltipPoints[u])&&e.series&&(e._dist=fe(u-e.clientX),d=pe(d,e._dist),i.push(e));for(n=i.length;n--;)i[n]._dist>d&&i.splice(n,1);i.length&&i[0].clientX!==s.hoverX&&(l.refresh(i,t),s.hoverX=i[0].clientX)}c&&c.tracker?(e=c.tooltipPoints[u])&&e!==h&&e.onMouseOver(t):l&&l.followPointer&&!l.isHidden&&(a=l.getAnchor([{}],t),l.updatePosition({plotX:a[0],plotY:a[1]})),l&&!s._onDocumentMouseMove&&(s._onDocumentMouseMove=function(t){s.onDocumentMouseMove(t)},Ze(oe,"mousemove",s._onDocumentMouseMove)),je(o.axes,function(i){i.drawCrosshair(t,p(h,e))})},reset:function(t){var e=this.chart,i=e.hoverSeries,n=e.hoverPoint,r=e.tooltip,s=r&&r.shared?e.hoverPoints:n;(t=t&&r&&s)&&u(s)[0].plotX===_&&(t=!1),t?(r.refresh(s),n&&n.setState(n.state,!0)):(n&&n.onMouseOut(),i&&i.onMouseOut(),r&&r.hide(),this._onDocumentMouseMove&&(Ke(oe,"mousemove",this._onDocumentMouseMove),this._onDocumentMouseMove=null),je(e.axes,function(t){t.hideCrosshair()}),this.hoverX=null)},scaleGroups:function(t,e){var i,n=this.chart;je(n.series,function(r){i=t||r.getPlotBox(),r.xAxis&&r.xAxis.zoomEnabled&&(r.group.attr(i),r.markerGroup&&(r.markerGroup.attr(i),r.markerGroup.clip(e?n.clipRect:null)),r.dataLabelsGroup&&r.dataLabelsGroup.attr(i))}),n.clipRect.attr(e||n.clipBox)},pinchTranslate:function(t,e,i,n,r,s,o,a){t&&this.pinchTranslateDirection(!0,i,n,r,s,o,a),e&&this.pinchTranslateDirection(!1,i,n,r,s,o,a)},pinchTranslateDirection:function(t,e,i,n,r,s,o,a){var l,h,c,d=this.chart,u=t?"x":"y",p=t?"X":"Y",f="chart"+p,g=t?"width":"height",m=d["plot"+(t?"Left":"Top")],y=a||1,v=d.inverted,x=d.bounds[t?"h":"v"],b=1===e.length,w=e[0][f],k=i[0][f],S=!b&&e[1][f],T=!b&&i[1][f],i=function(){!b&&fe(w-S)>20&&(y=a||fe(k-T)/fe(w-S)),h=(m-k)/y+w,l=d["plot"+(t?"Width":"Height")]/y};i(),e=h,ex.max&&(e=x.max-l,c=!0),c?(k-=.8*(k-o[u][0]),b||(T-=.8*(T-o[u][1])),i()):o[u]=[k,T],v||(s[u]=h-m,s[g]=l),s=v?1/y:y,r[g]=l,r[u]=e,n[v?t?"scaleY":"scaleX":"scale"+p]=y,n["translate"+p]=s*m+(k-s*w)},pinch:function(e){var i=this,n=i.chart,r=i.pinchDown,s=n.tooltip&&n.tooltip.options.followTouchMove,o=e.touches,a=o.length,l=i.lastValidTouch,h=i.zoomHor||i.pinchHor,c=i.zoomVert||i.pinchVert,d=h||c,u=i.selectionMarker,p={},f=1===a&&(i.inClass(e.target,"highcharts-tracker")&&n.runTrackerClick||n.runChartClick),g={};(d||s)&&!f&&e.preventDefault(),Ue(o,function(t){return i.normalize(t)}),"touchstart"===e.type?(je(o,function(t,e){r[e]={chartX:t.chartX,chartY:t.chartY}}),l.x=[r[0].chartX,r[1]&&r[1].chartX],l.y=[r[0].chartY,r[1]&&r[1].chartY],je(n.axes,function(t){if(t.zoomEnabled){var e=n.bounds[t.horiz?"h":"v"],i=t.minPixelPadding,r=t.toPixels(t.dataMin),s=t.toPixels(t.dataMax),o=pe(r,s),r=ue(r,s);e.min=pe(t.pos,o-i),e.max=ue(t.pos+t.len,r+i)}})):r.length&&(u||(i.selectionMarker=u=t({destroy:Oe},n.plotBox)),i.pinchTranslate(h,c,r,o,p,u,g,l),i.hasPinched=d,i.scaleGroups(p,g),!d&&s&&1===a&&this.runPointActions(i.normalize(e)))},dragStart:function(t){var e=this.chart;e.mouseIsDown=t.type,e.cancelClick=!1,e.mouseDownX=this.mouseDownX=t.chartX,e.mouseDownY=this.mouseDownY=t.chartY},drag:function(t){var e,i=this.chart,n=i.options.chart,r=t.chartX,s=t.chartY,o=this.zoomHor,a=this.zoomVert,l=i.plotLeft,h=i.plotTop,c=i.plotWidth,d=i.plotHeight,u=this.mouseDownX,p=this.mouseDownY;l>r?r=l:r>l+c&&(r=l+c),h>s?s=h:s>h+d&&(s=h+d),this.hasDragged=Math.sqrt(Math.pow(u-r,2)+Math.pow(p-s,2)),this.hasDragged>10&&(e=i.isInsidePlot(u-l,p-h),i.hasCartesianSeries&&(this.zoomX||this.zoomY)&&e&&!this.selectionMarker&&(this.selectionMarker=i.renderer.rect(l,h,o?1:c,a?1:d,0).attr({fill:n.selectionMarkerFill||"rgba(69,114,167,0.25)",zIndex:7}).add()),this.selectionMarker&&o&&(r-=u,this.selectionMarker.attr({width:fe(r),x:(r>0?0:r)+u})),this.selectionMarker&&a&&(r=s-p,this.selectionMarker.attr({height:fe(r),y:(r>0?0:r)+p})),e&&!this.selectionMarker&&n.panning&&i.pan(t,n.panning))},drop:function(e){var i=this.chart,n=this.hasPinched;if(this.selectionMarker){var r,s={xAxis:[],yAxis:[],originalEvent:e.originalEvent||e},o=this.selectionMarker,a=o.x,l=o.y;(this.hasDragged||n)&&(je(i.axes,function(t){if(t.zoomEnabled){var e=t.horiz,i=t.toValue(e?a:l),e=t.toValue(e?a+o.width:l+o.height);!isNaN(i)&&!isNaN(e)&&(s[t.coll].push({axis:t,min:pe(i,e),max:ue(i,e)}),r=!0)}}),r&&Qe(i,"selection",s,function(e){i.zoom(t(e,n?{animation:!1}:null))})),this.selectionMarker=this.selectionMarker.destroy(),n&&this.scaleGroups()}i&&(f(i.container,{cursor:i._cursor}),i.cancelClick=this.hasDragged>10,i.mouseIsDown=this.hasDragged=this.hasPinched=!1,this.pinchDown=[])},onContainerMouseDown:function(t){t=this.normalize(t),t.preventDefault&&t.preventDefault(),this.dragStart(t)},onDocumentMouseUp:function(t){this.drop(t)},onDocumentMouseMove:function(t){var e=this.chart,i=this.chartPosition,n=e.hoverSeries,t=this.normalize(t,i);i&&n&&!this.inClass(t.target,"highcharts-tracker")&&!e.isInsidePlot(t.chartX-e.plotLeft,t.chartY-e.plotTop)&&this.reset()},onContainerMouseLeave:function(){this.reset(),this.chartPosition=null},onContainerMouseMove:function(t){var e=this.chart,t=this.normalize(t);"mousedown"===e.mouseIsDown&&this.drag(t),(this.inClass(t.target,"highcharts-tracker")||e.isInsidePlot(t.chartX-e.plotLeft,t.chartY-e.plotTop))&&!e.openMenu&&this.runPointActions(t)},inClass:function(t,e){for(var i;t;){if(i=d(t,"class")){if(-1!==i.indexOf(e))return!0;if(-1!==i.indexOf("highcharts-container"))return!1}t=t.parentNode}},onTrackerMouseOut:function(t){var e=this.chart.hoverSeries,t=t.relatedTarget||t.toElement,i=t.point&&t.point.series;!e||e.options.stickyTracking||this.inClass(t,"highcharts-tooltip")||i===e||e.onMouseOut()},onContainerClick:function(e){var i,n,r,s=this.chart,o=s.hoverPoint,a=s.plotLeft,l=s.plotTop,h=s.inverted,e=this.normalize(e);e.cancelBubble=!0,s.cancelClick||(o&&this.inClass(e.target,"highcharts-tracker")?(i=this.chartPosition,n=o.plotX,r=o.plotY,t(o,{pageX:i.left+a+(h?s.plotWidth-r:n),pageY:i.top+l+(h?s.plotHeight-n:r)}),Qe(o.series,"click",t(e,{point:o})),s.hoverPoint&&o.firePointEvent("click",e)):(t(e,this.getCoordinates(e)),s.isInsidePlot(e.chartX-a,e.chartY-l)&&Qe(s,"click",e)))},onContainerTouchStart:function(t){var e=this.chart;1===t.touches.length?(t=this.normalize(t),e.isInsidePlot(t.chartX-e.plotLeft,t.chartY-e.plotTop)?(this.runPointActions(t),this.pinch(t)):this.reset()):2===t.touches.length&&this.pinch(t)},onContainerTouchMove:function(t){(1===t.touches.length||2===t.touches.length)&&this.pinch(t)},onDocumentTouchEnd:function(t){this.drop(t)},setDOMEvents:function(){var t,e=this,i=e.chart.container;this._events=t=[[i,"onmousedown","onContainerMouseDown"],[i,"onmousemove","onContainerMouseMove"],[i,"onclick","onContainerClick"],[i,"mouseleave","onContainerMouseLeave"],[oe,"mouseup","onDocumentMouseUp"]],Ie&&t.push([i,"ontouchstart","onContainerTouchStart"],[i,"ontouchmove","onContainerTouchMove"],[oe,"touchend","onDocumentTouchEnd"]),je(t,function(t){e["_"+t[2]]=function(i){e[t[2]](i)},0===t[1].indexOf("on")?t[0][t[1]]=e["_"+t[2]]:Ze(t[0],t[1],e["_"+t[2]])})},destroy:function(){var t=this;je(t._events,function(e){0===e[1].indexOf("on")?e[0][e[1]]=null:Ke(e[0],e[1],t["_"+e[2]])}),delete t._events,clearInterval(t.tooltipTimeout)}},Xe=Highcharts.TrackerMixin={drawTrackerPoint:function(){var t=this,e=t.chart,i=e.pointer,n=t.options.cursor,r=n&&{cursor:n},s=function(i){var n,r=i.target;for(e.hoverSeries!==t&&t.onMouseOver();r&&!n;)n=r.point,r=r.parentNode;n!==_&&n!==e.hoverPoint&&n.onMouseOver(i)};je(t.points,function(t){t.graphic&&(t.graphic.element.point=t),t.dataLabel&&(t.dataLabel.element.point=t)}),t._hasTracking||(je(t.trackerGroups,function(e){t[e]&&(t[e].addClass("highcharts-tracker").on("mouseover",s).on("mouseout",function(t){i.onTrackerMouseOut(t)}).css(r),Ie)&&t[e].on("touchstart",s)}),t._hasTracking=!0)},drawTrackerGraph:function(){var t,e=this,i=e.options,n=i.trackByArea,r=[].concat(n?e.areaPath:e.graphPath),s=r.length,o=e.chart,a=o.pointer,l=o.renderer,h=o.options.tooltip.snap,c=e.tracker,d=i.cursor,u=d&&{cursor:d},d=e.singlePoints,p=function(){o.hoverSeries!==e&&e.onMouseOver()};if(s&&!n)for(t=s+1;t--;)"M"===r[t]&&r.splice(t+1,0,r[t+1]-h,r[t+2],"L"),(t&&"M"===r[t]||t===s)&&r.splice(t,0,"L",r[t-2]+h,r[t-1]);for(t=0;te-6&&e+n-6>s?"":Be}))}))},renderTitle:function(){var t=this.padding,e=this.options.title,i=0;e.text&&(this.title||(this.title=this.chart.renderer.label(e.text,t-3,t-4,null,null,null,null,null,"legend-title").attr({zIndex:1}).css(e.style).add(this.group)),t=this.title.getBBox(),i=t.height,this.offsetWidth=t.width,this.contentGroup.attr({translateY:i})),this.titleHeight=i},renderItem:function(t){var i,n=this,r=n.chart,s=r.renderer,o=n.options,a="horizontal"===o.layout,l=n.symbolWidth,h=o.symbolPadding,c=n.itemStyle,d=n.itemHiddenStyle,u=n.padding,f=a?p(o.itemDistance,8):0,m=!o.rtl,y=o.width,v=o.itemMarginBottom||0,x=n.itemMarginTop,w=n.initialItemX,k=t.legendItem,S=t.series&&t.series.drawLegendSymbol?t.series:t,T=S.options,T=T&&T.showCheckbox,C=o.useHTML;!k&&(t.legendGroup=s.g("legend-item").attr({zIndex:1}).add(n.scrollGroup),S.drawLegendSymbol(n,t),t.legendItem=k=s.text(o.labelFormat?b(o.labelFormat,t):o.labelFormatter.call(t),m?l+h:-h,n.baseline,C).css(e(t.visible?c:d)).attr({align:m?"left":"right",zIndex:2}).add(t.legendGroup),(C?k:t.legendGroup).on("mouseover",function(){t.setState("hover"),k.css(n.options.itemHoverStyle)}).on("mouseout",function(){k.css(t.visible?c:d),t.setState()}).on("click",function(e){var i=function(){t.setVisible()},e={browserEvent:e};t.firePointEvent?t.firePointEvent("legendItemClick",e,i):Qe(t,"legendItemClick",e,i)}),n.colorizeItem(t,t.visible),T)&&(t.checkbox=g("input",{type:"checkbox",checked:t.selected,defaultChecked:t.selected},o.itemCheckboxStyle,r.container),Ze(t.checkbox,"click",function(e){Qe(t,"checkboxClick",{checked:e.target.checked},function(){t.select()})})),s=k.getBBox(),i=t.legendItemWidth=o.itemWidth||t.legendItemWidth||l+h+s.width+f+(T?20:0),o=i,n.itemHeight=l=he(t.legendItemHeight||s.height),a&&n.itemX-w+o>(y||r.chartWidth-2*u-w)&&(n.itemX=w,n.itemY+=x+n.lastLineHeight+v,n.lastLineHeight=0),n.maxItemWidth=ue(n.maxItemWidth,o),n.lastItemY=x+n.itemY+v,n.lastLineHeight=ue(l,n.lastLineHeight),t._legendItemPos=[n.itemX,n.itemY],a?n.itemX+=o:(n.itemY+=x+l+v,n.lastLineHeight=l),n.offsetWidth=y||ue((a?n.itemX-w-f:o)+u,n.offsetWidth)},getAllItems:function(){var t=[];return je(this.chart.series,function(e){var i=e.options;p(i.showInLegend,c(i.linkedTo)?!1:_,!0)&&(t=t.concat(e.legendItems||("point"===i.legendType?e.data:e)))}),t},render:function(){var e,i,n,r,s=this,o=s.chart,a=o.renderer,l=s.group,h=s.box,c=s.options,d=s.padding,u=c.borderWidth,p=c.backgroundColor;s.itemX=s.initialItemX,s.itemY=s.initialItemY,s.offsetWidth=0,s.lastItemY=0,l||(s.group=l=a.g("legend").attr({zIndex:7}).add(),s.contentGroup=a.g().attr({zIndex:1}).add(l),s.scrollGroup=a.g().add(s.contentGroup)),s.renderTitle(),e=s.getAllItems(),T(e,function(t,e){return(t.options&&t.options.legendIndex||0)-(e.options&&e.options.legendIndex||0)}),c.reversed&&e.reverse(),s.allItems=e,s.display=i=!!e.length,je(e,function(t){s.renderItem(t)}),n=c.width||s.offsetWidth,r=s.lastItemY+s.lastLineHeight+s.titleHeight,r=s.handleOverflow(r),(u||p)&&(n+=d,r+=d,h?n>0&&r>0&&(h[h.isNew?"attr":"animate"](h.crisp(null,null,null,n,r)),h.isNew=!1):(s.box=h=a.rect(0,0,n,r,c.borderRadius,u||0).attr({stroke:c.borderColor,"stroke-width":u||0,fill:p||Be}).add(l).shadow(c.shadow),h.isNew=!0),h[i?"show":"hide"]()),s.legendWidth=n,s.legendHeight=r,je(e,function(t){s.positionItem(t)}),i&&l.align(t({width:n,height:r},c),!0,"spacingBox"),o.isResizing||this.positionCheckboxes()},handleOverflow:function(t){var e,i,n=this,r=this.chart,s=r.renderer,o=this.options,a=o.y,a=r.spacingBox.height+("top"===o.verticalAlign?-a:a)-this.padding,l=o.maxHeight,h=this.clipRect,c=o.navigation,d=p(c.animation,!0),u=c.arrowSize||12,f=this.nav,g=this.pages,m=this.allItems; +return"horizontal"===o.layout&&(a/=2),l&&(a=pe(a,l)),g.length=0,t>a&&!o.useHTML?(this.clipHeight=e=a-20-this.titleHeight-this.padding,this.currentPage=p(this.currentPage,1),this.fullHeight=t,je(m,function(t,n){var r=t._legendItemPos[1],s=he(t.legendItem.bBox.height),o=g.length;(!o||r-g[o-1]>e)&&g.push(i||r),n===m.length-1&&r+s-g[o-1]>e&&g.push(r),r!==i&&(i=r)}),h||(h=n.clipRect=s.clipRect(0,this.padding,9999,0),n.contentGroup.clip(h)),h.attr({height:e}),f||(this.nav=f=s.g().attr({zIndex:1}).add(this.group),this.up=s.symbol("triangle",0,0,u,u).on("click",function(){n.scroll(-1,d)}).add(f),this.pager=s.text("",15,10).css(c.style).add(f),this.down=s.symbol("triangle-down",0,0,u,u).on("click",function(){n.scroll(1,d)}).add(f)),n.scroll(0),t=a):f&&(h.attr({height:r.chartHeight}),f.hide(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0),t},scroll:function(t,e){var i=this.pages,n=i.length,r=this.currentPage+t,s=this.clipHeight,o=this.options.navigation,a=o.activeColor,o=o.inactiveColor,l=this.pager,h=this.padding;r>n&&(r=n),r>0&&(e!==_&&D(e,this.chart),this.nav.attr({translateX:h,translateY:s+this.padding+7+this.titleHeight,visibility:"visible"}),this.up.attr({fill:1===r?o:a}).css({cursor:1===r?"default":"pointer"}),l.attr({text:r+"/"+n}),this.down.attr({x:18+this.pager.getBBox().width,fill:r===n?o:a}).css({cursor:r===n?"default":"pointer"}),i=-i[r-1]+this.initialItemY,this.scrollGroup.animate({translateY:i}),this.currentPage=r,this.positionCheckboxes(i))}},li=Highcharts.LegendSymbolMixin={drawRectangle:function(t,e){var i=t.options.symbolHeight||12;e.legendSymbol=this.chart.renderer.rect(0,t.baseline-5-i/2,t.symbolWidth,i,p(t.options.symbolRadius,2)).attr({zIndex:3}).add(e.legendGroup)},drawLineMarker:function(t){var e,i=this.options,n=i.marker;e=t.symbolWidth;var r,s=this.chart.renderer,o=this.legendGroup,t=t.baseline-he(.3*s.fontMetrics(t.options.itemStyle.fontSize).b);i.lineWidth&&(r={"stroke-width":i.lineWidth},i.dashStyle&&(r.dashstyle=i.dashStyle),this.legendLine=s.path(["M",0,t,"L",e,t]).attr(r).add(o)),n&&n.enabled&&(i=n.radius,this.legendSymbol=e=s.symbol(this.symbol,e/2-i,t-i,2*i,2*i).add(o),e.isMarker=!0)}},/Trident\/7\.0/.test(xe)&&x(fi.prototype,"positionItem",function(t,e){var i=this,n=function(){e._legendItemPos&&t.call(i,e)};i.chart.renderer.forExport?n():setTimeout(n)}),N.prototype={init:function(t,i){var n,r=t.series;t.series=null,n=e(X,t),n.series=t.series=r,this.userOptions=t,r=n.chart,this.margin=this.splashArray("margin",r),this.spacing=this.splashArray("spacing",r);var s=r.events;this.bounds={h:{},v:{}},this.callback=i,this.isResizing=0,this.options=n,this.axes=[],this.series=[],this.hasCartesianSeries=r.showAxes;var o,a=this;if(a.index=Re.length,Re.push(a),r.reflow!==!1&&Ze(a,"load",function(){a.initReflow()}),s)for(o in s)Ze(a,o,s[o]);a.xAxis=[],a.yAxis=[],a.animation=Me?!1:p(r.animation,!0),a.pointCount=0,a.counters=new S,a.firstRender()},initSeries:function(t){var e=this.options.chart;return(e=He[t.type||e.type||e.defaultSeriesType])||M(17,!0),e=new e,e.init(this,t),e},isInsidePlot:function(t,e,i){var n=i?e:t,t=i?t:e;return n>=0&&n<=this.plotWidth&&t>=0&&t<=this.plotHeight},adjustTickAmounts:function(){this.options.chart.alignTicks!==!1&&je(this.axes,function(t){t.adjustTickAmount()}),this.maxTicks=null},redraw:function(e){var i,n,r=this.axes,s=this.series,o=this.pointer,a=this.legend,l=this.isDirtyLegend,h=this.isDirtyBox,c=s.length,d=c,u=this.renderer,p=u.isHidden(),f=[];for(D(e,this),p&&this.cloneRenderTo(),this.layOutTitles();d--;)if(e=s[d],e.options.stacking&&(i=!0,e.isDirty)){n=!0;break}if(n)for(d=c;d--;)e=s[d],e.options.stacking&&(e.isDirty=!0);je(s,function(t){t.isDirty&&"point"===t.options.legendType&&(l=!0)}),l&&a.options.enabled&&(a.render(),this.isDirtyLegend=!1),i&&this.getStacks(),this.hasCartesianSeries&&(this.isResizing||(this.maxTicks=null,je(r,function(t){t.setScale()})),this.adjustTickAmounts(),this.getMargins(),je(r,function(t){t.isDirty&&(h=!0)}),je(r,function(e){e.isDirtyExtremes&&(e.isDirtyExtremes=!1,f.push(function(){Qe(e,"afterSetExtremes",t(e.eventArgs,e.getExtremes())),delete e.eventArgs})),(h||i)&&e.redraw()})),h&&this.drawChartBox(),je(s,function(t){t.isDirty&&t.visible&&(!t.isCartesian||t.xAxis)&&t.redraw()}),o&&o.reset&&o.reset(!0),u.draw(),Qe(this,"redraw"),p&&this.cloneRenderTo(!0),je(f,function(t){t.call()})},get:function(t){var e,i,n=this.axes,r=this.series;for(e=0;epe(l.dataMin,l.min)&&o=18&&25>=e&&(e=15)),n&&(n.css({width:(r.width||o)+"px"}).align(t({y:e+s.margin},r),!1,"spacingBox"),!r.floating&&!r.verticalAlign&&(e=de(e+n.getBBox().height))),this.titleOffset=e},getChartSize:function(){var t=this.options.chart,e=this.renderToClone||this.renderTo;this.containerWidth=Ge(e,"width"),this.containerHeight=Ge(e,"height"),this.chartWidth=ue(0,t.width||this.containerWidth||600),this.chartHeight=ue(0,p(t.height,this.containerHeight>19?this.containerHeight:400))},cloneRenderTo:function(t){var e=this.renderToClone,i=this.container;t?e&&(this.renderTo.appendChild(i),L(e),delete this.renderToClone):(i&&i.parentNode===this.renderTo&&this.renderTo.removeChild(i),this.renderToClone=e=this.renderTo.cloneNode(0),f(e,{position:"absolute",top:"-9999px",display:"block"}),oe.body.appendChild(e),i&&e.appendChild(i))},getContainer:function(){var e,r,s,o,a=this.options.chart;this.renderTo=e=a.renderTo,o="highcharts-"+Ee++,n(e)&&(this.renderTo=e=oe.getElementById(e)),e||M(13,!0),r=i(d(e,"data-highcharts-chart")),!isNaN(r)&&Re[r]&&Re[r].destroy(),d(e,"data-highcharts-chart",this.index),e.innerHTML="",e.offsetWidth||this.cloneRenderTo(),this.getChartSize(),r=this.chartWidth,s=this.chartHeight,this.container=e=g(ze,{className:"highcharts-container"+(a.className?" "+a.className:""),id:o},t({position:"relative",overflow:"hidden",width:r+"px",height:s+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)"},a.style),this.renderToClone||e),this._cursor=e.style.cursor,this.renderer=a.forExport?new ai(e,r,s,!0):new H(e,r,s),Me&&this.renderer.create(this,e,r,s)},getMargins:function(){var t,e=this.spacing,i=this.legend,n=this.margin,r=this.options.legend,s=p(r.margin,10),o=r.x,a=r.y,l=r.align,h=r.verticalAlign,d=this.titleOffset;this.resetMargins(),t=this.axisOffset,d&&!c(n[0])&&(this.plotTop=ue(this.plotTop,d+this.options.title.margin+e[0])),i.display&&!r.floating&&("right"===l?c(n[1])||(this.marginRight=ue(this.marginRight,i.legendWidth-o+s+e[1])):"left"===l?c(n[3])||(this.plotLeft=ue(this.plotLeft,i.legendWidth+o+s+e[3])):"top"===h?c(n[0])||(this.plotTop=ue(this.plotTop,i.legendHeight+a+s+e[0])):"bottom"!==h||c(n[2])||(this.marginBottom=ue(this.marginBottom,i.legendHeight-a+s+e[2]))),this.extraBottomMargin&&(this.marginBottom+=this.extraBottomMargin),this.extraTopMargin&&(this.plotTop+=this.extraTopMargin),this.hasCartesianSeries&&je(this.axes,function(t){t.getOffset()}),c(n[3])||(this.plotLeft+=t[3]),c(n[0])||(this.plotTop+=t[0]),c(n[2])||(this.marginBottom+=t[2]),c(n[1])||(this.marginRight+=t[1]),this.setChartSize()},reflow:function(t){var e=this,i=e.options.chart,n=e.renderTo,r=i.width||Ge(n,"width"),s=i.height||Ge(n,"height"),i=t?t.target:ae,n=function(){e.container&&(e.setSize(r,s,!1),e.hasUserSize=null)};e.hasUserSize||!r||!s||i!==ae&&i!==oe||((r!==e.containerWidth||s!==e.containerHeight)&&(clearTimeout(e.reflowTimeout),t?e.reflowTimeout=setTimeout(n,100):n()),e.containerWidth=r,e.containerHeight=s)},initReflow:function(){var t=this,e=function(e){t.reflow(e)};Ze(ae,"resize",e),Ze(t,"destroy",function(){Ke(ae,"resize",e)})},setSize:function(t,e,i){var n,r,s,o=this;o.isResizing+=1,s=function(){o&&Qe(o,"endResize",null,function(){o.isResizing-=1})},D(i,o),o.oldChartHeight=o.chartHeight,o.oldChartWidth=o.chartWidth,c(t)&&(o.chartWidth=n=ue(0,he(t)),o.hasUserSize=!!n),c(e)&&(o.chartHeight=r=ue(0,he(e))),($?ti:f)(o.container,{width:n+"px",height:r+"px"},$),o.setChartSize(!0),o.renderer.setSize(n,r,i),o.maxTicks=null,je(o.axes,function(t){t.isDirty=!0,t.setScale()}),je(o.series,function(t){t.isDirty=!0}),o.isDirtyLegend=!0,o.isDirtyBox=!0,o.getMargins(),o.redraw(i),o.oldChartHeight=null,Qe(o,"resize"),$===!1?s():setTimeout(s,$&&$.duration||500)},setChartSize:function(t){var e,i,n,r,s=this.inverted,o=this.renderer,a=this.chartWidth,l=this.chartHeight,h=this.options.chart,c=this.spacing,d=this.clipOffset;this.plotLeft=e=he(this.plotLeft),this.plotTop=i=he(this.plotTop),this.plotWidth=n=ue(0,he(a-e-this.marginRight)),this.plotHeight=r=ue(0,he(l-i-this.marginBottom)),this.plotSizeX=s?r:n,this.plotSizeY=s?n:r,this.plotBorderWidth=h.plotBorderWidth||0,this.spacingBox=o.spacingBox={x:c[3],y:c[0],width:a-c[3]-c[1],height:l-c[0]-c[2]},this.plotBox=o.plotBox={x:e,y:i,width:n,height:r},a=2*ce(this.plotBorderWidth/2),s=de(ue(a,d[3])/2),o=de(ue(a,d[0])/2),this.clipBox={x:s,y:o,width:ce(this.plotSizeX-ue(a,d[1])/2-s),height:ce(this.plotSizeY-ue(a,d[2])/2-o)},t||je(this.axes,function(t){t.setAxisSize(),t.setAxisTranslation()})},resetMargins:function(){var t=this.spacing,e=this.margin;this.plotTop=p(e[0],t[0]),this.marginRight=p(e[1],t[1]),this.marginBottom=p(e[2],t[2]),this.plotLeft=p(e[3],t[3]),this.axisOffset=[0,0,0,0],this.clipOffset=[0,0,0,0]},drawChartBox:function(){var t,e=this.options.chart,i=this.renderer,n=this.chartWidth,r=this.chartHeight,s=this.chartBackground,o=this.plotBackground,a=this.plotBorder,l=this.plotBGImage,h=e.borderWidth||0,c=e.backgroundColor,d=e.plotBackgroundColor,u=e.plotBackgroundImage,p=e.plotBorderWidth||0,f=this.plotLeft,g=this.plotTop,m=this.plotWidth,y=this.plotHeight,v=this.plotBox,x=this.clipRect,b=this.clipBox;t=h+(e.shadow?8:0),(h||c)&&(s?s.animate(s.crisp(null,null,null,n-t,r-t)):(s={fill:c||Be},h&&(s.stroke=e.borderColor,s["stroke-width"]=h),this.chartBackground=i.rect(t/2,t/2,n-t,r-t,e.borderRadius,h).attr(s).add().shadow(e.shadow))),d&&(o?o.animate(v):this.plotBackground=i.rect(f,g,m,y,0).attr({fill:d}).add().shadow(e.plotShadow)),u&&(l?l.animate(v):this.plotBGImage=i.image(u,f,g,m,y).add()),x?x.animate({width:b.width,height:b.height}):this.clipRect=i.clipRect(b),p&&(a?a.animate(a.crisp(null,f,g,m,y)):this.plotBorder=i.rect(f,g,m,y,0,-p).attr({stroke:e.plotBorderColor,"stroke-width":p,zIndex:1}).add()),this.isDirtyBox=!1},propFromSeries:function(){var t,e,i,n=this,r=n.options.chart,s=n.options.series;je(["inverted","angular","polar"],function(o){for(t=He[r.type||r.defaultSeriesType],i=n[o]||r[o]||t&&t.prototype[o],e=s&&s.length;!i&&e--;)(t=He[s[e].type])&&t.prototype[o]&&(i=!0);n[o]=i})},linkSeries:function(){var t=this,e=t.series;je(e,function(t){t.linkedSeries.length=0}),je(e,function(e){var i=e.options.linkedTo;n(i)&&(i=":previous"===i?t.series[e.index-1]:t.get(i))&&(i.linkedSeries.push(e),e.linkedParent=i)})},render:function(){var e,n=this,r=n.axes,s=n.renderer,o=n.options,a=o.labels,l=o.credits;n.setTitle(),n.legend=new fi(n,o.legend),n.getStacks(),je(r,function(t){t.setScale()}),n.getMargins(),n.maxTicks=null,je(r,function(t){t.setTickPositions(!0),t.setMaxTicks()}),n.adjustTickAmounts(),n.getMargins(),n.drawChartBox(),n.hasCartesianSeries&&je(r,function(t){t.render()}),n.seriesGroup||(n.seriesGroup=s.g("series-group").attr({zIndex:3}).add()),je(n.series,function(t){t.translate(),t.setTooltipPoints(),t.render()}),a.items&&je(a.items,function(e){var r=t(a.style,e.style),o=i(r.left)+n.plotLeft,l=i(r.top)+n.plotTop+12;delete r.left,delete r.top,s.text(e.html,o,l).attr({zIndex:2}).css(r).add()}),l.enabled&&!n.credits&&(e=l.href,n.credits=s.text(l.text,0,0).on("click",function(){e&&(location.href=e)}).attr({align:l.position.align,zIndex:8}).css(l.style).add().align(l.position)),n.hasRendered=!0},destroy:function(){var t,e=this,i=e.axes,n=e.series,r=e.container,s=r&&r.parentNode;for(Qe(e,"destroy"),Re[e.index]=_,e.renderTo.removeAttribute("data-highcharts-chart"),Ke(e),t=i.length;t--;)i[t]=i[t].destroy();for(t=n.length;t--;)n[t]=n[t].destroy();je("title,subtitle,chartBackground,plotBackground,plotBGImage,plotBorder,seriesGroup,clipRect,credits,pointer,scroller,rangeSelector,legend,resetZoomButton,tooltip,renderer".split(","),function(t){var i=e[t];i&&i.destroy&&(e[t]=i.destroy())}),r&&(r.innerHTML="",Ke(r),s&&L(r));for(t in e)delete e[t]},isReadyToRender:function(){var t=this;return!Ae&&ae==ae.top&&"complete"!==oe.readyState||Me&&!ae.canvg?(Me?ci.push(function(){t.firstRender()},t.options.global.canvasToolsURL):oe.attachEvent("onreadystatechange",function(){oe.detachEvent("onreadystatechange",t.firstRender),"complete"===oe.readyState&&t.firstRender()}),!1):!0},firstRender:function(){var t=this,e=t.options,i=t.callback;t.isReadyToRender()&&(t.getContainer(),Qe(t,"init"),t.resetMargins(),t.setChartSize(),t.propFromSeries(),t.getAxes(),je(e.series||[],function(e){t.initSeries(e)}),t.linkSeries(),Qe(t,"beforeRender"),t.pointer=new ui(t,e),t.render(),t.renderer.draw(),i&&i.apply(t,[t]),je(t.callbacks,function(e){e.apply(t,[t])}),t.cloneRenderTo(!0),Qe(t,"load"))},splashArray:function(t,e){var i=e[t],i=r(i)?i:[i,i,i,i];return[p(e[t+"Top"],i[0]),p(e[t+"Right"],i[1]),p(e[t+"Bottom"],i[2]),p(e[t+"Left"],i[3])]}},N.prototype.callbacks=[];var hi=Highcharts.CenteredSeriesMixin={getCenter:function(){var t,e,n=this.options,r=this.chart,s=2*(n.slicedOffset||0),o=r.plotWidth-2*s,a=r.plotHeight-2*s,r=n.center,n=[p(r[0],"50%"),p(r[1],"50%"),n.size||"100%",n.innerSize||0],l=pe(o,a);return Ue(n,function(n,r){return e=/%$/.test(n),t=2>r||2===r&&e,(e?[o,a,l,l][r]*i(n)/100:n)+(t?s:0)})}},gi=function(){};gi.prototype={init:function(t,e,i){return this.series=t,this.applyOptions(e,i),this.pointAttr={},t.options.colorByPoint&&(e=t.options.colors||t.chart.options.colors,this.color=this.color||e[t.colorCounter++],t.colorCounter===e.length)&&(t.colorCounter=0),t.chart.pointCount++,this},applyOptions:function(e,i){var n=this.series,r=n.pointValKey,e=gi.prototype.optionsToObject.call(this,e);return t(this,e),this.options=this.options?t(this.options,e):e,r&&(this.y=this[r]),this.x===_&&n&&(this.x=i===_?n.autoIncrement():i),this},optionsToObject:function(t){var e={},i=this.series,n=i.pointArrayMap||["y"],r=n.length,o=0,a=0;if("number"==typeof t||null===t)e[n[0]]=t;else if(s(t))for(t.length>r&&(i=typeof t[0],"string"===i?e.name=t[0]:"number"===i&&(e.x=t[0]),o++);r>a;)e[n[a++]]=t[o++];else"object"==typeof t&&(e=t,t.dataLabels&&(i._hasPointLabels=!0),t.marker&&(i._hasPointMarkers=!0));return e},destroy:function(){var t,e=this.series.chart,i=e.hoverPoints;e.pointCount--,i&&(this.setState(),h(i,this),!i.length)&&(e.hoverPoints=null),this===e.hoverPoint&&this.onMouseOut(),(this.graphic||this.dataLabel)&&(Ke(this),this.destroyElements()),this.legendItem&&e.legend.destroyItem(this);for(t in this)this[t]=null},destroyElements:function(){for(var t,e="graphic,dataLabel,dataLabelUpper,group,connector,shadowGroup".split(","),i=6;i--;)t=e[i],this[t]&&(this[t]=this[t].destroy())},getLabelConfig:function(){return{x:this.category,y:this.y,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}},select:function(t,e){var i=this,n=i.series,r=n.chart,t=p(t,!i.selected);i.firePointEvent(t?"select":"unselect",{accumulate:e},function(){i.selected=i.options.selected=t,n.options.data[Ye(i,n.data)]=i.options,i.setState(t&&"select"),e||je(r.getSelectedPoints(),function(t){t.selected&&t!==i&&(t.selected=t.options.selected=!1,n.options.data[Ye(t,n.data)]=t.options,t.setState(""),t.firePointEvent("unselect"))})})},onMouseOver:function(t){var e=this.series,i=e.chart,n=i.tooltip,r=i.hoverPoint;r&&r!==this&&r.onMouseOut(),this.firePointEvent("mouseOver"),n&&(!n.shared||e.noSharedTooltip)&&n.refresh(this,t),this.setState("hover"),i.hoverPoint=this},onMouseOut:function(){var t=this.series.chart,e=t.hoverPoints;e&&-1!==Ye(this,e)||(this.firePointEvent("mouseOut"),this.setState(),t.hoverPoint=null)},tooltipFormatter:function(t){var e=this.series,i=e.tooltipOptions,n=p(i.valueDecimals,""),r=i.valuePrefix||"",s=i.valueSuffix||"";return je(e.pointArrayMap||["y"],function(e){e="{point."+e,(r||s)&&(t=t.replace(e+"}",r+e+"}"+s)),t=t.replace(e+"}",e+":,."+n+"f}")}),b(t,{point:this,series:this.series})},firePointEvent:function(t,e,i){var n=this,r=this.series.options;(r.point.events[t]||n.options&&n.options.events&&n.options.events[t])&&this.importEvents(),"click"===t&&r.allowPointSelect&&(i=function(t){n.select(null,t.ctrlKey||t.metaKey||t.shiftKey)}),Qe(this,t,e,i)},importEvents:function(){if(!this.hasImportedEvents){var t,i=e(this.series.options.point,this.options).events;this.events=i;for(t in i)Ze(this,t,i[t]);this.hasImportedEvents=!0}},setState:function(t,i){var n=this.plotX,r=this.plotY,s=this.series,o=s.options.states,a=ii[s.type].marker&&s.options.marker,l=a&&!a.enabled,h=a&&a.states[t],c=h&&h.enabled===!1,d=s.stateMarkerGraphic,u=this.marker||{},p=s.chart,f=this.pointAttr,t=t||"",i=i&&d;t===this.state&&!i||this.selected&&"select"!==t||o[t]&&o[t].enabled===!1||t&&(c||l&&!h.enabled)||t&&u.states&&u.states[t]&&u.states[t].enabled===!1||(this.graphic?(o=a&&this.graphic.symbolName&&f[t].r,this.graphic.attr(e(f[t],o?{x:n-o,y:r-o,width:2*o,height:2*o}:{}))):(t&&h&&(o=h.radius,u=u.symbol||s.symbol,d&&d.currentSymbol!==u&&(d=d.destroy()),d?d[i?"animate":"attr"]({x:n-o,y:r-o}):(s.stateMarkerGraphic=d=p.renderer.symbol(u,n-o,r-o,2*o,2*o).attr(f[t]).add(s.markerGroup),d.currentSymbol=u)),d&&d[t&&p.isInsidePlot(n,r,p.inverted)?"show":"hide"]()),this.state=t)}};var mi=function(){};mi.prototype={isCartesian:!0,type:"line",pointClass:gi,sorted:!0,requireSorting:!0,pointAttrToOptions:{stroke:"lineColor","stroke-width":"lineWidth",fill:"fillColor",r:"radius"},axisTypes:["xAxis","yAxis"],colorCounter:0,parallelArrays:["x","y"],init:function(e,i){var n,r,s=this,o=e.series,a=function(t,e){return p(t.options.index,t._i)-p(e.options.index,e._i)};s.chart=e,s.options=i=s.setOptions(i),s.linkedSeries=[],s.bindAxes(),t(s,{name:i.name,state:"",pointAttr:{},visible:i.visible!==!1,selected:i.selected===!0}),Me&&(i.animation=!1),r=i.events;for(n in r)Ze(s,n,r[n]);(r&&r.click||i.point&&i.point.events&&i.point.events.click||i.allowPointSelect)&&(e.runTrackerClick=!0),s.getColor(),s.getSymbol(),je(s.parallelArrays,function(t){s[t+"Data"]=[]}),s.setData(i.data,!1),s.isCartesian&&(e.hasCartesianSeries=!0),o.push(s),s._i=o.length-1,T(o,a),this.yAxis&&T(this.yAxis.series,a),je(o,function(t,e){t.index=e,t.name=t.name||"Series "+(e+1)})},bindAxes:function(){var t,e=this,i=e.options,n=e.chart;je(e.axisTypes||[],function(r){je(n[r],function(n){t=n.options,(i[r]===t.index||i[r]!==_&&i[r]===t.id||i[r]===_&&0===t.index)&&(n.series.push(e),e[r]=n,n.isDirty=!0)}),!e[r]&&e.optionalAxis!==r&&M(18,!0)})},updateParallelArrays:function(t,e){var i=t.series,n=arguments;je(i.parallelArrays,"number"==typeof e?function(n){var r="y"===n&&i.toYData?i.toYData(t):t[n];i[n+"Data"][e]=r}:function(t){Array.prototype[e].apply(i[t+"Data"],Array.prototype.slice.call(n,2))})},autoIncrement:function(){var t=this.options,e=this.xIncrement,e=p(e,t.pointStart,0);return this.pointInterval=p(this.pointInterval,t.pointInterval,1),this.xIncrement=e+this.pointInterval,e},getSegments:function(){var t,e=-1,i=[],n=this.points,r=n.length;if(r)if(this.options.connectNulls){for(t=r;t--;)null===n[t].y&&n.splice(t,1);n.length&&(i=[n])}else je(n,function(t,s){null===t.y?(s>e+1&&i.push(n.slice(e+1,s)),e=s):s===r-1&&i.push(n.slice(e+1,s+1))});this.segments=i},setOptions:function(t){var i=this.chart,n=i.options.plotOptions,i=i.userOptions||{},r=i.plotOptions||{},s=n[this.type];return this.userOptions=t,n=e(s,n.series,t),this.tooltipOptions=e(X.tooltip,X.plotOptions[this.type].tooltip,i.tooltip,r.series&&r.series.tooltip,r[this.type]&&r[this.type].tooltip,t.tooltip),null===s.marker&&delete n.marker,n},getColor:function(){var t,e=this.options,i=this.userOptions,n=this.chart.options.colors,r=this.chart.counters;t=e.color||ii[this.type].color,t||e.colorByPoint||(c(i._colorIndex)?e=i._colorIndex:(i._colorIndex=r.color,e=r.color++),t=n[e]),this.color=t,r.wrapColor(n.length)},getSymbol:function(){var t=this.userOptions,e=this.options.marker,i=this.chart,n=i.options.symbols,i=i.counters;this.symbol=e.symbol,this.symbol||(c(t._symbolIndex)?t=t._symbolIndex:(t._symbolIndex=i.symbol,t=i.symbol++),this.symbol=n[t]),/^url/.test(this.symbol)&&(e.radius=0),i.wrapSymbol(n.length)},drawLegendSymbol:li.drawLineMarker,setData:function(t,e){var i,r=this,a=r.points,l=r.options,h=r.chart,c=null,d=r.xAxis,u=d&&!!d.categories;r.xIncrement=null,r.pointRange=u?1:l.pointRange,r.colorCounter=0;var t=t||[],f=t.length;i=l.turboThreshold;var g=this.xData,m=this.yData,y=r.pointArrayMap,y=y&&y.length;if(je(this.parallelArrays,function(t){r[t+"Data"].length=0}),i&&f>i){for(i=0;null===c&&f>i;)c=t[i],i++;if(o(c)){for(u=p(l.pointStart,0),l=p(l.pointInterval,1),i=0;f>i;i++)g[i]=u,m[i]=t[i],u+=l;r.xIncrement=u}else if(s(c))if(y)for(i=0;f>i;i++)l=t[i],g[i]=l[0],m[i]=l.slice(1,y+1);else for(i=0;f>i;i++)l=t[i],g[i]=l[0],m[i]=l[1];else M(12)}else for(i=0;f>i;i++)t[i]!==_&&(l={series:r},r.pointClass.prototype.applyOptions.apply(l,[t[i]]),r.updateParallelArrays(l,i),u&&l.name)&&(d.names[l.x]=l.name);for(n(m[0])&&M(14,!0),r.data=[],r.options.data=t,i=a&&a.length||0;i--;)a[i]&&a[i].destroy&&a[i].destroy();d&&(d.minRange=d.userMinRange),r.isDirty=r.isDirtyData=h.isDirtyBox=!0,p(e,!0)&&h.redraw(!1)},processData:function(t){var e,i=this.xData,n=this.yData,r=i.length;e=0;var s,o,a=this.xAxis,l=this.options,h=l.cropThreshold,c=this.isCartesian;if(c&&!this.isDirty&&!a.isDirty&&!this.yAxis.isDirty&&!t)return!1;for(c&&this.sorted&&(!h||r>h||this.forceCrop)&&(t=a.min,a=a.max,i[r-1]a?(i=[],n=[]):(i[0]a)&&(e=this.cropData(this.xData,this.yData,t,a),i=e.xData,n=e.yData,e=e.start,s=!0)),a=i.length-1;a>=0;a--)r=i[a]-i[a-1],r>0&&(o===_||o>r)?o=r:0>r&&this.requireSorting&&M(15);this.cropped=s,this.cropStart=e,this.processedXData=i,this.processedYData=n,null===l.pointRange&&(this.pointRange=o||1),this.closestPointRange=o},cropData:function(t,e,i,n){var r,s=t.length,o=0,a=s,l=p(this.cropShoulder,1);for(r=0;s>r;r++)if(t[r]>=i){o=ue(0,r-l);break}for(;s>r;r++)if(t[r]>n){a=r+l;break}return{xData:t.slice(o,a),yData:e.slice(o,a),start:o,end:a}},generatePoints:function(){var t,e,i,n,r=this.options.data,s=this.data,o=this.processedXData,a=this.processedYData,l=this.pointClass,h=o.length,c=this.cropStart||0,d=this.hasGroupedData,p=[];for(s||d||(s=[],s.length=r.length,s=this.data=s),n=0;h>n;n++)e=c+n,d?p[n]=(new l).init(this,[o[n]].concat(u(a[n]))):(s[e]?i=s[e]:r[e]!==_&&(s[e]=i=(new l).init(this,r[e],o[n])),p[n]=i);if(s&&(h!==(t=s.length)||d))for(n=0;t>n;n++)n===c&&!d&&(n+=h),s[n]&&(s[n].destroyElements(),s[n].plotX=_);this.data=s,this.points=p},setStackedPoints:function(){if(this.options.stacking&&(this.visible===!0||this.chart.options.chart.ignoreHiddenSeries===!1)){var t,e,i,n,r,s=this.processedXData,o=this.processedYData,a=[],l=o.length,h=this.options,c=h.threshold,d=h.stack,h=h.stacking,u=this.stackKey,p="-"+u,f=this.negStacks,g=this.yAxis,m=g.stacks,y=g.oldStacks;for(i=0;l>i;i++)n=s[i],r=o[i],e=(t=f&&c>r)?p:u,m[e]||(m[e]={}),m[e][n]||(y[e]&&y[e][n]?(m[e][n]=y[e][n],m[e][n].total=null):m[e][n]=new B(g,g.options.stackLabels,t,n,d,h)),e=m[e][n],e.points[this.index]=[e.cum||0],"percent"===h?(t=t?u:p,f&&m[t]&&m[t][n]?(t=m[t][n],e.total=t.total=ue(t.total,e.total)+fe(r)||0):e.total+=fe(r)||0):e.total+=r||0,e.cum=(e.cum||0)+(r||0),e.points[this.index].push(e.cum),a[i]=e.cum;"percent"===h&&(g.usePercentage=!0),this.stackedYData=a,g.oldStacks={}}},setPercentStacks:function(){var t=this,e=t.stackKey,i=t.yAxis.stacks;je([e,"-"+e],function(e){for(var n,r,s,o=t.xData.length;o--;)r=t.xData[o],n=(s=i[e]&&i[e][r])&&s.points[t.index],(r=n)&&(s=s.total?100/s.total:0,r[0]=I(r[0]*s),r[1]=I(r[1]*s),t.stackedYData[o]=r[1])})},getExtremes:function(t){var e,i=this.yAxis,n=this.processedXData,r=[],s=0;e=this.xAxis.getExtremes();var o,a,l,h,c=e.min,d=e.max,t=t||this.stackedYData||this.processedYData;for(e=t.length,h=0;e>h;h++)if(a=n[h],l=t[h],o=null!==l&&l!==_&&(!i.isLog||l.length||l>0),a=this.getExtremesFromAll||this.cropped||(n[h+1]||a)>=c&&(n[h-1]||a)<=d,o&&a)if(o=l.length)for(;o--;)null!==l[o]&&(r[s++]=l[o]);else r[s++]=l;this.dataMin=p(void 0,C(r)),this.dataMax=p(void 0,P(r))},translate:function(){this.processedXData||this.processData(),this.generatePoints();for(var t=this.options,e=t.stacking,i=this.xAxis,n=i.categories,r=this.yAxis,s=this.points,a=s.length,l=!!this.modifyValue,h=t.pointPlacement,d="between"===h||o(h),u=t.threshold,t=0;a>t;t++){var f=s[t],g=f.x,m=f.y,y=f.low,v=e&&r.stacks[(this.negStacks&&u>m?"-":"")+this.stackKey];r.isLog&&0>=m&&(f.y=m=null),f.plotX=i.translate(g,0,0,0,1,h,"flags"===this.type),e&&this.visible&&v&&v[g]&&(v=v[g],m=v.points[this.index],y=m[0],m=m[1],0===y&&(y=p(u,r.min)),r.isLog&&0>=y&&(y=null),f.total=f.stackTotal=v.total,f.percentage="percent"===e&&f.y/v.total*100,f.stackY=m,v.setOffset(this.pointXOffset||0,this.barW||0)),f.yBottom=c(y)?r.translate(y,0,1,0,1):null,l&&(m=this.modifyValue(m,f)),f.plotY="number"==typeof m&&1/0!==m?r.translate(m,0,1,0,1):_,f.clientX=d?i.translate(g,0,0,0,1):f.plotX,f.negative=f.y<(u||0),f.category=n&&n[f.x]!==_?n[f.x]:f.x}this.getSegments()},setTooltipPoints:function(t){var e,i,n,r,s=[],o=this.xAxis,a=o&&o.getExtremes(),l=o?o.tooltipLen||o.len:this.chart.plotSizeX,h=[];if(this.options.enableMouseTracking!==!1){for(t&&(this.tooltipPoints=null),je(this.segments||this.points,function(t){s=s.concat(t)}),o&&o.reversed&&(s=s.reverse()),this.orderTooltipPoints&&this.orderTooltipPoints(s),t=s.length,r=0;t>r;r++)if(o=s[r],e=o.x,e>=a.min&&e<=a.max)for(n=s[r+1],e=i===_?0:i+1,i=s[r+1]?pe(ue(0,ce((o.clientX+(n?n.wrappedClientX||n.clientX:l))/2)),l):l;e>=0&&i>=e;)h[e++]=o;this.tooltipPoints=h}},tooltipHeaderFormatter:function(t){var e,i=this.tooltipOptions,n=i.dateTimeLabelFormats,r=i.xDateFormat||n.year,s=this.xAxis,a=s&&"datetime"===s.options.type,i=i.headerFormat,s=s&&s.closestPointRange;if(a&&!r)if(s){for(e in j)if(j[e]>=s){r=n[e];break}}else r=n.day;return a&&r&&o(t.key)&&(i=i.replace("{point.key}","{point.key:"+r+"}")),b(i,{point:t,series:this})},onMouseOver:function(){var t=this.chart,e=t.hoverSeries;e&&e!==this&&e.onMouseOut(),this.options.events.mouseOver&&Qe(this,"mouseOver"),this.setState("hover"),t.hoverSeries=this},onMouseOut:function(){var t=this.options,e=this.chart,i=e.tooltip,n=e.hoverPoint;n&&n.onMouseOut(),this&&t.events.mouseOut&&Qe(this,"mouseOut"),i&&!t.stickyTracking&&(!i.shared||this.noSharedTooltip)&&i.hide(),this.setState(),e.hoverSeries=null},animate:function(e){var i,n=this,s=n.chart,o=s.renderer;i=n.options.animation;var a,l=s.clipBox,h=s.inverted;i&&!r(i)&&(i=ii[n.type].animation),a="_sharedClip"+i.duration+i.easing,e?(e=s[a],i=s[a+"m"],e||(s[a]=e=o.clipRect(t(l,{width:0})),s[a+"m"]=i=o.clipRect(-99,h?-s.plotLeft:-s.plotTop,99,h?s.chartWidth:s.chartHeight)),n.group.clip(e),n.markerGroup.clip(i),n.sharedClipKey=a):((e=s[a])&&(e.animate({width:s.plotSizeX},i),s[a+"m"].animate({width:s.plotSizeX+99},i)),n.animate=null,n.animationTimeout=setTimeout(function(){n.afterAnimate()},i.duration))},afterAnimate:function(){var t=this.chart,e=this.sharedClipKey,i=this.group;i&&this.options.clip!==!1&&(i.clip(t.clipRect),this.markerGroup.clip()),setTimeout(function(){e&&t[e]&&(t[e]=t[e].destroy(),t[e+"m"]=t[e+"m"].destroy())},100)},drawPoints:function(){var e,i,n,r,s,o,a,l,h,c,d=this.points,u=this.chart,f=this.options.marker,g=this.pointAttr[""],m=this.markerGroup;if(f.enabled||this._hasPointMarkers)for(r=d.length;r--;)s=d[r],i=ce(s.plotX),n=s.plotY,h=s.graphic,a=s.marker||{},e=f.enabled&&a.enabled===_||a.enabled,c=u.isInsidePlot(he(i),n,u.inverted),e&&n!==_&&!isNaN(n)&&null!==s.y?(e=s.pointAttr[s.selected?"select":""]||g,o=e.r,a=p(a.symbol,this.symbol),l=0===a.indexOf("url"),h?h.attr({visibility:c?Ae?"inherit":"visible":"hidden"}).animate(t({x:i-o,y:n-o},h.symbolName?{width:2*o,height:2*o}:{})):c&&(o>0||l)&&(s.graphic=u.renderer.symbol(a,i-o,n-o,2*o,2*o).attr(e).add(m))):h&&(s.graphic=h.destroy())},convertAttribs:function(t,e,i,n){var r,s,o=this.pointAttrToOptions,a={},t=t||{},e=e||{},i=i||{},n=n||{};for(r in o)s=o[r],a[r]=p(t[s],e[r],i[r],n[r]);return a},getAttribs:function(){var e,i=this,n=i.options,r=ii[i.type].marker?n.marker:n,s=r.states,o=s.hover,a=i.color;e={stroke:a,fill:a};var l,h,d=i.points||[],u=[],p=i.pointAttrToOptions;l=n.turboThreshold;var f,g=n.negativeColor,m=r.lineColor;if(n.marker?(o.radius=o.radius||r.radius+2,o.lineWidth=o.lineWidth||r.lineWidth+1):o.color=o.color||oi(o.color||a).brighten(o.brightness).get(),u[""]=i.convertAttribs(r,e),je(["hover","select"],function(t){u[t]=i.convertAttribs(s[t],u[""])}),i.pointAttr=u,a=d.length,!l||l>a)for(;a--;){if(l=d[a],(r=l.options&&l.options.marker||l.options)&&r.enabled===!1&&(r.radius=0),l.negative&&g&&(l.color=l.fillColor=g),e=n.colorByPoint||l.color,l.options)for(f in p)c(r[p[f]])&&(e=!0);e?(r=r||{},h=[],s=r.states||{},e=s.hover=s.hover||{},n.marker||(e.color=e.color||o.color||oi(l.color).brighten(e.brightness||o.brightness).get()),h[""]=i.convertAttribs(t({color:l.color,fillColor:l.color,lineColor:null===m?l.color:_},r),u[""]),h.hover=i.convertAttribs(s.hover,u.hover,h[""]),h.select=i.convertAttribs(s.select,u.select,h[""])):h=u,l.pointAttr=h}},destroy:function(){var t,e,i,n,r,s=this,o=s.chart,a=/AppleWebKit\/533/.test(xe),l=s.data||[];for(Qe(s,"destroy"),Ke(s),je(s.axisTypes||[],function(t){(r=s[t])&&(h(r.series,s),r.isDirty=r.forceRedraw=!0)}),s.legendItem&&s.chart.legend.destroyItem(s),e=l.length;e--;)(i=l[e])&&i.destroy&&i.destroy();s.points=null,clearTimeout(s.animationTimeout),je("area,graph,dataLabelsGroup,group,markerGroup,tracker,graphNeg,areaNeg,posClip,negClip".split(","),function(e){s[e]&&(t=a&&"group"===e?"hide":"destroy",s[e][t]())}),o.hoverSeries===s&&(o.hoverSeries=null),h(o.series,s);for(n in s)delete s[n]},getSegmentPath:function(t){var e=this,i=[],n=e.options.step;return je(t,function(r,s){var o,a=r.plotX,l=r.plotY; +e.getPointSpline?i.push.apply(i,e.getPointSpline(t,r,s)):(i.push(s?"L":"M"),n&&s&&(o=t[s-1],"right"===n?i.push(o.plotX,l):"center"===n?i.push((o.plotX+a)/2,o.plotY,(o.plotX+a)/2,l):i.push(a,o.plotY)),i.push(r.plotX,r.plotY))}),i},getGraphPath:function(){var t,e=this,i=[],n=[];return je(e.segments,function(r){t=e.getSegmentPath(r),r.length>1?i=i.concat(t):n.push(r[0])}),e.singlePoints=n,e.graphPath=i},drawGraph:function(){var t=this,e=this.options,i=[["graph",e.lineColor||this.color]],n=e.lineWidth,r=e.dashStyle,s="square"!==e.linecap,o=this.getGraphPath(),a=e.negativeColor;a&&i.push(["graphNeg",a]),je(i,function(i,a){var l=i[0],h=t[l];h?(ei(h),h.animate({d:o})):n&&o.length&&(h={stroke:i[1],"stroke-width":n,zIndex:1},r?h.dashstyle=r:s&&(h["stroke-linecap"]=h["stroke-linejoin"]="round"),t[l]=t.chart.renderer.path(o).attr(h).add(t.group).shadow(!a&&e.shadow))})},clipNeg:function(){var t,e=this.options,i=this.chart,n=i.renderer,r=e.negativeColor||e.negativeFillColor,s=this.graph,o=this.area,a=this.posClip,l=this.negClip;t=i.chartWidth;var h=i.chartHeight,c=ue(t,h),d=this.yAxis;r&&(s||o)&&(r=he(d.toPixels(e.threshold||0,!0)),0>r&&(c-=r),e={x:0,y:0,width:c,height:r},c={x:0,y:r,width:c,height:c},i.inverted&&(e.height=c.y=i.plotWidth-r,n.isVML&&(e={x:i.plotWidth-r-i.plotLeft,y:0,width:t,height:h},c={x:r+i.plotLeft-t,y:0,width:i.plotLeft+r,height:t})),d.reversed?(i=c,t=e):(i=e,t=c),a?(a.animate(i),l.animate(t)):(this.posClip=a=n.clipRect(i),this.negClip=l=n.clipRect(t),s&&this.graphNeg&&(s.clip(a),this.graphNeg.clip(l)),o&&(o.clip(a),this.areaNeg.clip(l))))},invertGroups:function(){function t(){var t={width:e.yAxis.len,height:e.xAxis.len};je(["group","markerGroup"],function(i){e[i]&&e[i].attr(t).invert()})}var e=this,i=e.chart;e.xAxis&&(Ze(i,"resize",t),Ze(e,"destroy",function(){Ke(i,"resize",t)}),t(),e.invertGroups=t)},plotGroup:function(t,e,i,n,r){var s=this[t],o=!s;return o&&(this[t]=s=this.chart.renderer.g(e).attr({visibility:i,zIndex:n||.1}).add(r)),s[o?"attr":"animate"](this.getPlotBox()),s},getPlotBox:function(){return{translateX:this.xAxis?this.xAxis.left:this.chart.plotLeft,translateY:this.yAxis?this.yAxis.top:this.chart.plotTop,scaleX:1,scaleY:1}},render:function(){var t,e=this.chart,i=this.options,n=i.animation&&!!this.animate&&e.renderer.isSVG,r=this.visible?"visible":"hidden",s=i.zIndex,o=this.hasRendered,a=e.seriesGroup;t=this.plotGroup("group","series",r,s,a),this.markerGroup=this.plotGroup("markerGroup","markers",r,s,a),n&&this.animate(!0),this.getAttribs(),t.inverted=this.isCartesian?e.inverted:!1,this.drawGraph&&(this.drawGraph(),this.clipNeg()),this.drawDataLabels&&this.drawDataLabels(),this.visible&&this.drawPoints(),this.options.enableMouseTracking!==!1&&this.drawTracker(),e.inverted&&this.invertGroups(),i.clip!==!1&&!this.sharedClipKey&&!o&&t.clip(e.clipRect),n?this.animate():o||this.afterAnimate(),this.isDirty=this.isDirtyData=!1,this.hasRendered=!0},redraw:function(){var t=this.chart,e=this.isDirtyData,i=this.group,n=this.xAxis,r=this.yAxis;i&&(t.inverted&&i.attr({width:t.plotWidth,height:t.plotHeight}),i.animate({translateX:p(n&&n.left,t.plotLeft),translateY:p(r&&r.top,t.plotTop)})),this.translate(),this.setTooltipPoints(!0),this.render(),e&&Qe(this,"updatedData")},setState:function(t){var e=this.options,i=this.graph,n=this.graphNeg,r=e.states,e=e.lineWidth,t=t||"";this.state!==t&&(this.state=t,r[t]&&r[t].enabled===!1||(t&&(e=r[t].lineWidth||e+1),i&&!i.dashstyle&&(t={"stroke-width":e},i.attr(t),n&&n.attr(t))))},setVisible:function(t,e){var i,n=this,r=n.chart,s=n.legendItem,o=r.options.chart.ignoreHiddenSeries,a=n.visible;i=(n.visible=t=n.userOptions.visible=t===_?!a:t)?"show":"hide",je(["group","dataLabelsGroup","markerGroup","tracker"],function(t){n[t]&&n[t][i]()}),r.hoverSeries===n&&n.onMouseOut(),s&&r.legend.colorizeItem(n,t),n.isDirty=!0,n.options.stacking&&je(r.series,function(t){t.options.stacking&&t.visible&&(t.isDirty=!0)}),je(n.linkedSeries,function(e){e.setVisible(t,!1)}),o&&(r.isDirtyBox=!0),e!==!1&&r.redraw(),Qe(n,i)},show:function(){this.setVisible(!0)},hide:function(){this.setVisible(!1)},select:function(t){this.selected=t=t===_?!this.selected:t,this.checkbox&&(this.checkbox.checked=t),Qe(this,t?"select":"unselect")},drawTracker:Xe.drawTrackerGraph},t(N.prototype,{addSeries:function(t,e,i){var n,r=this;return t&&(e=p(e,!0),Qe(r,"addSeries",{options:t},function(){n=r.initSeries(t),r.isDirtyLegend=!0,r.linkSeries(),e&&r.redraw(i)})),n},addAxis:function(t,i,n,r){var s=i?"xAxis":"yAxis",o=this.options;new z(this,e(t,{index:this[s].length,isX:i})),o[s]=u(o[s]||{}),o[s].push(t),p(n,!0)&&this.redraw(r)},showLoading:function(e){var i=this.options,n=this.loadingDiv,r=i.loading;n||(this.loadingDiv=n=g(ze,{className:"highcharts-loading"},t(r.style,{zIndex:10,display:Be}),this.container),this.loadingSpan=g("span",null,r.labelStyle,n)),this.loadingSpan.innerHTML=e||i.lang.loading,this.loadingShown||(f(n,{opacity:0,display:"",left:this.plotLeft+"px",top:this.plotTop+"px",width:this.plotWidth+"px",height:this.plotHeight+"px"}),ti(n,{opacity:r.style.opacity},{duration:r.showDuration||0}),this.loadingShown=!0)},hideLoading:function(){var t=this.options,e=this.loadingDiv;e&&ti(e,{opacity:0},{duration:t.loading.hideDuration||100,complete:function(){f(e,{display:Be})}}),this.loadingShown=!1}}),t(gi.prototype,{update:function(t,e,i){var n,s=this,o=s.series,a=s.graphic,l=o.data,h=o.chart,c=o.options,e=p(e,!0);s.firePointEvent("update",{options:t},function(){s.applyOptions(t),r(t)&&(o.getAttribs(),a&&(t&&t.marker&&t.marker.symbol?s.graphic=a.destroy():a.attr(s.pointAttr[s.state||""])),t&&t.dataLabels&&s.dataLabel&&(s.dataLabel=s.dataLabel.destroy())),n=Ye(s,l),o.updateParallelArrays(s,n),c.data[n]=s.options,o.isDirty=o.isDirtyData=!0,!o.fixedBox&&o.hasCartesianSeries&&(h.isDirtyBox=!0),"point"===c.legendType&&h.legend.destroyItem(s),e&&h.redraw(i)})},remove:function(t,e){var i,n=this,r=n.series,s=r.points,o=r.chart,a=r.data;D(e,o),t=p(t,!0),n.firePointEvent("remove",null,function(){i=Ye(n,a),a.length===s.length&&s.splice(i,1),a.splice(i,1),r.options.data.splice(i,1),r.updateParallelArrays(n,"splice",i,1),n.destroy(),r.isDirty=!0,r.isDirtyData=!0,t&&o.redraw()})}}),t(mi.prototype,{addPoint:function(t,e,i,n){var r,s=this.options,o=this.data,a=this.graph,l=this.area,h=this.chart,c=this.xAxis&&this.xAxis.names,d=a&&a.shift||0,u=s.data,f=this.xData;if(D(n,h),i&&je([a,l,this.graphNeg,this.areaNeg],function(t){t&&(t.shift=d+1)}),l&&(l.isArea=!0),e=p(e,!0),n={series:this},this.pointClass.prototype.applyOptions.apply(n,[t]),a=n.x,l=f.length,this.requireSorting&&aa;)l--;this.updateParallelArrays(n,"splice",l),this.updateParallelArrays(n,l),c&&(c[a]=n.name),u.splice(l,0,t),r&&(this.data.splice(l,0,null),this.processData()),"point"===s.legendType&&this.generatePoints(),i&&(o[0]&&o[0].remove?o[0].remove(!1):(o.shift(),this.updateParallelArrays(n,"shift"),u.shift())),this.isDirtyData=this.isDirty=!0,e&&(this.getAttribs(),h.redraw())},remove:function(t,e){var i=this,n=i.chart,t=p(t,!0);i.isRemoving||(i.isRemoving=!0,Qe(i,"remove",null,function(){i.destroy(),n.isDirtyLegend=n.isDirtyBox=!0,n.linkSeries(),t&&n.redraw(e)})),i.isRemoving=!1},update:function(i,n){var r,s=this.chart,o=this.type,a=He[o].prototype,i=e(this.userOptions,{animation:!1,index:this.index,pointStart:this.xData[0]},{data:this.options.data},i);this.remove(!1);for(r in a)a.hasOwnProperty(r)&&(this[r]=_);t(this,He[i.type||o].prototype),this.init(s,i),p(n,!0)&&s.redraw(!1)}}),t(z.prototype,{update:function(i,n){var r=this.chart,i=r.options[this.coll][this.options.index]=e(this.userOptions,i);this.destroy(!0),this._addedPlotLB=this.userMin=this.userMax=_,this.init(r,t(i,{events:_})),r.isDirtyBox=!0,p(n,!0)&&r.redraw()},remove:function(t){var e=this.chart,i=this.coll;je(this.series,function(t){t.remove(!1)}),h(e.axes,this),h(e[i],this),e.options[i].splice(this.options.index,1),je(e[i],function(t,e){t.options.index=e}),this.destroy(),e.isDirtyBox=!0,p(t,!0)&&e.redraw()},setTitle:function(t,e){this.update({title:t},e)},setCategories:function(t,e){this.update({categories:t},e)}});var yi=m(mi);He.line=yi,ii.area=e(We,{threshold:0});var vi=m(mi,{type:"area",getSegments:function(){var t,e,i,n,r,s=[],o=[],a=[],l=this.xAxis,h=this.yAxis,c=h.stacks[this.stackKey],d={},u=this.points,p=this.options.connectNulls;if(this.options.stacking&&!this.cropped){for(n=0;n=0;e--)s=p(t[e].yBottom,o),et&&r>l?(r=ue(t,l),o=2*l-r):t>r&&l>r&&(r=pe(t,l),o=2*l-r),o>c&&o>l?(o=ue(c,l),r=2*l-o):c>o&&l>o&&(o=pe(c,l),r=2*l-o),e.rightContX=s,e.rightContY=o}return i?(e=["C",h.rightContX||h.plotX,h.rightContY||h.plotY,n||a,r||l,a,l],h.rightContX=h.rightContY=null):e=["M",a,l],e}}),He.spline=yi,ii.areaspline=e(ii.area),vi=vi.prototype,yi=m(yi,{type:"areaspline",closedStacks:!0,getSegmentPath:vi.getSegmentPath,closeSegment:vi.closeSegment,drawGraph:vi.drawGraph,drawLegendSymbol:li.drawRectangle}),He.areaspline=yi,ii.column=e(We,{borderColor:"#FFFFFF",borderWidth:1,borderRadius:0,groupPadding:.2,marker:null,pointPadding:.1,minPointLength:0,cropThreshold:50,pointRange:null,states:{hover:{brightness:.1,shadow:!1},select:{color:"#C0C0C0",borderColor:"#000000",shadow:!1}},dataLabels:{align:null,verticalAlign:null,y:null},stickyTracking:!1,threshold:0}),yi=m(mi,{type:"column",pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",fill:"color",r:"borderRadius"},cropShoulder:0,trackerGroups:["group","dataLabelsGroup"],negStacks:!0,init:function(){mi.prototype.init.apply(this,arguments);var t=this,e=t.chart;e.hasRendered&&je(e.series,function(e){e.type===t.type&&(e.isDirty=!0)})},getColumnMetrics:function(){var t,e,i=this,n=i.options,r=i.xAxis,s=i.yAxis,o=r.reversed,a={},l=0;n.grouping===!1?l=1:je(i.chart.series,function(n){var r=n.options,o=n.yAxis;n.type===i.type&&n.visible&&s.len===o.len&&s.pos===o.pos&&(r.stacking?(t=n.stackKey,a[t]===_&&(a[t]=l++),e=a[t]):r.grouping!==!1&&(e=l++),n.columnIndex=e)});var r=pe(fe(r.transA)*(r.ordinalSlope||n.pointRange||r.closestPointRange||1),r.len),h=r*n.groupPadding,d=(r-2*h)/l,u=n.pointWidth,n=c(u)?(d-u)/2:d*n.pointPadding,u=p(u,d-2*n);return i.columnMetrics={width:u,offset:n+(h+((o?l-(i.columnIndex||0):i.columnIndex)||0)*d-r/2)*(o?-1:1)}},translate:function(){var t=this.chart,e=this.options,i=e.borderWidth,n=this.yAxis,r=this.translatedThreshold=n.getThreshold(e.threshold),s=p(e.minPointLength,5),e=this.getColumnMetrics(),o=e.width,a=this.barW=de(ue(o,1+2*i)),l=this.pointXOffset=e.offset,h=-(i%2?.5:0),c=i%2?.5:1;t.renderer.isVML&&t.inverted&&(c+=1),mi.prototype.translate.apply(this),je(this.points,function(t){var e,i=p(t.yBottom,r),d=pe(ue(-999-i,t.plotY),n.len+999+i),u=t.plotX+l,f=a,g=pe(d,i),d=ue(d,i)-g;fe(d)s?i-s:r-(n.translate(t.y,0,1,0,1)<=r?s:0))),t.barX=u,t.pointWidth=o,i=fe(u)<.5,f=he(u+f)+h,u=he(u)+h,f-=u,e=fe(g)<.5,d=he(g+d)+c,g=he(g)+c,d-=g,i&&(u+=1,f-=1),e&&(g-=1,d+=1),t.shapeType="rect",t.shapeArgs={x:u,y:g,width:f,height:d}})},getSymbol:Oe,drawLegendSymbol:li.drawRectangle,drawGraph:Oe,drawPoints:function(){var t,i=this,n=this.chart,r=i.options,s=n.renderer,o=n.options.animationLimit||250;je(i.points,function(a){var l=a.plotY,h=a.graphic;l===_||isNaN(l)||null===a.y?h&&(a.graphic=h.destroy()):(t=a.shapeArgs,h?(ei(h),h[n.pointCount{series.name}
    ',pointFormat:"x: {point.x}
    y: {point.y}
    ",followPointer:!0},stickyTracking:!1}),yi=m(mi,{type:"scatter",sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["markerGroup"],takeOrdinalPosition:!1,drawTracker:Xe.drawTrackerPoint,drawGraph:function(){this.options.lineWidth&&mi.prototype.drawGraph.call(this)},setTooltipPoints:Oe}),He.scatter=yi,ii.pie=e(We,{borderColor:"#FFFFFF",borderWidth:1,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return this.point.name}},ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,states:{hover:{brightness:.1,shadow:!1}},stickyTracking:!1,tooltip:{followPointer:!0}}),We={type:"pie",isCartesian:!1,pointClass:m(gi,{init:function(){gi.prototype.init.apply(this,arguments);var e,i=this;return i.y<0&&(i.y=null),t(i,{visible:i.visible!==!1,name:p(i.name,"Slice")}),e=function(t){i.slice("select"===t.type)},Ze(i,"select",e),Ze(i,"unselect",e),i},setVisible:function(t){var e,i=this,n=i.series,r=n.chart;i.visible=i.options.visible=t=t===_?!i.visible:t,n.options.data[Ye(i,n.data)]=i.options,e=t?"show":"hide",je(["graphic","dataLabel","connector","shadowGroup"],function(t){i[t]&&i[t][e]()}),i.legendItem&&r.legend.colorizeItem(i,t),!n.isDirty&&n.options.ignoreHiddenPoint&&(n.isDirty=!0,r.redraw())},slice:function(t,e,i){var n=this.series;D(i,n.chart),p(e,!0),this.sliced=this.options.sliced=t=c(t)?t:!this.sliced,n.options.data[Ye(this,n.data)]=this.options,t=t?this.slicedTranslation:{translateX:0,translateY:0},this.graphic.animate(t),this.shadowGroup&&this.shadowGroup.animate(t)}}),requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",fill:"color"},getColor:Oe,animate:function(t){var e=this,i=e.points,n=e.startAngleRad;t||(je(i,function(t){var i=t.graphic,t=t.shapeArgs;i&&(i.attr({r:e.center[3]/2,start:n,end:n}),i.animate({r:t.r,start:t.start,end:t.end},e.options.animation))}),e.animate=null)},setData:function(t,e){mi.prototype.setData.call(this,t,!1),this.processData(),this.generatePoints(),p(e,!0)&&this.chart.redraw()},generatePoints:function(){var t,e,i,n,r=0,s=this.options.ignoreHiddenPoint;for(mi.prototype.generatePoints.call(this),e=this.points,i=e.length,t=0;i>t;t++)n=e[t],r+=s&&!n.visible?0:n.y;for(this.total=r,t=0;i>t;t++)n=e[t],n.percentage=r>0?n.y/r*100:0,n.total=r},translate:function(t){this.generatePoints();var e,i,n,r,s,o=0,a=this.options,l=a.slicedOffset,h=l+a.borderWidth,c=a.startAngle||0,d=this.startAngleRad=ye/180*(c-90),c=(this.endAngleRad=ye/180*((a.endAngle||c+360)-90))-d,u=this.points,p=a.dataLabels.distance,a=a.ignoreHiddenPoint,f=u.length;for(t||(this.center=t=this.getCenter()),this.getX=function(e,i){return n=le.asin((e-t[1])/(t[2]/2+p)),t[0]+(i?-1:1)*ge(n)*(t[2]/2+p)},r=0;f>r;r++)s=u[r],e=d+o*c,(!a||s.visible)&&(o+=s.percentage/100),i=d+o*c,s.shapeType="arc",s.shapeArgs={x:t[0],y:t[1],r:t[2]/2,innerR:t[3]/2,start:he(1e3*e)/1e3,end:he(1e3*i)/1e3},n=(i+e)/2,n>.75*c&&(n-=2*ye),s.slicedTranslation={translateX:he(ge(n)*l),translateY:he(me(n)*l)},e=ge(n)*t[2]/2,i=me(n)*t[2]/2,s.tooltipPos=[t[0]+.7*e,t[1]+.7*i],s.half=-ye/2>n||n>ye/2?1:0,s.angle=n,h=pe(h,p/2),s.labelPos=[t[0]+e+ge(n)*p,t[1]+i+me(n)*p,t[0]+e+ge(n)*h,t[1]+i+me(n)*h,t[0]+e,t[1]+i,0>p?"center":s.half?"right":"left",n]},setTooltipPoints:Oe,drawGraph:null,drawPoints:function(){var e,i,n,r,s=this,o=s.chart.renderer,a=s.options.shadow;a&&!s.shadowGroup&&(s.shadowGroup=o.g("shadow").add(s.group)),je(s.points,function(l){i=l.graphic,r=l.shapeArgs,n=l.shadowGroup,a&&!n&&(n=l.shadowGroup=o.g("shadow").add(s.shadowGroup)),e=l.sliced?l.slicedTranslation:{translateX:0,translateY:0},n&&n.attr(e),i?i.animate(t(r,e)):l.graphic=i=o.arc(r).setRadialReference(s.center).attr(l.pointAttr[l.selected?"select":""]).attr({"stroke-linejoin":"round"}).attr(e).add(s.group).shadow(a,n),void 0!==l.visible&&l.setVisible(l.visible)})},sortByAngle:function(t,e){t.sort(function(t,i){return void 0!==t.angle&&(i.angle-t.angle)*e})},drawTracker:Xe.drawTrackerPoint,drawLegendSymbol:li.drawRectangle,getCenter:hi.getCenter,getSymbol:Oe},We=m(mi,We),He.pie=We,mi.prototype.drawDataLabels=function(){var i,n,r,s,o=this,a=o.options,l=a.cursor,h=a.dataLabels,a=o.points;(h.enabled||o._hasPointLabels)&&(o.dlProcessOptions&&o.dlProcessOptions(h),s=o.plotGroup("dataLabelsGroup","data-labels",o.visible?"visible":"hidden",h.zIndex||6),n=h,je(a,function(a){var d,u,f,g=a.dataLabel,m=a.connector,y=!0;if(i=a.options&&a.options.dataLabels,d=p(i&&i.enabled,n.enabled),g&&!d)a.dataLabel=g.destroy();else if(d){if(h=e(n,i),d=h.rotation,u=a.getLabelConfig(),r=h.format?b(h.format,u):h.formatter.call(u,h),h.style.color=p(h.color,h.style.color,o.color,"black"),g)c(r)?(g.attr({text:r}),y=!1):(a.dataLabel=g=g.destroy(),m&&(a.connector=m.destroy()));else if(c(r)){g={fill:h.backgroundColor,stroke:h.borderColor,"stroke-width":h.borderWidth,r:h.borderRadius||0,rotation:d,padding:h.padding,zIndex:1};for(f in g)g[f]===_&&delete g[f];g=a.dataLabel=o.chart.renderer[d?"text":"label"](r,0,-999,null,null,null,h.useHTML).attr(g).css(t(h.style,l&&{cursor:l})).add(s).shadow(h.shadow)}g&&o.alignDataLabel(a,g,h,null,y)}}))},mi.prototype.alignDataLabel=function(e,i,n,r,s){var o=this.chart,a=o.inverted,l=p(e.plotX,-999),h=p(e.plotY,-999),c=i.getBBox();(e=this.visible&&(e.series.forceDL||o.isInsidePlot(e.plotX,e.plotY,a)))&&(r=t({x:a?o.plotWidth-h:l,y:he(a?o.plotHeight-l:h),width:0,height:0},r),t(n,{width:c.width,height:c.height}),n.rotation?(a={align:n.align,x:r.x+n.x+r.width/2,y:r.y+n.y+r.height/2},i[s?"attr":"animate"](a)):(i.align(n,null,r),a=i.alignAttr,"justify"===p(n.overflow,"justify")?this.justifyDataLabel(i,n,a,c,r,s):p(n.crop,!0)&&(e=o.isInsidePlot(a.x,a.y)&&o.isInsidePlot(a.x+c.width,a.y+c.height)))),e||(i.attr({y:-999}),i.placed=!1)},mi.prototype.justifyDataLabel=function(t,e,i,n,r,s){var o,a,l=this.chart,h=e.align,c=e.verticalAlign;o=i.x,0>o&&("right"===h?e.align="left":e.x=-o,a=!0),o=i.x+n.width,o>l.plotWidth&&("left"===h?e.align="right":e.x=l.plotWidth-o,a=!0),o=i.y,0>o&&("bottom"===c?e.verticalAlign="top":e.y=-o,a=!0),o=i.y+n.height,o>l.plotHeight&&("top"===c?e.verticalAlign="bottom":e.y=l.plotHeight-o,a=!0),a&&(t.placed=!s,t.align(e,null,r))},He.pie&&(He.pie.prototype.drawDataLabels=function(){var t,e,i,n,r,s,o,a,l,h,c,d,u=this,f=u.data,g=u.chart,m=u.options.dataLabels,y=p(m.connectorPadding,10),v=p(m.connectorWidth,1),x=g.plotWidth,g=g.plotHeight,b=p(m.softConnector,!0),w=m.distance,k=u.center,S=k[2]/2,T=k[1],C=w>0,A=[[],[]],L=[0,0,0,0],M=function(t,e){return e.y-t.y};if(u.visible&&(m.enabled||u._hasPointLabels)){for(mi.prototype.drawDataLabels.apply(u),je(f,function(t){t.dataLabel&&t.visible&&A[t.half].push(t)}),c=0;!o&&f[c];)o=f[c]&&f[c].dataLabel&&(f[c].dataLabel.getBBox().height||21),c++;for(c=2;c--;){var I,f=[],D=[],E=A[c],O=E.length;if(u.sortByAngle(E,c-.5),w>0){for(d=T-S-w;T+S+w>=d;d+=o)f.push(d);if(r=f.length,O>r){for(t=[].concat(E),t.sort(M),d=O;d--;)t[d].rank=d;for(d=O;d--;)E[d].rank>=r&&E.splice(d,1);O=E.length}for(d=0;O>d;d++){t=E[d],s=t.labelPos,t=9999;var R,z;for(z=0;r>z;z++)R=fe(f[z]-s[1]),t>R&&(t=R,I=z);if(d>I&&null!==f[d])I=d;else for(O-d+I>r&&null!==f[d]&&(I=r-O+d);null===f[I];)I++;D.push({i:I,y:f[I]}),f[I]=null}D.sort(M)}for(d=0;O>d;d++)t=E[d],s=t.labelPos,n=t.dataLabel,h=t.visible===!1?"hidden":"visible",t=s[1],w>0?(r=D.pop(),I=r.i,l=r.y,(t>l&&null!==f[I+1]||l>t&&null!==f[I-1])&&(l=t)):l=t,a=m.justify?k[0]+(c?-1:1)*(S+w):u.getX(0===I||I===f.length-1?t:l,c),n._attr={visibility:h,align:s[6]},n._pos={x:a+m.x+({left:y,right:-y}[s[6]]||0),y:l+m.y-10},n.connX=a,n.connY=l,null===this.options.size&&(r=n.width,y>a-r?L[3]=ue(he(r-a+y),L[3]):a+r>x-y&&(L[1]=ue(he(a+r-x+y),L[1])),0>l-o/2?L[0]=ue(he(-l+o/2),L[0]):l+o/2>g&&(L[2]=ue(he(l+o/2-g),L[2])))}(0===P(L)||this.verifyDataLabelOverflow(L))&&(this.placeDataLabels(),C&&v&&je(this.points,function(t){e=t.connector,s=t.labelPos,(n=t.dataLabel)&&n._pos?(h=n._attr.visibility,a=n.connX,l=n.connY,i=b?["M",a+("left"===s[6]?5:-5),l,"C",a,l,2*s[2]-s[4],2*s[3]-s[5],s[2],s[3],"L",s[4],s[5]]:["M",a+("left"===s[6]?5:-5),l,"L",s[2],s[3],"L",s[4],s[5]],e?(e.animate({d:i}),e.attr("visibility",h)):t.connector=e=u.chart.renderer.path(i).attr({"stroke-width":v,stroke:m.connectorColor||t.color||"#606060",visibility:h}).add(u.group)):e&&(t.connector=e.destroy())}))}},He.pie.prototype.placeDataLabels=function(){je(this.points,function(t){var e,t=t.dataLabel;t&&((e=t._pos)?(t.attr(t._attr),t[t.moved?"animate":"attr"](e),t.moved=!0):t&&t.attr({y:-999}))})},He.pie.prototype.alignDataLabel=Oe,He.pie.prototype.verifyDataLabelOverflow=function(t){var e,i=this.center,n=this.options,r=n.center,s=n=n.minSize||80;return null!==r[0]?s=ue(i[2]-ue(t[1],t[3]),n):(s=ue(i[2]-t[1]-t[3],n),i[0]+=(t[3]-t[1])/2),null!==r[1]?s=ue(pe(s,i[2]-ue(t[0],t[2])),n):(s=ue(pe(s,i[2]-t[0]-t[2]),n),i[1]+=(t[0]-t[2])/2),sp(this.translatedThreshold,o.plotSizeY),c=p(n.inside,!!this.options.stacking);l&&(r=e(l),a&&(r={x:o.plotWidth-r.y-r.height,y:o.plotHeight-r.x-r.width,width:r.height,height:r.width}),!c)&&(a?(r.x+=h?0:r.width,r.width=0):(r.y+=h?r.height:0,r.height=0)),n.align=p(n.align,!a||c?"center":h?"right":"left"),n.verticalAlign=p(n.verticalAlign,a||c?"middle":h?"top":"bottom"),mi.prototype.alignDataLabel.call(this,t,i,n,r,s)}),t(Highcharts,{Axis:z,Chart:N,Color:oi,Point:gi,Tick:R,Tooltip:F,Renderer:H,Series:mi,SVGElement:O,SVGRenderer:ai,arrayMin:C,arrayMax:P,charts:Re,dateFormat:G,format:b,pathAnim:Y,getOptions:function(){return X},hasBidiBug:Le,isTouchDevice:Ce,numberFormat:y,seriesTypes:He,setOptions:function(t){return X=e(!0,X,t),E(),X},addEvent:Ze,removeEvent:Ke,createElement:g,discardElement:L,css:f,each:je,extend:t,map:Ue,merge:e,pick:p,splat:u,extendClass:m,pInt:i,wrap:x,svg:Ae,canvas:Me,vml:!Ae&&!Me,product:"Highcharts",version:"3.0.8"})}(),function(){var t=Highcharts,e=t.Chart,i=t.addEvent,n=t.createElement,r=t.discardElement,s=t.css,o=t.merge,a=t.each,l=t.extend,h=Math.max,c=document,d=window,u="ontouchstart"in c.documentElement,p=t.setOptions({lang:{downloadPNG:"Download PNG image",downloadJPEG:"Download JPEG image",downloadPDF:"Download PDF document",downloadSVG:"Download SVG vector image",exportButtonTitle:"Export to raster or vector image",printButtonTitle:"Print the chart"}});p.navigation={menuStyle:{border:"1px solid #A0A0A0",background:"#FFFFFF"},menuItemStyle:{padding:"0 5px",background:"none",color:"#303030",fontSize:u?"14px":"11px"},menuItemHoverStyle:{background:"#4572A5",color:"#FFFFFF"},buttonOptions:{align:"right",backgroundColor:{linearGradient:[0,0,0,20],stops:[[.4,"#F7F7F7"],[.6,"#E3E3E3"]]},borderColor:"#B0B0B0",borderRadius:3,borderWidth:1,height:20,hoverBorderColor:"#909090",hoverSymbolFill:"#81A7CF",hoverSymbolStroke:"#4572A5",symbolFill:"#E0E0E0",symbolStroke:"#A0A0A0",symbolX:11.5,symbolY:10.5,verticalAlign:"top",width:24,y:10}},p.exporting={type:"image/png",url:"http://export.highcharts.com/",width:800,buttons:{exportButton:{symbol:"exportIcon",x:-10,symbolFill:"#A8BF77",hoverSymbolFill:"#768F3E",_titleKey:"exportButtonTitle",menuItems:[{textKey:"downloadPNG",onclick:function(){this.exportChart()}},{textKey:"downloadJPEG",onclick:function(){this.exportChart({type:"image/jpeg"})}},{textKey:"downloadPDF",onclick:function(){this.exportChart({type:"application/pdf"})}},{textKey:"downloadSVG",onclick:function(){this.exportChart({type:"image/svg+xml"})}}]},printButton:{symbol:"printIcon",x:-36,symbolFill:"#B5C9DF",hoverSymbolFill:"#779ABF",_titleKey:"printButtonTitle",onclick:function(){this.print()}}}},l(e.prototype,{getSVG:function(t){var e,i,s,h,d,u,p=this,f=o(p.options,t);return c.createElementNS||(c.createElementNS=function(t,e){var i=c.createElement(e);return i.getBBox=function(){return p.renderer.Element.prototype.getBBox.apply({element:i})},i}),e=n("div",null,{position:"absolute",top:"-9999em",width:p.chartWidth+"px",height:p.chartHeight+"px"},c.body),l(f.chart,{renderTo:e,forExport:!0}),f.exporting.enabled=!1,f.chart.plotBackgroundImage=null,f.series=[],a(p.series,function(t){s=t.options,s.animation=!1,s.showCheckbox=!1,s&&s.marker&&/^url\(/.test(s.marker.symbol)&&(s.marker.symbol="circle"),s.data=[],a(t.data,function(t){h=t.config,d={x:t.x,y:t.y,name:t.name},"object"==typeof h&&t.config&&h.constructor!=Array&&l(d,h),s.data.push(d),(u=t.config&&t.config.marker)&&/^url\(/.test(u.symbol)&&delete u.symbol}),f.series.push(s)}),t=new Highcharts.Chart(f),i=t.container.innerHTML,f=null,t.destroy(),r(e),i=i.replace(/zIndex="[^"]+"/g,"").replace(/isShadow="[^"]+"/g,"").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/isTracker="[^"]+"/g,"").replace(/url\([^#]+#/g,"url(#").replace(/id=([^" >]+)/g,'id="$1"').replace(/class=([^" ]+)/g,'class="$1"').replace(/ transform /g," ").replace(/:(path|rect)/g,"$1").replace(/style="([^"]+)"/g,function(t){return t.toLowerCase()}),i=i.replace(/(url\(#highcharts-[0-9]+)"/g,"$1").replace(/"/g,"'"),2==i.match(/ xmlns="/g).length&&(i=i.replace(/xmlns="[^"]+"/,"")),i},exportChart:function(t,e){var i,s=this.getSVG(e);t=o(this.options.exporting,t),i=n("form",{method:"post",action:t.url},{display:"none"},c.body),a(["filename","type","width","svg"],function(e){n("input",{type:"hidden",name:e,value:{filename:t.filename||"chart",type:t.type,width:t.width,svg:s}[e]},null,i)}),i.submit(),r(i)},print:function(){var t=this,e=t.container,i=[],n=e.parentNode,r=c.body,s=r.childNodes;t.isPrinting||(t.isPrinting=!0,a(s,function(t,e){1==t.nodeType&&(i[e]=t.style.display,t.style.display="none")}),r.appendChild(e),d.print(),setTimeout(function(){n.appendChild(e),a(s,function(t,e){1==t.nodeType&&(t.style.display=i[e])}),t.isPrinting=!1},1e3))},contextMenu:function(e,r,o,c,d,p){var f,g,m=this,y=m.options.navigation,v=y.menuItemStyle,x=m.chartWidth,b=m.chartHeight,w="cache-"+e,k=m[w],S=h(d,p);k||(m[w]=k=n("div",{className:"highcharts-"+e},{position:"absolute",zIndex:1e3,padding:S+"px"},m.container),f=n("div",null,l({MozBoxShadow:"3px 3px 10px #888",WebkitBoxShadow:"3px 3px 10px #888",boxShadow:"3px 3px 10px #888"},y.menuStyle),k),g=function(){s(k,{display:"none"})},i(k,"mouseleave",g),a(r,function(e){e&&(n("div",{onmouseover:function(){s(this,y.menuItemHoverStyle)},onmouseout:function(){s(this,v)},innerHTML:e.text||t.getOptions().lang[e.textKey]},l({cursor:"pointer"},v),f)[u?"ontouchstart":"onclick"]=function(){g(),e.onclick.apply(m,arguments)})}),m.exportMenuWidth=k.offsetWidth,m.exportMenuHeight=k.offsetHeight),e={display:"block"},o+m.exportMenuWidth>x?e.right=x-o-d-S+"px":e.left=o-S+"px",c+p+m.exportMenuHeight>b?e.bottom=b-c-S+"px":e.top=c+p-S+"px",s(k,e)},addButton:function(e){function i(){r.attr(m),n.attr(g)}var n,r,s,a=this,h=a.renderer,c=o(a.options.navigation.buttonOptions,e),d=c.onclick,u=c.menuItems,p=c.width,f=c.height;e=c.borderWidth;var g={stroke:c.borderColor},m={stroke:c.symbolStroke,fill:c.symbolFill};c.enabled!==!1&&(n=h.rect(0,0,p,f,c.borderRadius,e).align(c,!0).attr(l({fill:c.backgroundColor,"stroke-width":e,zIndex:19},g)).add(),s=h.rect(0,0,p,f,0).align(c).attr({fill:"rgba(255, 255, 255, 0.001)",title:t.getOptions().lang[c._titleKey],zIndex:21}).css({cursor:"pointer"}).on("mouseover",function(){r.attr({stroke:c.hoverSymbolStroke,fill:c.hoverSymbolFill}),n.attr({stroke:c.hoverBorderColor})}).on("mouseout",i).on("click",i).add(),u&&(d=function(){i();var t=s.getBBox();a.contextMenu("export-menu",u,t.x,t.y,p,f)}),s.on("click",function(){d.apply(a,arguments)}),r=h.symbol(c.symbol,c.symbolX,c.symbolY,(c.symbolSize||12)/2).align(c,!0).attr(l(m,{"stroke-width":c.symbolStrokeWidth||1,zIndex:20})).add())}}),t.Renderer.prototype.symbols.exportIcon=function(t,e,i){return["M",t-i,e+i,"L",t+i,e+i,t+i,e+.5*i,t-i,e+.5*i,"Z","M",t,e+.5*i,"L",t-.5*i,e-i/3,t-i/6,e-i/3,t-i/6,e-i,t+i/6,e-i,t+i/6,e-i/3,t+.5*i,e-i/3,"Z"]},t.Renderer.prototype.symbols.printIcon=function(t,e,i){return["M",t-i,e+.5*i,"L",t+i,e+.5*i,t+i,e-i/3,t-i,e-i/3,"Z","M",t-.5*i,e-i/3,"L",t-.5*i,e-i,t+.5*i,e-i,t+.5*i,e-i/3,"Z","M",t-.5*i,e+.5*i,"L",t-.75*i,e+i,t+.75*i,e+i,t+.5*i,e+.5*i,"Z"]},e.prototype.callbacks.push(function(t){var e,i=t.options.exporting,n=i.buttons;if(i.enabled!==!1)for(e in n)t.addButton(n[e])})}();var createWindows=function(t,e,i){return function(n){createWindowsWithData(n,t,e,i)}},updatePortletPositions=function(t,e){return function(){if(t){var i=$(this).sortable("serialize");colId=$(this).attr("id").charAt($(this).attr("id").length-1),portletArray=getPortletArray(i),jsonResult={col:colId,positions:portletArray},portletArray.length>0&&$.ajax({type:"PUT",url:"../channels/"+e+"/windows",data:{_method:"PUT",page:JSON.stringify(jsonResult)},dataType:"json"})}}},decoratePortlet=function(t){return function(){var e=$(this).find(".portlet-header");return e.append(""),thisObject=$(this),"true"==t?(thisObject.find(".wtype").prepend(""),thisObject.find(".wtype-chart_window").append(""),thisObject.find(".wtype").append(""),thisObject.find(".portlet-header").css("cursor","move")):$(".column").sortable({disabled:!0}),$(this).attr("id")}},uiEditClick=function(t){return function(){var e=$(this).parents(".portlet:first").attr("id").substring(8),i="";$("#chartConfig"+e).load("/channels/"+t+"/charts/"+e+"/edit",function(){i=$("#chartOptions"+e).html(),"undefined"!=i&&i.length>2&&$.each(i.split("&"),setupChartForm(e)),$("#button"+e).click(function(){updateChart(e,!0,450,250,t,!0),$("#chartConfig"+e).dialog("close")})}).dialog({title:"Chart Options",modal:!0,resizable:!1,width:500,dialogClass:"dev-info-dialog"})}},uiViewClick=function(t){return function(){var e=$(this).parents(".portlet:first").find(".portlet-content").offset().left,i=$(this).parents(".portlet:first").find(".portlet-content").offset().top,n=$(this).parents(".portlet:first").attr("id").substring(8);$("body").append(''),$.get("/channels/"+t+"/windows/"+n+"/iframe",function(t){var e=t.replace(/id=\"iframe[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?\"/,"");$("#iframeinner"+n).text(e)}),$("#iframepopup"+n).dialog({resizable:!1,width:"300px",position:[e+200,i-200],title:"Chart Iframe",dialogClass:"dev-info-dialog"})}},uiCloseClick=function(t){return function(){var e=$(this).parents(".portlet:first").attr("id").substring(8),i=$(this).parents(".portlet:first"); +$.update("/channels/"+t+"/windows/"+e+"/hide",function(){i.hide("drop",function(){i.remove()})})}};!function(t){function e(){var e=i(this);return isNaN(e.datetime)||t(this).text(n(e.datetime)),this}function i(e){if(e=t(e),!e.data("timeago")){e.data("timeago",{datetime:s.datetime(e)});var i=t.trim(e.text());i.length>0&&e.attr("title",i)}return e.data("timeago")}function n(t){return s.inWords(r(t))}function r(t){return(new Date).getTime()-t.getTime()}t.timeago=function(e){return e instanceof Date?n(e):"string"==typeof e?n(t.timeago.parse(e)):n(t.timeago.datetime(e))};var s=t.timeago;t.extend(t.timeago,{settings:{refreshMillis:6e4,allowFuture:!1,strings:{prefixAgo:null,prefixFromNow:null,suffixAgo:"ago",suffixFromNow:"from now",seconds:"less than a minute",minute:"about a minute",minutes:"%d minutes",hour:"about an hour",hours:"about %d hours",day:"a day",days:"%d days",month:"about a month",months:"%d months",year:"about a year",years:"%d years",numbers:[]}},inWords:function(e){function i(i,r){var s=t.isFunction(i)?i(r,e):i,o=n.numbers&&n.numbers[r]||r;return s.replace(/%d/i,o)}var n=this.settings.strings,r=n.prefixAgo,s=n.suffixAgo;this.settings.allowFuture&&(0>e&&(r=n.prefixFromNow,s=n.suffixFromNow),e=Math.abs(e));var o=e/1e3,a=o/60,l=a/60,h=l/24,c=h/365,d=45>o&&i(n.seconds,Math.round(o))||90>o&&i(n.minute,1)||45>a&&i(n.minutes,Math.round(a))||90>a&&i(n.hour,1)||24>l&&i(n.hours,Math.round(l))||48>l&&i(n.day,1)||30>h&&i(n.days,Math.floor(h))||60>h&&i(n.month,1)||365>h&&i(n.months,Math.floor(h/30))||2>c&&i(n.year,1)||i(n.years,Math.floor(c));return t.trim([r,d,s].join(" "))},parse:function(e){var i=t.trim(e);return i=i.replace(/\.\d\d\d+/,""),i=i.replace(/-/,"/").replace(/-/,"/"),i=i.replace(/T/," ").replace(/Z/," UTC"),i=i.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"),new Date(i)},datetime:function(e){var i="time"===t(e).get(0).tagName.toLowerCase(),n=i?t(e).attr("datetime"):t(e).attr("title");return s.parse(n)}}),t.fn.timeago=function(){var t=this;t.each(e);var i=s.settings;return i.refreshMillis>0&&setInterval(function(){t.each(e)},i.refreshMillis),t},document.createElement("abbr"),document.createElement("time")}(jQuery),function(t){function e(t,e){return e.measureText(t).width}function i(t,e){return e.text(t),e.width()}var n,r,s,o=!1;t.fn.shorten=function(){var o={},a=arguments,l=a.callee;if(a.length)if(a[0].constructor==Object)o=a[0];else{if("options"==a[0])return t(this).eq(0).data("shorten-options");o={width:parseInt(a[0]),tail:a[1]}}this.css("visibility","hidden");var h=t.extend({},l.defaults,o);return this.each(function(){var a,c=t(this),d=c.text(),u=d.length,p=t("").html(h.tail).text(),f={shortened:!1,textOverflow:!1};if(a="none"!=c.css("float")?h.width||c.width():h.width||c.parent().width(),0>a)return!0;if(c.data("shorten-options",h),this.style.display="inline-block",this.style.whiteSpace="nowrap",n){var g=t(this),m=document.createElement("canvas");ctx=m.getContext("2d"),g.html(m),ctx.font=g.css("font-style")+" "+g.css("font-variant")+" "+g.css("font-weight")+" "+Math.ceil(parseFloat(g.css("font-size")))+"px "+g.css("font-family"),r=ctx,s=e}else g=t('
    '),$td=t("td",g),t(this).html(g),r=$td,s=i;if(g=s.call(this,d,r),a>g)return c.text(d),this.style.visibility="visible",c.data("shorten-info",f),!0;if(h.tooltip&&this.setAttribute("title",d),l._native&&!o.width&&(m=t(""+h.tail+"").text(),1==m.length&&8230==m.charCodeAt(0)))return c.text(d),this.style.overflow="hidden",this.style[l._native]="ellipsis",this.style.visibility="visible",f.shortened=!0,f.textOverflow="ellipsis",c.data("shorten-info",f),!0;p=s.call(this,p,r),a-=p,p=1.15*a,g-p>0&&(p=d.substring(0,Math.ceil(u*(p/g))),s.call(this,p,r)>a&&(d=p,u=d.length));do u--,d=d.substring(0,u);while(s.call(this,d,r)>=a);return c.html(t.trim(t("").text(d).html())+h.tail),this.style.visibility="visible",f.shortened=!0,c.data("shorten-info",f),!0})};var a=document.documentElement.style;"textOverflow"in a?o="textOverflow":"OTextOverflow"in a&&(o="OTextOverflow"),"undefined"!=typeof Modernizr&&Modernizr.canvastext?n=Modernizr.canvastext:(a=document.createElement("canvas"),n=!(!a.getContext||!a.getContext("2d")||"function"!=typeof a.getContext("2d").fillText)),t.fn.shorten._is_canvasTextSupported=n,t.fn.shorten._native=o,t.fn.shorten.defaults={tail:"…",tooltip:!0}}(jQuery),function(t){window.NestedFormEvents=function(){this.addFields=t.proxy(this.addFields,this),this.removeFields=t.proxy(this.removeFields,this)},NestedFormEvents.prototype={addFields:function(e){var i=e.currentTarget,n=t(i).data("association"),r=t("#"+t(i).data("blueprint-id")),s=r.data("blueprint"),o=(t(i).closest(".fields").closestChild("input, textarea, select").eq(0).attr("name")||"").replace(new RegExp("[[a-z_]+]$"),"");if(o)for(var a=o.match(/[a-z_]+_attributes(?=\]\[(new_)?\d+\])/g)||[],l=o.match(/[0-9]+/g)||[],h=0;h0;)for(var n=i.shift(),r=n.children(),s=0;s=a&&l>n||l>=r&&r>a||a>n&&r>l}),a=l+1;var c=0;for(var h in o)if(o[h].selected){var d=o[h].start+c;e&&i.tabString==t.value.substring(d,d+i.tabString.length)?(t.value=t.value.substring(0,d)+t.value.substring(d+i.tabString.length),c-=i.tabString.length):e||(t.value=t.value.substring(0,d)+i.tabString+t.value.substring(d),c+=i.tabString.length)}t.focus();var u=n+(c>0?i.tabString.length:0>c?-i.tabString.length:0),p=r+c;t.setSelectionRange(u,p)}}function n(e,i,n){var r=document.selection.createRange();if(e==r.parentElement())if(""==r.text)if(i){var s=r.getBookmark();r.moveStart("character",-n.tabString.length),n.tabString==r.text?r.text="":(r.moveToBookmark(s),r.moveEnd("character",n.tabString.length),n.tabString==r.text&&(r.text="")),r.collapse(!0),r.select()}else r.text=n.tabString,r.collapse(!1),r.select();else{var o=r.text,a=o.length,l=o.split("\r\n"),h=document.body.createTextRange();h.moveToElementText(e),h.setEndPoint("EndToStart",r);var c=h.text,d=c.split("\r\n"),u=c.length,p=document.body.createTextRange();p.moveToElementText(e),p.setEndPoint("StartToEnd",r);var f=p.text,g=document.body.createTextRange();g.moveToElementText(e),g.setEndPoint("StartToEnd",h);var m=g.text,y=t(e).html();t("#r3").text(u+" + "+a+" + "+f.length+" = "+y.length),u+m.length0?x.setEndPoint("StartToEnd",h):x.setEndPoint("StartToStart",h),x.setEndPoint("EndToEnd",r),x.select()}}t.fn.tabby=function(i){var n=t.extend({},t.fn.tabby.defaults,i),r=t.fn.tabby.pressed;return this.each(function(){$this=t(this);var i=t.meta?t.extend({},n,$this.data()):n;$this.bind("keydown",function(n){var s=t.fn.tabby.catch_kc(n);return 16==s&&(r.shft=!0),17==s&&(r.ctrl=!0,setTimeout("$.fn.tabby.pressed.ctrl = false;",1e3)),18==s&&(r.alt=!0,setTimeout("$.fn.tabby.pressed.alt = false;",1e3)),9!=s||r.ctrl||r.alt?void 0:(n.preventDefault,r.last=s,setTimeout("$.fn.tabby.pressed.last = null;",0),e(t(n.target).get(0),r.shft,i),!1)}).bind("keyup",function(e){16==t.fn.tabby.catch_kc(e)&&(r.shft=!1)}).bind("blur",function(e){9==r.last&&t(e.target).one("focus",function(){r.last=null}).get(0).focus()})})},t.fn.tabby.catch_kc=function(t){return t.keyCode?t.keyCode:t.charCode?t.charCode:t.which},t.fn.tabby.pressed={shft:!1,ctrl:!1,alt:!1,last:null},t.fn.tabby.defaults={tabString:String.fromCharCode(9)}}(jQuery),function(t,e,i){var n={required:"The %s field is required.",matches:"The %s field does not match the %s field.",valid_email:"The %s field must contain a valid email address.",min_length:"The %s field must be at least %s characters in length.",max_length:"The %s field must not exceed %s characters in length.",exact_length:"The %s field must be exactly %s characters in length.",greater_than:"The %s field must contain a number greater than %s.",less_than:"The %s field must contain a number less than %s.",alpha:"The %s field must only contain alphabetical characters.",alpha_numeric:"The %s field must only contain alpha-numeric characters.",alpha_dash:"The %s field must only contain alpha-numeric characters, underscores, and dashes.",numeric:"The %s field must contain only numbers.",integer:"The %s field must contain an integer."},r=function(){},s=/^(.+)\[(.+)\]$/,o=/^[0-9]+$/,a=/^\-?[0-9]+$/,l=/^\-?[0-9]*\.?[0-9]+$/,h=/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}$/i,c=/^[a-z]+$/i,d=/^[a-z0-9]+$/i,u=/^[a-z0-9_-]+$/i,p=function(t,i,n){for(this.callback=n||r,this.errors=[],this.fields={},this.form=e.forms[t]||{},this.messages={},this.handlers={},t=0,n=i.length;n>t;t++){var s=i[t];s.name&&s.rules&&(this.fields[s.name]={name:s.name,display:s.display||s.name,rules:s.rules,type:null,value:null,checked:null})}this.form.onsubmit=function(t){return function(e){try{return t._validateForm(e)}catch(i){}}}(this)};p.prototype.setMessage=function(t,e){return this.messages[t]=e,this},p.prototype.registerCallback=function(t,e){return t&&"string"==typeof t&&e&&"function"==typeof e&&(this.handlers[t]=e),this},p.prototype._validateForm=function(t){this.errors=[];for(var e in this.fields)if(this.fields.hasOwnProperty(e)){var n=this.fields[e]||{},r=this.form[n.name];r&&r!==i&&(n.type=r.type,n.value=r.value,n.checked=r.checked),this._validateField(n)}if("function"==typeof this.callback&&this.callback(this.errors,t),this.errors.length>0){if(!t||!t.preventDefault)return!1;t.preventDefault()}return!0},p.prototype._validateField=function(t){var e=t.rules.split("|");if(-1!==t.rules.indexOf("required")||t.value&&""!==t.value&&t.value!==i)for(var r=0,o=e.length;o>r;r++){var a=e[r],l=null,h=!1;if((parts=s.exec(a))&&(a=parts[1],l=parts[2]),"function"==typeof this._hooks[a]?this._hooks[a].apply(this,[t,l])||(h=!0):"callback_"===a.substring(0,9)&&(a=a.substring(9,a.length),"function"==typeof this.handlers[a]&&this.handlers[a].apply(this,[t.value])===!1&&(h=!0)),h){(e=this.messages[a]||n[a])?(t=e.replace("%s",t.display),l&&(t=t.replace("%s",this.fields[l]?this.fields[l].display:l)),this.errors.push(t)):this.errors.push("An error has occurred with the "+t.display+" field.");break}}},p.prototype._hooks={required:function(t){var e=t.value;return"checkbox"===t.type?t.checked===!0:null!==e&&""!==e},matches:function(t,e){return(el=this.form[e])?t.value===el.value:!1},valid_email:function(t){return h.test(t.value)},min_length:function(t,e){return o.test(e)?t.value.length>=e:!1},max_length:function(t,e){return o.test(e)?t.value.length<=e:!1},exact_length:function(t,e){return o.test(e)?t.value.length==e:!1},greater_than:function(t,e){return l.test(t.value)?parseFloat(t.value)>parseFloat(e):!1},less_than:function(t,e){return l.test(t.value)?parseFloat(t.value)="0"&&"7">=i?parseInt(t.substring(1),8):"u"===i||"x"===i?parseInt(t.substring(2),16):t.charCodeAt(1)}function i(t){return 32>t?(16>t?"\\x0":"\\x")+t.toString(16):(t=String.fromCharCode(t),("\\"===t||"-"===t||"["===t||"]"===t)&&(t="\\"+t),t)}function n(t){for(var n=t.substring(1,t.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),t=[],r=[],s="^"===n[0],o=s?1:0,a=n.length;a>o;++o){var l=n[o];if(/\\[bdsw]/i.test(l))t.push(l);else{var h,l=e(l);a>o+2&&"-"===n[o+1]?(h=e(n[o+2]),o+=2):h=l,r.push([l,h]),65>h||l>122||(65>h||l>90||r.push([32|Math.max(65,l),32|Math.min(h,90)]),97>h||l>122||r.push([-33&Math.max(97,l),-33&Math.min(h,122)]))}}for(r.sort(function(t,e){return t[0]-e[0]||e[1]-t[1]}),n=[],l=[0/0,0/0],o=0;oa[0]&&(a[1]+1>a[0]&&r.push("-"),r.push(i(a[1])));return r.push("]"),r.join("")}function r(t){for(var e=t.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),i=e.length,r=[],a=0,l=0;i>a;++a){var h=e[a];"("===h?++l:"\\"===h.charAt(0)&&(h=+h.substring(1))&&l>=h&&(r[h]=-1)}for(a=1;aa;++a)h=e[a],"("===h?(++l,void 0===r[l]&&(e[a]="(?:")):"\\"===h.charAt(0)&&(h=+h.substring(1))&&l>=h&&(e[a]="\\"+r[l]);for(l=a=0;i>a;++a)"^"===e[a]&&"^"!==e[a+1]&&(e[a]="");if(t.ignoreCase&&o)for(a=0;i>a;++a)h=e[a],t=h.charAt(0),h.length>=2&&"["===t?e[a]=n(h):"\\"!==t&&(e[a]=h.replace(/[A-Za-z]/g,function(t){return t=t.charCodeAt(0),"["+String.fromCharCode(-33&t,32|t)+"]"}));return e.join("")}for(var s=0,o=!1,a=!1,l=0,h=t.length;h>l;++l){var c=t[l];if(c.ignoreCase)a=!0;else if(/[a-z]/i.test(c.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){o=!0,a=!1;break}}for(var d={b:8,t:9,n:10,v:11,f:12,r:13},u=[],l=0,h=t.length;h>l;++l){if(c=t[l],c.global||c.multiline)throw Error(""+c);u.push("(?:"+r(c)+")")}return RegExp(u.join("|"),a?"gi":"g")}function e(t){function e(t){switch(t.nodeType){case 1:if(n.test(t.className))break;for(var i=t.firstChild;i;i=i.nextSibling)e(i);i=t.nodeName,("BR"===i||"LI"===i)&&(r[a]="\n",o[a<<1]=s++,o[a++<<1|1]=t);break;case 3:case 4:i=t.nodeValue,i.length&&(i=l?i.replace(/\r\n?/g,"\n"):i.replace(/[\t\n\r ]+/g," "),r[a]=i,o[a<<1]=s,s+=i.length,o[a++<<1|1]=t)}}var i,n=/(?:^|\s)nocode(?:\s|$)/,r=[],s=0,o=[],a=0;t.currentStyle?i=t.currentStyle.whiteSpace:window.getComputedStyle&&(i=document.defaultView.getComputedStyle(t,q).getPropertyValue("white-space"));var l=i&&"pre"===i.substring(0,3);return e(t),{a:r.join("").replace(/\n$/,""),c:o}}function i(t,e,i,n){e&&(t={a:e,d:t},i(t),n.push.apply(n,t.e))}function n(e,n){function r(t){for(var e=t.d,h=[e,"pln"],c=0,d=t.a.match(s)||[],u={},p=0,f=d.length;f>p;++p){var g,m=d[p],y=u[m],v=void 0;if("string"==typeof y)g=!1;else{var x=o[m.charAt(0)];if(x)v=m.match(x[1]),y=x[0];else{for(g=0;l>g;++g)if(x=n[g],v=m.match(x[1])){y=x[0];break}v||(y="pln")}!(g=y.length>=5&&"lang-"===y.substring(0,5))||v&&"string"==typeof v[1]||(g=!1,y="src"),g||(u[m]=y)}if(x=c,c+=m.length,g){g=v[1];var b=m.indexOf(g),w=b+g.length;v[2]&&(w=m.length-v[2].length,b=w-g.length),y=y.substring(5),i(e+x,m.substring(0,b),r,h),i(e+x+b,g,a(y,g),h),i(e+x+w,m.substring(w),r,h)}else h.push(e+x,y)}t.e=h}var s,o={};!function(){for(var i=e.concat(n),r=[],a={},l=0,h=i.length;h>l;++l){var c=i[l],d=c[3];if(d)for(var u=d.length;--u>=0;)o[d.charAt(u)]=c;c=c[1],d=""+c,a.hasOwnProperty(d)||(r.push(c),a[d]=q)}r.push(/[\S\s]/),s=t(r)}();var l=n.length;return r}function r(t){var e=[],i=[];t.tripleQuotedStrings?e.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):t.multiLineStrings?e.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,q,"'\"`"]):e.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]),t.verbatimStrings&&i.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var r=t.hashComments;return r&&(t.cStyleComments?(r>1?e.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):e.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),i.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):e.push(["com",/^#[^\n\r]*/,q,"#"])),t.cStyleComments&&(i.push(["com",/^\/\/[^\n\r]*/,q]),i.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q])),t.regexLiterals&&i.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]),(r=t.types)&&i.push(["typ",r]),t=(""+t.keywords).replace(/^ | $/g,""),t.length&&i.push(["kwd",RegExp("^(?:"+t.replace(/[\s,]+/g,"|")+")\\b"),q]),e.push(["pln",/^\s+/,q," \r\n  "]),i.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]),n(e,i)}function s(t,e){function i(t){switch(t.nodeType){case 1:if(s.test(t.className))break;if("BR"===t.nodeName)n(t),t.parentNode&&t.parentNode.removeChild(t);else for(t=t.firstChild;t;t=t.nextSibling)i(t);break;case 3:case 4:if(l){var e=t.nodeValue,r=e.match(o);if(r){var h=e.substring(0,r.index);t.nodeValue=h,(e=e.substring(r.index+r[0].length))&&t.parentNode.insertBefore(a.createTextNode(e),t.nextSibling),n(t),h||t.parentNode.removeChild(t)}}}}function n(t){function e(t,i){var n=i?t.cloneNode(!1):t,r=t.parentNode;if(r){var r=e(r,1),s=t.nextSibling;r.appendChild(n);for(var o=s;o;o=s)s=o.nextSibling,r.appendChild(o)}return n}for(;!t.nextSibling;)if(t=t.parentNode,!t)return;for(var i,t=e(t.nextSibling,0);(i=t.parentNode)&&1===i.nodeType;)t=i;h.push(t)}var r,s=/(?:^|\s)nocode(?:\s|$)/,o=/\r\n?|\n/,a=t.ownerDocument;t.currentStyle?r=t.currentStyle.whiteSpace:window.getComputedStyle&&(r=a.defaultView.getComputedStyle(t,q).getPropertyValue("white-space"));var l=r&&"pre"===r.substring(0,3);for(r=a.createElement("LI");t.firstChild;)r.appendChild(t.firstChild);for(var h=[r],c=0;cc;++c)r=h[c],r.className="L"+(c+u)%10,r.firstChild||r.appendChild(a.createTextNode(" ")),d.appendChild(r);t.appendChild(d)}function o(t,e){for(var i=e.length;--i>=0;){var n=e[i];x.hasOwnProperty(n)?window.console&&console.warn("cannot override language handler %s",n):x[n]=t}}function a(t,e){return t&&x.hasOwnProperty(t)||(t=/^\s*f;)d[f]!==d[f+2]?(d[p++]=d[f++],d[p++]=d[f++]):f+=2;for(u=p,f=p=0;u>f;){for(var g=d[f],m=d[f+1],y=f+2;u>=y+2&&d[y+1]===m;)y+=2;d[p++]=g,d[p++]=m,f=y}for(d.length=p;c>r;){var v,x=h[r+2]||l,b=d[t+2]||l,y=Math.min(x,b),w=h[r+1];if(1!==w.nodeType&&(v=o.substring(n,y))){s&&(v=v.replace(i,"\r")),w.nodeValue=v;var k=w.ownerDocument,S=k.createElement("SPAN");S.className=d[t+1];var T=w.parentNode;T.replaceChild(S,w),S.appendChild(w),x>n&&(h[r+1]=w=k.createTextNode(o.substring(y,x)),T.insertBefore(w,S.nextSibling))}n=y,n>=x&&(r+=2),n>=b&&(t+=2)}}catch(C){"console"in window&&console.log(C&&C.stack?C.stack:C)}}var h=["break,continue,do,else,for,if,return,while"],c=[[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],d=[c,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],u=[c,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],p=[u,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],c=[c,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],f=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],g=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],h=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],m=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,y=/\S/,v=r({keywords:[d,p,c,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+f,g,h],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),x={};o(v,["default-code"]),o(n([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]),o(n([["pln",/^\s+/,q," \r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]),o(n([],[["atv",/^[\S\s]+/]]),["uq.val"]),o(r({keywords:d,hashComments:!0,cStyleComments:!0,types:m}),["c","cc","cpp","cxx","cyc","m"]),o(r({keywords:"null,true,false"}),["json"]),o(r({keywords:p,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:m}),["cs"]),o(r({keywords:u,cStyleComments:!0}),["java"]),o(r({keywords:h,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]),o(r({keywords:f,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py"]),o(r({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]),o(r({keywords:g,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]),o(r({keywords:c,cStyleComments:!0,regexLiterals:!0}),["js"]),o(r({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]),o(n([],[["str",/^[\S\s]+/]]),["regex"]),window.prettyPrintOne=function(t,e,i){var n=document.createElement("PRE");return n.innerHTML=t,i&&s(n,i),l({g:e,i:i,h:n}),n.innerHTML},window.prettyPrint=function(t){function e(){for(var i=window.PR_SHOULD_USE_CONTINUATION?h.now()+250:1/0;d=0){var a,p,o=o.match(u);if(p=!o){p=r;for(var f=void 0,g=p.firstChild;g;g=g.nextSibling)var m=g.nodeType,f=1===m?f?p:g:3===m?y.test(g.nodeValue)?p:f:f;p=(a=f===p?void 0:f)&&"CODE"===a.tagName}for(p&&(o=a.className.match(u)),o&&(o=o[1]),p=!1,f=r.parentNode;f;f=f.parentNode)if(("pre"===f.tagName||"code"===f.tagName||"xmp"===f.tagName)&&f.className&&f.className.indexOf("prettyprint")>=0){p=!0;break}p||((p=(p=r.className.match(/\blinenums\b(?::(\d+))?/))?p[1]&&p[1].length?+p[1]:!0:!1)&&s(r,p),c={g:o,h:r,i:p},l(c))}}do;++o)n.push(i[r][o]);var i=q,h=Date;h.now||(h={now:function(){return+new Date}});var c,d=0,u=/\blang(?:uage)?-([\w.]+)(?!\S)/;e()},window.PR={createSimpleLexer:n,registerLangHandler:o,sourceDecorator:r,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}}(),!function(t){t(function(){window.prettyPrint&&prettyPrint()})}(window.jQuery),$(document).ready(function(){$(".response").click(function(){var t=$(this).data("response_type");$(".response").removeClass("active"),$(".response-"+t).addClass("active"),$(".format").hide(),$(".format-"+t).show()})}),$(document).ready(function(){$("#talkback_command_add").click(function(){$(this).hide(),$("#talkback_command_add_form").removeClass("hide")})}); \ No newline at end of file diff --git a/public/assets/application-1369f895a819b8f9cb3fdb98c04ee8e0.js.gz b/public/assets/application-1369f895a819b8f9cb3fdb98c04ee8e0.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..e4a5d146c1fc931e317965e14663f8d613c67aba GIT binary patch literal 70526 zcmV(lK=i*KiwFQeS^ZK11H`>+ciT1=Hv0Yj6*Ak{qy@>6b7@0`)^ePr%}ml}YPU(M zYPx6%mRM7yhNNt%w*LFs&jvt(lALyCopavF)FJ^8*Nu&R$JHVk6;YZr(z#4tMPZyy z&SX-^%q_gTqCMsm*Fmo1^=`tfA%lr5UPUvR9w^~w+K=4l?GUVk75 zouQC}?r^yF)>o#vjXJzLRdph78>d+ouH0j3RJcyx@h~M$93|4(q zT>j3V-Gs60?eBL2l}=NXkHXl_Y{xR06w|Uycq6lL@}&|pNvo24p+LTv?aF`|Ha2y^&*I>)r;Tug?escUB1Ra06}Q^hpObt^)a?`o=|vEzv-kY<{G=V>C4 zQr$V}?C*!|`68dXgGdxZZ|(K2(#%EGao{+;uq@b94Ne0ppUz#c=P;Z&K`^Bn_xIf> zAdt=FTLRiC!3`~tqhO>el57=m9jp>97)spVo8{wN`XFuw&c4$`X446rrc6fZSpNLe z+p}~wPZL>Iw2rM2xda*XVc%)S?R;^W7g>}{+%7dI_xB5w$opTn6{xz-5zTax$T&Z8 znpu-yvjQ)LxTBr(qgny~PA`QYuh*V$D*AiXRG)eR>n~@Qa$GL`!3zc94W7`zIcP@B z1E--T53dPc^I{dtz`0DbvCRBNcfM@oX&j9kUyb;GJt{&Qf{J7G2hPchBUSCmfogQ; zHo_))AX_c3h#tt+Ybz3ObN8RiSdNNc!gwKb0@Ivd<(LyTz!iW#TNH~hj#qLyiWhlw zLyZu=k;`p>x4(59k0-NAskLKuDkp?DXN>eF&1S%g8U>a$6PohwA`5^pVCse0Gy!j# zrc>?KvD|{gT4@H!%`T+zVg|G4Yd2wBT2?^~Z!OLQmnr9VPoa()_J{_Gkj%jtNiEuP7oa zOV9k2-I(QJm&>(`R@ui&_9) zjkb2^(+sPvRM6&8L=55Zayk!qI!AGs=YgYFwL#4i=9$<}tx-zEQ^F}z8P8=#J(FQ} z6)llO^OsN(;SdLFV`}R(*92LM(e%S?~jtXD>=;43R-zprrLD=dtijLhTZHcff3TM@<9QD*Nm>+C6XD$RuJ&`d-$yw)sA7CGgQuAK);5Oy>L%0o+0 z_*BSXH2*5fa_mgK12=)n)J^BWUb#xVxJ5e)qd4CS0uUx`nPoJ5=a2s^WVUK8{>U5C zFmHr0of+d*<5J3`5vR0t<2}uOfG#iGaXMNM_fUZ4;QE3nxFd?}nkPXWLuuwa;eZw` zM7OBJv!Q6{gqbX+>9~5&@^{&q|f}UbJbj0PNDAHu3Zk1U3o@kI{z9{GjPbRV| zsm}Y2mbm0bS|OJOO?9|YDM85Wd~rF8imFbeshqdmWW8@l*DU~L1UY|AEo^2)GvXag zx*pMvFI0}7q=n1bL(dVlGarpwBdX1xXxLM=kyRh^#=Ohq@3r9TxA7O6vdVm+&9amu zGWnlHl*uvA?`9toA~A;pQ)H-S#(X;@qQW%s7X@hvqgd{2f|migG!X#pSDW*_d(O_z ze|qyFBf#NJSK&x$INQQKAn;c`3!G7&UD3&XP5k}vz);NPHtt3H`^1sS;wKt_%!}_C zjk?aK7Mf{Y@OMO$u4x#V^lds7v>nrRgzaA6Fx^>UuQo9{lL^(7Q8AIVGno@VO-Ny{ z%V-$8wW_Tmgmo6BtVQ@oxU3CNmnquFp@g-VX7XxRHHF~}C?ANQ_Uky7Kkb0>XOz zWD&=HD5hmOEL@AI3pHauYdwoHen2PzSFstv6 zgo4O(B3&);7g@OhvJzAReGqT&@o+Sfa~igDcy!qNPta*U6%D7EwN-lF&PQ1^FFdhx zGoWcl45-Z^?XP@6-{iU77v^M>5)Y_vbvgc!3JjSho6U)`kba$v*!6drod;INH{Ea1quVJ9tjG#xyES5FXU$^|s8uTcHa*~0XMp0*1! zp6NFcD@DrTdd z3_{|JM&bE;owc}(!{nOjx_mcT1ge7O47)TUM9v^xl8r?11$z3!5{1ND6HnwuR?d4K zWIXQ{^*EZ!(e-7z911Hj3&&APo4T)x`&@`-)AKVe>)gwU5KC0`n^l^x_xEG!Ukpvr z!B)1Zb6~b;rgt9R9glV>XiX(q@HG1C^ysi`hvTuEd22$dsm|}GK2T$lCNFnQDW3*< zg6K%EiZI3ppo_dn=R|>KE1IWdvXf*auv19EtI#w8U;HHa)8+Q zcm99VLr>%1jqdH(ro@pGA$=oXJzQXsJU9qidyAsrET3S90RJU@0xFmHrXqYl&~d0> zuy)QT7>0F_-`_{=I$K2hdCdeH;j{^qB2jw>izPN`3w!IeYjf!8UAVK_8i^_FQCn43 z?2@&gx6b%%gC+zwvPZ;5g#l^%cn>Xp!sRnX{_Yqs&1`vcnSo{C&s3vIAfZ5kvBRFb zm$X4M{8O&>_vv|5WHCM8-xEp1v?&$M@9$Hu+T}`QPNa;*b5SD($$>}O>-IONH}m{Z z3yZ$62pOiIwqT9Qt>zDi-X^gyHabH5n=~3XI-4uEgFSd??KE$ln6>Mb3t%ryVs$`| zJ5e3jS}3^%M>|+0>J7jD-{{V^NJ==0O8RdA+Xg5C?mGU?2oLO(!SIpUt{(_odP|h@ zKWz^p6wBi(r2{d7+}H6K{b|f(Fhh8mW`!L4rkg|tq{F|eUuhdcs2humXeQG|QHSXr zG$tThbRT^ znmjz|QcYSV15q>xps;_3XFn6nJot$sf7U+O>>eRA=#cWl$Wb1aY~+7ydu(vWyM~G3 z5u9mS#6rfkNqy+3d9YD)fc?EDcL0XfVzG%j zwfo1vpgr(JosJo$>2)N7P2wASFPpITATO0$L{aP={doBY&Dv4Bz@n=ca2!Pn%C=pk z=WLzP9ueR{si?#;bX*bnu1*j^qatLzpakhF?1#&rBWD*6`6Y-YLu>D6GC2VYwV3zOJrFl>)Ad|%ac8P-5{EKT21`G{ti*%qkhmcFYpLsc(`M5Hh`H&YGxQ)`GnffUU04n|l~9O)V!Z=?y}MGo zS11mLMfbhp{@yKuyS1e>lwLt>a{%7CR}QKCS{makh_`|g?ujQRu*`xw7p2u}Jtt+@ zC)!N|VF7}>Y&KENN;(_zA8!-zKQb#;goD|%N)D2tpzS&gBBB9xRV6$lZJ-jBHgpIQ z@h>+UeWiCs*(p!}V+j#vKXcI@)?7rMj}Ca%T&Ssn4IvSh9X9QXpj3?lZr^G&r_)F3 z7R9lrIDUm8L_td~Pl{ea%bNr=2_hO4RWnI7I`d5gm4->-8=(8D3ka9V2^N6IA`azmE+@ zPgcLjMiR_6Mj{04?6f>FYF{-l$Ide;xNCFEDuPgC=xp(-ml{6SD4Slk3z)FcBpm1R@3qG}pRhbYL zX%Y(W5UbPbvM$gq%AM$X<``+S)dwFGdO`gt{~`Q=*6@lUt$*xGLQW+ik@Rz-14q#; zj6cvJSoqX(m77s6al4D0NcsF+&WYa5gU(6OcUlggrzJ^1FhdPM29~~wmU8S8-|q3@ zsp+K0ee?L}vEMOslQ-RvGL-$Q+YuoV98|H_EYm`dIJtQo(#}0{e;eODUVCmo_-*VR zO@#Ax*C7I>>85?zMDwl0?tsF|?lH&)3uta?SXOB(UBa-(UbEZM<0(oJqoNHuUeiJZ zOB)doy*7};9{vPdcFSKlC(7Md9XRbpl24JGY8Hc zq`!MzA~OcVUaLzx4c3TlHZ}bboTJxcA`_@m%?{>V#Hu==0S!n#OS)+lxIZ?0u_Q?! zZFFPLN{@bPyMs>a`OrHOC3vSA=)}?0*P4um zkRc6RD5uy)4D5FwbdcZbQp+pCVfC&;jKMKCXDNOYLRB4}S z3l`;!gv~A>*QJS!y}q-iZr?eE2-Y7IQ0ny5d+Ix1WlqqT3k)MXT2nDt-$FLZ`m4^Jxt1ZZEV~Bw6FvnJga!8ci-<{9JXS)os+tdfvzn7H zS97|t*Oj3&s2V!Y=&!bggWcbl_Dq(p>TfQwYG$aBMF_k@_dXI#eGDe1%b&yy{&;moMd;A>#4q$A80t2CxnWqaLB1GvoHG>~pr1r^@RO;ZoPInIkr1Xq zwfu7+o6h?vA?h%9#IJb!K3!z={7*c;3RjN!mwJLO;vZZ*O;~#*@$!af12VK544Bx9peY~-=a0wZcj2XsZGVA34gQIesIU*v>aeW}zuflS0&ULFN)_Bl2u6Eb z9Yt@Tv%8@_sub<`V!FQ!5h|0k}D;!ybqw65kc`_SO{{lxpfb+^# zRv1T5iHXR*UiGzgf8-{zhRe=kMZs@lkvd--)lqXYq&lMf^wnEPfUL6#o+cAjl_R zCjcj~CTJ!Y7O5;{HzJgQa+VOW4Bm%?x~DQAtdyn12GNm@=c_nPGeWR<9?2*c3x1r1 zOEFhZQ6jGRDZI?ZL={YPG2^G4a##HH;VmsyaD2FuM~|O%#F7|=@FpTCOEX}j>~w-I zUCMy)Bt#~mxRt@tERW<-q==;@_{P0UDXwMkEx``)KxQcK)3FriRQ{AEN`91=|BQ^J zlD-lbl=CLaAPy;QZUi z?KGPl9d|mNqx@##h*KHt?QL>pKb%vCcci)>q;T+=r*qDK`R*qx3@jY;#+wHi{C`@j`++jR=2Ep;N5O1YDak^-mGSkIqO8Yfq z*?@Q@v58;Hpd)^iHJ(rWMC8>_{7Dlsj&2*dz0I$W#1E97O)f*X z`}|m#|D2|KD*Ij8dg8Y`9b!j_^A*2SNgU^(>WzJo?;vG;2K?Hy(ZOKYH&!I#-sJ z=CF!d{{dr=4}Kl8SxP?mCmv#Y_!l0g^zaWnjOn3}cv=|J|0-CtZ>78*hbu^?3->Pc zuLj|;;tC&o;*^ub*uQaOV!!=ZT>1;*PKX@jGbkTShvFqA&C0hKm7Ri?U-{!2tE{Re zLfR9b{jvC-%B7xoi=Ri`p5PhaN<}(PzQx;25kbe#zWJ7OS4>Df?mm6`?D^AUEcxf)4oB6N zNh!+@n0u!cWr7D32=m;uiL7-$V`dh1;Qep>$0%)ZUxQU+gCXeWQOG)#X<$#Y;;Bj& zD*@->ya#;&?uYGnm0*4;RyPYJWK(VH}N znI&mG6VH@wvXQ>p8H6%kl#<7z82$q4862Du!05y6suvhtI*41(h5>$PV({}+y>*8kFNm%qEw@?5+;*9fVWA@P zmec45FdT-FnVfGi1x9H{r%7(fwXYOw?`6ah8=*0{{)&n3o?&w$kxG4U$ z2**3PEyHWIl0#P>1(`=bEjn%^*bYi%DLHUP*!s@zI$i@k>f^Wc33qe{oT1pM3=8re zSE4*OXmlkW^{Z-?4SmXDvTz`W0>?dDV7pO}Kq`Q&nryKY6Va~jCqA&IULc2=0%*lp zzC2eR3B>=;gfdI%YwHx1EvoMQ?kDXey@mbGPI9_3bfPI*5?8AD;Z1y2`si?D(kv0N zz<#0CMW~mB_}C3w9!3J(13KJ;xIY93Ml3|cB22<|2~@oFUy;62#*|bdh&W0}n;<}G z=gKdMWrTuR$K8OTB;d={`RWr`1`|Q9s-&|j?T77g0Q(w0TKjZ58zv7>u_ex>efFBt z`#ViaA1JKn0luFbrl^%3t0QcTeG>H|t%=be4wQK*tyb>?a=+HljXUNxL`Mzb!niy)aQz5rC$xx`WYY*9BWSnFWz_0! zLP~`t{Szq*j&^yUv5G}yqd(zz%>Hq;j^pg$a%?Dz*R@b)wY$rzb0(E-tI)fMwn`$i zzOy5dDBZDySuLkJy;Kr$NrVLPSp`3F#DN-LL@RCB|0Uoh zbgKv|lJuCb!wIY9n;9_^E17)~_4m(E9fksDFH<{iG>GZ+!=&?4uv=7x^yisGd#_5Q z4~sC%OnW!3XUyFTH#9&+wz`Y7uE$%CScO3=x!Hy~0o)YWYRxAQh#O-{9-`y1>NxBo z=$R9A$8(zVkSH)+*#}j%93v3W9-S&VnijWVK7F4q@+|-;&9I1Jk0wzP#$4k5zNp+S zY3TBk*?{`3P`^UGf7b7xvG0TuvdRa*3}DbJlqwe%De4IZA|h&!8FdgQCNgP^_n-?4 zVyuCS{F?q)IbyON*=ULbXTF4rNegQ*0gl)vHx^A`S#XtGg+MnWIoKo&9@eh8luf8ZEu0_p|ko<xiY_ zAgbAip!4WYB5k@|S_F6<%kP;`qLe3;vR?N- z1*(#qYB|38MvlJ~Uv)Wq;Ji~0?RMJ{O1j`X{|FPRXC>aq%Zwl1hZ(Km z={$>KdR~ctED}k7;*~gEOcr?|&Lu$vOk%{3qawxc543Ka@Jf#Op+1UAw871xDYSw% zObciL^`mlBiz-oDts)~@@tyNULJxu}#m~h;=J@?6$BBBnn9{1^;Y}9d=R7170Jhhz zu4XLYwBegOlUX!6*R$?ii}&I?aUnj4*R>BbNznXjn$CRZCplM1HDZ()Z=!i{q4~#9WP>; zAE^&p1-@+mkvrm-_wRlR5y|B{_$1M$`Fr(Eu9inPv$&PCY(j_%0F=4Ek?Ao4H_2_VUB2+g!3@T8$Txz21m)iNLu$K6hy<)NJQg% z8Q(}~4n%`iA#cHT`Rc&l^vBrZ;xZgvPgp{32Ka{m=ZJZn7B6chS*@yGvLRR(Mg3rps&gGiR+`?o0QR6n7ibST^3} z_#||~?~K)>Euxt*TlF2sR}5==C0boN@at+Xqt_xpfnnE(sJV+NLESWs$NpnFY`B|0 z!5xOCYGXFc#ICE!sFFZhM5F7~MMiLs4M@{Y{ku%7`mtuTRBFg~8cIrdcEZa%jalAk zAm{Pxr{6q#1IUTx1Wx$&nr_S%QMl=XpplM>=ud*#Fm_Z^Z@w^hJW;TSUu&$R7OX4k znCW>3|F$rb)=R0)ID!`RY-95f6j=omcLyG2tGyZ{)`7dE0o zF!=a;tju|RzXAGmuELG=Y}E&3n>}{^@Jg_phgy6LI%aBUn8)0{qAfmX)4`_?L7JkS zItC?KnE0cvk7^k^fFMI=-0{MlKTxtlfy9u-tbL|Kk;q!7D`)7}!^7Fa$+y!8>19l; zr=nEXmY@Z6O2=Ul&Fk=2Vx?2LT`?=Pj-Ngijp|SP+ozth6VNnBJqAvYFl2aFK`w0- zOGxiKk4{D7(PiV26s7*D{pcO+4j#-WG|!U!?MzzKbdl{!Ct9bT{Mljh$#*`|-^Nu& zM9D@r6NL29OMZjopI$!Gim0ezYB>JE3p%0`6WtQ4+sXmfjc$j)>g0|$K>J#*)-R4w z^5n&3c64%}Fw@RD6lCA!Oamxg%bF_E@4UTrRes~erD*~6Uz*CzmL!~)gmeE)_K%;^ zQM!4QJ?8&?ndHaj6vm*|`4(>sW#=IW@UwLF%PxoWG;#~b z{nnljqtU1>mlB5gUY{zD+=OL<_&wIYkLlM^TqJ`htonjtIgp5Yec)h+?H}>vI?bG8x(YmW&BO5!mIZW1sFFDiNF#5`)mE*< zv2me7Bt$3h?vnKg8Sn=8>V4xF{YuT5>6=7B++B(n+Bq0EieW@r&ED;r#jqrKpBRsZMm?if3(%x zTS{83rIyMPByfOHmBs|#q5f{`73nFJfs%B~%vg>=UWIsDGJ_G=x;%lq56aAxA@J9* zt^3An`IE(-zPE>8-IB5VN2*TCoZ?M=Nerk~(p6vE*0fJ_E2&UN0_B6r0CEd`z>5 zTo0*6l0!2;AvAKgBtm5ggzk)1&YDW!-y>Eco5_6C0lR~YtE?N(c+~dTy%HG$qCt&- zPdmbaOA9`5ZlXN8jAE$ubP9MM{p>DnZR%3{?c9|{8wGSUY=56~U|*32D;9{aI0A2} z|H>hcPB~;9@1s*+3MGBbRpkeS?tt{lC99hFH16SkC)K zr_ph$o#!m|WH>lzc?wxSoWgGZ#Z`L*Yu_JeX^l&3FQv^G26oOM9g49V3aSh0Cd?on z_xE+8$gB4D6f~p-6N>lul&xn{O)2I`O{yAZFjM4j<> z4i>d075x3xV8>xTWy(YqRN;9H>>@LSycmJx7%u8N(BT;AY%)qsyp)w?fKo~Ud`fd6 z7A&I1aaz#-3DZ9o-SVH~?Jijr+b+Sm4}Pq_wDaOLndq!<#bZ0`h$@3)Pq&`z=+aL% zN{g?L1YDggF=HB3a0~+oz%Css`0)Ny7dIJ zO{}e;?Y)5Mb7K#UTxH$8xgdR)agMIQF7F8|$Cya&TvPScG|bOA9r`wZyPJHo1vXi| zGsl&DOw*t3s=EsD=nN$_z~b%iAN|{1-mmVt!FwfLxX?-}z!%630m-j7!InfG6wv`G5s`$-atKfp&73_qqtdFc-~+TQDWWDF@6AGu z-^iLy>%^MfV2`M8XDL<~fwE{x#!7mn#a2QAlhDAVe?QmMGB)pmNC0q^fn^DvJ+_Bp z`tfe;%aX*?fJaog1=>UQ3xLCbRF~_}ukHqiITxcin(vILTN0@V;xca`ngea&K0>7u zM^Ym$5h=6DvG&{1m>HCpk|S?M`Fy9Pmv+?_A?V7OiOZl+v|ro8WI9D@l&ucc(Henu zFAb((=pG#(9gDcV3}7p$zg`0Dn<*u)kR0jcRhg`=KA|i((RpfzQhw|BkZ8YH&ls1< zbeUys~9Oo}UaHqPd&JQ2S9q;Zi6y>`(HFrY;%D2hoR~o_1C*Z}@ysQu({1KUO>b zuHq2J72`7oSGC=TiSErty1(T%uC`p+6R@aqBk?m5Bh6PcGXk5z z^6j(P$EH(eBOC6fhaFWk0}I(1;!W04^@+_!euIi#a@omK&|Ux!Tlk0=D8OBtlkyk>%lg)MBeh&SJy%8h1@YCX}Jzz%A4RT=63f z3zWtW#9w439ZBQRS}Vg?5cZ}|7@S*fQ5~}0(Vb$tx`r7$29HBW>Ol5w*?{jXogohT z6isRULBR1S4g1E-HZFVOw$vs;W7TQx9l3YvQ)*9rh4ymdsbDf&Z}T&?xl(P0ngCXQ zp*VrYeMd_OA+@Dl=?vioWfdq<4o@s-#vs-(NIc|AqK!8}nkl59BAv4h;M+tObsD#) zy=AQvHw^N_8`+C$G`b2ph?CrP92LXtjZ{pA0?N2_%4js z9K^I_I>@kOT^9^s5QU3c_(0TH#L9tXlc%5^Ucojjyq|`)EfNo~JtE=~1zayWY^ERRnmXod*vqR+3)HM2{_S_B;U0pip8xV48#e2T zu;C2Ve5)J-ltCR_I?K7C#N*@kH$0&=@AtlqB5(Y&Dwq1*>PI{v>7VI`+BX6t#^kAukD)*>_x)f zEPAg1N-k-K0i9PORYcgg&!jkDS*o&nQo(skpEz~Qe3zw*c~F>r&uMQB$-!#2@~l_R z8e9BwvPFEVl~j>Be+3eu{Ya<Dt)7kCafg;JNmoGV*B@MZNo&R1(hvYJ5$M^Sn?MT%~QIXW>=)a_r zr8|`3lq_?2#Q{feB!9Kj(z!abd(2&ARe8P}Mn}%@ce+h%(&OyefMD-NwEanV(rxUpwYYv&$-dG4%h0)s3bb>Y6 zEXYd3TnpjaG)$pff>=S;2yK*lwM9KdC)U{S>gUpJQCvE{|Ffzen zBHN7=Lp2r@4|{cLbsGFZM)mU(+eb}%3WKzXBN!3d#h6N&kCp<@k>57TD1b$plz@V0jZ z!fKF2sw^ao1tEHXHy3ztB8M)C{dsS!#$Z8A&e7~yP4OsRg}TB zrdd|DA7NB;@A!)V6umIARm&z|{*PjZCvg2{hd3Q+7EK3Gss}Dmu@Ur%D6^dHy}IqL zv-a#`N7QG6CW)E$qKfHLaqr7noa9QMM;KMTi4R7P&1kHoFzF~WqE&kQn4yu(gfXe_ zBf!04gtItsF9@lhL(!Yc2NWBZAz#F4E^pu~Ybq(sSM9^T*7sPFncv)l-#nJhIKTb& zwXK~xY9R5^amV4fvAd>{kje;iIUc*-PWUM`D>yTGlQ?JmK5pPj0?Ti$!8YKIp_In* zDi3xyd6kO}>OlUX)DEVpM|A z8KrOi;_^eZl<}Kr8Pwud5Hb=- zSYW)_P!&e&)UB@#PJVB5y;PlMx)luA=k4Yy?C<}xJ`tM*yq()hojx_d+Cl2Tuaduh zT^Cy@$0ZY35H4HeEUeM&Yf;jP{$?lvLq-`aqv&6b6<7i?p&^_+n(pKsYsKFv_vZ`u z@*Y!@OuQ4?symD%ZxtKGCa@<5wNImaIeX|cW#ShVG;O1e??T`N{=&u-FMc~J`*M$( z??bNJ(KeK&iuvfpWkzU-@;vrauhH{Ix)1K)-_Ee#UvOJ&D^g1sKhKN3Gf-zadpx)9n6Ma@Bb{|gjo|j6Etr|FJ)Fd9~gqF z)g8j7fG@m5w;=05zitf>HhwH*NpPaS(8Y`h_9Jb6Lb}EW4N$wW@+hhKLbl9U#5?#{IuNWt1^! z_y|hreBA{>^7S#?o!n(9;9o&%Q&qah-lxddgu5dS%+cLe%YM)_&Bkc9dEguXc`n74 z`RUrj;qBVf>$dNIOFRZPY$2MghCRdkana-1ttC!WBCcbm;(M&gc9(x~rXd!^tbfxU zFN2PM(_RKs9ybxtdovZBfI}%|2#HI5A4jx+FqOWf;a-F6;8_^295Dg2i#_;W(sm!^ z?$LZ{w8~2b=%p0H>u;tItyX5Xr{bL2T-M|-e3O?w7DAA-W>YMb!WsZ_DQ@dvO1ts5 ze-FKuiWl2zROTWGopKY{k^GINGR@nlU0E=TYucK>gMrdp@f?)R1+mIBUKo#_5m9{u z?X|9p2pt2py)xFMlCxdvW0j9DaT{D}(w}G8!l6{#Eh3-FFkfWoM#6Z3W|8kt=Hc_T z62c%5nw-nv_GBS0_xBMt$aJPp-`JSKuE7)MWzboT0U+$ngL5^;yowEaM)Q2Vzkhak zadO>wVZ7Lv1@0`0XJU`CFf)FNe#Fksxjz_m zg!9##*Z4?}4I+&-Hy5c#VJSzCMhGp{_Qdd)PSN84M zx2J!vV{hJ=UY(x3L6_DDLwps4^>)l_{6Dty{N*dt&e<#7PVCXy8rRz~uT#^`w)fCl zOkwIet$%1qo|+zg4L7%+_Ti*9GE+F9_8EGy^Tht!C|X`R7hmNXj8y!4H!m$pZP zj-?E(<1~vkhXbT8O*U_9w*%e{)@8J-y$&uaC-Q z>${;54HIoRQo(NSDx*9?6JMHFOnpdAc!-b*8lC+xrW+<&C9|(C&tw?UDpS}X8(<{V z%KLcJ8~|6(S7swqShltBA%e+cpl;s6w;WsETl4L;if0;gI9D0Gf|k+f%Xrms45@zT z(Lr9-j`Fv&3FMTrPkbKMjd(!2yS83dOaMU>N8F_ed~j{~2fpS;gF&@#?On?klM_yj z*L=&xx{Nt;w-bq1;cwdAXU`5Jy?g`bJ)z5HbaYIGoHKrIX7sFon~BM#C(du_)Rr!# zzWmie5J3)XvZGL=Bjk$mjAjx z^j=j}=oD4u&cm?0ZY9$vT|`gW{XOhw_{Ix5s#@(%r^{vt#;%qgQ{p)YW+&jHiGG~% z?+EWeNqA3T@}erpU#w)m<99az;4r2RMu$`35Lp}1zYcBvF6WFmhe*1hp5jmCbqR?_TJx2*a5v?b_$c8U^Ib z-H0$GHQS1)t)t^+(jF}j@hnCwAK?ogZ(={Nhf>q^eBf`OI*e?S75P(NK*})i2}HZ zhRL{ez=gzdT2n*M)Zxd>0sMH3BQh~itZQ)Dt=1EB^BUq78Fvw&6s2|n@{=t+9f#4^ z8%2loD>!Z;a#{@Nj=#{arQ&q1_fuT<*<3jT8KE|cpHznM(CQjxr5Q*$3P@OJ12vtp zeqjwk*rTHXMOz*&_Lm+T1Q&IsKpl~M(lH(tQ=A9y>F{U4R$b9mYSAIAuI2PgGbv4B z`^1wFjer>BQ2R#eCE}N2Cyrv1^ol%?L>@${*F?cGV`+y(%4`d>QVyAwa>z9sP!;OC z9pN>Y;#q=&kf8S+@Iev0N18zR?X-wVr@gZBn&~y9S!!jJ? z9mxGlUz#8?4-2No*3FNL(r6{>6~Tv!dgXOl1#Wr6*Nt_l=<@#lOv@6h8ypCge6R$T zXPSv|>BCiJS=l^3eAj$WxtgnSm&mScA(1bxgLln~nsk^^a3%7+6z7DvW_(j6%|q+- z@EtFCzjaNt+Zn6vW9a9oZf6YVfu8yi(S&JMY&E&PrDVtz^xm)1JyZ5#V&awVI6GVlZiq+U>#i$zoE>GBWf?6< z-BoDBVil~zI|A%?^a%v)_3z%vtK!SwzNc^B*S}>RYu8t&fzjjd0F`2>KgV?L^uuXr zNRiMC6Ba?6>Kp8s-JhI;<$4=JdQK2^;qd2J9Yzn!?9?e_gK&fsveJZJaCS}huK zb~m2Vym0B}+ty|Mi_g2i2+bF*TT_0yYbMXySmL4;oF2Lsw)2|rpl4wxFa!R!>9{C+ zvD#JZEy3jKp|25ch`(l&j@ML_j-8TTCg8mrZFnClGcqlVgl`+iSA}1o!K$K)B_*t* zj;RkTN~iW41Yo?9qg0v3@~g7{+U+w4;Q%2ZbD<|J1o2+oIVRbM@B<&8QE4XpT1kA* z__*9*pRSKSg@N_F^9iD{usK;cZAq`o);q#GtM;n(ZoR`SubllE{6JMUFThU2k$=|E z1l}sg5lfW6GfN5PX~Z-g9|-wcwjVPbZNbb=vSN>zWIZ!bDP9DNU>;lr6J_tQ#*G-? z2O$v|uJxg~1GRLv!<8@E<+Os(A(lmI)Gn0qRq52{RUwt7E%>M$0HX(-o9YgETkd#U zPIua7*RqNKvfGVuH-Q?pSJ?@>r4wRdnb(@g!fivd1r^Qa*)_rE-55y%72|x=uNUcD zOU;U1t^q~eHGnN?Fqoeo_U?-GB(Qx(ZH%S;_=YcWvdb4N+vN+UIrgQxB(`**GIBHP zN-lK^7hI1XJ}SZ?xLeC25{xz9o2#N{Vyft{S1&YCeCSWv#JA2{v8kB-O|xr%)$H<> z0yS4PuBB#MV>>AuGk2xujo7(ZlmGxLK-9l24M3M_+PWW$m;@?BP6g0V>kSq}Ma#-G zas%dv6@%KF8MFG)#RV(eiW*5PH?16qsvWrtPxC-fB+SF)C*2))LA3iAf}?r0Jw9sh zX$$74#K~lT|7g(otu@s46w(gjaDT6R4}CZGFt3$@-iflw+c4YMh|reJ!Wi7lG?*B( zHr3U$Gy^G(&JvSB-KDAW)Df-VCpYeUD5+fbj0s?BJo#!_)Cx>HXzJ?THAYQ#aS_Z^ z$c={ObC#TrVfe3fG1e45pp#*{eCSSFv%FRL`}yZcx|NsLQDG-vQ1biq&xoN?oMxovX#+1N z>PW25{MHz&2@hJup~lE7^)3-azHn{xV|7UQn>T^&X4-e!94m7T_DHniI)#Dlz*1qc z@@n!;O0#y!dRXnZ9kCp&Tuo}HM3JRLJ*ArbP0L-qo31Q_vq)BLIwcBpR4_5BR>>NE z-tyB$bGgmiK#!tSGb^8!Ge(xMGlJ-L>_hQi${bL6pn6AVJ5iIyRg4dhofoIXZ0c7T zyNk@oLpObhq`m`MvR}krq%1povgc(=)+E)9Mz)6vd^g%~70)>2&}Ij+o~};)y}!q` zvP7>!lgNrFzMjX>N;)*gTI`%Y#wtK>_MvBC6+7#5g;k(xhSH3kQ~=6Akv6p2zTGvD zWW(j4(A8K@-}O?|c3H@BMcaTq1}tSvq;ME6FE)33Z2B}=4oxQaaoGc7^?M+a@-}X9;2fPC5CE$SY!G(H1nr||sQfs7UsQhJa}0zz z%^2SUZpZtZs4LF?PB6cn-hmsmU9?HtNp=jxJx)dCQARXU$@AG>eIU{6q))=v8(9z) zZFl@ImMIRTpq?2guzxwnR`r)$O_WNj*rFnW)wBLtBpe^0^-EIJgcSPfT_n01A5kDUz zSw9||5_$AzluU@Uo2KL7AY2q_LoR6;;{(qbRsi&pgG2n)sa*?56C`~aVS-^H{v*B4 z%qyHQEoxBn=d~~wHL9s+5d)o*bbr59*z`c>B&4L64tB~s3`JGC8H9)O(9QeZR^%Jd z;g4EDikzgM_ah&8!XhGS^OAb}8vvhn*R5M;@$>?MMfc@s1k@S+(+TNQ5#xtL%DsE8zObm8YUPu8d_FU-7saux5jT+h#X=-ayNn-%x8?Bo}kV*tZyXFccD+h6d_Tm=Hur!|Lcb6U@z zKbOQgb;LC!H4FZtUmoP87eBDPzI9xc5oPa;Upd2x3&f*J=ty@y-;nzm7JCB(B6U{V zH#I`3tKo@iR`E~)hia((h{GN#naE0Ae!ixneikfnyQm2?rB1xFIGWGtOt5R*k&Unt z)<`^Gle}n$)GdhB(Uy6F>{e`|{m}c(n`|p6R0ff`Gre!lqcq#ReH)d0q z_%>W~IiW_^%`Ks6zanbqP{>)aVWSELrq+fK`b9AnEjo*6ZZe$g&8}u*ObIX)lt0n= zD%bNj!_-DwVQQm|Ftt$`PID6=Z9u{s!c{i7 z<9<=sohX^gEP^#WD|tbec@Ezo$9ChM3T?MZl7f%^Qh*3MG{pY?yN7~7*nXt79&e_& zy9NA}x45?>?Awl@W@TKoEt)wbmKu@OdPSQ~FPco)BW0u4MqbWCQ1p6r66~NS5?&1L z;W%iB;Zb!}ctvcv&k@1`#tZmWrcFuf3CO6Vb&Mdp>cMLf@dfdIb*SwQm5^-59UqA? zEOZuiMroUNS(K&>3qJZlldNce=Imrjm_XlwzG~lu@j|i(Ap2X!!AfXaa#|0(Fxn2h zFeR+f?L9uBQ!e9}*vE%c4vvs9iL0YBScj}`PK3?&Q-s+K1_v(~e>6-Sg+RqoXxQi% z{A);TYsG_yIQSZTrc+*wyiuBFV>k&1PPfzOcASd$)sq3>hx8Yvi37&H(KZrJHR4r5 z+sK_Mx9yF%5iDRqCLFgn;zz6%Wp73tgoM!a7=Khlp9r%a&Cb3j=GHfOEz~pS=B{Qye72>%vabE9O-A`m8LWY(vKFi% z+wyWx{zg;*v6ou0wet3KbmQIClVAhlP`U%Fw8YP;wpp0BW`^Z%jnbKaGm9NshHQ0L zy5#XCN9R+CJ8TWm2B_$_-+XKV(NNETfAh?{sC;2?yK7v^X?PQ*nGd75ue6iUS2TXF z*D%@+VjH04Zn4s%*H||k9m6Z<;pAmsa8riqP4oZH?yUb-=mT3Dw9BMdyU7?gj2$or zrUXt&l|ex&?)3TX6JRQ_Ye<`J>4R8NvR1sW{0Q$#a>ps^F(FiMw4t1Ad<&4S&h{Nz zX=w?-qKZL5q&VHrxiUxgI;o2e6_~Jwlepk zVA)=F@9&q)+R@oU?<;=q^7{h$$9O;H_a*ZA{V~5^1_$g9g4J`McUs+VJBKlpGhyPo z%U0nXxr-KY0Y@u|B|Q+=u8zqJ$T}x*UA8lE0s2dv@!t=WGFpmL{H(+~!X2CD_fs2; z-mz&}Vi~f2Xa?>(7{;Hsm)_C2juzT}Do#10i;NXAbZAe?xi}2o!C3y>7?hUpQ?0+I zaT5KFQGRNx3u@cD?ve%6DpKyCdBH(+&lr$dOB^^IYK#6O0_zG@KGu?cOic{DztNGKFqZ6W78yp5J_zTje!MY~m^G$3mMJgT`;+)-7>-Fj^LlM*n zf-jH|swuy!u53db{Et;0&}!5MPOI&_Afm>1*z1`!-?kkA^U)7FLzgUyuUVA;$t_x) z_J8dcZMohW|6}9$+^c&vD}QF?+pHaz6M}{_E)7ySVc+AVG?Hfj>h*3H%E%TRLvDuTg zKKsh&x@?u^)N<1fYyQ^ZU-?^Gdd^+)ia-~pV!Cdr4F@6fLb)B{?mrIP#Cmh+12SU`$*=B`_VaO?zw`Hy!MQIK2 zgwCX`<3qfp)Ht407T$7IRD_gb6%F|>gjOmGAB5Wdl%LcPRk4EW40Tqa>Uzgh(9DH3 z8{7&0tFm-o)w&ElKMiWQSVL}GdH!m-V#f+WDN!vK1i6*qW6}(O^52PqD-9;fipFIZ-x4o+TW}zGlPwjuVxk z{V3|a2cTLrbrvSSeD}ayeV~)}p}+w+AD#ManRSAoWmK!Ebg3yScdbCyqDBOrUUX9Q zie}T3gJKA(m{_E>qH4+uSMRXfYo1}=U5AZf4Kek#pYZC5)9#xzq`;O1uf@yg=pra{=ByWwC=kN7k8{IM~q=FSuUbVWPoD(yvt z^lw)dpdJd$5!1oT`S0$%1wu-=$Ov^WGp-S1>WJ??QT; z@$}a(dRNNtJ1h6J2oO|I{4hs>(e@hwlQU*jVH(K-l?x})+1s& zkhMtNYI!*_O=at8WxzLc(Uvh0068X{idkXW)YSqdJm@*)R)P^bXVbUp9_oHp#e!yE zvxHsE7VSkYVS!pwXS&}k`_w&V`$*4Mu7D7G@zmDC#nh~v6x_&aJ5@S0D>mFfs=d@V zYHVNYwTB2_Uo|t9`Ip+USYE3|Ml@=xf|$}<*=)xGCK+wx`d}{cLgL{UTn41IfWubO zCOX>0IcUM%O45O@g3A9$#NAcAp$@8!guT+kfxDUq_Fgc)4GN%{4pY;_VoRd%EQ8R))zH+SncD}w!tJHh$QK51AYId#j%a!}*9PV) zTfLgojR1-EXB9#QRIC+Q&ui+;m%g&(rFV7IH(e0QEJYy}zt*6>^)0v0f))V|%X(Bb z5HPQ(>6G5pJuYR%ExY2(h`l>RqP4!%QIq*{U2Wh8XU{lyt67Y#S)2y3s^^rzHm-nu z!C~#HGm^kJ*0%j6a<*qn) zugqpJrR?%9`2BqZkfWYOW46O@5lqc-$H*1iJizlgV<+XkD`Yn*JF)^itGNZ^u;3dF zu=j%W$PICe&Z7k`t5S)FZmjmgkGw=j3#z;1<$1o}huQU(2E2-2Wn>lYGQ6C-5unD+ zXgjrF=77hDMmc1E4K=%83=X!`F_I0@l+$y4X|N?q>PcxoKwQW6nK7-Xr;))uB~3NS zqA_|+a1i#xrt=-W)1iT62cZ>_c7YgtxM&tiSwdffMbp7IAN6IpvnuI~ZDNK*-;_zO z!hFigI|rigY;Z-%e6%`@GV!h}QbJ%(G4))kR|D^qqH!vbXV>C37%`zIu7Um`szo1> zrIu5Bg|{tyU&P5y#XWTXswFcmwQ?Cr&2(lyLLN?VQpoJpzjGN8|dR#xq+rEk$ z=a+%xhPcLaTHZS!A)pBDD#VR+q68Zh;{Ho|y$M=3V6qI7E0e-<8O&~S&%}ke5eu53 z6k7YM{#AA1&e#v_=KONO13k8|6k4gtTy9S0!v0>5AG=A7pKq|)qtS*xxMzHy6rF^@ zMg5E~0R}ydsh1-Hn*y%ZHeq3G;}u~+Z*w5XX?n}KT#@MNYvZdz8#S13kZV5a6G(Uc zJ%}8YCIAt83|BL8@gF73e`7}xs3s2aUQh~uN(p6&F9{3BdAjyKHlIqPhXKSjy7Y*nG!+45YO)#37Xi4 z5gY-dvA6DxYgcA$qScB?F0bJ!@v1_cdEn|hafqv$fJXCKd17`kl6P zsx>+bdMZ*vOlkWnOJ@ke?q0E>^TOl!>&m|Y40 zrFzE`UQ3m+R?gV1j{DX9Kg@i=bu$R5RiJUzZ0OEt)yLj)2XdOhdo(X`(dFj$87o|r z*KmZHn*4sL>Tg~65@gXQK@ zk82f-oG%YbYrc=@kge;b{c$}ghFazp2^B73O*N!$rP+!Be=24N%}A|3TG9=bvypM1 zbowsBC2OvlX!i-Oiq+wVmwwjYql71Zw(eNi) zEAqhwK{BdqU_2}n&CUK@($%tX`f z;Gd(yS>^sG$x%qE+*h5~$TdVM-<_F!(80>v9YhaU)?T9|&A!`cPs_p z&y+sx;Ga`vD5};!u2M=i%}EypQ%Wk1@sC#@F)3aBR*t%`syAaQs+yk)L*9OX=9Ntj zol9BJ3@54}-vIL#yOz!z+JhZY?Cu7V&B!)as!h$?d$HP@Tw`zFFvWf?)=uj2iC)*WR-(RHj zFMQm3y8Gh?J&cL8%Reb@i;1+L@@VbvMZS(*K)@LXt|mr5q5UB8`pyzhxEhy#g{B@A zPr`Cb^{6daX+J34Yxxgn{F$b+*9xvF z&w68TIAi#0G&7(?%NK;7Q!nfQqdUlYoAM?%rcnbYPA6d&71LQXvWnLAAAvL0Z?z(X zE#QiTn58j4;)ZCo!D<|Tu+dc_O$>r$Mt%!{_S;YWPE}KNds-=?Ek{wJ^{UX;v0N4o z;bfdpKU8vAt4z$wP<7021m%jpHz`S(iJNf=LeYn8$d%9ohYPqg2YNjq802xvy< zO8Jh+H4y)6SEg`F=cQ4$vO;GiXyi-ABZiRSE5*DbxOCOBRxDydsZsfs(c5<}Jdn$z zbbnu-1YP-<8N*)MY7yW9SaFr@d)&!8Cr*O$MGBW1Dw~vU%lRPX+erdq5RVd&A5A1x zR{RF&g9uGL>95$B%EwQuD}Kk-VQkEY@C3Y#44T-jHDo(EK5BYJdm84yC|_OmDW4#G z>(qOo7WGu(mK|6~T{x|fmAYK6(3`my(+kmP+S)7l{(i4o93>_pYBtTJa*0M?*M6|UAwD$c(e_8bw2%U6M* z-ktz6>4|Da7FMBfsSADJE3nzu5%#ZoqFfcT#uSarGu1tEBbGj8-j{j+Z_6*V4U;Sn zn)swv3k|<-)tLx0&+kimn_X|qie4nu=UDUVgOXmy2kIuRDvHhn+7`=zFy;vQT`{He zbVR)}XB_*kp88d+yHi30RW|k0H^-dOfozaYG_f^_V>`_#IgBeQE+8Q@!PzvTE^Wz( ziX2&?_DZDkeg@_j+o7&T!I*glBgc0RSbB;#ML~!(sz-|%F90V3t zhCV`&A#A#bmC8Z;DQu48L$_!p-r=Y@ZN`V=rklFC*B>3`hgwTyp@1Ug$;rRq zb6P1c5pzrIRaCSRwb24MUC_`*5rw5rnZ5dZwYKVCQ-wPlQJQ5-()lGbKsb*E6^(4v zWb76+Dm{q^MrirsEuC|0>zu`+UP$YSV@pq58Z}#>@lt@8(lo9;hn4!5BMAi@z&wLQ zH4joek6Rh!txABOd3^+q@GahjR(nLJ*SMuE+i)xkcX|SEnv<#J@#L|-9vjd{_-w)> z3-t}_w1qo5Ap$Bt8QES@)i)w!B`$gj(VI~hZ>d6+>0%_(A?|qUYJ(S+7uaHwd`lT> zqPHNn&s%pSU3pY^2zegS>sZp^re0OhvJ;NkW=A7?>&hk!*!JLijB~TJ#Lkp*cT-Z6 zKS*B~UQUx3b^DMcsB;MB_^(G(W6Yt%yvoW5RD}$>z2ZdnB;Tw~lb0q$w78`%DxK8& z=Ozdg10%DD0gP@I=$x$gP#$)uSH0kDB$U#d)YWM{q z+m?U}cLl(I$rOX(iE?oAtPm~b)HPkcbHcoOkCI;WqGUyS{|{$x+upWutqXrYzoNov zbphs3CY3lzK|{P8r`^p-+_7Xbv0Wis;Q_zJvn}v2sR!IxvUMHzJ(P+`ioq1AN8GvWhsghVB9fU?9AC zbNf!lJCyC1%{mE~{RJZR=<^;P_*Z_LOv7h*JH@|fhQ81E=s5HSAqmWGlo>Lu-F{y! z8j)zn?9n2=h_oq2lX5turQgiT`H=p>+KCHsDJm|+PcEx0o~rEz@e9wM6zb?mAc@g> zm_HAm(g3QxLFzK1SnEL!yIPmc@*!Z!c@z}=PUdV=kyLvA3uty;!)

    j|`Ub2+a=t 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 literal 0 HcmV?d00001 diff --git a/public/assets/application-29a45c9a6c794a4499e57fc0bb19c87f.css b/public/assets/application-29a45c9a6c794a4499e57fc0bb19c87f.css new file mode 100644 index 0000000..5a4a71c --- /dev/null +++ b/public/assets/application-29a45c9a6c794a4499e57fc0bb19c87f.css @@ -0,0 +1,99 @@ +.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top, #fff 0, #e0e0e0 100%);background-image:linear-gradient(to bottom, #fff 0, #e0e0e0 100%);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe0e0e0',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top, #428bca 0, #2d6ca2 100%);background-image:linear-gradient(to bottom, #428bca 0, #2d6ca2 100%);background-repeat:repeat-x;border-color:#2b669a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff2d6ca2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #419641 100%);background-image:linear-gradient(to bottom, #5cb85c 0, #419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff419641',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0, #eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffeb9316',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c12e2a 100%);background-image:linear-gradient(to bottom, #d9534f 0, #c12e2a 100%);background-repeat:repeat-x;border-color:#b92c28;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc12e2a',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #2aabd2 100%);background-image:linear-gradient(to bottom, #5bc0de 0, #2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2aabd2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar-default{background-image:-webkit-linear-gradient(top, #fff 0, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0, #f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f3f3f3 100%);background-image:linear-gradient(to bottom, #ebebeb 0, #f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff3f3f3',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top, #3c3c3c 0, #222 100%);background-image:linear-gradient(to bottom, #3c3c3c 0, #222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #222 0, #282828 100%);background-image:linear-gradient(to bottom, #222 0, #282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff282828',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top, #dff0d8 0, #c8e5bc 100%);background-image:linear-gradient(to bottom, #dff0d8 0, #c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-linear-gradient(top, #d9edf7 0, #b9def0 100%);background-image:linear-gradient(to bottom, #d9edf7 0, #b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #f8efc0 100%);background-image:linear-gradient(to bottom, #fcf8e3 0, #f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-linear-gradient(top, #f2dede 0, #e7c3c3 100%);background-image:linear-gradient(to bottom, #f2dede 0, #e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f5f5f5 100%);background-image:linear-gradient(to bottom, #ebebeb 0, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top, #428bca 0, #3071a9 100%);background-image:linear-gradient(to bottom, #428bca 0, #3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #449d44 100%);background-image:linear-gradient(to bottom, #5cb85c 0, #449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #31b0d5 100%);background-image:linear-gradient(to bottom, #5bc0de 0, #31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #ec971f 100%);background-image:linear-gradient(to bottom, #f0ad4e 0, #ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c9302c 100%);background-image:linear-gradient(to bottom, #d9534f 0, #c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top, #428bca 0, #3278b3 100%);background-image:linear-gradient(to bottom, #428bca 0, #3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top, #dff0d8 0, #d0e9c6 100%);background-image:linear-gradient(to bottom, #dff0d8 0, #d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top, #d9edf7 0, #c4e3f3 100%);background-image:linear-gradient(to bottom, #d9edf7 0, #c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #faf2cc 100%);background-image:linear-gradient(to bottom, #fcf8e3 0, #faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top, #f2dede 0, #ebcccc 100%);background-image:linear-gradient(to bottom, #f2dede 0, #ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-linear-gradient(top, #e8e8e8 0, #f5f5f5 100%);background-image:linear-gradient(to bottom, #e8e8e8 0, #f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}code{word-wrap:break-word;white-space:normal}/*! + * jQuery UI CSS Framework 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute !important;clip:rect(1px 1px 1px 1px);clip:rect(1px, 1px, 1px, 1px)}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}/*! + * jQuery UI CSS Framework 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller&ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px + */.ui-widget{font-family:Trebuchet MS, Tahoma, Verdana, Arial, sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS, Tahoma, Verdana, Arial, sans-serif;font-size:1em}.ui-widget-content{border:1px solid #dddddd;background:#eee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x;color:#333333}.ui-widget-content a{color:#333333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x;color:#ffffff;font-weight:bold}.ui-widget-header a{color:#ffffff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #cccccc;background:#f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-widget :active{outline:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat;color:#ffffff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#ffffff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#ffffff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_228ef1_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_ffd27a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-off{background-position:-96px -144px}.ui-icon-radio-on{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;opacity:.50;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;opacity:.20;filter:Alpha(Opacity=20);-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px;border-radius:5px} /*! +* jQuery UI Resizable 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Resizable#theming +*/.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px} /*! +* jQuery UI Selectable 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Selectable#theming +*/.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}/*! + * jQuery UI Accordion 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */.ui-accordion{width:100%}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1}.ui-accordion .ui-accordion-li-fix{display:inline}.ui-accordion .ui-accordion-header-active{border-bottom:0 !important}.ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em .7em}.ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.ui-accordion .ui-accordion-content-active{display:block}/*! + * jQuery UI Autocomplete 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */.ui-autocomplete{position:absolute;cursor:default}* html .ui-autocomplete{width:1px}.ui-menu{list-style:none;padding:2px;margin:0;display:block;float:left}.ui-menu .ui-menu{margin-top:-3px}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;float:left;clear:left;width:100%}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:.2em .4em;line-height:1.5;zoom:1}.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}/*! + * jQuery UI Button 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none !important;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0}/*! + * jQuery UI Dialog 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}/*! + * jQuery UI Slider 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0} /*! +* jQuery UI Tabs 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Tabs#theming +*/.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:1px;margin:0 .2em 1px 0;border-bottom:0 !important;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-selected{margin-bottom:0;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-selected a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-state-processing a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tabs .ui-tabs-hide{display:none !important}/*! + * jQuery UI Datepicker 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}/*! +* jQuery UI Progressbar 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Progressbar#theming +*/.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.form-horizontal .multiline-label{margin-top:-10px}.nested-fields{border:1px solid #d6d6d6;padding:10px 10px 0 10px;max-width:275px}.customcode,.customcode .str,.customcode .lit,.customcode .pln{color:#00ab9b}.response-div{margin-top:12px;font-size:0.8em}.response{background-color:#ddd;margin:0 1px;border:1px solid #555;padding:2px;font-weight:bold;color:#555;cursor:pointer}.response:hover{background-color:#eeb}.response.active{background-color:#beb;cursor:initial}.format-json,.format-xml{display:none}.format-block{min-height:200px}.format-block-lg{min-height:350px}.infobox{vertical-align:bottom}.spanlink{cursor:pointer}.boldlink{font-weight:bold}#logo{float:left;margin:0 0 0 0}#logo a{color:#d62020}#logo a span,.paygray{color:#666666}#logo a:hover,.apps a:hover,.apps:hover div{text-decoration:none}.commentarea{width:300px;height:80px}#logo.small{font-size:30px;color:#666666}#options{float:right;text-align:right}#login{padding:6px;border:1px solid #bbbbbb;border-collapse:separate;border-spacing:3px;background-color:#eeeeee;background:-webkit-gradient(linear, left top, right top, from(#ddd), to(#f5f5f5));background:-moz-linear-gradient(left, #ddd, #f5f5f5);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#f5f5f5', GradientType=1)}#menu{height:40px;margin:0 auto;border:1px solid #dddddd;background-color:#d6d6d6;background:-webkit-gradient(linear, left top, left bottom, from(#eee), to(#bbb));background:-moz-linear-gradient(top, #eee, #bbb);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#bbbbbb')}#menu div{float:left;height:40px}#menu div a{color:#777777;padding:10px 30px;display:block;font-weight:bold}#menu div:hover{background-color:#cccccc}#menu div:hover a{color:#000000;text-decoration:none}#menu .selected,#menu .selected:hover{background-color:#e5e5e5}#menu .selected a{color:#000000}#channel_info{padding-bottom:20px}.signed_in_channel_header{display:inline-block}.public_private_icon{display:inline-block}.signed_in_channel_header{width:300px;height:10px}#list_progress_bar{width:300px;height:10px}.public_channel_box{margin:5px;border-radius:7px;height:300px;border:solid 1px red;display:inline-block;width:30%;vertical-align:top}.public_channel_inner{margin-left:10px;margin-right:5px}.public_channel_name{height:11px;font-size:1.3em;font-weight:bold;color:#2565A5}.public_channel_user{height:15px;margin-left:7px;font-size:0.9em}.progressbar{height:10px}.public_channel_desc{height:140px;word-break:break-all}.public_channel_url{height:10px}.public_channel_tags{height:57px;margin-bottom:10px;overflow:hidden}.public_channel_thumbnail{position:absolute;border:2px solid red;display:none}h1.channel_info{margin:0;padding-top:10px}div.list_tags{padding-top:20px}.channelLinks{padding:0 0 0 0;margin-bottom:15px}.channelLinks li{padding:7px;border:1px solid #ccc;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;display:inline;margin:0 0 0 0;list-style:none}#comments{width:100%}#commentsmain{float:left;width:190px;background-color:#fffff9;border:1px dashed #d0d0d0;padding:5px;margin-right:16px;overflow:hidden;display:none}.commentlink{float:left;width:100%}#public_statuses{width:455px;height:380px;overflow:auto;font-size:1.5em}#public_statuses div{margin-left:15px}.statusIFrame{border:1px solid #ccc;background-color:#ffffff}.userlogin{display:none}.login_info{font-weight:bold;text-align:right;font-size:12px}.round{-moz-border-radius:7px;-webkit-border-radius:7px}.text_center{text-align:center}.big{font-size:18px}.large{font-size:20px}.xlarge{font-size:30px}.small{font-size:12px}.action{margin-right:20px;position:relative;top:35px;font-weight:bold;padding:10px}.action_reverse{margin-right:20px;position:relative;top:35px;font-weight:bold;background-color:#d62020;padding:8px;color:#000000}.action_reverse a{color:#FFFFFF}.section_header_reverse{font-weight:bold;color:#FFFFFF;background-color:#d62020;padding:8px}.nicetable{font-size:14px;border:1px solid #bbbbbb}.nicetable-borderless{font-size:14px;border:none}.nicetable-borderless p{margin-left:20px;margin-top:5px;margin-bottom:10px}.nicetable-borderless h3{margin-bottom:0}.nicetable-borderless h3.signed_in_channel_header{margin-bottom:10px}.nicetable .header{font-weight:bold;background-color:#e5e5e5}.nicetable .header td{padding-top:3px}.nicetable td{padding:2px 10px;border-bottom:1px solid #bbbbbb;word-wrap:word}.nicetable .stripe{background-color:#f9f9f9}.nicetable .disabled{background-color:#eee}.nicetable .disabled a{color:#888}.fulltable{width:95%}.fullform{width:100%;margin-bottom:1.5em}.deletecol{width:1em}.table_no_header{font-size:14px}.table_no_header td{padding:2px 10px}.table_no_header .left{font-weight:bold}.max_width_400{max-width:40;word-wrap:break-word}.helplink{float:right;margin-top:3px}.votediv,.votedivphoto,.votedivlink{color:#3478e3}.votedivlink{padding-right:20px}.votediv{float:right;display:none}.voteicon{padding:2px;background:#f8f8f8;border:1px solid #ddd;cursor:pointer}.voteicon:hover{text-decoration:none}.voteicon img{position:relative;top:3px}.nestedcomment{padding-left:30px}.commenttable{padding:0;margin:0;width:100%}.commenttable td{padding:4px 10px 4px 5px}.commentchannel{color:#f08600;font-weight:bold}.commentbody{color:#333333}.commentdiv{width:100%;padding:5px 0 5px 0;font-size:12px;border-top:1px solid #aaa}.gravatar{border:1px solid #999}.noavatar{width:50px;height:50px;border:1px solid #ddd;color:#ddd;text-align:center}.noavatartext{padding-top:5px}.prettydate{color:#aaa}.username a{color:#3478E3;font-weight:bold}.timeago{font-size:0.8em;color:#ccc}.pagination{font-size:14px}.centerme{display:table;margin:0 auto}.fixedwidth{width:960px;display:table;margin:0 auto}.code{margin:10px 0;background-color:#fafafa;white-space:pre-wrap;font:12px Monaco, Lucida Console, monospace;color:#000000;border:1px solid #bbbbbb;padding:10px}.apps{padding:20px 30px 30px 30px;font-size:20px;float:left;text-align:center;margin:0 auto;width:150px}input[type="text"].shortfield{width:30px}input[type="text"].midfield{width:120px}textarea.tweet{margin-top:0.5em;width:40em;height:3em}.errorExplanation{width:95%;background-color:#ffffe0;display:table;margin-bottom:20px;padding:10px;border:1px solid #aaaaaa}#error{color:red}.field_with_errors{display:inline}.warning_box{margin:15px 0 15px 0;padding:10px;background-color:#fc3;color:#000;border:1px solid #f90}#wrapper{min-height:100%;position:relative}#header{margin:0 auto}#head_wrap{width:940px;margin:0 auto;padding-left:10px;padding-right:10px}#menuwrap{padding:0 0;clear:both}#content{width:975px;padding:23px 0 58px 0;min-height:400px}.content{width:975px;padding:23px 0 58px 0;min-height:400px}#maincontent{float:left;width:980px;padding-bottom:20px;margin-left:10px;overflow:false}#maincontent.thin{width:400px}#maincontent.medium{width:500px}#maincontent .thinghttptable{table-layout:fixed;width:400px;word-wrap:break-word}#maincontent .thinghttptable .url{width:100px}#maincontent .thinghttptable .apikey{width:80px}#maincontent.medium .table_no_header{table-layout:fixed;width:440px;word-wrap:break-word}#maincontent.medium .table_no_header .left{width:180px}input#upload_csv{padding-top:5px;margin:20px 0}#sidebar{font-size:14px;width:50%;padding-right:10px;margin-top:10px;margin-left:460px;margin-right:0;border:1px solid #ccc;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px}#sidebar.wide{width:520px}#sidebar.medium{width:470px}#sidebar.narrow{width:470px;margin-left:520px}#sidebar ul{list-style:none;margin:15px 20px 30px 0}#sidebar ul li ul li{margin:0}#sidebar h2{color:#666;margin:0 0 6px 0;padding:0 0}#sidebar .helplink{float:right;margin-top:3px;margin-right:5px}#footer{clear:both;text-align:center;font-size:16px;font-family:Georgia, serif;padding-bottom:5px}#footer a{color:#0867A3}#footer a:hover{color:#0066ff;text-decoration:underline}#footer .copy{padding:5px;font-size:11px}#footer .copy a{color:#D62020;text-decoration:underline}#footer .copy a:hover{color:#890707;text-decoration:underline}.FL{float:left}.FR{float:right}.FN{float:none}.DT{display:table}.CL{clear:left}.CR{clear:right}.CB{clear:both}.UL{text-decoration:underline}.TAR{text-align:right}.TAC{text-align:center}.VAT{vertical-align:top}.PB10{padding-bottom:10px}.PR20{padding-right:20px}.PL20{padding-left:20px}.PL30{padding-left:30px}.MT10{margin-top:5px}.MR20{margin-right:20px}.MR60{margin-right:60px;margin-bottom:20px}.ML20{margin-left:20px}.ML60{margin-left:60px}.W50{width:50%}.W100{width:100%}.left20{position:relative;left:-20px}.up2{position:relative;top:-2px}.up20{position:relative;top:-20px}input.video_narrow{width:100px}#front{text-align:center}#features{clear:both}.feature{float:left;width:300px;margin-right:0}.feature h1{font-size:20px;color:#0867A3}#feature_signup a{border-bottom:3px solid #d62020;text-decoration:none;font-weight:bold}#feature_signup a:hover{text-decoration:none}#nav{list-style:none;padding:0 10px 0 92px;margin:0}#nav li{float:left;margin:0px 0px 0px 10px;padding:0px 15px 0px 0px;position:relative;font-size:14px;line-height:1.4;zoom:1}#nav li:last-child{padding:0}#nav .current-cat a,#nav .current_page_item a{color:#d62020;border-bottom:5px solid #2565A5}#nav .current-cat li a,#nav .current_page_item li a{color:#000}#nav .current-cat li a:hover,#nav .current_page_item li a:hover{color:#d62020;border-bottom:5px solid #2565A5}#nav li a{text-transform:uppercase;font-weight:bold;text-decoration:none;color:#000;border:none;text-decoration:none;float:left;border-bottom:5px solid #FFFFFF}#nav li a:hover{color:#d62020;border-bottom:5px solid #aaa}#nav li span{width:12px;height:20px;background:url("arrow-down.gif") no-repeat left 7px;margin:0;padding:0;position:absolute;right:0;top:0}#nav ul{display:none}#nav li span.child{width:12px;height:20px;background:url("arrow-right.gif") no-repeat left 10px;margin:0;padding:0;position:absolute;right:0;top:0}#nav li a.rss{background:url(rss_feed.png) right 0px no-repeat;padding:0px 30px 0px 0}#nav li a.rss:hover{background:url(rss_feed.png) right -24px no-repeat;padding:0px 30px 0px 0;border-bottom:0 solid #aaa}.ui-widget{font-size:.8em}.ui-widget-header{border:1px solid #0867A3;background:#0867a3 none top right no-repeat}.ui-progressbar{height:5px}.ui-progressbar-value{background-color:green}.ui-widget-content a{color:blue;text-decoration:underline;margin:0}.ui-widget-content p{margin:0 0 10px 10px}.column{width:470px;float:left;padding-bottom:50px;padding-left:5px}.portlet{margin:0 1em 1em 0}.portlet-header{margin:0.3em;padding:7px 7px 7px 7px}.portlet-header .ui-icon{float:right;margin-top:-2px;cursor:pointer;cursor:hand}.portlet-content{padding:0.4em}.ui-sortable-placeholder{border:1px dotted black;visibility:visible !important;height:50px !important}.ui-sortable-placeholder *{visibility:hidden}.buttonlets{float:left;overflow:hidden;max-width:95px}.tweetButton{width:80px}.facebookButton{width:85px}.googleplusButton{width:70px}.padded{margin-top:2px}.ui-button{height:19px;line-height:1em}.ui-button-text-only .ui-button-text{padding:0.2em 1em 0.2em 0.4em;font-size:12px}.ui-state-active{border:1px solid #2565a5;background:#ddd none 50% 50% repeat-x;color:#2565a5}.ui-state-default{border:1px solid #ccc;color:#2565a5}.ui-state-hover{background:#ccc none 50% 50% repeat-x}.topLink{font-size:16px}.developerlink{padding:7px;margin-left:10px;border-bottom-left-radius:15px;border-bottom-right-radius:15px;-webkit-border-bottom-left-radius:15px;-webkit-border-bottom-right-radius:15px;-moz-border-bottom-left-radius:15px;-moz-border-bottom-right-radius:15px;background-color:#aaa}.addpluginlink{color:white;padding:7px;margin-left:10px;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;background-color:#aaa;cursor:pointer}.addpluginlink:hover{background-color:#ccc}.pluginrectangle{display:none;background-color:#aaa;border-radius:5px;position:absolute;height:70%;width:100%;top:30px;right:0}.developerlink:hover{background-color:#ccc}.developerlink a{color:white;text-decoration:none}.channelInfo{max-width:500px}.channelDescription{width:450px;height:60px}.socialButtons{float:right;display:inline}.dev-info-dialog{border:2px solid #bbb}.dev-info-dialog .ui-dialog-titlebar{background-color:#aaa;color:white}.dev-info-dialog a{text-decoration:underline}.ui-tabs{height:100%}.dev-info-dialog ul{list-style-type:none;background-color:whitesmoke}#devInfo{font-size:1.2em}.dev-info-dialog ul li{display:inline;list-style-type:none}.dev_info_table1{margin-bottom:10px}.dev_info_table2{margin-left:10px}.dev_info_table2 td{max-width:300px}.watchButtonLabel{white-space:nowrap;padding-right:10px}.watchButtonImage{float:left;background-position:left;background-image:url("eye.png");background-repeat:no-repeat;width:19px;height:16px}.watchButtonPadding{padding-right:5px}.chartOptions{display:none}.fade{display:none;font-size:1.2em}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #d82020;background:#f5cece url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#d82020}.ui-state-hover a,.ui-state-hover a:hover{color:#d82020;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #d82020;background:#f5cece url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#d82020}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#d82020;text-decoration:none}.ui-widget :active{outline:none}.ui-tabs .ui-tabs-panel{padding-top:0}.addportlet{padding:5px;width:50px;margin:5px;border-radius:5px;border:2px solid red;cursor:pointer;display:inline-block}.channel_stats_location{clear:right;float:right;width:475px;padding-top:23px}.channel_stats_text{font-weight:bold;font-size:1.2em}.channel_time_text{color:black;font-size:1em}.recent_status{font-family:sans-serif;margin:4px}.timeago{font-size:0.8em;color:#ccc;margin-left:10px}.com{color:#93a1a1}.lit{color:#195f91}.pun,.opn,.clo{color:#93a1a1}.fun{color:#dc322f}.str,.atv{color:#D14}.kwd,.prettyprint .tag{color:#1e347b}.typ,.atn,.dec,.var{color:teal}.pln{color:#48484c}.prettyprint{padding:8px;background-color:#f7f7f9;border:1px solid #e1e1e8}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;-moz-box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0}ol.linenums{margin:0 0 0 33px}ol.linenums li{padding-left:12px;color:#bebec5;line-height:20px;text-shadow:0 1px 0 #fff}.affix-top,.affix{position:static}#bootstrap-sidebar{background-color:#eee;border:1px solid #bbb;border-radius:5px;padding:2px 0}#bootstrap-sidebar li a:hover{background-color:#fafafa}#bootstrap-sidebar li.active{border:0 #666 solid;border-right-width:4px}@media (min-width: 979px){#bootstrap-sidebar.affix-top,#bootstrap-sidebar.affix{position:fixed;top:30px;width:228px}} diff --git a/public/assets/application-29a45c9a6c794a4499e57fc0bb19c87f.css.gz b/public/assets/application-29a45c9a6c794a4499e57fc0bb19c87f.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..4c2333b2327c97cbcb1255e5df81c9f88936641a GIT binary patch literal 10735 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 literal 0 HcmV?d00001 diff --git a/public/assets/application-6b141b11b3826cf03d9c3fa5cc7fd6dd.css b/public/assets/application-6b141b11b3826cf03d9c3fa5cc7fd6dd.css new file mode 100644 index 0000000..70fefdf --- /dev/null +++ b/public/assets/application-6b141b11b3826cf03d9c3fa5cc7fd6dd.css @@ -0,0 +1,103 @@ +/*! + * Bootstrap v3.1.0 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.table td,.table th{background-color:#fff !important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}.list-inline>li:first-child{padding-left:0}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media (min-width: 992px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666666666666%}.col-xs-10{width:83.33333333333334%}.col-xs-9{width:75%}.col-xs-8{width:66.66666666666666%}.col-xs-7{width:58.333333333333336%}.col-xs-6{width:50%}.col-xs-5{width:41.66666666666667%}.col-xs-4{width:33.33333333333333%}.col-xs-3{width:25%}.col-xs-2{width:16.666666666666664%}.col-xs-1{width:8.333333333333332%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666666666666%}.col-xs-pull-10{right:83.33333333333334%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666666666666%}.col-xs-pull-7{right:58.333333333333336%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666666666667%}.col-xs-pull-4{right:33.33333333333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.666666666666664%}.col-xs-pull-1{right:8.333333333333332%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666666666666%}.col-xs-push-10{left:83.33333333333334%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666666666666%}.col-xs-push-7{left:58.333333333333336%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666666666667%}.col-xs-push-4{left:33.33333333333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.666666666666664%}.col-xs-push-1{left:8.333333333333332%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666666666666%}.col-xs-offset-10{margin-left:83.33333333333334%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666666666666%}.col-xs-offset-7{margin-left:58.333333333333336%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666666666667%}.col-xs-offset-4{margin-left:33.33333333333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.666666666666664%}.col-xs-offset-1{margin-left:8.333333333333332%}.col-xs-offset-0{margin-left:0}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type="date"]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width: 768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url("../fonts/glyphicons-halflings-regular.eot");src:url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/glyphicons-halflings-regular.woff") format("woff"),url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"),url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width: 992px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:none}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width: 992px){.navbar{border-radius:4px}}@media (min-width: 992px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width: 992px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 992px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 992px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 992px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width: 992px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:none}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 992px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 991px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 992px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width: 992px){.navbar-left{float:left !important}.navbar-right{float:right !important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 991px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width: 992px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 992px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 991px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width: 991px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.428571429;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group .list-group-item:first-child{border-top:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel>.list-group:first-child .list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tfoot>tr:first-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tfoot>tr:first-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:first-child>td{border-top:0}.panel>.table-bordered>thead>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:last-child>th,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:last-child>td,.panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.428571429px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top .arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right .arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom .arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left .arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.5) 0), color-stop(rgba(0,0,0,0.0001) 100%));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.0001) 0), color-stop(rgba(0,0,0,0.5) 100%));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:none;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width: 768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,tr.visible-xs,th.visible-xs,td.visible-xs{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}.visible-sm,tr.visible-sm,th.visible-sm,td.visible-sm{display:none !important}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}.visible-md,tr.visible-md,th.visible-md,td.visible-md{display:none !important}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}.visible-lg,tr.visible-lg,th.visible-lg,td.visible-lg{display:none !important}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (max-width: 767px){.hidden-xs,tr.hidden-xs,th.hidden-xs,td.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm,tr.hidden-sm,th.hidden-sm,td.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md,tr.hidden-md,th.hidden-md,td.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg,tr.hidden-lg,th.hidden-lg,td.hidden-lg{display:none !important}}.visible-print,tr.visible-print,th.visible-print,td.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}@media print{.hidden-print,tr.hidden-print,th.hidden-print,td.hidden-print{display:none !important}}.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top, #fff 0, #e0e0e0 100%);background-image:linear-gradient(to bottom, #fff 0, #e0e0e0 100%);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe0e0e0',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top, #428bca 0, #2d6ca2 100%);background-image:linear-gradient(to bottom, #428bca 0, #2d6ca2 100%);background-repeat:repeat-x;border-color:#2b669a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff2d6ca2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #419641 100%);background-image:linear-gradient(to bottom, #5cb85c 0, #419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff419641',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0, #eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffeb9316',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c12e2a 100%);background-image:linear-gradient(to bottom, #d9534f 0, #c12e2a 100%);background-repeat:repeat-x;border-color:#b92c28;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc12e2a',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #2aabd2 100%);background-image:linear-gradient(to bottom, #5bc0de 0, #2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2aabd2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar-default{background-image:-webkit-linear-gradient(top, #fff 0, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0, #f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f3f3f3 100%);background-image:linear-gradient(to bottom, #ebebeb 0, #f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff3f3f3',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top, #3c3c3c 0, #222 100%);background-image:linear-gradient(to bottom, #3c3c3c 0, #222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #222 0, #282828 100%);background-image:linear-gradient(to bottom, #222 0, #282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff282828',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top, #dff0d8 0, #c8e5bc 100%);background-image:linear-gradient(to bottom, #dff0d8 0, #c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-linear-gradient(top, #d9edf7 0, #b9def0 100%);background-image:linear-gradient(to bottom, #d9edf7 0, #b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #f8efc0 100%);background-image:linear-gradient(to bottom, #fcf8e3 0, #f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-linear-gradient(top, #f2dede 0, #e7c3c3 100%);background-image:linear-gradient(to bottom, #f2dede 0, #e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f5f5f5 100%);background-image:linear-gradient(to bottom, #ebebeb 0, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top, #428bca 0, #3071a9 100%);background-image:linear-gradient(to bottom, #428bca 0, #3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #449d44 100%);background-image:linear-gradient(to bottom, #5cb85c 0, #449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #31b0d5 100%);background-image:linear-gradient(to bottom, #5bc0de 0, #31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #ec971f 100%);background-image:linear-gradient(to bottom, #f0ad4e 0, #ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c9302c 100%);background-image:linear-gradient(to bottom, #d9534f 0, #c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top, #428bca 0, #3278b3 100%);background-image:linear-gradient(to bottom, #428bca 0, #3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top, #dff0d8 0, #d0e9c6 100%);background-image:linear-gradient(to bottom, #dff0d8 0, #d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top, #d9edf7 0, #c4e3f3 100%);background-image:linear-gradient(to bottom, #d9edf7 0, #c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #faf2cc 100%);background-image:linear-gradient(to bottom, #fcf8e3 0, #faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top, #f2dede 0, #ebcccc 100%);background-image:linear-gradient(to bottom, #f2dede 0, #ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-linear-gradient(top, #e8e8e8 0, #f5f5f5 100%);background-image:linear-gradient(to bottom, #e8e8e8 0, #f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}code{word-wrap:break-word;white-space:normal}/*! + * jQuery UI CSS Framework 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute !important;clip:rect(1px 1px 1px 1px);clip:rect(1px, 1px, 1px, 1px)}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}/*! + * jQuery UI CSS Framework 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller&ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px + */.ui-widget{font-family:Trebuchet MS, Tahoma, Verdana, Arial, sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS, Tahoma, Verdana, Arial, sans-serif;font-size:1em}.ui-widget-content{border:1px solid #dddddd;background:#eee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x;color:#333333}.ui-widget-content a{color:#333333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x;color:#ffffff;font-weight:bold}.ui-widget-header a{color:#ffffff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #cccccc;background:#f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-widget :active{outline:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat;color:#ffffff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#ffffff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#ffffff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_228ef1_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_ffd27a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-off{background-position:-96px -144px}.ui-icon-radio-on{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;opacity:.50;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;opacity:.20;filter:Alpha(Opacity=20);-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px;border-radius:5px} /*! +* jQuery UI Resizable 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Resizable#theming +*/.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px} /*! +* jQuery UI Selectable 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Selectable#theming +*/.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}/*! + * jQuery UI Accordion 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */.ui-accordion{width:100%}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1}.ui-accordion .ui-accordion-li-fix{display:inline}.ui-accordion .ui-accordion-header-active{border-bottom:0 !important}.ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em .7em}.ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.ui-accordion .ui-accordion-content-active{display:block}/*! + * jQuery UI Autocomplete 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */.ui-autocomplete{position:absolute;cursor:default}* html .ui-autocomplete{width:1px}.ui-menu{list-style:none;padding:2px;margin:0;display:block;float:left}.ui-menu .ui-menu{margin-top:-3px}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;float:left;clear:left;width:100%}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:.2em .4em;line-height:1.5;zoom:1}.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}/*! + * jQuery UI Button 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none !important;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0}/*! + * jQuery UI Dialog 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}/*! + * jQuery UI Slider 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0} /*! +* jQuery UI Tabs 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Tabs#theming +*/.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:1px;margin:0 .2em 1px 0;border-bottom:0 !important;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-selected{margin-bottom:0;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-selected a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-state-processing a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tabs .ui-tabs-hide{display:none !important}/*! + * jQuery UI Datepicker 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}/*! +* jQuery UI Progressbar 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Progressbar#theming +*/.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.navbar-collapse{max-height:350px}.breadcrumb{margin-top:10px;margin-bottom:20px}.table td{word-break:break-word}body{padding-top:70px}.break-word{word-break:break-word}.col-pad{padding:0 15px}.form-horizontal .multiline-label{margin-top:-10px}.nested-fields{border:1px solid #d6d6d6;padding:10px 10px 0 10px;max-width:275px}.customcode,.customcode .str,.customcode .lit,.customcode .pln{color:#00ab9b}.response-div{margin-top:12px;font-size:0.8em}.response{background-color:#ddd;margin:0 1px;border:1px solid #555;padding:2px;font-weight:bold;color:#555;cursor:pointer}.response:hover{background-color:#eeb}.response.active{background-color:#beb;cursor:initial}.format-json,.format-xml{display:none}.format-block{min-height:200px}.format-block-lg{min-height:350px}html,body{height:100%}#wrap{min-height:100%;height:auto;margin:0 auto -30px;padding:0 0 60px}#footer{padding-top:5px;border-top:1px solid #ddd;height:30px;background-color:#f5f5f5}.infobox{vertical-align:bottom}.spanlink{cursor:pointer}.boldlink{font-weight:bold}#logo{float:left;margin:0 0 0 0}#logo a{color:#d62020}#logo a span,.paygray{color:#666666}#logo a:hover,.apps a:hover,.apps:hover div{text-decoration:none}.commentarea{width:300px;height:80px}#logo.small{font-size:30px;color:#666666}#options{float:right;text-align:right}#login{padding:6px;border:1px solid #bbbbbb;border-collapse:separate;border-spacing:3px;background-color:#eeeeee;background:-webkit-gradient(linear, left top, right top, from(#ddd), to(#f5f5f5));background:-moz-linear-gradient(left, #ddd, #f5f5f5);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#f5f5f5', GradientType=1)}#menu{height:40px;margin:0 auto;border:1px solid #dddddd;background-color:#d6d6d6;background:-webkit-gradient(linear, left top, left bottom, from(#eee), to(#bbb));background:-moz-linear-gradient(top, #eee, #bbb);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#bbbbbb')}#menu div{float:left;height:40px}#menu div a{color:#777777;padding:10px 30px;display:block;font-weight:bold}#menu div:hover{background-color:#cccccc}#menu div:hover a{color:#000000;text-decoration:none}#menu .selected,#menu .selected:hover{background-color:#e5e5e5}#menu .selected a{color:#000000}#channel_info{padding-bottom:20px}.signed_in_channel_header{display:inline-block}.public_private_icon{display:inline-block}.signed_in_channel_header{width:300px;height:10px}#list_progress_bar{width:300px;height:10px}.public_channel_box{margin:5px;border-radius:7px;height:300px;border:solid 1px red;display:inline-block;width:30%;vertical-align:top}.public_channel_inner{margin-left:10px;margin-right:5px}.public_channel_name{height:11px;font-size:1.3em;font-weight:bold;color:#2565A5}.public_channel_user{height:15px;margin-left:7px;font-size:0.9em}.progressbar{height:10px}.public_channel_desc{height:140px;word-break:break-all}.public_channel_url{height:10px}.public_channel_tags{height:57px;margin-bottom:10px;overflow:hidden}.public_channel_thumbnail{position:absolute;border:2px solid red;display:none}h1.channel_info{margin:0;padding-top:10px}div.list_tags{padding-top:20px}.channelLinks{padding:0 0 0 0;margin-bottom:15px}.channelLinks li{padding:7px;border:1px solid #ccc;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;display:inline;margin:0 0 0 0;list-style:none}#comments{width:100%}#commentsmain{float:left;width:190px;background-color:#fffff9;border:1px dashed #d0d0d0;padding:5px;margin-right:16px;overflow:hidden;display:none}.commentlink{float:left;width:100%}#public_statuses{width:455px;height:380px;overflow:auto;font-size:1.5em}#public_statuses div{margin-left:15px}.statusIFrame{border:1px solid #ccc;background-color:#ffffff}.userlogin{display:none}.login_info{font-weight:bold;text-align:right;font-size:12px}.round{-moz-border-radius:7px;-webkit-border-radius:7px}.text_center{text-align:center}.big{font-size:18px}.large{font-size:20px}.xlarge{font-size:30px}.small{font-size:12px}.action{margin-right:20px;position:relative;top:35px;font-weight:bold;padding:10px}.action_reverse{margin-right:20px;position:relative;top:35px;font-weight:bold;background-color:#d62020;padding:8px;color:#000000}.action_reverse a{color:#FFFFFF}.section_header_reverse{margin:15px 0 5px 0;display:inline-block;font-weight:bold;color:#FFFFFF;background-color:#d62020;padding:8px}.nicetable{font-size:14px;border:1px solid #bbbbbb}.nicetable-borderless{font-size:14px;border:none}.nicetable-borderless p{margin-left:20px;margin-top:5px;margin-bottom:10px}.nicetable-borderless h3{margin-bottom:0}.nicetable-borderless h3.signed_in_channel_header{margin-bottom:10px}.nicetable .header{font-weight:bold;background-color:#e5e5e5}.nicetable .header td{padding-top:3px}.nicetable td{padding:2px 10px;border-bottom:1px solid #bbbbbb;word-wrap:word}.nicetable .stripe{background-color:#f9f9f9}.nicetable .disabled{background-color:#eee}.nicetable .disabled a{color:#888}.fulltable{width:95%}.fullform{width:100%;margin-bottom:1.5em}.deletecol{width:1em}.table_no_header{font-size:14px}.table_no_header td{padding:2px 10px}.table_no_header .left{font-weight:bold}.max_width_400{max-width:40;word-wrap:break-word}.helplink{float:right;margin-top:3px}.votediv,.votedivphoto,.votedivlink{color:#3478e3}.votedivlink{padding-right:20px}.votediv{float:right;display:none}.voteicon{padding:2px;background:#f8f8f8;border:1px solid #ddd;cursor:pointer}.voteicon:hover{text-decoration:none}.voteicon img{position:relative;top:3px}.nestedcomment{padding-left:30px}.commenttable{padding:0;margin:0;width:100%}.commenttable td{padding:4px 10px 4px 5px}.commentchannel{color:#f08600;font-weight:bold}.commentbody{color:#333333}.commentdiv{width:100%;padding:5px 0 5px 0;font-size:12px;border-top:1px solid #aaa}.gravatar{border:1px solid #999}.noavatar{width:50px;height:50px;border:1px solid #ddd;color:#ddd;text-align:center}.noavatartext{padding-top:5px}.prettydate{color:#aaa}.username a{color:#3478E3;font-weight:bold}.timeago{font-size:0.8em;color:#ccc}.pagination{font-size:14px}.centerme{display:table;margin:0 auto}.fixedwidth{width:960px;display:table;margin:0 auto}.code{margin:10px 0;background-color:#fafafa;white-space:pre-wrap;font:12px Monaco, Lucida Console, monospace;color:#000000;border:1px solid #bbbbbb;padding:10px}.apps{padding:0 30px 40px 0;font-size:20px;float:left;text-align:center;margin:0 auto;width:150px}input[type="text"].shortfield{width:30px}input[type="text"].midfield{width:120px}textarea.tweet{margin-top:0.5em;width:40em;height:3em}.errorExplanation{width:95%;background-color:#ffffe0;display:table;margin-bottom:20px;padding:10px;border:1px solid #aaaaaa}#error{color:red}.field_with_errors{display:inline}.warning_box{margin:15px 0 15px 0;padding:10px;background-color:#fc3;color:#000;border:1px solid #f90}#maincontent{float:left;width:980px;padding-bottom:20px;margin-left:10px;overflow:false}#maincontent.thin{width:400px}#maincontent.medium{width:500px}#maincontent .thinghttptable{table-layout:fixed;width:400px;word-wrap:break-word}#maincontent .thinghttptable .url{width:100px}#maincontent .thinghttptable .apikey{width:80px}input#upload_csv{padding-top:5px;margin:20px 0}#sidebar.wide{width:520px}#sidebar.medium{width:470px}#sidebar.narrow{width:470px;margin-left:520px}#sidebar .helplink{float:right;margin-top:5px;font-weight:normal;font-size:12px}.FL{float:left}.FR{float:right}.FN{float:none}.DT{display:table}.CL{clear:left}.CR{clear:right}.CB{clear:both}.UL{text-decoration:underline}.TAR{text-align:right}.TAC{text-align:center}.VAT{vertical-align:top}.PB10{padding-bottom:10px}.PR20{padding-right:20px}.PL20{padding-left:20px}.PL30{padding-left:30px}.MT10{margin-top:5px}.MR20{margin-right:20px}.MR60{margin-right:60px;margin-bottom:20px}.ML20{margin-left:20px}.ML60{margin-left:60px}.W50{width:50%}.W100{width:100%}.left20{position:relative;left:-20px}.up2{position:relative;top:-2px}.up20{position:relative;top:-20px}input.video_narrow{width:100px}#feature_signup a{border-bottom:3px solid #d62020;text-decoration:none;font-weight:bold}#feature_signup a:hover{text-decoration:none}#nav{list-style:none;padding:0 10px 0 92px;margin:0}#nav li{float:left;margin:0px 0px 0px 10px;padding:0px 15px 0px 0px;position:relative;font-size:14px;line-height:1.4;zoom:1}#nav li:last-child{padding:0}#nav .current-cat a,#nav .current_page_item a{color:#d62020;border-bottom:5px solid #2565A5}#nav .current-cat li a,#nav .current_page_item li a{color:#000}#nav .current-cat li a:hover,#nav .current_page_item li a:hover{color:#d62020;border-bottom:5px solid #2565A5}#nav li a{text-transform:uppercase;font-weight:bold;text-decoration:none;color:#000;border:none;text-decoration:none;float:left;border-bottom:5px solid #FFFFFF}#nav li a:hover{color:#d62020;border-bottom:5px solid #aaa}#nav li span{width:12px;height:20px;background:url("arrow-down.gif") no-repeat left 7px;margin:0;padding:0;position:absolute;right:0;top:0}#nav ul{display:none}#nav li span.child{width:12px;height:20px;background:url("arrow-right.gif") no-repeat left 10px;margin:0;padding:0;position:absolute;right:0;top:0}#nav li a.rss{background:url(rss_feed.png) right 0px no-repeat;padding:0px 30px 0px 0}#nav li a.rss:hover{background:url(rss_feed.png) right -24px no-repeat;padding:0px 30px 0px 0;border-bottom:0 solid #aaa}.ui-widget{font-size:.8em}.ui-widget-header{border:1px solid #0867A3;background:#0867a3 none top right no-repeat}.ui-progressbar{height:5px}.ui-progressbar-value{background-color:green}.ui-widget-content a{color:blue;text-decoration:underline;margin:0}.ui-widget-content p{margin:0 0 10px 10px}.column{width:470px;float:left;padding-bottom:50px;padding-left:5px}.portlet{margin:0 1em 1em 0}.portlet-header{margin:0.3em;padding:7px 7px 7px 7px}.portlet-header .ui-icon{float:right;margin-top:-2px;cursor:pointer;cursor:hand}.portlet-content{padding:0.4em}.ui-sortable-placeholder{border:1px dotted black;visibility:visible !important;height:50px !important}.ui-sortable-placeholder *{visibility:hidden}.buttonlets{float:left;overflow:hidden;max-width:95px}.tweetButton{width:80px}.facebookButton{width:85px}.googleplusButton{width:70px}.padded{margin-top:2px}.ui-button{height:19px;line-height:1em}.ui-button-text-only .ui-button-text{padding:0.2em 1em 0.2em 0.4em;font-size:12px}.ui-state-active{border:1px solid #2565a5;background:#ddd none 50% 50% repeat-x;color:#2565a5}.ui-state-default{border:1px solid #ccc;color:#2565a5}.ui-state-hover{background:#ccc none 50% 50% repeat-x}.topLink{font-size:16px}.developerlink{padding:7px;margin-left:10px;border-bottom-left-radius:15px;border-bottom-right-radius:15px;-webkit-border-bottom-left-radius:15px;-webkit-border-bottom-right-radius:15px;-moz-border-bottom-left-radius:15px;-moz-border-bottom-right-radius:15px;background-color:#aaa}.addpluginlink{color:white;padding:7px;margin-left:10px;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;background-color:#aaa;cursor:pointer}.addpluginlink:hover{background-color:#ccc}.pluginrectangle{display:none;background-color:#aaa;border-radius:5px;position:absolute;height:70%;width:100%;top:30px;right:0}.developerlink:hover{background-color:#ccc}.developerlink a{color:white;text-decoration:none}.channelInfo{max-width:500px}.channelDescription{width:450px;height:60px}.socialButtons{float:right;display:inline}.dev-info-dialog{border:2px solid #bbb}.dev-info-dialog .ui-dialog-titlebar{background-color:#aaa;color:white}.dev-info-dialog a{text-decoration:underline}.ui-tabs{height:100%}.dev-info-dialog ul{list-style-type:none;background-color:whitesmoke}#devInfo{font-size:1.2em}.dev-info-dialog ul li{display:inline;list-style-type:none}.dev_info_table1{margin-bottom:10px}.dev_info_table2{margin-left:10px}.dev_info_table2 td{max-width:300px}.watchButtonLabel{white-space:nowrap;padding-right:10px}.watchButtonImage{float:left;background-position:left;background-image:url("eye.png");background-repeat:no-repeat;width:19px;height:16px}.watchButtonPadding{padding-right:5px}.chartOptions{display:none}.fade{display:none;font-size:1.2em}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #d82020;background:#f5cece url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#d82020}.ui-state-hover a,.ui-state-hover a:hover{color:#d82020;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #d82020;background:#f5cece url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#d82020}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#d82020;text-decoration:none}.ui-widget :active{outline:none}.ui-tabs .ui-tabs-panel{padding-top:0}.addportlet{padding:5px;width:50px;margin:5px;border-radius:5px;border:2px solid red;cursor:pointer;display:inline-block}.channel_stats_location{clear:right;float:right;width:475px;padding-top:23px}.channel_stats_text{font-weight:bold;font-size:1.2em}.channel_time_text{color:black;font-size:1em}.recent_status{font-family:sans-serif;margin:4px}.timeago{font-size:0.8em;color:#ccc;margin-left:10px}.com{color:#93a1a1}.lit{color:#195f91}.pun,.opn,.clo{color:#93a1a1}.fun{color:#dc322f}.str,.atv{color:#D14}.kwd,.prettyprint .tag{color:#1e347b}.typ,.atn,.dec,.var{color:teal}.pln{color:#48484c}.prettyprint{padding:8px;background-color:#f7f7f9;border:1px solid #e1e1e8}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;-moz-box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0}ol.linenums{margin:0 0 0 33px}ol.linenums li{padding-left:12px;color:#bebec5;line-height:20px;text-shadow:0 1px 0 #fff}.affix-top,.affix{position:static}#bootstrap-sidebar{background-color:#eee;border:1px solid #bbb;border-radius:5px;padding:2px 0}#bootstrap-sidebar li a:hover{background-color:#fafafa}#bootstrap-sidebar li.active{border:0 #666 solid;border-right-width:4px}@media (min-width: 979px){#bootstrap-sidebar.affix-top,#bootstrap-sidebar.affix{position:fixed;top:30px;width:228px}} diff --git a/public/assets/application-6b141b11b3826cf03d9c3fa5cc7fd6dd.css.gz b/public/assets/application-6b141b11b3826cf03d9c3fa5cc7fd6dd.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..dc6ffed19076761a9736da842b316a4ca2525c69 GIT binary patch literal 27351 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 literal 0 HcmV?d00001 diff --git a/public/assets/application-7190531a22e0dae7db2fbb715e0d2fe5.css b/public/assets/application-7190531a22e0dae7db2fbb715e0d2fe5.css new file mode 100644 index 0000000..b01de20 --- /dev/null +++ b/public/assets/application-7190531a22e0dae7db2fbb715e0d2fe5.css @@ -0,0 +1,99 @@ +.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top, #fff 0, #e0e0e0 100%);background-image:linear-gradient(to bottom, #fff 0, #e0e0e0 100%);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe0e0e0',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top, #428bca 0, #2d6ca2 100%);background-image:linear-gradient(to bottom, #428bca 0, #2d6ca2 100%);background-repeat:repeat-x;border-color:#2b669a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff2d6ca2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #419641 100%);background-image:linear-gradient(to bottom, #5cb85c 0, #419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff419641',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0, #eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffeb9316',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c12e2a 100%);background-image:linear-gradient(to bottom, #d9534f 0, #c12e2a 100%);background-repeat:repeat-x;border-color:#b92c28;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc12e2a',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #2aabd2 100%);background-image:linear-gradient(to bottom, #5bc0de 0, #2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2aabd2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar-default{background-image:-webkit-linear-gradient(top, #fff 0, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0, #f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f3f3f3 100%);background-image:linear-gradient(to bottom, #ebebeb 0, #f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff3f3f3',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top, #3c3c3c 0, #222 100%);background-image:linear-gradient(to bottom, #3c3c3c 0, #222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #222 0, #282828 100%);background-image:linear-gradient(to bottom, #222 0, #282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff282828',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top, #dff0d8 0, #c8e5bc 100%);background-image:linear-gradient(to bottom, #dff0d8 0, #c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-linear-gradient(top, #d9edf7 0, #b9def0 100%);background-image:linear-gradient(to bottom, #d9edf7 0, #b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #f8efc0 100%);background-image:linear-gradient(to bottom, #fcf8e3 0, #f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-linear-gradient(top, #f2dede 0, #e7c3c3 100%);background-image:linear-gradient(to bottom, #f2dede 0, #e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f5f5f5 100%);background-image:linear-gradient(to bottom, #ebebeb 0, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top, #428bca 0, #3071a9 100%);background-image:linear-gradient(to bottom, #428bca 0, #3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #449d44 100%);background-image:linear-gradient(to bottom, #5cb85c 0, #449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #31b0d5 100%);background-image:linear-gradient(to bottom, #5bc0de 0, #31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #ec971f 100%);background-image:linear-gradient(to bottom, #f0ad4e 0, #ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c9302c 100%);background-image:linear-gradient(to bottom, #d9534f 0, #c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top, #428bca 0, #3278b3 100%);background-image:linear-gradient(to bottom, #428bca 0, #3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top, #dff0d8 0, #d0e9c6 100%);background-image:linear-gradient(to bottom, #dff0d8 0, #d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top, #d9edf7 0, #c4e3f3 100%);background-image:linear-gradient(to bottom, #d9edf7 0, #c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #faf2cc 100%);background-image:linear-gradient(to bottom, #fcf8e3 0, #faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top, #f2dede 0, #ebcccc 100%);background-image:linear-gradient(to bottom, #f2dede 0, #ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-linear-gradient(top, #e8e8e8 0, #f5f5f5 100%);background-image:linear-gradient(to bottom, #e8e8e8 0, #f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}code{word-wrap:break-word;white-space:normal}/*! + * jQuery UI CSS Framework 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute !important;clip:rect(1px 1px 1px 1px);clip:rect(1px, 1px, 1px, 1px)}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}/*! + * jQuery UI CSS Framework 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller&ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px + */.ui-widget{font-family:Trebuchet MS, Tahoma, Verdana, Arial, sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS, Tahoma, Verdana, Arial, sans-serif;font-size:1em}.ui-widget-content{border:1px solid #dddddd;background:#eee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x;color:#333333}.ui-widget-content a{color:#333333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x;color:#ffffff;font-weight:bold}.ui-widget-header a{color:#ffffff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #cccccc;background:#f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-widget :active{outline:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat;color:#ffffff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#ffffff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#ffffff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_228ef1_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_ffd27a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-off{background-position:-96px -144px}.ui-icon-radio-on{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;opacity:.50;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;opacity:.20;filter:Alpha(Opacity=20);-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px;border-radius:5px} /*! +* jQuery UI Resizable 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Resizable#theming +*/.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px} /*! +* jQuery UI Selectable 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Selectable#theming +*/.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}/*! + * jQuery UI Accordion 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */.ui-accordion{width:100%}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1}.ui-accordion .ui-accordion-li-fix{display:inline}.ui-accordion .ui-accordion-header-active{border-bottom:0 !important}.ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em .7em}.ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.ui-accordion .ui-accordion-content-active{display:block}/*! + * jQuery UI Autocomplete 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */.ui-autocomplete{position:absolute;cursor:default}* html .ui-autocomplete{width:1px}.ui-menu{list-style:none;padding:2px;margin:0;display:block;float:left}.ui-menu .ui-menu{margin-top:-3px}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;float:left;clear:left;width:100%}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:.2em .4em;line-height:1.5;zoom:1}.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}/*! + * jQuery UI Button 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none !important;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0}/*! + * jQuery UI Dialog 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}/*! + * jQuery UI Slider 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0} /*! +* jQuery UI Tabs 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Tabs#theming +*/.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:1px;margin:0 .2em 1px 0;border-bottom:0 !important;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-selected{margin-bottom:0;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-selected a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-state-processing a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tabs .ui-tabs-hide{display:none !important}/*! + * jQuery UI Datepicker 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}/*! +* jQuery UI Progressbar 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Progressbar#theming +*/.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.navbar-collapse{max-height:350px}.breadcrumb{margin-top:10px;margin-bottom:20px}.table td{word-break:break-word}.break-word{word-break:break-word}.form-horizontal .multiline-label{margin-top:-10px}.nested-fields{border:1px solid #d6d6d6;padding:10px 10px 0 10px;max-width:275px}.customcode,.customcode .str,.customcode .lit,.customcode .pln{color:#00ab9b}.response-div{margin-top:12px;font-size:0.8em}.response{background-color:#ddd;margin:0 1px;border:1px solid #555;padding:2px;font-weight:bold;color:#555;cursor:pointer}.response:hover{background-color:#eeb}.response.active{background-color:#beb;cursor:initial}.format-json,.format-xml{display:none}.format-block{min-height:200px}.format-block-lg{min-height:350px}html,body{height:100%}#wrap{min-height:100%;height:auto;margin:0 auto -30px;padding:0 0 60px}#footer{padding-top:5px;border-top:1px solid #ddd;height:30px;background-color:#f5f5f5}.infobox{vertical-align:bottom}.spanlink{cursor:pointer}.boldlink{font-weight:bold}#logo{float:left;margin:0 0 0 0}#logo a{color:#d62020}#logo a span,.paygray{color:#666666}#logo a:hover,.apps a:hover,.apps:hover div{text-decoration:none}.commentarea{width:300px;height:80px}#logo.small{font-size:30px;color:#666666}#options{float:right;text-align:right}#login{padding:6px;border:1px solid #bbbbbb;border-collapse:separate;border-spacing:3px;background-color:#eeeeee;background:-webkit-gradient(linear, left top, right top, from(#ddd), to(#f5f5f5));background:-moz-linear-gradient(left, #ddd, #f5f5f5);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#f5f5f5', GradientType=1)}#menu{height:40px;margin:0 auto;border:1px solid #dddddd;background-color:#d6d6d6;background:-webkit-gradient(linear, left top, left bottom, from(#eee), to(#bbb));background:-moz-linear-gradient(top, #eee, #bbb);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#bbbbbb')}#menu div{float:left;height:40px}#menu div a{color:#777777;padding:10px 30px;display:block;font-weight:bold}#menu div:hover{background-color:#cccccc}#menu div:hover a{color:#000000;text-decoration:none}#menu .selected,#menu .selected:hover{background-color:#e5e5e5}#menu .selected a{color:#000000}#channel_info{padding-bottom:20px}.signed_in_channel_header{display:inline-block}.public_private_icon{display:inline-block}.signed_in_channel_header{width:300px;height:10px}#list_progress_bar{width:300px;height:10px}.public_channel_box{margin:5px;border-radius:7px;height:300px;border:solid 1px red;display:inline-block;width:30%;vertical-align:top}.public_channel_inner{margin-left:10px;margin-right:5px}.public_channel_name{height:11px;font-size:1.3em;font-weight:bold;color:#2565A5}.public_channel_user{height:15px;margin-left:7px;font-size:0.9em}.progressbar{height:10px}.public_channel_desc{height:140px;word-break:break-all}.public_channel_url{height:10px}.public_channel_tags{height:57px;margin-bottom:10px;overflow:hidden}.public_channel_thumbnail{position:absolute;border:2px solid red;display:none}h1.channel_info{margin:0;padding-top:10px}div.list_tags{padding-top:20px}.channelLinks{padding:0 0 0 0;margin-bottom:15px}.channelLinks li{padding:7px;border:1px solid #ccc;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;display:inline;margin:0 0 0 0;list-style:none}#comments{width:100%}#commentsmain{float:left;width:190px;background-color:#fffff9;border:1px dashed #d0d0d0;padding:5px;margin-right:16px;overflow:hidden;display:none}.commentlink{float:left;width:100%}#public_statuses{width:455px;height:380px;overflow:auto;font-size:1.5em}#public_statuses div{margin-left:15px}.statusIFrame{border:1px solid #ccc;background-color:#ffffff}.userlogin{display:none}.login_info{font-weight:bold;text-align:right;font-size:12px}.round{-moz-border-radius:7px;-webkit-border-radius:7px}.text_center{text-align:center}.big{font-size:18px}.large{font-size:20px}.xlarge{font-size:30px}.small{font-size:12px}.action{margin-right:20px;position:relative;top:35px;font-weight:bold;padding:10px}.action_reverse{margin-right:20px;position:relative;top:35px;font-weight:bold;background-color:#d62020;padding:8px;color:#000000}.action_reverse a{color:#FFFFFF}.section_header_reverse{margin:15px 0 5px 0;display:inline-block;font-weight:bold;color:#FFFFFF;background-color:#d62020;padding:8px}.nicetable{font-size:14px;border:1px solid #bbbbbb}.nicetable-borderless{font-size:14px;border:none}.nicetable-borderless p{margin-left:20px;margin-top:5px;margin-bottom:10px}.nicetable-borderless h3{margin-bottom:0}.nicetable-borderless h3.signed_in_channel_header{margin-bottom:10px}.nicetable .header{font-weight:bold;background-color:#e5e5e5}.nicetable .header td{padding-top:3px}.nicetable td{padding:2px 10px;border-bottom:1px solid #bbbbbb;word-wrap:word}.nicetable .stripe{background-color:#f9f9f9}.nicetable .disabled{background-color:#eee}.nicetable .disabled a{color:#888}.fulltable{width:95%}.fullform{width:100%;margin-bottom:1.5em}.deletecol{width:1em}.table_no_header{font-size:14px}.table_no_header td{padding:2px 10px}.table_no_header .left{font-weight:bold}.max_width_400{max-width:40;word-wrap:break-word}.helplink{float:right;margin-top:3px}.votediv,.votedivphoto,.votedivlink{color:#3478e3}.votedivlink{padding-right:20px}.votediv{float:right;display:none}.voteicon{padding:2px;background:#f8f8f8;border:1px solid #ddd;cursor:pointer}.voteicon:hover{text-decoration:none}.voteicon img{position:relative;top:3px}.nestedcomment{padding-left:30px}.commenttable{padding:0;margin:0;width:100%}.commenttable td{padding:4px 10px 4px 5px}.commentchannel{color:#f08600;font-weight:bold}.commentbody{color:#333333}.commentdiv{width:100%;padding:5px 0 5px 0;font-size:12px;border-top:1px solid #aaa}.gravatar{border:1px solid #999}.noavatar{width:50px;height:50px;border:1px solid #ddd;color:#ddd;text-align:center}.noavatartext{padding-top:5px}.prettydate{color:#aaa}.username a{color:#3478E3;font-weight:bold}.timeago{font-size:0.8em;color:#ccc}.pagination{font-size:14px}.centerme{display:table;margin:0 auto}.fixedwidth{width:960px;display:table;margin:0 auto}.code{margin:10px 0;background-color:#fafafa;white-space:pre-wrap;font:12px Monaco, Lucida Console, monospace;color:#000000;border:1px solid #bbbbbb;padding:10px}.apps{padding:0 30px 40px 0;font-size:20px;float:left;text-align:center;margin:0 auto;width:150px}input[type="text"].shortfield{width:30px}input[type="text"].midfield{width:120px}textarea.tweet{margin-top:0.5em;width:40em;height:3em}.errorExplanation{width:95%;background-color:#ffffe0;display:table;margin-bottom:20px;padding:10px;border:1px solid #aaaaaa}#error{color:red}.field_with_errors{display:inline}.warning_box{margin:15px 0 15px 0;padding:10px;background-color:#fc3;color:#000;border:1px solid #f90}#maincontent{float:left;width:980px;padding-bottom:20px;margin-left:10px;overflow:false}#maincontent.thin{width:400px}#maincontent.medium{width:500px}#maincontent .thinghttptable{table-layout:fixed;width:400px;word-wrap:break-word}#maincontent .thinghttptable .url{width:100px}#maincontent .thinghttptable .apikey{width:80px}input#upload_csv{padding-top:5px;margin:20px 0}#sidebar.wide{width:520px}#sidebar.medium{width:470px}#sidebar.narrow{width:470px;margin-left:520px}#sidebar .helplink{float:right;margin-top:5px;font-weight:normal;font-size:12px}.FL{float:left}.FR{float:right}.FN{float:none}.DT{display:table}.CL{clear:left}.CR{clear:right}.CB{clear:both}.UL{text-decoration:underline}.TAR{text-align:right}.TAC{text-align:center}.VAT{vertical-align:top}.PB10{padding-bottom:10px}.PR20{padding-right:20px}.PL20{padding-left:20px}.PL30{padding-left:30px}.MT10{margin-top:5px}.MR20{margin-right:20px}.MR60{margin-right:60px;margin-bottom:20px}.ML20{margin-left:20px}.ML60{margin-left:60px}.W50{width:50%}.W100{width:100%}.left20{position:relative;left:-20px}.up2{position:relative;top:-2px}.up20{position:relative;top:-20px}input.video_narrow{width:100px}#feature_signup a{border-bottom:3px solid #d62020;text-decoration:none;font-weight:bold}#feature_signup a:hover{text-decoration:none}#nav{list-style:none;padding:0 10px 0 92px;margin:0}#nav li{float:left;margin:0px 0px 0px 10px;padding:0px 15px 0px 0px;position:relative;font-size:14px;line-height:1.4;zoom:1}#nav li:last-child{padding:0}#nav .current-cat a,#nav .current_page_item a{color:#d62020;border-bottom:5px solid #2565A5}#nav .current-cat li a,#nav .current_page_item li a{color:#000}#nav .current-cat li a:hover,#nav .current_page_item li a:hover{color:#d62020;border-bottom:5px solid #2565A5}#nav li a{text-transform:uppercase;font-weight:bold;text-decoration:none;color:#000;border:none;text-decoration:none;float:left;border-bottom:5px solid #FFFFFF}#nav li a:hover{color:#d62020;border-bottom:5px solid #aaa}#nav li span{width:12px;height:20px;background:url("arrow-down.gif") no-repeat left 7px;margin:0;padding:0;position:absolute;right:0;top:0}#nav ul{display:none}#nav li span.child{width:12px;height:20px;background:url("arrow-right.gif") no-repeat left 10px;margin:0;padding:0;position:absolute;right:0;top:0}#nav li a.rss{background:url(rss_feed.png) right 0px no-repeat;padding:0px 30px 0px 0}#nav li a.rss:hover{background:url(rss_feed.png) right -24px no-repeat;padding:0px 30px 0px 0;border-bottom:0 solid #aaa}.ui-widget{font-size:.8em}.ui-widget-header{border:1px solid #0867A3;background:#0867a3 none top right no-repeat}.ui-progressbar{height:5px}.ui-progressbar-value{background-color:green}.ui-widget-content a{color:blue;text-decoration:underline;margin:0}.ui-widget-content p{margin:0 0 10px 10px}.column{width:470px;float:left;padding-bottom:50px;padding-left:5px}.portlet{margin:0 1em 1em 0}.portlet-header{margin:0.3em;padding:7px 7px 7px 7px}.portlet-header .ui-icon{float:right;margin-top:-2px;cursor:pointer;cursor:hand}.portlet-content{padding:0.4em}.ui-sortable-placeholder{border:1px dotted black;visibility:visible !important;height:50px !important}.ui-sortable-placeholder *{visibility:hidden}.buttonlets{float:left;overflow:hidden;max-width:95px}.tweetButton{width:80px}.facebookButton{width:85px}.googleplusButton{width:70px}.padded{margin-top:2px}.ui-button{height:19px;line-height:1em}.ui-button-text-only .ui-button-text{padding:0.2em 1em 0.2em 0.4em;font-size:12px}.ui-state-active{border:1px solid #2565a5;background:#ddd none 50% 50% repeat-x;color:#2565a5}.ui-state-default{border:1px solid #ccc;color:#2565a5}.ui-state-hover{background:#ccc none 50% 50% repeat-x}.topLink{font-size:16px}.developerlink{padding:7px;margin-left:10px;border-bottom-left-radius:15px;border-bottom-right-radius:15px;-webkit-border-bottom-left-radius:15px;-webkit-border-bottom-right-radius:15px;-moz-border-bottom-left-radius:15px;-moz-border-bottom-right-radius:15px;background-color:#aaa}.addpluginlink{color:white;padding:7px;margin-left:10px;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;background-color:#aaa;cursor:pointer}.addpluginlink:hover{background-color:#ccc}.pluginrectangle{display:none;background-color:#aaa;border-radius:5px;position:absolute;height:70%;width:100%;top:30px;right:0}.developerlink:hover{background-color:#ccc}.developerlink a{color:white;text-decoration:none}.channelInfo{max-width:500px}.channelDescription{width:450px;height:60px}.socialButtons{float:right;display:inline}.dev-info-dialog{border:2px solid #bbb}.dev-info-dialog .ui-dialog-titlebar{background-color:#aaa;color:white}.dev-info-dialog a{text-decoration:underline}.ui-tabs{height:100%}.dev-info-dialog ul{list-style-type:none;background-color:whitesmoke}#devInfo{font-size:1.2em}.dev-info-dialog ul li{display:inline;list-style-type:none}.dev_info_table1{margin-bottom:10px}.dev_info_table2{margin-left:10px}.dev_info_table2 td{max-width:300px}.watchButtonLabel{white-space:nowrap;padding-right:10px}.watchButtonImage{float:left;background-position:left;background-image:url("eye.png");background-repeat:no-repeat;width:19px;height:16px}.watchButtonPadding{padding-right:5px}.chartOptions{display:none}.fade{display:none;font-size:1.2em}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #d82020;background:#f5cece url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#d82020}.ui-state-hover a,.ui-state-hover a:hover{color:#d82020;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #d82020;background:#f5cece url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#d82020}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#d82020;text-decoration:none}.ui-widget :active{outline:none}.ui-tabs .ui-tabs-panel{padding-top:0}.addportlet{padding:5px;width:50px;margin:5px;border-radius:5px;border:2px solid red;cursor:pointer;display:inline-block}.channel_stats_location{clear:right;float:right;width:475px;padding-top:23px}.channel_stats_text{font-weight:bold;font-size:1.2em}.channel_time_text{color:black;font-size:1em}.recent_status{font-family:sans-serif;margin:4px}.timeago{font-size:0.8em;color:#ccc;margin-left:10px}.com{color:#93a1a1}.lit{color:#195f91}.pun,.opn,.clo{color:#93a1a1}.fun{color:#dc322f}.str,.atv{color:#D14}.kwd,.prettyprint .tag{color:#1e347b}.typ,.atn,.dec,.var{color:teal}.pln{color:#48484c}.prettyprint{padding:8px;background-color:#f7f7f9;border:1px solid #e1e1e8}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;-moz-box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0}ol.linenums{margin:0 0 0 33px}ol.linenums li{padding-left:12px;color:#bebec5;line-height:20px;text-shadow:0 1px 0 #fff}.affix-top,.affix{position:static}#bootstrap-sidebar{background-color:#eee;border:1px solid #bbb;border-radius:5px;padding:2px 0}#bootstrap-sidebar li a:hover{background-color:#fafafa}#bootstrap-sidebar li.active{border:0 #666 solid;border-right-width:4px}@media (min-width: 979px){#bootstrap-sidebar.affix-top,#bootstrap-sidebar.affix{position:fixed;top:30px;width:228px}} diff --git a/public/assets/application-7190531a22e0dae7db2fbb715e0d2fe5.css.gz b/public/assets/application-7190531a22e0dae7db2fbb715e0d2fe5.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..13af34a13abb9fa0f2e5913647b334233fe354e5 GIT binary patch literal 10581 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 literal 0 HcmV?d00001 diff --git a/public/assets/application-9a8391e7623b717b5e3815c9802c8c19.js b/public/assets/application-9a8391e7623b717b5e3815c9802c8c19.js new file mode 100644 index 0000000..eb0ba87 --- /dev/null +++ b/public/assets/application-9a8391e7623b717b5e3815c9802c8c19.js @@ -0,0 +1,6 @@ +function openDialogCenter(t){t.dialog("open");var e=getDimensions(t.parent());t.dialog({position:[e[0],e[1]]})}function getDimensions(t){var e=new Array(2);return e[0]=$(window).width()/2-t.width()/2,e[1]=$(window).height()/2-t.height()/2,e}function updateChart(t,e,i,n,r,s){var i=i,n=n,o=$("#iframe"+t).attr("default_src");o||(o=$("#iframe"+t).attr("src")),src=o.split("?")[0],"line"!=$("#type_"+t).val()&&0==$("#timescale_"+t).val().length&&0==$("#average_"+t).val().length&&0==$("#median_"+t).val().length&&0==$("#sum_"+t).val().length&&$("#timescale_"+t).val(30);var a=[];$(".chart_options"+t).each(function(){var t=$(this).val(),e=$(this).attr("id"),i=e.split("_")[0];t.length>0&&a.push([i,t])});for(var l="";a.length>0;){var h=a.pop();"width"==h[0]&&(i=parseInt(h[1])),"height"==h[0]&&(n=parseInt(h[1])),("type"!=h[0]||"line"!=h[1])&&(l+="&"+h[0]+"="+encodeURIComponent(h[1]))}l.length>0&&(src+="?"+l.substring(1)),e&&t>0&&s?$.update("/channels/"+r+"/charts/"+t,{newOptions:{options:l}}):e&&t>0&&$.update("/channels/"+r+"/charts/"+t,{options:l}),$("#embed"+t).val(''),$("#iframe"+t).attr("src",src),$("#iframe"+t).attr("width",i),$("#iframe"+t).attr("height",n)}function updateSelectValues(){selectedValue=$(this).val(),$(".mutuallyexclusive"+index).each(function(){$(this).val("")}),$(this).val(selectedValue)}function setupChartForm(t){return function(e,i){i.length>0&&$("#"+i.split("=")[0]+"_"+t).val(decodeURIComponent(i.split("=")[1]))}}function setupColumns(t,e){$(sortColumnSetup(t,e)),$(".column").disableSelection()}function createWindowsWithData(t,e,i,n){for(var r in t){for(var s in t[r])var o=s;if(t[r].chart_window&&(a=t[r].chart_window),t[r].plugin_window&&(a=t[r].plugin_window),t[r].portlet_window&&(a=t[r].portlet_window),"undefined"==a)var a=t[r].portlet_window?t[r].portlet_window:t[r].chart_window;colId=a.col,title=a.title;var l=a.html;if(t[r].chart_window){var h=a.id;$("body").append("

    ")}var c=addWindow(n,colId,a.id,o,title,l);c.each(decoratePortlet(e)),c.find(".ui-toggle").click(uiToggleClick),c.find(".ui-view").click(uiViewClick(i)),c.find(".ui-edit").click(uiEditClick(i)),c.find(".ui-close").click(uiCloseClick(i))}}function addWindow(t,e,i,n,r,s){if($("#"+t+"_dialog"+e).append('
    '+r+'
    '+s+"
    "),$("#portlet_"+i).length>1)throw"Portlet count doesn't match what's expected";return $("#portlet_"+i)}function sortColumnSetup(t,e){$(".column").sortable({opacity:.6,helper:function(){return $("
    Drop to re-position
    ")},connectWith:".column",update:updatePortletPositions(t,e)})}function getPortletArray(t){var e=new Array,n=t.split("&");for(i in n)val=n[i].split("=")[1],e.push(val);return e}function uiToggleClick(){$(this).toggleClass("ui-icon-minusthick").toggleClass("ui-icon-plusthick"),$(this).parents(".portlet:first").find(".portlet-content").toggle()}!function(t,e){t.rails!==e&&t.error("jquery-ujs has already been loaded!");var i,n=t(document);t.rails=i={linkClickSelector:"a[data-confirm], a[data-method], a[data-remote], a[data-disable-with]",buttonClickSelector:"button[data-remote]",inputChangeSelector:"select[data-remote], input[data-remote], textarea[data-remote]",formSubmitSelector:"form",formInputClickSelector:"form input[type=submit], form input[type=image], form button[type=submit], form button:not([type])",disableSelector:"input[data-disable-with], button[data-disable-with], textarea[data-disable-with]",enableSelector:"input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled",requiredInputSelector:"input[name][required]:not([disabled]),textarea[name][required]:not([disabled])",fileInputSelector:"input[type=file]",linkDisableSelector:"a[data-disable-with]",CSRFProtection:function(e){var i=t('meta[name="csrf-token"]').attr("content");i&&e.setRequestHeader("X-CSRF-Token",i)},fire:function(e,i,n){var r=t.Event(i);return e.trigger(r,n),r.result!==!1},confirm:function(t){return confirm(t)},ajax:function(e){return t.ajax(e)},href:function(t){return t.attr("href")},handleRemote:function(n){var r,s,o,a,l,h,c,d;if(i.fire(n,"ajax:before")){if(a=n.data("cross-domain"),l=a===e?null:a,h=n.data("with-credentials")||null,c=n.data("type")||t.ajaxSettings&&t.ajaxSettings.dataType,n.is("form")){r=n.attr("method"),s=n.attr("action"),o=n.serializeArray();var u=n.data("ujs:submit-button");u&&(o.push(u),n.data("ujs:submit-button",null))}else n.is(i.inputChangeSelector)?(r=n.data("method"),s=n.data("url"),o=n.serialize(),n.data("params")&&(o=o+"&"+n.data("params"))):n.is(i.buttonClickSelector)?(r=n.data("method")||"get",s=n.data("url"),o=n.serialize(),n.data("params")&&(o=o+"&"+n.data("params"))):(r=n.data("method"),s=i.href(n),o=n.data("params")||null);d={type:r||"GET",data:o,dataType:c,beforeSend:function(t,r){return r.dataType===e&&t.setRequestHeader("accept","*/*;q=0.5, "+r.accepts.script),i.fire(n,"ajax:beforeSend",[t,r])},success:function(t,e,i){n.trigger("ajax:success",[t,e,i])},complete:function(t,e){n.trigger("ajax:complete",[t,e])},error:function(t,e,i){n.trigger("ajax:error",[t,e,i])},crossDomain:l},h&&(d.xhrFields={withCredentials:h}),s&&(d.url=s);var p=i.ajax(d);return n.trigger("ajax:send",p),p}return!1},handleMethod:function(n){var r=i.href(n),s=n.data("method"),o=n.attr("target"),a=t("meta[name=csrf-token]").attr("content"),l=t("meta[name=csrf-param]").attr("content"),h=t('
    '),c='';l!==e&&a!==e&&(c+=''),o&&h.attr("target",o),h.hide().append(c).appendTo("body"),h.submit()},disableFormElements:function(e){e.find(i.disableSelector).each(function(){var e=t(this),i=e.is("button")?"html":"val";e.data("ujs:enable-with",e[i]()),e[i](e.data("disable-with")),e.prop("disabled",!0)})},enableFormElements:function(e){e.find(i.enableSelector).each(function(){var e=t(this),i=e.is("button")?"html":"val";e.data("ujs:enable-with")&&e[i](e.data("ujs:enable-with")),e.prop("disabled",!1)})},allowAction:function(t){var e,n=t.data("confirm"),r=!1;return n?(i.fire(t,"confirm")&&(r=i.confirm(n),e=i.fire(t,"confirm:complete",[r])),r&&e):!0},blankInputs:function(e,i,n){var r,s,o=t(),a=i||"input,textarea",l=e.find(a);return l.each(function(){if(r=t(this),s=r.is("input[type=checkbox],input[type=radio]")?r.is(":checked"):r.val(),!s==!n){if(r.is("input[type=radio]")&&l.filter('input[type=radio]:checked[name="'+r.attr("name")+'"]').length)return!0;o=o.add(r)}}),o.length?o:!1},nonBlankInputs:function(t,e){return i.blankInputs(t,e,!0)},stopEverything:function(e){return t(e.target).trigger("ujs:everythingStopped"),e.stopImmediatePropagation(),!1},disableElement:function(t){t.data("ujs:enable-with",t.html()),t.html(t.data("disable-with")),t.bind("click.railsDisable",function(t){return i.stopEverything(t)})},enableElement:function(t){t.data("ujs:enable-with")!==e&&(t.html(t.data("ujs:enable-with")),t.removeData("ujs:enable-with")),t.unbind("click.railsDisable")}},i.fire(n,"rails:attachBindings")&&(t.ajaxPrefilter(function(t,e,n){t.crossDomain||i.CSRFProtection(n)}),n.delegate(i.linkDisableSelector,"ajax:complete",function(){i.enableElement(t(this))}),n.delegate(i.linkClickSelector,"click.rails",function(n){var r=t(this),s=r.data("method"),o=r.data("params");if(!i.allowAction(r))return i.stopEverything(n);if(r.is(i.linkDisableSelector)&&i.disableElement(r),r.data("remote")!==e){if(!(!n.metaKey&&!n.ctrlKey||s&&"GET"!==s||o))return!0;var a=i.handleRemote(r);return a===!1?i.enableElement(r):a.error(function(){i.enableElement(r)}),!1}return r.data("method")?(i.handleMethod(r),!1):void 0}),n.delegate(i.buttonClickSelector,"click.rails",function(e){var n=t(this);return i.allowAction(n)?(i.handleRemote(n),!1):i.stopEverything(e)}),n.delegate(i.inputChangeSelector,"change.rails",function(e){var n=t(this);return i.allowAction(n)?(i.handleRemote(n),!1):i.stopEverything(e)}),n.delegate(i.formSubmitSelector,"submit.rails",function(n){var r=t(this),s=r.data("remote")!==e,o=i.blankInputs(r,i.requiredInputSelector),a=i.nonBlankInputs(r,i.fileInputSelector);if(!i.allowAction(r))return i.stopEverything(n);if(o&&r.attr("novalidate")==e&&i.fire(r,"ajax:aborted:required",[o]))return i.stopEverything(n);if(s){if(a){setTimeout(function(){i.disableFormElements(r)},13);var l=i.fire(r,"ajax:aborted:file",[a]);return l||setTimeout(function(){i.enableFormElements(r)},13),l}return i.handleRemote(r),!1}setTimeout(function(){i.disableFormElements(r)},13)}),n.delegate(i.formInputClickSelector,"click.rails",function(e){var n=t(this);if(!i.allowAction(n))return i.stopEverything(e);var r=n.attr("name"),s=r?{name:r,value:n.val()}:null;n.closest("form").data("ujs:submit-button",s)}),n.delegate(i.formSubmitSelector,"ajax:beforeSend.rails",function(e){this==e.target&&i.disableFormElements(t(this))}),n.delegate(i.formSubmitSelector,"ajax:complete.rails",function(e){this==e.target&&i.enableFormElements(t(this))}),t(function(){var e=t("meta[name=csrf-token]").attr("content"),i=t("meta[name=csrf-param]").attr("content");t('form input[name="'+i+'"]').val(e)}))}(jQuery),function(t){t.cookie=function(e,i,n){if(arguments.length>1&&(!/Object/.test(Object.prototype.toString.call(i))||null===i||void 0===i)){if(n=t.extend({},n),(null===i||void 0===i)&&(n.expires=-1),"number"==typeof n.expires){var r=n.expires,s=n.expires=new Date;s.setDate(s.getDate()+r)}return i=String(i),document.cookie=[encodeURIComponent(e),"=",n.raw?i:encodeURIComponent(i),n.expires?"; expires="+n.expires.toUTCString():"",n.path?"; path="+n.path:"",n.domain?"; domain="+n.domain:"",n.secure?"; secure":""].join("")}n=i||{};for(var o,a=n.raw?function(t){return t}:decodeURIComponent,l=document.cookie.split("; "),h=0;o=l[h]&&l[h].split("=");h++)if(a(o[0])===e)return a(o[1]||"");return null}}(jQuery),function(){function t(t,e){var i;t||(t={});for(i in e)t[i]=e[i];return t}function e(){var t,e,i=arguments,n={},r=function(t,e){var i,n;"object"!=typeof t&&(t={});for(n in e)e.hasOwnProperty(n)&&(i=e[n],t[n]=i&&"object"==typeof i&&"[object Array]"!==Object.prototype.toString.call(i)&&"number"!=typeof i.nodeType?r(t[n]||{},i):e[n]);return t};for(i[0]===!0&&(n=i[1],i=Array.prototype.slice.call(i,2)),e=i.length,t=0;e>t;t++)n=r(n,i[t]);return n}function i(t,e){return parseInt(t,e||10)}function n(t){return"string"==typeof t}function r(t){return"object"==typeof t}function s(t){return"[object Array]"===Object.prototype.toString.call(t)}function o(t){return"number"==typeof t}function a(t){return le.log(t)/le.LN10}function l(t){return le.pow(10,t)}function h(t,e){for(var i=t.length;i--;)if(t[i]===e){t.splice(i,1);break}}function c(t){return t!==_&&null!==t}function d(t,e,i){var s,o;if(n(e))c(i)?t.setAttribute(e,i):t&&t.getAttribute&&(o=t.getAttribute(e));else if(c(e)&&r(e))for(s in e)t.setAttribute(s,e[s]);return o}function u(t){return s(t)?t:[t]}function p(){var t,e,i=arguments,n=i.length;for(t=0;n>t;t++)if(e=i[t],"undefined"!=typeof e&&null!==e)return e}function f(e,i){we&&i&&i.opacity!==_&&(i.filter="alpha(opacity="+100*i.opacity+")"),t(e.style,i)}function g(e,i,n,r,s){return e=oe.createElement(e),i&&t(e,i),s&&f(e,{padding:0,border:Be,margin:0}),n&&f(e,n),r&&r.appendChild(e),e}function m(e,i){var n=function(){};return n.prototype=new e,t(n.prototype,i),n}function y(t,e,n,r){var s=X.lang,t=+t||0,o=-1===e?(t.toString().split(".")[1]||"").length:isNaN(e=fe(e))?2:e,e=void 0===n?s.decimalPoint:n,r=void 0===r?s.thousandsSep:r,s=0>t?"-":"",n=String(i(t=fe(t).toFixed(o))),a=n.length>3?n.length%3:0;return s+(a?n.substr(0,a)+r:"")+n.substr(a).replace(/(\d{3})(?=\d)/g,"$1"+r)+(o?e+fe(t-n).toFixed(o).slice(2):"")}function v(t,e){return Array((e||2)+1-String(t).length).join(0)+t}function x(t,e,i){var n=t[e];t[e]=function(){var t=Array.prototype.slice.call(arguments);return t.unshift(n),i.apply(this,t)}}function b(t,e){for(var i,n,r,s,o,a="{",l=!1,h=[];-1!==(a=t.indexOf(a));){if(i=t.slice(0,a),l){for(n=i.split(":"),r=n.shift().split("."),o=r.length,i=e,s=0;o>s;s++)i=i[r[s]];n.length&&(n=n.join(":"),r=/\.([0-9])/,s=X.lang,o=void 0,/f$/.test(n)?(o=(o=n.match(r))?o[1]:-1,i=y(i,o,s.decimalPoint,n.indexOf(",")>-1?s.thousandsSep:"")):i=G(n,i))}h.push(i),t=t.slice(a+1),a=(l=!l)?"}":"{"}return h.push(t),h.join("")}function w(t){return le.pow(10,ce(le.log(t)/le.LN10))}function k(t,e,i,n){var r,i=p(i,1);for(r=t/i,e||(e=[1,2,2.5,5,10],n&&n.allowDecimals===!1&&(1===i?e=[1,2,5,10]:.1>=i&&(e=[1/i]))),n=0;nn;n++)t[n].ss_i=n;for(t.sort(function(t,n){return i=e(t,n),0===i?t.ss_i-n.ss_i:i}),n=0;r>n;n++)delete t[n].ss_i}function C(t){for(var e=t.length,i=t[0];e--;)t[e]i&&(i=t[e]);return i}function A(t,e){for(var i in t)t[i]&&t[i]!==e&&t[i].destroy&&t[i].destroy(),delete t[i]}function L(t){W||(W=g(ze)),t&&W.appendChild(t),W.innerHTML=""}function M(t,e){var i="Highcharts error #"+t+": www.highcharts.com/errors/"+t;if(e)throw i;ae.console&&console.log(i)}function I(t){return parseFloat(t.toPrecision(14))}function D(t,e){$=p(t,e.animation)}function E(){var t=X.global.useUTC,e=t?"getUTC":"get",i=t?"setUTC":"set";q=6e4*(t&&X.global.timezoneOffset||0),V=t?Date.UTC:function(t,e,i,n,r,s){return new Date(t,e,p(i,1),p(n,0),p(r,0),p(s,0)).getTime()},U=e+"Minutes",Z=e+"Hours",K=e+"Day",Q=e+"Date",J=e+"Month",te=e+"FullYear",ee=i+"Minutes",ie=i+"Hours",ne=i+"Date",re=i+"Month",se=i+"FullYear"}function O(){}function R(t,e,i,n){this.axis=t,this.pos=e,this.type=i||"",this.isNew=!0,!i&&!n&&this.addLabel()}function z(){this.init.apply(this,arguments)}function B(t,e,i,n,r,s){var o=t.chart.inverted;this.axis=t,this.isNegative=i,this.options=e,this.x=n,this.total=null,this.points={},this.stack=r,this.percent="percent"===s,this.alignOptions={align:e.align||(o?i?"left":"right":"center"),verticalAlign:e.verticalAlign||(o?"middle":i?"bottom":"top"),y:p(e.y,o?4:i?14:-6),x:p(e.x,o?i?-6:6:0)},this.textAlign=e.textAlign||(o?i?"right":"left":"center")}function F(){this.init.apply(this,arguments)}function N(){this.init.apply(this,arguments)}var _,H,W,X,G,$,Y,j,V,q,U,Z,K,Q,J,te,ee,ie,ne,re,se,oe=document,ae=window,le=Math,he=le.round,ce=le.floor,de=le.ceil,ue=le.max,pe=le.min,fe=le.abs,ge=le.cos,me=le.sin,ye=le.PI,ve=2*ye/360,xe=navigator.userAgent,be=ae.opera,we=/msie/i.test(xe)&&!be,ke=8===oe.documentMode,Se=/AppleWebKit/.test(xe),Te=/Firefox/.test(xe),Ce=/(Mobile|Android|Windows Phone)/.test(xe),Pe="http://www.w3.org/2000/svg",Ae=!!oe.createElementNS&&!!oe.createElementNS(Pe,"svg").createSVGRect,Le=Te&&parseInt(xe.split("Firefox/")[1],10)<4,Me=!Ae&&!we&&!!oe.createElement("canvas").getContext,Ie=oe.documentElement.ontouchstart!==_,De={},Ee=0,Oe=function(){},Re=[],ze="div",Be="none",Fe=/^[0-9]+$/,Ne="rgba(192,192,192,"+(Ae?1e-4:.002)+")",_e="stroke-width",He={};ae.Highcharts=ae.Highcharts?M(16,!0):{},G=function(e,i,n){if(!c(i)||isNaN(i))return"Invalid date";var r,e=p(e,"%Y-%m-%d %H:%M:%S"),s=new Date(i-q),o=s[Z](),a=s[K](),l=s[Q](),h=s[J](),d=s[te](),u=X.lang,f=u.weekdays,s=t({a:f[a].substr(0,3),A:f[a],d:v(l),e:l,b:u.shortMonths[h],B:u.months[h],m:v(h+1),y:d.toString().substr(2,2),Y:d,H:v(o),I:v(o%12||12),l:o%12||12,M:v(s[U]()),p:12>o?"AM":"PM",P:12>o?"am":"pm",S:v(s.getSeconds()),L:v(he(i%1e3),3)},Highcharts.dateFormats);for(r in s)for(;-1!==e.indexOf("%"+r);)e=e.replace("%"+r,"function"==typeof s[r]?s[r](i):s[r]);return n?e.substr(0,1).toUpperCase()+e.substr(1):e},S.prototype={wrapColor:function(t){this.color>=t&&(this.color=0)},wrapSymbol:function(t){this.symbol>=t&&(this.symbol=0)}},j=function(){for(var t=0,e=arguments,i=e.length,n={};i>t;t++)n[e[t++]]=e[t];return n}("millisecond",1,"second",1e3,"minute",6e4,"hour",36e5,"day",864e5,"week",6048e5,"month",26784e5,"year",31556952e3),Y={init:function(t,e,i){var n,r,s,e=e||"",o=t.shift,a=e.indexOf("C")>-1,l=a?7:3,e=e.split(" "),i=[].concat(i),h=function(t){for(n=t.length;n--;)"M"===t[n]&&t.splice(n+1,0,t[n+1],t[n+2],t[n+1],t[n+2])};if(a&&(h(e),h(i)),t.isArea&&(r=e.splice(e.length-6,6),s=i.splice(i.length-6,6)),o<=i.length/l&&e.length===i.length)for(;o--;)i=[].concat(i).splice(0,l).concat(i);if(t.shift=0,e.length)for(t=i.length;e.lengthi)for(;s--;)n=parseFloat(t[s]),r[s]=isNaN(n)?t[s]:i*parseFloat(e[s]-n)+n;else r=e;return r}},function(e){ae.HighchartsAdapter=ae.HighchartsAdapter||e&&{init:function(t){var i,r=e.fx,s=r.step,o=e.Tween,a=o&&o.propHooks;i=e.cssHooks.opacity,e.extend(e.easing,{easeOutQuad:function(t,e,i,n,r){return-n*(e/=r)*(e-2)+i}}),e.each(["cur","_default","width","height","opacity"],function(t,e){var i,n=s;"cur"===e?n=r.prototype:"_default"===e&&o&&(n=a[e],e="set"),(i=n[e])&&(n[e]=function(n){var r,n=t?n:this;return"align"!==n.prop?(r=n.elem,r.attr?r.attr(n.prop,"cur"===e?_:n.now):i.apply(this,arguments)):void 0})}),x(i,"get",function(t,e,i){return e.attr?e.opacity||0:t.call(this,e,i)}),i=function(e){var i,n=e.elem;e.started||(i=t.init(n,n.d,n.toD),e.start=i[0],e.end=i[1],e.started=!0),n.attr("d",t.step(e.start,e.end,e.pos,n.toD))},o?a.d={set:i}:s.d=i,this.each=Array.prototype.forEach?function(t,e){return Array.prototype.forEach.call(t,e)}:function(t,e){for(var i=0,n=t.length;n>i;i++)if(e.call(t[i],t[i],i,t)===!1)return i},e.fn.highcharts=function(){var t,e,i="Chart",r=arguments;return n(r[0])&&(i=r[0],r=Array.prototype.slice.call(r,1)),t=r[0],t!==_&&(t.chart=t.chart||{},t.chart.renderTo=this[0],new Highcharts[i](t,r[1]),e=this),t===_&&(e=Re[d(this[0],"data-highcharts-chart")]),e}},getScript:e.getScript,inArray:e.inArray,adapterRun:function(t,i){return e(t)[i]()},grep:e.grep,map:function(t,e){for(var i=[],n=0,r=t.length;r>n;n++)i[n]=e.call(t[n],t[n],n,t);return i},offset:function(t){return e(t).offset()},addEvent:function(t,i,n){e(t).bind(i,n)},removeEvent:function(t,i,n){var r=oe.removeEventListener?"removeEventListener":"detachEvent";oe[r]&&t&&!t[r]&&(t[r]=function(){}),e(t).unbind(i,n)},fireEvent:function(i,n,r,s){var o,a=e.Event(n),l="detached"+n;!we&&r&&(delete r.layerX,delete r.layerY),t(a,r),i[n]&&(i[l]=i[n],i[n]=null),e.each(["preventDefault","stopPropagation"],function(t,e){var i=a[e];a[e]=function(){try{i.call(a)}catch(t){"preventDefault"===e&&(o=!0)}}}),e(i).trigger(a),i[l]&&(i[n]=i[l],i[l]=null),s&&!a.isDefaultPrevented()&&!o&&s(a)},washMouseEvent:function(t){var e=t.originalEvent||t;return e.pageX===_&&(e.pageX=t.pageX,e.pageY=t.pageY),e},animate:function(t,i,n){var r=e(t);t.style||(t.style={}),i.d&&(t.toD=i.d,i.d=1),r.stop(),i.opacity!==_&&t.attr&&(i.opacity+="px"),r.animate(i,n)},stop:function(t){e(t).stop()}}}(ae.jQuery);var We=ae.HighchartsAdapter,Xe=We||{};We&&We.init.call(We,Y);var Ge=Xe.adapterRun,$e=Xe.getScript,Ye=Xe.inArray,je=Xe.each,Ve=Xe.grep,qe=Xe.offset,Ue=Xe.map,Ze=Xe.addEvent,Ke=Xe.removeEvent,Qe=Xe.fireEvent,Je=Xe.washMouseEvent,ti=Xe.animate,ei=Xe.stop,Xe={enabled:!0,x:0,y:15,style:{color:"#666",cursor:"default",fontSize:"11px",lineHeight:"14px"}};X={colors:"#2f7ed8,#0d233a,#8bbc21,#910000,#1aadce,#492970,#f28f43,#77a1e5,#c42525,#a6c96a".split(","),symbols:["circle","diamond","square","triangle","triangle-down"],lang:{loading:"Loading...",months:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),shortMonths:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),weekdays:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),decimalPoint:".",numericSymbols:"k,M,G,T,P,E".split(","),resetZoom:"Reset zoom",resetZoomTitle:"Reset zoom level 1:1",thousandsSep:","},global:{useUTC:!0,canvasToolsURL:"http://code.highcharts.com/3.0.8/modules/canvas-tools.js",VMLRadialGradientURL:"http://code.highcharts.com/3.0.8/gfx/vml-radial-gradient.png"},chart:{borderColor:"#4572A7",borderRadius:5,defaultSeriesType:"line",ignoreHiddenSeries:!0,spacing:[10,10,15,10],style:{fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif',fontSize:"12px"},backgroundColor:"#FFFFFF",plotBorderColor:"#C0C0C0",resetZoomButton:{theme:{zIndex:20},position:{align:"right",x:-10,y:10}}},title:{text:"Chart title",align:"center",margin:15,style:{color:"#274b6d",fontSize:"16px"}},subtitle:{text:"",align:"center",style:{color:"#4d759e"}},plotOptions:{line:{allowPointSelect:!1,showCheckbox:!1,animation:{duration:1e3},events:{},lineWidth:2,marker:{enabled:!0,lineWidth:0,radius:4,lineColor:"#FFFFFF",states:{hover:{enabled:!0},select:{fillColor:"#FFFFFF",lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:e(Xe,{align:"center",enabled:!1,formatter:function(){return null===this.y?"":y(this.y,-1)},verticalAlign:"bottom",y:0}),cropThreshold:300,pointRange:0,states:{hover:{marker:{}},select:{marker:{}}},stickyTracking:!0,turboThreshold:1e3}},labels:{style:{position:"absolute",color:"#3E576F"}},legend:{enabled:!0,align:"center",layout:"horizontal",labelFormatter:function(){return this.name},borderWidth:1,borderColor:"#909090",borderRadius:5,navigation:{activeColor:"#274b6d",inactiveColor:"#CCC"},shadow:!1,itemStyle:{cursor:"pointer",color:"#274b6d",fontSize:"12px"},itemHoverStyle:{color:"#000"},itemHiddenStyle:{color:"#CCC"},itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{style:{fontWeight:"bold"}}},loading:{labelStyle:{fontWeight:"bold",position:"relative",top:"1em"},style:{position:"absolute",backgroundColor:"white",opacity:.5,textAlign:"center"}},tooltip:{enabled:!0,animation:Ae,backgroundColor:"rgba(255, 255, 255, .85)",borderWidth:1,borderRadius:3,dateTimeLabelFormats:{millisecond:"%A, %b %e, %H:%M:%S.%L",second:"%A, %b %e, %H:%M:%S",minute:"%A, %b %e, %H:%M",hour:"%A, %b %e, %H:%M",day:"%A, %b %e, %Y",week:"Week from %A, %b %e, %Y",month:"%B %Y",year:"%Y"},headerFormat:'{point.key}
    ',pointFormat:'{series.name}: {point.y}
    ',shadow:!0,snap:Ce?25:10,style:{color:"#333333",cursor:"default",fontSize:"12px",padding:"8px",whiteSpace:"nowrap"}},credits:{enabled:!0,text:"ThingSpeak.com",href:"https://thingspeak.com",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#D62020",fontSize:"9px"}}};var ii=X.plotOptions,We=ii.line;E();var ni=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,ri=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,si=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,oi=function(t){var n,r,s=[];return function(t){t&&t.stops?r=Ue(t.stops,function(t){return oi(t[1])}):(n=ni.exec(t))?s=[i(n[1]),i(n[2]),i(n[3]),parseFloat(n[4],10)]:(n=ri.exec(t))?s=[i(n[1],16),i(n[2],16),i(n[3],16),1]:(n=si.exec(t))&&(s=[i(n[1]),i(n[2]),i(n[3]),1])}(t),{get:function(i){var n;return r?(n=e(t),n.stops=[].concat(n.stops),je(r,function(t,e){n.stops[e]=[n.stops[e][0],t.get(i)]})):n=s&&!isNaN(s[0])?"rgb"===i?"rgb("+s[0]+","+s[1]+","+s[2]+")":"a"===i?s[3]:"rgba("+s.join(",")+")":t,n},brighten:function(t){if(r)je(r,function(e){e.brighten(t)});else if(o(t)&&0!==t){var e;for(e=0;3>e;e++)s[e]+=i(255*t),s[e]<0&&(s[e]=0),s[e]>255&&(s[e]=255)}return this},rgba:s,setOpacity:function(t){return s[3]=t,this}}};O.prototype={init:function(t,e){this.element="span"===e?g(e):oe.createElementNS(Pe,e),this.renderer=t,this.attrSetters={}},opacity:1,animate:function(t,i,n){i=p(i,$,!0),ei(this),i?(i=e(i),n&&(i.complete=n),ti(this,t,i)):(this.attr(t),n&&n())},attr:function(t,e){var r,s,o,a,l,h,u,f=this.element,g=f.nodeName.toLowerCase(),m=this.renderer,y=this.attrSetters,v=this.shadows,x=this;if(n(t)&&c(e)&&(r=t,t={},t[r]=e),n(t))r=t,"circle"===g?r={x:"cx",y:"cy"}[r]||r:"strokeWidth"===r&&(r="stroke-width"),x=d(f,r)||this[r]||0,"d"!==r&&"visibility"!==r&&"fill"!==r&&(x=parseFloat(x));else{for(r in t)if(l=!1,s=t[r],o=y[r]&&y[r].call(this,s,r),o!==!1){if(o!==_&&(s=o),"d"===r)s&&s.join&&(s=s.join(" ")),/(NaN| {2}|^$)/.test(s)&&(s="M 0 0");else if("x"===r&&"text"===g)for(o=0;os&&(s=0),this[r]=s,"text"===r?(s!==this.textStr&&delete this.bBox,this.textStr=s,this.added&&m.buildText(this)):l||d(f,r,s)}u&&this.updateTransform()}return x},addClass:function(t){var e=this.element,i=d(e,"class")||"";return-1===i.indexOf(t)&&d(e,"class",i+" "+t),this},symbolAttr:function(t){var e=this;je("x,y,r,start,end,width,height,innerR,anchorX,anchorY".split(","),function(i){e[i]=p(t[i],e[i])}),e.attr({d:e.renderer.symbols[e.symbolName](e.x,e.y,e.width,e.height,e)})},clip:function(t){return this.attr("clip-path",t?"url("+this.renderer.url+"#"+t.id+")":Be)},crisp:function(t,e,i,n,r){var s,o,a={},l={},t=t||this.strokeWidth||this.attr&&this.attr("stroke-width")||0;o=he(t)%2/2,l.x=ce(e||this.x||0)+o,l.y=ce(i||this.y||0)+o,l.width=ce((n||this.width||0)-2*o),l.height=ce((r||this.height||0)-2*o),l.strokeWidth=t;for(s in l)this[s]!==l[s]&&(this[s]=a[s]=l[s]);return a},css:function(e){var n,r=this.element,s=this.textWidth=e&&e.width&&"text"===r.nodeName.toLowerCase()&&i(e.width),o="",a=function(t,e){return"-"+e.toLowerCase()};if(e&&e.color&&(e.fill=e.color),this.styles=e=t(this.styles,e),s&&delete e.width,we&&!Ae)f(this.element,e);else{for(n in e)o+=n.replace(/([A-Z])/g,a)+":"+e[n]+";";d(r,"style",o)}return s&&this.added&&this.renderer.buildText(this),this},on:function(t,e){var i=this,n=i.element;return Ie&&"click"===t?(n.ontouchstart=function(t){i.touchEventFired=Date.now(),t.preventDefault(),e.call(n,t)},n.onclick=function(t){(-1===xe.indexOf("Android")||Date.now()-(i.touchEventFired||0)>1100)&&e.call(n,t)}):n["on"+t]=e,this},setRadialReference:function(t){return this.element.radialReference=t,this},translate:function(t,e){return this.attr({translateX:t,translateY:e})},invert:function(){return this.inverted=!0,this.updateTransform(),this},updateTransform:function(){var t=this.translateX||0,e=this.translateY||0,i=this.scaleX,n=this.scaleY,r=this.inverted,s=this.rotation;r&&(t+=this.attr("width"),e+=this.attr("height")),t=["translate("+t+","+e+")"],r?t.push("rotate(90) scale(-1,1)"):s&&t.push("rotate("+s+" "+(this.x||0)+" "+(this.y||0)+")"),(c(i)||c(n))&&t.push("scale("+p(i,1)+" "+p(n,1)+")"),t.length&&d(this.element,"transform",t.join(" "))},toFront:function(){var t=this.element;return t.parentNode.appendChild(t),this},align:function(t,e,i){var r,s,o,a,l={};return s=this.renderer,o=s.alignedObjects,t?(this.alignOptions=t,this.alignByTranslate=e,(!i||n(i))&&(this.alignTo=r=i||"renderer",h(o,this),o.push(this),i=null)):(t=this.alignOptions,e=this.alignByTranslate,r=this.alignTo),i=p(i,s[r],s),r=t.align,s=t.verticalAlign,o=(i.x||0)+(t.x||0),a=(i.y||0)+(t.y||0),("right"===r||"center"===r)&&(o+=(i.width-(t.width||0))/{right:1,center:2}[r]),l[e?"translateX":"x"]=he(o),("bottom"===s||"middle"===s)&&(a+=(i.height-(t.height||0))/({bottom:1,middle:2}[s]||1)),l[e?"translateY":"y"]=he(a),this[this.placed?"animate":"attr"](l),this.placed=!0,this.alignAttr=l,this},getBBox:function(){var e,i,n=this.bBox,r=this.renderer,s=this.rotation;e=this.element;var o=this.styles,a=s*ve;i=this.textStr;var l;if((""===i||Fe.test(i))&&(l=i.length+"|"+o.fontSize+"|"+o.fontFamily,n=r.cache[l]),!n){if(e.namespaceURI===Pe||r.forExport){try{n=e.getBBox?t({},e.getBBox()):{width:e.offsetWidth,height:e.offsetHeight}}catch(h){}(!n||n.width<0)&&(n={width:0,height:0})}else n=this.htmlGetBBox();r.isSVG&&(e=n.width,i=n.height,we&&o&&"11px"===o.fontSize&&"22.7"===i.toPrecision(3)&&(n.height=i=14),s&&(n.width=fe(i*me(a))+fe(e*ge(a)),n.height=fe(i*ge(a))+fe(e*me(a)))),this.bBox=n,l&&(r.cache[l]=n)}return n},show:function(){return this.attr({visibility:"visible"})},hide:function(){return this.attr({visibility:"hidden"})},fadeOut:function(t){var e=this;e.animate({opacity:0},{duration:t||150,complete:function(){e.hide()}})},add:function(t){var e,n=this.renderer,r=t||n,s=r.element||n.box,o=s.childNodes,a=this.element,l=d(a,"zIndex");if(t&&(this.parentGroup=t),this.parentInverted=t&&t.inverted,void 0!==this.textStr&&n.buildText(this),l&&(r.handleZ=!0,l=i(l)),r.handleZ)for(r=0;rl||!c(l)&&c(n))){s.insertBefore(a,t),e=!0;break}return e||s.appendChild(a),this.added=!0,Qe(this,"add"),this},safeRemoveChild:function(t){var e=t.parentNode;e&&e.removeChild(t)},destroy:function(){var t,e,i=this,n=i.element||{},r=i.shadows,s=i.renderer.isSVG&&"SPAN"===n.nodeName&&i.parentGroup;if(n.onclick=n.onmouseout=n.onmouseover=n.onmousemove=n.point=null,ei(i),i.clipPath&&(i.clipPath=i.clipPath.destroy()),i.stops){for(e=0;e=n;n++)r=c.cloneNode(0),s=2*o+1-2*n,d(r,{isShadow:"true",stroke:t.color||"black","stroke-opacity":a*n,"stroke-width":s,transform:"translate"+l,fill:Be}),i&&(d(r,"height",ue(d(r,"height")-s,0)),r.cutHeight=s),e?e.element.appendChild(r):c.parentNode.insertBefore(r,c),h.push(r);this.shadows=h}return this}};var ai=function(){this.init.apply(this,arguments)};ai.prototype={Element:O,init:function(t,e,i,n){var r,s,o=location;r=this.createElement("svg").attr({version:"1.1"}),s=r.element,t.appendChild(s),-1===t.innerHTML.indexOf("xmlns")&&d(s,"xmlns",Pe),this.isSVG=!0,this.box=s,this.boxWrapper=r,this.alignedObjects=[],this.url=(Te||Se)&&oe.getElementsByTagName("base").length?o.href.replace(/#.*?$/,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"",this.createElement("desc").add().element.appendChild(oe.createTextNode("Created with Highcharts 3.0.8")),this.defs=this.createElement("defs").add(),this.forExport=n,this.gradients={},this.cache={},this.setSize(e,i,!1);var a;Te&&t.getBoundingClientRect&&(this.subPixelFix=e=function(){f(t,{left:0,top:0}),a=t.getBoundingClientRect(),f(t,{left:de(a.left)-a.left+"px",top:de(a.top)-a.top+"px"})},e(),Ze(ae,"resize",e))},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var t=this.defs;return this.box=null,this.boxWrapper=this.boxWrapper.destroy(),A(this.gradients||{}),this.gradients=null,t&&(this.defs=t.destroy()),this.subPixelFix&&Ke(ae,"resize",this.subPixelFix),this.alignedObjects=null},createElement:function(t){var e=new this.Element;return e.init(this,t),e},draw:function(){},buildText:function(t){for(var e=t.element,n=this,r=n.forExport,s=p(t.textStr,"").toString().replace(/<(b|strong)>/g,'').replace(/<(i|em)>/g,'').replace(/
    /g,"").split(//g),o=e.childNodes,a=/style="([^"]+)"/,l=/href="(http[^"]+)"/,h=d(e,"x"),c=t.styles,u=t.textWidth,g=c&&c.lineHeight,m=o.length;m--;)e.removeChild(o[m]); +u&&!t.added&&this.box.appendChild(e),""===s[s.length-1]&&s.pop(),je(s,function(s,o){var p,m=0,s=s.replace(//g,"|||");p=s.split("|||"),je(p,function(s){if(""!==s||1===p.length){var y,v={},x=oe.createElementNS(Pe,"tspan");if(a.test(s)&&(y=s.match(a)[1].replace(/(;| |^)color([ :])/,"$1fill$2"),d(x,"style",y)),l.test(s)&&!r&&(d(x,"onclick",'location.href="'+s.match(l)[1]+'"'),f(x,{cursor:"pointer"})),s=(s.replace(/<(.|\n)*?>/g,"")||" ").replace(/</g,"<").replace(/>/g,">")," "!==s&&(x.appendChild(oe.createTextNode(s)),m?v.dx=0:v.x=h,d(x,v),!m&&o&&(!Ae&&r&&f(x,{display:"block"}),d(x,"dy",g||n.fontMetrics(/px$/.test(x.style.fontSize)?x.style.fontSize:c.fontSize).h,Se&&x.offsetHeight)),e.appendChild(x),m++,u))for(var b,w,s=s.replace(/([^\^])-/g,"$1- ").split(" "),v=s.length>1&&"nowrap"!==c.whiteSpace,k=t._clipHeight,S=[],T=i(g||16),C=1;v&&(s.length||S.length);)delete t.bBox,b=t.getBBox(),w=b.width,!Ae&&n.forExport&&(w=n.measureSpanWidth(x.firstChild.data,t.styles)),b=w>u,b&&1!==s.length?(x.removeChild(x.firstChild),S.unshift(s.pop())):(s=S,S=[],s.length&&(C++,k&&C*T>k?(s=["..."],t.attr("title",t.textStr)):(x=oe.createElementNS(Pe,"tspan"),d(x,{dy:T,x:h}),y&&d(x,"style",y),e.appendChild(x),w>u&&(u=w)))),s.length&&x.appendChild(oe.createTextNode(s.join(" ").replace(/- /g,"-")))}})})},button:function(i,n,r,s,o,a,l,h,c){var d,u,p,f,g,m,y=this.label(i,n,r,c,null,null,null,null,"button"),v=0,i={x1:0,y1:0,x2:0,y2:1},o=e({"stroke-width":1,stroke:"#CCCCCC",fill:{linearGradient:i,stops:[[0,"#FEFEFE"],[1,"#F6F6F6"]]},r:2,padding:5,style:{color:"black"}},o);return p=o.style,delete o.style,a=e(o,{stroke:"#68A",fill:{linearGradient:i,stops:[[0,"#FFF"],[1,"#ACF"]]}},a),f=a.style,delete a.style,l=e(o,{stroke:"#68A",fill:{linearGradient:i,stops:[[0,"#9BD"],[1,"#CDF"]]}},l),g=l.style,delete l.style,h=e(o,{style:{color:"#CCC"}},h),m=h.style,delete h.style,Ze(y.element,we?"mouseover":"mouseenter",function(){3!==v&&y.attr(a).css(f)}),Ze(y.element,we?"mouseout":"mouseleave",function(){3!==v&&(d=[o,a,l][v],u=[p,f,g][v],y.attr(d).css(u))}),y.setState=function(t){(y.state=v=t)?2===t?y.attr(l).css(g):3===t&&y.attr(h).css(m):y.attr(o).css(p)},y.on("click",function(){3!==v&&s.call(y)}).attr(o).css(t({cursor:"default"},p))},crispLine:function(t,e){return t[1]===t[4]&&(t[1]=t[4]=he(t[1])-e%2/2),t[2]===t[5]&&(t[2]=t[5]=he(t[2])+e%2/2),t},path:function(e){var i={fill:Be};return s(e)?i.d=e:r(e)&&t(i,e),this.createElement("path").attr(i)},circle:function(t,e,i){return t=r(t)?t:{x:t,y:e,r:i},this.createElement("circle").attr(t)},arc:function(t,e,i,n,s,o){return r(t)&&(e=t.y,i=t.r,n=t.innerR,s=t.start,o=t.end,t=t.x),t=this.symbol("arc",t||0,e||0,i||0,i||0,{innerR:n||0,start:s||0,end:o||0}),t.r=i,t},rect:function(t,e,i,n,s,o){return s=r(t)?t.r:s,s=this.createElement("rect").attr({rx:s,ry:s,fill:Be}),s.attr(r(t)?t:s.crisp(o,t,e,ue(i,0),ue(n,0)))},setSize:function(t,e,i){var n=this.alignedObjects,r=n.length;for(this.width=t,this.height=e,this.boxWrapper[p(i,!0)?"animate":"attr"]({width:t,height:e});r--;)n[r].align()},g:function(t){var e=this.createElement("g");return c(t)?e.attr({"class":"highcharts-"+t}):e},image:function(e,i,n,r,s){var o={preserveAspectRatio:Be};return arguments.length>1&&t(o,{x:i,y:n,width:r,height:s}),o=this.createElement("image").attr(o),o.element.setAttributeNS?o.element.setAttributeNS("http://www.w3.org/1999/xlink","href",e):o.element.setAttribute("hc-svg-href",e),o},symbol:function(e,i,n,r,s,o){var a,l,h,c=this.symbols[e],c=c&&c(he(i),he(n),r,s,o),d=/^url\((.*?)\)$/;return c?(a=this.path(c),t(a,{symbolName:e,x:i,y:n,width:r,height:s}),o&&t(a,o)):d.test(e)&&(h=function(t,e){t.element&&(t.attr({width:e[0],height:e[1]}),t.alignByTranslate||t.translate(he((r-e[0])/2),he((s-e[1])/2)))},l=e.match(d)[1],e=De[l],a=this.image(l).attr({x:i,y:n}),a.isImg=!0,e?h(a,e):(a.attr({width:0,height:0}),g("img",{onload:function(){h(a,De[l]=[this.width,this.height])},src:l}))),a},symbols:{circle:function(t,e,i,n){var r=.166*i;return["M",t+i/2,e,"C",t+i+r,e,t+i+r,e+n,t+i/2,e+n,"C",t-r,e+n,t-r,e,t+i/2,e,"Z"]},square:function(t,e,i,n){return["M",t,e,"L",t+i,e,t+i,e+n,t,e+n,"Z"]},triangle:function(t,e,i,n){return["M",t+i/2,e,"L",t+i,e+n,t,e+n,"Z"]},"triangle-down":function(t,e,i,n){return["M",t,e,"L",t+i,e,t+i/2,e+n,"Z"]},diamond:function(t,e,i,n){return["M",t+i/2,e,"L",t+i,e+n/2,t+i/2,e+n,t,e+n/2,"Z"]},arc:function(t,e,i,n,r){var s=r.start,i=r.r||i||n,o=r.end-.001,n=r.innerR,a=r.open,l=ge(s),h=me(s),c=ge(o),o=me(o),r=r.end-st?t+4:he(1.2*t),e=he(.8*t);return{h:t,b:e}},label:function(i,n,r,s,o,a,l,h,d){function u(){var t,i;t=P.element.style,y=(void 0===v||void 0===x||C.styles.textAlign)&&P.getBBox(),C.width=(v||y.width||0)+2*L+M,C.height=(x||y.height||0)+2*L,k=L+T.fontMetrics(t&&t.fontSize).b,S&&(m||(t=he(-A*L),i=h?-k:0,C.box=m=s?T.symbol(s,t,i,C.width,C.height,D):T.rect(t,i,C.width,C.height,0,D[_e]),m.add(C)),m.isImg||m.attr(e({width:C.width,height:C.height},D)),D=null)}function p(){var t,e=C.styles,e=e&&e.textAlign,i=M+L*(1-A);t=h?0:k,!c(v)||"center"!==e&&"right"!==e||(i+={center:.5,right:1}[e]*(v-y.width)),(i!==P.x||t!==P.y)&&P.attr({x:i,y:t}),P.x=i,P.y=t}function f(t,e){m?m.attr(t,e):D[t]=e}function g(){P.add(C),C.attr({text:i,x:n,y:r}),m&&c(o)&&C.attr({anchorX:o,anchorY:a})}var m,y,v,x,b,w,k,S,T=this,C=T.g(d),P=T.text("",0,0,l).attr({zIndex:1}),A=0,L=3,M=0,I=0,D={},l=C.attrSetters;Ze(C,"add",g),l.width=function(t){return v=t,!1},l.height=function(t){return x=t,!1},l.padding=function(t){return c(t)&&t!==L&&(L=t,p()),!1},l.paddingLeft=function(t){return c(t)&&t!==M&&(M=t,p()),!1},l.align=function(t){return A={left:0,center:.5,right:1}[t],!1},l.text=function(t,e){return P.attr(e,t),u(),p(),!1},l[_e]=function(t,e){return S=!0,I=t%2/2,f(e,t),!1},l.stroke=l.fill=l.r=function(t,e){return"fill"===e&&(S=!0),f(e,t),!1},l.anchorX=function(t,e){return o=t,f(e,t+I-b),!1},l.anchorY=function(t,e){return a=t,f(e,t-w),!1},l.x=function(t){return C.x=t,t-=A*((v||y.width)+L),b=he(t),C.attr("translateX",b),!1},l.y=function(t){return w=C.y=he(t),C.attr("translateY",w),!1};var E=C.css;return t(C,{css:function(t){if(t){var i={},t=e(t);je("fontSize,fontWeight,fontFamily,color,lineHeight,width,textDecoration,textShadow".split(","),function(e){t[e]!==_&&(i[e]=t[e],delete t[e])}),P.css(i)}return E.call(C,t)},getBBox:function(){return{width:y.width+2*L,height:y.height+2*L,x:y.x-L,y:y.y-L}},shadow:function(t){return m&&m.shadow(t),C},destroy:function(){Ke(C,"add",g),Ke(C.element,"mouseenter"),Ke(C.element,"mouseleave"),P&&(P=P.destroy()),m&&(m=m.destroy()),O.prototype.destroy.call(C),C=T=u=p=f=g=null}})}},H=ai,t(O.prototype,{htmlCss:function(e){var i=this.element;return(i=e&&"SPAN"===i.tagName&&e.width)&&(delete e.width,this.textWidth=i,this.updateTransform()),this.styles=t(this.styles,e),f(this.element,e),this},htmlGetBBox:function(){var t=this.element,e=this.bBox;return e||("text"===t.nodeName&&(t.style.position="absolute"),e=this.bBox={x:t.offsetLeft,y:t.offsetTop,width:t.offsetWidth,height:t.offsetHeight}),e},htmlUpdateTransform:function(){if(this.added){var t=this.renderer,e=this.element,n=this.translateX||0,r=this.translateY||0,s=this.x||0,o=this.y||0,a=this.textAlign||"left",l={left:0,center:.5,right:1}[a],h=this.shadows;if(f(e,{marginLeft:n,marginTop:r}),h&&je(h,function(t){f(t,{marginLeft:n+1,marginTop:r+1})}),this.inverted&&je(e.childNodes,function(i){t.invertChild(i,e)}),"SPAN"===e.tagName){var d,u=this.rotation,g=i(this.textWidth),m=[u,a,e.innerHTML,this.textWidth].join(",");m!==this.cTT&&(d=t.fontMetrics(e.style.fontSize).b,c(u)&&this.setSpanRotation(u,l,d),h=p(this.elemWidth,e.offsetWidth),h>g&&/[ \-]/.test(e.textContent||e.innerText)&&(f(e,{width:g+"px",display:"block",whiteSpace:"normal"}),h=g),this.getSpanCorrection(h,d,l,u,a)),f(e,{left:s+(this.xCorr||0)+"px",top:o+(this.yCorr||0)+"px"}),Se&&(d=e.offsetHeight),this.cTT=m}}else this.alignOnAdd=!0},setSpanRotation:function(t,e,i){var n={},r=we?"-ms-transform":Se?"-webkit-transform":Te?"MozTransform":be?"-o-transform":"";n[r]=n.transform="rotate("+t+"deg)",n[r+(Te?"Origin":"-origin")]=100*e+"% "+i+"px",f(this.element,n)},getSpanCorrection:function(t,e,i){this.xCorr=-t*i,this.yCorr=-e}}),t(ai.prototype,{html:function(e,i,n){var r=X.chart.style,s=this.createElement("span"),o=s.attrSetters,a=s.element,l=s.renderer;return o.text=function(t){return t!==a.innerHTML&&delete this.bBox,a.innerHTML=t,!1},o.x=o.y=o.align=o.rotation=function(t,e){return"align"===e&&(e="textAlign"),s[e]=t,s.htmlUpdateTransform(),!1},s.attr({text:e,x:he(i),y:he(n)}).css({position:"absolute",whiteSpace:"nowrap",fontFamily:r.fontFamily,fontSize:r.fontSize}),s.css=s.htmlCss,l.isSVG&&(s.add=function(e){var i,n=l.box.parentNode,r=[];if(this.parentGroup=e){if(i=e.div,!i){for(;e;)r.push(e),e=e.parentGroup;je(r.reverse(),function(e){var r;i=e.div=e.div||g(ze,{className:d(e.element,"class")},{position:"absolute",left:(e.translateX||0)+"px",top:(e.translateY||0)+"px"},i||n),r=i.style,t(e.attrSetters,{translateX:function(t){r.left=t+"px"},translateY:function(t){r.top=t+"px"},visibility:function(t,e){r[e]=t}})})}}else i=n;return i.appendChild(a),s.added=!0,s.alignOnAdd&&s.htmlUpdateTransform(),s}),s}});var li;if(!Ae&&!Me){Highcharts.VMLElement=li={init:function(t,e){var i=["<",e,' filled="f" stroked="f"'],n=["position: ","absolute",";"],r=e===ze;("shape"===e||r)&&n.push("left:0;top:0;width:1px;height:1px;"),n.push("visibility: ",r?"hidden":"visible"),i.push(' style="',n.join(""),'"/>'),e&&(i=r||"span"===e||"img"===e?i.join(""):t.prepVML(i),this.element=g(i)),this.renderer=t,this.attrSetters={}},add:function(t){var e=this.renderer,i=this.element,n=e.box,n=t?t.element||t:n;return t&&t.inverted&&e.invertChild(i,n),n.appendChild(i),this.added=!0,this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform(),Qe(this,"add"),this},updateTransform:O.prototype.htmlUpdateTransform,setSpanRotation:function(){var t=this.rotation,e=ge(t*ve),i=me(t*ve);f(this.element,{filter:t?["progid:DXImageTransform.Microsoft.Matrix(M11=",e,", M12=",-i,", M21=",i,", M22=",e,", sizingMethod='auto expand')"].join(""):Be})},getSpanCorrection:function(t,e,i,n,r){var s,o=n?ge(n*ve):1,a=n?me(n*ve):0,l=p(this.elemHeight,this.element.offsetHeight);this.xCorr=0>o&&-t,this.yCorr=0>a&&-l,s=0>o*a,this.xCorr+=a*e*(s?1-i:i),this.yCorr-=o*e*(n?s?i:1-i:1),r&&"left"!==r&&(this.xCorr-=t*i*(0>o?-1:1),n&&(this.yCorr-=l*i*(0>a?-1:1)),f(this.element,{textAlign:r}))},pathToVML:function(t){for(var e=t.length,i=[];e--;)o(t[e])?i[e]=he(10*t[e])-5:"Z"===t[e]?i[e]="x":(i[e]=t[e],!t.isArc||"wa"!==t[e]&&"at"!==t[e]||(i[e+5]===i[e+7]&&(i[e+7]+=t[e+7]>t[e+5]?1:-1),i[e+6]===i[e+8]&&(i[e+8]+=t[e+8]>t[e+6]?1:-1)));return i.join(" ")||"x"},attr:function(t,e){var i,r,s,a,l,h=this.element||{},u=h.style,p=h.nodeName,f=this.renderer,m=this.symbolName,y=this.shadows,v=this.attrSetters,x=this;if(n(t)&&c(e)&&(i=t,t={},t[i]=e),n(t))i=t,x="strokeWidth"===i||"stroke-width"===i?this.strokeweight:this[i];else for(i in t)if(r=t[i],l=!1,s=v[i]&&v[i].call(this,r,i),s!==!1&&null!==r){if(s!==_&&(r=s),m&&/^(x|y|r|start|end|width|height|innerR|anchorX|anchorY)/.test(i))a||(this.symbolAttr(t),a=!0),l=!0;else if("d"===i){if(r=r||[],this.d=r.join(" "),h.path=r=this.pathToVML(r),y)for(s=y.length;s--;)y[s].path=y[s].cutOff?this.cutOffPath(r,y[s].cutOff):r;l=!0}else if("visibility"===i){if(y)for(s=y.length;s--;)y[s].style[i]=r;"DIV"===p&&(r="hidden"===r?"-999em":0,ke||(u[i]=r?"visible":"hidden"),i="top"),u[i]=r,l=!0}else"zIndex"===i?(r&&(u[i]=r),l=!0):-1!==Ye(i,["x","y","width","height"])?(this[i]=r,"x"===i||"y"===i?i={x:"left",y:"top"}[i]:r=ue(0,r),this.updateClipping?(this[i]=r,this.updateClipping()):u[i]=r,l=!0):"class"===i&&"DIV"===p?h.className=r:"stroke"===i?(r=f.color(r,h,i),i="strokecolor"):"stroke-width"===i||"strokeWidth"===i?(h.stroked=r?!0:!1,i="strokeweight",this[i]=r,o(r)&&(r+="px")):"dashstyle"===i?((h.getElementsByTagName("stroke")[0]||g(f.prepVML([""]),null,null,h))[i]=r||"solid",this.dashstyle=r,l=!0):"fill"===i?"SPAN"===p?u.color=r:"IMG"!==p&&(h.filled=r!==Be?!0:!1,r=f.color(r,h,i,this),i="fillcolor"):"opacity"===i?l=!0:"shape"===p&&"rotation"===i?(this[i]=h.style[i]=r,h.style.left=-he(me(r*ve)+1)+"px",h.style.top=he(ge(r*ve))+"px"):("translateX"===i||"translateY"===i||"rotation"===i)&&(this[i]=r,this.updateTransform(),l=!0);l||(ke?h[i]=r:d(h,i,r))}return x},clip:function(t){var e,i=this;return t?(e=t.members,h(e,i),e.push(i),i.destroyClip=function(){h(e,i)},t=t.getCSS(i)):(i.destroyClip&&i.destroyClip(),t={clip:ke?"inherit":"rect(auto)"}),i.css(t)},css:O.prototype.htmlCss,safeRemoveChild:function(t){t.parentNode&&L(t)},destroy:function(){return this.destroyClip&&this.destroyClip(),O.prototype.destroy.apply(this)},on:function(t,e){return this.element["on"+t]=function(){var t=ae.event;t.target=t.srcElement,e(t)},this},cutOffPath:function(t,e){var n,t=t.split(/[ ,]/);return n=t.length,(9===n||11===n)&&(t[n-4]=t[n-2]=i(t[n-2])-10*e),t.join(" ")},shadow:function(t,e,n){var r,s,o,a,l,h,c,d=[],u=this.element,f=this.renderer,m=u.style,y=u.path;if(y&&"string"!=typeof y.value&&(y="x"),l=y,t){for(h=p(t.width,3),c=(t.opacity||.15)/h,r=1;3>=r;r++)a=2*h+1-2*r,n&&(l=this.cutOffPath(y.value,a+.5)),o=[''],s=g(f.prepVML(o),null,{left:i(m.left)+p(t.offsetX,1),top:i(m.top)+p(t.offsetY,1)}),n&&(s.cutOff=a+1),o=[''],g(f.prepVML(o),null,null,s),e?e.element.appendChild(s):u.parentNode.insertBefore(s,u),d.push(s);this.shadows=d}return this}},li=m(O,li);var hi={Element:li,isIE8:xe.indexOf("MSIE 8.0")>-1,init:function(t,e,i){var n,r;if(this.alignedObjects=[],n=this.createElement(ze),r=n.element,r.style.position="relative",t.appendChild(n.element),this.isVML=!0,this.box=r,this.boxWrapper=n,this.cache={},this.setSize(e,i,!1),!oe.namespaces.hcv){oe.namespaces.add("hcv","urn:schemas-microsoft-com:vml");try{oe.createStyleSheet().cssText="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}catch(s){oe.styleSheets[0].cssText+="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}}},isHidden:function(){return!this.box.offsetWidth},clipRect:function(e,i,n,s){var o=this.createElement(),a=r(e);return t(o,{members:[],left:(a?e.x:e)+1,top:(a?e.y:i)+1,width:(a?e.width:n)-1,height:(a?e.height:s)-1,getCSS:function(e){var i=e.element,n=i.nodeName,e=e.inverted,r=this.top-("shape"===n?i.offsetTop:0),s=this.left,i=s+this.width,o=r+this.height,r={clip:"rect("+he(e?s:r)+"px,"+he(e?o:i)+"px,"+he(e?i:o)+"px,"+he(e?r:s)+"px)"};return!e&&ke&&"DIV"===n&&t(r,{width:i+"px",height:o+"px"}),r},updateClipping:function(){je(o.members,function(t){t.css(o.getCSS(t))})}})},color:function(t,e,i,n){var r,s,o,a=this,l=/^rgba/,h=Be;if(t&&t.linearGradient?o="gradient":t&&t.radialGradient&&(o="pattern"),o){var c,d,u,p,f,m,y,v,x=t.linearGradient||t.radialGradient,b="",t=t.stops,w=[],k=function(){s=[''],g(a.prepVML(s),null,null,e)};if(u=t[0],v=t[t.length-1],u[0]>0&&t.unshift([0,u[1]]),v[0]<1&&t.push([1,v[1]]),je(t,function(t,e){l.test(t[1])?(r=oi(t[1]),c=r.get("rgb"),d=r.get("a")):(c=t[1],d=1),w.push(100*t[0]+"% "+c),e?(f=d,m=c):(p=d,y=c)}),"fill"===i)if("gradient"===o)i=x.x1||x[0]||0,t=x.y1||x[1]||0,u=x.x2||x[2]||0,x=x.y2||x[3]||0,b='angle="'+(90-180*le.atan((x-t)/(u-i))/ye)+'"',k();else{var S,h=x.r,T=2*h,C=2*h,P=x.cx,A=x.cy,L=e.radialReference,h=function(){L&&(S=n.getBBox(),P+=(L[0]-S.x)/S.width-.5,A+=(L[1]-S.y)/S.height-.5,T*=L[2]/S.width,C*=L[2]/S.height),b='src="'+X.global.VMLRadialGradientURL+'" size="'+T+","+C+'" origin="0.5,0.5" position="'+P+","+A+'" color2="'+y+'" ',k()};n.added?h():Ze(n,"add",h),h=m}else h=c}else l.test(t)&&"IMG"!==e.tagName?(r=oi(t),s=["<",i,' opacity="',r.get("a"),'"/>'],g(this.prepVML(s),null,null,e),h=r.get("rgb")):(h=e.getElementsByTagName(i),h.length&&(h[0].opacity=1,h[0].type="solid"),h=t);return h},prepVML:function(t){var e=this.isIE8,t=t.join("");return e?(t=t.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />'),t=-1===t.indexOf('style="')?t.replace("/>",' style="display:inline-block;behavior:url(#default#VML);" />'):t.replace('style="','style="display:inline-block;behavior:url(#default#VML);')):t=t.replace("<","1&&s.attr({x:e,y:i,width:n,height:r}),s},rect:function(t,e,i,n,s,o){var a=this.symbol("rect");return a.r=r(t)?t.r:s,a.attr(r(t)?t:a.crisp(o,t,e,ue(i,0),ue(n,0)))},invertChild:function(t,e){var n=e.style;f(t,{flip:"x",left:i(n.width)-1,top:i(n.height)-1,rotation:-90})},symbols:{arc:function(t,e,i,n,r){var s=r.start,o=r.end,a=r.r||i||n,i=r.innerR,n=ge(s),l=me(s),h=ge(o),c=me(o);return o-s===0?["x"]:(s=["wa",t-a,e-a,t+a,e+a,t+a*n,e+a*l,t+a*h,e+a*c],r.open&&!i&&s.push("e","M",t,e),s.push("at",t-i,e-i,t+i,e+i,t+i*h,e+i*c,t+i*n,e+i*l,"x","e"),s.isArc=!0,s)},circle:function(t,e,i,n,r){return r&&(i=n=2*r.r),r&&r.isCircle&&(t-=i/2,e-=n/2),["wa",t,e,t+i,e+n,t+i,e+n/2,t+i,e+n/2,"e"]},rect:function(t,e,i,n,r){var s,o=t+i,a=e+n;return c(r)&&r.r?(s=pe(r.r,i,n),o=["M",t+s,e,"L",o-s,e,"wa",o-2*s,e,o,e+2*s,o-s,e,o,e+s,"L",o,a-s,"wa",o-2*s,a-2*s,o,a,o,a-s,o-s,a,"L",t+s,a,"wa",t,a-2*s,t+2*s,a,t+s,a,t,a-s,"L",t,e+s,"wa",t,e,t+2*s,e+2*s,t,e+s,t+s,e,"x","e"]):o=ai.prototype.symbols.square.apply(0,arguments),o}}};Highcharts.VMLRenderer=li=function(){this.init.apply(this,arguments)},li.prototype=e(ai.prototype,hi),H=li}ai.prototype.measureSpanWidth=function(t,e){var i,n=oe.createElement("span");return i=oe.createTextNode(t),n.appendChild(i),f(n,e),this.box.appendChild(n),i=n.offsetWidth,L(n),i};var ci;Me&&(Highcharts.CanVGRenderer=li=function(){Pe="http://www.w3.org/1999/xhtml"},li.prototype.symbols={},ci=function(){function t(){var t,i=e.length;for(t=0;i>t;t++)e[t]();e=[]}var e=[];return{push:function(i,n){0===e.length&&$e(n,t),e.push(i)}}}(),H=li),R.prototype={addLabel:function(){var e,i=this.axis,n=i.options,r=i.chart,s=i.horiz,a=i.categories,h=i.names,d=this.pos,u=n.labels,f=i.tickPositions,s=s&&a&&!u.step&&!u.staggerLines&&!u.rotation&&r.plotWidth/f.length||!s&&(r.margin[3]||.33*r.chartWidth),g=d===f[0],m=d===f[f.length-1],h=a?p(a[d],h[d],d):d,a=this.label,y=f.info;i.isDatetimeAxis&&y&&(e=n.dateTimeLabelFormats[y.higherRanks[d]||y.unitName]),this.isFirst=g,this.isLast=m,n=i.labelFormatter.call({axis:i,chart:r,isFirst:g,isLast:m,dateTimeLabelFormat:e,value:i.isLog?I(l(h)):h}),d=s&&{width:ue(1,he(s-2*(u.padding||10)))+"px"},d=t(d,u.style),c(a)?a&&a.attr({text:n}).css(d):(e={align:i.labelAlign},o(u.rotation)&&(e.rotation=u.rotation),s&&u.ellipsis&&(e._clipHeight=i.len/f.length),this.label=c(n)&&u.enabled?r.renderer.text(n,0,0,u.useHTML).attr(e).css(d).add(i.labelGroup):null)},getLabelSize:function(){var t=this.label,e=this.axis;return t?t.getBBox()[e.horiz?"height":"width"]:0},getLabelSides:function(){var t=this.label.getBBox(),e=this.axis,i=e.horiz,n=e.options.labels,t=i?t.width:t.height,e=i?t*{left:0,center:.5,right:1}[e.labelAlign]-n.x:t;return[-e,t-e]},handleOverflow:function(t,e){var i,n=!0,r=this.axis,s=this.isFirst,o=this.isLast,a=r.horiz?e.x:e.y,l=r.reversed,h=r.tickPositions,c=this.getLabelSides(),d=c[0],c=c[1],u=r.pos,p=u+r.len,f=this.label.line||0,g=r.labelEdge,m=r.justifyLabels&&(s||o);return g[f]===_||a+d>g[f]?g[f]=a+c:m||(n=!1),m&&(i=(r=r.ticks[h[t+(s?1:-1)]])&&r.label.xy&&r.label.xy.x+r.getLabelSides()[s?0:1],h=i,s&&!l||o&&l?u>a+d&&(a=u-d,r&&a+c>h&&(n=!1)):a+c>p&&(a=p-c,r&&h>a+d&&(n=!1)),e.x=a),n},getPosition:function(t,e,i,n){var r=this.axis,s=r.chart,o=n&&s.oldChartHeight||s.chartHeight;return{x:t?r.translate(e+i,null,null,n)+r.transB:r.left+r.offset+(r.opposite?(n&&s.oldChartWidth||s.chartWidth)-r.right-r.left:0),y:t?o-r.bottom+r.offset-(r.opposite?r.height:0):o-r.translate(e+i,null,null,n)-r.transB}},getLabelPosition:function(t,e,i,n,r,s,o,a){var l=this.axis,h=l.transA,d=l.reversed,u=l.staggerLines,p=l.chart.renderer.fontMetrics(r.style.fontSize).b,f=r.rotation,t=t+r.x-(s&&n?s*h*(d?-1:1):0),e=e+r.y-(s&&!n?s*h*(d?1:-1):0);return f&&2===l.side&&(e-=p-p*ge(f*ve)),!c(r.y)&&!f&&(e+=p-i.getBBox().height/2),u&&(i.line=o/(a||1)%u,e+=i.line*(l.labelOffset/u)),{x:t,y:e}},getMarkPath:function(t,e,i,n,r,s){return s.crispLine(["M",t,e,"L",t+(r?0:-i),e+(r?i:0)],n)},render:function(t,e,i){var n=this.axis,r=n.options,s=n.chart.renderer,o=n.horiz,a=this.type,l=this.label,h=this.pos,c=r.labels,d=this.gridLine,u=a?a+"Grid":"grid",f=a?a+"Tick":"tick",g=r[u+"LineWidth"],m=r[u+"LineColor"],y=r[u+"LineDashStyle"],v=r[f+"Length"],u=r[f+"Width"]||0,x=r[f+"Color"],b=r[f+"Position"],f=this.mark,w=c.step,k=!0,S=n.tickmarkOffset,T=this.getPosition(o,h,S,e),C=T.x,T=T.y,P=o&&C===n.pos+n.len||!o&&T===n.pos?-1:1;this.isActive=!0,g&&(h=n.getPlotLinePath(h+S,g*P,e,!0),d===_&&(d={stroke:m,"stroke-width":g},y&&(d.dashstyle=y),a||(d.zIndex=1),e&&(d.opacity=0),this.gridLine=d=g?s.path(h).attr(d).add(n.gridGroup):null),!e&&d&&h&&d[this.isNew?"attr":"animate"]({d:h,opacity:i})),u&&v&&("inside"===b&&(v=-v),n.opposite&&(v=-v),a=this.getMarkPath(C,T,v,u*P,o,s),f?f.animate({d:a,opacity:i}):this.mark=s.path(a).attr({stroke:x,"stroke-width":u,opacity:i}).add(n.axisGroup)),l&&!isNaN(C)&&(l.xy=T=this.getLabelPosition(C,T,l,o,c,S,t,w),this.isFirst&&!this.isLast&&!p(r.showFirstLabel,1)||this.isLast&&!this.isFirst&&!p(r.showLastLabel,1)?k=!1:!n.isRadial&&!c.step&&!c.rotation&&!e&&0!==i&&(k=this.handleOverflow(t,T)),w&&t%w&&(k=!1),k&&!isNaN(T.y)?(T.opacity=i,l[this.isNew?"attr":"animate"](T),this.isNew=!1):l.attr("y",-9999))},destroy:function(){A(this,this.axis)}};var di=function(t,e){this.axis=t,e&&(this.options=e,this.id=e.id)};di.prototype={render:function(){var t,i=this,n=i.axis,r=n.horiz,s=(n.pointRange||0)/2,o=i.options,l=o.label,h=i.label,d=o.width,u=o.to,f=o.from,g=c(f)&&c(u),m=o.value,y=o.dashStyle,v=i.svgElem,x=[],b=o.color,w=o.zIndex,k=o.events,S=n.chart.renderer;if(n.isLog&&(f=a(f),u=a(u),m=a(m)),d)x=n.getPlotLinePath(m,d),s={stroke:b,"stroke-width":d},y&&(s.dashstyle=y);else{if(!g)return;f=ue(f,n.min-s),u=pe(u,n.max+s),x=n.getPlotBandPath(f,u,o),s={fill:b},o.borderWidth&&(s.stroke=o.borderColor,s["stroke-width"]=o.borderWidth)}if(c(w)&&(s.zIndex=w),v)x?v.animate({d:x},null,v.onGetPath):(v.hide(),v.onGetPath=function(){v.show()},h&&(i.label=h=h.destroy()));else if(x&&x.length&&(i.svgElem=v=S.path(x).attr(s).add(),k))for(t in o=function(t){v.on(t,function(e){k[t].apply(i,[e])})},k)o(t);return l&&c(l.text)&&x&&x.length&&n.width>0&&n.height>0?(l=e({align:r&&g&&"center",x:r?!g&&4:10,verticalAlign:!r&&g&&"middle",y:r?g?16:10:g?6:-4,rotation:r&&!g&&90},l),h||(i.label=h=S.text(l.text,0,0,l.useHTML).attr({align:l.textAlign||l.align,rotation:l.rotation,zIndex:w}).css(l.style).add()),n=[x[1],x[4],p(x[6],x[1])],x=[x[2],x[5],p(x[7],x[2])],r=C(n),g=C(x),h.align(l,!1,{x:r,y:g,width:P(n)-r,height:P(x)-g}),h.show()):h&&h.hide(),i},destroy:function(){h(this.axis.plotLinesAndBands,this),delete this.axis,A(this)}},z.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S",minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,gridLineColor:"#C0C0C0",labels:Xe,lineColor:"#C0D0E0",lineWidth:1,minPadding:.01,maxPadding:.01,minorGridLineColor:"#E0E0E0",minorGridLineWidth:1,minorTickColor:"#A0A0A0",minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickColor:"#C0D0E0",tickLength:5,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",tickWidth:1,title:{align:"middle",style:{color:"#4d759e",fontWeight:"bold"}},type:"linear"},defaultYAxisOptions:{endOnTick:!0,gridLineWidth:1,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8,y:3},lineWidth:0,maxPadding:.05,minPadding:.05,startOnTick:!0,tickWidth:0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return y(this.total,-1)},style:Xe.style}},defaultLeftAxisOptions:{labels:{x:-8,y:null},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:8,y:null},title:{rotation:90}},defaultBottomAxisOptions:{labels:{x:0,y:14},title:{rotation:0}},defaultTopAxisOptions:{labels:{x:0,y:-5},title:{rotation:0}},init:function(t,e){var i=e.isX;this.horiz=t.inverted?!i:i,this.coll=(this.isXAxis=i)?"xAxis":"yAxis",this.opposite=e.opposite,this.side=e.side||(this.horiz?this.opposite?0:2:this.opposite?1:3),this.setOptions(e);var n=this.options,r=n.type;this.labelFormatter=n.labels.formatter||this.defaultLabelFormatter,this.userOptions=e,this.minPixelPadding=0,this.chart=t,this.reversed=n.reversed,this.zoomEnabled=n.zoomEnabled!==!1,this.categories=n.categories||"category"===r,this.names=[],this.isLog="logarithmic"===r,this.isDatetimeAxis="datetime"===r,this.isLinked=c(n.linkedTo),this.tickmarkOffset=this.categories&&"between"===n.tickmarkPlacement?.5:0,this.ticks={},this.labelEdge=[],this.minorTicks={},this.plotLinesAndBands=[],this.alternateBands={},this.len=0,this.minRange=this.userMinRange=n.minRange||n.maxZoom,this.range=n.range,this.offset=n.offset||0,this.stacks={},this.oldStacks={},this.stackExtremes={},this.min=this.max=null,this.crosshair=p(n.crosshair,u(t.options.tooltip.crosshairs)[i?0:1],!1);var s,n=this.options.events;-1===Ye(this,t.axes)&&(t.axes.push(this),t[this.coll].push(this)),this.series=this.series||[],t.inverted&&i&&this.reversed===_&&(this.reversed=!0),this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(s in n)Ze(this,s,n[s]);this.isLog&&(this.val2lin=a,this.lin2val=l)},setOptions:function(t){this.options=e(this.defaultOptions,this.isXAxis?{}:this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],e(X[this.coll],t))},defaultLabelFormatter:function(){var t,e=this.axis,i=this.value,n=e.categories,r=this.dateTimeLabelFormat,s=X.lang.numericSymbols,o=s&&s.length,a=e.options.labels.format,e=e.isLog?i:e.tickInterval;if(a)t=b(a,this);else if(n)t=i;else if(r)t=G(r,i);else if(o&&e>=1e3)for(;o--&&t===_;)n=Math.pow(1e3,o+1),e>=n&&null!==s[o]&&(t=y(i/n,-1)+s[o]);return t===_&&(t=i>=1e4?y(i,0):y(i,-1,_,"")),t},getSeriesExtremes:function(){var t=this,e=t.chart;t.hasVisibleSeries=!1,t.dataMin=t.dataMax=null,t.stackExtremes={},t.buildStacks(),je(t.series,function(i){if(i.visible||!e.options.chart.ignoreHiddenSeries){var n;n=i.options.threshold;var r;t.hasVisibleSeries=!0,t.isLog&&0>=n&&(n=null),t.isXAxis?(n=i.xData,n.length&&(t.dataMin=pe(p(t.dataMin,n[0]),C(n)),t.dataMax=ue(p(t.dataMax,n[0]),P(n)))):(i.getExtremes(),r=i.dataMax,i=i.dataMin,c(i)&&c(r)&&(t.dataMin=pe(p(t.dataMin,i),i),t.dataMax=ue(p(t.dataMax,r),r)),c(n)&&(t.dataMin>=n?(t.dataMin=n,t.ignoreMinPadding=!0):t.dataMaxt||t>h+this.width)&&(a=!0)):(t=h,i=u-this.right,(c>s||s>c+this.height)&&(a=!0)),a&&!n?null:l.renderer.crispLine(["M",t,s,"L",i,o],e||1)},getLinearTickPositions:function(t,e,i){for(var n,e=I(ce(e/t)*t),i=I(de(i/t)*t),r=[];i>=e&&(r.push(e),e=I(e+t),e!==n);)n=e;return r},getMinorTickPositions:function(){var t,e=this.options,i=this.tickPositions,n=this.minorTickInterval,r=[];if(this.isLog)for(t=i.length,e=1;t>e;e++)r=r.concat(this.getLogTickPositions(n,i[e-1],i[e],!0));else if(this.isDatetimeAxis&&"auto"===e.minorTickInterval)r=r.concat(this.getTimeTicks(this.normalizeTimeTickInterval(n),this.min,this.max,e.startOfWeek)),r[0]=this.minRange;if(this.isXAxis&&this.minRange===_&&!this.isLog&&(c(o.min)||c(o.max)?this.minRange=null:(je(this.series,function(t){for(r=t.xData,i=s=t.xIncrement?1:r.length-1;i>0;i--)n=r[i]-r[i-1],(e===_||e>n)&&(e=n)}),this.minRange=pe(5*e,this.dataMax-this.dataMin))),l-al-a&&(t[0]=l-d,t[1]=p(o.min,l-d),a=P(t))}this.min=a,this.max=l},setAxisTranslation:function(t){var e,i=this.max-this.min,r=0,s=0,o=0,a=this.linkedParent,l=!!this.categories,h=this.transA;(this.isXAxis||l)&&(a?(s=a.minPointOffset,o=a.pointRangePadding):je(this.series,function(t){var a=ue(t.pointRange,+l),h=t.options.pointPlacement,d=t.closestPointRange;a>i&&(a=0),r=ue(r,a),s=ue(s,n(h)?0:a/2),o=ue(o,"on"===h?0:a),!t.noSharedTooltip&&c(d)&&(e=c(e)?pe(e,d):d)}),a=this.ordinalSlope&&e?this.ordinalSlope/e:1,this.minPointOffset=s*=a,this.pointRangePadding=o*=a,this.pointRange=pe(r,i),this.closestPointRange=e),t&&(this.oldTransA=h),this.translationSlope=this.transA=h=this.len/(i+o||1),this.transB=this.horiz?this.left:this.bottom,this.minPixelPadding=h*s},setTickPositions:function(t){var e,i=this,n=i.chart,r=i.options,s=i.isLog,o=i.isDatetimeAxis,l=i.isXAxis,h=i.isLinked,d=i.options.tickPositioner,u=r.maxPadding,f=r.minPadding,g=r.tickInterval,m=r.minTickInterval,y=r.tickPixelInterval,v=i.categories;h?(i.linkedParent=n[i.coll][r.linkedTo],n=i.linkedParent.getExtremes(),i.min=p(n.min,n.dataMin),i.max=p(n.max,n.dataMax),r.type!==i.linkedParent.options.type&&M(11,1)):(i.min=p(i.userMin,r.min,i.dataMin),i.max=p(i.userMax,r.max,i.dataMax)),s&&(!t&&pe(i.min,p(i.dataMin,i.min))<=0&&M(10,1),i.min=I(a(i.min)),i.max=I(a(i.max))),i.range&&c(i.max)&&(i.userMin=i.min=ue(i.min,i.max-i.range),i.userMax=i.max,i.range=null),i.beforePadding&&i.beforePadding(),i.adjustForMinRange(),!v&&!i.usePercentage&&!h&&c(i.min)&&c(i.max)&&(n=i.max-i.min)&&(c(r.min)||c(i.userMin)||!f||!(i.dataMin<0)&&i.ignoreMinPadding||(i.min-=n*f),c(r.max)||c(i.userMax)||!u||!(i.dataMax>0)&&i.ignoreMaxPadding||(i.max+=n*u)),i.min===i.max||void 0===i.min||void 0===i.max?i.tickInterval=1:h&&!g&&y===i.linkedParent.options.tickPixelInterval?i.tickInterval=i.linkedParent.tickInterval:(i.tickInterval=p(g,v?1:(i.max-i.min)*y/ue(i.len,y)),!c(g)&&i.lenue(2*i.len,200)&&M(19,!0),t=o?i.getTimeTicks(i.normalizeTimeTickInterval(i.tickInterval,r.units),i.min,i.max,r.startOfWeek,i.ordinalPositions,i.closestPointRange,!0):s?i.getLogTickPositions(i.tickInterval,i.min,i.max):i.getLinearTickPositions(i.tickInterval,i.min,i.max),e&&t.splice(1,t.length-2),i.tickPositions=t),h||(s=t[0],o=t[t.length-1],h=i.minPointOffset||0,r.startOnTick?i.min=s:i.min-h>s&&t.shift(),r.endOnTick?i.max=o:i.max+h(e[n]||0)&&this.options.alignTicks!==!1&&(e[n]=i.length),t.maxTicks=e},adjustTickAmount:function(){var t=this._maxTicksKey,e=this.tickPositions,i=this.chart.maxTicks;if(i&&i[t]&&!this.isDatetimeAxis&&!this.categories&&!this.isLinked&&this.options.alignTicks!==!1&&this.min!==_){var n=this.tickAmount,r=e.length;if(this.tickAmount=t=i[t],t>r){for(;e.length=this.dataMax&&(e=_)),this.displayBtn=t!==_||e!==_,this.setExtremes(t,e,!1,_,{trigger:"zoom"}),!0},setAxisSize:function(){var t,e,i=this.chart,n=this.options,r=n.offsetLeft||0,s=n.offsetRight||0,o=this.horiz;this.left=e=p(n.left,i.plotLeft+r),this.top=t=p(n.top,i.plotTop),this.width=r=p(n.width,i.plotWidth-r+s),this.height=n=p(n.height,i.plotHeight),this.bottom=i.chartHeight-n-t,this.right=i.chartWidth-r-e,this.len=ue(o?r:n,0),this.pos=o?e:t},getExtremes:function(){var t=this.isLog;return{min:t?I(l(this.min)):this.min,max:t?I(l(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(t){var e=this.isLog,i=e?l(this.min):this.min,e=e?l(this.max):this.max;return i>t||null===t?t=i:t>e&&(t=e),this.translate(t,0,1,0,1)},autoLabelAlign:function(t){return t=(p(t,0)-90*this.side+720)%360,t>15&&165>t?"right":t>195&&345>t?"left":"center"},getOffset:function(){var t,e,i,n,r,s,o,a=this,l=a.chart,h=l.renderer,d=a.options,u=a.tickPositions,f=a.ticks,g=a.horiz,m=a.side,y=l.inverted?[1,0,3,2][m]:m,v=0,x=0,b=d.title,w=d.labels,k=0,S=l.axisOffset,T=l.clipOffset,C=[-1,1,1,-1][m],P=1,A=p(w.maxStaggerLines,5);if(a.hasData=t=a.hasVisibleSeries||c(a.min)&&c(a.max)&&!!u,a.showAxis=l=t||p(d.showEmpty,!0),a.staggerLines=a.horiz&&w.staggerLines,a.axisGroup||(a.gridGroup=h.g("grid").attr({zIndex:d.gridZIndex||1}).add(),a.axisGroup=h.g("axis").attr({zIndex:d.zIndex||2}).add(),a.labelGroup=h.g("axis-labels").attr({zIndex:w.zIndex||7}).add()),t||a.isLinked){if(a.labelAlign=p(w.align||a.autoLabelAlign(w.rotation)),je(u,function(t){f[t]?f[t].addLabel():f[t]=new R(a,t)}),a.horiz&&!a.staggerLines&&A&&!w.rotation){for(i=a.reversed?[].concat(u).reverse():u;A>P;){for(t=[],n=!1,w=0;w1&&(a.staggerLines=P)}je(u,function(t){(0===m||2===m||{1:"left",3:"right"}[m]===a.labelAlign)&&(k=ue(f[t].getLabelSize(),k))}),a.staggerLines&&(k*=a.staggerLines,a.labelOffset=k)}else for(i in f)f[i].destroy(),delete f[i];b&&b.text&&b.enabled!==!1&&(a.axisTitle||(a.axisTitle=h.text(b.text,0,0,b.useHTML).attr({zIndex:7,rotation:b.rotation||0,align:b.textAlign||{low:"left",middle:"center",high:"right"}[b.align]}).css(b.style).add(a.axisGroup),a.axisTitle.isNew=!0),l&&(v=a.axisTitle.getBBox()[g?"height":"width"],x=p(b.margin,g?5:10),e=b.offset),a.axisTitle[l?"show":"hide"]()),a.offset=C*p(d.offset,S[m]),a.axisTitleMargin=p(e,k+x+(2!==m&&k&&C*d.labels[g?"y":"x"])),S[m]=ue(S[m],a.axisTitleMargin+v+C*a.offset),T[y]=ue(T[y],2*ce(d.lineWidth/2))},getLinePath:function(t){var e=this.chart,i=this.opposite,n=this.offset,r=this.horiz,s=this.left+(i?this.width:0)+n,n=e.chartHeight-this.bottom-(i?this.height:0)+n;return i&&(t*=-1),e.renderer.crispLine(["M",r?this.left:s,r?n:this.top,"L",r?e.chartWidth-this.right:s,r?n:e.chartHeight-this.bottom],t)},getTitlePosition:function(){var t=this.horiz,e=this.left,n=this.top,r=this.len,s=this.options.title,o=t?e:n,a=this.opposite,l=this.offset,h=i(s.style.fontSize||12),r={low:o+(t?0:r),middle:o+r/2,high:o+(t?r:0)}[s.align],e=(t?n+this.height:e)+(t?1:-1)*(a?-1:1)*this.axisTitleMargin+(2===this.side?h:0);return{x:t?r:e+(a?this.width:0)+l+(s.x||0),y:t?e-(a?this.height:0)+l:r+(s.y||0)}},render:function(){var t,e,i,n=this,r=n.horiz,s=n.reversed,o=n.chart,a=o.renderer,h=n.options,d=n.isLog,u=n.isLinked,p=n.tickPositions,f=n.axisTitle,g=n.stacks,m=n.ticks,y=n.minorTicks,v=n.alternateBands,x=h.stackLabels,b=h.alternateGridColor,w=n.tickmarkOffset,k=h.lineWidth,S=o.hasRendered&&c(n.oldMin)&&!isNaN(n.oldMin),T=n.hasData,C=n.showAxis,P=n.justifyLabels=!n.staggerLines&&r&&"justify"===h.labels.overflow;if(n.labelEdge.length=0,je([m,y,v],function(t){for(var e in t)t[e].isActive=!1}),(T||u)&&(n.minorTickInterval&&!n.categories&&je(n.getMinorTickPositions(),function(t){y[t]||(y[t]=new R(n,t,"minor")),S&&y[t].isNew&&y[t].render(null,!0),y[t].render(null,!1,1)}),p.length&&(t=p.slice(),(r&&s||!r&&!s)&&t.reverse(),P&&(t=t.slice(1).concat([t[0]])),je(t,function(e,i){P&&(i=i===t.length-1?0:i+1),(!u||e>=n.min&&e<=n.max)&&(m[e]||(m[e]=new R(n,e)),S&&m[e].isNew&&m[e].render(i,!0,.1),m[e].render(i,!1,1))}),w&&0===n.min&&(m[-1]||(m[-1]=new R(n,-1,null,!0)),m[-1].render(-1))),b&&je(p,function(t,r){r%2===0&&t=.5)t=he(t),o=this.getLinearTickPositions(t,e,i);else if(t>=.08)for(var h,c,d,u,f,s=ce(e),r=t>.3?[1,2,4]:t>.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];i+1>s&&!f;s++)for(c=r.length,h=0;c>h&&!f;h++)d=a(l(s)*r[h]),d>e&&(!n||i>=u)&&o.push(u),u>i&&(f=!0),u=d;else e=l(e),i=l(i),t=r[n?"minorTickInterval":"tickInterval"],t=p("auto"===t?null:t,this._minorAutoInterval,(i-e)*(r.tickPixelInterval/(n?5:1))/((n?s/this.tickPositions.length:s)||1)),t=k(t,null,w(t)),o=Ue(this.getLinearTickPositions(t,e,i),a),n||(this._minorAutoInterval=t/5);return n||(this.tickInterval=t),o},z.prototype.getTimeTicks=function(e,i,n,r){var s,o=[],a={},l=X.global.useUTC,h=new Date(i-q),d=e.unitRange,u=e.count;if(c(i)){d>=j.second&&(h.setMilliseconds(0),h.setSeconds(d>=j.minute?0:u*ce(h.getSeconds()/u))),d>=j.minute&&h[ee](d>=j.hour?0:u*ce(h[U]()/u)),d>=j.hour&&h[ie](d>=j.day?0:u*ce(h[Z]()/u)),d>=j.day&&h[ne](d>=j.month?1:u*ce(h[Q]()/u)),d>=j.month&&(h[re](d>=j.year?0:u*ce(h[J]()/u)),s=h[te]()),d>=j.year&&(s-=s%u,h[se](s)),d===j.week&&h[ne](h[Q]()-h[K]()+p(r,1)),i=1,q&&(h=new Date(h.getTime()+q)),s=h[te]();for(var r=h.getTime(),f=h[J](),g=h[Q](),m=l?q:(864e5+6e4*h.getTimezoneOffset())%864e5;n>r;)o.push(r),d===j.year?r=V(s+i*u,0):d===j.month?r=V(s,f+i*u):l||d!==j.day&&d!==j.week?r+=d*u:r=V(s,f,g+i*u*(d===j.day?1:7)),i++;o.push(r),je(Ve(o,function(t){return d<=j.hour&&t%j.day===m}),function(t){a[t]="day"})}return o.info=t(e,{higherRanks:a,totalRange:d*u}),o},z.prototype.normalizeTimeTickInterval=function(t,e){var i,n=e||[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2]],["week",[1,2]],["month",[1,2,3,4,6]],["year",null]],r=n[n.length-1],s=j[r[0]],o=r[1];for(i=0;it&&(o=[1,2,5]),n=k(t/s,o,"year"===r[0]?ue(w(t/s),1):1),{unitRange:s,count:n,unitName:r[0]}},B.prototype={destroy:function(){A(this,this.axis)},render:function(t){var e=this.options,i=e.format,i=i?b(i,this):e.formatter.call(this);this.label?this.label.attr({text:i,visibility:"hidden"}):this.label=this.axis.chart.renderer.text(i,0,0,e.useHTML).css(e.style).attr({align:this.textAlign,rotation:e.rotation,visibility:"hidden"}).add(t)},setOffset:function(t,e){var i=this.axis,n=i.chart,r=n.inverted,s=this.isNegative,o=i.translate(this.percent?100:this.total,0,0,0,1),i=i.translate(0),i=fe(o-i),a=n.xAxis[0].translate(this.x)+t,l=n.plotHeight,s={x:r?s?o:o-i:a,y:r?l-a-e:s?l-o-i:l-o,width:r?i:e,height:r?e:i};(r=this.label)&&(r.align(this.alignOptions,null,s),s=r.alignAttr,r.attr({visibility:this.options.crop===!1||n.isInsidePlot(s.x,s.y)?Ae?"inherit":"visible":"hidden"}))}},F.prototype={init:function(t,e){var n=e.borderWidth,r=e.style,s=i(r.padding);this.chart=t,this.options=e,this.crosshairs=[],this.now={x:0,y:0},this.isHidden=!0,this.label=t.renderer.label("",0,0,e.shape,null,null,e.useHTML,null,"tooltip").attr({padding:s,fill:e.backgroundColor,"stroke-width":n,r:e.borderRadius,zIndex:8}).css(r).css({padding:0}).add().attr({y:-999}),Me||this.label.shadow(e.shadow),this.shared=e.shared},destroy:function(){this.label&&(this.label=this.label.destroy()),clearTimeout(this.hideTimer),clearTimeout(this.tooltipTimeout)},move:function(e,i,n,r){var s=this,o=s.now,a=s.options.animation!==!1&&!s.isHidden;t(o,{x:a?(2*o.x+e)/3:e,y:a?(o.y+i)/2:i,anchorX:a?(2*o.anchorX+n)/3:n,anchorY:a?(o.anchorY+r)/2:r}),s.label.attr(o),a&&(fe(e-o.x)>1||fe(i-o.y)>1)&&(clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){s&&s.move(e,i,n,r)},32))},hide:function(){var t,e=this;clearTimeout(this.hideTimer),this.isHidden||(t=this.chart.hoverPoints,this.hideTimer=setTimeout(function(){e.label.fadeOut(),e.isHidden=!0},p(this.options.hideDelay,500)),t&&je(t,function(t){t.setState()}),this.chart.hoverPoints=null)},getAnchor:function(t,e){var i,n,r=this.chart,s=r.inverted,o=r.plotTop,a=0,l=0,t=u(t);return i=t[0].tooltipPos,this.followPointer&&e&&(e.chartX===_&&(e=r.pointer.normalize(e)),i=[e.chartX-r.plotLeft,e.chartY-o]),i||(je(t,function(t){n=t.series.yAxis,a+=t.plotX,l+=(t.plotLow?(t.plotLow+t.plotHigh)/2:t.plotY)+(!s&&n?n.top-o:0)}),a/=t.length,l/=t.length,i=[s?r.plotWidth-l:a,this.shared&&!s&&t.length>1&&e?e.chartY-o:s?r.plotHeight-a:l]),Ue(i,he)},getPosition:function(t,e,i){var n,r=this.chart,s=r.plotLeft,o=r.plotTop,a=r.plotWidth,l=r.plotHeight,h=p(this.options.distance,12),c=i.plotX,i=i.plotY,r=c+s+(r.inverted?h:-t-h),d=i-e+o+15;return 7>r&&(r=s+ue(c,0)+h),r+t>s+a&&(r-=r+t-(s+a),d=i-e+o-h,n=!0),o+5>d&&(d=o+5,n&&i>=d&&d+e>=i&&(d=i+o+h)),d+e>o+l&&(d=ue(o,o+l-e-h)),{x:r,y:d}},defaultFormatter:function(t){var e,i=this.points||u(this),n=i[0].series;return e=[n.tooltipHeaderFormatter(i[0])],je(i,function(t){n=t.series,e.push(n.tooltipFormatter&&n.tooltipFormatter(t)||t.point.tooltipFormatter(n.tooltipOptions.pointFormat))}),e.push(t.options.footerFormat||""),e.join("")},refresh:function(t,e){var i,n,r,s=this.chart,o=this.label,a=this.options,l={},h=[];r=a.formatter||this.defaultFormatter;var c,l=s.hoverPoints,d=this.shared;clearTimeout(this.hideTimer),this.followPointer=u(t)[0].series.tooltipOptions.followPointer,n=this.getAnchor(t,e),i=n[0],n=n[1],!d||t.series&&t.series.noSharedTooltip?l=t.getLabelConfig():(s.hoverPoints=t,l&&je(l,function(t){t.setState()}),je(t,function(t){t.setState("hover"),h.push(t.getLabelConfig())}),l={x:t[0].category,y:t[0].y},l.points=h,t=t[0]),r=r.call(l,this),l=t.series,r===!1?this.hide():(this.isHidden&&(ei(o),o.attr("opacity",1).show()),o.attr({text:r}),c=a.borderColor||t.color||l.color||"#606060",o.attr({stroke:c}),this.updatePosition({plotX:i,plotY:n}),this.isHidden=!1),Qe(s,"tooltipRefresh",{text:r,x:i+s.plotLeft,y:n+s.plotTop,borderColor:c})},updatePosition:function(t){var e=this.chart,i=this.label,i=(this.options.positioner||this.getPosition).call(this,i.width,i.height,t);this.move(he(i.x),he(i.y),t.plotX+e.plotLeft,t.plotY+e.plotTop)}};var ui=Highcharts.Pointer=function(t,e){this.init(t,e)};if(ui.prototype={init:function(t,e){var i,n=e.chart,r=n.events,s=Me?"":n.zoomType,n=t.inverted;this.options=e,this.chart=t,this.zoomX=i=/x/.test(s),this.zoomY=s=/y/.test(s),this.zoomHor=i&&!n||s&&n,this.zoomVert=s&&!n||i&&n,this.runChartClick=r&&!!r.click,this.pinchDown=[],this.lastValidTouch={},e.tooltip.enabled&&(t.tooltip=new F(t,e.tooltip)),this.setDOMEvents()},normalize:function(e,i){var n,r,e=e||ae.event;return e.target||(e.target=e.srcElement),e=Je(e),r=e.touches?e.touches.item(0):e,i||(this.chartPosition=i=qe(this.chart.container)),r.pageX===_?(n=ue(e.x,e.clientX-i.left),r=e.y):(n=r.pageX-i.left,r=r.pageY-i.top),t(e,{chartX:he(n),chartY:he(r)})},getCoordinates:function(t){var e={xAxis:[],yAxis:[]};return je(this.chart.axes,function(i){e[i.isXAxis?"xAxis":"yAxis"].push({axis:i,value:i.toValue(t[i.horiz?"chartX":"chartY"])})}),e},getIndex:function(t){var e=this.chart;return e.inverted?e.plotHeight+e.plotTop-t.chartY:t.chartX-e.plotLeft},runPointActions:function(t){var e,i,n,r,s=this,o=s.chart,a=o.series,l=o.tooltip,h=o.hoverPoint,c=o.hoverSeries,d=o.chartWidth,u=s.getIndex(t);if(l&&s.options.tooltip.shared&&(!c||!c.noSharedTooltip)){for(i=[],n=a.length,r=0;n>r;r++)a[r].visible&&a[r].options.enableMouseTracking!==!1&&!a[r].noSharedTooltip&&a[r].tooltipPoints.length&&(e=a[r].tooltipPoints[u])&&e.series&&(e._dist=fe(u-e.clientX),d=pe(d,e._dist),i.push(e));for(n=i.length;n--;)i[n]._dist>d&&i.splice(n,1);i.length&&i[0].clientX!==s.hoverX&&(l.refresh(i,t),s.hoverX=i[0].clientX)}c&&c.tracker?(e=c.tooltipPoints[u])&&e!==h&&e.onMouseOver(t):l&&l.followPointer&&!l.isHidden&&(a=l.getAnchor([{}],t),l.updatePosition({plotX:a[0],plotY:a[1]})),l&&!s._onDocumentMouseMove&&(s._onDocumentMouseMove=function(t){s.onDocumentMouseMove(t)},Ze(oe,"mousemove",s._onDocumentMouseMove)),je(o.axes,function(i){i.drawCrosshair(t,p(h,e))})},reset:function(t){var e=this.chart,i=e.hoverSeries,n=e.hoverPoint,r=e.tooltip,s=r&&r.shared?e.hoverPoints:n;(t=t&&r&&s)&&u(s)[0].plotX===_&&(t=!1),t?(r.refresh(s),n&&n.setState(n.state,!0)):(n&&n.onMouseOut(),i&&i.onMouseOut(),r&&r.hide(),this._onDocumentMouseMove&&(Ke(oe,"mousemove",this._onDocumentMouseMove),this._onDocumentMouseMove=null),je(e.axes,function(t){t.hideCrosshair()}),this.hoverX=null)},scaleGroups:function(t,e){var i,n=this.chart;je(n.series,function(r){i=t||r.getPlotBox(),r.xAxis&&r.xAxis.zoomEnabled&&(r.group.attr(i),r.markerGroup&&(r.markerGroup.attr(i),r.markerGroup.clip(e?n.clipRect:null)),r.dataLabelsGroup&&r.dataLabelsGroup.attr(i))}),n.clipRect.attr(e||n.clipBox)},pinchTranslate:function(t,e,i,n,r,s,o,a){t&&this.pinchTranslateDirection(!0,i,n,r,s,o,a),e&&this.pinchTranslateDirection(!1,i,n,r,s,o,a)},pinchTranslateDirection:function(t,e,i,n,r,s,o,a){var l,h,c,d=this.chart,u=t?"x":"y",p=t?"X":"Y",f="chart"+p,g=t?"width":"height",m=d["plot"+(t?"Left":"Top")],y=a||1,v=d.inverted,x=d.bounds[t?"h":"v"],b=1===e.length,w=e[0][f],k=i[0][f],S=!b&&e[1][f],T=!b&&i[1][f],i=function(){!b&&fe(w-S)>20&&(y=a||fe(k-T)/fe(w-S)),h=(m-k)/y+w,l=d["plot"+(t?"Width":"Height")]/y};i(),e=h,ex.max&&(e=x.max-l,c=!0),c?(k-=.8*(k-o[u][0]),b||(T-=.8*(T-o[u][1])),i()):o[u]=[k,T],v||(s[u]=h-m,s[g]=l),s=v?1/y:y,r[g]=l,r[u]=e,n[v?t?"scaleY":"scaleX":"scale"+p]=y,n["translate"+p]=s*m+(k-s*w)},pinch:function(e){var i=this,n=i.chart,r=i.pinchDown,s=n.tooltip&&n.tooltip.options.followTouchMove,o=e.touches,a=o.length,l=i.lastValidTouch,h=i.zoomHor||i.pinchHor,c=i.zoomVert||i.pinchVert,d=h||c,u=i.selectionMarker,p={},f=1===a&&(i.inClass(e.target,"highcharts-tracker")&&n.runTrackerClick||n.runChartClick),g={};(d||s)&&!f&&e.preventDefault(),Ue(o,function(t){return i.normalize(t)}),"touchstart"===e.type?(je(o,function(t,e){r[e]={chartX:t.chartX,chartY:t.chartY}}),l.x=[r[0].chartX,r[1]&&r[1].chartX],l.y=[r[0].chartY,r[1]&&r[1].chartY],je(n.axes,function(t){if(t.zoomEnabled){var e=n.bounds[t.horiz?"h":"v"],i=t.minPixelPadding,r=t.toPixels(t.dataMin),s=t.toPixels(t.dataMax),o=pe(r,s),r=ue(r,s);e.min=pe(t.pos,o-i),e.max=ue(t.pos+t.len,r+i)}})):r.length&&(u||(i.selectionMarker=u=t({destroy:Oe},n.plotBox)),i.pinchTranslate(h,c,r,o,p,u,g,l),i.hasPinched=d,i.scaleGroups(p,g),!d&&s&&1===a&&this.runPointActions(i.normalize(e)))},dragStart:function(t){var e=this.chart;e.mouseIsDown=t.type,e.cancelClick=!1,e.mouseDownX=this.mouseDownX=t.chartX,e.mouseDownY=this.mouseDownY=t.chartY},drag:function(t){var e,i=this.chart,n=i.options.chart,r=t.chartX,s=t.chartY,o=this.zoomHor,a=this.zoomVert,l=i.plotLeft,h=i.plotTop,c=i.plotWidth,d=i.plotHeight,u=this.mouseDownX,p=this.mouseDownY;l>r?r=l:r>l+c&&(r=l+c),h>s?s=h:s>h+d&&(s=h+d),this.hasDragged=Math.sqrt(Math.pow(u-r,2)+Math.pow(p-s,2)),this.hasDragged>10&&(e=i.isInsidePlot(u-l,p-h),i.hasCartesianSeries&&(this.zoomX||this.zoomY)&&e&&!this.selectionMarker&&(this.selectionMarker=i.renderer.rect(l,h,o?1:c,a?1:d,0).attr({fill:n.selectionMarkerFill||"rgba(69,114,167,0.25)",zIndex:7}).add()),this.selectionMarker&&o&&(r-=u,this.selectionMarker.attr({width:fe(r),x:(r>0?0:r)+u})),this.selectionMarker&&a&&(r=s-p,this.selectionMarker.attr({height:fe(r),y:(r>0?0:r)+p})),e&&!this.selectionMarker&&n.panning&&i.pan(t,n.panning))},drop:function(e){var i=this.chart,n=this.hasPinched;if(this.selectionMarker){var r,s={xAxis:[],yAxis:[],originalEvent:e.originalEvent||e},o=this.selectionMarker,a=o.x,l=o.y;(this.hasDragged||n)&&(je(i.axes,function(t){if(t.zoomEnabled){var e=t.horiz,i=t.toValue(e?a:l),e=t.toValue(e?a+o.width:l+o.height);!isNaN(i)&&!isNaN(e)&&(s[t.coll].push({axis:t,min:pe(i,e),max:ue(i,e)}),r=!0)}}),r&&Qe(i,"selection",s,function(e){i.zoom(t(e,n?{animation:!1}:null))})),this.selectionMarker=this.selectionMarker.destroy(),n&&this.scaleGroups()}i&&(f(i.container,{cursor:i._cursor}),i.cancelClick=this.hasDragged>10,i.mouseIsDown=this.hasDragged=this.hasPinched=!1,this.pinchDown=[])},onContainerMouseDown:function(t){t=this.normalize(t),t.preventDefault&&t.preventDefault(),this.dragStart(t)},onDocumentMouseUp:function(t){this.drop(t)},onDocumentMouseMove:function(t){var e=this.chart,i=this.chartPosition,n=e.hoverSeries,t=this.normalize(t,i);i&&n&&!this.inClass(t.target,"highcharts-tracker")&&!e.isInsidePlot(t.chartX-e.plotLeft,t.chartY-e.plotTop)&&this.reset()},onContainerMouseLeave:function(){this.reset(),this.chartPosition=null},onContainerMouseMove:function(t){var e=this.chart,t=this.normalize(t);"mousedown"===e.mouseIsDown&&this.drag(t),(this.inClass(t.target,"highcharts-tracker")||e.isInsidePlot(t.chartX-e.plotLeft,t.chartY-e.plotTop))&&!e.openMenu&&this.runPointActions(t)},inClass:function(t,e){for(var i;t;){if(i=d(t,"class")){if(-1!==i.indexOf(e))return!0;if(-1!==i.indexOf("highcharts-container"))return!1}t=t.parentNode}},onTrackerMouseOut:function(t){var e=this.chart.hoverSeries,t=t.relatedTarget||t.toElement,i=t.point&&t.point.series;!e||e.options.stickyTracking||this.inClass(t,"highcharts-tooltip")||i===e||e.onMouseOut()},onContainerClick:function(e){var i,n,r,s=this.chart,o=s.hoverPoint,a=s.plotLeft,l=s.plotTop,h=s.inverted,e=this.normalize(e);e.cancelBubble=!0,s.cancelClick||(o&&this.inClass(e.target,"highcharts-tracker")?(i=this.chartPosition,n=o.plotX,r=o.plotY,t(o,{pageX:i.left+a+(h?s.plotWidth-r:n),pageY:i.top+l+(h?s.plotHeight-n:r)}),Qe(o.series,"click",t(e,{point:o})),s.hoverPoint&&o.firePointEvent("click",e)):(t(e,this.getCoordinates(e)),s.isInsidePlot(e.chartX-a,e.chartY-l)&&Qe(s,"click",e)))},onContainerTouchStart:function(t){var e=this.chart;1===t.touches.length?(t=this.normalize(t),e.isInsidePlot(t.chartX-e.plotLeft,t.chartY-e.plotTop)?(this.runPointActions(t),this.pinch(t)):this.reset()):2===t.touches.length&&this.pinch(t)},onContainerTouchMove:function(t){(1===t.touches.length||2===t.touches.length)&&this.pinch(t)},onDocumentTouchEnd:function(t){this.drop(t)},setDOMEvents:function(){var t,e=this,i=e.chart.container;this._events=t=[[i,"onmousedown","onContainerMouseDown"],[i,"onmousemove","onContainerMouseMove"],[i,"onclick","onContainerClick"],[i,"mouseleave","onContainerMouseLeave"],[oe,"mouseup","onDocumentMouseUp"]],Ie&&t.push([i,"ontouchstart","onContainerTouchStart"],[i,"ontouchmove","onContainerTouchMove"],[oe,"touchend","onDocumentTouchEnd"]),je(t,function(t){e["_"+t[2]]=function(i){e[t[2]](i)},0===t[1].indexOf("on")?t[0][t[1]]=e["_"+t[2]]:Ze(t[0],t[1],e["_"+t[2]])})},destroy:function(){var t=this;je(t._events,function(e){0===e[1].indexOf("on")?e[0][e[1]]=null:Ke(e[0],e[1],t["_"+e[2]])}),delete t._events,clearInterval(t.tooltipTimeout)}},Xe=Highcharts.TrackerMixin={drawTrackerPoint:function(){var t=this,e=t.chart,i=e.pointer,n=t.options.cursor,r=n&&{cursor:n},s=function(i){var n,r=i.target;for(e.hoverSeries!==t&&t.onMouseOver();r&&!n;)n=r.point,r=r.parentNode;n!==_&&n!==e.hoverPoint&&n.onMouseOver(i)};je(t.points,function(t){t.graphic&&(t.graphic.element.point=t),t.dataLabel&&(t.dataLabel.element.point=t)}),t._hasTracking||(je(t.trackerGroups,function(e){t[e]&&(t[e].addClass("highcharts-tracker").on("mouseover",s).on("mouseout",function(t){i.onTrackerMouseOut(t)}).css(r),Ie)&&t[e].on("touchstart",s)}),t._hasTracking=!0)},drawTrackerGraph:function(){var t,e=this,i=e.options,n=i.trackByArea,r=[].concat(n?e.areaPath:e.graphPath),s=r.length,o=e.chart,a=o.pointer,l=o.renderer,h=o.options.tooltip.snap,c=e.tracker,d=i.cursor,u=d&&{cursor:d},d=e.singlePoints,p=function(){o.hoverSeries!==e&&e.onMouseOver()};if(s&&!n)for(t=s+1;t--;)"M"===r[t]&&r.splice(t+1,0,r[t+1]-h,r[t+2],"L"),(t&&"M"===r[t]||t===s)&&r.splice(t,0,"L",r[t-2]+h,r[t-1]);for(t=0;te-6&&e+n-6>s?"":Be}))}))},renderTitle:function(){var t=this.padding,e=this.options.title,i=0;e.text&&(this.title||(this.title=this.chart.renderer.label(e.text,t-3,t-4,null,null,null,null,null,"legend-title").attr({zIndex:1}).css(e.style).add(this.group)),t=this.title.getBBox(),i=t.height,this.offsetWidth=t.width,this.contentGroup.attr({translateY:i})),this.titleHeight=i},renderItem:function(t){var i,n=this,r=n.chart,s=r.renderer,o=n.options,a="horizontal"===o.layout,l=n.symbolWidth,h=o.symbolPadding,c=n.itemStyle,d=n.itemHiddenStyle,u=n.padding,f=a?p(o.itemDistance,8):0,m=!o.rtl,y=o.width,v=o.itemMarginBottom||0,x=n.itemMarginTop,w=n.initialItemX,k=t.legendItem,S=t.series&&t.series.drawLegendSymbol?t.series:t,T=S.options,T=T&&T.showCheckbox,C=o.useHTML;!k&&(t.legendGroup=s.g("legend-item").attr({zIndex:1}).add(n.scrollGroup),S.drawLegendSymbol(n,t),t.legendItem=k=s.text(o.labelFormat?b(o.labelFormat,t):o.labelFormatter.call(t),m?l+h:-h,n.baseline,C).css(e(t.visible?c:d)).attr({align:m?"left":"right",zIndex:2}).add(t.legendGroup),(C?k:t.legendGroup).on("mouseover",function(){t.setState("hover"),k.css(n.options.itemHoverStyle)}).on("mouseout",function(){k.css(t.visible?c:d),t.setState()}).on("click",function(e){var i=function(){t.setVisible()},e={browserEvent:e};t.firePointEvent?t.firePointEvent("legendItemClick",e,i):Qe(t,"legendItemClick",e,i)}),n.colorizeItem(t,t.visible),T)&&(t.checkbox=g("input",{type:"checkbox",checked:t.selected,defaultChecked:t.selected},o.itemCheckboxStyle,r.container),Ze(t.checkbox,"click",function(e){Qe(t,"checkboxClick",{checked:e.target.checked},function(){t.select()})})),s=k.getBBox(),i=t.legendItemWidth=o.itemWidth||t.legendItemWidth||l+h+s.width+f+(T?20:0),o=i,n.itemHeight=l=he(t.legendItemHeight||s.height),a&&n.itemX-w+o>(y||r.chartWidth-2*u-w)&&(n.itemX=w,n.itemY+=x+n.lastLineHeight+v,n.lastLineHeight=0),n.maxItemWidth=ue(n.maxItemWidth,o),n.lastItemY=x+n.itemY+v,n.lastLineHeight=ue(l,n.lastLineHeight),t._legendItemPos=[n.itemX,n.itemY],a?n.itemX+=o:(n.itemY+=x+l+v,n.lastLineHeight=l),n.offsetWidth=y||ue((a?n.itemX-w-f:o)+u,n.offsetWidth)},getAllItems:function(){var t=[];return je(this.chart.series,function(e){var i=e.options;p(i.showInLegend,c(i.linkedTo)?!1:_,!0)&&(t=t.concat(e.legendItems||("point"===i.legendType?e.data:e)))}),t},render:function(){var e,i,n,r,s=this,o=s.chart,a=o.renderer,l=s.group,h=s.box,c=s.options,d=s.padding,u=c.borderWidth,p=c.backgroundColor;s.itemX=s.initialItemX,s.itemY=s.initialItemY,s.offsetWidth=0,s.lastItemY=0,l||(s.group=l=a.g("legend").attr({zIndex:7}).add(),s.contentGroup=a.g().attr({zIndex:1}).add(l),s.scrollGroup=a.g().add(s.contentGroup)),s.renderTitle(),e=s.getAllItems(),T(e,function(t,e){return(t.options&&t.options.legendIndex||0)-(e.options&&e.options.legendIndex||0)}),c.reversed&&e.reverse(),s.allItems=e,s.display=i=!!e.length,je(e,function(t){s.renderItem(t)}),n=c.width||s.offsetWidth,r=s.lastItemY+s.lastLineHeight+s.titleHeight,r=s.handleOverflow(r),(u||p)&&(n+=d,r+=d,h?n>0&&r>0&&(h[h.isNew?"attr":"animate"](h.crisp(null,null,null,n,r)),h.isNew=!1):(s.box=h=a.rect(0,0,n,r,c.borderRadius,u||0).attr({stroke:c.borderColor,"stroke-width":u||0,fill:p||Be}).add(l).shadow(c.shadow),h.isNew=!0),h[i?"show":"hide"]()),s.legendWidth=n,s.legendHeight=r,je(e,function(t){s.positionItem(t)}),i&&l.align(t({width:n,height:r},c),!0,"spacingBox"),o.isResizing||this.positionCheckboxes()},handleOverflow:function(t){var e,i,n=this,r=this.chart,s=r.renderer,o=this.options,a=o.y,a=r.spacingBox.height+("top"===o.verticalAlign?-a:a)-this.padding,l=o.maxHeight,h=this.clipRect,c=o.navigation,d=p(c.animation,!0),u=c.arrowSize||12,f=this.nav,g=this.pages,m=this.allItems; +return"horizontal"===o.layout&&(a/=2),l&&(a=pe(a,l)),g.length=0,t>a&&!o.useHTML?(this.clipHeight=e=a-20-this.titleHeight-this.padding,this.currentPage=p(this.currentPage,1),this.fullHeight=t,je(m,function(t,n){var r=t._legendItemPos[1],s=he(t.legendItem.bBox.height),o=g.length;(!o||r-g[o-1]>e)&&g.push(i||r),n===m.length-1&&r+s-g[o-1]>e&&g.push(r),r!==i&&(i=r)}),h||(h=n.clipRect=s.clipRect(0,this.padding,9999,0),n.contentGroup.clip(h)),h.attr({height:e}),f||(this.nav=f=s.g().attr({zIndex:1}).add(this.group),this.up=s.symbol("triangle",0,0,u,u).on("click",function(){n.scroll(-1,d)}).add(f),this.pager=s.text("",15,10).css(c.style).add(f),this.down=s.symbol("triangle-down",0,0,u,u).on("click",function(){n.scroll(1,d)}).add(f)),n.scroll(0),t=a):f&&(h.attr({height:r.chartHeight}),f.hide(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0),t},scroll:function(t,e){var i=this.pages,n=i.length,r=this.currentPage+t,s=this.clipHeight,o=this.options.navigation,a=o.activeColor,o=o.inactiveColor,l=this.pager,h=this.padding;r>n&&(r=n),r>0&&(e!==_&&D(e,this.chart),this.nav.attr({translateX:h,translateY:s+this.padding+7+this.titleHeight,visibility:"visible"}),this.up.attr({fill:1===r?o:a}).css({cursor:1===r?"default":"pointer"}),l.attr({text:r+"/"+n}),this.down.attr({x:18+this.pager.getBBox().width,fill:r===n?o:a}).css({cursor:r===n?"default":"pointer"}),i=-i[r-1]+this.initialItemY,this.scrollGroup.animate({translateY:i}),this.currentPage=r,this.positionCheckboxes(i))}},li=Highcharts.LegendSymbolMixin={drawRectangle:function(t,e){var i=t.options.symbolHeight||12;e.legendSymbol=this.chart.renderer.rect(0,t.baseline-5-i/2,t.symbolWidth,i,p(t.options.symbolRadius,2)).attr({zIndex:3}).add(e.legendGroup)},drawLineMarker:function(t){var e,i=this.options,n=i.marker;e=t.symbolWidth;var r,s=this.chart.renderer,o=this.legendGroup,t=t.baseline-he(.3*s.fontMetrics(t.options.itemStyle.fontSize).b);i.lineWidth&&(r={"stroke-width":i.lineWidth},i.dashStyle&&(r.dashstyle=i.dashStyle),this.legendLine=s.path(["M",0,t,"L",e,t]).attr(r).add(o)),n&&n.enabled&&(i=n.radius,this.legendSymbol=e=s.symbol(this.symbol,e/2-i,t-i,2*i,2*i).add(o),e.isMarker=!0)}},/Trident\/7\.0/.test(xe)&&x(fi.prototype,"positionItem",function(t,e){var i=this,n=function(){e._legendItemPos&&t.call(i,e)};i.chart.renderer.forExport?n():setTimeout(n)}),N.prototype={init:function(t,i){var n,r=t.series;t.series=null,n=e(X,t),n.series=t.series=r,this.userOptions=t,r=n.chart,this.margin=this.splashArray("margin",r),this.spacing=this.splashArray("spacing",r);var s=r.events;this.bounds={h:{},v:{}},this.callback=i,this.isResizing=0,this.options=n,this.axes=[],this.series=[],this.hasCartesianSeries=r.showAxes;var o,a=this;if(a.index=Re.length,Re.push(a),r.reflow!==!1&&Ze(a,"load",function(){a.initReflow()}),s)for(o in s)Ze(a,o,s[o]);a.xAxis=[],a.yAxis=[],a.animation=Me?!1:p(r.animation,!0),a.pointCount=0,a.counters=new S,a.firstRender()},initSeries:function(t){var e=this.options.chart;return(e=He[t.type||e.type||e.defaultSeriesType])||M(17,!0),e=new e,e.init(this,t),e},isInsidePlot:function(t,e,i){var n=i?e:t,t=i?t:e;return n>=0&&n<=this.plotWidth&&t>=0&&t<=this.plotHeight},adjustTickAmounts:function(){this.options.chart.alignTicks!==!1&&je(this.axes,function(t){t.adjustTickAmount()}),this.maxTicks=null},redraw:function(e){var i,n,r=this.axes,s=this.series,o=this.pointer,a=this.legend,l=this.isDirtyLegend,h=this.isDirtyBox,c=s.length,d=c,u=this.renderer,p=u.isHidden(),f=[];for(D(e,this),p&&this.cloneRenderTo(),this.layOutTitles();d--;)if(e=s[d],e.options.stacking&&(i=!0,e.isDirty)){n=!0;break}if(n)for(d=c;d--;)e=s[d],e.options.stacking&&(e.isDirty=!0);je(s,function(t){t.isDirty&&"point"===t.options.legendType&&(l=!0)}),l&&a.options.enabled&&(a.render(),this.isDirtyLegend=!1),i&&this.getStacks(),this.hasCartesianSeries&&(this.isResizing||(this.maxTicks=null,je(r,function(t){t.setScale()})),this.adjustTickAmounts(),this.getMargins(),je(r,function(t){t.isDirty&&(h=!0)}),je(r,function(e){e.isDirtyExtremes&&(e.isDirtyExtremes=!1,f.push(function(){Qe(e,"afterSetExtremes",t(e.eventArgs,e.getExtremes())),delete e.eventArgs})),(h||i)&&e.redraw()})),h&&this.drawChartBox(),je(s,function(t){t.isDirty&&t.visible&&(!t.isCartesian||t.xAxis)&&t.redraw()}),o&&o.reset&&o.reset(!0),u.draw(),Qe(this,"redraw"),p&&this.cloneRenderTo(!0),je(f,function(t){t.call()})},get:function(t){var e,i,n=this.axes,r=this.series;for(e=0;epe(l.dataMin,l.min)&&o=18&&25>=e&&(e=15)),n&&(n.css({width:(r.width||o)+"px"}).align(t({y:e+s.margin},r),!1,"spacingBox"),!r.floating&&!r.verticalAlign&&(e=de(e+n.getBBox().height))),this.titleOffset=e},getChartSize:function(){var t=this.options.chart,e=this.renderToClone||this.renderTo;this.containerWidth=Ge(e,"width"),this.containerHeight=Ge(e,"height"),this.chartWidth=ue(0,t.width||this.containerWidth||600),this.chartHeight=ue(0,p(t.height,this.containerHeight>19?this.containerHeight:400))},cloneRenderTo:function(t){var e=this.renderToClone,i=this.container;t?e&&(this.renderTo.appendChild(i),L(e),delete this.renderToClone):(i&&i.parentNode===this.renderTo&&this.renderTo.removeChild(i),this.renderToClone=e=this.renderTo.cloneNode(0),f(e,{position:"absolute",top:"-9999px",display:"block"}),oe.body.appendChild(e),i&&e.appendChild(i))},getContainer:function(){var e,r,s,o,a=this.options.chart;this.renderTo=e=a.renderTo,o="highcharts-"+Ee++,n(e)&&(this.renderTo=e=oe.getElementById(e)),e||M(13,!0),r=i(d(e,"data-highcharts-chart")),!isNaN(r)&&Re[r]&&Re[r].destroy(),d(e,"data-highcharts-chart",this.index),e.innerHTML="",e.offsetWidth||this.cloneRenderTo(),this.getChartSize(),r=this.chartWidth,s=this.chartHeight,this.container=e=g(ze,{className:"highcharts-container"+(a.className?" "+a.className:""),id:o},t({position:"relative",overflow:"hidden",width:r+"px",height:s+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)"},a.style),this.renderToClone||e),this._cursor=e.style.cursor,this.renderer=a.forExport?new ai(e,r,s,!0):new H(e,r,s),Me&&this.renderer.create(this,e,r,s)},getMargins:function(){var t,e=this.spacing,i=this.legend,n=this.margin,r=this.options.legend,s=p(r.margin,10),o=r.x,a=r.y,l=r.align,h=r.verticalAlign,d=this.titleOffset;this.resetMargins(),t=this.axisOffset,d&&!c(n[0])&&(this.plotTop=ue(this.plotTop,d+this.options.title.margin+e[0])),i.display&&!r.floating&&("right"===l?c(n[1])||(this.marginRight=ue(this.marginRight,i.legendWidth-o+s+e[1])):"left"===l?c(n[3])||(this.plotLeft=ue(this.plotLeft,i.legendWidth+o+s+e[3])):"top"===h?c(n[0])||(this.plotTop=ue(this.plotTop,i.legendHeight+a+s+e[0])):"bottom"!==h||c(n[2])||(this.marginBottom=ue(this.marginBottom,i.legendHeight-a+s+e[2]))),this.extraBottomMargin&&(this.marginBottom+=this.extraBottomMargin),this.extraTopMargin&&(this.plotTop+=this.extraTopMargin),this.hasCartesianSeries&&je(this.axes,function(t){t.getOffset()}),c(n[3])||(this.plotLeft+=t[3]),c(n[0])||(this.plotTop+=t[0]),c(n[2])||(this.marginBottom+=t[2]),c(n[1])||(this.marginRight+=t[1]),this.setChartSize()},reflow:function(t){var e=this,i=e.options.chart,n=e.renderTo,r=i.width||Ge(n,"width"),s=i.height||Ge(n,"height"),i=t?t.target:ae,n=function(){e.container&&(e.setSize(r,s,!1),e.hasUserSize=null)};e.hasUserSize||!r||!s||i!==ae&&i!==oe||((r!==e.containerWidth||s!==e.containerHeight)&&(clearTimeout(e.reflowTimeout),t?e.reflowTimeout=setTimeout(n,100):n()),e.containerWidth=r,e.containerHeight=s)},initReflow:function(){var t=this,e=function(e){t.reflow(e)};Ze(ae,"resize",e),Ze(t,"destroy",function(){Ke(ae,"resize",e)})},setSize:function(t,e,i){var n,r,s,o=this;o.isResizing+=1,s=function(){o&&Qe(o,"endResize",null,function(){o.isResizing-=1})},D(i,o),o.oldChartHeight=o.chartHeight,o.oldChartWidth=o.chartWidth,c(t)&&(o.chartWidth=n=ue(0,he(t)),o.hasUserSize=!!n),c(e)&&(o.chartHeight=r=ue(0,he(e))),($?ti:f)(o.container,{width:n+"px",height:r+"px"},$),o.setChartSize(!0),o.renderer.setSize(n,r,i),o.maxTicks=null,je(o.axes,function(t){t.isDirty=!0,t.setScale()}),je(o.series,function(t){t.isDirty=!0}),o.isDirtyLegend=!0,o.isDirtyBox=!0,o.getMargins(),o.redraw(i),o.oldChartHeight=null,Qe(o,"resize"),$===!1?s():setTimeout(s,$&&$.duration||500)},setChartSize:function(t){var e,i,n,r,s=this.inverted,o=this.renderer,a=this.chartWidth,l=this.chartHeight,h=this.options.chart,c=this.spacing,d=this.clipOffset;this.plotLeft=e=he(this.plotLeft),this.plotTop=i=he(this.plotTop),this.plotWidth=n=ue(0,he(a-e-this.marginRight)),this.plotHeight=r=ue(0,he(l-i-this.marginBottom)),this.plotSizeX=s?r:n,this.plotSizeY=s?n:r,this.plotBorderWidth=h.plotBorderWidth||0,this.spacingBox=o.spacingBox={x:c[3],y:c[0],width:a-c[3]-c[1],height:l-c[0]-c[2]},this.plotBox=o.plotBox={x:e,y:i,width:n,height:r},a=2*ce(this.plotBorderWidth/2),s=de(ue(a,d[3])/2),o=de(ue(a,d[0])/2),this.clipBox={x:s,y:o,width:ce(this.plotSizeX-ue(a,d[1])/2-s),height:ce(this.plotSizeY-ue(a,d[2])/2-o)},t||je(this.axes,function(t){t.setAxisSize(),t.setAxisTranslation()})},resetMargins:function(){var t=this.spacing,e=this.margin;this.plotTop=p(e[0],t[0]),this.marginRight=p(e[1],t[1]),this.marginBottom=p(e[2],t[2]),this.plotLeft=p(e[3],t[3]),this.axisOffset=[0,0,0,0],this.clipOffset=[0,0,0,0]},drawChartBox:function(){var t,e=this.options.chart,i=this.renderer,n=this.chartWidth,r=this.chartHeight,s=this.chartBackground,o=this.plotBackground,a=this.plotBorder,l=this.plotBGImage,h=e.borderWidth||0,c=e.backgroundColor,d=e.plotBackgroundColor,u=e.plotBackgroundImage,p=e.plotBorderWidth||0,f=this.plotLeft,g=this.plotTop,m=this.plotWidth,y=this.plotHeight,v=this.plotBox,x=this.clipRect,b=this.clipBox;t=h+(e.shadow?8:0),(h||c)&&(s?s.animate(s.crisp(null,null,null,n-t,r-t)):(s={fill:c||Be},h&&(s.stroke=e.borderColor,s["stroke-width"]=h),this.chartBackground=i.rect(t/2,t/2,n-t,r-t,e.borderRadius,h).attr(s).add().shadow(e.shadow))),d&&(o?o.animate(v):this.plotBackground=i.rect(f,g,m,y,0).attr({fill:d}).add().shadow(e.plotShadow)),u&&(l?l.animate(v):this.plotBGImage=i.image(u,f,g,m,y).add()),x?x.animate({width:b.width,height:b.height}):this.clipRect=i.clipRect(b),p&&(a?a.animate(a.crisp(null,f,g,m,y)):this.plotBorder=i.rect(f,g,m,y,0,-p).attr({stroke:e.plotBorderColor,"stroke-width":p,zIndex:1}).add()),this.isDirtyBox=!1},propFromSeries:function(){var t,e,i,n=this,r=n.options.chart,s=n.options.series;je(["inverted","angular","polar"],function(o){for(t=He[r.type||r.defaultSeriesType],i=n[o]||r[o]||t&&t.prototype[o],e=s&&s.length;!i&&e--;)(t=He[s[e].type])&&t.prototype[o]&&(i=!0);n[o]=i})},linkSeries:function(){var t=this,e=t.series;je(e,function(t){t.linkedSeries.length=0}),je(e,function(e){var i=e.options.linkedTo;n(i)&&(i=":previous"===i?t.series[e.index-1]:t.get(i))&&(i.linkedSeries.push(e),e.linkedParent=i)})},render:function(){var e,n=this,r=n.axes,s=n.renderer,o=n.options,a=o.labels,l=o.credits;n.setTitle(),n.legend=new fi(n,o.legend),n.getStacks(),je(r,function(t){t.setScale()}),n.getMargins(),n.maxTicks=null,je(r,function(t){t.setTickPositions(!0),t.setMaxTicks()}),n.adjustTickAmounts(),n.getMargins(),n.drawChartBox(),n.hasCartesianSeries&&je(r,function(t){t.render()}),n.seriesGroup||(n.seriesGroup=s.g("series-group").attr({zIndex:3}).add()),je(n.series,function(t){t.translate(),t.setTooltipPoints(),t.render()}),a.items&&je(a.items,function(e){var r=t(a.style,e.style),o=i(r.left)+n.plotLeft,l=i(r.top)+n.plotTop+12;delete r.left,delete r.top,s.text(e.html,o,l).attr({zIndex:2}).css(r).add()}),l.enabled&&!n.credits&&(e=l.href,n.credits=s.text(l.text,0,0).on("click",function(){e&&(location.href=e)}).attr({align:l.position.align,zIndex:8}).css(l.style).add().align(l.position)),n.hasRendered=!0},destroy:function(){var t,e=this,i=e.axes,n=e.series,r=e.container,s=r&&r.parentNode;for(Qe(e,"destroy"),Re[e.index]=_,e.renderTo.removeAttribute("data-highcharts-chart"),Ke(e),t=i.length;t--;)i[t]=i[t].destroy();for(t=n.length;t--;)n[t]=n[t].destroy();je("title,subtitle,chartBackground,plotBackground,plotBGImage,plotBorder,seriesGroup,clipRect,credits,pointer,scroller,rangeSelector,legend,resetZoomButton,tooltip,renderer".split(","),function(t){var i=e[t];i&&i.destroy&&(e[t]=i.destroy())}),r&&(r.innerHTML="",Ke(r),s&&L(r));for(t in e)delete e[t]},isReadyToRender:function(){var t=this;return!Ae&&ae==ae.top&&"complete"!==oe.readyState||Me&&!ae.canvg?(Me?ci.push(function(){t.firstRender()},t.options.global.canvasToolsURL):oe.attachEvent("onreadystatechange",function(){oe.detachEvent("onreadystatechange",t.firstRender),"complete"===oe.readyState&&t.firstRender()}),!1):!0},firstRender:function(){var t=this,e=t.options,i=t.callback;t.isReadyToRender()&&(t.getContainer(),Qe(t,"init"),t.resetMargins(),t.setChartSize(),t.propFromSeries(),t.getAxes(),je(e.series||[],function(e){t.initSeries(e)}),t.linkSeries(),Qe(t,"beforeRender"),t.pointer=new ui(t,e),t.render(),t.renderer.draw(),i&&i.apply(t,[t]),je(t.callbacks,function(e){e.apply(t,[t])}),t.cloneRenderTo(!0),Qe(t,"load"))},splashArray:function(t,e){var i=e[t],i=r(i)?i:[i,i,i,i];return[p(e[t+"Top"],i[0]),p(e[t+"Right"],i[1]),p(e[t+"Bottom"],i[2]),p(e[t+"Left"],i[3])]}},N.prototype.callbacks=[];var hi=Highcharts.CenteredSeriesMixin={getCenter:function(){var t,e,n=this.options,r=this.chart,s=2*(n.slicedOffset||0),o=r.plotWidth-2*s,a=r.plotHeight-2*s,r=n.center,n=[p(r[0],"50%"),p(r[1],"50%"),n.size||"100%",n.innerSize||0],l=pe(o,a);return Ue(n,function(n,r){return e=/%$/.test(n),t=2>r||2===r&&e,(e?[o,a,l,l][r]*i(n)/100:n)+(t?s:0)})}},gi=function(){};gi.prototype={init:function(t,e,i){return this.series=t,this.applyOptions(e,i),this.pointAttr={},t.options.colorByPoint&&(e=t.options.colors||t.chart.options.colors,this.color=this.color||e[t.colorCounter++],t.colorCounter===e.length)&&(t.colorCounter=0),t.chart.pointCount++,this},applyOptions:function(e,i){var n=this.series,r=n.pointValKey,e=gi.prototype.optionsToObject.call(this,e);return t(this,e),this.options=this.options?t(this.options,e):e,r&&(this.y=this[r]),this.x===_&&n&&(this.x=i===_?n.autoIncrement():i),this},optionsToObject:function(t){var e={},i=this.series,n=i.pointArrayMap||["y"],r=n.length,o=0,a=0;if("number"==typeof t||null===t)e[n[0]]=t;else if(s(t))for(t.length>r&&(i=typeof t[0],"string"===i?e.name=t[0]:"number"===i&&(e.x=t[0]),o++);r>a;)e[n[a++]]=t[o++];else"object"==typeof t&&(e=t,t.dataLabels&&(i._hasPointLabels=!0),t.marker&&(i._hasPointMarkers=!0));return e},destroy:function(){var t,e=this.series.chart,i=e.hoverPoints;e.pointCount--,i&&(this.setState(),h(i,this),!i.length)&&(e.hoverPoints=null),this===e.hoverPoint&&this.onMouseOut(),(this.graphic||this.dataLabel)&&(Ke(this),this.destroyElements()),this.legendItem&&e.legend.destroyItem(this);for(t in this)this[t]=null},destroyElements:function(){for(var t,e="graphic,dataLabel,dataLabelUpper,group,connector,shadowGroup".split(","),i=6;i--;)t=e[i],this[t]&&(this[t]=this[t].destroy())},getLabelConfig:function(){return{x:this.category,y:this.y,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}},select:function(t,e){var i=this,n=i.series,r=n.chart,t=p(t,!i.selected);i.firePointEvent(t?"select":"unselect",{accumulate:e},function(){i.selected=i.options.selected=t,n.options.data[Ye(i,n.data)]=i.options,i.setState(t&&"select"),e||je(r.getSelectedPoints(),function(t){t.selected&&t!==i&&(t.selected=t.options.selected=!1,n.options.data[Ye(t,n.data)]=t.options,t.setState(""),t.firePointEvent("unselect"))})})},onMouseOver:function(t){var e=this.series,i=e.chart,n=i.tooltip,r=i.hoverPoint;r&&r!==this&&r.onMouseOut(),this.firePointEvent("mouseOver"),n&&(!n.shared||e.noSharedTooltip)&&n.refresh(this,t),this.setState("hover"),i.hoverPoint=this},onMouseOut:function(){var t=this.series.chart,e=t.hoverPoints;e&&-1!==Ye(this,e)||(this.firePointEvent("mouseOut"),this.setState(),t.hoverPoint=null)},tooltipFormatter:function(t){var e=this.series,i=e.tooltipOptions,n=p(i.valueDecimals,""),r=i.valuePrefix||"",s=i.valueSuffix||"";return je(e.pointArrayMap||["y"],function(e){e="{point."+e,(r||s)&&(t=t.replace(e+"}",r+e+"}"+s)),t=t.replace(e+"}",e+":,."+n+"f}")}),b(t,{point:this,series:this.series})},firePointEvent:function(t,e,i){var n=this,r=this.series.options;(r.point.events[t]||n.options&&n.options.events&&n.options.events[t])&&this.importEvents(),"click"===t&&r.allowPointSelect&&(i=function(t){n.select(null,t.ctrlKey||t.metaKey||t.shiftKey)}),Qe(this,t,e,i)},importEvents:function(){if(!this.hasImportedEvents){var t,i=e(this.series.options.point,this.options).events;this.events=i;for(t in i)Ze(this,t,i[t]);this.hasImportedEvents=!0}},setState:function(t,i){var n=this.plotX,r=this.plotY,s=this.series,o=s.options.states,a=ii[s.type].marker&&s.options.marker,l=a&&!a.enabled,h=a&&a.states[t],c=h&&h.enabled===!1,d=s.stateMarkerGraphic,u=this.marker||{},p=s.chart,f=this.pointAttr,t=t||"",i=i&&d;t===this.state&&!i||this.selected&&"select"!==t||o[t]&&o[t].enabled===!1||t&&(c||l&&!h.enabled)||t&&u.states&&u.states[t]&&u.states[t].enabled===!1||(this.graphic?(o=a&&this.graphic.symbolName&&f[t].r,this.graphic.attr(e(f[t],o?{x:n-o,y:r-o,width:2*o,height:2*o}:{}))):(t&&h&&(o=h.radius,u=u.symbol||s.symbol,d&&d.currentSymbol!==u&&(d=d.destroy()),d?d[i?"animate":"attr"]({x:n-o,y:r-o}):(s.stateMarkerGraphic=d=p.renderer.symbol(u,n-o,r-o,2*o,2*o).attr(f[t]).add(s.markerGroup),d.currentSymbol=u)),d&&d[t&&p.isInsidePlot(n,r,p.inverted)?"show":"hide"]()),this.state=t)}};var mi=function(){};mi.prototype={isCartesian:!0,type:"line",pointClass:gi,sorted:!0,requireSorting:!0,pointAttrToOptions:{stroke:"lineColor","stroke-width":"lineWidth",fill:"fillColor",r:"radius"},axisTypes:["xAxis","yAxis"],colorCounter:0,parallelArrays:["x","y"],init:function(e,i){var n,r,s=this,o=e.series,a=function(t,e){return p(t.options.index,t._i)-p(e.options.index,e._i)};s.chart=e,s.options=i=s.setOptions(i),s.linkedSeries=[],s.bindAxes(),t(s,{name:i.name,state:"",pointAttr:{},visible:i.visible!==!1,selected:i.selected===!0}),Me&&(i.animation=!1),r=i.events;for(n in r)Ze(s,n,r[n]);(r&&r.click||i.point&&i.point.events&&i.point.events.click||i.allowPointSelect)&&(e.runTrackerClick=!0),s.getColor(),s.getSymbol(),je(s.parallelArrays,function(t){s[t+"Data"]=[]}),s.setData(i.data,!1),s.isCartesian&&(e.hasCartesianSeries=!0),o.push(s),s._i=o.length-1,T(o,a),this.yAxis&&T(this.yAxis.series,a),je(o,function(t,e){t.index=e,t.name=t.name||"Series "+(e+1)})},bindAxes:function(){var t,e=this,i=e.options,n=e.chart;je(e.axisTypes||[],function(r){je(n[r],function(n){t=n.options,(i[r]===t.index||i[r]!==_&&i[r]===t.id||i[r]===_&&0===t.index)&&(n.series.push(e),e[r]=n,n.isDirty=!0)}),!e[r]&&e.optionalAxis!==r&&M(18,!0)})},updateParallelArrays:function(t,e){var i=t.series,n=arguments;je(i.parallelArrays,"number"==typeof e?function(n){var r="y"===n&&i.toYData?i.toYData(t):t[n];i[n+"Data"][e]=r}:function(t){Array.prototype[e].apply(i[t+"Data"],Array.prototype.slice.call(n,2))})},autoIncrement:function(){var t=this.options,e=this.xIncrement,e=p(e,t.pointStart,0);return this.pointInterval=p(this.pointInterval,t.pointInterval,1),this.xIncrement=e+this.pointInterval,e},getSegments:function(){var t,e=-1,i=[],n=this.points,r=n.length;if(r)if(this.options.connectNulls){for(t=r;t--;)null===n[t].y&&n.splice(t,1);n.length&&(i=[n])}else je(n,function(t,s){null===t.y?(s>e+1&&i.push(n.slice(e+1,s)),e=s):s===r-1&&i.push(n.slice(e+1,s+1))});this.segments=i},setOptions:function(t){var i=this.chart,n=i.options.plotOptions,i=i.userOptions||{},r=i.plotOptions||{},s=n[this.type];return this.userOptions=t,n=e(s,n.series,t),this.tooltipOptions=e(X.tooltip,X.plotOptions[this.type].tooltip,i.tooltip,r.series&&r.series.tooltip,r[this.type]&&r[this.type].tooltip,t.tooltip),null===s.marker&&delete n.marker,n},getColor:function(){var t,e=this.options,i=this.userOptions,n=this.chart.options.colors,r=this.chart.counters;t=e.color||ii[this.type].color,t||e.colorByPoint||(c(i._colorIndex)?e=i._colorIndex:(i._colorIndex=r.color,e=r.color++),t=n[e]),this.color=t,r.wrapColor(n.length)},getSymbol:function(){var t=this.userOptions,e=this.options.marker,i=this.chart,n=i.options.symbols,i=i.counters;this.symbol=e.symbol,this.symbol||(c(t._symbolIndex)?t=t._symbolIndex:(t._symbolIndex=i.symbol,t=i.symbol++),this.symbol=n[t]),/^url/.test(this.symbol)&&(e.radius=0),i.wrapSymbol(n.length)},drawLegendSymbol:li.drawLineMarker,setData:function(t,e){var i,r=this,a=r.points,l=r.options,h=r.chart,c=null,d=r.xAxis,u=d&&!!d.categories;r.xIncrement=null,r.pointRange=u?1:l.pointRange,r.colorCounter=0;var t=t||[],f=t.length;i=l.turboThreshold;var g=this.xData,m=this.yData,y=r.pointArrayMap,y=y&&y.length;if(je(this.parallelArrays,function(t){r[t+"Data"].length=0}),i&&f>i){for(i=0;null===c&&f>i;)c=t[i],i++;if(o(c)){for(u=p(l.pointStart,0),l=p(l.pointInterval,1),i=0;f>i;i++)g[i]=u,m[i]=t[i],u+=l;r.xIncrement=u}else if(s(c))if(y)for(i=0;f>i;i++)l=t[i],g[i]=l[0],m[i]=l.slice(1,y+1);else for(i=0;f>i;i++)l=t[i],g[i]=l[0],m[i]=l[1];else M(12)}else for(i=0;f>i;i++)t[i]!==_&&(l={series:r},r.pointClass.prototype.applyOptions.apply(l,[t[i]]),r.updateParallelArrays(l,i),u&&l.name)&&(d.names[l.x]=l.name);for(n(m[0])&&M(14,!0),r.data=[],r.options.data=t,i=a&&a.length||0;i--;)a[i]&&a[i].destroy&&a[i].destroy();d&&(d.minRange=d.userMinRange),r.isDirty=r.isDirtyData=h.isDirtyBox=!0,p(e,!0)&&h.redraw(!1)},processData:function(t){var e,i=this.xData,n=this.yData,r=i.length;e=0;var s,o,a=this.xAxis,l=this.options,h=l.cropThreshold,c=this.isCartesian;if(c&&!this.isDirty&&!a.isDirty&&!this.yAxis.isDirty&&!t)return!1;for(c&&this.sorted&&(!h||r>h||this.forceCrop)&&(t=a.min,a=a.max,i[r-1]a?(i=[],n=[]):(i[0]a)&&(e=this.cropData(this.xData,this.yData,t,a),i=e.xData,n=e.yData,e=e.start,s=!0)),a=i.length-1;a>=0;a--)r=i[a]-i[a-1],r>0&&(o===_||o>r)?o=r:0>r&&this.requireSorting&&M(15);this.cropped=s,this.cropStart=e,this.processedXData=i,this.processedYData=n,null===l.pointRange&&(this.pointRange=o||1),this.closestPointRange=o},cropData:function(t,e,i,n){var r,s=t.length,o=0,a=s,l=p(this.cropShoulder,1);for(r=0;s>r;r++)if(t[r]>=i){o=ue(0,r-l);break}for(;s>r;r++)if(t[r]>n){a=r+l;break}return{xData:t.slice(o,a),yData:e.slice(o,a),start:o,end:a}},generatePoints:function(){var t,e,i,n,r=this.options.data,s=this.data,o=this.processedXData,a=this.processedYData,l=this.pointClass,h=o.length,c=this.cropStart||0,d=this.hasGroupedData,p=[];for(s||d||(s=[],s.length=r.length,s=this.data=s),n=0;h>n;n++)e=c+n,d?p[n]=(new l).init(this,[o[n]].concat(u(a[n]))):(s[e]?i=s[e]:r[e]!==_&&(s[e]=i=(new l).init(this,r[e],o[n])),p[n]=i);if(s&&(h!==(t=s.length)||d))for(n=0;t>n;n++)n===c&&!d&&(n+=h),s[n]&&(s[n].destroyElements(),s[n].plotX=_);this.data=s,this.points=p},setStackedPoints:function(){if(this.options.stacking&&(this.visible===!0||this.chart.options.chart.ignoreHiddenSeries===!1)){var t,e,i,n,r,s=this.processedXData,o=this.processedYData,a=[],l=o.length,h=this.options,c=h.threshold,d=h.stack,h=h.stacking,u=this.stackKey,p="-"+u,f=this.negStacks,g=this.yAxis,m=g.stacks,y=g.oldStacks;for(i=0;l>i;i++)n=s[i],r=o[i],e=(t=f&&c>r)?p:u,m[e]||(m[e]={}),m[e][n]||(y[e]&&y[e][n]?(m[e][n]=y[e][n],m[e][n].total=null):m[e][n]=new B(g,g.options.stackLabels,t,n,d,h)),e=m[e][n],e.points[this.index]=[e.cum||0],"percent"===h?(t=t?u:p,f&&m[t]&&m[t][n]?(t=m[t][n],e.total=t.total=ue(t.total,e.total)+fe(r)||0):e.total+=fe(r)||0):e.total+=r||0,e.cum=(e.cum||0)+(r||0),e.points[this.index].push(e.cum),a[i]=e.cum;"percent"===h&&(g.usePercentage=!0),this.stackedYData=a,g.oldStacks={}}},setPercentStacks:function(){var t=this,e=t.stackKey,i=t.yAxis.stacks;je([e,"-"+e],function(e){for(var n,r,s,o=t.xData.length;o--;)r=t.xData[o],n=(s=i[e]&&i[e][r])&&s.points[t.index],(r=n)&&(s=s.total?100/s.total:0,r[0]=I(r[0]*s),r[1]=I(r[1]*s),t.stackedYData[o]=r[1])})},getExtremes:function(t){var e,i=this.yAxis,n=this.processedXData,r=[],s=0;e=this.xAxis.getExtremes();var o,a,l,h,c=e.min,d=e.max,t=t||this.stackedYData||this.processedYData;for(e=t.length,h=0;e>h;h++)if(a=n[h],l=t[h],o=null!==l&&l!==_&&(!i.isLog||l.length||l>0),a=this.getExtremesFromAll||this.cropped||(n[h+1]||a)>=c&&(n[h-1]||a)<=d,o&&a)if(o=l.length)for(;o--;)null!==l[o]&&(r[s++]=l[o]);else r[s++]=l;this.dataMin=p(void 0,C(r)),this.dataMax=p(void 0,P(r))},translate:function(){this.processedXData||this.processData(),this.generatePoints();for(var t=this.options,e=t.stacking,i=this.xAxis,n=i.categories,r=this.yAxis,s=this.points,a=s.length,l=!!this.modifyValue,h=t.pointPlacement,d="between"===h||o(h),u=t.threshold,t=0;a>t;t++){var f=s[t],g=f.x,m=f.y,y=f.low,v=e&&r.stacks[(this.negStacks&&u>m?"-":"")+this.stackKey];r.isLog&&0>=m&&(f.y=m=null),f.plotX=i.translate(g,0,0,0,1,h,"flags"===this.type),e&&this.visible&&v&&v[g]&&(v=v[g],m=v.points[this.index],y=m[0],m=m[1],0===y&&(y=p(u,r.min)),r.isLog&&0>=y&&(y=null),f.total=f.stackTotal=v.total,f.percentage="percent"===e&&f.y/v.total*100,f.stackY=m,v.setOffset(this.pointXOffset||0,this.barW||0)),f.yBottom=c(y)?r.translate(y,0,1,0,1):null,l&&(m=this.modifyValue(m,f)),f.plotY="number"==typeof m&&1/0!==m?r.translate(m,0,1,0,1):_,f.clientX=d?i.translate(g,0,0,0,1):f.plotX,f.negative=f.y<(u||0),f.category=n&&n[f.x]!==_?n[f.x]:f.x}this.getSegments()},setTooltipPoints:function(t){var e,i,n,r,s=[],o=this.xAxis,a=o&&o.getExtremes(),l=o?o.tooltipLen||o.len:this.chart.plotSizeX,h=[];if(this.options.enableMouseTracking!==!1){for(t&&(this.tooltipPoints=null),je(this.segments||this.points,function(t){s=s.concat(t)}),o&&o.reversed&&(s=s.reverse()),this.orderTooltipPoints&&this.orderTooltipPoints(s),t=s.length,r=0;t>r;r++)if(o=s[r],e=o.x,e>=a.min&&e<=a.max)for(n=s[r+1],e=i===_?0:i+1,i=s[r+1]?pe(ue(0,ce((o.clientX+(n?n.wrappedClientX||n.clientX:l))/2)),l):l;e>=0&&i>=e;)h[e++]=o;this.tooltipPoints=h}},tooltipHeaderFormatter:function(t){var e,i=this.tooltipOptions,n=i.dateTimeLabelFormats,r=i.xDateFormat||n.year,s=this.xAxis,a=s&&"datetime"===s.options.type,i=i.headerFormat,s=s&&s.closestPointRange;if(a&&!r)if(s){for(e in j)if(j[e]>=s){r=n[e];break}}else r=n.day;return a&&r&&o(t.key)&&(i=i.replace("{point.key}","{point.key:"+r+"}")),b(i,{point:t,series:this})},onMouseOver:function(){var t=this.chart,e=t.hoverSeries;e&&e!==this&&e.onMouseOut(),this.options.events.mouseOver&&Qe(this,"mouseOver"),this.setState("hover"),t.hoverSeries=this},onMouseOut:function(){var t=this.options,e=this.chart,i=e.tooltip,n=e.hoverPoint;n&&n.onMouseOut(),this&&t.events.mouseOut&&Qe(this,"mouseOut"),i&&!t.stickyTracking&&(!i.shared||this.noSharedTooltip)&&i.hide(),this.setState(),e.hoverSeries=null},animate:function(e){var i,n=this,s=n.chart,o=s.renderer;i=n.options.animation;var a,l=s.clipBox,h=s.inverted;i&&!r(i)&&(i=ii[n.type].animation),a="_sharedClip"+i.duration+i.easing,e?(e=s[a],i=s[a+"m"],e||(s[a]=e=o.clipRect(t(l,{width:0})),s[a+"m"]=i=o.clipRect(-99,h?-s.plotLeft:-s.plotTop,99,h?s.chartWidth:s.chartHeight)),n.group.clip(e),n.markerGroup.clip(i),n.sharedClipKey=a):((e=s[a])&&(e.animate({width:s.plotSizeX},i),s[a+"m"].animate({width:s.plotSizeX+99},i)),n.animate=null,n.animationTimeout=setTimeout(function(){n.afterAnimate()},i.duration))},afterAnimate:function(){var t=this.chart,e=this.sharedClipKey,i=this.group;i&&this.options.clip!==!1&&(i.clip(t.clipRect),this.markerGroup.clip()),setTimeout(function(){e&&t[e]&&(t[e]=t[e].destroy(),t[e+"m"]=t[e+"m"].destroy())},100)},drawPoints:function(){var e,i,n,r,s,o,a,l,h,c,d=this.points,u=this.chart,f=this.options.marker,g=this.pointAttr[""],m=this.markerGroup;if(f.enabled||this._hasPointMarkers)for(r=d.length;r--;)s=d[r],i=ce(s.plotX),n=s.plotY,h=s.graphic,a=s.marker||{},e=f.enabled&&a.enabled===_||a.enabled,c=u.isInsidePlot(he(i),n,u.inverted),e&&n!==_&&!isNaN(n)&&null!==s.y?(e=s.pointAttr[s.selected?"select":""]||g,o=e.r,a=p(a.symbol,this.symbol),l=0===a.indexOf("url"),h?h.attr({visibility:c?Ae?"inherit":"visible":"hidden"}).animate(t({x:i-o,y:n-o},h.symbolName?{width:2*o,height:2*o}:{})):c&&(o>0||l)&&(s.graphic=u.renderer.symbol(a,i-o,n-o,2*o,2*o).attr(e).add(m))):h&&(s.graphic=h.destroy())},convertAttribs:function(t,e,i,n){var r,s,o=this.pointAttrToOptions,a={},t=t||{},e=e||{},i=i||{},n=n||{};for(r in o)s=o[r],a[r]=p(t[s],e[r],i[r],n[r]);return a},getAttribs:function(){var e,i=this,n=i.options,r=ii[i.type].marker?n.marker:n,s=r.states,o=s.hover,a=i.color;e={stroke:a,fill:a};var l,h,d=i.points||[],u=[],p=i.pointAttrToOptions;l=n.turboThreshold;var f,g=n.negativeColor,m=r.lineColor;if(n.marker?(o.radius=o.radius||r.radius+2,o.lineWidth=o.lineWidth||r.lineWidth+1):o.color=o.color||oi(o.color||a).brighten(o.brightness).get(),u[""]=i.convertAttribs(r,e),je(["hover","select"],function(t){u[t]=i.convertAttribs(s[t],u[""])}),i.pointAttr=u,a=d.length,!l||l>a)for(;a--;){if(l=d[a],(r=l.options&&l.options.marker||l.options)&&r.enabled===!1&&(r.radius=0),l.negative&&g&&(l.color=l.fillColor=g),e=n.colorByPoint||l.color,l.options)for(f in p)c(r[p[f]])&&(e=!0);e?(r=r||{},h=[],s=r.states||{},e=s.hover=s.hover||{},n.marker||(e.color=e.color||o.color||oi(l.color).brighten(e.brightness||o.brightness).get()),h[""]=i.convertAttribs(t({color:l.color,fillColor:l.color,lineColor:null===m?l.color:_},r),u[""]),h.hover=i.convertAttribs(s.hover,u.hover,h[""]),h.select=i.convertAttribs(s.select,u.select,h[""])):h=u,l.pointAttr=h}},destroy:function(){var t,e,i,n,r,s=this,o=s.chart,a=/AppleWebKit\/533/.test(xe),l=s.data||[];for(Qe(s,"destroy"),Ke(s),je(s.axisTypes||[],function(t){(r=s[t])&&(h(r.series,s),r.isDirty=r.forceRedraw=!0)}),s.legendItem&&s.chart.legend.destroyItem(s),e=l.length;e--;)(i=l[e])&&i.destroy&&i.destroy();s.points=null,clearTimeout(s.animationTimeout),je("area,graph,dataLabelsGroup,group,markerGroup,tracker,graphNeg,areaNeg,posClip,negClip".split(","),function(e){s[e]&&(t=a&&"group"===e?"hide":"destroy",s[e][t]())}),o.hoverSeries===s&&(o.hoverSeries=null),h(o.series,s);for(n in s)delete s[n]},getSegmentPath:function(t){var e=this,i=[],n=e.options.step;return je(t,function(r,s){var o,a=r.plotX,l=r.plotY; +e.getPointSpline?i.push.apply(i,e.getPointSpline(t,r,s)):(i.push(s?"L":"M"),n&&s&&(o=t[s-1],"right"===n?i.push(o.plotX,l):"center"===n?i.push((o.plotX+a)/2,o.plotY,(o.plotX+a)/2,l):i.push(a,o.plotY)),i.push(r.plotX,r.plotY))}),i},getGraphPath:function(){var t,e=this,i=[],n=[];return je(e.segments,function(r){t=e.getSegmentPath(r),r.length>1?i=i.concat(t):n.push(r[0])}),e.singlePoints=n,e.graphPath=i},drawGraph:function(){var t=this,e=this.options,i=[["graph",e.lineColor||this.color]],n=e.lineWidth,r=e.dashStyle,s="square"!==e.linecap,o=this.getGraphPath(),a=e.negativeColor;a&&i.push(["graphNeg",a]),je(i,function(i,a){var l=i[0],h=t[l];h?(ei(h),h.animate({d:o})):n&&o.length&&(h={stroke:i[1],"stroke-width":n,zIndex:1},r?h.dashstyle=r:s&&(h["stroke-linecap"]=h["stroke-linejoin"]="round"),t[l]=t.chart.renderer.path(o).attr(h).add(t.group).shadow(!a&&e.shadow))})},clipNeg:function(){var t,e=this.options,i=this.chart,n=i.renderer,r=e.negativeColor||e.negativeFillColor,s=this.graph,o=this.area,a=this.posClip,l=this.negClip;t=i.chartWidth;var h=i.chartHeight,c=ue(t,h),d=this.yAxis;r&&(s||o)&&(r=he(d.toPixels(e.threshold||0,!0)),0>r&&(c-=r),e={x:0,y:0,width:c,height:r},c={x:0,y:r,width:c,height:c},i.inverted&&(e.height=c.y=i.plotWidth-r,n.isVML&&(e={x:i.plotWidth-r-i.plotLeft,y:0,width:t,height:h},c={x:r+i.plotLeft-t,y:0,width:i.plotLeft+r,height:t})),d.reversed?(i=c,t=e):(i=e,t=c),a?(a.animate(i),l.animate(t)):(this.posClip=a=n.clipRect(i),this.negClip=l=n.clipRect(t),s&&this.graphNeg&&(s.clip(a),this.graphNeg.clip(l)),o&&(o.clip(a),this.areaNeg.clip(l))))},invertGroups:function(){function t(){var t={width:e.yAxis.len,height:e.xAxis.len};je(["group","markerGroup"],function(i){e[i]&&e[i].attr(t).invert()})}var e=this,i=e.chart;e.xAxis&&(Ze(i,"resize",t),Ze(e,"destroy",function(){Ke(i,"resize",t)}),t(),e.invertGroups=t)},plotGroup:function(t,e,i,n,r){var s=this[t],o=!s;return o&&(this[t]=s=this.chart.renderer.g(e).attr({visibility:i,zIndex:n||.1}).add(r)),s[o?"attr":"animate"](this.getPlotBox()),s},getPlotBox:function(){return{translateX:this.xAxis?this.xAxis.left:this.chart.plotLeft,translateY:this.yAxis?this.yAxis.top:this.chart.plotTop,scaleX:1,scaleY:1}},render:function(){var t,e=this.chart,i=this.options,n=i.animation&&!!this.animate&&e.renderer.isSVG,r=this.visible?"visible":"hidden",s=i.zIndex,o=this.hasRendered,a=e.seriesGroup;t=this.plotGroup("group","series",r,s,a),this.markerGroup=this.plotGroup("markerGroup","markers",r,s,a),n&&this.animate(!0),this.getAttribs(),t.inverted=this.isCartesian?e.inverted:!1,this.drawGraph&&(this.drawGraph(),this.clipNeg()),this.drawDataLabels&&this.drawDataLabels(),this.visible&&this.drawPoints(),this.options.enableMouseTracking!==!1&&this.drawTracker(),e.inverted&&this.invertGroups(),i.clip!==!1&&!this.sharedClipKey&&!o&&t.clip(e.clipRect),n?this.animate():o||this.afterAnimate(),this.isDirty=this.isDirtyData=!1,this.hasRendered=!0},redraw:function(){var t=this.chart,e=this.isDirtyData,i=this.group,n=this.xAxis,r=this.yAxis;i&&(t.inverted&&i.attr({width:t.plotWidth,height:t.plotHeight}),i.animate({translateX:p(n&&n.left,t.plotLeft),translateY:p(r&&r.top,t.plotTop)})),this.translate(),this.setTooltipPoints(!0),this.render(),e&&Qe(this,"updatedData")},setState:function(t){var e=this.options,i=this.graph,n=this.graphNeg,r=e.states,e=e.lineWidth,t=t||"";this.state!==t&&(this.state=t,r[t]&&r[t].enabled===!1||(t&&(e=r[t].lineWidth||e+1),i&&!i.dashstyle&&(t={"stroke-width":e},i.attr(t),n&&n.attr(t))))},setVisible:function(t,e){var i,n=this,r=n.chart,s=n.legendItem,o=r.options.chart.ignoreHiddenSeries,a=n.visible;i=(n.visible=t=n.userOptions.visible=t===_?!a:t)?"show":"hide",je(["group","dataLabelsGroup","markerGroup","tracker"],function(t){n[t]&&n[t][i]()}),r.hoverSeries===n&&n.onMouseOut(),s&&r.legend.colorizeItem(n,t),n.isDirty=!0,n.options.stacking&&je(r.series,function(t){t.options.stacking&&t.visible&&(t.isDirty=!0)}),je(n.linkedSeries,function(e){e.setVisible(t,!1)}),o&&(r.isDirtyBox=!0),e!==!1&&r.redraw(),Qe(n,i)},show:function(){this.setVisible(!0)},hide:function(){this.setVisible(!1)},select:function(t){this.selected=t=t===_?!this.selected:t,this.checkbox&&(this.checkbox.checked=t),Qe(this,t?"select":"unselect")},drawTracker:Xe.drawTrackerGraph},t(N.prototype,{addSeries:function(t,e,i){var n,r=this;return t&&(e=p(e,!0),Qe(r,"addSeries",{options:t},function(){n=r.initSeries(t),r.isDirtyLegend=!0,r.linkSeries(),e&&r.redraw(i)})),n},addAxis:function(t,i,n,r){var s=i?"xAxis":"yAxis",o=this.options;new z(this,e(t,{index:this[s].length,isX:i})),o[s]=u(o[s]||{}),o[s].push(t),p(n,!0)&&this.redraw(r)},showLoading:function(e){var i=this.options,n=this.loadingDiv,r=i.loading;n||(this.loadingDiv=n=g(ze,{className:"highcharts-loading"},t(r.style,{zIndex:10,display:Be}),this.container),this.loadingSpan=g("span",null,r.labelStyle,n)),this.loadingSpan.innerHTML=e||i.lang.loading,this.loadingShown||(f(n,{opacity:0,display:"",left:this.plotLeft+"px",top:this.plotTop+"px",width:this.plotWidth+"px",height:this.plotHeight+"px"}),ti(n,{opacity:r.style.opacity},{duration:r.showDuration||0}),this.loadingShown=!0)},hideLoading:function(){var t=this.options,e=this.loadingDiv;e&&ti(e,{opacity:0},{duration:t.loading.hideDuration||100,complete:function(){f(e,{display:Be})}}),this.loadingShown=!1}}),t(gi.prototype,{update:function(t,e,i){var n,s=this,o=s.series,a=s.graphic,l=o.data,h=o.chart,c=o.options,e=p(e,!0);s.firePointEvent("update",{options:t},function(){s.applyOptions(t),r(t)&&(o.getAttribs(),a&&(t&&t.marker&&t.marker.symbol?s.graphic=a.destroy():a.attr(s.pointAttr[s.state||""])),t&&t.dataLabels&&s.dataLabel&&(s.dataLabel=s.dataLabel.destroy())),n=Ye(s,l),o.updateParallelArrays(s,n),c.data[n]=s.options,o.isDirty=o.isDirtyData=!0,!o.fixedBox&&o.hasCartesianSeries&&(h.isDirtyBox=!0),"point"===c.legendType&&h.legend.destroyItem(s),e&&h.redraw(i)})},remove:function(t,e){var i,n=this,r=n.series,s=r.points,o=r.chart,a=r.data;D(e,o),t=p(t,!0),n.firePointEvent("remove",null,function(){i=Ye(n,a),a.length===s.length&&s.splice(i,1),a.splice(i,1),r.options.data.splice(i,1),r.updateParallelArrays(n,"splice",i,1),n.destroy(),r.isDirty=!0,r.isDirtyData=!0,t&&o.redraw()})}}),t(mi.prototype,{addPoint:function(t,e,i,n){var r,s=this.options,o=this.data,a=this.graph,l=this.area,h=this.chart,c=this.xAxis&&this.xAxis.names,d=a&&a.shift||0,u=s.data,f=this.xData;if(D(n,h),i&&je([a,l,this.graphNeg,this.areaNeg],function(t){t&&(t.shift=d+1)}),l&&(l.isArea=!0),e=p(e,!0),n={series:this},this.pointClass.prototype.applyOptions.apply(n,[t]),a=n.x,l=f.length,this.requireSorting&&aa;)l--;this.updateParallelArrays(n,"splice",l),this.updateParallelArrays(n,l),c&&(c[a]=n.name),u.splice(l,0,t),r&&(this.data.splice(l,0,null),this.processData()),"point"===s.legendType&&this.generatePoints(),i&&(o[0]&&o[0].remove?o[0].remove(!1):(o.shift(),this.updateParallelArrays(n,"shift"),u.shift())),this.isDirtyData=this.isDirty=!0,e&&(this.getAttribs(),h.redraw())},remove:function(t,e){var i=this,n=i.chart,t=p(t,!0);i.isRemoving||(i.isRemoving=!0,Qe(i,"remove",null,function(){i.destroy(),n.isDirtyLegend=n.isDirtyBox=!0,n.linkSeries(),t&&n.redraw(e)})),i.isRemoving=!1},update:function(i,n){var r,s=this.chart,o=this.type,a=He[o].prototype,i=e(this.userOptions,{animation:!1,index:this.index,pointStart:this.xData[0]},{data:this.options.data},i);this.remove(!1);for(r in a)a.hasOwnProperty(r)&&(this[r]=_);t(this,He[i.type||o].prototype),this.init(s,i),p(n,!0)&&s.redraw(!1)}}),t(z.prototype,{update:function(i,n){var r=this.chart,i=r.options[this.coll][this.options.index]=e(this.userOptions,i);this.destroy(!0),this._addedPlotLB=this.userMin=this.userMax=_,this.init(r,t(i,{events:_})),r.isDirtyBox=!0,p(n,!0)&&r.redraw()},remove:function(t){var e=this.chart,i=this.coll;je(this.series,function(t){t.remove(!1)}),h(e.axes,this),h(e[i],this),e.options[i].splice(this.options.index,1),je(e[i],function(t,e){t.options.index=e}),this.destroy(),e.isDirtyBox=!0,p(t,!0)&&e.redraw()},setTitle:function(t,e){this.update({title:t},e)},setCategories:function(t,e){this.update({categories:t},e)}});var yi=m(mi);He.line=yi,ii.area=e(We,{threshold:0});var vi=m(mi,{type:"area",getSegments:function(){var t,e,i,n,r,s=[],o=[],a=[],l=this.xAxis,h=this.yAxis,c=h.stacks[this.stackKey],d={},u=this.points,p=this.options.connectNulls;if(this.options.stacking&&!this.cropped){for(n=0;n=0;e--)s=p(t[e].yBottom,o),et&&r>l?(r=ue(t,l),o=2*l-r):t>r&&l>r&&(r=pe(t,l),o=2*l-r),o>c&&o>l?(o=ue(c,l),r=2*l-o):c>o&&l>o&&(o=pe(c,l),r=2*l-o),e.rightContX=s,e.rightContY=o}return i?(e=["C",h.rightContX||h.plotX,h.rightContY||h.plotY,n||a,r||l,a,l],h.rightContX=h.rightContY=null):e=["M",a,l],e}}),He.spline=yi,ii.areaspline=e(ii.area),vi=vi.prototype,yi=m(yi,{type:"areaspline",closedStacks:!0,getSegmentPath:vi.getSegmentPath,closeSegment:vi.closeSegment,drawGraph:vi.drawGraph,drawLegendSymbol:li.drawRectangle}),He.areaspline=yi,ii.column=e(We,{borderColor:"#FFFFFF",borderWidth:1,borderRadius:0,groupPadding:.2,marker:null,pointPadding:.1,minPointLength:0,cropThreshold:50,pointRange:null,states:{hover:{brightness:.1,shadow:!1},select:{color:"#C0C0C0",borderColor:"#000000",shadow:!1}},dataLabels:{align:null,verticalAlign:null,y:null},stickyTracking:!1,threshold:0}),yi=m(mi,{type:"column",pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",fill:"color",r:"borderRadius"},cropShoulder:0,trackerGroups:["group","dataLabelsGroup"],negStacks:!0,init:function(){mi.prototype.init.apply(this,arguments);var t=this,e=t.chart;e.hasRendered&&je(e.series,function(e){e.type===t.type&&(e.isDirty=!0)})},getColumnMetrics:function(){var t,e,i=this,n=i.options,r=i.xAxis,s=i.yAxis,o=r.reversed,a={},l=0;n.grouping===!1?l=1:je(i.chart.series,function(n){var r=n.options,o=n.yAxis;n.type===i.type&&n.visible&&s.len===o.len&&s.pos===o.pos&&(r.stacking?(t=n.stackKey,a[t]===_&&(a[t]=l++),e=a[t]):r.grouping!==!1&&(e=l++),n.columnIndex=e)});var r=pe(fe(r.transA)*(r.ordinalSlope||n.pointRange||r.closestPointRange||1),r.len),h=r*n.groupPadding,d=(r-2*h)/l,u=n.pointWidth,n=c(u)?(d-u)/2:d*n.pointPadding,u=p(u,d-2*n);return i.columnMetrics={width:u,offset:n+(h+((o?l-(i.columnIndex||0):i.columnIndex)||0)*d-r/2)*(o?-1:1)}},translate:function(){var t=this.chart,e=this.options,i=e.borderWidth,n=this.yAxis,r=this.translatedThreshold=n.getThreshold(e.threshold),s=p(e.minPointLength,5),e=this.getColumnMetrics(),o=e.width,a=this.barW=de(ue(o,1+2*i)),l=this.pointXOffset=e.offset,h=-(i%2?.5:0),c=i%2?.5:1;t.renderer.isVML&&t.inverted&&(c+=1),mi.prototype.translate.apply(this),je(this.points,function(t){var e,i=p(t.yBottom,r),d=pe(ue(-999-i,t.plotY),n.len+999+i),u=t.plotX+l,f=a,g=pe(d,i),d=ue(d,i)-g;fe(d)s?i-s:r-(n.translate(t.y,0,1,0,1)<=r?s:0))),t.barX=u,t.pointWidth=o,i=fe(u)<.5,f=he(u+f)+h,u=he(u)+h,f-=u,e=fe(g)<.5,d=he(g+d)+c,g=he(g)+c,d-=g,i&&(u+=1,f-=1),e&&(g-=1,d+=1),t.shapeType="rect",t.shapeArgs={x:u,y:g,width:f,height:d}})},getSymbol:Oe,drawLegendSymbol:li.drawRectangle,drawGraph:Oe,drawPoints:function(){var t,i=this,n=this.chart,r=i.options,s=n.renderer,o=n.options.animationLimit||250;je(i.points,function(a){var l=a.plotY,h=a.graphic;l===_||isNaN(l)||null===a.y?h&&(a.graphic=h.destroy()):(t=a.shapeArgs,h?(ei(h),h[n.pointCount{series.name}
    ',pointFormat:"x: {point.x}
    y: {point.y}
    ",followPointer:!0},stickyTracking:!1}),yi=m(mi,{type:"scatter",sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["markerGroup"],takeOrdinalPosition:!1,drawTracker:Xe.drawTrackerPoint,drawGraph:function(){this.options.lineWidth&&mi.prototype.drawGraph.call(this)},setTooltipPoints:Oe}),He.scatter=yi,ii.pie=e(We,{borderColor:"#FFFFFF",borderWidth:1,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return this.point.name}},ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,states:{hover:{brightness:.1,shadow:!1}},stickyTracking:!1,tooltip:{followPointer:!0}}),We={type:"pie",isCartesian:!1,pointClass:m(gi,{init:function(){gi.prototype.init.apply(this,arguments);var e,i=this;return i.y<0&&(i.y=null),t(i,{visible:i.visible!==!1,name:p(i.name,"Slice")}),e=function(t){i.slice("select"===t.type)},Ze(i,"select",e),Ze(i,"unselect",e),i},setVisible:function(t){var e,i=this,n=i.series,r=n.chart;i.visible=i.options.visible=t=t===_?!i.visible:t,n.options.data[Ye(i,n.data)]=i.options,e=t?"show":"hide",je(["graphic","dataLabel","connector","shadowGroup"],function(t){i[t]&&i[t][e]()}),i.legendItem&&r.legend.colorizeItem(i,t),!n.isDirty&&n.options.ignoreHiddenPoint&&(n.isDirty=!0,r.redraw())},slice:function(t,e,i){var n=this.series;D(i,n.chart),p(e,!0),this.sliced=this.options.sliced=t=c(t)?t:!this.sliced,n.options.data[Ye(this,n.data)]=this.options,t=t?this.slicedTranslation:{translateX:0,translateY:0},this.graphic.animate(t),this.shadowGroup&&this.shadowGroup.animate(t)}}),requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",fill:"color"},getColor:Oe,animate:function(t){var e=this,i=e.points,n=e.startAngleRad;t||(je(i,function(t){var i=t.graphic,t=t.shapeArgs;i&&(i.attr({r:e.center[3]/2,start:n,end:n}),i.animate({r:t.r,start:t.start,end:t.end},e.options.animation))}),e.animate=null)},setData:function(t,e){mi.prototype.setData.call(this,t,!1),this.processData(),this.generatePoints(),p(e,!0)&&this.chart.redraw()},generatePoints:function(){var t,e,i,n,r=0,s=this.options.ignoreHiddenPoint;for(mi.prototype.generatePoints.call(this),e=this.points,i=e.length,t=0;i>t;t++)n=e[t],r+=s&&!n.visible?0:n.y;for(this.total=r,t=0;i>t;t++)n=e[t],n.percentage=r>0?n.y/r*100:0,n.total=r},translate:function(t){this.generatePoints();var e,i,n,r,s,o=0,a=this.options,l=a.slicedOffset,h=l+a.borderWidth,c=a.startAngle||0,d=this.startAngleRad=ye/180*(c-90),c=(this.endAngleRad=ye/180*((a.endAngle||c+360)-90))-d,u=this.points,p=a.dataLabels.distance,a=a.ignoreHiddenPoint,f=u.length;for(t||(this.center=t=this.getCenter()),this.getX=function(e,i){return n=le.asin((e-t[1])/(t[2]/2+p)),t[0]+(i?-1:1)*ge(n)*(t[2]/2+p)},r=0;f>r;r++)s=u[r],e=d+o*c,(!a||s.visible)&&(o+=s.percentage/100),i=d+o*c,s.shapeType="arc",s.shapeArgs={x:t[0],y:t[1],r:t[2]/2,innerR:t[3]/2,start:he(1e3*e)/1e3,end:he(1e3*i)/1e3},n=(i+e)/2,n>.75*c&&(n-=2*ye),s.slicedTranslation={translateX:he(ge(n)*l),translateY:he(me(n)*l)},e=ge(n)*t[2]/2,i=me(n)*t[2]/2,s.tooltipPos=[t[0]+.7*e,t[1]+.7*i],s.half=-ye/2>n||n>ye/2?1:0,s.angle=n,h=pe(h,p/2),s.labelPos=[t[0]+e+ge(n)*p,t[1]+i+me(n)*p,t[0]+e+ge(n)*h,t[1]+i+me(n)*h,t[0]+e,t[1]+i,0>p?"center":s.half?"right":"left",n]},setTooltipPoints:Oe,drawGraph:null,drawPoints:function(){var e,i,n,r,s=this,o=s.chart.renderer,a=s.options.shadow;a&&!s.shadowGroup&&(s.shadowGroup=o.g("shadow").add(s.group)),je(s.points,function(l){i=l.graphic,r=l.shapeArgs,n=l.shadowGroup,a&&!n&&(n=l.shadowGroup=o.g("shadow").add(s.shadowGroup)),e=l.sliced?l.slicedTranslation:{translateX:0,translateY:0},n&&n.attr(e),i?i.animate(t(r,e)):l.graphic=i=o.arc(r).setRadialReference(s.center).attr(l.pointAttr[l.selected?"select":""]).attr({"stroke-linejoin":"round"}).attr(e).add(s.group).shadow(a,n),void 0!==l.visible&&l.setVisible(l.visible)})},sortByAngle:function(t,e){t.sort(function(t,i){return void 0!==t.angle&&(i.angle-t.angle)*e})},drawTracker:Xe.drawTrackerPoint,drawLegendSymbol:li.drawRectangle,getCenter:hi.getCenter,getSymbol:Oe},We=m(mi,We),He.pie=We,mi.prototype.drawDataLabels=function(){var i,n,r,s,o=this,a=o.options,l=a.cursor,h=a.dataLabels,a=o.points;(h.enabled||o._hasPointLabels)&&(o.dlProcessOptions&&o.dlProcessOptions(h),s=o.plotGroup("dataLabelsGroup","data-labels",o.visible?"visible":"hidden",h.zIndex||6),n=h,je(a,function(a){var d,u,f,g=a.dataLabel,m=a.connector,y=!0;if(i=a.options&&a.options.dataLabels,d=p(i&&i.enabled,n.enabled),g&&!d)a.dataLabel=g.destroy();else if(d){if(h=e(n,i),d=h.rotation,u=a.getLabelConfig(),r=h.format?b(h.format,u):h.formatter.call(u,h),h.style.color=p(h.color,h.style.color,o.color,"black"),g)c(r)?(g.attr({text:r}),y=!1):(a.dataLabel=g=g.destroy(),m&&(a.connector=m.destroy()));else if(c(r)){g={fill:h.backgroundColor,stroke:h.borderColor,"stroke-width":h.borderWidth,r:h.borderRadius||0,rotation:d,padding:h.padding,zIndex:1};for(f in g)g[f]===_&&delete g[f];g=a.dataLabel=o.chart.renderer[d?"text":"label"](r,0,-999,null,null,null,h.useHTML).attr(g).css(t(h.style,l&&{cursor:l})).add(s).shadow(h.shadow)}g&&o.alignDataLabel(a,g,h,null,y)}}))},mi.prototype.alignDataLabel=function(e,i,n,r,s){var o=this.chart,a=o.inverted,l=p(e.plotX,-999),h=p(e.plotY,-999),c=i.getBBox();(e=this.visible&&(e.series.forceDL||o.isInsidePlot(e.plotX,e.plotY,a)))&&(r=t({x:a?o.plotWidth-h:l,y:he(a?o.plotHeight-l:h),width:0,height:0},r),t(n,{width:c.width,height:c.height}),n.rotation?(a={align:n.align,x:r.x+n.x+r.width/2,y:r.y+n.y+r.height/2},i[s?"attr":"animate"](a)):(i.align(n,null,r),a=i.alignAttr,"justify"===p(n.overflow,"justify")?this.justifyDataLabel(i,n,a,c,r,s):p(n.crop,!0)&&(e=o.isInsidePlot(a.x,a.y)&&o.isInsidePlot(a.x+c.width,a.y+c.height)))),e||(i.attr({y:-999}),i.placed=!1)},mi.prototype.justifyDataLabel=function(t,e,i,n,r,s){var o,a,l=this.chart,h=e.align,c=e.verticalAlign;o=i.x,0>o&&("right"===h?e.align="left":e.x=-o,a=!0),o=i.x+n.width,o>l.plotWidth&&("left"===h?e.align="right":e.x=l.plotWidth-o,a=!0),o=i.y,0>o&&("bottom"===c?e.verticalAlign="top":e.y=-o,a=!0),o=i.y+n.height,o>l.plotHeight&&("top"===c?e.verticalAlign="bottom":e.y=l.plotHeight-o,a=!0),a&&(t.placed=!s,t.align(e,null,r))},He.pie&&(He.pie.prototype.drawDataLabels=function(){var t,e,i,n,r,s,o,a,l,h,c,d,u=this,f=u.data,g=u.chart,m=u.options.dataLabels,y=p(m.connectorPadding,10),v=p(m.connectorWidth,1),x=g.plotWidth,g=g.plotHeight,b=p(m.softConnector,!0),w=m.distance,k=u.center,S=k[2]/2,T=k[1],C=w>0,A=[[],[]],L=[0,0,0,0],M=function(t,e){return e.y-t.y};if(u.visible&&(m.enabled||u._hasPointLabels)){for(mi.prototype.drawDataLabels.apply(u),je(f,function(t){t.dataLabel&&t.visible&&A[t.half].push(t)}),c=0;!o&&f[c];)o=f[c]&&f[c].dataLabel&&(f[c].dataLabel.getBBox().height||21),c++;for(c=2;c--;){var I,f=[],D=[],E=A[c],O=E.length;if(u.sortByAngle(E,c-.5),w>0){for(d=T-S-w;T+S+w>=d;d+=o)f.push(d);if(r=f.length,O>r){for(t=[].concat(E),t.sort(M),d=O;d--;)t[d].rank=d;for(d=O;d--;)E[d].rank>=r&&E.splice(d,1);O=E.length}for(d=0;O>d;d++){t=E[d],s=t.labelPos,t=9999;var R,z;for(z=0;r>z;z++)R=fe(f[z]-s[1]),t>R&&(t=R,I=z);if(d>I&&null!==f[d])I=d;else for(O-d+I>r&&null!==f[d]&&(I=r-O+d);null===f[I];)I++;D.push({i:I,y:f[I]}),f[I]=null}D.sort(M)}for(d=0;O>d;d++)t=E[d],s=t.labelPos,n=t.dataLabel,h=t.visible===!1?"hidden":"visible",t=s[1],w>0?(r=D.pop(),I=r.i,l=r.y,(t>l&&null!==f[I+1]||l>t&&null!==f[I-1])&&(l=t)):l=t,a=m.justify?k[0]+(c?-1:1)*(S+w):u.getX(0===I||I===f.length-1?t:l,c),n._attr={visibility:h,align:s[6]},n._pos={x:a+m.x+({left:y,right:-y}[s[6]]||0),y:l+m.y-10},n.connX=a,n.connY=l,null===this.options.size&&(r=n.width,y>a-r?L[3]=ue(he(r-a+y),L[3]):a+r>x-y&&(L[1]=ue(he(a+r-x+y),L[1])),0>l-o/2?L[0]=ue(he(-l+o/2),L[0]):l+o/2>g&&(L[2]=ue(he(l+o/2-g),L[2])))}(0===P(L)||this.verifyDataLabelOverflow(L))&&(this.placeDataLabels(),C&&v&&je(this.points,function(t){e=t.connector,s=t.labelPos,(n=t.dataLabel)&&n._pos?(h=n._attr.visibility,a=n.connX,l=n.connY,i=b?["M",a+("left"===s[6]?5:-5),l,"C",a,l,2*s[2]-s[4],2*s[3]-s[5],s[2],s[3],"L",s[4],s[5]]:["M",a+("left"===s[6]?5:-5),l,"L",s[2],s[3],"L",s[4],s[5]],e?(e.animate({d:i}),e.attr("visibility",h)):t.connector=e=u.chart.renderer.path(i).attr({"stroke-width":v,stroke:m.connectorColor||t.color||"#606060",visibility:h}).add(u.group)):e&&(t.connector=e.destroy())}))}},He.pie.prototype.placeDataLabels=function(){je(this.points,function(t){var e,t=t.dataLabel;t&&((e=t._pos)?(t.attr(t._attr),t[t.moved?"animate":"attr"](e),t.moved=!0):t&&t.attr({y:-999}))})},He.pie.prototype.alignDataLabel=Oe,He.pie.prototype.verifyDataLabelOverflow=function(t){var e,i=this.center,n=this.options,r=n.center,s=n=n.minSize||80;return null!==r[0]?s=ue(i[2]-ue(t[1],t[3]),n):(s=ue(i[2]-t[1]-t[3],n),i[0]+=(t[3]-t[1])/2),null!==r[1]?s=ue(pe(s,i[2]-ue(t[0],t[2])),n):(s=ue(pe(s,i[2]-t[0]-t[2]),n),i[1]+=(t[0]-t[2])/2),sp(this.translatedThreshold,o.plotSizeY),c=p(n.inside,!!this.options.stacking);l&&(r=e(l),a&&(r={x:o.plotWidth-r.y-r.height,y:o.plotHeight-r.x-r.width,width:r.height,height:r.width}),!c)&&(a?(r.x+=h?0:r.width,r.width=0):(r.y+=h?r.height:0,r.height=0)),n.align=p(n.align,!a||c?"center":h?"right":"left"),n.verticalAlign=p(n.verticalAlign,a||c?"middle":h?"top":"bottom"),mi.prototype.alignDataLabel.call(this,t,i,n,r,s)}),t(Highcharts,{Axis:z,Chart:N,Color:oi,Point:gi,Tick:R,Tooltip:F,Renderer:H,Series:mi,SVGElement:O,SVGRenderer:ai,arrayMin:C,arrayMax:P,charts:Re,dateFormat:G,format:b,pathAnim:Y,getOptions:function(){return X},hasBidiBug:Le,isTouchDevice:Ce,numberFormat:y,seriesTypes:He,setOptions:function(t){return X=e(!0,X,t),E(),X},addEvent:Ze,removeEvent:Ke,createElement:g,discardElement:L,css:f,each:je,extend:t,map:Ue,merge:e,pick:p,splat:u,extendClass:m,pInt:i,wrap:x,svg:Ae,canvas:Me,vml:!Ae&&!Me,product:"Highcharts",version:"3.0.8"})}(),function(){var t=Highcharts,e=t.Chart,i=t.addEvent,n=t.createElement,r=t.discardElement,s=t.css,o=t.merge,a=t.each,l=t.extend,h=Math.max,c=document,d=window,u="ontouchstart"in c.documentElement,p=t.setOptions({lang:{downloadPNG:"Download PNG image",downloadJPEG:"Download JPEG image",downloadPDF:"Download PDF document",downloadSVG:"Download SVG vector image",exportButtonTitle:"Export to raster or vector image",printButtonTitle:"Print the chart"}});p.navigation={menuStyle:{border:"1px solid #A0A0A0",background:"#FFFFFF"},menuItemStyle:{padding:"0 5px",background:"none",color:"#303030",fontSize:u?"14px":"11px"},menuItemHoverStyle:{background:"#4572A5",color:"#FFFFFF"},buttonOptions:{align:"right",backgroundColor:{linearGradient:[0,0,0,20],stops:[[.4,"#F7F7F7"],[.6,"#E3E3E3"]]},borderColor:"#B0B0B0",borderRadius:3,borderWidth:1,height:20,hoverBorderColor:"#909090",hoverSymbolFill:"#81A7CF",hoverSymbolStroke:"#4572A5",symbolFill:"#E0E0E0",symbolStroke:"#A0A0A0",symbolX:11.5,symbolY:10.5,verticalAlign:"top",width:24,y:10}},p.exporting={type:"image/png",url:"http://export.highcharts.com/",width:800,buttons:{exportButton:{symbol:"exportIcon",x:-10,symbolFill:"#A8BF77",hoverSymbolFill:"#768F3E",_titleKey:"exportButtonTitle",menuItems:[{textKey:"downloadPNG",onclick:function(){this.exportChart()}},{textKey:"downloadJPEG",onclick:function(){this.exportChart({type:"image/jpeg"})}},{textKey:"downloadPDF",onclick:function(){this.exportChart({type:"application/pdf"})}},{textKey:"downloadSVG",onclick:function(){this.exportChart({type:"image/svg+xml"})}}]},printButton:{symbol:"printIcon",x:-36,symbolFill:"#B5C9DF",hoverSymbolFill:"#779ABF",_titleKey:"printButtonTitle",onclick:function(){this.print()}}}},l(e.prototype,{getSVG:function(t){var e,i,s,h,d,u,p=this,f=o(p.options,t);return c.createElementNS||(c.createElementNS=function(t,e){var i=c.createElement(e);return i.getBBox=function(){return p.renderer.Element.prototype.getBBox.apply({element:i})},i}),e=n("div",null,{position:"absolute",top:"-9999em",width:p.chartWidth+"px",height:p.chartHeight+"px"},c.body),l(f.chart,{renderTo:e,forExport:!0}),f.exporting.enabled=!1,f.chart.plotBackgroundImage=null,f.series=[],a(p.series,function(t){s=t.options,s.animation=!1,s.showCheckbox=!1,s&&s.marker&&/^url\(/.test(s.marker.symbol)&&(s.marker.symbol="circle"),s.data=[],a(t.data,function(t){h=t.config,d={x:t.x,y:t.y,name:t.name},"object"==typeof h&&t.config&&h.constructor!=Array&&l(d,h),s.data.push(d),(u=t.config&&t.config.marker)&&/^url\(/.test(u.symbol)&&delete u.symbol}),f.series.push(s)}),t=new Highcharts.Chart(f),i=t.container.innerHTML,f=null,t.destroy(),r(e),i=i.replace(/zIndex="[^"]+"/g,"").replace(/isShadow="[^"]+"/g,"").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/isTracker="[^"]+"/g,"").replace(/url\([^#]+#/g,"url(#").replace(/id=([^" >]+)/g,'id="$1"').replace(/class=([^" ]+)/g,'class="$1"').replace(/ transform /g," ").replace(/:(path|rect)/g,"$1").replace(/style="([^"]+)"/g,function(t){return t.toLowerCase()}),i=i.replace(/(url\(#highcharts-[0-9]+)"/g,"$1").replace(/"/g,"'"),2==i.match(/ xmlns="/g).length&&(i=i.replace(/xmlns="[^"]+"/,"")),i},exportChart:function(t,e){var i,s=this.getSVG(e);t=o(this.options.exporting,t),i=n("form",{method:"post",action:t.url},{display:"none"},c.body),a(["filename","type","width","svg"],function(e){n("input",{type:"hidden",name:e,value:{filename:t.filename||"chart",type:t.type,width:t.width,svg:s}[e]},null,i)}),i.submit(),r(i)},print:function(){var t=this,e=t.container,i=[],n=e.parentNode,r=c.body,s=r.childNodes;t.isPrinting||(t.isPrinting=!0,a(s,function(t,e){1==t.nodeType&&(i[e]=t.style.display,t.style.display="none")}),r.appendChild(e),d.print(),setTimeout(function(){n.appendChild(e),a(s,function(t,e){1==t.nodeType&&(t.style.display=i[e])}),t.isPrinting=!1},1e3))},contextMenu:function(e,r,o,c,d,p){var f,g,m=this,y=m.options.navigation,v=y.menuItemStyle,x=m.chartWidth,b=m.chartHeight,w="cache-"+e,k=m[w],S=h(d,p);k||(m[w]=k=n("div",{className:"highcharts-"+e},{position:"absolute",zIndex:1e3,padding:S+"px"},m.container),f=n("div",null,l({MozBoxShadow:"3px 3px 10px #888",WebkitBoxShadow:"3px 3px 10px #888",boxShadow:"3px 3px 10px #888"},y.menuStyle),k),g=function(){s(k,{display:"none"})},i(k,"mouseleave",g),a(r,function(e){e&&(n("div",{onmouseover:function(){s(this,y.menuItemHoverStyle)},onmouseout:function(){s(this,v)},innerHTML:e.text||t.getOptions().lang[e.textKey]},l({cursor:"pointer"},v),f)[u?"ontouchstart":"onclick"]=function(){g(),e.onclick.apply(m,arguments)})}),m.exportMenuWidth=k.offsetWidth,m.exportMenuHeight=k.offsetHeight),e={display:"block"},o+m.exportMenuWidth>x?e.right=x-o-d-S+"px":e.left=o-S+"px",c+p+m.exportMenuHeight>b?e.bottom=b-c-S+"px":e.top=c+p-S+"px",s(k,e)},addButton:function(e){function i(){r.attr(m),n.attr(g)}var n,r,s,a=this,h=a.renderer,c=o(a.options.navigation.buttonOptions,e),d=c.onclick,u=c.menuItems,p=c.width,f=c.height;e=c.borderWidth;var g={stroke:c.borderColor},m={stroke:c.symbolStroke,fill:c.symbolFill};c.enabled!==!1&&(n=h.rect(0,0,p,f,c.borderRadius,e).align(c,!0).attr(l({fill:c.backgroundColor,"stroke-width":e,zIndex:19},g)).add(),s=h.rect(0,0,p,f,0).align(c).attr({fill:"rgba(255, 255, 255, 0.001)",title:t.getOptions().lang[c._titleKey],zIndex:21}).css({cursor:"pointer"}).on("mouseover",function(){r.attr({stroke:c.hoverSymbolStroke,fill:c.hoverSymbolFill}),n.attr({stroke:c.hoverBorderColor})}).on("mouseout",i).on("click",i).add(),u&&(d=function(){i();var t=s.getBBox();a.contextMenu("export-menu",u,t.x,t.y,p,f)}),s.on("click",function(){d.apply(a,arguments)}),r=h.symbol(c.symbol,c.symbolX,c.symbolY,(c.symbolSize||12)/2).align(c,!0).attr(l(m,{"stroke-width":c.symbolStrokeWidth||1,zIndex:20})).add())}}),t.Renderer.prototype.symbols.exportIcon=function(t,e,i){return["M",t-i,e+i,"L",t+i,e+i,t+i,e+.5*i,t-i,e+.5*i,"Z","M",t,e+.5*i,"L",t-.5*i,e-i/3,t-i/6,e-i/3,t-i/6,e-i,t+i/6,e-i,t+i/6,e-i/3,t+.5*i,e-i/3,"Z"]},t.Renderer.prototype.symbols.printIcon=function(t,e,i){return["M",t-i,e+.5*i,"L",t+i,e+.5*i,t+i,e-i/3,t-i,e-i/3,"Z","M",t-.5*i,e-i/3,"L",t-.5*i,e-i,t+.5*i,e-i,t+.5*i,e-i/3,"Z","M",t-.5*i,e+.5*i,"L",t-.75*i,e+i,t+.75*i,e+i,t+.5*i,e+.5*i,"Z"]},e.prototype.callbacks.push(function(t){var e,i=t.options.exporting,n=i.buttons;if(i.enabled!==!1)for(e in n)t.addButton(n[e])})}();var createWindows=function(t,e,i){return function(n){createWindowsWithData(n,t,e,i)}},updatePortletPositions=function(t,e){return function(){if(t){var i=$(this).sortable("serialize");colId=$(this).attr("id").charAt($(this).attr("id").length-1),portletArray=getPortletArray(i),jsonResult={col:colId,positions:portletArray},portletArray.length>0&&$.ajax({type:"PUT",url:"../channels/"+e+"/windows",data:{_method:"PUT",page:JSON.stringify(jsonResult)},dataType:"json"})}}},decoratePortlet=function(t){return function(){var e=$(this).find(".portlet-header");return e.append(""),thisObject=$(this),"true"==t?(thisObject.find(".wtype").prepend(""),thisObject.find(".wtype-chart_window").append(""),thisObject.find(".wtype").append(""),thisObject.find(".portlet-header").css("cursor","move")):$(".column").sortable({disabled:!0}),$(this).attr("id")}},uiEditClick=function(t){return function(){var e=$(this).parents(".portlet:first").attr("id").substring(8),i="";$("#chartConfig"+e).load("/channels/"+t+"/charts/"+e+"/edit",function(){i=$("#chartOptions"+e).html(),"undefined"!=i&&i.length>2&&$.each(i.split("&"),setupChartForm(e)),$("#button"+e).click(function(){updateChart(e,!0,450,250,t,!0),$("#chartConfig"+e).dialog("close")})}).dialog({title:"Chart Options",modal:!0,resizable:!1,width:500,dialogClass:"dev-info-dialog"})}},uiViewClick=function(t){return function(){var e=$(this).parents(".portlet:first").find(".portlet-content").offset().left,i=$(this).parents(".portlet:first").find(".portlet-content").offset().top,n=$(this).parents(".portlet:first").attr("id").substring(8);$("body").append(''),$.get("/channels/"+t+"/windows/"+n+"/iframe",function(t){var e=t.replace(/id=\"iframe[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?\"/,"");$("#iframeinner"+n).text(e)}),$("#iframepopup"+n).dialog({resizable:!1,width:"300px",position:[e+200,i-200],title:"Chart Iframe",dialogClass:"dev-info-dialog"})}},uiCloseClick=function(t){return function(){var e=$(this).parents(".portlet:first").attr("id").substring(8),i=$(this).parents(".portlet:first"); +$.update("/channels/"+t+"/windows/"+e+"/hide",function(){i.hide("drop",function(){i.remove()})})}};!function(t){function e(){var e=i(this);return isNaN(e.datetime)||t(this).text(n(e.datetime)),this}function i(e){if(e=t(e),!e.data("timeago")){e.data("timeago",{datetime:s.datetime(e)});var i=t.trim(e.text());i.length>0&&e.attr("title",i)}return e.data("timeago")}function n(t){return s.inWords(r(t))}function r(t){return(new Date).getTime()-t.getTime()}t.timeago=function(e){return e instanceof Date?n(e):"string"==typeof e?n(t.timeago.parse(e)):n(t.timeago.datetime(e))};var s=t.timeago;t.extend(t.timeago,{settings:{refreshMillis:6e4,allowFuture:!1,strings:{prefixAgo:null,prefixFromNow:null,suffixAgo:"ago",suffixFromNow:"from now",seconds:"less than a minute",minute:"about a minute",minutes:"%d minutes",hour:"about an hour",hours:"about %d hours",day:"a day",days:"%d days",month:"about a month",months:"%d months",year:"about a year",years:"%d years",numbers:[]}},inWords:function(e){function i(i,r){var s=t.isFunction(i)?i(r,e):i,o=n.numbers&&n.numbers[r]||r;return s.replace(/%d/i,o)}var n=this.settings.strings,r=n.prefixAgo,s=n.suffixAgo;this.settings.allowFuture&&(0>e&&(r=n.prefixFromNow,s=n.suffixFromNow),e=Math.abs(e));var o=e/1e3,a=o/60,l=a/60,h=l/24,c=h/365,d=45>o&&i(n.seconds,Math.round(o))||90>o&&i(n.minute,1)||45>a&&i(n.minutes,Math.round(a))||90>a&&i(n.hour,1)||24>l&&i(n.hours,Math.round(l))||48>l&&i(n.day,1)||30>h&&i(n.days,Math.floor(h))||60>h&&i(n.month,1)||365>h&&i(n.months,Math.floor(h/30))||2>c&&i(n.year,1)||i(n.years,Math.floor(c));return t.trim([r,d,s].join(" "))},parse:function(e){var i=t.trim(e);return i=i.replace(/\.\d\d\d+/,""),i=i.replace(/-/,"/").replace(/-/,"/"),i=i.replace(/T/," ").replace(/Z/," UTC"),i=i.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"),new Date(i)},datetime:function(e){var i="time"===t(e).get(0).tagName.toLowerCase(),n=i?t(e).attr("datetime"):t(e).attr("title");return s.parse(n)}}),t.fn.timeago=function(){var t=this;t.each(e);var i=s.settings;return i.refreshMillis>0&&setInterval(function(){t.each(e)},i.refreshMillis),t},document.createElement("abbr"),document.createElement("time")}(jQuery),function(t){function e(t,e){return e.measureText(t).width}function i(t,e){return e.text(t),e.width()}var n,r,s,o=!1;t.fn.shorten=function(){var o={},a=arguments,l=a.callee;if(a.length)if(a[0].constructor==Object)o=a[0];else{if("options"==a[0])return t(this).eq(0).data("shorten-options");o={width:parseInt(a[0]),tail:a[1]}}this.css("visibility","hidden");var h=t.extend({},l.defaults,o);return this.each(function(){var a,c=t(this),d=c.text(),u=d.length,p=t("").html(h.tail).text(),f={shortened:!1,textOverflow:!1};if(a="none"!=c.css("float")?h.width||c.width():h.width||c.parent().width(),0>a)return!0;if(c.data("shorten-options",h),this.style.display="inline-block",this.style.whiteSpace="nowrap",n){var g=t(this),m=document.createElement("canvas");ctx=m.getContext("2d"),g.html(m),ctx.font=g.css("font-style")+" "+g.css("font-variant")+" "+g.css("font-weight")+" "+Math.ceil(parseFloat(g.css("font-size")))+"px "+g.css("font-family"),r=ctx,s=e}else g=t('
    '),$td=t("td",g),t(this).html(g),r=$td,s=i;if(g=s.call(this,d,r),a>g)return c.text(d),this.style.visibility="visible",c.data("shorten-info",f),!0;if(h.tooltip&&this.setAttribute("title",d),l._native&&!o.width&&(m=t(""+h.tail+"").text(),1==m.length&&8230==m.charCodeAt(0)))return c.text(d),this.style.overflow="hidden",this.style[l._native]="ellipsis",this.style.visibility="visible",f.shortened=!0,f.textOverflow="ellipsis",c.data("shorten-info",f),!0;p=s.call(this,p,r),a-=p,p=1.15*a,g-p>0&&(p=d.substring(0,Math.ceil(u*(p/g))),s.call(this,p,r)>a&&(d=p,u=d.length));do u--,d=d.substring(0,u);while(s.call(this,d,r)>=a);return c.html(t.trim(t("").text(d).html())+h.tail),this.style.visibility="visible",f.shortened=!0,c.data("shorten-info",f),!0})};var a=document.documentElement.style;"textOverflow"in a?o="textOverflow":"OTextOverflow"in a&&(o="OTextOverflow"),"undefined"!=typeof Modernizr&&Modernizr.canvastext?n=Modernizr.canvastext:(a=document.createElement("canvas"),n=!(!a.getContext||!a.getContext("2d")||"function"!=typeof a.getContext("2d").fillText)),t.fn.shorten._is_canvasTextSupported=n,t.fn.shorten._native=o,t.fn.shorten.defaults={tail:"…",tooltip:!0}}(jQuery),function(t){window.NestedFormEvents=function(){this.addFields=t.proxy(this.addFields,this),this.removeFields=t.proxy(this.removeFields,this)},NestedFormEvents.prototype={addFields:function(e){var i=e.currentTarget,n=t(i).data("association"),r=t("#"+t(i).data("blueprint-id")),s=r.data("blueprint"),o=(t(i).closest(".fields").closestChild("input, textarea, select").eq(0).attr("name")||"").replace(new RegExp("[[a-z_]+]$"),"");if(o)for(var a=o.match(/[a-z_]+_attributes(?=\]\[(new_)?\d+\])/g)||[],l=o.match(/[0-9]+/g)||[],h=0;h0;)for(var n=i.shift(),r=n.children(),s=0;s=a&&l>n||l>=r&&r>a||a>n&&r>l}),a=l+1;var c=0;for(var h in o)if(o[h].selected){var d=o[h].start+c;e&&i.tabString==t.value.substring(d,d+i.tabString.length)?(t.value=t.value.substring(0,d)+t.value.substring(d+i.tabString.length),c-=i.tabString.length):e||(t.value=t.value.substring(0,d)+i.tabString+t.value.substring(d),c+=i.tabString.length)}t.focus();var u=n+(c>0?i.tabString.length:0>c?-i.tabString.length:0),p=r+c;t.setSelectionRange(u,p)}}function n(e,i,n){var r=document.selection.createRange();if(e==r.parentElement())if(""==r.text)if(i){var s=r.getBookmark();r.moveStart("character",-n.tabString.length),n.tabString==r.text?r.text="":(r.moveToBookmark(s),r.moveEnd("character",n.tabString.length),n.tabString==r.text&&(r.text="")),r.collapse(!0),r.select()}else r.text=n.tabString,r.collapse(!1),r.select();else{var o=r.text,a=o.length,l=o.split("\r\n"),h=document.body.createTextRange();h.moveToElementText(e),h.setEndPoint("EndToStart",r);var c=h.text,d=c.split("\r\n"),u=c.length,p=document.body.createTextRange();p.moveToElementText(e),p.setEndPoint("StartToEnd",r);var f=p.text,g=document.body.createTextRange();g.moveToElementText(e),g.setEndPoint("StartToEnd",h);var m=g.text,y=t(e).html();t("#r3").text(u+" + "+a+" + "+f.length+" = "+y.length),u+m.length0?x.setEndPoint("StartToEnd",h):x.setEndPoint("StartToStart",h),x.setEndPoint("EndToEnd",r),x.select()}}t.fn.tabby=function(i){var n=t.extend({},t.fn.tabby.defaults,i),r=t.fn.tabby.pressed;return this.each(function(){$this=t(this);var i=t.meta?t.extend({},n,$this.data()):n;$this.bind("keydown",function(n){var s=t.fn.tabby.catch_kc(n);return 16==s&&(r.shft=!0),17==s&&(r.ctrl=!0,setTimeout("$.fn.tabby.pressed.ctrl = false;",1e3)),18==s&&(r.alt=!0,setTimeout("$.fn.tabby.pressed.alt = false;",1e3)),9!=s||r.ctrl||r.alt?void 0:(n.preventDefault,r.last=s,setTimeout("$.fn.tabby.pressed.last = null;",0),e(t(n.target).get(0),r.shft,i),!1)}).bind("keyup",function(e){16==t.fn.tabby.catch_kc(e)&&(r.shft=!1)}).bind("blur",function(e){9==r.last&&t(e.target).one("focus",function(){r.last=null}).get(0).focus()})})},t.fn.tabby.catch_kc=function(t){return t.keyCode?t.keyCode:t.charCode?t.charCode:t.which},t.fn.tabby.pressed={shft:!1,ctrl:!1,alt:!1,last:null},t.fn.tabby.defaults={tabString:String.fromCharCode(9)}}(jQuery),function(t,e,i){var n={required:"The %s field is required.",matches:"The %s field does not match the %s field.",valid_email:"The %s field must contain a valid email address.",min_length:"The %s field must be at least %s characters in length.",max_length:"The %s field must not exceed %s characters in length.",exact_length:"The %s field must be exactly %s characters in length.",greater_than:"The %s field must contain a number greater than %s.",less_than:"The %s field must contain a number less than %s.",alpha:"The %s field must only contain alphabetical characters.",alpha_numeric:"The %s field must only contain alpha-numeric characters.",alpha_dash:"The %s field must only contain alpha-numeric characters, underscores, and dashes.",numeric:"The %s field must contain only numbers.",integer:"The %s field must contain an integer."},r=function(){},s=/^(.+)\[(.+)\]$/,o=/^[0-9]+$/,a=/^\-?[0-9]+$/,l=/^\-?[0-9]*\.?[0-9]+$/,h=/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}$/i,c=/^[a-z]+$/i,d=/^[a-z0-9]+$/i,u=/^[a-z0-9_-]+$/i,p=function(t,i,n){for(this.callback=n||r,this.errors=[],this.fields={},this.form=e.forms[t]||{},this.messages={},this.handlers={},t=0,n=i.length;n>t;t++){var s=i[t];s.name&&s.rules&&(this.fields[s.name]={name:s.name,display:s.display||s.name,rules:s.rules,type:null,value:null,checked:null})}this.form.onsubmit=function(t){return function(e){try{return t._validateForm(e)}catch(i){}}}(this)};p.prototype.setMessage=function(t,e){return this.messages[t]=e,this},p.prototype.registerCallback=function(t,e){return t&&"string"==typeof t&&e&&"function"==typeof e&&(this.handlers[t]=e),this},p.prototype._validateForm=function(t){this.errors=[];for(var e in this.fields)if(this.fields.hasOwnProperty(e)){var n=this.fields[e]||{},r=this.form[n.name];r&&r!==i&&(n.type=r.type,n.value=r.value,n.checked=r.checked),this._validateField(n)}if("function"==typeof this.callback&&this.callback(this.errors,t),this.errors.length>0){if(!t||!t.preventDefault)return!1;t.preventDefault()}return!0},p.prototype._validateField=function(t){var e=t.rules.split("|");if(-1!==t.rules.indexOf("required")||t.value&&""!==t.value&&t.value!==i)for(var r=0,o=e.length;o>r;r++){var a=e[r],l=null,h=!1;if((parts=s.exec(a))&&(a=parts[1],l=parts[2]),"function"==typeof this._hooks[a]?this._hooks[a].apply(this,[t,l])||(h=!0):"callback_"===a.substring(0,9)&&(a=a.substring(9,a.length),"function"==typeof this.handlers[a]&&this.handlers[a].apply(this,[t.value])===!1&&(h=!0)),h){(e=this.messages[a]||n[a])?(t=e.replace("%s",t.display),l&&(t=t.replace("%s",this.fields[l]?this.fields[l].display:l)),this.errors.push(t)):this.errors.push("An error has occurred with the "+t.display+" field.");break}}},p.prototype._hooks={required:function(t){var e=t.value;return"checkbox"===t.type?t.checked===!0:null!==e&&""!==e},matches:function(t,e){return(el=this.form[e])?t.value===el.value:!1},valid_email:function(t){return h.test(t.value)},min_length:function(t,e){return o.test(e)?t.value.length>=e:!1},max_length:function(t,e){return o.test(e)?t.value.length<=e:!1},exact_length:function(t,e){return o.test(e)?t.value.length==e:!1},greater_than:function(t,e){return l.test(t.value)?parseFloat(t.value)>parseFloat(e):!1},less_than:function(t,e){return l.test(t.value)?parseFloat(t.value)="0"&&"7">=i?parseInt(t.substring(1),8):"u"===i||"x"===i?parseInt(t.substring(2),16):t.charCodeAt(1)}function i(t){return 32>t?(16>t?"\\x0":"\\x")+t.toString(16):(t=String.fromCharCode(t),("\\"===t||"-"===t||"["===t||"]"===t)&&(t="\\"+t),t)}function n(t){for(var n=t.substring(1,t.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),t=[],r=[],s="^"===n[0],o=s?1:0,a=n.length;a>o;++o){var l=n[o];if(/\\[bdsw]/i.test(l))t.push(l);else{var h,l=e(l);a>o+2&&"-"===n[o+1]?(h=e(n[o+2]),o+=2):h=l,r.push([l,h]),65>h||l>122||(65>h||l>90||r.push([32|Math.max(65,l),32|Math.min(h,90)]),97>h||l>122||r.push([-33&Math.max(97,l),-33&Math.min(h,122)]))}}for(r.sort(function(t,e){return t[0]-e[0]||e[1]-t[1]}),n=[],l=[0/0,0/0],o=0;oa[0]&&(a[1]+1>a[0]&&r.push("-"),r.push(i(a[1])));return r.push("]"),r.join("")}function r(t){for(var e=t.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),i=e.length,r=[],a=0,l=0;i>a;++a){var h=e[a];"("===h?++l:"\\"===h.charAt(0)&&(h=+h.substring(1))&&l>=h&&(r[h]=-1)}for(a=1;aa;++a)h=e[a],"("===h?(++l,void 0===r[l]&&(e[a]="(?:")):"\\"===h.charAt(0)&&(h=+h.substring(1))&&l>=h&&(e[a]="\\"+r[l]);for(l=a=0;i>a;++a)"^"===e[a]&&"^"!==e[a+1]&&(e[a]="");if(t.ignoreCase&&o)for(a=0;i>a;++a)h=e[a],t=h.charAt(0),h.length>=2&&"["===t?e[a]=n(h):"\\"!==t&&(e[a]=h.replace(/[A-Za-z]/g,function(t){return t=t.charCodeAt(0),"["+String.fromCharCode(-33&t,32|t)+"]"}));return e.join("")}for(var s=0,o=!1,a=!1,l=0,h=t.length;h>l;++l){var c=t[l];if(c.ignoreCase)a=!0;else if(/[a-z]/i.test(c.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){o=!0,a=!1;break}}for(var d={b:8,t:9,n:10,v:11,f:12,r:13},u=[],l=0,h=t.length;h>l;++l){if(c=t[l],c.global||c.multiline)throw Error(""+c);u.push("(?:"+r(c)+")")}return RegExp(u.join("|"),a?"gi":"g")}function e(t){function e(t){switch(t.nodeType){case 1:if(n.test(t.className))break;for(var i=t.firstChild;i;i=i.nextSibling)e(i);i=t.nodeName,("BR"===i||"LI"===i)&&(r[a]="\n",o[a<<1]=s++,o[a++<<1|1]=t);break;case 3:case 4:i=t.nodeValue,i.length&&(i=l?i.replace(/\r\n?/g,"\n"):i.replace(/[\t\n\r ]+/g," "),r[a]=i,o[a<<1]=s,s+=i.length,o[a++<<1|1]=t)}}var i,n=/(?:^|\s)nocode(?:\s|$)/,r=[],s=0,o=[],a=0;t.currentStyle?i=t.currentStyle.whiteSpace:window.getComputedStyle&&(i=document.defaultView.getComputedStyle(t,q).getPropertyValue("white-space"));var l=i&&"pre"===i.substring(0,3);return e(t),{a:r.join("").replace(/\n$/,""),c:o}}function i(t,e,i,n){e&&(t={a:e,d:t},i(t),n.push.apply(n,t.e))}function n(e,n){function r(t){for(var e=t.d,h=[e,"pln"],c=0,d=t.a.match(s)||[],u={},p=0,f=d.length;f>p;++p){var g,m=d[p],y=u[m],v=void 0;if("string"==typeof y)g=!1;else{var x=o[m.charAt(0)];if(x)v=m.match(x[1]),y=x[0];else{for(g=0;l>g;++g)if(x=n[g],v=m.match(x[1])){y=x[0];break}v||(y="pln")}!(g=y.length>=5&&"lang-"===y.substring(0,5))||v&&"string"==typeof v[1]||(g=!1,y="src"),g||(u[m]=y)}if(x=c,c+=m.length,g){g=v[1];var b=m.indexOf(g),w=b+g.length;v[2]&&(w=m.length-v[2].length,b=w-g.length),y=y.substring(5),i(e+x,m.substring(0,b),r,h),i(e+x+b,g,a(y,g),h),i(e+x+w,m.substring(w),r,h)}else h.push(e+x,y)}t.e=h}var s,o={};!function(){for(var i=e.concat(n),r=[],a={},l=0,h=i.length;h>l;++l){var c=i[l],d=c[3];if(d)for(var u=d.length;--u>=0;)o[d.charAt(u)]=c;c=c[1],d=""+c,a.hasOwnProperty(d)||(r.push(c),a[d]=q)}r.push(/[\S\s]/),s=t(r)}();var l=n.length;return r}function r(t){var e=[],i=[];t.tripleQuotedStrings?e.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):t.multiLineStrings?e.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,q,"'\"`"]):e.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]),t.verbatimStrings&&i.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var r=t.hashComments;return r&&(t.cStyleComments?(r>1?e.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):e.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),i.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):e.push(["com",/^#[^\n\r]*/,q,"#"])),t.cStyleComments&&(i.push(["com",/^\/\/[^\n\r]*/,q]),i.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q])),t.regexLiterals&&i.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]),(r=t.types)&&i.push(["typ",r]),t=(""+t.keywords).replace(/^ | $/g,""),t.length&&i.push(["kwd",RegExp("^(?:"+t.replace(/[\s,]+/g,"|")+")\\b"),q]),e.push(["pln",/^\s+/,q," \r\n  "]),i.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]),n(e,i)}function s(t,e){function i(t){switch(t.nodeType){case 1:if(s.test(t.className))break;if("BR"===t.nodeName)n(t),t.parentNode&&t.parentNode.removeChild(t);else for(t=t.firstChild;t;t=t.nextSibling)i(t);break;case 3:case 4:if(l){var e=t.nodeValue,r=e.match(o);if(r){var h=e.substring(0,r.index);t.nodeValue=h,(e=e.substring(r.index+r[0].length))&&t.parentNode.insertBefore(a.createTextNode(e),t.nextSibling),n(t),h||t.parentNode.removeChild(t)}}}}function n(t){function e(t,i){var n=i?t.cloneNode(!1):t,r=t.parentNode;if(r){var r=e(r,1),s=t.nextSibling;r.appendChild(n);for(var o=s;o;o=s)s=o.nextSibling,r.appendChild(o)}return n}for(;!t.nextSibling;)if(t=t.parentNode,!t)return;for(var i,t=e(t.nextSibling,0);(i=t.parentNode)&&1===i.nodeType;)t=i;h.push(t)}var r,s=/(?:^|\s)nocode(?:\s|$)/,o=/\r\n?|\n/,a=t.ownerDocument;t.currentStyle?r=t.currentStyle.whiteSpace:window.getComputedStyle&&(r=a.defaultView.getComputedStyle(t,q).getPropertyValue("white-space"));var l=r&&"pre"===r.substring(0,3);for(r=a.createElement("LI");t.firstChild;)r.appendChild(t.firstChild);for(var h=[r],c=0;cc;++c)r=h[c],r.className="L"+(c+u)%10,r.firstChild||r.appendChild(a.createTextNode(" ")),d.appendChild(r);t.appendChild(d)}function o(t,e){for(var i=e.length;--i>=0;){var n=e[i];x.hasOwnProperty(n)?window.console&&console.warn("cannot override language handler %s",n):x[n]=t}}function a(t,e){return t&&x.hasOwnProperty(t)||(t=/^\s*f;)d[f]!==d[f+2]?(d[p++]=d[f++],d[p++]=d[f++]):f+=2;for(u=p,f=p=0;u>f;){for(var g=d[f],m=d[f+1],y=f+2;u>=y+2&&d[y+1]===m;)y+=2;d[p++]=g,d[p++]=m,f=y}for(d.length=p;c>r;){var v,x=h[r+2]||l,b=d[t+2]||l,y=Math.min(x,b),w=h[r+1];if(1!==w.nodeType&&(v=o.substring(n,y))){s&&(v=v.replace(i,"\r")),w.nodeValue=v;var k=w.ownerDocument,S=k.createElement("SPAN");S.className=d[t+1];var T=w.parentNode;T.replaceChild(S,w),S.appendChild(w),x>n&&(h[r+1]=w=k.createTextNode(o.substring(y,x)),T.insertBefore(w,S.nextSibling))}n=y,n>=x&&(r+=2),n>=b&&(t+=2)}}catch(C){"console"in window&&console.log(C&&C.stack?C.stack:C)}}var h=["break,continue,do,else,for,if,return,while"],c=[[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],d=[c,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],u=[c,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],p=[u,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],c=[c,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],f=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],g=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],h=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],m=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,y=/\S/,v=r({keywords:[d,p,c,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+f,g,h],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),x={};o(v,["default-code"]),o(n([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]),o(n([["pln",/^\s+/,q," \r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]),o(n([],[["atv",/^[\S\s]+/]]),["uq.val"]),o(r({keywords:d,hashComments:!0,cStyleComments:!0,types:m}),["c","cc","cpp","cxx","cyc","m"]),o(r({keywords:"null,true,false"}),["json"]),o(r({keywords:p,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:m}),["cs"]),o(r({keywords:u,cStyleComments:!0}),["java"]),o(r({keywords:h,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]),o(r({keywords:f,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py"]),o(r({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]),o(r({keywords:g,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]),o(r({keywords:c,cStyleComments:!0,regexLiterals:!0}),["js"]),o(r({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]),o(n([],[["str",/^[\S\s]+/]]),["regex"]),window.prettyPrintOne=function(t,e,i){var n=document.createElement("PRE");return n.innerHTML=t,i&&s(n,i),l({g:e,i:i,h:n}),n.innerHTML},window.prettyPrint=function(t){function e(){for(var i=window.PR_SHOULD_USE_CONTINUATION?h.now()+250:1/0;d=0){var a,p,o=o.match(u);if(p=!o){p=r;for(var f=void 0,g=p.firstChild;g;g=g.nextSibling)var m=g.nodeType,f=1===m?f?p:g:3===m?y.test(g.nodeValue)?p:f:f;p=(a=f===p?void 0:f)&&"CODE"===a.tagName}for(p&&(o=a.className.match(u)),o&&(o=o[1]),p=!1,f=r.parentNode;f;f=f.parentNode)if(("pre"===f.tagName||"code"===f.tagName||"xmp"===f.tagName)&&f.className&&f.className.indexOf("prettyprint")>=0){p=!0;break}p||((p=(p=r.className.match(/\blinenums\b(?::(\d+))?/))?p[1]&&p[1].length?+p[1]:!0:!1)&&s(r,p),c={g:o,h:r,i:p},l(c))}}do;++o)n.push(i[r][o]);var i=q,h=Date;h.now||(h={now:function(){return+new Date}});var c,d=0,u=/\blang(?:uage)?-([\w.]+)(?!\S)/;e()},window.PR={createSimpleLexer:n,registerLangHandler:o,sourceDecorator:r,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}}(),!function(t){t(function(){window.prettyPrint&&prettyPrint()})}(window.jQuery),$(document).ready(function(){$(".response").click(function(){var t=$(this).data("response_type");$(".response").removeClass("active"),$(".response-"+t).addClass("active"),$(".format").hide(),$(".format-"+t).show()})}),$(document).ready(function(){$("#talkback_command_add").click(function(){$(this).hide(),$("#talkback_command_add_form").removeClass("hide")})}); \ No newline at end of file diff --git a/public/assets/application-9a8391e7623b717b5e3815c9802c8c19.js.gz b/public/assets/application-9a8391e7623b717b5e3815c9802c8c19.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..23a61972866a6643c3e2f694f012140de791c168 GIT binary patch literal 70523 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

    j|`Ub2+a=t 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 literal 0 HcmV?d00001 diff --git a/public/assets/application-c2ba8a3fdde171077398b657e1ae7906.css b/public/assets/application-c2ba8a3fdde171077398b657e1ae7906.css new file mode 100644 index 0000000..0570ac9 --- /dev/null +++ b/public/assets/application-c2ba8a3fdde171077398b657e1ae7906.css @@ -0,0 +1,103 @@ +/*! + * Bootstrap v3.1.0 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.table td,.table th{background-color:#fff !important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}.list-inline>li:first-child{padding-left:0}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media (min-width: 992px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666666666666%}.col-xs-10{width:83.33333333333334%}.col-xs-9{width:75%}.col-xs-8{width:66.66666666666666%}.col-xs-7{width:58.333333333333336%}.col-xs-6{width:50%}.col-xs-5{width:41.66666666666667%}.col-xs-4{width:33.33333333333333%}.col-xs-3{width:25%}.col-xs-2{width:16.666666666666664%}.col-xs-1{width:8.333333333333332%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666666666666%}.col-xs-pull-10{right:83.33333333333334%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666666666666%}.col-xs-pull-7{right:58.333333333333336%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666666666667%}.col-xs-pull-4{right:33.33333333333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.666666666666664%}.col-xs-pull-1{right:8.333333333333332%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666666666666%}.col-xs-push-10{left:83.33333333333334%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666666666666%}.col-xs-push-7{left:58.333333333333336%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666666666667%}.col-xs-push-4{left:33.33333333333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.666666666666664%}.col-xs-push-1{left:8.333333333333332%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666666666666%}.col-xs-offset-10{margin-left:83.33333333333334%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666666666666%}.col-xs-offset-7{margin-left:58.333333333333336%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666666666667%}.col-xs-offset-4{margin-left:33.33333333333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.666666666666664%}.col-xs-offset-1{margin-left:8.333333333333332%}.col-xs-offset-0{margin-left:0}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type="date"]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width: 768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url("../fonts/glyphicons-halflings-regular.eot");src:url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/glyphicons-halflings-regular.woff") format("woff"),url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"),url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width: 992px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:none}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width: 992px){.navbar{border-radius:4px}}@media (min-width: 992px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width: 992px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 992px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 992px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 992px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width: 992px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:none}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 992px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 991px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 992px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width: 992px){.navbar-left{float:left !important}.navbar-right{float:right !important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 991px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width: 992px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 992px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 991px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width: 991px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.428571429;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group .list-group-item:first-child{border-top:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel>.list-group:first-child .list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tfoot>tr:first-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tfoot>tr:first-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:first-child>td{border-top:0}.panel>.table-bordered>thead>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:last-child>th,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:last-child>td,.panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.428571429px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top .arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right .arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom .arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left .arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.5) 0), color-stop(rgba(0,0,0,0.0001) 100%));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.0001) 0), color-stop(rgba(0,0,0,0.5) 100%));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:none;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width: 768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,tr.visible-xs,th.visible-xs,td.visible-xs{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}.visible-sm,tr.visible-sm,th.visible-sm,td.visible-sm{display:none !important}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}.visible-md,tr.visible-md,th.visible-md,td.visible-md{display:none !important}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}.visible-lg,tr.visible-lg,th.visible-lg,td.visible-lg{display:none !important}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (max-width: 767px){.hidden-xs,tr.hidden-xs,th.hidden-xs,td.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm,tr.hidden-sm,th.hidden-sm,td.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md,tr.hidden-md,th.hidden-md,td.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg,tr.hidden-lg,th.hidden-lg,td.hidden-lg{display:none !important}}.visible-print,tr.visible-print,th.visible-print,td.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}@media print{.hidden-print,tr.hidden-print,th.hidden-print,td.hidden-print{display:none !important}}.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top, #fff 0, #e0e0e0 100%);background-image:linear-gradient(to bottom, #fff 0, #e0e0e0 100%);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe0e0e0',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top, #428bca 0, #2d6ca2 100%);background-image:linear-gradient(to bottom, #428bca 0, #2d6ca2 100%);background-repeat:repeat-x;border-color:#2b669a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff2d6ca2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #419641 100%);background-image:linear-gradient(to bottom, #5cb85c 0, #419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff419641',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0, #eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffeb9316',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c12e2a 100%);background-image:linear-gradient(to bottom, #d9534f 0, #c12e2a 100%);background-repeat:repeat-x;border-color:#b92c28;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc12e2a',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #2aabd2 100%);background-image:linear-gradient(to bottom, #5bc0de 0, #2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2aabd2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar-default{background-image:-webkit-linear-gradient(top, #fff 0, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0, #f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f3f3f3 100%);background-image:linear-gradient(to bottom, #ebebeb 0, #f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff3f3f3',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top, #3c3c3c 0, #222 100%);background-image:linear-gradient(to bottom, #3c3c3c 0, #222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #222 0, #282828 100%);background-image:linear-gradient(to bottom, #222 0, #282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff282828',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top, #dff0d8 0, #c8e5bc 100%);background-image:linear-gradient(to bottom, #dff0d8 0, #c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-linear-gradient(top, #d9edf7 0, #b9def0 100%);background-image:linear-gradient(to bottom, #d9edf7 0, #b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #f8efc0 100%);background-image:linear-gradient(to bottom, #fcf8e3 0, #f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-linear-gradient(top, #f2dede 0, #e7c3c3 100%);background-image:linear-gradient(to bottom, #f2dede 0, #e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f5f5f5 100%);background-image:linear-gradient(to bottom, #ebebeb 0, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top, #428bca 0, #3071a9 100%);background-image:linear-gradient(to bottom, #428bca 0, #3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #449d44 100%);background-image:linear-gradient(to bottom, #5cb85c 0, #449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #31b0d5 100%);background-image:linear-gradient(to bottom, #5bc0de 0, #31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #ec971f 100%);background-image:linear-gradient(to bottom, #f0ad4e 0, #ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c9302c 100%);background-image:linear-gradient(to bottom, #d9534f 0, #c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top, #428bca 0, #3278b3 100%);background-image:linear-gradient(to bottom, #428bca 0, #3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top, #dff0d8 0, #d0e9c6 100%);background-image:linear-gradient(to bottom, #dff0d8 0, #d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top, #d9edf7 0, #c4e3f3 100%);background-image:linear-gradient(to bottom, #d9edf7 0, #c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #faf2cc 100%);background-image:linear-gradient(to bottom, #fcf8e3 0, #faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top, #f2dede 0, #ebcccc 100%);background-image:linear-gradient(to bottom, #f2dede 0, #ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-linear-gradient(top, #e8e8e8 0, #f5f5f5 100%);background-image:linear-gradient(to bottom, #e8e8e8 0, #f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}code{word-wrap:break-word;white-space:normal}/*! + * jQuery UI CSS Framework 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute !important;clip:rect(1px 1px 1px 1px);clip:rect(1px, 1px, 1px, 1px)}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}/*! + * jQuery UI CSS Framework 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller&ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px + */.ui-widget{font-family:Trebuchet MS, Tahoma, Verdana, Arial, sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS, Tahoma, Verdana, Arial, sans-serif;font-size:1em}.ui-widget-content{border:1px solid #dddddd;background:#eee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x;color:#333333}.ui-widget-content a{color:#333333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x;color:#ffffff;font-weight:bold}.ui-widget-header a{color:#ffffff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #cccccc;background:#f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-widget :active{outline:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat;color:#ffffff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#ffffff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#ffffff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_228ef1_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_ffd27a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-off{background-position:-96px -144px}.ui-icon-radio-on{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;opacity:.50;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;opacity:.20;filter:Alpha(Opacity=20);-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px;border-radius:5px} /*! +* jQuery UI Resizable 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Resizable#theming +*/.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px} /*! +* jQuery UI Selectable 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Selectable#theming +*/.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}/*! + * jQuery UI Accordion 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */.ui-accordion{width:100%}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1}.ui-accordion .ui-accordion-li-fix{display:inline}.ui-accordion .ui-accordion-header-active{border-bottom:0 !important}.ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em .7em}.ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.ui-accordion .ui-accordion-content-active{display:block}/*! + * jQuery UI Autocomplete 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */.ui-autocomplete{position:absolute;cursor:default}* html .ui-autocomplete{width:1px}.ui-menu{list-style:none;padding:2px;margin:0;display:block;float:left}.ui-menu .ui-menu{margin-top:-3px}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;float:left;clear:left;width:100%}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:.2em .4em;line-height:1.5;zoom:1}.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}/*! + * jQuery UI Button 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none !important;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0}/*! + * jQuery UI Dialog 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}/*! + * jQuery UI Slider 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0} /*! +* jQuery UI Tabs 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Tabs#theming +*/.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:1px;margin:0 .2em 1px 0;border-bottom:0 !important;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-selected{margin-bottom:0;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-selected a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-state-processing a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tabs .ui-tabs-hide{display:none !important}/*! + * jQuery UI Datepicker 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}/*! +* jQuery UI Progressbar 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Progressbar#theming +*/.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.navbar-collapse{max-height:350px}.breadcrumb{margin-top:10px;margin-bottom:20px}.table td{word-break:break-word}body{padding-top:70px}.break-word{word-break:break-word}.col-pad{padding:0 15px}.form-horizontal .multiline-label{margin-top:-10px}.nested-fields{border:1px solid #d6d6d6;padding:10px 10px 0 10px;max-width:275px}.customcode,.customcode .str,.customcode .lit,.customcode .pln{color:#00ab9b}.response-div{margin-top:12px;font-size:0.8em}.response{background-color:#ddd;margin:0 1px;border:1px solid #555;padding:2px;font-weight:bold;color:#555;cursor:pointer}.response:hover{background-color:#eeb}.response.active{background-color:#beb;cursor:initial}.format-json,.format-xml{display:none}.format-block{min-height:200px}.format-block-lg{min-height:350px}html,body{height:100%}#wrap{min-height:100%;height:auto;margin:0 auto -30px;padding:0 0 60px}#footer{padding-top:5px;border-top:1px solid #ddd;height:30px;background-color:#f5f5f5}#footer .container{background-color:#f5f5f5}@media (max-width: 767px){#footer span{display:block;text-align:center;float:none !important}}.infobox{vertical-align:bottom}.spanlink{cursor:pointer}.boldlink{font-weight:bold}.apps a:hover,.apps:hover div{text-decoration:none}.commentarea{width:300px;height:80px}#options{float:right;text-align:right}#login{padding:6px;border:1px solid #bbbbbb;border-collapse:separate;border-spacing:3px;background-color:#eeeeee;background:-webkit-gradient(linear, left top, right top, from(#ddd), to(#f5f5f5));background:-moz-linear-gradient(left, #ddd, #f5f5f5);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#f5f5f5', GradientType=1)}#channel_info{padding-bottom:20px}.signed_in_channel_header{display:inline-block}.public_private_icon{display:inline-block}.signed_in_channel_header{width:300px;height:10px}#list_progress_bar{width:300px;height:10px}.public_channel_box{margin:5px;border-radius:7px;height:300px;border:solid 1px red;display:inline-block;width:260px;vertical-align:top}.public_channel_inner{margin-left:10px;margin-right:5px}.public_channel_name{height:11px;font-size:1.3em;font-weight:bold;color:#2565A5}.public_channel_user{height:15px;margin-left:7px;font-size:0.9em}.progressbar{height:10px}.public_channel_desc{height:140px;word-break:break-all}.public_channel_url{height:10px}.public_channel_tags{height:57px;margin-bottom:10px;overflow:hidden}.public_channel_thumbnail{position:absolute;border:2px solid red;display:none}h1.channel_info{margin:0;padding-top:10px}div.list_tags{padding-top:20px}.channelLinks{padding:0 0 0 0;margin-bottom:15px}.channelLinks li{padding:7px;border:1px solid #ccc;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;display:inline;margin:0 0 0 0;list-style:none}#comments{width:100%}#commentsmain{float:left;width:190px;background-color:#fffff9;border:1px dashed #d0d0d0;padding:5px;margin-right:16px;overflow:hidden;display:none}.commentlink{float:left;width:100%}#public_statuses{width:455px;height:380px;overflow:auto;font-size:1.5em}#public_statuses div{margin-left:15px}.statusIFrame{border:1px solid #ccc;background-color:#ffffff}.userlogin{display:none}.login_info{font-weight:bold;text-align:right;font-size:12px}.round{-moz-border-radius:7px;-webkit-border-radius:7px}.text_center{text-align:center}.big{font-size:18px}.large{font-size:20px}.xlarge{font-size:30px}.small{font-size:12px}.action{margin-right:20px;position:relative;top:35px;font-weight:bold;padding:10px}.action_reverse{margin-right:20px;position:relative;top:35px;font-weight:bold;background-color:#d62020;padding:8px;color:#000000}.action_reverse a{color:#FFFFFF}.section_header_reverse{margin:15px 0 5px 0;display:inline-block;font-weight:bold;color:#FFFFFF;background-color:#d62020;padding:8px}.nicetable{font-size:14px;border:1px solid #bbbbbb}.nicetable-borderless{font-size:14px;border:none}.nicetable-borderless p{margin-left:20px;margin-top:5px;margin-bottom:10px}.nicetable-borderless h3{margin-bottom:0}.nicetable-borderless h3.signed_in_channel_header{margin-bottom:10px}.nicetable .header{font-weight:bold;background-color:#e5e5e5}.nicetable .header td{padding-top:3px}.nicetable td{padding:2px 10px;border-bottom:1px solid #bbbbbb;word-wrap:word}.nicetable .stripe{background-color:#f9f9f9}.nicetable .disabled{background-color:#eee}.nicetable .disabled a{color:#888}.fulltable{width:95%}.fullform{width:100%;margin-bottom:1.5em}.deletecol{width:1em}.table_no_header{font-size:14px}.table_no_header td{padding:2px 10px}.table_no_header .left{font-weight:bold}.max_width_400{max-width:40;word-wrap:break-word}.helplink{float:right;margin-top:3px}.votediv,.votedivphoto,.votedivlink{color:#3478e3}.votedivlink{padding-right:20px}.votediv{float:right;display:none}.voteicon{padding:2px;background:#f8f8f8;border:1px solid #ddd;cursor:pointer}.voteicon:hover{text-decoration:none}.voteicon img{position:relative;top:3px}.nestedcomment{padding-left:30px}.commenttable{padding:0;margin:0;width:100%}.commenttable td{padding:4px 10px 4px 5px}.commentchannel{color:#f08600;font-weight:bold}.commentbody{color:#333333}.commentdiv{width:100%;padding:5px 0 5px 0;font-size:12px;border-top:1px solid #aaa}.gravatar{border:1px solid #999}.noavatar{width:50px;height:50px;border:1px solid #ddd;color:#ddd;text-align:center}.noavatartext{padding-top:5px}.prettydate{color:#aaa}.username a{color:#3478E3;font-weight:bold}.timeago{font-size:0.8em;color:#ccc}.pagination{font-size:14px}.centerme{display:table;margin:0 auto}.fixedwidth{width:960px;display:table;margin:0 auto}.code{margin:10px 0;background-color:#fafafa;white-space:pre-wrap;font:12px Monaco, Lucida Console, monospace;color:#000000;border:1px solid #bbbbbb;padding:10px}.apps{padding:0 30px 40px 0;font-size:20px;float:left;text-align:center;margin:0 auto;width:150px}input[type="text"].shortfield{width:30px}input[type="text"].midfield{width:120px}textarea.tweet{margin-top:0.5em;width:40em;height:3em}.errorExplanation{width:95%;background-color:#ffffe0;display:table;margin-bottom:20px;padding:10px;border:1px solid #aaaaaa}#error{color:red}.field_with_errors{display:inline}.warning_box{margin:15px 0 15px 0;padding:10px;background-color:#fc3;color:#000;border:1px solid #f90}#maincontent{float:left;width:980px;padding-bottom:20px;margin-left:10px;overflow:false}#maincontent.thin{width:400px}#maincontent.medium{width:500px}#maincontent .thinghttptable{table-layout:fixed;width:400px;word-wrap:break-word}#maincontent .thinghttptable .url{width:100px}#maincontent .thinghttptable .apikey{width:80px}input#upload_csv{padding-top:5px;margin:20px 0}#sidebar.wide{width:520px}#sidebar.medium{width:470px}#sidebar.narrow{width:470px;margin-left:520px}#sidebar .helplink{float:right;margin-top:5px;font-weight:normal;font-size:12px}.FL{float:left}.FR{float:right}.FN{float:none}.DT{display:table}.CL{clear:left}.CR{clear:right}.CB{clear:both}.UL{text-decoration:underline}.TAR{text-align:right}.TAC{text-align:center}.VAT{vertical-align:top}.PB10{padding-bottom:10px}.PR20{padding-right:20px}.PL20{padding-left:20px}.PL30{padding-left:30px}.MT10{margin-top:5px}.MR20{margin-right:20px}.MR60{margin-right:60px;margin-bottom:20px}.ML20{margin-left:20px}.ML60{margin-left:60px}.W50{width:50%}.W100{width:100%}.left20{position:relative;left:-20px}.up2{position:relative;top:-2px}.up20{position:relative;top:-20px}input.video_narrow{width:100px}#feature_signup a{border-bottom:3px solid #d62020;text-decoration:none;font-weight:bold}#feature_signup a:hover{text-decoration:none}#nav{list-style:none;padding:0 10px 0 92px;margin:0}#nav li{float:left;margin:0px 0px 0px 10px;padding:0px 15px 0px 0px;position:relative;font-size:14px;line-height:1.4;zoom:1}#nav li:last-child{padding:0}#nav .current-cat a,#nav .current_page_item a{color:#d62020;border-bottom:5px solid #2565A5}#nav .current-cat li a,#nav .current_page_item li a{color:#000}#nav .current-cat li a:hover,#nav .current_page_item li a:hover{color:#d62020;border-bottom:5px solid #2565A5}#nav li a{text-transform:uppercase;font-weight:bold;text-decoration:none;color:#000;border:none;text-decoration:none;float:left;border-bottom:5px solid #FFFFFF}#nav li a:hover{color:#d62020;border-bottom:5px solid #aaa}#nav li span{width:12px;height:20px;background:url("arrow-down.gif") no-repeat left 7px;margin:0;padding:0;position:absolute;right:0;top:0}#nav ul{display:none}#nav li span.child{width:12px;height:20px;background:url("arrow-right.gif") no-repeat left 10px;margin:0;padding:0;position:absolute;right:0;top:0}#nav li a.rss{background:url(rss_feed.png) right 0px no-repeat;padding:0px 30px 0px 0}#nav li a.rss:hover{background:url(rss_feed.png) right -24px no-repeat;padding:0px 30px 0px 0;border-bottom:0 solid #aaa}.ui-widget{font-size:.8em}.ui-widget-header{border:1px solid #0867A3;background:#0867a3 none top right no-repeat}.ui-progressbar{height:5px}.ui-progressbar-value{background-color:green}.ui-widget-content a{color:blue;text-decoration:underline;margin:0}.ui-widget-content p{margin:0 0 10px 10px}.column{width:470px;float:left;padding-bottom:50px;padding-left:5px}.portlet{margin:0 1em 1em 0}.portlet-header{margin:0.3em;padding:7px 7px 7px 7px}.portlet-header .ui-icon{float:right;margin-top:-2px;cursor:pointer;cursor:hand}.portlet-content{padding:0.4em}.ui-sortable-placeholder{border:1px dotted black;visibility:visible !important;height:50px !important}.ui-sortable-placeholder *{visibility:hidden}.buttonlets{float:left;overflow:hidden;max-width:95px}.tweetButton{width:80px}.facebookButton{width:85px}.googleplusButton{width:70px}.padded{margin-top:2px}.ui-button{height:19px;line-height:1em}.ui-button-text-only .ui-button-text{padding:0.2em 1em 0.2em 0.4em;font-size:12px}.ui-state-active{border:1px solid #2565a5;background:#ddd none 50% 50% repeat-x;color:#2565a5}.ui-state-default{border:1px solid #ccc;color:#2565a5}.ui-state-hover{background:#ccc none 50% 50% repeat-x}.topLink{font-size:16px}.developerlink{padding:7px;margin-left:10px;border-bottom-left-radius:15px;border-bottom-right-radius:15px;-webkit-border-bottom-left-radius:15px;-webkit-border-bottom-right-radius:15px;-moz-border-bottom-left-radius:15px;-moz-border-bottom-right-radius:15px;background-color:#aaa}.addpluginlink{color:white;padding:7px;margin-left:10px;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;background-color:#aaa;cursor:pointer}.addpluginlink:hover{background-color:#ccc}.pluginrectangle{display:none;background-color:#aaa;border-radius:5px;position:absolute;height:70%;width:100%;top:30px;right:0}.developerlink:hover{background-color:#ccc}.developerlink a{color:white;text-decoration:none}.channelInfo{max-width:500px}.channelDescription{width:450px;height:60px}.socialButtons{float:right;display:inline}.dev-info-dialog{border:2px solid #bbb}.dev-info-dialog .ui-dialog-titlebar{background-color:#aaa;color:white}.dev-info-dialog a{text-decoration:underline}.ui-tabs{height:100%}.dev-info-dialog ul{list-style-type:none;background-color:whitesmoke}#devInfo{font-size:1.2em}.dev-info-dialog ul li{display:inline;list-style-type:none}.dev_info_table1{margin-bottom:10px}.dev_info_table2{margin-left:10px}.dev_info_table2 td{max-width:300px}.watchButtonLabel{white-space:nowrap;padding-right:10px}.watchButtonImage{float:left;background-position:left;background-image:url("eye.png");background-repeat:no-repeat;width:19px;height:16px}.watchButtonPadding{padding-right:5px}.chartOptions{display:none}.fade{display:none;font-size:1.2em}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #d82020;background:#f5cece url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#d82020}.ui-state-hover a,.ui-state-hover a:hover{color:#d82020;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #d82020;background:#f5cece url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#d82020}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#d82020;text-decoration:none}.ui-widget :active{outline:none}.ui-tabs .ui-tabs-panel{padding-top:0}.addportlet{padding:5px;width:50px;margin:5px;border-radius:5px;border:2px solid red;cursor:pointer;display:inline-block}.channel_stats_location{clear:right;float:right;width:475px;padding-top:23px}.channel_stats_text{font-weight:bold;font-size:1.2em}.channel_time_text{color:black;font-size:1em}.recent_status{font-family:sans-serif;margin:4px}.timeago{font-size:0.8em;color:#ccc;margin-left:10px}.com{color:#93a1a1}.lit{color:#195f91}.pun,.opn,.clo{color:#93a1a1}.fun{color:#dc322f}.str,.atv{color:#D14}.kwd,.prettyprint .tag{color:#1e347b}.typ,.atn,.dec,.var{color:teal}.pln{color:#48484c}.prettyprint{padding:8px;background-color:#f7f7f9;border:1px solid #e1e1e8}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;-moz-box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0}ol.linenums{margin:0 0 0 33px}ol.linenums li{padding-left:12px;color:#bebec5;line-height:20px;text-shadow:0 1px 0 #fff}.affix-top,.affix{position:static}#bootstrap-sidebar{background-color:#eee;border:1px solid #bbb;border-radius:5px;padding:2px 0}#bootstrap-sidebar li a:hover{background-color:#fafafa}#bootstrap-sidebar li.active{border:0 #666 solid;border-right-width:4px}@media (min-width: 979px){#bootstrap-sidebar.affix-top,#bootstrap-sidebar.affix{position:fixed;top:90px;width:228px}} diff --git a/public/assets/application-c2ba8a3fdde171077398b657e1ae7906.css.gz b/public/assets/application-c2ba8a3fdde171077398b657e1ae7906.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..96feebdf350d8bf9d3db67694420c3556dd33444 GIT binary patch literal 27232 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 Uj5U3y_4=#-7nv5~kQZqJ04$B3BLDyZ literal 0 HcmV?d00001 diff --git a/public/assets/application-cef60c60a5550b2bf95cf2102b747be8.css b/public/assets/application-cef60c60a5550b2bf95cf2102b747be8.css new file mode 100644 index 0000000..d87cd01 --- /dev/null +++ b/public/assets/application-cef60c60a5550b2bf95cf2102b747be8.css @@ -0,0 +1,99 @@ +.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top, #fff 0, #e0e0e0 100%);background-image:linear-gradient(to bottom, #fff 0, #e0e0e0 100%);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe0e0e0',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top, #428bca 0, #2d6ca2 100%);background-image:linear-gradient(to bottom, #428bca 0, #2d6ca2 100%);background-repeat:repeat-x;border-color:#2b669a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff2d6ca2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #419641 100%);background-image:linear-gradient(to bottom, #5cb85c 0, #419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff419641',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0, #eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffeb9316',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c12e2a 100%);background-image:linear-gradient(to bottom, #d9534f 0, #c12e2a 100%);background-repeat:repeat-x;border-color:#b92c28;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc12e2a',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #2aabd2 100%);background-image:linear-gradient(to bottom, #5bc0de 0, #2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2aabd2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar-default{background-image:-webkit-linear-gradient(top, #fff 0, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0, #f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f3f3f3 100%);background-image:linear-gradient(to bottom, #ebebeb 0, #f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff3f3f3',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top, #3c3c3c 0, #222 100%);background-image:linear-gradient(to bottom, #3c3c3c 0, #222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #222 0, #282828 100%);background-image:linear-gradient(to bottom, #222 0, #282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff282828',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top, #dff0d8 0, #c8e5bc 100%);background-image:linear-gradient(to bottom, #dff0d8 0, #c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-linear-gradient(top, #d9edf7 0, #b9def0 100%);background-image:linear-gradient(to bottom, #d9edf7 0, #b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #f8efc0 100%);background-image:linear-gradient(to bottom, #fcf8e3 0, #f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-linear-gradient(top, #f2dede 0, #e7c3c3 100%);background-image:linear-gradient(to bottom, #f2dede 0, #e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f5f5f5 100%);background-image:linear-gradient(to bottom, #ebebeb 0, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top, #428bca 0, #3071a9 100%);background-image:linear-gradient(to bottom, #428bca 0, #3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #449d44 100%);background-image:linear-gradient(to bottom, #5cb85c 0, #449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #31b0d5 100%);background-image:linear-gradient(to bottom, #5bc0de 0, #31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #ec971f 100%);background-image:linear-gradient(to bottom, #f0ad4e 0, #ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c9302c 100%);background-image:linear-gradient(to bottom, #d9534f 0, #c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top, #428bca 0, #3278b3 100%);background-image:linear-gradient(to bottom, #428bca 0, #3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top, #dff0d8 0, #d0e9c6 100%);background-image:linear-gradient(to bottom, #dff0d8 0, #d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top, #d9edf7 0, #c4e3f3 100%);background-image:linear-gradient(to bottom, #d9edf7 0, #c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #faf2cc 100%);background-image:linear-gradient(to bottom, #fcf8e3 0, #faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top, #f2dede 0, #ebcccc 100%);background-image:linear-gradient(to bottom, #f2dede 0, #ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-linear-gradient(top, #e8e8e8 0, #f5f5f5 100%);background-image:linear-gradient(to bottom, #e8e8e8 0, #f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}code{word-wrap:break-word;white-space:normal}/*! + * jQuery UI CSS Framework 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute !important;clip:rect(1px 1px 1px 1px);clip:rect(1px, 1px, 1px, 1px)}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}/*! + * jQuery UI CSS Framework 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller&ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px + */.ui-widget{font-family:Trebuchet MS, Tahoma, Verdana, Arial, sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS, Tahoma, Verdana, Arial, sans-serif;font-size:1em}.ui-widget-content{border:1px solid #dddddd;background:#eee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x;color:#333333}.ui-widget-content a{color:#333333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x;color:#ffffff;font-weight:bold}.ui-widget-header a{color:#ffffff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #cccccc;background:#f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-widget :active{outline:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat;color:#ffffff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#ffffff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#ffffff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_228ef1_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_ffd27a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-off{background-position:-96px -144px}.ui-icon-radio-on{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;opacity:.50;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;opacity:.20;filter:Alpha(Opacity=20);-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px;border-radius:5px} /*! +* jQuery UI Resizable 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Resizable#theming +*/.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px} /*! +* jQuery UI Selectable 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Selectable#theming +*/.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}/*! + * jQuery UI Accordion 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */.ui-accordion{width:100%}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1}.ui-accordion .ui-accordion-li-fix{display:inline}.ui-accordion .ui-accordion-header-active{border-bottom:0 !important}.ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em .7em}.ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.ui-accordion .ui-accordion-content-active{display:block}/*! + * jQuery UI Autocomplete 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */.ui-autocomplete{position:absolute;cursor:default}* html .ui-autocomplete{width:1px}.ui-menu{list-style:none;padding:2px;margin:0;display:block;float:left}.ui-menu .ui-menu{margin-top:-3px}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;float:left;clear:left;width:100%}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:.2em .4em;line-height:1.5;zoom:1}.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}/*! + * jQuery UI Button 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none !important;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0}/*! + * jQuery UI Dialog 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}/*! + * jQuery UI Slider 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0} /*! +* jQuery UI Tabs 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Tabs#theming +*/.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:1px;margin:0 .2em 1px 0;border-bottom:0 !important;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-selected{margin-bottom:0;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-selected a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-state-processing a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tabs .ui-tabs-hide{display:none !important}/*! + * jQuery UI Datepicker 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}/*! +* jQuery UI Progressbar 1.8.24 +* +* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +* http://docs.jquery.com/UI/Progressbar#theming +*/.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.customcode,.customcode .str,.customcode .lit,.customcode .pln{color:#00ab9b}.response-div{margin-top:12px;font-size:0.8em}.response{background-color:#ddd;margin:0 1px;border:1px solid #555;padding:2px;font-weight:bold;color:#555;cursor:pointer}.response:hover{background-color:#eeb}.response.active{background-color:#beb;cursor:initial}.format-json,.format-xml{display:none}.format-block{min-height:200px}.format-block-lg{min-height:350px}.infobox{vertical-align:bottom}.spanlink{cursor:pointer}.boldlink{font-weight:bold}#logo{float:left;margin:0 0 0 0}#logo a{color:#d62020}#logo a span,.paygray{color:#666666}#logo a:hover,.apps a:hover,.apps:hover div{text-decoration:none}.commentarea{width:300px;height:80px}#logo.small{font-size:30px;color:#666666}#options{float:right;text-align:right}#login{padding:6px;border:1px solid #bbbbbb;border-collapse:separate;border-spacing:3px;background-color:#eeeeee;background:-webkit-gradient(linear, left top, right top, from(#ddd), to(#f5f5f5));background:-moz-linear-gradient(left, #ddd, #f5f5f5);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#f5f5f5', GradientType=1)}#menu{height:40px;margin:0 auto;border:1px solid #dddddd;background-color:#d6d6d6;background:-webkit-gradient(linear, left top, left bottom, from(#eee), to(#bbb));background:-moz-linear-gradient(top, #eee, #bbb);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#bbbbbb')}#menu div{float:left;height:40px}#menu div a{color:#777777;padding:10px 30px;display:block;font-weight:bold}#menu div:hover{background-color:#cccccc}#menu div:hover a{color:#000000;text-decoration:none}#menu .selected,#menu .selected:hover{background-color:#e5e5e5}#menu .selected a{color:#000000}#channel_info{padding-bottom:20px}.signed_in_channel_header{display:inline-block}.public_private_icon{display:inline-block}.signed_in_channel_header{width:300px;height:10px}#list_progress_bar{width:300px;height:10px}.public_channel_box{margin:5px;border-radius:7px;height:300px;border:solid 1px red;display:inline-block;width:30%;vertical-align:top}.public_channel_inner{margin-left:10px;margin-right:5px}.public_channel_name{height:11px;font-size:1.3em;font-weight:bold;color:#2565A5}.public_channel_user{height:15px;margin-left:7px;font-size:0.9em}.progressbar{height:10px}.public_channel_desc{height:140px;word-break:break-all}.public_channel_url{height:10px}.public_channel_tags{height:57px;margin-bottom:10px;overflow:hidden}.public_channel_thumbnail{position:absolute;border:2px solid red;display:none}h1.channel_info{margin:0;padding-top:10px}div.list_tags{padding-top:20px}.channelLinks{padding:0 0 0 0;margin-bottom:15px}.channelLinks li{padding:7px;border:1px solid #ccc;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;display:inline;margin:0 0 0 0;list-style:none}#comments{width:100%}#commentsmain{float:left;width:190px;background-color:#fffff9;border:1px dashed #d0d0d0;padding:5px;margin-right:16px;overflow:hidden;display:none}.commentlink{float:left;width:100%}#public_statuses{width:455px;height:380px;overflow:auto;font-size:1.5em}#public_statuses div{margin-left:15px}.statusIFrame{border:1px solid #ccc;background-color:#ffffff}.userlogin{display:none}.login_info{font-weight:bold;text-align:right;font-size:12px}.round{-moz-border-radius:7px;-webkit-border-radius:7px}.text_center{text-align:center}.big{font-size:18px}.large{font-size:20px}.xlarge{font-size:30px}.small{font-size:12px}.action{margin-right:20px;position:relative;top:35px;font-weight:bold;padding:10px}.action_reverse{margin-right:20px;position:relative;top:35px;font-weight:bold;background-color:#d62020;padding:8px;color:#000000}.action_reverse a{color:#FFFFFF}.section_header_reverse{font-weight:bold;color:#FFFFFF;background-color:#d62020;padding:8px}.nicetable{font-size:14px;border:1px solid #bbbbbb}.nicetable-borderless{font-size:14px;border:none}.nicetable-borderless p{margin-left:20px;margin-top:5px;margin-bottom:10px}.nicetable-borderless h3{margin-bottom:0}.nicetable-borderless h3.signed_in_channel_header{margin-bottom:10px}.nicetable .header{font-weight:bold;background-color:#e5e5e5}.nicetable .header td{padding-top:3px}.nicetable td{padding:2px 10px;border-bottom:1px solid #bbbbbb;word-wrap:word}.nicetable .stripe{background-color:#f9f9f9}.nicetable .disabled{background-color:#eee}.nicetable .disabled a{color:#888}.fulltable{width:95%}.fullform{width:100%;margin-bottom:1.5em}.deletecol{width:1em}.table_no_header{font-size:14px}.table_no_header td{padding:2px 10px}.table_no_header .left{font-weight:bold}.max_width_400{max-width:40;word-wrap:break-word}.helplink{float:right;margin-top:3px}.votediv,.votedivphoto,.votedivlink{color:#3478e3}.votedivlink{padding-right:20px}.votediv{float:right;display:none}.voteicon{padding:2px;background:#f8f8f8;border:1px solid #ddd;cursor:pointer}.voteicon:hover{text-decoration:none}.voteicon img{position:relative;top:3px}.nestedcomment{padding-left:30px}.commenttable{padding:0;margin:0;width:100%}.commenttable td{padding:4px 10px 4px 5px}.commentchannel{color:#f08600;font-weight:bold}.commentbody{color:#333333}.commentdiv{width:100%;padding:5px 0 5px 0;font-size:12px;border-top:1px solid #aaa}.gravatar{border:1px solid #999}.noavatar{width:50px;height:50px;border:1px solid #ddd;color:#ddd;text-align:center}.noavatartext{padding-top:5px}.prettydate{color:#aaa}.username a{color:#3478E3;font-weight:bold}.timeago{font-size:0.8em;color:#ccc}.pagination{font-size:14px}.centerme{display:table;margin:0 auto}.fixedwidth{width:960px;display:table;margin:0 auto}.code{margin:10px 0;background-color:#fafafa;white-space:pre-wrap;font:12px Monaco, Lucida Console, monospace;color:#000000;border:1px solid #bbbbbb;padding:10px}.apps{padding:20px 30px 30px 30px;font-size:20px;float:left;text-align:center;margin:0 auto;width:150px}input[type="text"].shortfield{width:30px}input[type="text"].midfield{width:120px}textarea.tweet{margin-top:0.5em;width:40em;height:3em}.errorExplanation{width:95%;background-color:#ffffe0;display:table;margin-bottom:20px;padding:10px;border:1px solid #aaaaaa}#error{color:red}.field_with_errors{display:inline}.warning_box{margin:15px 0 15px 0;padding:10px;background-color:#fc3;color:#000;border:1px solid #f90}#wrapper{min-height:100%;position:relative}#header{margin:0 auto}#head_wrap{width:940px;margin:0 auto;padding-left:10px;padding-right:10px}#menuwrap{padding:0 0;clear:both}#content{width:975px;padding:23px 0 58px 0;min-height:400px}.content{width:975px;padding:23px 0 58px 0;min-height:400px}#maincontent{float:left;width:980px;padding-bottom:20px;margin-left:10px;overflow:false}#maincontent.thin{width:400px}#maincontent.medium{width:500px}#maincontent .thinghttptable{table-layout:fixed;width:400px;word-wrap:break-word}#maincontent .thinghttptable .url{width:100px}#maincontent .thinghttptable .apikey{width:80px}#maincontent.medium .table_no_header{table-layout:fixed;width:440px;word-wrap:break-word}#maincontent.medium .table_no_header .left{width:180px}input#upload_csv{padding-top:5px;margin:20px 0}#sidebar{font-size:14px;width:50%;padding-right:10px;margin-top:10px;margin-left:460px;margin-right:0;border:1px solid #ccc;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px}#sidebar.wide{width:520px}#sidebar.medium{width:470px}#sidebar.narrow{width:470px;margin-left:520px}#sidebar ul{list-style:none;margin:15px 20px 30px 0}#sidebar ul li ul li{margin:0}#sidebar h2{color:#666;margin:0 0 6px 0;padding:0 0}#sidebar .helplink{float:right;margin-top:3px;margin-right:5px}#footer{clear:both;text-align:center;font-size:16px;font-family:Georgia, serif;padding-bottom:5px}#footer a{color:#0867A3}#footer a:hover{color:#0066ff;text-decoration:underline}#footer .copy{padding:5px;font-size:11px}#footer .copy a{color:#D62020;text-decoration:underline}#footer .copy a:hover{color:#890707;text-decoration:underline}.FL{float:left}.FR{float:right}.FN{float:none}.DT{display:table}.CL{clear:left}.CR{clear:right}.CB{clear:both}.UL{text-decoration:underline}.TAR{text-align:right}.TAC{text-align:center}.VAT{vertical-align:top}.PB10{padding-bottom:10px}.PR20{padding-right:20px}.PL20{padding-left:20px}.PL30{padding-left:30px}.MT10{margin-top:5px}.MR20{margin-right:20px}.MR60{margin-right:60px;margin-bottom:20px}.ML20{margin-left:20px}.ML60{margin-left:60px}.W50{width:50%}.W100{width:100%}.left20{position:relative;left:-20px}.up2{position:relative;top:-2px}.up20{position:relative;top:-20px}input.video_narrow{width:100px}#front{text-align:center}#features{clear:both}.feature{float:left;width:300px;margin-right:0}.feature h1{font-size:20px;color:#0867A3}#feature_signup a{border-bottom:3px solid #d62020;text-decoration:none;font-weight:bold}#feature_signup a:hover{text-decoration:none}#nav{list-style:none;padding:0 10px 0 92px;margin:0}#nav li{float:left;margin:0px 0px 0px 10px;padding:0px 15px 0px 0px;position:relative;font-size:14px;line-height:1.4;zoom:1}#nav li:last-child{padding:0}#nav .current-cat a,#nav .current_page_item a{color:#d62020;border-bottom:5px solid #2565A5}#nav .current-cat li a,#nav .current_page_item li a{color:#000}#nav .current-cat li a:hover,#nav .current_page_item li a:hover{color:#d62020;border-bottom:5px solid #2565A5}#nav li a{text-transform:uppercase;font-weight:bold;text-decoration:none;color:#000;border:none;text-decoration:none;float:left;border-bottom:5px solid #FFFFFF}#nav li a:hover{color:#d62020;border-bottom:5px solid #aaa}#nav li span{width:12px;height:20px;background:url("arrow-down.gif") no-repeat left 7px;margin:0;padding:0;position:absolute;right:0;top:0}#nav ul{display:none}#nav li span.child{width:12px;height:20px;background:url("arrow-right.gif") no-repeat left 10px;margin:0;padding:0;position:absolute;right:0;top:0}#nav li a.rss{background:url(rss_feed.png) right 0px no-repeat;padding:0px 30px 0px 0}#nav li a.rss:hover{background:url(rss_feed.png) right -24px no-repeat;padding:0px 30px 0px 0;border-bottom:0 solid #aaa}.ui-widget{font-size:.8em}.ui-widget-header{border:1px solid #0867A3;background:#0867a3 none top right no-repeat}.ui-progressbar{height:5px}.ui-progressbar-value{background-color:green}.ui-widget-content a{color:blue;text-decoration:underline;margin:0}.ui-widget-content p{margin:0 0 10px 10px}.column{width:470px;float:left;padding-bottom:50px;padding-left:5px}.portlet{margin:0 1em 1em 0}.portlet-header{margin:0.3em;padding:7px 7px 7px 7px}.portlet-header .ui-icon{float:right;margin-top:-2px;cursor:pointer;cursor:hand}.portlet-content{padding:0.4em}.ui-sortable-placeholder{border:1px dotted black;visibility:visible !important;height:50px !important}.ui-sortable-placeholder *{visibility:hidden}.buttonlets{float:left;overflow:hidden;max-width:95px}.tweetButton{width:80px}.facebookButton{width:85px}.googleplusButton{width:70px}.padded{margin-top:2px}.ui-button{height:19px;line-height:1em}.ui-button-text-only .ui-button-text{padding:0.2em 1em 0.2em 0.4em;font-size:12px}.ui-state-active{border:1px solid #2565a5;background:#ddd none 50% 50% repeat-x;color:#2565a5}.ui-state-default{border:1px solid #ccc;color:#2565a5}.ui-state-hover{background:#ccc none 50% 50% repeat-x}.topLink{font-size:16px}.developerlink{padding:7px;margin-left:10px;border-bottom-left-radius:15px;border-bottom-right-radius:15px;-webkit-border-bottom-left-radius:15px;-webkit-border-bottom-right-radius:15px;-moz-border-bottom-left-radius:15px;-moz-border-bottom-right-radius:15px;background-color:#aaa}.addpluginlink{color:white;padding:7px;margin-left:10px;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;background-color:#aaa;cursor:pointer}.addpluginlink:hover{background-color:#ccc}.pluginrectangle{display:none;background-color:#aaa;border-radius:5px;position:absolute;height:70%;width:100%;top:30px;right:0}.developerlink:hover{background-color:#ccc}.developerlink a{color:white;text-decoration:none}.channelInfo{max-width:500px}.channelDescription{width:450px;height:60px}.socialButtons{float:right;display:inline}.dev-info-dialog{border:2px solid #bbb}.dev-info-dialog .ui-dialog-titlebar{background-color:#aaa;color:white}.dev-info-dialog a{text-decoration:underline}.ui-tabs{height:100%}.dev-info-dialog ul{list-style-type:none;background-color:whitesmoke}#devInfo{font-size:1.2em}.dev-info-dialog ul li{display:inline;list-style-type:none}.dev_info_table1{margin-bottom:10px}.dev_info_table2{margin-left:10px}.dev_info_table2 td{max-width:300px}.watchButtonLabel{white-space:nowrap;padding-right:10px}.watchButtonImage{float:left;background-position:left;background-image:url("eye.png");background-repeat:no-repeat;width:19px;height:16px}.watchButtonPadding{padding-right:5px}.chartOptions{display:none}.fade{display:none;font-size:1.2em}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #d82020;background:#f5cece url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#d82020}.ui-state-hover a,.ui-state-hover a:hover{color:#d82020;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #d82020;background:#f5cece url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#d82020}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#d82020;text-decoration:none}.ui-widget :active{outline:none}.ui-tabs .ui-tabs-panel{padding-top:0}.addportlet{padding:5px;width:50px;margin:5px;border-radius:5px;border:2px solid red;cursor:pointer;display:inline-block}.channel_stats_location{clear:right;float:right;width:475px;padding-top:23px}.channel_stats_text{font-weight:bold;font-size:1.2em}.channel_time_text{color:black;font-size:1em}.recent_status{font-family:sans-serif;margin:4px}.timeago{font-size:0.8em;color:#ccc;margin-left:10px}.com{color:#93a1a1}.lit{color:#195f91}.pun,.opn,.clo{color:#93a1a1}.fun{color:#dc322f}.str,.atv{color:#D14}.kwd,.prettyprint .tag{color:#1e347b}.typ,.atn,.dec,.var{color:teal}.pln{color:#48484c}.prettyprint{padding:8px;background-color:#f7f7f9;border:1px solid #e1e1e8}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;-moz-box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0}ol.linenums{margin:0 0 0 33px}ol.linenums li{padding-left:12px;color:#bebec5;line-height:20px;text-shadow:0 1px 0 #fff}.affix-top,.affix{position:static}#bootstrap-sidebar{background-color:#eee;border:1px solid #bbb;border-radius:5px;padding:2px 0}#bootstrap-sidebar li a:hover{background-color:#fafafa}#bootstrap-sidebar li.active{border:0 #666 solid;border-right-width:4px}@media (min-width: 979px){#bootstrap-sidebar.affix-top,#bootstrap-sidebar.affix{position:fixed;top:30px;width:228px}} diff --git a/public/assets/application-cef60c60a5550b2bf95cf2102b747be8.css.gz b/public/assets/application-cef60c60a5550b2bf95cf2102b747be8.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..3b1a4d675af7f0bd9d2927e0d19178b1a2b309d1 GIT binary patch literal 10692 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 q)LYDO|WNAB$N3l%*yS9I_w(kNQ;Ag zVo-7~Y-se`muaC}Y2N}slVpG({RBgLr~pgREENFdKX+RL2 z_x3YhP0tWiFc>6AnxJV9w(uAODiTT_)o3yyYz!V6qAur=tf|1n6neA*3cKBS9+biJ zSq*7MR?Al@RHK|VoIj#EO;BEva5^UPNc7>nm|<3ZF_&nGGmu0$Ei88{do>`~zv^4V zTN3h<7_o6O`OoILTn)T|VnrNpId^pljPyVr5-DhC1zm)(B2-b6GfYXW`sWL}Vg)CO z1XN%Sn;KXoRYQqIrsPZ(8CAEsw7O+udscJIas`ytbfZ%6WT1 zwox5QG7iqHhzypZz+ORwUc6`%40!=TY>eM=ozo;mdPoYtEGy>{u?ZDHMZsJJL0Jq{ zb6N8;X3pq>jfrDplepd`0SP9m1CB}46w5Fy#oS9$EJ<4E)`GE1aICT_D7+>X%$z0o zup7^KC0SylzKAbQGtmGQ_wzA|3dXodkmUWOKfuL9`5?35)8K z#6<9=dfB{A2@z%w0U>(@+hqgS-+=YVZY*7JwLP+jifknT0BggsI5AfB8bT3Dw${p& zTxS`sstB+e8@xXY@y4juF`cGJmJYBjl%w#f#$r}bGiKcrW}i0e)@?^tZjjd|oboeK zjwES5VplI0#C@HKksL+0Fp)T48~P;Sc*jr_*8blM|JTB=Su&X{$ash_kDyBB zgow$t6_P|2$+(j_DveW6ZKav#7OUW8#a+ZB;igwmkh`t6+(EAnA&^CU>=_W*#EM)- zwPaLaLqrXyslX`otinyup&=qB?#CAg?H` zR&4zQq_eUC@C#+jf%ocK4&XNKI2f*^#W3^Y1@$CW_$-MNC7Cis^DNPHhs4U7RwcG^ z3M>h#1ad;h=`5fw^EGVEu13c8_qJXf2QBPup)RO3sWH!c>b%e7^4Iu;5P|q3vAF+R@&JNLW zE5wrRXZW^>FSdFT9By&O!CzX+QulQ{vuM`#le6#Xe_~Ga@Q$I|&o+KEb9me7H zndiR^9XP)I@WJsN%^OyHerE4acWv6a{6){6+=>NgFv&c9wmrUlr0>*Y+*4cUugZPt z-T25Gqo3^Ewe^k@r>Mrn`FFm0>B#8l&KXB;`S80RroZKXTi%jBdQm*_+l-Ne@ki&Z zn{nXsly~Xmh3Rd<4&r?0(TiihJU0Tb6X%~K);wFB*>&>tX5WuDekNWYnL6Hl=+cSt bTUNS8_Y5DqZT#_^`LiSu>)>}qR<8XEsTLvg literal 0 HcmV?d00001 diff --git a/public/assets/eye.png b/public/assets/eye.png new file mode 100644 index 0000000000000000000000000000000000000000..209f8c2a8dd25c91552c70700832ab6240efb3af GIT binary patch literal 3294 zcmd5|WNAB$N3l%*yS9I_w(kNQ;Ag zVo-7~Y-se`muaC}Y2N}slVpG({RBgLr~pgREENFdKX+RL2 z_x3YhP0tWiFc>6AnxJV9w(uAODiTT_)o3yyYz!V6qAur=tf|1n6neA*3cKBS9+biJ zSq*7MR?Al@RHK|VoIj#EO;BEva5^UPNc7>nm|<3ZF_&nGGmu0$Ei88{do>`~zv^4V zTN3h<7_o6O`OoILTn)T|VnrNpId^pljPyVr5-DhC1zm)(B2-b6GfYXW`sWL}Vg)CO z1XN%Sn;KXoRYQqIrsPZ(8CAEsw7O+udscJIas`ytbfZ%6WT1 zwox5QG7iqHhzypZz+ORwUc6`%40!=TY>eM=ozo;mdPoYtEGy>{u?ZDHMZsJJL0Jq{ zb6N8;X3pq>jfrDplepd`0SP9m1CB}46w5Fy#oS9$EJ<4E)`GE1aICT_D7+>X%$z0o zup7^KC0SylzKAbQGtmGQ_wzA|3dXodkmUWOKfuL9`5?35)8K z#6<9=dfB{A2@z%w0U>(@+hqgS-+=YVZY*7JwLP+jifknT0BggsI5AfB8bT3Dw${p& zTxS`sstB+e8@xXY@y4juF`cGJmJYBjl%w#f#$r}bGiKcrW}i0e)@?^tZjjd|oboeK zjwES5VplI0#C@HKksL+0Fp)T48~P;Sc*jr_*8blM|JTB=Su&X{$ash_kDyBB zgow$t6_P|2$+(j_DveW6ZKav#7OUW8#a+ZB;igwmkh`t6+(EAnA&^CU>=_W*#EM)- zwPaLaLqrXyslX`otinyup&=qB?#CAg?H` zR&4zQq_eUC@C#+jf%ocK4&XNKI2f*^#W3^Y1@$CW_$-MNC7Cis^DNPHhs4U7RwcG^ z3M>h#1ad;h=`5fw^EGVEu13c8_qJXf2QBPup)RO3sWH!c>b%e7^4Iu;5P|q3vAF+R@&JNLW zE5wrRXZW^>FSdFT9By&O!CzX+QulQ{vuM`#le6#Xe_~Ga@Q$I|&o+KEb9me7H zndiR^9XP)I@WJsN%^OyHerE4acWv6a{6){6+=>NgFv&c9wmrUlr0>*Y+*4cUugZPt z-T25Gqo3^Ewe^k@r>Mrn`FFm0>B#8l&KXB;`S80RroZKXTi%jBdQm*_+l-Ne@ki&Z zn{nXsly~Xmh3Rd<4&r?0(TiihJU0Tb6X%~K);wFB*>&>tX5WuDekNWYnL6Hl=+cSt bTUNS8_Y5DqZT#_^`LiSu>)>}qR<8XEsTLvg literal 0 HcmV?d00001 diff --git a/public/assets/flag_gray-319110a59d1d75cad2d8f29af88fdb23.gif b/public/assets/flag_gray-319110a59d1d75cad2d8f29af88fdb23.gif new file mode 100644 index 0000000000000000000000000000000000000000..b0a565aa325d447f111fc47ccd47e9d4d0ca6111 GIT binary patch literal 983 zcmZ?wbhEHb6krfw_|5Wzj*QDrAwEtUAuPu`t=((Zrr?i^Uj?+ckkZ4fB*i22M-=TeE8_m zqbEC^Y`5PyR`KT3@35K#Qd!pOkzpFsx{44^#0z_EqlKc|ex zh6Rp|QgS9c44fQVoB#8*Lq?Xq9v@nY|MsFZY*5fA*AG6 z_8_1j`G5nrrCU$OL1s@OSuKSP0tLnFoWe$R2AY!&yRu2T{9n0)@i9x6q{BQ3Nuft9 z>{I@mJ^Ay2>BK}CCA&2iii)ic+~zf31d13Bw%407O>r;~Xld+YQxWhfP||W~)KC+# evngn7Kic!3)1uK)`SD3XC2k%?1(t&i4AuZ+Gw9m@ literal 0 HcmV?d00001 diff --git a/public/assets/flag_red-16607fd54284010c4e95d5e9a3935b40.gif b/public/assets/flag_red-16607fd54284010c4e95d5e9a3935b40.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c4d62da9a754afc1396312c4831f47578c659b8 GIT binary patch literal 987 zcmZ?wbhEHb6krfw_|5SQ|E;xK7c}i#+In%ujGMD&9$eXVV9SChliL1wHvaEw`rp&~XZGZOv#0!@2#DtXUo!vCvibj4Ec(A<@&8pz|F2v5f5WPOo7Vi>w(0-Q zt^ap#`@ehp|2;dN9PIypaPR*k2mT*F^8e(~|EG@sKXc;W`P2W;pZ$N~?Efnl|KGa) z|H1wLFP{JY{vI5tqr}h%0mYvzj0_C_8FWC-1?33_jvWmDIb}RHEO2a8vdiHRbaCiy z{;xF0WxAp`UAL9^VVfOY}siev?OFw6og`q;)fdhQOK?@v$ zmi9<$847(7Ffd>i71f=T63MK_HBs8Gi+mM W@JmU_M~68?F5qP}<6vW9um%7qgb?2V literal 0 HcmV?d00001 diff --git a/public/assets/front-b28e4f9d550ff0101a0140b1fb1ec1da.png b/public/assets/front-b28e4f9d550ff0101a0140b1fb1ec1da.png new file mode 100644 index 0000000000000000000000000000000000000000..265e75c6016684d7393cce233a525b6ebced0304 GIT binary patch literal 17717 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 literal 0 HcmV?d00001 diff --git a/public/assets/icon_location_24-40aef0eb9d6824f7538c1056c90a2156.png b/public/assets/icon_location_24-40aef0eb9d6824f7538c1056c90a2156.png new file mode 100644 index 0000000000000000000000000000000000000000..e4df9261316faec8de426a24773b3f7094e90270 GIT binary patch literal 618 zcmV-w0+s!VP)u8s z5OX6*T?gVlK)ifat=|<~`WbOq05sSYNVNm8F#};R0f>u$7X2s60-)i!Kxz^LY2XYH zy8|tGht~q2;ZZ&ZKY)rW2}Jbv{Vm-1vFu0;2NCob2g zctfvqehKrq&kEx?-NK7IR%Q}g$qe+Zh3Y{46>x##9fhOa+M;_ z>HD}W_=wGdz1UQK`}v!pX~{8$m+!x#i0?l4fMNTod$=q(iZv$#lj?0CrGiZd8w)do zxuzsIncjT-j^Xyx_jt=lU~XQGk`JJu8i-e7)A8%iUxve%pAeIqLEc(}H75gYT?O(z z17#ozxm3lLv4Vm4CYgrk0u4WjuPg%j0+j!)$*`mtsCNn}6^<~Fx(38zL>OKLG`yWq zMnm_>Tc}Uo5-_|Mm*IGQfaDW(Aaw;xiUWa}K*KYLEh=#N1QZvJK>Qa?Y6T&~iShxG zPe8@_HYj%w&~R5`^f3{eM1Tfv2h~>4riv%A`Tzn90C35vuGdF=PXGV_07*qoM6N<$ Eg6u>E?f?J) literal 0 HcmV?d00001 diff --git a/public/assets/icon_rss-3ce0d86e00a9e937993988e73720950e.gif b/public/assets/icon_rss-3ce0d86e00a9e937993988e73720950e.gif new file mode 100644 index 0000000000000000000000000000000000000000..316f7691e6a9df6b6df75b85d3ccb9113bef373a GIT binary patch literal 1008 zcmeH`+fPyf9LIlYI`JO5WEzT>g__-_Hp@39(|powtF0y^mAa;yx7;3tSL!+UX z$)=S~n~Ha>v^yEmDkUVOi*R4gyeeVza08jNxdL=p06=U}vLBF8kv+E)p2 z!-7gNZfYTKNytV?5H34Tybf`8g*duGeszZteNpXG?3^Z zyE@3b(qM};SpVX@zCBU@GD#~h-kE;X-}}l`19+pmUf`}1xD(GjT+JS4p{Kpsi;()E zk~7wxjOF$`W!p9D=zYT&S3f0K8|1r$;AjB64)A)|s|6DRdOql?0IdXVC0JX}{*!lQJd8kdhg4--QCZPH7ZAh}CnLF56-TtwPAjltge;xj>eRRB-7R*zTpdV@IYDE}klCP=#w6x3Sph-{3{NSWUe62;h~SuTRab$J zKlKtr+sqQw_)y~U*dW={THjlvVv4GX6hO`n^-!?x%uBXY}PH3Os$I z^Tk(rk#vNdT!i?>kr{OoVAoZX;G|y%y}-@4-0f~IoWAWggAHv8KPTLX@?g5t5gMb` ucFvoIHMCwpl;iwhgEAtGN7nYFzws|ht?)kR8CIw|H3Rvnxp{FkNc|0z0boS{ literal 0 HcmV?d00001 diff --git a/public/assets/icons/InfoBox-54072dd9794a709a9fee5ab80d4be545.png b/public/assets/icons/InfoBox-54072dd9794a709a9fee5ab80d4be545.png new file mode 100755 index 0000000000000000000000000000000000000000..dd413d9a270e7918e289ff945f19c54b7ad2b3af GIT binary patch literal 837 zcmV-L1G@Z)P)R(Ws?1~B+<%7X9VGw8ga=rfcmt5So zfMJ2bEPh(UGoElP+SGqAZ63a6O=%D{Ul3X-Ni+UA|2 zDaa;rj7f@|00`06m1PT%$T5~BA{UUp<_``GH78Dl(aPuAKiG zz&6=`{eW573P%eKqd_RKaPx9Q4JPQUd&m%lg(VKOhl9qO`v_(fJX z9><5A$pq@U`72m^;3Crk9k@J9MqE1k8P_j;g8Keq&m)3q?zc209u)os^m28roEun< P00000NkvXXu0mjfR9cj7 literal 0 HcmV?d00001 diff --git a/public/assets/icons/Locked-84572b6d8c7a390e424483b16f28410f.png b/public/assets/icons/Locked-84572b6d8c7a390e424483b16f28410f.png new file mode 100644 index 0000000000000000000000000000000000000000..6f285c70e16cc917e8ab987195ee70f960305a47 GIT binary patch literal 1882 zcmV-g2c`IlP)Eng+F7*1`WX&yRlNK*o{pv)@0{}FlQ}KBG_p`IJ{q61T^!N9#CC{ZurBZZtb?KU#ngg!u z4(x7imm|M=Lq0zHsazk;Nq%ZZre_N>Gh2}S)Qnso&B@1SKb0e|zahI@+r@R=fts3{ z16^HRI+aR2+TqR3&38+G$n(70`<{DI-aqwk$qtT4ZhTU5;}bHP8<*kHoD7fVWHdJ} zxmy#G8=sIb2S?=n(;vyc=Ux=g^KK^+i9?HHt|~z~oo0A=7{_tGZH)Qn54xXk`svSq z!H(^Zqm<&#ooTKOTw`cxh?$vb0M@UsWBZOBq|-a7udl;eVQ^@KKOB9Vk3Kwo-F4lU zj4?e;O-&383{=nF^E~45xCb2H)7Bx!PMnfUpJ%1#N=A;o`+@BL(aW-BYsz@B*re9Z zu-4A7=f%F-vNdJ)zx1*kKXFPf^=0JJ=UF*+;k#00JRbKv&s%n$^KcsS-AKfH z{os!e$M$x0BEXf){k;9VH~Hj${~0Ki=6@55#eQ8XmHsFqfAze`yK{51*~}OHI|r`~ zZfM+|X2XUJ#MdPVLQC((3ysEvpBQ6CL}bZHdhtVNXD7xOj4|C?Q;o?z?cV~exOHoS zlPCU0-{qcxWHNa;2!f+qwrsfqi~u7I4UPRl5FAY=lZUTd{%qhMe?QLHt*<~S+S;FF zTdFZ>jOjMU(An9!GJ&zNG1BRD)LQ9iXl$mou8tryWV2a%E}XYY@m4;cKiAUILN=Sd z=aNnKW@c4GDm5y{e9UU7RTSCBH{4g;w0Z;>M zPS$TkX^kA+uB$_=LWGULo4_n9U*Q7Oim-8hKA<=sP@7nfF#t5VZseDdi2F_$nxRA@ z&eYUYg@Et-xURb`2>icv>@nZ(`VQ=B{esqplQh&_ru%yr*%Xy^Ryeqp?6nr2XuZPj zl%*lr!}HJf(OAdE^PdGrdi(9uk%)K5_x&78GEvc2TXqD0`rsY(uAK_3fCvI8rC4Qe zJ-ir;{gvYCfUy4+Y-TX>8dCoAJqarIL8@shy1Cv(@~~L8M^pddx+n$B_0Y5})R}9+ zz3t>KHd9u?ynuf6eAfgE$}COEeb4|OaF$l!n}AY)SvX@6mJkpN1Zy~400nx%+lKdl ztLB1XnVw4ss0B-9L8>UP6a*ghO;`{``(v8Oyi_Hwl&WO^fX(uYNQA0wC!n^jN{a|o}O0%r=5umK;y{MVY!(<+MFKQ_3m3=Jtv#%xr0)(sq zmVSzW1M zwaNt!*rhhhB?vS`HKMACpun}f@JuBeaV%o0Pk|BzfwPR{vWrLp2QjkH?$sgM+$V0F z>b9~FyV^~tL_w%4nyxa|_bRbgEW}nTRzO8=k4*^^d50#~L6m&$Ex4Gb62;9tj74Lvuta^`utHpH*H+Bt7ci0}LSA7||>Irb_vssI20E_zg0 zbYpU5VRU6JWMOn=004N}GcqtV&^0jAH8Kk^G`BJ|u`;&QHn6ZVFaQ8S(ghkjaSm(% z001s}R9JLvZ)9m^c`amNbY%blc-k{EFf`CLFxE9R4l%T_GBUF=Fwr)!ure?J06|Fw U56UO&F8}}l07*qoM6N<$g3Nh>TL1t6 literal 0 HcmV?d00001 diff --git a/public/assets/icons/Public_32-2bcfb892862a4396e3a5593a5e1df202.png b/public/assets/icons/Public_32-2bcfb892862a4396e3a5593a5e1df202.png new file mode 100644 index 0000000000000000000000000000000000000000..4db4fee05b290019baa57ff342a65b5b86a3d95d GIT binary patch literal 4788 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 OMNUMnLSTY4H#js`L=QLs literal 0 HcmV?d00001 diff --git a/public/assets/icons/Unlocked-226c08041c55d88ecf7898dffe6568aa.png b/public/assets/icons/Unlocked-226c08041c55d88ecf7898dffe6568aa.png new file mode 100644 index 0000000000000000000000000000000000000000..8b5b5e03f386a33ceaab4a2b043bbf87ee41abbb GIT binary patch literal 1652 zcmV-)28;QLP)NfRKNvIwoI3$`p3%68dhyE~noxy;VoJNF(x zOm``Ecin0A6DN5xALjg@=YRg^Ef?PJX8)I$<@0$8g@TQusH0x5w*kpaCgTnc4o1_{ z)B1mjpsTBk2OfA3*L62J)_%(vbHG|VYK(o!7<=4Wd(2w zp2=iLr_V`u zpQ_brV{&rx${#Nj3iR~!Bt6f2c>RVCRPX)HefsQQMs@1#SuK@)E&Ek1`&BKKeVv?| z(IZEn)35ISre-qPdCyDS-`CgY6bgkaQ=m{NFf}!W>$>00WOI)WfA0s$J9gbkM`|4x zE|fSoF+rtL0fcNe!{*JKNoP7Jl`8BX8R79?{j%))m9IxpbjZ090>1B)N~QY4uyOxg zpT9f#nOkooj$@vF`UnU2Kf&pLzFZB0AOJ`vlgaHnhLT_U@>dwzIm8{i?qXtMB7Nw| zeGlc*9e->2@xj4C07T@W{(-J5#qz&^*Zx2(_ShjO{xkn6g) ziO5qQ+}amC_UnE6{P8jU&Avn0)4QeNd5IsIRte0_&C%7>l@yVi2eh=1p2){e^%2+rt zaSm%8x~|!Th+Nk)fl8%9rBY5Jv>EFVtK$0=Y6}a+AP8QMqsP=biH1`HVA6}wI~~nMhsk|u_kKu5NjNa7@|0`v1(sOdun0F zj_apOrLvwpc@h9sz4)WLP^*zhI2dD46sNu2yP^8d{Ezdw_@l1FniNsRSgR?|ogtMx z&-$!SVPn)8h8&nLmnTO@U;Ig}wlK17+cw6>$Cq%iD&?||Yc0kID2VHN&wSx?^_w0X zhNQRlREP-cQXOQo8EUl}bF;IkDo-7OA3bWv!>IjJj-zLN-(Q66OeWipe(1wDX1h0a zb7uTi{&8Y-M!bZ)z5nNCG+cuf?U)uXBqC$1lncuoZX& zNC8T74P0=Bj5_8i|z$irT zmX7>~w+6N;#o84Rhz!~gbeX^w35ksn+tgVjx$OU?9E7%|PH+^7{C5Ni5*Ufsj$FnJ zP_GKLKmeoG3Q@FrJvgy(pMCt9+80e^X-i0}ZMAKC4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc literal 0 HcmV?d00001 diff --git a/public/assets/images/eye.png b/public/assets/images/eye.png new file mode 100644 index 0000000000000000000000000000000000000000..209f8c2a8dd25c91552c70700832ab6240efb3af GIT binary patch literal 3294 zcmd5|WNAB$N3l%*yS9I_w(kNQ;Ag zVo-7~Y-se`muaC}Y2N}slVpG({RBgLr~pgREENFdKX+RL2 z_x3YhP0tWiFc>6AnxJV9w(uAODiTT_)o3yyYz!V6qAur=tf|1n6neA*3cKBS9+biJ zSq*7MR?Al@RHK|VoIj#EO;BEva5^UPNc7>nm|<3ZF_&nGGmu0$Ei88{do>`~zv^4V zTN3h<7_o6O`OoILTn)T|VnrNpId^pljPyVr5-DhC1zm)(B2-b6GfYXW`sWL}Vg)CO z1XN%Sn;KXoRYQqIrsPZ(8CAEsw7O+udscJIas`ytbfZ%6WT1 zwox5QG7iqHhzypZz+ORwUc6`%40!=TY>eM=ozo;mdPoYtEGy>{u?ZDHMZsJJL0Jq{ zb6N8;X3pq>jfrDplepd`0SP9m1CB}46w5Fy#oS9$EJ<4E)`GE1aICT_D7+>X%$z0o zup7^KC0SylzKAbQGtmGQ_wzA|3dXodkmUWOKfuL9`5?35)8K z#6<9=dfB{A2@z%w0U>(@+hqgS-+=YVZY*7JwLP+jifknT0BggsI5AfB8bT3Dw${p& zTxS`sstB+e8@xXY@y4juF`cGJmJYBjl%w#f#$r}bGiKcrW}i0e)@?^tZjjd|oboeK zjwES5VplI0#C@HKksL+0Fp)T48~P;Sc*jr_*8blM|JTB=Su&X{$ash_kDyBB zgow$t6_P|2$+(j_DveW6ZKav#7OUW8#a+ZB;igwmkh`t6+(EAnA&^CU>=_W*#EM)- zwPaLaLqrXyslX`otinyup&=qB?#CAg?H` zR&4zQq_eUC@C#+jf%ocK4&XNKI2f*^#W3^Y1@$CW_$-MNC7Cis^DNPHhs4U7RwcG^ z3M>h#1ad;h=`5fw^EGVEu13c8_qJXf2QBPup)RO3sWH!c>b%e7^4Iu;5P|q3vAF+R@&JNLW zE5wrRXZW^>FSdFT9By&O!CzX+QulQ{vuM`#le6#Xe_~Ga@Q$I|&o+KEb9me7H zndiR^9XP)I@WJsN%^OyHerE4acWv6a{6){6+=>NgFv&c9wmrUlr0>*Y+*4cUugZPt z-T25Gqo3^Ewe^k@r>Mrn`FFm0>B#8l&KXB;`S80RroZKXTi%jBdQm*_+l-Ne@ki&Z zn{nXsly~Xmh3Rd<4&r?0(TiihJU0Tb6X%~K);wFB*>&>tX5WuDekNWYnL6Hl=+cSt bTUNS8_Y5DqZT#_^`LiSu>)>}qR<8XEsTLvg literal 0 HcmV?d00001 diff --git a/public/assets/images/ui-bg_diagonals-thick_18_b81900_40x40-7cff5779324125bfa623755a21cb7d08.png b/public/assets/images/ui-bg_diagonals-thick_18_b81900_40x40-7cff5779324125bfa623755a21cb7d08.png new file mode 100755 index 0000000000000000000000000000000000000000..954e22dbd99e8c6dd7091335599abf2d10bf8003 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEr#)R9Ln2z=UU%d=WFXS=@V?HT z#xG*`>Yvsgk=}99w^d^D^d*@m74oMo<%#FcopJf?u00-~YVKV2wzrI*_R6;UORMea zBFVSEnN~eiVA6V&z`E)YLz5Aok^D)In}Yn=OzDpgR5Wv0XfT8pOkmV{sKAJ-PO9#T zZK}IXj&Q-V!U)!LcB_3K0&C*{ literal 0 HcmV?d00001 diff --git a/public/assets/images/ui-bg_diagonals-thick_20_666666_40x40-e3476d26e53f4b2bdba1cbd4216bd169.png b/public/assets/images/ui-bg_diagonals-thick_20_666666_40x40-e3476d26e53f4b2bdba1cbd4216bd169.png new file mode 100755 index 0000000000000000000000000000000000000000..64ece5707d91a6edf9fad4bfcce0c4dbcafcf58d GIT binary patch literal 251 zcmVbvPcjKS|RKP(6sDcCAB(_QB%0978a<$Ah$!b|E zwn;|HO0i8cQj@~)s!ajF0S002ovPDHLkV1oEp BYH0uf literal 0 HcmV?d00001 diff --git a/public/assets/images/ui-bg_diagonals-thick_20_666666_40x40.png b/public/assets/images/ui-bg_diagonals-thick_20_666666_40x40.png new file mode 100644 index 0000000000000000000000000000000000000000..64ece5707d91a6edf9fad4bfcce0c4dbcafcf58d GIT binary patch literal 251 zcmVbvPcjKS|RKP(6sDcCAB(_QB%0978a<$Ah$!b|E zwn;|HO0i8cQj@~)s!ajF0S002ovPDHLkV1oEp BYH0uf literal 0 HcmV?d00001 diff --git a/public/assets/images/ui-bg_flat_10_000000_40x100-b4d9562e67d66d83845d2edeaae222d7.png b/public/assets/images/ui-bg_flat_10_000000_40x100-b4d9562e67d66d83845d2edeaae222d7.png new file mode 100755 index 0000000000000000000000000000000000000000..abdc01082bf3534eafecc5819d28c9574d44ea89 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQY-ImG zFPf9b{J;c_6SHRK%WcbN_hZpM=(Ry;4Rxv2@@2Y=$K57eF$X$=!PC{xWt~$(69B)$ BI)4BF literal 0 HcmV?d00001 diff --git a/public/assets/images/ui-bg_glass_100_f6f6f6_1x400-4d37c970a424e84d47dd48ae788eaef8.png b/public/assets/images/ui-bg_glass_100_f6f6f6_1x400-4d37c970a424e84d47dd48ae788eaef8.png new file mode 100755 index 0000000000000000000000000000000000000000..9b383f4d2eab09c0f2a739d6b232c32934bc620b GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour1U*q978O6-yYw{%b*}|_(02F z@qbE9)0CJMo;*v*PWv`Vh2h6EmG8IS-Cm{3U~` zFlmZ}YMcJY=eo?o%*@I?2`NblNeMudl#t?{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& literal 0 HcmV?d00001 diff --git a/public/assets/images/ui-bg_glass_65_ffffff_1x400.png b/public/assets/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouqzpV=978O6-=0?FV^9z|eBtf= z|7WztIJ;WT>{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& literal 0 HcmV?d00001 diff --git a/public/assets/images/ui-bg_gloss-wave_35_f6a828_500x100-93fadea558da2231315ae756b3be6bbf.png b/public/assets/images/ui-bg_gloss-wave_35_f6a828_500x100-93fadea558da2231315ae756b3be6bbf.png new file mode 100755 index 0000000000000000000000000000000000000000..39d5824d6af5456f1e89fc7847ea3599ea5fd815 GIT binary patch literal 3762 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/ui-bg_highlight-soft_100_eeeeee_1x100-4310274c0febae96f7f3d2f54b0a4f42.png b/public/assets/images/ui-bg_highlight-soft_100_eeeeee_1x100-4310274c0febae96f7f3d2f54b0a4f42.png new file mode 100755 index 0000000000000000000000000000000000000000..f1273672d253263b7564e9e21d69d7d9d0b337d9 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l%l7LV~E7mxPQ=F85a&M@g_{ d|GeK{$Y5lo%PMu^>wln`44$rjF6*2UngE4^EGqy2 literal 0 HcmV?d00001 diff --git a/public/assets/images/ui-icons_222222_256x240-d83eeaaf84f04ca2c5d6a684bc7629af.png b/public/assets/images/ui-icons_222222_256x240-d83eeaaf84f04ca2c5d6a684bc7629af.png new file mode 100755 index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/ui-icons_228ef1_256x240-65e412c112f4e7ee270afb71005fd17d.png b/public/assets/images/ui-icons_228ef1_256x240-65e412c112f4e7ee270afb71005fd17d.png new file mode 100755 index 0000000000000000000000000000000000000000..a641a371afa0fbb08ba599dc7ddf14b9bfc3c84f GIT binary patch literal 4369 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 oBo%DI*Kv;w;*%(i9W@e{{5C=l}o! literal 0 HcmV?d00001 diff --git a/public/assets/images/ui-icons_ef8c08_256x240-8b462cb27e07227bac8bd0020d9933e4.png b/public/assets/images/ui-icons_ef8c08_256x240-8b462cb27e07227bac8bd0020d9933e4.png new file mode 100755 index 0000000000000000000000000000000000000000..85e63e9f604ce042d59eb06a8428eeb7cb7896c9 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/ui-icons_ef8c08_256x240.png b/public/assets/images/ui-icons_ef8c08_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..85e63e9f604ce042d59eb06a8428eeb7cb7896c9 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/ui-icons_ffd27a_256x240-3d95bb913fb70688654b00e8ed1eb247.png b/public/assets/images/ui-icons_ffd27a_256x240-3d95bb913fb70688654b00e8ed1eb247.png new file mode 100755 index 0000000000000000000000000000000000000000..e117effa3dca24e7978cfc5f8b967f661e81044f GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/ui-icons_ffffff_256x240.png b/public/assets/images/ui-icons_ffffff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/public/assets/manifest-27c2ec8d97bd8487cae01bba17cdddb9.json b/public/assets/manifest-27c2ec8d97bd8487cae01bba17cdddb9.json new file mode 100644 index 0000000..19eabd7 --- /dev/null +++ b/public/assets/manifest-27c2ec8d97bd8487cae01bba17cdddb9.json @@ -0,0 +1 @@ +{"files":{"GitHub_ThingSpeak_API-f39bba3caddbf4af63e208b8552a98ac.jpg":{"logical_path":"GitHub_ThingSpeak_API.jpg","mtime":"2014-02-08T20:02:14-05:00","size":26303,"digest":"f39bba3caddbf4af63e208b8552a98ac"},"ThingSpeak_Logo-3139b15204b5af565fca3a5f342ef19c.png":{"logical_path":"ThingSpeak_Logo.png","mtime":"2014-02-08T20:02:14-05:00","size":9258,"digest":"3139b15204b5af565fca3a5f342ef19c"},"eye-b67d3d940541ae7d0b469ed20ee92fe3.png":{"logical_path":"eye.png","mtime":"2014-02-08T20:02:14-05:00","size":3294,"digest":"b67d3d940541ae7d0b469ed20ee92fe3"},"flag_gray-319110a59d1d75cad2d8f29af88fdb23.gif":{"logical_path":"flag_gray.gif","mtime":"2014-02-08T20:02:14-05:00","size":983,"digest":"319110a59d1d75cad2d8f29af88fdb23"},"flag_red-16607fd54284010c4e95d5e9a3935b40.gif":{"logical_path":"flag_red.gif","mtime":"2014-02-08T20:02:14-05:00","size":987,"digest":"16607fd54284010c4e95d5e9a3935b40"},"front-b28e4f9d550ff0101a0140b1fb1ec1da.png":{"logical_path":"front.png","mtime":"2014-02-08T20:02:14-05:00","size":17717,"digest":"b28e4f9d550ff0101a0140b1fb1ec1da"},"icon_location_24-40aef0eb9d6824f7538c1056c90a2156.png":{"logical_path":"icon_location_24.png","mtime":"2014-02-08T20:01:43-05:00","size":618,"digest":"40aef0eb9d6824f7538c1056c90a2156"},"icon_rss-3ce0d86e00a9e937993988e73720950e.gif":{"logical_path":"icon_rss.gif","mtime":"2014-02-08T20:02:14-05:00","size":1008,"digest":"3ce0d86e00a9e937993988e73720950e"},"icons/InfoBox-54072dd9794a709a9fee5ab80d4be545.png":{"logical_path":"icons/InfoBox.png","mtime":"2014-02-08T20:02:14-05:00","size":837,"digest":"54072dd9794a709a9fee5ab80d4be545"},"icons/Locked-84572b6d8c7a390e424483b16f28410f.png":{"logical_path":"icons/Locked.png","mtime":"2014-02-08T20:02:14-05:00","size":1882,"digest":"84572b6d8c7a390e424483b16f28410f"},"icons/Public_32-2bcfb892862a4396e3a5593a5e1df202.png":{"logical_path":"icons/Public_32.png","mtime":"2014-02-08T20:02:14-05:00","size":4788,"digest":"2bcfb892862a4396e3a5593a5e1df202"},"icons/Unlocked-226c08041c55d88ecf7898dffe6568aa.png":{"logical_path":"icons/Unlocked.png","mtime":"2014-02-08T20:02:14-05:00","size":1652,"digest":"226c08041c55d88ecf7898dffe6568aa"},"icons/delete-9a7fbc7ba573f4ab735f66bc17466a84.png":{"logical_path":"icons/delete.png","mtime":"2014-02-08T20:02:14-05:00","size":715,"digest":"9a7fbc7ba573f4ab735f66bc17466a84"},"my_house_status_update-526a896242134f12bf2882dfad48fe24.png":{"logical_path":"my_house_status_update.png","mtime":"2014-02-08T20:02:14-05:00","size":13437,"digest":"526a896242134f12bf2882dfad48fe24"},"rails-6a9a73b3eeba7d35c79c3de6fc98b6f1.png":{"logical_path":"rails.png","mtime":"2014-02-08T20:02:14-05:00","size":6646,"digest":"6a9a73b3eeba7d35c79c3de6fc98b6f1"},"react-99715cc1aac81b13fdc4384378c9cf0e.png":{"logical_path":"react.png","mtime":"2014-02-08T20:02:14-05:00","size":2996,"digest":"99715cc1aac81b13fdc4384378c9cf0e"},"scheduled_thinghttp-b525411c648770d5252475ab92925006.png":{"logical_path":"scheduled_thinghttp.png","mtime":"2014-02-08T20:02:14-05:00","size":8677,"digest":"b525411c648770d5252475ab92925006"},"shading-4c8cafd8b85355f46eedb553ece6a663.png":{"logical_path":"shading.png","mtime":"2014-02-08T20:02:14-05:00","size":565,"digest":"4c8cafd8b85355f46eedb553ece6a663"},"social_sensor_network_logo-2cc4b27d8115a3efcf38c0c6539d06fe.png":{"logical_path":"social_sensor_network_logo.png","mtime":"2014-02-08T20:02:14-05:00","size":15370,"digest":"2cc4b27d8115a3efcf38c0c6539d06fe"},"social_sensor_network_main-f2114a6f96a027de3c3b39aefd11a34b.png":{"logical_path":"social_sensor_network_main.png","mtime":"2014-02-08T20:02:14-05:00","size":132931,"digest":"f2114a6f96a027de3c3b39aefd11a34b"},"talkback-a8f0046a06cddead53bfe73e0a1b11b1.png":{"logical_path":"talkback.png","mtime":"2014-02-08T20:02:14-05:00","size":5183,"digest":"a8f0046a06cddead53bfe73e0a1b11b1"},"thinghttp-b22d0641869d4b49e8fdc1441d19bd9d.png":{"logical_path":"thinghttp.png","mtime":"2014-02-08T20:02:14-05:00","size":5918,"digest":"b22d0641869d4b49e8fdc1441d19bd9d"},"thingtweet-2f829197927298b1eb724a072adb072a.png":{"logical_path":"thingtweet.png","mtime":"2014-02-08T20:02:14-05:00","size":4075,"digest":"2f829197927298b1eb724a072adb072a"},"tweetcontrol-5fa1225bb39f188b215d5897b37c2c18.png":{"logical_path":"tweetcontrol.png","mtime":"2014-02-08T20:02:14-05:00","size":13429,"digest":"5fa1225bb39f188b215d5897b37c2c18"},"application-9a8391e7623b717b5e3815c9802c8c19.js":{"logical_path":"application.js","mtime":"2014-02-09T22:53:12-05:00","size":194479,"digest":"9a8391e7623b717b5e3815c9802c8c19"},"application-cef60c60a5550b2bf95cf2102b747be8.css":{"logical_path":"application.css","mtime":"2014-01-23T13:40:31-05:00","size":57211,"digest":"cef60c60a5550b2bf95cf2102b747be8"},"images/ui-bg_diagonals-thick_18_b81900_40x40-7cff5779324125bfa623755a21cb7d08.png":{"logical_path":"images/ui-bg_diagonals-thick_18_b81900_40x40.png","mtime":"2014-02-08T20:01:44-05:00","size":260,"digest":"7cff5779324125bfa623755a21cb7d08"},"images/ui-bg_diagonals-thick_20_666666_40x40-e3476d26e53f4b2bdba1cbd4216bd169.png":{"logical_path":"images/ui-bg_diagonals-thick_20_666666_40x40.png","mtime":"2014-02-08T20:01:44-05:00","size":251,"digest":"e3476d26e53f4b2bdba1cbd4216bd169"},"images/ui-bg_flat_10_000000_40x100-b4d9562e67d66d83845d2edeaae222d7.png":{"logical_path":"images/ui-bg_flat_10_000000_40x100.png","mtime":"2014-02-08T20:02:14-05:00","size":178,"digest":"b4d9562e67d66d83845d2edeaae222d7"},"images/ui-bg_glass_100_f6f6f6_1x400-4d37c970a424e84d47dd48ae788eaef8.png":{"logical_path":"images/ui-bg_glass_100_f6f6f6_1x400.png","mtime":"2014-02-08T20:01:44-05:00","size":104,"digest":"4d37c970a424e84d47dd48ae788eaef8"},"images/ui-bg_glass_100_fdf5ce_1x400-657936ddb303bcc8c34554da5279debe.png":{"logical_path":"images/ui-bg_glass_100_fdf5ce_1x400.png","mtime":"2014-02-08T20:02:14-05:00","size":125,"digest":"657936ddb303bcc8c34554da5279debe"},"images/ui-bg_glass_65_ffffff_1x400-5f18db79610dfa0b148ff6335bbc42cb.png":{"logical_path":"images/ui-bg_glass_65_ffffff_1x400.png","mtime":"2014-02-08T20:02:14-05:00","size":105,"digest":"5f18db79610dfa0b148ff6335bbc42cb"},"images/ui-bg_gloss-wave_35_f6a828_500x100-93fadea558da2231315ae756b3be6bbf.png":{"logical_path":"images/ui-bg_gloss-wave_35_f6a828_500x100.png","mtime":"2014-02-08T20:02:14-05:00","size":3762,"digest":"93fadea558da2231315ae756b3be6bbf"},"images/ui-bg_highlight-soft_100_eeeeee_1x100-4310274c0febae96f7f3d2f54b0a4f42.png":{"logical_path":"images/ui-bg_highlight-soft_100_eeeeee_1x100.png","mtime":"2014-02-08T20:01:44-05:00","size":90,"digest":"4310274c0febae96f7f3d2f54b0a4f42"},"images/ui-bg_highlight-soft_75_ffe45c_1x100-21008ee33c710d7e484d7f88f2c7dc21.png":{"logical_path":"images/ui-bg_highlight-soft_75_ffe45c_1x100.png","mtime":"2014-02-08T20:02:14-05:00","size":129,"digest":"21008ee33c710d7e484d7f88f2c7dc21"},"images/ui-icons_222222_256x240-d83eeaaf84f04ca2c5d6a684bc7629af.png":{"logical_path":"images/ui-icons_222222_256x240.png","mtime":"2014-02-08T20:02:14-05:00","size":4369,"digest":"d83eeaaf84f04ca2c5d6a684bc7629af"},"images/ui-icons_228ef1_256x240-65e412c112f4e7ee270afb71005fd17d.png":{"logical_path":"images/ui-icons_228ef1_256x240.png","mtime":"2014-02-08T20:02:14-05:00","size":4369,"digest":"65e412c112f4e7ee270afb71005fd17d"},"images/ui-icons_ef8c08_256x240-8b462cb27e07227bac8bd0020d9933e4.png":{"logical_path":"images/ui-icons_ef8c08_256x240.png","mtime":"2014-02-08T20:02:14-05:00","size":4369,"digest":"8b462cb27e07227bac8bd0020d9933e4"},"images/ui-icons_ffd27a_256x240-3d95bb913fb70688654b00e8ed1eb247.png":{"logical_path":"images/ui-icons_ffd27a_256x240.png","mtime":"2014-02-08T20:02:14-05:00","size":4369,"digest":"3d95bb913fb70688654b00e8ed1eb247"},"images/ui-icons_ffffff_256x240-2066cf4b1373355dbf4a2031099e1a04.png":{"logical_path":"images/ui-icons_ffffff_256x240.png","mtime":"2014-02-08T20:02:14-05:00","size":4369,"digest":"2066cf4b1373355dbf4a2031099e1a04"},"application-29a45c9a6c794a4499e57fc0bb19c87f.css":{"logical_path":"application.css","mtime":"2014-02-04T19:11:10-05:00","size":57343,"digest":"29a45c9a6c794a4499e57fc0bb19c87f"},"application-7190531a22e0dae7db2fbb715e0d2fe5.css":{"logical_path":"application.css","mtime":"2014-02-10T15:32:08-05:00","size":56487,"digest":"7190531a22e0dae7db2fbb715e0d2fe5"},"thingspeak_logo-95d6e7cb7f17bbbc1526407176244ca8.png":{"logical_path":"thingspeak_logo.png","mtime":"2014-02-10T17:38:24-05:00","size":1609,"digest":"95d6e7cb7f17bbbc1526407176244ca8"},"application-6b141b11b3826cf03d9c3fa5cc7fd6dd.css":{"logical_path":"application.css","mtime":"2014-02-12T23:32:37-05:00","size":158587,"digest":"6b141b11b3826cf03d9c3fa5cc7fd6dd"},"application-1369f895a819b8f9cb3fdb98c04ee8e0.js":{"logical_path":"application.js","mtime":"2014-02-13T18:46:07-05:00","size":194482,"digest":"1369f895a819b8f9cb3fdb98c04ee8e0"},"application-c2ba8a3fdde171077398b657e1ae7906.css":{"logical_path":"application.css","mtime":"2014-02-13T21:26:08-05:00","size":157975,"digest":"c2ba8a3fdde171077398b657e1ae7906"}},"assets":{"GitHub_ThingSpeak_API.jpg":"GitHub_ThingSpeak_API-f39bba3caddbf4af63e208b8552a98ac.jpg","ThingSpeak_Logo.png":"ThingSpeak_Logo-3139b15204b5af565fca3a5f342ef19c.png","eye.png":"eye-b67d3d940541ae7d0b469ed20ee92fe3.png","flag_gray.gif":"flag_gray-319110a59d1d75cad2d8f29af88fdb23.gif","flag_red.gif":"flag_red-16607fd54284010c4e95d5e9a3935b40.gif","front.png":"front-b28e4f9d550ff0101a0140b1fb1ec1da.png","icon_location_24.png":"icon_location_24-40aef0eb9d6824f7538c1056c90a2156.png","icon_rss.gif":"icon_rss-3ce0d86e00a9e937993988e73720950e.gif","icons/InfoBox.png":"icons/InfoBox-54072dd9794a709a9fee5ab80d4be545.png","icons/Locked.png":"icons/Locked-84572b6d8c7a390e424483b16f28410f.png","icons/Public_32.png":"icons/Public_32-2bcfb892862a4396e3a5593a5e1df202.png","icons/Unlocked.png":"icons/Unlocked-226c08041c55d88ecf7898dffe6568aa.png","icons/delete.png":"icons/delete-9a7fbc7ba573f4ab735f66bc17466a84.png","my_house_status_update.png":"my_house_status_update-526a896242134f12bf2882dfad48fe24.png","rails.png":"rails-6a9a73b3eeba7d35c79c3de6fc98b6f1.png","react.png":"react-99715cc1aac81b13fdc4384378c9cf0e.png","scheduled_thinghttp.png":"scheduled_thinghttp-b525411c648770d5252475ab92925006.png","shading.png":"shading-4c8cafd8b85355f46eedb553ece6a663.png","social_sensor_network_logo.png":"social_sensor_network_logo-2cc4b27d8115a3efcf38c0c6539d06fe.png","social_sensor_network_main.png":"social_sensor_network_main-f2114a6f96a027de3c3b39aefd11a34b.png","talkback.png":"talkback-a8f0046a06cddead53bfe73e0a1b11b1.png","thinghttp.png":"thinghttp-b22d0641869d4b49e8fdc1441d19bd9d.png","thingtweet.png":"thingtweet-2f829197927298b1eb724a072adb072a.png","tweetcontrol.png":"tweetcontrol-5fa1225bb39f188b215d5897b37c2c18.png","application.js":"application-1369f895a819b8f9cb3fdb98c04ee8e0.js","application.css":"application-c2ba8a3fdde171077398b657e1ae7906.css","images/ui-bg_diagonals-thick_18_b81900_40x40.png":"images/ui-bg_diagonals-thick_18_b81900_40x40-7cff5779324125bfa623755a21cb7d08.png","images/ui-bg_diagonals-thick_20_666666_40x40.png":"images/ui-bg_diagonals-thick_20_666666_40x40-e3476d26e53f4b2bdba1cbd4216bd169.png","images/ui-bg_flat_10_000000_40x100.png":"images/ui-bg_flat_10_000000_40x100-b4d9562e67d66d83845d2edeaae222d7.png","images/ui-bg_glass_100_f6f6f6_1x400.png":"images/ui-bg_glass_100_f6f6f6_1x400-4d37c970a424e84d47dd48ae788eaef8.png","images/ui-bg_glass_100_fdf5ce_1x400.png":"images/ui-bg_glass_100_fdf5ce_1x400-657936ddb303bcc8c34554da5279debe.png","images/ui-bg_glass_65_ffffff_1x400.png":"images/ui-bg_glass_65_ffffff_1x400-5f18db79610dfa0b148ff6335bbc42cb.png","images/ui-bg_gloss-wave_35_f6a828_500x100.png":"images/ui-bg_gloss-wave_35_f6a828_500x100-93fadea558da2231315ae756b3be6bbf.png","images/ui-bg_highlight-soft_100_eeeeee_1x100.png":"images/ui-bg_highlight-soft_100_eeeeee_1x100-4310274c0febae96f7f3d2f54b0a4f42.png","images/ui-bg_highlight-soft_75_ffe45c_1x100.png":"images/ui-bg_highlight-soft_75_ffe45c_1x100-21008ee33c710d7e484d7f88f2c7dc21.png","images/ui-icons_222222_256x240.png":"images/ui-icons_222222_256x240-d83eeaaf84f04ca2c5d6a684bc7629af.png","images/ui-icons_228ef1_256x240.png":"images/ui-icons_228ef1_256x240-65e412c112f4e7ee270afb71005fd17d.png","images/ui-icons_ef8c08_256x240.png":"images/ui-icons_ef8c08_256x240-8b462cb27e07227bac8bd0020d9933e4.png","images/ui-icons_ffd27a_256x240.png":"images/ui-icons_ffd27a_256x240-3d95bb913fb70688654b00e8ed1eb247.png","images/ui-icons_ffffff_256x240.png":"images/ui-icons_ffffff_256x240-2066cf4b1373355dbf4a2031099e1a04.png","thingspeak_logo.png":"thingspeak_logo-95d6e7cb7f17bbbc1526407176244ca8.png"}} \ No newline at end of file diff --git a/public/assets/my_house_status_update-526a896242134f12bf2882dfad48fe24.png b/public/assets/my_house_status_update-526a896242134f12bf2882dfad48fe24.png new file mode 100644 index 0000000000000000000000000000000000000000..4cb4421739936ecf20caba3ccc7d8fc298eed821 GIT binary patch literal 13437 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 literal 0 HcmV?d00001 diff --git a/public/assets/rails-6a9a73b3eeba7d35c79c3de6fc98b6f1.png b/public/assets/rails-6a9a73b3eeba7d35c79c3de6fc98b6f1.png new file mode 100644 index 0000000000000000000000000000000000000000..d5edc04e65f555e3ba4dcdaad39dc352e75b575e GIT binary patch literal 6646 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 AQ~&?~ literal 0 HcmV?d00001 diff --git a/public/assets/shading-4c8cafd8b85355f46eedb553ece6a663.png b/public/assets/shading-4c8cafd8b85355f46eedb553ece6a663.png new file mode 100644 index 0000000000000000000000000000000000000000..b0aaeca35413c712c81cff75c4d6bce015992e1d GIT binary patch literal 565 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�uNRD$4{+CYdnYC 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 z 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 literal 0 HcmV?d00001 diff --git a/public/assets/thingspeak_logo-95d6e7cb7f17bbbc1526407176244ca8.png b/public/assets/thingspeak_logo-95d6e7cb7f17bbbc1526407176244ca8.png new file mode 100644 index 0000000000000000000000000000000000000000..5f4fa2e71c77c147a8e5c58fd9a9715668d5bc51 GIT binary patch literal 1609 zcmV-P2DbT$P)q$gGRCwC#UD0*oI209owg7Jh&R8kNf zlWloBf!MF1e86`Qc09Y&l06_o%1Ob4v$U%TS+AQBmMfp4}+Lmlv z)@aUeLA))Y_Il#;ESf}+q{2CCYDh_rK6|eWL7umzOTWtn%~1{8C!`nyv6~^3cp*~D zdtILR^S?6;av+F?euZ;VBFMh#(`9kgi6D{?LmFXCu`67j0ZCx7YKS$B!h!a>PUM)8 z{c|B}A~`^iuOrCqw)~=wHmFf-Jp(zW+ww}ktHs!~sSmG71Zf%U!;IOf&XKO2*0ht| zvDY0#oB>O2K@h+jF^#ezS&&DIg-RT++nU$UC_f3bx&um(mhWrJjaOTiK@P-ke?`= z3$f8k`xJVn+-jo5TxGkyyw8nRTy-SuSeeu=*xzJ%H#D>`9OtS#qI!JmRz$U(!|T_d z?~1)Q)^epH=;tNWCL2o(k)va-9Os!P4s6G(vanol=4gk7p^jZUfFP9!;wtZkPF98> z?LYAc^7J|6|2U`hLmxz~b5CJ!h6w z-4lH1KRN(!=KBjU5cs#H}FUia8hceh~V3jB)P2p~do(22MYCrajmGzmW5*s! z!l$oC>^?#*_G`mnm1xEEK7T!?PW?`uzgO}Z{9=R{m=qVYScgIOP1lV)W}$pBp%PN( z=@~jyTCxq6taFEC>3G~lyBq>$xq1g^JD%J8FdYO10Zh5ogUGK5b!!k?%*c^x`N+Os z+R-zqBoyTIJ2O|5)G_*&L3)7rYzoKYE?S^nYAUAVc8@qSQp_H+l9##~LP1U&F9sVF zunrm(jL5NtM7@&sEjB1lz{s3g;#S1AmCQo8bdS96p7M@0t78m{bv~FH65$2;^r0x8 z-MiD0T{W#M%Sz;Dr5+3F8j6qa2}neK7U{_mw~93uA3FUI(q>+~lF9$04#OC+(8!wzxvn0O@8eM`c<6rZ>Fo8oQ@^Gw;Bre53<^+mOhG4Meq z75N3!KgtCKIekpXE|_MKMh=heYe`1JZxiRz@%N4)zKP(Aa%Nm;zYiSO8Hwt%i4O*{ zKQ~=L*5dQr{klZLnwG3C4?Y<`%!WpXtr`kr6>UMPHd-Iym70v_)wf~;z# zh@B*Bs0mPO9BUnpmy>)fOef_G0I*CilWt=6kHzh%Ss%~PLJ*@O^;TTa#NI9ck;%48K!_c z8lK4+c-Zn{Hh}Tbw(7RpKRH6)>Se?K>0!l(-);*VN@!)GOTqm)Hw5Y!NAScm= zkDUZqck%v}BojqPHt#UpLg_ zYdfJ^{`OZ|9HhFCoix}=^ELOUB3a~q&mL&Da?EY?dIK`p3V7J?4Q94zzsw@w473162UnV)`4s9>zahSZ}#rT1e%A(0QH}ZaOo94_RCb8>j zDzGehsIAbP8XH=*;{-@mG2RmBmN!iD{&x_zFTkDDKOsaW7k4i1qH9=Jsfly5;2C>t zLA&!kB!VS`?-#?%R$yp)GQ*}>Ms8+}+@SkB#!G_6nlI2yu3_!RCRTNN(0x~)KVh5) zZ^9Pkj9z27?Y1m`B02KV$6@+E!7kn4_)Ebi_ad`noS`W9Ps)Ko#jE~My+Y-hJ I(4Pc;1G-?z2LJ#7 literal 0 HcmV?d00001 diff --git a/public/resque/favicon.ico b/public/resque/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5fb5deb67fcd6ad95f63112eeef8db0eb7b1f356 GIT binary patch literal 1150 zcmb7EYfO_@7(P%cIA-7ngNP1YjI#qGmx#D*Xci_$Fl=!sf`VZ#pv#=fa6@4rH(7Cm z0AX{aAaapQX>GrLwv-mC0~{?EX@ORhK}$QXZD|WFrCu#*Ms91GDu(Nl#)|_$R(xx z!3a(3c;=l>e+tstdcBe#3PMsF{vs!)wYbN9`Fm+nYDI|Apa*7)WlLXHUJ0@q+2r5) zUV`&g^oz;)j9al8oyDip>9ms>^uqK~)=$@J&>Zi*w4q%TA>2bLZq=@60EXF|dQy*& z3!Vxjeszr!(elz1%*}gl_wr}JkjO54haU?sDD20L#(8)-tH=I95Yv3*SS5RLaber0 zZPTfDXRz7eZVj99&&&!DLd)2M8ar?Z#rB1=HX=SlR;OMo%>-^lnQ9lM zO6@kTS|TOX@LWpif{RL(+yNnO(d!LRIwrN{7c^ExpR7hcjX|MI_8QacR-Jo0mX>Dh znYB+YrO*WA;pqjB*lKpzx!WB%nOPzz>XWa|&P+jpfS=pe&U|m@{ucOQSgX9|emgp^ znTGt{iM4AtL@++9Ir9vyD{NA&KNwfd^bbE>PxT2vASD9TolW6D1`~}Q9+rUoqNXd| z-NGFl4(Dk6Sp@D6N436t5E!0NUld!#@SB*^MaERnJ)@Ey)rCg#AmuR6xZSr6HZ&rK zWl{+k9T|K_J~;|%X-Jf(Upovu!ZSK~QOV8skC)RuWGZb?bU8gB{Hq70KJT+(=uxij z+w0vBLAb}n;vvB0_3j=V6ay9u{X8v$3xhv?qIL3|^$Fc>g<4C_V)O?m-fk_SmOY2l zGm9qNz7B;#A$4SA0K8O;c#RAX0EC0w(=N|J#jANEl`4i`+-xbxMa2h+e!CeqFmSbw zb51#@aQ4@1v*EaMR%QSBPHW{aWz6_Hg^#KxWaF5@u)dX7s$an?e?C5Mvf8)a-rS05 zdmghNbfB_Y(X$DHgRlQRq{IS(*^XTwG2y;2j$>$a8gt@fQWb3Hj6WzBD|7fhbb^cN2_8U_6RdauJLfCUeI!pD6A*zm{fUWevi1-x6uYZCGY-Yx0u za$PoBTp^BwHLDF|v&EpSd&vD)(HQuqmXnxptG(nzdS`J=T1Uf)bb8T+{LZ5MR(?`> zRVBDrRU7Ywd4wa#5_uz)2}`!D0)fBzZfM7V^)`_Pe_`T zUEJg)n~=sEVe`_bhp_(t?G5`e5|NHmvf_u}f9wv6dA3Qqox5cHDIl_7t zOazI89_+@ht+^TfBt~ke|VJNGV%(sFms7<0Hg6UJNq|KK44(r=0;J6VZg6nzt})[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
      "]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
      ","
      "]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="
      ";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

      ";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
      ";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
      ").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
      ';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/public/resque/jquery.relatize_date.js b/public/resque/jquery.relatize_date.js new file mode 100644 index 0000000..2fcfdbf --- /dev/null +++ b/public/resque/jquery.relatize_date.js @@ -0,0 +1,95 @@ +// All credit goes to Rick Olson. +(function($) { + $.fn.relatizeDate = function() { + return $(this).each(function() { + if ($(this).hasClass( 'relatized' )) return + $(this).text( $.relatizeDate(this) ).addClass( 'relatized' ) + }) + } + + $.relatizeDate = function(element) { + return $.relatizeDate.timeAgoInWords( new Date($(element).text()) ) + } + + // shortcut + $r = $.relatizeDate + + $.extend($.relatizeDate, { + shortDays: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ], + days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + shortMonths: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ], + months: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ], + + /** + * Given a formatted string, replace the necessary items and return. + * Example: Time.now().strftime("%B %d, %Y") => February 11, 2008 + * @param {String} format The formatted string used to format the results + */ + strftime: function(date, format) { + var day = date.getDay(), month = date.getMonth(); + var hours = date.getHours(), minutes = date.getMinutes(); + + var pad = function(num) { + var string = num.toString(10); + return new Array((2 - string.length) + 1).join('0') + string + }; + + return format.replace(/\%([aAbBcdHImMpSwyY])/g, function(part) { + switch(part[1]) { + case 'a': return $r.shortDays[day]; break; + case 'A': return $r.days[day]; break; + case 'b': return $r.shortMonths[month]; break; + case 'B': return $r.months[month]; break; + case 'c': return date.toString(); break; + case 'd': return pad(date.getDate()); break; + case 'H': return pad(hours); break; + case 'I': return pad((hours + 12) % 12); break; + case 'm': return pad(month + 1); break; + case 'M': return pad(minutes); break; + case 'p': return hours > 12 ? 'PM' : 'AM'; break; + case 'S': return pad(date.getSeconds()); break; + case 'w': return day; break; + case 'y': return pad(date.getFullYear() % 100); break; + case 'Y': return date.getFullYear().toString(); break; + } + }) + }, + + timeAgoInWords: function(targetDate, includeTime) { + return $r.distanceOfTimeInWords(targetDate, new Date(), includeTime); + }, + + /** + * Return the distance of time in words between two Date's + * Example: '5 days ago', 'about an hour ago' + * @param {Date} fromTime The start date to use in the calculation + * @param {Date} toTime The end date to use in the calculation + * @param {Boolean} Include the time in the output + */ + distanceOfTimeInWords: function(fromTime, toTime, includeTime) { + var delta = parseInt((toTime.getTime() - fromTime.getTime()) / 1000, 10); + if (delta < 60) { + return 'just now'; + } else if (delta < 120) { + return 'about a minute ago'; + } else if (delta < (45*60)) { + return (parseInt(delta / 60, 10)).toString() + ' minutes ago'; + } else if (delta < (120*60)) { + return 'about an hour ago'; + } else if (delta < (24*60*60)) { + return 'about ' + (parseInt(delta / 3600, 10)).toString() + ' hours ago'; + } else if (delta < (48*60*60)) { + return '1 day ago'; + } else { + var days = (parseInt(delta / 86400, 10)).toString(); + if (days > 5) { + var fmt = '%B %d, %Y' + if (includeTime) fmt += ' %I:%M %p' + return $r.strftime(fromTime, fmt); + } else { + return days + " days ago" + } + } + } + }) +})(jQuery); diff --git a/public/resque/poll.png b/public/resque/poll.png new file mode 100755 index 0000000000000000000000000000000000000000..ca632c4efefc0e6b10d9c9018e6f76ce85cdcdd5 GIT binary patch literal 627 zcmV-(0*w8MP)<{07iUtHr4?g(L&Ku_Q-kUeG#Pd8jiZO6RL7t~DC$=bar0a2!N}!Edh$g*C!3TU;kJiqP=jU?v%hrLn^-y(MjX8}@27NJOI$ z>+Xi!%F1igG*v=~M+4mOcXjc%CMK>UG;G^83kVse2{;FBa}$6NIMv$=J)sb-(tEbL zy4GwqRqC+kvRS2V+wFp)Y_)9L=#R(a2#CA;`ygu?1Vj;{kq8_Q1aO(ahmDQ$+~VRB zJb%f-1hfJJ_13hk^%s)#W?^aRWyJ3vzmm<~jK^Yt4FsRh2bSXio*5RFm*2Gvqez2w zKBTtix+Tjr=N`|`D!Q0)myFl(|o?r(Dg5Ry$)1=+(M;X233|_ zj2iwZ%hlVnvyZUu-Be%S=*;BgWmVIvhOV#E=KW;I)u|~^i$zdSzu8^X9?$a+aOZ*D zZug)+#tXtl{N6$7zn(H3I$&xKQD0F9KYTjRxvrb*+(`cW-}qgC0RTgm+Q_h_>uvx5 N002ovPDHLkV1hkfBwYXi literal 0 HcmV?d00001 diff --git a/public/resque/ranger.js b/public/resque/ranger.js new file mode 100644 index 0000000..0e1568f --- /dev/null +++ b/public/resque/ranger.js @@ -0,0 +1,78 @@ +$(function() { + var poll_interval = 2 + + var relatizer = function(){ + var dt = $(this).text(), relatized = $.relatizeDate(this) + if ($(this).parents("a").length > 0 || $(this).is("a")) { + $(this).relatizeDate() + if (!$(this).attr('title')) { + $(this).attr('title', dt) + } + } else { + $(this) + .text('') + .append( $('') + .append('' + dt + + '' + + relatized + '') ) + } + }; + + $('.time').each(relatizer); + + $('.time a.toggle_format .date_time').hide() + + var format_toggler = function(){ + $('.time a.toggle_format span').toggle() + $(this).attr('title', $('span:hidden',this).text()) + return false + }; + + $('.time a.toggle_format').click(format_toggler); + + $('.backtrace').click(function() { + $(this).next().toggle() + return false + }) + + $('a[rel=poll]').click(function() { + var href = $(this).attr('href') + $(this).parent().text('Starting...') + $("#main").addClass('polling') + + setInterval(function() { + $.ajax({dataType: 'text', type: 'get', url: href, + success: function(data) { + $('#main').html(data) + $('#main .time').relatizeDate() + }, + error: function(data) { + if (data.status == '401') { window.location.href = '/' } + } + }) + }, poll_interval * 1000) + + return false + }) + + $('ul.failed li').hover(function() { + $(this).addClass('hover'); + }, function() { + $(this).removeClass('hover'); + }) + + $('ul.failed a[rel=retry]').click(function() { + var href = $(this).attr('href'); + $(this).text('Retrying...'); + var parent = $(this).parent(); + $.ajax({dataType: 'text', type: 'get', url: href, success: function(data) { + parent.html('Retried ' + data + ''); + relatizer.apply($('.time', parent)); + $('.date_time', parent).hide(); + $('a.toggle_format span', parent).click(format_toggler); + }}); + return false; + }) + + +}) \ No newline at end of file diff --git a/public/resque/reset.css b/public/resque/reset.css new file mode 100644 index 0000000..b026b6d --- /dev/null +++ b/public/resque/reset.css @@ -0,0 +1,44 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +dl, dt, dd, ul, li, +form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-weight: inherit; + font-style: normal; + font-size: 100%; + font-family: inherit; +} + +body { + line-height: 1; +} + +ul { + list-style: none; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +caption, th, td { + text-align: left; + font-weight: normal; +} + +blockquote:before, blockquote:after, +q:before, q:after { + content: ""; +} + +blockquote, q { + quotes: "" ""; +} \ No newline at end of file diff --git a/public/resque/style.css b/public/resque/style.css new file mode 100644 index 0000000..046e940 --- /dev/null +++ b/public/resque/style.css @@ -0,0 +1,91 @@ +html { background:#efefef; font-family:Arial, Verdana, sans-serif; font-size:13px; } +body { padding:0; margin:0; } + +.header { background:#000; padding:8px 5% 0 5%; border-bottom:1px solid #444;border-bottom:5px solid #ce1212;} +.header h1 { color:#333; font-size:90%; font-weight:bold; margin-bottom:6px;} +.header ul li { display:inline;} +.header ul li a { color:#fff; text-decoration:none; margin-right:10px; display:inline-block; padding:8px; -webkit-border-top-right-radius:6px; -webkit-border-top-left-radius:6px; -moz-border-radius-topleft:6px; -moz-border-radius-topright:6px; } +.header ul li a:hover { background:#333;} +.header ul li.current a { background:#ce1212; font-weight:bold; color:#fff;} + +.header .namespace { position: absolute; right: 75px; top: 10px; color: #7A7A7A; } + +.subnav { padding:2px 5% 7px 5%; background:#ce1212; font-size:90%;} +.subnav li { display:inline;} +.subnav li a { color:#fff; text-decoration:none; margin-right:10px; display:inline-block; background:#dd5b5b; padding:5px; -webkit-border-radius:3px; -moz-border-radius:3px;} +.subnav li.current a { background:#fff; font-weight:bold; color:#ce1212;} +.subnav li a:active { background:#b00909;} + +#main { padding:10px 5%; background:#fff; overflow:hidden; } +#main .logo { float:right; margin:10px;} +#main span.hl { background:#efefef; padding:2px;} +#main h1 { margin:10px 0; font-size:190%; font-weight:bold; color:#ce1212;} +#main h2 { margin:10px 0; font-size:130%;} +#main table { width:100%; margin:10px 0;} +#main table tr td, #main table tr th { border:1px solid #ccc; padding:6px;} +#main table tr th { background:#efefef; color:#888; font-size:15px; font-weight:bold;} +#main table tr td.no-data { text-align:center; padding:40px 0; color:#999; font-style:italic; font-size:130%;} +#main a { color:#111;} +#main p { margin:5px 0;} +#main p.intro { margin-bottom:15px; font-size:85%; color:#999; margin-top:0; line-height:1.3;} +#main h1.wi { margin-bottom:5px;} +#main p.sub { font-size:95%; color:#999;} + +#main table.queues { width:40%;} +#main table.queues td.queue { font-weight:bold; width:50%;} +#main table.queues tr.failure td { background:#ffecec; font-size:90%; color:#d37474;} +#main table.queues tr.failure td a{ color:#d37474;} +#main table.queues tr.first_failure td { border-top:2px solid #d37474; } + +#main table.jobs td.class { font-family:Monaco, "Courier New", monospace; font-size:90%; width:50%;} +#main table.jobs td.args{ width:50%;} + +#main table.workers td.icon {width:1%; background:#efefef;text-align:center;} +#main table.workers td.icon img { height: 16px; width: 16px; } +#main table.workers td.where { width:25%;} +#main table.workers td.queues { width:35%;} +#main .queue-tag { background:#b1d2e9; padding:2px; margin:0 3px; font-size:80%; text-decoration:none; text-transform:uppercase; font-weight:bold; color:#3274a2; -webkit-border-radius:4px; -moz-border-radius:4px;} +#main .queue-tag a { color: #3274A2; text-decoration: none; } +#main table.workers td.queues.queue { width:10%;} +#main table.workers td.process { width:35%;} +#main table.workers td.process span.waiting { color:#999; font-size:90%;} +#main table.workers td.process small { font-size:80%; margin-left:5px;} +#main table.workers td.process code { font-family:Monaco, "Courier New", monospace; font-size:90%;} +#main table.workers td.process small a { color:#999;} +#main.polling table.workers tr.working td { background:#f4ffe4; color:#7ac312;} +#main.polling table.workers tr.working td.where a { color:#7ac312;} +#main.polling table.workers tr.working td.process code { font-weight:bold;} + + +#main table.stats th { font-size:100%; width:40%; color:#000;} +#main hr { border:0; border-top:5px solid #efefef; margin:15px 0;} + +#footer { padding:10px 5%; background:#efefef; color:#999; font-size:85%; line-height:1.5; border-top:5px solid #ccc; padding-top:10px;} +#footer p a { color:#999;} + +#main p.poll { background:url(poll.png) no-repeat 0 2px; padding:3px 0; padding-left:23px; float:right; font-size:85%; } + +#main ul.failed {} +#main ul.failed li {background:-webkit-gradient(linear, left top, left bottom, from(#efefef), to(#fff)) #efefef; margin-top:10px; padding:10px; overflow:hidden; -webkit-border-radius:5px; border:1px solid #ccc; } +#main ul.failed li dl dt {font-size:80%; color:#999; width:60px; float:left; padding-top:1px; text-align:right;} +#main ul.failed li dl dd {margin-bottom:10px; margin-left:70px;} +#main ul.failed li dl dd .retried { float:right; text-align: right; } +#main ul.failed li dl dd .retried .remove { display:none; margin-top: 8px; } +#main ul.failed li.hover dl dd .retried .remove { display:block; } +#main ul.failed li dl dd .controls { display:none; float:right; } +#main ul.failed li.hover dl dd .controls { display:block; } +#main ul.failed li dl dd code, #main ul.failed li dl dd pre { font-family:Monaco, "Courier New", monospace; font-size:90%; white-space: pre-wrap;} +#main ul.failed li dl dd.error a {font-family:Monaco, "Courier New", monospace; font-size:90%; } +#main ul.failed li dl dd.error pre { margin-top:3px; line-height:1.3;} + +#main p.pagination { background:#efefef; padding:10px; overflow:hidden; text-align:center} +#main p.pagination a.less { float:left;} +#main p.pagination a.more { float:right;} + +#main form {float:right; margin-top:-10px;margin-left:10px;} + +#main .time a.toggle_format {text-decoration:none;} + +#failed tr.total td {background-color: #FFECEC; color: #D37474; font-size: 15px; font-weight: bold;} +#failed .center {text-align: center;} +#failed .failed_class { padding-left: 20px; font-size:12px; } \ No newline at end of file diff --git a/public/resque/working.png b/public/resque/working.png new file mode 100755 index 0000000000000000000000000000000000000000..06f1ee390a69aede315c33ab6ba8c085bcdd003e GIT binary patch literal 792 zcmV+z1LypSP)EC;hyLIe&>0f-+2gQ40f`JC2;i49PokwJkJAXv$+T%L5!V5v?59o z-w?z2?=wni%x1Io;&<@lt?E90n_wf)v1<)A_QSQ+_GV`(--u_#Sjh$FqRJJ@ z*sy6Boqq{jfy$Uq9{rZaI@uQCQm&Ff^^Q!Rstd zE@y#qguEY%O=BNEaXkMDV-Sw0cf*m@wyS6A<(~^_D65dbP}MB~O;yWwIe1Z1b@nBi zT0-@=C@^6t3gF(0XuENt32)AWAaYi@7N;l!Rn_ehmoN;v5}8kCOlnS0(?l`{f*=Gf zrye|=3jJdrA)$gmK9{@w;@z~o-DAp(5R&`QwvC#RB%coMFBj0N*B_=M1p!@Eag;@~0?~niK+Z!TD?Vdw{eS*KyP26sWCBTxu!rJWIOloF!%2c%h zoSU!>=O*2MeKP~J%&K{aa9lrCl$!YHWH*dXw&PioRRUrRF=#avZ%+L;jXPPt1sDL; W*<1`LTn4ZJ0000 @channel.id + response.should render_template(:private_show) + end + + it "should allow a new channel to be created" do + post :create + response.should be_redirect + channel_id = Channel.find(:all).last.id + response.should redirect_to( channel_path(channel_id, :anchor => "channelsettings")) + end + + it "should allow a channel to be edited" do + @channel.public_flag = true + put :update, id: @channel, channel: {name: 'new name'}, tags: FactoryGirl.attributes_for(:tag) + @channel.reload + @channel.name.should eq('new name') + response.should redirect_to channel_path(@channel.id) + end + it "should allow a channel to be deleted " do + delete :destroy, :id => @channel.id + response.should redirect_to channels_path + @channel_no_more = Channel.find_by_id(@channel.id) + @channel_no_more.should be_nil + end + + + end + + describe "Not Logged In" do + before :each do + without_timestamping_of Channel do + @channel = FactoryGirl.create(:channel, :updated_at => Time.now - RATE_LIMIT_FREQUENCY.to_i.seconds, :public_flag => false) + end + @apikey = FactoryGirl.create(:api_key, :channel => @channel) + end + + it "should only display public channels" do + get :public + response.should render_template('public') + end + + it "should show paginated list of public channels as json" do + get :public, :format => :json + JSON.parse(response.body).keys.include?('pagination').should be_true + end + + it "should show the channels public page" do + get :show, :id => @channel.id + response.should render_template(:public_show) + end + + it "should redirect to login when creating a new channel" do + post :create + + response.should be_redirect + response.should redirect_to(login_path) + response.status.should == 302 + end + + it "should be allowed to send data via get to update channel" do + get :post_data, {:key => "0S5G2O7FAB5K0J6Z", :field1 => "0", :status => "ThisIsATest"} + + response.body.to_i.should > 0 + response.should be_successful + end + + if defined?(React) + describe "updates a channel and executes a TalkBack command" do + before :each do + @talkback = FactoryGirl.create(:talkback) + @command = FactoryGirl.create(:command) + @command2 = FactoryGirl.create(:command, :position => nil, :command_string => 'quote"test') + end + + it 'returns the command string' do + post :post_data, {:key => '0S5G2O7FAB5K0J6Z', :field1 => '70', :talkback_key => @talkback.api_key} + response.body.should eq("MyString") + end + it 'returns JSON' do + post :post_data, {:key => '0S5G2O7FAB5K0J6Z', :field1 => '70', :talkback_key => @talkback.api_key, :format => 'json'} + JSON.parse(response.body)['command_string'].should eq("MyString") + JSON.parse(response.body)['position'].should eq(nil) + JSON.parse(response.body)['executed_at'].should_not eq(nil) + end + it 'returns XML' do + post :post_data, {:key => '0S5G2O7FAB5K0J6Z', :field1 => '70', :talkback_key => @talkback.api_key, :format => 'xml'} + Nokogiri::XML(response.body).css('command-string').text.should eq("MyString") + Nokogiri::XML(response.body).css('position').text.should eq('') + Nokogiri::XML(response.body).css('executed-at').text.should_not eq('') + end + end + end + + end + +end + diff --git a/spec/controllers/charts_controller_spec.rb b/spec/controllers/charts_controller_spec.rb index 0addc59..bc328be 100644 --- a/spec/controllers/charts_controller_spec.rb +++ b/spec/controllers/charts_controller_spec.rb @@ -1,5 +1,24 @@ require 'spec_helper' describe ChartsController do + before :each do + @user = FactoryGirl.create(:user) + + controller.stub(:current_user).and_return(@user) + controller.stub(:current_user_session).and_return(true) + @channel = FactoryGirl.create(:channel, :user => @user) + + + + end + + describe "responding to a GET index" do + render_views + it "has a 'select' selector for 'dynamic'" do + get :index, :channel_id => @channel.id + response.should be_successful + response.should have_selector("select#dynamic_0") + end + end end diff --git a/spec/controllers/comments_controller_spec.rb b/spec/controllers/comments_controller_spec.rb new file mode 100644 index 0000000..562bf1a --- /dev/null +++ b/spec/controllers/comments_controller_spec.rb @@ -0,0 +1,5 @@ +require 'spec_helper' + +describe CommentsController do + +end diff --git a/spec/controllers/feed_controller_spec.rb b/spec/controllers/feed_controller_spec.rb index 7d40b1a..5aa9b4f 100644 --- a/spec/controllers/feed_controller_spec.rb +++ b/spec/controllers/feed_controller_spec.rb @@ -1,5 +1,64 @@ require 'spec_helper' describe FeedController do + before :each do + @user = FactoryGirl.create(:user) + @channel = FactoryGirl.create(:channel) + now = Time.utc(2013,1,1) + @feed1 = FactoryGirl.create(:feed, :field1 => 10, :channel => @channel, :created_at => now, :entry_id => 1) + + @feed = FactoryGirl.create(:feed, :field1 => 10, :channel => @channel, :created_at => now, :entry_id => 2) + @feed = FactoryGirl.create(:feed, :field1 => 9, :channel => @channel, :created_at => now, :entry_id => 3) + @feed = FactoryGirl.create(:feed, :field1 => 7, :channel => @channel, :created_at => now, :entry_id => 4) + @feed = FactoryGirl.create(:feed, :field1 => 6, :channel => @channel, :created_at => now, :entry_id => 5) + @feed = FactoryGirl.create(:feed, :field1 => 5, :channel => @channel, :created_at => now, :entry_id => 6) + @feed = FactoryGirl.create(:feed, :field1 => 4, :channel => @channel, :created_at => now, :entry_id => 7) + @channel.last_entry_id = @feed.entry_id + @channel.save + + @user.channels.push @channel + @tag = FactoryGirl.create(:tag) + @apikey = FactoryGirl.create(:api_key) + controller.stub(:current_user).and_return(@user) + controller.stub(:current_user_session).and_return(true) + + end + + it "should get feeds" do + get :show, {id: @feed1.id, channel_id: @channel.id} + response.should be_successful + response.body.should eq("{\"created_at\":\"2013-01-01T00:00:00+00:00\",\"entry_id\":1}" ) + end + + it "should get last feed" do + get :show, {id: 'last', channel_id: @channel.id} + response.should be_successful + response.body.should eq("{\"created_at\":\"2013-01-01T00:00:00+00:00\",\"entry_id\":7}" ) + end + + it "should get feed last_average" do + get :last_average, {channel_id: @channel.id, average: 10} + response.should be_successful + jsonResponse = JSON.parse(response.body) + + jsonResponse["field1"].should eq("7.285714285714286") + + end + + it "should get last_median" do + get :last_median, {channel_id: @channel.id, median: 10} + response.should be_successful + jsonResponse = JSON.parse(response.body) + jsonResponse["field1"].should eq("7.0") + end + + it "should get last_sum" do + get :last_sum, {channel_id: @channel.id, sum: 10} + response.should be_successful + jsonResponse = JSON.parse(response.body) + jsonResponse["field1"].should eq("51.0") + end + end + diff --git a/spec/controllers/maps_controller_spec.rb b/spec/controllers/maps_controller_spec.rb new file mode 100644 index 0000000..1bcb2bf --- /dev/null +++ b/spec/controllers/maps_controller_spec.rb @@ -0,0 +1,5 @@ +require 'spec_helper' + +describe MapsController do + +end diff --git a/spec/controllers/pipes_controller_spec.rb b/spec/controllers/pipes_controller_spec.rb new file mode 100644 index 0000000..68a0b0c --- /dev/null +++ b/spec/controllers/pipes_controller_spec.rb @@ -0,0 +1,5 @@ +require 'spec_helper' + +describe PipesController do + +end diff --git a/spec/controllers/plugins_controller_spec.rb b/spec/controllers/plugins_controller_spec.rb new file mode 100644 index 0000000..9b4c8b2 --- /dev/null +++ b/spec/controllers/plugins_controller_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' + +describe PluginsController do + before :each do + @user = FactoryGirl.create(:user) + controller.stub(:current_user).and_return(@user) + controller.stub(:current_user_session).and_return(true) + + @plugin = FactoryGirl.create(:plugin, :user => @user) + @channel = FactoryGirl.create(:channel, :user => @user) + end + + describe "GET 'private_plugins' for plugin" do + it "should return plugin windows" do + get 'private_plugins', :channel_id => @channel.id + response.should be_successful + end + end + +end diff --git a/spec/controllers/tags_controller_spec.rb b/spec/controllers/tags_controller_spec.rb new file mode 100644 index 0000000..6067cb7 --- /dev/null +++ b/spec/controllers/tags_controller_spec.rb @@ -0,0 +1,5 @@ +require 'spec_helper' + +describe TagsController do + +end diff --git a/spec/controllers/user_sessions_controller_spec.rb b/spec/controllers/user_sessions_controller_spec.rb new file mode 100644 index 0000000..4f8b046 --- /dev/null +++ b/spec/controllers/user_sessions_controller_spec.rb @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +require 'spec_helper' + +describe UserSessionsController do + before :each do + @user = FactoryGirl.create(:user) + activate_authlogic + @user_session = UserSession.create(@user) + controller.stub(:current_user).and_return(@user) + controller.stub(:current_user_session).and_return(@user_session) + end + + describe "for logged in user" do + it "should logout the user" do + get 'destroy' + response.should redirect_to(root_path) + end + end +end + +describe UserSessionsController do + before :each do + @user = FactoryGirl.create(:user) + activate_authlogic +# @user_session = UserSession.create(@user) +# controller.stub(:current_user).and_return(@user) +# controller.stub(:current_user_session).and_return(@user_session) + end + it "should allow a new user to login" do + get 'new' + response.should be_success + response.should render_template('new') + end + + it "should create user session" do + post 'create' , {:userlogin => "", :user_session=>{"remember_me"=>"false", "login"=>@user.login, "password"=>"foobar", "remember_id"=>"1"}, "commit" => "Sign In"} + user_session = UserSession.find + user_session.should_not be_nil + user_session.user.should == @user + response.should redirect_to ('/channels') + + end + +end diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb new file mode 100644 index 0000000..a8b9d25 --- /dev/null +++ b/spec/controllers/users_controller_spec.rb @@ -0,0 +1,80 @@ +require 'spec_helper' + +describe UsersController do + before :each do + @user = FactoryGirl.create(:user) + # controller.stub(:current_user).and_return(@user) + # controller.stub(:current_user_session).and_return(true) + # @channel = FactoryGirl.create(:channel) + end + + # create a valid authlogic session + #def create_valid_session + # activate_authlogic + # UserSession.create(@user, true) #create an authlogic session + #end + + # get the curent_user + #def current_user; @current_user ||= @user; end + + describe "api" do + render_views + + it "should show login in public json info" do + get :profile, :glob => @user.login, :format => 'json' + JSON.parse(response.body)['login'].should eq(@user.login) + end + + it "should not show email in public json info" do + get :profile, :glob => @user.login, :format => 'json' + JSON.parse(response.body)['email'].should eq(nil) + end + + it "should show email in private json info" do + get :profile, :glob => @user.login, :format => 'json', :key => @user.api_key + JSON.parse(response.body)['email'].should eq(@user.email) + end + + end + + #describe "existing account" do + #render_views + + #it "has a current_user" do + # create_valid_session + # current_user.should_not be_false + #end + + #it "generates a new api_key" do + # create_valid_session + # old_key = @user.set_new_api_key! + # post :new_api_key + # response.should be_successful + # assigns[:user].api_key.should != old_key + #end + #end + + describe "new account" do + render_views + + it "assigns new user" do + get :new + response.should be_successful + response.should have_selector("#user_submit") + assigns[:user].should_not be_nil + end + it "should create a new user if user parameters are complete" do + post :create, :user => {"login"=>"xxx", "email"=>"xxx@insomnia-consulting.org", "time_zone"=>"Eastern Time (US & Canada)", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"} + response.code.should == "302" + response.should redirect_to(channels_path) + end + + it "should have a valid api_key" do + post :create, :user => {"login"=>"xxx", "email"=>"xxx@insomnia-consulting.org", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"} + assigns[:user].api_key.length.should eq(16) + end + + end + +end + diff --git a/spec/controllers/windows_controller_spec.rb b/spec/controllers/windows_controller_spec.rb new file mode 100644 index 0000000..cac6ce4 --- /dev/null +++ b/spec/controllers/windows_controller_spec.rb @@ -0,0 +1,136 @@ +require 'spec_helper' + +describe WindowsController do + before :each do + @user = FactoryGirl.create(:user) + + controller.stub(:current_user).and_return(@user) + controller.stub(:current_user_session).and_return(true) + + @channel = FactoryGirl.create(:channel, :user => @user) + + @window = FactoryGirl.create(:window) + @channel.windows << @window + + end + + describe "PUT 'hide' for window" do + it "should update the show_flag on that window" do + put 'hide', :channel_id => @channel.id, :id => @window.id + response.should be_successful + end + end + + describe "POST 'update'" do + it "should allow an update" do + post 'update', :channel_id => @channel.id, :page => "{\"col\":0,\"positions\":[#{@window.id}]}" + response.should be_success + end + end + + describe "POST 'update' with invalid position" do + + it "should fail" do + post 'update', :channel_id => @channel.id, :page => "{\"col\":0,\"positions\":[999]}" + response.should be_success + end + end + describe "When getting " do + + it "should render private_windows json" do + get 'private_windows', :channel_id => @channel.id, :format => :json + response.should be_successful + end + it "should render show_flag = false" do + @channel.windows[0].show_flag = false + @channel.save + get 'hidden_windows', {:channel_id => @channel.id, :visibility_flag => "private" }, :format => :json + + response.status.should == 200 + end + end + +end + +describe WindowsController do + render_views + before :each do + @channel = FactoryGirl.create(:channel) + @window = FactoryGirl.create(:chart_window) + @window_detail = FactoryGirl.create(:chart_window_detail) + @window.window_detail = @window_detail + @channel.windows << @window + end + + describe "POST 'update'" do + it "should fail with no current user" do + post 'update', :channel_id => @channel.id, :page => "{\"col\":0,\"positions\":[" + @window.id.to_s + "]}" + response.status.should == 302 + end + end + + + describe "When getting " do + it "should render json" do + get 'index', :channel_id => @channel.id, :format => :json + response.status.should == 200 + response.body == @channel.windows.to_json + end + + + it "should not render show_flag = false" do + + @channel.windows.each do |window| + window.show_flag = false + end + saved = @channel.save + saved.should be_true + + get 'index', :channel_id => @channel.id, :format => :json + + response.status.should == 200 + + result = JSON.parse(response.body) + result.size.should == 0 + end + + end + + describe "GET 'iframe' for window" do + it "should return html with gsub for iframe" do + get 'iframe', :channel_id => @channel.id, :id => @window.id + response.should be_success + response.body.should == "" + + col 0 + end +end diff --git a/spec/factories/plugin_window_details.rb b/spec/factories/plugin_window_details.rb new file mode 100644 index 0000000..5265e85 --- /dev/null +++ b/spec/factories/plugin_window_details.rb @@ -0,0 +1,19 @@ +# == Schema Information +# +# Table name: plugin_window_details +# +# id :integer not null, primary key +# plugin_id :integer +# plugin_window_id :integer +# created_at :datetime +# updated_at :datetime +# + +# Read about factories at https://github.com/thoughtbot/factory_girl + +FactoryGirl.define do + factory :plugin_window_detail do + plugin_id 1 + plugin_window_id 1 + end +end diff --git a/spec/factories/portlet_window_details.rb b/spec/factories/portlet_window_details.rb new file mode 100644 index 0000000..413602a --- /dev/null +++ b/spec/factories/portlet_window_details.rb @@ -0,0 +1,17 @@ +# == Schema Information +# +# Table name: portlet_window_details +# +# id :integer not null, primary key +# portlet_window_id :integer +# created_at :datetime +# updated_at :datetime +# + +# Read about factories at http://github.com/thoughtbot/factory_girl + +FactoryGirl.define do + factory :portlet_window_detail do + portlet_window_id 1 + end +end diff --git a/spec/factories/tag.rb b/spec/factories/tag.rb new file mode 100644 index 0000000..f1e8c7b --- /dev/null +++ b/spec/factories/tag.rb @@ -0,0 +1,5 @@ +FactoryGirl.define do + factory :tag do + name "Tag name" + end +end diff --git a/spec/factories/user.rb b/spec/factories/user.rb new file mode 100644 index 0000000..0f61e19 --- /dev/null +++ b/spec/factories/user.rb @@ -0,0 +1,13 @@ +FactoryGirl.define do + factory :user do + sequence(:login) {|n| "name#{n}" } + sequence(:email) {|n| "email#{n}@example.com" } + password "foobar" + password_confirmation {|u| u.password} + bio "" + website "" + time_zone "London" + api_key 'ED1HVHNEH2BZD0AB' + end +end + diff --git a/spec/factories/user_sessions.rb b/spec/factories/user_sessions.rb new file mode 100644 index 0000000..d2bf458 --- /dev/null +++ b/spec/factories/user_sessions.rb @@ -0,0 +1,4 @@ +FactoryGirl.define do + factory :user_session do + end +end diff --git a/spec/factories/windows.rb b/spec/factories/windows.rb new file mode 100644 index 0000000..e017238 --- /dev/null +++ b/spec/factories/windows.rb @@ -0,0 +1,29 @@ +# == Schema Information +# +# Table name: windows +# +# id :integer not null, primary key +# channel_id :integer +# position :integer +# created_at :datetime +# updated_at :datetime +# html :text +# col :integer +# title :string(255) +# wtype :string(255) +# name :string(255) +# type :string(255) +# private_flag :boolean default(FALSE) +# show_flag :boolean default(TRUE) +# + +# Read about factories at http://github.com/thoughtbot/factory_girl + +FactoryGirl.define do + factory :window do + channel_id 1 + position 1 + html "" + col 0 + end +end diff --git a/spec/helpers/feed_helper_spec.rb b/spec/helpers/feed_helper_spec.rb index 3218620..12b5990 100644 --- a/spec/helpers/feed_helper_spec.rb +++ b/spec/helpers/feed_helper_spec.rb @@ -1,15 +1,106 @@ require 'spec_helper' -# Specs in this file have access to a helper object that includes -# the FeedHelper. For example: -# -# describe FeedHelper do -# describe "string concat" do -# it "concats two strings with spaces" do -# helper.concat_strings("this","that").should == "this that" -# end -# end -# end describe FeedHelper do - pending "add some examples to (or delete) #{__FILE__}" + describe "feed_select_data" do + before :each do + @channel = FactoryGirl.create(:channel) + end + it "extracts selection criteria from the request parameters with no time params" do + #params = {:average => 10} + helper.stub(:params).and_return(params) + only = Feed.select_options(@channel, params) + only.should include(:created_at, :entry_id) + end + it "extracts selection criteria from the request parameters " do + params = {:average => 10} + helper.stub(:params).and_return(params) + only = Feed.select_options(@channel, params) + only.should include(:created_at) + end + end + describe "feeds_into_averages" do + before :each do + userAttr = FactoryGirl.attributes_for(:user) + @user = User.create!(userAttr) + + @channel = FactoryGirl.create(:channel, :user => @user) + now = Time.utc(2013,1,1) + feed1 = FactoryGirl.create(:feed, :channel => @channel, :created_at => now) + feed2 = FactoryGirl.create(:feed, :channel => @channel, :created_at => now - 5.minutes) + feed3 = FactoryGirl.create(:feed, :channel => @channel, :created_at => now - 8.minutes) + end + + it "averages feed values based on a timeslice" do + feeds = Feed.find(:all, :order => :created_at) + params = {:average => 10} + helper.stub(:params).and_return(params) + + timeslices = helper.feeds_into_averages(feeds, params) + timeslices.size.should eq(2) + end + end + describe "feeds_into_median" do + before :each do + userAttr = FactoryGirl.attributes_for(:user) + @user = User.create!(userAttr) + + @channel = FactoryGirl.create(:channel, :user => @user) + now = Time.utc(2013,1,1) + feed1 = FactoryGirl.create(:feed, :channel => @channel, :created_at => now) + feed2 = FactoryGirl.create(:feed, :channel => @channel, :created_at => now - 5.minutes) + feed3 = FactoryGirl.create(:feed, :channel => @channel, :created_at => now - 8.minutes) + end + + it "median feed values based on a timeslice" do + feeds = Feed.find(:all, :order => :created_at) + params = {:median => 10} + helper.stub(:params).and_return(params) + + timeslices = helper.feeds_into_medians(feeds, params) + timeslices.size.should eq(2) + end + end + describe "feeds_into_sums" do + before :each do + userAttr = FactoryGirl.attributes_for(:user) + @user = User.create!(userAttr) + + @channel = FactoryGirl.create(:channel, :user => @user) + now = Time.utc(2013,1,1) + feed1 = FactoryGirl.create(:feed, :channel => @channel, :created_at => now) + feed2 = FactoryGirl.create(:feed, :channel => @channel, :created_at => now - 5.minutes) + feed3 = FactoryGirl.create(:feed, :channel => @channel, :created_at => now - 8.minutes) + end + + it "sum feed values based on a timeslice" do + feeds = Feed.find(:all, :order => :created_at) + params = {:sum => 10} + helper.stub(:params).and_return(params) + + timeslices = helper.feeds_into_sums(feeds, params) + timeslices.size.should eq(2) + end + end + describe "feeds_into_timescales" do + before :each do + userAttr = FactoryGirl.attributes_for(:user) + @user = User.create!(userAttr) + + @channel = FactoryGirl.create(:channel, :user => @user) + now = Time.utc(2013,1,1) + feed1 = FactoryGirl.create(:feed, :channel => @channel, :created_at => now) + feed2 = FactoryGirl.create(:feed, :channel => @channel, :created_at => now - 5.minutes) + feed3 = FactoryGirl.create(:feed, :channel => @channel, :created_at => now - 8.minutes) + end + + it "timescale feed values based on a timeslice" do + feeds = Feed.find(:all, :order => :created_at) + params = {:timescale => 10} + helper.stub(:params).and_return(params) + + timeslices = helper.feeds_into_timescales(feeds, params) + timeslices.size.should eq(2) + end + end end + diff --git a/spec/models/api_key_spec.rb b/spec/models/api_key_spec.rb index b7e45d3..d15c022 100644 --- a/spec/models/api_key_spec.rb +++ b/spec/models/api_key_spec.rb @@ -1,24 +1,23 @@ -require 'spec_helper' - -describe ApiKey do - pending "add some examples to (or delete) #{__FILE__}" -end - - - - - # == Schema Information # # Table name: api_keys # -# id :integer(4) not null, primary key +# id :integer not null, primary key # api_key :string(16) -# channel_id :integer(4) -# user_id :integer(4) -# write_flag :boolean(1) default(FALSE) +# channel_id :integer +# user_id :integer +# write_flag :boolean default(FALSE) # created_at :datetime # updated_at :datetime # note :string(255) # +require 'spec_helper' + +describe ApiKey do + +end + + + + diff --git a/spec/models/channel_spec.rb b/spec/models/channel_spec.rb new file mode 100644 index 0000000..a8a1507 --- /dev/null +++ b/spec/models/channel_spec.rb @@ -0,0 +1,127 @@ +# encoding: UTF-8 +# == Schema Information +# +# Table name: channels +# +# id :integer not null, primary key +# user_id :integer +# name :string(255) +# description :string(255) +# latitude :decimal(15, 10) +# longitude :decimal(15, 10) +# field1 :string(255) +# field2 :string(255) +# field3 :string(255) +# field4 :string(255) +# field5 :string(255) +# field6 :string(255) +# field7 :string(255) +# field8 :string(255) +# scale1 :integer +# scale2 :integer +# scale3 :integer +# scale4 :integer +# scale5 :integer +# scale6 :integer +# scale7 :integer +# scale8 :integer +# created_at :datetime +# updated_at :datetime +# elevation :string(255) +# last_entry_id :integer +# public_flag :boolean default(FALSE) +# options1 :string(255) +# options2 :string(255) +# options3 :string(255) +# options4 :string(255) +# options5 :string(255) +# options6 :string(255) +# options7 :string(255) +# options8 :string(255) +# social :boolean default(FALSE) +# slug :string(255) +# status :string(255) +# url :string(255) +# video_id :string(255) +# video_type :string(255) +# clearing :boolean default(FALSE), not null +# ranking :integer +# + +require 'spec_helper' + +describe Channel do + it "should be valid" do + channel = Channel.new + channel.should be_valid + end + + it "should accept utf8" do + channel = Channel.create(:name => "ǎ") + channel.reload + channel.name.should == "ǎ" + end + + it "should have no plugins when created" do + channel = Channel.create + channel.set_windows + channel.save + channel.name.should == "Channel #{channel.id}" + channel.windows.size.should == 2 + end + + it "should have video iframe after updated" do + channel = Channel.create! + video_id = "xxxxxx" + channel.assign_attributes({:video_id => video_id, :video_type => "youtube"}) + channel.set_windows + channel.save + window = channel.windows.where({:wtype => :video }) + window[0].html.should == "" + end + + it "should have private windows" do + channel = Channel.create! + channel.assign_attributes({:field1 => "Test"}) + channel.set_windows + channel.save + showFlag = true + channel.private_windows(showFlag).count.should == 2 #2 private windows - 1 field and 1 status + end + + # this is necessary so that the existing API is not broken + # https://thingspeak.com/channels/9/feed.json?results=10 should have 'channel' as the first key + it "should include root in json by default" do + channel = Channel.create + channel.as_json.keys.include?('channel').should be_true + end + + it "should not include root using public_options" do + channel = Channel.create + channel.as_json(Channel.public_options).keys.include?('channel').should be_false + end + + describe 'testing scopes' do + before :each do + @public_channel = FactoryGirl.create(:channel, :public_flag => true, :last_entry_id => 10) + @private_channel = FactoryGirl.create(:channel, :public_flag => false, :last_entry_id => 10) + end + it 'should show public channels' do + channels = Channel.public_viewable + channels.count.should == 1 + end + it 'should show active channels' do + channels = Channel.active + channels.count.should == 2 + end + it 'should show selected channels' do + channels = Channel.by_array([@public_channel.id, @private_channel.id]) + channels.count.should == 2 + end + it 'should show tagged channels' do + @public_channel.save_tags('sensor') + channels = Channel.with_tag('sensor') + channels.count.should == 1 + end + end +end diff --git a/spec/models/comment_spec.rb b/spec/models/comment_spec.rb new file mode 100644 index 0000000..f6ec946 --- /dev/null +++ b/spec/models/comment_spec.rb @@ -0,0 +1,21 @@ +# == Schema Information +# +# Table name: comments +# +# id :integer not null, primary key +# parent_id :integer +# body :text +# flags :integer +# user_id :integer +# ip_address :string(255) +# created_at :datetime +# updated_at :datetime +# channel_id :integer +# + +require 'spec_helper' + +describe Comment do + +end + diff --git a/spec/models/failedlogin_spec.rb b/spec/models/failedlogin_spec.rb new file mode 100644 index 0000000..bf9dc38 --- /dev/null +++ b/spec/models/failedlogin_spec.rb @@ -0,0 +1,17 @@ +# == Schema Information +# +# Table name: failedlogins +# +# id :integer not null, primary key +# login :string(255) +# password :string(255) +# ip_address :string(255) +# created_at :datetime +# updated_at :datetime +# + +require 'spec_helper' + +describe Failedlogin do + +end diff --git a/spec/models/header_spec.rb b/spec/models/header_spec.rb new file mode 100644 index 0000000..2e8d103 --- /dev/null +++ b/spec/models/header_spec.rb @@ -0,0 +1,18 @@ +# == Schema Information +# +# Table name: headers +# +# id :integer not null, primary key +# name :string(255) +# value :string(255) +# created_at :datetime +# updated_at :datetime +# thinghttp_id :integer +# + +require 'spec_helper' + +describe Header do + +end + diff --git a/spec/models/pipe_spec.rb b/spec/models/pipe_spec.rb new file mode 100644 index 0000000..3e7683b --- /dev/null +++ b/spec/models/pipe_spec.rb @@ -0,0 +1,20 @@ +# == Schema Information +# +# Table name: pipes +# +# id :integer not null, primary key +# name :string(255) not null +# url :string(255) not null +# slug :string(255) not null +# created_at :datetime +# updated_at :datetime +# parse :string(255) +# cache :integer +# + +require 'spec_helper' + +describe Pipe do + +end + diff --git a/spec/models/plugin_spec.rb b/spec/models/plugin_spec.rb new file mode 100644 index 0000000..f447a7e --- /dev/null +++ b/spec/models/plugin_spec.rb @@ -0,0 +1,134 @@ +# == Schema Information +# +# Table name: plugins +# +# id :integer not null, primary key +# name :string(255) +# user_id :integer +# html :text +# css :text +# js :text +# created_at :datetime +# updated_at :datetime +# private_flag :boolean default(TRUE) +# + +require 'spec_helper' + +describe Plugin do + + before :each do + @user = FactoryGirl.create(:user) + @channel = FactoryGirl.create(:channel, :user => @user) + @window = FactoryGirl.create(:plugin_window, :channel => @channel) + + end + it "should be valid" do + plugin = Plugin.new + plugin.should be_valid + end + + it "should confirm has_[public\private]_windows" do + plugin = Plugin.new + + window = PluginWindow.new + window.private_flag = true + window.channel_id = 1 + plugin.windows << window + + plugin.has_private_windows(1).should be_true + plugin.has_public_windows(1).should be_false + end + + it "new, public plugin should get 2 plugin windows" do + plugin = Plugin.new + plugin.private_flag = false + plugin.public?.should be_true + #Private plugins have one window.. + #Public plugins have a private window and a public window + + plugin.make_windows @channel.id, "localhost" + plugin.windows.size.should eq(2) + + end + + it "new, private window should not be showing" do + plugin = Plugin.new + plugin.private_flag = true + plugin.public?.should be_false + #Private plugins have one window.. + + plugin.make_windows @channel.id, "localhost" + plugin.windows.size.should eq(1) + window = plugin.windows[0] + window.show_flag.should be_false + + end + + it "should destroy public windows when changing plugin from public to private" do + plugin = Plugin.new + plugin.private_flag = true + plugin.public?.should be_false + #Private plugins have one window.. + plugin.make_windows @channel.id, "localhost" + plugin.windows.size.should eq(1) + + plugin.private_flag = false + plugin.save + + plugin.make_windows @channel.id, "localhost" + plugin.windows.size.should eq(2) + + plugin.private_flag = true + plugin.save + plugin.make_windows @channel.id, "localhost" + plugin.windows.size.should eq(1) + + + end + + it "should allow only private_windows to be retrieved" do + plugin = Plugin.new + plugin.private_flag = false + plugin.public?.should be_true + #Private window has private_dashboard_visibility only + plugin.make_windows @channel.id, "localhost" + plugin.windows.size.should eq(2) + plugin.private_dashboard_windows(@channel.id).size.should eq(1) + end + it "should allow only public_windows to be retrieved" do + plugin = Plugin.new + plugin.private_flag = false + plugin.public?.should be_true + #Private window has private_dashboard_visibility only + plugin.make_windows @channel.id, "localhost" + plugin.windows.size.should eq(2) + plugin.public_dashboard_windows(@channel.id).size.should eq(1) + end + + it "should cascade delete to Window" do + plugin = Plugin.new + + plugin.make_windows @channel.id, "localhost" + + window_id = plugin.windows[0].id + + plugin.destroy + + windows = Window.find_all_by_id(window_id) + + windows.size.should eq(0) + + end + + it "should have windows associated with separate channels" do + channel2 = FactoryGirl.create(:channel, :user => @user) + plugin = Plugin.new + plugin.make_windows @channel.id, "localhost" + plugin.make_windows channel2.id, "localhost" + plugin.windows.size.should eq(2) + plugin.private_dashboard_windows(@channel.id).size.should eq(1) + plugin.private_dashboard_windows(channel2.id).size.should eq(1) + + end +end diff --git a/spec/models/plugin_window_detail_spec.rb b/spec/models/plugin_window_detail_spec.rb new file mode 100644 index 0000000..e61ce35 --- /dev/null +++ b/spec/models/plugin_window_detail_spec.rb @@ -0,0 +1,54 @@ +# == Schema Information +# +# Table name: plugin_window_details +# +# id :integer not null, primary key +# plugin_id :integer +# plugin_window_id :integer +# created_at :datetime +# updated_at :datetime +# + +require 'spec_helper' + +describe PluginWindowDetail do + before :each do + @channel = FactoryGirl.create(:channel) + @plugin = FactoryGirl.create(:plugin) + end + + it "should be valid" do + winDetail = PluginWindowDetail.new + winDetail.should be_valid + end + it "should allow windows plugin association" do + window = Window.new_from @plugin, @channel.id, :private, "localhost" + @plugin.windows << window + @plugin.save + window.should be_valid + + window.window_detail.should_not be_nil + end +end + +describe PluginWindowDetail do + before :each do + @user = FactoryGirl.create(:user) + @channel = FactoryGirl.create(:channel, :user => @user) + @plugin = FactoryGirl.create(:plugin, :user => @user) + end + it "should differentiate between public plugin_window and private plugin_window" do + + window = Window.new_from @plugin, @channel.id, true, "localhost" + @plugin.windows << window + @plugin.save + plugin = PluginWindowDetail.find_all_by_plugin_id(@plugin.id) + plugin.length.should == 1 + + window = Window.new_from @plugin, @channel.id, false, "localhost" + @plugin.windows << window + @plugin.save + plugin = PluginWindowDetail.find_all_by_plugin_id(@plugin.id) + plugin.length.should == 2 + end +end diff --git a/spec/models/tag_spec.rb b/spec/models/tag_spec.rb new file mode 100644 index 0000000..436629f --- /dev/null +++ b/spec/models/tag_spec.rb @@ -0,0 +1,15 @@ +# == Schema Information +# +# Table name: tags +# +# id :integer not null, primary key +# name :string(255) +# created_at :datetime +# updated_at :datetime +# + +require 'spec_helper' + +describe Tag do + +end diff --git a/spec/models/tagging_spec.rb b/spec/models/tagging_spec.rb new file mode 100644 index 0000000..dcf7aa6 --- /dev/null +++ b/spec/models/tagging_spec.rb @@ -0,0 +1,16 @@ +# == Schema Information +# +# Table name: taggings +# +# id :integer not null, primary key +# tag_id :integer +# channel_id :integer +# created_at :datetime +# updated_at :datetime +# + +require 'spec_helper' + +describe Tagging do + +end diff --git a/spec/models/twitter_account_spec.rb b/spec/models/twitter_account_spec.rb new file mode 100644 index 0000000..a433510 --- /dev/null +++ b/spec/models/twitter_account_spec.rb @@ -0,0 +1,22 @@ +# == Schema Information +# +# Table name: twitter_accounts +# +# id :integer not null, primary key +# screen_name :string(255) +# user_id :integer +# twitter_id :integer +# token :string(255) +# secret :string(255) +# created_at :datetime +# updated_at :datetime +# api_key :string(17) not null +# + +require 'spec_helper' + +describe TwitterAccount do + +end + + diff --git a/spec/models/watching_spec.rb b/spec/models/watching_spec.rb new file mode 100644 index 0000000..1c2d89b --- /dev/null +++ b/spec/models/watching_spec.rb @@ -0,0 +1,16 @@ +# == Schema Information +# +# Table name: watchings +# +# id :integer not null, primary key +# user_id :integer +# channel_id :integer +# created_at :datetime +# updated_at :datetime +# + +require 'spec_helper' + +describe Watching do + +end diff --git a/spec/models/window_spec.rb b/spec/models/window_spec.rb new file mode 100644 index 0000000..07557c0 --- /dev/null +++ b/spec/models/window_spec.rb @@ -0,0 +1,29 @@ +# == Schema Information +# +# Table name: windows +# +# id :integer not null, primary key +# channel_id :integer +# position :integer +# created_at :datetime +# updated_at :datetime +# html :text +# col :integer +# title :string(255) +# wtype :string(255) +# name :string(255) +# type :string(255) +# private_flag :boolean default(FALSE) +# show_flag :boolean default(TRUE) +# + +require 'spec_helper' + +describe Window do + it "should be valid" do + window = Window.new + window.should be_valid + end +end + + diff --git a/spec/routing/routing_spec.rb b/spec/routing/routing_spec.rb new file mode 100644 index 0000000..c742dd8 --- /dev/null +++ b/spec/routing/routing_spec.rb @@ -0,0 +1,12 @@ +require "spec_helper" + +describe "routes for Widgets" do + it "routes / to the pages controller" do + { :get => "/" }.should route_to(:controller => "pages", :action => "home") + end + it "routes /channels/:id to the channels controller" do + { :get => "/channels/1" }.should route_to(:controller => "channels", :action => "show", :id => "1") + end +end + + diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..16ca63b --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,61 @@ +# This file is copied to spec/ when you run 'rails generate rspec:install' +ENV["RAILS_ENV"] ||= 'test' +require File.expand_path("../../config/environment", __FILE__) +require 'rspec/rails' +require 'authlogic/test_case' + +include Authlogic::TestCase + +# Requires supporting ruby files with custom matchers and macros, etc, +# in spec/support/ and its subdirectories. +Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} + +RSpec.configure do |config| + # == Mock Framework + # + # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: + # + # config.mock_with :mocha + # config.mock_with :flexmock + # config.mock_with :rr + config.mock_with :rspec + + # Use color in STDOUT + config.color_enabled = true + + # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures + config.fixture_path = "#{::Rails.root}/spec/fixtures" + + # If you're not using ActiveRecord, or you'd prefer not to run each of your + # examples within a transaction, remove the following line or assign false + # instead of true. + config.use_transactional_fixtures = false + config.before(:suite) do + DatabaseCleaner.strategy = :truncation + end + + config.before(:each) do + DatabaseCleaner.start + end + + config.after(:each) do + DatabaseCleaner.clean + end +end + +def ppp(obj) + puts ERB::Util.html_escape(obj.pretty_inspect).gsub(" ", ' '*2).gsub("\t", ' '*4).gsub("\n", "
      \n") +end + +def without_timestamping_of(*klasses) + if block_given? + klasses.delete_if { |klass| !klass.record_timestamps } + klasses.each { |klass| klass.record_timestamps = false } + begin + yield + ensure + klasses.each { |klass| klass.record_timestamps = true } + end + end + end + diff --git a/spec/support/matchers/simple_matcher.rb b/spec/support/matchers/simple_matcher.rb new file mode 100644 index 0000000..6771ae2 --- /dev/null +++ b/spec/support/matchers/simple_matcher.rb @@ -0,0 +1,21 @@ +RSpec::Matchers.define :be_even do + match do |given| + given % 2 == 0 + end + + +end + +RSpec::Matchers.define :have_ids_of do |objects| + match do |given| + (given.map &:id).sort.should == (objects.map &:id).sort + end +end + +# def should_have_ids_of(objcts) +# simple_matcher("should have id of"){|given | (given.map &:id).sort.should == (objects.map &:id).sort} +# end +# +# def be_even +# simple_matcher("an even number") { |given| given % 2 == 0 } +# end diff --git a/test/fixtures/daily_feeds.yml b/test/fixtures/daily_feeds.yml new file mode 100644 index 0000000..f13a384 --- /dev/null +++ b/test/fixtures/daily_feeds.yml @@ -0,0 +1,25 @@ +# == Schema Information +# +# Table name: daily_feeds +# +# id :integer not null, primary key +# channel_id :integer +# date :date +# calculation :string(20) +# result :string(255) +# field :integer +# + +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html + +one: + channel_id: 1 + date: 2014-01-21 + calculation: MyString + result: MyString + +two: + channel_id: 1 + date: 2014-01-21 + calculation: MyString + result: MyString diff --git a/test/unit/daily_feed_test.rb b/test/unit/daily_feed_test.rb new file mode 100644 index 0000000..a1ae49f --- /dev/null +++ b/test/unit/daily_feed_test.rb @@ -0,0 +1,19 @@ +# == Schema Information +# +# Table name: daily_feeds +# +# id :integer not null, primary key +# channel_id :integer +# date :date +# calculation :string(20) +# result :string(255) +# field :integer +# + +require 'test_helper' + +class DailyFeedTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end