##// END OF EJS Templates
Add edit/command mode indicator.
Brian E. Granger -
Show More
@@ -1,2301 +1,2303
1 //----------------------------------------------------------------------------
1 //----------------------------------------------------------------------------
2 // Copyright (C) 2011 The IPython Development Team
2 // Copyright (C) 2011 The IPython Development Team
3 //
3 //
4 // Distributed under the terms of the BSD License. The full license is in
4 // Distributed under the terms of the BSD License. The full license is in
5 // the file COPYING, distributed as part of this software.
5 // the file COPYING, distributed as part of this software.
6 //----------------------------------------------------------------------------
6 //----------------------------------------------------------------------------
7
7
8 //============================================================================
8 //============================================================================
9 // Notebook
9 // Notebook
10 //============================================================================
10 //============================================================================
11
11
12 var IPython = (function (IPython) {
12 var IPython = (function (IPython) {
13 "use strict";
13 "use strict";
14
14
15 var utils = IPython.utils;
15 var utils = IPython.utils;
16
16
17 /**
17 /**
18 * A notebook contains and manages cells.
18 * A notebook contains and manages cells.
19 *
19 *
20 * @class Notebook
20 * @class Notebook
21 * @constructor
21 * @constructor
22 * @param {String} selector A jQuery selector for the notebook's DOM element
22 * @param {String} selector A jQuery selector for the notebook's DOM element
23 * @param {Object} [options] A config object
23 * @param {Object} [options] A config object
24 */
24 */
25 var Notebook = function (selector, options) {
25 var Notebook = function (selector, options) {
26 var options = options || {};
26 var options = options || {};
27 this._baseProjectUrl = options.baseProjectUrl;
27 this._baseProjectUrl = options.baseProjectUrl;
28 this.notebook_path = options.notebookPath;
28 this.notebook_path = options.notebookPath;
29 this.notebook_name = options.notebookName;
29 this.notebook_name = options.notebookName;
30 this.element = $(selector);
30 this.element = $(selector);
31 this.element.scroll();
31 this.element.scroll();
32 this.element.data("notebook", this);
32 this.element.data("notebook", this);
33 this.next_prompt_number = 1;
33 this.next_prompt_number = 1;
34 this.session = null;
34 this.session = null;
35 this.kernel = null;
35 this.kernel = null;
36 this.clipboard = null;
36 this.clipboard = null;
37 this.undelete_backup = null;
37 this.undelete_backup = null;
38 this.undelete_index = null;
38 this.undelete_index = null;
39 this.undelete_below = false;
39 this.undelete_below = false;
40 this.paste_enabled = false;
40 this.paste_enabled = false;
41 // It is important to start out in command mode to match the intial mode
41 // It is important to start out in command mode to match the intial mode
42 // of the KeyboardManager.
42 // of the KeyboardManager.
43 this.mode = 'command';
43 this.mode = 'command';
44 this.set_dirty(false);
44 this.set_dirty(false);
45 this.metadata = {};
45 this.metadata = {};
46 this._checkpoint_after_save = false;
46 this._checkpoint_after_save = false;
47 this.last_checkpoint = null;
47 this.last_checkpoint = null;
48 this.checkpoints = [];
48 this.checkpoints = [];
49 this.autosave_interval = 0;
49 this.autosave_interval = 0;
50 this.autosave_timer = null;
50 this.autosave_timer = null;
51 // autosave *at most* every two minutes
51 // autosave *at most* every two minutes
52 this.minimum_autosave_interval = 120000;
52 this.minimum_autosave_interval = 120000;
53 // single worksheet for now
53 // single worksheet for now
54 this.worksheet_metadata = {};
54 this.worksheet_metadata = {};
55 this.notebook_name_blacklist_re = /[\/\\:]/;
55 this.notebook_name_blacklist_re = /[\/\\:]/;
56 this.nbformat = 3 // Increment this when changing the nbformat
56 this.nbformat = 3 // Increment this when changing the nbformat
57 this.nbformat_minor = 0 // Increment this when changing the nbformat
57 this.nbformat_minor = 0 // Increment this when changing the nbformat
58 this.style();
58 this.style();
59 this.create_elements();
59 this.create_elements();
60 this.bind_events();
60 this.bind_events();
61 };
61 };
62
62
63 /**
63 /**
64 * Tweak the notebook's CSS style.
64 * Tweak the notebook's CSS style.
65 *
65 *
66 * @method style
66 * @method style
67 */
67 */
68 Notebook.prototype.style = function () {
68 Notebook.prototype.style = function () {
69 $('div#notebook').addClass('border-box-sizing');
69 $('div#notebook').addClass('border-box-sizing');
70 };
70 };
71
71
72 /**
72 /**
73 * Get the root URL of the notebook server.
73 * Get the root URL of the notebook server.
74 *
74 *
75 * @method baseProjectUrl
75 * @method baseProjectUrl
76 * @return {String} The base project URL
76 * @return {String} The base project URL
77 */
77 */
78 Notebook.prototype.baseProjectUrl = function() {
78 Notebook.prototype.baseProjectUrl = function() {
79 return this._baseProjectUrl || $('body').data('baseProjectUrl');
79 return this._baseProjectUrl || $('body').data('baseProjectUrl');
80 };
80 };
81
81
82 Notebook.prototype.notebookName = function() {
82 Notebook.prototype.notebookName = function() {
83 return $('body').data('notebookName');
83 return $('body').data('notebookName');
84 };
84 };
85
85
86 Notebook.prototype.notebookPath = function() {
86 Notebook.prototype.notebookPath = function() {
87 return $('body').data('notebookPath');
87 return $('body').data('notebookPath');
88 };
88 };
89
89
90 /**
90 /**
91 * Create an HTML and CSS representation of the notebook.
91 * Create an HTML and CSS representation of the notebook.
92 *
92 *
93 * @method create_elements
93 * @method create_elements
94 */
94 */
95 Notebook.prototype.create_elements = function () {
95 Notebook.prototype.create_elements = function () {
96 var that = this;
96 var that = this;
97 this.element.attr('tabindex','-1');
97 this.element.attr('tabindex','-1');
98 this.container = $("<div/>").addClass("container").attr("id", "notebook-container");
98 this.container = $("<div/>").addClass("container").attr("id", "notebook-container");
99 // We add this end_space div to the end of the notebook div to:
99 // We add this end_space div to the end of the notebook div to:
100 // i) provide a margin between the last cell and the end of the notebook
100 // i) provide a margin between the last cell and the end of the notebook
101 // ii) to prevent the div from scrolling up when the last cell is being
101 // ii) to prevent the div from scrolling up when the last cell is being
102 // edited, but is too low on the page, which browsers will do automatically.
102 // edited, but is too low on the page, which browsers will do automatically.
103 var end_space = $('<div/>').addClass('end_space');
103 var end_space = $('<div/>').addClass('end_space');
104 end_space.dblclick(function (e) {
104 end_space.dblclick(function (e) {
105 var ncells = that.ncells();
105 var ncells = that.ncells();
106 that.insert_cell_below('code',ncells-1);
106 that.insert_cell_below('code',ncells-1);
107 });
107 });
108 this.element.append(this.container);
108 this.element.append(this.container);
109 this.container.append(end_space);
109 this.container.append(end_space);
110 };
110 };
111
111
112 /**
112 /**
113 * Bind JavaScript events: key presses and custom IPython events.
113 * Bind JavaScript events: key presses and custom IPython events.
114 *
114 *
115 * @method bind_events
115 * @method bind_events
116 */
116 */
117 Notebook.prototype.bind_events = function () {
117 Notebook.prototype.bind_events = function () {
118 var that = this;
118 var that = this;
119
119
120 $([IPython.events]).on('set_next_input.Notebook', function (event, data) {
120 $([IPython.events]).on('set_next_input.Notebook', function (event, data) {
121 var index = that.find_cell_index(data.cell);
121 var index = that.find_cell_index(data.cell);
122 var new_cell = that.insert_cell_below('code',index);
122 var new_cell = that.insert_cell_below('code',index);
123 new_cell.set_text(data.text);
123 new_cell.set_text(data.text);
124 that.dirty = true;
124 that.dirty = true;
125 });
125 });
126
126
127 $([IPython.events]).on('set_dirty.Notebook', function (event, data) {
127 $([IPython.events]).on('set_dirty.Notebook', function (event, data) {
128 that.dirty = data.value;
128 that.dirty = data.value;
129 });
129 });
130
130
131 $([IPython.events]).on('select.Cell', function (event, data) {
131 $([IPython.events]).on('select.Cell', function (event, data) {
132 var index = that.find_cell_index(data.cell);
132 var index = that.find_cell_index(data.cell);
133 that.select(index);
133 that.select(index);
134 });
134 });
135
135
136 $([IPython.events]).on('edit_mode.Cell', function (event, data) {
136 $([IPython.events]).on('edit_mode.Cell', function (event, data) {
137 var index = that.find_cell_index(data.cell);
137 var index = that.find_cell_index(data.cell);
138 that.select(index);
138 that.select(index);
139 that.edit_mode();
139 that.edit_mode();
140 });
140 });
141
141
142 $([IPython.events]).on('command_mode.Cell', function (event, data) {
142 $([IPython.events]).on('command_mode.Cell', function (event, data) {
143 that.command_mode();
143 that.command_mode();
144 });
144 });
145
145
146 $([IPython.events]).on('status_autorestarting.Kernel', function () {
146 $([IPython.events]).on('status_autorestarting.Kernel', function () {
147 IPython.dialog.modal({
147 IPython.dialog.modal({
148 title: "Kernel Restarting",
148 title: "Kernel Restarting",
149 body: "The kernel appears to have died. It will restart automatically.",
149 body: "The kernel appears to have died. It will restart automatically.",
150 buttons: {
150 buttons: {
151 OK : {
151 OK : {
152 class : "btn-primary"
152 class : "btn-primary"
153 }
153 }
154 }
154 }
155 });
155 });
156 });
156 });
157
157
158 var collapse_time = function (time) {
158 var collapse_time = function (time) {
159 var app_height = $('#ipython-main-app').height(); // content height
159 var app_height = $('#ipython-main-app').height(); // content height
160 var splitter_height = $('div#pager_splitter').outerHeight(true);
160 var splitter_height = $('div#pager_splitter').outerHeight(true);
161 var new_height = app_height - splitter_height;
161 var new_height = app_height - splitter_height;
162 that.element.animate({height : new_height + 'px'}, time);
162 that.element.animate({height : new_height + 'px'}, time);
163 };
163 };
164
164
165 this.element.bind('collapse_pager', function (event, extrap) {
165 this.element.bind('collapse_pager', function (event, extrap) {
166 var time = (extrap != undefined) ? ((extrap.duration != undefined ) ? extrap.duration : 'fast') : 'fast';
166 var time = (extrap != undefined) ? ((extrap.duration != undefined ) ? extrap.duration : 'fast') : 'fast';
167 collapse_time(time);
167 collapse_time(time);
168 });
168 });
169
169
170 var expand_time = function (time) {
170 var expand_time = function (time) {
171 var app_height = $('#ipython-main-app').height(); // content height
171 var app_height = $('#ipython-main-app').height(); // content height
172 var splitter_height = $('div#pager_splitter').outerHeight(true);
172 var splitter_height = $('div#pager_splitter').outerHeight(true);
173 var pager_height = $('div#pager').outerHeight(true);
173 var pager_height = $('div#pager').outerHeight(true);
174 var new_height = app_height - pager_height - splitter_height;
174 var new_height = app_height - pager_height - splitter_height;
175 that.element.animate({height : new_height + 'px'}, time);
175 that.element.animate({height : new_height + 'px'}, time);
176 };
176 };
177
177
178 this.element.bind('expand_pager', function (event, extrap) {
178 this.element.bind('expand_pager', function (event, extrap) {
179 var time = (extrap != undefined) ? ((extrap.duration != undefined ) ? extrap.duration : 'fast') : 'fast';
179 var time = (extrap != undefined) ? ((extrap.duration != undefined ) ? extrap.duration : 'fast') : 'fast';
180 expand_time(time);
180 expand_time(time);
181 });
181 });
182
182
183 // Firefox 22 broke $(window).on("beforeunload")
183 // Firefox 22 broke $(window).on("beforeunload")
184 // I'm not sure why or how.
184 // I'm not sure why or how.
185 window.onbeforeunload = function (e) {
185 window.onbeforeunload = function (e) {
186 // TODO: Make killing the kernel configurable.
186 // TODO: Make killing the kernel configurable.
187 var kill_kernel = false;
187 var kill_kernel = false;
188 if (kill_kernel) {
188 if (kill_kernel) {
189 that.session.kill_kernel();
189 that.session.kill_kernel();
190 }
190 }
191 // if we are autosaving, trigger an autosave on nav-away.
191 // if we are autosaving, trigger an autosave on nav-away.
192 // still warn, because if we don't the autosave may fail.
192 // still warn, because if we don't the autosave may fail.
193 if (that.dirty) {
193 if (that.dirty) {
194 if ( that.autosave_interval ) {
194 if ( that.autosave_interval ) {
195 // schedule autosave in a timeout
195 // schedule autosave in a timeout
196 // this gives you a chance to forcefully discard changes
196 // this gives you a chance to forcefully discard changes
197 // by reloading the page if you *really* want to.
197 // by reloading the page if you *really* want to.
198 // the timer doesn't start until you *dismiss* the dialog.
198 // the timer doesn't start until you *dismiss* the dialog.
199 setTimeout(function () {
199 setTimeout(function () {
200 if (that.dirty) {
200 if (that.dirty) {
201 that.save_notebook();
201 that.save_notebook();
202 }
202 }
203 }, 1000);
203 }, 1000);
204 return "Autosave in progress, latest changes may be lost.";
204 return "Autosave in progress, latest changes may be lost.";
205 } else {
205 } else {
206 return "Unsaved changes will be lost.";
206 return "Unsaved changes will be lost.";
207 }
207 }
208 };
208 };
209 // Null is the *only* return value that will make the browser not
209 // Null is the *only* return value that will make the browser not
210 // pop up the "don't leave" dialog.
210 // pop up the "don't leave" dialog.
211 return null;
211 return null;
212 };
212 };
213 };
213 };
214
214
215 /**
215 /**
216 * Set the dirty flag, and trigger the set_dirty.Notebook event
216 * Set the dirty flag, and trigger the set_dirty.Notebook event
217 *
217 *
218 * @method set_dirty
218 * @method set_dirty
219 */
219 */
220 Notebook.prototype.set_dirty = function (value) {
220 Notebook.prototype.set_dirty = function (value) {
221 if (value === undefined) {
221 if (value === undefined) {
222 value = true;
222 value = true;
223 }
223 }
224 if (this.dirty == value) {
224 if (this.dirty == value) {
225 return;
225 return;
226 }
226 }
227 $([IPython.events]).trigger('set_dirty.Notebook', {value: value});
227 $([IPython.events]).trigger('set_dirty.Notebook', {value: value});
228 };
228 };
229
229
230 /**
230 /**
231 * Scroll the top of the page to a given cell.
231 * Scroll the top of the page to a given cell.
232 *
232 *
233 * @method scroll_to_cell
233 * @method scroll_to_cell
234 * @param {Number} cell_number An index of the cell to view
234 * @param {Number} cell_number An index of the cell to view
235 * @param {Number} time Animation time in milliseconds
235 * @param {Number} time Animation time in milliseconds
236 * @return {Number} Pixel offset from the top of the container
236 * @return {Number} Pixel offset from the top of the container
237 */
237 */
238 Notebook.prototype.scroll_to_cell = function (cell_number, time) {
238 Notebook.prototype.scroll_to_cell = function (cell_number, time) {
239 var cells = this.get_cells();
239 var cells = this.get_cells();
240 var time = time || 0;
240 var time = time || 0;
241 cell_number = Math.min(cells.length-1,cell_number);
241 cell_number = Math.min(cells.length-1,cell_number);
242 cell_number = Math.max(0 ,cell_number);
242 cell_number = Math.max(0 ,cell_number);
243 var scroll_value = cells[cell_number].element.position().top-cells[0].element.position().top ;
243 var scroll_value = cells[cell_number].element.position().top-cells[0].element.position().top ;
244 this.element.animate({scrollTop:scroll_value}, time);
244 this.element.animate({scrollTop:scroll_value}, time);
245 return scroll_value;
245 return scroll_value;
246 };
246 };
247
247
248 /**
248 /**
249 * Scroll to the bottom of the page.
249 * Scroll to the bottom of the page.
250 *
250 *
251 * @method scroll_to_bottom
251 * @method scroll_to_bottom
252 */
252 */
253 Notebook.prototype.scroll_to_bottom = function () {
253 Notebook.prototype.scroll_to_bottom = function () {
254 this.element.animate({scrollTop:this.element.get(0).scrollHeight}, 0);
254 this.element.animate({scrollTop:this.element.get(0).scrollHeight}, 0);
255 };
255 };
256
256
257 /**
257 /**
258 * Scroll to the top of the page.
258 * Scroll to the top of the page.
259 *
259 *
260 * @method scroll_to_top
260 * @method scroll_to_top
261 */
261 */
262 Notebook.prototype.scroll_to_top = function () {
262 Notebook.prototype.scroll_to_top = function () {
263 this.element.animate({scrollTop:0}, 0);
263 this.element.animate({scrollTop:0}, 0);
264 };
264 };
265
265
266 // Edit Notebook metadata
266 // Edit Notebook metadata
267
267
268 Notebook.prototype.edit_metadata = function () {
268 Notebook.prototype.edit_metadata = function () {
269 var that = this;
269 var that = this;
270 IPython.dialog.edit_metadata(this.metadata, function (md) {
270 IPython.dialog.edit_metadata(this.metadata, function (md) {
271 that.metadata = md;
271 that.metadata = md;
272 }, 'Notebook');
272 }, 'Notebook');
273 };
273 };
274
274
275 // Cell indexing, retrieval, etc.
275 // Cell indexing, retrieval, etc.
276
276
277 /**
277 /**
278 * Get all cell elements in the notebook.
278 * Get all cell elements in the notebook.
279 *
279 *
280 * @method get_cell_elements
280 * @method get_cell_elements
281 * @return {jQuery} A selector of all cell elements
281 * @return {jQuery} A selector of all cell elements
282 */
282 */
283 Notebook.prototype.get_cell_elements = function () {
283 Notebook.prototype.get_cell_elements = function () {
284 return this.container.children("div.cell");
284 return this.container.children("div.cell");
285 };
285 };
286
286
287 /**
287 /**
288 * Get a particular cell element.
288 * Get a particular cell element.
289 *
289 *
290 * @method get_cell_element
290 * @method get_cell_element
291 * @param {Number} index An index of a cell to select
291 * @param {Number} index An index of a cell to select
292 * @return {jQuery} A selector of the given cell.
292 * @return {jQuery} A selector of the given cell.
293 */
293 */
294 Notebook.prototype.get_cell_element = function (index) {
294 Notebook.prototype.get_cell_element = function (index) {
295 var result = null;
295 var result = null;
296 var e = this.get_cell_elements().eq(index);
296 var e = this.get_cell_elements().eq(index);
297 if (e.length !== 0) {
297 if (e.length !== 0) {
298 result = e;
298 result = e;
299 }
299 }
300 return result;
300 return result;
301 };
301 };
302
302
303 /**
303 /**
304 * Try to get a particular cell by msg_id.
304 * Try to get a particular cell by msg_id.
305 *
305 *
306 * @method get_msg_cell
306 * @method get_msg_cell
307 * @param {String} msg_id A message UUID
307 * @param {String} msg_id A message UUID
308 * @return {Cell} Cell or null if no cell was found.
308 * @return {Cell} Cell or null if no cell was found.
309 */
309 */
310 Notebook.prototype.get_msg_cell = function (msg_id) {
310 Notebook.prototype.get_msg_cell = function (msg_id) {
311 return IPython.CodeCell.msg_cells[msg_id] || null;
311 return IPython.CodeCell.msg_cells[msg_id] || null;
312 };
312 };
313
313
314 /**
314 /**
315 * Count the cells in this notebook.
315 * Count the cells in this notebook.
316 *
316 *
317 * @method ncells
317 * @method ncells
318 * @return {Number} The number of cells in this notebook
318 * @return {Number} The number of cells in this notebook
319 */
319 */
320 Notebook.prototype.ncells = function () {
320 Notebook.prototype.ncells = function () {
321 return this.get_cell_elements().length;
321 return this.get_cell_elements().length;
322 };
322 };
323
323
324 /**
324 /**
325 * Get all Cell objects in this notebook.
325 * Get all Cell objects in this notebook.
326 *
326 *
327 * @method get_cells
327 * @method get_cells
328 * @return {Array} This notebook's Cell objects
328 * @return {Array} This notebook's Cell objects
329 */
329 */
330 // TODO: we are often calling cells as cells()[i], which we should optimize
330 // TODO: we are often calling cells as cells()[i], which we should optimize
331 // to cells(i) or a new method.
331 // to cells(i) or a new method.
332 Notebook.prototype.get_cells = function () {
332 Notebook.prototype.get_cells = function () {
333 return this.get_cell_elements().toArray().map(function (e) {
333 return this.get_cell_elements().toArray().map(function (e) {
334 return $(e).data("cell");
334 return $(e).data("cell");
335 });
335 });
336 };
336 };
337
337
338 /**
338 /**
339 * Get a Cell object from this notebook.
339 * Get a Cell object from this notebook.
340 *
340 *
341 * @method get_cell
341 * @method get_cell
342 * @param {Number} index An index of a cell to retrieve
342 * @param {Number} index An index of a cell to retrieve
343 * @return {Cell} A particular cell
343 * @return {Cell} A particular cell
344 */
344 */
345 Notebook.prototype.get_cell = function (index) {
345 Notebook.prototype.get_cell = function (index) {
346 var result = null;
346 var result = null;
347 var ce = this.get_cell_element(index);
347 var ce = this.get_cell_element(index);
348 if (ce !== null) {
348 if (ce !== null) {
349 result = ce.data('cell');
349 result = ce.data('cell');
350 }
350 }
351 return result;
351 return result;
352 }
352 }
353
353
354 /**
354 /**
355 * Get the cell below a given cell.
355 * Get the cell below a given cell.
356 *
356 *
357 * @method get_next_cell
357 * @method get_next_cell
358 * @param {Cell} cell The provided cell
358 * @param {Cell} cell The provided cell
359 * @return {Cell} The next cell
359 * @return {Cell} The next cell
360 */
360 */
361 Notebook.prototype.get_next_cell = function (cell) {
361 Notebook.prototype.get_next_cell = function (cell) {
362 var result = null;
362 var result = null;
363 var index = this.find_cell_index(cell);
363 var index = this.find_cell_index(cell);
364 if (this.is_valid_cell_index(index+1)) {
364 if (this.is_valid_cell_index(index+1)) {
365 result = this.get_cell(index+1);
365 result = this.get_cell(index+1);
366 }
366 }
367 return result;
367 return result;
368 }
368 }
369
369
370 /**
370 /**
371 * Get the cell above a given cell.
371 * Get the cell above a given cell.
372 *
372 *
373 * @method get_prev_cell
373 * @method get_prev_cell
374 * @param {Cell} cell The provided cell
374 * @param {Cell} cell The provided cell
375 * @return {Cell} The previous cell
375 * @return {Cell} The previous cell
376 */
376 */
377 Notebook.prototype.get_prev_cell = function (cell) {
377 Notebook.prototype.get_prev_cell = function (cell) {
378 // TODO: off-by-one
378 // TODO: off-by-one
379 // nb.get_prev_cell(nb.get_cell(1)) is null
379 // nb.get_prev_cell(nb.get_cell(1)) is null
380 var result = null;
380 var result = null;
381 var index = this.find_cell_index(cell);
381 var index = this.find_cell_index(cell);
382 if (index !== null && index > 1) {
382 if (index !== null && index > 1) {
383 result = this.get_cell(index-1);
383 result = this.get_cell(index-1);
384 }
384 }
385 return result;
385 return result;
386 }
386 }
387
387
388 /**
388 /**
389 * Get the numeric index of a given cell.
389 * Get the numeric index of a given cell.
390 *
390 *
391 * @method find_cell_index
391 * @method find_cell_index
392 * @param {Cell} cell The provided cell
392 * @param {Cell} cell The provided cell
393 * @return {Number} The cell's numeric index
393 * @return {Number} The cell's numeric index
394 */
394 */
395 Notebook.prototype.find_cell_index = function (cell) {
395 Notebook.prototype.find_cell_index = function (cell) {
396 var result = null;
396 var result = null;
397 this.get_cell_elements().filter(function (index) {
397 this.get_cell_elements().filter(function (index) {
398 if ($(this).data("cell") === cell) {
398 if ($(this).data("cell") === cell) {
399 result = index;
399 result = index;
400 };
400 };
401 });
401 });
402 return result;
402 return result;
403 };
403 };
404
404
405 /**
405 /**
406 * Get a given index , or the selected index if none is provided.
406 * Get a given index , or the selected index if none is provided.
407 *
407 *
408 * @method index_or_selected
408 * @method index_or_selected
409 * @param {Number} index A cell's index
409 * @param {Number} index A cell's index
410 * @return {Number} The given index, or selected index if none is provided.
410 * @return {Number} The given index, or selected index if none is provided.
411 */
411 */
412 Notebook.prototype.index_or_selected = function (index) {
412 Notebook.prototype.index_or_selected = function (index) {
413 var i;
413 var i;
414 if (index === undefined || index === null) {
414 if (index === undefined || index === null) {
415 i = this.get_selected_index();
415 i = this.get_selected_index();
416 if (i === null) {
416 if (i === null) {
417 i = 0;
417 i = 0;
418 }
418 }
419 } else {
419 } else {
420 i = index;
420 i = index;
421 }
421 }
422 return i;
422 return i;
423 };
423 };
424
424
425 /**
425 /**
426 * Get the currently selected cell.
426 * Get the currently selected cell.
427 * @method get_selected_cell
427 * @method get_selected_cell
428 * @return {Cell} The selected cell
428 * @return {Cell} The selected cell
429 */
429 */
430 Notebook.prototype.get_selected_cell = function () {
430 Notebook.prototype.get_selected_cell = function () {
431 var index = this.get_selected_index();
431 var index = this.get_selected_index();
432 return this.get_cell(index);
432 return this.get_cell(index);
433 };
433 };
434
434
435 /**
435 /**
436 * Check whether a cell index is valid.
436 * Check whether a cell index is valid.
437 *
437 *
438 * @method is_valid_cell_index
438 * @method is_valid_cell_index
439 * @param {Number} index A cell index
439 * @param {Number} index A cell index
440 * @return True if the index is valid, false otherwise
440 * @return True if the index is valid, false otherwise
441 */
441 */
442 Notebook.prototype.is_valid_cell_index = function (index) {
442 Notebook.prototype.is_valid_cell_index = function (index) {
443 if (index !== null && index >= 0 && index < this.ncells()) {
443 if (index !== null && index >= 0 && index < this.ncells()) {
444 return true;
444 return true;
445 } else {
445 } else {
446 return false;
446 return false;
447 };
447 };
448 }
448 }
449
449
450 /**
450 /**
451 * Get the index of the currently selected cell.
451 * Get the index of the currently selected cell.
452
452
453 * @method get_selected_index
453 * @method get_selected_index
454 * @return {Number} The selected cell's numeric index
454 * @return {Number} The selected cell's numeric index
455 */
455 */
456 Notebook.prototype.get_selected_index = function () {
456 Notebook.prototype.get_selected_index = function () {
457 var result = null;
457 var result = null;
458 this.get_cell_elements().filter(function (index) {
458 this.get_cell_elements().filter(function (index) {
459 if ($(this).data("cell").selected === true) {
459 if ($(this).data("cell").selected === true) {
460 result = index;
460 result = index;
461 };
461 };
462 });
462 });
463 return result;
463 return result;
464 };
464 };
465
465
466
466
467 // Cell selection.
467 // Cell selection.
468
468
469 /**
469 /**
470 * Programmatically select a cell.
470 * Programmatically select a cell.
471 *
471 *
472 * @method select
472 * @method select
473 * @param {Number} index A cell's index
473 * @param {Number} index A cell's index
474 * @return {Notebook} This notebook
474 * @return {Notebook} This notebook
475 */
475 */
476 Notebook.prototype.select = function (index) {
476 Notebook.prototype.select = function (index) {
477 if (this.is_valid_cell_index(index)) {
477 if (this.is_valid_cell_index(index)) {
478 var sindex = this.get_selected_index()
478 var sindex = this.get_selected_index()
479 if (sindex !== null && index !== sindex) {
479 if (sindex !== null && index !== sindex) {
480 this.command_mode();
480 this.command_mode();
481 this.get_cell(sindex).unselect();
481 this.get_cell(sindex).unselect();
482 };
482 };
483 var cell = this.get_cell(index);
483 var cell = this.get_cell(index);
484 cell.select();
484 cell.select();
485 if (cell.cell_type === 'heading') {
485 if (cell.cell_type === 'heading') {
486 $([IPython.events]).trigger('selected_cell_type_changed.Notebook',
486 $([IPython.events]).trigger('selected_cell_type_changed.Notebook',
487 {'cell_type':cell.cell_type,level:cell.level}
487 {'cell_type':cell.cell_type,level:cell.level}
488 );
488 );
489 } else {
489 } else {
490 $([IPython.events]).trigger('selected_cell_type_changed.Notebook',
490 $([IPython.events]).trigger('selected_cell_type_changed.Notebook',
491 {'cell_type':cell.cell_type}
491 {'cell_type':cell.cell_type}
492 );
492 );
493 };
493 };
494 };
494 };
495 return this;
495 return this;
496 };
496 };
497
497
498 /**
498 /**
499 * Programmatically select the next cell.
499 * Programmatically select the next cell.
500 *
500 *
501 * @method select_next
501 * @method select_next
502 * @return {Notebook} This notebook
502 * @return {Notebook} This notebook
503 */
503 */
504 Notebook.prototype.select_next = function () {
504 Notebook.prototype.select_next = function () {
505 var index = this.get_selected_index();
505 var index = this.get_selected_index();
506 this.select(index+1);
506 this.select(index+1);
507 return this;
507 return this;
508 };
508 };
509
509
510 /**
510 /**
511 * Programmatically select the previous cell.
511 * Programmatically select the previous cell.
512 *
512 *
513 * @method select_prev
513 * @method select_prev
514 * @return {Notebook} This notebook
514 * @return {Notebook} This notebook
515 */
515 */
516 Notebook.prototype.select_prev = function () {
516 Notebook.prototype.select_prev = function () {
517 var index = this.get_selected_index();
517 var index = this.get_selected_index();
518 this.select(index-1);
518 this.select(index-1);
519 return this;
519 return this;
520 };
520 };
521
521
522
522
523 // Edit/Command mode
523 // Edit/Command mode
524
524
525 Notebook.prototype.get_edit_index = function () {
525 Notebook.prototype.get_edit_index = function () {
526 var result = null;
526 var result = null;
527 this.get_cell_elements().filter(function (index) {
527 this.get_cell_elements().filter(function (index) {
528 if ($(this).data("cell").mode === 'edit') {
528 if ($(this).data("cell").mode === 'edit') {
529 result = index;
529 result = index;
530 };
530 };
531 });
531 });
532 return result;
532 return result;
533 };
533 };
534
534
535 Notebook.prototype.command_mode = function () {
535 Notebook.prototype.command_mode = function () {
536 if (this.mode !== 'command') {
536 if (this.mode !== 'command') {
537 $([IPython.events]).trigger('command_mode.Notebook');
537 var index = this.get_edit_index();
538 var index = this.get_edit_index();
538 var cell = this.get_cell(index);
539 var cell = this.get_cell(index);
539 if (cell) {
540 if (cell) {
540 cell.command_mode();
541 cell.command_mode();
541 };
542 };
542 this.mode = 'command';
543 this.mode = 'command';
543 IPython.keyboard_manager.command_mode();
544 IPython.keyboard_manager.command_mode();
544 };
545 };
545 };
546 };
546
547
547 Notebook.prototype.edit_mode = function () {
548 Notebook.prototype.edit_mode = function () {
548 if (this.mode !== 'edit') {
549 if (this.mode !== 'edit') {
550 $([IPython.events]).trigger('edit_mode.Notebook');
549 var cell = this.get_selected_cell();
551 var cell = this.get_selected_cell();
550 if (cell === null) {return;} // No cell is selected
552 if (cell === null) {return;} // No cell is selected
551 // We need to set the mode to edit to prevent reentering this method
553 // We need to set the mode to edit to prevent reentering this method
552 // when cell.edit_mode() is called below.
554 // when cell.edit_mode() is called below.
553 this.mode = 'edit';
555 this.mode = 'edit';
554 IPython.keyboard_manager.edit_mode();
556 IPython.keyboard_manager.edit_mode();
555 cell.edit_mode();
557 cell.edit_mode();
556 };
558 };
557 };
559 };
558
560
559 Notebook.prototype.focus_cell = function () {
561 Notebook.prototype.focus_cell = function () {
560 var cell = this.get_selected_cell();
562 var cell = this.get_selected_cell();
561 if (cell === null) {return;} // No cell is selected
563 if (cell === null) {return;} // No cell is selected
562 cell.focus_cell();
564 cell.focus_cell();
563 };
565 };
564
566
565 // Cell movement
567 // Cell movement
566
568
567 /**
569 /**
568 * Move given (or selected) cell up and select it.
570 * Move given (or selected) cell up and select it.
569 *
571 *
570 * @method move_cell_up
572 * @method move_cell_up
571 * @param [index] {integer} cell index
573 * @param [index] {integer} cell index
572 * @return {Notebook} This notebook
574 * @return {Notebook} This notebook
573 **/
575 **/
574 Notebook.prototype.move_cell_up = function (index) {
576 Notebook.prototype.move_cell_up = function (index) {
575 var i = this.index_or_selected(index);
577 var i = this.index_or_selected(index);
576 if (this.is_valid_cell_index(i) && i > 0) {
578 if (this.is_valid_cell_index(i) && i > 0) {
577 var pivot = this.get_cell_element(i-1);
579 var pivot = this.get_cell_element(i-1);
578 var tomove = this.get_cell_element(i);
580 var tomove = this.get_cell_element(i);
579 if (pivot !== null && tomove !== null) {
581 if (pivot !== null && tomove !== null) {
580 tomove.detach();
582 tomove.detach();
581 pivot.before(tomove);
583 pivot.before(tomove);
582 this.select(i-1);
584 this.select(i-1);
583 var cell = this.get_selected_cell();
585 var cell = this.get_selected_cell();
584 cell.focus_cell();
586 cell.focus_cell();
585 };
587 };
586 this.set_dirty(true);
588 this.set_dirty(true);
587 };
589 };
588 return this;
590 return this;
589 };
591 };
590
592
591
593
592 /**
594 /**
593 * Move given (or selected) cell down and select it
595 * Move given (or selected) cell down and select it
594 *
596 *
595 * @method move_cell_down
597 * @method move_cell_down
596 * @param [index] {integer} cell index
598 * @param [index] {integer} cell index
597 * @return {Notebook} This notebook
599 * @return {Notebook} This notebook
598 **/
600 **/
599 Notebook.prototype.move_cell_down = function (index) {
601 Notebook.prototype.move_cell_down = function (index) {
600 var i = this.index_or_selected(index);
602 var i = this.index_or_selected(index);
601 if (this.is_valid_cell_index(i) && this.is_valid_cell_index(i+1)) {
603 if (this.is_valid_cell_index(i) && this.is_valid_cell_index(i+1)) {
602 var pivot = this.get_cell_element(i+1);
604 var pivot = this.get_cell_element(i+1);
603 var tomove = this.get_cell_element(i);
605 var tomove = this.get_cell_element(i);
604 if (pivot !== null && tomove !== null) {
606 if (pivot !== null && tomove !== null) {
605 tomove.detach();
607 tomove.detach();
606 pivot.after(tomove);
608 pivot.after(tomove);
607 this.select(i+1);
609 this.select(i+1);
608 var cell = this.get_selected_cell();
610 var cell = this.get_selected_cell();
609 cell.focus_cell();
611 cell.focus_cell();
610 };
612 };
611 };
613 };
612 this.set_dirty();
614 this.set_dirty();
613 return this;
615 return this;
614 };
616 };
615
617
616
618
617 // Insertion, deletion.
619 // Insertion, deletion.
618
620
619 /**
621 /**
620 * Delete a cell from the notebook.
622 * Delete a cell from the notebook.
621 *
623 *
622 * @method delete_cell
624 * @method delete_cell
623 * @param [index] A cell's numeric index
625 * @param [index] A cell's numeric index
624 * @return {Notebook} This notebook
626 * @return {Notebook} This notebook
625 */
627 */
626 Notebook.prototype.delete_cell = function (index) {
628 Notebook.prototype.delete_cell = function (index) {
627 var i = this.index_or_selected(index);
629 var i = this.index_or_selected(index);
628 var cell = this.get_selected_cell();
630 var cell = this.get_selected_cell();
629 this.undelete_backup = cell.toJSON();
631 this.undelete_backup = cell.toJSON();
630 $('#undelete_cell').removeClass('disabled');
632 $('#undelete_cell').removeClass('disabled');
631 if (this.is_valid_cell_index(i)) {
633 if (this.is_valid_cell_index(i)) {
632 var old_ncells = this.ncells();
634 var old_ncells = this.ncells();
633 var ce = this.get_cell_element(i);
635 var ce = this.get_cell_element(i);
634 ce.remove();
636 ce.remove();
635 if (i === 0) {
637 if (i === 0) {
636 // Always make sure we have at least one cell.
638 // Always make sure we have at least one cell.
637 if (old_ncells === 1) {
639 if (old_ncells === 1) {
638 this.insert_cell_below('code');
640 this.insert_cell_below('code');
639 }
641 }
640 this.select(0);
642 this.select(0);
641 this.undelete_index = 0;
643 this.undelete_index = 0;
642 this.undelete_below = false;
644 this.undelete_below = false;
643 } else if (i === old_ncells-1 && i !== 0) {
645 } else if (i === old_ncells-1 && i !== 0) {
644 this.select(i-1);
646 this.select(i-1);
645 this.undelete_index = i - 1;
647 this.undelete_index = i - 1;
646 this.undelete_below = true;
648 this.undelete_below = true;
647 } else {
649 } else {
648 this.select(i);
650 this.select(i);
649 this.undelete_index = i;
651 this.undelete_index = i;
650 this.undelete_below = false;
652 this.undelete_below = false;
651 };
653 };
652 $([IPython.events]).trigger('delete.Cell', {'cell': cell, 'index': i});
654 $([IPython.events]).trigger('delete.Cell', {'cell': cell, 'index': i});
653 this.set_dirty(true);
655 this.set_dirty(true);
654 };
656 };
655 return this;
657 return this;
656 };
658 };
657
659
658 /**
660 /**
659 * Restore the most recently deleted cell.
661 * Restore the most recently deleted cell.
660 *
662 *
661 * @method undelete
663 * @method undelete
662 */
664 */
663 Notebook.prototype.undelete_cell = function() {
665 Notebook.prototype.undelete_cell = function() {
664 if (this.undelete_backup !== null && this.undelete_index !== null) {
666 if (this.undelete_backup !== null && this.undelete_index !== null) {
665 var current_index = this.get_selected_index();
667 var current_index = this.get_selected_index();
666 if (this.undelete_index < current_index) {
668 if (this.undelete_index < current_index) {
667 current_index = current_index + 1;
669 current_index = current_index + 1;
668 }
670 }
669 if (this.undelete_index >= this.ncells()) {
671 if (this.undelete_index >= this.ncells()) {
670 this.select(this.ncells() - 1);
672 this.select(this.ncells() - 1);
671 }
673 }
672 else {
674 else {
673 this.select(this.undelete_index);
675 this.select(this.undelete_index);
674 }
676 }
675 var cell_data = this.undelete_backup;
677 var cell_data = this.undelete_backup;
676 var new_cell = null;
678 var new_cell = null;
677 if (this.undelete_below) {
679 if (this.undelete_below) {
678 new_cell = this.insert_cell_below(cell_data.cell_type);
680 new_cell = this.insert_cell_below(cell_data.cell_type);
679 } else {
681 } else {
680 new_cell = this.insert_cell_above(cell_data.cell_type);
682 new_cell = this.insert_cell_above(cell_data.cell_type);
681 }
683 }
682 new_cell.fromJSON(cell_data);
684 new_cell.fromJSON(cell_data);
683 if (this.undelete_below) {
685 if (this.undelete_below) {
684 this.select(current_index+1);
686 this.select(current_index+1);
685 } else {
687 } else {
686 this.select(current_index);
688 this.select(current_index);
687 }
689 }
688 this.undelete_backup = null;
690 this.undelete_backup = null;
689 this.undelete_index = null;
691 this.undelete_index = null;
690 }
692 }
691 $('#undelete_cell').addClass('disabled');
693 $('#undelete_cell').addClass('disabled');
692 }
694 }
693
695
694 /**
696 /**
695 * Insert a cell so that after insertion the cell is at given index.
697 * Insert a cell so that after insertion the cell is at given index.
696 *
698 *
697 * Similar to insert_above, but index parameter is mandatory
699 * Similar to insert_above, but index parameter is mandatory
698 *
700 *
699 * Index will be brought back into the accissible range [0,n]
701 * Index will be brought back into the accissible range [0,n]
700 *
702 *
701 * @method insert_cell_at_index
703 * @method insert_cell_at_index
702 * @param type {string} in ['code','markdown','heading']
704 * @param type {string} in ['code','markdown','heading']
703 * @param [index] {int} a valid index where to inser cell
705 * @param [index] {int} a valid index where to inser cell
704 *
706 *
705 * @return cell {cell|null} created cell or null
707 * @return cell {cell|null} created cell or null
706 **/
708 **/
707 Notebook.prototype.insert_cell_at_index = function(type, index){
709 Notebook.prototype.insert_cell_at_index = function(type, index){
708
710
709 var ncells = this.ncells();
711 var ncells = this.ncells();
710 var index = Math.min(index,ncells);
712 var index = Math.min(index,ncells);
711 index = Math.max(index,0);
713 index = Math.max(index,0);
712 var cell = null;
714 var cell = null;
713
715
714 if (ncells === 0 || this.is_valid_cell_index(index) || index === ncells) {
716 if (ncells === 0 || this.is_valid_cell_index(index) || index === ncells) {
715 if (type === 'code') {
717 if (type === 'code') {
716 cell = new IPython.CodeCell(this.kernel);
718 cell = new IPython.CodeCell(this.kernel);
717 cell.set_input_prompt();
719 cell.set_input_prompt();
718 } else if (type === 'markdown') {
720 } else if (type === 'markdown') {
719 cell = new IPython.MarkdownCell();
721 cell = new IPython.MarkdownCell();
720 } else if (type === 'raw') {
722 } else if (type === 'raw') {
721 cell = new IPython.RawCell();
723 cell = new IPython.RawCell();
722 } else if (type === 'heading') {
724 } else if (type === 'heading') {
723 cell = new IPython.HeadingCell();
725 cell = new IPython.HeadingCell();
724 }
726 }
725
727
726 if(this._insert_element_at_index(cell.element,index)) {
728 if(this._insert_element_at_index(cell.element,index)) {
727 cell.render();
729 cell.render();
728 $([IPython.events]).trigger('create.Cell', {'cell': cell, 'index': index});
730 $([IPython.events]).trigger('create.Cell', {'cell': cell, 'index': index});
729 cell.refresh();
731 cell.refresh();
730 // We used to select the cell after we refresh it, but there
732 // We used to select the cell after we refresh it, but there
731 // are now cases were this method is called where select is
733 // are now cases were this method is called where select is
732 // not appropriate. The selection logic should be handled by the
734 // not appropriate. The selection logic should be handled by the
733 // caller of the the top level insert_cell methods.
735 // caller of the the top level insert_cell methods.
734 this.set_dirty(true);
736 this.set_dirty(true);
735 }
737 }
736 }
738 }
737 return cell;
739 return cell;
738
740
739 };
741 };
740
742
741 /**
743 /**
742 * Insert an element at given cell index.
744 * Insert an element at given cell index.
743 *
745 *
744 * @method _insert_element_at_index
746 * @method _insert_element_at_index
745 * @param element {dom element} a cell element
747 * @param element {dom element} a cell element
746 * @param [index] {int} a valid index where to inser cell
748 * @param [index] {int} a valid index where to inser cell
747 * @private
749 * @private
748 *
750 *
749 * return true if everything whent fine.
751 * return true if everything whent fine.
750 **/
752 **/
751 Notebook.prototype._insert_element_at_index = function(element, index){
753 Notebook.prototype._insert_element_at_index = function(element, index){
752 if (element === undefined){
754 if (element === undefined){
753 return false;
755 return false;
754 }
756 }
755
757
756 var ncells = this.ncells();
758 var ncells = this.ncells();
757
759
758 if (ncells === 0) {
760 if (ncells === 0) {
759 // special case append if empty
761 // special case append if empty
760 this.element.find('div.end_space').before(element);
762 this.element.find('div.end_space').before(element);
761 } else if ( ncells === index ) {
763 } else if ( ncells === index ) {
762 // special case append it the end, but not empty
764 // special case append it the end, but not empty
763 this.get_cell_element(index-1).after(element);
765 this.get_cell_element(index-1).after(element);
764 } else if (this.is_valid_cell_index(index)) {
766 } else if (this.is_valid_cell_index(index)) {
765 // otherwise always somewhere to append to
767 // otherwise always somewhere to append to
766 this.get_cell_element(index).before(element);
768 this.get_cell_element(index).before(element);
767 } else {
769 } else {
768 return false;
770 return false;
769 }
771 }
770
772
771 if (this.undelete_index !== null && index <= this.undelete_index) {
773 if (this.undelete_index !== null && index <= this.undelete_index) {
772 this.undelete_index = this.undelete_index + 1;
774 this.undelete_index = this.undelete_index + 1;
773 this.set_dirty(true);
775 this.set_dirty(true);
774 }
776 }
775 return true;
777 return true;
776 };
778 };
777
779
778 /**
780 /**
779 * Insert a cell of given type above given index, or at top
781 * Insert a cell of given type above given index, or at top
780 * of notebook if index smaller than 0.
782 * of notebook if index smaller than 0.
781 *
783 *
782 * default index value is the one of currently selected cell
784 * default index value is the one of currently selected cell
783 *
785 *
784 * @method insert_cell_above
786 * @method insert_cell_above
785 * @param type {string} cell type
787 * @param type {string} cell type
786 * @param [index] {integer}
788 * @param [index] {integer}
787 *
789 *
788 * @return handle to created cell or null
790 * @return handle to created cell or null
789 **/
791 **/
790 Notebook.prototype.insert_cell_above = function (type, index) {
792 Notebook.prototype.insert_cell_above = function (type, index) {
791 index = this.index_or_selected(index);
793 index = this.index_or_selected(index);
792 return this.insert_cell_at_index(type, index);
794 return this.insert_cell_at_index(type, index);
793 };
795 };
794
796
795 /**
797 /**
796 * Insert a cell of given type below given index, or at bottom
798 * Insert a cell of given type below given index, or at bottom
797 * of notebook if index greater thatn number of cell
799 * of notebook if index greater thatn number of cell
798 *
800 *
799 * default index value is the one of currently selected cell
801 * default index value is the one of currently selected cell
800 *
802 *
801 * @method insert_cell_below
803 * @method insert_cell_below
802 * @param type {string} cell type
804 * @param type {string} cell type
803 * @param [index] {integer}
805 * @param [index] {integer}
804 *
806 *
805 * @return handle to created cell or null
807 * @return handle to created cell or null
806 *
808 *
807 **/
809 **/
808 Notebook.prototype.insert_cell_below = function (type, index) {
810 Notebook.prototype.insert_cell_below = function (type, index) {
809 index = this.index_or_selected(index);
811 index = this.index_or_selected(index);
810 return this.insert_cell_at_index(type, index+1);
812 return this.insert_cell_at_index(type, index+1);
811 };
813 };
812
814
813
815
814 /**
816 /**
815 * Insert cell at end of notebook
817 * Insert cell at end of notebook
816 *
818 *
817 * @method insert_cell_at_bottom
819 * @method insert_cell_at_bottom
818 * @param {String} type cell type
820 * @param {String} type cell type
819 *
821 *
820 * @return the added cell; or null
822 * @return the added cell; or null
821 **/
823 **/
822 Notebook.prototype.insert_cell_at_bottom = function (type){
824 Notebook.prototype.insert_cell_at_bottom = function (type){
823 var len = this.ncells();
825 var len = this.ncells();
824 return this.insert_cell_below(type,len-1);
826 return this.insert_cell_below(type,len-1);
825 };
827 };
826
828
827 /**
829 /**
828 * Turn a cell into a code cell.
830 * Turn a cell into a code cell.
829 *
831 *
830 * @method to_code
832 * @method to_code
831 * @param {Number} [index] A cell's index
833 * @param {Number} [index] A cell's index
832 */
834 */
833 Notebook.prototype.to_code = function (index) {
835 Notebook.prototype.to_code = function (index) {
834 var i = this.index_or_selected(index);
836 var i = this.index_or_selected(index);
835 if (this.is_valid_cell_index(i)) {
837 if (this.is_valid_cell_index(i)) {
836 var source_element = this.get_cell_element(i);
838 var source_element = this.get_cell_element(i);
837 var source_cell = source_element.data("cell");
839 var source_cell = source_element.data("cell");
838 if (!(source_cell instanceof IPython.CodeCell)) {
840 if (!(source_cell instanceof IPython.CodeCell)) {
839 var target_cell = this.insert_cell_below('code',i);
841 var target_cell = this.insert_cell_below('code',i);
840 var text = source_cell.get_text();
842 var text = source_cell.get_text();
841 if (text === source_cell.placeholder) {
843 if (text === source_cell.placeholder) {
842 text = '';
844 text = '';
843 }
845 }
844 target_cell.set_text(text);
846 target_cell.set_text(text);
845 // make this value the starting point, so that we can only undo
847 // make this value the starting point, so that we can only undo
846 // to this state, instead of a blank cell
848 // to this state, instead of a blank cell
847 target_cell.code_mirror.clearHistory();
849 target_cell.code_mirror.clearHistory();
848 source_element.remove();
850 source_element.remove();
849 this.select(i);
851 this.select(i);
850 this.set_dirty(true);
852 this.set_dirty(true);
851 };
853 };
852 };
854 };
853 };
855 };
854
856
855 /**
857 /**
856 * Turn a cell into a Markdown cell.
858 * Turn a cell into a Markdown cell.
857 *
859 *
858 * @method to_markdown
860 * @method to_markdown
859 * @param {Number} [index] A cell's index
861 * @param {Number} [index] A cell's index
860 */
862 */
861 Notebook.prototype.to_markdown = function (index) {
863 Notebook.prototype.to_markdown = function (index) {
862 var i = this.index_or_selected(index);
864 var i = this.index_or_selected(index);
863 if (this.is_valid_cell_index(i)) {
865 if (this.is_valid_cell_index(i)) {
864 var source_element = this.get_cell_element(i);
866 var source_element = this.get_cell_element(i);
865 var source_cell = source_element.data("cell");
867 var source_cell = source_element.data("cell");
866 if (!(source_cell instanceof IPython.MarkdownCell)) {
868 if (!(source_cell instanceof IPython.MarkdownCell)) {
867 var target_cell = this.insert_cell_below('markdown',i);
869 var target_cell = this.insert_cell_below('markdown',i);
868 var text = source_cell.get_text();
870 var text = source_cell.get_text();
869 if (text === source_cell.placeholder) {
871 if (text === source_cell.placeholder) {
870 text = '';
872 text = '';
871 };
873 };
872 // We must show the editor before setting its contents
874 // We must show the editor before setting its contents
873 target_cell.unrender();
875 target_cell.unrender();
874 target_cell.set_text(text);
876 target_cell.set_text(text);
875 // make this value the starting point, so that we can only undo
877 // make this value the starting point, so that we can only undo
876 // to this state, instead of a blank cell
878 // to this state, instead of a blank cell
877 target_cell.code_mirror.clearHistory();
879 target_cell.code_mirror.clearHistory();
878 source_element.remove();
880 source_element.remove();
879 this.select(i);
881 this.select(i);
880 if ((source_cell instanceof IPython.TextCell) && source_cell.rendered) {
882 if ((source_cell instanceof IPython.TextCell) && source_cell.rendered) {
881 target_cell.render();
883 target_cell.render();
882 }
884 }
883 this.set_dirty(true);
885 this.set_dirty(true);
884 };
886 };
885 };
887 };
886 };
888 };
887
889
888 /**
890 /**
889 * Turn a cell into a raw text cell.
891 * Turn a cell into a raw text cell.
890 *
892 *
891 * @method to_raw
893 * @method to_raw
892 * @param {Number} [index] A cell's index
894 * @param {Number} [index] A cell's index
893 */
895 */
894 Notebook.prototype.to_raw = function (index) {
896 Notebook.prototype.to_raw = function (index) {
895 var i = this.index_or_selected(index);
897 var i = this.index_or_selected(index);
896 if (this.is_valid_cell_index(i)) {
898 if (this.is_valid_cell_index(i)) {
897 var source_element = this.get_cell_element(i);
899 var source_element = this.get_cell_element(i);
898 var source_cell = source_element.data("cell");
900 var source_cell = source_element.data("cell");
899 var target_cell = null;
901 var target_cell = null;
900 if (!(source_cell instanceof IPython.RawCell)) {
902 if (!(source_cell instanceof IPython.RawCell)) {
901 target_cell = this.insert_cell_below('raw',i);
903 target_cell = this.insert_cell_below('raw',i);
902 var text = source_cell.get_text();
904 var text = source_cell.get_text();
903 if (text === source_cell.placeholder) {
905 if (text === source_cell.placeholder) {
904 text = '';
906 text = '';
905 };
907 };
906 // We must show the editor before setting its contents
908 // We must show the editor before setting its contents
907 target_cell.unrender();
909 target_cell.unrender();
908 target_cell.set_text(text);
910 target_cell.set_text(text);
909 // make this value the starting point, so that we can only undo
911 // make this value the starting point, so that we can only undo
910 // to this state, instead of a blank cell
912 // to this state, instead of a blank cell
911 target_cell.code_mirror.clearHistory();
913 target_cell.code_mirror.clearHistory();
912 source_element.remove();
914 source_element.remove();
913 this.select(i);
915 this.select(i);
914 this.set_dirty(true);
916 this.set_dirty(true);
915 };
917 };
916 };
918 };
917 };
919 };
918
920
919 /**
921 /**
920 * Turn a cell into a heading cell.
922 * Turn a cell into a heading cell.
921 *
923 *
922 * @method to_heading
924 * @method to_heading
923 * @param {Number} [index] A cell's index
925 * @param {Number} [index] A cell's index
924 * @param {Number} [level] A heading level (e.g., 1 becomes &lt;h1&gt;)
926 * @param {Number} [level] A heading level (e.g., 1 becomes &lt;h1&gt;)
925 */
927 */
926 Notebook.prototype.to_heading = function (index, level) {
928 Notebook.prototype.to_heading = function (index, level) {
927 level = level || 1;
929 level = level || 1;
928 var i = this.index_or_selected(index);
930 var i = this.index_or_selected(index);
929 if (this.is_valid_cell_index(i)) {
931 if (this.is_valid_cell_index(i)) {
930 var source_element = this.get_cell_element(i);
932 var source_element = this.get_cell_element(i);
931 var source_cell = source_element.data("cell");
933 var source_cell = source_element.data("cell");
932 var target_cell = null;
934 var target_cell = null;
933 if (source_cell instanceof IPython.HeadingCell) {
935 if (source_cell instanceof IPython.HeadingCell) {
934 source_cell.set_level(level);
936 source_cell.set_level(level);
935 } else {
937 } else {
936 target_cell = this.insert_cell_below('heading',i);
938 target_cell = this.insert_cell_below('heading',i);
937 var text = source_cell.get_text();
939 var text = source_cell.get_text();
938 if (text === source_cell.placeholder) {
940 if (text === source_cell.placeholder) {
939 text = '';
941 text = '';
940 };
942 };
941 // We must show the editor before setting its contents
943 // We must show the editor before setting its contents
942 target_cell.set_level(level);
944 target_cell.set_level(level);
943 target_cell.unrender();
945 target_cell.unrender();
944 target_cell.set_text(text);
946 target_cell.set_text(text);
945 // make this value the starting point, so that we can only undo
947 // make this value the starting point, so that we can only undo
946 // to this state, instead of a blank cell
948 // to this state, instead of a blank cell
947 target_cell.code_mirror.clearHistory();
949 target_cell.code_mirror.clearHistory();
948 source_element.remove();
950 source_element.remove();
949 this.select(i);
951 this.select(i);
950 if ((source_cell instanceof IPython.TextCell) && source_cell.rendered) {
952 if ((source_cell instanceof IPython.TextCell) && source_cell.rendered) {
951 target_cell.render();
953 target_cell.render();
952 }
954 }
953 };
955 };
954 this.set_dirty(true);
956 this.set_dirty(true);
955 $([IPython.events]).trigger('selected_cell_type_changed.Notebook',
957 $([IPython.events]).trigger('selected_cell_type_changed.Notebook',
956 {'cell_type':'heading',level:level}
958 {'cell_type':'heading',level:level}
957 );
959 );
958 };
960 };
959 };
961 };
960
962
961
963
962 // Cut/Copy/Paste
964 // Cut/Copy/Paste
963
965
964 /**
966 /**
965 * Enable UI elements for pasting cells.
967 * Enable UI elements for pasting cells.
966 *
968 *
967 * @method enable_paste
969 * @method enable_paste
968 */
970 */
969 Notebook.prototype.enable_paste = function () {
971 Notebook.prototype.enable_paste = function () {
970 var that = this;
972 var that = this;
971 if (!this.paste_enabled) {
973 if (!this.paste_enabled) {
972 $('#paste_cell_replace').removeClass('disabled')
974 $('#paste_cell_replace').removeClass('disabled')
973 .on('click', function () {that.paste_cell_replace();});
975 .on('click', function () {that.paste_cell_replace();});
974 $('#paste_cell_above').removeClass('disabled')
976 $('#paste_cell_above').removeClass('disabled')
975 .on('click', function () {that.paste_cell_above();});
977 .on('click', function () {that.paste_cell_above();});
976 $('#paste_cell_below').removeClass('disabled')
978 $('#paste_cell_below').removeClass('disabled')
977 .on('click', function () {that.paste_cell_below();});
979 .on('click', function () {that.paste_cell_below();});
978 this.paste_enabled = true;
980 this.paste_enabled = true;
979 };
981 };
980 };
982 };
981
983
982 /**
984 /**
983 * Disable UI elements for pasting cells.
985 * Disable UI elements for pasting cells.
984 *
986 *
985 * @method disable_paste
987 * @method disable_paste
986 */
988 */
987 Notebook.prototype.disable_paste = function () {
989 Notebook.prototype.disable_paste = function () {
988 if (this.paste_enabled) {
990 if (this.paste_enabled) {
989 $('#paste_cell_replace').addClass('disabled').off('click');
991 $('#paste_cell_replace').addClass('disabled').off('click');
990 $('#paste_cell_above').addClass('disabled').off('click');
992 $('#paste_cell_above').addClass('disabled').off('click');
991 $('#paste_cell_below').addClass('disabled').off('click');
993 $('#paste_cell_below').addClass('disabled').off('click');
992 this.paste_enabled = false;
994 this.paste_enabled = false;
993 };
995 };
994 };
996 };
995
997
996 /**
998 /**
997 * Cut a cell.
999 * Cut a cell.
998 *
1000 *
999 * @method cut_cell
1001 * @method cut_cell
1000 */
1002 */
1001 Notebook.prototype.cut_cell = function () {
1003 Notebook.prototype.cut_cell = function () {
1002 this.copy_cell();
1004 this.copy_cell();
1003 this.delete_cell();
1005 this.delete_cell();
1004 }
1006 }
1005
1007
1006 /**
1008 /**
1007 * Copy a cell.
1009 * Copy a cell.
1008 *
1010 *
1009 * @method copy_cell
1011 * @method copy_cell
1010 */
1012 */
1011 Notebook.prototype.copy_cell = function () {
1013 Notebook.prototype.copy_cell = function () {
1012 var cell = this.get_selected_cell();
1014 var cell = this.get_selected_cell();
1013 this.clipboard = cell.toJSON();
1015 this.clipboard = cell.toJSON();
1014 this.enable_paste();
1016 this.enable_paste();
1015 };
1017 };
1016
1018
1017 /**
1019 /**
1018 * Replace the selected cell with a cell in the clipboard.
1020 * Replace the selected cell with a cell in the clipboard.
1019 *
1021 *
1020 * @method paste_cell_replace
1022 * @method paste_cell_replace
1021 */
1023 */
1022 Notebook.prototype.paste_cell_replace = function () {
1024 Notebook.prototype.paste_cell_replace = function () {
1023 if (this.clipboard !== null && this.paste_enabled) {
1025 if (this.clipboard !== null && this.paste_enabled) {
1024 var cell_data = this.clipboard;
1026 var cell_data = this.clipboard;
1025 var new_cell = this.insert_cell_above(cell_data.cell_type);
1027 var new_cell = this.insert_cell_above(cell_data.cell_type);
1026 new_cell.fromJSON(cell_data);
1028 new_cell.fromJSON(cell_data);
1027 var old_cell = this.get_next_cell(new_cell);
1029 var old_cell = this.get_next_cell(new_cell);
1028 this.delete_cell(this.find_cell_index(old_cell));
1030 this.delete_cell(this.find_cell_index(old_cell));
1029 this.select(this.find_cell_index(new_cell));
1031 this.select(this.find_cell_index(new_cell));
1030 };
1032 };
1031 };
1033 };
1032
1034
1033 /**
1035 /**
1034 * Paste a cell from the clipboard above the selected cell.
1036 * Paste a cell from the clipboard above the selected cell.
1035 *
1037 *
1036 * @method paste_cell_above
1038 * @method paste_cell_above
1037 */
1039 */
1038 Notebook.prototype.paste_cell_above = function () {
1040 Notebook.prototype.paste_cell_above = function () {
1039 if (this.clipboard !== null && this.paste_enabled) {
1041 if (this.clipboard !== null && this.paste_enabled) {
1040 var cell_data = this.clipboard;
1042 var cell_data = this.clipboard;
1041 var new_cell = this.insert_cell_above(cell_data.cell_type);
1043 var new_cell = this.insert_cell_above(cell_data.cell_type);
1042 new_cell.fromJSON(cell_data);
1044 new_cell.fromJSON(cell_data);
1043 new_cell.focus_cell();
1045 new_cell.focus_cell();
1044 };
1046 };
1045 };
1047 };
1046
1048
1047 /**
1049 /**
1048 * Paste a cell from the clipboard below the selected cell.
1050 * Paste a cell from the clipboard below the selected cell.
1049 *
1051 *
1050 * @method paste_cell_below
1052 * @method paste_cell_below
1051 */
1053 */
1052 Notebook.prototype.paste_cell_below = function () {
1054 Notebook.prototype.paste_cell_below = function () {
1053 if (this.clipboard !== null && this.paste_enabled) {
1055 if (this.clipboard !== null && this.paste_enabled) {
1054 var cell_data = this.clipboard;
1056 var cell_data = this.clipboard;
1055 var new_cell = this.insert_cell_below(cell_data.cell_type);
1057 var new_cell = this.insert_cell_below(cell_data.cell_type);
1056 new_cell.fromJSON(cell_data);
1058 new_cell.fromJSON(cell_data);
1057 new_cell.focus_cell();
1059 new_cell.focus_cell();
1058 };
1060 };
1059 };
1061 };
1060
1062
1061 // Split/merge
1063 // Split/merge
1062
1064
1063 /**
1065 /**
1064 * Split the selected cell into two, at the cursor.
1066 * Split the selected cell into two, at the cursor.
1065 *
1067 *
1066 * @method split_cell
1068 * @method split_cell
1067 */
1069 */
1068 Notebook.prototype.split_cell = function () {
1070 Notebook.prototype.split_cell = function () {
1069 var mdc = IPython.MarkdownCell;
1071 var mdc = IPython.MarkdownCell;
1070 var rc = IPython.RawCell;
1072 var rc = IPython.RawCell;
1071 var cell = this.get_selected_cell();
1073 var cell = this.get_selected_cell();
1072 if (cell.is_splittable()) {
1074 if (cell.is_splittable()) {
1073 var texta = cell.get_pre_cursor();
1075 var texta = cell.get_pre_cursor();
1074 var textb = cell.get_post_cursor();
1076 var textb = cell.get_post_cursor();
1075 if (cell instanceof IPython.CodeCell) {
1077 if (cell instanceof IPython.CodeCell) {
1076 // In this case the operations keep the notebook in its existing mode
1078 // In this case the operations keep the notebook in its existing mode
1077 // so we don't need to do any post-op mode changes.
1079 // so we don't need to do any post-op mode changes.
1078 cell.set_text(textb);
1080 cell.set_text(textb);
1079 var new_cell = this.insert_cell_above('code');
1081 var new_cell = this.insert_cell_above('code');
1080 new_cell.set_text(texta);
1082 new_cell.set_text(texta);
1081 } else if ((cell instanceof mdc && !cell.rendered) || (cell instanceof rc)) {
1083 } else if ((cell instanceof mdc && !cell.rendered) || (cell instanceof rc)) {
1082 // We know cell is !rendered so we can use set_text.
1084 // We know cell is !rendered so we can use set_text.
1083 cell.set_text(textb);
1085 cell.set_text(textb);
1084 var new_cell = this.insert_cell_above(cell.cell_type);
1086 var new_cell = this.insert_cell_above(cell.cell_type);
1085 // Unrender the new cell so we can call set_text.
1087 // Unrender the new cell so we can call set_text.
1086 new_cell.unrender();
1088 new_cell.unrender();
1087 new_cell.set_text(texta);
1089 new_cell.set_text(texta);
1088 }
1090 }
1089 };
1091 };
1090 };
1092 };
1091
1093
1092 /**
1094 /**
1093 * Combine the selected cell into the cell above it.
1095 * Combine the selected cell into the cell above it.
1094 *
1096 *
1095 * @method merge_cell_above
1097 * @method merge_cell_above
1096 */
1098 */
1097 Notebook.prototype.merge_cell_above = function () {
1099 Notebook.prototype.merge_cell_above = function () {
1098 var mdc = IPython.MarkdownCell;
1100 var mdc = IPython.MarkdownCell;
1099 var rc = IPython.RawCell;
1101 var rc = IPython.RawCell;
1100 var index = this.get_selected_index();
1102 var index = this.get_selected_index();
1101 var cell = this.get_cell(index);
1103 var cell = this.get_cell(index);
1102 var render = cell.rendered;
1104 var render = cell.rendered;
1103 if (!cell.is_mergeable()) {
1105 if (!cell.is_mergeable()) {
1104 return;
1106 return;
1105 }
1107 }
1106 if (index > 0) {
1108 if (index > 0) {
1107 var upper_cell = this.get_cell(index-1);
1109 var upper_cell = this.get_cell(index-1);
1108 if (!upper_cell.is_mergeable()) {
1110 if (!upper_cell.is_mergeable()) {
1109 return;
1111 return;
1110 }
1112 }
1111 var upper_text = upper_cell.get_text();
1113 var upper_text = upper_cell.get_text();
1112 var text = cell.get_text();
1114 var text = cell.get_text();
1113 if (cell instanceof IPython.CodeCell) {
1115 if (cell instanceof IPython.CodeCell) {
1114 cell.set_text(upper_text+'\n'+text);
1116 cell.set_text(upper_text+'\n'+text);
1115 } else if ((cell instanceof mdc) || (cell instanceof rc)) {
1117 } else if ((cell instanceof mdc) || (cell instanceof rc)) {
1116 cell.unrender(); // Must unrender before we set_text.
1118 cell.unrender(); // Must unrender before we set_text.
1117 cell.set_text(upper_text+'\n\n'+text);
1119 cell.set_text(upper_text+'\n\n'+text);
1118 if (render) {
1120 if (render) {
1119 // The rendered state of the final cell should match
1121 // The rendered state of the final cell should match
1120 // that of the original selected cell;
1122 // that of the original selected cell;
1121 cell.render();
1123 cell.render();
1122 }
1124 }
1123 };
1125 };
1124 this.delete_cell(index-1);
1126 this.delete_cell(index-1);
1125 this.select(this.find_cell_index(cell));
1127 this.select(this.find_cell_index(cell));
1126 };
1128 };
1127 };
1129 };
1128
1130
1129 /**
1131 /**
1130 * Combine the selected cell into the cell below it.
1132 * Combine the selected cell into the cell below it.
1131 *
1133 *
1132 * @method merge_cell_below
1134 * @method merge_cell_below
1133 */
1135 */
1134 Notebook.prototype.merge_cell_below = function () {
1136 Notebook.prototype.merge_cell_below = function () {
1135 var mdc = IPython.MarkdownCell;
1137 var mdc = IPython.MarkdownCell;
1136 var rc = IPython.RawCell;
1138 var rc = IPython.RawCell;
1137 var index = this.get_selected_index();
1139 var index = this.get_selected_index();
1138 var cell = this.get_cell(index);
1140 var cell = this.get_cell(index);
1139 var render = cell.rendered;
1141 var render = cell.rendered;
1140 if (!cell.is_mergeable()) {
1142 if (!cell.is_mergeable()) {
1141 return;
1143 return;
1142 }
1144 }
1143 if (index < this.ncells()-1) {
1145 if (index < this.ncells()-1) {
1144 var lower_cell = this.get_cell(index+1);
1146 var lower_cell = this.get_cell(index+1);
1145 if (!lower_cell.is_mergeable()) {
1147 if (!lower_cell.is_mergeable()) {
1146 return;
1148 return;
1147 }
1149 }
1148 var lower_text = lower_cell.get_text();
1150 var lower_text = lower_cell.get_text();
1149 var text = cell.get_text();
1151 var text = cell.get_text();
1150 if (cell instanceof IPython.CodeCell) {
1152 if (cell instanceof IPython.CodeCell) {
1151 cell.set_text(text+'\n'+lower_text);
1153 cell.set_text(text+'\n'+lower_text);
1152 } else if ((cell instanceof mdc) || (cell instanceof rc)) {
1154 } else if ((cell instanceof mdc) || (cell instanceof rc)) {
1153 cell.unrender(); // Must unrender before we set_text.
1155 cell.unrender(); // Must unrender before we set_text.
1154 cell.set_text(text+'\n\n'+lower_text);
1156 cell.set_text(text+'\n\n'+lower_text);
1155 if (render) {
1157 if (render) {
1156 // The rendered state of the final cell should match
1158 // The rendered state of the final cell should match
1157 // that of the original selected cell;
1159 // that of the original selected cell;
1158 cell.render();
1160 cell.render();
1159 }
1161 }
1160 };
1162 };
1161 this.delete_cell(index+1);
1163 this.delete_cell(index+1);
1162 this.select(this.find_cell_index(cell));
1164 this.select(this.find_cell_index(cell));
1163 };
1165 };
1164 };
1166 };
1165
1167
1166
1168
1167 // Cell collapsing and output clearing
1169 // Cell collapsing and output clearing
1168
1170
1169 /**
1171 /**
1170 * Hide a cell's output.
1172 * Hide a cell's output.
1171 *
1173 *
1172 * @method collapse_output
1174 * @method collapse_output
1173 * @param {Number} index A cell's numeric index
1175 * @param {Number} index A cell's numeric index
1174 */
1176 */
1175 Notebook.prototype.collapse_output = function (index) {
1177 Notebook.prototype.collapse_output = function (index) {
1176 var i = this.index_or_selected(index);
1178 var i = this.index_or_selected(index);
1177 var cell = this.get_cell(i);
1179 var cell = this.get_cell(i);
1178 if (cell !== null && (cell instanceof IPython.CodeCell)) {
1180 if (cell !== null && (cell instanceof IPython.CodeCell)) {
1179 cell.collapse_output();
1181 cell.collapse_output();
1180 this.set_dirty(true);
1182 this.set_dirty(true);
1181 }
1183 }
1182 };
1184 };
1183
1185
1184 /**
1186 /**
1185 * Hide each code cell's output area.
1187 * Hide each code cell's output area.
1186 *
1188 *
1187 * @method collapse_all_output
1189 * @method collapse_all_output
1188 */
1190 */
1189 Notebook.prototype.collapse_all_output = function () {
1191 Notebook.prototype.collapse_all_output = function () {
1190 $.map(this.get_cells(), function (cell, i) {
1192 $.map(this.get_cells(), function (cell, i) {
1191 if (cell instanceof IPython.CodeCell) {
1193 if (cell instanceof IPython.CodeCell) {
1192 cell.collapse_output();
1194 cell.collapse_output();
1193 }
1195 }
1194 });
1196 });
1195 // this should not be set if the `collapse` key is removed from nbformat
1197 // this should not be set if the `collapse` key is removed from nbformat
1196 this.set_dirty(true);
1198 this.set_dirty(true);
1197 };
1199 };
1198
1200
1199 /**
1201 /**
1200 * Show a cell's output.
1202 * Show a cell's output.
1201 *
1203 *
1202 * @method expand_output
1204 * @method expand_output
1203 * @param {Number} index A cell's numeric index
1205 * @param {Number} index A cell's numeric index
1204 */
1206 */
1205 Notebook.prototype.expand_output = function (index) {
1207 Notebook.prototype.expand_output = function (index) {
1206 var i = this.index_or_selected(index);
1208 var i = this.index_or_selected(index);
1207 var cell = this.get_cell(i);
1209 var cell = this.get_cell(i);
1208 if (cell !== null && (cell instanceof IPython.CodeCell)) {
1210 if (cell !== null && (cell instanceof IPython.CodeCell)) {
1209 cell.expand_output();
1211 cell.expand_output();
1210 this.set_dirty(true);
1212 this.set_dirty(true);
1211 }
1213 }
1212 };
1214 };
1213
1215
1214 /**
1216 /**
1215 * Expand each code cell's output area, and remove scrollbars.
1217 * Expand each code cell's output area, and remove scrollbars.
1216 *
1218 *
1217 * @method expand_all_output
1219 * @method expand_all_output
1218 */
1220 */
1219 Notebook.prototype.expand_all_output = function () {
1221 Notebook.prototype.expand_all_output = function () {
1220 $.map(this.get_cells(), function (cell, i) {
1222 $.map(this.get_cells(), function (cell, i) {
1221 if (cell instanceof IPython.CodeCell) {
1223 if (cell instanceof IPython.CodeCell) {
1222 cell.expand_output();
1224 cell.expand_output();
1223 }
1225 }
1224 });
1226 });
1225 // this should not be set if the `collapse` key is removed from nbformat
1227 // this should not be set if the `collapse` key is removed from nbformat
1226 this.set_dirty(true);
1228 this.set_dirty(true);
1227 };
1229 };
1228
1230
1229 /**
1231 /**
1230 * Clear the selected CodeCell's output area.
1232 * Clear the selected CodeCell's output area.
1231 *
1233 *
1232 * @method clear_output
1234 * @method clear_output
1233 * @param {Number} index A cell's numeric index
1235 * @param {Number} index A cell's numeric index
1234 */
1236 */
1235 Notebook.prototype.clear_output = function (index) {
1237 Notebook.prototype.clear_output = function (index) {
1236 var i = this.index_or_selected(index);
1238 var i = this.index_or_selected(index);
1237 var cell = this.get_cell(i);
1239 var cell = this.get_cell(i);
1238 if (cell !== null && (cell instanceof IPython.CodeCell)) {
1240 if (cell !== null && (cell instanceof IPython.CodeCell)) {
1239 cell.clear_output();
1241 cell.clear_output();
1240 this.set_dirty(true);
1242 this.set_dirty(true);
1241 }
1243 }
1242 };
1244 };
1243
1245
1244 /**
1246 /**
1245 * Clear each code cell's output area.
1247 * Clear each code cell's output area.
1246 *
1248 *
1247 * @method clear_all_output
1249 * @method clear_all_output
1248 */
1250 */
1249 Notebook.prototype.clear_all_output = function () {
1251 Notebook.prototype.clear_all_output = function () {
1250 $.map(this.get_cells(), function (cell, i) {
1252 $.map(this.get_cells(), function (cell, i) {
1251 if (cell instanceof IPython.CodeCell) {
1253 if (cell instanceof IPython.CodeCell) {
1252 cell.clear_output();
1254 cell.clear_output();
1253 }
1255 }
1254 });
1256 });
1255 this.set_dirty(true);
1257 this.set_dirty(true);
1256 };
1258 };
1257
1259
1258 /**
1260 /**
1259 * Scroll the selected CodeCell's output area.
1261 * Scroll the selected CodeCell's output area.
1260 *
1262 *
1261 * @method scroll_output
1263 * @method scroll_output
1262 * @param {Number} index A cell's numeric index
1264 * @param {Number} index A cell's numeric index
1263 */
1265 */
1264 Notebook.prototype.scroll_output = function (index) {
1266 Notebook.prototype.scroll_output = function (index) {
1265 var i = this.index_or_selected(index);
1267 var i = this.index_or_selected(index);
1266 var cell = this.get_cell(i);
1268 var cell = this.get_cell(i);
1267 if (cell !== null && (cell instanceof IPython.CodeCell)) {
1269 if (cell !== null && (cell instanceof IPython.CodeCell)) {
1268 cell.scroll_output();
1270 cell.scroll_output();
1269 this.set_dirty(true);
1271 this.set_dirty(true);
1270 }
1272 }
1271 };
1273 };
1272
1274
1273 /**
1275 /**
1274 * Expand each code cell's output area, and add a scrollbar for long output.
1276 * Expand each code cell's output area, and add a scrollbar for long output.
1275 *
1277 *
1276 * @method scroll_all_output
1278 * @method scroll_all_output
1277 */
1279 */
1278 Notebook.prototype.scroll_all_output = function () {
1280 Notebook.prototype.scroll_all_output = function () {
1279 $.map(this.get_cells(), function (cell, i) {
1281 $.map(this.get_cells(), function (cell, i) {
1280 if (cell instanceof IPython.CodeCell) {
1282 if (cell instanceof IPython.CodeCell) {
1281 cell.scroll_output();
1283 cell.scroll_output();
1282 }
1284 }
1283 });
1285 });
1284 // this should not be set if the `collapse` key is removed from nbformat
1286 // this should not be set if the `collapse` key is removed from nbformat
1285 this.set_dirty(true);
1287 this.set_dirty(true);
1286 };
1288 };
1287
1289
1288 /** Toggle whether a cell's output is collapsed or expanded.
1290 /** Toggle whether a cell's output is collapsed or expanded.
1289 *
1291 *
1290 * @method toggle_output
1292 * @method toggle_output
1291 * @param {Number} index A cell's numeric index
1293 * @param {Number} index A cell's numeric index
1292 */
1294 */
1293 Notebook.prototype.toggle_output = function (index) {
1295 Notebook.prototype.toggle_output = function (index) {
1294 var i = this.index_or_selected(index);
1296 var i = this.index_or_selected(index);
1295 var cell = this.get_cell(i);
1297 var cell = this.get_cell(i);
1296 if (cell !== null && (cell instanceof IPython.CodeCell)) {
1298 if (cell !== null && (cell instanceof IPython.CodeCell)) {
1297 cell.toggle_output();
1299 cell.toggle_output();
1298 this.set_dirty(true);
1300 this.set_dirty(true);
1299 }
1301 }
1300 };
1302 };
1301
1303
1302 /**
1304 /**
1303 * Hide/show the output of all cells.
1305 * Hide/show the output of all cells.
1304 *
1306 *
1305 * @method toggle_all_output
1307 * @method toggle_all_output
1306 */
1308 */
1307 Notebook.prototype.toggle_all_output = function () {
1309 Notebook.prototype.toggle_all_output = function () {
1308 $.map(this.get_cells(), function (cell, i) {
1310 $.map(this.get_cells(), function (cell, i) {
1309 if (cell instanceof IPython.CodeCell) {
1311 if (cell instanceof IPython.CodeCell) {
1310 cell.toggle_output();
1312 cell.toggle_output();
1311 }
1313 }
1312 });
1314 });
1313 // this should not be set if the `collapse` key is removed from nbformat
1315 // this should not be set if the `collapse` key is removed from nbformat
1314 this.set_dirty(true);
1316 this.set_dirty(true);
1315 };
1317 };
1316
1318
1317 /**
1319 /**
1318 * Toggle a scrollbar for long cell outputs.
1320 * Toggle a scrollbar for long cell outputs.
1319 *
1321 *
1320 * @method toggle_output_scroll
1322 * @method toggle_output_scroll
1321 * @param {Number} index A cell's numeric index
1323 * @param {Number} index A cell's numeric index
1322 */
1324 */
1323 Notebook.prototype.toggle_output_scroll = function (index) {
1325 Notebook.prototype.toggle_output_scroll = function (index) {
1324 var i = this.index_or_selected(index);
1326 var i = this.index_or_selected(index);
1325 var cell = this.get_cell(i);
1327 var cell = this.get_cell(i);
1326 if (cell !== null && (cell instanceof IPython.CodeCell)) {
1328 if (cell !== null && (cell instanceof IPython.CodeCell)) {
1327 cell.toggle_output_scroll();
1329 cell.toggle_output_scroll();
1328 this.set_dirty(true);
1330 this.set_dirty(true);
1329 }
1331 }
1330 };
1332 };
1331
1333
1332 /**
1334 /**
1333 * Toggle the scrolling of long output on all cells.
1335 * Toggle the scrolling of long output on all cells.
1334 *
1336 *
1335 * @method toggle_all_output_scrolling
1337 * @method toggle_all_output_scrolling
1336 */
1338 */
1337 Notebook.prototype.toggle_all_output_scroll = function () {
1339 Notebook.prototype.toggle_all_output_scroll = function () {
1338 $.map(this.get_cells(), function (cell, i) {
1340 $.map(this.get_cells(), function (cell, i) {
1339 if (cell instanceof IPython.CodeCell) {
1341 if (cell instanceof IPython.CodeCell) {
1340 cell.toggle_output_scroll();
1342 cell.toggle_output_scroll();
1341 }
1343 }
1342 });
1344 });
1343 // this should not be set if the `collapse` key is removed from nbformat
1345 // this should not be set if the `collapse` key is removed from nbformat
1344 this.set_dirty(true);
1346 this.set_dirty(true);
1345 };
1347 };
1346
1348
1347 // Other cell functions: line numbers, ...
1349 // Other cell functions: line numbers, ...
1348
1350
1349 /**
1351 /**
1350 * Toggle line numbers in the selected cell's input area.
1352 * Toggle line numbers in the selected cell's input area.
1351 *
1353 *
1352 * @method cell_toggle_line_numbers
1354 * @method cell_toggle_line_numbers
1353 */
1355 */
1354 Notebook.prototype.cell_toggle_line_numbers = function() {
1356 Notebook.prototype.cell_toggle_line_numbers = function() {
1355 this.get_selected_cell().toggle_line_numbers();
1357 this.get_selected_cell().toggle_line_numbers();
1356 };
1358 };
1357
1359
1358 // Session related things
1360 // Session related things
1359
1361
1360 /**
1362 /**
1361 * Start a new session and set it on each code cell.
1363 * Start a new session and set it on each code cell.
1362 *
1364 *
1363 * @method start_session
1365 * @method start_session
1364 */
1366 */
1365 Notebook.prototype.start_session = function () {
1367 Notebook.prototype.start_session = function () {
1366 this.session = new IPython.Session(this.notebook_name, this.notebook_path, this);
1368 this.session = new IPython.Session(this.notebook_name, this.notebook_path, this);
1367 this.session.start($.proxy(this._session_started, this));
1369 this.session.start($.proxy(this._session_started, this));
1368 };
1370 };
1369
1371
1370
1372
1371 /**
1373 /**
1372 * Once a session is started, link the code cells to the kernel and pass the
1374 * Once a session is started, link the code cells to the kernel and pass the
1373 * comm manager to the widget manager
1375 * comm manager to the widget manager
1374 *
1376 *
1375 */
1377 */
1376 Notebook.prototype._session_started = function(){
1378 Notebook.prototype._session_started = function(){
1377 this.kernel = this.session.kernel;
1379 this.kernel = this.session.kernel;
1378 var ncells = this.ncells();
1380 var ncells = this.ncells();
1379 for (var i=0; i<ncells; i++) {
1381 for (var i=0; i<ncells; i++) {
1380 var cell = this.get_cell(i);
1382 var cell = this.get_cell(i);
1381 if (cell instanceof IPython.CodeCell) {
1383 if (cell instanceof IPython.CodeCell) {
1382 cell.set_kernel(this.session.kernel);
1384 cell.set_kernel(this.session.kernel);
1383 };
1385 };
1384 };
1386 };
1385 };
1387 };
1386
1388
1387 /**
1389 /**
1388 * Prompt the user to restart the IPython kernel.
1390 * Prompt the user to restart the IPython kernel.
1389 *
1391 *
1390 * @method restart_kernel
1392 * @method restart_kernel
1391 */
1393 */
1392 Notebook.prototype.restart_kernel = function () {
1394 Notebook.prototype.restart_kernel = function () {
1393 var that = this;
1395 var that = this;
1394 IPython.dialog.modal({
1396 IPython.dialog.modal({
1395 title : "Restart kernel or continue running?",
1397 title : "Restart kernel or continue running?",
1396 body : $("<p/>").text(
1398 body : $("<p/>").text(
1397 'Do you want to restart the current kernel? You will lose all variables defined in it.'
1399 'Do you want to restart the current kernel? You will lose all variables defined in it.'
1398 ),
1400 ),
1399 buttons : {
1401 buttons : {
1400 "Continue running" : {},
1402 "Continue running" : {},
1401 "Restart" : {
1403 "Restart" : {
1402 "class" : "btn-danger",
1404 "class" : "btn-danger",
1403 "click" : function() {
1405 "click" : function() {
1404 that.session.restart_kernel();
1406 that.session.restart_kernel();
1405 }
1407 }
1406 }
1408 }
1407 }
1409 }
1408 });
1410 });
1409 };
1411 };
1410
1412
1411 /**
1413 /**
1412 * Execute or render cell outputs and go into command mode.
1414 * Execute or render cell outputs and go into command mode.
1413 *
1415 *
1414 * @method execute_cell
1416 * @method execute_cell
1415 */
1417 */
1416 Notebook.prototype.execute_cell = function () {
1418 Notebook.prototype.execute_cell = function () {
1417 // mode = shift, ctrl, alt
1419 // mode = shift, ctrl, alt
1418 var cell = this.get_selected_cell();
1420 var cell = this.get_selected_cell();
1419 var cell_index = this.find_cell_index(cell);
1421 var cell_index = this.find_cell_index(cell);
1420
1422
1421 cell.execute();
1423 cell.execute();
1422 this.command_mode();
1424 this.command_mode();
1423 cell.focus_cell();
1425 cell.focus_cell();
1424 this.set_dirty(true);
1426 this.set_dirty(true);
1425 }
1427 }
1426
1428
1427 /**
1429 /**
1428 * Execute or render cell outputs and insert a new cell below.
1430 * Execute or render cell outputs and insert a new cell below.
1429 *
1431 *
1430 * @method execute_cell_and_insert_below
1432 * @method execute_cell_and_insert_below
1431 */
1433 */
1432 Notebook.prototype.execute_cell_and_insert_below = function () {
1434 Notebook.prototype.execute_cell_and_insert_below = function () {
1433 var cell = this.get_selected_cell();
1435 var cell = this.get_selected_cell();
1434 var cell_index = this.find_cell_index(cell);
1436 var cell_index = this.find_cell_index(cell);
1435
1437
1436 cell.execute();
1438 cell.execute();
1437
1439
1438 // If we are at the end always insert a new cell and return
1440 // If we are at the end always insert a new cell and return
1439 if (cell_index === (this.ncells()-1)) {
1441 if (cell_index === (this.ncells()-1)) {
1440 this.insert_cell_below('code');
1442 this.insert_cell_below('code');
1441 this.select(cell_index+1);
1443 this.select(cell_index+1);
1442 this.edit_mode();
1444 this.edit_mode();
1443 this.scroll_to_bottom();
1445 this.scroll_to_bottom();
1444 this.set_dirty(true);
1446 this.set_dirty(true);
1445 return;
1447 return;
1446 }
1448 }
1447
1449
1448 this.insert_cell_below('code');
1450 this.insert_cell_below('code');
1449 this.select(cell_index+1);
1451 this.select(cell_index+1);
1450 this.edit_mode();
1452 this.edit_mode();
1451 this.set_dirty(true);
1453 this.set_dirty(true);
1452 };
1454 };
1453
1455
1454 /**
1456 /**
1455 * Execute or render cell outputs and select the next cell.
1457 * Execute or render cell outputs and select the next cell.
1456 *
1458 *
1457 * @method execute_cell_and_select_below
1459 * @method execute_cell_and_select_below
1458 */
1460 */
1459 Notebook.prototype.execute_cell_and_select_below = function () {
1461 Notebook.prototype.execute_cell_and_select_below = function () {
1460
1462
1461 var cell = this.get_selected_cell();
1463 var cell = this.get_selected_cell();
1462 var cell_index = this.find_cell_index(cell);
1464 var cell_index = this.find_cell_index(cell);
1463
1465
1464 cell.execute();
1466 cell.execute();
1465
1467
1466 // If we are at the end always insert a new cell and return
1468 // If we are at the end always insert a new cell and return
1467 if (cell_index === (this.ncells()-1)) {
1469 if (cell_index === (this.ncells()-1)) {
1468 this.insert_cell_below('code');
1470 this.insert_cell_below('code');
1469 this.select(cell_index+1);
1471 this.select(cell_index+1);
1470 this.edit_mode();
1472 this.edit_mode();
1471 this.scroll_to_bottom();
1473 this.scroll_to_bottom();
1472 this.set_dirty(true);
1474 this.set_dirty(true);
1473 return;
1475 return;
1474 }
1476 }
1475
1477
1476 this.select(cell_index+1);
1478 this.select(cell_index+1);
1477 this.get_cell(cell_index+1).focus_cell();
1479 this.get_cell(cell_index+1).focus_cell();
1478 this.set_dirty(true);
1480 this.set_dirty(true);
1479 };
1481 };
1480
1482
1481 /**
1483 /**
1482 * Execute all cells below the selected cell.
1484 * Execute all cells below the selected cell.
1483 *
1485 *
1484 * @method execute_cells_below
1486 * @method execute_cells_below
1485 */
1487 */
1486 Notebook.prototype.execute_cells_below = function () {
1488 Notebook.prototype.execute_cells_below = function () {
1487 this.execute_cell_range(this.get_selected_index(), this.ncells());
1489 this.execute_cell_range(this.get_selected_index(), this.ncells());
1488 this.scroll_to_bottom();
1490 this.scroll_to_bottom();
1489 };
1491 };
1490
1492
1491 /**
1493 /**
1492 * Execute all cells above the selected cell.
1494 * Execute all cells above the selected cell.
1493 *
1495 *
1494 * @method execute_cells_above
1496 * @method execute_cells_above
1495 */
1497 */
1496 Notebook.prototype.execute_cells_above = function () {
1498 Notebook.prototype.execute_cells_above = function () {
1497 this.execute_cell_range(0, this.get_selected_index());
1499 this.execute_cell_range(0, this.get_selected_index());
1498 };
1500 };
1499
1501
1500 /**
1502 /**
1501 * Execute all cells.
1503 * Execute all cells.
1502 *
1504 *
1503 * @method execute_all_cells
1505 * @method execute_all_cells
1504 */
1506 */
1505 Notebook.prototype.execute_all_cells = function () {
1507 Notebook.prototype.execute_all_cells = function () {
1506 this.execute_cell_range(0, this.ncells());
1508 this.execute_cell_range(0, this.ncells());
1507 this.scroll_to_bottom();
1509 this.scroll_to_bottom();
1508 };
1510 };
1509
1511
1510 /**
1512 /**
1511 * Execute a contiguous range of cells.
1513 * Execute a contiguous range of cells.
1512 *
1514 *
1513 * @method execute_cell_range
1515 * @method execute_cell_range
1514 * @param {Number} start Index of the first cell to execute (inclusive)
1516 * @param {Number} start Index of the first cell to execute (inclusive)
1515 * @param {Number} end Index of the last cell to execute (exclusive)
1517 * @param {Number} end Index of the last cell to execute (exclusive)
1516 */
1518 */
1517 Notebook.prototype.execute_cell_range = function (start, end) {
1519 Notebook.prototype.execute_cell_range = function (start, end) {
1518 for (var i=start; i<end; i++) {
1520 for (var i=start; i<end; i++) {
1519 this.select(i);
1521 this.select(i);
1520 this.execute_cell();
1522 this.execute_cell();
1521 };
1523 };
1522 };
1524 };
1523
1525
1524 // Persistance and loading
1526 // Persistance and loading
1525
1527
1526 /**
1528 /**
1527 * Getter method for this notebook's name.
1529 * Getter method for this notebook's name.
1528 *
1530 *
1529 * @method get_notebook_name
1531 * @method get_notebook_name
1530 * @return {String} This notebook's name
1532 * @return {String} This notebook's name
1531 */
1533 */
1532 Notebook.prototype.get_notebook_name = function () {
1534 Notebook.prototype.get_notebook_name = function () {
1533 var nbname = this.notebook_name.substring(0,this.notebook_name.length-6);
1535 var nbname = this.notebook_name.substring(0,this.notebook_name.length-6);
1534 return nbname;
1536 return nbname;
1535 };
1537 };
1536
1538
1537 /**
1539 /**
1538 * Setter method for this notebook's name.
1540 * Setter method for this notebook's name.
1539 *
1541 *
1540 * @method set_notebook_name
1542 * @method set_notebook_name
1541 * @param {String} name A new name for this notebook
1543 * @param {String} name A new name for this notebook
1542 */
1544 */
1543 Notebook.prototype.set_notebook_name = function (name) {
1545 Notebook.prototype.set_notebook_name = function (name) {
1544 this.notebook_name = name;
1546 this.notebook_name = name;
1545 };
1547 };
1546
1548
1547 /**
1549 /**
1548 * Check that a notebook's name is valid.
1550 * Check that a notebook's name is valid.
1549 *
1551 *
1550 * @method test_notebook_name
1552 * @method test_notebook_name
1551 * @param {String} nbname A name for this notebook
1553 * @param {String} nbname A name for this notebook
1552 * @return {Boolean} True if the name is valid, false if invalid
1554 * @return {Boolean} True if the name is valid, false if invalid
1553 */
1555 */
1554 Notebook.prototype.test_notebook_name = function (nbname) {
1556 Notebook.prototype.test_notebook_name = function (nbname) {
1555 nbname = nbname || '';
1557 nbname = nbname || '';
1556 if (this.notebook_name_blacklist_re.test(nbname) == false && nbname.length>0) {
1558 if (this.notebook_name_blacklist_re.test(nbname) == false && nbname.length>0) {
1557 return true;
1559 return true;
1558 } else {
1560 } else {
1559 return false;
1561 return false;
1560 };
1562 };
1561 };
1563 };
1562
1564
1563 /**
1565 /**
1564 * Load a notebook from JSON (.ipynb).
1566 * Load a notebook from JSON (.ipynb).
1565 *
1567 *
1566 * This currently handles one worksheet: others are deleted.
1568 * This currently handles one worksheet: others are deleted.
1567 *
1569 *
1568 * @method fromJSON
1570 * @method fromJSON
1569 * @param {Object} data JSON representation of a notebook
1571 * @param {Object} data JSON representation of a notebook
1570 */
1572 */
1571 Notebook.prototype.fromJSON = function (data) {
1573 Notebook.prototype.fromJSON = function (data) {
1572 var content = data.content;
1574 var content = data.content;
1573 var ncells = this.ncells();
1575 var ncells = this.ncells();
1574 var i;
1576 var i;
1575 for (i=0; i<ncells; i++) {
1577 for (i=0; i<ncells; i++) {
1576 // Always delete cell 0 as they get renumbered as they are deleted.
1578 // Always delete cell 0 as they get renumbered as they are deleted.
1577 this.delete_cell(0);
1579 this.delete_cell(0);
1578 };
1580 };
1579 // Save the metadata and name.
1581 // Save the metadata and name.
1580 this.metadata = content.metadata;
1582 this.metadata = content.metadata;
1581 this.notebook_name = data.name;
1583 this.notebook_name = data.name;
1582 // Only handle 1 worksheet for now.
1584 // Only handle 1 worksheet for now.
1583 var worksheet = content.worksheets[0];
1585 var worksheet = content.worksheets[0];
1584 if (worksheet !== undefined) {
1586 if (worksheet !== undefined) {
1585 if (worksheet.metadata) {
1587 if (worksheet.metadata) {
1586 this.worksheet_metadata = worksheet.metadata;
1588 this.worksheet_metadata = worksheet.metadata;
1587 }
1589 }
1588 var new_cells = worksheet.cells;
1590 var new_cells = worksheet.cells;
1589 ncells = new_cells.length;
1591 ncells = new_cells.length;
1590 var cell_data = null;
1592 var cell_data = null;
1591 var new_cell = null;
1593 var new_cell = null;
1592 for (i=0; i<ncells; i++) {
1594 for (i=0; i<ncells; i++) {
1593 cell_data = new_cells[i];
1595 cell_data = new_cells[i];
1594 // VERSIONHACK: plaintext -> raw
1596 // VERSIONHACK: plaintext -> raw
1595 // handle never-released plaintext name for raw cells
1597 // handle never-released plaintext name for raw cells
1596 if (cell_data.cell_type === 'plaintext'){
1598 if (cell_data.cell_type === 'plaintext'){
1597 cell_data.cell_type = 'raw';
1599 cell_data.cell_type = 'raw';
1598 }
1600 }
1599
1601
1600 new_cell = this.insert_cell_at_index(cell_data.cell_type, i);
1602 new_cell = this.insert_cell_at_index(cell_data.cell_type, i);
1601 new_cell.fromJSON(cell_data);
1603 new_cell.fromJSON(cell_data);
1602 };
1604 };
1603 };
1605 };
1604 if (content.worksheets.length > 1) {
1606 if (content.worksheets.length > 1) {
1605 IPython.dialog.modal({
1607 IPython.dialog.modal({
1606 title : "Multiple worksheets",
1608 title : "Multiple worksheets",
1607 body : "This notebook has " + data.worksheets.length + " worksheets, " +
1609 body : "This notebook has " + data.worksheets.length + " worksheets, " +
1608 "but this version of IPython can only handle the first. " +
1610 "but this version of IPython can only handle the first. " +
1609 "If you save this notebook, worksheets after the first will be lost.",
1611 "If you save this notebook, worksheets after the first will be lost.",
1610 buttons : {
1612 buttons : {
1611 OK : {
1613 OK : {
1612 class : "btn-danger"
1614 class : "btn-danger"
1613 }
1615 }
1614 }
1616 }
1615 });
1617 });
1616 }
1618 }
1617 };
1619 };
1618
1620
1619 /**
1621 /**
1620 * Dump this notebook into a JSON-friendly object.
1622 * Dump this notebook into a JSON-friendly object.
1621 *
1623 *
1622 * @method toJSON
1624 * @method toJSON
1623 * @return {Object} A JSON-friendly representation of this notebook.
1625 * @return {Object} A JSON-friendly representation of this notebook.
1624 */
1626 */
1625 Notebook.prototype.toJSON = function () {
1627 Notebook.prototype.toJSON = function () {
1626 var cells = this.get_cells();
1628 var cells = this.get_cells();
1627 var ncells = cells.length;
1629 var ncells = cells.length;
1628 var cell_array = new Array(ncells);
1630 var cell_array = new Array(ncells);
1629 for (var i=0; i<ncells; i++) {
1631 for (var i=0; i<ncells; i++) {
1630 cell_array[i] = cells[i].toJSON();
1632 cell_array[i] = cells[i].toJSON();
1631 };
1633 };
1632 var data = {
1634 var data = {
1633 // Only handle 1 worksheet for now.
1635 // Only handle 1 worksheet for now.
1634 worksheets : [{
1636 worksheets : [{
1635 cells: cell_array,
1637 cells: cell_array,
1636 metadata: this.worksheet_metadata
1638 metadata: this.worksheet_metadata
1637 }],
1639 }],
1638 metadata : this.metadata
1640 metadata : this.metadata
1639 };
1641 };
1640 return data;
1642 return data;
1641 };
1643 };
1642
1644
1643 /**
1645 /**
1644 * Start an autosave timer, for periodically saving the notebook.
1646 * Start an autosave timer, for periodically saving the notebook.
1645 *
1647 *
1646 * @method set_autosave_interval
1648 * @method set_autosave_interval
1647 * @param {Integer} interval the autosave interval in milliseconds
1649 * @param {Integer} interval the autosave interval in milliseconds
1648 */
1650 */
1649 Notebook.prototype.set_autosave_interval = function (interval) {
1651 Notebook.prototype.set_autosave_interval = function (interval) {
1650 var that = this;
1652 var that = this;
1651 // clear previous interval, so we don't get simultaneous timers
1653 // clear previous interval, so we don't get simultaneous timers
1652 if (this.autosave_timer) {
1654 if (this.autosave_timer) {
1653 clearInterval(this.autosave_timer);
1655 clearInterval(this.autosave_timer);
1654 }
1656 }
1655
1657
1656 this.autosave_interval = this.minimum_autosave_interval = interval;
1658 this.autosave_interval = this.minimum_autosave_interval = interval;
1657 if (interval) {
1659 if (interval) {
1658 this.autosave_timer = setInterval(function() {
1660 this.autosave_timer = setInterval(function() {
1659 if (that.dirty) {
1661 if (that.dirty) {
1660 that.save_notebook();
1662 that.save_notebook();
1661 }
1663 }
1662 }, interval);
1664 }, interval);
1663 $([IPython.events]).trigger("autosave_enabled.Notebook", interval);
1665 $([IPython.events]).trigger("autosave_enabled.Notebook", interval);
1664 } else {
1666 } else {
1665 this.autosave_timer = null;
1667 this.autosave_timer = null;
1666 $([IPython.events]).trigger("autosave_disabled.Notebook");
1668 $([IPython.events]).trigger("autosave_disabled.Notebook");
1667 };
1669 };
1668 };
1670 };
1669
1671
1670 /**
1672 /**
1671 * Save this notebook on the server.
1673 * Save this notebook on the server.
1672 *
1674 *
1673 * @method save_notebook
1675 * @method save_notebook
1674 */
1676 */
1675 Notebook.prototype.save_notebook = function (extra_settings) {
1677 Notebook.prototype.save_notebook = function (extra_settings) {
1676 // Create a JSON model to be sent to the server.
1678 // Create a JSON model to be sent to the server.
1677 var model = {};
1679 var model = {};
1678 model.name = this.notebook_name;
1680 model.name = this.notebook_name;
1679 model.path = this.notebook_path;
1681 model.path = this.notebook_path;
1680 model.content = this.toJSON();
1682 model.content = this.toJSON();
1681 model.content.nbformat = this.nbformat;
1683 model.content.nbformat = this.nbformat;
1682 model.content.nbformat_minor = this.nbformat_minor;
1684 model.content.nbformat_minor = this.nbformat_minor;
1683 // time the ajax call for autosave tuning purposes.
1685 // time the ajax call for autosave tuning purposes.
1684 var start = new Date().getTime();
1686 var start = new Date().getTime();
1685 // We do the call with settings so we can set cache to false.
1687 // We do the call with settings so we can set cache to false.
1686 var settings = {
1688 var settings = {
1687 processData : false,
1689 processData : false,
1688 cache : false,
1690 cache : false,
1689 type : "PUT",
1691 type : "PUT",
1690 data : JSON.stringify(model),
1692 data : JSON.stringify(model),
1691 headers : {'Content-Type': 'application/json'},
1693 headers : {'Content-Type': 'application/json'},
1692 success : $.proxy(this.save_notebook_success, this, start),
1694 success : $.proxy(this.save_notebook_success, this, start),
1693 error : $.proxy(this.save_notebook_error, this)
1695 error : $.proxy(this.save_notebook_error, this)
1694 };
1696 };
1695 if (extra_settings) {
1697 if (extra_settings) {
1696 for (var key in extra_settings) {
1698 for (var key in extra_settings) {
1697 settings[key] = extra_settings[key];
1699 settings[key] = extra_settings[key];
1698 }
1700 }
1699 }
1701 }
1700 $([IPython.events]).trigger('notebook_saving.Notebook');
1702 $([IPython.events]).trigger('notebook_saving.Notebook');
1701 var url = utils.url_join_encode(
1703 var url = utils.url_join_encode(
1702 this._baseProjectUrl,
1704 this._baseProjectUrl,
1703 'api/notebooks',
1705 'api/notebooks',
1704 this.notebook_path,
1706 this.notebook_path,
1705 this.notebook_name
1707 this.notebook_name
1706 );
1708 );
1707 $.ajax(url, settings);
1709 $.ajax(url, settings);
1708 };
1710 };
1709
1711
1710 /**
1712 /**
1711 * Success callback for saving a notebook.
1713 * Success callback for saving a notebook.
1712 *
1714 *
1713 * @method save_notebook_success
1715 * @method save_notebook_success
1714 * @param {Integer} start the time when the save request started
1716 * @param {Integer} start the time when the save request started
1715 * @param {Object} data JSON representation of a notebook
1717 * @param {Object} data JSON representation of a notebook
1716 * @param {String} status Description of response status
1718 * @param {String} status Description of response status
1717 * @param {jqXHR} xhr jQuery Ajax object
1719 * @param {jqXHR} xhr jQuery Ajax object
1718 */
1720 */
1719 Notebook.prototype.save_notebook_success = function (start, data, status, xhr) {
1721 Notebook.prototype.save_notebook_success = function (start, data, status, xhr) {
1720 this.set_dirty(false);
1722 this.set_dirty(false);
1721 $([IPython.events]).trigger('notebook_saved.Notebook');
1723 $([IPython.events]).trigger('notebook_saved.Notebook');
1722 this._update_autosave_interval(start);
1724 this._update_autosave_interval(start);
1723 if (this._checkpoint_after_save) {
1725 if (this._checkpoint_after_save) {
1724 this.create_checkpoint();
1726 this.create_checkpoint();
1725 this._checkpoint_after_save = false;
1727 this._checkpoint_after_save = false;
1726 };
1728 };
1727 };
1729 };
1728
1730
1729 /**
1731 /**
1730 * update the autosave interval based on how long the last save took
1732 * update the autosave interval based on how long the last save took
1731 *
1733 *
1732 * @method _update_autosave_interval
1734 * @method _update_autosave_interval
1733 * @param {Integer} timestamp when the save request started
1735 * @param {Integer} timestamp when the save request started
1734 */
1736 */
1735 Notebook.prototype._update_autosave_interval = function (start) {
1737 Notebook.prototype._update_autosave_interval = function (start) {
1736 var duration = (new Date().getTime() - start);
1738 var duration = (new Date().getTime() - start);
1737 if (this.autosave_interval) {
1739 if (this.autosave_interval) {
1738 // new save interval: higher of 10x save duration or parameter (default 30 seconds)
1740 // new save interval: higher of 10x save duration or parameter (default 30 seconds)
1739 var interval = Math.max(10 * duration, this.minimum_autosave_interval);
1741 var interval = Math.max(10 * duration, this.minimum_autosave_interval);
1740 // round to 10 seconds, otherwise we will be setting a new interval too often
1742 // round to 10 seconds, otherwise we will be setting a new interval too often
1741 interval = 10000 * Math.round(interval / 10000);
1743 interval = 10000 * Math.round(interval / 10000);
1742 // set new interval, if it's changed
1744 // set new interval, if it's changed
1743 if (interval != this.autosave_interval) {
1745 if (interval != this.autosave_interval) {
1744 this.set_autosave_interval(interval);
1746 this.set_autosave_interval(interval);
1745 }
1747 }
1746 }
1748 }
1747 };
1749 };
1748
1750
1749 /**
1751 /**
1750 * Failure callback for saving a notebook.
1752 * Failure callback for saving a notebook.
1751 *
1753 *
1752 * @method save_notebook_error
1754 * @method save_notebook_error
1753 * @param {jqXHR} xhr jQuery Ajax object
1755 * @param {jqXHR} xhr jQuery Ajax object
1754 * @param {String} status Description of response status
1756 * @param {String} status Description of response status
1755 * @param {String} error HTTP error message
1757 * @param {String} error HTTP error message
1756 */
1758 */
1757 Notebook.prototype.save_notebook_error = function (xhr, status, error) {
1759 Notebook.prototype.save_notebook_error = function (xhr, status, error) {
1758 $([IPython.events]).trigger('notebook_save_failed.Notebook', [xhr, status, error]);
1760 $([IPython.events]).trigger('notebook_save_failed.Notebook', [xhr, status, error]);
1759 };
1761 };
1760
1762
1761 Notebook.prototype.new_notebook = function(){
1763 Notebook.prototype.new_notebook = function(){
1762 var path = this.notebook_path;
1764 var path = this.notebook_path;
1763 var base_project_url = this._baseProjectUrl;
1765 var base_project_url = this._baseProjectUrl;
1764 var settings = {
1766 var settings = {
1765 processData : false,
1767 processData : false,
1766 cache : false,
1768 cache : false,
1767 type : "POST",
1769 type : "POST",
1768 dataType : "json",
1770 dataType : "json",
1769 async : false,
1771 async : false,
1770 success : function (data, status, xhr){
1772 success : function (data, status, xhr){
1771 var notebook_name = data.name;
1773 var notebook_name = data.name;
1772 window.open(
1774 window.open(
1773 utils.url_join_encode(
1775 utils.url_join_encode(
1774 base_project_url,
1776 base_project_url,
1775 'notebooks',
1777 'notebooks',
1776 path,
1778 path,
1777 notebook_name
1779 notebook_name
1778 ),
1780 ),
1779 '_blank'
1781 '_blank'
1780 );
1782 );
1781 }
1783 }
1782 };
1784 };
1783 var url = utils.url_join_encode(
1785 var url = utils.url_join_encode(
1784 base_project_url,
1786 base_project_url,
1785 'api/notebooks',
1787 'api/notebooks',
1786 path
1788 path
1787 );
1789 );
1788 $.ajax(url,settings);
1790 $.ajax(url,settings);
1789 };
1791 };
1790
1792
1791
1793
1792 Notebook.prototype.copy_notebook = function(){
1794 Notebook.prototype.copy_notebook = function(){
1793 var path = this.notebook_path;
1795 var path = this.notebook_path;
1794 var base_project_url = this._baseProjectUrl;
1796 var base_project_url = this._baseProjectUrl;
1795 var settings = {
1797 var settings = {
1796 processData : false,
1798 processData : false,
1797 cache : false,
1799 cache : false,
1798 type : "POST",
1800 type : "POST",
1799 dataType : "json",
1801 dataType : "json",
1800 data : JSON.stringify({copy_from : this.notebook_name}),
1802 data : JSON.stringify({copy_from : this.notebook_name}),
1801 async : false,
1803 async : false,
1802 success : function (data, status, xhr) {
1804 success : function (data, status, xhr) {
1803 window.open(utils.url_join_encode(
1805 window.open(utils.url_join_encode(
1804 base_project_url,
1806 base_project_url,
1805 'notebooks',
1807 'notebooks',
1806 data.path,
1808 data.path,
1807 data.name
1809 data.name
1808 ), '_blank');
1810 ), '_blank');
1809 }
1811 }
1810 };
1812 };
1811 var url = utils.url_join_encode(
1813 var url = utils.url_join_encode(
1812 base_project_url,
1814 base_project_url,
1813 'api/notebooks',
1815 'api/notebooks',
1814 path
1816 path
1815 );
1817 );
1816 $.ajax(url,settings);
1818 $.ajax(url,settings);
1817 };
1819 };
1818
1820
1819 Notebook.prototype.rename = function (nbname) {
1821 Notebook.prototype.rename = function (nbname) {
1820 var that = this;
1822 var that = this;
1821 var data = {name: nbname + '.ipynb'};
1823 var data = {name: nbname + '.ipynb'};
1822 var settings = {
1824 var settings = {
1823 processData : false,
1825 processData : false,
1824 cache : false,
1826 cache : false,
1825 type : "PATCH",
1827 type : "PATCH",
1826 data : JSON.stringify(data),
1828 data : JSON.stringify(data),
1827 dataType: "json",
1829 dataType: "json",
1828 headers : {'Content-Type': 'application/json'},
1830 headers : {'Content-Type': 'application/json'},
1829 success : $.proxy(that.rename_success, this),
1831 success : $.proxy(that.rename_success, this),
1830 error : $.proxy(that.rename_error, this)
1832 error : $.proxy(that.rename_error, this)
1831 };
1833 };
1832 $([IPython.events]).trigger('rename_notebook.Notebook', data);
1834 $([IPython.events]).trigger('rename_notebook.Notebook', data);
1833 var url = utils.url_join_encode(
1835 var url = utils.url_join_encode(
1834 this._baseProjectUrl,
1836 this._baseProjectUrl,
1835 'api/notebooks',
1837 'api/notebooks',
1836 this.notebook_path,
1838 this.notebook_path,
1837 this.notebook_name
1839 this.notebook_name
1838 );
1840 );
1839 $.ajax(url, settings);
1841 $.ajax(url, settings);
1840 };
1842 };
1841
1843
1842 Notebook.prototype.delete = function () {
1844 Notebook.prototype.delete = function () {
1843 var that = this;
1845 var that = this;
1844 var settings = {
1846 var settings = {
1845 processData : false,
1847 processData : false,
1846 cache : false,
1848 cache : false,
1847 type : "DELETE",
1849 type : "DELETE",
1848 dataType: "json",
1850 dataType: "json",
1849 };
1851 };
1850 var url = utils.url_join_encode(
1852 var url = utils.url_join_encode(
1851 this._baseProjectUrl,
1853 this._baseProjectUrl,
1852 'api/notebooks',
1854 'api/notebooks',
1853 this.notebook_path,
1855 this.notebook_path,
1854 this.notebook_name
1856 this.notebook_name
1855 );
1857 );
1856 $.ajax(url, settings);
1858 $.ajax(url, settings);
1857 };
1859 };
1858
1860
1859
1861
1860 Notebook.prototype.rename_success = function (json, status, xhr) {
1862 Notebook.prototype.rename_success = function (json, status, xhr) {
1861 this.notebook_name = json.name;
1863 this.notebook_name = json.name;
1862 var name = this.notebook_name;
1864 var name = this.notebook_name;
1863 var path = json.path;
1865 var path = json.path;
1864 this.session.rename_notebook(name, path);
1866 this.session.rename_notebook(name, path);
1865 $([IPython.events]).trigger('notebook_renamed.Notebook', json);
1867 $([IPython.events]).trigger('notebook_renamed.Notebook', json);
1866 }
1868 }
1867
1869
1868 Notebook.prototype.rename_error = function (xhr, status, error) {
1870 Notebook.prototype.rename_error = function (xhr, status, error) {
1869 var that = this;
1871 var that = this;
1870 var dialog = $('<div/>').append(
1872 var dialog = $('<div/>').append(
1871 $("<p/>").addClass("rename-message")
1873 $("<p/>").addClass("rename-message")
1872 .text('This notebook name already exists.')
1874 .text('This notebook name already exists.')
1873 )
1875 )
1874 $([IPython.events]).trigger('notebook_rename_failed.Notebook', [xhr, status, error]);
1876 $([IPython.events]).trigger('notebook_rename_failed.Notebook', [xhr, status, error]);
1875 IPython.dialog.modal({
1877 IPython.dialog.modal({
1876 title: "Notebook Rename Error!",
1878 title: "Notebook Rename Error!",
1877 body: dialog,
1879 body: dialog,
1878 buttons : {
1880 buttons : {
1879 "Cancel": {},
1881 "Cancel": {},
1880 "OK": {
1882 "OK": {
1881 class: "btn-primary",
1883 class: "btn-primary",
1882 click: function () {
1884 click: function () {
1883 IPython.save_widget.rename_notebook();
1885 IPython.save_widget.rename_notebook();
1884 }}
1886 }}
1885 },
1887 },
1886 open : function (event, ui) {
1888 open : function (event, ui) {
1887 var that = $(this);
1889 var that = $(this);
1888 // Upon ENTER, click the OK button.
1890 // Upon ENTER, click the OK button.
1889 that.find('input[type="text"]').keydown(function (event, ui) {
1891 that.find('input[type="text"]').keydown(function (event, ui) {
1890 if (event.which === utils.keycodes.ENTER) {
1892 if (event.which === utils.keycodes.ENTER) {
1891 that.find('.btn-primary').first().click();
1893 that.find('.btn-primary').first().click();
1892 }
1894 }
1893 });
1895 });
1894 that.find('input[type="text"]').focus();
1896 that.find('input[type="text"]').focus();
1895 }
1897 }
1896 });
1898 });
1897 }
1899 }
1898
1900
1899 /**
1901 /**
1900 * Request a notebook's data from the server.
1902 * Request a notebook's data from the server.
1901 *
1903 *
1902 * @method load_notebook
1904 * @method load_notebook
1903 * @param {String} notebook_name and path A notebook to load
1905 * @param {String} notebook_name and path A notebook to load
1904 */
1906 */
1905 Notebook.prototype.load_notebook = function (notebook_name, notebook_path) {
1907 Notebook.prototype.load_notebook = function (notebook_name, notebook_path) {
1906 var that = this;
1908 var that = this;
1907 this.notebook_name = notebook_name;
1909 this.notebook_name = notebook_name;
1908 this.notebook_path = notebook_path;
1910 this.notebook_path = notebook_path;
1909 // We do the call with settings so we can set cache to false.
1911 // We do the call with settings so we can set cache to false.
1910 var settings = {
1912 var settings = {
1911 processData : false,
1913 processData : false,
1912 cache : false,
1914 cache : false,
1913 type : "GET",
1915 type : "GET",
1914 dataType : "json",
1916 dataType : "json",
1915 success : $.proxy(this.load_notebook_success,this),
1917 success : $.proxy(this.load_notebook_success,this),
1916 error : $.proxy(this.load_notebook_error,this),
1918 error : $.proxy(this.load_notebook_error,this),
1917 };
1919 };
1918 $([IPython.events]).trigger('notebook_loading.Notebook');
1920 $([IPython.events]).trigger('notebook_loading.Notebook');
1919 var url = utils.url_join_encode(
1921 var url = utils.url_join_encode(
1920 this._baseProjectUrl,
1922 this._baseProjectUrl,
1921 'api/notebooks',
1923 'api/notebooks',
1922 this.notebook_path,
1924 this.notebook_path,
1923 this.notebook_name
1925 this.notebook_name
1924 );
1926 );
1925 $.ajax(url, settings);
1927 $.ajax(url, settings);
1926 };
1928 };
1927
1929
1928 /**
1930 /**
1929 * Success callback for loading a notebook from the server.
1931 * Success callback for loading a notebook from the server.
1930 *
1932 *
1931 * Load notebook data from the JSON response.
1933 * Load notebook data from the JSON response.
1932 *
1934 *
1933 * @method load_notebook_success
1935 * @method load_notebook_success
1934 * @param {Object} data JSON representation of a notebook
1936 * @param {Object} data JSON representation of a notebook
1935 * @param {String} status Description of response status
1937 * @param {String} status Description of response status
1936 * @param {jqXHR} xhr jQuery Ajax object
1938 * @param {jqXHR} xhr jQuery Ajax object
1937 */
1939 */
1938 Notebook.prototype.load_notebook_success = function (data, status, xhr) {
1940 Notebook.prototype.load_notebook_success = function (data, status, xhr) {
1939 this.fromJSON(data);
1941 this.fromJSON(data);
1940 if (this.ncells() === 0) {
1942 if (this.ncells() === 0) {
1941 this.insert_cell_below('code');
1943 this.insert_cell_below('code');
1942 this.select(0);
1944 this.select(0);
1943 this.edit_mode();
1945 this.edit_mode();
1944 } else {
1946 } else {
1945 this.select(0);
1947 this.select(0);
1946 this.command_mode();
1948 this.command_mode();
1947 };
1949 };
1948 this.set_dirty(false);
1950 this.set_dirty(false);
1949 this.scroll_to_top();
1951 this.scroll_to_top();
1950 if (data.orig_nbformat !== undefined && data.nbformat !== data.orig_nbformat) {
1952 if (data.orig_nbformat !== undefined && data.nbformat !== data.orig_nbformat) {
1951 var msg = "This notebook has been converted from an older " +
1953 var msg = "This notebook has been converted from an older " +
1952 "notebook format (v"+data.orig_nbformat+") to the current notebook " +
1954 "notebook format (v"+data.orig_nbformat+") to the current notebook " +
1953 "format (v"+data.nbformat+"). The next time you save this notebook, the " +
1955 "format (v"+data.nbformat+"). The next time you save this notebook, the " +
1954 "newer notebook format will be used and older versions of IPython " +
1956 "newer notebook format will be used and older versions of IPython " +
1955 "may not be able to read it. To keep the older version, close the " +
1957 "may not be able to read it. To keep the older version, close the " +
1956 "notebook without saving it.";
1958 "notebook without saving it.";
1957 IPython.dialog.modal({
1959 IPython.dialog.modal({
1958 title : "Notebook converted",
1960 title : "Notebook converted",
1959 body : msg,
1961 body : msg,
1960 buttons : {
1962 buttons : {
1961 OK : {
1963 OK : {
1962 class : "btn-primary"
1964 class : "btn-primary"
1963 }
1965 }
1964 }
1966 }
1965 });
1967 });
1966 } else if (data.orig_nbformat_minor !== undefined && data.nbformat_minor !== data.orig_nbformat_minor) {
1968 } else if (data.orig_nbformat_minor !== undefined && data.nbformat_minor !== data.orig_nbformat_minor) {
1967 var that = this;
1969 var that = this;
1968 var orig_vs = 'v' + data.nbformat + '.' + data.orig_nbformat_minor;
1970 var orig_vs = 'v' + data.nbformat + '.' + data.orig_nbformat_minor;
1969 var this_vs = 'v' + data.nbformat + '.' + this.nbformat_minor;
1971 var this_vs = 'v' + data.nbformat + '.' + this.nbformat_minor;
1970 var msg = "This notebook is version " + orig_vs + ", but we only fully support up to " +
1972 var msg = "This notebook is version " + orig_vs + ", but we only fully support up to " +
1971 this_vs + ". You can still work with this notebook, but some features " +
1973 this_vs + ". You can still work with this notebook, but some features " +
1972 "introduced in later notebook versions may not be available."
1974 "introduced in later notebook versions may not be available."
1973
1975
1974 IPython.dialog.modal({
1976 IPython.dialog.modal({
1975 title : "Newer Notebook",
1977 title : "Newer Notebook",
1976 body : msg,
1978 body : msg,
1977 buttons : {
1979 buttons : {
1978 OK : {
1980 OK : {
1979 class : "btn-danger"
1981 class : "btn-danger"
1980 }
1982 }
1981 }
1983 }
1982 });
1984 });
1983
1985
1984 }
1986 }
1985
1987
1986 // Create the session after the notebook is completely loaded to prevent
1988 // Create the session after the notebook is completely loaded to prevent
1987 // code execution upon loading, which is a security risk.
1989 // code execution upon loading, which is a security risk.
1988 if (this.session == null) {
1990 if (this.session == null) {
1989 this.start_session();
1991 this.start_session();
1990 }
1992 }
1991 // load our checkpoint list
1993 // load our checkpoint list
1992 this.list_checkpoints();
1994 this.list_checkpoints();
1993
1995
1994 // load toolbar state
1996 // load toolbar state
1995 if (this.metadata.celltoolbar) {
1997 if (this.metadata.celltoolbar) {
1996 IPython.CellToolbar.global_show();
1998 IPython.CellToolbar.global_show();
1997 IPython.CellToolbar.activate_preset(this.metadata.celltoolbar);
1999 IPython.CellToolbar.activate_preset(this.metadata.celltoolbar);
1998 }
2000 }
1999
2001
2000 $([IPython.events]).trigger('notebook_loaded.Notebook');
2002 $([IPython.events]).trigger('notebook_loaded.Notebook');
2001 };
2003 };
2002
2004
2003 /**
2005 /**
2004 * Failure callback for loading a notebook from the server.
2006 * Failure callback for loading a notebook from the server.
2005 *
2007 *
2006 * @method load_notebook_error
2008 * @method load_notebook_error
2007 * @param {jqXHR} xhr jQuery Ajax object
2009 * @param {jqXHR} xhr jQuery Ajax object
2008 * @param {String} status Description of response status
2010 * @param {String} status Description of response status
2009 * @param {String} error HTTP error message
2011 * @param {String} error HTTP error message
2010 */
2012 */
2011 Notebook.prototype.load_notebook_error = function (xhr, status, error) {
2013 Notebook.prototype.load_notebook_error = function (xhr, status, error) {
2012 $([IPython.events]).trigger('notebook_load_failed.Notebook', [xhr, status, error]);
2014 $([IPython.events]).trigger('notebook_load_failed.Notebook', [xhr, status, error]);
2013 if (xhr.status === 400) {
2015 if (xhr.status === 400) {
2014 var msg = error;
2016 var msg = error;
2015 } else if (xhr.status === 500) {
2017 } else if (xhr.status === 500) {
2016 var msg = "An unknown error occurred while loading this notebook. " +
2018 var msg = "An unknown error occurred while loading this notebook. " +
2017 "This version can load notebook formats " +
2019 "This version can load notebook formats " +
2018 "v" + this.nbformat + " or earlier.";
2020 "v" + this.nbformat + " or earlier.";
2019 }
2021 }
2020 IPython.dialog.modal({
2022 IPython.dialog.modal({
2021 title: "Error loading notebook",
2023 title: "Error loading notebook",
2022 body : msg,
2024 body : msg,
2023 buttons : {
2025 buttons : {
2024 "OK": {}
2026 "OK": {}
2025 }
2027 }
2026 });
2028 });
2027 }
2029 }
2028
2030
2029 /********************* checkpoint-related *********************/
2031 /********************* checkpoint-related *********************/
2030
2032
2031 /**
2033 /**
2032 * Save the notebook then immediately create a checkpoint.
2034 * Save the notebook then immediately create a checkpoint.
2033 *
2035 *
2034 * @method save_checkpoint
2036 * @method save_checkpoint
2035 */
2037 */
2036 Notebook.prototype.save_checkpoint = function () {
2038 Notebook.prototype.save_checkpoint = function () {
2037 this._checkpoint_after_save = true;
2039 this._checkpoint_after_save = true;
2038 this.save_notebook();
2040 this.save_notebook();
2039 };
2041 };
2040
2042
2041 /**
2043 /**
2042 * Add a checkpoint for this notebook.
2044 * Add a checkpoint for this notebook.
2043 * for use as a callback from checkpoint creation.
2045 * for use as a callback from checkpoint creation.
2044 *
2046 *
2045 * @method add_checkpoint
2047 * @method add_checkpoint
2046 */
2048 */
2047 Notebook.prototype.add_checkpoint = function (checkpoint) {
2049 Notebook.prototype.add_checkpoint = function (checkpoint) {
2048 var found = false;
2050 var found = false;
2049 for (var i = 0; i < this.checkpoints.length; i++) {
2051 for (var i = 0; i < this.checkpoints.length; i++) {
2050 var existing = this.checkpoints[i];
2052 var existing = this.checkpoints[i];
2051 if (existing.id == checkpoint.id) {
2053 if (existing.id == checkpoint.id) {
2052 found = true;
2054 found = true;
2053 this.checkpoints[i] = checkpoint;
2055 this.checkpoints[i] = checkpoint;
2054 break;
2056 break;
2055 }
2057 }
2056 }
2058 }
2057 if (!found) {
2059 if (!found) {
2058 this.checkpoints.push(checkpoint);
2060 this.checkpoints.push(checkpoint);
2059 }
2061 }
2060 this.last_checkpoint = this.checkpoints[this.checkpoints.length - 1];
2062 this.last_checkpoint = this.checkpoints[this.checkpoints.length - 1];
2061 };
2063 };
2062
2064
2063 /**
2065 /**
2064 * List checkpoints for this notebook.
2066 * List checkpoints for this notebook.
2065 *
2067 *
2066 * @method list_checkpoints
2068 * @method list_checkpoints
2067 */
2069 */
2068 Notebook.prototype.list_checkpoints = function () {
2070 Notebook.prototype.list_checkpoints = function () {
2069 var url = utils.url_join_encode(
2071 var url = utils.url_join_encode(
2070 this._baseProjectUrl,
2072 this._baseProjectUrl,
2071 'api/notebooks',
2073 'api/notebooks',
2072 this.notebook_path,
2074 this.notebook_path,
2073 this.notebook_name,
2075 this.notebook_name,
2074 'checkpoints'
2076 'checkpoints'
2075 );
2077 );
2076 $.get(url).done(
2078 $.get(url).done(
2077 $.proxy(this.list_checkpoints_success, this)
2079 $.proxy(this.list_checkpoints_success, this)
2078 ).fail(
2080 ).fail(
2079 $.proxy(this.list_checkpoints_error, this)
2081 $.proxy(this.list_checkpoints_error, this)
2080 );
2082 );
2081 };
2083 };
2082
2084
2083 /**
2085 /**
2084 * Success callback for listing checkpoints.
2086 * Success callback for listing checkpoints.
2085 *
2087 *
2086 * @method list_checkpoint_success
2088 * @method list_checkpoint_success
2087 * @param {Object} data JSON representation of a checkpoint
2089 * @param {Object} data JSON representation of a checkpoint
2088 * @param {String} status Description of response status
2090 * @param {String} status Description of response status
2089 * @param {jqXHR} xhr jQuery Ajax object
2091 * @param {jqXHR} xhr jQuery Ajax object
2090 */
2092 */
2091 Notebook.prototype.list_checkpoints_success = function (data, status, xhr) {
2093 Notebook.prototype.list_checkpoints_success = function (data, status, xhr) {
2092 var data = $.parseJSON(data);
2094 var data = $.parseJSON(data);
2093 this.checkpoints = data;
2095 this.checkpoints = data;
2094 if (data.length) {
2096 if (data.length) {
2095 this.last_checkpoint = data[data.length - 1];
2097 this.last_checkpoint = data[data.length - 1];
2096 } else {
2098 } else {
2097 this.last_checkpoint = null;
2099 this.last_checkpoint = null;
2098 }
2100 }
2099 $([IPython.events]).trigger('checkpoints_listed.Notebook', [data]);
2101 $([IPython.events]).trigger('checkpoints_listed.Notebook', [data]);
2100 };
2102 };
2101
2103
2102 /**
2104 /**
2103 * Failure callback for listing a checkpoint.
2105 * Failure callback for listing a checkpoint.
2104 *
2106 *
2105 * @method list_checkpoint_error
2107 * @method list_checkpoint_error
2106 * @param {jqXHR} xhr jQuery Ajax object
2108 * @param {jqXHR} xhr jQuery Ajax object
2107 * @param {String} status Description of response status
2109 * @param {String} status Description of response status
2108 * @param {String} error_msg HTTP error message
2110 * @param {String} error_msg HTTP error message
2109 */
2111 */
2110 Notebook.prototype.list_checkpoints_error = function (xhr, status, error_msg) {
2112 Notebook.prototype.list_checkpoints_error = function (xhr, status, error_msg) {
2111 $([IPython.events]).trigger('list_checkpoints_failed.Notebook');
2113 $([IPython.events]).trigger('list_checkpoints_failed.Notebook');
2112 };
2114 };
2113
2115
2114 /**
2116 /**
2115 * Create a checkpoint of this notebook on the server from the most recent save.
2117 * Create a checkpoint of this notebook on the server from the most recent save.
2116 *
2118 *
2117 * @method create_checkpoint
2119 * @method create_checkpoint
2118 */
2120 */
2119 Notebook.prototype.create_checkpoint = function () {
2121 Notebook.prototype.create_checkpoint = function () {
2120 var url = utils.url_join_encode(
2122 var url = utils.url_join_encode(
2121 this._baseProjectUrl,
2123 this._baseProjectUrl,
2122 'api/notebooks',
2124 'api/notebooks',
2123 this.notebookPath(),
2125 this.notebookPath(),
2124 this.notebook_name,
2126 this.notebook_name,
2125 'checkpoints'
2127 'checkpoints'
2126 );
2128 );
2127 $.post(url).done(
2129 $.post(url).done(
2128 $.proxy(this.create_checkpoint_success, this)
2130 $.proxy(this.create_checkpoint_success, this)
2129 ).fail(
2131 ).fail(
2130 $.proxy(this.create_checkpoint_error, this)
2132 $.proxy(this.create_checkpoint_error, this)
2131 );
2133 );
2132 };
2134 };
2133
2135
2134 /**
2136 /**
2135 * Success callback for creating a checkpoint.
2137 * Success callback for creating a checkpoint.
2136 *
2138 *
2137 * @method create_checkpoint_success
2139 * @method create_checkpoint_success
2138 * @param {Object} data JSON representation of a checkpoint
2140 * @param {Object} data JSON representation of a checkpoint
2139 * @param {String} status Description of response status
2141 * @param {String} status Description of response status
2140 * @param {jqXHR} xhr jQuery Ajax object
2142 * @param {jqXHR} xhr jQuery Ajax object
2141 */
2143 */
2142 Notebook.prototype.create_checkpoint_success = function (data, status, xhr) {
2144 Notebook.prototype.create_checkpoint_success = function (data, status, xhr) {
2143 var data = $.parseJSON(data);
2145 var data = $.parseJSON(data);
2144 this.add_checkpoint(data);
2146 this.add_checkpoint(data);
2145 $([IPython.events]).trigger('checkpoint_created.Notebook', data);
2147 $([IPython.events]).trigger('checkpoint_created.Notebook', data);
2146 };
2148 };
2147
2149
2148 /**
2150 /**
2149 * Failure callback for creating a checkpoint.
2151 * Failure callback for creating a checkpoint.
2150 *
2152 *
2151 * @method create_checkpoint_error
2153 * @method create_checkpoint_error
2152 * @param {jqXHR} xhr jQuery Ajax object
2154 * @param {jqXHR} xhr jQuery Ajax object
2153 * @param {String} status Description of response status
2155 * @param {String} status Description of response status
2154 * @param {String} error_msg HTTP error message
2156 * @param {String} error_msg HTTP error message
2155 */
2157 */
2156 Notebook.prototype.create_checkpoint_error = function (xhr, status, error_msg) {
2158 Notebook.prototype.create_checkpoint_error = function (xhr, status, error_msg) {
2157 $([IPython.events]).trigger('checkpoint_failed.Notebook');
2159 $([IPython.events]).trigger('checkpoint_failed.Notebook');
2158 };
2160 };
2159
2161
2160 Notebook.prototype.restore_checkpoint_dialog = function (checkpoint) {
2162 Notebook.prototype.restore_checkpoint_dialog = function (checkpoint) {
2161 var that = this;
2163 var that = this;
2162 var checkpoint = checkpoint || this.last_checkpoint;
2164 var checkpoint = checkpoint || this.last_checkpoint;
2163 if ( ! checkpoint ) {
2165 if ( ! checkpoint ) {
2164 console.log("restore dialog, but no checkpoint to restore to!");
2166 console.log("restore dialog, but no checkpoint to restore to!");
2165 return;
2167 return;
2166 }
2168 }
2167 var body = $('<div/>').append(
2169 var body = $('<div/>').append(
2168 $('<p/>').addClass("p-space").text(
2170 $('<p/>').addClass("p-space").text(
2169 "Are you sure you want to revert the notebook to " +
2171 "Are you sure you want to revert the notebook to " +
2170 "the latest checkpoint?"
2172 "the latest checkpoint?"
2171 ).append(
2173 ).append(
2172 $("<strong/>").text(
2174 $("<strong/>").text(
2173 " This cannot be undone."
2175 " This cannot be undone."
2174 )
2176 )
2175 )
2177 )
2176 ).append(
2178 ).append(
2177 $('<p/>').addClass("p-space").text("The checkpoint was last updated at:")
2179 $('<p/>').addClass("p-space").text("The checkpoint was last updated at:")
2178 ).append(
2180 ).append(
2179 $('<p/>').addClass("p-space").text(
2181 $('<p/>').addClass("p-space").text(
2180 Date(checkpoint.last_modified)
2182 Date(checkpoint.last_modified)
2181 ).css("text-align", "center")
2183 ).css("text-align", "center")
2182 );
2184 );
2183
2185
2184 IPython.dialog.modal({
2186 IPython.dialog.modal({
2185 title : "Revert notebook to checkpoint",
2187 title : "Revert notebook to checkpoint",
2186 body : body,
2188 body : body,
2187 buttons : {
2189 buttons : {
2188 Revert : {
2190 Revert : {
2189 class : "btn-danger",
2191 class : "btn-danger",
2190 click : function () {
2192 click : function () {
2191 that.restore_checkpoint(checkpoint.id);
2193 that.restore_checkpoint(checkpoint.id);
2192 }
2194 }
2193 },
2195 },
2194 Cancel : {}
2196 Cancel : {}
2195 }
2197 }
2196 });
2198 });
2197 }
2199 }
2198
2200
2199 /**
2201 /**
2200 * Restore the notebook to a checkpoint state.
2202 * Restore the notebook to a checkpoint state.
2201 *
2203 *
2202 * @method restore_checkpoint
2204 * @method restore_checkpoint
2203 * @param {String} checkpoint ID
2205 * @param {String} checkpoint ID
2204 */
2206 */
2205 Notebook.prototype.restore_checkpoint = function (checkpoint) {
2207 Notebook.prototype.restore_checkpoint = function (checkpoint) {
2206 $([IPython.events]).trigger('notebook_restoring.Notebook', checkpoint);
2208 $([IPython.events]).trigger('notebook_restoring.Notebook', checkpoint);
2207 var url = utils.url_join_encode(
2209 var url = utils.url_join_encode(
2208 this._baseProjectUrl,
2210 this._baseProjectUrl,
2209 'api/notebooks',
2211 'api/notebooks',
2210 this.notebookPath(),
2212 this.notebookPath(),
2211 this.notebook_name,
2213 this.notebook_name,
2212 'checkpoints',
2214 'checkpoints',
2213 checkpoint
2215 checkpoint
2214 );
2216 );
2215 $.post(url).done(
2217 $.post(url).done(
2216 $.proxy(this.restore_checkpoint_success, this)
2218 $.proxy(this.restore_checkpoint_success, this)
2217 ).fail(
2219 ).fail(
2218 $.proxy(this.restore_checkpoint_error, this)
2220 $.proxy(this.restore_checkpoint_error, this)
2219 );
2221 );
2220 };
2222 };
2221
2223
2222 /**
2224 /**
2223 * Success callback for restoring a notebook to a checkpoint.
2225 * Success callback for restoring a notebook to a checkpoint.
2224 *
2226 *
2225 * @method restore_checkpoint_success
2227 * @method restore_checkpoint_success
2226 * @param {Object} data (ignored, should be empty)
2228 * @param {Object} data (ignored, should be empty)
2227 * @param {String} status Description of response status
2229 * @param {String} status Description of response status
2228 * @param {jqXHR} xhr jQuery Ajax object
2230 * @param {jqXHR} xhr jQuery Ajax object
2229 */
2231 */
2230 Notebook.prototype.restore_checkpoint_success = function (data, status, xhr) {
2232 Notebook.prototype.restore_checkpoint_success = function (data, status, xhr) {
2231 $([IPython.events]).trigger('checkpoint_restored.Notebook');
2233 $([IPython.events]).trigger('checkpoint_restored.Notebook');
2232 this.load_notebook(this.notebook_name, this.notebook_path);
2234 this.load_notebook(this.notebook_name, this.notebook_path);
2233 };
2235 };
2234
2236
2235 /**
2237 /**
2236 * Failure callback for restoring a notebook to a checkpoint.
2238 * Failure callback for restoring a notebook to a checkpoint.
2237 *
2239 *
2238 * @method restore_checkpoint_error
2240 * @method restore_checkpoint_error
2239 * @param {jqXHR} xhr jQuery Ajax object
2241 * @param {jqXHR} xhr jQuery Ajax object
2240 * @param {String} status Description of response status
2242 * @param {String} status Description of response status
2241 * @param {String} error_msg HTTP error message
2243 * @param {String} error_msg HTTP error message
2242 */
2244 */
2243 Notebook.prototype.restore_checkpoint_error = function (xhr, status, error_msg) {
2245 Notebook.prototype.restore_checkpoint_error = function (xhr, status, error_msg) {
2244 $([IPython.events]).trigger('checkpoint_restore_failed.Notebook');
2246 $([IPython.events]).trigger('checkpoint_restore_failed.Notebook');
2245 };
2247 };
2246
2248
2247 /**
2249 /**
2248 * Delete a notebook checkpoint.
2250 * Delete a notebook checkpoint.
2249 *
2251 *
2250 * @method delete_checkpoint
2252 * @method delete_checkpoint
2251 * @param {String} checkpoint ID
2253 * @param {String} checkpoint ID
2252 */
2254 */
2253 Notebook.prototype.delete_checkpoint = function (checkpoint) {
2255 Notebook.prototype.delete_checkpoint = function (checkpoint) {
2254 $([IPython.events]).trigger('notebook_restoring.Notebook', checkpoint);
2256 $([IPython.events]).trigger('notebook_restoring.Notebook', checkpoint);
2255 var url = utils.url_join_encode(
2257 var url = utils.url_join_encode(
2256 this._baseProjectUrl,
2258 this._baseProjectUrl,
2257 'api/notebooks',
2259 'api/notebooks',
2258 this.notebookPath(),
2260 this.notebookPath(),
2259 this.notebook_name,
2261 this.notebook_name,
2260 'checkpoints',
2262 'checkpoints',
2261 checkpoint
2263 checkpoint
2262 );
2264 );
2263 $.ajax(url, {
2265 $.ajax(url, {
2264 type: 'DELETE',
2266 type: 'DELETE',
2265 success: $.proxy(this.delete_checkpoint_success, this),
2267 success: $.proxy(this.delete_checkpoint_success, this),
2266 error: $.proxy(this.delete_notebook_error,this)
2268 error: $.proxy(this.delete_notebook_error,this)
2267 });
2269 });
2268 };
2270 };
2269
2271
2270 /**
2272 /**
2271 * Success callback for deleting a notebook checkpoint
2273 * Success callback for deleting a notebook checkpoint
2272 *
2274 *
2273 * @method delete_checkpoint_success
2275 * @method delete_checkpoint_success
2274 * @param {Object} data (ignored, should be empty)
2276 * @param {Object} data (ignored, should be empty)
2275 * @param {String} status Description of response status
2277 * @param {String} status Description of response status
2276 * @param {jqXHR} xhr jQuery Ajax object
2278 * @param {jqXHR} xhr jQuery Ajax object
2277 */
2279 */
2278 Notebook.prototype.delete_checkpoint_success = function (data, status, xhr) {
2280 Notebook.prototype.delete_checkpoint_success = function (data, status, xhr) {
2279 $([IPython.events]).trigger('checkpoint_deleted.Notebook', data);
2281 $([IPython.events]).trigger('checkpoint_deleted.Notebook', data);
2280 this.load_notebook(this.notebook_name, this.notebook_path);
2282 this.load_notebook(this.notebook_name, this.notebook_path);
2281 };
2283 };
2282
2284
2283 /**
2285 /**
2284 * Failure callback for deleting a notebook checkpoint.
2286 * Failure callback for deleting a notebook checkpoint.
2285 *
2287 *
2286 * @method delete_checkpoint_error
2288 * @method delete_checkpoint_error
2287 * @param {jqXHR} xhr jQuery Ajax object
2289 * @param {jqXHR} xhr jQuery Ajax object
2288 * @param {String} status Description of response status
2290 * @param {String} status Description of response status
2289 * @param {String} error_msg HTTP error message
2291 * @param {String} error_msg HTTP error message
2290 */
2292 */
2291 Notebook.prototype.delete_checkpoint_error = function (xhr, status, error_msg) {
2293 Notebook.prototype.delete_checkpoint_error = function (xhr, status, error_msg) {
2292 $([IPython.events]).trigger('checkpoint_delete_failed.Notebook');
2294 $([IPython.events]).trigger('checkpoint_delete_failed.Notebook');
2293 };
2295 };
2294
2296
2295
2297
2296 IPython.Notebook = Notebook;
2298 IPython.Notebook = Notebook;
2297
2299
2298
2300
2299 return IPython;
2301 return IPython;
2300
2302
2301 }(IPython));
2303 }(IPython));
@@ -1,210 +1,222
1 //----------------------------------------------------------------------------
1 //----------------------------------------------------------------------------
2 // Copyright (C) 2012 The IPython Development Team
2 // Copyright (C) 2012 The IPython Development Team
3 //
3 //
4 // Distributed under the terms of the BSD License. The full license is in
4 // Distributed under the terms of the BSD License. The full license is in
5 // the file COPYING, distributed as part of this software.
5 // the file COPYING, distributed as part of this software.
6 //----------------------------------------------------------------------------
6 //----------------------------------------------------------------------------
7
7
8 //============================================================================
8 //============================================================================
9 // Notification widget
9 // Notification widget
10 //============================================================================
10 //============================================================================
11
11
12 var IPython = (function (IPython) {
12 var IPython = (function (IPython) {
13 "use strict";
13 "use strict";
14 var utils = IPython.utils;
14 var utils = IPython.utils;
15
15
16
16
17 var NotificationArea = function (selector) {
17 var NotificationArea = function (selector) {
18 this.selector = selector;
18 this.selector = selector;
19 if (this.selector !== undefined) {
19 if (this.selector !== undefined) {
20 this.element = $(selector);
20 this.element = $(selector);
21 }
21 }
22 this.widget_dict = {};
22 this.widget_dict = {};
23 };
23 };
24
24
25 NotificationArea.prototype.temp_message = function (msg, timeout, css_class) {
25 NotificationArea.prototype.temp_message = function (msg, timeout, css_class) {
26 var uuid = utils.uuid();
26 var uuid = utils.uuid();
27 if( css_class == 'danger') {css_class = 'ui-state-error';}
27 if( css_class == 'danger') {css_class = 'ui-state-error';}
28 if( css_class == 'warning') {css_class = 'ui-state-highlight';}
28 if( css_class == 'warning') {css_class = 'ui-state-highlight';}
29 var tdiv = $('<div>')
29 var tdiv = $('<div>')
30 .attr('id',uuid)
30 .attr('id',uuid)
31 .addClass('notification_widget ui-widget ui-widget-content ui-corner-all')
31 .addClass('notification_widget ui-widget ui-widget-content ui-corner-all')
32 .addClass('border-box-sizing')
32 .addClass('border-box-sizing')
33 .addClass(css_class)
33 .addClass(css_class)
34 .hide()
34 .hide()
35 .text(msg);
35 .text(msg);
36
36
37 $(this.selector).append(tdiv);
37 $(this.selector).append(tdiv);
38 var tmout = Math.max(1500,(timeout||1500));
38 var tmout = Math.max(1500,(timeout||1500));
39 tdiv.fadeIn(100);
39 tdiv.fadeIn(100);
40
40
41 setTimeout(function () {
41 setTimeout(function () {
42 tdiv.fadeOut(100, function () {tdiv.remove();});
42 tdiv.fadeOut(100, function () {tdiv.remove();});
43 }, tmout);
43 }, tmout);
44 };
44 };
45
45
46 NotificationArea.prototype.widget = function(name) {
46 NotificationArea.prototype.widget = function(name) {
47 if(this.widget_dict[name] == undefined) {
47 if(this.widget_dict[name] == undefined) {
48 return this.new_notification_widget(name);
48 return this.new_notification_widget(name);
49 }
49 }
50 return this.get_widget(name);
50 return this.get_widget(name);
51 };
51 };
52
52
53 NotificationArea.prototype.get_widget = function(name) {
53 NotificationArea.prototype.get_widget = function(name) {
54 if(this.widget_dict[name] == undefined) {
54 if(this.widget_dict[name] == undefined) {
55 throw('no widgets with this name');
55 throw('no widgets with this name');
56 }
56 }
57 return this.widget_dict[name];
57 return this.widget_dict[name];
58 };
58 };
59
59
60 NotificationArea.prototype.new_notification_widget = function(name) {
60 NotificationArea.prototype.new_notification_widget = function(name) {
61 if(this.widget_dict[name] != undefined) {
61 if(this.widget_dict[name] != undefined) {
62 throw('widget with that name already exists ! ');
62 throw('widget with that name already exists ! ');
63 }
63 }
64 var div = $('<div/>').attr('id','notification_'+name);
64 var div = $('<div/>').attr('id','notification_'+name);
65 $(this.selector).append(div);
65 $(this.selector).append(div);
66 this.widget_dict[name] = new IPython.NotificationWidget('#notification_'+name);
66 this.widget_dict[name] = new IPython.NotificationWidget('#notification_'+name);
67 return this.widget_dict[name];
67 return this.widget_dict[name];
68 };
68 };
69
69
70 NotificationArea.prototype.init_notification_widgets = function() {
70 NotificationArea.prototype.init_notification_widgets = function() {
71 var knw = this.new_notification_widget('kernel');
71 var knw = this.new_notification_widget('kernel');
72 var $kernel_indic = $("#kernel_indicator");
72 var $kernel_ind_icon = $("#kernel_indicator_icon");
73 var $modal_ind_icon = $("#modal_indicator_icon");
74
75 // Command/Edit mode
76 $([IPython.events]).on('edit_mode.Notebook',function () {
77 IPython.save_widget.update_document_title();
78 $modal_ind_icon.attr('class','icon-pencil').attr('title','Edit Mode');
79 });
80
81 $([IPython.events]).on('command_mode.Notebook',function () {
82 IPython.save_widget.update_document_title();
83 $modal_ind_icon.attr('class','').attr('title','Command Mode');
84 });
73
85
74 // Kernel events
86 // Kernel events
75 $([IPython.events]).on('status_idle.Kernel',function () {
87 $([IPython.events]).on('status_idle.Kernel',function () {
76 IPython.save_widget.update_document_title();
88 IPython.save_widget.update_document_title();
77 $kernel_indic.attr('class','icon-circle-blank').attr('title','Kernel Idle');
89 $kernel_ind_icon.attr('class','icon-circle-blank').attr('title','Kernel Idle');
78 });
90 });
79
91
80 $([IPython.events]).on('status_busy.Kernel',function () {
92 $([IPython.events]).on('status_busy.Kernel',function () {
81 window.document.title='(Busy) '+window.document.title;
93 window.document.title='(Busy) '+window.document.title;
82 $kernel_indic.attr('class','icon-circle').attr('title','Kernel Busy');
94 $kernel_ind_icon.attr('class','icon-circle').attr('title','Kernel Busy');
83 });
95 });
84
96
85 $([IPython.events]).on('status_restarting.Kernel',function () {
97 $([IPython.events]).on('status_restarting.Kernel',function () {
86 IPython.save_widget.update_document_title();
98 IPython.save_widget.update_document_title();
87 knw.set_message("Restarting kernel", 2000);
99 knw.set_message("Restarting kernel", 2000);
88 });
100 });
89
101
90 $([IPython.events]).on('status_interrupting.Kernel',function () {
102 $([IPython.events]).on('status_interrupting.Kernel',function () {
91 knw.set_message("Interrupting kernel", 2000);
103 knw.set_message("Interrupting kernel", 2000);
92 });
104 });
93
105
94 $([IPython.events]).on('status_dead.Kernel',function () {
106 $([IPython.events]).on('status_dead.Kernel',function () {
95 var msg = 'The kernel has died, and the automatic restart has failed.' +
107 var msg = 'The kernel has died, and the automatic restart has failed.' +
96 ' It is possible the kernel cannot be restarted.' +
108 ' It is possible the kernel cannot be restarted.' +
97 ' If you are not able to restart the kernel, you will still be able to save' +
109 ' If you are not able to restart the kernel, you will still be able to save' +
98 ' the notebook, but running code will no longer work until the notebook' +
110 ' the notebook, but running code will no longer work until the notebook' +
99 ' is reopened.';
111 ' is reopened.';
100
112
101 IPython.dialog.modal({
113 IPython.dialog.modal({
102 title: "Dead kernel",
114 title: "Dead kernel",
103 body : msg,
115 body : msg,
104 buttons : {
116 buttons : {
105 "Manual Restart": {
117 "Manual Restart": {
106 class: "btn-danger",
118 class: "btn-danger",
107 click: function () {
119 click: function () {
108 $([IPython.events]).trigger('status_restarting.Kernel');
120 $([IPython.events]).trigger('status_restarting.Kernel');
109 IPython.notebook.start_kernel();
121 IPython.notebook.start_kernel();
110 }
122 }
111 },
123 },
112 "Don't restart": {}
124 "Don't restart": {}
113 }
125 }
114 });
126 });
115 });
127 });
116
128
117 $([IPython.events]).on('websocket_closed.Kernel', function (event, data) {
129 $([IPython.events]).on('websocket_closed.Kernel', function (event, data) {
118 var kernel = data.kernel;
130 var kernel = data.kernel;
119 var ws_url = data.ws_url;
131 var ws_url = data.ws_url;
120 var early = data.early;
132 var early = data.early;
121 var msg;
133 var msg;
122 if (!early) {
134 if (!early) {
123 knw.set_message('Reconnecting WebSockets', 1000);
135 knw.set_message('Reconnecting WebSockets', 1000);
124 setTimeout(function () {
136 setTimeout(function () {
125 kernel.start_channels();
137 kernel.start_channels();
126 }, 5000);
138 }, 5000);
127 return;
139 return;
128 }
140 }
129 console.log('WebSocket connection failed: ', ws_url)
141 console.log('WebSocket connection failed: ', ws_url)
130 msg = "A WebSocket connection could not be established." +
142 msg = "A WebSocket connection could not be established." +
131 " You will NOT be able to run code. Check your" +
143 " You will NOT be able to run code. Check your" +
132 " network connection or notebook server configuration.";
144 " network connection or notebook server configuration.";
133 IPython.dialog.modal({
145 IPython.dialog.modal({
134 title: "WebSocket connection failed",
146 title: "WebSocket connection failed",
135 body: msg,
147 body: msg,
136 buttons : {
148 buttons : {
137 "OK": {},
149 "OK": {},
138 "Reconnect": {
150 "Reconnect": {
139 click: function () {
151 click: function () {
140 knw.set_message('Reconnecting WebSockets', 1000);
152 knw.set_message('Reconnecting WebSockets', 1000);
141 setTimeout(function () {
153 setTimeout(function () {
142 kernel.start_channels();
154 kernel.start_channels();
143 }, 5000);
155 }, 5000);
144 }
156 }
145 }
157 }
146 }
158 }
147 });
159 });
148 });
160 });
149
161
150
162
151 var nnw = this.new_notification_widget('notebook');
163 var nnw = this.new_notification_widget('notebook');
152
164
153 // Notebook events
165 // Notebook events
154 $([IPython.events]).on('notebook_loading.Notebook', function () {
166 $([IPython.events]).on('notebook_loading.Notebook', function () {
155 nnw.set_message("Loading notebook",500);
167 nnw.set_message("Loading notebook",500);
156 });
168 });
157 $([IPython.events]).on('notebook_loaded.Notebook', function () {
169 $([IPython.events]).on('notebook_loaded.Notebook', function () {
158 nnw.set_message("Notebook loaded",500);
170 nnw.set_message("Notebook loaded",500);
159 });
171 });
160 $([IPython.events]).on('notebook_saving.Notebook', function () {
172 $([IPython.events]).on('notebook_saving.Notebook', function () {
161 nnw.set_message("Saving notebook",500);
173 nnw.set_message("Saving notebook",500);
162 });
174 });
163 $([IPython.events]).on('notebook_saved.Notebook', function () {
175 $([IPython.events]).on('notebook_saved.Notebook', function () {
164 nnw.set_message("Notebook saved",2000);
176 nnw.set_message("Notebook saved",2000);
165 });
177 });
166 $([IPython.events]).on('notebook_save_failed.Notebook', function () {
178 $([IPython.events]).on('notebook_save_failed.Notebook', function () {
167 nnw.set_message("Notebook save failed");
179 nnw.set_message("Notebook save failed");
168 });
180 });
169
181
170 // Checkpoint events
182 // Checkpoint events
171 $([IPython.events]).on('checkpoint_created.Notebook', function (evt, data) {
183 $([IPython.events]).on('checkpoint_created.Notebook', function (evt, data) {
172 var msg = "Checkpoint created";
184 var msg = "Checkpoint created";
173 if (data.last_modified) {
185 if (data.last_modified) {
174 var d = new Date(data.last_modified);
186 var d = new Date(data.last_modified);
175 msg = msg + ": " + d.format("HH:MM:ss");
187 msg = msg + ": " + d.format("HH:MM:ss");
176 }
188 }
177 nnw.set_message(msg, 2000);
189 nnw.set_message(msg, 2000);
178 });
190 });
179 $([IPython.events]).on('checkpoint_failed.Notebook', function () {
191 $([IPython.events]).on('checkpoint_failed.Notebook', function () {
180 nnw.set_message("Checkpoint failed");
192 nnw.set_message("Checkpoint failed");
181 });
193 });
182 $([IPython.events]).on('checkpoint_deleted.Notebook', function () {
194 $([IPython.events]).on('checkpoint_deleted.Notebook', function () {
183 nnw.set_message("Checkpoint deleted", 500);
195 nnw.set_message("Checkpoint deleted", 500);
184 });
196 });
185 $([IPython.events]).on('checkpoint_delete_failed.Notebook', function () {
197 $([IPython.events]).on('checkpoint_delete_failed.Notebook', function () {
186 nnw.set_message("Checkpoint delete failed");
198 nnw.set_message("Checkpoint delete failed");
187 });
199 });
188 $([IPython.events]).on('checkpoint_restoring.Notebook', function () {
200 $([IPython.events]).on('checkpoint_restoring.Notebook', function () {
189 nnw.set_message("Restoring to checkpoint...", 500);
201 nnw.set_message("Restoring to checkpoint...", 500);
190 });
202 });
191 $([IPython.events]).on('checkpoint_restore_failed.Notebook', function () {
203 $([IPython.events]).on('checkpoint_restore_failed.Notebook', function () {
192 nnw.set_message("Checkpoint restore failed");
204 nnw.set_message("Checkpoint restore failed");
193 });
205 });
194
206
195 // Autosave events
207 // Autosave events
196 $([IPython.events]).on('autosave_disabled.Notebook', function () {
208 $([IPython.events]).on('autosave_disabled.Notebook', function () {
197 nnw.set_message("Autosave disabled", 2000);
209 nnw.set_message("Autosave disabled", 2000);
198 });
210 });
199 $([IPython.events]).on('autosave_enabled.Notebook', function (evt, interval) {
211 $([IPython.events]).on('autosave_enabled.Notebook', function (evt, interval) {
200 nnw.set_message("Saving every " + interval / 1000 + "s", 1000);
212 nnw.set_message("Saving every " + interval / 1000 + "s", 1000);
201 });
213 });
202
214
203 };
215 };
204
216
205 IPython.NotificationArea = NotificationArea;
217 IPython.NotificationArea = NotificationArea;
206
218
207 return IPython;
219 return IPython;
208
220
209 }(IPython));
221 }(IPython));
210
222
@@ -1,3 +1,17
1 #notification_area {
1 #notification_area {
2 z-index: 10;
2 z-index: 10;
3 }
3 }
4
5 .indicator_area {
6 color: @navbarLinkColor;
7 padding: 4px 3px;
8 margin: 0px;
9 width: 11px;
10 z-index: 10;
11 }
12
13 #kernel_indicator {
14 // Pull it to the right, outside the container boundary
15 margin-right: -16px;
16 }
17
@@ -1,22 +1,13
1 .notification_widget{
1 .notification_widget {
2 color: @navbarLinkColor;
2 color: @navbarLinkColor;
3 padding: 1px 12px;
3 padding: 1px 12px;
4 margin: 2px 4px;
4 margin: 2px 4px;
5 z-index: 10;
5 z-index: 10;
6 border: 1px solid #ccc;
6 border: 1px solid #ccc;
7 border-radius: @baseBorderRadius;
7 border-radius: @baseBorderRadius;
8 background: rgba(240, 240, 240, 0.5);
8 background: rgba(240, 240, 240, 0.5);
9
9
10 &.span {
10 &.span {
11 padding-right:2px;
11 padding-right:2px;
12 }
12 }
13
14 }
15
16 #indicator_area{
17 color: @navbarLinkColor;
18 padding: 2px 2px;
19 margin: 2px -9px 2px 4px;
20 z-index: 10;
21
22 }
13 }
@@ -1,1526 +1,1527
1 .clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0}
1 .clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0}
2 .clearfix:after{clear:both}
2 .clearfix:after{clear:both}
3 .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}
3 .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}
4 .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
4 .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
5 article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}
5 article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}
6 audio,canvas,video{display:inline-block;*display:inline;*zoom:1}
6 audio,canvas,video{display:inline-block;*display:inline;*zoom:1}
7 audio:not([controls]){display:none}
7 audio:not([controls]){display:none}
8 html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}
8 html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}
9 a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}
9 a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}
10 a:hover,a:active{outline:0}
10 a:hover,a:active{outline:0}
11 sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}
11 sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}
12 sup{top:-0.5em}
12 sup{top:-0.5em}
13 sub{bottom:-0.25em}
13 sub{bottom:-0.25em}
14 img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}
14 img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}
15 #map_canvas img,.google-maps img{max-width:none}
15 #map_canvas img,.google-maps img{max-width:none}
16 button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}
16 button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}
17 button,input{*overflow:visible;line-height:normal}
17 button,input{*overflow:visible;line-height:normal}
18 button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}
18 button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}
19 button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
19 button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
20 label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}
20 label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}
21 input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}
21 input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}
22 input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}
22 input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}
23 textarea{overflow:auto;vertical-align:top}
23 textarea{overflow:auto;vertical-align:top}
24 @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) ")"} .ir a:after,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} @page {margin:.5cm}p,h2,h3{orphans:3;widows:3} h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:20px;color:#000;background-color:#fff}
24 @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) ")"} .ir a:after,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} @page {margin:.5cm}p,h2,h3{orphans:3;widows:3} h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:20px;color:#000;background-color:#fff}
25 a{color:#08c;text-decoration:none}
25 a{color:#08c;text-decoration:none}
26 a:hover,a:focus{color:#005580;text-decoration:underline}
26 a:hover,a:focus{color:#005580;text-decoration:underline}
27 .img-rounded{border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
27 .img-rounded{border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
28 .img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}
28 .img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}
29 .img-circle{border-radius:500px;-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}
29 .img-circle{border-radius:500px;-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}
30 .row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;content:"";line-height:0}
30 .row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;content:"";line-height:0}
31 .row:after{clear:both}
31 .row:after{clear:both}
32 [class*="span"]{float:left;min-height:1px;margin-left:20px}
32 [class*="span"]{float:left;min-height:1px;margin-left:20px}
33 .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}
33 .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}
34 .span12{width:940px}
34 .span12{width:940px}
35 .span11{width:860px}
35 .span11{width:860px}
36 .span10{width:780px}
36 .span10{width:780px}
37 .span9{width:700px}
37 .span9{width:700px}
38 .span8{width:620px}
38 .span8{width:620px}
39 .span7{width:540px}
39 .span7{width:540px}
40 .span6{width:460px}
40 .span6{width:460px}
41 .span5{width:380px}
41 .span5{width:380px}
42 .span4{width:300px}
42 .span4{width:300px}
43 .span3{width:220px}
43 .span3{width:220px}
44 .span2{width:140px}
44 .span2{width:140px}
45 .span1{width:60px}
45 .span1{width:60px}
46 .offset12{margin-left:980px}
46 .offset12{margin-left:980px}
47 .offset11{margin-left:900px}
47 .offset11{margin-left:900px}
48 .offset10{margin-left:820px}
48 .offset10{margin-left:820px}
49 .offset9{margin-left:740px}
49 .offset9{margin-left:740px}
50 .offset8{margin-left:660px}
50 .offset8{margin-left:660px}
51 .offset7{margin-left:580px}
51 .offset7{margin-left:580px}
52 .offset6{margin-left:500px}
52 .offset6{margin-left:500px}
53 .offset5{margin-left:420px}
53 .offset5{margin-left:420px}
54 .offset4{margin-left:340px}
54 .offset4{margin-left:340px}
55 .offset3{margin-left:260px}
55 .offset3{margin-left:260px}
56 .offset2{margin-left:180px}
56 .offset2{margin-left:180px}
57 .offset1{margin-left:100px}
57 .offset1{margin-left:100px}
58 .row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0}
58 .row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0}
59 .row-fluid:after{clear:both}
59 .row-fluid:after{clear:both}
60 .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%}
60 .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%}
61 .row-fluid [class*="span"]:first-child{margin-left:0}
61 .row-fluid [class*="span"]:first-child{margin-left:0}
62 .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}
62 .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}
63 .row-fluid .span12{width:100%;*width:99.94680851063829%}
63 .row-fluid .span12{width:100%;*width:99.94680851063829%}
64 .row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}
64 .row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}
65 .row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}
65 .row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}
66 .row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}
66 .row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}
67 .row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}
67 .row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}
68 .row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}
68 .row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}
69 .row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}
69 .row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}
70 .row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}
70 .row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}
71 .row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}
71 .row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}
72 .row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}
72 .row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}
73 .row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}
73 .row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}
74 .row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}
74 .row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}
75 .row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}
75 .row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}
76 .row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}
76 .row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}
77 .row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}
77 .row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}
78 .row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}
78 .row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}
79 .row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}
79 .row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}
80 .row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}
80 .row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}
81 .row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}
81 .row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}
82 .row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}
82 .row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}
83 .row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}
83 .row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}
84 .row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}
84 .row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}
85 .row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}
85 .row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}
86 .row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}
86 .row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}
87 .row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}
87 .row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}
88 .row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}
88 .row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}
89 .row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}
89 .row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}
90 .row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}
90 .row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}
91 .row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}
91 .row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}
92 .row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}
92 .row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}
93 .row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}
93 .row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}
94 .row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}
94 .row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}
95 .row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}
95 .row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}
96 .row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}
96 .row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}
97 .row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}
97 .row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}
98 .row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}
98 .row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}
99 [class*="span"].hide,.row-fluid [class*="span"].hide{display:none}
99 [class*="span"].hide,.row-fluid [class*="span"].hide{display:none}
100 [class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}
100 [class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}
101 .container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;content:"";line-height:0}
101 .container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;content:"";line-height:0}
102 .container:after{clear:both}
102 .container:after{clear:both}
103 .container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0}
103 .container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0}
104 .container-fluid:after{clear:both}
104 .container-fluid:after{clear:both}
105 p{margin:0 0 10px}
105 p{margin:0 0 10px}
106 .lead{margin-bottom:20px;font-size:19.5px;font-weight:200;line-height:30px}
106 .lead{margin-bottom:20px;font-size:19.5px;font-weight:200;line-height:30px}
107 small{font-size:85%}
107 small{font-size:85%}
108 strong{font-weight:bold}
108 strong{font-weight:bold}
109 em{font-style:italic}
109 em{font-style:italic}
110 cite{font-style:normal}
110 cite{font-style:normal}
111 .muted{color:#999}
111 .muted{color:#999}
112 a.muted:hover,a.muted:focus{color:#808080}
112 a.muted:hover,a.muted:focus{color:#808080}
113 .text-warning{color:#c09853}
113 .text-warning{color:#c09853}
114 a.text-warning:hover,a.text-warning:focus{color:#a47e3c}
114 a.text-warning:hover,a.text-warning:focus{color:#a47e3c}
115 .text-error{color:#b94a48}
115 .text-error{color:#b94a48}
116 a.text-error:hover,a.text-error:focus{color:#953b39}
116 a.text-error:hover,a.text-error:focus{color:#953b39}
117 .text-info{color:#3a87ad}
117 .text-info{color:#3a87ad}
118 a.text-info:hover,a.text-info:focus{color:#2d6987}
118 a.text-info:hover,a.text-info:focus{color:#2d6987}
119 .text-success{color:#468847}
119 .text-success{color:#468847}
120 a.text-success:hover,a.text-success:focus{color:#356635}
120 a.text-success:hover,a.text-success:focus{color:#356635}
121 .text-left{text-align:left}
121 .text-left{text-align:left}
122 .text-right{text-align:right}
122 .text-right{text-align:right}
123 .text-center{text-align:center}
123 .text-center{text-align:center}
124 h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}
124 h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}
125 h1,h2,h3{line-height:40px}
125 h1,h2,h3{line-height:40px}
126 h1{font-size:35.75px}
126 h1{font-size:35.75px}
127 h2{font-size:29.25px}
127 h2{font-size:29.25px}
128 h3{font-size:22.75px}
128 h3{font-size:22.75px}
129 h4{font-size:16.25px}
129 h4{font-size:16.25px}
130 h5{font-size:13px}
130 h5{font-size:13px}
131 h6{font-size:11.049999999999999px}
131 h6{font-size:11.049999999999999px}
132 h1 small{font-size:22.75px}
132 h1 small{font-size:22.75px}
133 h2 small{font-size:16.25px}
133 h2 small{font-size:16.25px}
134 h3 small{font-size:13px}
134 h3 small{font-size:13px}
135 h4 small{font-size:13px}
135 h4 small{font-size:13px}
136 .page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}
136 .page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}
137 ul,ol{padding:0;margin:0 0 10px 25px}
137 ul,ol{padding:0;margin:0 0 10px 25px}
138 ul ul,ul ol,ol ol,ol ul{margin-bottom:0}
138 ul ul,ul ol,ol ol,ol ul{margin-bottom:0}
139 li{line-height:20px}
139 li{line-height:20px}
140 ul.unstyled,ol.unstyled{margin-left:0;list-style:none}
140 ul.unstyled,ol.unstyled{margin-left:0;list-style:none}
141 ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;*zoom:1;padding-left:5px;padding-right:5px}
141 ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;*zoom:1;padding-left:5px;padding-right:5px}
142 dl{margin-bottom:20px}
142 dl{margin-bottom:20px}
143 dt,dd{line-height:20px}
143 dt,dd{line-height:20px}
144 dt{font-weight:bold}
144 dt{font-weight:bold}
145 dd{margin-left:10px}
145 dd{margin-left:10px}
146 .dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0}
146 .dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0}
147 .dl-horizontal:after{clear:both}
147 .dl-horizontal:after{clear:both}
148 .dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
148 .dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
149 .dl-horizontal dd{margin-left:180px}
149 .dl-horizontal dd{margin-left:180px}
150 hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}
150 hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}
151 abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}
151 abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}
152 abbr.initialism{font-size:90%;text-transform:uppercase}
152 abbr.initialism{font-size:90%;text-transform:uppercase}
153 blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16.25px;font-weight:300;line-height:1.25}
153 blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16.25px;font-weight:300;line-height:1.25}
154 blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}
154 blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}
155 blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}
155 blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}
156 blockquote.pull-right small:before{content:''}
156 blockquote.pull-right small:before{content:''}
157 blockquote.pull-right small:after{content:'\00A0 \2014'}
157 blockquote.pull-right small:after{content:'\00A0 \2014'}
158 q:before,q:after,blockquote:before,blockquote:after{content:""}
158 q:before,q:after,blockquote:before,blockquote:after{content:""}
159 address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}
159 address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}
160 code,pre{padding:0 3px 2px;font-family:monospace;font-size:11px;color:#333;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}
160 code,pre{padding:0 3px 2px;font-family:monospace;font-size:11px;color:#333;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}
161 code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;white-space:nowrap}
161 code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;white-space:nowrap}
162 pre{display:block;padding:9.5px;margin:0 0 10px;font-size:12px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}
162 pre{display:block;padding:9.5px;margin:0 0 10px;font-size:12px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}
163 pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}
163 pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}
164 .pre-scrollable{max-height:340px;overflow-y:scroll}
164 .pre-scrollable{max-height:340px;overflow-y:scroll}
165 form{margin:0 0 20px}
165 form{margin:0 0 20px}
166 fieldset{padding:0;margin:0;border:0}
166 fieldset{padding:0;margin:0;border:0}
167 legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}
167 legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}
168 label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:20px}
168 label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:20px}
169 input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}
169 input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}
170 label{display:block;margin-bottom:5px}
170 label{display:block;margin-bottom:5px}
171 select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:13px;line-height:20px;color:#555;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;vertical-align:middle}
171 select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:13px;line-height:20px;color:#555;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;vertical-align:middle}
172 input,textarea,.uneditable-input{width:206px}
172 input,textarea,.uneditable-input{width:206px}
173 textarea{height:auto}
173 textarea{height:auto}
174 textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-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 linear .2s, box-shadow linear .2s;-moz-transition:border linear .2s, box-shadow linear .2s;-o-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)}
174 textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-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 linear .2s, box-shadow linear .2s;-moz-transition:border linear .2s, box-shadow linear .2s;-o-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)}
175 input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal}
175 input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal}
176 input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}
176 input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}
177 select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}
177 select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}
178 select{width:220px;border:1px solid #ccc;background-color:#fff}
178 select{width:220px;border:1px solid #ccc;background-color:#fff}
179 select[multiple],select[size]{height:auto}
179 select[multiple],select[size]{height:auto}
180 select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}
180 select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}
181 .uneditable-input,.uneditable-textarea{color:#999;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);cursor:not-allowed}
181 .uneditable-input,.uneditable-textarea{color:#999;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);cursor:not-allowed}
182 .uneditable-input{overflow:hidden;white-space:nowrap}
182 .uneditable-input{overflow:hidden;white-space:nowrap}
183 .uneditable-textarea{width:auto;height:auto}
183 .uneditable-textarea{width:auto;height:auto}
184 input:-moz-placeholder,textarea:-moz-placeholder{color:#999}
184 input:-moz-placeholder,textarea:-moz-placeholder{color:#999}
185 input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}
185 input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}
186 input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}
186 input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}
187 .radio,.checkbox{min-height:20px;padding-left:20px}
187 .radio,.checkbox{min-height:20px;padding-left:20px}
188 .radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}
188 .radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}
189 .controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}
189 .controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}
190 .radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}
190 .radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}
191 .radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}
191 .radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}
192 .input-mini{width:60px}
192 .input-mini{width:60px}
193 .input-small{width:90px}
193 .input-small{width:90px}
194 .input-medium{width:150px}
194 .input-medium{width:150px}
195 .input-large{width:210px}
195 .input-large{width:210px}
196 .input-xlarge{width:270px}
196 .input-xlarge{width:270px}
197 .input-xxlarge{width:530px}
197 .input-xxlarge{width:530px}
198 input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}
198 input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}
199 .input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}
199 .input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}
200 input,textarea,.uneditable-input{margin-left:0}
200 input,textarea,.uneditable-input{margin-left:0}
201 .controls-row [class*="span"]+[class*="span"]{margin-left:20px}
201 .controls-row [class*="span"]+[class*="span"]{margin-left:20px}
202 input.span12,textarea.span12,.uneditable-input.span12{width:926px}
202 input.span12,textarea.span12,.uneditable-input.span12{width:926px}
203 input.span11,textarea.span11,.uneditable-input.span11{width:846px}
203 input.span11,textarea.span11,.uneditable-input.span11{width:846px}
204 input.span10,textarea.span10,.uneditable-input.span10{width:766px}
204 input.span10,textarea.span10,.uneditable-input.span10{width:766px}
205 input.span9,textarea.span9,.uneditable-input.span9{width:686px}
205 input.span9,textarea.span9,.uneditable-input.span9{width:686px}
206 input.span8,textarea.span8,.uneditable-input.span8{width:606px}
206 input.span8,textarea.span8,.uneditable-input.span8{width:606px}
207 input.span7,textarea.span7,.uneditable-input.span7{width:526px}
207 input.span7,textarea.span7,.uneditable-input.span7{width:526px}
208 input.span6,textarea.span6,.uneditable-input.span6{width:446px}
208 input.span6,textarea.span6,.uneditable-input.span6{width:446px}
209 input.span5,textarea.span5,.uneditable-input.span5{width:366px}
209 input.span5,textarea.span5,.uneditable-input.span5{width:366px}
210 input.span4,textarea.span4,.uneditable-input.span4{width:286px}
210 input.span4,textarea.span4,.uneditable-input.span4{width:286px}
211 input.span3,textarea.span3,.uneditable-input.span3{width:206px}
211 input.span3,textarea.span3,.uneditable-input.span3{width:206px}
212 input.span2,textarea.span2,.uneditable-input.span2{width:126px}
212 input.span2,textarea.span2,.uneditable-input.span2{width:126px}
213 input.span1,textarea.span1,.uneditable-input.span1{width:46px}
213 input.span1,textarea.span1,.uneditable-input.span1{width:46px}
214 .controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0}
214 .controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0}
215 .controls-row:after{clear:both}
215 .controls-row:after{clear:both}
216 .controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}
216 .controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}
217 .controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}
217 .controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}
218 input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}
218 input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}
219 input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}
219 input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}
220 .control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}
220 .control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}
221 .control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}
221 .control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}
222 .control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}
222 .control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}
223 .control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}
223 .control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}
224 .control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}
224 .control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}
225 .control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}
225 .control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}
226 .control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}
226 .control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}
227 .control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}
227 .control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}
228 .control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}
228 .control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}
229 .control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}
229 .control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}
230 .control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}
230 .control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}
231 .control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}
231 .control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}
232 .control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}
232 .control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}
233 .control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}
233 .control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}
234 .control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}
234 .control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}
235 .control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}
235 .control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}
236 input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}
236 input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}
237 .form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0}
237 .form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0}
238 .form-actions:after{clear:both}
238 .form-actions:after{clear:both}
239 .help-block,.help-inline{color:#262626}
239 .help-block,.help-inline{color:#262626}
240 .help-block{display:block;margin-bottom:10px}
240 .help-block{display:block;margin-bottom:10px}
241 .help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px}
241 .help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px}
242 .input-append,.input-prepend{display:inline-block;margin-bottom:10px;vertical-align:middle;font-size:0;white-space:nowrap}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:13px}
242 .input-append,.input-prepend{display:inline-block;margin-bottom:10px;vertical-align:middle;font-size:0;white-space:nowrap}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:13px}
243 .input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;border-radius:0 4px 4px 0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}
243 .input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;border-radius:0 4px 4px 0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}
244 .input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:13px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}
244 .input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:13px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}
245 .input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
245 .input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
246 .input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}
246 .input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}
247 .input-prepend .add-on,.input-prepend .btn{margin-right:-1px}
247 .input-prepend .add-on,.input-prepend .btn{margin-right:-1px}
248 .input-prepend .add-on:first-child,.input-prepend .btn:first-child{border-radius:4px 0 0 4px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}
248 .input-prepend .add-on:first-child,.input-prepend .btn:first-child{border-radius:4px 0 0 4px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}
249 .input-append input,.input-append select,.input-append .uneditable-input{border-radius:4px 0 0 4px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{border-radius:0 4px 4px 0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}
249 .input-append input,.input-append select,.input-append .uneditable-input{border-radius:4px 0 0 4px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{border-radius:0 4px 4px 0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}
250 .input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}
250 .input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}
251 .input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{border-radius:0 4px 4px 0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}
251 .input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{border-radius:0 4px 4px 0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}
252 .input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{border-radius:0 4px 4px 0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}
252 .input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{border-radius:0 4px 4px 0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}
253 .input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;border-radius:4px 0 0 4px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}
253 .input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;border-radius:4px 0 0 4px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}
254 .input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;border-radius:0 4px 4px 0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}
254 .input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;border-radius:0 4px 4px 0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}
255 .input-prepend.input-append .btn-group:first-child{margin-left:0}
255 .input-prepend.input-append .btn-group:first-child{margin-left:0}
256 input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}
256 input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}
257 .form-search .input-append .search-query,.form-search .input-prepend .search-query{border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
257 .form-search .input-append .search-query,.form-search .input-prepend .search-query{border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
258 .form-search .input-append .search-query{border-radius:14px 0 0 14px;-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}
258 .form-search .input-append .search-query{border-radius:14px 0 0 14px;-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}
259 .form-search .input-append .btn{border-radius:0 14px 14px 0;-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}
259 .form-search .input-append .btn{border-radius:0 14px 14px 0;-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}
260 .form-search .input-prepend .search-query{border-radius:0 14px 14px 0;-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}
260 .form-search .input-prepend .search-query{border-radius:0 14px 14px 0;-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}
261 .form-search .input-prepend .btn{border-radius:14px 0 0 14px;-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}
261 .form-search .input-prepend .btn{border-radius:14px 0 0 14px;-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}
262 .form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle}
262 .form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle}
263 .form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}
263 .form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}
264 .form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}
264 .form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}
265 .form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}
265 .form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}
266 .form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}
266 .form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}
267 .form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}
267 .form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}
268 .control-group{margin-bottom:10px}
268 .control-group{margin-bottom:10px}
269 legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}
269 legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}
270 .form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0}
270 .form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0}
271 .form-horizontal .control-group:after{clear:both}
271 .form-horizontal .control-group:after{clear:both}
272 .form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}
272 .form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}
273 .form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}
273 .form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}
274 .form-horizontal .help-block{margin-bottom:0}
274 .form-horizontal .help-block{margin-bottom:0}
275 .form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}
275 .form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}
276 .form-horizontal .form-actions{padding-left:180px}
276 .form-horizontal .form-actions{padding-left:180px}
277 table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}
277 table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}
278 .table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}
278 .table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}
279 .table th{font-weight:bold}
279 .table th{font-weight:bold}
280 .table thead th{vertical-align:bottom}
280 .table thead th{vertical-align:bottom}
281 .table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}
281 .table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}
282 .table tbody+tbody{border-top:2px solid #ddd}
282 .table tbody+tbody{border-top:2px solid #ddd}
283 .table .table{background-color:#fff}
283 .table .table{background-color:#fff}
284 .table-condensed th,.table-condensed td{padding:4px 5px}
284 .table-condensed th,.table-condensed td{padding:4px 5px}
285 .table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}
285 .table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}
286 .table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}
286 .table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}
287 .table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px}
287 .table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px}
288 .table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px}
288 .table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px}
289 .table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}
289 .table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}
290 .table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px}
290 .table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px}
291 .table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0}
291 .table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0}
292 .table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0;border-bottom-right-radius:0}
292 .table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0;border-bottom-right-radius:0}
293 .table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px}
293 .table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px}
294 .table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px}
294 .table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px}
295 .table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}
295 .table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}
296 .table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}
296 .table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}
297 table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}
297 table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}
298 .table td.span1,.table th.span1{float:none;width:44px;margin-left:0}
298 .table td.span1,.table th.span1{float:none;width:44px;margin-left:0}
299 .table td.span2,.table th.span2{float:none;width:124px;margin-left:0}
299 .table td.span2,.table th.span2{float:none;width:124px;margin-left:0}
300 .table td.span3,.table th.span3{float:none;width:204px;margin-left:0}
300 .table td.span3,.table th.span3{float:none;width:204px;margin-left:0}
301 .table td.span4,.table th.span4{float:none;width:284px;margin-left:0}
301 .table td.span4,.table th.span4{float:none;width:284px;margin-left:0}
302 .table td.span5,.table th.span5{float:none;width:364px;margin-left:0}
302 .table td.span5,.table th.span5{float:none;width:364px;margin-left:0}
303 .table td.span6,.table th.span6{float:none;width:444px;margin-left:0}
303 .table td.span6,.table th.span6{float:none;width:444px;margin-left:0}
304 .table td.span7,.table th.span7{float:none;width:524px;margin-left:0}
304 .table td.span7,.table th.span7{float:none;width:524px;margin-left:0}
305 .table td.span8,.table th.span8{float:none;width:604px;margin-left:0}
305 .table td.span8,.table th.span8{float:none;width:604px;margin-left:0}
306 .table td.span9,.table th.span9{float:none;width:684px;margin-left:0}
306 .table td.span9,.table th.span9{float:none;width:684px;margin-left:0}
307 .table td.span10,.table th.span10{float:none;width:764px;margin-left:0}
307 .table td.span10,.table th.span10{float:none;width:764px;margin-left:0}
308 .table td.span11,.table th.span11{float:none;width:844px;margin-left:0}
308 .table td.span11,.table th.span11{float:none;width:844px;margin-left:0}
309 .table td.span12,.table th.span12{float:none;width:924px;margin-left:0}
309 .table td.span12,.table th.span12{float:none;width:924px;margin-left:0}
310 .table tbody tr.success>td{background-color:#dff0d8}
310 .table tbody tr.success>td{background-color:#dff0d8}
311 .table tbody tr.error>td{background-color:#f2dede}
311 .table tbody tr.error>td{background-color:#f2dede}
312 .table tbody tr.warning>td{background-color:#fcf8e3}
312 .table tbody tr.warning>td{background-color:#fcf8e3}
313 .table tbody tr.info>td{background-color:#d9edf7}
313 .table tbody tr.info>td{background-color:#d9edf7}
314 .table-hover tbody tr.success:hover>td{background-color:#d0e9c6}
314 .table-hover tbody tr.success:hover>td{background-color:#d0e9c6}
315 .table-hover tbody tr.error:hover>td{background-color:#ebcccc}
315 .table-hover tbody tr.error:hover>td{background-color:#ebcccc}
316 .table-hover tbody tr.warning:hover>td{background-color:#faf2cc}
316 .table-hover tbody tr.warning:hover>td{background-color:#faf2cc}
317 .table-hover tbody tr.info:hover>td{background-color:#c4e3f3}
317 .table-hover tbody tr.info:hover>td{background-color:#c4e3f3}
318 [class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;margin-top:1px}
318 [class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;margin-top:1px}
319 .icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}
319 .icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}
320 .icon-glass{background-position:0 0}
320 .icon-glass{background-position:0 0}
321 .icon-music{background-position:-24px 0}
321 .icon-music{background-position:-24px 0}
322 .icon-search{background-position:-48px 0}
322 .icon-search{background-position:-48px 0}
323 .icon-envelope{background-position:-72px 0}
323 .icon-envelope{background-position:-72px 0}
324 .icon-heart{background-position:-96px 0}
324 .icon-heart{background-position:-96px 0}
325 .icon-star{background-position:-120px 0}
325 .icon-star{background-position:-120px 0}
326 .icon-star-empty{background-position:-144px 0}
326 .icon-star-empty{background-position:-144px 0}
327 .icon-user{background-position:-168px 0}
327 .icon-user{background-position:-168px 0}
328 .icon-film{background-position:-192px 0}
328 .icon-film{background-position:-192px 0}
329 .icon-th-large{background-position:-216px 0}
329 .icon-th-large{background-position:-216px 0}
330 .icon-th{background-position:-240px 0}
330 .icon-th{background-position:-240px 0}
331 .icon-th-list{background-position:-264px 0}
331 .icon-th-list{background-position:-264px 0}
332 .icon-ok{background-position:-288px 0}
332 .icon-ok{background-position:-288px 0}
333 .icon-remove{background-position:-312px 0}
333 .icon-remove{background-position:-312px 0}
334 .icon-zoom-in{background-position:-336px 0}
334 .icon-zoom-in{background-position:-336px 0}
335 .icon-zoom-out{background-position:-360px 0}
335 .icon-zoom-out{background-position:-360px 0}
336 .icon-off{background-position:-384px 0}
336 .icon-off{background-position:-384px 0}
337 .icon-signal{background-position:-408px 0}
337 .icon-signal{background-position:-408px 0}
338 .icon-cog{background-position:-432px 0}
338 .icon-cog{background-position:-432px 0}
339 .icon-trash{background-position:-456px 0}
339 .icon-trash{background-position:-456px 0}
340 .icon-home{background-position:0 -24px}
340 .icon-home{background-position:0 -24px}
341 .icon-file{background-position:-24px -24px}
341 .icon-file{background-position:-24px -24px}
342 .icon-time{background-position:-48px -24px}
342 .icon-time{background-position:-48px -24px}
343 .icon-road{background-position:-72px -24px}
343 .icon-road{background-position:-72px -24px}
344 .icon-download-alt{background-position:-96px -24px}
344 .icon-download-alt{background-position:-96px -24px}
345 .icon-download{background-position:-120px -24px}
345 .icon-download{background-position:-120px -24px}
346 .icon-upload{background-position:-144px -24px}
346 .icon-upload{background-position:-144px -24px}
347 .icon-inbox{background-position:-168px -24px}
347 .icon-inbox{background-position:-168px -24px}
348 .icon-play-circle{background-position:-192px -24px}
348 .icon-play-circle{background-position:-192px -24px}
349 .icon-repeat{background-position:-216px -24px}
349 .icon-repeat{background-position:-216px -24px}
350 .icon-refresh{background-position:-240px -24px}
350 .icon-refresh{background-position:-240px -24px}
351 .icon-list-alt{background-position:-264px -24px}
351 .icon-list-alt{background-position:-264px -24px}
352 .icon-lock{background-position:-287px -24px}
352 .icon-lock{background-position:-287px -24px}
353 .icon-flag{background-position:-312px -24px}
353 .icon-flag{background-position:-312px -24px}
354 .icon-headphones{background-position:-336px -24px}
354 .icon-headphones{background-position:-336px -24px}
355 .icon-volume-off{background-position:-360px -24px}
355 .icon-volume-off{background-position:-360px -24px}
356 .icon-volume-down{background-position:-384px -24px}
356 .icon-volume-down{background-position:-384px -24px}
357 .icon-volume-up{background-position:-408px -24px}
357 .icon-volume-up{background-position:-408px -24px}
358 .icon-qrcode{background-position:-432px -24px}
358 .icon-qrcode{background-position:-432px -24px}
359 .icon-barcode{background-position:-456px -24px}
359 .icon-barcode{background-position:-456px -24px}
360 .icon-tag{background-position:0 -48px}
360 .icon-tag{background-position:0 -48px}
361 .icon-tags{background-position:-25px -48px}
361 .icon-tags{background-position:-25px -48px}
362 .icon-book{background-position:-48px -48px}
362 .icon-book{background-position:-48px -48px}
363 .icon-bookmark{background-position:-72px -48px}
363 .icon-bookmark{background-position:-72px -48px}
364 .icon-print{background-position:-96px -48px}
364 .icon-print{background-position:-96px -48px}
365 .icon-camera{background-position:-120px -48px}
365 .icon-camera{background-position:-120px -48px}
366 .icon-font{background-position:-144px -48px}
366 .icon-font{background-position:-144px -48px}
367 .icon-bold{background-position:-167px -48px}
367 .icon-bold{background-position:-167px -48px}
368 .icon-italic{background-position:-192px -48px}
368 .icon-italic{background-position:-192px -48px}
369 .icon-text-height{background-position:-216px -48px}
369 .icon-text-height{background-position:-216px -48px}
370 .icon-text-width{background-position:-240px -48px}
370 .icon-text-width{background-position:-240px -48px}
371 .icon-align-left{background-position:-264px -48px}
371 .icon-align-left{background-position:-264px -48px}
372 .icon-align-center{background-position:-288px -48px}
372 .icon-align-center{background-position:-288px -48px}
373 .icon-align-right{background-position:-312px -48px}
373 .icon-align-right{background-position:-312px -48px}
374 .icon-align-justify{background-position:-336px -48px}
374 .icon-align-justify{background-position:-336px -48px}
375 .icon-list{background-position:-360px -48px}
375 .icon-list{background-position:-360px -48px}
376 .icon-indent-left{background-position:-384px -48px}
376 .icon-indent-left{background-position:-384px -48px}
377 .icon-indent-right{background-position:-408px -48px}
377 .icon-indent-right{background-position:-408px -48px}
378 .icon-facetime-video{background-position:-432px -48px}
378 .icon-facetime-video{background-position:-432px -48px}
379 .icon-picture{background-position:-456px -48px}
379 .icon-picture{background-position:-456px -48px}
380 .icon-pencil{background-position:0 -72px}
380 .icon-pencil{background-position:0 -72px}
381 .icon-map-marker{background-position:-24px -72px}
381 .icon-map-marker{background-position:-24px -72px}
382 .icon-adjust{background-position:-48px -72px}
382 .icon-adjust{background-position:-48px -72px}
383 .icon-tint{background-position:-72px -72px}
383 .icon-tint{background-position:-72px -72px}
384 .icon-edit{background-position:-96px -72px}
384 .icon-edit{background-position:-96px -72px}
385 .icon-share{background-position:-120px -72px}
385 .icon-share{background-position:-120px -72px}
386 .icon-check{background-position:-144px -72px}
386 .icon-check{background-position:-144px -72px}
387 .icon-move{background-position:-168px -72px}
387 .icon-move{background-position:-168px -72px}
388 .icon-step-backward{background-position:-192px -72px}
388 .icon-step-backward{background-position:-192px -72px}
389 .icon-fast-backward{background-position:-216px -72px}
389 .icon-fast-backward{background-position:-216px -72px}
390 .icon-backward{background-position:-240px -72px}
390 .icon-backward{background-position:-240px -72px}
391 .icon-play{background-position:-264px -72px}
391 .icon-play{background-position:-264px -72px}
392 .icon-pause{background-position:-288px -72px}
392 .icon-pause{background-position:-288px -72px}
393 .icon-stop{background-position:-312px -72px}
393 .icon-stop{background-position:-312px -72px}
394 .icon-forward{background-position:-336px -72px}
394 .icon-forward{background-position:-336px -72px}
395 .icon-fast-forward{background-position:-360px -72px}
395 .icon-fast-forward{background-position:-360px -72px}
396 .icon-step-forward{background-position:-384px -72px}
396 .icon-step-forward{background-position:-384px -72px}
397 .icon-eject{background-position:-408px -72px}
397 .icon-eject{background-position:-408px -72px}
398 .icon-chevron-left{background-position:-432px -72px}
398 .icon-chevron-left{background-position:-432px -72px}
399 .icon-chevron-right{background-position:-456px -72px}
399 .icon-chevron-right{background-position:-456px -72px}
400 .icon-plus-sign{background-position:0 -96px}
400 .icon-plus-sign{background-position:0 -96px}
401 .icon-minus-sign{background-position:-24px -96px}
401 .icon-minus-sign{background-position:-24px -96px}
402 .icon-remove-sign{background-position:-48px -96px}
402 .icon-remove-sign{background-position:-48px -96px}
403 .icon-ok-sign{background-position:-72px -96px}
403 .icon-ok-sign{background-position:-72px -96px}
404 .icon-question-sign{background-position:-96px -96px}
404 .icon-question-sign{background-position:-96px -96px}
405 .icon-info-sign{background-position:-120px -96px}
405 .icon-info-sign{background-position:-120px -96px}
406 .icon-screenshot{background-position:-144px -96px}
406 .icon-screenshot{background-position:-144px -96px}
407 .icon-remove-circle{background-position:-168px -96px}
407 .icon-remove-circle{background-position:-168px -96px}
408 .icon-ok-circle{background-position:-192px -96px}
408 .icon-ok-circle{background-position:-192px -96px}
409 .icon-ban-circle{background-position:-216px -96px}
409 .icon-ban-circle{background-position:-216px -96px}
410 .icon-arrow-left{background-position:-240px -96px}
410 .icon-arrow-left{background-position:-240px -96px}
411 .icon-arrow-right{background-position:-264px -96px}
411 .icon-arrow-right{background-position:-264px -96px}
412 .icon-arrow-up{background-position:-289px -96px}
412 .icon-arrow-up{background-position:-289px -96px}
413 .icon-arrow-down{background-position:-312px -96px}
413 .icon-arrow-down{background-position:-312px -96px}
414 .icon-share-alt{background-position:-336px -96px}
414 .icon-share-alt{background-position:-336px -96px}
415 .icon-resize-full{background-position:-360px -96px}
415 .icon-resize-full{background-position:-360px -96px}
416 .icon-resize-small{background-position:-384px -96px}
416 .icon-resize-small{background-position:-384px -96px}
417 .icon-plus{background-position:-408px -96px}
417 .icon-plus{background-position:-408px -96px}
418 .icon-minus{background-position:-433px -96px}
418 .icon-minus{background-position:-433px -96px}
419 .icon-asterisk{background-position:-456px -96px}
419 .icon-asterisk{background-position:-456px -96px}
420 .icon-exclamation-sign{background-position:0 -120px}
420 .icon-exclamation-sign{background-position:0 -120px}
421 .icon-gift{background-position:-24px -120px}
421 .icon-gift{background-position:-24px -120px}
422 .icon-leaf{background-position:-48px -120px}
422 .icon-leaf{background-position:-48px -120px}
423 .icon-fire{background-position:-72px -120px}
423 .icon-fire{background-position:-72px -120px}
424 .icon-eye-open{background-position:-96px -120px}
424 .icon-eye-open{background-position:-96px -120px}
425 .icon-eye-close{background-position:-120px -120px}
425 .icon-eye-close{background-position:-120px -120px}
426 .icon-warning-sign{background-position:-144px -120px}
426 .icon-warning-sign{background-position:-144px -120px}
427 .icon-plane{background-position:-168px -120px}
427 .icon-plane{background-position:-168px -120px}
428 .icon-calendar{background-position:-192px -120px}
428 .icon-calendar{background-position:-192px -120px}
429 .icon-random{background-position:-216px -120px;width:16px}
429 .icon-random{background-position:-216px -120px;width:16px}
430 .icon-comment{background-position:-240px -120px}
430 .icon-comment{background-position:-240px -120px}
431 .icon-magnet{background-position:-264px -120px}
431 .icon-magnet{background-position:-264px -120px}
432 .icon-chevron-up{background-position:-288px -120px}
432 .icon-chevron-up{background-position:-288px -120px}
433 .icon-chevron-down{background-position:-313px -119px}
433 .icon-chevron-down{background-position:-313px -119px}
434 .icon-retweet{background-position:-336px -120px}
434 .icon-retweet{background-position:-336px -120px}
435 .icon-shopping-cart{background-position:-360px -120px}
435 .icon-shopping-cart{background-position:-360px -120px}
436 .icon-folder-close{background-position:-384px -120px;width:16px}
436 .icon-folder-close{background-position:-384px -120px;width:16px}
437 .icon-folder-open{background-position:-408px -120px;width:16px}
437 .icon-folder-open{background-position:-408px -120px;width:16px}
438 .icon-resize-vertical{background-position:-432px -119px}
438 .icon-resize-vertical{background-position:-432px -119px}
439 .icon-resize-horizontal{background-position:-456px -118px}
439 .icon-resize-horizontal{background-position:-456px -118px}
440 .icon-hdd{background-position:0 -144px}
440 .icon-hdd{background-position:0 -144px}
441 .icon-bullhorn{background-position:-24px -144px}
441 .icon-bullhorn{background-position:-24px -144px}
442 .icon-bell{background-position:-48px -144px}
442 .icon-bell{background-position:-48px -144px}
443 .icon-certificate{background-position:-72px -144px}
443 .icon-certificate{background-position:-72px -144px}
444 .icon-thumbs-up{background-position:-96px -144px}
444 .icon-thumbs-up{background-position:-96px -144px}
445 .icon-thumbs-down{background-position:-120px -144px}
445 .icon-thumbs-down{background-position:-120px -144px}
446 .icon-hand-right{background-position:-144px -144px}
446 .icon-hand-right{background-position:-144px -144px}
447 .icon-hand-left{background-position:-168px -144px}
447 .icon-hand-left{background-position:-168px -144px}
448 .icon-hand-up{background-position:-192px -144px}
448 .icon-hand-up{background-position:-192px -144px}
449 .icon-hand-down{background-position:-216px -144px}
449 .icon-hand-down{background-position:-216px -144px}
450 .icon-circle-arrow-right{background-position:-240px -144px}
450 .icon-circle-arrow-right{background-position:-240px -144px}
451 .icon-circle-arrow-left{background-position:-264px -144px}
451 .icon-circle-arrow-left{background-position:-264px -144px}
452 .icon-circle-arrow-up{background-position:-288px -144px}
452 .icon-circle-arrow-up{background-position:-288px -144px}
453 .icon-circle-arrow-down{background-position:-312px -144px}
453 .icon-circle-arrow-down{background-position:-312px -144px}
454 .icon-globe{background-position:-336px -144px}
454 .icon-globe{background-position:-336px -144px}
455 .icon-wrench{background-position:-360px -144px}
455 .icon-wrench{background-position:-360px -144px}
456 .icon-tasks{background-position:-384px -144px}
456 .icon-tasks{background-position:-384px -144px}
457 .icon-filter{background-position:-408px -144px}
457 .icon-filter{background-position:-408px -144px}
458 .icon-briefcase{background-position:-432px -144px}
458 .icon-briefcase{background-position:-432px -144px}
459 .icon-fullscreen{background-position:-456px -144px}
459 .icon-fullscreen{background-position:-456px -144px}
460 .dropup,.dropdown{position:relative}
460 .dropup,.dropdown{position:relative}
461 .dropdown-toggle{*margin-bottom:-3px}
461 .dropdown-toggle{*margin-bottom:-3px}
462 .dropdown-toggle:active,.open .dropdown-toggle{outline:0}
462 .dropdown-toggle:active,.open .dropdown-toggle{outline:0}
463 .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}
463 .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}
464 .dropdown .caret{margin-top:8px;margin-left:2px}
464 .dropdown .caret{margin-top:8px;margin-left:2px}
465 .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;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}
465 .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;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}
466 .dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}
466 .dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}
467 .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}
467 .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}
468 .dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{text-decoration:none;color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top, #08c, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#0077b3));background-image:-webkit-linear-gradient(top, #08c, #0077b3);background-image:-o-linear-gradient(top, #08c, #0077b3);background-image:linear-gradient(to bottom, #08c, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0)}
468 .dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{text-decoration:none;color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top, #08c, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#0077b3));background-image:-webkit-linear-gradient(top, #08c, #0077b3);background-image:-o-linear-gradient(top, #08c, #0077b3);background-image:linear-gradient(to bottom, #08c, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0)}
469 .dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#0081c2;background-image:-moz-linear-gradient(top, #08c, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#0077b3));background-image:-webkit-linear-gradient(top, #08c, #0077b3);background-image:-o-linear-gradient(top, #08c, #0077b3);background-image:linear-gradient(to bottom, #08c, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0)}
469 .dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#0081c2;background-image:-moz-linear-gradient(top, #08c, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#0077b3));background-image:-webkit-linear-gradient(top, #08c, #0077b3);background-image:-o-linear-gradient(top, #08c, #0077b3);background-image:linear-gradient(to bottom, #08c, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0)}
470 .dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}
470 .dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}
471 .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:default}
471 .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:default}
472 .open{*z-index:1000}.open>.dropdown-menu{display:block}
472 .open{*z-index:1000}.open>.dropdown-menu{display:block}
473 .dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}
473 .dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}
474 .pull-right>.dropdown-menu{right:0;left:auto}
474 .pull-right>.dropdown-menu{right:0;left:auto}
475 .dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}
475 .dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}
476 .dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}
476 .dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}
477 .dropdown-submenu{position:relative}
477 .dropdown-submenu{position:relative}
478 .dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:0 6px 6px 6px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}
478 .dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:0 6px 6px 6px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}
479 .dropdown-submenu:hover>.dropdown-menu{display:block}
479 .dropdown-submenu:hover>.dropdown-menu{display:block}
480 .dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;border-radius:5px 5px 5px 0;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}
480 .dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;border-radius:5px 5px 5px 0;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}
481 .dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px}
481 .dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px}
482 .dropdown-submenu:hover>a:after{border-left-color:#fff}
482 .dropdown-submenu:hover>a:after{border-left-color:#fff}
483 .dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;border-radius:6px 0 6px 6px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}
483 .dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;border-radius:6px 0 6px 6px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}
484 .dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px}
484 .dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px}
485 .typeahead{z-index:1051;margin-top:2px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
485 .typeahead{z-index:1051;margin-top:2px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
486 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-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)}
486 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-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)}
487 .well-large{padding:24px;border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
487 .well-large{padding:24px;border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
488 .well-small{padding:9px;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}
488 .well-small{padding:9px;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}
489 .fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}
489 .fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}
490 .collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}
490 .collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}
491 .close{float:right;font-size:20px;font-weight:bold;line-height:20px;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:.4;filter:alpha(opacity=40)}
491 .close{float:right;font-size:20px;font-weight:bold;line-height:20px;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:.4;filter:alpha(opacity=40)}
492 button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}
492 button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}
493 .btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;font-size:13px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #fff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #fff, #e6e6e6);background-image:-o-linear-gradient(top, #fff, #e6e6e6);background-image:linear-gradient(to bottom, #fff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #ccc;*border:0;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}
493 .btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;font-size:13px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #fff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #fff, #e6e6e6);background-image:-o-linear-gradient(top, #fff, #e6e6e6);background-image:linear-gradient(to bottom, #fff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #ccc;*border:0;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}
494 .btn:active,.btn.active{background-color:#ccc \9}
494 .btn:active,.btn.active{background-color:#ccc \9}
495 .btn:first-child{*margin-left:0}
495 .btn:first-child{*margin-left:0}
496 .btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}
496 .btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}
497 .btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}
497 .btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}
498 .btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)}
498 .btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)}
499 .btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}
499 .btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}
500 .btn-large{padding:11px 19px;font-size:16.25px;border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
500 .btn-large{padding:11px 19px;font-size:16.25px;border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
501 .btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}
501 .btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}
502 .btn-small{padding:2px 10px;font-size:11.049999999999999px;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}
502 .btn-small{padding:2px 10px;font-size:11.049999999999999px;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}
503 .btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}
503 .btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}
504 .btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}
504 .btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}
505 .btn-mini{padding:0 6px;font-size:9.75px;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}
505 .btn-mini{padding:0 6px;font-size:9.75px;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}
506 .btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
506 .btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
507 .btn-block+.btn-block{margin-top:5px}
507 .btn-block+.btn-block{margin-top:5px}
508 input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}
508 input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}
509 .btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}
509 .btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}
510 .btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;background-image:-moz-linear-gradient(top, #08c, #04c);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#04c));background-image:-webkit-linear-gradient(top, #08c, #04c);background-image:-o-linear-gradient(top, #08c, #04c);background-image:linear-gradient(to bottom, #08c, #04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#04c;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}
510 .btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;background-image:-moz-linear-gradient(top, #08c, #04c);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#04c));background-image:-webkit-linear-gradient(top, #08c, #04c);background-image:-o-linear-gradient(top, #08c, #04c);background-image:linear-gradient(to bottom, #08c, #04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#04c;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}
511 .btn-primary:active,.btn-primary.active{background-color:#039 \9}
511 .btn-primary:active,.btn-primary.active{background-color:#039 \9}
512 .btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}
512 .btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}
513 .btn-warning:active,.btn-warning.active{background-color:#c67605 \9}
513 .btn-warning:active,.btn-warning.active{background-color:#c67605 \9}
514 .btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}
514 .btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}
515 .btn-danger:active,.btn-danger.active{background-color:#942a25 \9}
515 .btn-danger:active,.btn-danger.active{background-color:#942a25 \9}
516 .btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}
516 .btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}
517 .btn-success:active,.btn-success.active{background-color:#408140 \9}
517 .btn-success:active,.btn-success.active{background-color:#408140 \9}
518 .btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}
518 .btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}
519 .btn-info:active,.btn-info.active{background-color:#24748c \9}
519 .btn-info:active,.btn-info.active{background-color:#24748c \9}
520 .btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;background-image:-moz-linear-gradient(top, #444, #222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444), to(#222));background-image:-webkit-linear-gradient(top, #444, #222);background-image:-o-linear-gradient(top, #444, #222);background-image:linear-gradient(to bottom, #444, #222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}
520 .btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;background-image:-moz-linear-gradient(top, #444, #222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444), to(#222));background-image:-webkit-linear-gradient(top, #444, #222);background-image:-o-linear-gradient(top, #444, #222);background-image:linear-gradient(to bottom, #444, #222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}
521 .btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}
521 .btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}
522 button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}
522 button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}
523 button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}
523 button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}
524 button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}
524 button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}
525 button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}
525 button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}
526 .btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}
526 .btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}
527 .btn-link{border-color:transparent;cursor:pointer;color:#08c;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
527 .btn-link{border-color:transparent;cursor:pointer;color:#08c;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
528 .btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}
528 .btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}
529 .btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}
529 .btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}
530 .btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em}.btn-group:first-child{*margin-left:0}
530 .btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em}.btn-group:first-child{*margin-left:0}
531 .btn-group+.btn-group{margin-left:5px}
531 .btn-group+.btn-group{margin-left:5px}
532 .btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}
532 .btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}
533 .btn-group>.btn{position:relative;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
533 .btn-group>.btn{position:relative;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
534 .btn-group>.btn+.btn{margin-left:-1px}
534 .btn-group>.btn+.btn{margin-left:-1px}
535 .btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:13px}
535 .btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:13px}
536 .btn-group>.btn-mini{font-size:9.75px}
536 .btn-group>.btn-mini{font-size:9.75px}
537 .btn-group>.btn-small{font-size:11.049999999999999px}
537 .btn-group>.btn-small{font-size:11.049999999999999px}
538 .btn-group>.btn-large{font-size:16.25px}
538 .btn-group>.btn-large{font-size:16.25px}
539 .btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}
539 .btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}
540 .btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px}
540 .btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px}
541 .btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px}
541 .btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px}
542 .btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px}
542 .btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px}
543 .btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}
543 .btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}
544 .btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}
544 .btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}
545 .btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px}
545 .btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px}
546 .btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px}
546 .btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px}
547 .btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}
547 .btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}
548 .btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px}
548 .btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px}
549 .btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)}
549 .btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)}
550 .btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}
550 .btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}
551 .btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}
551 .btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}
552 .btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}
552 .btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}
553 .btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}
553 .btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}
554 .btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}
554 .btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}
555 .btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}
555 .btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}
556 .btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}
556 .btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}
557 .btn .caret{margin-top:8px;margin-left:0}
557 .btn .caret{margin-top:8px;margin-left:0}
558 .btn-large .caret{margin-top:6px}
558 .btn-large .caret{margin-top:6px}
559 .btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px}
559 .btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px}
560 .btn-mini .caret,.btn-small .caret{margin-top:8px}
560 .btn-mini .caret,.btn-small .caret{margin-top:8px}
561 .dropup .btn-large .caret{border-bottom-width:5px}
561 .dropup .btn-large .caret{border-bottom-width:5px}
562 .btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}
562 .btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}
563 .btn-group-vertical{display:inline-block;*display:inline;*zoom:1}
563 .btn-group-vertical{display:inline-block;*display:inline;*zoom:1}
564 .btn-group-vertical>.btn{display:block;float:none;max-width:100%;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
564 .btn-group-vertical>.btn{display:block;float:none;max-width:100%;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
565 .btn-group-vertical>.btn+.btn{margin-left:0;margin-top:-1px}
565 .btn-group-vertical>.btn+.btn{margin-left:0;margin-top:-1px}
566 .btn-group-vertical>.btn:first-child{border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}
566 .btn-group-vertical>.btn:first-child{border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}
567 .btn-group-vertical>.btn:last-child{border-radius:0 0 4px 4px;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}
567 .btn-group-vertical>.btn:last-child{border-radius:0 0 4px 4px;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}
568 .btn-group-vertical>.btn-large:first-child{border-radius:6px 6px 0 0;-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}
568 .btn-group-vertical>.btn-large:first-child{border-radius:6px 6px 0 0;-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}
569 .btn-group-vertical>.btn-large:last-child{border-radius:0 0 6px 6px;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}
569 .btn-group-vertical>.btn-large:last-child{border-radius:0 0 6px 6px;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}
570 .alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
570 .alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
571 .alert,.alert h4{color:#c09853}
571 .alert,.alert h4{color:#c09853}
572 .alert h4{margin:0}
572 .alert h4{margin:0}
573 .alert .close{position:relative;top:-2px;right:-21px;line-height:20px}
573 .alert .close{position:relative;top:-2px;right:-21px;line-height:20px}
574 .alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}
574 .alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}
575 .alert-success h4{color:#468847}
575 .alert-success h4{color:#468847}
576 .alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}
576 .alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}
577 .alert-danger h4,.alert-error h4{color:#b94a48}
577 .alert-danger h4,.alert-error h4{color:#b94a48}
578 .alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}
578 .alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}
579 .alert-info h4{color:#3a87ad}
579 .alert-info h4{color:#3a87ad}
580 .alert-block{padding-top:14px;padding-bottom:14px}
580 .alert-block{padding-top:14px;padding-bottom:14px}
581 .alert-block>p,.alert-block>ul{margin-bottom:0}
581 .alert-block>p,.alert-block>ul{margin-bottom:0}
582 .alert-block p+p{margin-top:5px}
582 .alert-block p+p{margin-top:5px}
583 .nav{margin-left:0;margin-bottom:20px;list-style:none}
583 .nav{margin-left:0;margin-bottom:20px;list-style:none}
584 .nav>li>a{display:block}
584 .nav>li>a{display:block}
585 .nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}
585 .nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}
586 .nav>li>a>img{max-width:none}
586 .nav>li>a>img{max-width:none}
587 .nav>.pull-right{float:right}
587 .nav>.pull-right{float:right}
588 .nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}
588 .nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}
589 .nav li+.nav-header{margin-top:9px}
589 .nav li+.nav-header{margin-top:9px}
590 .nav-list{padding-left:15px;padding-right:15px;margin-bottom:0}
590 .nav-list{padding-left:15px;padding-right:15px;margin-bottom:0}
591 .nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}
591 .nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}
592 .nav-list>li>a{padding:3px 15px}
592 .nav-list>li>a{padding:3px 15px}
593 .nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}
593 .nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}
594 .nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}
594 .nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}
595 .nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}
595 .nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}
596 .nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0}
596 .nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0}
597 .nav-tabs:after,.nav-pills:after{clear:both}
597 .nav-tabs:after,.nav-pills:after{clear:both}
598 .nav-tabs>li,.nav-pills>li{float:left}
598 .nav-tabs>li,.nav-pills>li{float:left}
599 .nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}
599 .nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}
600 .nav-tabs{border-bottom:1px solid #ddd}
600 .nav-tabs{border-bottom:1px solid #ddd}
601 .nav-tabs>li{margin-bottom:-1px}
601 .nav-tabs>li{margin-bottom:-1px}
602 .nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}
602 .nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}
603 .nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}
603 .nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}
604 .nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}
604 .nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}
605 .nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#08c}
605 .nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#08c}
606 .nav-stacked>li{float:none}
606 .nav-stacked>li{float:none}
607 .nav-stacked>li>a{margin-right:0}
607 .nav-stacked>li>a{margin-right:0}
608 .nav-tabs.nav-stacked{border-bottom:0}
608 .nav-tabs.nav-stacked{border-bottom:0}
609 .nav-tabs.nav-stacked>li>a{border:1px solid #ddd;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
609 .nav-tabs.nav-stacked>li>a{border:1px solid #ddd;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
610 .nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px}
610 .nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px}
611 .nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}
611 .nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}
612 .nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{border-color:#ddd;z-index:2}
612 .nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{border-color:#ddd;z-index:2}
613 .nav-pills.nav-stacked>li>a{margin-bottom:3px}
613 .nav-pills.nav-stacked>li>a{margin-bottom:3px}
614 .nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}
614 .nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}
615 .nav-tabs .dropdown-menu{border-radius:0 0 6px 6px;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}
615 .nav-tabs .dropdown-menu{border-radius:0 0 6px 6px;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}
616 .nav-pills .dropdown-menu{border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
616 .nav-pills .dropdown-menu{border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
617 .nav .dropdown-toggle .caret{border-top-color:#08c;border-bottom-color:#08c;margin-top:6px}
617 .nav .dropdown-toggle .caret{border-top-color:#08c;border-bottom-color:#08c;margin-top:6px}
618 .nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580}
618 .nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580}
619 .nav-tabs .dropdown-toggle .caret{margin-top:8px}
619 .nav-tabs .dropdown-toggle .caret{margin-top:8px}
620 .nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}
620 .nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}
621 .nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}
621 .nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}
622 .nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}
622 .nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}
623 .nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}
623 .nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}
624 .nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}
624 .nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}
625 .tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}
625 .tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}
626 .tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0}
626 .tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0}
627 .tabbable:after{clear:both}
627 .tabbable:after{clear:both}
628 .tab-content{overflow:auto}
628 .tab-content{overflow:auto}
629 .tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}
629 .tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}
630 .tab-content>.tab-pane,.pill-content>.pill-pane{display:none}
630 .tab-content>.tab-pane,.pill-content>.pill-pane{display:none}
631 .tab-content>.active,.pill-content>.active{display:block}
631 .tab-content>.active,.pill-content>.active{display:block}
632 .tabs-below>.nav-tabs{border-top:1px solid #ddd}
632 .tabs-below>.nav-tabs{border-top:1px solid #ddd}
633 .tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}
633 .tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}
634 .tabs-below>.nav-tabs>li>a{border-radius:0 0 4px 4px;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-bottom-color:transparent;border-top-color:#ddd}
634 .tabs-below>.nav-tabs>li>a{border-radius:0 0 4px 4px;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-bottom-color:transparent;border-top-color:#ddd}
635 .tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}
635 .tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}
636 .tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}
636 .tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}
637 .tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}
637 .tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}
638 .tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}
638 .tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}
639 .tabs-left>.nav-tabs>li>a{margin-right:-1px;border-radius:4px 0 0 4px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}
639 .tabs-left>.nav-tabs>li>a{margin-right:-1px;border-radius:4px 0 0 4px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}
640 .tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}
640 .tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}
641 .tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}
641 .tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}
642 .tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}
642 .tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}
643 .tabs-right>.nav-tabs>li>a{margin-left:-1px;border-radius:0 4px 4px 0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}
643 .tabs-right>.nav-tabs>li>a{margin-left:-1px;border-radius:0 4px 4px 0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}
644 .tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}
644 .tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}
645 .tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}
645 .tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}
646 .nav>.disabled>a{color:#999}
646 .nav>.disabled>a{color:#999}
647 .nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;background-color:transparent;cursor:default}
647 .nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;background-color:transparent;cursor:default}
648 .navbar{overflow:visible;margin-bottom:20px;*position:relative;*z-index:2}
648 .navbar{overflow:visible;margin-bottom:20px;*position:relative;*z-index:2}
649 .navbar-inner{min-height:36px;padding-left:20px;padding-right:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top, #fff, #f2f2f2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#f2f2f2));background-image:-webkit-linear-gradient(top, #fff, #f2f2f2);background-image:-o-linear-gradient(top, #fff, #f2f2f2);background-image:linear-gradient(to bottom, #fff, #f2f2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065);*zoom:1}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0}
649 .navbar-inner{min-height:36px;padding-left:20px;padding-right:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top, #fff, #f2f2f2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#f2f2f2));background-image:-webkit-linear-gradient(top, #fff, #f2f2f2);background-image:-o-linear-gradient(top, #fff, #f2f2f2);background-image:linear-gradient(to bottom, #fff, #f2f2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065);*zoom:1}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0}
650 .navbar-inner:after{clear:both}
650 .navbar-inner:after{clear:both}
651 .navbar .container{width:auto}
651 .navbar .container{width:auto}
652 .nav-collapse.collapse{height:auto;overflow:visible}
652 .nav-collapse.collapse{height:auto;overflow:visible}
653 .navbar .brand{float:left;display:block;padding:8px 20px 8px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}
653 .navbar .brand{float:left;display:block;padding:8px 20px 8px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}
654 .navbar-text{margin-bottom:0;line-height:36px;color:#777}
654 .navbar-text{margin-bottom:0;line-height:36px;color:#777}
655 .navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}
655 .navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}
656 .navbar .divider-vertical{height:36px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #fff}
656 .navbar .divider-vertical{height:36px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #fff}
657 .navbar .btn,.navbar .btn-group{margin-top:3px}
657 .navbar .btn,.navbar .btn-group{margin-top:3px}
658 .navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}
658 .navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}
659 .navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0}
659 .navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0}
660 .navbar-form:after{clear:both}
660 .navbar-form:after{clear:both}
661 .navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:3px}
661 .navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:3px}
662 .navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}
662 .navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}
663 .navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}
663 .navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}
664 .navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}
664 .navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}
665 .navbar-search{position:relative;float:left;margin-top:3px;margin-bottom:0}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}
665 .navbar-search{position:relative;float:left;margin-top:3px;margin-bottom:0}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}
666 .navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
666 .navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
667 .navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}
667 .navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}
668 .navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}
668 .navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}
669 .navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}
669 .navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}
670 .navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
670 .navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
671 .navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}
671 .navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}
672 .navbar-fixed-top{top:0}
672 .navbar-fixed-top{top:0}
673 .navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,.1);box-shadow:0 1px 10px rgba(0,0,0,.1)}
673 .navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,.1);box-shadow:0 1px 10px rgba(0,0,0,.1)}
674 .navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,.1);box-shadow:0 -1px 10px rgba(0,0,0,.1)}
674 .navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,.1);box-shadow:0 -1px 10px rgba(0,0,0,.1)}
675 .navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}
675 .navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}
676 .navbar .nav.pull-right{float:right;margin-right:0}
676 .navbar .nav.pull-right{float:right;margin-right:0}
677 .navbar .nav>li{float:left}
677 .navbar .nav>li{float:left}
678 .navbar .nav>li>a{float:none;padding:8px 15px 8px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}
678 .navbar .nav>li>a{float:none;padding:8px 15px 8px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}
679 .navbar .nav .dropdown-toggle .caret{margin-top:8px}
679 .navbar .nav .dropdown-toggle .caret{margin-top:8px}
680 .navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333;text-decoration:none}
680 .navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333;text-decoration:none}
681 .navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}
681 .navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}
682 .navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;background-image:-moz-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));background-image:-webkit-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-o-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:linear-gradient(to bottom, #f2f2f2, #e5e5e5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#e5e5e5;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}
682 .navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;background-image:-moz-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));background-image:-webkit-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-o-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:linear-gradient(to bottom, #f2f2f2, #e5e5e5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#e5e5e5;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}
683 .navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}
683 .navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}
684 .navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}
684 .navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}
685 .btn-navbar .icon-bar+.icon-bar{margin-top:3px}
685 .btn-navbar .icon-bar+.icon-bar{margin-top:3px}
686 .navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);position:absolute;top:-7px;left:9px}
686 .navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);position:absolute;top:-7px;left:9px}
687 .navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:10px}
687 .navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:10px}
688 .navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0,0,0,0.2);border-bottom:0;bottom:-7px;top:auto}
688 .navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0,0,0,0.2);border-bottom:0;bottom:-7px;top:auto}
689 .navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #fff;border-bottom:0;bottom:-6px;top:auto}
689 .navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #fff;border-bottom:0;bottom:-6px;top:auto}
690 .navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}
690 .navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}
691 .navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555}
691 .navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555}
692 .navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}
692 .navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}
693 .navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}
693 .navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}
694 .navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px}
694 .navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px}
695 .navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px}
695 .navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px}
696 .navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;border-radius:6px 0 6px 6px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}
696 .navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;border-radius:6px 0 6px 6px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}
697 .navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222, #111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222), to(#111));background-image:-webkit-linear-gradient(top, #222, #111);background-image:-o-linear-gradient(top, #222, #111);background-image:linear-gradient(to bottom, #222, #111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525}
697 .navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222, #111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222), to(#111));background-image:-webkit-linear-gradient(top, #222, #111);background-image:-o-linear-gradient(top, #222, #111);background-image:linear-gradient(to bottom, #222, #111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525}
698 .navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}
698 .navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}
699 .navbar-inverse .brand{color:#999}
699 .navbar-inverse .brand{color:#999}
700 .navbar-inverse .navbar-text{color:#999}
700 .navbar-inverse .navbar-text{color:#999}
701 .navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#fff}
701 .navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#fff}
702 .navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}
702 .navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}
703 .navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}
703 .navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}
704 .navbar-inverse .divider-vertical{border-left-color:#111;border-right-color:#222}
704 .navbar-inverse .divider-vertical{border-left-color:#111;border-right-color:#222}
705 .navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111;color:#fff}
705 .navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111;color:#fff}
706 .navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}
706 .navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}
707 .navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}
707 .navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}
708 .navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}
708 .navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}
709 .navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}
709 .navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}
710 .navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}
710 .navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}
711 .navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}
711 .navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}
712 .navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15);outline:0}
712 .navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15);outline:0}
713 .navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}
713 .navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}
714 .navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}
714 .navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}
715 .breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #fff}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}
715 .breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #fff}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}
716 .breadcrumb>.active{color:#999}
716 .breadcrumb>.active{color:#999}
717 .pagination{margin:20px 0}
717 .pagination{margin:20px 0}
718 .pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}
718 .pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}
719 .pagination ul>li{display:inline}
719 .pagination ul>li{display:inline}
720 .pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}
720 .pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}
721 .pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}
721 .pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}
722 .pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}
722 .pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}
723 .pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;background-color:transparent;cursor:default}
723 .pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;background-color:transparent;cursor:default}
724 .pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}
724 .pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}
725 .pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px}
725 .pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px}
726 .pagination-centered{text-align:center}
726 .pagination-centered{text-align:center}
727 .pagination-right{text-align:right}
727 .pagination-right{text-align:right}
728 .pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:16.25px}
728 .pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:16.25px}
729 .pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px}
729 .pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px}
730 .pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px}
730 .pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px}
731 .pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px}
731 .pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px}
732 .pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px}
732 .pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px}
733 .pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.049999999999999px}
733 .pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.049999999999999px}
734 .pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:9.75px}
734 .pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:9.75px}
735 .pager{margin:20px 0;list-style:none;text-align:center;*zoom:1}.pager:before,.pager:after{display:table;content:"";line-height:0}
735 .pager{margin:20px 0;list-style:none;text-align:center;*zoom:1}.pager:before,.pager:after{display:table;content:"";line-height:0}
736 .pager:after{clear:both}
736 .pager:after{clear:both}
737 .pager li{display:inline}
737 .pager li{display:inline}
738 .pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}
738 .pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}
739 .pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}
739 .pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}
740 .pager .next>a,.pager .next>span{float:right}
740 .pager .next>a,.pager .next>span{float:right}
741 .pager .previous>a,.pager .previous>span{float:left}
741 .pager .previous>a,.pager .previous>span{float:left}
742 .pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:default}
742 .pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:default}
743 .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}
743 .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}
744 .modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}
744 .modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}
745 .modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:none}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%}
745 .modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:none}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%}
746 .modal.fade.in{top:10%}
746 .modal.fade.in{top:10%}
747 .modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}
747 .modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}
748 .modal-header h3{margin:0;line-height:30px}
748 .modal-header h3{margin:0;line-height:30px}
749 .modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px}
749 .modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px}
750 .modal-form{margin-bottom:0}
750 .modal-form{margin-bottom:0}
751 .modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;*zoom:1}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0}
751 .modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;*zoom:1}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0}
752 .modal-footer:after{clear:both}
752 .modal-footer:after{clear:both}
753 .modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}
753 .modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}
754 .modal-footer .btn-group .btn+.btn{margin-left:-1px}
754 .modal-footer .btn-group .btn+.btn{margin-left:-1px}
755 .modal-footer .btn-block+.btn-block{margin-left:0}
755 .modal-footer .btn-block+.btn-block{margin-left:0}
756 .tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}
756 .tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}
757 .tooltip.top{margin-top:-3px;padding:5px 0}
757 .tooltip.top{margin-top:-3px;padding:5px 0}
758 .tooltip.right{margin-left:3px;padding:0 5px}
758 .tooltip.right{margin-left:3px;padding:0 5px}
759 .tooltip.bottom{margin-top:3px;padding:5px 0}
759 .tooltip.bottom{margin-top:3px;padding:5px 0}
760 .tooltip.left{margin-left:-3px;padding:0 5px}
760 .tooltip.left{margin-left:-3px;padding:0 5px}
761 .tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
761 .tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
762 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}
762 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}
763 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}
763 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}
764 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}
764 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}
765 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}
765 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}
766 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}
766 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}
767 .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-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}
767 .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-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}
768 .popover.right{margin-left:10px}
768 .popover.right{margin-left:10px}
769 .popover.bottom{margin-top:10px}
769 .popover.bottom{margin-top:10px}
770 .popover.left{margin-left:-10px}
770 .popover.left{margin-left:-10px}
771 .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;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}
771 .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;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}
772 .popover-content{padding:9px 14px}
772 .popover-content{padding:9px 14px}
773 .popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}
773 .popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}
774 .popover .arrow{border-width:11px}
774 .popover .arrow{border-width:11px}
775 .popover .arrow:after{border-width:10px;content:""}
775 .popover .arrow:after{border-width:10px;content:""}
776 .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{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}
776 .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{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}
777 .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{left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}
777 .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{left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}
778 .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{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}
778 .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{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}
779 .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{right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}
779 .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{right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}
780 .thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0}
780 .thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0}
781 .thumbnails:after{clear:both}
781 .thumbnails:after{clear:both}
782 .row-fluid .thumbnails{margin-left:0}
782 .row-fluid .thumbnails{margin-left:0}
783 .thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}
783 .thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}
784 .thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}
784 .thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}
785 a.thumbnail:hover,a.thumbnail:focus{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}
785 a.thumbnail:hover,a.thumbnail:focus{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}
786 .thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto}
786 .thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto}
787 .thumbnail .caption{padding:9px;color:#555}
787 .thumbnail .caption{padding:9px;color:#555}
788 .media,.media-body{overflow:hidden;*overflow:visible;zoom:1}
788 .media,.media-body{overflow:hidden;*overflow:visible;zoom:1}
789 .media,.media .media{margin-top:15px}
789 .media,.media .media{margin-top:15px}
790 .media:first-child{margin-top:0}
790 .media:first-child{margin-top:0}
791 .media-object{display:block}
791 .media-object{display:block}
792 .media-heading{margin:0 0 5px}
792 .media-heading{margin:0 0 5px}
793 .media>.pull-left{margin-right:10px}
793 .media>.pull-left{margin-right:10px}
794 .media>.pull-right{margin-left:10px}
794 .media>.pull-right{margin-left:10px}
795 .media-list{margin-left:0;list-style:none}
795 .media-list{margin-left:0;list-style:none}
796 .label,.badge{display:inline-block;padding:2px 4px;font-size:10.998px;font-weight:bold;line-height:14px;color:#fff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#999}
796 .label,.badge{display:inline-block;padding:2px 4px;font-size:10.998px;font-weight:bold;line-height:14px;color:#fff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#999}
797 .label{border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}
797 .label{border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}
798 .badge{padding-left:9px;padding-right:9px;border-radius:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}
798 .badge{padding-left:9px;padding-right:9px;border-radius:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}
799 .label:empty,.badge:empty{display:none}
799 .label:empty,.badge:empty{display:none}
800 a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}
800 a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}
801 .label-important,.badge-important{background-color:#b94a48}
801 .label-important,.badge-important{background-color:#b94a48}
802 .label-important[href],.badge-important[href]{background-color:#953b39}
802 .label-important[href],.badge-important[href]{background-color:#953b39}
803 .label-warning,.badge-warning{background-color:#f89406}
803 .label-warning,.badge-warning{background-color:#f89406}
804 .label-warning[href],.badge-warning[href]{background-color:#c67605}
804 .label-warning[href],.badge-warning[href]{background-color:#c67605}
805 .label-success,.badge-success{background-color:#468847}
805 .label-success,.badge-success{background-color:#468847}
806 .label-success[href],.badge-success[href]{background-color:#356635}
806 .label-success[href],.badge-success[href]{background-color:#356635}
807 .label-info,.badge-info{background-color:#3a87ad}
807 .label-info,.badge-info{background-color:#3a87ad}
808 .label-info[href],.badge-info[href]{background-color:#2d6987}
808 .label-info[href],.badge-info[href]{background-color:#2d6987}
809 .label-inverse,.badge-inverse{background-color:#333}
809 .label-inverse,.badge-inverse{background-color:#333}
810 .label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}
810 .label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}
811 .btn .label,.btn .badge{position:relative;top:-1px}
811 .btn .label,.btn .badge{position:relative;top:-1px}
812 .btn-mini .label,.btn-mini .badge{top:0}
812 .btn-mini .label,.btn-mini .badge{top:0}
813 @-webkit-keyframes progress-bar-stripes{from{background-position:40px 0} to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0} to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0} to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0} to{background-position:40px 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:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
813 @-webkit-keyframes progress-bar-stripes{from{background-position:40px 0} to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0} to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0} to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0} to{background-position:40px 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:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
814 .progress .bar{width:0;height:100%;color:#fff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-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-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}
814 .progress .bar{width:0;height:100%;color:#fff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-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-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}
815 .progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15)}
815 .progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15)}
816 .progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,0.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,0.15)), color-stop(.75, rgba(255,255,255,0.15)), color-stop(.75, transparent), to(transparent));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:-moz-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:-o-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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}
816 .progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,0.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,0.15)), color-stop(.75, rgba(255,255,255,0.15)), color-stop(.75, transparent), to(transparent));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:-moz-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:-o-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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}
817 .progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}
817 .progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}
818 .progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0)}
818 .progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0)}
819 .progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,0.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,0.15)), color-stop(.75, rgba(255,255,255,0.15)), color-stop(.75, transparent), to(transparent));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:-moz-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:-o-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)}
819 .progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,0.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,0.15)), color-stop(.75, rgba(255,255,255,0.15)), color-stop(.75, transparent), to(transparent));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:-moz-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:-o-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)}
820 .progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0)}
820 .progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0)}
821 .progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,0.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,0.15)), color-stop(.75, rgba(255,255,255,0.15)), color-stop(.75, transparent), to(transparent));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:-moz-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:-o-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)}
821 .progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,0.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,0.15)), color-stop(.75, rgba(255,255,255,0.15)), color-stop(.75, transparent), to(transparent));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:-moz-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:-o-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)}
822 .progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0)}
822 .progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0)}
823 .progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,0.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,0.15)), color-stop(.75, rgba(255,255,255,0.15)), color-stop(.75, transparent), to(transparent));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:-moz-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:-o-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)}
823 .progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,0.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,0.15)), color-stop(.75, rgba(255,255,255,0.15)), color-stop(.75, transparent), to(transparent));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:-moz-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:-o-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)}
824 .progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0)}
824 .progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0)}
825 .progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,0.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,0.15)), color-stop(.75, rgba(255,255,255,0.15)), color-stop(.75, transparent), to(transparent));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:-moz-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:-o-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)}
825 .progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,0.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,0.15)), color-stop(.75, rgba(255,255,255,0.15)), color-stop(.75, transparent), to(transparent));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:-moz-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:-o-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)}
826 .accordion{margin-bottom:20px}
826 .accordion{margin-bottom:20px}
827 .accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
827 .accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
828 .accordion-heading{border-bottom:0}
828 .accordion-heading{border-bottom:0}
829 .accordion-heading .accordion-toggle{display:block;padding:8px 15px}
829 .accordion-heading .accordion-toggle{display:block;padding:8px 15px}
830 .accordion-toggle{cursor:pointer}
830 .accordion-toggle{cursor:pointer}
831 .accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}
831 .accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}
832 .carousel{position:relative;margin-bottom:20px;line-height:1}
832 .carousel{position:relative;margin-bottom:20px;line-height:1}
833 .carousel-inner{overflow:hidden;width:100%;position:relative}
833 .carousel-inner{overflow:hidden;width:100%;position:relative}
834 .carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}
834 .carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}
835 .carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}
835 .carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}
836 .carousel-inner>.active{left:0}
836 .carousel-inner>.active{left:0}
837 .carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}
837 .carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}
838 .carousel-inner>.next{left:100%}
838 .carousel-inner>.next{left:100%}
839 .carousel-inner>.prev{left:-100%}
839 .carousel-inner>.prev{left:-100%}
840 .carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}
840 .carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}
841 .carousel-inner>.active.left{left:-100%}
841 .carousel-inner>.active.left{left:-100%}
842 .carousel-inner>.active.right{left:100%}
842 .carousel-inner>.active.right{left:100%}
843 .carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{left:auto;right:15px}
843 .carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{left:auto;right:15px}
844 .carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}
844 .carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}
845 .carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}
845 .carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}
846 .carousel-indicators .active{background-color:#fff}
846 .carousel-indicators .active{background-color:#fff}
847 .carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}
847 .carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}
848 .carousel-caption h4,.carousel-caption p{color:#fff;line-height:20px}
848 .carousel-caption h4,.carousel-caption p{color:#fff;line-height:20px}
849 .carousel-caption h4{margin:0 0 5px}
849 .carousel-caption h4{margin:0 0 5px}
850 .carousel-caption p{margin-bottom:0}
850 .carousel-caption p{margin-bottom:0}
851 .hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px}
851 .hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px}
852 .hero-unit li{line-height:30px}
852 .hero-unit li{line-height:30px}
853 .pull-right{float:right}
853 .pull-right{float:right}
854 .pull-left{float:left}
854 .pull-left{float:left}
855 .hide{display:none}
855 .hide{display:none}
856 .show{display:block}
856 .show{display:block}
857 .invisible{visibility:hidden}
857 .invisible{visibility:hidden}
858 .affix{position:fixed}
858 .affix{position:fixed}
859 @-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}
859 @-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}
860 .visible-phone{display:none !important}
860 .visible-phone{display:none !important}
861 .visible-tablet{display:none !important}
861 .visible-tablet{display:none !important}
862 .hidden-desktop{display:none !important}
862 .hidden-desktop{display:none !important}
863 .visible-desktop{display:inherit !important}
863 .visible-desktop{display:inherit !important}
864 @media (min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit !important} .visible-desktop{display:none !important} .visible-tablet{display:inherit !important} .hidden-tablet{display:none !important}}@media (max-width:767px){.hidden-desktop{display:inherit !important} .visible-desktop{display:none !important} .visible-phone{display:inherit !important} .hidden-phone{display:none !important}}.visible-print{display:none !important}
864 @media (min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit !important} .visible-desktop{display:none !important} .visible-tablet{display:inherit !important} .hidden-tablet{display:none !important}}@media (max-width:767px){.hidden-desktop{display:inherit !important} .visible-desktop{display:none !important} .visible-phone{display:inherit !important} .hidden-phone{display:none !important}}.visible-print{display:none !important}
865 @media print{.visible-print{display:inherit !important} .hidden-print{display:none !important}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;content:"";line-height:0} .row:after{clear:both} [class*="span"]{float:left;min-height:1px;margin-left:30px} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px} .span12{width:1170px} .span11{width:1070px} .span10{width:970px} .span9{width:870px} .span8{width:770px} .span7{width:670px} .span6{width:570px} .span5{width:470px} .span4{width:370px} .span3{width:270px} .span2{width:170px} .span1{width:70px} .offset12{margin-left:1230px} .offset11{margin-left:1130px} .offset10{margin-left:1030px} .offset9{margin-left:930px} .offset8{margin-left:830px} .offset7{margin-left:730px} .offset6{margin-left:630px} .offset5{margin-left:530px} .offset4{margin-left:430px} .offset3{margin-left:330px} .offset2{margin-left:230px} .offset1{margin-left:130px} .row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0} .row-fluid:after{clear:both} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%} .row-fluid [class*="span"]:first-child{margin-left:0} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%} .row-fluid .span12{width:100%;*width:99.94680851063829%} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%} input,textarea,.uneditable-input{margin-left:0} .controls-row [class*="span"]+[class*="span"]{margin-left:30px} input.span12,textarea.span12,.uneditable-input.span12{width:1156px} input.span11,textarea.span11,.uneditable-input.span11{width:1056px} input.span10,textarea.span10,.uneditable-input.span10{width:956px} input.span9,textarea.span9,.uneditable-input.span9{width:856px} input.span8,textarea.span8,.uneditable-input.span8{width:756px} input.span7,textarea.span7,.uneditable-input.span7{width:656px} input.span6,textarea.span6,.uneditable-input.span6{width:556px} input.span5,textarea.span5,.uneditable-input.span5{width:456px} input.span4,textarea.span4,.uneditable-input.span4{width:356px} input.span3,textarea.span3,.uneditable-input.span3{width:256px} input.span2,textarea.span2,.uneditable-input.span2{width:156px} input.span1,textarea.span1,.uneditable-input.span1{width:56px} .thumbnails{margin-left:-30px} .thumbnails>li{margin-left:30px} .row-fluid .thumbnails{margin-left:0}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;content:"";line-height:0} .row:after{clear:both} [class*="span"]{float:left;min-height:1px;margin-left:20px} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px} .span12{width:724px} .span11{width:662px} .span10{width:600px} .span9{width:538px} .span8{width:476px} .span7{width:414px} .span6{width:352px} .span5{width:290px} .span4{width:228px} .span3{width:166px} .span2{width:104px} .span1{width:42px} .offset12{margin-left:764px} .offset11{margin-left:702px} .offset10{margin-left:640px} .offset9{margin-left:578px} .offset8{margin-left:516px} .offset7{margin-left:454px} .offset6{margin-left:392px} .offset5{margin-left:330px} .offset4{margin-left:268px} .offset3{margin-left:206px} .offset2{margin-left:144px} .offset1{margin-left:82px} .row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0} .row-fluid:after{clear:both} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%} .row-fluid [class*="span"]:first-child{margin-left:0} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%} .row-fluid .span12{width:100%;*width:99.94680851063829%} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%} input,textarea,.uneditable-input{margin-left:0} .controls-row [class*="span"]+[class*="span"]{margin-left:20px} input.span12,textarea.span12,.uneditable-input.span12{width:710px} input.span11,textarea.span11,.uneditable-input.span11{width:648px} input.span10,textarea.span10,.uneditable-input.span10{width:586px} input.span9,textarea.span9,.uneditable-input.span9{width:524px} input.span8,textarea.span8,.uneditable-input.span8{width:462px} input.span7,textarea.span7,.uneditable-input.span7{width:400px} input.span6,textarea.span6,.uneditable-input.span6{width:338px} input.span5,textarea.span5,.uneditable-input.span5{width:276px} input.span4,textarea.span4,.uneditable-input.span4{width:214px} input.span3,textarea.span3,.uneditable-input.span3{width:152px} input.span2,textarea.span2,.uneditable-input.span2{width:90px} input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media (max-width:767px){body{padding-left:20px;padding-right:20px} .navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-left:-20px;margin-right:-20px} .container-fluid{padding:0} .dl-horizontal dt{float:none;clear:none;width:auto;text-align:left} .dl-horizontal dd{margin-left:0} .container{width:auto} .row-fluid{width:100%} .row,.thumbnails{margin-left:0} .thumbnails>li{float:none;margin-left:0} [class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{float:none;display:block;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} .span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} .row-fluid [class*="offset"]:first-child{margin-left:0} .input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} .input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto} .controls-row [class*="span"]+[class*="span"]{margin-left:0} .modal{position:fixed;top:20px;left:20px;right:20px;width:auto;margin:0}.modal.fade{top:-100px} .modal.fade.in{top:20px}}@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0)} .page-header h1 small{display:block;line-height:20px} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc} .form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left} .form-horizontal .controls{margin-left:0} .form-horizontal .control-list{padding-top:0} .form-horizontal .form-actions{padding-left:10px;padding-right:10px} .media .pull-left,.media .pull-right{float:none;display:block;margin-bottom:10px} .media-object{margin-right:0;margin-left:0} .modal{top:10px;left:10px;right:10px} .modal-header .close{padding:10px;margin:-10px} .carousel-caption{position:static}}@media (max-width:979px){body{padding-top:0} .navbar-fixed-top,.navbar-fixed-bottom{position:static} .navbar-fixed-top{margin-bottom:20px} .navbar-fixed-bottom{margin-top:20px} .navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px} .navbar .container{width:auto;padding:0} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px} .nav-collapse{clear:both} .nav-collapse .nav{float:none;margin:0 0 10px} .nav-collapse .nav>li{float:none} .nav-collapse .nav>li>a{margin-bottom:2px} .nav-collapse .nav>.divider-vertical{display:none} .nav-collapse .nav .nav-header{color:#777;text-shadow:none} .nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} .nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px} .nav-collapse .dropdown-menu li+li a{margin-bottom:2px} .nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2} .navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999} .navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111} .nav-collapse.in .btn-group{margin-top:5px;padding:0} .nav-collapse .dropdown-menu{position:static;top:auto;left:auto;float:none;display:none;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none} .nav-collapse .open>.dropdown-menu{display:block} .nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none} .nav-collapse .dropdown-menu .divider{display:none} .nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none} .nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1)} .navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111} .navbar .nav-collapse .nav.pull-right{float:none;margin-left:0} .nav-collapse,.nav-collapse.collapse{overflow:hidden;height:0} .navbar .btn-navbar{display:block} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px}}@media (min-width:979px + 1){.nav-collapse.collapse{height:auto !important;overflow:visible !important}}@font-face{font-family:'FontAwesome';src:url('../components/font-awesome/font/fontawesome-webfont.eot?v=3.2.1');src:url('../components/font-awesome/font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'),url('../components/font-awesome/font/fontawesome-webfont.woff?v=3.2.1') format('woff'),url('../components/font-awesome/font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'),url('../components/font-awesome/font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');font-weight:normal;font-style:normal}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em}
865 @media print{.visible-print{display:inherit !important} .hidden-print{display:none !important}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;content:"";line-height:0} .row:after{clear:both} [class*="span"]{float:left;min-height:1px;margin-left:30px} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px} .span12{width:1170px} .span11{width:1070px} .span10{width:970px} .span9{width:870px} .span8{width:770px} .span7{width:670px} .span6{width:570px} .span5{width:470px} .span4{width:370px} .span3{width:270px} .span2{width:170px} .span1{width:70px} .offset12{margin-left:1230px} .offset11{margin-left:1130px} .offset10{margin-left:1030px} .offset9{margin-left:930px} .offset8{margin-left:830px} .offset7{margin-left:730px} .offset6{margin-left:630px} .offset5{margin-left:530px} .offset4{margin-left:430px} .offset3{margin-left:330px} .offset2{margin-left:230px} .offset1{margin-left:130px} .row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0} .row-fluid:after{clear:both} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%} .row-fluid [class*="span"]:first-child{margin-left:0} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%} .row-fluid .span12{width:100%;*width:99.94680851063829%} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%} input,textarea,.uneditable-input{margin-left:0} .controls-row [class*="span"]+[class*="span"]{margin-left:30px} input.span12,textarea.span12,.uneditable-input.span12{width:1156px} input.span11,textarea.span11,.uneditable-input.span11{width:1056px} input.span10,textarea.span10,.uneditable-input.span10{width:956px} input.span9,textarea.span9,.uneditable-input.span9{width:856px} input.span8,textarea.span8,.uneditable-input.span8{width:756px} input.span7,textarea.span7,.uneditable-input.span7{width:656px} input.span6,textarea.span6,.uneditable-input.span6{width:556px} input.span5,textarea.span5,.uneditable-input.span5{width:456px} input.span4,textarea.span4,.uneditable-input.span4{width:356px} input.span3,textarea.span3,.uneditable-input.span3{width:256px} input.span2,textarea.span2,.uneditable-input.span2{width:156px} input.span1,textarea.span1,.uneditable-input.span1{width:56px} .thumbnails{margin-left:-30px} .thumbnails>li{margin-left:30px} .row-fluid .thumbnails{margin-left:0}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;content:"";line-height:0} .row:after{clear:both} [class*="span"]{float:left;min-height:1px;margin-left:20px} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px} .span12{width:724px} .span11{width:662px} .span10{width:600px} .span9{width:538px} .span8{width:476px} .span7{width:414px} .span6{width:352px} .span5{width:290px} .span4{width:228px} .span3{width:166px} .span2{width:104px} .span1{width:42px} .offset12{margin-left:764px} .offset11{margin-left:702px} .offset10{margin-left:640px} .offset9{margin-left:578px} .offset8{margin-left:516px} .offset7{margin-left:454px} .offset6{margin-left:392px} .offset5{margin-left:330px} .offset4{margin-left:268px} .offset3{margin-left:206px} .offset2{margin-left:144px} .offset1{margin-left:82px} .row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0} .row-fluid:after{clear:both} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%} .row-fluid [class*="span"]:first-child{margin-left:0} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%} .row-fluid .span12{width:100%;*width:99.94680851063829%} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%} input,textarea,.uneditable-input{margin-left:0} .controls-row [class*="span"]+[class*="span"]{margin-left:20px} input.span12,textarea.span12,.uneditable-input.span12{width:710px} input.span11,textarea.span11,.uneditable-input.span11{width:648px} input.span10,textarea.span10,.uneditable-input.span10{width:586px} input.span9,textarea.span9,.uneditable-input.span9{width:524px} input.span8,textarea.span8,.uneditable-input.span8{width:462px} input.span7,textarea.span7,.uneditable-input.span7{width:400px} input.span6,textarea.span6,.uneditable-input.span6{width:338px} input.span5,textarea.span5,.uneditable-input.span5{width:276px} input.span4,textarea.span4,.uneditable-input.span4{width:214px} input.span3,textarea.span3,.uneditable-input.span3{width:152px} input.span2,textarea.span2,.uneditable-input.span2{width:90px} input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media (max-width:767px){body{padding-left:20px;padding-right:20px} .navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-left:-20px;margin-right:-20px} .container-fluid{padding:0} .dl-horizontal dt{float:none;clear:none;width:auto;text-align:left} .dl-horizontal dd{margin-left:0} .container{width:auto} .row-fluid{width:100%} .row,.thumbnails{margin-left:0} .thumbnails>li{float:none;margin-left:0} [class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{float:none;display:block;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} .span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} .row-fluid [class*="offset"]:first-child{margin-left:0} .input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} .input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto} .controls-row [class*="span"]+[class*="span"]{margin-left:0} .modal{position:fixed;top:20px;left:20px;right:20px;width:auto;margin:0}.modal.fade{top:-100px} .modal.fade.in{top:20px}}@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0)} .page-header h1 small{display:block;line-height:20px} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc} .form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left} .form-horizontal .controls{margin-left:0} .form-horizontal .control-list{padding-top:0} .form-horizontal .form-actions{padding-left:10px;padding-right:10px} .media .pull-left,.media .pull-right{float:none;display:block;margin-bottom:10px} .media-object{margin-right:0;margin-left:0} .modal{top:10px;left:10px;right:10px} .modal-header .close{padding:10px;margin:-10px} .carousel-caption{position:static}}@media (max-width:979px){body{padding-top:0} .navbar-fixed-top,.navbar-fixed-bottom{position:static} .navbar-fixed-top{margin-bottom:20px} .navbar-fixed-bottom{margin-top:20px} .navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px} .navbar .container{width:auto;padding:0} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px} .nav-collapse{clear:both} .nav-collapse .nav{float:none;margin:0 0 10px} .nav-collapse .nav>li{float:none} .nav-collapse .nav>li>a{margin-bottom:2px} .nav-collapse .nav>.divider-vertical{display:none} .nav-collapse .nav .nav-header{color:#777;text-shadow:none} .nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} .nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px} .nav-collapse .dropdown-menu li+li a{margin-bottom:2px} .nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2} .navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999} .navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111} .nav-collapse.in .btn-group{margin-top:5px;padding:0} .nav-collapse .dropdown-menu{position:static;top:auto;left:auto;float:none;display:none;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none} .nav-collapse .open>.dropdown-menu{display:block} .nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none} .nav-collapse .dropdown-menu .divider{display:none} .nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none} .nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1)} .navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111} .navbar .nav-collapse .nav.pull-right{float:none;margin-left:0} .nav-collapse,.nav-collapse.collapse{overflow:hidden;height:0} .navbar .btn-navbar{display:block} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px}}@media (min-width:979px + 1){.nav-collapse.collapse{height:auto !important;overflow:visible !important}}@font-face{font-family:'FontAwesome';src:url('../components/font-awesome/font/fontawesome-webfont.eot?v=3.2.1');src:url('../components/font-awesome/font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'),url('../components/font-awesome/font/fontawesome-webfont.woff?v=3.2.1') format('woff'),url('../components/font-awesome/font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'),url('../components/font-awesome/font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');font-weight:normal;font-style:normal}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em}
866 [class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}
866 [class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}
867 .icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em}
867 .icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em}
868 a [class^="icon-"],a [class*=" icon-"]{display:inline}
868 a [class^="icon-"],a [class*=" icon-"]{display:inline}
869 [class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.1428571428571428em;text-align:right;padding-right:.2857142857142857em}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.4285714285714286em}
869 [class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.1428571428571428em;text-align:right;padding-right:.2857142857142857em}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.4285714285714286em}
870 .icons-ul{margin-left:2.142857142857143em;list-style-type:none}.icons-ul>li{position:relative}
870 .icons-ul{margin-left:2.142857142857143em;list-style-type:none}.icons-ul>li{position:relative}
871 .icons-ul .icon-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;text-align:center;line-height:inherit}
871 .icons-ul .icon-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;text-align:center;line-height:inherit}
872 [class^="icon-"].hide,[class*=" icon-"].hide{display:none}
872 [class^="icon-"].hide,[class*=" icon-"].hide{display:none}
873 .icon-muted{color:#eee}
873 .icon-muted{color:#eee}
874 .icon-light{color:#fff}
874 .icon-light{color:#fff}
875 .icon-dark{color:#333}
875 .icon-dark{color:#333}
876 .icon-border{border:solid 1px #eee;padding:.2em .25em .15em;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}
876 .icon-border{border:solid 1px #eee;padding:.2em .25em .15em;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}
877 .icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
877 .icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
878 .icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}
878 .icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}
879 .icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
879 .icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
880 .icon-5x{font-size:5em}.icon-5x.icon-border{border-width:5px;border-radius:7px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}
880 .icon-5x{font-size:5em}.icon-5x.icon-border{border-width:5px;border-radius:7px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}
881 .pull-right{float:right}
881 .pull-right{float:right}
882 .pull-left{float:left}
882 .pull-left{float:left}
883 [class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}
883 [class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}
884 [class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em}
884 [class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em}
885 [class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0 0;background-repeat:repeat;margin-top:0}
885 [class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0 0;background-repeat:repeat;margin-top:0}
886 .icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none}
886 .icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none}
887 .btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em}
887 .btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em}
888 .btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block}
888 .btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block}
889 .nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em}
889 .nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em}
890 .btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em}
890 .btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em}
891 .btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em}
891 .btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em}
892 .btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em}
892 .btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em}
893 .btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em}
893 .btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em}
894 .btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em}
894 .btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em}
895 .btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em}
895 .btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em}
896 .nav-list [class^="icon-"],.nav-list [class*=" icon-"]{line-height:inherit}
896 .nav-list [class^="icon-"],.nav-list [class*=" icon-"]{line-height:inherit}
897 .icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em}
897 .icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em}
898 .icon-stack .icon-stack-base{font-size:2em;*line-height:1em}
898 .icon-stack .icon-stack-base{font-size:2em;*line-height:1em}
899 .icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}
899 .icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}
900 a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none}
900 a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none}
901 @-moz-keyframes spin{0%{-moz-transform:rotate(0deg)} 100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)} 100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)} 100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)} 100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)} 100%{transform:rotate(359deg)}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}
901 @-moz-keyframes spin{0%{-moz-transform:rotate(0deg)} 100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)} 100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)} 100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)} 100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)} 100%{transform:rotate(359deg)}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}
902 .icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2)}
902 .icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2)}
903 .icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}
903 .icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}
904 .icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}
904 .icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}
905 .icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}
905 .icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}
906 a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block}
906 a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block}
907 .icon-glass:before{content:"\f000"}
907 .icon-glass:before{content:"\f000"}
908 .icon-music:before{content:"\f001"}
908 .icon-music:before{content:"\f001"}
909 .icon-search:before{content:"\f002"}
909 .icon-search:before{content:"\f002"}
910 .icon-envelope-alt:before{content:"\f003"}
910 .icon-envelope-alt:before{content:"\f003"}
911 .icon-heart:before{content:"\f004"}
911 .icon-heart:before{content:"\f004"}
912 .icon-star:before{content:"\f005"}
912 .icon-star:before{content:"\f005"}
913 .icon-star-empty:before{content:"\f006"}
913 .icon-star-empty:before{content:"\f006"}
914 .icon-user:before{content:"\f007"}
914 .icon-user:before{content:"\f007"}
915 .icon-film:before{content:"\f008"}
915 .icon-film:before{content:"\f008"}
916 .icon-th-large:before{content:"\f009"}
916 .icon-th-large:before{content:"\f009"}
917 .icon-th:before{content:"\f00a"}
917 .icon-th:before{content:"\f00a"}
918 .icon-th-list:before{content:"\f00b"}
918 .icon-th-list:before{content:"\f00b"}
919 .icon-ok:before{content:"\f00c"}
919 .icon-ok:before{content:"\f00c"}
920 .icon-remove:before{content:"\f00d"}
920 .icon-remove:before{content:"\f00d"}
921 .icon-zoom-in:before{content:"\f00e"}
921 .icon-zoom-in:before{content:"\f00e"}
922 .icon-zoom-out:before{content:"\f010"}
922 .icon-zoom-out:before{content:"\f010"}
923 .icon-power-off:before,.icon-off:before{content:"\f011"}
923 .icon-power-off:before,.icon-off:before{content:"\f011"}
924 .icon-signal:before{content:"\f012"}
924 .icon-signal:before{content:"\f012"}
925 .icon-gear:before,.icon-cog:before{content:"\f013"}
925 .icon-gear:before,.icon-cog:before{content:"\f013"}
926 .icon-trash:before{content:"\f014"}
926 .icon-trash:before{content:"\f014"}
927 .icon-home:before{content:"\f015"}
927 .icon-home:before{content:"\f015"}
928 .icon-file-alt:before{content:"\f016"}
928 .icon-file-alt:before{content:"\f016"}
929 .icon-time:before{content:"\f017"}
929 .icon-time:before{content:"\f017"}
930 .icon-road:before{content:"\f018"}
930 .icon-road:before{content:"\f018"}
931 .icon-download-alt:before{content:"\f019"}
931 .icon-download-alt:before{content:"\f019"}
932 .icon-download:before{content:"\f01a"}
932 .icon-download:before{content:"\f01a"}
933 .icon-upload:before{content:"\f01b"}
933 .icon-upload:before{content:"\f01b"}
934 .icon-inbox:before{content:"\f01c"}
934 .icon-inbox:before{content:"\f01c"}
935 .icon-play-circle:before{content:"\f01d"}
935 .icon-play-circle:before{content:"\f01d"}
936 .icon-rotate-right:before,.icon-repeat:before{content:"\f01e"}
936 .icon-rotate-right:before,.icon-repeat:before{content:"\f01e"}
937 .icon-refresh:before{content:"\f021"}
937 .icon-refresh:before{content:"\f021"}
938 .icon-list-alt:before{content:"\f022"}
938 .icon-list-alt:before{content:"\f022"}
939 .icon-lock:before{content:"\f023"}
939 .icon-lock:before{content:"\f023"}
940 .icon-flag:before{content:"\f024"}
940 .icon-flag:before{content:"\f024"}
941 .icon-headphones:before{content:"\f025"}
941 .icon-headphones:before{content:"\f025"}
942 .icon-volume-off:before{content:"\f026"}
942 .icon-volume-off:before{content:"\f026"}
943 .icon-volume-down:before{content:"\f027"}
943 .icon-volume-down:before{content:"\f027"}
944 .icon-volume-up:before{content:"\f028"}
944 .icon-volume-up:before{content:"\f028"}
945 .icon-qrcode:before{content:"\f029"}
945 .icon-qrcode:before{content:"\f029"}
946 .icon-barcode:before{content:"\f02a"}
946 .icon-barcode:before{content:"\f02a"}
947 .icon-tag:before{content:"\f02b"}
947 .icon-tag:before{content:"\f02b"}
948 .icon-tags:before{content:"\f02c"}
948 .icon-tags:before{content:"\f02c"}
949 .icon-book:before{content:"\f02d"}
949 .icon-book:before{content:"\f02d"}
950 .icon-bookmark:before{content:"\f02e"}
950 .icon-bookmark:before{content:"\f02e"}
951 .icon-print:before{content:"\f02f"}
951 .icon-print:before{content:"\f02f"}
952 .icon-camera:before{content:"\f030"}
952 .icon-camera:before{content:"\f030"}
953 .icon-font:before{content:"\f031"}
953 .icon-font:before{content:"\f031"}
954 .icon-bold:before{content:"\f032"}
954 .icon-bold:before{content:"\f032"}
955 .icon-italic:before{content:"\f033"}
955 .icon-italic:before{content:"\f033"}
956 .icon-text-height:before{content:"\f034"}
956 .icon-text-height:before{content:"\f034"}
957 .icon-text-width:before{content:"\f035"}
957 .icon-text-width:before{content:"\f035"}
958 .icon-align-left:before{content:"\f036"}
958 .icon-align-left:before{content:"\f036"}
959 .icon-align-center:before{content:"\f037"}
959 .icon-align-center:before{content:"\f037"}
960 .icon-align-right:before{content:"\f038"}
960 .icon-align-right:before{content:"\f038"}
961 .icon-align-justify:before{content:"\f039"}
961 .icon-align-justify:before{content:"\f039"}
962 .icon-list:before{content:"\f03a"}
962 .icon-list:before{content:"\f03a"}
963 .icon-indent-left:before{content:"\f03b"}
963 .icon-indent-left:before{content:"\f03b"}
964 .icon-indent-right:before{content:"\f03c"}
964 .icon-indent-right:before{content:"\f03c"}
965 .icon-facetime-video:before{content:"\f03d"}
965 .icon-facetime-video:before{content:"\f03d"}
966 .icon-picture:before{content:"\f03e"}
966 .icon-picture:before{content:"\f03e"}
967 .icon-pencil:before{content:"\f040"}
967 .icon-pencil:before{content:"\f040"}
968 .icon-map-marker:before{content:"\f041"}
968 .icon-map-marker:before{content:"\f041"}
969 .icon-adjust:before{content:"\f042"}
969 .icon-adjust:before{content:"\f042"}
970 .icon-tint:before{content:"\f043"}
970 .icon-tint:before{content:"\f043"}
971 .icon-edit:before{content:"\f044"}
971 .icon-edit:before{content:"\f044"}
972 .icon-share:before{content:"\f045"}
972 .icon-share:before{content:"\f045"}
973 .icon-check:before{content:"\f046"}
973 .icon-check:before{content:"\f046"}
974 .icon-move:before{content:"\f047"}
974 .icon-move:before{content:"\f047"}
975 .icon-step-backward:before{content:"\f048"}
975 .icon-step-backward:before{content:"\f048"}
976 .icon-fast-backward:before{content:"\f049"}
976 .icon-fast-backward:before{content:"\f049"}
977 .icon-backward:before{content:"\f04a"}
977 .icon-backward:before{content:"\f04a"}
978 .icon-play:before{content:"\f04b"}
978 .icon-play:before{content:"\f04b"}
979 .icon-pause:before{content:"\f04c"}
979 .icon-pause:before{content:"\f04c"}
980 .icon-stop:before{content:"\f04d"}
980 .icon-stop:before{content:"\f04d"}
981 .icon-forward:before{content:"\f04e"}
981 .icon-forward:before{content:"\f04e"}
982 .icon-fast-forward:before{content:"\f050"}
982 .icon-fast-forward:before{content:"\f050"}
983 .icon-step-forward:before{content:"\f051"}
983 .icon-step-forward:before{content:"\f051"}
984 .icon-eject:before{content:"\f052"}
984 .icon-eject:before{content:"\f052"}
985 .icon-chevron-left:before{content:"\f053"}
985 .icon-chevron-left:before{content:"\f053"}
986 .icon-chevron-right:before{content:"\f054"}
986 .icon-chevron-right:before{content:"\f054"}
987 .icon-plus-sign:before{content:"\f055"}
987 .icon-plus-sign:before{content:"\f055"}
988 .icon-minus-sign:before{content:"\f056"}
988 .icon-minus-sign:before{content:"\f056"}
989 .icon-remove-sign:before{content:"\f057"}
989 .icon-remove-sign:before{content:"\f057"}
990 .icon-ok-sign:before{content:"\f058"}
990 .icon-ok-sign:before{content:"\f058"}
991 .icon-question-sign:before{content:"\f059"}
991 .icon-question-sign:before{content:"\f059"}
992 .icon-info-sign:before{content:"\f05a"}
992 .icon-info-sign:before{content:"\f05a"}
993 .icon-screenshot:before{content:"\f05b"}
993 .icon-screenshot:before{content:"\f05b"}
994 .icon-remove-circle:before{content:"\f05c"}
994 .icon-remove-circle:before{content:"\f05c"}
995 .icon-ok-circle:before{content:"\f05d"}
995 .icon-ok-circle:before{content:"\f05d"}
996 .icon-ban-circle:before{content:"\f05e"}
996 .icon-ban-circle:before{content:"\f05e"}
997 .icon-arrow-left:before{content:"\f060"}
997 .icon-arrow-left:before{content:"\f060"}
998 .icon-arrow-right:before{content:"\f061"}
998 .icon-arrow-right:before{content:"\f061"}
999 .icon-arrow-up:before{content:"\f062"}
999 .icon-arrow-up:before{content:"\f062"}
1000 .icon-arrow-down:before{content:"\f063"}
1000 .icon-arrow-down:before{content:"\f063"}
1001 .icon-mail-forward:before,.icon-share-alt:before{content:"\f064"}
1001 .icon-mail-forward:before,.icon-share-alt:before{content:"\f064"}
1002 .icon-resize-full:before{content:"\f065"}
1002 .icon-resize-full:before{content:"\f065"}
1003 .icon-resize-small:before{content:"\f066"}
1003 .icon-resize-small:before{content:"\f066"}
1004 .icon-plus:before{content:"\f067"}
1004 .icon-plus:before{content:"\f067"}
1005 .icon-minus:before{content:"\f068"}
1005 .icon-minus:before{content:"\f068"}
1006 .icon-asterisk:before{content:"\f069"}
1006 .icon-asterisk:before{content:"\f069"}
1007 .icon-exclamation-sign:before{content:"\f06a"}
1007 .icon-exclamation-sign:before{content:"\f06a"}
1008 .icon-gift:before{content:"\f06b"}
1008 .icon-gift:before{content:"\f06b"}
1009 .icon-leaf:before{content:"\f06c"}
1009 .icon-leaf:before{content:"\f06c"}
1010 .icon-fire:before{content:"\f06d"}
1010 .icon-fire:before{content:"\f06d"}
1011 .icon-eye-open:before{content:"\f06e"}
1011 .icon-eye-open:before{content:"\f06e"}
1012 .icon-eye-close:before{content:"\f070"}
1012 .icon-eye-close:before{content:"\f070"}
1013 .icon-warning-sign:before{content:"\f071"}
1013 .icon-warning-sign:before{content:"\f071"}
1014 .icon-plane:before{content:"\f072"}
1014 .icon-plane:before{content:"\f072"}
1015 .icon-calendar:before{content:"\f073"}
1015 .icon-calendar:before{content:"\f073"}
1016 .icon-random:before{content:"\f074"}
1016 .icon-random:before{content:"\f074"}
1017 .icon-comment:before{content:"\f075"}
1017 .icon-comment:before{content:"\f075"}
1018 .icon-magnet:before{content:"\f076"}
1018 .icon-magnet:before{content:"\f076"}
1019 .icon-chevron-up:before{content:"\f077"}
1019 .icon-chevron-up:before{content:"\f077"}
1020 .icon-chevron-down:before{content:"\f078"}
1020 .icon-chevron-down:before{content:"\f078"}
1021 .icon-retweet:before{content:"\f079"}
1021 .icon-retweet:before{content:"\f079"}
1022 .icon-shopping-cart:before{content:"\f07a"}
1022 .icon-shopping-cart:before{content:"\f07a"}
1023 .icon-folder-close:before{content:"\f07b"}
1023 .icon-folder-close:before{content:"\f07b"}
1024 .icon-folder-open:before{content:"\f07c"}
1024 .icon-folder-open:before{content:"\f07c"}
1025 .icon-resize-vertical:before{content:"\f07d"}
1025 .icon-resize-vertical:before{content:"\f07d"}
1026 .icon-resize-horizontal:before{content:"\f07e"}
1026 .icon-resize-horizontal:before{content:"\f07e"}
1027 .icon-bar-chart:before{content:"\f080"}
1027 .icon-bar-chart:before{content:"\f080"}
1028 .icon-twitter-sign:before{content:"\f081"}
1028 .icon-twitter-sign:before{content:"\f081"}
1029 .icon-facebook-sign:before{content:"\f082"}
1029 .icon-facebook-sign:before{content:"\f082"}
1030 .icon-camera-retro:before{content:"\f083"}
1030 .icon-camera-retro:before{content:"\f083"}
1031 .icon-key:before{content:"\f084"}
1031 .icon-key:before{content:"\f084"}
1032 .icon-gears:before,.icon-cogs:before{content:"\f085"}
1032 .icon-gears:before,.icon-cogs:before{content:"\f085"}
1033 .icon-comments:before{content:"\f086"}
1033 .icon-comments:before{content:"\f086"}
1034 .icon-thumbs-up-alt:before{content:"\f087"}
1034 .icon-thumbs-up-alt:before{content:"\f087"}
1035 .icon-thumbs-down-alt:before{content:"\f088"}
1035 .icon-thumbs-down-alt:before{content:"\f088"}
1036 .icon-star-half:before{content:"\f089"}
1036 .icon-star-half:before{content:"\f089"}
1037 .icon-heart-empty:before{content:"\f08a"}
1037 .icon-heart-empty:before{content:"\f08a"}
1038 .icon-signout:before{content:"\f08b"}
1038 .icon-signout:before{content:"\f08b"}
1039 .icon-linkedin-sign:before{content:"\f08c"}
1039 .icon-linkedin-sign:before{content:"\f08c"}
1040 .icon-pushpin:before{content:"\f08d"}
1040 .icon-pushpin:before{content:"\f08d"}
1041 .icon-external-link:before{content:"\f08e"}
1041 .icon-external-link:before{content:"\f08e"}
1042 .icon-signin:before{content:"\f090"}
1042 .icon-signin:before{content:"\f090"}
1043 .icon-trophy:before{content:"\f091"}
1043 .icon-trophy:before{content:"\f091"}
1044 .icon-github-sign:before{content:"\f092"}
1044 .icon-github-sign:before{content:"\f092"}
1045 .icon-upload-alt:before{content:"\f093"}
1045 .icon-upload-alt:before{content:"\f093"}
1046 .icon-lemon:before{content:"\f094"}
1046 .icon-lemon:before{content:"\f094"}
1047 .icon-phone:before{content:"\f095"}
1047 .icon-phone:before{content:"\f095"}
1048 .icon-unchecked:before,.icon-check-empty:before{content:"\f096"}
1048 .icon-unchecked:before,.icon-check-empty:before{content:"\f096"}
1049 .icon-bookmark-empty:before{content:"\f097"}
1049 .icon-bookmark-empty:before{content:"\f097"}
1050 .icon-phone-sign:before{content:"\f098"}
1050 .icon-phone-sign:before{content:"\f098"}
1051 .icon-twitter:before{content:"\f099"}
1051 .icon-twitter:before{content:"\f099"}
1052 .icon-facebook:before{content:"\f09a"}
1052 .icon-facebook:before{content:"\f09a"}
1053 .icon-github:before{content:"\f09b"}
1053 .icon-github:before{content:"\f09b"}
1054 .icon-unlock:before{content:"\f09c"}
1054 .icon-unlock:before{content:"\f09c"}
1055 .icon-credit-card:before{content:"\f09d"}
1055 .icon-credit-card:before{content:"\f09d"}
1056 .icon-rss:before{content:"\f09e"}
1056 .icon-rss:before{content:"\f09e"}
1057 .icon-hdd:before{content:"\f0a0"}
1057 .icon-hdd:before{content:"\f0a0"}
1058 .icon-bullhorn:before{content:"\f0a1"}
1058 .icon-bullhorn:before{content:"\f0a1"}
1059 .icon-bell:before{content:"\f0a2"}
1059 .icon-bell:before{content:"\f0a2"}
1060 .icon-certificate:before{content:"\f0a3"}
1060 .icon-certificate:before{content:"\f0a3"}
1061 .icon-hand-right:before{content:"\f0a4"}
1061 .icon-hand-right:before{content:"\f0a4"}
1062 .icon-hand-left:before{content:"\f0a5"}
1062 .icon-hand-left:before{content:"\f0a5"}
1063 .icon-hand-up:before{content:"\f0a6"}
1063 .icon-hand-up:before{content:"\f0a6"}
1064 .icon-hand-down:before{content:"\f0a7"}
1064 .icon-hand-down:before{content:"\f0a7"}
1065 .icon-circle-arrow-left:before{content:"\f0a8"}
1065 .icon-circle-arrow-left:before{content:"\f0a8"}
1066 .icon-circle-arrow-right:before{content:"\f0a9"}
1066 .icon-circle-arrow-right:before{content:"\f0a9"}
1067 .icon-circle-arrow-up:before{content:"\f0aa"}
1067 .icon-circle-arrow-up:before{content:"\f0aa"}
1068 .icon-circle-arrow-down:before{content:"\f0ab"}
1068 .icon-circle-arrow-down:before{content:"\f0ab"}
1069 .icon-globe:before{content:"\f0ac"}
1069 .icon-globe:before{content:"\f0ac"}
1070 .icon-wrench:before{content:"\f0ad"}
1070 .icon-wrench:before{content:"\f0ad"}
1071 .icon-tasks:before{content:"\f0ae"}
1071 .icon-tasks:before{content:"\f0ae"}
1072 .icon-filter:before{content:"\f0b0"}
1072 .icon-filter:before{content:"\f0b0"}
1073 .icon-briefcase:before{content:"\f0b1"}
1073 .icon-briefcase:before{content:"\f0b1"}
1074 .icon-fullscreen:before{content:"\f0b2"}
1074 .icon-fullscreen:before{content:"\f0b2"}
1075 .icon-group:before{content:"\f0c0"}
1075 .icon-group:before{content:"\f0c0"}
1076 .icon-link:before{content:"\f0c1"}
1076 .icon-link:before{content:"\f0c1"}
1077 .icon-cloud:before{content:"\f0c2"}
1077 .icon-cloud:before{content:"\f0c2"}
1078 .icon-beaker:before{content:"\f0c3"}
1078 .icon-beaker:before{content:"\f0c3"}
1079 .icon-cut:before{content:"\f0c4"}
1079 .icon-cut:before{content:"\f0c4"}
1080 .icon-copy:before{content:"\f0c5"}
1080 .icon-copy:before{content:"\f0c5"}
1081 .icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6"}
1081 .icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6"}
1082 .icon-save:before{content:"\f0c7"}
1082 .icon-save:before{content:"\f0c7"}
1083 .icon-sign-blank:before{content:"\f0c8"}
1083 .icon-sign-blank:before{content:"\f0c8"}
1084 .icon-reorder:before{content:"\f0c9"}
1084 .icon-reorder:before{content:"\f0c9"}
1085 .icon-list-ul:before{content:"\f0ca"}
1085 .icon-list-ul:before{content:"\f0ca"}
1086 .icon-list-ol:before{content:"\f0cb"}
1086 .icon-list-ol:before{content:"\f0cb"}
1087 .icon-strikethrough:before{content:"\f0cc"}
1087 .icon-strikethrough:before{content:"\f0cc"}
1088 .icon-underline:before{content:"\f0cd"}
1088 .icon-underline:before{content:"\f0cd"}
1089 .icon-table:before{content:"\f0ce"}
1089 .icon-table:before{content:"\f0ce"}
1090 .icon-magic:before{content:"\f0d0"}
1090 .icon-magic:before{content:"\f0d0"}
1091 .icon-truck:before{content:"\f0d1"}
1091 .icon-truck:before{content:"\f0d1"}
1092 .icon-pinterest:before{content:"\f0d2"}
1092 .icon-pinterest:before{content:"\f0d2"}
1093 .icon-pinterest-sign:before{content:"\f0d3"}
1093 .icon-pinterest-sign:before{content:"\f0d3"}
1094 .icon-google-plus-sign:before{content:"\f0d4"}
1094 .icon-google-plus-sign:before{content:"\f0d4"}
1095 .icon-google-plus:before{content:"\f0d5"}
1095 .icon-google-plus:before{content:"\f0d5"}
1096 .icon-money:before{content:"\f0d6"}
1096 .icon-money:before{content:"\f0d6"}
1097 .icon-caret-down:before{content:"\f0d7"}
1097 .icon-caret-down:before{content:"\f0d7"}
1098 .icon-caret-up:before{content:"\f0d8"}
1098 .icon-caret-up:before{content:"\f0d8"}
1099 .icon-caret-left:before{content:"\f0d9"}
1099 .icon-caret-left:before{content:"\f0d9"}
1100 .icon-caret-right:before{content:"\f0da"}
1100 .icon-caret-right:before{content:"\f0da"}
1101 .icon-columns:before{content:"\f0db"}
1101 .icon-columns:before{content:"\f0db"}
1102 .icon-sort:before{content:"\f0dc"}
1102 .icon-sort:before{content:"\f0dc"}
1103 .icon-sort-down:before{content:"\f0dd"}
1103 .icon-sort-down:before{content:"\f0dd"}
1104 .icon-sort-up:before{content:"\f0de"}
1104 .icon-sort-up:before{content:"\f0de"}
1105 .icon-envelope:before{content:"\f0e0"}
1105 .icon-envelope:before{content:"\f0e0"}
1106 .icon-linkedin:before{content:"\f0e1"}
1106 .icon-linkedin:before{content:"\f0e1"}
1107 .icon-rotate-left:before,.icon-undo:before{content:"\f0e2"}
1107 .icon-rotate-left:before,.icon-undo:before{content:"\f0e2"}
1108 .icon-legal:before{content:"\f0e3"}
1108 .icon-legal:before{content:"\f0e3"}
1109 .icon-dashboard:before{content:"\f0e4"}
1109 .icon-dashboard:before{content:"\f0e4"}
1110 .icon-comment-alt:before{content:"\f0e5"}
1110 .icon-comment-alt:before{content:"\f0e5"}
1111 .icon-comments-alt:before{content:"\f0e6"}
1111 .icon-comments-alt:before{content:"\f0e6"}
1112 .icon-bolt:before{content:"\f0e7"}
1112 .icon-bolt:before{content:"\f0e7"}
1113 .icon-sitemap:before{content:"\f0e8"}
1113 .icon-sitemap:before{content:"\f0e8"}
1114 .icon-umbrella:before{content:"\f0e9"}
1114 .icon-umbrella:before{content:"\f0e9"}
1115 .icon-paste:before{content:"\f0ea"}
1115 .icon-paste:before{content:"\f0ea"}
1116 .icon-lightbulb:before{content:"\f0eb"}
1116 .icon-lightbulb:before{content:"\f0eb"}
1117 .icon-exchange:before{content:"\f0ec"}
1117 .icon-exchange:before{content:"\f0ec"}
1118 .icon-cloud-download:before{content:"\f0ed"}
1118 .icon-cloud-download:before{content:"\f0ed"}
1119 .icon-cloud-upload:before{content:"\f0ee"}
1119 .icon-cloud-upload:before{content:"\f0ee"}
1120 .icon-user-md:before{content:"\f0f0"}
1120 .icon-user-md:before{content:"\f0f0"}
1121 .icon-stethoscope:before{content:"\f0f1"}
1121 .icon-stethoscope:before{content:"\f0f1"}
1122 .icon-suitcase:before{content:"\f0f2"}
1122 .icon-suitcase:before{content:"\f0f2"}
1123 .icon-bell-alt:before{content:"\f0f3"}
1123 .icon-bell-alt:before{content:"\f0f3"}
1124 .icon-coffee:before{content:"\f0f4"}
1124 .icon-coffee:before{content:"\f0f4"}
1125 .icon-food:before{content:"\f0f5"}
1125 .icon-food:before{content:"\f0f5"}
1126 .icon-file-text-alt:before{content:"\f0f6"}
1126 .icon-file-text-alt:before{content:"\f0f6"}
1127 .icon-building:before{content:"\f0f7"}
1127 .icon-building:before{content:"\f0f7"}
1128 .icon-hospital:before{content:"\f0f8"}
1128 .icon-hospital:before{content:"\f0f8"}
1129 .icon-ambulance:before{content:"\f0f9"}
1129 .icon-ambulance:before{content:"\f0f9"}
1130 .icon-medkit:before{content:"\f0fa"}
1130 .icon-medkit:before{content:"\f0fa"}
1131 .icon-fighter-jet:before{content:"\f0fb"}
1131 .icon-fighter-jet:before{content:"\f0fb"}
1132 .icon-beer:before{content:"\f0fc"}
1132 .icon-beer:before{content:"\f0fc"}
1133 .icon-h-sign:before{content:"\f0fd"}
1133 .icon-h-sign:before{content:"\f0fd"}
1134 .icon-plus-sign-alt:before{content:"\f0fe"}
1134 .icon-plus-sign-alt:before{content:"\f0fe"}
1135 .icon-double-angle-left:before{content:"\f100"}
1135 .icon-double-angle-left:before{content:"\f100"}
1136 .icon-double-angle-right:before{content:"\f101"}
1136 .icon-double-angle-right:before{content:"\f101"}
1137 .icon-double-angle-up:before{content:"\f102"}
1137 .icon-double-angle-up:before{content:"\f102"}
1138 .icon-double-angle-down:before{content:"\f103"}
1138 .icon-double-angle-down:before{content:"\f103"}
1139 .icon-angle-left:before{content:"\f104"}
1139 .icon-angle-left:before{content:"\f104"}
1140 .icon-angle-right:before{content:"\f105"}
1140 .icon-angle-right:before{content:"\f105"}
1141 .icon-angle-up:before{content:"\f106"}
1141 .icon-angle-up:before{content:"\f106"}
1142 .icon-angle-down:before{content:"\f107"}
1142 .icon-angle-down:before{content:"\f107"}
1143 .icon-desktop:before{content:"\f108"}
1143 .icon-desktop:before{content:"\f108"}
1144 .icon-laptop:before{content:"\f109"}
1144 .icon-laptop:before{content:"\f109"}
1145 .icon-tablet:before{content:"\f10a"}
1145 .icon-tablet:before{content:"\f10a"}
1146 .icon-mobile-phone:before{content:"\f10b"}
1146 .icon-mobile-phone:before{content:"\f10b"}
1147 .icon-circle-blank:before{content:"\f10c"}
1147 .icon-circle-blank:before{content:"\f10c"}
1148 .icon-quote-left:before{content:"\f10d"}
1148 .icon-quote-left:before{content:"\f10d"}
1149 .icon-quote-right:before{content:"\f10e"}
1149 .icon-quote-right:before{content:"\f10e"}
1150 .icon-spinner:before{content:"\f110"}
1150 .icon-spinner:before{content:"\f110"}
1151 .icon-circle:before{content:"\f111"}
1151 .icon-circle:before{content:"\f111"}
1152 .icon-mail-reply:before,.icon-reply:before{content:"\f112"}
1152 .icon-mail-reply:before,.icon-reply:before{content:"\f112"}
1153 .icon-github-alt:before{content:"\f113"}
1153 .icon-github-alt:before{content:"\f113"}
1154 .icon-folder-close-alt:before{content:"\f114"}
1154 .icon-folder-close-alt:before{content:"\f114"}
1155 .icon-folder-open-alt:before{content:"\f115"}
1155 .icon-folder-open-alt:before{content:"\f115"}
1156 .icon-expand-alt:before{content:"\f116"}
1156 .icon-expand-alt:before{content:"\f116"}
1157 .icon-collapse-alt:before{content:"\f117"}
1157 .icon-collapse-alt:before{content:"\f117"}
1158 .icon-smile:before{content:"\f118"}
1158 .icon-smile:before{content:"\f118"}
1159 .icon-frown:before{content:"\f119"}
1159 .icon-frown:before{content:"\f119"}
1160 .icon-meh:before{content:"\f11a"}
1160 .icon-meh:before{content:"\f11a"}
1161 .icon-gamepad:before{content:"\f11b"}
1161 .icon-gamepad:before{content:"\f11b"}
1162 .icon-keyboard:before{content:"\f11c"}
1162 .icon-keyboard:before{content:"\f11c"}
1163 .icon-flag-alt:before{content:"\f11d"}
1163 .icon-flag-alt:before{content:"\f11d"}
1164 .icon-flag-checkered:before{content:"\f11e"}
1164 .icon-flag-checkered:before{content:"\f11e"}
1165 .icon-terminal:before{content:"\f120"}
1165 .icon-terminal:before{content:"\f120"}
1166 .icon-code:before{content:"\f121"}
1166 .icon-code:before{content:"\f121"}
1167 .icon-reply-all:before{content:"\f122"}
1167 .icon-reply-all:before{content:"\f122"}
1168 .icon-mail-reply-all:before{content:"\f122"}
1168 .icon-mail-reply-all:before{content:"\f122"}
1169 .icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123"}
1169 .icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123"}
1170 .icon-location-arrow:before{content:"\f124"}
1170 .icon-location-arrow:before{content:"\f124"}
1171 .icon-crop:before{content:"\f125"}
1171 .icon-crop:before{content:"\f125"}
1172 .icon-code-fork:before{content:"\f126"}
1172 .icon-code-fork:before{content:"\f126"}
1173 .icon-unlink:before{content:"\f127"}
1173 .icon-unlink:before{content:"\f127"}
1174 .icon-question:before{content:"\f128"}
1174 .icon-question:before{content:"\f128"}
1175 .icon-info:before{content:"\f129"}
1175 .icon-info:before{content:"\f129"}
1176 .icon-exclamation:before{content:"\f12a"}
1176 .icon-exclamation:before{content:"\f12a"}
1177 .icon-superscript:before{content:"\f12b"}
1177 .icon-superscript:before{content:"\f12b"}
1178 .icon-subscript:before{content:"\f12c"}
1178 .icon-subscript:before{content:"\f12c"}
1179 .icon-eraser:before{content:"\f12d"}
1179 .icon-eraser:before{content:"\f12d"}
1180 .icon-puzzle-piece:before{content:"\f12e"}
1180 .icon-puzzle-piece:before{content:"\f12e"}
1181 .icon-microphone:before{content:"\f130"}
1181 .icon-microphone:before{content:"\f130"}
1182 .icon-microphone-off:before{content:"\f131"}
1182 .icon-microphone-off:before{content:"\f131"}
1183 .icon-shield:before{content:"\f132"}
1183 .icon-shield:before{content:"\f132"}
1184 .icon-calendar-empty:before{content:"\f133"}
1184 .icon-calendar-empty:before{content:"\f133"}
1185 .icon-fire-extinguisher:before{content:"\f134"}
1185 .icon-fire-extinguisher:before{content:"\f134"}
1186 .icon-rocket:before{content:"\f135"}
1186 .icon-rocket:before{content:"\f135"}
1187 .icon-maxcdn:before{content:"\f136"}
1187 .icon-maxcdn:before{content:"\f136"}
1188 .icon-chevron-sign-left:before{content:"\f137"}
1188 .icon-chevron-sign-left:before{content:"\f137"}
1189 .icon-chevron-sign-right:before{content:"\f138"}
1189 .icon-chevron-sign-right:before{content:"\f138"}
1190 .icon-chevron-sign-up:before{content:"\f139"}
1190 .icon-chevron-sign-up:before{content:"\f139"}
1191 .icon-chevron-sign-down:before{content:"\f13a"}
1191 .icon-chevron-sign-down:before{content:"\f13a"}
1192 .icon-html5:before{content:"\f13b"}
1192 .icon-html5:before{content:"\f13b"}
1193 .icon-css3:before{content:"\f13c"}
1193 .icon-css3:before{content:"\f13c"}
1194 .icon-anchor:before{content:"\f13d"}
1194 .icon-anchor:before{content:"\f13d"}
1195 .icon-unlock-alt:before{content:"\f13e"}
1195 .icon-unlock-alt:before{content:"\f13e"}
1196 .icon-bullseye:before{content:"\f140"}
1196 .icon-bullseye:before{content:"\f140"}
1197 .icon-ellipsis-horizontal:before{content:"\f141"}
1197 .icon-ellipsis-horizontal:before{content:"\f141"}
1198 .icon-ellipsis-vertical:before{content:"\f142"}
1198 .icon-ellipsis-vertical:before{content:"\f142"}
1199 .icon-rss-sign:before{content:"\f143"}
1199 .icon-rss-sign:before{content:"\f143"}
1200 .icon-play-sign:before{content:"\f144"}
1200 .icon-play-sign:before{content:"\f144"}
1201 .icon-ticket:before{content:"\f145"}
1201 .icon-ticket:before{content:"\f145"}
1202 .icon-minus-sign-alt:before{content:"\f146"}
1202 .icon-minus-sign-alt:before{content:"\f146"}
1203 .icon-check-minus:before{content:"\f147"}
1203 .icon-check-minus:before{content:"\f147"}
1204 .icon-level-up:before{content:"\f148"}
1204 .icon-level-up:before{content:"\f148"}
1205 .icon-level-down:before{content:"\f149"}
1205 .icon-level-down:before{content:"\f149"}
1206 .icon-check-sign:before{content:"\f14a"}
1206 .icon-check-sign:before{content:"\f14a"}
1207 .icon-edit-sign:before{content:"\f14b"}
1207 .icon-edit-sign:before{content:"\f14b"}
1208 .icon-external-link-sign:before{content:"\f14c"}
1208 .icon-external-link-sign:before{content:"\f14c"}
1209 .icon-share-sign:before{content:"\f14d"}
1209 .icon-share-sign:before{content:"\f14d"}
1210 .icon-compass:before{content:"\f14e"}
1210 .icon-compass:before{content:"\f14e"}
1211 .icon-collapse:before{content:"\f150"}
1211 .icon-collapse:before{content:"\f150"}
1212 .icon-collapse-top:before{content:"\f151"}
1212 .icon-collapse-top:before{content:"\f151"}
1213 .icon-expand:before{content:"\f152"}
1213 .icon-expand:before{content:"\f152"}
1214 .icon-euro:before,.icon-eur:before{content:"\f153"}
1214 .icon-euro:before,.icon-eur:before{content:"\f153"}
1215 .icon-gbp:before{content:"\f154"}
1215 .icon-gbp:before{content:"\f154"}
1216 .icon-dollar:before,.icon-usd:before{content:"\f155"}
1216 .icon-dollar:before,.icon-usd:before{content:"\f155"}
1217 .icon-rupee:before,.icon-inr:before{content:"\f156"}
1217 .icon-rupee:before,.icon-inr:before{content:"\f156"}
1218 .icon-yen:before,.icon-jpy:before{content:"\f157"}
1218 .icon-yen:before,.icon-jpy:before{content:"\f157"}
1219 .icon-renminbi:before,.icon-cny:before{content:"\f158"}
1219 .icon-renminbi:before,.icon-cny:before{content:"\f158"}
1220 .icon-won:before,.icon-krw:before{content:"\f159"}
1220 .icon-won:before,.icon-krw:before{content:"\f159"}
1221 .icon-bitcoin:before,.icon-btc:before{content:"\f15a"}
1221 .icon-bitcoin:before,.icon-btc:before{content:"\f15a"}
1222 .icon-file:before{content:"\f15b"}
1222 .icon-file:before{content:"\f15b"}
1223 .icon-file-text:before{content:"\f15c"}
1223 .icon-file-text:before{content:"\f15c"}
1224 .icon-sort-by-alphabet:before{content:"\f15d"}
1224 .icon-sort-by-alphabet:before{content:"\f15d"}
1225 .icon-sort-by-alphabet-alt:before{content:"\f15e"}
1225 .icon-sort-by-alphabet-alt:before{content:"\f15e"}
1226 .icon-sort-by-attributes:before{content:"\f160"}
1226 .icon-sort-by-attributes:before{content:"\f160"}
1227 .icon-sort-by-attributes-alt:before{content:"\f161"}
1227 .icon-sort-by-attributes-alt:before{content:"\f161"}
1228 .icon-sort-by-order:before{content:"\f162"}
1228 .icon-sort-by-order:before{content:"\f162"}
1229 .icon-sort-by-order-alt:before{content:"\f163"}
1229 .icon-sort-by-order-alt:before{content:"\f163"}
1230 .icon-thumbs-up:before{content:"\f164"}
1230 .icon-thumbs-up:before{content:"\f164"}
1231 .icon-thumbs-down:before{content:"\f165"}
1231 .icon-thumbs-down:before{content:"\f165"}
1232 .icon-youtube-sign:before{content:"\f166"}
1232 .icon-youtube-sign:before{content:"\f166"}
1233 .icon-youtube:before{content:"\f167"}
1233 .icon-youtube:before{content:"\f167"}
1234 .icon-xing:before{content:"\f168"}
1234 .icon-xing:before{content:"\f168"}
1235 .icon-xing-sign:before{content:"\f169"}
1235 .icon-xing-sign:before{content:"\f169"}
1236 .icon-youtube-play:before{content:"\f16a"}
1236 .icon-youtube-play:before{content:"\f16a"}
1237 .icon-dropbox:before{content:"\f16b"}
1237 .icon-dropbox:before{content:"\f16b"}
1238 .icon-stackexchange:before{content:"\f16c"}
1238 .icon-stackexchange:before{content:"\f16c"}
1239 .icon-instagram:before{content:"\f16d"}
1239 .icon-instagram:before{content:"\f16d"}
1240 .icon-flickr:before{content:"\f16e"}
1240 .icon-flickr:before{content:"\f16e"}
1241 .icon-adn:before{content:"\f170"}
1241 .icon-adn:before{content:"\f170"}
1242 .icon-bitbucket:before{content:"\f171"}
1242 .icon-bitbucket:before{content:"\f171"}
1243 .icon-bitbucket-sign:before{content:"\f172"}
1243 .icon-bitbucket-sign:before{content:"\f172"}
1244 .icon-tumblr:before{content:"\f173"}
1244 .icon-tumblr:before{content:"\f173"}
1245 .icon-tumblr-sign:before{content:"\f174"}
1245 .icon-tumblr-sign:before{content:"\f174"}
1246 .icon-long-arrow-down:before{content:"\f175"}
1246 .icon-long-arrow-down:before{content:"\f175"}
1247 .icon-long-arrow-up:before{content:"\f176"}
1247 .icon-long-arrow-up:before{content:"\f176"}
1248 .icon-long-arrow-left:before{content:"\f177"}
1248 .icon-long-arrow-left:before{content:"\f177"}
1249 .icon-long-arrow-right:before{content:"\f178"}
1249 .icon-long-arrow-right:before{content:"\f178"}
1250 .icon-apple:before{content:"\f179"}
1250 .icon-apple:before{content:"\f179"}
1251 .icon-windows:before{content:"\f17a"}
1251 .icon-windows:before{content:"\f17a"}
1252 .icon-android:before{content:"\f17b"}
1252 .icon-android:before{content:"\f17b"}
1253 .icon-linux:before{content:"\f17c"}
1253 .icon-linux:before{content:"\f17c"}
1254 .icon-dribbble:before{content:"\f17d"}
1254 .icon-dribbble:before{content:"\f17d"}
1255 .icon-skype:before{content:"\f17e"}
1255 .icon-skype:before{content:"\f17e"}
1256 .icon-foursquare:before{content:"\f180"}
1256 .icon-foursquare:before{content:"\f180"}
1257 .icon-trello:before{content:"\f181"}
1257 .icon-trello:before{content:"\f181"}
1258 .icon-female:before{content:"\f182"}
1258 .icon-female:before{content:"\f182"}
1259 .icon-male:before{content:"\f183"}
1259 .icon-male:before{content:"\f183"}
1260 .icon-gittip:before{content:"\f184"}
1260 .icon-gittip:before{content:"\f184"}
1261 .icon-sun:before{content:"\f185"}
1261 .icon-sun:before{content:"\f185"}
1262 .icon-moon:before{content:"\f186"}
1262 .icon-moon:before{content:"\f186"}
1263 .icon-archive:before{content:"\f187"}
1263 .icon-archive:before{content:"\f187"}
1264 .icon-bug:before{content:"\f188"}
1264 .icon-bug:before{content:"\f188"}
1265 .icon-vk:before{content:"\f189"}
1265 .icon-vk:before{content:"\f189"}
1266 .icon-weibo:before{content:"\f18a"}
1266 .icon-weibo:before{content:"\f18a"}
1267 .icon-renren:before{content:"\f18b"}
1267 .icon-renren:before{content:"\f18b"}
1268 .border-box-sizing{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}
1268 .border-box-sizing{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}
1269 .corner-all{border-radius:4px}
1269 .corner-all{border-radius:4px}
1270 .hbox{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch}
1270 .hbox{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch}
1271 .hbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0}
1271 .hbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0}
1272 .vbox{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%}
1272 .vbox{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%}
1273 .vbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0}
1273 .vbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0}
1274 .reverse{-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse}
1274 .reverse{-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse}
1275 .box-flex0{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0}
1275 .box-flex0{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0}
1276 .box-flex1{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1}
1276 .box-flex1{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1}
1277 .box-flex{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1}
1277 .box-flex{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1}
1278 .box-flex2{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2}
1278 .box-flex2{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2}
1279 .box-group1{-webkit-box-flex-group:1;-moz-box-flex-group:1;box-flex-group:1}
1279 .box-group1{-webkit-box-flex-group:1;-moz-box-flex-group:1;box-flex-group:1}
1280 .box-group2{-webkit-box-flex-group:2;-moz-box-flex-group:2;box-flex-group:2}
1280 .box-group2{-webkit-box-flex-group:2;-moz-box-flex-group:2;box-flex-group:2}
1281 .start{-webkit-box-pack:start;-moz-box-pack:start;box-pack:start}
1281 .start{-webkit-box-pack:start;-moz-box-pack:start;box-pack:start}
1282 .end{-webkit-box-pack:end;-moz-box-pack:end;box-pack:end}
1282 .end{-webkit-box-pack:end;-moz-box-pack:end;box-pack:end}
1283 .center{-webkit-box-pack:center;-moz-box-pack:center;box-pack:center}
1283 .center{-webkit-box-pack:center;-moz-box-pack:center;box-pack:center}
1284 .align-start{-webkit-box-align:start;-moz-box-align:start;box-align:start}
1284 .align-start{-webkit-box-align:start;-moz-box-align:start;box-align:start}
1285 .align-end{-webkit-box-align:end;-moz-box-align:end;box-align:end}
1285 .align-end{-webkit-box-align:end;-moz-box-align:end;box-align:end}
1286 .align-center{-webkit-box-align:center;-moz-box-align:center;box-align:center}
1286 .align-center{-webkit-box-align:center;-moz-box-align:center;box-align:center}
1287 div.error{margin:2em;text-align:center}
1287 div.error{margin:2em;text-align:center}
1288 div.error>h1{font-size:500%;line-height:normal}
1288 div.error>h1{font-size:500%;line-height:normal}
1289 div.error>p{font-size:200%;line-height:normal}
1289 div.error>p{font-size:200%;line-height:normal}
1290 div.traceback-wrapper{text-align:left;max-width:800px;margin:auto}
1290 div.traceback-wrapper{text-align:left;max-width:800px;margin:auto}
1291 body{background-color:#fff;position:absolute;left:0;right:0;top:0;bottom:0;overflow:visible}
1291 body{background-color:#fff;position:absolute;left:0;right:0;top:0;bottom:0;overflow:visible}
1292 div#header{display:none}
1292 div#header{display:none}
1293 #ipython_notebook{padding-left:16px}
1293 #ipython_notebook{padding-left:16px}
1294 #noscript{width:auto;padding-top:16px;padding-bottom:16px;text-align:center;font-size:22px;color:#f00;font-weight:bold}
1294 #noscript{width:auto;padding-top:16px;padding-bottom:16px;text-align:center;font-size:22px;color:#f00;font-weight:bold}
1295 #ipython_notebook img{font-family:Verdana,"Helvetica Neue",Arial,Helvetica,Geneva,sans-serif;height:24px;text-decoration:none;color:#000}
1295 #ipython_notebook img{font-family:Verdana,"Helvetica Neue",Arial,Helvetica,Geneva,sans-serif;height:24px;text-decoration:none;color:#000}
1296 #site{width:100%;display:none}
1296 #site{width:100%;display:none}
1297 .ui-button .ui-button-text{padding:.2em .8em;font-size:77%}
1297 .ui-button .ui-button-text{padding:.2em .8em;font-size:77%}
1298 input.ui-button{padding:.3em .9em}
1298 input.ui-button{padding:.3em .9em}
1299 .navbar span{margin-top:3px}
1299 .navbar span{margin-top:3px}
1300 span#login_widget{float:right}
1300 span#login_widget{float:right}
1301 .nav-header{text-transform:none}
1301 .nav-header{text-transform:none}
1302 .navbar-nobg{background-color:transparent;background-image:none}
1302 .navbar-nobg{background-color:transparent;background-image:none}
1303 #header>span{margin-top:10px}
1303 #header>span{margin-top:10px}
1304 .modal-body{max-height:500px}
1304 .modal-body{max-height:500px}
1305 .center-nav{display:inline-block;margin-bottom:-4px}
1305 .center-nav{display:inline-block;margin-bottom:-4px}
1306 .alternate_upload{background-color:none;display:inline}
1306 .alternate_upload{background-color:none;display:inline}
1307 .alternate_upload.form{padding:0;margin:0}
1307 .alternate_upload.form{padding:0;margin:0}
1308 .alternate_upload input.fileinput{background-color:#f00;position:relative;opacity:0;z-index:2;width:295px;margin-left:163px;cursor:pointer;height:26px}
1308 .alternate_upload input.fileinput{background-color:#f00;position:relative;opacity:0;z-index:2;width:295px;margin-left:163px;cursor:pointer;height:26px}
1309 ul#tabs{margin-bottom:4px}
1309 ul#tabs{margin-bottom:4px}
1310 ul#tabs a{padding-top:4px;padding-bottom:4px}
1310 ul#tabs a{padding-top:4px;padding-bottom:4px}
1311 ul.breadcrumb a:focus,ul.breadcrumb a:hover{text-decoration:none}
1311 ul.breadcrumb a:focus,ul.breadcrumb a:hover{text-decoration:none}
1312 ul.breadcrumb i.icon-home{font-size:16px;margin-right:4px}
1312 ul.breadcrumb i.icon-home{font-size:16px;margin-right:4px}
1313 ul.breadcrumb span{color:#5e5e5e}
1313 ul.breadcrumb span{color:#5e5e5e}
1314 .list_toolbar{padding:4px 0 4px 0}
1314 .list_toolbar{padding:4px 0 4px 0}
1315 .list_toolbar [class*="span"]{min-height:26px}
1315 .list_toolbar [class*="span"]{min-height:26px}
1316 .list_header{font-weight:bold}
1316 .list_header{font-weight:bold}
1317 .list_container{margin-top:4px;margin-bottom:20px;border:1px solid #ababab;border-radius:4px}
1317 .list_container{margin-top:4px;margin-bottom:20px;border:1px solid #ababab;border-radius:4px}
1318 .list_container>div{border-bottom:1px solid #ababab}.list_container>div:hover .list-item{background-color:#f00}
1318 .list_container>div{border-bottom:1px solid #ababab}.list_container>div:hover .list-item{background-color:#f00}
1319 .list_container>div:last-child{border:none}
1319 .list_container>div:last-child{border:none}
1320 .list_item:hover .list_item{background-color:#ddd}
1320 .list_item:hover .list_item{background-color:#ddd}
1321 .list_item a{text-decoration:none}
1321 .list_item a{text-decoration:none}
1322 .list_header>div,.list_item>div{padding-top:4px;padding-bottom:4px;padding-left:7px;padding-right:7px;height:22px;line-height:22px}
1322 .list_header>div,.list_item>div{padding-top:4px;padding-bottom:4px;padding-left:7px;padding-right:7px;height:22px;line-height:22px}
1323 .item_name{line-height:22px;height:26px}
1323 .item_name{line-height:22px;height:26px}
1324 .item_icon{font-size:14px;color:#5e5e5e;margin-right:7px}
1324 .item_icon{font-size:14px;color:#5e5e5e;margin-right:7px}
1325 .item_buttons{line-height:1em}
1325 .item_buttons{line-height:1em}
1326 .toolbar_info{height:26px;line-height:26px}
1326 .toolbar_info{height:26px;line-height:26px}
1327 input.nbname_input,input.engine_num_input{padding-top:3px;padding-bottom:3px;height:14px;line-height:14px;margin:0}
1327 input.nbname_input,input.engine_num_input{padding-top:3px;padding-bottom:3px;height:14px;line-height:14px;margin:0}
1328 input.engine_num_input{width:60px}
1328 input.engine_num_input{width:60px}
1329 .highlight_text{color:#00f}
1329 .highlight_text{color:#00f}
1330 #project_name>.breadcrumb{padding:0;margin-bottom:0;background-color:transparent;font-weight:bold}
1330 #project_name>.breadcrumb{padding:0;margin-bottom:0;background-color:transparent;font-weight:bold}
1331 .ansibold{font-weight:bold}
1331 .ansibold{font-weight:bold}
1332 .ansiblack{color:#000}
1332 .ansiblack{color:#000}
1333 .ansired{color:#8b0000}
1333 .ansired{color:#8b0000}
1334 .ansigreen{color:#006400}
1334 .ansigreen{color:#006400}
1335 .ansiyellow{color:#a52a2a}
1335 .ansiyellow{color:#a52a2a}
1336 .ansiblue{color:#00008b}
1336 .ansiblue{color:#00008b}
1337 .ansipurple{color:#9400d3}
1337 .ansipurple{color:#9400d3}
1338 .ansicyan{color:#4682b4}
1338 .ansicyan{color:#4682b4}
1339 .ansigray{color:#808080}
1339 .ansigray{color:#808080}
1340 .ansibgblack{background-color:#000}
1340 .ansibgblack{background-color:#000}
1341 .ansibgred{background-color:#f00}
1341 .ansibgred{background-color:#f00}
1342 .ansibggreen{background-color:#008000}
1342 .ansibggreen{background-color:#008000}
1343 .ansibgyellow{background-color:#ff0}
1343 .ansibgyellow{background-color:#ff0}
1344 .ansibgblue{background-color:#00f}
1344 .ansibgblue{background-color:#00f}
1345 .ansibgpurple{background-color:#f0f}
1345 .ansibgpurple{background-color:#f0f}
1346 .ansibgcyan{background-color:#0ff}
1346 .ansibgcyan{background-color:#0ff}
1347 .ansibggray{background-color:#808080}
1347 .ansibggray{background-color:#808080}
1348 div.cell{border:1px solid transparent;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%}div.cell.selected{border-radius:4px;border:thin #ababab solid}
1348 div.cell{border:1px solid transparent;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%}div.cell.selected{border-radius:4px;border:thin #ababab solid}
1349 div.cell.edit_mode{border-radius:4px;border:thin #008000 solid}
1349 div.cell.edit_mode{border-radius:4px;border:thin #008000 solid}
1350 div.cell{width:100%;padding:5px 5px 5px 0;margin:0;outline:none}
1350 div.cell{width:100%;padding:5px 5px 5px 0;margin:0;outline:none}
1351 div.prompt{min-width:11ex;padding:.4em;margin:0;font-family:monospace;text-align:right;line-height:1.231em}
1351 div.prompt{min-width:11ex;padding:.4em;margin:0;font-family:monospace;text-align:right;line-height:1.231em}
1352 div.inner_cell{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;overflow:auto}
1352 div.inner_cell{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;overflow:auto}
1353 div.prompt:empty{padding-top:0;padding-bottom:0}
1353 div.prompt:empty{padding-top:0;padding-bottom:0}
1354 div.input{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch}
1354 div.input{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch}
1355 div.input_area{border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7}
1355 div.input_area{border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7}
1356 div.input_prompt{color:#000080;border-top:1px solid transparent}
1356 div.input_prompt{color:#000080;border-top:1px solid transparent}
1357 .CodeMirror{line-height:1.231em;height:auto;background:none;}
1357 .CodeMirror{line-height:1.231em;height:auto;background:none;}
1358 .CodeMirror-scroll{overflow-y:hidden;overflow-x:auto}
1358 .CodeMirror-scroll{overflow-y:hidden;overflow-x:auto}
1359 @-moz-document url-prefix(){.CodeMirror-scroll{overflow-x:hidden}}.CodeMirror-lines{padding:.4em}
1359 @-moz-document url-prefix(){.CodeMirror-scroll{overflow-x:hidden}}.CodeMirror-lines{padding:.4em}
1360 .CodeMirror-linenumber{padding:0 8px 0 4px}
1360 .CodeMirror-linenumber{padding:0 8px 0 4px}
1361 .CodeMirror-gutters{border-bottom-left-radius:4px;border-top-left-radius:4px}
1361 .CodeMirror-gutters{border-bottom-left-radius:4px;border-top-left-radius:4px}
1362 .CodeMirror pre{padding:0;border:0;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
1362 .CodeMirror pre{padding:0;border:0;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
1363 pre code{display:block;padding:.5em}
1363 pre code{display:block;padding:.5em}
1364 .highlight-base,pre code,pre .subst,pre .tag .title,pre .lisp .title,pre .clojure .built_in,pre .nginx .title{color:#000}
1364 .highlight-base,pre code,pre .subst,pre .tag .title,pre .lisp .title,pre .clojure .built_in,pre .nginx .title{color:#000}
1365 .highlight-string,pre .string,pre .constant,pre .parent,pre .tag .value,pre .rules .value,pre .rules .value .number,pre .preprocessor,pre .ruby .symbol,pre .ruby .symbol .string,pre .aggregate,pre .template_tag,pre .django .variable,pre .smalltalk .class,pre .addition,pre .flow,pre .stream,pre .bash .variable,pre .apache .tag,pre .apache .cbracket,pre .tex .command,pre .tex .special,pre .erlang_repl .function_or_atom,pre .markdown .header{color:#ba2121}
1365 .highlight-string,pre .string,pre .constant,pre .parent,pre .tag .value,pre .rules .value,pre .rules .value .number,pre .preprocessor,pre .ruby .symbol,pre .ruby .symbol .string,pre .aggregate,pre .template_tag,pre .django .variable,pre .smalltalk .class,pre .addition,pre .flow,pre .stream,pre .bash .variable,pre .apache .tag,pre .apache .cbracket,pre .tex .command,pre .tex .special,pre .erlang_repl .function_or_atom,pre .markdown .header{color:#ba2121}
1366 .highlight-comment,pre .comment,pre .annotation,pre .template_comment,pre .diff .header,pre .chunk,pre .markdown .blockquote{color:#408080;font-style:italic}
1366 .highlight-comment,pre .comment,pre .annotation,pre .template_comment,pre .diff .header,pre .chunk,pre .markdown .blockquote{color:#408080;font-style:italic}
1367 .highlight-number,pre .number,pre .date,pre .regexp,pre .literal,pre .smalltalk .symbol,pre .smalltalk .char,pre .go .constant,pre .change,pre .markdown .bullet,pre .markdown .link_url{color:#080}
1367 .highlight-number,pre .number,pre .date,pre .regexp,pre .literal,pre .smalltalk .symbol,pre .smalltalk .char,pre .go .constant,pre .change,pre .markdown .bullet,pre .markdown .link_url{color:#080}
1368 pre .label,pre .javadoc,pre .ruby .string,pre .decorator,pre .filter .argument,pre .localvars,pre .array,pre .attr_selector,pre .important,pre .pseudo,pre .pi,pre .doctype,pre .deletion,pre .envvar,pre .shebang,pre .apache .sqbracket,pre .nginx .built_in,pre .tex .formula,pre .erlang_repl .reserved,pre .prompt,pre .markdown .link_label,pre .vhdl .attribute,pre .clojure .attribute,pre .coffeescript .property{color:#88f}
1368 pre .label,pre .javadoc,pre .ruby .string,pre .decorator,pre .filter .argument,pre .localvars,pre .array,pre .attr_selector,pre .important,pre .pseudo,pre .pi,pre .doctype,pre .deletion,pre .envvar,pre .shebang,pre .apache .sqbracket,pre .nginx .built_in,pre .tex .formula,pre .erlang_repl .reserved,pre .prompt,pre .markdown .link_label,pre .vhdl .attribute,pre .clojure .attribute,pre .coffeescript .property{color:#88f}
1369 .highlight-keyword,pre .keyword,pre .id,pre .phpdoc,pre .aggregate,pre .css .tag,pre .javadoctag,pre .phpdoc,pre .yardoctag,pre .smalltalk .class,pre .winutils,pre .bash .variable,pre .apache .tag,pre .go .typename,pre .tex .command,pre .markdown .strong,pre .request,pre .status{color:#008000;font-weight:bold}
1369 .highlight-keyword,pre .keyword,pre .id,pre .phpdoc,pre .aggregate,pre .css .tag,pre .javadoctag,pre .phpdoc,pre .yardoctag,pre .smalltalk .class,pre .winutils,pre .bash .variable,pre .apache .tag,pre .go .typename,pre .tex .command,pre .markdown .strong,pre .request,pre .status{color:#008000;font-weight:bold}
1370 .highlight-builtin,pre .built_in{color:#008000}
1370 .highlight-builtin,pre .built_in{color:#008000}
1371 pre .markdown .emphasis{font-style:italic}
1371 pre .markdown .emphasis{font-style:italic}
1372 pre .nginx .built_in{font-weight:normal}
1372 pre .nginx .built_in{font-weight:normal}
1373 pre .coffeescript .javascript,pre .javascript .xml,pre .tex .formula,pre .xml .javascript,pre .xml .vbscript,pre .xml .css,pre .xml .cdata{opacity:.5}
1373 pre .coffeescript .javascript,pre .javascript .xml,pre .tex .formula,pre .xml .javascript,pre .xml .vbscript,pre .xml .css,pre .xml .cdata{opacity:.5}
1374 .cm-s-ipython span.cm-variable{color:#000}
1374 .cm-s-ipython span.cm-variable{color:#000}
1375 .cm-s-ipython span.cm-keyword{color:#008000;font-weight:bold}
1375 .cm-s-ipython span.cm-keyword{color:#008000;font-weight:bold}
1376 .cm-s-ipython span.cm-number{color:#080}
1376 .cm-s-ipython span.cm-number{color:#080}
1377 .cm-s-ipython span.cm-comment{color:#408080;font-style:italic}
1377 .cm-s-ipython span.cm-comment{color:#408080;font-style:italic}
1378 .cm-s-ipython span.cm-string{color:#ba2121}
1378 .cm-s-ipython span.cm-string{color:#ba2121}
1379 .cm-s-ipython span.cm-builtin{color:#008000}
1379 .cm-s-ipython span.cm-builtin{color:#008000}
1380 .cm-s-ipython span.cm-error{color:#f00}
1380 .cm-s-ipython span.cm-error{color:#f00}
1381 .cm-s-ipython span.cm-operator{color:#a2f;font-weight:bold}
1381 .cm-s-ipython span.cm-operator{color:#a2f;font-weight:bold}
1382 .cm-s-ipython span.cm-meta{color:#a2f}
1382 .cm-s-ipython span.cm-meta{color:#a2f}
1383 .cm-s-ipython span.cm-tab{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);background-position:right;background-repeat:no-repeat}
1383 .cm-s-ipython span.cm-tab{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);background-position:right;background-repeat:no-repeat}
1384 div.output_wrapper{position:relative;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%}
1384 div.output_wrapper{position:relative;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%}
1385 div.output_scroll{height:24em;width:100%;overflow:auto;border-radius:4px;-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,0.8);-moz-box-shadow:inset 0 2px 8px rgba(0,0,0,0.8);box-shadow:inset 0 2px 8px rgba(0,0,0,0.8)}
1385 div.output_scroll{height:24em;width:100%;overflow:auto;border-radius:4px;-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,0.8);-moz-box-shadow:inset 0 2px 8px rgba(0,0,0,0.8);box-shadow:inset 0 2px 8px rgba(0,0,0,0.8)}
1386 div.output_collapsed{margin:0;padding:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%}
1386 div.output_collapsed{margin:0;padding:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%}
1387 div.out_prompt_overlay{height:100%;padding:0 .4em;position:absolute;border-radius:4px}
1387 div.out_prompt_overlay{height:100%;padding:0 .4em;position:absolute;border-radius:4px}
1388 div.out_prompt_overlay:hover{-webkit-box-shadow:inset 0 0 1px #000;-moz-box-shadow:inset 0 0 1px #000;box-shadow:inset 0 0 1px #000;background:rgba(240,240,240,0.5)}
1388 div.out_prompt_overlay:hover{-webkit-box-shadow:inset 0 0 1px #000;-moz-box-shadow:inset 0 0 1px #000;box-shadow:inset 0 0 1px #000;background:rgba(240,240,240,0.5)}
1389 div.output_prompt{color:#8b0000}
1389 div.output_prompt{color:#8b0000}
1390 div.output_area{padding:0;page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch}div.output_area .MathJax_Display{text-align:left !important}
1390 div.output_area{padding:0;page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch}div.output_area .MathJax_Display{text-align:left !important}
1391 div.output_area .rendered_html table{margin-left:0;margin-right:0}
1391 div.output_area .rendered_html table{margin-left:0;margin-right:0}
1392 div.output_area .rendered_html img{margin-left:0;margin-right:0}
1392 div.output_area .rendered_html img{margin-left:0;margin-right:0}
1393 .output{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%}
1393 .output{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%}
1394 div.output_area pre{font-family:monospace;margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;color:#000;background-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;line-height:inherit}
1394 div.output_area pre{font-family:monospace;margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;color:#000;background-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;line-height:inherit}
1395 div.output_subarea{padding:.4em .4em 0 .4em;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1}
1395 div.output_subarea{padding:.4em .4em 0 .4em;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1}
1396 div.output_text{text-align:left;color:#000;font-family:monospace;line-height:1.231em}
1396 div.output_text{text-align:left;color:#000;font-family:monospace;line-height:1.231em}
1397 div.output_stderr{background:#fdd;}
1397 div.output_stderr{background:#fdd;}
1398 div.output_latex{text-align:left}
1398 div.output_latex{text-align:left}
1399 div.output_javascript:empty{padding:0}
1399 div.output_javascript:empty{padding:0}
1400 .js-error{color:#8b0000}
1400 .js-error{color:#8b0000}
1401 div.raw_input{padding-top:0;padding-bottom:0;height:1em;line-height:1em;font-family:monospace}
1401 div.raw_input{padding-top:0;padding-bottom:0;height:1em;line-height:1em;font-family:monospace}
1402 span.input_prompt{font-family:inherit}
1402 span.input_prompt{font-family:inherit}
1403 input.raw_input{font-family:inherit;font-size:inherit;color:inherit;width:auto;margin:-2px 0 0 1px;padding-left:1px;padding-top:2px;height:1em}
1403 input.raw_input{font-family:inherit;font-size:inherit;color:inherit;width:auto;margin:-2px 0 0 1px;padding-left:1px;padding-top:2px;height:1em}
1404 p.p-space{margin-bottom:10px}
1404 p.p-space{margin-bottom:10px}
1405 .rendered_html{color:#000;}.rendered_html em{font-style:italic}
1405 .rendered_html{color:#000;}.rendered_html em{font-style:italic}
1406 .rendered_html strong{font-weight:bold}
1406 .rendered_html strong{font-weight:bold}
1407 .rendered_html u{text-decoration:underline}
1407 .rendered_html u{text-decoration:underline}
1408 .rendered_html :link{text-decoration:underline}
1408 .rendered_html :link{text-decoration:underline}
1409 .rendered_html :visited{text-decoration:underline}
1409 .rendered_html :visited{text-decoration:underline}
1410 .rendered_html h1{font-size:185.7%;margin:1.08em 0 0 0;font-weight:bold;line-height:1}
1410 .rendered_html h1{font-size:185.7%;margin:1.08em 0 0 0;font-weight:bold;line-height:1}
1411 .rendered_html h2{font-size:157.1%;margin:1.27em 0 0 0;font-weight:bold;line-height:1}
1411 .rendered_html h2{font-size:157.1%;margin:1.27em 0 0 0;font-weight:bold;line-height:1}
1412 .rendered_html h3{font-size:128.6%;margin:1.55em 0 0 0;font-weight:bold;line-height:1}
1412 .rendered_html h3{font-size:128.6%;margin:1.55em 0 0 0;font-weight:bold;line-height:1}
1413 .rendered_html h4{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1}
1413 .rendered_html h4{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1}
1414 .rendered_html h5{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1;font-style:italic}
1414 .rendered_html h5{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1;font-style:italic}
1415 .rendered_html h6{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1;font-style:italic}
1415 .rendered_html h6{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1;font-style:italic}
1416 .rendered_html h1:first-child{margin-top:.538em}
1416 .rendered_html h1:first-child{margin-top:.538em}
1417 .rendered_html h2:first-child{margin-top:.636em}
1417 .rendered_html h2:first-child{margin-top:.636em}
1418 .rendered_html h3:first-child{margin-top:.777em}
1418 .rendered_html h3:first-child{margin-top:.777em}
1419 .rendered_html h4:first-child{margin-top:1em}
1419 .rendered_html h4:first-child{margin-top:1em}
1420 .rendered_html h5:first-child{margin-top:1em}
1420 .rendered_html h5:first-child{margin-top:1em}
1421 .rendered_html h6:first-child{margin-top:1em}
1421 .rendered_html h6:first-child{margin-top:1em}
1422 .rendered_html ul{list-style:disc;margin:0 2em}
1422 .rendered_html ul{list-style:disc;margin:0 2em}
1423 .rendered_html ul ul{list-style:square;margin:0 2em}
1423 .rendered_html ul ul{list-style:square;margin:0 2em}
1424 .rendered_html ul ul ul{list-style:circle;margin:0 2em}
1424 .rendered_html ul ul ul{list-style:circle;margin:0 2em}
1425 .rendered_html ol{list-style:decimal;margin:0 2em}
1425 .rendered_html ol{list-style:decimal;margin:0 2em}
1426 .rendered_html ol ol{list-style:upper-alpha;margin:0 2em}
1426 .rendered_html ol ol{list-style:upper-alpha;margin:0 2em}
1427 .rendered_html ol ol ol{list-style:lower-alpha;margin:0 2em}
1427 .rendered_html ol ol ol{list-style:lower-alpha;margin:0 2em}
1428 .rendered_html ol ol ol ol{list-style:lower-roman;margin:0 2em}
1428 .rendered_html ol ol ol ol{list-style:lower-roman;margin:0 2em}
1429 .rendered_html ol ol ol ol ol{list-style:decimal;margin:0 2em}
1429 .rendered_html ol ol ol ol ol{list-style:decimal;margin:0 2em}
1430 .rendered_html *+ul{margin-top:1em}
1430 .rendered_html *+ul{margin-top:1em}
1431 .rendered_html *+ol{margin-top:1em}
1431 .rendered_html *+ol{margin-top:1em}
1432 .rendered_html hr{color:#000;background-color:#000}
1432 .rendered_html hr{color:#000;background-color:#000}
1433 .rendered_html pre{margin:1em 2em}
1433 .rendered_html pre{margin:1em 2em}
1434 .rendered_html pre,.rendered_html code{border:0;background-color:#fff;color:#000;font-size:100%;padding:0}
1434 .rendered_html pre,.rendered_html code{border:0;background-color:#fff;color:#000;font-size:100%;padding:0}
1435 .rendered_html blockquote{margin:1em 2em}
1435 .rendered_html blockquote{margin:1em 2em}
1436 .rendered_html table{margin-left:auto;margin-right:auto;border:1px solid #000;border-collapse:collapse}
1436 .rendered_html table{margin-left:auto;margin-right:auto;border:1px solid #000;border-collapse:collapse}
1437 .rendered_html tr,.rendered_html th,.rendered_html td{border:1px solid #000;border-collapse:collapse;margin:1em 2em}
1437 .rendered_html tr,.rendered_html th,.rendered_html td{border:1px solid #000;border-collapse:collapse;margin:1em 2em}
1438 .rendered_html td,.rendered_html th{text-align:left;vertical-align:middle;padding:4px}
1438 .rendered_html td,.rendered_html th{text-align:left;vertical-align:middle;padding:4px}
1439 .rendered_html th{font-weight:bold}
1439 .rendered_html th{font-weight:bold}
1440 .rendered_html *+table{margin-top:1em}
1440 .rendered_html *+table{margin-top:1em}
1441 .rendered_html p{text-align:justify}
1441 .rendered_html p{text-align:justify}
1442 .rendered_html *+p{margin-top:1em}
1442 .rendered_html *+p{margin-top:1em}
1443 .rendered_html img{display:block;margin-left:auto;margin-right:auto}
1443 .rendered_html img{display:block;margin-left:auto;margin-right:auto}
1444 .rendered_html *+img{margin-top:1em}
1444 .rendered_html *+img{margin-top:1em}
1445 div.text_cell{padding:5px 5px 5px 0;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch}
1445 div.text_cell{padding:5px 5px 5px 0;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch}
1446 div.text_cell_input{color:#000;border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7}
1446 div.text_cell_input{color:#000;border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7}
1447 div.text_cell_render{outline:none;resize:none;width:inherit;border-style:none;padding:.5em .5em .5em .4em;color:#000}
1447 div.text_cell_render{outline:none;resize:none;width:inherit;border-style:none;padding:.5em .5em .5em .4em;color:#000}
1448 a.anchor-link:link{text-decoration:none;padding:0 20px;visibility:hidden}
1448 a.anchor-link:link{text-decoration:none;padding:0 20px;visibility:hidden}
1449 h1:hover .anchor-link,h2:hover .anchor-link,h3:hover .anchor-link,h4:hover .anchor-link,h5:hover .anchor-link,h6:hover .anchor-link{visibility:visible}
1449 h1:hover .anchor-link,h2:hover .anchor-link,h3:hover .anchor-link,h4:hover .anchor-link,h5:hover .anchor-link,h6:hover .anchor-link{visibility:visible}
1450 div.cell.text_cell.rendered{padding:0}
1450 div.cell.text_cell.rendered{padding:0}
1451 .widget-area{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch}.widget-area .widget-subarea{padding:.44em .4em .4em 1px;margin-left:6px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;-webkit-box-flex:2;-moz-box-flex:2;box-flex:2}
1451 .widget-area{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch}.widget-area .widget-subarea{padding:.44em .4em .4em 1px;margin-left:6px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;-webkit-box-flex:2;-moz-box-flex:2;box-flex:2}
1452 .widget-hlabel{min-width:10ex;padding-right:8px;padding-top:3px;text-align:right;vertical-align:text-top}
1452 .widget-hlabel{min-width:10ex;padding-right:8px;padding-top:3px;text-align:right;vertical-align:text-top}
1453 .widget-vlabel{padding-bottom:5px;text-align:center;vertical-align:text-bottom}
1453 .widget-vlabel{padding-bottom:5px;text-align:center;vertical-align:text-bottom}
1454 .widget-hreadout{padding-left:8px;padding-top:3px;text-align:left;vertical-align:text-top}
1454 .widget-hreadout{padding-left:8px;padding-top:3px;text-align:left;vertical-align:text-top}
1455 .widget-vreadout{padding-top:5px;text-align:center;vertical-align:text-top}
1455 .widget-vreadout{padding-top:5px;text-align:center;vertical-align:text-top}
1456 .slide-track{border:1px solid #ccc;background:#fff;border-radius:4px;}
1456 .slide-track{border:1px solid #ccc;background:#fff;border-radius:4px;}
1457 .widget-hslider{padding-left:8px;padding-right:5px;overflow:visible;width:348px;height:5px;max-height:5px;margin-top:11px;border:1px solid #ccc;background:#fff;border-radius:4px;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch}.widget-hslider .ui-slider{border:0 !important;background:none !important;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1}.widget-hslider .ui-slider .ui-slider-handle{width:14px !important;height:28px !important;margin-top:-8px !important}
1457 .widget-hslider{padding-left:8px;padding-right:5px;overflow:visible;width:348px;height:5px;max-height:5px;margin-top:11px;border:1px solid #ccc;background:#fff;border-radius:4px;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch}.widget-hslider .ui-slider{border:0 !important;background:none !important;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1}.widget-hslider .ui-slider .ui-slider-handle{width:14px !important;height:28px !important;margin-top:-8px !important}
1458 .widget-vslider{padding-bottom:8px;overflow:visible;width:5px;max-width:5px;height:250px;margin-left:12px;border:1px solid #ccc;background:#fff;border-radius:4px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%}.widget-vslider .ui-slider{border:0 !important;background:none !important;margin-left:-4px;margin-top:5px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1}.widget-vslider .ui-slider .ui-slider-handle{width:28px !important;height:14px !important;margin-left:-9px}
1458 .widget-vslider{padding-bottom:8px;overflow:visible;width:5px;max-width:5px;height:250px;margin-left:12px;border:1px solid #ccc;background:#fff;border-radius:4px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%}.widget-vslider .ui-slider{border:0 !important;background:none !important;margin-left:-4px;margin-top:5px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1}.widget-vslider .ui-slider .ui-slider-handle{width:28px !important;height:14px !important;margin-left:-9px}
1459 .widget-text{width:350px;margin-bottom:0}
1459 .widget-text{width:350px;margin-bottom:0}
1460 .widget-listbox{width:364px;margin-bottom:0}
1460 .widget-listbox{width:364px;margin-bottom:0}
1461 .widget-numeric-text{width:150px}
1461 .widget-numeric-text{width:150px}
1462 .widget-progress{width:363px}.widget-progress .bar{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}
1462 .widget-progress{width:363px}.widget-progress .bar{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}
1463 .widget-combo-btn{min-width:138px;}
1463 .widget-combo-btn{min-width:138px;}
1464 .widget-box{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}
1464 .widget-box{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}
1465 .widget-hbox{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch}
1465 .widget-hbox{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch}
1466 .widget-hbox-single{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;height:30px}
1466 .widget-hbox-single{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;height:30px}
1467 .widget-vbox{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%}
1467 .widget-vbox{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%}
1468 .widget-vbox-single{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;width:30px}
1468 .widget-vbox-single{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;width:30px}
1469 .widget-modal{overflow:hidden;position:absolute !important;top:0;left:0;margin-left:0 !important}
1469 .widget-modal{overflow:hidden;position:absolute !important;top:0;left:0;margin-left:0 !important}
1470 .widget-modal-body{max-height:none !important}
1470 .widget-modal-body{max-height:none !important}
1471 .widget-container{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}
1471 .widget-container{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}
1472 .docked-widget-modal{overflow:hidden;position:relative !important;top:0 !important;left:0 !important;margin-left:0 !important}
1472 .docked-widget-modal{overflow:hidden;position:relative !important;top:0 !important;left:0 !important;margin-left:0 !important}
1473 body{background-color:#fff}
1473 body{background-color:#fff}
1474 body.notebook_app{overflow:hidden}
1474 body.notebook_app{overflow:hidden}
1475 span#notebook_name{height:1em;line-height:1em;padding:3px;border:none;font-size:146.5%}
1475 span#notebook_name{height:1em;line-height:1em;padding:3px;border:none;font-size:146.5%}
1476 div#notebook_panel{margin:0 0 0 0;padding:0;-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}
1476 div#notebook_panel{margin:0 0 0 0;padding:0;-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}
1477 div#notebook{overflow-y:scroll;overflow-x:auto;width:100%;padding:1em 0 1em 0;margin:0;border-top:1px solid #ababab;outline:none;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}
1477 div#notebook{overflow-y:scroll;overflow-x:auto;width:100%;padding:1em 0 1em 0;margin:0;border-top:1px solid #ababab;outline:none;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}
1478 div.ui-widget-content{border:1px solid #ababab;outline:none}
1478 div.ui-widget-content{border:1px solid #ababab;outline:none}
1479 pre.dialog{background-color:#f7f7f7;border:1px solid #ddd;border-radius:4px;padding:.4em;padding-left:2em}
1479 pre.dialog{background-color:#f7f7f7;border:1px solid #ddd;border-radius:4px;padding:.4em;padding-left:2em}
1480 p.dialog{padding:.2em}
1480 p.dialog{padding:.2em}
1481 pre,code,kbd,samp{white-space:pre-wrap}
1481 pre,code,kbd,samp{white-space:pre-wrap}
1482 #fonttest{font-family:monospace}
1482 #fonttest{font-family:monospace}
1483 p{margin-bottom:0}
1483 p{margin-bottom:0}
1484 .end_space{height:200px}
1484 .end_space{height:200px}
1485 .celltoolbar{border:thin solid #cfcfcf;border-bottom:none;background:#eee;border-radius:3px 3px 0 0;width:100%;-webkit-box-pack:end;height:22px;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse}
1485 .celltoolbar{border:thin solid #cfcfcf;border-bottom:none;background:#eee;border-radius:3px 3px 0 0;width:100%;-webkit-box-pack:end;height:22px;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse}
1486 .ctb_hideshow{display:none;vertical-align:bottom;padding-right:2px}
1486 .ctb_hideshow{display:none;vertical-align:bottom;padding-right:2px}
1487 .celltoolbar>div{padding-top:0}
1487 .celltoolbar>div{padding-top:0}
1488 .ctb_global_show .ctb_show.ctb_hideshow{display:block}
1488 .ctb_global_show .ctb_show.ctb_hideshow{display:block}
1489 .ctb_global_show .ctb_show+.input_area,.ctb_global_show .ctb_show+div.text_cell_input{border-top-right-radius:0;border-top-left-radius:0}
1489 .ctb_global_show .ctb_show+.input_area,.ctb_global_show .ctb_show+div.text_cell_input{border-top-right-radius:0;border-top-left-radius:0}
1490 .celltoolbar .button_container select{margin:10px;margin-top:1px;margin-bottom:0;padding:0;font-size:87%;width:auto;display:inline-block;height:18px;line-height:18px;vertical-align:top}
1490 .celltoolbar .button_container select{margin:10px;margin-top:1px;margin-bottom:0;padding:0;font-size:87%;width:auto;display:inline-block;height:18px;line-height:18px;vertical-align:top}
1491 .celltoolbar label{display:inline-block;height:15px;line-height:15px;vertical-align:top}
1491 .celltoolbar label{display:inline-block;height:15px;line-height:15px;vertical-align:top}
1492 .celltoolbar label span{font-size:85%}
1492 .celltoolbar label span{font-size:85%}
1493 .celltoolbar input[type=checkbox]{margin:0;margin-left:4px;margin-right:4px}
1493 .celltoolbar input[type=checkbox]{margin:0;margin-left:4px;margin-right:4px}
1494 .celltoolbar .ui-button{border:none;vertical-align:top;height:20px;min-width:30px}
1494 .celltoolbar .ui-button{border:none;vertical-align:top;height:20px;min-width:30px}
1495 .completions{position:absolute;z-index:10;overflow:hidden;border:1px solid #ababab;border-radius:4px;-webkit-box-shadow:0 6px 10px -1px #adadad;-moz-box-shadow:0 6px 10px -1px #adadad;box-shadow:0 6px 10px -1px #adadad}
1495 .completions{position:absolute;z-index:10;overflow:hidden;border:1px solid #ababab;border-radius:4px;-webkit-box-shadow:0 6px 10px -1px #adadad;-moz-box-shadow:0 6px 10px -1px #adadad;box-shadow:0 6px 10px -1px #adadad}
1496 .completions select{background:#fff;outline:none;border:none;padding:0;margin:0;overflow:auto;font-family:monospace;font-size:110%;color:#000}
1496 .completions select{background:#fff;outline:none;border:none;padding:0;margin:0;overflow:auto;font-family:monospace;font-size:110%;color:#000}
1497 .completions select option.context{color:#0064cd}
1497 .completions select option.context{color:#0064cd}
1498 #menubar .navbar-inner{min-height:28px;border-top:1px;border-radius:0 0 4px 4px}
1498 #menubar .navbar-inner{min-height:28px;border-top:1px;border-radius:0 0 4px 4px}
1499 #menubar .navbar{margin-bottom:8px}
1499 #menubar .navbar{margin-bottom:8px}
1500 .nav-wrapper{border-bottom:1px solid #d4d4d4}
1500 .nav-wrapper{border-bottom:1px solid #d4d4d4}
1501 #menubar li.dropdown{line-height:12px}
1501 #menubar li.dropdown{line-height:12px}
1502 i.menu-icon{padding-top:4px}
1502 i.menu-icon{padding-top:4px}
1503 ul#help_menu li a{overflow:hidden;padding-right:2.2em}ul#help_menu li a i{margin-right:-1.2em}
1503 ul#help_menu li a{overflow:hidden;padding-right:2.2em}ul#help_menu li a i{margin-right:-1.2em}
1504 #notification_area{z-index:10}
1504 #notification_area{z-index:10}
1505 .indicator_area{color:#777;padding:4px 3px;margin:0;width:11px;z-index:10}
1506 #kernel_indicator{margin-right:-16px}
1505 .notification_widget{color:#777;padding:1px 12px;margin:2px 4px;z-index:10;border:1px solid #ccc;border-radius:4px;background:rgba(240,240,240,0.5)}.notification_widget.span{padding-right:2px}
1507 .notification_widget{color:#777;padding:1px 12px;margin:2px 4px;z-index:10;border:1px solid #ccc;border-radius:4px;background:rgba(240,240,240,0.5)}.notification_widget.span{padding-right:2px}
1506 #indicator_area{color:#777;padding:2px 2px;margin:2px -9px 2px 4px;z-index:10}
1507 div#pager_splitter{height:8px}
1508 div#pager_splitter{height:8px}
1508 #pager-container{position:relative;padding:15px 0}
1509 #pager-container{position:relative;padding:15px 0}
1509 div#pager{overflow:auto;display:none}div#pager pre{font-size:13px;line-height:1.231em;color:#000;background-color:#f7f7f7;padding:.4em}
1510 div#pager{overflow:auto;display:none}div#pager pre{font-size:13px;line-height:1.231em;color:#000;background-color:#f7f7f7;padding:.4em}
1510 .shortcut_key{display:inline-block;width:15ex;text-align:right;font-family:monospace}
1511 .shortcut_key{display:inline-block;width:15ex;text-align:right;font-family:monospace}
1511 .shortcut_descr{display:inline-block}
1512 .shortcut_descr{display:inline-block}
1512 span#save_widget{padding:0 5px;margin-top:12px}
1513 span#save_widget{padding:0 5px;margin-top:12px}
1513 span#checkpoint_status,span#autosave_status{font-size:small}
1514 span#checkpoint_status,span#autosave_status{font-size:small}
1514 @media (max-width:767px){span#save_widget{font-size:small} span#checkpoint_status,span#autosave_status{font-size:x-small}}@media (max-width:767px){span#checkpoint_status,span#autosave_status{display:none}}@media (min-width:768px) and (max-width:979px){span#checkpoint_status{display:none} span#autosave_status{font-size:x-small}}.toolbar{padding:0 10px;margin-top:-5px}.toolbar select,.toolbar label{width:auto;height:26px;vertical-align:middle;margin-right:2px;margin-bottom:0;display:inline;font-size:92%;margin-left:.3em;margin-right:.3em;padding:0;padding-top:3px}
1515 @media (max-width:767px){span#save_widget{font-size:small} span#checkpoint_status,span#autosave_status{font-size:x-small}}@media (max-width:767px){span#checkpoint_status,span#autosave_status{display:none}}@media (min-width:768px) and (max-width:979px){span#checkpoint_status{display:none} span#autosave_status{font-size:x-small}}.toolbar{padding:0 10px;margin-top:-5px}.toolbar select,.toolbar label{width:auto;height:26px;vertical-align:middle;margin-right:2px;margin-bottom:0;display:inline;font-size:92%;margin-left:.3em;margin-right:.3em;padding:0;padding-top:3px}
1515 .toolbar .btn{padding:2px 8px}
1516 .toolbar .btn{padding:2px 8px}
1516 .toolbar .btn-group{margin-top:0}
1517 .toolbar .btn-group{margin-top:0}
1517 .toolbar-inner{border:none !important;-webkit-box-shadow:none !important;-moz-box-shadow:none !important;box-shadow:none !important}
1518 .toolbar-inner{border:none !important;-webkit-box-shadow:none !important;-moz-box-shadow:none !important;box-shadow:none !important}
1518 #maintoolbar{margin-bottom:0}
1519 #maintoolbar{margin-bottom:0}
1519 @-moz-keyframes fadeOut{from{opacity:1} to{opacity:0}}@-webkit-keyframes fadeOut{from{opacity:1} to{opacity:0}}@-moz-keyframes fadeIn{from{opacity:0} to{opacity:1}}@-webkit-keyframes fadeIn{from{opacity:0} to{opacity:1}}.bigtooltip{overflow:auto;height:200px;-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms}
1520 @-moz-keyframes fadeOut{from{opacity:1} to{opacity:0}}@-webkit-keyframes fadeOut{from{opacity:1} to{opacity:0}}@-moz-keyframes fadeIn{from{opacity:0} to{opacity:1}}@-webkit-keyframes fadeIn{from{opacity:0} to{opacity:1}}.bigtooltip{overflow:auto;height:200px;-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms}
1520 .smalltooltip{-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms;text-overflow:ellipsis;overflow:hidden;height:80px}
1521 .smalltooltip{-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms;text-overflow:ellipsis;overflow:hidden;height:80px}
1521 .tooltipbuttons{position:absolute;padding-right:15px;top:0;right:0}
1522 .tooltipbuttons{position:absolute;padding-right:15px;top:0;right:0}
1522 .tooltiptext{padding-right:30px}
1523 .tooltiptext{padding-right:30px}
1523 .ipython_tooltip{max-width:700px;-webkit-animation:fadeOut 400ms;-moz-animation:fadeOut 400ms;animation:fadeOut 400ms;-webkit-animation:fadeIn 400ms;-moz-animation:fadeIn 400ms;animation:fadeIn 400ms;vertical-align:middle;background-color:#f7f7f7;overflow:visible;border:#ababab 1px solid;outline:none;padding:3px;margin:0;padding-left:7px;font-family:monospace;min-height:50px;-moz-box-shadow:0 6px 10px -1px #adadad;-webkit-box-shadow:0 6px 10px -1px #adadad;box-shadow:0 6px 10px -1px #adadad;border-radius:4px;position:absolute;z-index:2}.ipython_tooltip a{float:right}
1524 .ipython_tooltip{max-width:700px;-webkit-animation:fadeOut 400ms;-moz-animation:fadeOut 400ms;animation:fadeOut 400ms;-webkit-animation:fadeIn 400ms;-moz-animation:fadeIn 400ms;animation:fadeIn 400ms;vertical-align:middle;background-color:#f7f7f7;overflow:visible;border:#ababab 1px solid;outline:none;padding:3px;margin:0;padding-left:7px;font-family:monospace;min-height:50px;-moz-box-shadow:0 6px 10px -1px #adadad;-webkit-box-shadow:0 6px 10px -1px #adadad;box-shadow:0 6px 10px -1px #adadad;border-radius:4px;position:absolute;z-index:2}.ipython_tooltip a{float:right}
1524 .ipython_tooltip .tooltiptext pre{border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;font-size:100%;background-color:#f7f7f7}
1525 .ipython_tooltip .tooltiptext pre{border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;font-size:100%;background-color:#f7f7f7}
1525 .pretooltiparrow{left:0;margin:0;top:-16px;width:40px;height:16px;overflow:hidden;position:absolute}
1526 .pretooltiparrow{left:0;margin:0;top:-16px;width:40px;height:16px;overflow:hidden;position:absolute}
1526 .pretooltiparrow:before{background-color:#f7f7f7;border:1px #ababab solid;z-index:11;content:"";position:absolute;left:15px;top:10px;width:25px;height:25px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}
1527 .pretooltiparrow:before{background-color:#f7f7f7;border:1px #ababab solid;z-index:11;content:"";position:absolute;left:15px;top:10px;width:25px;height:25px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}
@@ -1,349 +1,352
1 {% extends "page.html" %}
1 {% extends "page.html" %}
2
2
3 {% block stylesheet %}
3 {% block stylesheet %}
4
4
5 {% if mathjax_url %}
5 {% if mathjax_url %}
6 <script type="text/javascript" src="{{mathjax_url}}?config=TeX-AMS_HTML-full&delayStartupUntil=configured" charset="utf-8"></script>
6 <script type="text/javascript" src="{{mathjax_url}}?config=TeX-AMS_HTML-full&delayStartupUntil=configured" charset="utf-8"></script>
7 {% endif %}
7 {% endif %}
8 <script type="text/javascript">
8 <script type="text/javascript">
9 // MathJax disabled, set as null to distingish from *missing* MathJax,
9 // MathJax disabled, set as null to distingish from *missing* MathJax,
10 // where it will be undefined, and should prompt a dialog later.
10 // where it will be undefined, and should prompt a dialog later.
11 window.mathjax_url = "{{mathjax_url}}";
11 window.mathjax_url = "{{mathjax_url}}";
12 </script>
12 </script>
13
13
14 <link rel="stylesheet" href="{{ static_url("components/codemirror/lib/codemirror.css") }}">
14 <link rel="stylesheet" href="{{ static_url("components/codemirror/lib/codemirror.css") }}">
15
15
16 {{super()}}
16 {{super()}}
17
17
18 <link rel="stylesheet" href="{{ static_url("notebook/css/override.css") }}" type="text/css" />
18 <link rel="stylesheet" href="{{ static_url("notebook/css/override.css") }}" type="text/css" />
19
19
20 {% endblock %}
20 {% endblock %}
21
21
22 {% block params %}
22 {% block params %}
23
23
24 data-project="{{project}}"
24 data-project="{{project}}"
25 data-base-project-url="{{base_project_url}}"
25 data-base-project-url="{{base_project_url}}"
26 data-base-kernel-url="{{base_kernel_url}}"
26 data-base-kernel-url="{{base_kernel_url}}"
27 data-notebook-name="{{notebook_name}}"
27 data-notebook-name="{{notebook_name}}"
28 data-notebook-path="{{notebook_path}}"
28 data-notebook-path="{{notebook_path}}"
29 class="notebook_app"
29 class="notebook_app"
30
30
31 {% endblock %}
31 {% endblock %}
32
32
33
33
34 {% block header %}
34 {% block header %}
35
35
36 <span id="save_widget" class="nav pull-left">
36 <span id="save_widget" class="nav pull-left">
37 <span id="notebook_name"></span>
37 <span id="notebook_name"></span>
38 <span id="checkpoint_status"></span>
38 <span id="checkpoint_status"></span>
39 <span id="autosave_status"></span>
39 <span id="autosave_status"></span>
40 </span>
40 </span>
41
41
42 {% endblock %}
42 {% endblock %}
43
43
44
44
45 {% block site %}
45 {% block site %}
46
46
47 <div id="menubar-container" class="container">
47 <div id="menubar-container" class="container">
48 <div id="menubar">
48 <div id="menubar">
49 <div class="navbar">
49 <div class="navbar">
50 <div class="navbar-inner">
50 <div class="navbar-inner">
51 <div class="container">
51 <div class="container">
52 <ul id="menus" class="nav">
52 <ul id="menus" class="nav">
53 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">File</a>
53 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">File</a>
54 <ul id="file_menu" class="dropdown-menu">
54 <ul id="file_menu" class="dropdown-menu">
55 <li id="new_notebook"
55 <li id="new_notebook"
56 title="Make a new notebook (Opens a new window)">
56 title="Make a new notebook (Opens a new window)">
57 <a href="#">New</a></li>
57 <a href="#">New</a></li>
58 <li id="open_notebook"
58 <li id="open_notebook"
59 title="Opens a new window with the Dashboard view">
59 title="Opens a new window with the Dashboard view">
60 <a href="#">Open...</a></li>
60 <a href="#">Open...</a></li>
61 <!-- <hr/> -->
61 <!-- <hr/> -->
62 <li class="divider"></li>
62 <li class="divider"></li>
63 <li id="copy_notebook"
63 <li id="copy_notebook"
64 title="Open a copy of this notebook's contents and start a new kernel">
64 title="Open a copy of this notebook's contents and start a new kernel">
65 <a href="#">Make a Copy...</a></li>
65 <a href="#">Make a Copy...</a></li>
66 <li id="rename_notebook"><a href="#">Rename...</a></li>
66 <li id="rename_notebook"><a href="#">Rename...</a></li>
67 <li id="save_checkpoint"><a href="#">Save and Checkpoint</a></li>
67 <li id="save_checkpoint"><a href="#">Save and Checkpoint</a></li>
68 <!-- <hr/> -->
68 <!-- <hr/> -->
69 <li class="divider"></li>
69 <li class="divider"></li>
70 <li id="restore_checkpoint" class="dropdown-submenu"><a href="#">Revert to Checkpoint</a>
70 <li id="restore_checkpoint" class="dropdown-submenu"><a href="#">Revert to Checkpoint</a>
71 <ul class="dropdown-menu">
71 <ul class="dropdown-menu">
72 <li><a href="#"></a></li>
72 <li><a href="#"></a></li>
73 <li><a href="#"></a></li>
73 <li><a href="#"></a></li>
74 <li><a href="#"></a></li>
74 <li><a href="#"></a></li>
75 <li><a href="#"></a></li>
75 <li><a href="#"></a></li>
76 <li><a href="#"></a></li>
76 <li><a href="#"></a></li>
77 </ul>
77 </ul>
78 </li>
78 </li>
79 <li class="divider"></li>
79 <li class="divider"></li>
80 <li id="print_preview"><a href="#">Print Preview</a></li>
80 <li id="print_preview"><a href="#">Print Preview</a></li>
81 <li class="dropdown-submenu"><a href="#">Download as</a>
81 <li class="dropdown-submenu"><a href="#">Download as</a>
82 <ul class="dropdown-menu">
82 <ul class="dropdown-menu">
83 <li id="download_ipynb"><a href="#">IPython Notebook (.ipynb)</a></li>
83 <li id="download_ipynb"><a href="#">IPython Notebook (.ipynb)</a></li>
84 <li id="download_py"><a href="#">Python (.py)</a></li>
84 <li id="download_py"><a href="#">Python (.py)</a></li>
85 <li id="download_html"><a href="#">HTML (.html)</a></li>
85 <li id="download_html"><a href="#">HTML (.html)</a></li>
86 <li id="download_rst"><a href="#">reST (.rst)</a></li>
86 <li id="download_rst"><a href="#">reST (.rst)</a></li>
87 </ul>
87 </ul>
88 </li>
88 </li>
89 <li class="divider"></li>
89 <li class="divider"></li>
90
90
91 <li id="kill_and_exit"
91 <li id="kill_and_exit"
92 title="Shutdown this notebook's kernel, and close this window">
92 title="Shutdown this notebook's kernel, and close this window">
93 <a href="#" >Close and halt</a></li>
93 <a href="#" >Close and halt</a></li>
94 </ul>
94 </ul>
95 </li>
95 </li>
96 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Edit</a>
96 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Edit</a>
97 <ul id="edit_menu" class="dropdown-menu">
97 <ul id="edit_menu" class="dropdown-menu">
98 <li id="cut_cell"><a href="#">Cut Cell</a></li>
98 <li id="cut_cell"><a href="#">Cut Cell</a></li>
99 <li id="copy_cell"><a href="#">Copy Cell</a></li>
99 <li id="copy_cell"><a href="#">Copy Cell</a></li>
100 <li id="paste_cell_above" class="disabled"><a href="#">Paste Cell Above</a></li>
100 <li id="paste_cell_above" class="disabled"><a href="#">Paste Cell Above</a></li>
101 <li id="paste_cell_below" class="disabled"><a href="#">Paste Cell Below</a></li>
101 <li id="paste_cell_below" class="disabled"><a href="#">Paste Cell Below</a></li>
102 <li id="paste_cell_replace" class="disabled"><a href="#">Paste Cell &amp; Replace</a></li>
102 <li id="paste_cell_replace" class="disabled"><a href="#">Paste Cell &amp; Replace</a></li>
103 <li id="delete_cell"><a href="#">Delete Cell</a></li>
103 <li id="delete_cell"><a href="#">Delete Cell</a></li>
104 <li id="undelete_cell" class="disabled"><a href="#">Undo Delete Cell</a></li>
104 <li id="undelete_cell" class="disabled"><a href="#">Undo Delete Cell</a></li>
105 <li class="divider"></li>
105 <li class="divider"></li>
106 <li id="split_cell"><a href="#">Split Cell</a></li>
106 <li id="split_cell"><a href="#">Split Cell</a></li>
107 <li id="merge_cell_above"><a href="#">Merge Cell Above</a></li>
107 <li id="merge_cell_above"><a href="#">Merge Cell Above</a></li>
108 <li id="merge_cell_below"><a href="#">Merge Cell Below</a></li>
108 <li id="merge_cell_below"><a href="#">Merge Cell Below</a></li>
109 <li class="divider"></li>
109 <li class="divider"></li>
110 <li id="move_cell_up"><a href="#">Move Cell Up</a></li>
110 <li id="move_cell_up"><a href="#">Move Cell Up</a></li>
111 <li id="move_cell_down"><a href="#">Move Cell Down</a></li>
111 <li id="move_cell_down"><a href="#">Move Cell Down</a></li>
112 <li class="divider"></li>
112 <li class="divider"></li>
113 <li id="edit_nb_metadata"><a href="#">Edit Notebook Metadata</a></li>
113 <li id="edit_nb_metadata"><a href="#">Edit Notebook Metadata</a></li>
114 </ul>
114 </ul>
115 </li>
115 </li>
116 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">View</a>
116 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">View</a>
117 <ul id="view_menu" class="dropdown-menu">
117 <ul id="view_menu" class="dropdown-menu">
118 <li id="toggle_header"
118 <li id="toggle_header"
119 title="Show/Hide the IPython Notebook logo and notebook title (above menu bar)">
119 title="Show/Hide the IPython Notebook logo and notebook title (above menu bar)">
120 <a href="#">Toggle Header</a></li>
120 <a href="#">Toggle Header</a></li>
121 <li id="toggle_toolbar"
121 <li id="toggle_toolbar"
122 title="Show/Hide the action icons (below menu bar)">
122 title="Show/Hide the action icons (below menu bar)">
123 <a href="#">Toggle Toolbar</a></li>
123 <a href="#">Toggle Toolbar</a></li>
124 </ul>
124 </ul>
125 </li>
125 </li>
126 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Insert</a>
126 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Insert</a>
127 <ul id="insert_menu" class="dropdown-menu">
127 <ul id="insert_menu" class="dropdown-menu">
128 <li id="insert_cell_above"
128 <li id="insert_cell_above"
129 title="Insert an empty Code cell above the currently active cell">
129 title="Insert an empty Code cell above the currently active cell">
130 <a href="#">Insert Cell Above</a></li>
130 <a href="#">Insert Cell Above</a></li>
131 <li id="insert_cell_below"
131 <li id="insert_cell_below"
132 title="Insert an empty Code cell below the currently active cell">
132 title="Insert an empty Code cell below the currently active cell">
133 <a href="#">Insert Cell Below</a></li>
133 <a href="#">Insert Cell Below</a></li>
134 </ul>
134 </ul>
135 </li>
135 </li>
136 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Cell</a>
136 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Cell</a>
137 <ul id="cell_menu" class="dropdown-menu">
137 <ul id="cell_menu" class="dropdown-menu">
138 <li id="run_cell" title="Run this cell, and move cursor to the next one">
138 <li id="run_cell" title="Run this cell, and move cursor to the next one">
139 <a href="#">Run</a></li>
139 <a href="#">Run</a></li>
140 <li id="run_cell_select_below" title="Run this cell, select below">
140 <li id="run_cell_select_below" title="Run this cell, select below">
141 <a href="#">Run and Select Below</a></li>
141 <a href="#">Run and Select Below</a></li>
142 <li id="run_cell_insert_below" title="Run this cell, insert below">
142 <li id="run_cell_insert_below" title="Run this cell, insert below">
143 <a href="#">Run and Insert Below</a></li>
143 <a href="#">Run and Insert Below</a></li>
144 <li id="run_all_cells" title="Run all cells in the notebook">
144 <li id="run_all_cells" title="Run all cells in the notebook">
145 <a href="#">Run All</a></li>
145 <a href="#">Run All</a></li>
146 <li id="run_all_cells_above" title="Run all cells above (but not including) this cell">
146 <li id="run_all_cells_above" title="Run all cells above (but not including) this cell">
147 <a href="#">Run All Above</a></li>
147 <a href="#">Run All Above</a></li>
148 <li id="run_all_cells_below" title="Run this cell and all cells below it">
148 <li id="run_all_cells_below" title="Run this cell and all cells below it">
149 <a href="#">Run All Below</a></li>
149 <a href="#">Run All Below</a></li>
150 <li class="divider"></li>
150 <li class="divider"></li>
151 <li id="change_cell_type" class="dropdown-submenu"
151 <li id="change_cell_type" class="dropdown-submenu"
152 title="All cells in the notebook have a cell type. By default, new cells are created as 'Code' cells">
152 title="All cells in the notebook have a cell type. By default, new cells are created as 'Code' cells">
153 <a href="#">Cell Type</a>
153 <a href="#">Cell Type</a>
154 <ul class="dropdown-menu">
154 <ul class="dropdown-menu">
155 <li id="to_code"
155 <li id="to_code"
156 title="Contents will be sent to the kernel for execution, and output will display in the footer of cell">
156 title="Contents will be sent to the kernel for execution, and output will display in the footer of cell">
157 <a href="#">Code</a></li>
157 <a href="#">Code</a></li>
158 <li id="to_markdown"
158 <li id="to_markdown"
159 title="Contents will be rendered as HTML and serve as explanatory text">
159 title="Contents will be rendered as HTML and serve as explanatory text">
160 <a href="#">Markdown</a></li>
160 <a href="#">Markdown</a></li>
161 <li id="to_raw"
161 <li id="to_raw"
162 title="Contents will pass through nbconvert unmodified">
162 title="Contents will pass through nbconvert unmodified">
163 <a href="#">Raw NBConvert</a></li>
163 <a href="#">Raw NBConvert</a></li>
164 <li id="to_heading1"><a href="#">Heading 1</a></li>
164 <li id="to_heading1"><a href="#">Heading 1</a></li>
165 <li id="to_heading2"><a href="#">Heading 2</a></li>
165 <li id="to_heading2"><a href="#">Heading 2</a></li>
166 <li id="to_heading3"><a href="#">Heading 3</a></li>
166 <li id="to_heading3"><a href="#">Heading 3</a></li>
167 <li id="to_heading4"><a href="#">Heading 4</a></li>
167 <li id="to_heading4"><a href="#">Heading 4</a></li>
168 <li id="to_heading5"><a href="#">Heading 5</a></li>
168 <li id="to_heading5"><a href="#">Heading 5</a></li>
169 <li id="to_heading6"><a href="#">Heading 6</a></li>
169 <li id="to_heading6"><a href="#">Heading 6</a></li>
170 </ul>
170 </ul>
171 </li>
171 </li>
172 <li class="divider"></li>
172 <li class="divider"></li>
173 <li id="current_outputs" class="dropdown-submenu"><a href="#">Current Output</a>
173 <li id="current_outputs" class="dropdown-submenu"><a href="#">Current Output</a>
174 <ul class="dropdown-menu">
174 <ul class="dropdown-menu">
175 <li id="toggle_current_output"
175 <li id="toggle_current_output"
176 title="Hide/Show the output of the current cell">
176 title="Hide/Show the output of the current cell">
177 <a href="#">Toggle</a>
177 <a href="#">Toggle</a>
178 </li>
178 </li>
179 <li id="toggle_current_output_scroll"
179 <li id="toggle_current_output_scroll"
180 title="Scroll the output of the current cell">
180 title="Scroll the output of the current cell">
181 <a href="#">Toggle Scrolling</a>
181 <a href="#">Toggle Scrolling</a>
182 </li>
182 </li>
183 <li id="clear_current_output"
183 <li id="clear_current_output"
184 title="Clear the output of the current cell">
184 title="Clear the output of the current cell">
185 <a href="#">Clear</a>
185 <a href="#">Clear</a>
186 </li>
186 </li>
187 </ul>
187 </ul>
188 </li>
188 </li>
189 <li id="all_outputs" class="dropdown-submenu"><a href="#">All Output</a>
189 <li id="all_outputs" class="dropdown-submenu"><a href="#">All Output</a>
190 <ul class="dropdown-menu">
190 <ul class="dropdown-menu">
191 <li id="toggle_all_output"
191 <li id="toggle_all_output"
192 title="Hide/Show the output of all cells">
192 title="Hide/Show the output of all cells">
193 <a href="#">Toggle</a>
193 <a href="#">Toggle</a>
194 </li>
194 </li>
195 <li id="toggle_all_output_scroll"
195 <li id="toggle_all_output_scroll"
196 title="Scroll the output of all cells">
196 title="Scroll the output of all cells">
197 <a href="#">Toggle Scrolling</a>
197 <a href="#">Toggle Scrolling</a>
198 </li>
198 </li>
199 <li id="clear_all_output"
199 <li id="clear_all_output"
200 title="Clear the output of all cells">
200 title="Clear the output of all cells">
201 <a href="#">Clear</a>
201 <a href="#">Clear</a>
202 </li>
202 </li>
203 </ul>
203 </ul>
204 </li>
204 </li>
205 </ul>
205 </ul>
206 </li>
206 </li>
207 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Kernel</a>
207 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Kernel</a>
208 <ul id="kernel_menu" class="dropdown-menu">
208 <ul id="kernel_menu" class="dropdown-menu">
209 <li id="int_kernel"
209 <li id="int_kernel"
210 title="Send KeyboardInterrupt (CTRL-C) to the Kernel">
210 title="Send KeyboardInterrupt (CTRL-C) to the Kernel">
211 <a href="#">Interrupt</a></li>
211 <a href="#">Interrupt</a></li>
212 <li id="restart_kernel"
212 <li id="restart_kernel"
213 title="Restart the Kernel">
213 title="Restart the Kernel">
214 <a href="#">Restart</a></li>
214 <a href="#">Restart</a></li>
215 </ul>
215 </ul>
216 </li>
216 </li>
217 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Help</a>
217 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Help</a>
218 <ul id="help_menu" class="dropdown-menu">
218 <ul id="help_menu" class="dropdown-menu">
219 <li id="keyboard_shortcuts" title="Opens a tooltip with all keyboard shortcuts"><a href="#">Keyboard Shortcuts</a></li>
219 <li id="keyboard_shortcuts" title="Opens a tooltip with all keyboard shortcuts"><a href="#">Keyboard Shortcuts</a></li>
220 <li class="divider"></li>
220 <li class="divider"></li>
221 {% set
221 {% set
222 sections = (
222 sections = (
223 (
223 (
224 ("http://ipython.org/documentation.html","IPython Help",True),
224 ("http://ipython.org/documentation.html","IPython Help",True),
225 ("http://nbviewer.ipython.org/github/ipython/ipython/tree/master/examples/notebooks/", "Notebook Examples", True),
225 ("http://nbviewer.ipython.org/github/ipython/ipython/tree/master/examples/notebooks/", "Notebook Examples", True),
226 ("http://ipython.org/ipython-doc/stable/interactive/notebook.html","Notebook Help",True),
226 ("http://ipython.org/ipython-doc/stable/interactive/notebook.html","Notebook Help",True),
227 ("http://ipython.org/ipython-doc/dev/interactive/cm_keyboard.html","Editor Shortcuts",True),
227 ("http://ipython.org/ipython-doc/dev/interactive/cm_keyboard.html","Editor Shortcuts",True),
228 ),(
228 ),(
229 ("http://docs.python.org","Python",True),
229 ("http://docs.python.org","Python",True),
230 ("http://docs.scipy.org/doc/numpy/reference/","NumPy",True),
230 ("http://docs.scipy.org/doc/numpy/reference/","NumPy",True),
231 ("http://docs.scipy.org/doc/scipy/reference/","SciPy",True),
231 ("http://docs.scipy.org/doc/scipy/reference/","SciPy",True),
232 ("http://matplotlib.org/contents.html","Matplotlib",True),
232 ("http://matplotlib.org/contents.html","Matplotlib",True),
233 ("http://docs.sympy.org/dev/index.html","SymPy",True),
233 ("http://docs.sympy.org/dev/index.html","SymPy",True),
234 ("http://pandas.pydata.org/pandas-docs/stable/","pandas", True)
234 ("http://pandas.pydata.org/pandas-docs/stable/","pandas", True)
235 )
235 )
236 )
236 )
237 %}
237 %}
238
238
239 {% for helplinks in sections %}
239 {% for helplinks in sections %}
240 {% for link in helplinks %}
240 {% for link in helplinks %}
241 <li><a href="{{link[0]}}" {{'target="_blank" title="Opens in a new window"' if link[2]}}>
241 <li><a href="{{link[0]}}" {{'target="_blank" title="Opens in a new window"' if link[2]}}>
242 {{'<i class="icon-external-link menu-icon pull-right"></i>' if link[2]}}
242 {{'<i class="icon-external-link menu-icon pull-right"></i>' if link[2]}}
243 {{link[1]}}
243 {{link[1]}}
244 </a></li>
244 </a></li>
245 {% endfor %}
245 {% endfor %}
246 {% if not loop.last %}
246 {% if not loop.last %}
247 <li class="divider"></li>
247 <li class="divider"></li>
248 {% endif %}
248 {% endif %}
249 {% endfor %}
249 {% endfor %}
250 </li>
250 </li>
251 </ul>
251 </ul>
252 </li>
252 </li>
253 </ul>
253 </ul>
254 <div class='pull-right' id="indicator_area">
254 <div id="kernel_indicator" class="indicator_area pull-right">
255 <div id="kernel_indicator"></div>
255 <i id="kernel_indicator_icon"></i>
256 </div>
257 <div id="modal_indicator" class="indicator_area pull-right">
258 <i id="modal_indicator_icon"></i>
256 </div>
259 </div>
257 <div id="notification_area"></div>
260 <div id="notification_area"></div>
258 </div>
261 </div>
259 </div>
262 </div>
260 </div>
263 </div>
261 </div>
264 </div>
262 <div id="maintoolbar" class="navbar">
265 <div id="maintoolbar" class="navbar">
263 <div class="toolbar-inner navbar-inner navbar-nobg">
266 <div class="toolbar-inner navbar-inner navbar-nobg">
264 <div id="maintoolbar-container" class="container"></div>
267 <div id="maintoolbar-container" class="container"></div>
265 </div>
268 </div>
266 </div>
269 </div>
267 </div>
270 </div>
268
271
269 <div id="ipython-main-app">
272 <div id="ipython-main-app">
270
273
271 <div id="notebook_panel">
274 <div id="notebook_panel">
272 <div id="notebook"></div>
275 <div id="notebook"></div>
273 <div id="pager_splitter"></div>
276 <div id="pager_splitter"></div>
274 <div id="pager">
277 <div id="pager">
275 <div id='pager_button_area'>
278 <div id='pager_button_area'>
276 </div>
279 </div>
277 <div id="pager-container" class="container"></div>
280 <div id="pager-container" class="container"></div>
278 </div>
281 </div>
279 </div>
282 </div>
280
283
281 </div>
284 </div>
282 <div id='tooltip' class='ipython_tooltip' style='display:none'></div>
285 <div id='tooltip' class='ipython_tooltip' style='display:none'></div>
283
286
284
287
285 {% endblock %}
288 {% endblock %}
286
289
287
290
288 {% block script %}
291 {% block script %}
289
292
290 {{super()}}
293 {{super()}}
291
294
292 <script src="{{ static_url("components/codemirror/lib/codemirror.js") }}" charset="utf-8"></script>
295 <script src="{{ static_url("components/codemirror/lib/codemirror.js") }}" charset="utf-8"></script>
293 <script type="text/javascript">
296 <script type="text/javascript">
294 CodeMirror.modeURL = "{{ static_url("components/codemirror/mode/%N/%N.js") }}";
297 CodeMirror.modeURL = "{{ static_url("components/codemirror/mode/%N/%N.js") }}";
295 </script>
298 </script>
296 <script src="{{ static_url("components/codemirror/addon/mode/loadmode.js") }}" charset="utf-8"></script>
299 <script src="{{ static_url("components/codemirror/addon/mode/loadmode.js") }}" charset="utf-8"></script>
297 <script src="{{ static_url("components/codemirror/addon/mode/multiplex.js") }}" charset="utf-8"></script>
300 <script src="{{ static_url("components/codemirror/addon/mode/multiplex.js") }}" charset="utf-8"></script>
298 <script src="{{ static_url("components/codemirror/addon/mode/overlay.js") }}" charset="utf-8"></script>
301 <script src="{{ static_url("components/codemirror/addon/mode/overlay.js") }}" charset="utf-8"></script>
299 <script src="{{ static_url("components/codemirror/addon/edit/matchbrackets.js") }}" charset="utf-8"></script>
302 <script src="{{ static_url("components/codemirror/addon/edit/matchbrackets.js") }}" charset="utf-8"></script>
300 <script src="{{ static_url("components/codemirror/addon/comment/comment.js") }}" charset="utf-8"></script>
303 <script src="{{ static_url("components/codemirror/addon/comment/comment.js") }}" charset="utf-8"></script>
301 <script src="{{ static_url("components/codemirror/mode/htmlmixed/htmlmixed.js") }}" charset="utf-8"></script>
304 <script src="{{ static_url("components/codemirror/mode/htmlmixed/htmlmixed.js") }}" charset="utf-8"></script>
302 <script src="{{ static_url("components/codemirror/mode/xml/xml.js") }}" charset="utf-8"></script>
305 <script src="{{ static_url("components/codemirror/mode/xml/xml.js") }}" charset="utf-8"></script>
303 <script src="{{ static_url("components/codemirror/mode/javascript/javascript.js") }}" charset="utf-8"></script>
306 <script src="{{ static_url("components/codemirror/mode/javascript/javascript.js") }}" charset="utf-8"></script>
304 <script src="{{ static_url("components/codemirror/mode/css/css.js") }}" charset="utf-8"></script>
307 <script src="{{ static_url("components/codemirror/mode/css/css.js") }}" charset="utf-8"></script>
305 <script src="{{ static_url("components/codemirror/mode/rst/rst.js") }}" charset="utf-8"></script>
308 <script src="{{ static_url("components/codemirror/mode/rst/rst.js") }}" charset="utf-8"></script>
306 <script src="{{ static_url("components/codemirror/mode/markdown/markdown.js") }}" charset="utf-8"></script>
309 <script src="{{ static_url("components/codemirror/mode/markdown/markdown.js") }}" charset="utf-8"></script>
307 <script src="{{ static_url("components/codemirror/mode/gfm/gfm.js") }}" charset="utf-8"></script>
310 <script src="{{ static_url("components/codemirror/mode/gfm/gfm.js") }}" charset="utf-8"></script>
308 <script src="{{ static_url("components/codemirror/mode/python/python.js") }}" charset="utf-8"></script>
311 <script src="{{ static_url("components/codemirror/mode/python/python.js") }}" charset="utf-8"></script>
309 <script src="{{ static_url("notebook/js/codemirror-ipython.js") }}" charset="utf-8"></script>
312 <script src="{{ static_url("notebook/js/codemirror-ipython.js") }}" charset="utf-8"></script>
310
313
311 <script src="{{ static_url("components/highlight.js/build/highlight.pack.js") }}" charset="utf-8"></script>
314 <script src="{{ static_url("components/highlight.js/build/highlight.pack.js") }}" charset="utf-8"></script>
312
315
313 <script src="{{ static_url("dateformat/date.format.js") }}" charset="utf-8"></script>
316 <script src="{{ static_url("dateformat/date.format.js") }}" charset="utf-8"></script>
314
317
315 <script src="{{ static_url("base/js/events.js") }}" type="text/javascript" charset="utf-8"></script>
318 <script src="{{ static_url("base/js/events.js") }}" type="text/javascript" charset="utf-8"></script>
316 <script src="{{ static_url("base/js/utils.js") }}" type="text/javascript" charset="utf-8"></script>
319 <script src="{{ static_url("base/js/utils.js") }}" type="text/javascript" charset="utf-8"></script>
317 <script src="{{ static_url("base/js/dialog.js") }}" type="text/javascript" charset="utf-8"></script>
320 <script src="{{ static_url("base/js/dialog.js") }}" type="text/javascript" charset="utf-8"></script>
318 <script src="{{ static_url("services/kernels/js/kernel.js") }}" type="text/javascript" charset="utf-8"></script>
321 <script src="{{ static_url("services/kernels/js/kernel.js") }}" type="text/javascript" charset="utf-8"></script>
319 <script src="{{ static_url("services/kernels/js/comm.js") }}" type="text/javascript" charset="utf-8"></script>
322 <script src="{{ static_url("services/kernels/js/comm.js") }}" type="text/javascript" charset="utf-8"></script>
320 <script src="{{ static_url("services/sessions/js/session.js") }}" type="text/javascript" charset="utf-8"></script>
323 <script src="{{ static_url("services/sessions/js/session.js") }}" type="text/javascript" charset="utf-8"></script>
321 <script src="{{ static_url("notebook/js/layoutmanager.js") }}" type="text/javascript" charset="utf-8"></script>
324 <script src="{{ static_url("notebook/js/layoutmanager.js") }}" type="text/javascript" charset="utf-8"></script>
322 <script src="{{ static_url("notebook/js/mathjaxutils.js") }}" type="text/javascript" charset="utf-8"></script>
325 <script src="{{ static_url("notebook/js/mathjaxutils.js") }}" type="text/javascript" charset="utf-8"></script>
323 <script src="{{ static_url("notebook/js/outputarea.js") }}" type="text/javascript" charset="utf-8"></script>
326 <script src="{{ static_url("notebook/js/outputarea.js") }}" type="text/javascript" charset="utf-8"></script>
324 <script src="{{ static_url("notebook/js/cell.js") }}" type="text/javascript" charset="utf-8"></script>
327 <script src="{{ static_url("notebook/js/cell.js") }}" type="text/javascript" charset="utf-8"></script>
325 <script src="{{ static_url("notebook/js/celltoolbar.js") }}" type="text/javascript" charset="utf-8"></script>
328 <script src="{{ static_url("notebook/js/celltoolbar.js") }}" type="text/javascript" charset="utf-8"></script>
326 <script src="{{ static_url("notebook/js/codecell.js") }}" type="text/javascript" charset="utf-8"></script>
329 <script src="{{ static_url("notebook/js/codecell.js") }}" type="text/javascript" charset="utf-8"></script>
327 <script src="{{ static_url("notebook/js/completer.js") }}" type="text/javascript" charset="utf-8"></script>
330 <script src="{{ static_url("notebook/js/completer.js") }}" type="text/javascript" charset="utf-8"></script>
328 <script src="{{ static_url("notebook/js/textcell.js") }}" type="text/javascript" charset="utf-8"></script>
331 <script src="{{ static_url("notebook/js/textcell.js") }}" type="text/javascript" charset="utf-8"></script>
329 <script src="{{ static_url("notebook/js/savewidget.js") }}" type="text/javascript" charset="utf-8"></script>
332 <script src="{{ static_url("notebook/js/savewidget.js") }}" type="text/javascript" charset="utf-8"></script>
330 <script src="{{ static_url("notebook/js/quickhelp.js") }}" type="text/javascript" charset="utf-8"></script>
333 <script src="{{ static_url("notebook/js/quickhelp.js") }}" type="text/javascript" charset="utf-8"></script>
331 <script src="{{ static_url("notebook/js/pager.js") }}" type="text/javascript" charset="utf-8"></script>
334 <script src="{{ static_url("notebook/js/pager.js") }}" type="text/javascript" charset="utf-8"></script>
332 <script src="{{ static_url("notebook/js/menubar.js") }}" type="text/javascript" charset="utf-8"></script>
335 <script src="{{ static_url("notebook/js/menubar.js") }}" type="text/javascript" charset="utf-8"></script>
333 <script src="{{ static_url("notebook/js/toolbar.js") }}" type="text/javascript" charset="utf-8"></script>
336 <script src="{{ static_url("notebook/js/toolbar.js") }}" type="text/javascript" charset="utf-8"></script>
334 <script src="{{ static_url("notebook/js/maintoolbar.js") }}" type="text/javascript" charset="utf-8"></script>
337 <script src="{{ static_url("notebook/js/maintoolbar.js") }}" type="text/javascript" charset="utf-8"></script>
335 <script src="{{ static_url("notebook/js/notebook.js") }}" type="text/javascript" charset="utf-8"></script>
338 <script src="{{ static_url("notebook/js/notebook.js") }}" type="text/javascript" charset="utf-8"></script>
336 <script src="{{ static_url("notebook/js/keyboardmanager.js") }}" type="text/javascript" charset="utf-8"></script>
339 <script src="{{ static_url("notebook/js/keyboardmanager.js") }}" type="text/javascript" charset="utf-8"></script>
337 <script src="{{ static_url("notebook/js/notificationwidget.js") }}" type="text/javascript" charset="utf-8"></script>
340 <script src="{{ static_url("notebook/js/notificationwidget.js") }}" type="text/javascript" charset="utf-8"></script>
338 <script src="{{ static_url("notebook/js/notificationarea.js") }}" type="text/javascript" charset="utf-8"></script>
341 <script src="{{ static_url("notebook/js/notificationarea.js") }}" type="text/javascript" charset="utf-8"></script>
339 <script src="{{ static_url("notebook/js/tooltip.js") }}" type="text/javascript" charset="utf-8"></script>
342 <script src="{{ static_url("notebook/js/tooltip.js") }}" type="text/javascript" charset="utf-8"></script>
340 <script src="{{ static_url("notebook/js/config.js") }}" type="text/javascript" charset="utf-8"></script>
343 <script src="{{ static_url("notebook/js/config.js") }}" type="text/javascript" charset="utf-8"></script>
341 <script src="{{ static_url("notebook/js/main.js") }}" type="text/javascript" charset="utf-8"></script>
344 <script src="{{ static_url("notebook/js/main.js") }}" type="text/javascript" charset="utf-8"></script>
342
345
343 <script src="{{ static_url("notebook/js/contexthint.js") }}" charset="utf-8"></script>
346 <script src="{{ static_url("notebook/js/contexthint.js") }}" charset="utf-8"></script>
344
347
345 <script src="{{ static_url("notebook/js/celltoolbarpresets/default.js") }}" type="text/javascript" charset="utf-8"></script>
348 <script src="{{ static_url("notebook/js/celltoolbarpresets/default.js") }}" type="text/javascript" charset="utf-8"></script>
346 <script src="{{ static_url("notebook/js/celltoolbarpresets/rawcell.js") }}" type="text/javascript" charset="utf-8"></script>
349 <script src="{{ static_url("notebook/js/celltoolbarpresets/rawcell.js") }}" type="text/javascript" charset="utf-8"></script>
347 <script src="{{ static_url("notebook/js/celltoolbarpresets/slideshow.js") }}" type="text/javascript" charset="utf-8"></script>
350 <script src="{{ static_url("notebook/js/celltoolbarpresets/slideshow.js") }}" type="text/javascript" charset="utf-8"></script>
348
351
349 {% endblock %}
352 {% endblock %}
General Comments 0
You need to be logged in to leave comments. Login now