Switch to bower dependencies
Checks in only the files we actually need from bower_components.
This commit is contained in:
parent
9c568ed0b8
commit
c8ad65efe0
17 changed files with 19599 additions and 8539 deletions
|
@ -26,6 +26,12 @@ Now, in the extension's options, you can register for TextSecure:
|
|||
|
||||
You should now be able to use the extension. If you need to reset your development environment, open a browser console within the extension options page (or inspect `background.html`) and execute `localStorage.clear()` to clear out the settings.
|
||||
|
||||
Dependencies
|
||||
============
|
||||
Dependencies are managed by [bower](bower.io). You'll need to install
|
||||
node, npm, and bower to change them. If you add a dependency, please
|
||||
only check in the package files that we actually need.
|
||||
|
||||
Tests
|
||||
=====
|
||||
Please write tests! Our testing framework is mocha and our assertion library is
|
||||
|
|
|
@ -16,14 +16,14 @@
|
|||
<html>
|
||||
<head>
|
||||
<script type="text/javascript" src="js-deps/nacl-common.js"></script>
|
||||
<script type="text/javascript" src="js-deps/jquery.js"></script>
|
||||
<script type="text/javascript" src="js-deps/CryptoJS.js"></script>
|
||||
<script type="text/javascript" src="js-deps/curve255.js"></script>
|
||||
<script type="text/javascript" src="js-deps/Long.min.js"></script>
|
||||
<script type="text/javascript" src="js-deps/ByteBuffer.min.js"></script>
|
||||
<script type="text/javascript" src="js-deps/ProtoBuf.min.js"></script>
|
||||
<script type="text/javascript" src="js-deps/underscore.js"></script>
|
||||
<script type="text/javascript" src="js-deps/backbone.js"></script>
|
||||
<script type="text/javascript" src="bower_components/jquery/dist/jquery.js"></script>
|
||||
<script type="text/javascript" src="bower_components/long/dist/Long.js"></script>
|
||||
<script type="text/javascript" src="bower_components/bytebuffer/dist/ByteBufferAB.js"></script>
|
||||
<script type="text/javascript" src="bower_components/protobuf/dist/ProtoBuf.js"></script>
|
||||
<script type="text/javascript" src="bower_components/underscore/underscore.js"></script>
|
||||
<script type="text/javascript" src="bower_components/backbone/backbone.js"></script>
|
||||
<script type="text/javascript" src="js-deps/backbone.localStorage.js"></script>
|
||||
<script type="text/javascript" src="js-deps/libphonenumber_api-compiled.js"></script>
|
||||
|
||||
|
|
14
bower.json
Normal file
14
bower.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"name": "textsecure-chrome",
|
||||
"version": "0.0.0",
|
||||
"homepage": "https://github.com/WhisperSystems/TextSecure-Browser",
|
||||
"license": "GPLV3",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"backbone": "~1.1.2",
|
||||
"underscore": "~1.7.0",
|
||||
"protobuf": "~3.8.0",
|
||||
"jquery": "~2.1.1",
|
||||
"bootstrap": "~3.3.0"
|
||||
}
|
||||
}
|
|
@ -36,7 +36,9 @@
|
|||
|
||||
// Create local references to array methods we'll want to use later.
|
||||
var array = [];
|
||||
var push = array.push;
|
||||
var slice = array.slice;
|
||||
var splice = array.splice;
|
||||
|
||||
// Current version of the library. Keep in sync with `package.json`.
|
||||
Backbone.VERSION = '1.1.2';
|
||||
|
@ -106,46 +108,27 @@
|
|||
// callbacks for the event. If `name` is null, removes all bound
|
||||
// callbacks for all events.
|
||||
off: function(name, callback, context) {
|
||||
var retain, ev, events, names, i, l, j, k;
|
||||
if (!this._events || !eventsApi(this, 'off', name, [callback, context])) return this;
|
||||
|
||||
// Remove all callbacks for all events.
|
||||
if (!name && !callback && !context) {
|
||||
this._events = void 0;
|
||||
return this;
|
||||
}
|
||||
|
||||
var names = name ? [name] : _.keys(this._events);
|
||||
for (var i = 0, length = names.length; i < length; i++) {
|
||||
names = name ? [name] : _.keys(this._events);
|
||||
for (i = 0, l = names.length; i < l; i++) {
|
||||
name = names[i];
|
||||
|
||||
// Bail out if there are no events stored.
|
||||
var events = this._events[name];
|
||||
if (!events) continue;
|
||||
|
||||
// Remove all callbacks for this event.
|
||||
if (!callback && !context) {
|
||||
delete this._events[name];
|
||||
continue;
|
||||
}
|
||||
|
||||
// Find any remaining events.
|
||||
var remaining = [];
|
||||
for (var j = 0, k = events.length; j < k; j++) {
|
||||
var event = events[j];
|
||||
if (
|
||||
callback && callback !== event.callback &&
|
||||
callback !== event.callback._callback ||
|
||||
context && context !== event.context
|
||||
) {
|
||||
remaining.push(event);
|
||||
if (events = this._events[name]) {
|
||||
this._events[name] = retain = [];
|
||||
if (callback || context) {
|
||||
for (j = 0, k = events.length; j < k; j++) {
|
||||
ev = events[j];
|
||||
if ((callback && callback !== ev.callback && callback !== ev.callback._callback) ||
|
||||
(context && context !== ev.context)) {
|
||||
retain.push(ev);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Replace events if there are any remaining. Otherwise, clean up.
|
||||
if (remaining.length) {
|
||||
this._events[name] = remaining;
|
||||
} else {
|
||||
delete this._events[name];
|
||||
if (!retain.length) delete this._events[name];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -205,7 +188,7 @@
|
|||
// Handle space separated event names.
|
||||
if (eventSplitter.test(name)) {
|
||||
var names = name.split(eventSplitter);
|
||||
for (var i = 0, length = names.length; i < length; i++) {
|
||||
for (var i = 0, l = names.length; i < l; i++) {
|
||||
obj[action].apply(obj, [names[i]].concat(rest));
|
||||
}
|
||||
return false;
|
||||
|
@ -370,7 +353,7 @@
|
|||
// Trigger all relevant attribute changes.
|
||||
if (!silent) {
|
||||
if (changes.length) this._pending = options;
|
||||
for (var i = 0, length = changes.length; i < length; i++) {
|
||||
for (var i = 0, l = changes.length; i < l; i++) {
|
||||
this.trigger('change:' + changes[i], this, current[changes[i]], options);
|
||||
}
|
||||
}
|
||||
|
@ -595,7 +578,6 @@
|
|||
|
||||
// Mix in each Underscore method as a proxy to `Model#attributes`.
|
||||
_.each(modelMethods, function(method) {
|
||||
if (!_[method]) return;
|
||||
Model.prototype[method] = function() {
|
||||
var args = slice.call(arguments);
|
||||
args.unshift(this.attributes);
|
||||
|
@ -607,7 +589,7 @@
|
|||
// -------------------
|
||||
|
||||
// If models tend to represent a single row of data, a Backbone Collection is
|
||||
// more analogous to a table full of data ... or a small slice or page of that
|
||||
// more analagous to a table full of data ... or a small slice or page of that
|
||||
// table, or a collection of rows that belong together for a particular reason
|
||||
// -- all of the messages in this particular folder, all of the documents
|
||||
// belonging to this particular author, and so on. Collections maintain
|
||||
|
@ -661,12 +643,13 @@
|
|||
var singular = !_.isArray(models);
|
||||
models = singular ? [models] : _.clone(models);
|
||||
options || (options = {});
|
||||
for (var i = 0, length = models.length; i < length; i++) {
|
||||
var model = models[i] = this.get(models[i]);
|
||||
var i, l, index, model;
|
||||
for (i = 0, l = models.length; i < l; i++) {
|
||||
model = models[i] = this.get(models[i]);
|
||||
if (!model) continue;
|
||||
delete this._byId[model.id];
|
||||
delete this._byId[model.cid];
|
||||
var index = this.indexOf(model);
|
||||
index = this.indexOf(model);
|
||||
this.models.splice(index, 1);
|
||||
this.length--;
|
||||
if (!options.silent) {
|
||||
|
@ -686,9 +669,10 @@
|
|||
options = _.defaults({}, options, setOptions);
|
||||
if (options.parse) models = this.parse(models, options);
|
||||
var singular = !_.isArray(models);
|
||||
models = singular ? (models ? [models] : []) : models.slice();
|
||||
var id, model, attrs, existing, sort;
|
||||
models = singular ? (models ? [models] : []) : _.clone(models);
|
||||
var i, l, id, model, attrs, existing, sort;
|
||||
var at = options.at;
|
||||
var targetModel = this.model;
|
||||
var sortable = this.comparator && (at == null) && options.sort !== false;
|
||||
var sortAttr = _.isString(this.comparator) ? this.comparator : null;
|
||||
var toAdd = [], toRemove = [], modelMap = {};
|
||||
|
@ -697,12 +681,12 @@
|
|||
|
||||
// Turn bare objects into model references, and prevent invalid models
|
||||
// from being added.
|
||||
for (var i = 0, length = models.length; i < length; i++) {
|
||||
for (i = 0, l = models.length; i < l; i++) {
|
||||
attrs = models[i] || {};
|
||||
if (this._isModel(attrs)) {
|
||||
if (attrs instanceof Model) {
|
||||
id = model = attrs;
|
||||
} else {
|
||||
id = attrs[this.model.prototype.idAttribute || 'id'];
|
||||
id = attrs[targetModel.prototype.idAttribute || 'id'];
|
||||
}
|
||||
|
||||
// If a duplicate is found, prevent it from being added and
|
||||
|
@ -727,14 +711,13 @@
|
|||
|
||||
// Do not add multiple models with the same `id`.
|
||||
model = existing || model;
|
||||
if (!model) continue;
|
||||
if (order && (model.isNew() || !modelMap[model.id])) order.push(model);
|
||||
modelMap[model.id] = true;
|
||||
}
|
||||
|
||||
// Remove nonexistent models if appropriate.
|
||||
if (remove) {
|
||||
for (var i = 0, length = this.length; i < length; i++) {
|
||||
for (i = 0, l = this.length; i < l; ++i) {
|
||||
if (!modelMap[(model = this.models[i]).cid]) toRemove.push(model);
|
||||
}
|
||||
if (toRemove.length) this.remove(toRemove, options);
|
||||
|
@ -745,13 +728,13 @@
|
|||
if (sortable) sort = true;
|
||||
this.length += toAdd.length;
|
||||
if (at != null) {
|
||||
for (var i = 0, length = toAdd.length; i < length; i++) {
|
||||
for (i = 0, l = toAdd.length; i < l; i++) {
|
||||
this.models.splice(at + i, 0, toAdd[i]);
|
||||
}
|
||||
} else {
|
||||
if (order) this.models.length = 0;
|
||||
var orderedModels = order || toAdd;
|
||||
for (var i = 0, length = orderedModels.length; i < length; i++) {
|
||||
for (i = 0, l = orderedModels.length; i < l; i++) {
|
||||
this.models.push(orderedModels[i]);
|
||||
}
|
||||
}
|
||||
|
@ -762,7 +745,7 @@
|
|||
|
||||
// Unless silenced, it's time to fire all appropriate add/sort events.
|
||||
if (!options.silent) {
|
||||
for (var i = 0, length = toAdd.length; i < length; i++) {
|
||||
for (i = 0, l = toAdd.length; i < l; i++) {
|
||||
(model = toAdd[i]).trigger('add', model, this, options);
|
||||
}
|
||||
if (sort || (order && order.length)) this.trigger('sort', this, options);
|
||||
|
@ -778,7 +761,7 @@
|
|||
// Useful for bulk operations and optimizations.
|
||||
reset: function(models, options) {
|
||||
options || (options = {});
|
||||
for (var i = 0, length = this.models.length; i < length; i++) {
|
||||
for (var i = 0, l = this.models.length; i < l; i++) {
|
||||
this._removeReference(this.models[i], options);
|
||||
}
|
||||
options.previousModels = this.models;
|
||||
|
@ -912,10 +895,7 @@
|
|||
|
||||
// Create a new collection with an identical list of models as this one.
|
||||
clone: function() {
|
||||
return new this.constructor(this.models, {
|
||||
model: this.model,
|
||||
comparator: this.comparator
|
||||
});
|
||||
return new this.constructor(this.models);
|
||||
},
|
||||
|
||||
// Private method to reset all internal state. Called when the collection
|
||||
|
@ -929,10 +909,7 @@
|
|||
// Prepare a hash of attributes (or other model) to be added to this
|
||||
// collection.
|
||||
_prepareModel: function(attrs, options) {
|
||||
if (this._isModel(attrs)) {
|
||||
if (!attrs.collection) attrs.collection = this;
|
||||
return attrs;
|
||||
}
|
||||
if (attrs instanceof Model) return attrs;
|
||||
options = options ? _.clone(options) : {};
|
||||
options.collection = this;
|
||||
var model = new this.model(attrs, options);
|
||||
|
@ -941,16 +918,11 @@
|
|||
return false;
|
||||
},
|
||||
|
||||
// Method for checking whether an object should be considered a model for
|
||||
// the purposes of adding to the collection.
|
||||
_isModel: function (model) {
|
||||
return model instanceof Model;
|
||||
},
|
||||
|
||||
// Internal method to create a model's ties to a collection.
|
||||
_addReference: function(model, options) {
|
||||
this._byId[model.cid] = model;
|
||||
if (model.id != null) this._byId[model.id] = model;
|
||||
if (!model.collection) model.collection = this;
|
||||
model.on('all', this._onModelEvent, this);
|
||||
},
|
||||
|
||||
|
@ -984,11 +956,10 @@
|
|||
'reject', 'every', 'all', 'some', 'any', 'include', 'contains', 'invoke',
|
||||
'max', 'min', 'toArray', 'size', 'first', 'head', 'take', 'initial', 'rest',
|
||||
'tail', 'drop', 'last', 'without', 'difference', 'indexOf', 'shuffle',
|
||||
'lastIndexOf', 'isEmpty', 'chain', 'sample', 'partition'];
|
||||
'lastIndexOf', 'isEmpty', 'chain', 'sample'];
|
||||
|
||||
// Mix in each Underscore method as a proxy to `Collection#models`.
|
||||
_.each(methods, function(method) {
|
||||
if (!_[method]) return;
|
||||
Collection.prototype[method] = function() {
|
||||
var args = slice.call(arguments);
|
||||
args.unshift(this.models);
|
||||
|
@ -1001,7 +972,6 @@
|
|||
|
||||
// Use attributes instead of properties.
|
||||
_.each(attributeMethods, function(method) {
|
||||
if (!_[method]) return;
|
||||
Collection.prototype[method] = function(value, context) {
|
||||
var iterator = _.isFunction(value) ? value : function(model) {
|
||||
return model.get(value);
|
||||
|
@ -1029,6 +999,7 @@
|
|||
_.extend(this, _.pick(options, viewOptions));
|
||||
this._ensureElement();
|
||||
this.initialize.apply(this, arguments);
|
||||
this.delegateEvents();
|
||||
};
|
||||
|
||||
// Cached regex to split keys for `delegate`.
|
||||
|
@ -1063,35 +1034,19 @@
|
|||
// Remove this view by taking the element out of the DOM, and removing any
|
||||
// applicable Backbone.Events listeners.
|
||||
remove: function() {
|
||||
this._removeElement();
|
||||
this.$el.remove();
|
||||
this.stopListening();
|
||||
return this;
|
||||
},
|
||||
|
||||
// Remove this view's element from the document and all event listeners
|
||||
// attached to it. Exposed for subclasses using an alternative DOM
|
||||
// manipulation API.
|
||||
_removeElement: function() {
|
||||
this.$el.remove();
|
||||
},
|
||||
|
||||
// Change the view's element (`this.el` property) and re-delegate the
|
||||
// view's events on the new element.
|
||||
setElement: function(element) {
|
||||
this.undelegateEvents();
|
||||
this._setElement(element);
|
||||
this.delegateEvents();
|
||||
return this;
|
||||
},
|
||||
|
||||
// Creates the `this.el` and `this.$el` references for this view using the
|
||||
// given `el` and a hash of `attributes`. `el` can be a CSS selector or an
|
||||
// HTML string, a jQuery context or an element. Subclasses can override
|
||||
// this to utilize an alternative DOM manipulation API and are only required
|
||||
// to set the `this.el` property.
|
||||
_setElement: function(el) {
|
||||
this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);
|
||||
// Change the view's element (`this.el` property), including event
|
||||
// re-delegation.
|
||||
setElement: function(element, delegate) {
|
||||
if (this.$el) this.undelegateEvents();
|
||||
this.$el = element instanceof Backbone.$ ? element : Backbone.$(element);
|
||||
this.el = this.$el[0];
|
||||
if (delegate !== false) this.delegateEvents();
|
||||
return this;
|
||||
},
|
||||
|
||||
// Set callbacks, where `this.events` is a hash of
|
||||
|
@ -1107,6 +1062,8 @@
|
|||
// pairs. Callbacks will be bound to the view, with `this` set properly.
|
||||
// Uses event delegation for efficiency.
|
||||
// Omitting the selector binds the event to `this.el`.
|
||||
// This only works for delegate-able events: not `focus`, `blur`, and
|
||||
// not `change`, `submit`, and `reset` in Internet Explorer.
|
||||
delegateEvents: function(events) {
|
||||
if (!(events || (events = _.result(this, 'events')))) return this;
|
||||
this.undelegateEvents();
|
||||
|
@ -1114,39 +1071,28 @@
|
|||
var method = events[key];
|
||||
if (!_.isFunction(method)) method = this[events[key]];
|
||||
if (!method) continue;
|
||||
|
||||
var match = key.match(delegateEventSplitter);
|
||||
this.delegate(match[1], match[2], _.bind(method, this));
|
||||
var eventName = match[1], selector = match[2];
|
||||
method = _.bind(method, this);
|
||||
eventName += '.delegateEvents' + this.cid;
|
||||
if (selector === '') {
|
||||
this.$el.on(eventName, method);
|
||||
} else {
|
||||
this.$el.on(eventName, selector, method);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
// Add a single event listener to the view's element (or a child element
|
||||
// using `selector`). This only works for delegate-able events: not `focus`,
|
||||
// `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.
|
||||
delegate: function(eventName, selector, listener) {
|
||||
this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);
|
||||
},
|
||||
|
||||
// Clears all callbacks previously bound to the view by `delegateEvents`.
|
||||
// Clears all callbacks previously bound to the view with `delegateEvents`.
|
||||
// You usually don't need to use this, but may wish to if you have multiple
|
||||
// Backbone views attached to the same DOM element.
|
||||
undelegateEvents: function() {
|
||||
if (this.$el) this.$el.off('.delegateEvents' + this.cid);
|
||||
this.$el.off('.delegateEvents' + this.cid);
|
||||
return this;
|
||||
},
|
||||
|
||||
// A finer-grained `undelegateEvents` for removing a single delegated event.
|
||||
// `selector` and `listener` are both optional.
|
||||
undelegate: function(eventName, selector, listener) {
|
||||
this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);
|
||||
},
|
||||
|
||||
// Produces a DOM element to be assigned to your view. Exposed for
|
||||
// subclasses using an alternative DOM manipulation API.
|
||||
_createElement: function(tagName) {
|
||||
return document.createElement(tagName);
|
||||
},
|
||||
|
||||
// Ensure that the View has a DOM element to render into.
|
||||
// If `this.el` is a string, pass it through `$()`, take the first
|
||||
// matching element, and re-assign it to `el`. Otherwise, create
|
||||
|
@ -1156,17 +1102,11 @@
|
|||
var attrs = _.extend({}, _.result(this, 'attributes'));
|
||||
if (this.id) attrs.id = _.result(this, 'id');
|
||||
if (this.className) attrs['class'] = _.result(this, 'className');
|
||||
this.setElement(this._createElement(_.result(this, 'tagName')));
|
||||
this._setAttributes(attrs);
|
||||
var $el = Backbone.$('<' + _.result(this, 'tagName') + '>').attr(attrs);
|
||||
this.setElement($el, false);
|
||||
} else {
|
||||
this.setElement(_.result(this, 'el'));
|
||||
this.setElement(_.result(this, 'el'), false);
|
||||
}
|
||||
},
|
||||
|
||||
// Set attributes from a hash on this view's element. Exposed for
|
||||
// subclasses using an alternative DOM manipulation API.
|
||||
_setAttributes: function(attributes) {
|
||||
this.$el.attr(attributes);
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -1244,14 +1184,6 @@
|
|||
};
|
||||
}
|
||||
|
||||
// Pass along `textStatus` and `errorThrown` from jQuery.
|
||||
var error = options.error;
|
||||
options.error = function(xhr, textStatus, errorThrown) {
|
||||
options.textStatus = textStatus;
|
||||
options.errorThrown = errorThrown;
|
||||
if (error) error.apply(this, arguments);
|
||||
};
|
||||
|
||||
// Make the request, allowing the user to override any Ajax options.
|
||||
var xhr = options.xhr = Backbone.ajax(_.extend(params, options));
|
||||
model.trigger('request', model, xhr, options);
|
||||
|
@ -1319,18 +1251,17 @@
|
|||
var router = this;
|
||||
Backbone.history.route(route, function(fragment) {
|
||||
var args = router._extractParameters(route, fragment);
|
||||
if (router.execute(callback, args, name) !== false) {
|
||||
router.trigger.apply(router, ['route:' + name].concat(args));
|
||||
router.trigger('route', name, args);
|
||||
Backbone.history.trigger('route', router, name, args);
|
||||
}
|
||||
router.execute(callback, args);
|
||||
router.trigger.apply(router, ['route:' + name].concat(args));
|
||||
router.trigger('route', name, args);
|
||||
Backbone.history.trigger('route', router, name, args);
|
||||
});
|
||||
return this;
|
||||
},
|
||||
|
||||
// Execute a route handler with the provided parameters. This is an
|
||||
// excellent place to do pre-route setup or post-route cleanup.
|
||||
execute: function(callback, args, name) {
|
||||
execute: function(callback, args) {
|
||||
if (callback) callback.apply(this, args);
|
||||
},
|
||||
|
||||
|
@ -1403,6 +1334,12 @@
|
|||
// Cached regex for stripping leading and trailing slashes.
|
||||
var rootStripper = /^\/+|\/+$/g;
|
||||
|
||||
// Cached regex for detecting MSIE.
|
||||
var isExplorer = /msie [\w.]+/;
|
||||
|
||||
// Cached regex for removing a trailing slash.
|
||||
var trailingSlash = /\/$/;
|
||||
|
||||
// Cached regex for stripping urls of hash.
|
||||
var pathStripper = /#.*$/;
|
||||
|
||||
|
@ -1418,8 +1355,7 @@
|
|||
|
||||
// Are we at the app root?
|
||||
atRoot: function() {
|
||||
var path = this.location.pathname.replace(/[^\/]$/, '$&/');
|
||||
return path === this.root && !this.location.search;
|
||||
return this.location.pathname.replace(/[^\/]$/, '$&/') === this.root;
|
||||
},
|
||||
|
||||
// Gets the true hash value. Cannot use location.hash directly due to bug
|
||||
|
@ -1429,19 +1365,14 @@
|
|||
return match ? match[1] : '';
|
||||
},
|
||||
|
||||
// Get the pathname and search params, without the root.
|
||||
getPath: function() {
|
||||
var path = decodeURI(this.location.pathname + this.location.search);
|
||||
var root = this.root.slice(0, -1);
|
||||
if (!path.indexOf(root)) path = path.slice(root.length);
|
||||
return path.slice(1);
|
||||
},
|
||||
|
||||
// Get the cross-browser normalized URL fragment from the path or hash.
|
||||
getFragment: function(fragment) {
|
||||
// Get the cross-browser normalized URL fragment, either from the URL,
|
||||
// the hash, or the override.
|
||||
getFragment: function(fragment, forcePushState) {
|
||||
if (fragment == null) {
|
||||
if (this._hasPushState || !this._wantsHashChange) {
|
||||
fragment = this.getPath();
|
||||
if (this._hasPushState || !this._wantsHashChange || forcePushState) {
|
||||
fragment = decodeURI(this.location.pathname + this.location.search);
|
||||
var root = this.root.replace(trailingSlash, '');
|
||||
if (!fragment.indexOf(root)) fragment = fragment.slice(root.length);
|
||||
} else {
|
||||
fragment = this.getHash();
|
||||
}
|
||||
|
@ -1460,43 +1391,36 @@
|
|||
this.options = _.extend({root: '/'}, this.options, options);
|
||||
this.root = this.options.root;
|
||||
this._wantsHashChange = this.options.hashChange !== false;
|
||||
this._hasHashChange = 'onhashchange' in window;
|
||||
this._wantsPushState = !!this.options.pushState;
|
||||
this._hasPushState = !!(this.options.pushState && this.history && this.history.pushState);
|
||||
this.fragment = this.getFragment();
|
||||
|
||||
// Add a cross-platform `addEventListener` shim for older browsers.
|
||||
var addEventListener = window.addEventListener || function (eventName, listener) {
|
||||
return attachEvent('on' + eventName, listener);
|
||||
};
|
||||
var fragment = this.getFragment();
|
||||
var docMode = document.documentMode;
|
||||
var oldIE = (isExplorer.exec(navigator.userAgent.toLowerCase()) && (!docMode || docMode <= 7));
|
||||
|
||||
// Normalize root to always include a leading and trailing slash.
|
||||
this.root = ('/' + this.root + '/').replace(rootStripper, '/');
|
||||
|
||||
// Proxy an iframe to handle location events if the browser doesn't
|
||||
// support the `hashchange` event, HTML5 history, or the user wants
|
||||
// `hashChange` but not `pushState`.
|
||||
if (!this._hasHashChange && this._wantsHashChange && (!this._wantsPushState || !this._hasPushState)) {
|
||||
var iframe = document.createElement('iframe');
|
||||
iframe.src = 'javascript:0';
|
||||
iframe.style.display = 'none';
|
||||
iframe.tabIndex = -1;
|
||||
var body = document.body;
|
||||
// Using `appendChild` will throw on IE < 9 if the document is not ready.
|
||||
this.iframe = body.insertBefore(iframe, body.firstChild).contentWindow;
|
||||
this.navigate(this.fragment);
|
||||
if (oldIE && this._wantsHashChange) {
|
||||
var frame = Backbone.$('<iframe src="javascript:0" tabindex="-1">');
|
||||
this.iframe = frame.hide().appendTo('body')[0].contentWindow;
|
||||
this.navigate(fragment);
|
||||
}
|
||||
|
||||
// Depending on whether we're using pushState or hashes, and whether
|
||||
// 'onhashchange' is supported, determine how we check the URL state.
|
||||
if (this._hasPushState) {
|
||||
addEventListener('popstate', this.checkUrl, false);
|
||||
} else if (this._wantsHashChange && this._hasHashChange && !this.iframe) {
|
||||
addEventListener('hashchange', this.checkUrl, false);
|
||||
Backbone.$(window).on('popstate', this.checkUrl);
|
||||
} else if (this._wantsHashChange && ('onhashchange' in window) && !oldIE) {
|
||||
Backbone.$(window).on('hashchange', this.checkUrl);
|
||||
} else if (this._wantsHashChange) {
|
||||
this._checkUrlInterval = setInterval(this.checkUrl, this.interval);
|
||||
}
|
||||
|
||||
// Determine if we need to change the base url, for a pushState link
|
||||
// opened by a non-pushState browser.
|
||||
this.fragment = fragment;
|
||||
var loc = this.location;
|
||||
|
||||
// Transition from hashChange to pushState or vice versa if both are
|
||||
// requested.
|
||||
if (this._wantsHashChange && this._wantsPushState) {
|
||||
|
@ -1504,14 +1428,16 @@
|
|||
// If we've started off with a route from a `pushState`-enabled
|
||||
// browser, but we're currently in a browser that doesn't support it...
|
||||
if (!this._hasPushState && !this.atRoot()) {
|
||||
this.location.replace(this.root + '#' + this.getPath());
|
||||
this.fragment = this.getFragment(null, true);
|
||||
this.location.replace(this.root + '#' + this.fragment);
|
||||
// Return immediately as browser will do redirect to new url
|
||||
return true;
|
||||
|
||||
// Or if we've started out with a hash-based route, but we're currently
|
||||
// in a browser where it could be `pushState`-based instead...
|
||||
} else if (this._hasPushState && this.atRoot()) {
|
||||
this.navigate(this.getHash(), {replace: true});
|
||||
} else if (this._hasPushState && this.atRoot() && loc.hash) {
|
||||
this.fragment = this.getHash().replace(routeStripper, '');
|
||||
this.history.replaceState({}, document.title, this.root + this.fragment);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1522,25 +1448,7 @@
|
|||
// Disable Backbone.history, perhaps temporarily. Not useful in a real app,
|
||||
// but possibly useful for unit testing Routers.
|
||||
stop: function() {
|
||||
// Add a cross-platform `removeEventListener` shim for older browsers.
|
||||
var removeEventListener = window.removeEventListener || function (eventName, listener) {
|
||||
return detachEvent('on' + eventName, listener);
|
||||
};
|
||||
|
||||
// Remove window listeners.
|
||||
if (this._hasPushState) {
|
||||
removeEventListener('popstate', this.checkUrl, false);
|
||||
} else if (this._wantsHashChange && this._hasHashChange && !this.iframe) {
|
||||
removeEventListener('hashchange', this.checkUrl, false);
|
||||
}
|
||||
|
||||
// Clean up the iframe if necessary.
|
||||
if (this.iframe) {
|
||||
document.body.removeChild(this.iframe.frameElement);
|
||||
this.iframe = null;
|
||||
}
|
||||
|
||||
// Some environments will throw when clearing an undefined interval.
|
||||
Backbone.$(window).off('popstate', this.checkUrl).off('hashchange', this.checkUrl);
|
||||
if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);
|
||||
History.started = false;
|
||||
},
|
||||
|
@ -1556,7 +1464,7 @@
|
|||
checkUrl: function(e) {
|
||||
var current = this.getFragment();
|
||||
if (current === this.fragment && this.iframe) {
|
||||
current = this.getHash(this.iframe);
|
||||
current = this.getFragment(this.getHash(this.iframe));
|
||||
}
|
||||
if (current === this.fragment) return false;
|
||||
if (this.iframe) this.navigate(current);
|
||||
|
@ -1589,8 +1497,8 @@
|
|||
|
||||
var url = this.root + (fragment = this.getFragment(fragment || ''));
|
||||
|
||||
// Strip the hash and decode for matching.
|
||||
fragment = decodeURI(fragment.replace(pathStripper, ''));
|
||||
// Strip the hash for matching.
|
||||
fragment = fragment.replace(pathStripper, '');
|
||||
|
||||
if (this.fragment === fragment) return;
|
||||
this.fragment = fragment;
|
||||
|
@ -1606,7 +1514,7 @@
|
|||
// fragment to store history.
|
||||
} else if (this._wantsHashChange) {
|
||||
this._updateHash(this.location, fragment, options.replace);
|
||||
if (this.iframe && (fragment !== this.getHash(this.iframe))) {
|
||||
if (this.iframe && (fragment !== this.getFragment(this.getHash(this.iframe)))) {
|
||||
// Opening and closing the iframe tricks IE7 and earlier to push a
|
||||
// history entry on hash-tag change. When replace is true, we don't
|
||||
// want this.
|
|
@ -1,10 +1,10 @@
|
|||
/*!
|
||||
* Bootstrap v3.2.0 (http://getbootstrap.com)
|
||||
* Bootstrap v3.3.0 (http://getbootstrap.com)
|
||||
* Copyright 2011-2014 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
|
||||
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
|
||||
html {
|
||||
font-family: sans-serif;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
|
@ -22,6 +22,7 @@ footer,
|
|||
header,
|
||||
hgroup,
|
||||
main,
|
||||
menu,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
|
@ -43,7 +44,7 @@ template {
|
|||
display: none;
|
||||
}
|
||||
a {
|
||||
background: transparent;
|
||||
background-color: transparent;
|
||||
}
|
||||
a:active,
|
||||
a:hover {
|
||||
|
@ -187,8 +188,11 @@ td,
|
|||
th {
|
||||
padding: 0;
|
||||
}
|
||||
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
|
||||
@media print {
|
||||
* {
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
color: #000 !important;
|
||||
text-shadow: none !important;
|
||||
background: transparent !important;
|
||||
|
@ -205,8 +209,8 @@ th {
|
|||
abbr[title]:after {
|
||||
content: " (" attr(title) ")";
|
||||
}
|
||||
a[href^="javascript:"]:after,
|
||||
a[href^="#"]:after {
|
||||
a[href^="#"]:after,
|
||||
a[href^="javascript:"]:after {
|
||||
content: "";
|
||||
}
|
||||
pre,
|
||||
|
@ -241,10 +245,6 @@ th {
|
|||
.navbar {
|
||||
display: none;
|
||||
}
|
||||
.table td,
|
||||
.table th {
|
||||
background-color: #fff !important;
|
||||
}
|
||||
.btn > .caret,
|
||||
.dropup > .btn > .caret {
|
||||
border-top-color: #000 !important;
|
||||
|
@ -255,6 +255,10 @@ th {
|
|||
.table {
|
||||
border-collapse: collapse !important;
|
||||
}
|
||||
.table td,
|
||||
.table th {
|
||||
background-color: #fff !important;
|
||||
}
|
||||
.table-bordered th,
|
||||
.table-bordered td {
|
||||
border: 1px solid #ddd !important;
|
||||
|
@ -284,7 +288,8 @@ th {
|
|||
.glyphicon-plus:before {
|
||||
content: "\2b";
|
||||
}
|
||||
.glyphicon-euro:before {
|
||||
.glyphicon-euro:before,
|
||||
.glyphicon-eur:before {
|
||||
content: "\20ac";
|
||||
}
|
||||
.glyphicon-minus:before {
|
||||
|
@ -935,7 +940,6 @@ img {
|
|||
.carousel-inner > .item > img,
|
||||
.carousel-inner > .item > a > img {
|
||||
display: block;
|
||||
width: 100% \9;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
@ -944,7 +948,6 @@ img {
|
|||
}
|
||||
.img-thumbnail {
|
||||
display: inline-block;
|
||||
width: 100% \9;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
padding: 4px;
|
||||
|
@ -1117,9 +1120,6 @@ small,
|
|||
.small {
|
||||
font-size: 85%;
|
||||
}
|
||||
cite {
|
||||
font-style: normal;
|
||||
}
|
||||
mark,
|
||||
.mark {
|
||||
padding: .2em;
|
||||
|
@ -1328,10 +1328,6 @@ blockquote.pull-right small:after,
|
|||
blockquote.pull-right .small:after {
|
||||
content: '\00A0 \2014';
|
||||
}
|
||||
blockquote:before,
|
||||
blockquote:after {
|
||||
content: "";
|
||||
}
|
||||
address {
|
||||
margin-bottom: 20px;
|
||||
font-style: normal;
|
||||
|
@ -1362,6 +1358,7 @@ kbd {
|
|||
kbd kbd {
|
||||
padding: 0;
|
||||
font-size: 100%;
|
||||
font-weight: bold;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
@ -2060,6 +2057,12 @@ pre code {
|
|||
table {
|
||||
background-color: transparent;
|
||||
}
|
||||
caption {
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
color: #777;
|
||||
text-align: left;
|
||||
}
|
||||
th {
|
||||
text-align: left;
|
||||
}
|
||||
|
@ -2120,12 +2123,10 @@ th {
|
|||
.table-bordered > thead > tr > td {
|
||||
border-bottom-width: 2px;
|
||||
}
|
||||
.table-striped > tbody > tr:nth-child(odd) > td,
|
||||
.table-striped > tbody > tr:nth-child(odd) > th {
|
||||
.table-striped > tbody > tr:nth-child(odd) {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
.table-hover > tbody > tr:hover > td,
|
||||
.table-hover > tbody > tr:hover > th {
|
||||
.table-hover > tbody > tr:hover {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
table col[class*="col-"] {
|
||||
|
@ -2244,13 +2245,15 @@ table th[class*="col-"] {
|
|||
.table-hover > tbody > tr.danger:hover > th {
|
||||
background-color: #ebcccc;
|
||||
}
|
||||
.table-responsive {
|
||||
min-height: .01%;
|
||||
overflow-x: auto;
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.table-responsive {
|
||||
width: 100%;
|
||||
margin-bottom: 15px;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
-ms-overflow-style: -ms-autohiding-scrollbar;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
@ -2375,14 +2378,14 @@ output {
|
|||
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
|
||||
}
|
||||
.form-control::-moz-placeholder {
|
||||
color: #777;
|
||||
color: #999;
|
||||
opacity: 1;
|
||||
}
|
||||
.form-control:-ms-input-placeholder {
|
||||
color: #777;
|
||||
color: #999;
|
||||
}
|
||||
.form-control::-webkit-input-placeholder {
|
||||
color: #777;
|
||||
color: #999;
|
||||
}
|
||||
.form-control[disabled],
|
||||
.form-control[readonly],
|
||||
|
@ -2409,12 +2412,44 @@ input[type="time"].input-sm,
|
|||
input[type="datetime-local"].input-sm,
|
||||
input[type="month"].input-sm {
|
||||
line-height: 30px;
|
||||
line-height: 1.5 \0;
|
||||
}
|
||||
input[type="date"].input-lg,
|
||||
input[type="time"].input-lg,
|
||||
input[type="datetime-local"].input-lg,
|
||||
input[type="month"].input-lg {
|
||||
line-height: 46px;
|
||||
line-height: 1.33 \0;
|
||||
}
|
||||
_:-ms-fullscreen,
|
||||
:root input[type="date"],
|
||||
_:-ms-fullscreen,
|
||||
:root input[type="time"],
|
||||
_:-ms-fullscreen,
|
||||
:root input[type="datetime-local"],
|
||||
_:-ms-fullscreen,
|
||||
:root input[type="month"] {
|
||||
line-height: 1.42857143;
|
||||
}
|
||||
_:-ms-fullscreen.input-sm,
|
||||
:root input[type="date"].input-sm,
|
||||
_:-ms-fullscreen.input-sm,
|
||||
:root input[type="time"].input-sm,
|
||||
_:-ms-fullscreen.input-sm,
|
||||
:root input[type="datetime-local"].input-sm,
|
||||
_:-ms-fullscreen.input-sm,
|
||||
:root input[type="month"].input-sm {
|
||||
line-height: 1.5;
|
||||
}
|
||||
_:-ms-fullscreen.input-lg,
|
||||
:root input[type="date"].input-lg,
|
||||
_:-ms-fullscreen.input-lg,
|
||||
:root input[type="time"].input-lg,
|
||||
_:-ms-fullscreen.input-lg,
|
||||
:root input[type="datetime-local"].input-lg,
|
||||
_:-ms-fullscreen.input-lg,
|
||||
:root input[type="month"].input-lg {
|
||||
line-height: 1.33;
|
||||
}
|
||||
.form-group {
|
||||
margin-bottom: 15px;
|
||||
|
@ -2423,12 +2458,12 @@ input[type="month"].input-lg {
|
|||
.checkbox {
|
||||
position: relative;
|
||||
display: block;
|
||||
min-height: 20px;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.radio label,
|
||||
.checkbox label {
|
||||
min-height: 20px;
|
||||
padding-left: 20px;
|
||||
margin-bottom: 0;
|
||||
font-weight: normal;
|
||||
|
@ -2491,35 +2526,41 @@ fieldset[disabled] .checkbox label {
|
|||
padding-left: 0;
|
||||
}
|
||||
.input-sm,
|
||||
.form-horizontal .form-group-sm .form-control {
|
||||
.form-group-sm .form-control {
|
||||
height: 30px;
|
||||
padding: 5px 10px;
|
||||
font-size: 12px;
|
||||
line-height: 1.5;
|
||||
border-radius: 3px;
|
||||
}
|
||||
select.input-sm {
|
||||
select.input-sm,
|
||||
select.form-group-sm .form-control {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
}
|
||||
textarea.input-sm,
|
||||
select[multiple].input-sm {
|
||||
textarea.form-group-sm .form-control,
|
||||
select[multiple].input-sm,
|
||||
select[multiple].form-group-sm .form-control {
|
||||
height: auto;
|
||||
}
|
||||
.input-lg,
|
||||
.form-horizontal .form-group-lg .form-control {
|
||||
.form-group-lg .form-control {
|
||||
height: 46px;
|
||||
padding: 10px 16px;
|
||||
font-size: 18px;
|
||||
line-height: 1.33;
|
||||
border-radius: 6px;
|
||||
}
|
||||
select.input-lg {
|
||||
select.input-lg,
|
||||
select.form-group-lg .form-control {
|
||||
height: 46px;
|
||||
line-height: 46px;
|
||||
}
|
||||
textarea.input-lg,
|
||||
select[multiple].input-lg {
|
||||
textarea.form-group-lg .form-control,
|
||||
select[multiple].input-lg,
|
||||
select[multiple].form-group-lg .form-control {
|
||||
height: auto;
|
||||
}
|
||||
.has-feedback {
|
||||
|
@ -2530,7 +2571,7 @@ select[multiple].input-lg {
|
|||
}
|
||||
.form-control-feedback {
|
||||
position: absolute;
|
||||
top: 25px;
|
||||
top: 0;
|
||||
right: 0;
|
||||
z-index: 2;
|
||||
display: block;
|
||||
|
@ -2538,6 +2579,7 @@ select[multiple].input-lg {
|
|||
height: 34px;
|
||||
line-height: 34px;
|
||||
text-align: center;
|
||||
pointer-events: none;
|
||||
}
|
||||
.input-lg + .form-control-feedback {
|
||||
width: 46px;
|
||||
|
@ -2554,7 +2596,11 @@ select[multiple].input-lg {
|
|||
.has-success .radio,
|
||||
.has-success .checkbox,
|
||||
.has-success .radio-inline,
|
||||
.has-success .checkbox-inline {
|
||||
.has-success .checkbox-inline,
|
||||
.has-success.radio label,
|
||||
.has-success.checkbox label,
|
||||
.has-success.radio-inline label,
|
||||
.has-success.checkbox-inline label {
|
||||
color: #3c763d;
|
||||
}
|
||||
.has-success .form-control {
|
||||
|
@ -2580,7 +2626,11 @@ select[multiple].input-lg {
|
|||
.has-warning .radio,
|
||||
.has-warning .checkbox,
|
||||
.has-warning .radio-inline,
|
||||
.has-warning .checkbox-inline {
|
||||
.has-warning .checkbox-inline,
|
||||
.has-warning.radio label,
|
||||
.has-warning.checkbox label,
|
||||
.has-warning.radio-inline label,
|
||||
.has-warning.checkbox-inline label {
|
||||
color: #8a6d3b;
|
||||
}
|
||||
.has-warning .form-control {
|
||||
|
@ -2606,7 +2656,11 @@ select[multiple].input-lg {
|
|||
.has-error .radio,
|
||||
.has-error .checkbox,
|
||||
.has-error .radio-inline,
|
||||
.has-error .checkbox-inline {
|
||||
.has-error .checkbox-inline,
|
||||
.has-error.radio label,
|
||||
.has-error.checkbox label,
|
||||
.has-error.radio-inline label,
|
||||
.has-error.checkbox-inline label {
|
||||
color: #a94442;
|
||||
}
|
||||
.has-error .form-control {
|
||||
|
@ -2627,6 +2681,9 @@ select[multiple].input-lg {
|
|||
.has-error .form-control-feedback {
|
||||
color: #a94442;
|
||||
}
|
||||
.has-feedback label ~ .form-control-feedback {
|
||||
top: 25px;
|
||||
}
|
||||
.has-feedback label.sr-only ~ .form-control-feedback {
|
||||
top: 0;
|
||||
}
|
||||
|
@ -2647,6 +2704,9 @@ select[multiple].input-lg {
|
|||
width: auto;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.form-inline .form-control-static {
|
||||
display: inline-block;
|
||||
}
|
||||
.form-inline .input-group {
|
||||
display: inline-table;
|
||||
vertical-align: middle;
|
||||
|
@ -2707,7 +2767,6 @@ select[multiple].input-lg {
|
|||
}
|
||||
}
|
||||
.form-horizontal .has-feedback .form-control-feedback {
|
||||
top: 0;
|
||||
right: 15px;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
|
@ -2730,6 +2789,8 @@ select[multiple].input-lg {
|
|||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: middle;
|
||||
-ms-touch-action: manipulation;
|
||||
touch-action: manipulation;
|
||||
cursor: pointer;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
|
@ -2741,13 +2802,17 @@ select[multiple].input-lg {
|
|||
}
|
||||
.btn:focus,
|
||||
.btn:active:focus,
|
||||
.btn.active:focus {
|
||||
.btn.active:focus,
|
||||
.btn.focus,
|
||||
.btn:active.focus,
|
||||
.btn.active.focus {
|
||||
outline: thin dotted;
|
||||
outline: 5px auto -webkit-focus-ring-color;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
.btn:hover,
|
||||
.btn:focus {
|
||||
.btn:focus,
|
||||
.btn.focus {
|
||||
color: #333;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
@ -2775,6 +2840,7 @@ fieldset[disabled] .btn {
|
|||
}
|
||||
.btn-default:hover,
|
||||
.btn-default:focus,
|
||||
.btn-default.focus,
|
||||
.btn-default:active,
|
||||
.btn-default.active,
|
||||
.open > .dropdown-toggle.btn-default {
|
||||
|
@ -2796,6 +2862,9 @@ fieldset[disabled] .btn-default:hover,
|
|||
.btn-default.disabled:focus,
|
||||
.btn-default[disabled]:focus,
|
||||
fieldset[disabled] .btn-default:focus,
|
||||
.btn-default.disabled.focus,
|
||||
.btn-default[disabled].focus,
|
||||
fieldset[disabled] .btn-default.focus,
|
||||
.btn-default.disabled:active,
|
||||
.btn-default[disabled]:active,
|
||||
fieldset[disabled] .btn-default:active,
|
||||
|
@ -2816,6 +2885,7 @@ fieldset[disabled] .btn-default.active {
|
|||
}
|
||||
.btn-primary:hover,
|
||||
.btn-primary:focus,
|
||||
.btn-primary.focus,
|
||||
.btn-primary:active,
|
||||
.btn-primary.active,
|
||||
.open > .dropdown-toggle.btn-primary {
|
||||
|
@ -2837,6 +2907,9 @@ fieldset[disabled] .btn-primary:hover,
|
|||
.btn-primary.disabled:focus,
|
||||
.btn-primary[disabled]:focus,
|
||||
fieldset[disabled] .btn-primary:focus,
|
||||
.btn-primary.disabled.focus,
|
||||
.btn-primary[disabled].focus,
|
||||
fieldset[disabled] .btn-primary.focus,
|
||||
.btn-primary.disabled:active,
|
||||
.btn-primary[disabled]:active,
|
||||
fieldset[disabled] .btn-primary:active,
|
||||
|
@ -2857,6 +2930,7 @@ fieldset[disabled] .btn-primary.active {
|
|||
}
|
||||
.btn-success:hover,
|
||||
.btn-success:focus,
|
||||
.btn-success.focus,
|
||||
.btn-success:active,
|
||||
.btn-success.active,
|
||||
.open > .dropdown-toggle.btn-success {
|
||||
|
@ -2878,6 +2952,9 @@ fieldset[disabled] .btn-success:hover,
|
|||
.btn-success.disabled:focus,
|
||||
.btn-success[disabled]:focus,
|
||||
fieldset[disabled] .btn-success:focus,
|
||||
.btn-success.disabled.focus,
|
||||
.btn-success[disabled].focus,
|
||||
fieldset[disabled] .btn-success.focus,
|
||||
.btn-success.disabled:active,
|
||||
.btn-success[disabled]:active,
|
||||
fieldset[disabled] .btn-success:active,
|
||||
|
@ -2898,6 +2975,7 @@ fieldset[disabled] .btn-success.active {
|
|||
}
|
||||
.btn-info:hover,
|
||||
.btn-info:focus,
|
||||
.btn-info.focus,
|
||||
.btn-info:active,
|
||||
.btn-info.active,
|
||||
.open > .dropdown-toggle.btn-info {
|
||||
|
@ -2919,6 +2997,9 @@ fieldset[disabled] .btn-info:hover,
|
|||
.btn-info.disabled:focus,
|
||||
.btn-info[disabled]:focus,
|
||||
fieldset[disabled] .btn-info:focus,
|
||||
.btn-info.disabled.focus,
|
||||
.btn-info[disabled].focus,
|
||||
fieldset[disabled] .btn-info.focus,
|
||||
.btn-info.disabled:active,
|
||||
.btn-info[disabled]:active,
|
||||
fieldset[disabled] .btn-info:active,
|
||||
|
@ -2939,6 +3020,7 @@ fieldset[disabled] .btn-info.active {
|
|||
}
|
||||
.btn-warning:hover,
|
||||
.btn-warning:focus,
|
||||
.btn-warning.focus,
|
||||
.btn-warning:active,
|
||||
.btn-warning.active,
|
||||
.open > .dropdown-toggle.btn-warning {
|
||||
|
@ -2960,6 +3042,9 @@ fieldset[disabled] .btn-warning:hover,
|
|||
.btn-warning.disabled:focus,
|
||||
.btn-warning[disabled]:focus,
|
||||
fieldset[disabled] .btn-warning:focus,
|
||||
.btn-warning.disabled.focus,
|
||||
.btn-warning[disabled].focus,
|
||||
fieldset[disabled] .btn-warning.focus,
|
||||
.btn-warning.disabled:active,
|
||||
.btn-warning[disabled]:active,
|
||||
fieldset[disabled] .btn-warning:active,
|
||||
|
@ -2980,6 +3065,7 @@ fieldset[disabled] .btn-warning.active {
|
|||
}
|
||||
.btn-danger:hover,
|
||||
.btn-danger:focus,
|
||||
.btn-danger.focus,
|
||||
.btn-danger:active,
|
||||
.btn-danger.active,
|
||||
.open > .dropdown-toggle.btn-danger {
|
||||
|
@ -3001,6 +3087,9 @@ fieldset[disabled] .btn-danger:hover,
|
|||
.btn-danger.disabled:focus,
|
||||
.btn-danger[disabled]:focus,
|
||||
fieldset[disabled] .btn-danger:focus,
|
||||
.btn-danger.disabled.focus,
|
||||
.btn-danger[disabled].focus,
|
||||
fieldset[disabled] .btn-danger.focus,
|
||||
.btn-danger.disabled:active,
|
||||
.btn-danger[disabled]:active,
|
||||
fieldset[disabled] .btn-danger:active,
|
||||
|
@ -3017,11 +3106,11 @@ fieldset[disabled] .btn-danger.active {
|
|||
.btn-link {
|
||||
font-weight: normal;
|
||||
color: #428bca;
|
||||
cursor: pointer;
|
||||
border-radius: 0;
|
||||
}
|
||||
.btn-link,
|
||||
.btn-link:active,
|
||||
.btn-link.active,
|
||||
.btn-link[disabled],
|
||||
fieldset[disabled] .btn-link {
|
||||
background-color: transparent;
|
||||
|
@ -3091,9 +3180,11 @@ input[type="button"].btn-block {
|
|||
}
|
||||
.collapse {
|
||||
display: none;
|
||||
visibility: hidden;
|
||||
}
|
||||
.collapse.in {
|
||||
display: block;
|
||||
visibility: visible;
|
||||
}
|
||||
tr.collapse.in {
|
||||
display: table-row;
|
||||
|
@ -3105,9 +3196,15 @@ tbody.collapse.in {
|
|||
position: relative;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
-webkit-transition: height .35s ease;
|
||||
-o-transition: height .35s ease;
|
||||
transition: height .35s ease;
|
||||
-webkit-transition-timing-function: ease;
|
||||
-o-transition-timing-function: ease;
|
||||
transition-timing-function: ease;
|
||||
-webkit-transition-duration: .35s;
|
||||
-o-transition-duration: .35s;
|
||||
transition-duration: .35s;
|
||||
-webkit-transition-property: height, visibility;
|
||||
-o-transition-property: height, visibility;
|
||||
transition-property: height, visibility;
|
||||
}
|
||||
.caret {
|
||||
display: inline-block;
|
||||
|
@ -3413,12 +3510,13 @@ tbody.collapse.in {
|
|||
.btn-group-justified > .btn-group .dropdown-menu {
|
||||
left: auto;
|
||||
}
|
||||
[data-toggle="buttons"] > .btn > input[type="radio"],
|
||||
[data-toggle="buttons"] > .btn > input[type="checkbox"] {
|
||||
[data-toggle="buttons"] > .btn input[type="radio"],
|
||||
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
|
||||
[data-toggle="buttons"] > .btn input[type="checkbox"],
|
||||
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
filter: alpha(opacity=0);
|
||||
opacity: 0;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
pointer-events: none;
|
||||
}
|
||||
.input-group {
|
||||
position: relative;
|
||||
|
@ -3757,9 +3855,11 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
|
|||
}
|
||||
.tab-content > .tab-pane {
|
||||
display: none;
|
||||
visibility: hidden;
|
||||
}
|
||||
.tab-content > .active {
|
||||
display: block;
|
||||
visibility: visible;
|
||||
}
|
||||
.nav-tabs .dropdown-menu {
|
||||
margin-top: -1px;
|
||||
|
@ -3806,6 +3906,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
|
|||
height: auto !important;
|
||||
padding-bottom: 0;
|
||||
overflow: visible !important;
|
||||
visibility: visible !important;
|
||||
}
|
||||
.navbar-collapse.in {
|
||||
overflow-y: visible;
|
||||
|
@ -3821,7 +3922,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
|
|||
.navbar-fixed-bottom .navbar-collapse {
|
||||
max-height: 340px;
|
||||
}
|
||||
@media (max-width: 480px) and (orientation: landscape) {
|
||||
@media (max-device-width: 480px) and (orientation: landscape) {
|
||||
.navbar-fixed-top .navbar-collapse,
|
||||
.navbar-fixed-bottom .navbar-collapse {
|
||||
max-height: 200px;
|
||||
|
@ -3858,9 +3959,6 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
|
|||
right: 0;
|
||||
left: 0;
|
||||
z-index: 1030;
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.navbar-fixed-top,
|
||||
|
@ -3888,6 +3986,9 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
|
|||
.navbar-brand:focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
.navbar-brand > img {
|
||||
display: block;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.navbar > .container .navbar-brand,
|
||||
.navbar > .container-fluid .navbar-brand {
|
||||
|
@ -3966,17 +4067,6 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
|
|||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
.navbar-nav.navbar-right:last-child {
|
||||
margin-right: -15px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.navbar-left {
|
||||
float: left !important;
|
||||
}
|
||||
.navbar-right {
|
||||
float: right !important;
|
||||
}
|
||||
}
|
||||
.navbar-form {
|
||||
padding: 10px 15px;
|
||||
|
@ -4000,6 +4090,9 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
|
|||
width: auto;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.navbar-form .form-control-static {
|
||||
display: inline-block;
|
||||
}
|
||||
.navbar-form .input-group {
|
||||
display: inline-table;
|
||||
vertical-align: middle;
|
||||
|
@ -4040,6 +4133,9 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
|
|||
.navbar-form .form-group {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.navbar-form .form-group:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.navbar-form {
|
||||
|
@ -4052,9 +4148,6 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
|
|||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
.navbar-form.navbar-right:last-child {
|
||||
margin-right: -15px;
|
||||
}
|
||||
}
|
||||
.navbar-nav > li > .dropdown-menu {
|
||||
margin-top: 0;
|
||||
|
@ -4087,7 +4180,16 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
|
|||
margin-right: 15px;
|
||||
margin-left: 15px;
|
||||
}
|
||||
.navbar-text.navbar-right:last-child {
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.navbar-left {
|
||||
float: left !important;
|
||||
}
|
||||
.navbar-right {
|
||||
float: right !important;
|
||||
margin-right: -15px;
|
||||
}
|
||||
.navbar-right ~ .navbar-right {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
@ -4192,7 +4294,7 @@ fieldset[disabled] .navbar-default .btn-link:focus {
|
|||
border-color: #080808;
|
||||
}
|
||||
.navbar-inverse .navbar-brand {
|
||||
color: #777;
|
||||
color: #9d9d9d;
|
||||
}
|
||||
.navbar-inverse .navbar-brand:hover,
|
||||
.navbar-inverse .navbar-brand:focus {
|
||||
|
@ -4200,10 +4302,10 @@ fieldset[disabled] .navbar-default .btn-link:focus {
|
|||
background-color: transparent;
|
||||
}
|
||||
.navbar-inverse .navbar-text {
|
||||
color: #777;
|
||||
color: #9d9d9d;
|
||||
}
|
||||
.navbar-inverse .navbar-nav > li > a {
|
||||
color: #777;
|
||||
color: #9d9d9d;
|
||||
}
|
||||
.navbar-inverse .navbar-nav > li > a:hover,
|
||||
.navbar-inverse .navbar-nav > li > a:focus {
|
||||
|
@ -4250,7 +4352,7 @@ fieldset[disabled] .navbar-default .btn-link:focus {
|
|||
background-color: #080808;
|
||||
}
|
||||
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
|
||||
color: #777;
|
||||
color: #9d9d9d;
|
||||
}
|
||||
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
|
||||
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
|
||||
|
@ -4271,13 +4373,13 @@ fieldset[disabled] .navbar-default .btn-link:focus {
|
|||
}
|
||||
}
|
||||
.navbar-inverse .navbar-link {
|
||||
color: #777;
|
||||
color: #9d9d9d;
|
||||
}
|
||||
.navbar-inverse .navbar-link:hover {
|
||||
color: #fff;
|
||||
}
|
||||
.navbar-inverse .btn-link {
|
||||
color: #777;
|
||||
color: #9d9d9d;
|
||||
}
|
||||
.navbar-inverse .btn-link:hover,
|
||||
.navbar-inverse .btn-link:focus {
|
||||
|
@ -4545,7 +4647,7 @@ a.list-group-item.active > .badge,
|
|||
margin-left: 3px;
|
||||
}
|
||||
.jumbotron {
|
||||
padding: 30px;
|
||||
padding: 30px 15px;
|
||||
margin-bottom: 30px;
|
||||
color: inherit;
|
||||
background-color: #eee;
|
||||
|
@ -4562,7 +4664,8 @@ a.list-group-item.active > .badge,
|
|||
.jumbotron > hr {
|
||||
border-top-color: #d5d5d5;
|
||||
}
|
||||
.container .jumbotron {
|
||||
.container .jumbotron,
|
||||
.container-fluid .jumbotron {
|
||||
border-radius: 6px;
|
||||
}
|
||||
.jumbotron .container {
|
||||
|
@ -4570,8 +4673,7 @@ a.list-group-item.active > .badge,
|
|||
}
|
||||
@media screen and (min-width: 768px) {
|
||||
.jumbotron {
|
||||
padding-top: 48px;
|
||||
padding-bottom: 48px;
|
||||
padding: 48px 0;
|
||||
}
|
||||
.container .jumbotron {
|
||||
padding-right: 60px;
|
||||
|
@ -4590,9 +4692,9 @@ a.list-group-item.active > .badge,
|
|||
background-color: #fff;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 4px;
|
||||
-webkit-transition: all .2s ease-in-out;
|
||||
-o-transition: all .2s ease-in-out;
|
||||
transition: all .2s ease-in-out;
|
||||
-webkit-transition: border .2s ease-in-out;
|
||||
-o-transition: border .2s ease-in-out;
|
||||
transition: border .2s ease-in-out;
|
||||
}
|
||||
.thumbnail > img,
|
||||
.thumbnail a > img {
|
||||
|
@ -4745,18 +4847,6 @@ a.thumbnail.active {
|
|||
-o-animation: progress-bar-stripes 2s linear infinite;
|
||||
animation: progress-bar-stripes 2s linear infinite;
|
||||
}
|
||||
.progress-bar[aria-valuenow="1"],
|
||||
.progress-bar[aria-valuenow="2"] {
|
||||
min-width: 30px;
|
||||
}
|
||||
.progress-bar[aria-valuenow="0"] {
|
||||
min-width: 30px;
|
||||
color: #777;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
.progress-bar-success {
|
||||
background-color: #5cb85c;
|
||||
}
|
||||
|
@ -4789,29 +4879,35 @@ a.thumbnail.active {
|
|||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
|
||||
}
|
||||
.media,
|
||||
.media-body {
|
||||
overflow: hidden;
|
||||
zoom: 1;
|
||||
}
|
||||
.media,
|
||||
.media .media {
|
||||
.media {
|
||||
margin-top: 15px;
|
||||
}
|
||||
.media:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
.media-object {
|
||||
display: block;
|
||||
.media-right,
|
||||
.media > .pull-right {
|
||||
padding-left: 10px;
|
||||
}
|
||||
.media-left,
|
||||
.media > .pull-left {
|
||||
padding-right: 10px;
|
||||
}
|
||||
.media-left,
|
||||
.media-right,
|
||||
.media-body {
|
||||
display: table-cell;
|
||||
vertical-align: top;
|
||||
}
|
||||
.media-middle {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.media-bottom {
|
||||
vertical-align: bottom;
|
||||
}
|
||||
.media-heading {
|
||||
margin: 0 0 5px;
|
||||
}
|
||||
.media > .pull-left {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.media > .pull-right {
|
||||
margin-left: 10px;
|
||||
margin-top: 0;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.media-list {
|
||||
padding-left: 0;
|
||||
|
@ -4860,6 +4956,7 @@ a.list-group-item:focus {
|
|||
.list-group-item.disabled:hover,
|
||||
.list-group-item.disabled:focus {
|
||||
color: #777;
|
||||
cursor: not-allowed;
|
||||
background-color: #eee;
|
||||
}
|
||||
.list-group-item.disabled .list-group-item-heading,
|
||||
|
@ -5028,19 +5125,23 @@ a.list-group-item-danger.active:focus {
|
|||
border-bottom-right-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
.panel > .list-group {
|
||||
.panel > .list-group,
|
||||
.panel > .panel-collapse > .list-group {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.panel > .list-group .list-group-item {
|
||||
.panel > .list-group .list-group-item,
|
||||
.panel > .panel-collapse > .list-group .list-group-item {
|
||||
border-width: 1px 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.panel > .list-group:first-child .list-group-item:first-child {
|
||||
.panel > .list-group:first-child .list-group-item:first-child,
|
||||
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
|
||||
border-top: 0;
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
.panel > .list-group:last-child .list-group-item:last-child {
|
||||
.panel > .list-group:last-child .list-group-item:last-child,
|
||||
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
|
||||
border-bottom: 0;
|
||||
border-bottom-right-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
|
@ -5056,11 +5157,24 @@ a.list-group-item-danger.active:focus {
|
|||
.panel > .panel-collapse > .table {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.panel > .table caption,
|
||||
.panel > .table-responsive > .table caption,
|
||||
.panel > .panel-collapse > .table caption {
|
||||
padding-right: 15px;
|
||||
padding-left: 15px;
|
||||
}
|
||||
.panel > .table:first-child,
|
||||
.panel > .table-responsive:first-child > .table:first-child {
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
.panel > .table:first-child > thead:first-child > tr:first-child,
|
||||
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
|
||||
.panel > .table:first-child > tbody:first-child > tr:first-child,
|
||||
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
|
||||
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
|
||||
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
|
||||
|
@ -5086,6 +5200,13 @@ a.list-group-item-danger.active:focus {
|
|||
border-bottom-right-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
.panel > .table:last-child > tbody:last-child > tr:last-child,
|
||||
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
|
||||
.panel > .table:last-child > tfoot:last-child > tr:last-child,
|
||||
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
|
||||
border-bottom-right-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
|
||||
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
|
||||
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
|
||||
|
@ -5107,7 +5228,9 @@ a.list-group-item-danger.active:focus {
|
|||
border-bottom-right-radius: 3px;
|
||||
}
|
||||
.panel > .panel-body + .table,
|
||||
.panel > .panel-body + .table-responsive {
|
||||
.panel > .panel-body + .table-responsive,
|
||||
.panel > .table + .panel-body,
|
||||
.panel > .table-responsive + .panel-body {
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
.panel > .table > tbody:first-child > tr:first-child th,
|
||||
|
@ -5183,7 +5306,8 @@ a.list-group-item-danger.active:focus {
|
|||
.panel-group .panel-heading {
|
||||
border-bottom: 0;
|
||||
}
|
||||
.panel-group .panel-heading + .panel-collapse > .panel-body {
|
||||
.panel-group .panel-heading + .panel-collapse > .panel-body,
|
||||
.panel-group .panel-heading + .panel-collapse > .list-group {
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
.panel-group .panel-footer {
|
||||
|
@ -5310,7 +5434,8 @@ a.list-group-item-danger.active:focus {
|
|||
.embed-responsive .embed-responsive-item,
|
||||
.embed-responsive iframe,
|
||||
.embed-responsive embed,
|
||||
.embed-responsive object {
|
||||
.embed-responsive object,
|
||||
.embed-responsive video {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
|
@ -5381,7 +5506,7 @@ button.close {
|
|||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 1050;
|
||||
z-index: 1040;
|
||||
display: none;
|
||||
overflow: hidden;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
|
@ -5391,14 +5516,16 @@ button.close {
|
|||
-webkit-transition: -webkit-transform .3s ease-out;
|
||||
-o-transition: -o-transform .3s ease-out;
|
||||
transition: transform .3s ease-out;
|
||||
-webkit-transform: translate3d(0, -25%, 0);
|
||||
-o-transform: translate3d(0, -25%, 0);
|
||||
transform: translate3d(0, -25%, 0);
|
||||
-webkit-transform: translate(0, -25%);
|
||||
-ms-transform: translate(0, -25%);
|
||||
-o-transform: translate(0, -25%);
|
||||
transform: translate(0, -25%);
|
||||
}
|
||||
.modal.in .modal-dialog {
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
-webkit-transform: translate(0, 0);
|
||||
-ms-transform: translate(0, 0);
|
||||
-o-transform: translate(0, 0);
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
.modal-open .modal {
|
||||
overflow-x: hidden;
|
||||
|
@ -5427,7 +5554,6 @@ button.close {
|
|||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 1040;
|
||||
background-color: #000;
|
||||
}
|
||||
.modal-backdrop.fade {
|
||||
|
@ -5600,6 +5726,9 @@ button.close {
|
|||
display: none;
|
||||
max-width: 276px;
|
||||
padding: 1px;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
line-height: 1.42857143;
|
||||
text-align: left;
|
||||
white-space: normal;
|
||||
background-color: #fff;
|
||||
|
@ -5627,8 +5756,6 @@ button.close {
|
|||
padding: 8px 14px;
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
line-height: 18px;
|
||||
background-color: #f7f7f7;
|
||||
border-bottom: 1px solid #ebebeb;
|
||||
border-radius: 5px 5px 0 0;
|
||||
|
@ -5731,6 +5858,37 @@ button.close {
|
|||
.carousel-inner > .item > a > img {
|
||||
line-height: 1;
|
||||
}
|
||||
@media all and (transform-3d), (-webkit-transform-3d) {
|
||||
.carousel-inner > .item {
|
||||
-webkit-transition: -webkit-transform .6s ease-in-out;
|
||||
-o-transition: -o-transform .6s ease-in-out;
|
||||
transition: transform .6s ease-in-out;
|
||||
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
-webkit-perspective: 1000;
|
||||
perspective: 1000;
|
||||
}
|
||||
.carousel-inner > .item.next,
|
||||
.carousel-inner > .item.active.right {
|
||||
left: 0;
|
||||
-webkit-transform: translate3d(100%, 0, 0);
|
||||
transform: translate3d(100%, 0, 0);
|
||||
}
|
||||
.carousel-inner > .item.prev,
|
||||
.carousel-inner > .item.active.left {
|
||||
left: 0;
|
||||
-webkit-transform: translate3d(-100%, 0, 0);
|
||||
transform: translate3d(-100%, 0, 0);
|
||||
}
|
||||
.carousel-inner > .item.next.left,
|
||||
.carousel-inner > .item.prev.right,
|
||||
.carousel-inner > .item.active {
|
||||
left: 0;
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
}
|
||||
.carousel-inner > .active,
|
||||
.carousel-inner > .next,
|
||||
.carousel-inner > .prev {
|
||||
|
@ -5986,9 +6144,6 @@ button.close {
|
|||
}
|
||||
.affix {
|
||||
position: fixed;
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
@-ms-viewport {
|
||||
width: device-width;
|
3276
bower_components/bytebuffer/dist/ByteBufferAB.js
vendored
Normal file
3276
bower_components/bytebuffer/dist/ByteBufferAB.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
9190
bower_components/jquery/dist/jquery.js
vendored
Normal file
9190
bower_components/jquery/dist/jquery.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
942
bower_components/long/dist/Long.js
vendored
Normal file
942
bower_components/long/dist/Long.js
vendored
Normal file
|
@ -0,0 +1,942 @@
|
|||
/*
|
||||
Copyright 2013 Daniel Wirtz <dcode@dcode.io>
|
||||
Copyright 2009 The Closure Library Authors. All Rights Reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS-IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @license Long.js (c) 2013 Daniel Wirtz <dcode@dcode.io>
|
||||
* Released under the Apache License, Version 2.0
|
||||
* see: https://github.com/dcodeIO/Long.js for details
|
||||
*/
|
||||
(function(global) {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.
|
||||
* See the from* functions below for more convenient ways of constructing Longs.
|
||||
* @exports Long
|
||||
* @class A Long class for representing a 64 bit two's-complement integer value.
|
||||
* @param {number} low The low (signed) 32 bits of the long
|
||||
* @param {number} high The high (signed) 32 bits of the long
|
||||
* @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed
|
||||
* @constructor
|
||||
*/
|
||||
var Long = function(low, high, unsigned) {
|
||||
|
||||
/**
|
||||
* The low 32 bits as a signed value.
|
||||
* @type {number}
|
||||
* @expose
|
||||
*/
|
||||
this.low = low|0;
|
||||
|
||||
/**
|
||||
* The high 32 bits as a signed value.
|
||||
* @type {number}
|
||||
* @expose
|
||||
*/
|
||||
this.high = high|0;
|
||||
|
||||
/**
|
||||
* Whether unsigned or not.
|
||||
* @type {boolean}
|
||||
* @expose
|
||||
*/
|
||||
this.unsigned = !!unsigned;
|
||||
};
|
||||
|
||||
// The internal representation of a long is the two given signed, 32-bit values.
|
||||
// We use 32-bit pieces because these are the size of integers on which
|
||||
// Javascript performs bit-operations. For operations like addition and
|
||||
// multiplication, we split each number into 16 bit pieces, which can easily be
|
||||
// multiplied within Javascript's floating-point representation without overflow
|
||||
// or change in sign.
|
||||
//
|
||||
// In the algorithms below, we frequently reduce the negative case to the
|
||||
// positive case by negating the input(s) and then post-processing the result.
|
||||
// Note that we must ALWAYS check specially whether those values are MIN_VALUE
|
||||
// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as
|
||||
// a positive number, it overflows back into a negative). Not handling this
|
||||
// case would often result in infinite recursion.
|
||||
//
|
||||
// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*
|
||||
// methods on which they depend.
|
||||
|
||||
/**
|
||||
* Tests if the specified object is a Long.
|
||||
* @param {*} obj Object
|
||||
* @returns {boolean}
|
||||
* @expose
|
||||
*/
|
||||
Long.isLong = function(obj) {
|
||||
return (obj && obj instanceof Long) === true;
|
||||
};
|
||||
|
||||
/**
|
||||
* A cache of the Long representations of small integer values.
|
||||
* @type {!Object}
|
||||
* @inner
|
||||
*/
|
||||
var INT_CACHE = {};
|
||||
|
||||
/**
|
||||
* A cache of the Long representations of small unsigned integer values.
|
||||
* @type {!Object}
|
||||
* @inner
|
||||
*/
|
||||
var UINT_CACHE = {};
|
||||
|
||||
/**
|
||||
* Returns a Long representing the given 32 bit integer value.
|
||||
* @param {number} value The 32 bit integer in question
|
||||
* @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed
|
||||
* @returns {!Long} The corresponding Long value
|
||||
* @expose
|
||||
*/
|
||||
Long.fromInt = function(value, unsigned) {
|
||||
var obj, cachedObj;
|
||||
if (!unsigned) {
|
||||
value = value | 0;
|
||||
if (-128 <= value && value < 128) {
|
||||
cachedObj = INT_CACHE[value];
|
||||
if (cachedObj)
|
||||
return cachedObj;
|
||||
}
|
||||
obj = new Long(value, value < 0 ? -1 : 0, false);
|
||||
if (-128 <= value && value < 128)
|
||||
INT_CACHE[value] = obj;
|
||||
return obj;
|
||||
} else {
|
||||
value = value >>> 0;
|
||||
if (0 <= value && value < 256) {
|
||||
cachedObj = UINT_CACHE[value];
|
||||
if (cachedObj)
|
||||
return cachedObj;
|
||||
}
|
||||
obj = new Long(value, (value | 0) < 0 ? -1 : 0, true);
|
||||
if (0 <= value && value < 256)
|
||||
UINT_CACHE[value] = obj;
|
||||
return obj;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.
|
||||
* @param {number} value The number in question
|
||||
* @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed
|
||||
* @returns {!Long} The corresponding Long value
|
||||
* @expose
|
||||
*/
|
||||
Long.fromNumber = function(value, unsigned) {
|
||||
unsigned = !!unsigned;
|
||||
if (isNaN(value) || !isFinite(value))
|
||||
return Long.ZERO;
|
||||
if (!unsigned && value <= -TWO_PWR_63_DBL)
|
||||
return Long.MIN_VALUE;
|
||||
if (!unsigned && value + 1 >= TWO_PWR_63_DBL)
|
||||
return Long.MAX_VALUE;
|
||||
if (unsigned && value >= TWO_PWR_64_DBL)
|
||||
return Long.MAX_UNSIGNED_VALUE;
|
||||
if (value < 0)
|
||||
return Long.fromNumber(-value, unsigned).negate();
|
||||
return new Long((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is
|
||||
* assumed to use 32 bits.
|
||||
* @param {number} lowBits The low 32 bits
|
||||
* @param {number} highBits The high 32 bits
|
||||
* @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed
|
||||
* @returns {!Long} The corresponding Long value
|
||||
* @expose
|
||||
*/
|
||||
Long.fromBits = function(lowBits, highBits, unsigned) {
|
||||
return new Long(lowBits, highBits, unsigned);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns a Long representation of the given string, written using the specified radix.
|
||||
* @param {string} str The textual representation of the Long
|
||||
* @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed
|
||||
* @param {number=} radix The radix in which the text is written (2-36), defaults to 10
|
||||
* @returns {!Long} The corresponding Long value
|
||||
* @expose
|
||||
*/
|
||||
Long.fromString = function(str, unsigned, radix) {
|
||||
if (str.length === 0)
|
||||
throw Error('number format error: empty string');
|
||||
if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity")
|
||||
return Long.ZERO;
|
||||
if (typeof unsigned === 'number') // For goog.math.long compatibility
|
||||
radix = unsigned,
|
||||
unsigned = false;
|
||||
radix = radix || 10;
|
||||
if (radix < 2 || 36 < radix)
|
||||
throw Error('radix out of range: ' + radix);
|
||||
|
||||
var p;
|
||||
if ((p = str.indexOf('-')) > 0)
|
||||
throw Error('number format error: interior "-" character: ' + str);
|
||||
else if (p === 0)
|
||||
return Long.fromString(str.substring(1), unsigned, radix).negate();
|
||||
|
||||
// Do several (8) digits each time through the loop, so as to
|
||||
// minimize the calls to the very expensive emulated div.
|
||||
var radixToPower = Long.fromNumber(Math.pow(radix, 8));
|
||||
|
||||
var result = Long.ZERO;
|
||||
for (var i = 0; i < str.length; i += 8) {
|
||||
var size = Math.min(8, str.length - i);
|
||||
var value = parseInt(str.substring(i, i + size), radix);
|
||||
if (size < 8) {
|
||||
var power = Long.fromNumber(Math.pow(radix, size));
|
||||
result = result.multiply(power).add(Long.fromNumber(value));
|
||||
} else {
|
||||
result = result.multiply(radixToPower);
|
||||
result = result.add(Long.fromNumber(value));
|
||||
}
|
||||
}
|
||||
result.unsigned = unsigned;
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* Converts the specified value to a Long.
|
||||
* @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value
|
||||
* @returns {!Long}
|
||||
* @expose
|
||||
*/
|
||||
Long.fromValue = function(val) {
|
||||
if (typeof val === 'number')
|
||||
return Long.fromNumber(val);
|
||||
if (typeof val === 'string')
|
||||
return Long.fromString(val);
|
||||
if (Long.isLong(val))
|
||||
return val;
|
||||
// Throws for not an object (undefined, null):
|
||||
return new Long(val.low, val.high, val.unsigned);
|
||||
};
|
||||
|
||||
// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be
|
||||
// no runtime penalty for these.
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
* @const
|
||||
* @inner
|
||||
*/
|
||||
var TWO_PWR_16_DBL = 1 << 16;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
* @const
|
||||
* @inner
|
||||
*/
|
||||
var TWO_PWR_24_DBL = 1 << 24;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
* @const
|
||||
* @inner
|
||||
*/
|
||||
var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
* @const
|
||||
* @inner
|
||||
*/
|
||||
var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
* @const
|
||||
* @inner
|
||||
*/
|
||||
var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;
|
||||
|
||||
/**
|
||||
* @type {!Long}
|
||||
* @const
|
||||
* @inner
|
||||
*/
|
||||
var TWO_PWR_24 = Long.fromInt(TWO_PWR_24_DBL);
|
||||
|
||||
/**
|
||||
* Signed zero.
|
||||
* @type {!Long}
|
||||
* @expose
|
||||
*/
|
||||
Long.ZERO = Long.fromInt(0);
|
||||
|
||||
/**
|
||||
* Unsigned zero.
|
||||
* @type {!Long}
|
||||
* @expose
|
||||
*/
|
||||
Long.UZERO = Long.fromInt(0, true);
|
||||
|
||||
/**
|
||||
* Signed one.
|
||||
* @type {!Long}
|
||||
* @expose
|
||||
*/
|
||||
Long.ONE = Long.fromInt(1);
|
||||
|
||||
/**
|
||||
* Unsigned one.
|
||||
* @type {!Long}
|
||||
* @expose
|
||||
*/
|
||||
Long.UONE = Long.fromInt(1, true);
|
||||
|
||||
/**
|
||||
* Signed negative one.
|
||||
* @type {!Long}
|
||||
* @expose
|
||||
*/
|
||||
Long.NEG_ONE = Long.fromInt(-1);
|
||||
|
||||
/**
|
||||
* Maximum signed value.
|
||||
* @type {!Long}
|
||||
* @expose
|
||||
*/
|
||||
Long.MAX_VALUE = Long.fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);
|
||||
|
||||
/**
|
||||
* Maximum unsigned value.
|
||||
* @type {!Long}
|
||||
* @expose
|
||||
*/
|
||||
Long.MAX_UNSIGNED_VALUE = Long.fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);
|
||||
|
||||
/**
|
||||
* Minimum signed value.
|
||||
* @type {!Long}
|
||||
* @expose
|
||||
*/
|
||||
Long.MIN_VALUE = Long.fromBits(0, 0x80000000|0, false);
|
||||
|
||||
/**
|
||||
* Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.
|
||||
* @returns {number}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.toInt = function() {
|
||||
return this.unsigned ? this.low >>> 0 : this.low;
|
||||
};
|
||||
|
||||
/**
|
||||
* Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).
|
||||
* @returns {number}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.toNumber = function() {
|
||||
if (this.unsigned) {
|
||||
return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);
|
||||
}
|
||||
return this.high * TWO_PWR_32_DBL + (this.low >>> 0);
|
||||
};
|
||||
|
||||
/**
|
||||
* Converts the Long to a string written in the specified radix.
|
||||
* @param {number=} radix Radix (2-36), defaults to 10
|
||||
* @returns {string}
|
||||
* @override
|
||||
* @throws {RangeError} If `radix` is out of range
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.toString = function(radix) {
|
||||
radix = radix || 10;
|
||||
if (radix < 2 || 36 < radix)
|
||||
throw RangeError('radix out of range: ' + radix);
|
||||
if (this.isZero())
|
||||
return '0';
|
||||
var rem;
|
||||
if (this.isNegative()) { // Unsigned Longs are never negative
|
||||
if (this.equals(Long.MIN_VALUE)) {
|
||||
// We need to change the Long value before it can be negated, so we remove
|
||||
// the bottom-most digit in this base and then recurse to do the rest.
|
||||
var radixLong = Long.fromNumber(radix);
|
||||
var div = this.div(radixLong);
|
||||
rem = div.multiply(radixLong).subtract(this);
|
||||
return div.toString(radix) + rem.toInt().toString(radix);
|
||||
} else
|
||||
return '-' + this.negate().toString(radix);
|
||||
}
|
||||
|
||||
// Do several (6) digits each time through the loop, so as to
|
||||
// minimize the calls to the very expensive emulated div.
|
||||
var radixToPower = Long.fromNumber(Math.pow(radix, 6), this.unsigned);
|
||||
rem = this;
|
||||
var result = '';
|
||||
while (true) {
|
||||
var remDiv = rem.div(radixToPower),
|
||||
intval = rem.subtract(remDiv.multiply(radixToPower)).toInt() >>> 0,
|
||||
digits = intval.toString(radix);
|
||||
rem = remDiv;
|
||||
if (rem.isZero())
|
||||
return digits + result;
|
||||
else {
|
||||
while (digits.length < 6)
|
||||
digits = '0' + digits;
|
||||
result = '' + digits + result;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets the high 32 bits as a signed integer.
|
||||
* @returns {number} Signed high bits
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.getHighBits = function() {
|
||||
return this.high;
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets the high 32 bits as an unsigned integer.
|
||||
* @returns {number} Unsigned high bits
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.getHighBitsUnsigned = function() {
|
||||
return this.high >>> 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets the low 32 bits as a signed integer.
|
||||
* @returns {number} Signed low bits
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.getLowBits = function() {
|
||||
return this.low;
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets the low 32 bits as an unsigned integer.
|
||||
* @returns {number} Unsigned low bits
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.getLowBitsUnsigned = function() {
|
||||
return this.low >>> 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets the number of bits needed to represent the absolute value of this Long.
|
||||
* @returns {number}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.getNumBitsAbs = function() {
|
||||
if (this.isNegative()) // Unsigned Longs are never negative
|
||||
return this.equals(Long.MIN_VALUE) ? 64 : this.negate().getNumBitsAbs();
|
||||
var val = this.high != 0 ? this.high : this.low;
|
||||
for (var bit = 31; bit > 0; bit--)
|
||||
if ((val & (1 << bit)) != 0)
|
||||
break;
|
||||
return this.high != 0 ? bit + 33 : bit + 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tests if this Long's value equals zero.
|
||||
* @returns {boolean}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.isZero = function() {
|
||||
return this.high === 0 && this.low === 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tests if this Long's value is negative.
|
||||
* @returns {boolean}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.isNegative = function() {
|
||||
return !this.unsigned && this.high < 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tests if this Long's value is positive.
|
||||
* @returns {boolean}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.isPositive = function() {
|
||||
return this.unsigned || this.high >= 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tests if this Long's value is odd.
|
||||
* @returns {boolean}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.isOdd = function() {
|
||||
return (this.low & 1) === 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tests if this Long's value is even.
|
||||
* @returns {boolean}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.isEven = function() {
|
||||
return (this.low & 1) === 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tests if this Long's value equals the specified's.
|
||||
* @param {!Long|number|string} other Other value
|
||||
* @returns {boolean}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.equals = function(other) {
|
||||
if (!Long.isLong(other))
|
||||
other = Long.fromValue(other);
|
||||
if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)
|
||||
return false;
|
||||
return this.high === other.high && this.low === other.low;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tests if this Long's value differs from the specified's.
|
||||
* @param {!Long|number|string} other Other value
|
||||
* @returns {boolean}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.notEquals = function(other) {
|
||||
if (!Long.isLong(other))
|
||||
other = Long.fromValue(other);
|
||||
return !this.equals(other);
|
||||
};
|
||||
|
||||
/**
|
||||
* Tests if this Long's value is less than the specified's.
|
||||
* @param {!Long|number|string} other Other value
|
||||
* @returns {boolean}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.lessThan = function(other) {
|
||||
if (!Long.isLong(other))
|
||||
other = Long.fromValue(other);
|
||||
return this.compare(other) < 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tests if this Long's value is less than or equal the specified's.
|
||||
* @param {!Long|number|string} other Other value
|
||||
* @returns {boolean}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.lessThanOrEqual = function(other) {
|
||||
if (!Long.isLong(other))
|
||||
other = Long.fromValue(other);
|
||||
return this.compare(other) <= 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tests if this Long's value is greater than the specified's.
|
||||
* @param {!Long|number|string} other Other value
|
||||
* @returns {boolean}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.greaterThan = function(other) {
|
||||
if (!Long.isLong(other))
|
||||
other = Long.fromValue(other);
|
||||
return this.compare(other) > 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tests if this Long's value is greater than or equal the specified's.
|
||||
* @param {!Long|number|string} other Other value
|
||||
* @returns {boolean}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.greaterThanOrEqual = function(other) {
|
||||
return this.compare(other) >= 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Compares this Long's value with the specified's.
|
||||
* @param {!Long|number|string} other Other value
|
||||
* @returns {number} 0 if they are the same, 1 if the this is greater and -1
|
||||
* if the given one is greater
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.compare = function(other) {
|
||||
if (this.equals(other))
|
||||
return 0;
|
||||
var thisNeg = this.isNegative(),
|
||||
otherNeg = other.isNegative();
|
||||
if (thisNeg && !otherNeg)
|
||||
return -1;
|
||||
if (!thisNeg && otherNeg)
|
||||
return 1;
|
||||
// At this point the sign bits are the same
|
||||
if (!this.unsigned)
|
||||
return this.subtract(other).isNegative() ? -1 : 1;
|
||||
// Both are positive if at least one is unsigned
|
||||
return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* Negates this Long's value.
|
||||
* @returns {!Long} Negated Long
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.negate = function() {
|
||||
if (!this.unsigned && this.equals(Long.MIN_VALUE))
|
||||
return Long.MIN_VALUE;
|
||||
return this.not().add(Long.ONE);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the sum of this and the specified Long.
|
||||
* @param {!Long|number|string} addend Addend
|
||||
* @returns {!Long} Sum
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.add = function(addend) {
|
||||
if (!Long.isLong(addend))
|
||||
addend = Long.fromValue(addend);
|
||||
|
||||
// Divide each number into 4 chunks of 16 bits, and then sum the chunks.
|
||||
|
||||
var a48 = this.high >>> 16;
|
||||
var a32 = this.high & 0xFFFF;
|
||||
var a16 = this.low >>> 16;
|
||||
var a00 = this.low & 0xFFFF;
|
||||
|
||||
var b48 = addend.high >>> 16;
|
||||
var b32 = addend.high & 0xFFFF;
|
||||
var b16 = addend.low >>> 16;
|
||||
var b00 = addend.low & 0xFFFF;
|
||||
|
||||
var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
|
||||
c00 += a00 + b00;
|
||||
c16 += c00 >>> 16;
|
||||
c00 &= 0xFFFF;
|
||||
c16 += a16 + b16;
|
||||
c32 += c16 >>> 16;
|
||||
c16 &= 0xFFFF;
|
||||
c32 += a32 + b32;
|
||||
c48 += c32 >>> 16;
|
||||
c32 &= 0xFFFF;
|
||||
c48 += a48 + b48;
|
||||
c48 &= 0xFFFF;
|
||||
return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the difference of this and the specified Long.
|
||||
* @param {!Long|number|string} subtrahend Subtrahend
|
||||
* @returns {!Long} Difference
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.subtract = function(subtrahend) {
|
||||
if (!Long.isLong(subtrahend))
|
||||
subtrahend = Long.fromValue(subtrahend);
|
||||
return this.add(subtrahend.negate());
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the product of this and the specified Long.
|
||||
* @param {!Long|number|string} multiplier Multiplier
|
||||
* @returns {!Long} Product
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.multiply = function(multiplier) {
|
||||
if (this.isZero())
|
||||
return Long.ZERO;
|
||||
if (!Long.isLong(multiplier))
|
||||
multiplier = Long.fromValue(multiplier);
|
||||
if (multiplier.isZero())
|
||||
return Long.ZERO;
|
||||
if (this.equals(Long.MIN_VALUE))
|
||||
return multiplier.isOdd() ? Long.MIN_VALUE : Long.ZERO;
|
||||
if (multiplier.equals(Long.MIN_VALUE))
|
||||
return this.isOdd() ? Long.MIN_VALUE : Long.ZERO;
|
||||
|
||||
if (this.isNegative()) {
|
||||
if (multiplier.isNegative())
|
||||
return this.negate().multiply(multiplier.negate());
|
||||
else
|
||||
return this.negate().multiply(multiplier).negate();
|
||||
} else if (multiplier.isNegative())
|
||||
return this.multiply(multiplier.negate()).negate();
|
||||
|
||||
// If both longs are small, use float multiplication
|
||||
if (this.lessThan(TWO_PWR_24) && multiplier.lessThan(TWO_PWR_24))
|
||||
return Long.fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);
|
||||
|
||||
// Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.
|
||||
// We can skip products that would overflow.
|
||||
|
||||
var a48 = this.high >>> 16;
|
||||
var a32 = this.high & 0xFFFF;
|
||||
var a16 = this.low >>> 16;
|
||||
var a00 = this.low & 0xFFFF;
|
||||
|
||||
var b48 = multiplier.high >>> 16;
|
||||
var b32 = multiplier.high & 0xFFFF;
|
||||
var b16 = multiplier.low >>> 16;
|
||||
var b00 = multiplier.low & 0xFFFF;
|
||||
|
||||
var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
|
||||
c00 += a00 * b00;
|
||||
c16 += c00 >>> 16;
|
||||
c00 &= 0xFFFF;
|
||||
c16 += a16 * b00;
|
||||
c32 += c16 >>> 16;
|
||||
c16 &= 0xFFFF;
|
||||
c16 += a00 * b16;
|
||||
c32 += c16 >>> 16;
|
||||
c16 &= 0xFFFF;
|
||||
c32 += a32 * b00;
|
||||
c48 += c32 >>> 16;
|
||||
c32 &= 0xFFFF;
|
||||
c32 += a16 * b16;
|
||||
c48 += c32 >>> 16;
|
||||
c32 &= 0xFFFF;
|
||||
c32 += a00 * b32;
|
||||
c48 += c32 >>> 16;
|
||||
c32 &= 0xFFFF;
|
||||
c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
|
||||
c48 &= 0xFFFF;
|
||||
return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns this Long divided by the specified.
|
||||
* @param {!Long|number|string} divisor Divisor
|
||||
* @returns {!Long} Quotient
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.div = function(divisor) {
|
||||
if (!Long.isLong(divisor))
|
||||
divisor = Long.fromValue(divisor);
|
||||
if (divisor.isZero())
|
||||
throw(new Error('division by zero'));
|
||||
if (this.isZero())
|
||||
return this.unsigned ? Long.UZERO : Long.ZERO;
|
||||
var approx, rem, res;
|
||||
if (this.equals(Long.MIN_VALUE)) {
|
||||
if (divisor.equals(Long.ONE) || divisor.equals(Long.NEG_ONE))
|
||||
return Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE
|
||||
else if (divisor.equals(Long.MIN_VALUE))
|
||||
return Long.ONE;
|
||||
else {
|
||||
// At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.
|
||||
var halfThis = this.shiftRight(1);
|
||||
approx = halfThis.div(divisor).shiftLeft(1);
|
||||
if (approx.equals(Long.ZERO)) {
|
||||
return divisor.isNegative() ? Long.ONE : Long.NEG_ONE;
|
||||
} else {
|
||||
rem = this.subtract(divisor.multiply(approx));
|
||||
res = approx.add(rem.div(divisor));
|
||||
return res;
|
||||
}
|
||||
}
|
||||
} else if (divisor.equals(Long.MIN_VALUE))
|
||||
return this.unsigned ? Long.UZERO : Long.ZERO;
|
||||
if (this.isNegative()) {
|
||||
if (divisor.isNegative())
|
||||
return this.negate().div(divisor.negate());
|
||||
return this.negate().div(divisor).negate();
|
||||
} else if (divisor.isNegative())
|
||||
return this.div(divisor.negate()).negate();
|
||||
|
||||
// Repeat the following until the remainder is less than other: find a
|
||||
// floating-point that approximates remainder / other *from below*, add this
|
||||
// into the result, and subtract it from the remainder. It is critical that
|
||||
// the approximate value is less than or equal to the real value so that the
|
||||
// remainder never becomes negative.
|
||||
res = Long.ZERO;
|
||||
rem = this;
|
||||
while (rem.greaterThanOrEqual(divisor)) {
|
||||
// Approximate the result of division. This may be a little greater or
|
||||
// smaller than the actual value.
|
||||
approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));
|
||||
|
||||
// We will tweak the approximate result by changing it in the 48-th digit or
|
||||
// the smallest non-fractional digit, whichever is larger.
|
||||
var log2 = Math.ceil(Math.log(approx) / Math.LN2),
|
||||
delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48),
|
||||
|
||||
// Decrease the approximation until it is smaller than the remainder. Note
|
||||
// that if it is too large, the product overflows and is negative.
|
||||
approxRes = Long.fromNumber(approx),
|
||||
approxRem = approxRes.multiply(divisor);
|
||||
while (approxRem.isNegative() || approxRem.greaterThan(rem)) {
|
||||
approx -= delta;
|
||||
approxRes = Long.fromNumber(approx, this.unsigned);
|
||||
approxRem = approxRes.multiply(divisor);
|
||||
}
|
||||
|
||||
// We know the answer can't be zero... and actually, zero would cause
|
||||
// infinite recursion since we would make no progress.
|
||||
if (approxRes.isZero())
|
||||
approxRes = Long.ONE;
|
||||
|
||||
res = res.add(approxRes);
|
||||
rem = rem.subtract(approxRem);
|
||||
}
|
||||
return res;
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns this Long modulo the specified.
|
||||
* @param {!Long|number|string} divisor Divisor
|
||||
* @returns {!Long} Remainder
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.modulo = function(divisor) {
|
||||
if (!Long.isLong(divisor))
|
||||
divisor = Long.fromValue(divisor);
|
||||
return this.subtract(this.div(divisor).multiply(divisor));
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the bitwise NOT of this Long.
|
||||
* @returns {!Long}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.not = function() {
|
||||
return Long.fromBits(~this.low, ~this.high, this.unsigned);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the bitwise AND of this Long and the specified.
|
||||
* @param {!Long|number|string} other Other Long
|
||||
* @returns {!Long}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.and = function(other) {
|
||||
if (!Long.isLong(other))
|
||||
other = Long.fromValue(other);
|
||||
return Long.fromBits(this.low & other.low, this.high & other.high, this.unsigned);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the bitwise OR of this Long and the specified.
|
||||
* @param {!Long|number|string} other Other Long
|
||||
* @returns {!Long}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.or = function(other) {
|
||||
if (!Long.isLong(other))
|
||||
other = Long.fromValue(other);
|
||||
return Long.fromBits(this.low | other.low, this.high | other.high, this.unsigned);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the bitwise XOR of this Long and the given one.
|
||||
* @param {!Long|number|string} other Other Long
|
||||
* @returns {!Long}
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.xor = function(other) {
|
||||
if (!Long.isLong(other))
|
||||
other = Long.fromValue(other);
|
||||
return Long.fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns this Long with bits shifted to the left by the given amount.
|
||||
* @param {number|!Long} numBits Number of bits
|
||||
* @returns {!Long} Shifted Long
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.shiftLeft = function(numBits) {
|
||||
if (Long.isLong(numBits))
|
||||
numBits = numBits.toInt();
|
||||
if ((numBits &= 63) === 0)
|
||||
return this;
|
||||
else if (numBits < 32)
|
||||
return Long.fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);
|
||||
else
|
||||
return Long.fromBits(0, this.low << (numBits - 32), this.unsigned);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns this Long with bits arithmetically shifted to the right by the given amount.
|
||||
* @param {number|!Long} numBits Number of bits
|
||||
* @returns {!Long} Shifted Long
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.shiftRight = function(numBits) {
|
||||
if (Long.isLong(numBits))
|
||||
numBits = numBits.toInt();
|
||||
if ((numBits &= 63) === 0)
|
||||
return this;
|
||||
else if (numBits < 32)
|
||||
return Long.fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);
|
||||
else
|
||||
return Long.fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns this Long with bits logically shifted to the right by the given amount.
|
||||
* @param {number|!Long} numBits Number of bits
|
||||
* @returns {!Long} Shifted Long
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.shiftRightUnsigned = function(numBits) {
|
||||
if (Long.isLong(numBits))
|
||||
numBits = numBits.toInt();
|
||||
numBits &= 63;
|
||||
if (numBits === 0)
|
||||
return this;
|
||||
else {
|
||||
var high = this.high;
|
||||
if (numBits < 32) {
|
||||
var low = this.low;
|
||||
return Long.fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);
|
||||
} else if (numBits === 32)
|
||||
return Long.fromBits(high, 0, this.unsigned);
|
||||
else
|
||||
return Long.fromBits(high >>> (numBits - 32), 0, this.unsigned);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Converts this Long to signed.
|
||||
* @returns {!Long} Signed long
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.toSigned = function() {
|
||||
if (!this.unsigned)
|
||||
return this;
|
||||
return new Long(this.low, this.high, false);
|
||||
};
|
||||
|
||||
/**
|
||||
* Converts this Long to unsigned.
|
||||
* @returns {!Long} Unsigned long
|
||||
* @expose
|
||||
*/
|
||||
Long.prototype.toUnsigned = function() {
|
||||
if (this.unsigned)
|
||||
return this;
|
||||
return new Long(this.low, this.high, true);
|
||||
};
|
||||
|
||||
/* CommonJS */ if (typeof require === 'function' && typeof module === 'object' && module && typeof exports === 'object' && exports)
|
||||
module["exports"] = Long;
|
||||
/* AMD */ else if (typeof define === 'function' && define["amd"])
|
||||
define(function() { return Long; });
|
||||
/* Global */ else
|
||||
(global["dcodeIO"] = global["dcodeIO"] || {})["Long"] = Long;
|
||||
|
||||
})(this);
|
4336
bower_components/protobuf/dist/ProtoBuf.js
vendored
Normal file
4336
bower_components/protobuf/dist/ProtoBuf.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
1415
bower_components/underscore/underscore.js
vendored
Normal file
1415
bower_components/underscore/underscore.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
14
index.html
14
index.html
|
@ -123,18 +123,18 @@
|
|||
</form>
|
||||
</script>
|
||||
<script type="text/javascript" src="js-deps/nacl-common.js"></script>
|
||||
<script type="text/javascript" src="js-deps/jquery.js"></script>
|
||||
<script type="text/javascript" src="js-deps/bootstrap-tagsinput.js"></script>
|
||||
<script type="text/javascript" src="js-deps/CryptoJS.js"></script>
|
||||
<script type="text/javascript" src="js-deps/curve255.js"></script>
|
||||
<script type="text/javascript" src="js-deps/Long.min.js"></script>
|
||||
<script type="text/javascript" src="js-deps/ByteBuffer.min.js"></script>
|
||||
<script type="text/javascript" src="js-deps/ProtoBuf.min.js"></script>
|
||||
<script type="text/javascript" src="js-deps/underscore.js"></script>
|
||||
<script type="text/javascript" src="js-deps/backbone.js"></script>
|
||||
<script type="text/javascript" src="bower_components/jquery/dist/jquery.js"></script>
|
||||
<script type="text/javascript" src="bower_components/long/dist/Long.js"></script>
|
||||
<script type="text/javascript" src="bower_components/bytebuffer/dist/ByteBufferAB.js"></script>
|
||||
<script type="text/javascript" src="bower_components/protobuf/dist/ProtoBuf.js"></script>
|
||||
<script type="text/javascript" src="bower_components/underscore/underscore.js"></script>
|
||||
<script type="text/javascript" src="bower_components/backbone/backbone.js"></script>
|
||||
<script type="text/javascript" src="js-deps/backbone.localStorage.js"></script>
|
||||
<script type="text/javascript" src="js-deps/mustache.js"></script>
|
||||
<script type="text/javascript" src="js-deps/libphonenumber_api-compiled.js"></script>
|
||||
<script type="text/javascript" src="js-deps/bootstrap-tagsinput.js"></script>
|
||||
|
||||
<script type="text/javascript" src="js/protobufs.js"></script>
|
||||
<script type="text/javascript" src="js/helpers.js"></script>
|
||||
|
|
2320
js-deps/ByteBuffer.min.js
vendored
2320
js-deps/ByteBuffer.min.js
vendored
File diff suppressed because it is too large
Load diff
26
js-deps/Long.min.js
vendored
26
js-deps/Long.min.js
vendored
|
@ -1,26 +0,0 @@
|
|||
/*
|
||||
Long.js (c) 2013 Daniel Wirtz <dcode@dcode.io>
|
||||
Released under the Apache License, Version 2.0
|
||||
see: https://github.com/dcodeIO/Long.js for details
|
||||
|
||||
Long.js is based on goog.math.Long from the Closure Library.
|
||||
Copyright 2009 The Closure Library Authors. All Rights Reserved.
|
||||
Released under the Apache License, Version 2.0
|
||||
see: https://code.google.com/p/closure-library/ for details
|
||||
*/
|
||||
var p=!1;
|
||||
(function(r){function b(a,b,d){this.low=a|0;this.high=b|0;this.unsigned=!!d}var s={},t={};b.fromInt=function(a,c){var d;if(c){a>>>=0;if(0<=a&&256>a&&(d=t[a]))return d;d=new b(a,0>(a|0)?-1:0,!0);0<=a&&256>a&&(t[a]=d)}else{a|=0;if(-128<=a&&128>a&&(d=s[a]))return d;d=new b(a,0>a?-1:0,p);-128<=a&&128>a&&(s[a]=d)}return d};b.fromNumber=function(a,c){c=!!c;return isNaN(a)||!isFinite(a)?b.ZERO:!c&&a<=-u?b.MIN_SIGNED_VALUE:c&&0>=a?b.MIN_UNSIGNED_VALUE:!c&&a+1>=u?b.MAX_SIGNED_VALUE:c&&a>=v?b.MAX_UNSIGNED_VALUE:0>
|
||||
a?b.fromNumber(-a,p).negate():new b(a%l|0,a/l|0,c)};b.fromBits=function(a,c,d){return new b(a,c,d)};b.from28Bits=function(a,c,d,e){return b.fromBits(a|c<<28,c>>>4|d<<24,e)};b.fromString=function(a,c,d){if(0==a.length)throw Error("number format error: empty string");if("NaN"===a||"Infinity"===a||"+Infinity"===a||"-Infinity"===a)return b.ZERO;"number"===typeof c&&(d=c,c=p);d=d||10;if(2>d||36<d)throw Error("radix out of range: "+d);if("-"==a.charAt(0))return b.fromString(a.substring(1),c,d).negate();
|
||||
if(0<=a.indexOf("-"))throw Error('number format error: interior "-" character: '+a);c=b.fromNumber(Math.pow(d,8));for(var e=b.ZERO,g=0;g<a.length;g+=8){var f=Math.min(8,a.length-g),k=parseInt(a.substring(g,g+f),d);8>f?(f=b.fromNumber(Math.pow(d,f)),e=e.multiply(f).add(b.fromNumber(k))):(e=e.multiply(c),e=e.add(b.fromNumber(k)))}return e};var l=4294967296,v=l*l,u=v/2,w=b.fromInt(16777216);b.ZERO=b.fromInt(0);b.ONE=b.fromInt(1);b.NEG_ONE=b.fromInt(-1);b.MAX_SIGNED_VALUE=b.fromBits(-1,2147483647,p);
|
||||
b.MAX_UNSIGNED_VALUE=b.fromBits(-1,-1,!0);b.MAX_VALUE=b.MAX_SIGNED_VALUE;b.MIN_SIGNED_VALUE=b.fromBits(0,-2147483648,p);b.MIN_UNSIGNED_VALUE=b.fromBits(0,0,!0);b.MIN_VALUE=b.MIN_SIGNED_VALUE;b.prototype.toInt=function(){return this.unsigned?this.low>>>0:this.low};b.prototype.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)};b.prototype.toString=function(a){a=a||10;if(2>a||36<a)throw Error("radix out of range: "+a);if(this.isZero())return"0";var c;
|
||||
if(this.isNegative()){if(this.equals(b.MIN_SIGNED_VALUE)){c=b.fromNumber(a);var d=this.div(c);c=d.multiply(c).subtract(this);return d.toString(a)+c.toInt().toString(a)}return"-"+this.negate().toString(a)}d=b.fromNumber(Math.pow(a,6));c=this;for(var e="";;){var g=c.div(d),f=c.subtract(g.multiply(d)).toInt().toString(a);c=g;if(c.isZero())return f+e;for(;6>f.length;)f="0"+f;e=""+f+e}};b.prototype.getHighBits=function(){return this.high};b.prototype.getHighBitsUnsigned=function(){return this.high>>>0};
|
||||
b.prototype.getLowBits=function(){return this.low};b.prototype.getLowBitsUnsigned=function(){return this.low>>>0};b.prototype.getNumBitsAbs=function(){if(this.isNegative())return this.equals(b.MIN_SIGNED_VALUE)?64:this.negate().getNumBitsAbs();for(var a=0!=this.high?this.high:this.low,c=31;0<c&&0==(a&1<<c);c--);return 0!=this.high?c+33:c+1};b.prototype.isZero=function(){return 0==this.high&&0==this.low};b.prototype.isNegative=function(){return!this.unsigned&&0>this.high};b.prototype.isOdd=function(){return 1==
|
||||
(this.low&1)};b.prototype.equals=function(a){return this.unsigned!=a.unsigned&&this.high>>>31!=a.high>>>31?p:this.high==a.high&&this.low==a.low};b.prototype.notEquals=function(a){return!this.equals(a)};b.prototype.lessThan=function(a){return 0>this.compare(a)};b.prototype.lessThanOrEqual=function(a){return 0>=this.compare(a)};b.prototype.greaterThan=function(a){return 0<this.compare(a)};b.prototype.greaterThanOrEqual=function(a){return 0<=this.compare(a)};b.prototype.compare=function(a){if(this.equals(a))return 0;
|
||||
var b=this.isNegative(),d=a.isNegative();return b&&!d?-1:!b&&d?1:this.unsigned?a.high>>>0>this.high>>>0||a.high==this.high&&a.low>>>0>this.low>>>0?-1:1:this.subtract(a).isNegative()?-1:1};b.prototype.negate=function(){return!this.unsigned&&this.equals(b.MIN_SIGNED_VALUE)?b.MIN_SIGNED_VALUE:this.not().add(b.ONE)};b.prototype.add=function(a){var c=this.high>>>16,d=this.high&65535,e=this.low>>>16,g=a.high>>>16,f=a.high&65535,k=a.low>>>16,q;q=0+((this.low&65535)+(a.low&65535));a=0+(q>>>16);a+=e+k;e=0+
|
||||
(a>>>16);e+=d+f;d=0+(e>>>16);d=d+(c+g)&65535;return b.fromBits((a&65535)<<16|q&65535,d<<16|e&65535,this.unsigned)};b.prototype.subtract=function(a){return this.add(a.negate())};b.prototype.multiply=function(a){if(this.isZero()||a.isZero())return b.ZERO;if(this.equals(b.MIN_VALUE))return a.isOdd()?b.MIN_VALUE:b.ZERO;if(a.equals(b.MIN_VALUE))return this.isOdd()?b.MIN_VALUE:b.ZERO;if(this.isNegative())return a.isNegative()?this.negate().multiply(a.negate()):this.negate().multiply(a).negate();if(a.isNegative())return this.multiply(a.negate()).negate();
|
||||
if(this.lessThan(w)&&a.lessThan(w))return b.fromNumber(this.toNumber()*a.toNumber(),this.unsigned);var c=this.high>>>16,d=this.high&65535,e=this.low>>>16,g=this.low&65535,f=a.high>>>16,k=a.high&65535,q=a.low>>>16;a=a.low&65535;var n,h,m,l;l=0+g*a;m=0+(l>>>16);m+=e*a;h=0+(m>>>16);m=(m&65535)+g*q;h+=m>>>16;m&=65535;h+=d*a;n=0+(h>>>16);h=(h&65535)+e*q;n+=h>>>16;h&=65535;h+=g*k;n+=h>>>16;h&=65535;n=n+(c*a+d*q+e*k+g*f)&65535;return b.fromBits(m<<16|l&65535,n<<16|h,this.unsigned)};b.prototype.div=function(a){if(a.isZero())throw Error("division by zero");
|
||||
if(this.isZero())return b.ZERO;if(this.equals(b.MIN_SIGNED_VALUE)){if(a.equals(b.ONE)||a.equals(b.NEG_ONE))return min;if(a.equals(b.MIN_VALUE))return b.ONE;var c=this.shiftRight(1).div(a).shiftLeft(1);if(c.equals(b.ZERO))return a.isNegative()?b.ONE:b.NEG_ONE;var d=this.subtract(a.multiply(c));return c.add(d.div(a))}if(a.equals(b.MIN_VALUE))return b.ZERO;if(this.isNegative())return a.isNegative()?this.negate().div(a.negate()):this.negate().div(a).negate();if(a.isNegative())return this.div(a.negate()).negate();
|
||||
for(var e=b.ZERO,d=this;d.greaterThanOrEqual(a);){for(var c=Math.max(1,Math.floor(d.toNumber()/a.toNumber())),g=Math.ceil(Math.log(c)/Math.LN2),g=48>=g?1:Math.pow(2,g-48),f=b.fromNumber(c,this.unsigned),k=f.multiply(a);k.isNegative()||k.greaterThan(d);)c-=g,f=b.fromNumber(c,this.unsigned),k=f.multiply(a);f.isZero()&&(f=b.ONE);e=e.add(f);d=d.subtract(k)}return e};b.prototype.modulo=function(a){return this.subtract(this.div(a).multiply(a))};b.prototype.not=function(){return b.fromBits(~this.low,~this.high,
|
||||
this.unsigned)};b.prototype.and=function(a){return b.fromBits(this.low&a.low,this.high&a.high,this.unsigned)};b.prototype.or=function(a){return b.fromBits(this.low|a.low,this.high|a.high,this.unsigned)};b.prototype.xor=function(a){return b.fromBits(this.low^a.low,this.high^a.high,this.unsigned)};b.prototype.shiftLeft=function(a){a&=63;if(0==a)return this;var c=this.low;return 32>a?b.fromBits(c<<a,this.high<<a|c>>>32-a,this.unsigned):b.fromBits(0,c<<a-32,this.unsigned)};b.prototype.shiftRight=function(a){a&=
|
||||
63;if(0==a)return this;var c=this.high;return 32>a?b.fromBits(this.low>>>a|c<<32-a,c>>a,this.unsigned):b.fromBits(c>>a-32,0<=c?0:-1,this.unsigned)};b.prototype.shiftRightUnsigned=function(a){a&=63;if(0==a)return this;var c=this.high;return 32>a?b.fromBits(this.low>>>a|c<<32-a,c>>>a,this.unsigned):32==a?b.fromBits(c,0,this.unsigned):b.fromBits(c>>>a-32,0,this.unsigned)};b.prototype.toSigned=function(){var a=this.clone();a.unsigned=p;return a};b.prototype.toUnsigned=function(){var a=this.clone();a.unsigned=
|
||||
!0;return a};b.prototype.clone=function(){return new b(this.low,this.high,this.unsigned)};"undefined"!=typeof module&&module.exports?module.exports=b:"undefined"!=typeof define&&define.amd?define("Math/Long",[],function(){return b}):(r.dcodeIO||(r.dcodeIO={}),r.dcodeIO.Long=b)})(this);
|
3721
js-deps/ProtoBuf.min.js
vendored
3721
js-deps/ProtoBuf.min.js
vendored
File diff suppressed because it is too large
Load diff
2114
js-deps/bootstrap.js
vendored
2114
js-deps/bootstrap.js
vendored
File diff suppressed because it is too large
Load diff
15
options.html
15
options.html
|
@ -18,7 +18,7 @@
|
|||
<title>TextSecure Options</title>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="css/options.css">
|
||||
<link rel="stylesheet" href="stylesheets/bootstrap.css">
|
||||
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css">
|
||||
</head>
|
||||
<body data-name="curve25519" data-tools="pnacl" data-configs="Debug Release" data-path="nacl/pnacl/{config}">
|
||||
<div id="listener"></div>
|
||||
|
@ -91,15 +91,14 @@
|
|||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="js-deps/nacl-common.js"></script>
|
||||
<script type="text/javascript" src="js-deps/jquery.js"></script>
|
||||
<script type="text/javascript" src="js-deps/bootstrap.js"></script>
|
||||
<script type="text/javascript" src="js-deps/CryptoJS.js"></script>
|
||||
<script type="text/javascript" src="js-deps/curve255.js"></script>
|
||||
<script type="text/javascript" src="js-deps/Long.min.js"></script>
|
||||
<script type="text/javascript" src="js-deps/ByteBuffer.min.js"></script>
|
||||
<script type="text/javascript" src="js-deps/ProtoBuf.min.js"></script>
|
||||
<script type="text/javascript" src="js-deps/underscore.js"></script>
|
||||
<script type="text/javascript" src="js-deps/backbone.js"></script>
|
||||
<script type="text/javascript" src="bower_components/jquery/dist/jquery.js"></script>
|
||||
<script type="text/javascript" src="bower_components/long/dist/Long.js"></script>
|
||||
<script type="text/javascript" src="bower_components/bytebuffer/dist/ByteBufferAB.js"></script>
|
||||
<script type="text/javascript" src="bower_components/protobuf/dist/ProtoBuf.js"></script>
|
||||
<script type="text/javascript" src="bower_components/underscore/underscore.js"></script>
|
||||
<script type="text/javascript" src="bower_components/backbone/backbone.js"></script>
|
||||
<script type="text/javascript" src="js-deps/backbone.localStorage.js"></script>
|
||||
<script type="text/javascript" src="js-deps/libphonenumber_api-compiled.js"></script>
|
||||
<script type="text/javascript" src="js-deps/qrcode.min.js"></script>
|
||||
|
|
|
@ -124,14 +124,14 @@
|
|||
<script type="text/javascript" src="blanket_mocha.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../js-deps/nacl-common.js"></script>
|
||||
<script type="text/javascript" src="../js-deps/jquery.js"></script>
|
||||
<script type="text/javascript" src="../js-deps/CryptoJS.js"></script>
|
||||
<script type="text/javascript" src="../js-deps/curve255.js"></script>
|
||||
<script type="text/javascript" src="../js-deps/Long.min.js"></script>
|
||||
<script type="text/javascript" src="../js-deps/ByteBuffer.min.js"></script>
|
||||
<script type="text/javascript" src="../js-deps/ProtoBuf.min.js"></script>
|
||||
<script type="text/javascript" src="../js-deps/underscore.js"></script>
|
||||
<script type="text/javascript" src="../js-deps/backbone.js"></script>
|
||||
<script type="text/javascript" src="../bower_components/jquery/dist/jquery.js"></script>
|
||||
<script type="text/javascript" src="../bower_components/long/dist/Long.js"></script>
|
||||
<script type="text/javascript" src="../bower_components/bytebuffer/dist/ByteBufferAB.js"></script>
|
||||
<script type="text/javascript" src="../bower_components/protobuf/dist/ProtoBuf.js"></script>
|
||||
<script type="text/javascript" src="../bower_components/underscore/underscore.js"></script>
|
||||
<script type="text/javascript" src="../bower_components/backbone/backbone.js"></script>
|
||||
<script type="text/javascript" src="../js-deps/backbone.localStorage.js"></script>
|
||||
<script type="text/javascript" src="../js-deps/mustache.js"></script>
|
||||
<script type="text/javascript" src="../js-deps/libphonenumber_api-compiled.js"></script>
|
||||
|
|
Loading…
Reference in a new issue