From 3a99b314ff6fcf8c769f321b64993887532443e2 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Wed, 14 Jan 2015 09:33:45 -0700
Subject: [PATCH 01/61] Fixing 'log' examples
---
src/lib/F2.js | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/lib/F2.js b/src/lib/F2.js
index df3efa7e..0baec7c8 100644
--- a/src/lib/F2.js
+++ b/src/lib/F2.js
@@ -249,13 +249,13 @@ F2 = (function() {
* @param {object|string} Object/Method An object to be logged _or_ a `console` API method name, such as `warn` or `error`. All of the console method names are [detailed in the Chrome docs](https://developers.google.com/chrome-developer-tools/docs/console-api).
* @param {object} [obj2]* An object to be logged
* @example
- * Pass any value (string, int, array, object, bool).
- * F2.log('foo');
- * F2.log([1, 2, 3]);
+ * // Pass any value (string, int, array, object, bool).
+ * F2.log('foo');
+ * F2.log([1, 2, 3]);
* @example
- * Use a console method name as the first argument.
- * F2.log('error', err);
- * F2.log('info', 'The session ID is ' + sessionId);
+ * // Use a console method name as the first argument.
+ * F2.log('error', err);
+ * F2.log('info', 'The session ID is ' + sessionId);
*/
log: function() {
if (!window.console) {
From de3bf6f5be982709545fde940dbbf212957cb414 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Thu, 15 Jan 2015 08:37:55 -0700
Subject: [PATCH 02/61] Fixing 'on' param documentation
---
src/lib/app_handlers.js | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/lib/app_handlers.js b/src/lib/app_handlers.js
index 6c3013e1..d689cf37 100644
--- a/src/lib/app_handlers.js
+++ b/src/lib/app_handlers.js
@@ -253,14 +253,16 @@ F2.extend('AppHandlers', (function() {
* removal purposes. At this time it does not affect when an event is fired.
* Complete list of event keys available in
* {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @param {Function} listener A function that will be triggered when a
- * specific event occurs. For detailed argument definition refer to
+ * @param {Function|Element} listener A function that will be triggered
+ * when a specific event occurs. Optionally, a specific DOM element to
+ * which the app will be appended can be passed. For detailed argument
+ * definition refer to
* {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
* @example
* var token = F2.AppHandlers.getToken();
* F2.AppHandlers.on(
* token,
- * 'appRenderBefore'
+ * 'appRenderBefore',
* function() {
* F2.log('before app rendered!');
* }
From 15fea278c5b676c2d1ff9746c90205f86f547930 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Thu, 15 Jan 2015 08:38:11 -0700
Subject: [PATCH 03/61] Adding compiled files
---
dist/f2.debug.js | 975 +++++++++++++++++--------------------
dist/f2.min.js | 6 +-
dist/f2.min.js.map | 2 +-
dist/f2.no-third-party.js | 977 +++++++++++++++++---------------------
4 files changed, 883 insertions(+), 1077 deletions(-)
diff --git a/dist/f2.debug.js b/dist/f2.debug.js
index 4bfdd728..a68f85ea 100644
--- a/dist/f2.debug.js
+++ b/dist/f2.debug.js
@@ -1,5 +1,5 @@
/*!
- * F2 v1.4.0 12-29-2014
+ * F2 v1.4.0 01-15-2015
* Copyright (c) 2014 Markit On Demand, Inc. http://www.openf2.org
*
* "F2" is licensed under the Apache License, Version 2.0 (the "License");
@@ -14051,13 +14051,13 @@ F2 = (function() {
* @param {object|string} Object/Method An object to be logged _or_ a `console` API method name, such as `warn` or `error`. All of the console method names are [detailed in the Chrome docs](https://developers.google.com/chrome-developer-tools/docs/console-api).
* @param {object} [obj2]* An object to be logged
* @example
- * Pass any value (string, int, array, object, bool).
- * F2.log('foo');
- * F2.log([1, 2, 3]);
+ * // Pass any value (string, int, array, object, bool).
+ * F2.log('foo');
+ * F2.log([1, 2, 3]);
* @example
- * Use a console method name as the first argument.
- * F2.log('error', err);
- * F2.log('info', 'The session ID is ' + sessionId);
+ * // Use a console method name as the first argument.
+ * F2.log('error', err);
+ * F2.log('info', 'The session ID is ' + sessionId);
*/
log: function() {
if (!window.console) {
@@ -14126,7 +14126,7 @@ F2 = (function() {
*
*
* ### Order of Execution
- *
+ *
* **App Rendering**
*
* 0. {{#crossLink "F2/registerApps"}}F2.registerApps(){{/crossLink}} method is called by the Container Developer and the following methods are run for *each* {{#crossLink "F2.AppConfig"}}{{/crossLink}} passed.
@@ -14143,392 +14143,299 @@ F2 = (function() {
* 1. **'appDestroyBefore'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_BEFORE*) handlers are fired in the order they were attached.
* 2. **'appDestroy'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY*) handlers are fired in the order they were attached.
* 3. **'appDestroyAfter'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_AFTER*) handlers are fired in the order they were attached.
- *
+ *
* **Error Handling**
* 0. **'appScriptLoadFailed'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_SCRIPT\_LOAD\_FAILED*) handlers are fired in the order they were attached.
- *
+ *
* @class F2.AppHandlers
*/
F2.extend('AppHandlers', (function() {
- // the hidden token that we will check against every time someone tries to add, remove, fire handler
- var _ct = F2.guid();
- var _f2t = F2.guid();
-
+ // The hidden token that we will check against every time someone tries to add, remove, fire handler
+ var _containerToken = F2.guid();
+ var _f2Token = F2.guid();
+
var _handlerCollection = {
appCreateRoot: [],
- appRenderBefore: [],
+ appRenderBefore: [],
appDestroyBefore: [],
appRenderAfter: [],
appDestroyAfter: [],
appRender: [],
appDestroy: [],
- appScriptLoadFailed: []
+ appScriptLoadFailed: []
};
-
+
var _defaultMethods = {
- appRender: function(appConfig, appHtml)
- {
- var $root = null;
-
- // if no app root is defined use the app's outer most node
- if(!F2.isNativeDOMNode(appConfig.root))
- {
+ appRender: function(appConfig, appHtml) {
+ // If no app root is defined use the app's outer most node
+ if (F2.isNativeDOMNode(appConfig.root)) {
+ jQuery(appConfig.root).append(appHtml);
+ } else {
appConfig.root = jQuery(appHtml).get(0);
- // get a handle on the root in jQuery
- $root = jQuery(appConfig.root);
}
- else
- {
- // get a handle on the root in jQuery
- $root = jQuery(appConfig.root);
-
- // append the app html to the root
- $root.append(appHtml);
- }
-
- // append the root to the body by default.
- jQuery('body').append($root);
+
+ document.body.appendChild(appConfig.root);
},
- appDestroy: function(appInstance)
- {
- // call the apps destroy method, if it has one
- if(appInstance && appInstance.app && appInstance.app.destroy && typeof(appInstance.app.destroy) == 'function')
- {
- appInstance.app.destroy();
- }
- // warn the Container and App Developer that even though they have a destroy method it hasn't been
- else if(appInstance && appInstance.app && appInstance.app.destroy)
- {
- F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
+ appDestroy: function(appInstance) {
+ if (appInstance.app && appInstance.app.destroy) {
+ if (typeof appInstance.app.destroy === 'function') {
+ appInstance.app.destroy();
+ } else {
+ F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
+ }
}
-
- // fade out and remove the root
+
jQuery(appInstance.config.root).fadeOut(500, function() {
jQuery(this).remove();
});
}
};
-
- var _createHandler = function(token, sNamespace, func_or_element, bDomNodeAppropriate)
- {
- // will throw an exception and stop execution if the token is invalid
- _validateToken(token);
-
- // create handler structure. Not all arguments properties will be populated/used.
+
+ function _createHandler(token, namespace, fnOrNode, domNodeAppropriate) {
+ _validateToken(token);
+
var handler = {
- func: (typeof(func_or_element)) ? func_or_element : null,
- namespace: sNamespace,
- domNode: (F2.isNativeDOMNode(func_or_element)) ? func_or_element : null
+ domNode: null,
+ func: null,
+ namespace: namespace
};
-
- if(!handler.func && !handler.domNode)
- {
- throw ('Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.');
+
+ if (F2.isNativeDOMNode(fnOrNode)) {
+ handler.domNode = fnOrNode;
+ } else if (typeof fnOrNode === 'function') {
+ handler.func = fnOrNode;
}
- if(handler.domNode && !bDomNodeAppropriate)
- {
- throw ('Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.');
+ if (!handler.func && !handler.domNode) {
+ throw new Error('Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.');
}
-
+
+ if (handler.domNode && !domNodeAppropriate) {
+ throw new Error('Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.');
+ }
+
return handler;
- };
-
- var _validateToken = function(sToken)
- {
- // check token against F2 and container
- if(_ct != sToken && _f2t != sToken) { throw ('Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().'); }
- };
-
- var _removeHandler = function(sToken, eventKey, sNamespace)
- {
- // will throw an exception and stop execution if the token is invalid
- _validateToken(sToken);
-
- if(!sNamespace && !eventKey)
- {
- return;
+ }
+
+ // Token must match F2 or container
+ function _validateToken(token) {
+ if (_containerToken !== token && _f2Token !== token) {
+ throw new Error('Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().');
}
- // remove by event key
- else if(!sNamespace && eventKey)
- {
- _handlerCollection[eventKey] = [];
+ }
+
+ // Token must match F2
+ function _validateF2Token(token) {
+ if (token != _f2Token) {
+ throw new Error('Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().');
}
- // remove by namespace only
- else if(sNamespace && !eventKey)
- {
- sNamespace = sNamespace.toLowerCase();
-
- for(var currentEventKey in _handlerCollection)
- {
- var eventCollection = _handlerCollection[currentEventKey];
- var newEvents = [];
-
- for(var i = 0, ec = eventCollection.length; i < ec; i++)
- {
- var currentEventHandler = eventCollection[i];
- if(currentEventHandler)
- {
- if(!currentEventHandler.namespace || currentEventHandler.namespace.toLowerCase() != sNamespace)
- {
- newEvents.push(currentEventHandler);
- }
- }
- }
+ }
+
+ function _filterHandlersByNamespace(handlers, namespace) {
+ var newHandlers = handlers.slice();
- eventCollection = newEvents;
- }
+ for (var i = newHandlers.length; i >= 0; i--) {
+ if (!newHandlers[i] || (newHandlers[i].namespace && newHandlers[i].namespace.toLowerCase() === namespace)) {
+ newHandlers.splice(i, 1);
+ }
}
- else if(sNamespace && _handlerCollection[eventKey])
- {
- sNamespace = sNamespace.toLowerCase();
-
- var newHandlerCollection = [];
-
- for(var iCounter = 0, hc = _handlerCollection[eventKey].length; iCounter < hc; iCounter++)
- {
- var currentHandler = _handlerCollection[eventKey][iCounter];
- if(currentHandler)
- {
- if(!currentHandler.namespace || currentHandler.namespace.toLowerCase() != sNamespace)
- {
- newHandlerCollection.push(currentHandler);
- }
+
+ return newHandlers;
+ }
+
+ function _removeHandler(token, eventKey, namespace) {
+ _validateToken(token);
+
+ if (namespace) {
+ namespace = namespace.toLowerCase();
+
+ if (eventKey && eventKey in _handlerCollection) {
+ _handlerCollection[eventKey] = _filterHandlersByNamespace(_handlerCollection[eventKey], namespace);
+ } else {
+ for (var key in _handlerCollection) {
+ _removeHandler(token, key, namespace);
}
}
-
- _handlerCollection[eventKey] = newHandlerCollection;
+ } else if (eventKey) {
+ _handlerCollection[eventKey] = [];
}
- };
-
+ }
+
+ function _parseEventKey(eventKey) {
+ var namespace = '';
+
+ if (eventKey.indexOf('.') !== -1) {
+ var eventParts = eventKey.split('.');
+ eventKey = eventParts[0];
+ namespace = eventParts[1];
+ }
+
+ return {
+ key: eventKey,
+ namespace: namespace
+ };
+ }
+
return {
/**
- * Allows Container Developer to retrieve a unique token which must be passed to
- * all `on` and `off` methods. This function will self destruct and can only be called
- * one time. Container Developers must store the return value inside of a closure.
- * @method getToken
- **/
- getToken: function()
- {
- // delete this method for security that way only the container has access to the token 1 time.
- // kind of Ethan Hunt-ish, this message will self destruct immediately.
+ * Allows Container Developer to retrieve a unique token which must be
+ * passed to all `on` and `off` methods. This function will self destruct
+ * and can only be called one time. Container Developers must store the
+ * return value inside of a closure.
+ * @method getToken
+ */
+ getToken: function() {
+ /**
+ * Delete this method for security that way only the container has
+ * access to the token 1 time. Kind of Ethan Hunt-ish, this message will
+ * self-destruct immediately.
+ */
delete this.getToken;
- // return the token, which we validate against.
- return _ct;
+ return _containerToken;
},
/**
- * Allows F2 to get a token internally. Token is required to call {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}}.
- * This function will self destruct to eliminate other sources from using the {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}}
- * and additional internal methods.
- * @method __f2GetToken
- * @private
- **/
- __f2GetToken: function()
- {
- // delete this method for security that way only the F2 internally has access to the token 1 time.
- // kind of Ethan Hunt-ish, this message will self destruct immediately.
+ * Allows F2 to get a token internally. Token is required to call
+ * {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}}. This
+ * function will self destruct to eliminate other sources from using the
+ * {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}} and
+ * additional internal methods.
+ * @method __f2GetToken
+ * @private
+ */
+ __f2GetToken: function() {
+ /**
+ * Delete this method for security that way only the container has
+ * access to the token 1 time. Kind of Ethan Hunt-ish, this message will
+ * self-destruct immediately.
+ */
delete this.__f2GetToken;
- // return the token, which we validate against.
- return _f2t;
+ return _f2Token;
},
/**
- * Allows F2 to trigger specific events internally.
- * @method __trigger
- * @private
- * @chainable
- * @param {String} token The token received from {{#crossLink "F2.AppHandlers/\_\_f2GetToken:method"}}{{/crossLink}}.
- * @param {String} eventKey The event to fire. The complete list of event keys is available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- **/
- __trigger: function(token, eventKey) // additional arguments will likely be passed
- {
- // will throw an exception and stop execution if the token is invalid
- if(token != _f2t)
- {
- throw ('Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().');
+ * Allows F2 to trigger specific events internally.
+ * @method __trigger
+ * @private
+ * @chainable
+ * @param {String} token The token received from {{#crossLink "F2.AppHandlers/\_\_f2GetToken:method"}}{{/crossLink}}.
+ * @param {String} eventKey The event to fire. The complete list of event
+ * keys is available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ */
+ __trigger: function(token, eventKey) {
+ _validateF2Token(token);
+
+ if (!_handlerCollection[eventKey]) {
+ throw new Error('Invalid EventKey passed. Check your inputs and try again.');
}
-
- if(_handlerCollection && _handlerCollection[eventKey])
- {
- // create a collection of arguments that are safe to pass to the callback.
- var passableArgs = [];
-
- // populate that collection with all arguments except token and eventKey
- for(var i = 2, j = arguments.length; i < j; i++)
- {
- passableArgs.push(arguments[i]);
- }
-
- if(_handlerCollection[eventKey].length === 0 && _defaultMethods[eventKey])
- {
- _defaultMethods[eventKey].apply(F2, passableArgs);
- return this;
- }
- else if(_handlerCollection[eventKey].length === 0 && !_handlerCollection[eventKey])
- {
- return this;
- }
-
- // fire all event listeners in the order that they were added.
- for(var iCounter = 0, hcl = _handlerCollection[eventKey].length; iCounter < hcl; iCounter++)
- {
- var handler = _handlerCollection[eventKey][iCounter];
-
- // appRender where root is already defined
- if (handler.domNode && arguments[2] && arguments[2].root && arguments[3])
- {
- var $appRoot = jQuery(arguments[2].root).append(arguments[3]);
- jQuery(handler.domNode).append($appRoot);
- }
- else if (handler.domNode && arguments[2] && !arguments[2].root && arguments[3])
- {
- // set the root to the actual HTML of the app
- arguments[2].root = jQuery(arguments[3]).get(0);
- // appends the root to the dom node specified
- jQuery(handler.domNode).append(arguments[2].root);
- }
- else
- {
- handler.func.apply(F2, passableArgs);
+
+ var callbackArgs = Array.prototype.slice.call(arguments, 2);
+
+ if (!_handlerCollection[eventKey].length && _defaultMethods[eventKey]) {
+ _defaultMethods[eventKey].apply(F2, callbackArgs);
+ } else {
+ for (var i = 0; i < _handlerCollection[eventKey].length; i++) {
+ var handler = _handlerCollection[eventKey][i];
+
+ // Check for appRender
+ if (handler.domNode && arguments.length >= 4) {
+ var appConfig = arguments[2];
+ var appHtml = arguments[3];
+
+ if (appConfig.root) {
+ jQuery(appConfig.root).append(appHtml);
+ } else {
+ appConfig.root = jQuery(appHtml).get(0);
+ }
+
+ jQuery(handler.domNode).append(appConfig.root);
+ } else {
+ handler.func.apply(F2, callbackArgs);
}
}
}
- else
- {
- throw ('Invalid EventKey passed. Check your inputs and try again.');
- }
-
+
return this;
},
/**
- * Allows Container Developer to easily tell all apps to render in a specific location. Only valid for eventType `appRender`.
- * @method on
- * @chainable
- * @param {String} token The token received from {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
- * @param {String} eventKey{.namespace} The event key used to determine which event to attach the listener to. The namespace is useful for removal
- * purposes. At this time it does not affect when an event is fired. Complete list of event keys available in
- * {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @params {HTMLElement} element Specific DOM element to which app gets appended.
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * 'appRender',
- * document.getElementById('my_app')
- * );
- *
- * Or:
- * @example
- * F2.AppHandlers.on(
- * _token,
- * 'appRender.myNamespace',
- * document.getElementById('my_app')
- * );
- **/
- /**
- * Allows Container Developer to add listener method that will be triggered when a specific event occurs.
- * @method on
- * @chainable
- * @param {String} token The token received from {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
- * @param {String} eventKey{.namespace} The event key used to determine which event to attach the listener to. The namespace is useful for removal
- * purposes. At this time it does not affect when an event is fired. Complete list of event keys available in
- * {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @params {Function} listener A function that will be triggered when a specific event occurs. For detailed argument definition refer to {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * 'appRenderBefore'
- * function() { F2.log('before app rendered!'); }
- * );
- *
- * Or:
- * @example
- * F2.AppHandlers.on(
- * _token,
- * 'appRenderBefore.myNamespace',
- * function() { F2.log('before app rendered!'); }
- * );
- **/
- on: function(token, eventKey, func_or_element)
- {
- var sNamespace = null;
-
- if(!eventKey)
- {
- throw ('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
- }
-
- // we need to check the key for a namespace
- if(eventKey.indexOf('.') > -1)
- {
- var arData = eventKey.split('.');
- eventKey = arData[0];
- sNamespace = arData[1];
- }
-
- if(_handlerCollection && _handlerCollection[eventKey])
- {
- _handlerCollection[eventKey].push(
- _createHandler(
- token,
- sNamespace,
- func_or_element,
- (eventKey == 'appRender')
- )
- );
+ * Allows Container Developer to add listener method that will be triggered
+ * when a specific event occurs.
+ * @method on
+ * @chainable
+ * @param {String} token The token received from
+ * {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
+ * @param {String} eventKey{.namespace} The event key used to determine
+ * which event to attach the listener to. The namespace is useful for
+ * removal purposes. At this time it does not affect when an event is fired.
+ * Complete list of event keys available in
+ * {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ * @param {Function|Element} listener A function that will be triggered
+ * when a specific event occurs. Optionally, a specific DOM element to
+ * which the app will be appended can be passed. For detailed argument
+ * definition refer to
+ * {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * 'appRenderBefore',
+ * function() {
+ * F2.log('before app rendered!');
+ * }
+ * );
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * 'appRenderBefore.myNamespace',
+ * function() {
+ * F2.log('before app rendered!');
+ * }
+ * );
+ */
+ on: function(token, eventKey, listener) {
+ if (!eventKey) {
+ throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
}
- else
- {
- throw ('Invalid EventKey passed. Check your inputs and try again.');
+
+ var event = _parseEventKey(eventKey);
+
+ if (!_handlerCollection[event.key]) {
+ throw new Error('Invalid eventKey passed. Check your inputs and try again.');
}
-
+
+ var isAppRender = (event.key === 'appRender');
+ var handler = _createHandler(token, event.namespace, listener, isAppRender);
+ _handlerCollection[event.key].push(handler);
+
return this;
},
/**
- * Allows Container Developer to remove listener methods for specific events
- * @method off
- * @chainable
- * @param {String} token The token received from {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
- * @param {String} eventKey{.namespace} The event key used to determine which event to attach the listener to. If no namespace is provided all
- * listeners for the specified event type will be removed.
- * Complete list available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.off(_token,'appRenderBefore');
- *
- **/
- off: function(token, eventKey)
- {
- var sNamespace = null;
-
- if(!eventKey)
- {
- throw ('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
- }
-
- // we need to check the key for a namespace
- if(eventKey.indexOf('.') > -1)
- {
- var arData = eventKey.split('.');
- eventKey = arData[0];
- sNamespace = arData[1];
- }
-
- if(_handlerCollection && _handlerCollection[eventKey])
- {
- _removeHandler(
- token,
- eventKey,
- sNamespace
- );
+ * Allows Container Developer to remove listener methods for specific events
+ * @method off
+ * @chainable
+ * @param {String} token The token received from {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
+ * @param {String} eventKey{.namespace} The event key used to determine
+ * which event to attach the listener to. If no namespace is provided all
+ * listeners for the specified event type will be removed. Complete list
+ * available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.off(token, 'appRenderBefore');
+ */
+ off: function(token, eventKey) {
+ if (!eventKey) {
+ throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
}
- else
- {
- throw ('Invalid EventKey passed. Check your inputs and try again.');
+
+ var event = _parseEventKey(eventKey);
+
+ if (!_handlerCollection[event.key]) {
+ throw new Error('Invalid EventKey passed. Check your inputs and try again.');
}
-
+
+ _removeHandler(token, event.key, event.namespace);
+
return this;
}
};
@@ -14536,209 +14443,205 @@ F2.extend('AppHandlers', (function() {
F2.extend('Constants', {
/**
- * A convenient collection of all available appHandler events.
- * @class F2.Constants.AppHandlers
- **/
- AppHandlers: (function()
- {
- return {
- /**
- * Equivalent to `appCreateRoot`. Identifies the create root method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}} )
- * @property APP_CREATE_ROOT
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_CREATE_ROOT,
- * function(appConfig)
- * {
- * // If you want to create a custom root. By default F2 uses the app's outermost HTML element.
- * // the app's html is not available until after the manifest is retrieved so this logic occurs in F2.Constants.AppHandlers.APP_RENDER
- * appConfig.root = jQuery('').get(0);
- * }
- * );
- */
- APP_CREATE_ROOT: 'appCreateRoot',
- /**
- * Equivalent to `appRenderBefore`. Identifies the before app render method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}} )
- * @property APP_RENDER_BEFORE
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_RENDER_BEFORE,
- * function(appConfig)
- * {
- * F2.log(appConfig);
- * }
- * );
- */
- APP_RENDER_BEFORE: 'appRenderBefore',
- /**
- * Equivalent to `appRender`. Identifies the app render method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}, [appHtml](../../app-development.html#app-design) )
- * @property APP_RENDER
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_RENDER,
- * function(appConfig, appHtml)
- * {
- * var $root = null;
- *
- * // if no app root is defined use the app's outer most node
- * if(!F2.isNativeDOMNode(appConfig.root))
- * {
- * appConfig.root = jQuery(appHtml).get(0);
- * // get a handle on the root in jQuery
- * $root = jQuery(appConfig.root);
- * }
- * else
- * {
- * // get a handle on the root in jQuery
- * $root = jQuery(appConfig.root);
- *
- * // append the app html to the root
- * $root.append(appHtml);
- * }
- *
- * // append the root to the body by default.
- * jQuery('body').append($root);
- * }
- * );
- */
- APP_RENDER: 'appRender',
- /**
- * Equivalent to `appRenderAfter`. Identifies the after app render method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}} )
- * @property APP_RENDER_AFTER
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_RENDER_AFTER,
- * function(appConfig)
- * {
- * F2.log(appConfig);
- * }
- * );
- */
- APP_RENDER_AFTER: 'appRenderAfter',
- /**
- * Equivalent to `appDestroyBefore`. Identifies the before app destroy method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( appInstance )
- * @property APP_DESTROY_BEFORE
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
- * function(appInstance)
- * {
- * F2.log(appInstance);
- * }
- * );
- */
- APP_DESTROY_BEFORE: 'appDestroyBefore',
- /**
- * Equivalent to `appDestroy`. Identifies the app destroy method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( appInstance )
- * @property APP_DESTROY
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_DESTROY,
- * function(appInstance)
- * {
- * // call the apps destroy method, if it has one
- * if(appInstance && appInstance.app && appInstance.app.destroy && typeof(appInstance.app.destroy) == 'function')
- * {
- * appInstance.app.destroy();
- * }
- * else if(appInstance && appInstance.app && appInstance.app.destroy)
- * {
- * F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
- * }
- *
- * // fade out and remove the root
- * jQuery(appInstance.config.root).fadeOut(500, function() {
- * jQuery(this).remove();
- * });
- * }
- * );
- */
- APP_DESTROY: 'appDestroy',
- /**
- * Equivalent to `appDestroyAfter`. Identifies the after app destroy method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( appInstance )
- * @property APP_DESTROY_AFTER
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_DESTROY_AFTER,
- * function(appInstance)
- * {
- * F2.log(appInstance);
- * }
- * );
- */
- APP_DESTROY_AFTER: 'appDestroyAfter',
- /**
- * Equivalent to `appScriptLoadFailed`. Identifies the app script load failed method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}, scriptInfo )
- * @property APP_SCRIPT_LOAD_FAILED
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
- * function(appConfig, scriptInfo)
- * {
- * F2.log(appConfig.appId);
- * }
- * );
- */
- APP_SCRIPT_LOAD_FAILED: 'appScriptLoadFailed'
- };
- })()
+ * A convenient collection of all available appHandler events.
+ * @class F2.Constants.AppHandlers
+ **/
+ AppHandlers: {
+ /**
+ * Equivalent to `appCreateRoot`. Identifies the create root method for use
+ * in AppHandlers.on/off. When bound using
+ * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ * listener function passed will receive the following argument(s):
+ * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
+ * @property APP_CREATE_ROOT
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_CREATE_ROOT,
+ * function(appConfig) {
+ * // If you want to create a custom root. By default F2 uses the app's outermost HTML element.
+ * // The app's html is not available until after the manifest is retrieved so this logic occurs in F2.Constants.AppHandlers.APP_RENDER
+ * appConfig.root = jQuery('').get(0);
+ * }
+ * );
+ */
+ APP_CREATE_ROOT: 'appCreateRoot',
+ /**
+ * Equivalent to `appRenderBefore`. Identifies the before app render method
+ * for use in AppHandlers.on/off. When bound using
+ * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ * listener function passed will receive the following argument(s):
+ * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
+ * @property APP_RENDER_BEFORE
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_RENDER_BEFORE,
+ * function(appConfig) {
+ * F2.log(appConfig);
+ * }
+ * );
+ */
+ APP_RENDER_BEFORE: 'appRenderBefore',
+ /**
+ * Equivalent to `appRender`. Identifies the app render method for use in
+ * AppHandlers.on/off. When bound using
+ * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ * listener function passed will receive the following argument(s):
+ * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}},
+ * [appHtml](../../app-development.html#app-design)).
+ * @property APP_RENDER
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_RENDER,
+ * function(appConfig, appHtml) {
+ * var $root;
+ *
+ * // If no app root is defined use the app's outer most node
+ * if (!F2.isNativeDOMNode(appConfig.root)) {
+ * appConfig.root = jQuery(appHtml).get(0);
+ * // Get a handle on the root in jQuery
+ * $root = jQuery(appConfig.root);
+ * } else {
+ * // Get a handle on the root in jQuery
+ * $root = jQuery(appConfig.root);
+ * // Append the app html to the root
+ * $root.append(appHtml);
+ * }
+ *
+ * // Append the root to the body by default.
+ * jQuery('body').append($root);
+ * }
+ * );
+ */
+ APP_RENDER: 'appRender',
+ /**
+ * Equivalent to `appRenderAfter`. Identifies the after app render method for use in AppHandlers.on/off.
+ * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
+ * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}} )
+ * @property APP_RENDER_AFTER
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_RENDER_AFTER,
+ * function(appConfig) {
+ * F2.log(appConfig);
+ * }
+ * );
+ */
+ APP_RENDER_AFTER: 'appRenderAfter',
+ /**
+ * Equivalent to `appDestroyBefore`. Identifies the before app destroy
+ * method for use in AppHandlers.(on|off). When bound using
+ * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ * listener function passed will receive the following argument(s):
+ * (appInstance).
+ * @property APP_DESTROY_BEFORE
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
+ * function(appInstance) {
+ * F2.log(appInstance);
+ * }
+ * );
+ */
+ APP_DESTROY_BEFORE: 'appDestroyBefore',
+ /**
+ * Equivalent to `appDestroy`. Identifies the app destroy method for use in AppHandlers.on/off.
+ * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
+ * following argument(s): ( appInstance )
+ * @property APP_DESTROY
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_DESTROY,
+ * function(appInstance) {
+ * // Call the apps destroy method, if it has one
+ * if (appInstance && appInstance.app && appInstance.app.destroy && typeof(appInstance.app.destroy) == 'function') {
+ * appInstance.app.destroy();
+ * } else if (appInstance && appInstance.app && appInstance.app.destroy) {
+ * F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
+ * }
+ *
+ * // Fade out and remove the root
+ * jQuery(appInstance.config.root).fadeOut(500, function() {
+ * jQuery(this).remove();
+ * });
+ * }
+ * );
+ */
+ APP_DESTROY: 'appDestroy',
+ /**
+ * Equivalent to `appDestroyAfter`. Identifies the after app destroy method
+ * for use in AppHandlers.on/off. When bound using
+ * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ * listener function passed will receive the following argument(s):
+ * (appInstance)
+ * @property APP_DESTROY_AFTER
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_DESTROY_AFTER,
+ * function(appInstance) {
+ * F2.log(appInstance);
+ * }
+ * );
+ */
+ APP_DESTROY_AFTER: 'appDestroyAfter',
+ /**
+ * Equivalent to `appScriptLoadFailed`. Identifies the app script load
+ * failed method for use in AppHandlers.on/off. When bound using
+ * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}}
+ * the listener function passed will receive the following argument(s):
+ * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}, scriptInfo)
+ * @property APP_SCRIPT_LOAD_FAILED
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
+ * function(appConfig, scriptInfo) {
+ * F2.log(appConfig.appId);
+ * }
+ * );
+ */
+ APP_SCRIPT_LOAD_FAILED: 'appScriptLoadFailed'
+ }
});
+
/**
* Class stubs for documentation purposes
* @main F2
diff --git a/dist/f2.min.js b/dist/f2.min.js
index 815a4190..87ed3440 100644
--- a/dist/f2.min.js
+++ b/dist/f2.min.js
@@ -1,7 +1,7 @@
-/*! F2 - v1.4.0 - 12-29-2014 - See below for copyright and license */
+/*! F2 - v1.4.0 - 01-15-2015 - See below for copyright and license */
/*!
- * F2 v1.4.0 12-29-2014
+ * F2 v1.4.0 01-15-2015
* Copyright (c) 2014 Markit On Demand, Inc. http://www.openf2.org
*
* "F2" is licensed under the Apache License, Version 2.0 (the "License");
@@ -57,5 +57,5 @@ i&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||eb.removeEvent(a,
* This file creates $ and jQuery variables within the F2 closure scope
*/
var $,jQuery=$=window.jQuery.noConflict(!0);+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$element.find(".modal-dialog").one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.checkScrollbar=function(){this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){if(document.body.clientWidth>=window.innerWidth)return 0;var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),!function(a){function b(){this._events={},this._conf&&c.call(this,this._conf)}function c(a){a&&(this._conf=a,a.delimiter&&(this.delimiter=a.delimiter),a.maxListeners&&(this._events.maxListeners=a.maxListeners),a.wildcard&&(this.wildcard=a.wildcard),a.newListener&&(this.newListener=a.newListener),this.wildcard&&(this.listenerTree={}))}function d(a){this._events={},this.newListener=!1,c.call(this,a)}function e(a,b,c,d){if(!c)return[];var f,g,h,i,j,k,l,m=[],n=b.length,o=b[d],p=b[d+1];if(d===n&&c._listeners){if("function"==typeof c._listeners)return a&&a.push(c._listeners),[c];for(f=0,g=c._listeners.length;g>f;f++)a&&a.push(c._listeners[f]);return[c]}if("*"===o||"**"===o||c[o]){if("*"===o){for(h in c)"_listeners"!==h&&c.hasOwnProperty(h)&&(m=m.concat(e(a,b,c[h],d+1)));return m}if("**"===o){l=d+1===n||d+2===n&&"*"===p,l&&c._listeners&&(m=m.concat(e(a,b,c,n)));for(h in c)"_listeners"!==h&&c.hasOwnProperty(h)&&("*"===h||"**"===h?(c[h]._listeners&&!l&&(m=m.concat(e(a,b,c[h],n))),m=m.concat(e(a,b,c[h],d))):m=m.concat(h===p?e(a,b,c[h],d+2):e(a,b,c[h],d)));return m}m=m.concat(e(a,b,c[o],d+1))}if(i=c["*"],i&&e(a,b,i,d+1),j=c["**"])if(n>d){j._listeners&&e(a,b,j,n);for(h in j)"_listeners"!==h&&j.hasOwnProperty(h)&&(h===p?e(a,b,j[h],d+2):h===o?e(a,b,j[h],d+1):(k={},k[h]=j[h],e(a,b,{"**":k},d+1)))}else j._listeners?e(a,b,j,n):j["*"]&&j["*"]._listeners&&e(a,b,j["*"],n);return m}function f(a,b){a="string"==typeof a?a.split(this.delimiter):a.slice();for(var c=0,d=a.length;d>c+1;c++)if("**"===a[c]&&"**"===a[c+1])return;for(var e=this.listenerTree,f=a.shift();f;){if(e[f]||(e[f]={}),e=e[f],0===a.length){if(e._listeners){if("function"==typeof e._listeners)e._listeners=[e._listeners,b];else if(g(e._listeners)&&(e._listeners.push(b),!e._listeners.warned)){var i=h;"undefined"!=typeof this._events.maxListeners&&(i=this._events.maxListeners),i>0&&e._listeners.length>i&&(e._listeners.warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",e._listeners.length),console.trace())}}else e._listeners=b;return!0}f=a.shift()}return!0}var g=Array.isArray?Array.isArray:function(a){return"[object Array]"===Object.prototype.toString.call(a)},h=10;d.prototype.delimiter=".",d.prototype.setMaxListeners=function(a){this._events||b.call(this),this._events.maxListeners=a,this._conf||(this._conf={}),this._conf.maxListeners=a},d.prototype.event="",d.prototype.once=function(a,b){return this.many(a,1,b),this},d.prototype.many=function(a,b,c){function d(){0===--b&&e.off(a,d),c.apply(this,arguments)}var e=this;if("function"!=typeof c)throw new Error("many only accepts instances of Function");return d._origin=c,this.on(a,d),e},d.prototype.emit=function(){this._events||b.call(this);var a=arguments[0];if("newListener"===a&&!this.newListener&&!this._events.newListener)return!1;if(this._all){for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];for(f=0,c=this._all.length;c>f;f++)this.event=a,this._all[f].apply(this,d)}if("error"===a&&!(this._all||this._events.error||this.wildcard&&this.listenerTree.error))throw arguments[1]instanceof Error?arguments[1]:new Error("Uncaught, unspecified 'error' event.");var g;if(this.wildcard){g=[];var h="string"==typeof a?a.split(this.delimiter):a.slice();e.call(this,g,h,this.listenerTree,0)}else g=this._events[a];if("function"==typeof g){if(this.event=a,1===arguments.length)g.call(this);else if(arguments.length>1)switch(arguments.length){case 2:g.call(this,arguments[1]);break;case 3:g.call(this,arguments[1],arguments[2]);break;default:for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];g.apply(this,d)}return!0}if(g){for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];for(var i=g.slice(),f=0,c=i.length;c>f;f++)this.event=a,i[f].apply(this,d);return i.length>0||this._all}return this._all},d.prototype.on=function(a,c){if("function"==typeof a)return this.onAny(a),this;if("function"!=typeof c)throw new Error("on only accepts instances of Function");if(this._events||b.call(this),this.emit("newListener",a,c),this.wildcard)return f.call(this,a,c),this;if(this._events[a]){if("function"==typeof this._events[a])this._events[a]=[this._events[a],c];else if(g(this._events[a])&&(this._events[a].push(c),!this._events[a].warned)){var d=h;"undefined"!=typeof this._events.maxListeners&&(d=this._events.maxListeners),d>0&&this._events[a].length>d&&(this._events[a].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[a].length),console.trace())}}else this._events[a]=c;return this},d.prototype.onAny=function(a){if(this._all||(this._all=[]),"function"!=typeof a)throw new Error("onAny only accepts instances of Function");return this._all.push(a),this},d.prototype.addListener=d.prototype.on,d.prototype.off=function(a,b){if("function"!=typeof b)throw new Error("removeListener only takes instances of Function");var c,d=[];if(this.wildcard){var f="string"==typeof a?a.split(this.delimiter):a.slice();d=e.call(this,null,f,this.listenerTree,0)}else{if(!this._events[a])return this;c=this._events[a],d.push({_listeners:c})}for(var h=0;hk;k++)if(c[k]===b||c[k].listener&&c[k].listener===b||c[k]._origin&&c[k]._origin===b){j=k;break}if(0>j)continue;return this.wildcard?i._listeners.splice(j,1):this._events[a].splice(j,1),0===c.length&&(this.wildcard?delete i._listeners:delete this._events[a]),this}(c===b||c.listener&&c.listener===b||c._origin&&c._origin===b)&&(this.wildcard?delete i._listeners:delete this._events[a])}return this},d.prototype.offAny=function(a){var b,c=0,d=0;if(a&&this._all&&this._all.length>0){for(b=this._all,c=0,d=b.length;d>c;c++)if(a===b[c])return b.splice(c,1),this}else this._all=[];return this},d.prototype.removeListener=d.prototype.off,d.prototype.removeAllListeners=function(a){if(0===arguments.length)return!this._events||b.call(this),this;if(this.wildcard)for(var c="string"==typeof a?a.split(this.delimiter):a.slice(),d=e.call(this,null,c,this.listenerTree,0),f=0;f9&&g>0,!0}function k(){if(!S){S=!0;for(var a=0;a'):(c=b.createElement("IFRAME"),c.name=a.props.name),c.id=c.name=a.props.name,delete a.props.name,"string"==typeof a.container&&(a.container=b.getElementById(a.container)),a.container||(u(c.style,{position:"absolute",top:"-2000px",left:"0px"}),a.container=b.body);var d=a.props.src;if(a.props.src="javascript:false",u(c,a.props),c.border=c.frameBorder=0,c.allowTransparency=!0,a.container.appendChild(c),a.onLoad&&E(c,"load",a.onLoad),a.usePost){var e,f=a.container.appendChild(b.createElement("form"));if(f.target=c.name,f.action=d,f.method="POST","object"==typeof a.usePost)for(var g in a.usePost)a.usePost.hasOwnProperty(g)&&(B?e=b.createElement(''):(e=b.createElement("INPUT"),e.name=g),e.value=a.usePost[g],f.appendChild(e));f.submit(),f.parentNode.removeChild(f)}else c.src=d;return a.props.src=d,c}function x(a,b){"string"==typeof a&&(a=[a]);for(var c,d=a.length;d--;)if(c=a[d],c=new RegExp("^"==c.substr(0,1)?c:"^"+c.replace(/(\*)/g,".$1").replace(/\?/g,".")+"$"),c.test(b))return!0;return!1}function y(d){var e,f=d.protocol;if(d.isHost=d.isHost||t(V.xdm_p),Q=d.hash||!1,d.props||(d.props={}),d.isHost)d.remote=r(d.remote),d.channel=d.channel||"default"+H++,d.secret=Math.random().toString(16).substring(2),t(f)&&(f=q(c.href)==q(d.remote)?"4":g(a,"postMessage")||g(b,"postMessage")?"1":d.swf&&g(a,"ActiveXObject")&&j()?"6":"Gecko"===navigator.product&&"frameElement"in a&&-1==navigator.userAgent.indexOf("WebKit")?"5":d.remoteHelper?"2":"0");else if(d.channel=V.xdm_c.replace(/["'<>\\]/g,""),d.secret=V.xdm_s,d.remote=V.xdm_e.replace(/["'<>\\]/g,""),f=V.xdm_p,d.acl&&!x(d.acl,d.remote))throw new Error("Access denied for "+d.remote);switch(d.protocol=f,f){case"0":if(u(d,{interval:100,delay:2e3,useResize:!0,useParent:!1,usePolling:!1},!0),d.isHost){if(!d.local){for(var h,i=c.protocol+"//"+c.host,k=b.body.getElementsByTagName("img"),l=k.length;l--;)if(h=k[l],h.src.substring(0,i.length)===i){d.local=h.src;break}d.local||(d.local=a)}var m={xdm_c:d.channel,xdm_p:0};d.local===a?(d.usePolling=!0,d.useParent=!0,d.local=c.protocol+"//"+c.host+c.pathname+c.search,m.xdm_e=d.local,m.xdm_pa=1):m.xdm_e=r(d.local),d.container&&(d.useResize=!1,m.xdm_po=1),d.remote=s(d.remote,m)}else u(d,{channel:V.xdm_c,remote:V.xdm_e,useParent:!t(V.xdm_pa),usePolling:!t(V.xdm_po),useResize:d.useParent?!1:d.useResize});e=[new N.stack.HashTransport(d),new N.stack.ReliableBehavior({}),new N.stack.QueueBehavior({encode:!0,maxLength:4e3-d.remote.length}),new N.stack.VerifyBehavior({initiate:d.isHost})];break;case"1":e=[new N.stack.PostMessageTransport(d)];break;case"2":d.isHost&&(d.remoteHelper=r(d.remoteHelper)),e=[new N.stack.NameTransport(d),new N.stack.QueueBehavior,new N.stack.VerifyBehavior({initiate:d.isHost})];break;case"3":e=[new N.stack.NixTransport(d)];break;case"4":e=[new N.stack.SameOriginTransport(d)];break;case"5":e=[new N.stack.FrameElementTransport(d)];break;case"6":C||j(),e=[new N.stack.FlashTransport(d)]}return e.push(new N.stack.QueueBehavior({lazy:d.lazy,remove:!0})),e}function z(a){for(var b,c={incoming:function(a,b){this.up.incoming(a,b)},outgoing:function(a,b){this.down.outgoing(a,b)},callback:function(a){this.up.callback(a)},init:function(){this.down.init()},destroy:function(){this.down.destroy()}},d=0,e=a.length;e>d;d++)b=a[d],u(b,c,!0),0!==d&&(b.down=a[d-1]),d!==e-1&&(b.up=a[d+1]);return b}function A(a){a.up.down=a.down,a.down.up=a.up,a.up=a.down=null}var B,C,D,E,F,G=this,H=Math.floor(1e4*Math.random()),I=Function.prototype,J=/^((http.?:)\/\/([^:\/\s]+)(:\d+)*)/,K=/[\-\w]+\/\.\.\//,L=/([^:])\/\//g,M="",N={},O=a.easyXDM,P="easyXDM_",Q=!1;if(g(a,"addEventListener"))E=function(a,b,c){a.addEventListener(b,c,!1)},F=function(a,b,c){a.removeEventListener(b,c,!1)};else{if(!g(a,"attachEvent"))throw new Error("Browser not supported");E=function(a,b,c){a.attachEvent("on"+b,c)},F=function(a,b,c){a.detachEvent("on"+b,c)}}var R,S=!1,T=[];if("readyState"in b?(R=b.readyState,S="complete"==R||~navigator.userAgent.indexOf("AppleWebKit/")&&("loaded"==R||"interactive"==R)):S=!!b.body,!S){if(g(a,"addEventListener"))E(b,"DOMContentLoaded",k);else if(E(b,"readystatechange",function(){"complete"==b.readyState&&k()}),b.documentElement.doScroll&&a===top){var U=function(){if(!S){try{b.documentElement.doScroll("left")}catch(a){return void d(U,1)}k()}};U()}E(a,"load",k)}var V=function(a){a=a.substring(1).split("&");for(var b,c={},d=a.length;d--;)b=a[d].split("="),c[b[0]]=e(b[1]);return c}(/xdm_e=/.test(c.search)?c.search:c.hash),W=function(){var a={},b={a:[1,2,3]},c='{"a":[1,2,3]}';return"undefined"!=typeof JSON&&"function"==typeof JSON.stringify&&JSON.stringify(b).replace(/\s/g,"")===c?JSON:(Object.toJSON&&Object.toJSON(b).replace(/\s/g,"")===c&&(a.stringify=Object.toJSON),"function"==typeof String.prototype.evalJSON&&(b=c.evalJSON(),b.a&&3===b.a.length&&3===b.a[2]&&(a.parse=function(a){return a.evalJSON()})),a.stringify&&a.parse?(W=function(){return a},a):null)};u(N,{version:"2.4.19.3",query:V,stack:{},apply:u,getJSONObject:W,whenReady:l,noConflict:n}),N.DomHelper={on:E,un:F,requiresJSON:function(c){h(a,"JSON")||b.write('')}},function(){var a={};N.Fn={set:function(b,c){a[b]=c},get:function(b,c){if(a.hasOwnProperty(b)){var d=a[b];return c&&delete a[b],d}}}}(),N.Socket=function(a){var b=z(y(a).concat([{incoming:function(b,c){a.onMessage(b,c)},callback:function(b){a.onReady&&a.onReady(b)}}])),c=q(a.remote);this.origin=q(a.remote),this.destroy=function(){b.destroy()},this.postMessage=function(a){b.outgoing(a,c)},b.init()},N.Rpc=function(a,b){if(b.local)for(var c in b.local)if(b.local.hasOwnProperty(c)){var d=b.local[c];"function"==typeof d&&(b.local[c]={method:d})}var e=z(y(a).concat([new N.stack.RpcBehavior(this,b),{callback:function(b){a.onReady&&a.onReady(b)}}]));this.origin=q(a.remote),this.destroy=function(){e.destroy()},e.init()},N.stack.SameOriginTransport=function(a){var b,e,f,g;return b={outgoing:function(a,b,c){f(a),c&&c()},destroy:function(){e&&(e.parentNode.removeChild(e),e=null)},onDOMReady:function(){g=q(a.remote),a.isHost?(u(a.props,{src:s(a.remote,{xdm_e:c.protocol+"//"+c.host+c.pathname,xdm_c:a.channel,xdm_p:4}),name:P+a.channel+"_provider"}),e=w(a),N.Fn.set(a.channel,function(a){return f=a,d(function(){b.up.callback(!0)},0),function(a){b.up.incoming(a,g)}})):(f=m().Fn.get(a.channel,!0)(function(a){b.up.incoming(a,g)}),d(function(){b.up.callback(!0)},0))},init:function(){l(b.onDOMReady,b)}}},N.stack.FlashTransport=function(a){function e(a){d(function(){h.up.incoming(a,j)},0)}function g(c){var d=a.swf+"?host="+a.isHost,e="easyXDM_swf_"+Math.floor(1e4*Math.random());N.Fn.set("flash_loaded"+c.replace(/[\-.]/g,"_"),function(){N.stack.FlashTransport[c].swf=k=m.firstChild;for(var a=N.stack.FlashTransport[c].queue,b=0;b"}var h,i,j,k,m;return h={outgoing:function(b,c,d){k.postMessage(a.channel,b.toString()),d&&d()},destroy:function(){try{k.destroyChannel(a.channel)}catch(b){}k=null,i&&(i.parentNode.removeChild(i),i=null)},onDOMReady:function(){j=a.remote,N.Fn.set("flash_"+a.channel+"_init",function(){d(function(){h.up.callback(!0)})}),N.Fn.set("flash_"+a.channel+"_onMessage",e),a.swf=r(a.swf);var b=o(a.swf),f=function(){N.stack.FlashTransport[b].init=!0,k=N.stack.FlashTransport[b].swf,k.createChannel(a.channel,a.secret,q(a.remote),a.isHost),a.isHost&&(D&&a.swfNoThrottle&&u(a.props,{position:"fixed",right:0,top:0,height:"20px",width:"20px"}),u(a.props,{src:s(a.remote,{xdm_e:q(c.href),xdm_c:a.channel,xdm_p:6,xdm_s:a.secret}),name:P+a.channel+"_provider"}),i=w(a))};N.stack.FlashTransport[b]&&N.stack.FlashTransport[b].init?f():N.stack.FlashTransport[b]?N.stack.FlashTransport[b].queue.push(f):(N.stack.FlashTransport[b]={queue:[f]},g(b))},init:function(){l(h.onDOMReady,h)}}},N.stack.PostMessageTransport=function(b){function e(a){if(a.origin)return q(a.origin);if(a.uri)return q(a.uri);if(a.domain)return c.protocol+"//"+a.domain;throw"Unable to retrieve the origin of the event"}function f(a){var c=e(a);c==j&&a.data.substring(0,b.channel.length+1)==b.channel+" "&&g.up.incoming(a.data.substring(b.channel.length+1),c)}var g,h,i,j;return g={outgoing:function(a,c,d){i.postMessage(b.channel+" "+a,c||j),d&&d()},destroy:function(){F(a,"message",f),h&&(i=null,h.parentNode.removeChild(h),h=null)},onDOMReady:function(){if(j=q(b.remote),b.isHost){var e=function(c){c.data==b.channel+"-ready"&&(i="postMessage"in h.contentWindow?h.contentWindow:h.contentWindow.document,F(a,"message",e),E(a,"message",f),d(function(){g.up.callback(!0)},0))};E(a,"message",e),u(b.props,{src:s(b.remote,{xdm_e:q(c.href),xdm_c:b.channel,xdm_p:1}),name:P+b.channel+"_provider"}),h=w(b)}else E(a,"message",f),i="postMessage"in a.parent?a.parent:a.parent.document,i.postMessage(b.channel+"-ready",j),d(function(){g.up.callback(!0)},0)},init:function(){l(g.onDOMReady,g)}}},N.stack.FrameElementTransport=function(e){var f,g,h,i;return f={outgoing:function(a,b,c){h.call(this,a),c&&c()},destroy:function(){g&&(g.parentNode.removeChild(g),g=null)},onDOMReady:function(){i=q(e.remote),e.isHost?(u(e.props,{src:s(e.remote,{xdm_e:q(c.href),xdm_c:e.channel,xdm_p:5}),name:P+e.channel+"_provider"}),g=w(e),g.fn=function(a){return delete g.fn,h=a,d(function(){f.up.callback(!0)},0),function(a){f.up.incoming(a,i)}}):(b.referrer&&q(b.referrer)!=V.xdm_e&&(a.top.location=V.xdm_e),h=a.frameElement.fn(function(a){f.up.incoming(a,i)}),f.up.callback(!0))},init:function(){l(f.onDOMReady,f)}}},N.stack.NameTransport=function(a){function b(b){var c=a.remoteHelper+(h?"#_3":"#_2")+a.channel;i.contentWindow.sendMessage(b,c)}function c(){h?2!==++k&&h||g.up.callback(!0):(b("ready"),g.up.callback(!0))}function e(a){g.up.incoming(a,n)}function f(){m&&d(function(){m(!0)},0)}var g,h,i,j,k,m,n,o;return g={outgoing:function(a,c,d){m=d,b(a)},destroy:function(){i.parentNode.removeChild(i),i=null,h&&(j.parentNode.removeChild(j),j=null)},onDOMReady:function(){h=a.isHost,k=0,n=q(a.remote),a.local=r(a.local),h?(N.Fn.set(a.channel,function(b){h&&"ready"===b&&(N.Fn.set(a.channel,e),c())}),o=s(a.remote,{xdm_e:a.local,xdm_c:a.channel,xdm_p:2}),u(a.props,{src:o+"#"+a.channel,name:P+a.channel+"_provider"}),j=w(a)):(a.remoteHelper=a.remote,N.Fn.set(a.channel,e));var b=function(){var e=i||this;F(e,"load",b),N.Fn.set(a.channel+"_load",f),function g(){"function"==typeof e.contentWindow.sendMessage?c():d(g,50)}()};i=w({props:{src:a.local+"#_4"+a.channel},onLoad:b})},init:function(){l(g.onDOMReady,g)}}},N.stack.HashTransport=function(b){function c(a){if(p){var c=b.remote+"#"+n++ +"_"+a;(i||!r?p.contentWindow:p).location=c}}function e(a){m=a,h.up.incoming(m.substring(m.indexOf("_")+1),s)}function f(){if(o){var a=o.location.href,b="",c=a.indexOf("#");-1!=c&&(b=a.substring(c)),b&&b!=m&&e(b)}}function g(){j=setInterval(f,k)}var h,i,j,k,m,n,o,p,r,s;return h={outgoing:function(a){c(a)},destroy:function(){a.clearInterval(j),(i||!r)&&p.parentNode.removeChild(p),p=null},onDOMReady:function(){if(i=b.isHost,k=b.interval,m="#"+b.channel,n=0,r=b.useParent,s=q(b.remote),i){if(u(b.props,{src:b.remote,name:P+b.channel+"_provider"}),r)b.onLoad=function(){o=a,g(),h.up.callback(!0)};else{var c=0,e=b.delay/50;!function f(){if(++c>e)throw new Error("Unable to reference listenerwindow");try{o=p.contentWindow.frames[P+b.channel+"_consumer"]}catch(a){}o?(g(),h.up.callback(!0)):d(f,50)}()}p=w(b)}else o=a,g(),r?(p=parent,h.up.callback(!0)):(u(b,{props:{src:b.remote+"#"+b.channel+new Date,name:P+b.channel+"_consumer"},onLoad:function(){h.up.callback(!0)}}),p=w(b))},init:function(){l(h.onDOMReady,h)}}},N.stack.ReliableBehavior=function(){var a,b,c=0,d=0,e="";return a={incoming:function(f,g){var h=f.indexOf("_"),i=f.substring(0,h).split(",");f=f.substring(h+1),i[0]==c&&(e="",b&&b(!0)),f.length>0&&(a.down.outgoing(i[1]+","+c+"_"+e,g),d!=i[1]&&(d=i[1],a.up.incoming(f,g)))},outgoing:function(f,g,h){e=f,b=h,a.down.outgoing(d+","+ ++c+"_"+f,g)}}},N.stack.QueueBehavior=function(a){function b(){if(a.remove&&0===h.length)return void A(c);if(!i&&0!==h.length&&!g){i=!0;var e=h.shift();c.down.outgoing(e.data,e.origin,function(a){i=!1,e.callback&&d(function(){e.callback(a)},0),b()})}}var c,g,h=[],i=!0,j="",k=0,l=!1,m=!1;return c={init:function(){t(a)&&(a={}),a.maxLength&&(k=a.maxLength,m=!0),a.lazy?l=!0:c.down.init()},callback:function(a){i=!1;var d=c.up;b(),d.callback(a)},incoming:function(b,d){if(m){var f=b.indexOf("_"),g=parseInt(b.substring(0,f),10);j+=b.substring(f+1),0===g&&(a.encode&&(j=e(j)),c.up.incoming(j,d),j="")}else c.up.incoming(b,d)},outgoing:function(d,e,g){a.encode&&(d=f(d));var i,j=[];if(m){for(;0!==d.length;)i=d.substring(0,k),d=d.substring(i.length),j.push(i);for(;i=j.shift();)h.push({data:j.length+"_"+i,origin:e,callback:0===j.length?g:null})}else h.push({data:d,origin:e,callback:g});l?c.down.init():b()},destroy:function(){g=!0,c.down.destroy()}}},N.stack.VerifyBehavior=function(a){function b(){d=Math.random().toString(16).substring(2),c.down.outgoing(d)}var c,d,e;return c={incoming:function(f,g){var h=f.indexOf("_");-1===h?f===d?c.up.callback(!0):e||(e=f,a.initiate||b(),c.down.outgoing(f)):f.substring(0,h)===e&&c.up.incoming(f.substring(h+1),g)},outgoing:function(a,b,e){c.down.outgoing(d+"_"+a,b,e)},callback:function(){a.initiate&&b()}}},N.stack.RpcBehavior=function(a,b){function c(a){a.jsonrpc="2.0",f.down.outgoing(g.stringify(a))}function d(a,b){var d=Array.prototype.slice;return function(){var e,f=arguments.length,g={method:b};f>0&&"function"==typeof arguments[f-1]?(f>1&&"function"==typeof arguments[f-2]?(e={success:arguments[f-2],error:arguments[f-1]},g.params=d.call(arguments,0,f-2)):(e={success:arguments[f-1]},g.params=d.call(arguments,0,f-1)),j[""+ ++h]=e,g.id=h):g.params=d.call(arguments,0),a.namedParams&&1===g.params.length&&(g.params=g.params[0]),c(g)}}function e(a,b,d,e){if(!d)return void(b&&c({id:b,error:{code:-32601,message:"Procedure not found."}}));var f,g;b?(f=function(a){f=I,c({id:b,result:a})},g=function(a,d){g=I;var e={id:b,error:{code:-32099,message:a}};d&&(e.error.data=d),c(e)}):f=g=I,i(e)||(e=[e]);try{var h=d.method.apply(d.scope,e.concat([f,g]));t(h)||f(h)}catch(j){g(j.message)}}var f,g=b.serializer||W(),h=0,j={};return f={incoming:function(a){var d=g.parse(a);if(d.method)b.handle?b.handle(d,c):e(d.method,d.id,b.local[d.method],d.params);else{var f=j[d.id];d.error?f.error&&f.error(d.error):f.success&&f.success(d.result),delete j[d.id]}},init:function(){if(b.remote)for(var c in b.remote)b.remote.hasOwnProperty(c)&&(a[c]=d(b.remote[c],c));f.down.init()},destroy:function(){for(var c in b.remote)b.remote.hasOwnProperty(c)&&a.hasOwnProperty(c)&&delete a[c];f.down.destroy()}}},G.easyXDM=N}(window,document,location,window.setTimeout,decodeURIComponent,encodeURIComponent);var F2;F2=function(){var a=function(a,c){function d(a){var b=[];return a.replace(/^(\.\.?(\/|$))+/,"").replace(/\/(\.(\/|$))+/g,"/").replace(/\/\.\.$/,"/../").replace(/\/?[^\/]*/g,function(a){"/.."===a?b.pop():b.push(a)}),b.join("").replace(/^\//,"/"===a.charAt(0)?"/":"")}return c=b(c||""),a=b(a||""),c&&a?(c.protocol||a.protocol)+(c.protocol||c.authority?c.authority:a.authority)+d(c.protocol||c.authority||"/"===c.pathname.charAt(0)?c.pathname:c.pathname?(a.authority&&!a.pathname?"/":"")+a.pathname.slice(0,a.pathname.lastIndexOf("/")+1)+c.pathname:a.pathname)+(c.protocol||c.authority||c.pathname?c.search:c.search||a.search)+c.hash:null},b=function(a){var b=String(a).replace(/^\s+|\s+$/g,"").match(/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);return b?{href:b[0]||"",protocol:b[1]||"",authority:b[2]||"",host:b[3]||"",hostname:b[4]||"",port:b[5]||"",pathname:b[6]||"",search:b[7]||"",hash:b[8]||""}:null};return{appConfigReplacer:function(a,b){return"root"==a||"ui"==a||"height"==a?void 0:b},Apps:{},extend:function(a,b,c){var d="function"==typeof b,e=a?a.split("."):[],f=this;b=b||{},"F2"===e[0]&&(e=e.slice(1));for(var g=0,h=e.length;h>g;g++)f[e[g]]||(f[e[g]]=d&&g+1==h?b:{}),f=f[e[g]];if(!d)for(var i in b)("undefined"==typeof f[i]||c)&&(f[i]=b[i]);return f},guid:function(){var a=function(){return(65536*(1+Math.random())|0).toString(16).substring(1)};return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()},inArray:function(a,b){return jQuery.inArray(a,b)>-1},isLocalRequest:function(b){var c,d,e=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,f=b.toLowerCase(),g=e.exec(f);try{c=location.href}catch(h){c=document.createElement("a"),c.href="",c=c.href}c=c.toLowerCase(),g||(f=a(c,f).toLowerCase(),g=e.exec(f)),d=e.exec(c)||[];var i=!(g&&(g[1]!==d[1]||g[2]!==d[2]||(g[3]||("http:"===g[1]?"80":"443"))!==(d[3]||("http:"===d[1]?"80":"443"))));return i},isNativeDOMNode:function(a){var b="object"==typeof Node?a instanceof Node:a&&"object"==typeof a&&"number"==typeof a.nodeType&&"string"==typeof a.nodeName,c="object"==typeof HTMLElement?a instanceof HTMLElement:a&&"object"==typeof a&&1===a.nodeType&&"string"==typeof a.nodeName;return b||c},log:function(){if(window.console){var a="log",b=Array.prototype.slice.apply(arguments);b.length>1&&b[0]in window.console&&(a=b.shift()),window.console[a]&&window.console[a].apply(window.console,b)}},parse:function(a){return JSON.parse(a)},stringify:function(a,b,c){return JSON.stringify(a,b,c)
-},version:function(){return"1.4.0"}}}(),F2.extend("AppHandlers",function(){var a=F2.guid(),b=F2.guid(),c={appCreateRoot:[],appRenderBefore:[],appDestroyBefore:[],appRenderAfter:[],appDestroyAfter:[],appRender:[],appDestroy:[],appScriptLoadFailed:[]},d={appRender:function(a,b){var c=null;F2.isNativeDOMNode(a.root)?(c=jQuery(a.root),c.append(b)):(a.root=jQuery(b).get(0),c=jQuery(a.root)),jQuery("body").append(c)},appDestroy:function(a){a&&a.app&&a.app.destroy&&"function"==typeof a.app.destroy?a.app.destroy():a&&a.app&&a.app.destroy&&F2.log(a.config.appId+" has a destroy property, but destroy is not of type function and as such will not be executed."),jQuery(a.config.root).fadeOut(500,function(){jQuery(this).remove()})}},e=function(a,b,c,d){f(a);var e={func:c,namespace:b,domNode:F2.isNativeDOMNode(c)?c:null};if(!e.func&&!e.domNode)throw"Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.";if(e.domNode&&!d)throw"Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.";return e},f=function(c){if(a!=c&&b!=c)throw"Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken()."},g=function(a,b,d){if(f(a),d||b)if(!d&&b)c[b]=[];else if(d&&!b){d=d.toLowerCase();for(var e in c){for(var g=c[e],h=[],i=0,j=g.length;j>i;i++){var k=g[i];k&&(k.namespace&&k.namespace.toLowerCase()==d||h.push(k))}g=h}}else if(d&&c[b]){d=d.toLowerCase();for(var l=[],m=0,n=c[b].length;n>m;m++){var o=c[b][m];o&&(o.namespace&&o.namespace.toLowerCase()==d||l.push(o))}c[b]=l}};return{getToken:function(){return delete this.getToken,a},__f2GetToken:function(){return delete this.__f2GetToken,b},__trigger:function(a,e){if(a!=b)throw"Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().";if(!c||!c[e])throw"Invalid EventKey passed. Check your inputs and try again.";for(var f=[],g=2,h=arguments.length;h>g;g++)f.push(arguments[g]);if(0===c[e].length&&d[e])return d[e].apply(F2,f),this;if(0===c[e].length&&!c[e])return this;for(var i=0,j=c[e].length;j>i;i++){var k=c[e][i];if(k.domNode&&arguments[2]&&arguments[2].root&&arguments[3]){var l=jQuery(arguments[2].root).append(arguments[3]);jQuery(k.domNode).append(l)}else k.domNode&&arguments[2]&&!arguments[2].root&&arguments[3]?(arguments[2].root=jQuery(arguments[3]).get(0),jQuery(k.domNode).append(arguments[2].root)):k.func.apply(F2,f)}return this},on:function(a,b,d){var f=null;if(!b)throw"eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.";if(b.indexOf(".")>-1){var g=b.split(".");b=g[0],f=g[1]}if(!c||!c[b])throw"Invalid EventKey passed. Check your inputs and try again.";return c[b].push(e(a,f,d,"appRender"==b)),this},off:function(a,b){var d=null;if(!b)throw"eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.";if(b.indexOf(".")>-1){var e=b.split(".");b=e[0],d=e[1]}if(!c||!c[b])throw"Invalid EventKey passed. Check your inputs and try again.";return g(a,b,d),this}}}()),F2.extend("Constants",{AppHandlers:function(){return{APP_CREATE_ROOT:"appCreateRoot",APP_RENDER_BEFORE:"appRenderBefore",APP_RENDER:"appRender",APP_RENDER_AFTER:"appRenderAfter",APP_DESTROY_BEFORE:"appDestroyBefore",APP_DESTROY:"appDestroy",APP_DESTROY_AFTER:"appDestroyAfter",APP_SCRIPT_LOAD_FAILED:"appScriptLoadFailed"}}()}),F2.extend("",{App:function(){return{init:function(){}}},AppConfig:{appId:"",context:{},enableBatchRequests:!1,height:0,instanceId:"",isSecure:!1,containerLocale:null,localeSupport:[],manifestUrl:"",maxWidth:0,minGridSize:4,minWidth:300,name:"",root:void 0,ui:void 0,views:[]},AppManifest:{apps:[],inlineScripts:[],scripts:[],styles:[]},AppContent:{data:{},html:"",status:""},ContainerConfig:{afterAppRender:function(){},appRender:function(){},beforeAppRender:function(){},debugMode:!1,locale:null,scriptErrorTimeout:7e3,isSecureAppPage:!1,secureAppPagePath:"",supportedViews:[],UI:{Mask:{backgroundColor:"#FFF",loadingIcon:"",opacity:.6,useClasses:!1,zIndex:2}},xhr:{dataType:function(){},type:function(){},url:function(){}},loadScripts:function(){},loadStyles:function(){}}}),F2.extend("Constants",{Css:function(){var a="f2-";return{APP:a+"app",APP_CONTAINER:a+"app-container",APP_TITLE:a+"app-title",APP_VIEW:a+"app-view",APP_VIEW_TRIGGER:a+"app-view-trigger",MASK:a+"mask",MASK_CONTAINER:a+"mask-container"}}(),Events:function(){var a="App.",b="Container.";return{APP_SYMBOL_CHANGE:a+"symbolChange",APP_WIDTH_CHANGE:a+"widthChange.",CONTAINER_SYMBOL_CHANGE:b+"symbolChange",CONTAINER_WIDTH_CHANGE:b+"widthChange",CONTAINER_LOCALE_CHANGE:b+"localeChange"}}(),JSONP_CALLBACK:"F2_jsonpCallback_",Sockets:{EVENT:"__event__",LOAD:"__socketLoad__",RPC:"__rpc__",RPC_CALLBACK:"__rpcCallback__",UI_RPC:"__uiRpc__"},Views:{DATA_ATTRIBUTE:"data-f2-view",ABOUT:"about",HELP:"help",HOME:"home",REMOVE:"remove",SETTINGS:"settings"}}),F2.extend("Events",function(){var a=new EventEmitter2({wildcard:!0});return a.setMaxListeners(0),{_socketEmit:function(){return EventEmitter2.prototype.emit.apply(a,[].slice.call(arguments))},emit:function(){return F2.Rpc.broadcast(F2.Constants.Sockets.EVENT,[].slice.call(arguments)),EventEmitter2.prototype.emit.apply(a,[].slice.call(arguments))},many:function(b,c,d){return a.many(b,c,d)},off:function(b,c){return a.off(b,c)},on:function(b,c){return a.on(b,c)},once:function(b,c){return a.once(b,c)}}}()),F2.extend("Rpc",function(){var a={},b="",c={},d=new RegExp("^"+F2.Constants.Sockets.EVENT),e=new RegExp("^"+F2.Constants.Sockets.RPC),f=new RegExp("^"+F2.Constants.Sockets.RPC_CALLBACK),g=new RegExp("^"+F2.Constants.Sockets.LOAD),h=new RegExp("^"+F2.Constants.Sockets.UI_RPC),i=function(){var a,b=!1,d=[],e=new easyXDM.Socket({onMessage:function(f,h){if(!b&&g.test(f)){f=f.replace(g,"");var i=F2.parse(f);2==i.length&&(a=i[0],c[a.instanceId]={config:a,socket:e},F2.registerApps([a],[i[1]]),jQuery.each(d,function(){l(a,f,h)}),b=!0)}else b?l(a,f,h):d.push(f)}})},j=function(a,c){var d=jQuery(a.root);if(d.is("."+F2.Constants.Css.APP_CONTAINER)||d.find("."+F2.Constants.Css.APP_CONTAINER),!d.length)return void F2.log("Unable to locate app in order to establish secure connection.");var e={scrolling:"no",style:{width:"100%"}};a.height&&(e.style.height=a.height+"px");var f=new easyXDM.Socket({remote:b,container:d.get(0),props:e,onMessage:function(b,c){l(a,b,c)},onReady:function(){f.postMessage(F2.Constants.Sockets.LOAD+F2.stringify([a,c],F2.appConfigReplacer))}});return f},k=function(a,b){return function(){F2.Rpc.call(a,F2.Constants.Sockets.RPC_CALLBACK,b,[].slice.call(arguments).slice(2))}},l=function(b,c){function g(a,b){for(var c=String(b).split("."),d=0;d','
','
','
','','
',a,"
","
",'
',b,"
",'","
","
",""].join("")};return{hideMask:function(a){F2.UI.hideMask(b.instanceId,a)},Modals:function(){var a=function(a){return e("Alert",a)},c=function(a){return e("Confirm",a,!0)};return{alert:function(c,d){return F2.isInit()?void(F2.Rpc.isRemote(b.instanceId)?F2.Rpc.call(b.instanceId,F2.Constants.Sockets.UI_RPC,"Modals.alert",[].slice.call(arguments)):jQuery(a(c)).on("show.bs.modal",function(){var a=this;jQuery(a).find(".btn-primary").on("click",function(){jQuery(a).modal("hide").remove(),(d||jQuery.noop)()})}).modal({backdrop:!0})):void F2.log("F2.init() must be called before F2.UI.Modals.alert()")},confirm:function(a,d,e){return F2.isInit()?void(F2.Rpc.isRemote(b.instanceId)?F2.Rpc.call(b.instanceId,F2.Constants.Sockets.UI_RPC,"Modals.confirm",[].slice.call(arguments)):jQuery(c(a)).on("show.bs.modal",function(){var a=this;jQuery(a).find(".btn-ok").on("click",function(){jQuery(a).modal("hide").remove(),(d||jQuery.noop)()}),jQuery(a).find(".btn-cancel").on("click",function(){jQuery(a).modal("hide").remove(),(e||jQuery.noop)()})}).modal({backdrop:!0})):void F2.log("F2.init() must be called before F2.UI.Modals.confirm()")}}}(),setTitle:function(a){F2.Rpc.isRemote(b.instanceId)?F2.Rpc.call(b.instanceId,F2.Constants.Sockets.UI_RPC,"setTitle",[a]):jQuery(b.root).find("."+F2.Constants.Css.APP_TITLE).text(a)},showMask:function(a,c){F2.UI.showMask(b.instanceId,a,c)},updateHeight:d,Views:function(){var a=new EventEmitter2,e=/change/i;a.setMaxListeners(0);var f=function(a){return e.test(a)?!0:(F2.log('"'+a+'" is not a valid F2.UI.Views event name'),!1)};return{change:function(e){"function"==typeof e?this.on("change",e):"string"==typeof e&&(b.isSecure&&!F2.Rpc.isRemote(b.instanceId)?F2.Rpc.call(b.instanceId,F2.Constants.Sockets.UI_RPC,"Views.change",[].slice.call(arguments)):F2.inArray(e,b.views)&&(jQuery("."+F2.Constants.Css.APP_VIEW,c).addClass("hide").filter('[data-f2-view="'+e+'"]',c).removeClass("hide"),d(),a.emit("change",e)))},off:function(b,c){f(b)&&a.off(b,c)},on:function(b,c){f(b)&&a.on(b,c)}}}()}};return b.hideMask=function(a,b){if(!F2.isInit())return void F2.log("F2.init() must be called before F2.UI.hideMask()");if(F2.Rpc.isRemote(a)&&!jQuery(b).is("."+F2.Constants.Css.APP))F2.Rpc.call(a,F2.Constants.Sockets.RPC,"F2.UI.hideMask",[a,jQuery(b).selector]);else{var c=jQuery(b);c.find("> ."+F2.Constants.Css.MASK).remove(),c.removeClass(F2.Constants.Css.MASK_CONTAINER),c.data(F2.Constants.Css.MASK_CONTAINER)&&c.css({position:"static"})}},b.init=function(b){a=b,a.UI=jQuery.extend(!0,{},F2.ContainerConfig.UI,a.UI||{})},b.showMask=function(b,c,d){if(!F2.isInit())return void F2.log("F2.init() must be called before F2.UI.showMask()");if(F2.Rpc.isRemote(b)&&jQuery(c).is("."+F2.Constants.Css.APP))F2.Rpc.call(b,F2.Constants.Sockets.RPC,"F2.UI.showMask",[b,jQuery(c).selector,d]);else{d&&!a.UI.Mask.loadingIcon&&F2.log("Unable to display loading icon. Please set F2.ContainerConfig.UI.Mask.loadingIcon when calling F2.init();");var e=jQuery(c).addClass(F2.Constants.Css.MASK_CONTAINER),f=jQuery("
").height("100%").width("100%").addClass(F2.Constants.Css.MASK);a.UI.Mask.useClasses||f.css({"background-color":a.UI.Mask.backgroundColor,"background-image":a.UI.Mask.loadingIcon?"url("+a.UI.Mask.loadingIcon+")":"","background-position":"50% 50%","background-repeat":"no-repeat",display:"block",left:0,"min-height":30,padding:0,position:"absolute",top:0,"z-index":a.UI.Mask.zIndex,filter:"alpha(opacity="+100*a.UI.Mask.opacity+")",opacity:a.UI.Mask.opacity}),"static"===e.css("position")&&(e.css({position:"relative"}),e.data(F2.Constants.Css.MASK_CONTAINER,!0)),e.append(f)}},b}()),F2.extend("",function(){var _apps={},_config=!1,_bUsesAppHandlers=!1,_sAppHandlerToken=F2.AppHandlers.__f2GetToken(),_loadedScripts={},_loadedStyles={},_loadingScripts={},_afterAppRender=function(a,b){var c=_config.afterAppRender||function(a,b){return jQuery(b).appendTo("body")},d=c(a,b);return _config.afterAppRender&&!d?void F2.log("F2.ContainerConfig.afterAppRender() must return the DOM Element that contains the app"):(jQuery(d).addClass(F2.Constants.Css.APP),d.get(0))},_appRender=function(a,b){return b=_outerHtml(jQuery(b).addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId)),_config.appRender&&(b=_config.appRender(a,b)),_outerHtml(b)},_beforeAppRender=function(a){var b=_config.beforeAppRender||jQuery.noop;return b(a)},_appScriptLoadFailed=function(a,b){var c=_config.appScriptLoadFailed||jQuery.noop;return c(a,b)},_createAppConfig=function(a){return a=jQuery.extend(!0,{},a),a.instanceId=a.instanceId||F2.guid(),a.views=a.views||[],F2.inArray(F2.Constants.Views.HOME,a.views)||a.views.push(F2.Constants.Views.HOME),F2.ContainerConfig.locale&&(a.containerLocale=F2.ContainerConfig.locale),a},_getAppConfigFromElement=function(a){var b;if(a){var c=a.getAttribute("data-f2-appid"),d=a.getAttribute("data-f2-manifesturl");if(c&&d){b={appId:c,enableBatchRequests:a.hasAttribute("data-f2-enablebatchrequests"),isSecure:a.hasAttribute("data-f2-issecure"),manifestUrl:d,root:a};var e=a.getAttribute("data-f2-context");if(e)try{b.context=F2.parse(e)}catch(f){console.warn('F2: "data-f2-context" of node is not valid JSON','"'+f+'"')}}}return b},_hasNonTextChildNodes=function(a){var b=!1;if(a.hasChildNodes())for(var c=0,d=a.childNodes.length;d>c;c++)if(1===a.childNodes[c].nodeType){b=!0;break}return b},_hydrateContainerConfig=function(a){a.scriptErrorTimeout||(a.scriptErrorTimeout=F2.ContainerConfig.scriptErrorTimeout),a.debugMode!==!0&&(a.debugMode=F2.ContainerConfig.debugMode),a.locale&&"string"==typeof a.locale&&(F2.ContainerConfig.locale=a.locale)},_initAppEvents=function(a){jQuery(a.root).on("click","."+F2.Constants.Css.APP_VIEW_TRIGGER+"["+F2.Constants.Views.DATA_ATTRIBUTE+"]",function(b){b.preventDefault();var c=jQuery(this).attr(F2.Constants.Views.DATA_ATTRIBUTE).toLowerCase();c==F2.Constants.Views.REMOVE?F2.removeApp(a.instanceId):a.ui.Views.change(c)})},_initContainerEvents=function(){var a,b=function(){F2.Events.emit(F2.Constants.Events.CONTAINER_WIDTH_CHANGE)};jQuery(window).on("resize",function(){clearTimeout(a),a=setTimeout(b,100)}),F2.Events.on(F2.Constants.Events.CONTAINER_LOCALE_CHANGE,function(a){a.locale&&"string"==typeof a.locale&&(F2.ContainerConfig.locale=a.locale)})},_isPlaceholderElement=function(a){return F2.isNativeDOMNode(a)&&!_hasNonTextChildNodes(a)&&!!a.getAttribute("data-f2-appid")&&!!a.getAttribute("data-f2-manifesturl")},_isInit=function(){return!!_config},_createAppInstance=function(a,b){a.ui=new F2.UI(a),void 0!==F2.Apps[a.appId]&&("function"==typeof F2.Apps[a.appId]?setTimeout(function(){_apps[a.instanceId].app=new F2.Apps[a.appId](a,b,a.root),void 0!==_apps[a.instanceId].app.init&&_apps[a.instanceId].app.init()},0):F2.log("app initialization class is defined but not a function. ("+a.appId+")"))},_loadApps=function(appConfigs,appManifest){if(appConfigs=[].concat(appConfigs),1==appConfigs.length&&appConfigs[0].isSecure&&!_config.isSecureAppPage)return void _loadSecureApp(appConfigs[0],appManifest);if(appConfigs.length!=appManifest.apps.length)return void F2.log("The number of apps defined in the AppManifest do not match the number requested.",appManifest);var _loadStyles=function(a,b){if(_config.loadStyles)return _config.loadStyles(a,b);var c=null,d=!!document.createStyleSheet;jQuery.each(a,function(a,b){var e=b,f=b.toLowerCase();_loadedStyles[f]||(d?document.createStyleSheet(e):(c=c||[],c.push('')),_loadedStyles[f]=!0)}),c&&jQuery("head").append(c.join("")),b()},_loadScripts=function(a,b){if(_config.loadScripts)return _config.loadScripts(a,b);if(!a.length)return b();var c=window.document,d=a.length,e=0,f=c&&(c.head||c.getElementsByTagName("head")[0]),g=f&&f.getElementsByTagName("base")[0]||null,h="addEventListener"in window?{}:{loaded:!0,complete:!0},i=function(a){setTimeout(function(){var b={src:a.target.src,appId:appConfigs[0].appId};F2.log("Script defined in '"+b.appId+"' failed to load '"+b.src+"'"),F2.Events.emit("RESOURCE_FAILED_TO_LOAD",b),_bUsesAppHandlers?F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,appConfigs[0],b.src):_appScriptLoadFailed(appConfigs[0],b.src)},_config.scriptErrorTimeout)},j=function(){++e===d&&b()},k=function(a,b){var c,d=_loadingScripts[a];if(d){for(var e=0;ei;i++)try{eval(inlines[i])}catch(exception){F2.log("Error loading inline script: "+exception+"\n\n"+inlines[i]),F2.Events.emit("RESOURCE_FAILED_TO_LOAD",{appId:appConfigs[0].appId,src:inlines[i],err:exception}),_bUsesAppHandlers?F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,appConfigs[0],exception):_appScriptLoadFailed(appConfigs[0],exception)}cb()}},elementInDocument=function(a){if(a)for(;a.parentNode;)if(a=a.parentNode,a===document)return!0;return!1},_loadHtml=function(a){jQuery.each(a,function(a,b){if(_isPlaceholderElement(appConfigs[a].root))jQuery(appConfigs[a].root).addClass(F2.Constants.Css.APP).append(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+appConfigs[a].appId));else if(_bUsesAppHandlers){F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER,appConfigs[a],_outerHtml(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+appConfigs[a].appId)));var c=appConfigs[a].appId,d=appConfigs[a].root;if(!d)throw"Root for "+c+" must be a native DOM element and cannot be null or undefined. Check your AppHandler callbacks to ensure you have set App root to a native DOM element.";if(!elementInDocument(d))throw"App root for "+c+" was not appended to the DOM. Check your AppHandler callbacks to ensure you have rendered the app root to the DOM.";if(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER_AFTER,appConfigs[a]),!F2.isNativeDOMNode(d))throw"App root for "+c+" must be a native DOM element. Check your AppHandler callbacks to ensure you have set app root to a native DOM element."}else appConfigs[a].root=_afterAppRender(appConfigs[a],_appRender(appConfigs[a],b.html));_initAppEvents(appConfigs[a])})},scripts=appManifest.scripts||[],styles=appManifest.styles||[],inlines=appManifest.inlineScripts||[],apps=appManifest.apps||[];_loadStyles(styles,function(){_loadHtml(apps),_loadScripts(scripts,function(){appConfigs[0]&&F2.Events.emit("APP_SCRIPTS_LOADED",{appId:appConfigs[0].appId,scripts:scripts}),_loadInlineScripts(inlines,function(){jQuery.each(appConfigs,function(a,b){_createAppInstance(b,appManifest.apps[a])})})})})},_loadSecureApp=function(a,b){if(_config.secureAppPagePath){if(_isPlaceholderElement(a.root))jQuery(a.root).addClass(F2.Constants.Css.APP).append(jQuery("").addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId));else if(_bUsesAppHandlers){var c=jQuery(a.root);if(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER,a,_outerHtml(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId))),0===c.parents("body:first").length)throw"App was never rendered on the page. Please check your AppHandler callbacks to ensure you have rendered the app root to the DOM.";if(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER_AFTER,a),!a.root)throw"App Root must be a native dom node and can not be null or undefined. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.";if(!F2.isNativeDOMNode(a.root))throw"App Root must be a native dom node. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node."}else a.root=_afterAppRender(a,_appRender(a,""));a.ui=new F2.UI(a),_initAppEvents(a),F2.Rpc.register(a,b)}else F2.log('Unable to load secure app: "secureAppPagePath" is not defined in F2.ContainerConfig.')},_outerHtml=function(a){return jQuery("").append(a).html()},_validateApp=function(a){return a.appId?a.root||a.manifestUrl?!0:(F2.log('"manifestUrl" missing from app object'),!1):(F2.log('"appId" missing from app object'),!1)},_validateContainerConfig=function(){if(_config&&_config.xhr){if("function"!=typeof _config.xhr&&"object"!=typeof _config.xhr)throw"ContainerConfig.xhr should be a function or an object";if(_config.xhr.dataType&&"function"!=typeof _config.xhr.dataType)throw"ContainerConfig.xhr.dataType should be a function";if(_config.xhr.type&&"function"!=typeof _config.xhr.type)throw"ContainerConfig.xhr.type should be a function";if(_config.xhr.url&&"function"!=typeof _config.xhr.url)throw"ContainerConfig.xhr.url should be a function"}return!0};return{getContainerState:function(){return _isInit()?jQuery.map(_apps,function(a){return{appId:a.config.appId}}):void F2.log("F2.init() must be called before F2.getContainerState()")},getContainerLocale:function(){return _isInit()?F2.ContainerConfig.locale:void F2.log("F2.init() must be called before F2.getContainerLocale()")},init:function(a){_config=a||{},_validateContainerConfig(),_hydrateContainerConfig(_config),_bUsesAppHandlers=!(_config.beforeAppRender||_config.appRender||_config.afterAppRender||_config.appScriptLoadFailed),(_config.secureAppPagePath||_config.isSecureAppPage)&&F2.Rpc.init(_config.secureAppPagePath?_config.secureAppPagePath:!1),F2.UI.init(_config),_config.isSecureAppPage||_initContainerEvents()},isInit:_isInit,loadPlaceholders:function(a){var b=[],c=[],d=function(a){a&&b.push(a)},e=function(a){if(a)for(var b=0,c=a.length;c>b;b++)d(a[b])};if(a&&!F2.isNativeDOMNode(a))throw'"parentNode" must be null or a DOM node';a&&a.hasAttribute("data-f2-appid")?d(a):(a=a||document,a.querySelectorAll&&e(a.querySelectorAll("[data-f2-appid]")));for(var f=0,g=b.length;g>f;f++){var h=_getAppConfigFromElement(b[f]);c.push(h)}c.length&&F2.registerApps(c)},registerApps:function(a,b){if(!_isInit())return void F2.log("F2.init() must be called before F2.registerApps()");if(!a)return void F2.log("At least one AppConfig must be passed when calling F2.registerApps()");var c=[],d={},e={},f=!1;return a=[].concat(a),b=[].concat(b||[]),f=!!b.length,a.length?a.length&&f&&a.length!=b.length?void F2.log('The length of "apps" does not equal the length of "appManifests"'):(jQuery.each(a,function(a,e){if(e=_createAppConfig(e),e.root=e.root||null,_validateApp(e)){if(_apps[e.instanceId]={config:e},e.root&&!_isPlaceholderElement(e.root)){if(!e.root&&"string"!=typeof e.root&&!F2.isNativeDOMNode(e.root))throw F2.log("AppConfig invalid for pre-load, not a valid string and not dom node"),F2.log("AppConfig instance:",e),"Preloaded appConfig.root property must be a native dom node or a string representing a sizzle selector. Please check your inputs and try again.";if(1!=jQuery(e.root).length)throw F2.log("AppConfig invalid for pre-load, root not unique"),F2.log("AppConfig instance:",e),F2.log("Number of dom node instances:",jQuery(e.root).length),"Preloaded appConfig.root property must map to a unique dom node. Please check your inputs and try again.";return _createAppInstance(e),void _initAppEvents(e)}_isPlaceholderElement(e.root)||(_bUsesAppHandlers?(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_CREATE_ROOT,e),F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER_BEFORE,e)):e.root=_beforeAppRender(e)),f?_loadApps(e,b[a]):e.enableBatchRequests&&!e.isSecure?(d[e.manifestUrl.toLowerCase()]=d[e.manifestUrl.toLowerCase()]||[],d[e.manifestUrl.toLowerCase()].push(e)):c.push({apps:[e],url:e.manifestUrl})}}),void(f||(jQuery.each(d,function(a,b){c.push({url:a,apps:b})}),jQuery.each(c,function(a,b){var c=F2.Constants.JSONP_CALLBACK+b.apps[0].appId;e[c]=e[c]||[],e[c].push(b)}),jQuery.each(e,function(a,b){var c=function(d,e){if(e){var f=e.url,g="GET",h="jsonp",i=function(){c(a,b.pop())},j=function(){jQuery.each(e.apps,function(a,b){b.name=b.name||b.appId,F2.log("Removed failed "+b.name+" app",b),F2.removeApp(b.instanceId)})},k=function(a){_loadApps(e.apps,a)};if(_config.xhr&&_config.xhr.dataType&&(h=_config.xhr.dataType(e.url,e.apps),"string"!=typeof h))throw"ContainerConfig.xhr.dataType should return a string";if(_config.xhr&&_config.xhr.type&&(g=_config.xhr.type(e.url,e.apps),"string"!=typeof g))throw"ContainerConfig.xhr.type should return a string";if(_config.xhr&&_config.xhr.url&&(f=_config.xhr.url(e.url,e.apps),"string"!=typeof f))throw"ContainerConfig.xhr.url should return a string";var l=_config.xhr;"function"!=typeof l&&(l=function(a,b,c,f,i){jQuery.ajax({url:a,type:g,data:{params:F2.stringify(e.apps,F2.appConfigReplacer)},jsonp:!1,jsonpCallback:d,dataType:h,success:c,error:function(a,b,c){F2.log("Failed to load app(s)",c.toString(),e.apps),f()},complete:i})}),l(f,e.apps,k,j,i)}};c(a,b.pop())})))):void F2.log("At least one AppConfig must be passed when calling F2.registerApps()")},removeAllApps:function(){return _isInit()?void jQuery.each(_apps,function(a,b){F2.removeApp(b.config.instanceId)}):void F2.log("F2.init() must be called before F2.removeAllApps()")},removeApp:function(a){return _isInit()?void(_apps[a]&&(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_DESTROY_BEFORE,_apps[a]),F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_DESTROY,_apps[a]),F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_DESTROY_AFTER,_apps[a]),delete _apps[a])):void F2.log("F2.init() must be called before F2.removeApp()")}}}()),jQuery(function(){var a=[],b=function(b){b&&a.push(b)},c=function(a){if(a)for(var c=0,d=a.length;d>c;c++)b(a[c])};if(b(document.getElementById("f2-autoload")),document.querySelectorAll&&(c(document.querySelectorAll("[data-f2-autoload]")),c(document.querySelectorAll(".f2-autoload"))),a.length){F2.init();for(var d=0,e=a.length;e>d;d++)F2.loadPlaceholders(a[d])}}),exports.F2=F2,"undefined"!=typeof define&&define.amd&&define(function(){return F2})}}("undefined"!=typeof exports?exports:window);
+},version:function(){return"1.4.0"}}}(),F2.extend("AppHandlers",function(){function a(a,c,d,e){b(a);var f={domNode:null,func:null,namespace:c};if(F2.isNativeDOMNode(d)?f.domNode=d:"function"==typeof d&&(f.func=d),!f.func&&!f.domNode)throw new Error("Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.");if(f.domNode&&!e)throw new Error("Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.");return f}function b(a){if(g!==a&&h!==a)throw new Error("Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().")}function c(a){if(a!=h)throw new Error("Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().")}function d(a,b){for(var c=a.slice(),d=c.length;d>=0;d--)(!c[d]||c[d].namespace&&c[d].namespace.toLowerCase()===b)&&c.splice(d,1);return c}function e(a,c,f){if(b(a),f)if(f=f.toLowerCase(),c&&c in i)i[c]=d(i[c],f);else for(var g in i)e(a,g,f);else c&&(i[c]=[])}function f(a){var b="";if(-1!==a.indexOf(".")){var c=a.split(".");a=c[0],b=c[1]}return{key:a,namespace:b}}var g=F2.guid(),h=F2.guid(),i={appCreateRoot:[],appRenderBefore:[],appDestroyBefore:[],appRenderAfter:[],appDestroyAfter:[],appRender:[],appDestroy:[],appScriptLoadFailed:[]},j={appRender:function(a,b){F2.isNativeDOMNode(a.root)?jQuery(a.root).append(b):a.root=jQuery(b).get(0),document.body.appendChild(a.root)},appDestroy:function(a){a.app&&a.app.destroy&&("function"==typeof a.app.destroy?a.app.destroy():F2.log(a.config.appId+" has a destroy property, but destroy is not of type function and as such will not be executed.")),jQuery(a.config.root).fadeOut(500,function(){jQuery(this).remove()})}};return{getToken:function(){return delete this.getToken,g},__f2GetToken:function(){return delete this.__f2GetToken,h},__trigger:function(a,b){if(c(a),!i[b])throw new Error("Invalid EventKey passed. Check your inputs and try again.");var d=Array.prototype.slice.call(arguments,2);if(!i[b].length&&j[b])j[b].apply(F2,d);else for(var e=0;e=4){var g=arguments[2],h=arguments[3];g.root?jQuery(g.root).append(h):g.root=jQuery(h).get(0),jQuery(f.domNode).append(g.root)}else f.func.apply(F2,d)}return this},on:function(b,c,d){if(!c)throw new Error("eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.");var e=f(c);if(!i[e.key])throw new Error("Invalid eventKey passed. Check your inputs and try again.");var g="appRender"===e.key,h=a(b,e.namespace,d,g);return i[e.key].push(h),this},off:function(a,b){if(!b)throw new Error("eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.");var c=f(b);if(!i[c.key])throw new Error("Invalid EventKey passed. Check your inputs and try again.");return e(a,c.key,c.namespace),this}}}()),F2.extend("Constants",{AppHandlers:{APP_CREATE_ROOT:"appCreateRoot",APP_RENDER_BEFORE:"appRenderBefore",APP_RENDER:"appRender",APP_RENDER_AFTER:"appRenderAfter",APP_DESTROY_BEFORE:"appDestroyBefore",APP_DESTROY:"appDestroy",APP_DESTROY_AFTER:"appDestroyAfter",APP_SCRIPT_LOAD_FAILED:"appScriptLoadFailed"}}),F2.extend("",{App:function(){return{init:function(){}}},AppConfig:{appId:"",context:{},enableBatchRequests:!1,height:0,instanceId:"",isSecure:!1,containerLocale:null,localeSupport:[],manifestUrl:"",maxWidth:0,minGridSize:4,minWidth:300,name:"",root:void 0,ui:void 0,views:[]},AppManifest:{apps:[],inlineScripts:[],scripts:[],styles:[]},AppContent:{data:{},html:"",status:""},ContainerConfig:{afterAppRender:function(){},appRender:function(){},beforeAppRender:function(){},debugMode:!1,locale:null,scriptErrorTimeout:7e3,isSecureAppPage:!1,secureAppPagePath:"",supportedViews:[],UI:{Mask:{backgroundColor:"#FFF",loadingIcon:"",opacity:.6,useClasses:!1,zIndex:2}},xhr:{dataType:function(){},type:function(){},url:function(){}},loadScripts:function(){},loadStyles:function(){}}}),F2.extend("Constants",{Css:function(){var a="f2-";return{APP:a+"app",APP_CONTAINER:a+"app-container",APP_TITLE:a+"app-title",APP_VIEW:a+"app-view",APP_VIEW_TRIGGER:a+"app-view-trigger",MASK:a+"mask",MASK_CONTAINER:a+"mask-container"}}(),Events:function(){var a="App.",b="Container.";return{APP_SYMBOL_CHANGE:a+"symbolChange",APP_WIDTH_CHANGE:a+"widthChange.",CONTAINER_SYMBOL_CHANGE:b+"symbolChange",CONTAINER_WIDTH_CHANGE:b+"widthChange",CONTAINER_LOCALE_CHANGE:b+"localeChange"}}(),JSONP_CALLBACK:"F2_jsonpCallback_",Sockets:{EVENT:"__event__",LOAD:"__socketLoad__",RPC:"__rpc__",RPC_CALLBACK:"__rpcCallback__",UI_RPC:"__uiRpc__"},Views:{DATA_ATTRIBUTE:"data-f2-view",ABOUT:"about",HELP:"help",HOME:"home",REMOVE:"remove",SETTINGS:"settings"}}),F2.extend("Events",function(){var a=new EventEmitter2({wildcard:!0});return a.setMaxListeners(0),{_socketEmit:function(){return EventEmitter2.prototype.emit.apply(a,[].slice.call(arguments))},emit:function(){return F2.Rpc.broadcast(F2.Constants.Sockets.EVENT,[].slice.call(arguments)),EventEmitter2.prototype.emit.apply(a,[].slice.call(arguments))},many:function(b,c,d){return a.many(b,c,d)},off:function(b,c){return a.off(b,c)},on:function(b,c){return a.on(b,c)},once:function(b,c){return a.once(b,c)}}}()),F2.extend("Rpc",function(){var a={},b="",c={},d=new RegExp("^"+F2.Constants.Sockets.EVENT),e=new RegExp("^"+F2.Constants.Sockets.RPC),f=new RegExp("^"+F2.Constants.Sockets.RPC_CALLBACK),g=new RegExp("^"+F2.Constants.Sockets.LOAD),h=new RegExp("^"+F2.Constants.Sockets.UI_RPC),i=function(){var a,b=!1,d=[],e=new easyXDM.Socket({onMessage:function(f,h){if(!b&&g.test(f)){f=f.replace(g,"");var i=F2.parse(f);2==i.length&&(a=i[0],c[a.instanceId]={config:a,socket:e},F2.registerApps([a],[i[1]]),jQuery.each(d,function(){l(a,f,h)}),b=!0)}else b?l(a,f,h):d.push(f)}})},j=function(a,c){var d=jQuery(a.root);if(d.is("."+F2.Constants.Css.APP_CONTAINER)||d.find("."+F2.Constants.Css.APP_CONTAINER),!d.length)return void F2.log("Unable to locate app in order to establish secure connection.");var e={scrolling:"no",style:{width:"100%"}};a.height&&(e.style.height=a.height+"px");var f=new easyXDM.Socket({remote:b,container:d.get(0),props:e,onMessage:function(b,c){l(a,b,c)},onReady:function(){f.postMessage(F2.Constants.Sockets.LOAD+F2.stringify([a,c],F2.appConfigReplacer))}});return f},k=function(a,b){return function(){F2.Rpc.call(a,F2.Constants.Sockets.RPC_CALLBACK,b,[].slice.call(arguments).slice(2))}},l=function(b,c){function g(a,b){for(var c=String(b).split("."),d=0;d','
','
','
','','
',a,"
","
",'
',b,"
",'","
","
","
"].join("")};return{hideMask:function(a){F2.UI.hideMask(b.instanceId,a)},Modals:function(){var a=function(a){return e("Alert",a)},c=function(a){return e("Confirm",a,!0)};return{alert:function(c,d){return F2.isInit()?void(F2.Rpc.isRemote(b.instanceId)?F2.Rpc.call(b.instanceId,F2.Constants.Sockets.UI_RPC,"Modals.alert",[].slice.call(arguments)):jQuery(a(c)).on("show.bs.modal",function(){var a=this;jQuery(a).find(".btn-primary").on("click",function(){jQuery(a).modal("hide").remove(),(d||jQuery.noop)()})}).modal({backdrop:!0})):void F2.log("F2.init() must be called before F2.UI.Modals.alert()")},confirm:function(a,d,e){return F2.isInit()?void(F2.Rpc.isRemote(b.instanceId)?F2.Rpc.call(b.instanceId,F2.Constants.Sockets.UI_RPC,"Modals.confirm",[].slice.call(arguments)):jQuery(c(a)).on("show.bs.modal",function(){var a=this;jQuery(a).find(".btn-ok").on("click",function(){jQuery(a).modal("hide").remove(),(d||jQuery.noop)()}),jQuery(a).find(".btn-cancel").on("click",function(){jQuery(a).modal("hide").remove(),(e||jQuery.noop)()})}).modal({backdrop:!0})):void F2.log("F2.init() must be called before F2.UI.Modals.confirm()")}}}(),setTitle:function(a){F2.Rpc.isRemote(b.instanceId)?F2.Rpc.call(b.instanceId,F2.Constants.Sockets.UI_RPC,"setTitle",[a]):jQuery(b.root).find("."+F2.Constants.Css.APP_TITLE).text(a)},showMask:function(a,c){F2.UI.showMask(b.instanceId,a,c)},updateHeight:d,Views:function(){var a=new EventEmitter2,e=/change/i;a.setMaxListeners(0);var f=function(a){return e.test(a)?!0:(F2.log('"'+a+'" is not a valid F2.UI.Views event name'),!1)};return{change:function(e){"function"==typeof e?this.on("change",e):"string"==typeof e&&(b.isSecure&&!F2.Rpc.isRemote(b.instanceId)?F2.Rpc.call(b.instanceId,F2.Constants.Sockets.UI_RPC,"Views.change",[].slice.call(arguments)):F2.inArray(e,b.views)&&(jQuery("."+F2.Constants.Css.APP_VIEW,c).addClass("hide").filter('[data-f2-view="'+e+'"]',c).removeClass("hide"),d(),a.emit("change",e)))},off:function(b,c){f(b)&&a.off(b,c)},on:function(b,c){f(b)&&a.on(b,c)}}}()}};return b.hideMask=function(a,b){if(!F2.isInit())return void F2.log("F2.init() must be called before F2.UI.hideMask()");if(F2.Rpc.isRemote(a)&&!jQuery(b).is("."+F2.Constants.Css.APP))F2.Rpc.call(a,F2.Constants.Sockets.RPC,"F2.UI.hideMask",[a,jQuery(b).selector]);else{var c=jQuery(b);c.find("> ."+F2.Constants.Css.MASK).remove(),c.removeClass(F2.Constants.Css.MASK_CONTAINER),c.data(F2.Constants.Css.MASK_CONTAINER)&&c.css({position:"static"})}},b.init=function(b){a=b,a.UI=jQuery.extend(!0,{},F2.ContainerConfig.UI,a.UI||{})},b.showMask=function(b,c,d){if(!F2.isInit())return void F2.log("F2.init() must be called before F2.UI.showMask()");if(F2.Rpc.isRemote(b)&&jQuery(c).is("."+F2.Constants.Css.APP))F2.Rpc.call(b,F2.Constants.Sockets.RPC,"F2.UI.showMask",[b,jQuery(c).selector,d]);else{d&&!a.UI.Mask.loadingIcon&&F2.log("Unable to display loading icon. Please set F2.ContainerConfig.UI.Mask.loadingIcon when calling F2.init();");var e=jQuery(c).addClass(F2.Constants.Css.MASK_CONTAINER),f=jQuery("
").height("100%").width("100%").addClass(F2.Constants.Css.MASK);a.UI.Mask.useClasses||f.css({"background-color":a.UI.Mask.backgroundColor,"background-image":a.UI.Mask.loadingIcon?"url("+a.UI.Mask.loadingIcon+")":"","background-position":"50% 50%","background-repeat":"no-repeat",display:"block",left:0,"min-height":30,padding:0,position:"absolute",top:0,"z-index":a.UI.Mask.zIndex,filter:"alpha(opacity="+100*a.UI.Mask.opacity+")",opacity:a.UI.Mask.opacity}),"static"===e.css("position")&&(e.css({position:"relative"}),e.data(F2.Constants.Css.MASK_CONTAINER,!0)),e.append(f)}},b}()),F2.extend("",function(){var _apps={},_config=!1,_bUsesAppHandlers=!1,_sAppHandlerToken=F2.AppHandlers.__f2GetToken(),_loadedScripts={},_loadedStyles={},_loadingScripts={},_afterAppRender=function(a,b){var c=_config.afterAppRender||function(a,b){return jQuery(b).appendTo("body")},d=c(a,b);return _config.afterAppRender&&!d?void F2.log("F2.ContainerConfig.afterAppRender() must return the DOM Element that contains the app"):(jQuery(d).addClass(F2.Constants.Css.APP),d.get(0))},_appRender=function(a,b){return b=_outerHtml(jQuery(b).addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId)),_config.appRender&&(b=_config.appRender(a,b)),_outerHtml(b)},_beforeAppRender=function(a){var b=_config.beforeAppRender||jQuery.noop;return b(a)},_appScriptLoadFailed=function(a,b){var c=_config.appScriptLoadFailed||jQuery.noop;return c(a,b)},_createAppConfig=function(a){return a=jQuery.extend(!0,{},a),a.instanceId=a.instanceId||F2.guid(),a.views=a.views||[],F2.inArray(F2.Constants.Views.HOME,a.views)||a.views.push(F2.Constants.Views.HOME),F2.ContainerConfig.locale&&(a.containerLocale=F2.ContainerConfig.locale),a},_getAppConfigFromElement=function(a){var b;if(a){var c=a.getAttribute("data-f2-appid"),d=a.getAttribute("data-f2-manifesturl");if(c&&d){b={appId:c,enableBatchRequests:a.hasAttribute("data-f2-enablebatchrequests"),isSecure:a.hasAttribute("data-f2-issecure"),manifestUrl:d,root:a};var e=a.getAttribute("data-f2-context");if(e)try{b.context=F2.parse(e)}catch(f){console.warn('F2: "data-f2-context" of node is not valid JSON','"'+f+'"')}}}return b},_hasNonTextChildNodes=function(a){var b=!1;if(a.hasChildNodes())for(var c=0,d=a.childNodes.length;d>c;c++)if(1===a.childNodes[c].nodeType){b=!0;break}return b},_hydrateContainerConfig=function(a){a.scriptErrorTimeout||(a.scriptErrorTimeout=F2.ContainerConfig.scriptErrorTimeout),a.debugMode!==!0&&(a.debugMode=F2.ContainerConfig.debugMode),a.locale&&"string"==typeof a.locale&&(F2.ContainerConfig.locale=a.locale)},_initAppEvents=function(a){jQuery(a.root).on("click","."+F2.Constants.Css.APP_VIEW_TRIGGER+"["+F2.Constants.Views.DATA_ATTRIBUTE+"]",function(b){b.preventDefault();var c=jQuery(this).attr(F2.Constants.Views.DATA_ATTRIBUTE).toLowerCase();c==F2.Constants.Views.REMOVE?F2.removeApp(a.instanceId):a.ui.Views.change(c)})},_initContainerEvents=function(){var a,b=function(){F2.Events.emit(F2.Constants.Events.CONTAINER_WIDTH_CHANGE)};jQuery(window).on("resize",function(){clearTimeout(a),a=setTimeout(b,100)}),F2.Events.on(F2.Constants.Events.CONTAINER_LOCALE_CHANGE,function(a){a.locale&&"string"==typeof a.locale&&(F2.ContainerConfig.locale=a.locale)})},_isPlaceholderElement=function(a){return F2.isNativeDOMNode(a)&&!_hasNonTextChildNodes(a)&&!!a.getAttribute("data-f2-appid")&&!!a.getAttribute("data-f2-manifesturl")},_isInit=function(){return!!_config},_createAppInstance=function(a,b){a.ui=new F2.UI(a),void 0!==F2.Apps[a.appId]&&("function"==typeof F2.Apps[a.appId]?setTimeout(function(){_apps[a.instanceId].app=new F2.Apps[a.appId](a,b,a.root),void 0!==_apps[a.instanceId].app.init&&_apps[a.instanceId].app.init()},0):F2.log("app initialization class is defined but not a function. ("+a.appId+")"))},_loadApps=function(appConfigs,appManifest){if(appConfigs=[].concat(appConfigs),1==appConfigs.length&&appConfigs[0].isSecure&&!_config.isSecureAppPage)return void _loadSecureApp(appConfigs[0],appManifest);if(appConfigs.length!=appManifest.apps.length)return void F2.log("The number of apps defined in the AppManifest do not match the number requested.",appManifest);var _loadStyles=function(a,b){if(_config.loadStyles)return _config.loadStyles(a,b);var c=null,d=!!document.createStyleSheet;jQuery.each(a,function(a,b){var e=b,f=b.toLowerCase();_loadedStyles[f]||(d?document.createStyleSheet(e):(c=c||[],c.push('')),_loadedStyles[f]=!0)}),c&&jQuery("head").append(c.join("")),b()},_loadScripts=function(a,b){if(_config.loadScripts)return _config.loadScripts(a,b);if(!a.length)return b();var c=window.document,d=a.length,e=0,f=c&&(c.head||c.getElementsByTagName("head")[0]),g=f&&f.getElementsByTagName("base")[0]||null,h="addEventListener"in window?{}:{loaded:!0,complete:!0},i=function(a){setTimeout(function(){var b={src:a.target.src,appId:appConfigs[0].appId};F2.log("Script defined in '"+b.appId+"' failed to load '"+b.src+"'"),F2.Events.emit("RESOURCE_FAILED_TO_LOAD",b),_bUsesAppHandlers?F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,appConfigs[0],b.src):_appScriptLoadFailed(appConfigs[0],b.src)},_config.scriptErrorTimeout)},j=function(){++e===d&&b()},k=function(a,b){var c,d=_loadingScripts[a];if(d){for(var e=0;ei;i++)try{eval(inlines[i])}catch(exception){F2.log("Error loading inline script: "+exception+"\n\n"+inlines[i]),F2.Events.emit("RESOURCE_FAILED_TO_LOAD",{appId:appConfigs[0].appId,src:inlines[i],err:exception}),_bUsesAppHandlers?F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,appConfigs[0],exception):_appScriptLoadFailed(appConfigs[0],exception)}cb()}},elementInDocument=function(a){if(a)for(;a.parentNode;)if(a=a.parentNode,a===document)return!0;return!1},_loadHtml=function(a){jQuery.each(a,function(a,b){if(_isPlaceholderElement(appConfigs[a].root))jQuery(appConfigs[a].root).addClass(F2.Constants.Css.APP).append(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+appConfigs[a].appId));else if(_bUsesAppHandlers){F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER,appConfigs[a],_outerHtml(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+appConfigs[a].appId)));var c=appConfigs[a].appId,d=appConfigs[a].root;if(!d)throw"Root for "+c+" must be a native DOM element and cannot be null or undefined. Check your AppHandler callbacks to ensure you have set App root to a native DOM element.";if(!elementInDocument(d))throw"App root for "+c+" was not appended to the DOM. Check your AppHandler callbacks to ensure you have rendered the app root to the DOM.";if(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER_AFTER,appConfigs[a]),!F2.isNativeDOMNode(d))throw"App root for "+c+" must be a native DOM element. Check your AppHandler callbacks to ensure you have set app root to a native DOM element."}else appConfigs[a].root=_afterAppRender(appConfigs[a],_appRender(appConfigs[a],b.html));_initAppEvents(appConfigs[a])})},scripts=appManifest.scripts||[],styles=appManifest.styles||[],inlines=appManifest.inlineScripts||[],apps=appManifest.apps||[];_loadStyles(styles,function(){_loadHtml(apps),_loadScripts(scripts,function(){appConfigs[0]&&F2.Events.emit("APP_SCRIPTS_LOADED",{appId:appConfigs[0].appId,scripts:scripts}),_loadInlineScripts(inlines,function(){jQuery.each(appConfigs,function(a,b){_createAppInstance(b,appManifest.apps[a])})})})})},_loadSecureApp=function(a,b){if(_config.secureAppPagePath){if(_isPlaceholderElement(a.root))jQuery(a.root).addClass(F2.Constants.Css.APP).append(jQuery("").addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId));else if(_bUsesAppHandlers){var c=jQuery(a.root);if(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER,a,_outerHtml(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId))),0===c.parents("body:first").length)throw"App was never rendered on the page. Please check your AppHandler callbacks to ensure you have rendered the app root to the DOM.";if(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER_AFTER,a),!a.root)throw"App Root must be a native dom node and can not be null or undefined. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.";if(!F2.isNativeDOMNode(a.root))throw"App Root must be a native dom node. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node."}else a.root=_afterAppRender(a,_appRender(a,""));a.ui=new F2.UI(a),_initAppEvents(a),F2.Rpc.register(a,b)}else F2.log('Unable to load secure app: "secureAppPagePath" is not defined in F2.ContainerConfig.')},_outerHtml=function(a){return jQuery("").append(a).html()},_validateApp=function(a){return a.appId?a.root||a.manifestUrl?!0:(F2.log('"manifestUrl" missing from app object'),!1):(F2.log('"appId" missing from app object'),!1)},_validateContainerConfig=function(){if(_config&&_config.xhr){if("function"!=typeof _config.xhr&&"object"!=typeof _config.xhr)throw"ContainerConfig.xhr should be a function or an object";if(_config.xhr.dataType&&"function"!=typeof _config.xhr.dataType)throw"ContainerConfig.xhr.dataType should be a function";if(_config.xhr.type&&"function"!=typeof _config.xhr.type)throw"ContainerConfig.xhr.type should be a function";if(_config.xhr.url&&"function"!=typeof _config.xhr.url)throw"ContainerConfig.xhr.url should be a function"}return!0};return{getContainerState:function(){return _isInit()?jQuery.map(_apps,function(a){return{appId:a.config.appId}}):void F2.log("F2.init() must be called before F2.getContainerState()")},getContainerLocale:function(){return _isInit()?F2.ContainerConfig.locale:void F2.log("F2.init() must be called before F2.getContainerLocale()")},init:function(a){_config=a||{},_validateContainerConfig(),_hydrateContainerConfig(_config),_bUsesAppHandlers=!(_config.beforeAppRender||_config.appRender||_config.afterAppRender||_config.appScriptLoadFailed),(_config.secureAppPagePath||_config.isSecureAppPage)&&F2.Rpc.init(_config.secureAppPagePath?_config.secureAppPagePath:!1),F2.UI.init(_config),_config.isSecureAppPage||_initContainerEvents()},isInit:_isInit,loadPlaceholders:function(a){var b=[],c=[],d=function(a){a&&b.push(a)},e=function(a){if(a)for(var b=0,c=a.length;c>b;b++)d(a[b])};if(a&&!F2.isNativeDOMNode(a))throw'"parentNode" must be null or a DOM node';a&&a.hasAttribute("data-f2-appid")?d(a):(a=a||document,a.querySelectorAll&&e(a.querySelectorAll("[data-f2-appid]")));for(var f=0,g=b.length;g>f;f++){var h=_getAppConfigFromElement(b[f]);c.push(h)}c.length&&F2.registerApps(c)},registerApps:function(a,b){if(!_isInit())return void F2.log("F2.init() must be called before F2.registerApps()");if(!a)return void F2.log("At least one AppConfig must be passed when calling F2.registerApps()");var c=[],d={},e={},f=!1;return a=[].concat(a),b=[].concat(b||[]),f=!!b.length,a.length?a.length&&f&&a.length!=b.length?void F2.log('The length of "apps" does not equal the length of "appManifests"'):(jQuery.each(a,function(a,e){if(e=_createAppConfig(e),e.root=e.root||null,_validateApp(e)){if(_apps[e.instanceId]={config:e},e.root&&!_isPlaceholderElement(e.root)){if(!e.root&&"string"!=typeof e.root&&!F2.isNativeDOMNode(e.root))throw F2.log("AppConfig invalid for pre-load, not a valid string and not dom node"),F2.log("AppConfig instance:",e),"Preloaded appConfig.root property must be a native dom node or a string representing a sizzle selector. Please check your inputs and try again.";if(1!=jQuery(e.root).length)throw F2.log("AppConfig invalid for pre-load, root not unique"),F2.log("AppConfig instance:",e),F2.log("Number of dom node instances:",jQuery(e.root).length),"Preloaded appConfig.root property must map to a unique dom node. Please check your inputs and try again.";return _createAppInstance(e),void _initAppEvents(e)}_isPlaceholderElement(e.root)||(_bUsesAppHandlers?(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_CREATE_ROOT,e),F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER_BEFORE,e)):e.root=_beforeAppRender(e)),f?_loadApps(e,b[a]):e.enableBatchRequests&&!e.isSecure?(d[e.manifestUrl.toLowerCase()]=d[e.manifestUrl.toLowerCase()]||[],d[e.manifestUrl.toLowerCase()].push(e)):c.push({apps:[e],url:e.manifestUrl})}}),void(f||(jQuery.each(d,function(a,b){c.push({url:a,apps:b})}),jQuery.each(c,function(a,b){var c=F2.Constants.JSONP_CALLBACK+b.apps[0].appId;e[c]=e[c]||[],e[c].push(b)}),jQuery.each(e,function(a,b){var c=function(d,e){if(e){var f=e.url,g="GET",h="jsonp",i=function(){c(a,b.pop())},j=function(){jQuery.each(e.apps,function(a,b){b.name=b.name||b.appId,F2.log("Removed failed "+b.name+" app",b),F2.removeApp(b.instanceId)})},k=function(a){_loadApps(e.apps,a)};if(_config.xhr&&_config.xhr.dataType&&(h=_config.xhr.dataType(e.url,e.apps),"string"!=typeof h))throw"ContainerConfig.xhr.dataType should return a string";if(_config.xhr&&_config.xhr.type&&(g=_config.xhr.type(e.url,e.apps),"string"!=typeof g))throw"ContainerConfig.xhr.type should return a string";if(_config.xhr&&_config.xhr.url&&(f=_config.xhr.url(e.url,e.apps),"string"!=typeof f))throw"ContainerConfig.xhr.url should return a string";var l=_config.xhr;"function"!=typeof l&&(l=function(a,b,c,f,i){jQuery.ajax({url:a,type:g,data:{params:F2.stringify(e.apps,F2.appConfigReplacer)},jsonp:!1,jsonpCallback:d,dataType:h,success:c,error:function(a,b,c){F2.log("Failed to load app(s)",c.toString(),e.apps),f()},complete:i})}),l(f,e.apps,k,j,i)}};c(a,b.pop())})))):void F2.log("At least one AppConfig must be passed when calling F2.registerApps()")},removeAllApps:function(){return _isInit()?void jQuery.each(_apps,function(a,b){F2.removeApp(b.config.instanceId)}):void F2.log("F2.init() must be called before F2.removeAllApps()")},removeApp:function(a){return _isInit()?void(_apps[a]&&(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_DESTROY_BEFORE,_apps[a]),F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_DESTROY,_apps[a]),F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_DESTROY_AFTER,_apps[a]),delete _apps[a])):void F2.log("F2.init() must be called before F2.removeApp()")}}}()),jQuery(function(){var a=[],b=function(b){b&&a.push(b)},c=function(a){if(a)for(var c=0,d=a.length;d>c;c++)b(a[c])};if(b(document.getElementById("f2-autoload")),document.querySelectorAll&&(c(document.querySelectorAll("[data-f2-autoload]")),c(document.querySelectorAll(".f2-autoload"))),a.length){F2.init();for(var d=0,e=a.length;e>d;d++)F2.loadPlaceholders(a[d])}}),exports.F2=F2,"undefined"!=typeof define&&define.amd&&define(function(){return F2})}}("undefined"!=typeof exports?exports:window);
//# sourceMappingURL=f2.min.js.map
\ No newline at end of file
diff --git a/dist/f2.min.js.map b/dist/f2.min.js.map
index 23d700a7..cc4e43ef 100644
--- a/dist/f2.min.js.map
+++ b/dist/f2.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"f2.min.js","sources":["f2.debug.js"],"names":["exports","F2","F2_TESTING_MODE","global","factory","module","document","w","Error","window","this","noGlobal","isArraylike","obj","length","type","jQuery","isWindow","nodeType","winnow","elements","qualifier","not","isFunction","grep","elem","i","call","risSimple","test","filter","inArray","sibling","cur","dir","createOptions","options","object","optionsCache","each","match","rnotwhite","_","flag","detach","addEventListener","removeEventListener","completed","detachEvent","event","readyState","ready","dataAttr","key","data","undefined","name","replace","rmultiDash","toLowerCase","getAttribute","rbrace","parseJSON","e","isEmptyDataObject","isEmptyObject","internalData","pvt","acceptData","ret","thisCache","internalKey","expando","isNode","cache","id","deletedIds","pop","guid","toJSON","noop","extend","camelCase","internalRemoveData","isArray","concat","map","split","cleanData","support","deleteExpando","returnTrue","returnFalse","safeActiveElement","activeElement","err","createSafeFragment","list","nodeNames","safeFrag","createDocumentFragment","createElement","getAll","context","tag","elems","found","getElementsByTagName","strundefined","querySelectorAll","childNodes","nodeName","push","merge","fixDefaultChecked","rcheckableType","defaultChecked","checked","manipulationTarget","content","firstChild","appendChild","ownerDocument","disableScript","find","attr","restoreScript","rscriptTypeMasked","exec","removeAttribute","setGlobalEval","refElements","_data","cloneCopyEvent","src","dest","hasData","l","oldData","curData","events","handle","add","fixCloneNodeIssues","noCloneEvent","removeEvent","text","parentNode","outerHTML","html5Clone","innerHTML","trim","value","defaultSelected","selected","defaultValue","actualDisplay","doc","style","appendTo","body","display","getDefaultComputedStyle","css","defaultDisplay","elemdisplay","iframe","documentElement","contentWindow","contentDocument","write","close","addGetHookIf","conditionFn","hookFn","get","condition","apply","arguments","vendorPropName","capName","charAt","toUpperCase","slice","origName","cssPrefixes","showHide","show","hidden","values","index","isHidden","setPositiveNumber","subtract","matches","rnumsplit","Math","max","augmentWidthOrHeight","extra","isBorderBox","styles","val","cssExpand","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","getStyles","boxSizing","curCSS","rnumnonpx","boxSizingReliable","parseFloat","Tween","prop","end","easing","prototype","init","createFxNow","setTimeout","fxNow","now","genFx","includeWidth","which","attrs","height","opacity","width","createTween","animation","tween","collection","tweeners","defaultPrefilter","props","opts","toggle","hooks","oldfire","checkDisplay","anim","orig","dataShow","queue","_queueHooks","unqueued","empty","fire","always","overflow","overflowX","overflowY","inlineBlockNeedsLayout","zoom","shrinkWrapBlocks","rfxtypes","done","hide","_removeData","start","propFilter","specialEasing","cssHooks","expand","Animation","properties","result","stopped","animationPrefilters","deferred","Deferred","tick","currentTime","remaining","startTime","duration","temp","percent","tweens","run","notifyWith","resolveWith","promise","originalProperties","originalOptions","stop","gotoEnd","rejectWith","fx","timer","progress","complete","fail","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","jqXHR","inspect","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","target","deep","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","firstDataType","ct","finalDataType","contents","shift","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","tmp","prev","responseFields","dataFilter","state","error","buildParams","prefix","traditional","v","rbracket","createStandardXHR","XMLHttpRequest","createActiveXHR","ActiveXObject","getWindow","defaultView","parentWindow","indexOf","class2type","toString","hasOwn","hasOwnProperty","version","selector","fn","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","jquery","constructor","toArray","num","pushStack","prevObject","callback","args","first","eq","last","len","j","sort","splice","copyIsArray","copy","clone","isPlainObject","random","isReady","msg","Array","isNumeric","ownLast","globalEval","execScript","string","makeArray","arr","results","Object","second","invert","callbackInverse","callbackExpect","arg","proxy","Date","Sizzle","seed","m","groups","old","nid","newContext","newSelector","preferredDoc","setDocument","documentIsHTML","rquickExpr","getElementById","contains","getElementsByClassName","qsa","rbuggyQSA","tokenize","rescape","setAttribute","toSelector","rsibling","testContext","join","qsaError","select","createCache","keys","Expr","cacheLength","markFunction","assert","div","removeChild","addHandle","handler","attrHandle","siblingCheck","a","b","diff","sourceIndex","MAX_NEGATIVE","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","checkNonElements","doneName","xml","oldCache","outerCache","newCache","dirruns","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","classCache","tokenCache","compilerCache","sortOrder","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escaped","escapedWhitespace","high","String","fromCharCode","els","node","hasCompare","parent","top","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","specified","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","nodeIndex","useCache","lastChild","pseudo","idx","matched","has","innerText","lang","elemLang","hash","location","root","focus","hasFocus","href","tabIndex","enabled","disabled","selectedIndex","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","soFar","preFilters","cached","token","compiled","div1","unique","isXMLDoc","rneedsContext","rsingleTag","self","is","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","children","next","until","n","r","targets","closest","pos","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","reverse","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","stack","once","stopOnFalse","disable","remove","lock","locked","fireWith","tuples","then","fns","newDefer","tuple","returned","resolve","reject","notify","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","updateFunc","readyList","readyWait","holdReady","hold","wait","triggerHandler","off","frameElement","doScroll","doScrollCheck","container","cssText","noData","applet ","embed ","object ","removeData","dequeue","startLength","setter","clearQueue","count","defer","pnum","source","el","access","chainable","emptyGet","raw","bulk","fragment","leadingWhitespace","tbody","htmlSerialize","cloneNode","appendChecked","noCloneChecked","checkClone","click","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","types","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","trigger","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","srcElement","metaKey","original","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","one","origFn","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rchecked","rscriptType","rcleanScript","wrapMap","option","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","buildFragment","scripts","selection","wrap","safe","nodes","createTextNode","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","hasScripts","set","iNoClone","_evalUrl","prependTo","insertAfter","replaceAll","insert","shrinkWrapBlocksVal","rmargin","rposition","getComputedStyle","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","computeStyleTests","pixelPositionVal","boxSizingReliableVal","reliableMarginRightVal","marginRight","reliableHiddenOffsetsVal","cssFloat","backgroundClip","clearCloneStyle","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","pixelPosition","reliableMarginRight","swap","ralpha","ropacity","rdisplayswap","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","cssProps","float","$1","margin","padding","border","suffix","expanded","parts","unit","propHooks","eased","step","linear","p","swing","cos","PI","timerId","rfxnum","rrun","*","scale","maxIterations","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","for","class","notxml","tabindex","parseInt","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","rvalidtokens","JSON","parse","requireNonComma","depth","str","comma","open","Function","parseXML","DOMParser","parseFromString","async","loadXML","ajaxLocParts","ajaxLocation","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","allTypes","active","lastModified","etag","url","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","status","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","code","abort","finalText","method","crossDomain","hasContent","beforeSend","send","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","serialize","serializeArray","xhr","xhrId","xhrCallbacks","xhrSupported","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","head","scriptCharset","charset","onload","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict","Plugin","_relatedTarget","$this","Modal","DEFAULTS","element","$body","$element","$backdrop","isShown","scrollbarWidth","remote","VERSION","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","backdrop","keyboard","that","checkScrollbar","setScrollbar","escape","transition","enforceFocus","emulateTransitionEnd","hideModal","resetScrollbar","removeBackdrop","doAnimate","callbackRemove","measureScrollbar","bodyPad","clientWidth","innerWidth","scrollDiv","modal","Constructor","$target","showEvent","_events","_conf","configure","conf","delimiter","maxListeners","wildcard","newListener","listenerTree","EventEmitter","searchListenerTree","tree","leaf","branch","xTree","xxTree","isolatedBranch","endReached","listeners","typeLength","currentType","nextType","_listeners","**","growListenerTree","listener","warned","defaultMaxListeners","console","trace","setMaxListeners","many","ttl","_origin","emit","_all","ns","onAny","addListener","leafs","iLeaf","offAny","removeListener","removeAllListeners","listenersAny","EventEmitter2","process","title","decodeURIComponent","isHostMethod","property","isHostObject","o","hasFlash","undef","navigator","plugins","description","mimeTypes","enabledPlugin","flashVersion","flash","GetVariable","notSupportedException","major","minor","HAS_FLASH_THROTTLED_BUG","dom_onReady","domIsReady","domReadyQueue","whenReady","scope","getParentObject","ii","easyXDM","_easyXDM","IFRAME_PREFIX","getDomainName","reURI","getPort","getLocation","proto","domain","port","resolveUrl","reDoubleSlash","path","substring","pathname","lastIndexOf","protocol","host","reParent","appendQueryParameters","parameters","q","useHash","destination","noOverwrite","member","testForNamePropertyBug","channelId","HAS_NAME_PROPERTY_BUG","createFrame","config","frame","frameBorder","allowTransparency","onLoad","usePost","action","checkAcl","acl","re","substr","prepareTransportStack","stackEls","isHost","query","xdm_p","channel","secret","swf","product","userAgent","remoteHelper","xdm_c","xdm_s","xdm_e","useResize","useParent","usePolling","local","images","search","xdm_pa","xdm_po","HashTransport","ReliableBehavior","QueueBehavior","encode","maxLength","VerifyBehavior","initiate","PostMessageTransport","NameTransport","NixTransport","SameOriginTransport","FrameElementTransport","FlashTransport","lazy","chainStack","stackElements","stackEl","defaults","incoming","message","origin","up","outgoing","recipient","down","destroy","removeFromStack","un","floor","emptyFn","sEvent","fpNotify","pair","stringify","evalJSON","getJSONObject","DomHelper","requiresJSON","_map","Fn","del","Socket","onMessage","onReady","postMessage","Rpc","jsonRpcConfig","RpcBehavior","pub","targetOrigin","onDOMReady","sendFn","addSwf","swfContainer","swfNoThrottle","right","flashVars","destroyChannel","swfdomain","createChannel","_getOrigin","uri","_window_onMessage","callerWindow","waitForReady","referrer","_sendMessage","sendMessage","_onReady","readyCount","_onMessage","remoteOrigin","_onLoad","remoteWindow","remoteUrl","_callerWindow","_msgNr","_handleHash","_lastMsg","_remoteOrigin","_pollHash","_listenerWindow","_attachListeners","_timer","pollInterval","tries","getRef","frames","ex","idOut","idIn","currentMessage","ack","waiting","destroying","doFragment","seq","fragments","startVerification","mySecret","theirSecret","_send","jsonrpc","serializer","_createMethod","definition","_callbacks","_callbackCounter","namedParams","_executeMethod","ex1","_absolutizeURI","removeDotSegments","output","_parseURI","authority","hostname","appConfigReplacer","Apps","overwrite","isFunc","S4","array","isLocalRequest","urlLower","isNativeDOMNode","testObject","bIsNode","Node","bIsElement","HTMLElement","log","replacer","space","_ct","_f2t","_handlerCollection","appCreateRoot","appRenderBefore","appDestroyBefore","appRenderAfter","appDestroyAfter","appRender","appDestroy","appScriptLoadFailed","_defaultMethods","appConfig","appHtml","$root","appInstance","app","appId","_createHandler","sNamespace","func_or_element","bDomNodeAppropriate","_validateToken","domNode","sToken","_removeHandler","eventKey","currentEventKey","eventCollection","newEvents","ec","currentEventHandler","newHandlerCollection","iCounter","hc","currentHandler","getToken","__f2GetToken","__trigger","passableArgs","hcl","$appRoot","arData","AppHandlers","APP_CREATE_ROOT","APP_RENDER_BEFORE","APP_RENDER","APP_RENDER_AFTER","APP_DESTROY_BEFORE","APP_DESTROY","APP_DESTROY_AFTER","APP_SCRIPT_LOAD_FAILED","App","AppConfig","enableBatchRequests","instanceId","isSecure","containerLocale","localeSupport","manifestUrl","minGridSize","ui","views","AppManifest","apps","inlineScripts","AppContent","ContainerConfig","afterAppRender","beforeAppRender","debugMode","locale","scriptErrorTimeout","isSecureAppPage","secureAppPagePath","supportedViews","UI","Mask","backgroundColor","loadingIcon","useClasses","loadScripts","loadStyles","Css","_PREFIX","APP","APP_CONTAINER","APP_TITLE","APP_VIEW","APP_VIEW_TRIGGER","MASK","MASK_CONTAINER","Events","_APP_EVENT_PREFIX","_CONTAINER_EVENT_PREFIX","APP_SYMBOL_CHANGE","APP_WIDTH_CHANGE","CONTAINER_SYMBOL_CHANGE","CONTAINER_WIDTH_CHANGE","CONTAINER_LOCALE_CHANGE","JSONP_CALLBACK","Sockets","EVENT","LOAD","RPC","RPC_CALLBACK","UI_RPC","Views","DATA_ATTRIBUTE","ABOUT","HELP","HOME","REMOVE","SETTINGS","_socketEmit","broadcast","Constants","timesToListen","_secureAppPagePath","_apps","_rEvents","_rRpc","_rRpcCallback","_rSocketLoad","_rUiCall","_createAppToContainerSocket","isLoaded","messagePlayback","socket","appParts","registerApps","_createContainerToAppSocket","appManifest","iframeProps","scrolling","_createRpcCallback","callbackId","parseFunction","functionName","parseMessage","regEx","callbacks","c","_registerCallback","messageType","cid","isRemote","register","_containerConfig","UI_Class","_appConfig","_updateHeight","outerHeight","_modalHtml","showCancel","hideMask","Modals","_renderAlert","_renderConfirm","alert","isInit","confirm","okCallback","cancelCallback","setTitle","showMask","showLoader","updateHeight","_rValidEvents","_isValid","containerConfig","showLoading","mask","background-color","background-image","background-position","background-repeat","min-height","z-index","_config","_bUsesAppHandlers","_sAppHandlerToken","_loadedScripts","_loadedStyles","_loadingScripts","_afterAppRender","appContainer","_appRender","_outerHtml","_beforeAppRender","_appScriptLoadFailed","scriptInfo","_createAppConfig","_getAppConfigFromElement","hasAttribute","contextJson","warn","_hasNonTextChildNodes","hasNodes","hasChildNodes","_hydrateContainerConfig","_initAppEvents","view","removeApp","_initContainerEvents","resizeTimeout","resizeHandler","_isPlaceholderElement","_isInit","_createAppInstance","appContent","_loadApps","appConfigs","_loadSecureApp","_loadStyles","cb","stylesFragment","useCreateStyleSheet","createStyleSheet","resourceUrl","resourceKey","_loadScripts","scriptCount","scriptsLoaded","insertBeforeEl","readyStates","loaded","_error","evtData","_checkComplete","_emptyWaitlist","errorEvt","waitlist","getTime","onerror","_loadInlineScripts","inlines","loadInlineScripts","eval","exception","elementInDocument","_loadHtml","_validateApp","_validateContainerConfig","getContainerState","getContainerLocale","loadPlaceholders","addAll","appManifests","appStack","batches","callbackStack","haveManifests","req","requests","manifestRequest","completeFunc","errorFunc","item","successFunc","requestFunc","successCallback","errorCallback","completeCallback","jqxhr","removeAllApps","autoloadEls"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BC,SAAUA,SAEV,IAAIA,QAAQC,IAAOD,QAAQE,gBAA3B;;;;;;;;;;;;;CAkBA,SAAUC,EAAQC,GAEK,gBAAXC,SAAiD,gBAAnBA,QAAOL,QAQhDK,OAAOL,QAAUG,EAAOG,SACvBF,EAASD,GAAQ,GACjB,SAAUI,GACT,IAAMA,EAAED,SACP,KAAM,IAAIE,OAAO,2CAElB,OAAOJ,GAASG,IAGlBH,EAASD,IAIS,mBAAXM,QAAyBA,OAASC,KAAM,SAAUD,EAAQE,GAohBnE,QAASC,GAAaC,GACrB,GAAIC,GAASD,EAAIC,OAChBC,EAAOC,GAAOD,KAAMF,EAErB,OAAc,aAATE,GAAuBC,GAAOC,SAAUJ,IACrC,EAGc,IAAjBA,EAAIK,UAAkBJ,GACnB,EAGQ,UAATC,GAA+B,IAAXD,GACR,gBAAXA,IAAuBA,EAAS,GAAOA,EAAS,IAAOD,GA4gEhE,QAASM,GAAQC,EAAUC,EAAWC,GACrC,GAAKN,GAAOO,WAAYF,GACvB,MAAOL,IAAOQ,KAAMJ,EAAU,SAAUK,EAAMC,GAE7C,QAASL,EAAUM,KAAMF,EAAMC,EAAGD,KAAWH,GAK/C,IAAKD,EAAUH,SACd,MAAOF,IAAOQ,KAAMJ,EAAU,SAAUK,GACvC,MAASA,KAASJ,IAAgBC,GAKpC,IAA0B,gBAAdD,GAAyB,CACpC,GAAKO,GAAUC,KAAMR,GACpB,MAAOL,IAAOc,OAAQT,EAAWD,EAAUE,EAG5CD,GAAYL,GAAOc,OAAQT,EAAWD,GAGvC,MAAOJ,IAAOQ,KAAMJ,EAAU,SAAUK,GACvC,MAAST,IAAOe,QAASN,EAAMJ,IAAe,IAAQC,IAiTxD,QAASU,GAASC,EAAKC,GACtB,EACCD,GAAMA,EAAKC,SACFD,GAAwB,IAAjBA,EAAIf,SAErB,OAAOe,GA8ER,QAASE,GAAeC,GACvB,GAAIC,GAASC,GAAcF,KAI3B,OAHApB,IAAOuB,KAAMH,EAAQI,MAAOC,QAAmB,SAAUC,EAAGC,GAC3DN,EAAQM,IAAS,IAEXN,EA2YR,QAASO,KACHtC,GAASuC,kBACbvC,GAASwC,oBAAqB,mBAAoBC,GAAW,GAC7DtC,EAAOqC,oBAAqB,OAAQC,GAAW,KAG/CzC,GAAS0C,YAAa,qBAAsBD,GAC5CtC,EAAOuC,YAAa,SAAUD,IAOhC,QAASA,MAEHzC,GAASuC,kBAAmC,SAAfI,MAAMlC,MAA2C,aAAxBT,GAAS4C,cACnEN,IACA5B,GAAOmC,SA+JT,QAASC,GAAU3B,EAAM4B,EAAKC,GAG7B,GAAcC,SAATD,GAAwC,IAAlB7B,EAAKP,SAAiB,CAEhD,GAAIsC,GAAO,QAAUH,EAAII,QAASC,GAAY,OAAQC,aAItD,IAFAL,EAAO7B,EAAKmC,aAAcJ,GAEL,gBAATF,GAAoB,CAC/B,IACCA,EAAgB,SAATA,GAAkB,EACf,UAATA,GAAmB,EACV,SAATA,EAAkB,MAEjBA,EAAO,KAAOA,GAAQA,EACvBO,GAAOhC,KAAMyB,GAAStC,GAAO8C,UAAWR,GACxCA,EACA,MAAOS,IAGT/C,GAAOsC,KAAM7B,EAAM4B,EAAKC,OAGxBA,GAAOC,OAIT,MAAOD,GAIR,QAASU,GAAmBnD,GAC3B,GAAI2C,EACJ,KAAMA,IAAQ3C,GAGb,IAAc,SAAT2C,IAAmBxC,GAAOiD,cAAepD,EAAI2C,MAGpC,WAATA,EACJ,OAAO,CAIT,QAAO,EAGR,QAASU,GAAczC,EAAM+B,EAAMF,EAAMa,GACxC,GAAMnD,GAAOoD,WAAY3C,GAAzB,CAIA,GAAI4C,GAAKC,EACRC,EAAcvD,GAAOwD,QAIrBC,EAAShD,EAAKP,SAIdwD,EAAQD,EAASzD,GAAO0D,MAAQjD,EAIhCkD,EAAKF,EAAShD,EAAM8C,GAAgB9C,EAAM8C,IAAiBA,CAI5D,IAAOI,GAAOD,EAAMC,KAASR,GAAQO,EAAMC,GAAIrB,OAAmBC,SAATD,GAAsC,gBAATE,GAgEtF,MA5DMmB,KAIJA,EADIF,EACChD,EAAM8C,GAAgBK,EAAWC,OAAS7D,GAAO8D,OAEjDP,GAIDG,EAAOC,KAGZD,EAAOC,GAAOF,MAAgBM,OAAQ/D,GAAOgE,QAKzB,gBAATxB,IAAqC,kBAATA,MAClCW,EACJO,EAAOC,GAAO3D,GAAOiE,OAAQP,EAAOC,GAAMnB,GAE1CkB,EAAOC,GAAKrB,KAAOtC,GAAOiE,OAAQP,EAAOC,GAAKrB,KAAME,IAItDc,EAAYI,EAAOC,GAKbR,IACCG,EAAUhB,OACfgB,EAAUhB,SAGXgB,EAAYA,EAAUhB,MAGTC,SAATD,IACJgB,EAAWtD,GAAOkE,UAAW1B,IAAWF,GAKpB,gBAATE,IAGXa,EAAMC,EAAWd,GAGL,MAAPa,IAGJA,EAAMC,EAAWtD,GAAOkE,UAAW1B,MAGpCa,EAAMC,EAGAD,GAGR,QAASc,GAAoB1D,EAAM+B,EAAMW,GACxC,GAAMnD,GAAOoD,WAAY3C,GAAzB,CAIA,GAAI6C,GAAW5C,EACd+C,EAAShD,EAAKP,SAGdwD,EAAQD,EAASzD,GAAO0D,MAAQjD,EAChCkD,EAAKF,EAAShD,EAAMT,GAAOwD,SAAYxD,GAAOwD,OAI/C,IAAME,EAAOC,GAAb,CAIA,GAAKnB,IAEJc,EAAYH,EAAMO,EAAOC,GAAOD,EAAOC,GAAKrB,MAE3B,CAGVtC,GAAOoE,QAAS5B,GAsBrBA,EAAOA,EAAK6B,OAAQrE,GAAOsE,IAAK9B,EAAMxC,GAAOkE,YAnBxC1B,IAAQc,GACZd,GAASA,IAITA,EAAOxC,GAAOkE,UAAW1B,GAExBA,EADIA,IAAQc,IACHd,GAEFA,EAAK+B,MAAM,MAarB7D,EAAI8B,EAAK1C,MACT,MAAQY,WACA4C,GAAWd,EAAK9B,GAKxB,IAAKyC,GAAOH,EAAkBM,IAActD,GAAOiD,cAAcK,GAChE,QAMGH,UACEO,GAAOC,GAAKrB,KAIbU,EAAmBU,EAAOC,QAM5BF,EACJzD,GAAOwE,WAAa/D,IAAQ,GAIjBgE,GAAQC,eAAiBhB,GAASA,EAAMjE,aAE5CiE,GAAOC,GAIdD,EAAOC,GAAO,QA+YhB,QAASgB,KACR,OAAO,EAGR,QAASC,KACR,OAAO,EAGR,QAASC,KACR,IACC,MAAOvF,IAASwF,cACf,MAAQC,KA8+BX,QAASC,GAAoB1F,GAC5B,GAAI2F,GAAOC,GAAUX,MAAO,KAC3BY,EAAW7F,EAAS8F,wBAErB,IAAKD,EAASE,cACb,KAAQJ,EAAKnF,QACZqF,EAASE,cACRJ,EAAKpB,MAIR,OAAOsB,GAyCR,QAASG,GAAQC,EAASC,GACzB,GAAIC,GAAOhF,EACVC,EAAI,EACJgF,QAAeH,GAAQI,uBAAyBC,GAAeL,EAAQI,qBAAsBH,GAAO,WAC5FD,GAAQM,mBAAqBD,GAAeL,EAAQM,iBAAkBL,GAAO,KACpFjD,MAEF,KAAMmD,EACL,IAAMA,KAAYD,EAAQF,EAAQO,YAAcP,EAA8B,OAApB9E,EAAOgF,EAAM/E,IAAaA,KAC7E8E,GAAOxF,GAAO+F,SAAUtF,EAAM+E,GACnCE,EAAMM,KAAMvF,GAEZT,GAAOiG,MAAOP,EAAOJ,EAAQ7E,EAAM+E,GAKtC,OAAejD,UAARiD,GAAqBA,GAAOxF,GAAO+F,SAAUR,EAASC,GAC5DxF,GAAOiG,OAASV,GAAWG,GAC3BA,EAIF,QAASQ,GAAmBzF,GACtB0F,GAAetF,KAAMJ,EAAKV,QAC9BU,EAAK2F,eAAiB3F,EAAK4F,SAM7B,QAASC,GAAoB7F,EAAM8F,GAClC,MAAOvG,IAAO+F,SAAUtF,EAAM,UAC7BT,GAAO+F,SAA+B,KAArBQ,EAAQrG,SAAkBqG,EAAUA,EAAQC,WAAY,MAEzE/F,EAAKkF,qBAAqB,SAAS,IAClClF,EAAKgG,YAAahG,EAAKiG,cAAcrB,cAAc,UACpD5E,EAIF,QAASkG,GAAelG,GAEvB,MADAA,GAAKV,MAA6C,OAArCC,GAAO4G,KAAKC,KAAMpG,EAAM,SAAqB,IAAMA,EAAKV,KAC9DU,EAER,QAASqG,GAAerG,GACvB,GAAIe,GAAQuF,GAAkBC,KAAMvG,EAAKV,KAMzC,OALKyB,GACJf,EAAKV,KAAOyB,EAAM,GAElBf,EAAKwG,gBAAgB,QAEfxG,EAIR,QAASyG,GAAezB,EAAO0B,GAG9B,IAFA,GAAI1G,GACHC,EAAI,EACwB,OAApBD,EAAOgF,EAAM/E,IAAaA,IAClCV,GAAOoH,MAAO3G,EAAM,cAAe0G,GAAenH,GAAOoH,MAAOD,EAAYzG,GAAI,eAIlF,QAAS2G,GAAgBC,EAAKC,GAE7B,GAAuB,IAAlBA,EAAKrH,UAAmBF,GAAOwH,QAASF,GAA7C,CAIA,GAAIvH,GAAMW,EAAG+G,EACZC,EAAU1H,GAAOoH,MAAOE,GACxBK,EAAU3H,GAAOoH,MAAOG,EAAMG,GAC9BE,EAASF,EAAQE,MAElB,IAAKA,EAAS,OACND,GAAQE,OACfF,EAAQC,SAER,KAAM7H,IAAQ6H,GACb,IAAMlH,EAAI,EAAG+G,EAAIG,EAAQ7H,GAAOD,OAAY2H,EAAJ/G,EAAOA,IAC9CV,GAAOiC,MAAM6F,IAAKP,EAAMxH,EAAM6H,EAAQ7H,GAAQW,IAM5CiH,EAAQrF,OACZqF,EAAQrF,KAAOtC,GAAOiE,UAAY0D,EAAQrF,QAI5C,QAASyF,GAAoBT,EAAKC,GACjC,GAAIxB,GAAUhD,EAAGT,CAGjB,IAAuB,IAAlBiF,EAAKrH,SAAV,CAOA,GAHA6F,EAAWwB,EAAKxB,SAASpD,eAGnB8B,GAAQuD,cAAgBT,EAAMvH,GAAOwD,SAAY,CACtDlB,EAAOtC,GAAOoH,MAAOG,EAErB,KAAMxE,IAAKT,GAAKsF,OACf5H,GAAOiI,YAAaV,EAAMxE,EAAGT,EAAKuF,OAInCN,GAAKN,gBAAiBjH,GAAOwD,SAIZ,WAAbuC,GAAyBwB,EAAKW,OAASZ,EAAIY,MAC/CvB,EAAeY,GAAOW,KAAOZ,EAAIY,KACjCpB,EAAeS,IAIS,WAAbxB,GACNwB,EAAKY,aACTZ,EAAKa,UAAYd,EAAIc,WAOjB3D,GAAQ4D,YAAgBf,EAAIgB,YAActI,GAAOuI,KAAKhB,EAAKe,aAC/Df,EAAKe,UAAYhB,EAAIgB,YAGE,UAAbvC,GAAwBI,GAAetF,KAAMyG,EAAIvH,OAK5DwH,EAAKnB,eAAiBmB,EAAKlB,QAAUiB,EAAIjB,QAIpCkB,EAAKiB,QAAUlB,EAAIkB,QACvBjB,EAAKiB,MAAQlB,EAAIkB,QAKM,WAAbzC,EACXwB,EAAKkB,gBAAkBlB,EAAKmB,SAAWpB,EAAImB,iBAInB,UAAb1C,GAAqC,aAAbA,KACnCwB,EAAKoB,aAAerB,EAAIqB,eAghB1B,QAASC,GAAepG,EAAMqG,GAC7B,GAAIC,GACHrI,EAAOT,GAAQ6I,EAAIxD,cAAe7C,IAASuG,SAAUF,EAAIG,MAGzDC,EAAUxJ,EAAOyJ,0BAA6BJ,EAAQrJ,EAAOyJ,wBAAyBzI,EAAM,KAI3FqI,EAAMG,QAAUjJ,GAAOmJ,IAAK1I,EAAM,GAAK,UAMzC,OAFAA,GAAKmB,SAEEqH,EAOR,QAASG,GAAgBrD,GACxB,GAAI8C,GAAMvJ,GACT2J,EAAUI,GAAatD,EA0BxB,OAxBMkD,KACLA,EAAUL,EAAe7C,EAAU8C,GAGlB,SAAZI,GAAuBA,IAG3BK,IAAUA,IAAUtJ,GAAQ,mDAAoD+I,SAAUF,EAAIU,iBAG9FV,GAAQS,GAAQ,GAAIE,eAAiBF,GAAQ,GAAIG,iBAAkBnK,SAGnEuJ,EAAIa,QACJb,EAAIc,QAEJV,EAAUL,EAAe7C,EAAU8C,GACnCS,GAAO1H,UAIRyH,GAAatD,GAAakD,GAGpBA,EAoKR,QAASW,GAAcC,EAAaC,GAEnC,OACCC,IAAK,WACJ,GAAIC,GAAYH,GAEhB,IAAkB,MAAbG,EAML,MAAKA,cAIGtK,MAAKqK,KAMLrK,KAAKqK,IAAMD,GAAQG,MAAOvK,KAAMwK,aA8L3C,QAASC,GAAgBrB,EAAOtG,GAG/B,GAAKA,IAAQsG,GACZ,MAAOtG,EAQR,KAJA,GAAI4H,GAAU5H,EAAK6H,OAAO,GAAGC,cAAgB9H,EAAK+H,MAAM,GACvDC,EAAWhI,EACX9B,EAAI+J,GAAY3K,OAETY,KAEP,GADA8B,EAAOiI,GAAa/J,GAAM0J,EACrB5H,IAAQsG,GACZ,MAAOtG,EAIT,OAAOgI,GAGR,QAASE,GAAUtK,EAAUuK,GAM5B,IALA,GAAI1B,GAASxI,EAAMmK,EAClBC,KACAC,EAAQ,EACRhL,EAASM,EAASN,OAEHA,EAARgL,EAAgBA,IACvBrK,EAAOL,EAAU0K,GACXrK,EAAKqI,QAIX+B,EAAQC,GAAU9K,GAAOoH,MAAO3G,EAAM,cACtCwI,EAAUxI,EAAKqI,MAAMG,QAChB0B,GAGEE,EAAQC,IAAuB,SAAZ7B,IACxBxI,EAAKqI,MAAMG,QAAU,IAMM,KAAvBxI,EAAKqI,MAAMG,SAAkB8B,GAAUtK,KAC3CoK,EAAQC,GAAU9K,GAAOoH,MAAO3G,EAAM,aAAc2I,EAAe3I,EAAKsF,cAGzE6E,EAASG,GAAUtK,IAEdwI,GAAuB,SAAZA,IAAuB2B,IACtC5K,GAAOoH,MAAO3G,EAAM,aAAcmK,EAAS3B,EAAUjJ,GAAOmJ,IAAK1I,EAAM,aAO1E,KAAMqK,EAAQ,EAAWhL,EAARgL,EAAgBA,IAChCrK,EAAOL,EAAU0K,GACXrK,EAAKqI,QAGL6B,GAA+B,SAAvBlK,EAAKqI,MAAMG,SAA6C,KAAvBxI,EAAKqI,MAAMG,UACzDxI,EAAKqI,MAAMG,QAAU0B,EAAOE,EAAQC,IAAW,GAAK,QAItD,OAAO1K,GAGR,QAAS4K,GAAmBvK,EAAM+H,EAAOyC,GACxC,GAAIC,GAAUC,GAAUnE,KAAMwB,EAC9B,OAAO0C,GAENE,KAAKC,IAAK,EAAGH,EAAS,IAAQD,GAAY,KAAUC,EAAS,IAAO,MACpE1C,EAGF,QAAS8C,GAAsB7K,EAAM+B,EAAM+I,EAAOC,EAAaC,GAS9D,IARA,GAAI/K,GAAI6K,KAAYC,EAAc,SAAW,WAE5C,EAES,UAAThJ,EAAmB,EAAI,EAEvBkJ,EAAM,EAEK,EAAJhL,EAAOA,GAAK,EAEJ,WAAV6K,IACJG,GAAO1L,GAAOmJ,IAAK1I,EAAM8K,EAAQI,GAAWjL,IAAK,EAAM+K,IAGnDD,GAEW,YAAVD,IACJG,GAAO1L,GAAOmJ,IAAK1I,EAAM,UAAYkL,GAAWjL,IAAK,EAAM+K,IAI7C,WAAVF,IACJG,GAAO1L,GAAOmJ,IAAK1I,EAAM,SAAWkL,GAAWjL,GAAM,SAAS,EAAM+K,MAIrEC,GAAO1L,GAAOmJ,IAAK1I,EAAM,UAAYkL,GAAWjL,IAAK,EAAM+K,GAG5C,YAAVF,IACJG,GAAO1L,GAAOmJ,IAAK1I,EAAM,SAAWkL,GAAWjL,GAAM,SAAS,EAAM+K,IAKvE,OAAOC,GAGR,QAASE,GAAkBnL,EAAM+B,EAAM+I,GAGtC,GAAIM,IAAmB,EACtBH,EAAe,UAATlJ,EAAmB/B,EAAKqL,YAAcrL,EAAKsL,aACjDN,EAASO,GAAWvL,GACpB+K,EAAc/G,GAAQwH,WAAgE,eAAnDjM,GAAOmJ,IAAK1I,EAAM,aAAa,EAAOgL,EAK1E,IAAY,GAAPC,GAAmB,MAAPA,EAAc,CAQ9B,GANAA,EAAMQ,GAAQzL,EAAM+B,EAAMiJ,IACf,EAANC,GAAkB,MAAPA,KACfA,EAAMjL,EAAKqI,MAAOtG,IAId2J,GAAUtL,KAAK6K,GACnB,MAAOA,EAKRG,GAAmBL,IAAiB/G,GAAQ2H,qBAAuBV,IAAQjL,EAAKqI,MAAOtG,IAGvFkJ,EAAMW,WAAYX,IAAS,EAI5B,MAASA,GACRJ,EACC7K,EACA+B,EACA+I,IAAWC,EAAc,SAAW,WACpCK,EACAJ,GAEE,KA2SL,QAASa,GAAO7L,EAAMW,EAASmL,EAAMC,EAAKC,GACzC,MAAO,IAAIH,GAAMI,UAAUC,KAAMlM,EAAMW,EAASmL,EAAMC,EAAKC,GAwK5D,QAASG,KAIR,MAHAC,YAAW,WACVC,GAAQvK,SAEAuK,GAAQ9M,GAAO+M,MAIzB,QAASC,GAAOjN,EAAMkN,GACrB,GAAIC,GACHC,GAAUC,OAAQrN,GAClBW,EAAI,CAKL,KADAuM,EAAeA,EAAe,EAAI,EACtB,EAAJvM,EAAQA,GAAK,EAAIuM,EACxBC,EAAQvB,GAAWjL,GACnByM,EAAO,SAAWD,GAAUC,EAAO,UAAYD,GAAUnN,CAO1D,OAJKkN,KACJE,EAAME,QAAUF,EAAMG,MAAQvN,GAGxBoN,EAGR,QAASI,GAAa/E,EAAO+D,EAAMiB,GAKlC,IAJA,GAAIC,GACHC,GAAeC,GAAUpB,QAAelI,OAAQsJ,GAAU,MAC1D7C,EAAQ,EACRhL,EAAS4N,EAAW5N,OACLA,EAARgL,EAAgBA,IACvB,GAAM2C,EAAQC,EAAY5C,GAAQnK,KAAM6M,EAAWjB,EAAM/D,GAGxD,MAAOiF,GAKV,QAASG,GAAkBnN,EAAMoN,EAAOC,GAEvC,GAAIvB,GAAM/D,EAAOuF,EAAQN,EAAOO,EAAOC,EAAShF,EAASiF,EACxDC,EAAOzO,KACP0O,KACAtF,EAAQrI,EAAKqI,MACb8B,EAASnK,EAAKP,UAAY6K,GAAUtK,GACpC4N,EAAWrO,GAAOoH,MAAO3G,EAAM,SAG1BqN,GAAKQ,QACVN,EAAQhO,GAAOuO,YAAa9N,EAAM,MACX,MAAlBuN,EAAMQ,WACVR,EAAMQ,SAAW,EACjBP,EAAUD,EAAMS,MAAMC,KACtBV,EAAMS,MAAMC,KAAO,WACZV,EAAMQ,UACXP,MAIHD,EAAMQ,WAENL,EAAKQ,OAAO,WAGXR,EAAKQ,OAAO,WACXX,EAAMQ,WACAxO,GAAOsO,MAAO7N,EAAM,MAAOX,QAChCkO,EAAMS,MAAMC,YAOO,IAAlBjO,EAAKP,WAAoB,UAAY2N,IAAS,SAAWA,MAK7DC,EAAKc,UAAa9F,EAAM8F,SAAU9F,EAAM+F,UAAW/F,EAAMgG,WAIzD7F,EAAUjJ,GAAOmJ,IAAK1I,EAAM,WAG5ByN,EAA2B,SAAZjF,EACdjJ,GAAOoH,MAAO3G,EAAM,eAAkB2I,EAAgB3I,EAAKsF,UAAakD,EAEnD,WAAjBiF,GAA6D,SAAhClO,GAAOmJ,IAAK1I,EAAM,WAI7CgE,GAAQsK,wBAA8D,WAApC3F,EAAgB3I,EAAKsF,UAG5D+C,EAAMkG,KAAO,EAFblG,EAAMG,QAAU,iBAOd6E,EAAKc,WACT9F,EAAM8F,SAAW,SACXnK,GAAQwK,oBACbd,EAAKQ,OAAO,WACX7F,EAAM8F,SAAWd,EAAKc,SAAU,GAChC9F,EAAM+F,UAAYf,EAAKc,SAAU,GACjC9F,EAAMgG,UAAYhB,EAAKc,SAAU,KAMpC,KAAMrC,IAAQsB,GAEb,GADArF,EAAQqF,EAAOtB,GACV2C,GAASlI,KAAMwB,GAAU,CAG7B,SAFOqF,GAAOtB,GACdwB,EAASA,GAAoB,WAAVvF,EACdA,KAAYoC,EAAS,OAAS,QAAW,CAG7C,GAAe,SAAVpC,IAAoB6F,GAAiC9L,SAArB8L,EAAU9B,GAG9C,QAFA3B,IAAS,EAKXwD,EAAM7B,GAAS8B,GAAYA,EAAU9B,IAAUvM,GAAO8I,MAAOrI,EAAM8L,OAInEtD,GAAU1G,MAIZ,IAAMvC,GAAOiD,cAAemL,GAwCqD,YAAxD,SAAZnF,EAAqBG,EAAgB3I,EAAKsF,UAAakD,KACnEH,EAAMG,QAAUA,OAzCoB,CAC/BoF,EACC,UAAYA,KAChBzD,EAASyD,EAASzD,QAGnByD,EAAWrO,GAAOoH,MAAO3G,EAAM,aAI3BsN,IACJM,EAASzD,QAAUA,GAEfA,EACJ5K,GAAQS,GAAOkK,OAEfwD,EAAKgB,KAAK,WACTnP,GAAQS,GAAO2O,SAGjBjB,EAAKgB,KAAK,WACT,GAAI5C,EACJvM,IAAOqP,YAAa5O,EAAM,SAC1B,KAAM8L,IAAQ6B,GACbpO,GAAO8I,MAAOrI,EAAM8L,EAAM6B,EAAM7B,KAGlC,KAAMA,IAAQ6B,GACbX,EAAQF,EAAa3C,EAASyD,EAAU9B,GAAS,EAAGA,EAAM4B,GAElD5B,IAAQ8B,KACfA,EAAU9B,GAASkB,EAAM6B,MACpB1E,IACJ6C,EAAMjB,IAAMiB,EAAM6B,MAClB7B,EAAM6B,MAAiB,UAAT/C,GAA6B,WAATA,EAAoB,EAAI,KAW/D,QAASgD,GAAY1B,EAAO2B,GAC3B,GAAI1E,GAAOtI,EAAMiK,EAAQjE,EAAOwF,CAGhC,KAAMlD,IAAS+C,GAed,GAdArL,EAAOxC,GAAOkE,UAAW4G,GACzB2B,EAAS+C,EAAehN,GACxBgG,EAAQqF,EAAO/C,GACV9K,GAAOoE,QAASoE,KACpBiE,EAASjE,EAAO,GAChBA,EAAQqF,EAAO/C,GAAUtC,EAAO,IAG5BsC,IAAUtI,IACdqL,EAAOrL,GAASgG,QACTqF,GAAO/C,IAGfkD,EAAQhO,GAAOyP,SAAUjN,GACpBwL,GAAS,UAAYA,GAAQ,CACjCxF,EAAQwF,EAAM0B,OAAQlH,SACfqF,GAAOrL,EAId,KAAMsI,IAAStC,GACNsC,IAAS+C,KAChBA,EAAO/C,GAAUtC,EAAOsC,GACxB0E,EAAe1E,GAAU2B,OAI3B+C,GAAehN,GAASiK,EAK3B,QAASkD,GAAWlP,EAAMmP,EAAYxO,GACrC,GAAIyO,GACHC,EACAhF,EAAQ,EACRhL,EAASiQ,GAAoBjQ,OAC7BkQ,EAAWhQ,GAAOiQ,WAAWtB,OAAQ,iBAE7BuB,GAAKzP,OAEbyP,EAAO,WACN,GAAKJ,EACJ,OAAO,CAUR,KARA,GAAIK,GAAcrD,IAASF,IAC1BwD,EAAYhF,KAAKC,IAAK,EAAGmC,EAAU6C,UAAY7C,EAAU8C,SAAWH,GAEpEI,EAAOH,EAAY5C,EAAU8C,UAAY,EACzCE,EAAU,EAAID,EACdzF,EAAQ,EACRhL,EAAS0N,EAAUiD,OAAO3Q,OAEXA,EAARgL,EAAiBA,IACxB0C,EAAUiD,OAAQ3F,GAAQ4F,IAAKF,EAKhC,OAFAR,GAASW,WAAYlQ,GAAQ+M,EAAWgD,EAASJ,IAElC,EAAVI,GAAe1Q,EACZsQ,GAEPJ,EAASY,YAAanQ,GAAQ+M,KACvB,IAGTA,EAAYwC,EAASa,SACpBpQ,KAAMA,EACNoN,MAAO7N,GAAOiE,UAAY2L,GAC1B9B,KAAM9N,GAAOiE,QAAQ,GAAQuL,kBAAqBpO,GAClD0P,mBAAoBlB,EACpBmB,gBAAiB3P,EACjBiP,UAAWvD,IAASF,IACpB0D,SAAUlP,EAAQkP,SAClBG,UACAlD,YAAa,SAAUhB,EAAMC,GAC5B,GAAIiB,GAAQzN,GAAOsM,MAAO7L,EAAM+M,EAAUM,KAAMvB,EAAMC,EACpDgB,EAAUM,KAAK0B,cAAejD,IAAUiB,EAAUM,KAAKrB,OAEzD,OADAe,GAAUiD,OAAOzK,KAAMyH,GAChBA,GAERuD,KAAM,SAAUC,GACf,GAAInG,GAAQ,EAGXhL,EAASmR,EAAUzD,EAAUiD,OAAO3Q,OAAS,CAC9C,IAAKgQ,EACJ,MAAOpQ,KAGR,KADAoQ,GAAU,EACMhQ,EAARgL,EAAiBA,IACxB0C,EAAUiD,OAAQ3F,GAAQ4F,IAAK,EAUhC,OALKO,GACJjB,EAASY,YAAanQ,GAAQ+M,EAAWyD,IAEzCjB,EAASkB,WAAYzQ,GAAQ+M,EAAWyD,IAElCvR,QAGTmO,EAAQL,EAAUK,KAInB,KAFA0B,EAAY1B,EAAOL,EAAUM,KAAK0B,eAElB1P,EAARgL,EAAiBA,IAExB,GADA+E,EAASE,GAAqBjF,GAAQnK,KAAM6M,EAAW/M,EAAMoN,EAAOL,EAAUM,MAE7E,MAAO+B,EAmBT,OAfA7P,IAAOsE,IAAKuJ,EAAON,EAAaC,GAE3BxN,GAAOO,WAAYiN,EAAUM,KAAKwB,QACtC9B,EAAUM,KAAKwB,MAAM3O,KAAMF,EAAM+M,GAGlCxN,GAAOmR,GAAGC,MACTpR,GAAOiE,OAAQiM,GACdzP,KAAMA,EACN0N,KAAMX,EACNc,MAAOd,EAAUM,KAAKQ,SAKjBd,EAAU6D,SAAU7D,EAAUM,KAAKuD,UACxClC,KAAM3B,EAAUM,KAAKqB,KAAM3B,EAAUM,KAAKwD,UAC1CC,KAAM/D,EAAUM,KAAKyD,MACrB5C,OAAQnB,EAAUM,KAAKa,QA6rC1B,QAAS6C,GAA6BC,GAGrC,MAAO,UAAUC,EAAoBC,GAED,gBAAvBD,KACXC,EAAOD,EACPA,EAAqB,IAGtB,IAAIE,GACHlR,EAAI,EACJmR,EAAYH,EAAmB/O,cAAcnB,MAAOC,OAErD,IAAKzB,GAAOO,WAAYoR,GAEvB,KAASC,EAAWC,EAAUnR,MAEC,MAAzBkR,EAASvH,OAAQ,IACrBuH,EAAWA,EAASrH,MAAO,IAAO,KACjCkH,EAAWG,GAAaH,EAAWG,QAAkBE,QAASH,KAI9DF,EAAWG,GAAaH,EAAWG,QAAkB5L,KAAM2L,IAQjE,QAASI,GAA+BN,EAAWrQ,EAAS2P,EAAiBiB,GAK5E,QAASC,GAASL,GACjB,GAAIlJ,EAYJ,OAXAwJ,GAAWN,IAAa,EACxB5R,GAAOuB,KAAMkQ,EAAWG,OAAkB,SAAUlQ,EAAGyQ,GACtD,GAAIC,GAAsBD,EAAoB/Q,EAAS2P,EAAiBiB,EACxE,OAAoC,gBAAxBI,IAAqCC,GAAqBH,EAAWE,GAIrEC,IACD3J,EAAW0J,GADf,QAHNhR,EAAQyQ,UAAUC,QAASM,GAC3BH,EAASG,IACF,KAKF1J,EAhBR,GAAIwJ,MACHG,EAAqBZ,IAAca,EAkBpC,OAAOL,GAAS7Q,EAAQyQ,UAAW,MAAUK,EAAW,MAASD,EAAS,KAM3E,QAASM,GAAYC,EAAQlL,GAC5B,GAAImL,GAAMpQ,EACTqQ,EAAc1S,GAAO2S,aAAaD,eAEnC,KAAMrQ,IAAOiF,GACQ/E,SAAf+E,EAAKjF,MACPqQ,EAAarQ,GAAQmQ,EAAWC,IAASA,OAAgBpQ,GAAQiF,EAAKjF,GAO1E,OAJKoQ,IACJzS,GAAOiE,QAAQ,EAAMuO,EAAQC,GAGvBD,EAOR,QAASI,GAAqBC,EAAGb,EAAOc,GAMvC,IALA,GAAIC,GAAeC,EAAIC,EAAelT,EACrCmT,EAAWL,EAAEK,SACbrB,EAAYgB,EAAEhB,UAGY,MAAnBA,EAAW,IAClBA,EAAUsB,QACE5Q,SAAPyQ,IACJA,EAAKH,EAAEO,UAAYpB,EAAMqB,kBAAkB,gBAK7C,IAAKL,EACJ,IAAMjT,IAAQmT,GACb,GAAKA,EAAUnT,IAAUmT,EAAUnT,GAAOc,KAAMmS,GAAO,CACtDnB,EAAUC,QAAS/R,EACnB,OAMH,GAAK8R,EAAW,IAAOiB,GACtBG,EAAgBpB,EAAW,OACrB,CAEN,IAAM9R,IAAQ+S,GAAY,CACzB,IAAMjB,EAAW,IAAOgB,EAAES,WAAYvT,EAAO,IAAM8R,EAAU,IAAO,CACnEoB,EAAgBlT,CAChB,OAEKgT,IACLA,EAAgBhT,GAIlBkT,EAAgBA,GAAiBF,EAMlC,MAAKE,IACCA,IAAkBpB,EAAW,IACjCA,EAAUC,QAASmB,GAEbH,EAAWG,IAJnB,OAWD,QAASM,GAAaV,EAAGW,EAAUxB,EAAOyB,GACzC,GAAIC,GAAOC,EAASC,EAAMC,EAAKC,EAC9BR,KAEAzB,EAAYgB,EAAEhB,UAAUtH,OAGzB,IAAKsH,EAAW,GACf,IAAM+B,IAAQf,GAAES,WACfA,EAAYM,EAAKjR,eAAkBkQ,EAAES,WAAYM,EAOnD,KAHAD,EAAU9B,EAAUsB,QAGZQ,GAcP,GAZKd,EAAEkB,eAAgBJ,KACtB3B,EAAOa,EAAEkB,eAAgBJ,IAAcH,IAIlCM,GAAQL,GAAaZ,EAAEmB,aAC5BR,EAAWX,EAAEmB,WAAYR,EAAUX,EAAEjB,WAGtCkC,EAAOH,EACPA,EAAU9B,EAAUsB,QAKnB,GAAiB,MAAZQ,EAEJA,EAAUG,MAGJ,IAAc,MAATA,GAAgBA,IAASH,EAAU,CAM9C,GAHAC,EAAON,EAAYQ,EAAO,IAAMH,IAAaL,EAAY,KAAOK,IAG1DC,EACL,IAAMF,IAASJ,GAId,GADAO,EAAMH,EAAMnP,MAAO,KACdsP,EAAK,KAAQF,IAGjBC,EAAON,EAAYQ,EAAO,IAAMD,EAAK,KACpCP,EAAY,KAAOO,EAAK,KACb,CAEND,KAAS,EACbA,EAAON,EAAYI,GAGRJ,EAAYI,MAAY,IACnCC,EAAUE,EAAK,GACfhC,EAAUC,QAAS+B,EAAK,IAEzB,OAOJ,GAAKD,KAAS,EAGb,GAAKA,GAAQf,EAAG,UACfW,EAAWI,EAAMJ,OAEjB,KACCA,EAAWI,EAAMJ,GAChB,MAAQzQ,GACT,OAASkR,MAAO,cAAeC,MAAON,EAAO7Q,EAAI,sBAAwB+Q,EAAO,OAASH,IAQ/F,OAASM,MAAO,UAAW3R,KAAMkR,GA+mBlC,QAASW,GAAaC,EAAQvU,EAAKwU,EAAavM,GAC/C,GAAItF,EAEJ,IAAKxC,GAAOoE,QAASvE,GAEpBG,GAAOuB,KAAM1B,EAAK,SAAUa,EAAG4T,GACzBD,GAAeE,GAAS1T,KAAMuT,GAElCtM,EAAKsM,EAAQE,GAIbH,EAAaC,EAAS,KAAqB,gBAANE,GAAiB5T,EAAI,IAAO,IAAK4T,EAAGD,EAAavM,SAIlF,IAAMuM,GAAsC,WAAvBrU,GAAOD,KAAMF,GAQxCiI,EAAKsM,EAAQvU,OANb,KAAM2C,IAAQ3C,GACbsU,EAAaC,EAAS,IAAM5R,EAAO,IAAK3C,EAAK2C,GAAQ6R,EAAavM,GA6PrE,QAAS0M,KACR,IACC,MAAO,IAAI/U,GAAOgV,eACjB,MAAO1R,KAGV,QAAS2R,KACR,IACC,MAAO,IAAIjV,GAAOkV,cAAe,qBAChC,MAAO5R,KAoSV,QAAS6R,GAAWnU,GACnB,MAAOT,IAAOC,SAAUQ,GACvBA,EACkB,IAAlBA,EAAKP,SACJO,EAAKoU,aAAepU,EAAKqU,cACzB,EArvTH,GAAIlR,MAEA2G,EAAQ3G,EAAW2G,MAEnBlG,EAAST,EAAWS,OAEpB2B,EAAOpC,EAAWoC,KAElB+O,EAAUnR,EAAWmR,QAErBC,KAEAC,GAAWD,EAAWC,SAEtBC,GAASF,EAAWG,eAEpB1Q,MAKH2Q,GAAU,SAGVpV,GAAS,SAAUqV,EAAU9P,GAG5B,MAAO,IAAIvF,IAAOsV,GAAG3I,KAAM0I,EAAU9P,IAKtCgQ,GAAQ,qCAGRC,GAAY,QACZC,GAAa,eAGbC,GAAa,SAAUC,EAAKC,GAC3B,MAAOA,GAAOtL,cAGhBtK,IAAOsV,GAAKtV,GAAO0M,WAElBmJ,OAAQT,GAERU,YAAa9V,GAGbqV,SAAU,GAGVvV,OAAQ,EAERiW,QAAS,WACR,MAAOxL,GAAM5J,KAAMjB,OAKpBqK,IAAK,SAAUiM,GACd,MAAc,OAAPA,EAGE,EAANA,EAAUtW,KAAMsW,EAAMtW,KAAKI,QAAWJ,KAAMsW,GAG9CzL,EAAM5J,KAAMjB,OAKduW,UAAW,SAAUxQ,GAGpB,GAAIpC,GAAMrD,GAAOiG,MAAOvG,KAAKoW,cAAerQ,EAO5C,OAJApC,GAAI6S,WAAaxW,KACjB2D,EAAIkC,QAAU7F,KAAK6F,QAGZlC,GAMR9B,KAAM,SAAU4U,EAAUC,GACzB,MAAOpW,IAAOuB,KAAM7B,KAAMyW,EAAUC,IAGrC9R,IAAK,SAAU6R,GACd,MAAOzW,MAAKuW,UAAWjW,GAAOsE,IAAI5E,KAAM,SAAUe,EAAMC,GACvD,MAAOyV,GAASxV,KAAMF,EAAMC,EAAGD,OAIjC8J,MAAO,WACN,MAAO7K,MAAKuW,UAAW1L,EAAMN,MAAOvK,KAAMwK,aAG3CmM,MAAO,WACN,MAAO3W,MAAK4W,GAAI,IAGjBC,KAAM,WACL,MAAO7W,MAAK4W,GAAI,KAGjBA,GAAI,SAAU5V,GACb,GAAI8V,GAAM9W,KAAKI,OACd2W,GAAK/V,GAAU,EAAJA,EAAQ8V,EAAM,EAC1B,OAAO9W,MAAKuW,UAAWQ,GAAK,GAASD,EAAJC,GAAY/W,KAAK+W,SAGnDjK,IAAK,WACJ,MAAO9M,MAAKwW,YAAcxW,KAAKoW,YAAY,OAK5C9P,KAAMA,EACN0Q,KAAM9S,EAAW8S,KACjBC,OAAQ/S,EAAW+S,QAGpB3W,GAAOiE,OAASjE,GAAOsV,GAAGrR,OAAS,WAClC,GAAIqD,GAAKsP,EAAaC,EAAMrU,EAAMpB,EAAS0V,EAC1CtE,EAAStI,UAAU,OACnBxJ,EAAI,EACJZ,EAASoK,UAAUpK,OACnB2S,GAAO,CAsBR,KAnBuB,iBAAXD,KACXC,EAAOD,EAGPA,EAAStI,UAAWxJ,OACpBA,KAIsB,gBAAX8R,IAAwBxS,GAAOO,WAAWiS,KACrDA,MAII9R,IAAMZ,IACV0S,EAAS9S,KACTgB,KAGWZ,EAAJY,EAAYA,IAEnB,GAAmC,OAA7BU,EAAU8I,UAAWxJ,IAE1B,IAAM8B,IAAQpB,GACbkG,EAAMkL,EAAQhQ,GACdqU,EAAOzV,EAASoB,GAGXgQ,IAAWqE,IAKXpE,GAAQoE,IAAU7W,GAAO+W,cAAcF,KAAUD,EAAc5W,GAAOoE,QAAQyS,MAC7ED,GACJA,GAAc,EACdE,EAAQxP,GAAOtH,GAAOoE,QAAQkD,GAAOA,MAGrCwP,EAAQxP,GAAOtH,GAAO+W,cAAczP,GAAOA,KAI5CkL,EAAQhQ,GAASxC,GAAOiE,OAAQwO,EAAMqE,EAAOD,IAGzBtU,SAATsU,IACXrE,EAAQhQ,GAASqU,GAOrB,OAAOrE,IAGRxS,GAAOiE,QAENT,QAAS,UAAa4R,GAAUhK,KAAK4L,UAAWvU,QAAS,MAAO,IAGhEwU,SAAS,EAET/C,MAAO,SAAUgD,GAChB,KAAM,IAAI1X,OAAO0X,IAGlBlT,KAAM,aAKNzD,WAAY,SAAUV,GACrB,MAA4B,aAArBG,GAAOD,KAAKF,IAGpBuE,QAAS+S,MAAM/S,SAAW,SAAUvE,GACnC,MAA4B,UAArBG,GAAOD,KAAKF,IAGpBI,SAAU,SAAUJ,GAEnB,MAAc,OAAPA,GAAeA,GAAOA,EAAIJ,QAGlC2X,UAAW,SAAUvX,GAIpB,OAAQG,GAAOoE,QAASvE,IAASA,EAAMwM,WAAYxM,IAAS,GAG7DoD,cAAe,SAAUpD,GACxB,GAAI2C,EACJ,KAAMA,IAAQ3C,GACb,OAAO,CAER,QAAO,GAGRkX,cAAe,SAAUlX,GACxB,GAAIwC,EAKJ,KAAMxC,GAA4B,WAArBG,GAAOD,KAAKF,IAAqBA,EAAIK,UAAYF,GAAOC,SAAUJ,GAC9E,OAAO,CAGR,KAEC,GAAKA,EAAIiW,cACPZ,GAAOvU,KAAKd,EAAK,iBACjBqV,GAAOvU,KAAKd,EAAIiW,YAAYpJ,UAAW,iBACxC,OAAO,EAEP,MAAQ3J,GAET,OAAO,EAKR,GAAK0B,GAAQ4S,QACZ,IAAMhV,IAAOxC,GACZ,MAAOqV,IAAOvU,KAAMd,EAAKwC,EAM3B,KAAMA,IAAOxC,IAEb,MAAe0C,UAARF,GAAqB6S,GAAOvU,KAAMd,EAAKwC,IAG/CtC,KAAM,SAAUF,GACf,MAAY,OAAPA,EACGA,EAAM,GAEQ,gBAARA,IAAmC,kBAARA,GACxCmV,EAAYC,GAAStU,KAAKd,KAAU,eAC7BA,IAMTyX,WAAY,SAAUhV,GAChBA,GAAQtC,GAAOuI,KAAMjG,KAIvB7C,EAAO8X,YAAc,SAAUjV,GAChC7C,EAAe,KAAEkB,KAAMlB,EAAQ6C,KAC3BA,IAMP4B,UAAW,SAAUsT,GACpB,MAAOA,GAAO/U,QAAS+S,GAAW,OAAQ/S,QAASgT,GAAYC,KAGhE3P,SAAU,SAAUtF,EAAM+B,GACzB,MAAO/B,GAAKsF,UAAYtF,EAAKsF,SAASpD,gBAAkBH,EAAKG,eAI9DpB,KAAM,SAAU1B,EAAKsW,EAAUC,GAC9B,GAAI5N,GACH9H,EAAI,EACJZ,EAASD,EAAIC,OACbsE,EAAUxE,EAAaC,EAExB,IAAKuW,GACJ,GAAKhS,EACJ,KAAYtE,EAAJY,IACP8H,EAAQ2N,EAASlM,MAAOpK,EAAKa,GAAK0V,GAE7B5N,KAAU,GAHI9H,SAQpB,KAAMA,IAAKb,GAGV,GAFA2I,EAAQ2N,EAASlM,MAAOpK,EAAKa,GAAK0V,GAE7B5N,KAAU,EACd,UAOH,IAAKpE,EACJ,KAAYtE,EAAJY,IACP8H,EAAQ2N,EAASxV,KAAMd,EAAKa,GAAKA,EAAGb,EAAKa,IAEpC8H,KAAU,GAHI9H,SAQpB,KAAMA,IAAKb,GAGV,GAFA2I,EAAQ2N,EAASxV,KAAMd,EAAKa,GAAKA,EAAGb,EAAKa,IAEpC8H,KAAU,EACd,KAMJ,OAAO3I,IAIR0I,KAAM,SAAUL,GACf,MAAe,OAARA,EACN,IACEA,EAAO,IAAKzF,QAAS8S,GAAO,KAIhCkC,UAAW,SAAUC,EAAKC,GACzB,GAAItU,GAAMsU,KAaV,OAXY,OAAPD,IACC9X,EAAagY,OAAOF,IACxB1X,GAAOiG,MAAO5C,EACE,gBAARqU,IACLA,GAAQA,GAGX1R,EAAKrF,KAAM0C,EAAKqU,IAIXrU,GAGRtC,QAAS,SAAUN,EAAMiX,EAAKhX,GAC7B,GAAI8V,EAEJ,IAAKkB,EAAM,CACV,GAAK3C,EACJ,MAAOA,GAAQpU,KAAM+W,EAAKjX,EAAMC,EAMjC,KAHA8V,EAAMkB,EAAI5X,OACVY,EAAIA,EAAQ,EAAJA,EAAQ0K,KAAKC,IAAK,EAAGmL,EAAM9V,GAAMA,EAAI,EAEjC8V,EAAJ9V,EAASA,IAEhB,GAAKA,IAAKgX,IAAOA,EAAKhX,KAAQD,EAC7B,MAAOC,GAKV,MAAO,IAGRuF,MAAO,SAAUoQ,EAAOwB,GAKvB,IAJA,GAAIrB,IAAOqB,EAAO/X,OACjB2W,EAAI,EACJ/V,EAAI2V,EAAMvW,OAEC0W,EAAJC,GACPJ,EAAO3V,KAAQmX,EAAQpB,IAKxB,IAAKD,IAAQA,EACZ,KAAsBjU,SAAdsV,EAAOpB,IACdJ,EAAO3V,KAAQmX,EAAQpB,IAMzB,OAFAJ,GAAMvW,OAASY,EAER2V,GAGR7V,KAAM,SAAUiF,EAAO0Q,EAAU2B,GAShC,IARA,GAAIC,GACH7M,KACAxK,EAAI,EACJZ,EAAS2F,EAAM3F,OACfkY,GAAkBF,EAIPhY,EAAJY,EAAYA,IACnBqX,GAAmB5B,EAAU1Q,EAAO/E,GAAKA,GACpCqX,IAAoBC,GACxB9M,EAAQlF,KAAMP,EAAO/E,GAIvB,OAAOwK,IAIR5G,IAAK,SAAUmB,EAAO0Q,EAAU8B,GAC/B,GAAIzP,GACH9H,EAAI,EACJZ,EAAS2F,EAAM3F,OACfsE,EAAUxE,EAAa6F,GACvBpC,IAGD,IAAKe,EACJ,KAAYtE,EAAJY,EAAYA,IACnB8H,EAAQ2N,EAAU1Q,EAAO/E,GAAKA,EAAGuX,GAEnB,MAATzP,GACJnF,EAAI2C,KAAMwC,OAMZ,KAAM9H,IAAK+E,GACV+C,EAAQ2N,EAAU1Q,EAAO/E,GAAKA,EAAGuX,GAEnB,MAATzP,GACJnF,EAAI2C,KAAMwC,EAMb,OAAOnE,GAAO4F,SAAW5G,IAI1BS,KAAM,EAINoU,MAAO,SAAU5C,EAAI/P,GACpB,GAAI6Q,GAAM8B,EAAOrE,CAUjB,OARwB,gBAAZtO,KACXsO,EAAMyB,EAAI/P,GACVA,EAAU+P,EACVA,EAAKzB,GAKA7T,GAAOO,WAAY+U,IAKzBc,EAAO7L,EAAM5J,KAAMuJ,UAAW,GAC9BgO,EAAQ,WACP,MAAO5C,GAAGrL,MAAO1E,GAAW7F,KAAM0W,EAAK/R,OAAQkG,EAAM5J,KAAMuJ,cAI5DgO,EAAMpU,KAAOwR,EAAGxR,KAAOwR,EAAGxR,MAAQ9D,GAAO8D,OAElCoU,GAZC3V,QAeTwK,IAAK,WACJ,OAAQ,GAAMoL,OAKf1T,QAASA,KAIVzE,GAAOuB,KAAK,gEAAgEgD,MAAM,KAAM,SAAS7D,EAAG8B,GACnGwS,EAAY,WAAaxS,EAAO,KAAQA,EAAKG,eAkB9C,IAAIyV;;;;;;;;;;AAWJ,SAAW3Y,GAiLX,QAAS2Y,GAAQ/C,EAAU9P,EAASoS,EAASU,GAC5C,GAAI7W,GAAOf,EAAM6X,EAAGpY,EAEnBQ,EAAG6X,EAAQC,EAAKC,EAAKC,EAAYC,CASlC,KAPOpT,EAAUA,EAAQmB,eAAiBnB,EAAUqT,KAAmBtZ,GACtEuZ,EAAatT,GAGdA,EAAUA,GAAWjG,EACrBqY,EAAUA,OAEJtC,GAAgC,gBAAbA,GACxB,MAAOsC,EAGR,IAAuC,KAAjCzX,EAAWqF,EAAQrF,WAAgC,IAAbA,EAC3C,QAGD,IAAK4Y,IAAmBT,EAAO,CAG9B,GAAM7W,EAAQuX,GAAW/R,KAAMqO,GAE9B,GAAMiD,EAAI9W,EAAM,IACf,GAAkB,IAAbtB,EAAiB,CAIrB,GAHAO,EAAO8E,EAAQyT,eAAgBV,IAG1B7X,IAAQA,EAAK0H,WAQjB,MAAOwP,EALP,IAAKlX,EAAKkD,KAAO2U,EAEhB,MADAX,GAAQ3R,KAAMvF,GACPkX,MAOT,IAAKpS,EAAQmB,gBAAkBjG,EAAO8E,EAAQmB,cAAcsS,eAAgBV,KAC3EW,EAAU1T,EAAS9E,IAAUA,EAAKkD,KAAO2U,EAEzC,MADAX,GAAQ3R,KAAMvF,GACPkX,MAKH,CAAA,GAAKnW,EAAM,GAEjB,MADAwE,GAAKiE,MAAO0N,EAASpS,EAAQI,qBAAsB0P,IAC5CsC,CAGD,KAAMW,EAAI9W,EAAM,KAAOiD,EAAQyU,wBAA0B3T,EAAQ2T,uBAEvE,MADAlT,GAAKiE,MAAO0N,EAASpS,EAAQ2T,uBAAwBZ,IAC9CX,EAKT,GAAKlT,EAAQ0U,OAASC,IAAcA,EAAUvY,KAAMwU,IAAc,CASjE,GARAoD,EAAMD,EAAMhV,EACZkV,EAAanT,EACboT,EAA2B,IAAbzY,GAAkBmV,EAMd,IAAbnV,GAAqD,WAAnCqF,EAAQQ,SAASpD,cAA6B,CAWpE,IAVA4V,EAASc,EAAUhE,IAEbmD,EAAMjT,EAAQ3C,aAAa,OAChC6V,EAAMD,EAAI/V,QAAS6W,GAAS,QAE5B/T,EAAQgU,aAAc,KAAMd,GAE7BA,EAAM,QAAUA,EAAM,MAEtB/X,EAAI6X,EAAOzY,OACHY,KACP6X,EAAO7X,GAAK+X,EAAMe,EAAYjB,EAAO7X,GAEtCgY,GAAae,GAAS5Y,KAAMwU,IAAcqE,EAAanU,EAAQ4C,aAAgB5C,EAC/EoT,EAAcJ,EAAOoB,KAAK,KAG3B,GAAKhB,EACJ,IAIC,MAHA3S,GAAKiE,MAAO0N,EACXe,EAAW7S,iBAAkB8S,IAEvBhB,EACN,MAAMiC,IACN,QACKpB,GACLjT,EAAQ0B,gBAAgB,QAQ7B,MAAO4S,GAAQxE,EAAS5S,QAAS8S,GAAO,MAAQhQ,EAASoS,EAASU,GASnE,QAASyB,KAGR,QAASpW,GAAOrB,EAAKmG,GAMpB,MAJKuR,GAAK/T,KAAM3D,EAAM,KAAQ2X,EAAKC,mBAE3BvW,GAAOqW,EAAK5G,SAEZzP,EAAOrB,EAAM,KAAQmG,EAR9B,GAAIuR,KAUJ,OAAOrW,GAOR,QAASwW,GAAc5E,GAEtB,MADAA,GAAI9R,IAAY,EACT8R,EAOR,QAAS6E,GAAQ7E,GAChB,GAAI8E,GAAM9a,EAAS+F,cAAc,MAEjC,KACC,QAASiQ,EAAI8E,GACZ,MAAOrX,GACR,OAAO,EACN,QAEIqX,EAAIjS,YACRiS,EAAIjS,WAAWkS,YAAaD,GAG7BA,EAAM,MASR,QAASE,GAAWnN,EAAOoN,GAI1B,IAHA,GAAI7C,GAAMvK,EAAM5I,MAAM,KACrB7D,EAAIyM,EAAMrN,OAEHY,KACPsZ,EAAKQ,WAAY9C,EAAIhX,IAAO6Z,EAU9B,QAASE,GAAcC,EAAGC,GACzB,GAAI1Z,GAAM0Z,GAAKD,EACdE,EAAO3Z,GAAsB,IAAfyZ,EAAExa,UAAiC,IAAfya,EAAEza,YAChCya,EAAEE,aAAeC,KACjBJ,EAAEG,aAAeC,EAGtB,IAAKF,EACJ,MAAOA,EAIR,IAAK3Z,EACJ,KAASA,EAAMA,EAAI8Z,aAClB,GAAK9Z,IAAQ0Z,EACZ,MAAO,EAKV,OAAOD,GAAI,EAAI,GAOhB,QAASM,GAAmBjb,GAC3B,MAAO,UAAUU,GAChB,GAAI+B,GAAO/B,EAAKsF,SAASpD,aACzB,OAAgB,UAATH,GAAoB/B,EAAKV,OAASA,GAQ3C,QAASkb,GAAoBlb,GAC5B,MAAO,UAAUU,GAChB,GAAI+B,GAAO/B,EAAKsF,SAASpD,aACzB,QAAiB,UAATH,GAA6B,WAATA,IAAsB/B,EAAKV,OAASA,GAQlE,QAASmb,GAAwB5F,GAChC,MAAO4E,GAAa,SAAUiB,GAE7B,MADAA,IAAYA,EACLjB,EAAa,SAAU7B,EAAMnN,GAMnC,IALA,GAAIuL,GACH2E,EAAe9F,KAAQ+C,EAAKvY,OAAQqb,GACpCza,EAAI0a,EAAatb,OAGVY,KACF2X,EAAO5B,EAAI2E,EAAa1a,MAC5B2X,EAAK5B,KAAOvL,EAAQuL,GAAK4B,EAAK5B,SAYnC,QAASiD,GAAanU,GACrB,MAAOA,UAAkBA,GAAQI,uBAAyBC,GAAgBL,EAo+B3E,QAAS8V,MAuET,QAAS7B,GAAY8B,GAIpB,IAHA,GAAI5a,GAAI,EACP8V,EAAM8E,EAAOxb,OACbuV,EAAW,GACAmB,EAAJ9V,EAASA,IAChB2U,GAAYiG,EAAO5a,GAAG8H,KAEvB,OAAO6M,GAGR,QAASkG,GAAeC,EAASC,EAAYC,GAC5C,GAAIxa,GAAMua,EAAWva,IACpBya,EAAmBD,GAAgB,eAARxa,EAC3B0a,EAAWzM,GAEZ,OAAOsM,GAAWpF,MAEjB,SAAU5V,EAAM8E,EAASsW,GACxB,KAASpb,EAAOA,EAAMS,IACrB,GAAuB,IAAlBT,EAAKP,UAAkByb,EAC3B,MAAOH,GAAS/a,EAAM8E,EAASsW,IAMlC,SAAUpb,EAAM8E,EAASsW,GACxB,GAAIC,GAAUC,EACbC,GAAaC,EAASL,EAGvB,IAAKC,GACJ,KAASpb,EAAOA,EAAMS,IACrB,IAAuB,IAAlBT,EAAKP,UAAkByb,IACtBH,EAAS/a,EAAM8E,EAASsW,GAC5B,OAAO,MAKV,MAASpb,EAAOA,EAAMS,IACrB,GAAuB,IAAlBT,EAAKP,UAAkByb,EAAmB,CAE9C,GADAI,EAAatb,EAAM+C,KAAc/C,EAAM+C,QACjCsY,EAAWC,EAAY7a,KAC5B4a,EAAU,KAAQG,GAAWH,EAAU,KAAQF,EAG/C,MAAQI,GAAU,GAAMF,EAAU,EAMlC,IAHAC,EAAY7a,GAAQ8a,EAGdA,EAAU,GAAMR,EAAS/a,EAAM8E,EAASsW,GAC7C,OAAO,IASf,QAASK,GAAgBC,GACxB,MAAOA,GAASrc,OAAS,EACxB,SAAUW,EAAM8E,EAASsW,GAExB,IADA,GAAInb,GAAIyb,EAASrc,OACTY,KACP,IAAMyb,EAASzb,GAAID,EAAM8E,EAASsW,GACjC,OAAO,CAGT,QAAO,GAERM,EAAS,GAGX,QAASC,GAAkB/G,EAAUgH,EAAU1E,GAG9C,IAFA,GAAIjX,GAAI,EACP8V,EAAM6F,EAASvc,OACJ0W,EAAJ9V,EAASA,IAChB0X,EAAQ/C,EAAUgH,EAAS3b,GAAIiX,EAEhC,OAAOA,GAGR,QAAS2E,GAAUC,EAAWjY,EAAKxD,EAAQyE,EAASsW,GAOnD,IANA,GAAIpb,GACH+b,KACA9b,EAAI,EACJ8V,EAAM+F,EAAUzc,OAChB2c,EAAgB,MAAPnY,EAEEkS,EAAJ9V,EAASA,KACVD,EAAO8b,EAAU7b,OAChBI,GAAUA,EAAQL,EAAM8E,EAASsW,MACtCW,EAAaxW,KAAMvF,GACdgc,GACJnY,EAAI0B,KAAMtF,GAMd,OAAO8b,GAGR,QAASE,GAAYC,EAAWtH,EAAUmG,EAASoB,EAAYC,EAAYC,GAO1E,MANKF,KAAeA,EAAYpZ,KAC/BoZ,EAAaF,EAAYE,IAErBC,IAAeA,EAAYrZ,KAC/BqZ,EAAaH,EAAYG,EAAYC,IAE/B5C,EAAa,SAAU7B,EAAMV,EAASpS,EAASsW,GACrD,GAAItL,GAAM7P,EAAGD,EACZsc,KACAC,KACAC,EAActF,EAAQ7X,OAGtB2F,EAAQ4S,GAAQ+D,EAAkB/G,GAAY,IAAK9P,EAAQrF,UAAaqF,GAAYA,MAGpF2X,GAAYP,IAAetE,GAAShD,EAEnC5P,EADA6W,EAAU7W,EAAOsX,EAAQJ,EAAWpX,EAASsW,GAG9CsB,EAAa3B,EAEZqB,IAAgBxE,EAAOsE,EAAYM,GAAeL,MAMjDjF,EACDuF,CAQF,IALK1B,GACJA,EAAS0B,EAAWC,EAAY5X,EAASsW,GAIrCe,EAMJ,IALArM,EAAO+L,EAAUa,EAAYH,GAC7BJ,EAAYrM,KAAUhL,EAASsW,GAG/Bnb,EAAI6P,EAAKzQ,OACDY,MACDD,EAAO8P,EAAK7P,MACjByc,EAAYH,EAAQtc,MAASwc,EAAWF,EAAQtc,IAAOD,GAK1D,IAAK4X,GACJ,GAAKwE,GAAcF,EAAY,CAC9B,GAAKE,EAAa,CAIjB,IAFAtM,KACA7P,EAAIyc,EAAWrd,OACPY,MACDD,EAAO0c,EAAWzc,KAEvB6P,EAAKvK,KAAOkX,EAAUxc,GAAKD,EAG7Boc,GAAY,KAAOM,KAAkB5M,EAAMsL,GAK5C,IADAnb,EAAIyc,EAAWrd,OACPY,MACDD,EAAO0c,EAAWzc,MACtB6P,EAAOsM,EAAa9H,GAAQpU,KAAM0X,EAAM5X,GAASsc,EAAOrc,IAAM,KAE/D2X,EAAK9H,KAAUoH,EAAQpH,GAAQ9P,SAOlC0c,GAAab,EACZa,IAAexF,EACdwF,EAAWxG,OAAQsG,EAAaE,EAAWrd,QAC3Cqd,GAEGN,EACJA,EAAY,KAAMlF,EAASwF,EAAYtB,GAEvC7V,EAAKiE,MAAO0N,EAASwF,KAMzB,QAASC,GAAmB9B,GAqB3B,IApBA,GAAI+B,GAAc7B,EAAS/E,EAC1BD,EAAM8E,EAAOxb,OACbwd,EAAkBtD,EAAKuD,SAAUjC,EAAO,GAAGvb,MAC3Cyd,EAAmBF,GAAmBtD,EAAKuD,SAAS,KACpD7c,EAAI4c,EAAkB,EAAI,EAG1BG,EAAelC,EAAe,SAAU9a,GACvC,MAAOA,KAAS4c,GACdG,GAAkB,GACrBE,EAAkBnC,EAAe,SAAU9a,GAC1C,MAAOsU,IAAQpU,KAAM0c,EAAc5c,GAAS,IAC1C+c,GAAkB,GACrBrB,GAAa,SAAU1b,EAAM8E,EAASsW,GACrC,OAAUyB,IAAqBzB,GAAOtW,IAAYoY,MAChDN,EAAe9X,GAASrF,SACxBud,EAAchd,EAAM8E,EAASsW,GAC7B6B,EAAiBjd,EAAM8E,EAASsW,MAGxBrF,EAAJ9V,EAASA,IAChB,GAAM8a,EAAUxB,EAAKuD,SAAUjC,EAAO5a,GAAGX,MACxCoc,GAAaZ,EAAcW,EAAgBC,GAAYX,QACjD,CAIN,GAHAA,EAAUxB,EAAKlZ,OAAQwa,EAAO5a,GAAGX,MAAOkK,MAAO,KAAMqR,EAAO5a,GAAGwK,SAG1DsQ,EAAShY,GAAY,CAGzB,IADAiT,IAAM/V,EACM8V,EAAJC,IACFuD,EAAKuD,SAAUjC,EAAO7E,GAAG1W,MADd0W,KAKjB,MAAOiG,GACNhc,EAAI,GAAKwb,EAAgBC,GACzBzb,EAAI,GAAK8Y,EAER8B,EAAO/Q,MAAO,EAAG7J,EAAI,GAAI2D,QAASmE,MAAgC,MAAzB8S,EAAQ5a,EAAI,GAAIX,KAAe,IAAM,MAC7E0C,QAAS8S,GAAO,MAClBiG,EACI/E,EAAJ/V,GAAS0c,EAAmB9B,EAAO/Q,MAAO7J,EAAG+V,IACzCD,EAAJC,GAAW2G,EAAoB9B,EAASA,EAAO/Q,MAAOkM,IAClDD,EAAJC,GAAW+C,EAAY8B,IAGzBa,EAASnW,KAAMwV,GAIjB,MAAOU,GAAgBC,GAGxB,QAASyB,GAA0BC,EAAiBC,GACnD,GAAIC,GAAQD,EAAYhe,OAAS,EAChCke,EAAYH,EAAgB/d,OAAS,EACrCme,EAAe,SAAU5F,EAAM9S,EAASsW,EAAKlE,EAASuG,GACrD,GAAIzd,GAAMgW,EAAG+E,EACZ2C,EAAe,EACfzd,EAAI,IACJ6b,EAAYlE,MACZ+F,KACAC,EAAgBV,EAEhBlY,EAAQ4S,GAAQ2F,GAAahE,EAAKpT,KAAU,IAAG,IAAKsX,GAEpDI,EAAiBrC,GAA4B,MAAjBoC,EAAwB,EAAIjT,KAAK4L,UAAY,GACzER,EAAM/Q,EAAM3F,MAUb,KARKoe,IACJP,EAAmBpY,IAAYjG,GAAYiG,GAOpC7E,IAAM8V,GAA4B,OAApB/V,EAAOgF,EAAM/E,IAAaA,IAAM,CACrD,GAAKsd,GAAavd,EAAO,CAExB,IADAgW,EAAI,EACK+E,EAAUqC,EAAgBpH,MAClC,GAAK+E,EAAS/a,EAAM8E,EAASsW,GAAQ,CACpClE,EAAQ3R,KAAMvF,EACd,OAGGyd,IACJjC,EAAUqC,GAKPP,KAEEtd,GAAQ+a,GAAW/a,IACxB0d,IAII9F,GACJkE,EAAUvW,KAAMvF,IAOnB,GADA0d,GAAgBzd,EACXqd,GAASrd,IAAMyd,EAAe,CAElC,IADA1H,EAAI,EACK+E,EAAUsC,EAAYrH,MAC9B+E,EAASe,EAAW6B,EAAY7Y,EAASsW,EAG1C,IAAKxD,EAAO,CAEX,GAAK8F,EAAe,EACnB,KAAQzd,KACA6b,EAAU7b,IAAM0d,EAAW1d,KACjC0d,EAAW1d,GAAKmD,EAAIlD,KAAMgX,GAM7ByG,GAAa9B,EAAU8B,GAIxBpY,EAAKiE,MAAO0N,EAASyG,GAGhBF,IAAc7F,GAAQ+F,EAAWte,OAAS,GAC5Cqe,EAAeL,EAAYhe,OAAW,GAExCsY,EAAOmG,WAAY5G,GAUrB,MALKuG,KACJjC,EAAUqC,EACVX,EAAmBU,GAGb9B,EAGT,OAAOwB,GACN7D,EAAc+D,GACdA,EArzDF,GAAIvd,GACH+D,EACAuV,EACAwE,EACAC,EACApF,EACAqF,EACA7E,EACA8D,EACAgB,EACAC,EAGA/F,EACAvZ,EACAuf,EACA/F,EACAM,EACA0F,EACA5T,EACA+N,EAGAzV,EAAU,UAAY,GAAK2U,MAC3BS,EAAenZ,EAAOH,SACtB2c,EAAU,EACV9M,EAAO,EACP4P,EAAajF,IACbkF,EAAalF,IACbmF,EAAgBnF,IAChBoF,EAAY,SAAUxE,EAAGC,GAIxB,MAHKD,KAAMC,IACViE,GAAe,GAET,GAIRhZ,EAAe,YACfkV,EAAe,GAAK,GAGpB5F,KAAcC,eACduC,KACA7T,EAAM6T,EAAI7T,IACVsb,EAAczH,EAAI1R,KAClBA,EAAO0R,EAAI1R,KACXuE,GAAQmN,EAAInN,MAEZwK,GAAU2C,EAAI3C,SAAW,SAAUtU,GAGlC,IAFA,GAAIC,GAAI,EACP8V,EAAM9W,KAAKI,OACA0W,EAAJ9V,EAASA,IAChB,GAAKhB,KAAKgB,KAAOD,EAChB,MAAOC,EAGT,OAAO,IAGR0e,GAAW,6HAKXC,GAAa,sBAEbC,GAAoB,mCAKpBC,GAAaD,GAAkB7c,QAAS,IAAK,MAG7C+c,GAAa,MAAQH,GAAa,KAAOC,GAAoB,OAASD,GAErE,gBAAkBA,GAElB,2DAA6DE,GAAa,OAASF,GACnF,OAEDI,GAAU,KAAOH,GAAoB,wFAKPE,GAAa,eAM3CjK,GAAQ,GAAImK,QAAQ,IAAML,GAAa,8BAAgCA,GAAa,KAAM,KAE1FM,GAAS,GAAID,QAAQ,IAAML,GAAa,KAAOA,GAAa,KAC5DO,GAAe,GAAIF,QAAQ,IAAML,GAAa,WAAaA,GAAa,IAAMA,GAAa,KAE3FQ,GAAmB,GAAIH,QAAQ,IAAML,GAAa,iBAAmBA,GAAa,OAAQ,KAE1FS,GAAU,GAAIJ,QAAQD,IACtBM,GAAc,GAAIL,QAAQ,IAAMH,GAAa,KAE7CS,IACCC,GAAM,GAAIP,QAAQ,MAAQJ,GAAoB,KAC9CY,MAAS,GAAIR,QAAQ,QAAUJ,GAAoB,KACnDa,IAAO,GAAIT,QAAQ,KAAOJ,GAAkB7c,QAAS,IAAK,MAAS,KACnE2d,KAAQ,GAAIV,QAAQ,IAAMF,IAC1Ba,OAAU,GAAIX,QAAQ,IAAMD,IAC5Ba,MAAS,GAAIZ,QAAQ,yDAA2DL,GAC/E,+BAAiCA,GAAa,cAAgBA,GAC9D,aAAeA,GAAa,SAAU,KACvCkB,KAAQ,GAAIb,QAAQ,OAASN,GAAW,KAAM,KAG9CoB,aAAgB,GAAId,QAAQ,IAAML,GAAa,mDAC9CA,GAAa,mBAAqBA,GAAa,mBAAoB,MAGrEoB,GAAU,sCACVC,GAAU,SAEVC,GAAU,yBAGV5H,GAAa,mCAEbU,GAAW,OACXH,GAAU,QAGVsH,GAAY,GAAIlB,QAAQ,qBAAuBL,GAAa,MAAQA,GAAa,OAAQ,MACzFwB,GAAY,SAAUnf,EAAGof,EAASC,GACjC,GAAIC,GAAO,KAAOF,EAAU,KAI5B,OAAOE,KAASA,GAAQD,EACvBD,EACO,EAAPE,EAECC,OAAOC,aAAcF,EAAO,OAE5BC,OAAOC,aAAcF,GAAQ,GAAK,MAAe,KAAPA,EAAe,OAI7D,KACChb,EAAKiE,MACHyN,EAAMnN,GAAM5J,KAAMiY,EAAa9S,YAChC8S,EAAa9S,YAId4R,EAAKkB,EAAa9S,WAAWhG,QAASI,SACrC,MAAQ6C,IACTiD,GAASiE,MAAOyN,EAAI5X,OAGnB,SAAU0S,EAAQ2O,GACjBhC,EAAYlV,MAAOuI,EAAQjI,GAAM5J,KAAKwgB,KAKvC,SAAU3O,EAAQ2O,GAIjB,IAHA,GAAI1K,GAAIjE,EAAO1S,OACdY,EAAI,EAEI8R,EAAOiE,KAAO0K,EAAIzgB,OAC3B8R,EAAO1S,OAAS2W,EAAI,IAqQvBhS,EAAU2T,EAAO3T,WAOjBga,EAAQrG,EAAOqG,MAAQ,SAAUhe,GAGhC,GAAI8I,GAAkB9I,IAASA,EAAKiG,eAAiBjG,GAAM8I,eAC3D,OAAOA,GAA+C,SAA7BA,EAAgBxD,UAAsB,GAQhE8S,EAAcT,EAAOS,YAAc,SAAUuI,GAC5C,GAAIC,GACHxY,EAAMuY,EAAOA,EAAK1a,eAAiB0a,EAAOxI,EAC1C0I,EAASzY,EAAIgM,WAGd,OAAKhM,KAAQvJ,GAA6B,IAAjBuJ,EAAI3I,UAAmB2I,EAAIU,iBAKpDjK,EAAWuJ,EACXgW,EAAUhW,EAAIU,gBAGduP,GAAkB2F,EAAO5V,GAMpByY,GAAUA,IAAWA,EAAOC,MAE3BD,EAAOzf,iBACXyf,EAAOzf,iBAAkB,SAAU,WAClCgX,MACE,GACQyI,EAAOE,aAClBF,EAAOE,YAAa,WAAY,WAC/B3I,OAUHpU,EAAQ+a,WAAarF,EAAO,SAAUC,GAErC,MADAA,GAAIqH,UAAY,KACRrH,EAAIxX,aAAa,eAO1B6B,EAAQkB,qBAAuBwU,EAAO,SAAUC,GAE/C,MADAA,GAAI3T,YAAaoC,EAAI6Y,cAAc,MAC3BtH,EAAIzU,qBAAqB,KAAK7F,SAIvC2E,EAAQyU,uBAAyByH,GAAQ9f,KAAMgI,EAAIqQ,yBAA4BiB,EAAO,SAAUC,GAQ/F,MAPAA,GAAI9R,UAAY,+CAIhB8R,EAAI5T,WAAWib,UAAY,IAGuB,IAA3CrH,EAAIlB,uBAAuB,KAAKpZ,SAOxC2E,EAAQkd,QAAUxH,EAAO,SAAUC,GAElC,MADAyE,GAAQpY,YAAa2T,GAAMzW,GAAKH,GACxBqF,EAAI+Y,oBAAsB/Y,EAAI+Y,kBAAmBpe,GAAU1D,SAI/D2E,EAAQkd,SACZ3H,EAAKpT,KAAS,GAAI,SAAUjD,EAAI4B,GAC/B,SAAYA,GAAQyT,iBAAmBpT,GAAgBkT,EAAiB,CACvE,GAAIR,GAAI/S,EAAQyT,eAAgBrV,EAGhC,OAAO2U,IAAKA,EAAEnQ,YAAemQ,QAG/B0B,EAAKlZ,OAAW,GAAI,SAAU6C,GAC7B,GAAIke,GAASle,EAAGlB,QAASme,GAAWC,GACpC,OAAO,UAAUpgB,GAChB,MAAOA,GAAKmC,aAAa,QAAUif,YAM9B7H,GAAKpT,KAAS,GAErBoT,EAAKlZ,OAAW,GAAK,SAAU6C,GAC9B,GAAIke,GAASle,EAAGlB,QAASme,GAAWC,GACpC,OAAO,UAAUpgB,GAChB,GAAI2gB,SAAc3gB,GAAKqhB,mBAAqBlc,GAAgBnF,EAAKqhB,iBAAiB,KAClF,OAAOV,IAAQA,EAAK5Y,QAAUqZ,KAMjC7H,EAAKpT,KAAU,IAAInC,EAAQkB,qBAC1B,SAAUH,EAAKD,GACd,aAAYA,GAAQI,uBAAyBC,EACrCL,EAAQI,qBAAsBH,GADtC,QAID,SAAUA,EAAKD,GACd,GAAI9E,GACHoT,KACAnT,EAAI,EACJiX,EAAUpS,EAAQI,qBAAsBH,EAGzC,IAAa,MAARA,EAAc,CAClB,KAAS/E,EAAOkX,EAAQjX,MACA,IAAlBD,EAAKP,UACT2T,EAAI7N,KAAMvF,EAIZ,OAAOoT,GAER,MAAO8D,IAITqC,EAAKpT,KAAY,MAAInC,EAAQyU,wBAA0B,SAAUuI,EAAWlc,GAC3E,aAAYA,GAAQ2T,yBAA2BtT,GAAgBkT,EACvDvT,EAAQ2T,uBAAwBuI,GADxC,QAWD3C,KAOA1F,MAEM3U,EAAQ0U,IAAMwH,GAAQ9f,KAAMgI,EAAIhD,qBAGrCsU,EAAO,SAAUC,GAMhBA,EAAI9R,UAAY,gEAMX8R,EAAIvU,iBAAiB,qBAAqB/F,QAC9CsZ,EAAUpT,KAAM,SAAWqZ,GAAa,gBAKnCjF,EAAIvU,iBAAiB,cAAc/F,QACxCsZ,EAAUpT,KAAM,MAAQqZ,GAAa,aAAeD,GAAW,KAM1DhF,EAAIvU,iBAAiB,YAAY/F,QACtCsZ,EAAUpT,KAAK,cAIjBmU,EAAO,SAAUC,GAGhB,GAAI2H,GAAQlZ,EAAIxD,cAAc,QAC9B0c,GAAMxI,aAAc,OAAQ,UAC5Ba,EAAI3T,YAAasb,GAAQxI,aAAc,OAAQ,KAI1Ca,EAAIvU,iBAAiB,YAAY/F,QACrCsZ,EAAUpT,KAAM,OAASqZ,GAAa,eAKjCjF,EAAIvU,iBAAiB,YAAY/F,QACtCsZ,EAAUpT,KAAM,WAAY,aAI7BoU,EAAIvU,iBAAiB,QACrBuT,EAAUpT,KAAK,YAIXvB,EAAQud,gBAAkBrB,GAAQ9f,KAAOqK,EAAU2T,EAAQ3T,SAChE2T,EAAQoD,uBACRpD,EAAQqD,oBACRrD,EAAQsD,kBACRtD,EAAQuD,qBAERjI,EAAO,SAAUC,GAGhB3V,EAAQ4d,kBAAoBnX,EAAQvK,KAAMyZ,EAAK,OAI/ClP,EAAQvK,KAAMyZ,EAAK,aACnB0E,EAAc9Y,KAAM,KAAMyZ,MAI5BrG,EAAYA,EAAUtZ,QAAU,GAAI4f,QAAQtG,EAAUO,KAAK,MAC3DmF,EAAgBA,EAAchf,QAAU,GAAI4f,QAAQZ,EAAcnF,KAAK,MAIvE0H,EAAaV,GAAQ9f,KAAMge,EAAQyD,yBAKnCrJ,EAAWoI,GAAcV,GAAQ9f,KAAMge,EAAQ5F,UAC9C,SAAUyB,EAAGC,GACZ,GAAI4H,GAAuB,IAAf7H,EAAExa,SAAiBwa,EAAEnR,gBAAkBmR,EAClD8H,EAAM7H,GAAKA,EAAExS,UACd,OAAOuS,KAAM8H,MAAWA,GAAwB,IAAjBA,EAAItiB,YAClCqiB,EAAMtJ,SACLsJ,EAAMtJ,SAAUuJ,GAChB9H,EAAE4H,yBAA8D,GAAnC5H,EAAE4H,wBAAyBE,MAG3D,SAAU9H,EAAGC,GACZ,GAAKA,EACJ,KAASA,EAAIA,EAAExS,YACd,GAAKwS,IAAMD,EACV,OAAO,CAIV,QAAO,GAOTwE,EAAYmC,EACZ,SAAU3G,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,MADAiE,IAAe,EACR,CAIR,IAAI6D,IAAW/H,EAAE4H,yBAA2B3H,EAAE2H,uBAC9C,OAAKG,GACGA,GAIRA,GAAY/H,EAAEhU,eAAiBgU,MAAUC,EAAEjU,eAAiBiU,GAC3DD,EAAE4H,wBAAyB3H,GAG3B,EAGc,EAAV8H,IACFhe,EAAQie,cAAgB/H,EAAE2H,wBAAyB5H,KAAQ+H,EAGxD/H,IAAM7R,GAAO6R,EAAEhU,gBAAkBkS,GAAgBK,EAASL,EAAc8B,GACrE,GAEHC,IAAM9R,GAAO8R,EAAEjU,gBAAkBkS,GAAgBK,EAASL,EAAc+B,GACrE,EAIDgE,EACJ5J,GAAQpU,KAAMge,EAAWjE,GAAM3F,GAAQpU,KAAMge,EAAWhE,GAC1D,EAGe,EAAV8H,EAAc,GAAK,IAE3B,SAAU/H,EAAGC,GAEZ,GAAKD,IAAMC,EAEV,MADAiE,IAAe,EACR,CAGR,IAAI3d,GACHP,EAAI,EACJiiB,EAAMjI,EAAEvS,WACRqa,EAAM7H,EAAExS,WACRya,GAAOlI,GACPmI,GAAOlI,EAGR,KAAMgI,IAAQH,EACb,MAAO9H,KAAM7R,EAAM,GAClB8R,IAAM9R,EAAM,EACZ8Z,EAAM,GACNH,EAAM,EACN7D,EACE5J,GAAQpU,KAAMge,EAAWjE,GAAM3F,GAAQpU,KAAMge,EAAWhE,GAC1D,CAGK,IAAKgI,IAAQH,EACnB,MAAO/H,GAAcC,EAAGC,EAKzB,KADA1Z,EAAMyZ,EACGzZ,EAAMA,EAAIkH,YAClBya,EAAG9Q,QAAS7Q,EAGb,KADAA,EAAM0Z,EACG1Z,EAAMA,EAAIkH,YAClB0a,EAAG/Q,QAAS7Q,EAIb,MAAQ2hB,EAAGliB,KAAOmiB,EAAGniB,IACpBA,GAGD,OAAOA,GAEN+Z,EAAcmI,EAAGliB,GAAImiB,EAAGniB,IAGxBkiB,EAAGliB,KAAOkY,EAAe,GACzBiK,EAAGniB,KAAOkY,EAAe,EACzB,GAGK/P,GAhWCvJ,GAmWT8Y,EAAOlN,QAAU,SAAU4X,EAAM1iB,GAChC,MAAOgY,GAAQ0K,EAAM,KAAM,KAAM1iB,IAGlCgY,EAAO4J,gBAAkB,SAAUvhB,EAAMqiB,GASxC,IAPOriB,EAAKiG,eAAiBjG,KAAWnB,GACvCuZ,EAAapY,GAIdqiB,EAAOA,EAAKrgB,QAASod,GAAkB,aAElCpb,EAAQud,kBAAmBlJ,GAC5BgG,GAAkBA,EAAcje,KAAMiiB,IACtC1J,GAAkBA,EAAUvY,KAAMiiB,IAErC,IACC,GAAIzf,GAAM6H,EAAQvK,KAAMF,EAAMqiB,EAG9B,IAAKzf,GAAOoB,EAAQ4d,mBAGlB5hB,EAAKnB,UAAuC,KAA3BmB,EAAKnB,SAASY,SAChC,MAAOmD,GAEP,MAAMN,IAGT,MAAOqV,GAAQ0K,EAAMxjB,EAAU,MAAQmB,IAASX,OAAS,GAG1DsY,EAAOa,SAAW,SAAU1T,EAAS9E,GAKpC,OAHO8E,EAAQmB,eAAiBnB,KAAcjG,GAC7CuZ,EAAatT,GAEP0T,EAAU1T,EAAS9E,IAG3B2X,EAAOvR,KAAO,SAAUpG,EAAM+B,IAEtB/B,EAAKiG,eAAiBjG,KAAWnB,GACvCuZ,EAAapY,EAGd,IAAI6U,GAAK0E,EAAKQ,WAAYhY,EAAKG,eAE9B+I,EAAM4J,GAAMJ,EAAOvU,KAAMqZ,EAAKQ,WAAYhY,EAAKG,eAC9C2S,EAAI7U,EAAM+B,GAAOsW,GACjBvW,MAEF,OAAeA,UAARmJ,EACNA,EACAjH,EAAQ+a,aAAe1G,EACtBrY,EAAKmC,aAAcJ,IAClBkJ,EAAMjL,EAAKqhB,iBAAiBtf,KAAUkJ,EAAIqX,UAC1CrX,EAAIlD,MACJ,MAGJ4P,EAAOlE,MAAQ,SAAUgD,GACxB,KAAM,IAAI1X,OAAO,0CAA4C0X,IAO9DkB,EAAOmG,WAAa,SAAU5G,GAC7B,GAAIlX,GACHuiB,KACAvM,EAAI,EACJ/V,EAAI,CAOL,IAJAke,GAAgBna,EAAQwe,iBACxBtE,GAAala,EAAQye,YAAcvL,EAAQpN,MAAO,GAClDoN,EAAQjB,KAAMwI,GAETN,EAAe,CACnB,KAASne,EAAOkX,EAAQjX,MAClBD,IAASkX,EAASjX,KACtB+V,EAAIuM,EAAWhd,KAAMtF,GAGvB,MAAQ+V,KACPkB,EAAQhB,OAAQqM,EAAYvM,GAAK,GAQnC,MAFAkI,GAAY,KAELhH,GAOR6G,EAAUpG,EAAOoG,QAAU,SAAU/d,GACpC,GAAI2gB,GACH/d,EAAM,GACN3C,EAAI,EACJR,EAAWO,EAAKP,QAEjB,IAAMA,GAMC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAGjE,GAAiC,gBAArBO,GAAK0iB,YAChB,MAAO1iB,GAAK0iB,WAGZ,KAAM1iB,EAAOA,EAAK+F,WAAY/F,EAAMA,EAAOA,EAAKsa,YAC/C1X,GAAOmb,EAAS/d,OAGZ,IAAkB,IAAbP,GAA+B,IAAbA,EAC7B,MAAOO,GAAK2iB,cAhBZ,MAAShC,EAAO3gB,EAAKC,MAEpB2C,GAAOmb,EAAS4C,EAkBlB,OAAO/d,IAGR2W,EAAO5B,EAAOiL,WAGbpJ,YAAa,GAEbqJ,aAAcpJ,EAEd1Y,MAAOwe,GAEPxF,cAEA5T,QAEA2W,UACCgG,KAAOriB,IAAK,aAAcmV,OAAO,GACjCmN,KAAOtiB,IAAK,cACZuiB,KAAOviB,IAAK,kBAAmBmV,OAAO,GACtCqN,KAAOxiB,IAAK,oBAGbyb,WACCyD,KAAQ,SAAU5e,GAUjB,MATAA,GAAM,GAAKA,EAAM,GAAGiB,QAASme,GAAWC,IAGxCrf,EAAM,IAAOA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAM,IAAKiB,QAASme,GAAWC,IAExD,OAAbrf,EAAM,KACVA,EAAM,GAAK,IAAMA,EAAM,GAAK,KAGtBA,EAAM+I,MAAO,EAAG,IAGxB+V,MAAS,SAAU9e,GA6BlB,MAlBAA,GAAM,GAAKA,EAAM,GAAGmB,cAEY,QAA3BnB,EAAM,GAAG+I,MAAO,EAAG,IAEjB/I,EAAM,IACX4W,EAAOlE,MAAO1S,EAAM,IAKrBA,EAAM,KAAQA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAAK,GAAmB,SAAbA,EAAM,IAA8B,QAAbA,EAAM,KACzFA,EAAM,KAAUA,EAAM,GAAKA,EAAM,IAAqB,QAAbA,EAAM,KAGpCA,EAAM,IACjB4W,EAAOlE,MAAO1S,EAAM,IAGdA,GAGR6e,OAAU,SAAU7e,GACnB,GAAImiB,GACHC,GAAYpiB,EAAM,IAAMA,EAAM,EAE/B,OAAKwe,IAAiB,MAAEnf,KAAMW,EAAM,IAC5B,MAIHA,EAAM,GACVA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAGxBoiB,GAAY9D,GAAQjf,KAAM+iB,KAEpCD,EAAStK,EAAUuK,GAAU,MAE7BD,EAASC,EAAS7O,QAAS,IAAK6O,EAAS9jB,OAAS6jB,GAAWC,EAAS9jB,UAGvE0B,EAAM,GAAKA,EAAM,GAAG+I,MAAO,EAAGoZ,GAC9BniB,EAAM,GAAKoiB,EAASrZ,MAAO,EAAGoZ,IAIxBniB,EAAM+I,MAAO,EAAG,MAIzBzJ,QAECqf,IAAO,SAAU0D,GAChB,GAAI9d,GAAW8d,EAAiBphB,QAASme,GAAWC,IAAYle,aAChE,OAA4B,MAArBkhB,EACN,WAAa,OAAO,GACpB,SAAUpjB,GACT,MAAOA,GAAKsF,UAAYtF,EAAKsF,SAASpD,gBAAkBoD,IAI3Dma,MAAS,SAAUuB,GAClB,GAAIqC,GAAU/E,EAAY0C,EAAY,IAEtC,OAAOqC,KACLA,EAAU,GAAIpE,QAAQ,MAAQL,GAAa,IAAMoC,EAAY,IAAMpC,GAAa,SACjFN,EAAY0C,EAAW,SAAUhhB,GAChC,MAAOqjB,GAAQjjB,KAAgC,gBAAnBJ,GAAKghB,WAA0BhhB,EAAKghB,iBAAoBhhB,GAAKmC,eAAiBgD,GAAgBnF,EAAKmC,aAAa,UAAY,OAI3Jwd,KAAQ,SAAU5d,EAAMuhB,EAAUC,GACjC,MAAO,UAAUvjB,GAChB,GAAIoP,GAASuI,EAAOvR,KAAMpG,EAAM+B,EAEhC,OAAe,OAAVqN,EACgB,OAAbkU,EAEFA,GAINlU,GAAU,GAEU,MAAbkU,EAAmBlU,IAAWmU,EACvB,OAAbD,EAAoBlU,IAAWmU,EAClB,OAAbD,EAAoBC,GAAqC,IAA5BnU,EAAOkF,QAASiP,GAChC,OAAbD,EAAoBC,GAASnU,EAAOkF,QAASiP,GAAU,GAC1C,OAAbD,EAAoBC,GAASnU,EAAOtF,OAAQyZ,EAAMlkB,UAAakkB,EAClD,OAAbD,GAAsB,IAAMlU,EAAS,KAAMkF,QAASiP,GAAU,GACjD,OAAbD,EAAoBlU,IAAWmU,GAASnU,EAAOtF,MAAO,EAAGyZ,EAAMlkB,OAAS,KAAQkkB,EAAQ,KACxF,IAZO,IAgBV1D,MAAS,SAAUvgB,EAAMkkB,EAAM9I,EAAU9E,EAAOE,GAC/C,GAAI2N,GAAgC,QAAvBnkB,EAAKwK,MAAO,EAAG,GAC3B4Z,EAA+B,SAArBpkB,EAAKwK,MAAO,IACtB6Z,EAAkB,YAATH,CAEV,OAAiB,KAAV5N,GAAwB,IAATE,EAGrB,SAAU9V,GACT,QAASA,EAAK0H,YAGf,SAAU1H,EAAM8E,EAASsW,GACxB,GAAInY,GAAOqY,EAAYqF,EAAMxG,EAAMyJ,EAAW/U,EAC7CpO,EAAMgjB,IAAWC,EAAU,cAAgB,kBAC3C7C,EAAS7gB,EAAK0H,WACd3F,EAAO4hB,GAAU3jB,EAAKsF,SAASpD,cAC/B2hB,GAAYzI,IAAQuI,CAErB,IAAK9C,EAAS,CAGb,GAAK4C,EAAS,CACb,KAAQhjB,GAAM,CAEb,IADAkgB,EAAO3gB,EACE2gB,EAAOA,EAAMlgB,IACrB,GAAKkjB,EAAShD,EAAKrb,SAASpD,gBAAkBH,EAAyB,IAAlB4e,EAAKlhB,SACzD,OAAO,CAIToP,GAAQpO,EAAe,SAATnB,IAAoBuP,GAAS,cAE5C,OAAO,EAMR,GAHAA,GAAU6U,EAAU7C,EAAO9a,WAAa8a,EAAOiD,WAG1CJ,GAAWG,GAQf,IANAvI,EAAauF,EAAQ9d,KAAc8d,EAAQ9d,OAC3CE,EAAQqY,EAAYhc,OACpBskB,EAAY3gB,EAAM,KAAOuY,GAAWvY,EAAM,GAC1CkX,EAAOlX,EAAM,KAAOuY,GAAWvY,EAAM,GACrC0d,EAAOiD,GAAa/C,EAAOxb,WAAYue,GAE9BjD,IAASiD,GAAajD,GAAQA,EAAMlgB,KAG3C0Z,EAAOyJ,EAAY,IAAM/U,EAAMzL,OAGhC,GAAuB,IAAlBud,EAAKlhB,YAAoB0a,GAAQwG,IAAS3gB,EAAO,CACrDsb,EAAYhc,IAAWkc,EAASoI,EAAWzJ,EAC3C,YAKI,IAAK0J,IAAa5gB,GAASjD,EAAM+C,KAAc/C,EAAM+C,QAAkBzD,KAAW2D,EAAM,KAAOuY,EACrGrB,EAAOlX,EAAM,OAKb,OAAS0d,IAASiD,GAAajD,GAAQA,EAAMlgB,KAC3C0Z,EAAOyJ,EAAY,IAAM/U,EAAMzL,UAEzBugB,EAAShD,EAAKrb,SAASpD,gBAAkBH,EAAyB,IAAlB4e,EAAKlhB,cAAsB0a,IAE5E0J,KACHlD,EAAM5d,KAAc4d,EAAM5d,QAAkBzD,IAAWkc,EAASrB,IAG7DwG,IAAS3gB,MASjB,MADAma,IAAQrE,EACDqE,IAASvE,GAAWuE,EAAOvE,IAAU,GAAKuE,EAAOvE,GAAS,KAKrEgK,OAAU,SAAUmE,EAAQrJ,GAK3B,GAAI/E,GACHd,EAAK0E,EAAKyF,QAAS+E,IAAYxK,EAAKqB,WAAYmJ,EAAO7hB,gBACtDyV,EAAOlE,MAAO,uBAAyBsQ,EAKzC,OAAKlP,GAAI9R,GACD8R,EAAI6F,GAIP7F,EAAGxV,OAAS,GAChBsW,GAASoO,EAAQA,EAAQ,GAAIrJ,GACtBnB,EAAKqB,WAAWlG,eAAgBqP,EAAO7hB,eAC7CuX,EAAa,SAAU7B,EAAMnN,GAI5B,IAHA,GAAIuZ,GACHC,EAAUpP,EAAI+C,EAAM8C,GACpBza,EAAIgkB,EAAQ5kB,OACLY,KACP+jB,EAAM1P,GAAQpU,KAAM0X,EAAMqM,EAAQhkB,IAClC2X,EAAMoM,KAAWvZ,EAASuZ,GAAQC,EAAQhkB,MAG5C,SAAUD,GACT,MAAO6U,GAAI7U,EAAM,EAAG2V,KAIhBd,IAITmK,SAECnf,IAAO4Z,EAAa,SAAU7E,GAI7B,GAAI0M,MACHpK,KACA6D,EAAUkD,EAASrJ,EAAS5S,QAAS8S,GAAO,MAE7C,OAAOiG,GAAShY,GACf0W,EAAa,SAAU7B,EAAMnN,EAAS3F,EAASsW,GAM9C,IALA,GAAIpb,GACH8b,EAAYf,EAASnD,EAAM,KAAMwD,MACjCnb,EAAI2X,EAAKvY,OAGFY,MACDD,EAAO8b,EAAU7b,MACtB2X,EAAK3X,KAAOwK,EAAQxK,GAAKD,MAI5B,SAAUA,EAAM8E,EAASsW,GAGxB,MAFAkG,GAAM,GAAKthB,EACX+a,EAASuG,EAAO,KAAMlG,EAAKlE,IACnBA,EAAQ9T,SAInB8gB,IAAOzK,EAAa,SAAU7E,GAC7B,MAAO,UAAU5U,GAChB,MAAO2X,GAAQ/C,EAAU5U,GAAOX,OAAS,KAI3CmZ,SAAYiB,EAAa,SAAUhS,GAClC,MAAO,UAAUzH,GAChB,OAASA,EAAK0iB,aAAe1iB,EAAKmkB,WAAapG,EAAS/d,IAASsU,QAAS7M,GAAS,MAWrF2c,KAAQ3K,EAAc,SAAU2K,GAM/B,MAJM9E,IAAYlf,KAAKgkB,GAAQ,KAC9BzM,EAAOlE,MAAO,qBAAuB2Q,GAEtCA,EAAOA,EAAKpiB,QAASme,GAAWC,IAAYle,cACrC,SAAUlC,GAChB,GAAIqkB,EACJ,GACC,IAAMA,EAAWhM,EAChBrY,EAAKokB,KACLpkB,EAAKmC,aAAa,aAAenC,EAAKmC,aAAa,QAGnD,MADAkiB,GAAWA,EAASniB,cACbmiB,IAAaD,GAA2C,IAAnCC,EAAS/P,QAAS8P,EAAO,YAE5CpkB,EAAOA,EAAK0H,aAAiC,IAAlB1H,EAAKP,SAC3C,QAAO,KAKTsS,OAAU,SAAU/R,GACnB,GAAIskB,GAAOtlB,EAAOulB,UAAYvlB,EAAOulB,SAASD,IAC9C,OAAOA,IAAQA,EAAKxa,MAAO,KAAQ9J,EAAKkD,IAGzCshB,KAAQ,SAAUxkB,GACjB,MAAOA,KAASoe,GAGjBqG,MAAS,SAAUzkB,GAClB,MAAOA,KAASnB,EAASwF,iBAAmBxF,EAAS6lB,UAAY7lB,EAAS6lB,gBAAkB1kB,EAAKV,MAAQU,EAAK2kB,OAAS3kB,EAAK4kB,WAI7HC,QAAW,SAAU7kB,GACpB,MAAOA,GAAK8kB,YAAa,GAG1BA,SAAY,SAAU9kB,GACrB,MAAOA,GAAK8kB,YAAa,GAG1Blf,QAAW,SAAU5F,GAGpB,GAAIsF,GAAWtF,EAAKsF,SAASpD,aAC7B,OAAqB,UAAboD,KAA0BtF,EAAK4F,SAA0B,WAAbN,KAA2BtF,EAAKiI,UAGrFA,SAAY,SAAUjI,GAOrB,MAJKA,GAAK0H,YACT1H,EAAK0H,WAAWqd,cAGV/kB,EAAKiI,YAAa,GAI1B+F,MAAS,SAAUhO,GAKlB,IAAMA,EAAOA,EAAK+F,WAAY/F,EAAMA,EAAOA,EAAKsa,YAC/C,GAAKta,EAAKP,SAAW,EACpB,OAAO,CAGT,QAAO,GAGRohB,OAAU,SAAU7gB,GACnB,OAAQuZ,EAAKyF,QAAe,MAAGhf,IAIhCglB,OAAU,SAAUhlB,GACnB,MAAOigB,IAAQ7f,KAAMJ,EAAKsF,WAG3Bgc,MAAS,SAAUthB,GAClB,MAAOggB,IAAQ5f,KAAMJ,EAAKsF,WAG3B2f,OAAU,SAAUjlB,GACnB,GAAI+B,GAAO/B,EAAKsF,SAASpD,aACzB,OAAgB,UAATH,GAAkC,WAAd/B,EAAKV,MAA8B,WAATyC,GAGtD0F,KAAQ,SAAUzH,GACjB,GAAIoG,EACJ,OAAuC,UAAhCpG,EAAKsF,SAASpD,eACN,SAAdlC,EAAKV,OAImC,OAArC8G,EAAOpG,EAAKmC,aAAa,UAA2C,SAAvBiE,EAAKlE,gBAIvD0T,MAAS6E,EAAuB,WAC/B,OAAS,KAGV3E,KAAQ2E,EAAuB,SAAUE,EAActb,GACtD,OAASA,EAAS,KAGnBwW,GAAM4E,EAAuB,SAAUE,EAActb,EAAQqb,GAC5D,OAAoB,EAAXA,EAAeA,EAAWrb,EAASqb,KAG7CwK,KAAQzK,EAAuB,SAAUE,EAActb,GAEtD,IADA,GAAIY,GAAI,EACIZ,EAAJY,EAAYA,GAAK,EACxB0a,EAAapV,KAAMtF,EAEpB,OAAO0a,KAGRwK,IAAO1K,EAAuB,SAAUE,EAActb,GAErD,IADA,GAAIY,GAAI,EACIZ,EAAJY,EAAYA,GAAK,EACxB0a,EAAapV,KAAMtF,EAEpB,OAAO0a,KAGRyK,GAAM3K,EAAuB,SAAUE,EAActb,EAAQqb,GAE5D,IADA,GAAIza,GAAe,EAAXya,EAAeA,EAAWrb,EAASqb,IACjCza,GAAK,GACd0a,EAAapV,KAAMtF,EAEpB,OAAO0a,KAGR0K,GAAM5K,EAAuB,SAAUE,EAActb,EAAQqb,GAE5D,IADA,GAAIza,GAAe,EAAXya,EAAeA,EAAWrb,EAASqb,IACjCza,EAAIZ,GACbsb,EAAapV,KAAMtF,EAEpB,OAAO0a,OAKVpB,EAAKyF,QAAa,IAAIzF,EAAKyF,QAAY,EAGvC,KAAM/e,KAAOqlB,OAAO,EAAMC,UAAU,EAAMC,MAAM,EAAMC,UAAU,EAAMC,OAAO,GAC5EnM,EAAKyF,QAAS/e,GAAMsa,EAAmBta,EAExC,KAAMA,KAAO0lB,QAAQ,EAAMC,OAAO,GACjCrM,EAAKyF,QAAS/e,GAAMua,EAAoBva,EAylBzC,OAplBA2a,GAAW3O,UAAYsN,EAAKsM,QAAUtM,EAAKyF,QAC3CzF,EAAKqB,WAAa,GAAIA,GAEtBhC,EAAWjB,EAAOiB,SAAW,SAAUhE,EAAUkR,GAChD,GAAI7B,GAASljB,EAAO8Z,EAAQvb,EAC3BymB,EAAOjO,EAAQkO,EACfC,EAAS1H,EAAY3J,EAAW,IAEjC,IAAKqR,EACJ,MAAOH,GAAY,EAAIG,EAAOnc,MAAO,EAOtC,KAJAic,EAAQnR,EACRkD,KACAkO,EAAazM,EAAK2C,UAEV6J,GAAQ,GAGT9B,IAAYljB,EAAQme,GAAO3Y,KAAMwf,OACjChlB,IAEJglB,EAAQA,EAAMjc,MAAO/I,EAAM,GAAG1B,SAAY0mB,GAE3CjO,EAAOvS,KAAOsV,OAGfoJ,GAAU,GAGJljB,EAAQoe,GAAa5Y,KAAMwf,MAChC9B,EAAUljB,EAAM2R,QAChBmI,EAAOtV,MACNwC,MAAOkc,EAEP3kB,KAAMyB,EAAM,GAAGiB,QAAS8S,GAAO,OAEhCiR,EAAQA,EAAMjc,MAAOma,EAAQ5kB,QAI9B,KAAMC,IAAQia,GAAKlZ,SACZU,EAAQwe,GAAWjgB,GAAOiH,KAAMwf,KAAcC,EAAY1mB,MAC9DyB,EAAQilB,EAAY1mB,GAAQyB,MAC7BkjB,EAAUljB,EAAM2R,QAChBmI,EAAOtV,MACNwC,MAAOkc,EACP3kB,KAAMA,EACNmL,QAAS1J,IAEVglB,EAAQA,EAAMjc,MAAOma,EAAQ5kB,QAI/B,KAAM4kB,EACL,MAOF,MAAO6B,GACNC,EAAM1mB,OACN0mB,EACCpO,EAAOlE,MAAOmB,GAEd2J,EAAY3J,EAAUkD,GAAShO,MAAO,IAqWzCmU,EAAUtG,EAAOsG,QAAU,SAAUrJ,EAAU7T,GAC9C,GAAId,GACHod,KACAD,KACA6I,EAASzH,EAAe5J,EAAW,IAEpC,KAAMqR,EAAS,CAMd,IAJMllB,IACLA,EAAQ6X,EAAUhE,IAEnB3U,EAAIc,EAAM1B,OACFY,KACPgmB,EAAStJ,EAAmB5b,EAAMd,IAC7BgmB,EAAQljB,GACZsa,EAAY9X,KAAM0gB,GAElB7I,EAAgB7X,KAAM0gB,EAKxBA,GAASzH,EAAe5J,EAAUuI,EAA0BC,EAAiBC,IAG7E4I,EAAOrR,SAAWA,EAEnB,MAAOqR,IAYR7M,EAASzB,EAAOyB,OAAS,SAAUxE,EAAU9P,EAASoS,EAASU,GAC9D,GAAI3X,GAAG4a,EAAQqL,EAAO5mB,EAAM6G,EAC3BggB,EAA+B,kBAAbvR,IAA2BA,EAC7C7T,GAAS6W,GAAQgB,EAAWhE,EAAWuR,EAASvR,UAAYA,EAK7D,IAHAsC,EAAUA,MAGY,IAAjBnW,EAAM1B,OAAe,CAIzB,GADAwb,EAAS9Z,EAAM,GAAKA,EAAM,GAAG+I,MAAO,GAC/B+Q,EAAOxb,OAAS,GAAkC,QAA5B6mB,EAAQrL,EAAO,IAAIvb,MAC5C0E,EAAQkd,SAAgC,IAArBpc,EAAQrF,UAAkB4Y,GAC7CkB,EAAKuD,SAAUjC,EAAO,GAAGvb,MAAS,CAGnC,GADAwF,GAAYyU,EAAKpT,KAAS,GAAG+f,EAAMzb,QAAQ,GAAGzI,QAAQme,GAAWC,IAAYtb,QAAkB,IACzFA,EACL,MAAOoS,EAGIiP,KACXrhB,EAAUA,EAAQ4C,YAGnBkN,EAAWA,EAAS9K,MAAO+Q,EAAOnI,QAAQ3K,MAAM1I,QAKjD,IADAY,EAAIsf,GAAwB,aAAEnf,KAAMwU,GAAa,EAAIiG,EAAOxb,OACpDY,MACPimB,EAAQrL,EAAO5a,IAGVsZ,EAAKuD,SAAWxd,EAAO4mB,EAAM5mB,QAGlC,IAAM6G,EAAOoT,EAAKpT,KAAM7G,MAEjBsY,EAAOzR,EACZ+f,EAAMzb,QAAQ,GAAGzI,QAASme,GAAWC,IACrCpH,GAAS5Y,KAAMya,EAAO,GAAGvb,OAAU2Z,EAAanU,EAAQ4C,aAAgB5C,IACpE,CAKJ,GAFA+V,EAAO3E,OAAQjW,EAAG,GAClB2U,EAAWgD,EAAKvY,QAAU0Z,EAAY8B,IAChCjG,EAEL,MADArP,GAAKiE,MAAO0N,EAASU,GACdV,CAGR,QAeJ,OAPEiP,GAAYlI,EAASrJ,EAAU7T,IAChC6W,EACA9S,GACCuT,EACDnB,EACA8B,GAAS5Y,KAAMwU,IAAcqE,EAAanU,EAAQ4C,aAAgB5C,GAE5DoS,GAMRlT,EAAQye,WAAa1f,EAAQe,MAAM,IAAImS,KAAMwI,GAAYvF,KAAK,MAAQnW,EAItEiB,EAAQwe,mBAAqBrE,EAG7B/F,IAIApU,EAAQie,aAAevI,EAAO,SAAU0M,GAEvC,MAAuE,GAAhEA,EAAKvE,wBAAyBhjB,EAAS+F,cAAc,UAMvD8U,EAAO,SAAUC,GAEtB,MADAA,GAAI9R,UAAY,mBAC+B,MAAxC8R,EAAI5T,WAAW5D,aAAa,WAEnC0X,EAAW,yBAA0B,SAAU7Z,EAAM+B,EAAMic,GAC1D,MAAMA,GAAN,OACQhe,EAAKmC,aAAcJ,EAA6B,SAAvBA,EAAKG,cAA2B,EAAI,KAOjE8B,EAAQ+a,YAAerF,EAAO,SAAUC,GAG7C,MAFAA,GAAI9R,UAAY,WAChB8R,EAAI5T,WAAW+S,aAAc,QAAS,IACY,KAA3Ca,EAAI5T,WAAW5D,aAAc,YAEpC0X,EAAW,QAAS,SAAU7Z,EAAM+B,EAAMic,GACzC,MAAMA,IAAyC,UAAhChe,EAAKsF,SAASpD,cAA7B,OACQlC,EAAKkI,eAOTwR,EAAO,SAAUC,GACtB,MAAuC,OAAhCA,EAAIxX,aAAa,eAExB0X,EAAW8E,GAAU,SAAU3e,EAAM+B,EAAMic,GAC1C,GAAI/S,EACJ,OAAM+S,GAAN,OACQhe,EAAM+B,MAAW,EAAOA,EAAKG,eACjC+I,EAAMjL,EAAKqhB,iBAAkBtf,KAAWkJ,EAAIqX,UAC7CrX,EAAIlD,MACL,OAKG4P,GAEH3Y,EAIJO,IAAO4G,KAAOwR,GACdpY,GAAO8iB,KAAO1K,GAAOiL,UACrBrjB,GAAO8iB,KAAK,KAAO9iB,GAAO8iB,KAAKrD,QAC/Bzf,GAAO8mB,OAAS1O,GAAOmG,WACvBve,GAAOkI,KAAOkQ,GAAOoG,QACrBxe,GAAO+mB,SAAW3O,GAAOqG,MACzBze,GAAOiZ,SAAWb,GAAOa,QAIzB,IAAI+N,IAAgBhnB,GAAO8iB,KAAKthB,MAAMgf,aAElCyG,GAAa,6BAIbrmB,GAAY,gBAgChBZ,IAAOc,OAAS,SAAUgiB,EAAMrd,EAAOnF,GACtC,GAAIG,GAAOgF,EAAO,EAMlB,OAJKnF,KACJwiB,EAAO,QAAUA,EAAO,KAGD,IAAjBrd,EAAM3F,QAAkC,IAAlBW,EAAKP,SACjCF,GAAO4G,KAAKob,gBAAiBvhB,EAAMqiB,IAAWriB,MAC9CT,GAAO4G,KAAKsE,QAAS4X,EAAM9iB,GAAOQ,KAAMiF,EAAO,SAAUhF,GACxD,MAAyB,KAAlBA,EAAKP,aAIfF,GAAOsV,GAAGrR,QACT2C,KAAM,SAAUyO,GACf,GAAI3U,GACH2C,KACA6jB,EAAOxnB,KACP8W,EAAM0Q,EAAKpnB,MAEZ,IAAyB,gBAAbuV,GACX,MAAO3V,MAAKuW,UAAWjW,GAAQqV,GAAWvU,OAAO,WAChD,IAAMJ,EAAI,EAAO8V,EAAJ9V,EAASA,IACrB,GAAKV,GAAOiZ,SAAUiO,EAAMxmB,GAAKhB,MAChC,OAAO,IAMX,KAAMgB,EAAI,EAAO8V,EAAJ9V,EAASA,IACrBV,GAAO4G,KAAMyO,EAAU6R,EAAMxmB,GAAK2C,EAMnC,OAFAA,GAAM3D,KAAKuW,UAAWO,EAAM,EAAIxW,GAAO8mB,OAAQzjB,GAAQA,GACvDA,EAAIgS,SAAW3V,KAAK2V,SAAW3V,KAAK2V,SAAW,IAAMA,EAAWA,EACzDhS,GAERvC,OAAQ,SAAUuU,GACjB,MAAO3V,MAAKuW,UAAW9V,EAAOT,KAAM2V,OAAgB,KAErD/U,IAAK,SAAU+U,GACd,MAAO3V,MAAKuW,UAAW9V,EAAOT,KAAM2V,OAAgB,KAErD8R,GAAI,SAAU9R,GACb,QAASlV,EACRT,KAIoB,gBAAb2V,IAAyB2R,GAAcnmB,KAAMwU,GACnDrV,GAAQqV,GACRA,OACD,GACCvV,SASJ,IAAIsnB,IAGH9nB,GAAWG,EAAOH,SAKlByZ,GAAa,sCAEbpM,GAAO3M,GAAOsV,GAAG3I,KAAO,SAAU0I,EAAU9P,GAC3C,GAAI/D,GAAOf,CAGX,KAAM4U,EACL,MAAO3V,KAIR,IAAyB,gBAAb2V,GAAwB,CAUnC,GAPC7T,EAF2B,MAAvB6T,EAAShL,OAAO,IAAyD,MAA3CgL,EAAShL,OAAQgL,EAASvV,OAAS,IAAeuV,EAASvV,QAAU,GAE7F,KAAMuV,EAAU,MAGlB0D,GAAW/R,KAAMqO,IAIrB7T,IAAUA,EAAM,IAAO+D,EAsDrB,OAAMA,GAAWA,EAAQsQ,QACtBtQ,GAAW6hB,IAAaxgB,KAAMyO,GAKhC3V,KAAKoW,YAAavQ,GAAUqB,KAAMyO,EAzDzC,IAAK7T,EAAM,GAAK,CAYf,GAXA+D,EAAUA,YAAmBvF,IAASuF,EAAQ,GAAKA,EAInDvF,GAAOiG,MAAOvG,KAAMM,GAAOqnB,UAC1B7lB,EAAM,GACN+D,GAAWA,EAAQrF,SAAWqF,EAAQmB,eAAiBnB,EAAUjG,IACjE,IAII2nB,GAAWpmB,KAAMW,EAAM,KAAQxB,GAAO+W,cAAexR,GACzD,IAAM/D,IAAS+D,GAETvF,GAAOO,WAAYb,KAAM8B,IAC7B9B,KAAM8B,GAAS+D,EAAS/D,IAIxB9B,KAAKmH,KAAMrF,EAAO+D,EAAS/D,GAK9B,OAAO9B,MAQP,GAJAe,EAAOnB,GAAS0Z,eAAgBxX,EAAM,IAIjCf,GAAQA,EAAK0H,WAAa,CAG9B,GAAK1H,EAAKkD,KAAOnC,EAAM,GACtB,MAAO4lB,IAAWxgB,KAAMyO,EAIzB3V,MAAKI,OAAS,EACdJ,KAAK,GAAKe,EAKX,MAFAf,MAAK6F,QAAUjG,GACfI,KAAK2V,SAAWA,EACT3V,KAcH,MAAK2V,GAASnV,UACpBR,KAAK6F,QAAU7F,KAAK,GAAK2V,EACzB3V,KAAKI,OAAS,EACPJ,MAIIM,GAAOO,WAAY8U,GACK,mBAArB+R,IAAWjlB,MACxBilB,GAAWjlB,MAAOkT,GAElBA,EAAUrV,KAGeuC,SAAtB8S,EAASA,WACb3V,KAAK2V,SAAWA,EAASA,SACzB3V,KAAK6F,QAAU8P,EAAS9P,SAGlBvF,GAAOyX,UAAWpC,EAAU3V,OAIrCiN,IAAKD,UAAY1M,GAAOsV,GAGxB8R,GAAapnB,GAAQV,GAGrB,IAAIgoB,IAAe,iCAElBC,IACCC,UAAU,EACVtU,UAAU,EACVuU,MAAM,EACN3T,MAAM,EAGR9T,IAAOiE,QACN/C,IAAK,SAAUT,EAAMS,EAAKwmB,GAIzB,IAHA,GAAIhD,MACHzjB,EAAMR,EAAMS,GAELD,GAAwB,IAAjBA,EAAIf,WAA6BqC,SAAVmlB,GAAwC,IAAjBzmB,EAAIf,WAAmBF,GAAQiB,GAAMkmB,GAAIO,KAC/E,IAAjBzmB,EAAIf,UACRwkB,EAAQ1e,KAAM/E,GAEfA,EAAMA,EAAIC,EAEX,OAAOwjB,IAGR1jB,QAAS,SAAU2mB,EAAGlnB,GAGrB,IAFA,GAAImnB,MAEID,EAAGA,EAAIA,EAAE5M,YACI,IAAf4M,EAAEznB,UAAkBynB,IAAMlnB,GAC9BmnB,EAAE5hB,KAAM2hB,EAIV,OAAOC,MAIT5nB,GAAOsV,GAAGrR,QACT0gB,IAAK,SAAUnS,GACd,GAAI9R,GACHmnB,EAAU7nB,GAAQwS,EAAQ9S,MAC1B8W,EAAMqR,EAAQ/nB,MAEf,OAAOJ,MAAKoB,OAAO,WAClB,IAAMJ,EAAI,EAAO8V,EAAJ9V,EAASA,IACrB,GAAKV,GAAOiZ,SAAUvZ,KAAMmoB,EAAQnnB,IACnC,OAAO,KAMXonB,QAAS,SAAUzE,EAAW9d,GAS7B,IARA,GAAItE,GACHP,EAAI,EACJ+G,EAAI/H,KAAKI,OACT4kB,KACAqD,EAAMf,GAAcnmB,KAAMwiB,IAAoC,gBAAdA,GAC/CrjB,GAAQqjB,EAAW9d,GAAW7F,KAAK6F,SACnC,EAEUkC,EAAJ/G,EAAOA,IACd,IAAMO,EAAMvB,KAAKgB,GAAIO,GAAOA,IAAQsE,EAAStE,EAAMA,EAAIkH,WAEtD,GAAKlH,EAAIf,SAAW,KAAO6nB,EAC1BA,EAAIjd,MAAM7J,GAAO,GAGA,IAAjBA,EAAIf,UACHF,GAAO4G,KAAKob,gBAAgB/gB,EAAKoiB,IAAc,CAEhDqB,EAAQ1e,KAAM/E,EACd,OAKH,MAAOvB,MAAKuW,UAAWyO,EAAQ5kB,OAAS,EAAIE,GAAO8mB,OAAQpC,GAAYA,IAKxE5Z,MAAO,SAAUrK,GAGhB,MAAMA,GAKe,gBAATA,GACJT,GAAOe,QAASrB,KAAK,GAAIM,GAAQS,IAIlCT,GAAOe,QAEbN,EAAKoV,OAASpV,EAAK,GAAKA,EAAMf,MAXrBA,KAAK,IAAMA,KAAK,GAAGyI,WAAezI,KAAK2W,QAAQ2R,UAAUloB,OAAS,IAc7EgI,IAAK,SAAUuN,EAAU9P,GACxB,MAAO7F,MAAKuW,UACXjW,GAAO8mB,OACN9mB,GAAOiG,MAAOvG,KAAKqK,MAAO/J,GAAQqV,EAAU9P,OAK/C0iB,QAAS,SAAU5S,GAClB,MAAO3V,MAAKoI,IAAiB,MAAZuN,EAChB3V,KAAKwW,WAAaxW,KAAKwW,WAAWpV,OAAOuU,OAa5CrV,GAAOuB,MACN+f,OAAQ,SAAU7gB,GACjB,GAAI6gB,GAAS7gB,EAAK0H,UAClB,OAAOmZ,IAA8B,KAApBA,EAAOphB,SAAkBohB,EAAS,MAEpD4G,QAAS,SAAUznB,GAClB,MAAOT,IAAOkB,IAAKT,EAAM,eAE1B0nB,aAAc,SAAU1nB,EAAMC,EAAGgnB,GAChC,MAAO1nB,IAAOkB,IAAKT,EAAM,aAAcinB,IAExCD,KAAM,SAAUhnB,GACf,MAAOO,GAASP,EAAM,gBAEvBqT,KAAM,SAAUrT,GACf,MAAOO,GAASP,EAAM,oBAEvB2nB,QAAS,SAAU3nB,GAClB,MAAOT,IAAOkB,IAAKT,EAAM,gBAE1BunB,QAAS,SAAUvnB,GAClB,MAAOT,IAAOkB,IAAKT,EAAM,oBAE1B4nB,UAAW,SAAU5nB,EAAMC,EAAGgnB,GAC7B,MAAO1nB,IAAOkB,IAAKT,EAAM,cAAeinB,IAEzCY,UAAW,SAAU7nB,EAAMC,EAAGgnB,GAC7B,MAAO1nB,IAAOkB,IAAKT,EAAM,kBAAmBinB,IAE7Ca,SAAU,SAAU9nB,GACnB,MAAOT,IAAOgB,SAAWP,EAAK0H,gBAAmB3B,WAAY/F,IAE9D+mB,SAAU,SAAU/mB,GACnB,MAAOT,IAAOgB,QAASP,EAAK+F,aAE7B0M,SAAU,SAAUzS,GACnB,MAAOT,IAAO+F,SAAUtF,EAAM,UAC7BA,EAAKgJ,iBAAmBhJ,EAAK+I,cAAclK,SAC3CU,GAAOiG,SAAWxF,EAAKqF,cAEvB,SAAUtD,EAAM8S,GAClBtV,GAAOsV,GAAI9S,GAAS,SAAUklB,EAAOrS,GACpC,GAAIhS,GAAMrD,GAAOsE,IAAK5E,KAAM4V,EAAIoS,EAsBhC,OApB0B,UAArBllB,EAAK+H,MAAO,MAChB8K,EAAWqS,GAGPrS,GAAgC,gBAAbA,KACvBhS,EAAMrD,GAAOc,OAAQuU,EAAUhS,IAG3B3D,KAAKI,OAAS,IAEZynB,GAAkB/kB,KACvBa,EAAMrD,GAAO8mB,OAAQzjB,IAIjBikB,GAAazmB,KAAM2B,KACvBa,EAAMA,EAAImlB,YAIL9oB,KAAKuW,UAAW5S,KAGzB,IAAI5B,IAAY,OAKZH,KAiCJtB,IAAOyoB,UAAY,SAAUrnB,GAI5BA,EAA6B,gBAAZA,GACdE,GAAcF,IAAaD,EAAeC,GAC5CpB,GAAOiE,UAAY7C,EAEpB,IACCsnB,GAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EAEA9jB,KAEA+jB,GAAS5nB,EAAQ6nB,SAEjBva,EAAO,SAAUpM,GAOhB,IANAqmB,EAASvnB,EAAQunB,QAAUrmB,EAC3BsmB,GAAQ,EACRE,EAAcC,GAAe,EAC7BA,EAAc,EACdF,EAAe5jB,EAAKnF,OACpB4oB,GAAS,EACDzjB,GAAsB4jB,EAAdC,EAA4BA,IAC3C,GAAK7jB,EAAM6jB,GAAc7e,MAAO3H,EAAM,GAAKA,EAAM,OAAU,GAASlB,EAAQ8nB,YAAc,CACzFP,GAAS,CACT,OAGFD,GAAS,EACJzjB,IACC+jB,EACCA,EAAMlpB,QACV4O,EAAMsa,EAAM7V,SAEFwV,EACX1jB,KAEAiiB,EAAKiC,YAKRjC,GAECpf,IAAK,WACJ,GAAK7C,EAAO,CAEX,GAAIqK,GAAQrK,EAAKnF,QACjB,QAAUgI,GAAKsO,GACdpW,GAAOuB,KAAM6U,EAAM,SAAU1U,EAAGuW,GAC/B,GAAIlY,GAAOC,GAAOD,KAAMkY,EACV,cAATlY,EACEqB,EAAQ0lB,QAAWI,EAAKvC,IAAK1M,IAClChT,EAAKe,KAAMiS,GAEDA,GAAOA,EAAInY,QAAmB,WAATC,GAEhC+H,EAAKmQ,MAGJ/N,WAGCwe,EACJG,EAAe5jB,EAAKnF,OAGT6oB,IACXI,EAAczZ,EACdZ,EAAMia,IAGR,MAAOjpB,OAGR0pB,OAAQ,WAkBP,MAjBKnkB,IACJjF,GAAOuB,KAAM2I,UAAW,SAAUxI,EAAGuW,GAEpC,IADA,GAAInN,IACMA,EAAQ9K,GAAOe,QAASkX,EAAKhT,EAAM6F,IAAY,IACxD7F,EAAK0R,OAAQ7L,EAAO,GAEf4d,IACUG,GAAT/d,GACJ+d,IAEaC,GAAThe,GACJge,OAMEppB,MAIRilB,IAAK,SAAUrP,GACd,MAAOA,GAAKtV,GAAOe,QAASuU,EAAIrQ,GAAS,MAASA,IAAQA,EAAKnF,SAGhE2O,MAAO,WAGN,MAFAxJ,MACA4jB,EAAe,EACRnpB,MAGRypB,QAAS,WAER,MADAlkB,GAAO+jB,EAAQL,EAASpmB,OACjB7C,MAGR6lB,SAAU,WACT,OAAQtgB,GAGTokB,KAAM,WAKL,MAJAL,GAAQzmB,OACFomB,GACLzB,EAAKiC,UAECzpB,MAGR4pB,OAAQ,WACP,OAAQN,GAGTO,SAAU,SAAUhkB,EAAS6Q,GAU5B,OATKnR,GAAW2jB,IAASI,IACxB5S,EAAOA,MACPA,GAAS7Q,EAAS6Q,EAAK7L,MAAQ6L,EAAK7L,QAAU6L,GACzCsS,EACJM,EAAMhjB,KAAMoQ,GAEZ1H,EAAM0H,IAGD1W,MAGRgP,KAAM,WAEL,MADAwY,GAAKqC,SAAU7pB,KAAMwK,WACdxK,MAGRkpB,MAAO,WACN,QAASA,GAIZ,OAAO1B,IAIRlnB,GAAOiE,QAENgM,SAAU,SAAU0B,GACnB,GAAI6X,KAEA,UAAW,OAAQxpB,GAAOyoB,UAAU,eAAgB,aACpD,SAAU,OAAQzoB,GAAOyoB,UAAU,eAAgB,aACnD,SAAU,WAAYzoB,GAAOyoB,UAAU,YAE1CxU,EAAQ,UACRpD,GACCoD,MAAO,WACN,MAAOA,IAERtF,OAAQ,WAEP,MADAqB,GAASb,KAAMjF,WAAYqH,KAAMrH,WAC1BxK,MAER+pB,KAAM,WACL,GAAIC,GAAMxf,SACV,OAAOlK,IAAOiQ,SAAS,SAAU0Z,GAChC3pB,GAAOuB,KAAMioB,EAAQ,SAAU9oB,EAAGkpB,GACjC,GAAItU,GAAKtV,GAAOO,WAAYmpB,EAAKhpB,KAASgpB,EAAKhpB,EAE/CsP,GAAU4Z,EAAM,IAAK,WACpB,GAAIC,GAAWvU,GAAMA,EAAGrL,MAAOvK,KAAMwK,UAChC2f,IAAY7pB,GAAOO,WAAYspB,EAAShZ,SAC5CgZ,EAAShZ,UACP1B,KAAMwa,EAASG,SACfvY,KAAMoY,EAASI,QACf1Y,SAAUsY,EAASK,QAErBL,EAAUC,EAAO,GAAM,QAAUlqB,OAASmR,EAAU8Y,EAAS9Y,UAAYnR,KAAM4V,GAAOuU,GAAa3f,eAItGwf,EAAM,OACJ7Y,WAIJA,QAAS,SAAUhR,GAClB,MAAc,OAAPA,EAAcG,GAAOiE,OAAQpE,EAAKgR,GAAYA,IAGvDb,IAwCD,OArCAa,GAAQoZ,KAAOpZ,EAAQ4Y,KAGvBzpB,GAAOuB,KAAMioB,EAAQ,SAAU9oB,EAAGkpB,GACjC,GAAI3kB,GAAO2kB,EAAO,GACjBM,EAAcN,EAAO,EAGtB/Y,GAAS+Y,EAAM,IAAO3kB,EAAK6C,IAGtBoiB,GACJjlB,EAAK6C,IAAI,WAERmM,EAAQiW,GAGNV,EAAY,EAAJ9oB,GAAS,GAAIyoB,QAASK,EAAQ,GAAK,GAAIH,MAInDrZ,EAAU4Z,EAAM,IAAO,WAEtB,MADA5Z,GAAU4Z,EAAM,GAAK,QAAUlqB,OAASsQ,EAAWa,EAAUnR,KAAMwK,WAC5DxK,MAERsQ,EAAU4Z,EAAM,GAAK,QAAW3kB,EAAKskB,WAItC1Y,EAAQA,QAASb,GAGZ2B,GACJA,EAAKhR,KAAMqP,EAAUA,GAIfA,GAIRma,KAAM,SAAUC,GACf,GAwBCC,GAAgBC,EAAkBC,EAxB/B7pB,EAAI,EACP8pB,EAAgBjgB,EAAM5J,KAAMuJ,WAC5BpK,EAAS0qB,EAAc1qB,OAGvBsQ,EAAuB,IAAXtQ,GAAkBsqB,GAAepqB,GAAOO,WAAY6pB,EAAYvZ,SAAc/Q,EAAS,EAGnGkQ,EAAyB,IAAdI,EAAkBga,EAAcpqB,GAAOiQ,WAGlDwa,EAAa,SAAU/pB,EAAG2b,EAAUxR,GACnC,MAAO,UAAUrC,GAChB6T,EAAU3b,GAAMhB,KAChBmL,EAAQnK,GAAMwJ,UAAUpK,OAAS,EAAIyK,EAAM5J,KAAMuJ,WAAc1B,EAC1DqC,IAAWwf,EACfra,EAASW,WAAY0L,EAAUxR,KAEhBuF,GACfJ,EAASY,YAAayL,EAAUxR,IAQpC,IAAK/K,EAAS,EAIb,IAHAuqB,EAAiB,GAAIlT,OAAOrX,GAC5BwqB,EAAmB,GAAInT,OAAOrX,GAC9ByqB,EAAkB,GAAIpT,OAAOrX,GACjBA,EAAJY,EAAYA,IACd8pB,EAAe9pB,IAAOV,GAAOO,WAAYiqB,EAAe9pB,GAAImQ,SAChE2Z,EAAe9pB,GAAImQ,UACjB1B,KAAMsb,EAAY/pB,EAAG6pB,EAAiBC,IACtCjZ,KAAMvB,EAAS+Z,QACf1Y,SAAUoZ,EAAY/pB,EAAG4pB,EAAkBD,MAE3Cja,CAUL,OAJMA,IACLJ,EAASY,YAAa2Z,EAAiBC,GAGjCxa,EAASa,YAMlB,IAAI6Z,GAEJ1qB,IAAOsV,GAAGnT,MAAQ,SAAUmT,GAI3B,MAFAtV,IAAOmC,MAAM0O,UAAU1B,KAAMmG,GAEtB5V,MAGRM,GAAOiE,QAENgT,SAAS,EAIT0T,UAAW,EAGXC,UAAW,SAAUC,GACfA,EACJ7qB,GAAO2qB,YAEP3qB,GAAOmC,OAAO,IAKhBA,MAAO,SAAU2oB,GAGhB,GAAKA,KAAS,KAAS9qB,GAAO2qB,WAAY3qB,GAAOiX,QAAjD,CAKA,IAAM3X,GAAS0J,KACd,MAAO6D,YAAY7M,GAAOmC,MAI3BnC,IAAOiX,SAAU,EAGZ6T,KAAS,KAAU9qB,GAAO2qB,UAAY,IAK3CD,GAAU9Z,YAAatR,IAAYU,KAG9BA,GAAOsV,GAAGyV,iBACd/qB,GAAQV,IAAWyrB,eAAgB,SACnC/qB,GAAQV,IAAW0rB,IAAK,eA8B3BhrB,GAAOmC,MAAM0O,QAAU,SAAUhR,GAChC,IAAM6qB,GAOL,GALAA,GAAY1qB,GAAOiQ,WAKU,aAAxB3Q,GAAS4C,WAEb2K,WAAY7M,GAAOmC,WAGb,IAAK7C,GAASuC,iBAEpBvC,GAASuC,iBAAkB,mBAAoBE,GAAW,GAG1DtC,EAAOoC,iBAAkB,OAAQE,GAAW,OAGtC,CAENzC,GAASkiB,YAAa,qBAAsBzf,GAG5CtC,EAAO+hB,YAAa,SAAUzf,EAI9B,IAAIwf,IAAM,CAEV,KACCA,EAA6B,MAAvB9hB,EAAOwrB,cAAwB3rB,GAASiK,gBAC7C,MAAMxG,IAEHwe,GAAOA,EAAI2J,WACf,QAAUC,KACT,IAAMnrB,GAAOiX,QAAU,CAEtB,IAGCsK,EAAI2J,SAAS,QACZ,MAAMnoB,GACP,MAAO8J,YAAYse,EAAe,IAInCvpB,IAGA5B,GAAOmC,YAMZ,MAAOuoB,IAAU7Z,QAAShR,GAI3B,IAMIa,IANAkF,GAAe,WAOnB,KAAMlF,KAAKV,IAAQyE,IAClB,KAEDA,IAAQ4S,QAAgB,MAAN3W,GAIlB+D,GAAQsK,wBAAyB,EAGjC/O,GAAO,WAEN,GAAI0L,GAAK0O,EAAKpR,EAAMoiB,CAEpBpiB,GAAO1J,GAASqG,qBAAsB,QAAU,GAC1CqD,GAASA,EAAKF,QAMpBsR,EAAM9a,GAAS+F,cAAe,OAC9B+lB,EAAY9rB,GAAS+F,cAAe,OACpC+lB,EAAUtiB,MAAMuiB,QAAU,iEAC1BriB,EAAKvC,YAAa2kB,GAAY3kB,YAAa2T,SAE/BA,GAAItR,MAAMkG,OAASpJ,KAK9BwU,EAAItR,MAAMuiB,QAAU,gEAEpB5mB,GAAQsK,uBAAyBrD,EAA0B,IAApB0O,EAAItO,YACtCJ,IAIJ1C,EAAKF,MAAMkG,KAAO,IAIpBhG,EAAKqR,YAAa+Q,MAMnB,WACC,GAAIhR,GAAM9a,GAAS+F,cAAe,MAGlC,IAA6B,MAAzBZ,GAAQC,cAAuB,CAElCD,GAAQC,eAAgB,CACxB,WACQ0V,GAAIvZ,KACV,MAAOkC,GACR0B,GAAQC,eAAgB,GAK1B0V,EAAM,QAOPpa,GAAOoD,WAAa,SAAU3C,GAC7B,GAAI6qB,GAAStrB,GAAOsrB,QAAS7qB,EAAKsF,SAAW,KAAKpD,eACjDzC,GAAYO,EAAKP,UAAY,CAG9B,OAAoB,KAAbA,GAA+B,IAAbA,GACxB,GAGCorB,GAAUA,KAAW,GAAQ7qB,EAAKmC,aAAa,aAAe0oB,EAIjE,IAAIzoB,IAAS,gCACZH,GAAa,UAqOd1C,IAAOiE,QACNP,SAIA4nB,QACCC,WAAW,EACXC,UAAU,EAEVC,UAAW,8CAGZjkB,QAAS,SAAU/G,GAElB,MADAA,GAAOA,EAAKP,SAAWF,GAAO0D,MAAOjD,EAAKT,GAAOwD,UAAa/C,EAAMT,GAAOwD,WAClE/C,IAASuC,EAAmBvC,IAGtC6B,KAAM,SAAU7B,EAAM+B,EAAMF,GAC3B,MAAOY,GAAczC,EAAM+B,EAAMF,IAGlCopB,WAAY,SAAUjrB,EAAM+B,GAC3B,MAAO2B,GAAoB1D,EAAM+B,IAIlC4E,MAAO,SAAU3G,EAAM+B,EAAMF,GAC5B,MAAOY,GAAczC,EAAM+B,EAAMF,GAAM,IAGxC+M,YAAa,SAAU5O,EAAM+B,GAC5B,MAAO2B,GAAoB1D,EAAM+B,GAAM,MAIzCxC,GAAOsV,GAAGrR,QACT3B,KAAM,SAAUD,EAAKmG,GACpB,GAAI9H,GAAG8B,EAAMF,EACZ7B,EAAOf,KAAK,GACZyN,EAAQ1M,GAAQA,EAAK+e,UAMtB,IAAajd,SAARF,EAAoB,CACxB,GAAK3C,KAAKI,SACTwC,EAAOtC,GAAOsC,KAAM7B,GAEG,IAAlBA,EAAKP,WAAmBF,GAAOoH,MAAO3G,EAAM,gBAAkB,CAElE,IADAC,EAAIyM,EAAMrN,OACFY,KAIFyM,EAAOzM,KACX8B,EAAO2K,EAAOzM,GAAI8B,KACe,IAA5BA,EAAKuS,QAAS,WAClBvS,EAAOxC,GAAOkE,UAAW1B,EAAK+H,MAAM,IACpCnI,EAAU3B,EAAM+B,EAAMF,EAAME,KAI/BxC,IAAOoH,MAAO3G,EAAM,eAAe,GAIrC,MAAO6B,GAIR,MAAoB,gBAARD,GACJ3C,KAAK6B,KAAK,WAChBvB,GAAOsC,KAAM5C,KAAM2C,KAId6H,UAAUpK,OAAS,EAGzBJ,KAAK6B,KAAK,WACTvB,GAAOsC,KAAM5C,KAAM2C,EAAKmG,KAKzB/H,EAAO2B,EAAU3B,EAAM4B,EAAKrC,GAAOsC,KAAM7B,EAAM4B,IAAUE,QAG3DmpB,WAAY,SAAUrpB,GACrB,MAAO3C,MAAK6B,KAAK,WAChBvB,GAAO0rB,WAAYhsB,KAAM2C,QAM5BrC,GAAOiE,QACNqK,MAAO,SAAU7N,EAAMV,EAAMuC,GAC5B,GAAIgM,EAEJ,OAAK7N,IACJV,GAASA,GAAQ,MAAS,QAC1BuO,EAAQtO,GAAOoH,MAAO3G,EAAMV,GAGvBuC,KACEgM,GAAStO,GAAOoE,QAAQ9B,GAC7BgM,EAAQtO,GAAOoH,MAAO3G,EAAMV,EAAMC,GAAOyX,UAAUnV,IAEnDgM,EAAMtI,KAAM1D,IAGPgM,OAZR,QAgBDqd,QAAS,SAAUlrB,EAAMV,GACxBA,EAAOA,GAAQ,IAEf,IAAIuO,GAAQtO,GAAOsO,MAAO7N,EAAMV,GAC/B6rB,EAActd,EAAMxO,OACpBwV,EAAKhH,EAAM6E,QACXnF,EAAQhO,GAAOuO,YAAa9N,EAAMV,GAClC0nB,EAAO,WACNznB,GAAO2rB,QAASlrB,EAAMV,GAIZ,gBAAPuV,IACJA,EAAKhH,EAAM6E,QACXyY,KAGItW,IAIU,OAATvV,GACJuO,EAAMwD,QAAS,oBAIT9D,GAAMgD,KACbsE,EAAG3U,KAAMF,EAAMgnB,EAAMzZ,KAGhB4d,GAAe5d,GACpBA,EAAMS,MAAMC,QAKdH,YAAa,SAAU9N,EAAMV,GAC5B,GAAIsC,GAAMtC,EAAO,YACjB,OAAOC,IAAOoH,MAAO3G,EAAM4B,IAASrC,GAAOoH,MAAO3G,EAAM4B,GACvDoM,MAAOzO,GAAOyoB,UAAU,eAAe3gB,IAAI,WAC1C9H,GAAOqP,YAAa5O,EAAMV,EAAO,SACjCC,GAAOqP,YAAa5O,EAAM4B,UAM9BrC,GAAOsV,GAAGrR,QACTqK,MAAO,SAAUvO,EAAMuC,GACtB,GAAIupB,GAAS,CAQb,OANqB,gBAAT9rB,KACXuC,EAAOvC,EACPA,EAAO,KACP8rB,KAGI3hB,UAAUpK,OAAS+rB,EAChB7rB,GAAOsO,MAAO5O,KAAK,GAAIK,GAGfwC,SAATD,EACN5C,KACAA,KAAK6B,KAAK,WACT,GAAI+M,GAAQtO,GAAOsO,MAAO5O,KAAMK,EAAMuC,EAGtCtC,IAAOuO,YAAa7O,KAAMK,GAEZ,OAATA,GAA8B,eAAbuO,EAAM,IAC3BtO,GAAO2rB,QAASjsB,KAAMK,MAI1B4rB,QAAS,SAAU5rB,GAClB,MAAOL,MAAK6B,KAAK,WAChBvB,GAAO2rB,QAASjsB,KAAMK,MAGxB+rB,WAAY,SAAU/rB,GACrB,MAAOL,MAAK4O,MAAOvO,GAAQ,UAI5B8Q,QAAS,SAAU9Q,EAAMF,GACxB,GAAIgU,GACHkY,EAAQ,EACRC,EAAQhsB,GAAOiQ,WACf7P,EAAWV,KACXgB,EAAIhB,KAAKI,OACTgqB,EAAU,aACCiC,GACTC,EAAMpb,YAAaxQ,GAAYA,IAUlC,KANqB,gBAATL,KACXF,EAAME,EACNA,EAAOwC,QAERxC,EAAOA,GAAQ,KAEPW,KACPmT,EAAM7T,GAAOoH,MAAOhH,EAAUM,GAAKX,EAAO,cACrC8T,GAAOA,EAAIpF,QACfsd,IACAlY,EAAIpF,MAAM3G,IAAKgiB,GAIjB,OADAA,KACOkC,EAAMnb,QAAShR,KAGxB,IAAIosB,IAAO,sCAAwCC,OAE/CvgB,IAAc,MAAO,QAAS,SAAU,QAExCZ,GAAW,SAAUtK,EAAM0rB,GAI7B,MADA1rB,GAAO0rB,GAAM1rB,EAC4B,SAAlCT,GAAOmJ,IAAK1I,EAAM,aAA2BT,GAAOiZ,SAAUxY,EAAKiG,cAAejG,IAOvF2rB,GAASpsB,GAAOosB,OAAS,SAAU3mB,EAAO6P,EAAIjT,EAAKmG,EAAO6jB,EAAWC,EAAUC,GAClF,GAAI7rB,GAAI,EACPZ,EAAS2F,EAAM3F,OACf0sB,EAAc,MAAPnqB,CAGR,IAA4B,WAAvBrC,GAAOD,KAAMsC,GAAqB,CACtCgqB,GAAY,CACZ,KAAM3rB,IAAK2B,GACVrC,GAAOosB,OAAQ3mB,EAAO6P,EAAI5U,EAAG2B,EAAI3B,IAAI,EAAM4rB,EAAUC,OAIhD,IAAehqB,SAAViG,IACX6jB,GAAY,EAENrsB,GAAOO,WAAYiI,KACxB+jB,GAAM,GAGFC,IAECD,GACJjX,EAAG3U,KAAM8E,EAAO+C,GAChB8M,EAAK,OAILkX,EAAOlX,EACPA,EAAK,SAAU7U,EAAM4B,EAAKmG,GACzB,MAAOgkB,GAAK7rB,KAAMX,GAAQS,GAAQ+H,MAKhC8M,GACJ,KAAYxV,EAAJY,EAAYA,IACnB4U,EAAI7P,EAAM/E,GAAI2B,EAAKkqB,EAAM/jB,EAAQA,EAAM7H,KAAM8E,EAAM/E,GAAIA,EAAG4U,EAAI7P,EAAM/E,GAAI2B,IAK3E,OAAOgqB,GACN5mB,EAGA+mB,EACClX,EAAG3U,KAAM8E,GACT3F,EAASwV,EAAI7P,EAAM,GAAIpD,GAAQiqB,GAE9BnmB,GAAiB,yBAIrB,WAEC,GAAI4b,GAAQziB,GAAS+F,cAAe,SACnC+U,EAAM9a,GAAS+F,cAAe,OAC9BonB,EAAWntB,GAAS8F,wBAsDrB,IAnDAgV,EAAI9R,UAAY,qEAGhB7D,GAAQioB,kBAAgD,IAA5BtS,EAAI5T,WAAWtG,SAI3CuE,GAAQkoB,OAASvS,EAAIzU,qBAAsB,SAAU7F,OAIrD2E,GAAQmoB,gBAAkBxS,EAAIzU,qBAAsB,QAAS7F,OAI7D2E,GAAQ4D,WACyD,kBAAhE/I,GAAS+F,cAAe,OAAQwnB,WAAW,GAAOzkB,UAInD2Z,EAAMhiB,KAAO,WACbgiB,EAAM1b,SAAU,EAChBomB,EAAShmB,YAAasb,GACtBtd,GAAQqoB,cAAgB/K,EAAM1b,QAI9B+T,EAAI9R,UAAY,yBAChB7D,GAAQsoB,iBAAmB3S,EAAIyS,WAAW,GAAOtI,UAAU5b,aAG3D8jB,EAAShmB,YAAa2T,GACtBA,EAAI9R,UAAY,mDAIhB7D,GAAQuoB,WAAa5S,EAAIyS,WAAW,GAAOA,WAAW,GAAOtI,UAAUle,QAKvE5B,GAAQuD,cAAe,EAClBoS,EAAIoH,cACRpH,EAAIoH,YAAa,UAAW,WAC3B/c,GAAQuD,cAAe,IAGxBoS,EAAIyS,WAAW,GAAOI,SAIM,MAAzBxoB,GAAQC,cAAuB,CAElCD,GAAQC,eAAgB,CACxB,WACQ0V,GAAIvZ,KACV,MAAOkC,GACR0B,GAAQC,eAAgB,OAM3B,WACC,GAAIhE,GAAGwsB,EACN9S,EAAM9a,GAAS+F,cAAe,MAG/B,KAAM3E,KAAO0lB,QAAQ,EAAM+G,QAAQ,EAAMC,SAAS,GACjDF,EAAY,KAAOxsB,GAEZ+D,GAAS/D,EAAI,WAAcwsB,IAAaztB,MAE9C2a,EAAIb,aAAc2T,EAAW,KAC7BzoB,GAAS/D,EAAI,WAAc0Z,EAAIoF,WAAY0N,GAAY1pB,WAAY,EAKrE4W,GAAM,OAIP,IAAIiT,IAAa,+BAChBC,GAAY,OACZC,GAAc,uCACdC,GAAc,kCACdC,GAAiB,sBAoBlBztB,IAAOiC,OAEN9C,UAEA2I,IAAK,SAAUrH,EAAMitB,EAAOnT,EAASjY,EAAM+S,GAC1C,GAAIxB,GAAKjM,EAAQ+lB,EAAGC,EACnBC,EAASC,EAAaC,EACtBC,EAAUjuB,EAAMkuB,EAAYC,EAC5BC,EAAWnuB,GAAOoH,MAAO3G,EAG1B,IAAM0tB,EAAN,CAmCA,IA9BK5T,EAAQA,UACZqT,EAAcrT,EACdA,EAAUqT,EAAYrT,QACtBlF,EAAWuY,EAAYvY,UAIlBkF,EAAQzW,OACbyW,EAAQzW,KAAO9D,GAAO8D,SAIhB8D,EAASumB,EAASvmB,UACxBA,EAASumB,EAASvmB,YAEZkmB,EAAcK,EAAStmB,UAC7BimB,EAAcK,EAAStmB,OAAS,SAAU9E,GAGzC,aAAc/C,MAAW4F,IAAkB7C,GAAK/C,GAAOiC,MAAMmsB,YAAcrrB,EAAEhD,KAE5EwC,OADAvC,GAAOiC,MAAMosB,SAASpkB,MAAO6jB,EAAYrtB,KAAMyJ,YAIjD4jB,EAAYrtB,KAAOA,GAIpBitB,GAAUA,GAAS,IAAKlsB,MAAOC,MAAiB,IAChDksB,EAAID,EAAM5tB,OACF6tB,KACP9Z,EAAM4Z,GAAezmB,KAAM0mB,EAAMC,QACjC5tB,EAAOmuB,EAAWra,EAAI,GACtBoa,GAAepa,EAAI,IAAM,IAAKtP,MAAO,KAAMmS,OAGrC3W,IAKN8tB,EAAU7tB,GAAOiC,MAAM4rB,QAAS9tB,OAGhCA,GAASsV,EAAWwY,EAAQS,aAAeT,EAAQU,WAAcxuB,EAGjE8tB,EAAU7tB,GAAOiC,MAAM4rB,QAAS9tB,OAGhCguB,EAAY/tB,GAAOiE,QAClBlE,KAAMA,EACNmuB,SAAUA,EACV5rB,KAAMA,EACNiY,QAASA,EACTzW,KAAMyW,EAAQzW,KACduR,SAAUA,EACVmL,aAAcnL,GAAYrV,GAAO8iB,KAAKthB,MAAMgf,aAAa3f,KAAMwU,GAC/DmZ,UAAWP,EAAWtU,KAAK,MACzBiU,IAGII,EAAWpmB,EAAQ7H,MACzBiuB,EAAWpmB,EAAQ7H,MACnBiuB,EAASS,cAAgB,EAGnBZ,EAAQa,OAASb,EAAQa,MAAM/tB,KAAMF,EAAM6B,EAAM2rB,EAAYH,MAAkB,IAE/ErtB,EAAKoB,iBACTpB,EAAKoB,iBAAkB9B,EAAM+tB,GAAa,GAE/BrtB,EAAK+gB,aAChB/gB,EAAK+gB,YAAa,KAAOzhB,EAAM+tB,KAK7BD,EAAQ/lB,MACZ+lB,EAAQ/lB,IAAInH,KAAMF,EAAMstB,GAElBA,EAAUxT,QAAQzW,OACvBiqB,EAAUxT,QAAQzW,KAAOyW,EAAQzW,OAK9BuR,EACJ2Y,EAASrX,OAAQqX,EAASS,gBAAiB,EAAGV,GAE9CC,EAAShoB,KAAM+nB,GAIhB/tB,GAAOiC,MAAM9C,OAAQY,IAAS,EAI/BU,GAAO,OAIR2oB,OAAQ,SAAU3oB,EAAMitB,EAAOnT,EAASlF,EAAUsZ,GACjD,GAAIlY,GAAGsX,EAAWla,EACjB+a,EAAWjB,EAAG/lB,EACdimB,EAASG,EAAUjuB,EACnBkuB,EAAYC,EACZC,EAAWnuB,GAAOwH,QAAS/G,IAAUT,GAAOoH,MAAO3G,EAEpD,IAAM0tB,IAAcvmB,EAASumB,EAASvmB,QAAtC,CAOA,IAFA8lB,GAAUA,GAAS,IAAKlsB,MAAOC,MAAiB,IAChDksB,EAAID,EAAM5tB,OACF6tB,KAMP,GALA9Z,EAAM4Z,GAAezmB,KAAM0mB,EAAMC,QACjC5tB,EAAOmuB,EAAWra,EAAI,GACtBoa,GAAepa,EAAI,IAAM,IAAKtP,MAAO,KAAMmS,OAGrC3W,EAAN,CAcA,IAPA8tB,EAAU7tB,GAAOiC,MAAM4rB,QAAS9tB,OAChCA,GAASsV,EAAWwY,EAAQS,aAAeT,EAAQU,WAAcxuB,EACjEiuB,EAAWpmB,EAAQ7H,OACnB8T,EAAMA,EAAI,IAAM,GAAI6L,QAAQ,UAAYuO,EAAWtU,KAAK,iBAAmB,WAG3EiV,EAAYnY,EAAIuX,EAASluB,OACjB2W,KACPsX,EAAYC,EAAUvX,IAEfkY,GAAeT,IAAaH,EAAUG,UACzC3T,GAAWA,EAAQzW,OAASiqB,EAAUjqB,MACtC+P,IAAOA,EAAIhT,KAAMktB,EAAUS,YAC3BnZ,GAAYA,IAAa0Y,EAAU1Y,WAAyB,OAAbA,IAAqB0Y,EAAU1Y,YACjF2Y,EAASrX,OAAQF,EAAG,GAEfsX,EAAU1Y,UACd2Y,EAASS,gBAELZ,EAAQzE,QACZyE,EAAQzE,OAAOzoB,KAAMF,EAAMstB,GAOzBa;IAAcZ,EAASluB,SACrB+tB,EAAQgB,UAAYhB,EAAQgB,SAASluB,KAAMF,EAAMwtB,EAAYE,EAAStmB,WAAa,GACxF7H,GAAOiI,YAAaxH,EAAMV,EAAMouB,EAAStmB,cAGnCD,GAAQ7H,QAtCf,KAAMA,IAAQ6H,GACb5H,GAAOiC,MAAMmnB,OAAQ3oB,EAAMV,EAAO2tB,EAAOC,GAAKpT,EAASlF,GAAU,EA0C/DrV,IAAOiD,cAAe2E,WACnBumB,GAAStmB,OAIhB7H,GAAOqP,YAAa5O,EAAM,aAI5BquB,QAAS,SAAU7sB,EAAOK,EAAM7B,EAAMsuB,GACrC,GAAIlnB,GAAQmnB,EAAQ/tB,EACnBguB,EAAYpB,EAASha,EAAKnT,EAC1BwuB,GAAczuB,GAAQnB,IACtBS,EAAOmV,GAAOvU,KAAMsB,EAAO,QAAWA,EAAMlC,KAAOkC,EACnDgsB,EAAa/Y,GAAOvU,KAAMsB,EAAO,aAAgBA,EAAMusB,UAAUjqB,MAAM,OAKxE,IAHAtD,EAAM4S,EAAMpT,EAAOA,GAAQnB,GAGJ,IAAlBmB,EAAKP,UAAoC,IAAlBO,EAAKP,WAK5BstB,GAAY3sB,KAAMd,EAAOC,GAAOiC,MAAMmsB,aAItCruB,EAAKgV,QAAQ,MAAQ,IAEzBkZ,EAAaluB,EAAKwE,MAAM,KACxBxE,EAAOkuB,EAAW9a,QAClB8a,EAAWvX,QAEZsY,EAASjvB,EAAKgV,QAAQ,KAAO,GAAK,KAAOhV,EAGzCkC,EAAQA,EAAOjC,GAAOwD,SACrBvB,EACA,GAAIjC,IAAOmvB,MAAOpvB,EAAuB,gBAAVkC,IAAsBA,GAGtDA,EAAMmtB,UAAYL,EAAe,EAAI,EACrC9sB,EAAMusB,UAAYP,EAAWtU,KAAK,KAClC1X,EAAMotB,aAAeptB,EAAMusB,UAC1B,GAAI9O,QAAQ,UAAYuO,EAAWtU,KAAK,iBAAmB,WAC3D,KAGD1X,EAAM4N,OAAStN,OACTN,EAAMuQ,SACXvQ,EAAMuQ,OAAS/R,GAIhB6B,EAAe,MAARA,GACJL,GACFjC,GAAOyX,UAAWnV,GAAQL,IAG3B4rB,EAAU7tB,GAAOiC,MAAM4rB,QAAS9tB,OAC1BgvB,IAAgBlB,EAAQiB,SAAWjB,EAAQiB,QAAQ7kB,MAAOxJ,EAAM6B,MAAW,GAAjF,CAMA,IAAMysB,IAAiBlB,EAAQyB,WAAatvB,GAAOC,SAAUQ,GAAS,CAMrE,IAJAwuB,EAAapB,EAAQS,cAAgBvuB,EAC/BytB,GAAY3sB,KAAMouB,EAAalvB,KACpCkB,EAAMA,EAAIkH,YAEHlH,EAAKA,EAAMA,EAAIkH,WACtB+mB,EAAUlpB,KAAM/E,GAChB4S,EAAM5S,CAIF4S,MAASpT,EAAKiG,eAAiBpH,KACnC4vB,EAAUlpB,KAAM6N,EAAIgB,aAAehB,EAAIiB,cAAgBrV,GAMzD,IADAiB,EAAI,GACKO,EAAMiuB,EAAUxuB,QAAUuB,EAAMstB,wBAExCttB,EAAMlC,KAAOW,EAAI,EAChBuuB,EACApB,EAAQU,UAAYxuB,EAGrB8H,GAAW7H,GAAOoH,MAAOnG,EAAK,eAAoBgB,EAAMlC,OAAUC,GAAOoH,MAAOnG,EAAK,UAChF4G,GACJA,EAAOoC,MAAOhJ,EAAKqB,GAIpBuF,EAASmnB,GAAU/tB,EAAK+tB,GACnBnnB,GAAUA,EAAOoC,OAASjK,GAAOoD,WAAYnC,KACjDgB,EAAM4N,OAAShI,EAAOoC,MAAOhJ,EAAKqB,GAC7BL,EAAM4N,UAAW,GACrB5N,EAAMutB,iBAOT,IAHAvtB,EAAMlC,KAAOA,GAGPgvB,IAAiB9sB,EAAMwtB,wBAErB5B,EAAQ6B,UAAY7B,EAAQ6B,SAASzlB,MAAOilB,EAAUrrB,MAAOvB,MAAW,IAC9EtC,GAAOoD,WAAY3C,IAKduuB,GAAUvuB,EAAMV,KAAWC,GAAOC,SAAUQ,GAAS,CAGzDoT,EAAMpT,EAAMuuB,GAEPnb,IACJpT,EAAMuuB,GAAW,MAIlBhvB,GAAOiC,MAAMmsB,UAAYruB,CACzB,KACCU,EAAMV,KACL,MAAQgD,IAIV/C,GAAOiC,MAAMmsB,UAAY7rB,OAEpBsR,IACJpT,EAAMuuB,GAAWnb,GAMrB,MAAO5R,GAAM4N,SAGdwe,SAAU,SAAUpsB,GAGnBA,EAAQjC,GAAOiC,MAAM0tB,IAAK1tB,EAE1B,IAAIvB,GAAG2C,EAAK0qB,EAAWrJ,EAASjO,EAC/BmZ,KACAxZ,EAAO7L,EAAM5J,KAAMuJ,WACnB8jB,GAAahuB,GAAOoH,MAAO1H,KAAM,eAAoBuC,EAAMlC,UAC3D8tB,EAAU7tB,GAAOiC,MAAM4rB,QAAS5rB,EAAMlC,SAOvC,IAJAqW,EAAK,GAAKnU,EACVA,EAAM4tB,eAAiBnwB,MAGlBmuB,EAAQiC,aAAejC,EAAQiC,YAAYnvB,KAAMjB,KAAMuC,MAAY,EAAxE,CASA,IAJA2tB,EAAe5vB,GAAOiC,MAAM+rB,SAASrtB,KAAMjB,KAAMuC,EAAO+rB,GAGxDttB,EAAI,GACKgkB,EAAUkL,EAAclvB,QAAWuB,EAAMstB,wBAIjD,IAHAttB,EAAM8tB,cAAgBrL,EAAQjkB,KAE9BgW,EAAI,GACKsX,EAAYrJ,EAAQsJ,SAAUvX,QAAWxU,EAAM+tB,mCAIjD/tB,EAAMotB,cAAgBptB,EAAMotB,aAAaxuB,KAAMktB,EAAUS,cAE9DvsB,EAAM8rB,UAAYA,EAClB9rB,EAAMK,KAAOyrB,EAAUzrB,KAEvBe,IAASrD,GAAOiC,MAAM4rB,QAASE,EAAUG,eAAkBrmB,QAAUkmB,EAAUxT,SAC5EtQ,MAAOya,EAAQjkB,KAAM2V,GAEX7T,SAARc,IACEpB,EAAM4N,OAASxM,MAAS,IAC7BpB,EAAMutB,iBACNvtB,EAAMguB,mBAYX,OAJKpC,GAAQqC,cACZrC,EAAQqC,aAAavvB,KAAMjB,KAAMuC,GAG3BA,EAAM4N,SAGdme,SAAU,SAAU/rB,EAAO+rB,GAC1B,GAAImC,GAAKpC,EAAW7iB,EAASxK,EAC5BkvB,KACAnB,EAAgBT,EAASS,cACzBxtB,EAAMgB,EAAMuQ,MAKb,IAAKic,GAAiBxtB,EAAIf,YAAc+B,EAAMyjB,QAAyB,UAAfzjB,EAAMlC,MAG7D,KAAQkB,GAAOvB,KAAMuB,EAAMA,EAAIkH,YAAczI,KAK5C,GAAsB,IAAjBuB,EAAIf,WAAmBe,EAAIskB,YAAa,GAAuB,UAAftjB,EAAMlC,MAAoB,CAE9E,IADAmL,KACMxK,EAAI,EAAO+tB,EAAJ/tB,EAAmBA,IAC/BqtB,EAAYC,EAAUttB,GAGtByvB,EAAMpC,EAAU1Y,SAAW,IAEH9S,SAAnB2I,EAASilB,KACbjlB,EAASilB,GAAQpC,EAAUvN,aAC1BxgB,GAAQmwB,EAAKzwB,MAAOoL,MAAO7J,IAAS,EACpCjB,GAAO4G,KAAMupB,EAAKzwB,KAAM,MAAQuB,IAAQnB,QAErCoL,EAASilB,IACbjlB,EAAQlF,KAAM+nB,EAGX7iB,GAAQpL,QACZ8vB,EAAa5pB,MAAOvF,KAAMQ,EAAK+sB,SAAU9iB,IAW7C,MAJKujB,GAAgBT,EAASluB,QAC7B8vB,EAAa5pB,MAAOvF,KAAMf,KAAMsuB,SAAUA,EAASzjB,MAAOkkB,KAGpDmB,GAGRD,IAAK,SAAU1tB,GACd,GAAKA,EAAOjC,GAAOwD,SAClB,MAAOvB,EAIR,IAAIvB,GAAG6L,EAAMsK,EACZ9W,EAAOkC,EAAMlC,KACbqwB,EAAgBnuB,EAChBouB,EAAU3wB,KAAK4wB,SAAUvwB,EAa1B,KAXMswB,IACL3wB,KAAK4wB,SAAUvwB,GAASswB,EACvB9C,GAAY1sB,KAAMd,GAASL,KAAK6wB,WAChCjD,GAAUzsB,KAAMd,GAASL,KAAK8wB,aAGhC3Z,EAAOwZ,EAAQxiB,MAAQnO,KAAKmO,MAAMxJ,OAAQgsB,EAAQxiB,OAAUnO,KAAKmO,MAEjE5L,EAAQ,GAAIjC,IAAOmvB,MAAOiB,GAE1B1vB,EAAImW,EAAK/W,OACDY,KACP6L,EAAOsK,EAAMnW,GACbuB,EAAOsK,GAAS6jB,EAAe7jB,EAmBhC,OAdMtK,GAAMuQ,SACXvQ,EAAMuQ,OAAS4d,EAAcK,YAAcnxB,IAKb,IAA1B2C,EAAMuQ,OAAOtS,WACjB+B,EAAMuQ,OAASvQ,EAAMuQ,OAAOrK,YAK7BlG,EAAMyuB,UAAYzuB,EAAMyuB,QAEjBL,EAAQvvB,OAASuvB,EAAQvvB,OAAQmB,EAAOmuB,GAAkBnuB,GAIlE4L,MAAO,wHAAwHtJ,MAAM,KAErI+rB,YAEAE,UACC3iB,MAAO,4BAA4BtJ,MAAM,KACzCzD,OAAQ,SAAUmB,EAAO0uB,GAOxB,MAJoB,OAAf1uB,EAAMiL,QACVjL,EAAMiL,MAA6B,MAArByjB,EAASC,SAAmBD,EAASC,SAAWD,EAASE,SAGjE5uB,IAITsuB,YACC1iB,MAAO,mGAAmGtJ,MAAM,KAChHzD,OAAQ,SAAUmB,EAAO0uB,GACxB,GAAI3nB,GAAM8nB,EAAUjoB,EACnB6c,EAASiL,EAASjL,OAClBqL,EAAcJ,EAASI,WAuBxB,OApBoB,OAAf9uB,EAAM+uB,OAAqC,MAApBL,EAASM,UACpCH,EAAW7uB,EAAMuQ,OAAO9L,eAAiBpH,GACzCuJ,EAAMioB,EAASvnB,gBACfP,EAAO8nB,EAAS9nB,KAEhB/G,EAAM+uB,MAAQL,EAASM,SAAYpoB,GAAOA,EAAIqoB,YAAcloB,GAAQA,EAAKkoB,YAAc,IAAQroB,GAAOA,EAAIsoB,YAAcnoB,GAAQA,EAAKmoB,YAAc,GACnJlvB,EAAMmvB,MAAQT,EAASU,SAAYxoB,GAAOA,EAAIyoB,WAActoB,GAAQA,EAAKsoB,WAAc,IAAQzoB,GAAOA,EAAI0oB,WAAcvoB,GAAQA,EAAKuoB,WAAc,KAI9ItvB,EAAMuvB,eAAiBT,IAC5B9uB,EAAMuvB,cAAgBT,IAAgB9uB,EAAMuQ,OAASme,EAASc,UAAYV,GAKrE9uB,EAAMiL,OAAoB3K,SAAXmjB,IACpBzjB,EAAMiL,MAAmB,EAATwY,EAAa,EAAe,EAATA,EAAa,EAAe,EAATA,EAAa,EAAI,GAGjEzjB,IAIT4rB,SACC6D,MAECpC,UAAU,GAEXpK,OAEC4J,QAAS,WACR,GAAKpvB,OAASmF,KAAuBnF,KAAKwlB,MACzC,IAEC,MADAxlB,MAAKwlB,SACE,EACN,MAAQniB,MAOZurB,aAAc,WAEfqD,MACC7C,QAAS,WACR,MAAKpvB,QAASmF,KAAuBnF,KAAKiyB,MACzCjyB,KAAKiyB,QACE,GAFR,QAKDrD,aAAc,YAEfrB,OAEC6B,QAAS,WACR,MAAK9uB,IAAO+F,SAAUrG,KAAM,UAA2B,aAAdA,KAAKK,MAAuBL,KAAKutB,OACzEvtB,KAAKutB,SACE,GAFR,QAODyC,SAAU,SAAUztB,GACnB,MAAOjC,IAAO+F,SAAU9D,EAAMuQ,OAAQ,OAIxCof,cACC1B,aAAc,SAAUjuB,GAIDM,SAAjBN,EAAM4N,QAAwB5N,EAAMmuB,gBACxCnuB,EAAMmuB,cAAcyB,YAAc5vB,EAAM4N,WAM5CiiB,SAAU,SAAU/xB,EAAMU,EAAMwB,EAAO8vB,GAItC,GAAIhvB,GAAI/C,GAAOiE,OACd,GAAIjE,IAAOmvB,MACXltB,GAEClC,KAAMA,EACNiyB,aAAa,EACb5B,kBAGG2B,GACJ/xB,GAAOiC,MAAM6sB,QAAS/rB,EAAG,KAAMtC,GAE/BT,GAAOiC,MAAMosB,SAAS1tB,KAAMF,EAAMsC,GAE9BA,EAAE0sB,sBACNxtB,EAAMutB,mBAKTxvB,GAAOiI,YAAc3I,GAASwC,oBAC7B,SAAUrB,EAAMV,EAAM8H,GAChBpH,EAAKqB,qBACTrB,EAAKqB,oBAAqB/B,EAAM8H,GAAQ,IAG1C,SAAUpH,EAAMV,EAAM8H,GACrB,GAAIrF,GAAO,KAAOzC,CAEbU,GAAKuB,oBAIGvB,GAAM+B,KAAWoD,KAC5BnF,EAAM+B,GAAS,MAGhB/B,EAAKuB,YAAaQ,EAAMqF,KAI3B7H,GAAOmvB,MAAQ,SAAU7nB,EAAKuG,GAE7B,MAAOnO,gBAAgBM,IAAOmvB,OAKzB7nB,GAAOA,EAAIvH,MACfL,KAAK0wB,cAAgB9oB,EACrB5H,KAAKK,KAAOuH,EAAIvH,KAIhBL,KAAK+vB,mBAAqBnoB,EAAI2qB,kBACH1vB,SAAzB+E,EAAI2qB,kBAEJ3qB,EAAIuqB,eAAgB,EACrBltB,EACAC,GAIDlF,KAAKK,KAAOuH,EAIRuG,GACJ7N,GAAOiE,OAAQvE,KAAMmO,GAItBnO,KAAKwyB,UAAY5qB,GAAOA,EAAI4qB,WAAalyB,GAAO+M,WAGhDrN,KAAMM,GAAOwD,UAAY,IA/BjB,GAAIxD,IAAOmvB,MAAO7nB,EAAKuG,IAoChC7N,GAAOmvB,MAAMziB,WACZ+iB,mBAAoB7qB,EACpB2qB,qBAAsB3qB,EACtBorB,8BAA+BprB,EAE/B4qB,eAAgB,WACf,GAAIzsB,GAAIrD,KAAK0wB,aAEb1wB,MAAK+vB,mBAAqB9qB,EACpB5B,IAKDA,EAAEysB,eACNzsB,EAAEysB,iBAKFzsB,EAAE8uB,aAAc,IAGlB5B,gBAAiB,WAChB,GAAIltB,GAAIrD,KAAK0wB,aAEb1wB,MAAK6vB,qBAAuB5qB,EACtB5B,IAIDA,EAAEktB,iBACNltB,EAAEktB,kBAKHltB,EAAEovB,cAAe,IAElBC,yBAA0B,WACzB,GAAIrvB,GAAIrD,KAAK0wB,aAEb1wB,MAAKswB,8BAAgCrrB,EAEhC5B,GAAKA,EAAEqvB,0BACXrvB,EAAEqvB,2BAGH1yB,KAAKuwB,oBAKPjwB,GAAOuB,MACN8wB,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,cACZ,SAAUpkB,EAAMuhB,GAClB3vB,GAAOiC,MAAM4rB,QAASzf,IACrBkgB,aAAcqB,EACdpB,SAAUoB,EAEV9nB,OAAQ,SAAU5F,GACjB,GAAIoB,GACHmP,EAAS9S,KACT+yB,EAAUxwB,EAAMuvB,cAChBzD,EAAY9rB,EAAM8rB,SASnB,SALM0E,GAAYA,IAAYjgB,IAAWxS,GAAOiZ,SAAUzG,EAAQigB,MACjExwB,EAAMlC,KAAOguB,EAAUG,SACvB7qB,EAAM0qB,EAAUxT,QAAQtQ,MAAOvK,KAAMwK,WACrCjI,EAAMlC,KAAO4vB,GAEPtsB,MAMJoB,GAAQiuB,gBAEb1yB,GAAOiC,MAAM4rB,QAAQzH,QACpBsI,MAAO,WAEN,MAAK1uB,IAAO+F,SAAUrG,KAAM,SACpB,MAIRM,IAAOiC,MAAM6F,IAAKpI,KAAM,iCAAkC,SAAUqD,GAEnE,GAAItC,GAAOsC,EAAEyP,OACZmgB,EAAO3yB,GAAO+F,SAAUtF,EAAM,UAAaT,GAAO+F,SAAUtF,EAAM,UAAaA,EAAKkyB,KAAOpwB,MACvFowB,KAAS3yB,GAAOoH,MAAOurB,EAAM,mBACjC3yB,GAAOiC,MAAM6F,IAAK6qB,EAAM,iBAAkB,SAAU1wB,GACnDA,EAAM2wB,gBAAiB,IAExB5yB,GAAOoH,MAAOurB,EAAM,iBAAiB,OAMxCzC,aAAc,SAAUjuB,GAElBA,EAAM2wB,uBACH3wB,GAAM2wB,eACRlzB,KAAKyI,aAAelG,EAAMmtB,WAC9BpvB,GAAOiC,MAAM6vB,SAAU,SAAUpyB,KAAKyI,WAAYlG,GAAO,KAK5D4sB,SAAU,WAET,MAAK7uB,IAAO+F,SAAUrG,KAAM,SACpB,MAIRM,IAAOiC,MAAMmnB,OAAQ1pB,KAAM,eAMxB+E,GAAQouB,gBAEb7yB,GAAOiC,MAAM4rB,QAAQV,QAEpBuB,MAAO,WAEN,MAAKrB,IAAWxsB,KAAMnB,KAAKqG,YAIP,aAAdrG,KAAKK,MAAqC,UAAdL,KAAKK,QACrCC,GAAOiC,MAAM6F,IAAKpI,KAAM,yBAA0B,SAAUuC,GACjB,YAArCA,EAAMmuB,cAAc0C,eACxBpzB,KAAKqzB,eAAgB,KAGvB/yB,GAAOiC,MAAM6F,IAAKpI,KAAM,gBAAiB,SAAUuC,GAC7CvC,KAAKqzB,gBAAkB9wB,EAAMmtB,YACjC1vB,KAAKqzB,eAAgB,GAGtB/yB,GAAOiC,MAAM6vB,SAAU,SAAUpyB,KAAMuC,GAAO,OAGzC,OAGRjC,IAAOiC,MAAM6F,IAAKpI,KAAM,yBAA0B,SAAUqD,GAC3D,GAAItC,GAAOsC,EAAEyP,MAER6a,IAAWxsB,KAAMJ,EAAKsF,YAAe/F,GAAOoH,MAAO3G,EAAM,mBAC7DT,GAAOiC,MAAM6F,IAAKrH,EAAM,iBAAkB,SAAUwB,IAC9CvC,KAAKyI,YAAelG,EAAM+vB,aAAgB/vB,EAAMmtB,WACpDpvB,GAAOiC,MAAM6vB,SAAU,SAAUpyB,KAAKyI,WAAYlG,GAAO,KAG3DjC,GAAOoH,MAAO3G,EAAM,iBAAiB,OAKxCoH,OAAQ,SAAU5F,GACjB,GAAIxB,GAAOwB,EAAMuQ,MAGjB,OAAK9S,QAASe,GAAQwB,EAAM+vB,aAAe/vB,EAAMmtB,WAA4B,UAAd3uB,EAAKV,MAAkC,aAAdU,EAAKV,KACrFkC,EAAM8rB,UAAUxT,QAAQtQ,MAAOvK,KAAMwK,WAD7C,QAKD2kB,SAAU,WAGT,MAFA7uB,IAAOiC,MAAMmnB,OAAQ1pB,KAAM,aAEnB2tB,GAAWxsB,KAAMnB,KAAKqG,aAM3BtB,GAAQuuB,gBACbhzB,GAAOuB,MAAO2jB,MAAO,UAAWyM,KAAM,YAAc,SAAUvjB,EAAMuhB,GAGnE,GAAIpV,GAAU,SAAUtY,GACtBjC,GAAOiC,MAAM6vB,SAAUnC,EAAK1tB,EAAMuQ,OAAQxS,GAAOiC,MAAM0tB,IAAK1tB,IAAS,GAGvEjC,IAAOiC,MAAM4rB,QAAS8B,IACrBjB,MAAO,WACN,GAAI7lB,GAAMnJ,KAAKgH,eAAiBhH,KAC/BuzB,EAAWjzB,GAAOoH,MAAOyB,EAAK8mB,EAEzBsD,IACLpqB,EAAIhH,iBAAkBuM,EAAMmM,GAAS,GAEtCva,GAAOoH,MAAOyB,EAAK8mB,GAAOsD,GAAY,GAAM,IAE7CpE,SAAU,WACT,GAAIhmB,GAAMnJ,KAAKgH,eAAiBhH,KAC/BuzB,EAAWjzB,GAAOoH,MAAOyB,EAAK8mB,GAAQ,CAEjCsD,GAILjzB,GAAOoH,MAAOyB,EAAK8mB,EAAKsD,IAHxBpqB,EAAI/G,oBAAqBsM,EAAMmM,GAAS,GACxCva,GAAOqP,YAAaxG,EAAK8mB,QAS9B3vB,GAAOsV,GAAGrR,QAETivB,GAAI,SAAUxF,EAAOrY,EAAU/S,EAAMgT,EAAiB6d,GACrD,GAAIpzB,GAAMqzB,CAGV,IAAsB,gBAAV1F,GAAqB,CAEP,gBAAbrY,KAEX/S,EAAOA,GAAQ+S,EACfA,EAAW9S,OAEZ,KAAMxC,IAAQ2tB,GACbhuB,KAAKwzB,GAAInzB,EAAMsV,EAAU/S,EAAMorB,EAAO3tB,GAAQozB,EAE/C,OAAOzzB,MAmBR,GAhBa,MAAR4C,GAAsB,MAANgT,GAEpBA,EAAKD,EACL/S,EAAO+S,EAAW9S,QACD,MAAN+S,IACc,gBAAbD,IAEXC,EAAKhT,EACLA,EAAOC,SAGP+S,EAAKhT,EACLA,EAAO+S,EACPA,EAAW9S,SAGR+S,KAAO,EACXA,EAAK1Q,MACC,KAAM0Q,EACZ,MAAO5V,KAaR,OAVa,KAARyzB,IACJC,EAAS9d,EACTA,EAAK,SAAUrT,GAGd,MADAjC,MAASgrB,IAAK/oB,GACPmxB,EAAOnpB,MAAOvK,KAAMwK,YAG5BoL,EAAGxR,KAAOsvB,EAAOtvB,OAAUsvB,EAAOtvB,KAAO9D,GAAO8D,SAE1CpE,KAAK6B,KAAM,WACjBvB,GAAOiC,MAAM6F,IAAKpI,KAAMguB,EAAOpY,EAAIhT,EAAM+S,MAG3C8d,IAAK,SAAUzF,EAAOrY,EAAU/S,EAAMgT,GACrC,MAAO5V,MAAKwzB,GAAIxF,EAAOrY,EAAU/S,EAAMgT,EAAI,IAE5C0V,IAAK,SAAU0C,EAAOrY,EAAUC,GAC/B,GAAIyY,GAAWhuB,CACf,IAAK2tB,GAASA,EAAM8B,gBAAkB9B,EAAMK,UAQ3C,MANAA,GAAYL,EAAMK,UAClB/tB,GAAQ0tB,EAAMmC,gBAAiB7E,IAC9B+C,EAAUS,UAAYT,EAAUG,SAAW,IAAMH,EAAUS,UAAYT,EAAUG,SACjFH,EAAU1Y,SACV0Y,EAAUxT,SAEJ7a,IAER,IAAsB,gBAAVguB,GAAqB,CAEhC,IAAM3tB,IAAQ2tB,GACbhuB,KAAKsrB,IAAKjrB,EAAMsV,EAAUqY,EAAO3tB,GAElC,OAAOL,MAUR,OARK2V,KAAa,GAA6B,kBAAbA,MAEjCC,EAAKD,EACLA,EAAW9S,QAEP+S,KAAO,IACXA,EAAK1Q,GAEClF,KAAK6B,KAAK,WAChBvB,GAAOiC,MAAMmnB,OAAQ1pB,KAAMguB,EAAOpY,EAAID,MAIxCyZ,QAAS,SAAU/uB,EAAMuC,GACxB,MAAO5C,MAAK6B,KAAK,WAChBvB,GAAOiC,MAAM6sB,QAAS/uB,EAAMuC,EAAM5C,SAGpCqrB,eAAgB,SAAUhrB,EAAMuC,GAC/B,GAAI7B,GAAOf,KAAK,EAChB,OAAKe,GACGT,GAAOiC,MAAM6sB,QAAS/uB,EAAMuC,EAAM7B,GAAM,GADhD,SAqBF,IAAIyE,IAAY,6JAEfmuB,GAAgB,6BAChBC,GAAe,GAAI5T,QAAO,OAASxa,GAAY,WAAY,KAC3DquB,GAAqB,OACrBC,GAAY,0EACZC,GAAW,YACXC,GAAS,UACTC,GAAQ,YACRC,GAAe,0BAEfC,GAAW,oCACXC,GAAc,4BACd/sB,GAAoB,cACpBgtB,GAAe,2CAGfC,IACCC,QAAU,EAAG,+BAAgC,aAC7CC,QAAU,EAAG,aAAc,eAC3BC,MAAQ,EAAG,QAAS,UACpBC,OAAS,EAAG,WAAY,aACxBC,OAAS,EAAG,UAAW,YACvBC,IAAM,EAAG,iBAAkB,oBAC3BC,KAAO,EAAG,mCAAoC,uBAC9CC,IAAM,EAAG,qBAAsB,yBAI/B9E,SAAUjrB,GAAQmoB,eAAkB,EAAG,GAAI,KAAS,EAAG,SAAU,WAElE6H,GAAezvB,EAAoB1F,IACnCo1B,GAAcD,GAAahuB,YAAanH,GAAS+F,cAAc,OAEhE2uB,IAAQW,SAAWX,GAAQC,OAC3BD,GAAQrH,MAAQqH,GAAQY,MAAQZ,GAAQa,SAAWb,GAAQc,QAAUd,GAAQK,MAC7EL,GAAQe,GAAKf,GAAQQ,GAiKrBx0B,GAAOiE,QACN6S,MAAO,SAAUrW,EAAMu0B,EAAeC,GACrC,GAAIC,GAAc9T,EAAMtK,EAAOpW,EAAGy0B,EACjCC,EAASp1B,GAAOiZ,SAAUxY,EAAKiG,cAAejG,EAW/C,IATKgE,GAAQ4D,YAAcrI,GAAO+mB,SAAStmB,KAAU6yB,GAAazyB,KAAM,IAAMJ,EAAKsF,SAAW,KAC7F+Q,EAAQrW,EAAKosB,WAAW,IAIxB6H,GAAYpsB,UAAY7H,EAAK2H,UAC7BssB,GAAYra,YAAavD,EAAQ4d,GAAYluB,eAGvC/B,GAAQuD,cAAiBvD,GAAQsoB,gBACnB,IAAlBtsB,EAAKP,UAAoC,KAAlBO,EAAKP,UAAqBF,GAAO+mB,SAAStmB,IAOnE,IAJAy0B,EAAe5vB,EAAQwR,GACvBqe,EAAc7vB,EAAQ7E,GAGhBC,EAAI,EAA8B,OAA1B0gB,EAAO+T,EAAYz0B,MAAeA,EAE1Cw0B,EAAax0B,IACjBqH,EAAoBqZ,EAAM8T,EAAax0B,GAM1C,IAAKs0B,EACJ,GAAKC,EAIJ,IAHAE,EAAcA,GAAe7vB,EAAQ7E,GACrCy0B,EAAeA,GAAgB5vB,EAAQwR,GAEjCpW,EAAI,EAA8B,OAA1B0gB,EAAO+T,EAAYz0B,IAAaA,IAC7C2G,EAAgB+Z,EAAM8T,EAAax0B,QAGpC2G,GAAgB5G,EAAMqW,EAaxB,OARAoe,GAAe5vB,EAAQwR,EAAO,UACzBoe,EAAap1B,OAAS,GAC1BoH,EAAeguB,GAAeE,GAAU9vB,EAAQ7E,EAAM,WAGvDy0B,EAAeC,EAAc/T,EAAO,KAG7BtK,GAGRue,cAAe,SAAU5vB,EAAOF,EAAS+vB,EAASC,GAWjD,IAVA,GAAI9e,GAAGhW,EAAMwY,EACZpF,EAAKrO,EAAKmnB,EAAO6I,EACjB/tB,EAAIhC,EAAM3F,OAGV21B,EAAOzwB,EAAoBO,GAE3BmwB,KACAh1B,EAAI,EAEO+G,EAAJ/G,EAAOA,IAGd,GAFAD,EAAOgF,EAAO/E,GAETD,GAAiB,IAATA,EAGZ,GAA6B,WAAxBT,GAAOD,KAAMU,GACjBT,GAAOiG,MAAOyvB,EAAOj1B,EAAKP,UAAaO,GAASA,OAG1C,IAAMkzB,GAAM9yB,KAAMJ,GAIlB,CAWN,IAVAoT,EAAMA,GAAO4hB,EAAKhvB,YAAalB,EAAQF,cAAc,QAGrDG,GAAOiuB,GAASzsB,KAAMvG,KAAY,GAAI,KAAO,GAAIkC,cACjD6yB,EAAOxB,GAASxuB,IAASwuB,GAAQtE,SAEjC7b,EAAIvL,UAAYktB,EAAK,GAAK/0B,EAAKgC,QAAS+wB,GAAW,aAAgBgC,EAAK,GAGxE/e,EAAI+e,EAAK,GACD/e,KACP5C,EAAMA,EAAI0Q,SASX,KALM9f,GAAQioB,mBAAqB6G,GAAmB1yB,KAAMJ,IAC3Di1B,EAAM1vB,KAAMT,EAAQowB,eAAgBpC,GAAmBvsB,KAAMvG,GAAO,MAI/DgE,GAAQkoB,MAYb,IATAlsB,EAAe,UAAR+E,GAAoBkuB,GAAO7yB,KAAMJ,GAI3B,YAAZ+0B,EAAK,IAAqB9B,GAAO7yB,KAAMJ,GAEtC,EADAoT,EAJDA,EAAIrN,WAOLiQ,EAAIhW,GAAQA,EAAKqF,WAAWhG,OACpB2W,KACFzW,GAAO+F,SAAW4mB,EAAQlsB,EAAKqF,WAAW2Q,GAAK,WAAckW,EAAM7mB,WAAWhG,QAClFW,EAAK4Z,YAAasS,EAWrB,KANA3sB,GAAOiG,MAAOyvB,EAAO7hB,EAAI/N,YAGzB+N,EAAIsP,YAAc,GAGVtP,EAAIrN,YACXqN,EAAIwG,YAAaxG,EAAIrN,WAItBqN,GAAM4hB,EAAKlR,cAtDXmR,GAAM1vB,KAAMT,EAAQowB,eAAgBl1B,GAuEvC,KAXKoT,GACJ4hB,EAAKpb,YAAaxG,GAKbpP,GAAQqoB,eACb9sB,GAAOQ,KAAM8E,EAAQowB,EAAO,SAAWxvB,GAGxCxF,EAAI,EACKD,EAAOi1B,EAAOh1B,MAItB,KAAK60B,GAAmD,KAAtCv1B,GAAOe,QAASN,EAAM80B,MAIxCtc,EAAWjZ,GAAOiZ,SAAUxY,EAAKiG,cAAejG,GAGhDoT,EAAMvO,EAAQmwB,EAAKhvB,YAAahG,GAAQ,UAGnCwY,GACJ/R,EAAe2M,GAIXyhB,GAEJ,IADA7e,EAAI,EACKhW,EAAOoT,EAAK4C,MACfqd,GAAYjzB,KAAMJ,EAAKV,MAAQ,KACnCu1B,EAAQtvB,KAAMvF,EAQlB,OAFAoT,GAAM,KAEC4hB,GAGRjxB,UAAW,SAAUiB,EAAsBrC,GAQ1C,IAPA,GAAI3C,GAAMV,EAAM4D,EAAIrB,EACnB5B,EAAI,EACJ6C,EAAcvD,GAAOwD,QACrBE,EAAQ1D,GAAO0D,MACfgB,EAAgBD,GAAQC,cACxBmpB,EAAU7tB,GAAOiC,MAAM4rB,QAEK,OAApBptB,EAAOgF,EAAM/E,IAAaA,IAClC,IAAK0C,GAAcpD,GAAOoD,WAAY3C,MAErCkD,EAAKlD,EAAM8C,GACXjB,EAAOqB,GAAMD,EAAOC,IAER,CACX,GAAKrB,EAAKsF,OACT,IAAM7H,IAAQuC,GAAKsF,OACbimB,EAAS9tB,GACbC,GAAOiC,MAAMmnB,OAAQ3oB,EAAMV,GAI3BC,GAAOiI,YAAaxH,EAAMV,EAAMuC,EAAKuF,OAMnCnE,GAAOC,WAEJD,GAAOC,GAKTe,QACGjE,GAAM8C,SAEK9C,GAAKwG,kBAAoBrB,GAC3CnF,EAAKwG,gBAAiB1D,GAGtB9C,EAAM8C,GAAgB,KAGvBK,EAAWoC,KAAMrC,QAQvB3D,GAAOsV,GAAGrR,QACTiE,KAAM,SAAUM,GACf,MAAO4jB,IAAQ1sB,KAAM,SAAU8I,GAC9B,MAAiBjG,UAAViG,EACNxI,GAAOkI,KAAMxI,MACbA,KAAK+O,QAAQmnB,QAAUl2B,KAAK,IAAMA,KAAK,GAAGgH,eAAiBpH,IAAWq2B,eAAgBntB,KACrF,KAAMA,EAAO0B,UAAUpK,SAG3B81B,OAAQ,WACP,MAAOl2B,MAAKm2B,SAAU3rB,UAAW,SAAUzJ,GAC1C,GAAuB,IAAlBf,KAAKQ,UAAoC,KAAlBR,KAAKQ,UAAqC,IAAlBR,KAAKQ,SAAiB,CACzE,GAAIsS,GAASlM,EAAoB5G,KAAMe,EACvC+R,GAAO/L,YAAahG,OAKvBq1B,QAAS,WACR,MAAOp2B,MAAKm2B,SAAU3rB,UAAW,SAAUzJ,GAC1C,GAAuB,IAAlBf,KAAKQ,UAAoC,KAAlBR,KAAKQ,UAAqC,IAAlBR,KAAKQ,SAAiB,CACzE,GAAIsS,GAASlM,EAAoB5G,KAAMe,EACvC+R,GAAOujB,aAAct1B,EAAM+R,EAAOhM,gBAKrCwvB,OAAQ,WACP,MAAOt2B,MAAKm2B,SAAU3rB,UAAW,SAAUzJ,GACrCf,KAAKyI,YACTzI,KAAKyI,WAAW4tB,aAAct1B,EAAMf,SAKvCu2B,MAAO,WACN,MAAOv2B,MAAKm2B,SAAU3rB,UAAW,SAAUzJ,GACrCf,KAAKyI,YACTzI,KAAKyI,WAAW4tB,aAAct1B,EAAMf,KAAKqb,gBAK5CqO,OAAQ,SAAU/T,EAAU6gB,GAK3B,IAJA,GAAIz1B,GACHgF,EAAQ4P,EAAWrV,GAAOc,OAAQuU,EAAU3V,MAASA,KACrDgB,EAAI,EAEwB,OAApBD,EAAOgF,EAAM/E,IAAaA,IAE5Bw1B,GAA8B,IAAlBz1B,EAAKP,UACtBF,GAAOwE,UAAWc,EAAQ7E,IAGtBA,EAAK0H,aACJ+tB,GAAYl2B,GAAOiZ,SAAUxY,EAAKiG,cAAejG,IACrDyG,EAAe5B,EAAQ7E,EAAM,WAE9BA,EAAK0H,WAAWkS,YAAa5Z,GAI/B,OAAOf,OAGR+O,MAAO,WAIN,IAHA,GAAIhO,GACHC,EAAI,EAEuB,OAAnBD,EAAOf,KAAKgB,IAAaA,IAAM,CAOvC,IALuB,IAAlBD,EAAKP,UACTF,GAAOwE,UAAWc,EAAQ7E,GAAM,IAIzBA,EAAK+F,YACZ/F,EAAK4Z,YAAa5Z,EAAK+F,WAKnB/F,GAAKW,SAAWpB,GAAO+F,SAAUtF,EAAM,YAC3CA,EAAKW,QAAQtB,OAAS,GAIxB,MAAOJ,OAGRoX,MAAO,SAAUke,EAAeC,GAI/B,MAHAD,GAAiC,MAAjBA,GAAwB,EAAQA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzDv1B,KAAK4E,IAAI,WACf,MAAOtE,IAAO8W,MAAOpX,KAAMs1B,EAAeC,MAI5CkB,KAAM,SAAU3tB,GACf,MAAO4jB,IAAQ1sB,KAAM,SAAU8I,GAC9B,GAAI/H,GAAOf,KAAM,OAChBgB,EAAI,EACJ+G,EAAI/H,KAAKI,MAEV,IAAeyC,SAAViG,EACJ,MAAyB,KAAlB/H,EAAKP,SACXO,EAAK6H,UAAU7F,QAAS4wB,GAAe,IACvC9wB,MAIF,MAAsB,gBAAViG,IAAuBorB,GAAa/yB,KAAM2H,KACnD/D,GAAQmoB,eAAkB0G,GAAazyB,KAAM2H,KAC7C/D,GAAQioB,mBAAsB6G,GAAmB1yB,KAAM2H,IACxDwrB,IAAUP,GAASzsB,KAAMwB,KAAa,GAAI,KAAO,GAAI7F,gBAAkB,CAExE6F,EAAQA,EAAM/F,QAAS+wB,GAAW,YAElC,KACC,KAAW/rB,EAAJ/G,EAAOA,IAEbD,EAAOf,KAAKgB,OACW,IAAlBD,EAAKP,WACTF,GAAOwE,UAAWc,EAAQ7E,GAAM,IAChCA,EAAK6H,UAAYE,EAInB/H,GAAO,EAGN,MAAMsC,KAGJtC,GACJf,KAAK+O,QAAQmnB,OAAQptB,IAEpB,KAAMA,EAAO0B,UAAUpK,SAG3Bs2B,YAAa,WACZ,GAAIne,GAAM/N,UAAW,EAcrB,OAXAxK,MAAKm2B,SAAU3rB,UAAW,SAAUzJ,GACnCwX,EAAMvY,KAAKyI,WAEXnI,GAAOwE,UAAWc,EAAQ5F,OAErBuY,GACJA,EAAIoe,aAAc51B,EAAMf,QAKnBuY,IAAQA,EAAInY,QAAUmY,EAAI/X,UAAYR,KAAOA,KAAK0pB,UAG1DxnB,OAAQ,SAAUyT,GACjB,MAAO3V,MAAK0pB,OAAQ/T,GAAU,IAG/BwgB,SAAU,SAAUzf,EAAMD,GAGzBC,EAAO/R,EAAO4F,SAAWmM,EAEzB,IAAIC,GAAO+K,EAAMkV,EAChBhB,EAASzsB,EAAK4jB,EACd/rB,EAAI,EACJ+G,EAAI/H,KAAKI,OACTy2B,EAAM72B,KACN82B,EAAW/uB,EAAI,EACfe,EAAQ4N,EAAK,GACb7V,EAAaP,GAAOO,WAAYiI,EAGjC,IAAKjI,GACDkH,EAAI,GAAsB,gBAAVe,KAChB/D,GAAQuoB,YAAc6G,GAAShzB,KAAM2H,GACxC,MAAO9I,MAAK6B,KAAK,SAAUuJ,GAC1B,GAAIoc,GAAOqP,EAAIjgB,GAAIxL,EACdvK,KACJ6V,EAAK,GAAK5N,EAAM7H,KAAMjB,KAAMoL,EAAOoc,EAAKiP,SAEzCjP,EAAK2O,SAAUzf,EAAMD,IAIvB,IAAK1O,IACJglB,EAAWzsB,GAAOq1B,cAAejf,EAAM1W,KAAM,GAAIgH,eAAe,EAAOhH,MACvE2W,EAAQoW,EAASjmB,WAEmB,IAA/BimB,EAAS3mB,WAAWhG,SACxB2sB,EAAWpW,GAGPA,GAAQ,CAMZ,IALAif,EAAUt1B,GAAOsE,IAAKgB,EAAQmnB,EAAU,UAAY9lB,GACpD2vB,EAAahB,EAAQx1B,OAIT2H,EAAJ/G,EAAOA,IACd0gB,EAAOqL,EAEF/rB,IAAM81B,IACVpV,EAAOphB,GAAO8W,MAAOsK,GAAM,GAAM,GAG5BkV,GACJt2B,GAAOiG,MAAOqvB,EAAShwB,EAAQ8b,EAAM,YAIvCjL,EAASxV,KAAMjB,KAAKgB,GAAI0gB,EAAM1gB,EAG/B,IAAK41B,EAOJ,IANAztB,EAAMysB,EAASA,EAAQx1B,OAAS,GAAI4G,cAGpC1G,GAAOsE,IAAKgxB,EAASxuB,GAGfpG,EAAI,EAAO41B,EAAJ51B,EAAgBA,IAC5B0gB,EAAOkU,EAAS50B,GACXozB,GAAYjzB,KAAMugB,EAAKrhB,MAAQ,MAClCC,GAAOoH,MAAOga,EAAM,eAAkBphB,GAAOiZ,SAAUpQ,EAAKuY,KAExDA,EAAK9Z,IAEJtH,GAAOy2B,UACXz2B,GAAOy2B,SAAUrV,EAAK9Z,KAGvBtH,GAAOsX,YAAc8J,EAAKlZ,MAAQkZ,EAAK+B,aAAe/B,EAAK9Y,WAAa,IAAK7F,QAASsxB,GAAc,KAOxGtH,GAAWpW,EAAQ,KAIrB,MAAO3W,SAITM,GAAOuB,MACNwH,SAAU,SACV2tB,UAAW,UACXX,aAAc,SACdY,YAAa,QACbC,WAAY,eACV,SAAUp0B,EAAMmuB,GAClB3wB,GAAOsV,GAAI9S,GAAS,SAAU6S,GAO7B,IANA,GAAI5P,GACH/E,EAAI,EACJ2C,KACAwzB,EAAS72B,GAAQqV,GACjBkB,EAAOsgB,EAAO/2B,OAAS,EAEXyW,GAAL7V,EAAWA,IAClB+E,EAAQ/E,IAAM6V,EAAO7W,KAAOA,KAAKoX,OAAM,GACvC9W,GAAQ62B,EAAOn2B,IAAMiwB,GAAYlrB,GAGjCO,EAAKiE,MAAO5G,EAAKoC,EAAMsE,MAGxB,OAAOrK,MAAKuW,UAAW5S,KAKzB,IAAIiG,IACHD,OA8DD,WACC,GAAIytB,EAEJryB,IAAQwK,iBAAmB,WAC1B,GAA4B,MAAvB6nB,EACJ,MAAOA,EAIRA,IAAsB,CAGtB,IAAI1c,GAAKpR,EAAMoiB,CAGf,OADApiB,GAAO1J,GAASqG,qBAAsB,QAAU,GAC1CqD,GAASA,EAAKF,OAMpBsR,EAAM9a,GAAS+F,cAAe,OAC9B+lB,EAAY9rB,GAAS+F,cAAe,OACpC+lB,EAAUtiB,MAAMuiB,QAAU,iEAC1BriB,EAAKvC,YAAa2kB,GAAY3kB,YAAa2T,SAI/BA,GAAItR,MAAMkG,OAASpJ,KAE9BwU,EAAItR,MAAMuiB,QAGT,iJAGDjR,EAAI3T,YAAanH,GAAS+F,cAAe,QAAUyD,MAAMwE,MAAQ,MACjEwpB,EAA0C,IAApB1c,EAAItO,aAG3B9C,EAAKqR,YAAa+Q,GAEX0L,GA3BP,UA+BF,IAMI9qB,IAAWE,GANX6qB,GAAU,UAEV5qB,GAAY,GAAIuT,QAAQ,KAAOuM,GAAO,kBAAmB,KAK5D+K,GAAY,2BAERv3B,GAAOw3B,kBACXjrB,GAAY,SAAUvL,GACrB,MAAOA,GAAKiG,cAAcmO,YAAYoiB,iBAAkBx2B,EAAM,OAG/DyL,GAAS,SAAUzL,EAAM+B,EAAM00B,GAC9B,GAAI5pB,GAAO6pB,EAAUC,EAAU/zB,EAC9ByF,EAAQrI,EAAKqI,KAqCd,OAnCAouB,GAAWA,GAAYlrB,GAAWvL,GAGlC4C,EAAM6zB,EAAWA,EAASG,iBAAkB70B,IAAU00B,EAAU10B,GAASD,OAEpE20B,IAES,KAAR7zB,GAAerD,GAAOiZ,SAAUxY,EAAKiG,cAAejG,KACxD4C,EAAMrD,GAAO8I,MAAOrI,EAAM+B,IAOtB2J,GAAUtL,KAAMwC,IAAS0zB,GAAQl2B,KAAM2B,KAG3C8K,EAAQxE,EAAMwE,MACd6pB,EAAWruB,EAAMquB,SACjBC,EAAWtuB,EAAMsuB,SAGjBtuB,EAAMquB,SAAWruB,EAAMsuB,SAAWtuB,EAAMwE,MAAQjK,EAChDA,EAAM6zB,EAAS5pB,MAGfxE,EAAMwE,MAAQA,EACdxE,EAAMquB,SAAWA,EACjBruB,EAAMsuB,SAAWA,IAMJ70B,SAARc,EACNA,EACAA,EAAM,KAEG/D,GAASiK,gBAAgB+tB,eACpCtrB,GAAY,SAAUvL,GACrB,MAAOA,GAAK62B,cAGbprB,GAAS,SAAUzL,EAAM+B,EAAM00B,GAC9B,GAAIK,GAAMC,EAAIC,EAAQp0B,EACrByF,EAAQrI,EAAKqI,KAyCd,OAvCAouB,GAAWA,GAAYlrB,GAAWvL,GAClC4C,EAAM6zB,EAAWA,EAAU10B,GAASD,OAIxB,MAAPc,GAAeyF,GAASA,EAAOtG,KACnCa,EAAMyF,EAAOtG,IAUT2J,GAAUtL,KAAMwC,KAAU2zB,GAAUn2B,KAAM2B,KAG9C+0B,EAAOzuB,EAAMyuB,KACbC,EAAK/2B,EAAKi3B,aACVD,EAASD,GAAMA,EAAGD,KAGbE,IACJD,EAAGD,KAAO92B,EAAK62B,aAAaC,MAE7BzuB,EAAMyuB,KAAgB,aAAT/0B,EAAsB,MAAQa,EAC3CA,EAAMyF,EAAM6uB,UAAY,KAGxB7uB,EAAMyuB,KAAOA,EACRE,IACJD,EAAGD,KAAOE,IAMGl1B,SAARc,EACNA,EACAA,EAAM,IAAM,SAmCf,WAkEC,QAASu0B,KAER,GAAIxd,GAAKpR,EAAMoiB,EAAWlY,CAE1BlK,GAAO1J,GAASqG,qBAAsB,QAAU,GAC1CqD,GAASA,EAAKF,QAMpBsR,EAAM9a,GAAS+F,cAAe,OAC9B+lB,EAAY9rB,GAAS+F,cAAe,OACpC+lB,EAAUtiB,MAAMuiB,QAAU,iEAC1BriB,EAAKvC,YAAa2kB,GAAY3kB,YAAa2T,GAE3CA,EAAItR,MAAMuiB,QAGT,uKAMDwM,EAAmBC,GAAuB,EAC1CC,GAAyB,EAGpBt4B,EAAOw3B,mBACXY,EAA0E,QAArDp4B,EAAOw3B,iBAAkB7c,EAAK,WAAemH,IAClEuW,EACwE,SAArEr4B,EAAOw3B,iBAAkB7c,EAAK,QAAY9M,MAAO,QAAUA,MAM9D4F,EAAWkH,EAAI3T,YAAanH,GAAS+F,cAAe,QAGpD6N,EAASpK,MAAMuiB,QAAUjR,EAAItR,MAAMuiB,QAGlC,8HAEDnY,EAASpK,MAAMkvB,YAAc9kB,EAASpK,MAAMwE,MAAQ,IACpD8M,EAAItR,MAAMwE,MAAQ,MAElByqB,GACE1rB,YAAc5M,EAAOw3B,iBAAkB/jB,EAAU,WAAe8kB,cAUnE5d,EAAI9R,UAAY,8CAChB4K,EAAWkH,EAAIzU,qBAAsB,MACrCuN,EAAU,GAAIpK,MAAMuiB,QAAU,2CAC9B4M,EAA0D,IAA/B/kB,EAAU,GAAInH,aACpCksB,IACJ/kB,EAAU,GAAIpK,MAAMG,QAAU,GAC9BiK,EAAU,GAAIpK,MAAMG,QAAU,OAC9BgvB,EAA0D,IAA/B/kB,EAAU,GAAInH,cAG1C/C,EAAKqR,YAAa+Q,IAtInB,GAAIhR,GAAKtR,EAAO4R,EAAGmd,EAAkBC,EACpCG,EAA0BF,CAG3B3d,GAAM9a,GAAS+F,cAAe,OAC9B+U,EAAI9R,UAAY,qEAChBoS,EAAIN,EAAIzU,qBAAsB,KAAO,GACrCmD,EAAQ4R,GAAKA,EAAE5R,MAGTA,IAINA,EAAMuiB,QAAU,wBAIhB5mB,GAAQ4I,QAA4B,QAAlBvE,EAAMuE,QAIxB5I,GAAQyzB,WAAapvB,EAAMovB,SAE3B9d,EAAItR,MAAMqvB,eAAiB,cAC3B/d,EAAIyS,WAAW,GAAO/jB,MAAMqvB,eAAiB,GAC7C1zB,GAAQ2zB,gBAA+C,gBAA7Bhe,EAAItR,MAAMqvB,eAIpC1zB,GAAQwH,UAAgC,KAApBnD,EAAMmD,WAA2C,KAAvBnD,EAAMuvB,cACzB,KAA1BvvB,EAAMwvB,gBAEPt4B,GAAOiE,OAAOQ,IACb8zB,sBAAuB,WAItB,MAHiC,OAA5BN,GACJL,IAEMK,GAGR7rB,kBAAmB,WAIlB,MAH6B,OAAxB0rB,GACJF,IAEME,GAGRU,cAAe,WAId,MAHyB,OAApBX,GACJD,IAEMC,GAIRY,oBAAqB,WAIpB,MAH+B,OAA1BV,GACJH,IAEMG,SAiFV/3B,GAAO04B,KAAO,SAAUj4B,EAAMW,EAAS+U,EAAUC,GAChD,GAAI/S,GAAKb,EACRgW,IAGD,KAAMhW,IAAQpB,GACboX,EAAKhW,GAAS/B,EAAKqI,MAAOtG,GAC1B/B,EAAKqI,MAAOtG,GAASpB,EAASoB,EAG/Ba,GAAM8S,EAASlM,MAAOxJ,EAAM2V,MAG5B,KAAM5T,IAAQpB,GACbX,EAAKqI,MAAOtG,GAASgW,EAAKhW,EAG3B,OAAOa,GAIR,IACEs1B,IAAS,kBACVC,GAAW,wBAIXC,GAAe,4BACf1tB,GAAY,GAAIuU,QAAQ,KAAOuM,GAAO,SAAU,KAChD6M,GAAU,GAAIpZ,QAAQ,YAAcuM,GAAO,IAAK,KAEhD8M,IAAYC,SAAU,WAAYC,WAAY,SAAUhwB,QAAS,SACjEiwB,IACCC,cAAe,IACfC,WAAY,OAGb3uB,IAAgB,SAAU,IAAK,MAAO,KAuKvCzK,IAAOiE,QAGNwL,UACCpC,SACCtD,IAAK,SAAUtJ,EAAMy2B,GACpB,GAAKA,EAAW,CAEf,GAAI7zB,GAAM6I,GAAQzL,EAAM,UACxB,OAAe,KAAR4C,EAAa,IAAMA,MAO9Bg2B,WACCC,aAAe,EACfC,aAAe,EACfC,UAAY,EACZC,YAAc,EACdL,YAAc,EACdM,YAAc,EACdrsB,SAAW,EACXssB,OAAS,EACTC,SAAW,EACXC,QAAU,EACVC,QAAU,EACV9qB,MAAQ,GAKT+qB,UAECC,QAASv1B,GAAQyzB,SAAW,WAAa,cAI1CpvB,MAAO,SAAUrI,EAAM+B,EAAMgG,EAAO+C,GAEnC,GAAM9K,GAA0B,IAAlBA,EAAKP,UAAoC,IAAlBO,EAAKP,UAAmBO,EAAKqI,MAAlE,CAKA,GAAIzF,GAAKtD,EAAMiO,EACdxD,EAAWxK,GAAOkE,UAAW1B,GAC7BsG,EAAQrI,EAAKqI,KASd,IAPAtG,EAAOxC,GAAO+5B,SAAUvvB,KAAgBxK,GAAO+5B,SAAUvvB,GAAaL,EAAgBrB,EAAO0B,IAI7FwD,EAAQhO,GAAOyP,SAAUjN,IAAUxC,GAAOyP,SAAUjF,GAGrCjI,SAAViG,EAsCJ,MAAKwF,IAAS,OAASA,IAAqDzL,UAA3Cc,EAAM2K,EAAMjE,IAAKtJ,GAAM,EAAO8K,IACvDlI,EAIDyF,EAAOtG,EAhCd,IAVAzC,QAAcyI,GAGA,WAATzI,IAAsBsD,EAAMy1B,GAAQ9xB,KAAMwB,MAC9CA,GAAUnF,EAAI,GAAK,GAAMA,EAAI,GAAKgJ,WAAYrM,GAAOmJ,IAAK1I,EAAM+B,IAEhEzC,EAAO,UAIM,MAATyI,GAAiBA,IAAUA,IAKlB,WAATzI,GAAsBC,GAAOq5B,UAAW7uB,KAC5ChC,GAAS,MAKJ/D,GAAQ2zB,iBAA6B,KAAV5vB,GAA+C,IAA/BhG,EAAKuS,QAAQ,gBAC7DjM,EAAOtG,GAAS,aAIXwL,GAAW,OAASA,IAAwDzL,UAA7CiG,EAAQwF,EAAMuoB,IAAK91B,EAAM+H,EAAO+C,MAIpE,IACCzC,EAAOtG,GAASgG,EACf,MAAMzF,OAcXoG,IAAK,SAAU1I,EAAM+B,EAAM+I,EAAOE,GACjC,GAAIuK,GAAKtK,EAAKsC,EACbxD,EAAWxK,GAAOkE,UAAW1B,EAyB9B,OAtBAA,GAAOxC,GAAO+5B,SAAUvvB,KAAgBxK,GAAO+5B,SAAUvvB,GAAaL,EAAgB1J,EAAKqI,MAAO0B,IAIlGwD,EAAQhO,GAAOyP,SAAUjN,IAAUxC,GAAOyP,SAAUjF,GAG/CwD,GAAS,OAASA,KACtBtC,EAAMsC,EAAMjE,IAAKtJ,GAAM,EAAM8K,IAIjBhJ,SAARmJ,IACJA,EAAMQ,GAAQzL,EAAM+B,EAAMiJ,IAId,WAARC,GAAoBlJ,IAAQ02B,MAChCxtB,EAAMwtB,GAAoB12B,IAIZ,KAAV+I,GAAgBA,GACpByK,EAAM3J,WAAYX,GACXH,KAAU,GAAQvL,GAAOoX,UAAWpB,GAAQA,GAAO,EAAItK,GAExDA,KAIT1L,GAAOuB,MAAO,SAAU,SAAW,SAAUb,EAAG8B,GAC/CxC,GAAOyP,SAAUjN,IAChBuH,IAAK,SAAUtJ,EAAMy2B,EAAU3rB,GAC9B,MAAK2rB,GAGG2B,GAAah4B,KAAMb,GAAOmJ,IAAK1I,EAAM,aAAsC,IAArBA,EAAKqL,YACjE9L,GAAO04B,KAAMj4B,EAAMs4B,GAAS,WAC3B,MAAOntB,GAAkBnL,EAAM+B,EAAM+I,KAEtCK,EAAkBnL,EAAM+B,EAAM+I,GAPhC,QAWDgrB,IAAK,SAAU91B,EAAM+H,EAAO+C,GAC3B,GAAIE,GAASF,GAASS,GAAWvL,EACjC,OAAOuK,GAAmBvK,EAAM+H,EAAO+C,EACtCD,EACC7K,EACA+B,EACA+I,EACA9G,GAAQwH,WAAgE,eAAnDjM,GAAOmJ,IAAK1I,EAAM,aAAa,EAAOgL,GAC3DA,GACG,OAMFhH,GAAQ4I,UACbrN,GAAOyP,SAASpC,SACftD,IAAK,SAAUtJ,EAAMy2B,GAEpB,MAAO0B,IAAS/3B,MAAOq2B,GAAYz2B,EAAK62B,aAAe72B,EAAK62B,aAAax2B,OAASL,EAAKqI,MAAMhI,SAAW,IACrG,IAAOuL,WAAYqT,OAAOua,IAAS,GACrC/C,EAAW,IAAM,IAGnBX,IAAK,SAAU91B,EAAM+H,GACpB,GAAIM,GAAQrI,EAAKqI,MAChBwuB,EAAe72B,EAAK62B,aACpBjqB,EAAUrN,GAAOoX,UAAW5O,GAAU,iBAA2B,IAARA,EAAc,IAAM,GAC7E1H,EAASw2B,GAAgBA,EAAax2B,QAAUgI,EAAMhI,QAAU,EAIjEgI,GAAMkG,KAAO,GAINxG,GAAS,GAAe,KAAVA,IAC6B,KAAhDxI,GAAOuI,KAAMzH,EAAO2B,QAASk2B,GAAQ,MACrC7vB,EAAM7B,kBAKP6B,EAAM7B,gBAAiB,UAGR,KAAVuB,GAAgB8uB,IAAiBA,EAAax2B,UAMpDgI,EAAMhI,OAAS63B,GAAO93B,KAAMC,GAC3BA,EAAO2B,QAASk2B,GAAQtrB,GACxBvM,EAAS,IAAMuM,MAKnBrN,GAAOyP,SAASuoB,YAAcpuB,EAAcnF,GAAQg0B,oBACnD,SAAUh4B,EAAMy2B,GACf,MAAKA,GAGGl3B,GAAO04B,KAAMj4B,GAAQwI,QAAW,gBACtCiD,IAAUzL,EAAM,gBAJlB,SAUFT,GAAOuB,MACN24B,OAAQ,GACRC,QAAS,GACTC,OAAQ,SACN,SAAUhmB,EAAQimB,GACpBr6B,GAAOyP,SAAU2E,EAASimB,IACzB3qB,OAAQ,SAAUlH,GAOjB,IANA,GAAI9H,GAAI,EACP45B,KAGAC,EAAyB,gBAAV/xB,GAAqBA,EAAMjE,MAAM,MAASiE,GAE9C,EAAJ9H,EAAOA,IACd45B,EAAUlmB,EAASzI,GAAWjL,GAAM25B,GACnCE,EAAO75B,IAAO65B,EAAO75B,EAAI,IAAO65B,EAAO,EAGzC,OAAOD,KAIHvD,GAAQl2B,KAAMuT,KACnBpU,GAAOyP,SAAU2E,EAASimB,GAAS9D,IAAMvrB,KAI3ChL,GAAOsV,GAAGrR,QACTkF,IAAK,SAAU3G,EAAMgG,GACpB,MAAO4jB,IAAQ1sB,KAAM,SAAUe,EAAM+B,EAAMgG,GAC1C,GAAIiD,GAAQ+K,EACXlS,KACA5D,EAAI,CAEL,IAAKV,GAAOoE,QAAS5B,GAAS,CAI7B,IAHAiJ,EAASO,GAAWvL,GACpB+V,EAAMhU,EAAK1C,OAEC0W,EAAJ9V,EAASA,IAChB4D,EAAK9B,EAAM9B,IAAQV,GAAOmJ,IAAK1I,EAAM+B,EAAM9B,IAAK,EAAO+K,EAGxD,OAAOnH,GAGR,MAAiB/B,UAAViG,EACNxI,GAAO8I,MAAOrI,EAAM+B,EAAMgG,GAC1BxI,GAAOmJ,IAAK1I,EAAM+B,IACjBA,EAAMgG,EAAO0B,UAAUpK,OAAS,IAEpC6K,KAAM,WACL,MAAOD,GAAUhL,MAAM,IAExB0P,KAAM,WACL,MAAO1E,GAAUhL,OAElBqO,OAAQ,SAAUkG,GACjB,MAAsB,iBAAVA,GACJA,EAAQvU,KAAKiL,OAASjL,KAAK0P,OAG5B1P,KAAK6B,KAAK,WACXwJ,GAAUrL,MACdM,GAAQN,MAAOiL,OAEf3K,GAAQN,MAAO0P,YAUnBpP,GAAOsM,MAAQA,EAEfA,EAAMI,WACLoJ,YAAaxJ,EACbK,KAAM,SAAUlM,EAAMW,EAASmL,EAAMC,EAAKC,EAAQ+tB,GACjD96B,KAAKe,KAAOA,EACZf,KAAK6M,KAAOA,EACZ7M,KAAK+M,OAASA,GAAU,QACxB/M,KAAK0B,QAAUA,EACf1B,KAAK4P,MAAQ5P,KAAKqN,IAAMrN,KAAKuB,MAC7BvB,KAAK8M,IAAMA,EACX9M,KAAK86B,KAAOA,IAAUx6B,GAAOq5B,UAAW9sB,GAAS,GAAK,OAEvDtL,IAAK,WACJ,GAAI+M,GAAQ1B,EAAMmuB,UAAW/6B,KAAK6M,KAElC,OAAOyB,IAASA,EAAMjE,IACrBiE,EAAMjE,IAAKrK,MACX4M,EAAMmuB,UAAU/K,SAAS3lB,IAAKrK,OAEhCgR,IAAK,SAAUF,GACd,GAAIkqB,GACH1sB,EAAQ1B,EAAMmuB,UAAW/6B,KAAK6M,KAoB/B,OAjBC7M,MAAKqoB,IAAM2S,EADPh7B,KAAK0B,QAAQkP,SACEtQ,GAAOyM,OAAQ/M,KAAK+M,QACtC+D,EAAS9Q,KAAK0B,QAAQkP,SAAWE,EAAS,EAAG,EAAG9Q,KAAK0B,QAAQkP,UAG3CE,EAEpB9Q,KAAKqN,KAAQrN,KAAK8M,IAAM9M,KAAK4P,OAAUorB,EAAQh7B,KAAK4P,MAE/C5P,KAAK0B,QAAQu5B,MACjBj7B,KAAK0B,QAAQu5B,KAAKh6B,KAAMjB,KAAKe,KAAMf,KAAKqN,IAAKrN,MAGzCsO,GAASA,EAAMuoB,IACnBvoB,EAAMuoB,IAAK72B,MAEX4M,EAAMmuB,UAAU/K,SAAS6G,IAAK72B,MAExBA,OAIT4M,EAAMI,UAAUC,KAAKD,UAAYJ,EAAMI,UAEvCJ,EAAMmuB,WACL/K,UACC3lB,IAAK,SAAU0D,GACd,GAAIoC,EAEJ,OAAiC,OAA5BpC,EAAMhN,KAAMgN,EAAMlB,OACpBkB,EAAMhN,KAAKqI,OAA2C,MAAlC2E,EAAMhN,KAAKqI,MAAO2E,EAAMlB,OAQ/CsD,EAAS7P,GAAOmJ,IAAKsE,EAAMhN,KAAMgN,EAAMlB,KAAM,IAErCsD,GAAqB,SAAXA,EAAwBA,EAAJ,GAT9BpC,EAAMhN,KAAMgN,EAAMlB,OAW3BgqB,IAAK,SAAU9oB,GAGTzN,GAAOmR,GAAGwpB,KAAMltB,EAAMlB,MAC1BvM,GAAOmR,GAAGwpB,KAAMltB,EAAMlB,MAAQkB,GACnBA,EAAMhN,KAAKqI,QAAgE,MAArD2E,EAAMhN,KAAKqI,MAAO9I,GAAO+5B,SAAUtsB,EAAMlB,QAAoBvM,GAAOyP,SAAUhC,EAAMlB,OACrHvM,GAAO8I,MAAO2E,EAAMhN,KAAMgN,EAAMlB,KAAMkB,EAAMV,IAAMU,EAAM+sB,MAExD/sB,EAAMhN,KAAMgN,EAAMlB,MAASkB,EAAMV,OASrCT,EAAMmuB,UAAUnJ,UAAYhlB,EAAMmuB,UAAUvJ,YAC3CqF,IAAK,SAAU9oB,GACTA,EAAMhN,KAAKP,UAAYuN,EAAMhN,KAAK0H,aACtCsF,EAAMhN,KAAMgN,EAAMlB,MAASkB,EAAMV,OAKpC/M,GAAOyM,QACNmuB,OAAQ,SAAUC,GACjB,MAAOA,IAERC,MAAO,SAAUD,GAChB,MAAO,GAAMzvB,KAAK2vB,IAAKF,EAAIzvB,KAAK4vB,IAAO,IAIzCh7B,GAAOmR,GAAK7E,EAAMI,UAAUC,KAG5B3M,GAAOmR,GAAGwpB,OAKV,IACC7tB,IAAOmuB,GACP/rB,GAAW,yBACXgsB,GAAS,GAAIxb,QAAQ,iBAAmBuM,GAAO,cAAe,KAC9DkP,GAAO,cACPprB,IAAwBnC,GACxBD,IACCytB,KAAO,SAAU7uB,EAAM/D,GACtB,GAAIiF,GAAQ/N,KAAK6N,YAAahB,EAAM/D,GACnCgK,EAAS/E,EAAMxM,MACfs5B,EAAQW,GAAOl0B,KAAMwB,GACrBgyB,EAAOD,GAASA,EAAO,KAASv6B,GAAOq5B,UAAW9sB,GAAS,GAAK,MAGhE+C,GAAUtP,GAAOq5B,UAAW9sB,IAAmB,OAATiuB,IAAkBhoB,IACvD0oB,GAAOl0B,KAAMhH,GAAOmJ,IAAKsE,EAAMhN,KAAM8L,IACtC8uB,EAAQ,EACRC,EAAgB,EAEjB,IAAKhsB,GAASA,EAAO,KAAQkrB,EAAO,CAEnCA,EAAOA,GAAQlrB,EAAO,GAGtBirB,EAAQA,MAGRjrB,GAASkD,GAAU,CAEnB,GAGC6oB,GAAQA,GAAS,KAGjB/rB,GAAgB+rB,EAChBr7B,GAAO8I,MAAO2E,EAAMhN,KAAM8L,EAAM+C,EAAQkrB,SAI/Ba,KAAWA,EAAQ5tB,EAAMxM,MAAQuR,IAAqB,IAAV6oB,KAAiBC,GAaxE,MATKf,KACJjrB,EAAQ7B,EAAM6B,OAASA,IAAUkD,GAAU,EAC3C/E,EAAM+sB,KAAOA,EAEb/sB,EAAMjB,IAAM+tB,EAAO,GAClBjrB,GAAUirB,EAAO,GAAM,GAAMA,EAAO,IACnCA,EAAO,IAGH9sB,IA0UVzN,IAAO2P,UAAY3P,GAAOiE,OAAQ0L,GACjC4rB,QAAS,SAAU1tB,EAAOsI,GACpBnW,GAAOO,WAAYsN,IACvBsI,EAAWtI,EACXA,GAAU,MAEVA,EAAQA,EAAMtJ,MAAM,IAOrB,KAJA,GAAIgI,GACHzB,EAAQ,EACRhL,EAAS+N,EAAM/N,OAEAA,EAARgL,EAAiBA,IACxByB,EAAOsB,EAAO/C,GACd6C,GAAUpB,GAASoB,GAAUpB,OAC7BoB,GAAUpB,GAAOuF,QAASqE,IAI5BqlB,UAAW,SAAUrlB,EAAU2f,GACzBA,EACJ/lB,GAAoB+B,QAASqE,GAE7BpG,GAAoB/J,KAAMmQ,MAK7BnW,GAAOy7B,MAAQ,SAAUA,EAAOhvB,EAAQ6I,GACvC,GAAIomB,GAAMD,GAA0B,gBAAVA,GAAqBz7B,GAAOiE,UAAYw3B,IACjEnqB,SAAUgE,IAAOA,GAAM7I,GACtBzM,GAAOO,WAAYk7B,IAAWA,EAC/BnrB,SAAUmrB,EACVhvB,OAAQ6I,GAAM7I,GAAUA,IAAWzM,GAAOO,WAAYkM,IAAYA,EAwBnE,OArBAivB,GAAIprB,SAAWtQ,GAAOmR,GAAG6Z,IAAM,EAA4B,gBAAjB0Q,GAAIprB,SAAwBorB,EAAIprB,SACzEorB,EAAIprB,WAAYtQ,IAAOmR,GAAGwqB,OAAS37B,GAAOmR,GAAGwqB,OAAQD,EAAIprB,UAAatQ,GAAOmR,GAAGwqB,OAAOjM,UAGtE,MAAbgM,EAAIptB,OAAiBotB,EAAIptB,SAAU,KACvCotB,EAAIptB,MAAQ,MAIbotB,EAAIljB,IAAMkjB,EAAIpqB,SAEdoqB,EAAIpqB,SAAW,WACTtR,GAAOO,WAAYm7B,EAAIljB,MAC3BkjB,EAAIljB,IAAI7X,KAAMjB,MAGVg8B,EAAIptB,OACRtO,GAAO2rB,QAASjsB,KAAMg8B,EAAIptB,QAIrBotB,GAGR17B,GAAOsV,GAAGrR,QACT23B,OAAQ,SAAUH,EAAOI,EAAIpvB,EAAQ0J,GAGpC,MAAOzW,MAAKoB,OAAQiK,IAAW5B,IAAK,UAAW,GAAIwB,OAGjD6B,MAAMsvB,SAAUzuB,QAASwuB,GAAMJ,EAAOhvB,EAAQ0J,IAEjD2lB,QAAS,SAAUvvB,EAAMkvB,EAAOhvB,EAAQ0J,GACvC,GAAI1H,GAAQzO,GAAOiD,cAAesJ,GACjCwvB,EAAS/7B,GAAOy7B,MAAOA,EAAOhvB,EAAQ0J,GACtC6lB,EAAc,WAEb,GAAI7tB,GAAOwB,EAAWjQ,KAAMM,GAAOiE,UAAYsI,GAAQwvB,IAGlDttB,GAASzO,GAAOoH,MAAO1H,KAAM,YACjCyO,EAAK6C,MAAM,GAKd,OAFCgrB,GAAYC,OAASD,EAEfvtB,GAASstB,EAAOztB,SAAU,EAChC5O,KAAK6B,KAAMy6B,GACXt8B,KAAK4O,MAAOytB,EAAOztB,MAAO0tB,IAE5BhrB,KAAM,SAAUjR,EAAM+rB,EAAY7a,GACjC,GAAIirB,GAAY,SAAUluB,GACzB,GAAIgD,GAAOhD,EAAMgD,WACVhD,GAAMgD,KACbA,EAAMC,GAYP,OATqB,gBAATlR,KACXkR,EAAU6a,EACVA,EAAa/rB,EACbA,EAAOwC,QAEHupB,GAAc/rB,KAAS,GAC3BL,KAAK4O,MAAOvO,GAAQ,SAGdL,KAAK6B,KAAK,WAChB,GAAIoqB,IAAU,EACb7gB,EAAgB,MAAR/K,GAAgBA,EAAO,aAC/Bo8B,EAASn8B,GAAOm8B,OAChB75B,EAAOtC,GAAOoH,MAAO1H,KAEtB,IAAKoL,EACCxI,EAAMwI,IAAWxI,EAAMwI,GAAQkG,MACnCkrB,EAAW55B,EAAMwI,QAGlB,KAAMA,IAASxI,GACTA,EAAMwI,IAAWxI,EAAMwI,GAAQkG,MAAQmqB,GAAKt6B,KAAMiK,IACtDoxB,EAAW55B,EAAMwI,GAKpB,KAAMA,EAAQqxB,EAAOr8B,OAAQgL,KACvBqxB,EAAQrxB,GAAQrK,OAASf,MAAiB,MAARK,GAAgBo8B,EAAQrxB,GAAQwD,QAAUvO,IAChFo8B,EAAQrxB,GAAQqD,KAAK6C,KAAMC,GAC3B0a,GAAU,EACVwQ,EAAOxlB,OAAQ7L,EAAO,KAOnB6gB,IAAY1a,IAChBjR,GAAO2rB,QAASjsB,KAAMK,MAIzBk8B,OAAQ,SAAUl8B,GAIjB,MAHKA,MAAS,IACbA,EAAOA,GAAQ,MAETL,KAAK6B,KAAK,WAChB,GAAIuJ,GACHxI,EAAOtC,GAAOoH,MAAO1H,MACrB4O,EAAQhM,EAAMvC,EAAO,SACrBiO,EAAQ1L,EAAMvC,EAAO,cACrBo8B,EAASn8B,GAAOm8B,OAChBr8B,EAASwO,EAAQA,EAAMxO,OAAS,CAajC,KAVAwC,EAAK25B,QAAS,EAGdj8B,GAAOsO,MAAO5O,KAAMK,MAEfiO,GAASA,EAAMgD,MACnBhD,EAAMgD,KAAKrQ,KAAMjB,MAAM,GAIlBoL,EAAQqxB,EAAOr8B,OAAQgL,KACvBqxB,EAAQrxB,GAAQrK,OAASf,MAAQy8B,EAAQrxB,GAAQwD,QAAUvO,IAC/Do8B,EAAQrxB,GAAQqD,KAAK6C,MAAM,GAC3BmrB,EAAOxlB,OAAQ7L,EAAO,GAKxB,KAAMA,EAAQ,EAAWhL,EAARgL,EAAgBA,IAC3BwD,EAAOxD,IAAWwD,EAAOxD,GAAQmxB,QACrC3tB,EAAOxD,GAAQmxB,OAAOt7B,KAAMjB,YAKvB4C,GAAK25B,YAKfj8B,GAAOuB,MAAO,SAAU,OAAQ,QAAU,SAAUb,EAAG8B,GACtD,GAAI45B,GAAQp8B,GAAOsV,GAAI9S,EACvBxC,IAAOsV,GAAI9S,GAAS,SAAUi5B,EAAOhvB,EAAQ0J,GAC5C,MAAgB,OAATslB,GAAkC,iBAAVA,GAC9BW,EAAMnyB,MAAOvK,KAAMwK,WACnBxK,KAAKo8B,QAAS9uB,EAAOxK,GAAM,GAAQi5B,EAAOhvB,EAAQ0J,MAKrDnW,GAAOuB,MACN86B,UAAWrvB,EAAM,QACjBsvB,QAAStvB,EAAM,QACfuvB,YAAavvB,EAAM,UACnBwvB,QAAUnvB,QAAS,QACnBovB,SAAWpvB,QAAS,QACpBqvB,YAAcrvB,QAAS,WACrB,SAAU7K,EAAMqL,GAClB7N,GAAOsV,GAAI9S,GAAS,SAAUi5B,EAAOhvB,EAAQ0J,GAC5C,MAAOzW,MAAKo8B,QAASjuB,EAAO4tB,EAAOhvB,EAAQ0J,MAI7CnW,GAAOm8B,UACPn8B,GAAOmR,GAAGjB,KAAO,WAChB,GAAIkB,GACH+qB,EAASn8B,GAAOm8B,OAChBz7B,EAAI,CAIL,KAFAoM,GAAQ9M,GAAO+M,MAEPrM,EAAIy7B,EAAOr8B,OAAQY,IAC1B0Q,EAAQ+qB,EAAQz7B,GAEV0Q,KAAW+qB,EAAQz7B,KAAQ0Q,GAChC+qB,EAAOxlB,OAAQjW,IAAK,EAIhBy7B,GAAOr8B,QACZE,GAAOmR,GAAGH,OAEXlE,GAAQvK,QAGTvC,GAAOmR,GAAGC,MAAQ,SAAUA,GAC3BpR,GAAOm8B,OAAOn2B,KAAMoL,GACfA,IACJpR,GAAOmR,GAAG7B,QAEVtP,GAAOm8B,OAAOt4B,OAIhB7D,GAAOmR,GAAGwrB,SAAW,GAErB38B,GAAOmR,GAAG7B,MAAQ,WACX2rB,KACLA,GAAU2B,YAAa58B,GAAOmR,GAAGjB,KAAMlQ,GAAOmR,GAAGwrB,YAInD38B,GAAOmR,GAAGH,KAAO,WAChB6rB,cAAe5B,IACfA,GAAU,MAGXj7B,GAAOmR,GAAGwqB,QACTmB,KAAM,IACNC,KAAM,IAENrN,SAAU,KAMX1vB,GAAOsV,GAAG0nB,MAAQ,SAAUC,EAAMl9B,GAIjC,MAHAk9B,GAAOj9B,GAAOmR,GAAKnR,GAAOmR,GAAGwqB,OAAQsB,IAAUA,EAAOA,EACtDl9B,EAAOA,GAAQ,KAERL,KAAK4O,MAAOvO,EAAM,SAAU0nB,EAAMzZ,GACxC,GAAIkvB,GAAUrwB,WAAY4a,EAAMwV,EAChCjvB,GAAMgD,KAAO,WACZmsB,aAAcD,OAMjB,WAEC,GAAInb,GAAO3H,EAAKP,EAAQa,EAAGghB,CAG3BthB,GAAM9a,GAAS+F,cAAe,OAC9B+U,EAAIb,aAAc,YAAa,KAC/Ba,EAAI9R,UAAY,qEAChBoS,EAAIN,EAAIzU,qBAAqB,KAAM,GAGnCkU,EAASva,GAAS+F,cAAc,UAChCq2B,EAAM7hB,EAAOpT,YAAanH,GAAS+F,cAAc,WACjD0c,EAAQ3H,EAAIzU,qBAAqB,SAAU,GAE3C+U,EAAE5R,MAAMuiB,QAAU,UAGlB5mB,GAAQ24B,gBAAoC,MAAlBhjB,EAAIqH,UAI9Bhd,GAAQqE,MAAQ,MAAMjI,KAAM6Z,EAAE9X,aAAa,UAI3C6B,GAAQ44B,eAA4C,OAA3B3iB,EAAE9X,aAAa,QAGxC6B,GAAQ64B,UAAYvb,EAAMvZ,MAI1B/D,GAAQ84B,YAAc7B,EAAIhzB,SAG1BjE,GAAQ+4B,UAAYl+B,GAAS+F,cAAc,QAAQm4B,QAInD3jB,EAAO0L,UAAW,EAClB9gB,GAAQg5B,aAAe/B,EAAInW,SAI3BxD,EAAQziB,GAAS+F,cAAe,SAChC0c,EAAMxI,aAAc,QAAS,IAC7B9U,GAAQsd,MAA0C,KAAlCA,EAAMnf,aAAc,SAGpCmf,EAAMvZ,MAAQ,IACduZ,EAAMxI,aAAc,OAAQ,SAC5B9U,GAAQi5B,WAA6B,MAAhB3b,EAAMvZ,QAI5B,IAAIm1B,IAAU,KAEd39B,IAAOsV,GAAGrR,QACTyH,IAAK,SAAUlD,GACd,GAAIwF,GAAO3K,EAAK9C,EACfE,EAAOf,KAAK,EAEb,EAAA,GAAMwK,UAAUpK,OAsBhB,MAFAS,GAAaP,GAAOO,WAAYiI,GAEzB9I,KAAK6B,KAAK,SAAUb,GAC1B,GAAIgL,EAEmB,KAAlBhM,KAAKQ,WAKTwL,EADInL,EACEiI,EAAM7H,KAAMjB,KAAMgB,EAAGV,GAAQN,MAAOgM,OAEpClD,EAIK,MAAPkD,EACJA,EAAM,GACoB,gBAARA,GAClBA,GAAO,GACI1L,GAAOoE,QAASsH,KAC3BA,EAAM1L,GAAOsE,IAAKoH,EAAK,SAAUlD,GAChC,MAAgB,OAATA,EAAgB,GAAKA,EAAQ,MAItCwF,EAAQhO,GAAO49B,SAAUl+B,KAAKK,OAAUC,GAAO49B,SAAUl+B,KAAKqG,SAASpD,eAGjEqL,GAAW,OAASA,IAA8CzL,SAApCyL,EAAMuoB,IAAK72B,KAAMgM,EAAK,WACzDhM,KAAK8I,MAAQkD,KAjDd,IAAKjL,EAGJ,MAFAuN,GAAQhO,GAAO49B,SAAUn9B,EAAKV,OAAUC,GAAO49B,SAAUn9B,EAAKsF,SAASpD,eAElEqL,GAAS,OAASA,IAAgDzL,UAAtCc,EAAM2K,EAAMjE,IAAKtJ,EAAM,UAChD4C,GAGRA,EAAM5C,EAAK+H,MAEW,gBAARnF,GAEbA,EAAIZ,QAAQk7B,GAAS,IAEd,MAAPt6B,EAAc,GAAKA,OA0CxBrD,GAAOiE,QACN25B,UACC3J,QACClqB,IAAK,SAAUtJ,GACd,GAAIiL,GAAM1L,GAAO4G,KAAKC,KAAMpG,EAAM,QAClC,OAAc,OAAPiL,EACNA,EAGA1L,GAAOuI,KAAMvI,GAAOkI,KAAMzH,MAG7BoZ,QACC9P,IAAK,SAAUtJ,GAYd,IAXA,GAAI+H,GAAOyrB,EACV7yB,EAAUX,EAAKW,QACf0J,EAAQrK,EAAK+kB,cACb2N,EAAoB,eAAd1yB,EAAKV,MAAiC,EAAR+K,EACpCD,EAASsoB,EAAM,QACf9nB,EAAM8nB,EAAMroB,EAAQ,EAAI1J,EAAQtB,OAChCY,EAAY,EAARoK,EACHO,EACA8nB,EAAMroB,EAAQ,EAGJO,EAAJ3K,EAASA,IAIhB,GAHAuzB,EAAS7yB,EAASV,MAGXuzB,EAAOvrB,UAAYhI,IAAMoK,IAE5BrG,GAAQg5B,YAAexJ,EAAO1O,SAA+C,OAApC0O,EAAOrxB,aAAa,cAC5DqxB,EAAO9rB,WAAWod,UAAavlB,GAAO+F,SAAUkuB,EAAO9rB,WAAY,aAAiB,CAMxF,GAHAK,EAAQxI,GAAQi0B,GAASvoB,MAGpBynB,EACJ,MAAO3qB,EAIRqC,GAAO7E,KAAMwC,GAIf,MAAOqC,IAGR0rB,IAAK,SAAU91B,EAAM+H,GAMpB,IALA,GAAIq1B,GAAW5J,EACd7yB,EAAUX,EAAKW,QACfyJ,EAAS7K,GAAOyX,UAAWjP,GAC3B9H,EAAIU,EAAQtB,OAELY,KAGP,GAFAuzB,EAAS7yB,EAASV,GAEbV,GAAOe,QAASf,GAAO49B,SAAS3J,OAAOlqB,IAAKkqB,GAAUppB,IAAY,EAMtE,IACCopB,EAAOvrB,SAAWm1B,GAAY,EAE7B,MAAQn8B,GAGTuyB,EAAO6J,iBAIR7J,GAAOvrB,UAAW,CASpB,OAJMm1B,KACLp9B,EAAK+kB,cAAgB,IAGfpkB,OAOXpB,GAAOuB,MAAO,QAAS,YAAc,WACpCvB,GAAO49B,SAAUl+B,OAChB62B,IAAK,SAAU91B,EAAM+H,GACpB,MAAKxI,IAAOoE,QAASoE,GACX/H,EAAK4F,QAAUrG,GAAOe,QAASf,GAAOS,GAAMiL,MAAOlD,IAAW,EADxE,SAKI/D,GAAQ64B,UACbt9B,GAAO49B,SAAUl+B,MAAOqK,IAAM,SAAUtJ,GAGvC,MAAsC,QAA/BA,EAAKmC,aAAa,SAAoB,KAAOnC,EAAK+H,SAQ5D,IAAIu1B,IAAUC,GACbxjB,GAAaxa,GAAO8iB,KAAKtI,WACzByjB,GAAc,0BACdb,GAAkB34B,GAAQ24B,gBAC1Bc,GAAcz5B,GAAQsd,KAEvB/hB,IAAOsV,GAAGrR,QACT4C,KAAM,SAAUrE,EAAMgG,GACrB,MAAO4jB,IAAQ1sB,KAAMM,GAAO6G,KAAMrE,EAAMgG,EAAO0B,UAAUpK,OAAS,IAGnEq+B,WAAY,SAAU37B,GACrB,MAAO9C,MAAK6B,KAAK,WAChBvB,GAAOm+B,WAAYz+B,KAAM8C,QAK5BxC,GAAOiE,QACN4C,KAAM,SAAUpG,EAAM+B,EAAMgG,GAC3B,GAAIwF,GAAO3K,EACV+6B,EAAQ39B,EAAKP,QAGd,IAAMO,GAAkB,IAAV29B,GAAyB,IAAVA,GAAyB,IAAVA,EAK5C,aAAY39B,GAAKmC,eAAiBgD,GAC1B5F,GAAOuM,KAAM9L,EAAM+B,EAAMgG,IAKlB,IAAV41B,GAAgBp+B,GAAO+mB,SAAUtmB,KACrC+B,EAAOA,EAAKG,cACZqL,EAAQhO,GAAOq+B,UAAW77B,KACvBxC,GAAO8iB,KAAKthB,MAAM+e,KAAK1f,KAAM2B,GAASw7B,GAAWD,KAGtCx7B,SAAViG,EAaOwF,GAAS,OAASA,IAA6C,QAAnC3K,EAAM2K,EAAMjE,IAAKtJ,EAAM+B,IACvDa,GAGPA,EAAMrD,GAAO4G,KAAKC,KAAMpG,EAAM+B,GAGhB,MAAPa,EACNd,OACAc,GApBc,OAAVmF,EAGOwF,GAAS,OAASA,IAAoDzL,UAA1Cc,EAAM2K,EAAMuoB,IAAK91B,EAAM+H,EAAOhG,IAC9Da,GAGP5C,EAAK8Y,aAAc/W,EAAMgG,EAAQ,IAC1BA,OAPPxI,IAAOm+B,WAAY19B,EAAM+B,KAuB5B27B,WAAY,SAAU19B,EAAM+H,GAC3B,GAAIhG,GAAM87B,EACT59B,EAAI,EACJ69B,EAAY/1B,GAASA,EAAMhH,MAAOC,GAEnC,IAAK88B,GAA+B,IAAlB99B,EAAKP,SACtB,KAASsC,EAAO+7B,EAAU79B,MACzB49B,EAAWt+B,GAAOw+B,QAASh8B,IAAUA,EAGhCxC,GAAO8iB,KAAKthB,MAAM+e,KAAK1f,KAAM2B,GAE5B07B,IAAed,KAAoBa,GAAYp9B,KAAM2B,GACzD/B,EAAM69B,IAAa,EAInB79B,EAAMT,GAAOkE,UAAW,WAAa1B,IACpC/B,EAAM69B,IAAa,EAKrBt+B,GAAO6G,KAAMpG,EAAM+B,EAAM,IAG1B/B,EAAKwG,gBAAiBm2B,GAAkB56B,EAAO87B,IAKlDD,WACCt+B,MACCw2B,IAAK,SAAU91B,EAAM+H,GACpB,IAAM/D,GAAQi5B,YAAwB,UAAVl1B,GAAqBxI,GAAO+F,SAAStF,EAAM,SAAW,CAGjF,GAAIiL,GAAMjL,EAAK+H,KAKf,OAJA/H,GAAK8Y,aAAc,OAAQ/Q,GACtBkD,IACJjL,EAAK+H,MAAQkD,GAEPlD,QAQZw1B,IACCzH,IAAK,SAAU91B,EAAM+H,EAAOhG,GAa3B,MAZKgG,MAAU,EAEdxI,GAAOm+B,WAAY19B,EAAM+B,GACd07B,IAAed,KAAoBa,GAAYp9B,KAAM2B,GAEhE/B,EAAK8Y,cAAe6jB,IAAmBp9B,GAAOw+B,QAASh8B,IAAUA,EAAMA,GAIvE/B,EAAMT,GAAOkE,UAAW,WAAa1B,IAAW/B,EAAM+B,IAAS,EAGzDA,IAKTxC,GAAOuB,KAAMvB,GAAO8iB,KAAKthB,MAAM+e,KAAK2L,OAAO1qB,MAAO,QAAU,SAAUd,EAAG8B,GAExE,GAAIi8B,GAASjkB,GAAYhY,IAAUxC,GAAO4G,KAAKC,IAE/C2T,IAAYhY,GAAS07B,IAAed,KAAoBa,GAAYp9B,KAAM2B,GACzE,SAAU/B,EAAM+B,EAAMic,GACrB,GAAIpb,GAAKwE,CAUT,OATM4W,KAEL5W,EAAS2S,GAAYhY,GACrBgY,GAAYhY,GAASa,EACrBA,EAAqC,MAA/Bo7B,EAAQh+B,EAAM+B,EAAMic,GACzBjc,EAAKG,cACL,KACD6X,GAAYhY,GAASqF,GAEfxE,GAER,SAAU5C,EAAM+B,EAAMic,GACrB,MAAMA,GAAN,OACQhe,EAAMT,GAAOkE,UAAW,WAAa1B,IAC3CA,EAAKG,cACL,QAMCu7B,IAAgBd,KACrBp9B,GAAOq+B,UAAU71B,OAChB+tB,IAAK,SAAU91B,EAAM+H,EAAOhG,GAC3B,MAAKxC,IAAO+F,SAAUtF,EAAM,cAE3BA,EAAKkI,aAAeH,GAGbu1B,IAAYA,GAASxH,IAAK91B,EAAM+H,EAAOhG,MAO5C46B,KAILW,IACCxH,IAAK,SAAU91B,EAAM+H,EAAOhG,GAE3B,GAAIa,GAAM5C,EAAKqhB,iBAAkBtf,EAUjC,OATMa,IACL5C,EAAKi+B,iBACHr7B,EAAM5C,EAAKiG,cAAci4B,gBAAiBn8B,IAI7Ca,EAAImF,MAAQA,GAAS,GAGP,UAAThG,GAAoBgG,IAAU/H,EAAKmC,aAAcJ,GAC9CgG,EADR,SAOFgS,GAAW7W,GAAK6W,GAAWhY,KAAOgY,GAAWokB,OAC5C,SAAUn+B,EAAM+B,EAAMic,GACrB,GAAIpb,EACJ,OAAMob,GAAN,QACSpb,EAAM5C,EAAKqhB,iBAAkBtf,KAAyB,KAAda,EAAImF,MACnDnF,EAAImF,MACJ,MAKJxI,GAAO49B,SAASlY,QACf3b,IAAK,SAAUtJ,EAAM+B,GACpB,GAAIa,GAAM5C,EAAKqhB,iBAAkBtf,EACjC,OAAKa,IAAOA,EAAI0f,UACR1f,EAAImF,MADZ,QAID+tB,IAAKwH,GAASxH,KAKfv2B,GAAOq+B,UAAUQ,iBAChBtI,IAAK,SAAU91B,EAAM+H,EAAOhG,GAC3Bu7B,GAASxH,IAAK91B,EAAgB,KAAV+H,GAAe,EAAQA,EAAOhG,KAMpDxC,GAAOuB,MAAO,QAAS,UAAY,SAAUb,EAAG8B,GAC/CxC,GAAOq+B,UAAW77B,IACjB+zB,IAAK,SAAU91B,EAAM+H,GACpB,MAAe,KAAVA,GACJ/H,EAAK8Y,aAAc/W,EAAM,QAClBgG,GAFR,YASE/D,GAAQqE,QACb9I,GAAOq+B,UAAUv1B,OAChBiB,IAAK,SAAUtJ,GAId,MAAOA,GAAKqI,MAAMuiB,SAAW9oB,QAE9Bg0B,IAAK,SAAU91B,EAAM+H,GACpB,MAAS/H,GAAKqI,MAAMuiB,QAAU7iB,EAAQ,KAQzC,IAAIs2B,IAAa,6CAChBC,GAAa,eAEd/+B,IAAOsV,GAAGrR,QACTsI,KAAM,SAAU/J,EAAMgG,GACrB,MAAO4jB,IAAQ1sB,KAAMM,GAAOuM,KAAM/J,EAAMgG,EAAO0B,UAAUpK,OAAS,IAGnEk/B,WAAY,SAAUx8B,GAErB,MADAA,GAAOxC,GAAOw+B,QAASh8B,IAAUA,EAC1B9C,KAAK6B,KAAK,WAEhB,IACC7B,KAAM8C,GAASD,aACR7C,MAAM8C,GACZ,MAAOO,UAKZ/C,GAAOiE,QACNu6B,SACCS,MAAO,UACPC,QAAS,aAGV3yB,KAAM,SAAU9L,EAAM+B,EAAMgG,GAC3B,GAAInF,GAAK2K,EAAOmxB,EACff,EAAQ39B,EAAKP,QAGd,IAAMO,GAAkB,IAAV29B,GAAyB,IAAVA,GAAyB,IAAVA,EAY5C,MARAe,GAAmB,IAAVf,IAAgBp+B,GAAO+mB,SAAUtmB,GAErC0+B,IAEJ38B,EAAOxC,GAAOw+B,QAASh8B,IAAUA,EACjCwL,EAAQhO,GAAOy6B,UAAWj4B,IAGZD,SAAViG,EACGwF,GAAS,OAASA,IAAoDzL,UAA1Cc,EAAM2K,EAAMuoB,IAAK91B,EAAM+H,EAAOhG,IAChEa,EACE5C,EAAM+B,GAASgG,EAGXwF,GAAS,OAASA,IAA6C,QAAnC3K,EAAM2K,EAAMjE,IAAKtJ,EAAM+B,IACzDa,EACA5C,EAAM+B,IAITi4B,WACCpV,UACCtb,IAAK,SAAUtJ,GAId,GAAI2+B,GAAWp/B,GAAO4G,KAAKC,KAAMpG,EAAM,WAEvC,OAAO2+B,GACNC,SAAUD,EAAU,IACpBN,GAAWj+B,KAAMJ,EAAKsF,WAAcg5B,GAAWl+B,KAAMJ,EAAKsF,WAActF,EAAK2kB,KAC5E,EACA,QAQA3gB,GAAQ44B,gBAEbr9B,GAAOuB,MAAO,OAAQ,OAAS,SAAUb,EAAG8B,GAC3CxC,GAAOy6B,UAAWj4B,IACjBuH,IAAK,SAAUtJ,GACd,MAAOA,GAAKmC,aAAcJ,EAAM;KAS9BiC,GAAQ84B,cACbv9B,GAAOy6B,UAAU/xB,UAChBqB,IAAK,SAAUtJ,GACd,GAAI6gB,GAAS7gB,EAAK0H,UAUlB,OARKmZ,KACJA,EAAOkE,cAGFlE,EAAOnZ,YACXmZ,EAAOnZ,WAAWqd,eAGb,QAKVxlB,GAAOuB,MACN,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,mBACE,WACFvB,GAAOw+B,QAAS9+B,KAAKiD,eAAkBjD,OAIlC+E,GAAQ+4B,UACbx9B,GAAOw+B,QAAQhB,QAAU,WAM1B,IAAI8B,IAAS,aAEbt/B,IAAOsV,GAAGrR,QACTs7B,SAAU,SAAU/2B,GACnB,GAAIg3B,GAAS/+B,EAAMQ,EAAKw+B,EAAOhpB,EAAGipB,EACjCh/B,EAAI,EACJ8V,EAAM9W,KAAKI,OACX6/B,EAA2B,gBAAVn3B,IAAsBA,CAExC,IAAKxI,GAAOO,WAAYiI,GACvB,MAAO9I,MAAK6B,KAAK,SAAUkV,GAC1BzW,GAAQN,MAAO6/B,SAAU/2B,EAAM7H,KAAMjB,KAAM+W,EAAG/W,KAAK+hB,aAIrD,IAAKke,EAIJ,IAFAH,GAAYh3B,GAAS,IAAKhH,MAAOC,QAErB+U,EAAJ9V,EAASA,IAOhB,GANAD,EAAOf,KAAMgB,GACbO,EAAwB,IAAlBR,EAAKP,WAAoBO,EAAKghB,WACjC,IAAMhhB,EAAKghB,UAAY,KAAMhf,QAAS68B,GAAQ,KAChD,KAGU,CAEV,IADA7oB,EAAI,EACKgpB,EAAQD,EAAQ/oB,MACnBxV,EAAI8T,QAAS,IAAM0qB,EAAQ,KAAQ,IACvCx+B,GAAOw+B,EAAQ,IAKjBC,GAAa1/B,GAAOuI,KAAMtH,GACrBR,EAAKghB,YAAcie,IACvBj/B,EAAKghB,UAAYie,GAMrB,MAAOhgC,OAGRkgC,YAAa,SAAUp3B,GACtB,GAAIg3B,GAAS/+B,EAAMQ,EAAKw+B,EAAOhpB,EAAGipB,EACjCh/B,EAAI,EACJ8V,EAAM9W,KAAKI,OACX6/B,EAA+B,IAArBz1B,UAAUpK,QAAiC,gBAAV0I,IAAsBA,CAElE,IAAKxI,GAAOO,WAAYiI,GACvB,MAAO9I,MAAK6B,KAAK,SAAUkV,GAC1BzW,GAAQN,MAAOkgC,YAAap3B,EAAM7H,KAAMjB,KAAM+W,EAAG/W,KAAK+hB,aAGxD,IAAKke,EAGJ,IAFAH,GAAYh3B,GAAS,IAAKhH,MAAOC,QAErB+U,EAAJ9V,EAASA,IAQhB,GAPAD,EAAOf,KAAMgB,GAEbO,EAAwB,IAAlBR,EAAKP,WAAoBO,EAAKghB,WACjC,IAAMhhB,EAAKghB,UAAY,KAAMhf,QAAS68B,GAAQ,KAChD,IAGU,CAEV,IADA7oB,EAAI,EACKgpB,EAAQD,EAAQ/oB,MAExB,KAAQxV,EAAI8T,QAAS,IAAM0qB,EAAQ,MAAS,GAC3Cx+B,EAAMA,EAAIwB,QAAS,IAAMg9B,EAAQ,IAAK,IAKxCC,GAAal3B,EAAQxI,GAAOuI,KAAMtH,GAAQ,GACrCR,EAAKghB,YAAcie,IACvBj/B,EAAKghB,UAAYie,GAMrB,MAAOhgC,OAGRmgC,YAAa,SAAUr3B,EAAOs3B,GAC7B,GAAI//B,SAAcyI,EAElB,OAAyB,iBAAbs3B,IAAmC,WAAT//B,EAC9B+/B,EAAWpgC,KAAK6/B,SAAU/2B,GAAU9I,KAAKkgC,YAAap3B,GAItD9I,KAAK6B,KADRvB,GAAOO,WAAYiI,GACN,SAAU9H,GAC1BV,GAAQN,MAAOmgC,YAAar3B,EAAM7H,KAAKjB,KAAMgB,EAAGhB,KAAK+hB,UAAWqe,GAAWA,IAI5D,WAChB,GAAc,WAAT//B,EAOJ,IALA,GAAI0hB,GACH/gB,EAAI,EACJwmB,EAAOlnB,GAAQN,MACfqgC,EAAav3B,EAAMhH,MAAOC,QAElBggB,EAAYse,EAAYr/B,MAE3BwmB,EAAK8Y,SAAUve,GACnByF,EAAK0Y,YAAane,GAElByF,EAAKqY,SAAU9d,QAKN1hB,IAAS6F,IAAyB,YAAT7F,KAC/BL,KAAK+hB,WAETzhB,GAAOoH,MAAO1H,KAAM,gBAAiBA,KAAK+hB,WAO3C/hB,KAAK+hB,UAAY/hB,KAAK+hB,WAAajZ,KAAU,EAAQ,GAAKxI,GAAOoH,MAAO1H,KAAM,kBAAqB,OAKtGsgC,SAAU,SAAU3qB,GAInB,IAHA,GAAIoM,GAAY,IAAMpM,EAAW,IAChC3U,EAAI,EACJ+G,EAAI/H,KAAKI,OACE2H,EAAJ/G,EAAOA,IACd,GAA0B,IAArBhB,KAAKgB,GAAGR,WAAmB,IAAMR,KAAKgB,GAAG+gB,UAAY,KAAKhf,QAAQ68B,GAAQ,KAAKvqB,QAAS0M,IAAe,EAC3G,OAAO,CAIT,QAAO,KAUTzhB,GAAOuB,KAAM,0MAEqDgD,MAAM,KAAM,SAAU7D,EAAG8B,GAG1FxC,GAAOsV,GAAI9S,GAAS,SAAUF,EAAMgT,GACnC,MAAOpL,WAAUpK,OAAS,EACzBJ,KAAKwzB,GAAI1wB,EAAM,KAAMF,EAAMgT,GAC3B5V,KAAKovB,QAAStsB,MAIjBxC,GAAOsV,GAAGrR,QACTg8B,MAAO,SAAUC,EAAQC,GACxB,MAAOzgC,MAAK2yB,WAAY6N,GAAS5N,WAAY6N,GAASD,IAGvDE,KAAM,SAAU1S,EAAOprB,EAAMgT,GAC5B,MAAO5V,MAAKwzB,GAAIxF,EAAO,KAAMprB,EAAMgT,IAEpC+qB,OAAQ,SAAU3S,EAAOpY,GACxB,MAAO5V,MAAKsrB,IAAK0C,EAAO,KAAMpY,IAG/BgrB,SAAU,SAAUjrB,EAAUqY,EAAOprB,EAAMgT,GAC1C,MAAO5V,MAAKwzB,GAAIxF,EAAOrY,EAAU/S,EAAMgT,IAExCirB,WAAY,SAAUlrB,EAAUqY,EAAOpY,GAEtC,MAA4B,KAArBpL,UAAUpK,OAAeJ,KAAKsrB,IAAK3V,EAAU,MAAS3V,KAAKsrB,IAAK0C,EAAOrY,GAAY,KAAMC,KAKlG,IAAIkrB,IAAQxgC,GAAO+M,MAEf0zB,GAAS,KAITC,GAAe,kIAEnB1gC,IAAO8C,UAAY,SAAUR,GAE5B,GAAK7C,EAAOkhC,MAAQlhC,EAAOkhC,KAAKC,MAG/B,MAAOnhC,GAAOkhC,KAAKC,MAAOt+B,EAAO,GAGlC,IAAIu+B,GACHC,EAAQ,KACRC,EAAM/gC,GAAOuI,KAAMjG,EAAO,GAI3B,OAAOy+B,KAAQ/gC,GAAOuI,KAAMw4B,EAAIt+B,QAASi+B,GAAc,SAAU/Z,EAAOqa,EAAOC,EAAMt3B,GAQpF,MALKk3B,IAAmBG,IACvBF,EAAQ,GAIM,IAAVA,EACGna,GAIRka,EAAkBI,GAAQD,EAM1BF,IAAUn3B,GAASs3B,EAGZ,OAELC,SAAU,UAAYH,KACxB/gC,GAAOkU,MAAO,iBAAmB5R,IAKnCtC,GAAOmhC,SAAW,SAAU7+B,GAC3B,GAAIuZ,GAAKhI,CACT,KAAMvR,GAAwB,gBAATA,GACpB,MAAO,KAER,KACM7C,EAAO2hC,WACXvtB,EAAM,GAAIutB,WACVvlB,EAAMhI,EAAIwtB,gBAAiB/+B,EAAM,cAEjCuZ,EAAM,GAAIlH,eAAe,oBACzBkH,EAAIylB,MAAQ,QACZzlB,EAAI0lB,QAASj/B,IAEb,MAAOS,GACR8Y,EAAMtZ,OAKP,MAHMsZ,IAAQA,EAAItS,kBAAmBsS,EAAIlW,qBAAsB,eAAgB7F,QAC9EE,GAAOkU,MAAO,gBAAkB5R,GAE1BuZ,EAIR,IAEC2lB,IACAC,GAEAC,GAAQ,OACRC,GAAM,gBACNC,GAAW,gCAEXC,GAAiB,4DACjBC,GAAa,iBACbC,GAAY,QACZC,GAAO,4DAWPC,MAOA3vB,MAGA4vB,GAAW,KAAK79B,OAAO,IAIxB,KACCo9B,GAAezc,SAASI,KACvB,MAAOriB,IAGR0+B,GAAeniC,GAAS+F,cAAe,KACvCo8B,GAAarc,KAAO,GACpBqc,GAAeA,GAAarc,KAI7Boc,GAAeQ,GAAKh7B,KAAMy6B,GAAa9+B,mBAoOvC3C,GAAOiE,QAGNk+B,OAAQ,EAGRC,gBACAC,QAEA1vB,cACC2vB,IAAKb,GACL1hC,KAAM,MACNwiC,QAASV,GAAehhC,KAAM2gC,GAAc,IAC5CriC,QAAQ,EACRqjC,aAAa,EACblB,OAAO,EACPmB,YAAa,mDAabC,SACCtH,IAAK8G,GACLh6B,KAAM,aACNiuB,KAAM,YACNta,IAAK,4BACL8mB,KAAM,qCAGPzvB,UACC2I,IAAK,MACLsa,KAAM,OACNwM,KAAM,QAGP5uB,gBACC8H,IAAK,cACL3T,KAAM,eACNy6B,KAAM,gBAKPrvB,YAGCsvB,SAAU3hB,OAGV4hB,aAAa,EAGbC,YAAa9iC,GAAO8C,UAGpBigC,WAAY/iC,GAAOmhC,UAOpBzuB,aACC4vB,KAAK,EACL/8B,SAAS,IAOXy9B,UAAW,SAAUxwB,EAAQywB,GAC5B,MAAOA,GAGN1wB,EAAYA,EAAYC,EAAQxS,GAAO2S,cAAgBswB,GAGvD1wB,EAAYvS,GAAO2S,aAAcH,IAGnC0wB,cAAe1xB,EAA6BywB,IAC5CkB,cAAe3xB,EAA6Bc,IAG5C8wB,KAAM,SAAUd,EAAKlhC,GAmRpB,QAAS+N,GAAMk0B,EAAQC,EAAkBxwB,EAAWywB,GACnD,GAAI9vB,GAAW+vB,EAAStvB,EAAOV,EAAUiwB,EACxCC,EAAaJ,CAGC,KAAVrvB,IAKLA,EAAQ,EAGH0vB,GACJxG,aAAcwG,GAKfC,EAAYrhC,OAGZshC,EAAwBN,GAAW,GAGnCvxB,EAAM9P,WAAamhC,EAAS,EAAI,EAAI,EAGpC5vB,EAAY4vB,GAAU,KAAgB,IAATA,GAA2B,MAAXA,EAGxCvwB,IACJU,EAAWZ,EAAqBC,EAAGb,EAAOc,IAI3CU,EAAWD,EAAaV,EAAGW,EAAUxB,EAAOyB,GAGvCA,GAGCZ,EAAEixB,aACNL,EAAWzxB,EAAMqB,kBAAkB,iBAC9BowB,IACJzjC,GAAOoiC,aAAc2B,GAAaN,GAEnCA,EAAWzxB,EAAMqB,kBAAkB,QAC9BowB,IACJzjC,GAAOqiC,KAAM0B,GAAaN,IAKZ,MAAXJ,GAA6B,SAAXxwB,EAAE9S,KACxB2jC,EAAa,YAGS,MAAXL,EACXK,EAAa,eAIbA,EAAalwB,EAASS,MACtBuvB,EAAUhwB,EAASlR,KACnB4R,EAAQV,EAASU,MACjBT,GAAaS,KAKdA,EAAQwvB,GACHL,IAAWK,KACfA,EAAa,QACC,EAATL,IACJA,EAAS,KAMZrxB,EAAMqxB,OAASA,EACfrxB,EAAM0xB,YAAeJ,GAAoBI,GAAe,GAGnDjwB,EACJzD,EAASY,YAAaozB,GAAmBR,EAASE,EAAY1xB,IAE9DhC,EAASkB,WAAY8yB,GAAmBhyB,EAAO0xB,EAAYxvB,IAI5DlC,EAAMiyB,WAAYA,GAClBA,EAAa1hC,OAER2hC,GACJC,EAAmBrV,QAASrb,EAAY,cAAgB,aACrDzB,EAAOa,EAAGY,EAAY+vB,EAAUtvB,IAIpCkwB,EAAiB7a,SAAUya,GAAmBhyB,EAAO0xB,IAEhDQ,IACJC,EAAmBrV,QAAS,gBAAkB9c,EAAOa,MAE3C7S,GAAOmiC,QAChBniC,GAAOiC,MAAM6sB,QAAQ,cA3XJ,gBAARwT,KACXlhC,EAAUkhC,EACVA,EAAM//B,QAIPnB,EAAUA,KAEV,IACCm5B,GAEA75B,EAEAqjC,EAEAF,EAEAF,EAGAO,EAEAN,EAEAS,EAEAxxB,EAAI7S,GAAOgjC,aAAe5hC,GAE1B4iC,EAAkBnxB,EAAEtN,SAAWsN,EAE/BsxB,EAAqBtxB,EAAEtN,UAAay+B,EAAgB9jC,UAAY8jC,EAAgBnuB,QAC/E7V,GAAQgkC,GACRhkC,GAAOiC,MAER+N,EAAWhQ,GAAOiQ,WAClBm0B,EAAmBpkC,GAAOyoB,UAAU,eAEpCwb,EAAapxB,EAAEoxB,eAEfK,KACAC,KAEAtwB,EAAQ,EAERuwB,EAAW,WAEXxyB,GACC9P,WAAY,EAGZmR,kBAAmB,SAAUhR,GAC5B,GAAIb,EACJ,IAAe,IAAVyS,EAAc,CAClB,IAAMowB,EAEL,IADAA,KACS7iC,EAAQogC,GAAS56B,KAAM68B,IAC/BQ,EAAiB7iC,EAAM,GAAGmB,eAAkBnB,EAAO,EAGrDA,GAAQ6iC,EAAiBhiC,EAAIM,eAE9B,MAAgB,OAATnB,EAAgB,KAAOA,GAI/BijC,sBAAuB,WACtB,MAAiB,KAAVxwB,EAAc4vB,EAAwB,MAI9Ca,iBAAkB,SAAUliC,EAAMgG,GACjC,GAAIm8B,GAAQniC,EAAKG,aAKjB,OAJMsR,KACLzR,EAAO+hC,EAAqBI,GAAUJ,EAAqBI,IAAWniC,EACtE8hC,EAAgB9hC,GAASgG,GAEnB9I,MAIRklC,iBAAkB,SAAU7kC,GAI3B,MAHMkU,KACLpB,EAAEO,SAAWrT,GAEPL,MAIRukC,WAAY,SAAU3/B,GACrB,GAAIugC,EACJ,IAAKvgC,EACJ,GAAa,EAAR2P,EACJ,IAAM4wB,IAAQvgC,GAEb2/B,EAAYY,IAAWZ,EAAYY,GAAQvgC,EAAKugC,QAIjD7yB,GAAMrD,OAAQrK,EAAK0N,EAAMqxB,QAG3B,OAAO3jC,OAIRolC,MAAO,SAAUpB,GAChB,GAAIqB,GAAYrB,GAAcc,CAK9B,OAJKZ,IACJA,EAAUkB,MAAOC,GAElB51B,EAAM,EAAG41B,GACFrlC,MAwCV,IAnCAsQ,EAASa,QAASmB,GAAQV,SAAW8yB,EAAiBt8B,IACtDkK,EAAMwxB,QAAUxxB,EAAM7C,KACtB6C,EAAMkC,MAAQlC,EAAMT,KAMpBsB,EAAEyvB,MAAUA,GAAOzvB,EAAEyvB,KAAOb,IAAiB,IAAKh/B,QAASi/B,GAAO,IAAKj/B,QAASs/B,GAAWP,GAAc,GAAM,MAG/G3uB,EAAE9S,KAAOqB,EAAQ4jC,QAAU5jC,EAAQrB,MAAQ8S,EAAEmyB,QAAUnyB,EAAE9S,KAGzD8S,EAAEhB,UAAY7R,GAAOuI,KAAMsK,EAAEjB,UAAY,KAAMjP,cAAcnB,MAAOC,MAAiB,IAG/D,MAAjBoR,EAAEoyB,cACN1K,EAAQyH,GAAKh7B,KAAM6L,EAAEyvB,IAAI3/B,eACzBkQ,EAAEoyB,eAAkB1K,GACjBA,EAAO,KAAQiH,GAAc,IAAOjH,EAAO,KAAQiH,GAAc,KAChEjH,EAAO,KAAwB,UAAfA,EAAO,GAAkB,KAAO,WAC/CiH,GAAc,KAA+B,UAAtBA,GAAc,GAAkB,KAAO,UAK/D3uB,EAAEvQ,MAAQuQ,EAAE2vB,aAAiC,gBAAX3vB,GAAEvQ,OACxCuQ,EAAEvQ,KAAOtC,GAAOo0B,MAAOvhB,EAAEvQ,KAAMuQ,EAAEwB,cAIlCtC,EAA+BkwB,GAAYpvB,EAAGzR,EAAS4Q,GAGxC,IAAViC,EACJ,MAAOjC,EAIRkyB,GAAcrxB,EAAE1T,OAGX+kC,GAAmC,IAApBlkC,GAAOmiC,UAC1BniC,GAAOiC,MAAM6sB,QAAQ,aAItBjc,EAAE9S,KAAO8S,EAAE9S,KAAKuK,cAGhBuI,EAAEqyB,YAAcpD,GAAWjhC,KAAMgS,EAAE9S,MAInCgkC,EAAWlxB,EAAEyvB,IAGPzvB,EAAEqyB,aAGFryB,EAAEvQ,OACNyhC,EAAalxB,EAAEyvB,MAAS7B,GAAO5/B,KAAMkjC,GAAa,IAAM,KAAQlxB,EAAEvQ,WAE3DuQ,GAAEvQ,MAILuQ,EAAEnP,SAAU,IAChBmP,EAAEyvB,IAAMX,GAAI9gC,KAAMkjC,GAGjBA,EAASthC,QAASk/B,GAAK,OAASnB,MAGhCuD,GAAatD,GAAO5/B,KAAMkjC,GAAa,IAAM,KAAQ,KAAOvD,OAK1D3tB,EAAEixB,aACD9jC,GAAOoiC,aAAc2B,IACzB/xB,EAAM0yB,iBAAkB,oBAAqB1kC,GAAOoiC,aAAc2B,IAE9D/jC,GAAOqiC,KAAM0B,IACjB/xB,EAAM0yB,iBAAkB,gBAAiB1kC,GAAOqiC,KAAM0B,MAKnDlxB,EAAEvQ,MAAQuQ,EAAEqyB,YAAcryB,EAAE4vB,eAAgB,GAASrhC,EAAQqhC,cACjEzwB,EAAM0yB,iBAAkB,eAAgB7xB,EAAE4vB,aAI3CzwB,EAAM0yB,iBACL,SACA7xB,EAAEhB,UAAW,IAAOgB,EAAE6vB,QAAS7vB,EAAEhB,UAAU,IAC1CgB,EAAE6vB,QAAS7vB,EAAEhB,UAAU,KAA8B,MAArBgB,EAAEhB,UAAW,GAAc,KAAOqwB,GAAW,WAAa,IAC1FrvB,EAAE6vB,QAAS,KAIb,KAAMhiC,IAAKmS,GAAE0wB,QACZvxB,EAAM0yB,iBAAkBhkC,EAAGmS,EAAE0wB,QAAS7iC,GAIvC,IAAKmS,EAAEsyB,aAAgBtyB,EAAEsyB,WAAWxkC,KAAMqjC,EAAiBhyB,EAAOa,MAAQ,GAAmB,IAAVoB,GAElF,MAAOjC,GAAM8yB,OAIdN,GAAW,OAGX,KAAM9jC,KAAO8iC,QAAS,EAAGtvB,MAAO,EAAG5C,SAAU,GAC5CU,EAAOtR,GAAKmS,EAAGnS,GAOhB,IAHAkjC,EAAY7xB,EAA+BO,GAAYO,EAAGzR,EAAS4Q,GAK5D,CACNA,EAAM9P,WAAa,EAGdgiC,GACJC,EAAmBrV,QAAS,YAAc9c,EAAOa,IAG7CA,EAAEyuB,OAASzuB,EAAEqqB,QAAU,IAC3ByG,EAAe92B,WAAW,WACzBmF,EAAM8yB,MAAM,YACVjyB,EAAEqqB,SAGN,KACCjpB,EAAQ,EACR2vB,EAAUwB,KAAMd,EAAgBn1B,GAC/B,MAAQpM,GAET,KAAa,EAARkR,GAIJ,KAAMlR,EAHNoM,GAAM,GAAIpM,QArBZoM,GAAM,GAAI,eA8IX,OAAO6C,IAGRqzB,QAAS,SAAU/C,EAAKhgC,EAAM6T,GAC7B,MAAOnW,IAAO+J,IAAKu4B,EAAKhgC,EAAM6T,EAAU,SAGzCmvB,UAAW,SAAUhD,EAAKnsB,GACzB,MAAOnW,IAAO+J,IAAKu4B,EAAK//B,OAAW4T,EAAU,aAI/CnW,GAAOuB,MAAQ,MAAO,QAAU,SAAUb,EAAGskC,GAC5ChlC,GAAQglC,GAAW,SAAU1C,EAAKhgC,EAAM6T,EAAUpW,GAQjD,MANKC,IAAOO,WAAY+B,KACvBvC,EAAOA,GAAQoW,EACfA,EAAW7T,EACXA,EAAOC,QAGDvC,GAAOojC,MACbd,IAAKA,EACLviC,KAAMilC,EACNpzB,SAAU7R,EACVuC,KAAMA,EACNkhC,QAASrtB,OAMZnW,GAAOuB,MAAQ,YAAa,WAAY,eAAgB,YAAa,cAAe,YAAc,SAAUb,EAAGX,GAC9GC,GAAOsV,GAAIvV,GAAS,SAAUuV,GAC7B,MAAO5V,MAAKwzB,GAAInzB,EAAMuV,MAKxBtV,GAAOy2B,SAAW,SAAU6L,GAC3B,MAAOtiC,IAAOojC,MACbd,IAAKA,EACLviC,KAAM,MACN6R,SAAU,SACV0vB,OAAO,EACPniC,QAAQ,EACRomC,UAAU,KAKZvlC,GAAOsV,GAAGrR,QACTuhC,QAAS,SAAUrP,GAClB,GAAKn2B,GAAOO,WAAY41B,GACvB,MAAOz2B,MAAK6B,KAAK,SAASb,GACzBV,GAAON,MAAM8lC,QAASrP,EAAKx1B,KAAKjB,KAAMgB,KAIxC,IAAKhB,KAAK,GAAK,CAEd,GAAI81B,GAAOx1B,GAAQm2B,EAAMz2B,KAAK,GAAGgH,eAAgB4P,GAAG,GAAGQ,OAAM,EAExDpX,MAAK,GAAGyI,YACZqtB,EAAKO,aAAcr2B,KAAK,IAGzB81B,EAAKlxB,IAAI,WAGR,IAFA,GAAI7D,GAAOf,KAEHe,EAAK+F,YAA2C,IAA7B/F,EAAK+F,WAAWtG,UAC1CO,EAAOA,EAAK+F,UAGb,OAAO/F,KACLm1B,OAAQl2B,MAGZ,MAAOA,OAGR+lC,UAAW,SAAUtP,GACpB,MACQz2B,MAAK6B,KADRvB,GAAOO,WAAY41B,GACN,SAASz1B,GACzBV,GAAON,MAAM+lC,UAAWtP,EAAKx1B,KAAKjB,KAAMgB,KAIzB,WAChB,GAAIwmB,GAAOlnB,GAAQN,MAClBwT,EAAWgU,EAAKhU,UAEZA,GAASpT,OACboT,EAASsyB,QAASrP,GAGlBjP,EAAK0O,OAAQO,MAKhBX,KAAM,SAAUW,GACf,GAAI51B,GAAaP,GAAOO,WAAY41B,EAEpC,OAAOz2B,MAAK6B,KAAK,SAASb,GACzBV,GAAQN,MAAO8lC,QAASjlC,EAAa41B,EAAKx1B,KAAKjB,KAAMgB,GAAKy1B,MAI5DuP,OAAQ,WACP,MAAOhmC,MAAK4hB,SAAS/f,KAAK,WACnBvB,GAAO+F,SAAUrG,KAAM,SAC5BM,GAAQN,MAAO02B,YAAa12B,KAAKoG,cAEhC0G,SAKLxM,GAAO8iB,KAAKwD,QAAQ1b,OAAS,SAAUnK,GAGtC,MAAOA,GAAKqL,aAAe,GAAKrL,EAAKsL,cAAgB,IAClDtH,GAAQ8zB,yBACiE,UAAxE93B,EAAKqI,OAASrI,EAAKqI,MAAMG,SAAYjJ,GAAOmJ,IAAK1I,EAAM,aAG5DT,GAAO8iB,KAAKwD,QAAQqf,QAAU,SAAUllC,GACvC,OAAQT,GAAO8iB,KAAKwD,QAAQ1b,OAAQnK,GAMrC,IAAImlC,IAAM,OACTrxB,GAAW,QACXsxB,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,oCAgChB/lC,IAAOo0B,MAAQ,SAAU1Z,EAAGrG,GAC3B,GAAID,GACHvB,KACA/K,EAAM,SAAUzF,EAAKmG,GAEpBA,EAAQxI,GAAOO,WAAYiI,GAAUA,IAAqB,MAATA,EAAgB,GAAKA,EACtEqK,EAAGA,EAAE/S,QAAWkmC,mBAAoB3jC,GAAQ,IAAM2jC,mBAAoBx9B,GASxE,IALqBjG,SAAhB8R,IACJA,EAAcrU,GAAO2S,cAAgB3S,GAAO2S,aAAa0B,aAIrDrU,GAAOoE,QAASsW,IAASA,EAAE7E,SAAW7V,GAAO+W,cAAe2D,GAEhE1a,GAAOuB,KAAMmZ,EAAG,WACf5S,EAAKpI,KAAK8C,KAAM9C,KAAK8I,aAMtB,KAAM4L,IAAUsG,GACfvG,EAAaC,EAAQsG,EAAGtG,GAAUC,EAAavM,EAKjD,OAAO+K,GAAE8G,KAAM,KAAMlX,QAASmjC,GAAK,MAGpC5lC,GAAOsV,GAAGrR,QACTgiC,UAAW,WACV,MAAOjmC,IAAOo0B,MAAO10B,KAAKwmC,mBAE3BA,eAAgB,WACf,MAAOxmC,MAAK4E,IAAI,WAEf,GAAIlE,GAAWJ,GAAOuM,KAAM7M,KAAM,WAClC,OAAOU,GAAWJ,GAAOyX,UAAWrX,GAAaV,OAEjDoB,OAAO,WACP,GAAIf,GAAOL,KAAKK,IAEhB,OAAOL,MAAK8C,OAASxC,GAAQN,MAAOynB,GAAI,cACvC4e,GAAallC,KAAMnB,KAAKqG,YAAe+/B,GAAgBjlC,KAAMd,KAC3DL,KAAK2G,UAAYF,GAAetF,KAAMd,MAEzCuE,IAAI,SAAU5D,EAAGD,GACjB,GAAIiL,GAAM1L,GAAQN,MAAOgM,KAEzB,OAAc,OAAPA,EACN,KACA1L,GAAOoE,QAASsH,GACf1L,GAAOsE,IAAKoH,EAAK,SAAUA,GAC1B,OAASlJ,KAAM/B,EAAK+B,KAAMgG,MAAOkD,EAAIjJ,QAASojC,GAAO,YAEpDrjC,KAAM/B,EAAK+B,KAAMgG,MAAOkD,EAAIjJ,QAASojC,GAAO,WAC9C97B,SAOL/J,GAAO2S,aAAawzB,IAA+B5jC,SAAzB9C,EAAOkV,cAEhC,WAGC,OAAQjV,KAAK6iC,SAQZ,wCAAwC1hC,KAAMnB,KAAKK,OAEnDyU,KAAuBE,KAGzBF,CAED,IAAI4xB,IAAQ,EACXC,MACAC,GAAetmC,GAAO2S,aAAawzB,KAI/B1mC,GAAOkV,eACX3U,GAAQP,GAASyzB,GAAI,SAAU,WAC9B,IAAM,GAAI7wB,KAAOgkC,IAChBA,GAAchkC,GAAOE,QAAW,KAMnCkC,GAAQ8hC,OAASD,IAAkB,mBAAqBA,IACxDA,GAAe7hC,GAAQ2+B,OAASkD,GAG3BA,IAEJtmC,GAAOmjC,cAAc,SAAU/hC,GAE9B,IAAMA,EAAQ6jC,aAAexgC,GAAQ8hC,KAAO,CAE3C,GAAIpwB,EAEJ,QACCivB,KAAM,SAAU7B,EAASjyB,GACxB,GAAI5Q,GACHylC,EAAM/kC,EAAQ+kC,MACdxiC,IAAOyiC,EAMR,IAHAD,EAAIlF,KAAM7/B,EAAQrB,KAAMqB,EAAQkhC,IAAKlhC,EAAQkgC,MAAOlgC,EAAQolC,SAAUplC,EAAQ8kB,UAGzE9kB,EAAQqlC,UACZ,IAAM/lC,IAAKU,GAAQqlC,UAClBN,EAAKzlC,GAAMU,EAAQqlC,UAAW/lC,EAK3BU,GAAQgS,UAAY+yB,EAAIvB,kBAC5BuB,EAAIvB,iBAAkBxjC,EAAQgS,UAQzBhS,EAAQ6jC,aAAgB1B,EAAQ,sBACrCA,EAAQ,oBAAsB,iBAI/B,KAAM7iC,IAAK6iC,GAOYhhC,SAAjBghC,EAAS7iC,IACbylC,EAAIzB,iBAAkBhkC,EAAG6iC,EAAS7iC,GAAM,GAO1CylC,GAAIf,KAAQhkC,EAAQ8jC,YAAc9jC,EAAQkB,MAAU,MAGpD6T,EAAW,SAAUzU,EAAGglC,GACvB,GAAIrD,GAAQK,EAAY5wB,CAGxB,IAAKqD,IAAcuwB,GAA8B,IAAnBP,EAAIjkC,YAOjC,SALOmkC,IAAc1iC,GACrBwS,EAAW5T,OACX4jC,EAAIQ,mBAAqB3mC,GAAOgE,KAG3B0iC,EACoB,IAAnBP,EAAIjkC,YACRikC,EAAIrB,YAEC,CACNhyB,KACAuwB,EAAS8C,EAAI9C,OAKoB,gBAArB8C,GAAIS,eACf9zB,EAAU5K,KAAOi+B,EAAIS,aAKtB,KACClD,EAAayC,EAAIzC,WAChB,MAAO3gC,GAER2gC,EAAa,GAQRL,IAAUjiC,EAAQmhC,SAAYnhC,EAAQ6jC,YAGrB,OAAX5B,IACXA,EAAS,KAHTA,EAASvwB,EAAU5K,KAAO,IAAM,IAS9B4K,GACJxB,EAAU+xB,EAAQK,EAAY5wB,EAAWqzB,EAAI1B,0BAIzCrjC,EAAQkgC,MAGiB,IAAnB6E,EAAIjkC,WAGf2K,WAAYsJ,GAGZgwB,EAAIQ,mBAAqBN,GAAc1iC,GAAOwS,EAP9CA,KAWF2uB,MAAO,WACD3uB,GACJA,EAAU5T,QAAW,QAyB3BvC,GAAOgjC,WACNN,SACCmE,OAAQ,6FAET3zB,UACC2zB,OAAQ,uBAETvzB,YACCwzB,cAAe,SAAU5+B,GAExB,MADAlI,IAAOsX,WAAYpP,GACZA,MAMVlI,GAAOkjC,cAAe,SAAU,SAAUrwB,GACxBtQ,SAAZsQ,EAAEnP,QACNmP,EAAEnP,OAAQ,GAENmP,EAAEoyB,cACNpyB,EAAE9S,KAAO,MACT8S,EAAE1T,QAAS,KAKba,GAAOmjC,cAAe,SAAU,SAAStwB,GAGxC,GAAKA,EAAEoyB,YAAc,CAEpB,GAAI4B,GACHE,EAAOznC,GAASynC,MAAQ/mC,GAAO,QAAQ,IAAMV,GAASiK,eAEvD,QAEC67B,KAAM,SAAU1jC,EAAGyU,GAElB0wB,EAASvnC,GAAS+F,cAAc,UAEhCwhC,EAAOvF,OAAQ,EAEVzuB,EAAEm0B,gBACNH,EAAOI,QAAUp0B,EAAEm0B,eAGpBH,EAAOv/B,IAAMuL,EAAEyvB,IAGfuE,EAAOK,OAASL,EAAOF,mBAAqB,SAAUjlC,EAAGglC,IAEnDA,IAAYG,EAAO3kC,YAAc,kBAAkBrB,KAAMgmC,EAAO3kC,eAGpE2kC,EAAOK,OAASL,EAAOF,mBAAqB,KAGvCE,EAAO1+B,YACX0+B,EAAO1+B,WAAWkS,YAAawsB,GAIhCA,EAAS,KAGHH,GACLvwB,EAAU,IAAK,aAOlB4wB,EAAKhR,aAAc8Q,EAAQE,EAAKvgC,aAGjCs+B,MAAO,WACD+B,GACJA,EAAOK,OAAQ3kC,QAAW,OAU/B,IAAI4kC,OACHC,GAAS,mBAGVpnC,IAAOgjC,WACNqE,MAAO,WACPC,cAAe,WACd,GAAInxB,GAAWgxB,GAAatjC,OAAW7D,GAAOwD,QAAU,IAAQg9B,IAEhE,OADA9gC,MAAMyW,IAAa,EACZA,KAKTnW,GAAOkjC,cAAe,aAAc,SAAUrwB,EAAG00B,EAAkBv1B,GAElE,GAAIw1B,GAAcC,EAAaC,EAC9BC,EAAW90B,EAAEw0B,SAAU,IAAWD,GAAOvmC,KAAMgS,EAAEyvB,KAChD,MACkB,gBAAXzvB,GAAEvQ,QAAwBuQ,EAAE4vB,aAAe,IAAK1tB,QAAQ,sCAAwCqyB,GAAOvmC,KAAMgS,EAAEvQ,OAAU,OAIlI,OAAKqlC,IAAiC,UAArB90B,EAAEhB,UAAW,IAG7B21B,EAAe30B,EAAEy0B,cAAgBtnC,GAAOO,WAAYsS,EAAEy0B,eACrDz0B,EAAEy0B,gBACFz0B,EAAEy0B,cAGEK,EACJ90B,EAAG80B,GAAa90B,EAAG80B,GAAWllC,QAAS2kC,GAAQ,KAAOI,GAC3C30B,EAAEw0B,SAAU,IACvBx0B,EAAEyvB,MAAS7B,GAAO5/B,KAAMgS,EAAEyvB,KAAQ,IAAM,KAAQzvB,EAAEw0B,MAAQ,IAAMG,GAIjE30B,EAAES,WAAW,eAAiB,WAI7B,MAHMo0B,IACL1nC,GAAOkU,MAAOszB,EAAe,mBAEvBE,EAAmB,IAI3B70B,EAAEhB,UAAW,GAAM,OAGnB41B,EAAchoC,EAAQ+nC,GACtB/nC,EAAQ+nC,GAAiB,WACxBE,EAAoBx9B,WAIrB8H,EAAMrD,OAAO,WAEZlP,EAAQ+nC,GAAiBC,EAGpB50B,EAAG20B,KAEP30B,EAAEy0B,cAAgBC,EAAiBD,cAGnCH,GAAanhC,KAAMwhC,IAIfE,GAAqB1nC,GAAOO,WAAYknC,IAC5CA,EAAaC,EAAmB,IAGjCA,EAAoBD,EAAcllC,SAI5B,UAtDR,SAgEDvC,GAAOqnB,UAAY,SAAU/kB,EAAMiD,EAASqiC,GAC3C,IAAMtlC,GAAwB,gBAATA,GACpB,MAAO,KAEgB,kBAAZiD,KACXqiC,EAAcriC,EACdA,GAAU,GAEXA,EAAUA,GAAWjG,EAErB,IAAIuoC,GAAS5gB,GAAWjgB,KAAM1E,GAC7BgzB,GAAWsS,KAGZ,OAAKC,IACKtiC,EAAQF,cAAewiC,EAAO,MAGxCA,EAAS7nC,GAAOq1B,eAAiB/yB,GAAQiD,EAAS+vB,GAE7CA,GAAWA,EAAQx1B,QACvBE,GAAQs1B,GAAUlM,SAGZppB,GAAOiG,SAAW4hC,EAAO/hC,aAKjC,IAAIgiC,IAAQ9nC,GAAOsV,GAAGoc,IAKtB1xB,IAAOsV,GAAGoc,KAAO,SAAU4Q,EAAKyF,EAAQ5xB,GACvC,GAAoB,gBAARmsB,IAAoBwF,GAC/B,MAAOA,IAAM79B,MAAOvK,KAAMwK,UAG3B,IAAImL,GAAU7B,EAAUzT,EACvBmnB,EAAOxnB,KACPsrB,EAAMsX,EAAIvtB,QAAQ,IA+CnB,OA7CKiW,IAAO,IACX3V,EAAWrV,GAAOuI,KAAM+5B,EAAI/3B,MAAOygB,EAAKsX,EAAIxiC,SAC5CwiC,EAAMA,EAAI/3B,MAAO,EAAGygB,IAIhBhrB,GAAOO,WAAYwnC,IAGvB5xB,EAAW4xB,EACXA,EAASxlC,QAGEwlC,GAA4B,gBAAXA,KAC5BhoC,EAAO,QAIHmnB,EAAKpnB,OAAS,GAClBE,GAAOojC,MACNd,IAAKA,EAGLviC,KAAMA,EACN6R,SAAU,OACVtP,KAAMylC,IACJ54B,KAAK,SAAUy3B,GAGjBpzB,EAAWtJ,UAEXgd,EAAKiP,KAAM9gB,EAIVrV,GAAO,SAAS41B,OAAQ51B,GAAOqnB,UAAWuf,IAAiBhgC,KAAMyO,GAGjEuxB,KAECt1B,SAAU6E,GAAY,SAAUnE,EAAOqxB,GACzCnc,EAAK3lB,KAAM4U,EAAU3C,IAAcxB,EAAM40B,aAAcvD,EAAQrxB,MAI1DtS,MAMRM,GAAO8iB,KAAKwD,QAAQ0hB,SAAW,SAAUvnC,GACxC,MAAOT,IAAOQ,KAAKR,GAAOm8B,OAAQ,SAAU7mB,GAC3C,MAAO7U,KAAS6U,EAAG7U,OACjBX,OAOJ,IAAI+e,IAAUpf,EAAOH,SAASiK,eAa9BvJ,IAAOioC,QACNC,UAAW,SAAUznC,EAAMW,EAASV,GACnC,GAAIynC,GAAaC,EAASC,EAAWC,EAAQC,EAAWC,EAAYC,EACnEzP,EAAWh5B,GAAOmJ,IAAK1I,EAAM,YAC7BioC,EAAU1oC,GAAQS,GAClBoN,IAGiB,YAAbmrB,IACJv4B,EAAKqI,MAAMkwB,SAAW,YAGvBuP,EAAYG,EAAQT,SACpBI,EAAYroC,GAAOmJ,IAAK1I,EAAM,OAC9B+nC,EAAaxoC,GAAOmJ,IAAK1I,EAAM,QAC/BgoC,GAAmC,aAAbzP,GAAwC,UAAbA,IAChDh5B,GAAOe,QAAQ,QAAUsnC,EAAWG,IAAiB,GAGjDC,GACJN,EAAcO,EAAQ1P,WACtBsP,EAASH,EAAY5mB,IACrB6mB,EAAUD,EAAY5Q,OAEtB+Q,EAASj8B,WAAYg8B,IAAe,EACpCD,EAAU/7B,WAAYm8B,IAAgB,GAGlCxoC,GAAOO,WAAYa,KACvBA,EAAUA,EAAQT,KAAMF,EAAMC,EAAG6nC,IAGd,MAAfnnC,EAAQmgB,MACZ1T,EAAM0T,IAAQngB,EAAQmgB,IAAMgnB,EAAUhnB,IAAQ+mB,GAE1B,MAAhBlnC,EAAQm2B,OACZ1pB,EAAM0pB,KAASn2B,EAAQm2B,KAAOgR,EAAUhR,KAAS6Q,GAG7C,SAAWhnC,GACfA,EAAQunC,MAAMhoC,KAAMF,EAAMoN,GAE1B66B,EAAQv/B,IAAK0E,KAKhB7N,GAAOsV,GAAGrR,QACTgkC,OAAQ,SAAU7mC,GACjB,GAAK8I,UAAUpK,OACd,MAAmByC,UAAZnB,EACN1B,KACAA,KAAK6B,KAAK,SAAUb,GACnBV,GAAOioC,OAAOC,UAAWxoC,KAAM0B,EAASV,IAI3C,IAAIme,GAAS+pB,EACZC,GAAQtnB,IAAK,EAAGgW,KAAM,GACtB92B,EAAOf,KAAM,GACbmJ,EAAMpI,GAAQA,EAAKiG,aAEpB,IAAMmC,EAON,MAHAgW,GAAUhW,EAAIU,gBAGRvJ,GAAOiZ,SAAU4F,EAASpe,UAMpBA,GAAKqoC,wBAA0BljC,KAC1CijC,EAAMpoC,EAAKqoC,yBAEZF,EAAMh0B,EAAW/L,IAEhB0Y,IAAKsnB,EAAItnB,KAASqnB,EAAIG,aAAelqB,EAAQyS,YAAiBzS,EAAQ0S,WAAc,GACpFgG,KAAMsR,EAAItR,MAASqR,EAAII,aAAenqB,EAAQqS,aAAiBrS,EAAQsS,YAAc,KAX9E0X,GAeT7P,SAAU,WACT,GAAMt5B,KAAM,GAAZ,CAIA,GAAIupC,GAAchB,EACjBiB,GAAiB3nB,IAAK,EAAGgW,KAAM,GAC/B92B,EAAOf,KAAM,EAwBd,OArBwC,UAAnCM,GAAOmJ,IAAK1I,EAAM,YAEtBwnC,EAASxnC,EAAKqoC,yBAGdG,EAAevpC,KAAKupC,eAGpBhB,EAASvoC,KAAKuoC,SACRjoC,GAAO+F,SAAUkjC,EAAc,GAAK,UACzCC,EAAeD,EAAahB,UAI7BiB,EAAa3nB,KAAQvhB,GAAOmJ,IAAK8/B,EAAc,GAAK,kBAAkB,GACtEC,EAAa3R,MAAQv3B,GAAOmJ,IAAK8/B,EAAc,GAAK,mBAAmB,KAOvE1nB,IAAM0mB,EAAO1mB,IAAO2nB,EAAa3nB,IAAMvhB,GAAOmJ,IAAK1I,EAAM,aAAa,GACtE82B,KAAM0Q,EAAO1Q,KAAO2R,EAAa3R,KAAOv3B,GAAOmJ,IAAK1I,EAAM,cAAc,MAI1EwoC,aAAc,WACb,MAAOvpC,MAAK4E,IAAI,WAGf,IAFA,GAAI2kC,GAAevpC,KAAKupC,cAAgBpqB,GAEhCoqB,IAAmBjpC,GAAO+F,SAAUkjC,EAAc,SAAuD,WAA3CjpC,GAAOmJ,IAAK8/B,EAAc,aAC/FA,EAAeA,EAAaA,YAE7B,OAAOA,IAAgBpqB,QAM1B7e,GAAOuB,MAAQ2vB,WAAY,cAAeI,UAAW,eAAiB,SAAU0T,EAAQz4B,GACvF,GAAIgV,GAAM,IAAI1gB,KAAM0L,EAEpBvM,IAAOsV,GAAI0vB,GAAW,SAAUt5B,GAC/B,MAAO0gB,IAAQ1sB,KAAM,SAAUe,EAAMukC,EAAQt5B,GAC5C,GAAIk9B,GAAMh0B,EAAWnU,EAErB,OAAa8B,UAARmJ,EACGk9B,EAAOr8B,IAAQq8B,GAAOA,EAAKr8B,GACjCq8B,EAAItpC,SAASiK,gBAAiBy7B,GAC9BvkC,EAAMukC,QAGH4D,EACJA,EAAIO,SACF5nB,EAAYvhB,GAAQ4oC,GAAM1X,aAApBxlB,EACP6V,EAAM7V,EAAM1L,GAAQ4oC,GAAMtX,aAI3B7wB,EAAMukC,GAAWt5B,IAEhBs5B,EAAQt5B,EAAKxB,UAAUpK,OAAQ,SAQpCE,GAAOuB,MAAQ,MAAO,QAAU,SAAUb,EAAG6L,GAC5CvM,GAAOyP,SAAUlD,GAAS3C,EAAcnF,GAAQ+zB,cAC/C,SAAU/3B,EAAMy2B,GACf,MAAKA,IACJA,EAAWhrB,GAAQzL,EAAM8L,GAElBJ,GAAUtL,KAAMq2B,GACtBl3B,GAAQS,GAAOu4B,WAAYzsB,GAAS,KACpC2qB,GALF,WAaHl3B,GAAOuB,MAAQ6nC,OAAQ,SAAUC,MAAO,SAAW,SAAU7mC,EAAMzC,GAClEC,GAAOuB,MAAQ44B,QAAS,QAAU33B,EAAM+D,QAASxG,EAAM,GAAI,QAAUyC,GAAQ,SAAU8mC,EAAcC,GAEpGvpC,GAAOsV,GAAIi0B,GAAa,SAAUrP,EAAQ1xB,GACzC,GAAI6jB,GAAYniB,UAAUpK,SAAYwpC,GAAkC,iBAAXpP,IAC5D3uB,EAAQ+9B,IAAkBpP,KAAW,GAAQ1xB,KAAU,EAAO,SAAW,SAE1E,OAAO4jB,IAAQ1sB,KAAM,SAAUe,EAAMV,EAAMyI,GAC1C,GAAIK,EAEJ,OAAK7I,IAAOC,SAAUQ,GAIdA,EAAKnB,SAASiK,gBAAiB,SAAW/G,GAI3B,IAAlB/B,EAAKP,UACT2I,EAAMpI,EAAK8I,gBAIJ6B,KAAKC,IACX5K,EAAKuI,KAAM,SAAWxG,GAAQqG,EAAK,SAAWrG,GAC9C/B,EAAKuI,KAAM,SAAWxG,GAAQqG,EAAK,SAAWrG,GAC9CqG,EAAK,SAAWrG,KAIDD,SAAViG,EAENxI,GAAOmJ,IAAK1I,EAAMV,EAAMwL,GAGxBvL,GAAO8I,MAAOrI,EAAMV,EAAMyI,EAAO+C,IAChCxL,EAAMssB,EAAY6N,EAAS33B,OAAW8pB,EAAW,WAOvDrsB,GAAOsV,GAAGk0B,KAAO,WAChB,MAAO9pC,MAAKI,QAGbE,GAAOsV,GAAGm0B,QAAUzpC,GAAOsV,GAAG2S,QAkBP,kBAAXyhB,SAAyBA,OAAOC,KAC3CD,OAAQ,YAAc,WACrB,MAAO1pC,KAOT,IAEC4pC,IAAUnqC,EAAOO,OAGjB6pC,GAAKpqC,EAAOqqC,CAwBb,OAtBA9pC,IAAO+pC,WAAa,SAAUt3B,GAS7B,MARKhT,GAAOqqC,IAAM9pC,KACjBP,EAAOqqC,EAAID,IAGPp3B,GAAQhT,EAAOO,SAAWA,KAC9BP,EAAOO,OAAS4pC,IAGV5pC,UAMIL,KAAaiG,KACxBnG,EAAOO,OAASP,EAAOqqC,EAAI9pC,IAMrBA;;;AAMP,GAAI8pC,GAAG9pC,OAAS8pC,EAAIrqC,OAAOO,OAAO+pC,YAAW,IAW5C,SAAUD,GACT,YAgOA,SAASE,GAAO/V,EAAQgW,GACtB,MAAOvqC,MAAK6B,KAAK,WACf,GAAI2oC,GAAUJ,EAAEpqC,MACZ4C,EAAU4nC,EAAM5nC,KAAK,YACrBlB,EAAU0oC,EAAE7lC,UAAWkmC,EAAMC,SAAUF,EAAM5nC,OAAyB,gBAAV2xB,IAAsBA,EAEjF3xB,IAAM4nC,EAAM5nC,KAAK,WAAaA,EAAO,GAAI6nC,GAAMzqC,KAAM0B,IACrC,gBAAV6yB,GAAoB3xB,EAAK2xB,GAAQgW,GACnC7oC,EAAQuJ,MAAMrI,EAAKqI,KAAKs/B,KAnOrC,GAAIE,GAAQ,SAAUE,EAASjpC,GAC7B1B,KAAK0B,QAAiBA,EACtB1B,KAAK4qC,MAAiBR,EAAExqC,SAAS0J,MACjCtJ,KAAK6qC,SAAiBT,EAAEO,GACxB3qC,KAAK8qC,UACL9qC,KAAK+qC,QAAiB,KACtB/qC,KAAKgrC,eAAiB,EAElBhrC,KAAK0B,QAAQupC,QACfjrC,KAAK6qC,SACF3jC,KAAK,kBACL8qB,KAAKhyB,KAAK0B,QAAQupC,OAAQb,EAAE5xB,MAAM,WACjCxY,KAAK6qC,SAASzb,QAAQ,oBACrBpvB,OAITyqC,GAAMS,QAAW,QAEjBT,EAAMU,oBAAsB,IAC5BV,EAAMW,6BAA+B,IAErCX,EAAMC,UACJW,UAAU,EACVC,UAAU,EACVrgC,MAAM,GAGRw/B,EAAMz9B,UAAUqB,OAAS,SAAUk8B,GACjC,MAAOvqC,MAAK+qC,QAAU/qC,KAAK0P,OAAS1P,KAAKiL,KAAKs/B,IAGhDE,EAAMz9B,UAAU/B,KAAO,SAAUs/B,GAC/B,GAAIgB,GAAOvrC,KACPqD,EAAO+mC,EAAE3a,MAAM,iBAAmBqC,cAAeyY,GAErDvqC,MAAK6qC,SAASzb,QAAQ/rB,GAElBrD,KAAK+qC,SAAW1nC,EAAE0sB,uBAEtB/vB,KAAK+qC,SAAU,EAEf/qC,KAAKwrC,iBACLxrC,KAAK4qC,MAAM/K,SAAS,cAEpB7/B,KAAKyrC,eACLzrC,KAAK0rC,SAEL1rC,KAAK6qC,SAASrX,GAAG,yBAA0B,yBAA0B4W,EAAE5xB,MAAMxY,KAAK0P,KAAM1P,OAExFA,KAAKqrC,SAAS,WACZ,GAAIM,GAAavB,EAAErlC,QAAQ4mC,YAAcJ,EAAKV,SAASvK,SAAS,OAE3DiL,GAAKV,SAASjpB,SAASxhB,QAC1BmrC,EAAKV,SAASxhC,SAASkiC,EAAKX,OAG9BW,EAAKV,SACF5/B,OACA2mB,UAAU,GAET+Z,GACFJ,EAAKV,SAAS,GAAGz+B,YAGnBm/B,EAAKV,SACFhL,SAAS,MACT14B,KAAK,eAAe,GAEvBokC,EAAKK,cAEL,IAAIvoC,GAAI+mC,EAAE3a,MAAM,kBAAoBqC,cAAeyY,GAEnDoB,GACEJ,EAAKV,SAAS3jC,KAAK,iBAChBusB,IAAI,kBAAmB,WACtB8X,EAAKV,SAASzb,QAAQ,SAASA,QAAQ/rB,KAExCwoC,qBAAqBpB,EAAMU,qBAC9BI,EAAKV,SAASzb,QAAQ,SAASA,QAAQ/rB,OAI7ConC,EAAMz9B,UAAU0C,KAAO,SAAUrM,GAC3BA,GAAGA,EAAEysB,iBAETzsB,EAAI+mC,EAAE3a,MAAM,iBAEZzvB,KAAK6qC,SAASzb,QAAQ/rB,GAEjBrD,KAAK+qC,UAAW1nC,EAAE0sB,uBAEvB/vB,KAAK+qC,SAAU,EAEf/qC,KAAK0rC,SAELtB,EAAExqC,UAAU0rB,IAAI,oBAEhBtrB,KAAK6qC,SACF3K,YAAY,MACZ/4B,KAAK,eAAe,GACpBmkB,IAAI,0BAEP8e,EAAErlC,QAAQ4mC,YAAc3rC,KAAK6qC,SAASvK,SAAS,QAC7CtgC,KAAK6qC,SACFpX,IAAI,kBAAmB2W,EAAE5xB,MAAMxY,KAAK8rC,UAAW9rC,OAC/C6rC,qBAAqBpB,EAAMU,qBAC9BnrC,KAAK8rC,cAGTrB,EAAMz9B,UAAU4+B,aAAe,WAC7BxB,EAAExqC,UACC0rB,IAAI,oBACJkI,GAAG,mBAAoB4W,EAAE5xB,MAAM,SAAUnV,GACpCrD,KAAK6qC,SAAS,KAAOxnC,EAAEyP,QAAW9S,KAAK6qC,SAAS5lB,IAAI5hB,EAAEyP,QAAQ1S,QAChEJ,KAAK6qC,SAASzb,QAAQ,UAEvBpvB,QAGPyqC,EAAMz9B,UAAU0+B,OAAS,WACnB1rC,KAAK+qC,SAAW/qC,KAAK0B,QAAQ4pC,SAC/BtrC,KAAK6qC,SAASrX,GAAG,2BAA4B4W,EAAE5xB,MAAM,SAAUnV,GAClD,IAAXA,EAAEmK,OAAexN,KAAK0P,QACrB1P,OACOA,KAAK+qC,SACf/qC,KAAK6qC,SAASvf,IAAI,6BAItBmf,EAAMz9B,UAAU8+B,UAAY,WAC1B,GAAIP,GAAOvrC,IACXA,MAAK6qC,SAASn7B,OACd1P,KAAKqrC,SAAS,WACZE,EAAKX,MAAM1K,YAAY,cACvBqL,EAAKQ,iBACLR,EAAKV,SAASzb,QAAQ,sBAI1Bqb,EAAMz9B,UAAUg/B,eAAiB,WAC/BhsC,KAAK8qC,WAAa9qC,KAAK8qC,UAAUphB,SACjC1pB,KAAK8qC,UAAY,MAGnBL,EAAMz9B,UAAUq+B,SAAW,SAAU50B,GACnC,GAAI80B,GAAOvrC,KACPo8B,EAAUp8B,KAAK6qC,SAASvK,SAAS,QAAU,OAAS,EAExD,IAAItgC,KAAK+qC,SAAW/qC,KAAK0B,QAAQ2pC,SAAU,CACzC,GAAIY,GAAY7B,EAAErlC,QAAQ4mC,YAAcvP,CAgBxC,IAdAp8B,KAAK8qC,UAAYV,EAAE,8BAAgChO,EAAU,QAC1D/yB,SAASrJ,KAAK4qC,OAEjB5qC,KAAK6qC,SAASrX,GAAG,yBAA0B4W,EAAE5xB,MAAM,SAAUnV,GACvDA,EAAEyP,SAAWzP,EAAEgtB,gBACM,UAAzBrwB,KAAK0B,QAAQ2pC,SACTrrC,KAAK6qC,SAAS,GAAGrlB,MAAMvkB,KAAKjB,KAAK6qC,SAAS,IAC1C7qC,KAAK0P,KAAKzO,KAAKjB,QAClBA,OAECisC,GAAWjsC,KAAK8qC,UAAU,GAAG1+B,YAEjCpM,KAAK8qC,UAAUjL,SAAS,OAEnBppB,EAAU,MAEfw1B,GACEjsC,KAAK8qC,UACFrX,IAAI,kBAAmBhd,GACvBo1B,qBAAqBpB,EAAMW,8BAC9B30B,QAEG,KAAKzW,KAAK+qC,SAAW/qC,KAAK8qC,UAAW,CAC1C9qC,KAAK8qC,UAAU5K,YAAY,KAE3B,IAAIgM,GAAiB,WACnBX,EAAKS,iBACLv1B,GAAYA,IAEd2zB,GAAErlC,QAAQ4mC,YAAc3rC,KAAK6qC,SAASvK,SAAS,QAC7CtgC,KAAK8qC,UACFrX,IAAI,kBAAmByY,GACvBL,qBAAqBpB,EAAMW,8BAC9Bc,QAEOz1B,IACTA,KAIJg0B,EAAMz9B,UAAUw+B,eAAiB,WAC/BxrC,KAAKgrC,eAAiBhrC,KAAKmsC,oBAG7B1B,EAAMz9B,UAAUy+B,aAAe,WAC7B,GAAIW,GAAUzM,SAAU3/B,KAAK4qC,MAAMnhC,IAAI,kBAAoB,EAAI,GAC3DzJ,MAAKgrC,gBAAgBhrC,KAAK4qC,MAAMnhC,IAAI,gBAAiB2iC,EAAUpsC,KAAKgrC,iBAG1EP,EAAMz9B,UAAU++B,eAAiB,WAC/B/rC,KAAK4qC,MAAMnhC,IAAI,gBAAiB,KAGlCghC,EAAMz9B,UAAUm/B,iBAAmB,WACjC,GAAIvsC,SAAS0J,KAAK+iC,aAAetsC,OAAOusC,WAAY,MAAO,EAC3D,IAAIC,GAAY3sC,SAAS+F,cAAc,MACvC4mC,GAAUxqB,UAAY,0BACtB/hB,KAAK4qC,MAAM1U,OAAOqW,EAClB,IAAIvB,GAAiBuB,EAAUngC,YAAcmgC,EAAUF,WAEvD,OADArsC,MAAK4qC,MAAM,GAAGjwB,YAAY4xB,GACnBvB,EAmBT,IAAIlyB,GAAMsxB,EAAEx0B,GAAG42B,KAEfpC,GAAEx0B,GAAG42B,MAAoBlC,EACzBF,EAAEx0B,GAAG42B,MAAMC,YAAchC,EAMzBL,EAAEx0B,GAAG42B,MAAMnC,WAAa,WAEtB,MADAD,GAAEx0B,GAAG42B,MAAQ1zB,EACN9Y,MAOToqC,EAAExqC,UAAU4zB,GAAG,0BAA2B,wBAAyB,SAAUnwB,GAC3E,GAAImnC,GAAUJ,EAAEpqC,MACZ0lB,EAAU8kB,EAAMrjC,KAAK,QACrBulC,EAAUtC,EAAEI,EAAMrjC,KAAK,gBAAmBue,GAAQA,EAAK3iB,QAAQ,iBAAkB,KACjFwxB,EAAUmY,EAAQ9pC,KAAK,YAAc,SAAWwnC,EAAE7lC,QAAS0mC,QAAS,IAAI9pC,KAAKukB,IAASA,GAAQgnB,EAAQ9pC,OAAQ4nC,EAAM5nC,OAEpH4nC,GAAM/iB,GAAG,MAAMpkB,EAAEysB,iBAErB4c,EAAQjZ,IAAI,gBAAiB,SAAUkZ,GACjCA,EAAU5c,sBACd2c,EAAQjZ,IAAI,kBAAmB,WAC7B+W,EAAM/iB,GAAG,aAAe+iB,EAAMpb,QAAQ,aAG1Ckb,EAAOrpC,KAAKyrC,EAASnY,EAAQv0B,SAG/BM,SA0BC,SAAShB,GAOV,QAAS2N,KACPjN,KAAK4sC,WACD5sC,KAAK6sC,OACPC,EAAU7rC,KAAKjB,KAAMA,KAAK6sC,OAI9B,QAASC,GAAUC,GACbA,IAEF/sC,KAAK6sC,MAAQE,EAEbA,EAAKC,YAAchtC,KAAKgtC,UAAYD,EAAKC,WACzCD,EAAKE,eAAiBjtC,KAAK4sC,QAAQK,aAAeF,EAAKE,cACvDF,EAAKG,WAAaltC,KAAKktC,SAAWH,EAAKG,UACvCH,EAAKI,cAAgBntC,KAAKmtC,YAAcJ,EAAKI,aAEzCntC,KAAKktC,WACPltC,KAAKotC,kBAKX,QAASC,GAAaN,GACpB/sC,KAAK4sC,WACL5sC,KAAKmtC,aAAc,EACnBL,EAAU7rC,KAAKjB,KAAM+sC,GAQvB,QAASO,GAAmBhf,EAAUjuB,EAAMktC,EAAMvsC,GAChD,IAAKusC,EACH,QAEF,IAAkBC,GAAM12B,EAAK22B,EAAQC,EAAOC,EAAQC,EAAgBC,EAAhEC,KACAC,EAAa1tC,EAAKD,OAAQ4tC,EAAc3tC,EAAKW,GAAIitC,EAAW5tC,EAAKW,EAAE,EACvE,IAAIA,IAAM+sC,GAAcR,EAAKW,WAAY,CAKvC,GAA+B,kBAApBX,GAAKW,WAEd,MADA5f,IAAYA,EAAShoB,KAAKinC,EAAKW,aACvBX,EAER,KAAKC,EAAO,EAAG12B,EAAMy2B,EAAKW,WAAW9tC,OAAe0W,EAAP02B,EAAYA,IACvDlf,GAAYA,EAAShoB,KAAKinC,EAAKW,WAAWV,GAE5C,QAAQD,GAIZ,GAAqB,MAAhBS,GAAuC,OAAhBA,GAAyBT,EAAKS,GAAc,CAKtE,GAAoB,MAAhBA,EAAqB,CACvB,IAAKP,IAAUF,GACE,eAAXE,GAA2BF,EAAK93B,eAAeg4B,KACjDK,EAAYA,EAAUnpC,OAAO2oC,EAAmBhf,EAAUjuB,EAAMktC,EAAKE,GAASzsC,EAAE,IAGpF,OAAO8sC,GACF,GAAmB,OAAhBE,EAAsB,CAC9BH,EAAc7sC,EAAE,IAAM+sC,GAAe/sC,EAAE,IAAM+sC,GAA2B,MAAbE,EACxDJ,GAAcN,EAAKW,aAEpBJ,EAAYA,EAAUnpC,OAAO2oC,EAAmBhf,EAAUjuB,EAAMktC,EAAMQ,IAGxE,KAAKN,IAAUF,GACE,eAAXE,GAA2BF,EAAK93B,eAAeg4B,KACnC,MAAXA,GAA6B,OAAXA,GAChBF,EAAKE,GAAQS,aAAeL,IAC7BC,EAAYA,EAAUnpC,OAAO2oC,EAAmBhf,EAAUjuB,EAAMktC,EAAKE,GAASM,KAEhFD,EAAYA,EAAUnpC,OAAO2oC,EAAmBhf,EAAUjuB,EAAMktC,EAAKE,GAASzsC,KAE9E8sC,EAAYA,EAAUnpC,OADd8oC,IAAWQ,EACUX,EAAmBhf,EAAUjuB,EAAMktC,EAAKE,GAASzsC,EAAE,GAGnDssC,EAAmBhf,EAAUjuB,EAAMktC,EAAKE,GAASzsC,IAIpF,OAAO8sC,GAGTA,EAAYA,EAAUnpC,OAAO2oC,EAAmBhf,EAAUjuB,EAAMktC,EAAKS,GAAchtC,EAAE,IAavF,GAVA0sC,EAAQH,EAAK,KACTG,GAKFJ,EAAmBhf,EAAUjuB,EAAMqtC,EAAO1sC,EAAE,GAG9C2sC,EAASJ,EAAK,MAEZ,GAAOQ,EAAJ/sC,EAAgB,CACd2sC,EAAOO,YAERZ,EAAmBhf,EAAUjuB,EAAMstC,EAAQI,EAI7C,KAAIN,IAAUE,GACE,eAAXF,GAA2BE,EAAOl4B,eAAeg4B,KAC/CA,IAAWQ,EAEZX,EAAmBhf,EAAUjuB,EAAMstC,EAAOF,GAASzsC,EAAE,GAC7CysC,IAAWO,EAEnBV,EAAmBhf,EAAUjuB,EAAMstC,EAAOF,GAASzsC,EAAE,IAErD4sC,KACAA,EAAeH,GAAUE,EAAOF,GAChCH,EAAmBhf,EAAUjuB,GAAQ8tC,KAAMP,GAAkB5sC,EAAE,SAI7D2sC,GAAOO,WAEfZ,EAAmBhf,EAAUjuB,EAAMstC,EAAQI,GACnCJ,EAAO,MAAQA,EAAO,KAAKO,YACnCZ,EAAmBhf,EAAUjuB,EAAMstC,EAAO,KAAMI,EAIpD,OAAOD,GAGT,QAASM,GAAiB/tC,EAAMguC,GAE9BhuC,EAAuB,gBAATA,GAAoBA,EAAKwE,MAAM7E,KAAKgtC,WAAa3sC,EAAKwK,OAKpE,KAAI,GAAI7J,GAAI,EAAG8V,EAAMzW,EAAKD,OAAc0W,EAAN9V,EAAE,EAASA,IAC3C,GAAe,OAAZX,EAAKW,IAA6B,OAAdX,EAAKW,EAAE,GAC5B,MAOJ,KAHA,GAAIusC,GAAOvtC,KAAKotC,aACZtqC,EAAOzC,EAAKoT,QAET3Q,GAAM,CAQX,GANKyqC,EAAKzqC,KACRyqC,EAAKzqC,OAGPyqC,EAAOA,EAAKzqC,GAEQ,IAAhBzC,EAAKD,OAAc,CAErB,GAAKmtC,EAAKW,YAGL,GAA8B,kBAApBX,GAAKW,WAClBX,EAAKW,YAAcX,EAAKW,WAAYG,OAEjC,IAAI3pC,EAAQ6oC,EAAKW,cAEpBX,EAAKW,WAAW5nC,KAAK+nC,IAEhBd,EAAKW,WAAWI,QAAQ,CAE3B,GAAI11B,GAAI21B,CAEiC,oBAA9BvuC,MAAK4sC,QAAQK,eACtBr0B,EAAI5Y,KAAK4sC,QAAQK,cAGfr0B,EAAI,GAAK20B,EAAKW,WAAW9tC,OAASwY,IAEpC20B,EAAKW,WAAWI,QAAS,EACzBE,QAAQh6B,MAAM,mIAGA+4B,EAAKW,WAAW9tC,QAC9BouC,QAAQC,cAxBZlB,GAAKW,WAAaG,CA4BpB,QAAO,EAETvrC,EAAOzC,EAAKoT,QAEd,OAAO,EA5MT,GAAI/O,GAAU+S,MAAM/S,QAAU+S,MAAM/S,QAAU,SAAkBvE,GAC9D,MAA+C,mBAAxC+X,OAAOlL,UAAUuI,SAAStU,KAAKd,IAEpCouC,EAAsB,EAmN1BlB,GAAargC,UAAUggC,UAAY,IAEnCK,EAAargC,UAAU0hC,gBAAkB,SAASzmB,GAChDjoB,KAAK4sC,SAAW3/B,EAAKhM,KAAKjB,MAC1BA,KAAK4sC,QAAQK,aAAehlB,EACvBjoB,KAAK6sC,QAAO7sC,KAAK6sC,UACtB7sC,KAAK6sC,MAAMI,aAAehlB,GAG5BolB,EAAargC,UAAUzK,MAAQ,GAE/B8qC,EAAargC,UAAUuc,KAAO,SAAShnB,EAAOqT,GAE5C,MADA5V,MAAK2uC,KAAKpsC,EAAO,EAAGqT,GACb5V,MAGTqtC,EAAargC,UAAU2hC,KAAO,SAASpsC,EAAOqsC,EAAKh5B,GAOjD,QAASy4B,KACO,MAARO,GACJpnB,EAAK8D,IAAI/oB,EAAO8rC,GAElBz4B,EAAGrL,MAAMvK,KAAMwK,WAVjB,GAAIgd,GAAOxnB,IAEX,IAAkB,kBAAP4V,GACT,KAAM,IAAI9V,OAAM,0CAclB,OAJAuuC,GAASQ,QAAUj5B,EAEnB5V,KAAKwzB,GAAGjxB,EAAO8rC,GAER7mB,GAGT6lB,EAAargC,UAAU8hC,KAAO,WAE5B9uC,KAAK4sC,SAAW3/B,EAAKhM,KAAKjB,KAE1B,IAAIK,GAAOmK,UAAU,EAErB,IAAa,gBAATnK,IAA2BL,KAAKmtC,cAC7BntC,KAAK4sC,QAAQO,YAAe,OAAO,CAI1C,IAAIntC,KAAK+uC,KAAM,CAGb,IAAK,GAFDhnC,GAAIyC,UAAUpK,OACdsW,EAAO,GAAIe,OAAM1P,EAAI,GAChB/G,EAAI,EAAO+G,EAAJ/G,EAAOA,IAAK0V,EAAK1V,EAAI,GAAKwJ,UAAUxJ,EACpD,KAAKA,EAAI,EAAG+G,EAAI/H,KAAK+uC,KAAK3uC,OAAY2H,EAAJ/G,EAAOA,IACvChB,KAAKuC,MAAQlC,EACbL,KAAK+uC,KAAK/tC,GAAGuJ,MAAMvK,KAAM0W,GAK7B,GAAa,UAATrW,KAEGL,KAAK+uC,MACP/uC,KAAK4sC,QAAQp4B,OACZxU,KAAKktC,UAAYltC,KAAKotC,aAAa54B,OAErC,KAAIhK,WAAU,YAAc1K,OACpB0K,UAAU,GAEV,GAAI1K,OAAM,uCAMtB,IAAI+a,EAEJ,IAAG7a,KAAKktC,SAAU,CAChBryB,IACA,IAAIm0B,GAAqB,gBAAT3uC,GAAoBA,EAAKwE,MAAM7E,KAAKgtC,WAAa3sC,EAAKwK,OACtEyiC,GAAmBrsC,KAAKjB,KAAM6a,EAASm0B,EAAIhvC,KAAKotC,aAAc,OAG9DvyB,GAAU7a,KAAK4sC,QAAQvsC,EAGzB,IAAuB,kBAAZwa,GAAwB,CAEjC,GADA7a,KAAKuC,MAAQlC,EACY,IAArBmK,UAAUpK,OACZya,EAAQ5Z,KAAKjB,UAEV,IAAIwK,UAAUpK,OAAS,EAC1B,OAAQoK,UAAUpK,QAChB,IAAK,GACHya,EAAQ5Z,KAAKjB,KAAMwK,UAAU,GAC7B,MACF,KAAK,GACHqQ,EAAQ5Z,KAAKjB,KAAMwK,UAAU,GAAIA,UAAU,GAC3C,MAEF,SAGE,IAAK,GAFDzC,GAAIyC,UAAUpK,OACdsW,EAAO,GAAIe,OAAM1P,EAAI,GAChB/G,EAAI,EAAO+G,EAAJ/G,EAAOA,IAAK0V,EAAK1V,EAAI,GAAKwJ,UAAUxJ,EACpD6Z,GAAQtQ,MAAMvK,KAAM0W,GAE1B,OAAO,EAEJ,GAAImE,EAAS,CAGhB,IAAK,GAFD9S,GAAIyC,UAAUpK,OACdsW,EAAO,GAAIe,OAAM1P,EAAI,GAChB/G,EAAI,EAAO+G,EAAJ/G,EAAOA,IAAK0V,EAAK1V,EAAI,GAAKwJ,UAAUxJ,EAGpD,KAAK,GADD8sC,GAAYjzB,EAAQhQ,QACf7J,EAAI,EAAG+G,EAAI+lC,EAAU1tC,OAAY2H,EAAJ/G,EAAOA,IAC3ChB,KAAKuC,MAAQlC,EACbytC,EAAU9sC,GAAGuJ,MAAMvK,KAAM0W,EAE3B,OAAQo3B,GAAU1tC,OAAS,GAAMJ,KAAK+uC,KAGtC,MAAO/uC,MAAK+uC,MAKhB1B,EAAargC,UAAUwmB,GAAK,SAASnzB,EAAMguC,GAEzC,GAAoB,kBAAThuC,GAET,MADAL,MAAKivC,MAAM5uC,GACJL,IAGT,IAAwB,kBAAbquC,GACT,KAAM,IAAIvuC,OAAM,wCAQlB,IANAE,KAAK4sC,SAAW3/B,EAAKhM,KAAKjB,MAI1BA,KAAK8uC,KAAK,cAAezuC,EAAMguC,GAE5BruC,KAAKktC,SAEN,MADAkB,GAAiBntC,KAAKjB,KAAMK,EAAMguC,GAC3BruC,IAGT,IAAKA,KAAK4sC,QAAQvsC,IAIb,GAAiC,kBAAvBL,MAAK4sC,QAAQvsC,GAE1BL,KAAK4sC,QAAQvsC,IAASL,KAAK4sC,QAAQvsC,GAAOguC,OAEvC,IAAI3pC,EAAQ1E,KAAK4sC,QAAQvsC,MAE5BL,KAAK4sC,QAAQvsC,GAAMiG,KAAK+nC,IAGnBruC,KAAK4sC,QAAQvsC,GAAMiuC,QAAQ,CAE9B,GAAI11B,GAAI21B,CAEiC,oBAA9BvuC,MAAK4sC,QAAQK,eACtBr0B,EAAI5Y,KAAK4sC,QAAQK,cAGfr0B,EAAI,GAAK5Y,KAAK4sC,QAAQvsC,GAAMD,OAASwY,IAEvC5Y,KAAK4sC,QAAQvsC,GAAMiuC,QAAS,EAC5BE,QAAQh6B,MAAM,mIAGAxU,KAAK4sC,QAAQvsC,GAAMD,QACjCouC,QAAQC,cA1BZzuC,MAAK4sC,QAAQvsC,GAAQguC,CA8BvB,OAAOruC,OAGTqtC,EAAargC,UAAUiiC,MAAQ,SAASr5B,GAMtC,GAJI5V,KAAK+uC,OACP/uC,KAAK+uC,SAGW,kBAAPn5B,GACT,KAAM,IAAI9V,OAAM,2CAKlB,OADAE,MAAK+uC,KAAKzoC,KAAKsP,GACR5V,MAGTqtC,EAAargC,UAAUkiC,YAAc7B,EAAargC,UAAUwmB,GAE5D6Z,EAAargC,UAAUse,IAAM,SAASjrB,EAAMguC,GAC1C,GAAwB,kBAAbA,GACT,KAAM,IAAIvuC,OAAM,kDAGlB,IAAIwuB,GAAS6gB,IAEb,IAAGnvC,KAAKktC,SAAU,CAChB,GAAI8B,GAAqB,gBAAT3uC,GAAoBA,EAAKwE,MAAM7E,KAAKgtC,WAAa3sC,EAAKwK,OACtEskC,GAAQ7B,EAAmBrsC,KAAKjB,KAAM,KAAMgvC,EAAIhvC,KAAKotC,aAAc,OAEhE,CAEH,IAAKptC,KAAK4sC,QAAQvsC,GAAO,MAAOL,KAChCsuB,GAAWtuB,KAAK4sC,QAAQvsC,GACxB8uC,EAAM7oC,MAAM4nC,WAAW5f,IAGzB,IAAK,GAAI8gB,GAAM,EAAGA,EAAMD,EAAM/uC,OAAQgvC,IAAS,CAC7C,GAAI5B,GAAO2B,EAAMC,EAEjB,IADA9gB,EAAWkf,EAAKU,WACZxpC,EAAQ4pB,GAAW,CAIrB,IAAK,GAFDgL,GAAW,GAENt4B,EAAI,EAAGZ,EAASkuB,EAASluB,OAAYA,EAAJY,EAAYA,IACpD,GAAIstB,EAASttB,KAAOqtC,GACjB/f,EAASttB,GAAGqtC,UAAY/f,EAASttB,GAAGqtC,WAAaA,GACjD/f,EAASttB,GAAG6tC,SAAWvgB,EAASttB,GAAG6tC,UAAYR,EAAW,CAC3D/U,EAAWt4B,CACX,OAIJ,GAAe,EAAXs4B,EACF,QAkBF,OAfGt5B,MAAKktC,SACNM,EAAKU,WAAWj3B,OAAOqiB,EAAU,GAGjCt5B,KAAK4sC,QAAQvsC,GAAM4W,OAAOqiB,EAAU,GAGd,IAApBhL,EAASluB,SACRJ,KAAKktC,eACCM,GAAKU,iBAGLluC,MAAK4sC,QAAQvsC,IAGjBL,MAEAsuB,IAAa+f,GACnB/f,EAAS+f,UAAY/f,EAAS+f,WAAaA,GAC3C/f,EAASugB,SAAWvgB,EAASugB,UAAYR,KACvCruC,KAAKktC,eACCM,GAAKU,iBAGLluC,MAAK4sC,QAAQvsC,IAK1B,MAAOL,OAGTqtC,EAAargC,UAAUqiC,OAAS,SAASz5B,GACvC,GAAkBoU,GAAdhpB,EAAI,EAAG+G,EAAI,CACf,IAAI6N,GAAM5V,KAAK+uC,MAAQ/uC,KAAK+uC,KAAK3uC,OAAS,GAExC,IADA4pB,EAAMhqB,KAAK+uC,KACP/tC,EAAI,EAAG+G,EAAIiiB,EAAI5pB,OAAY2H,EAAJ/G,EAAOA,IAChC,GAAG4U,IAAOoU,EAAIhpB,GAEZ,MADAgpB,GAAI/S,OAAOjW,EAAG,GACPhB,SAIXA,MAAK+uC,OAEP,OAAO/uC,OAGTqtC,EAAargC,UAAUsiC,eAAiBjC,EAAargC,UAAUse,IAE/D+hB,EAAargC,UAAUuiC,mBAAqB,SAASlvC,GACnD,GAAyB,IAArBmK,UAAUpK,OAEZ,OADCJ,KAAK4sC,SAAW3/B,EAAKhM,KAAKjB,MACpBA,IAGT,IAAGA,KAAKktC,SAIN,IAAK,GAHD8B,GAAqB,gBAAT3uC,GAAoBA,EAAKwE,MAAM7E,KAAKgtC,WAAa3sC,EAAKwK,QAClEskC,EAAQ7B,EAAmBrsC,KAAKjB,KAAM,KAAMgvC,EAAIhvC,KAAKotC,aAAc,GAE9DgC,EAAM,EAAGA,EAAMD,EAAM/uC,OAAQgvC,IAAS,CAC7C,GAAI5B,GAAO2B,EAAMC,EACjB5B,GAAKU,WAAa,SAGjB,CACH,IAAKluC,KAAK4sC,QAAQvsC,GAAO,MAAOL,KAChCA,MAAK4sC,QAAQvsC,GAAQ,KAEvB,MAAOL,OAGTqtC,EAAargC,UAAU8gC,UAAY,SAASztC,GAC1C,GAAGL,KAAKktC,SAAU,CAChB,GAAI5e,MACA0gB,EAAqB,gBAAT3uC,GAAoBA,EAAKwE,MAAM7E,KAAKgtC,WAAa3sC,EAAKwK,OAEtE,OADAyiC,GAAmBrsC,KAAKjB,KAAMsuB,EAAU0gB,EAAIhvC,KAAKotC,aAAc,GACxD9e,EAST,MANAtuB,MAAK4sC,SAAW3/B,EAAKhM,KAAKjB,MAErBA,KAAK4sC,QAAQvsC,KAAOL,KAAK4sC,QAAQvsC,OACjCqE,EAAQ1E,KAAK4sC,QAAQvsC,MACxBL,KAAK4sC,QAAQvsC,IAASL,KAAK4sC,QAAQvsC,KAE9BL,KAAK4sC,QAAQvsC,IAGtBgtC,EAAargC,UAAUwiC,aAAe,WAEpC,MAAGxvC,MAAK+uC,KACC/uC,KAAK+uC,SAadzvC,EAAQmwC,cAAgBpC,GAGP,mBAAZqC,UAAoD,mBAAlBA,SAAQC,OAA4C,mBAAZrwC,SAA0BA,QAAUS,QA0BvH,SAAWA,EAAQH,EAAU0lB,EAAUnY,EAAYyiC,EAAoBtJ,GA4CvE,QAASuJ,GAAaluC,EAAQmuC,GAC1B,GAAI7hB,SAAWtsB,GAAOmuC,EACtB,OAAY,YAAL7hB,KACE,UAALA,IAAiBtsB,EAAOmuC,KACvB,WAAL7hB,EAGJ,QAAS8hB,GAAapuC,EAAQmuC,GAC1B,QAAsC,gBAArBnuC,GAAOmuC,KAA0BnuC,EAAOmuC,IAM7D,QAASprC,GAAQsrC,GACb,MAA6C,mBAAtC93B,OAAOlL,UAAUuI,SAAStU,KAAK+uC,GAI1C,QAASC,KACL,GAAIntC,GAAO,kBAAmB4Q,EAAW,+BAEzC,KAAKw8B,EAAMC,UAAUC,UAA8C,gBAA3BD,WAAUC,QAAQttC,GAAmB,CAEzE,GAAIutC,GAAcF,UAAUC,QAAQttC,GAAMutC,WACtCA,KAAgBH,EAAMC,UAAUG,YAAcH,UAAUG,UAAU58B,IAAay8B,UAAUG,UAAU58B,GAAU68B,gBAC7GC,EAAeH,EAAYvuC,MAAM,SAGzC,IAAK0uC,EAAc,CACf,GAAIC,EACJ,KACIA,EAAQ,GAAIx7B,eAAc,iCAC1Bu7B,EAAe/4B,MAAMzK,UAAUnC,MAAM5J,KAAKwvC,EAAMC,YAAY,YAAY5uC,MAAM,2BAA4B,GAC1G2uC,EAAQ,KAEZ,MAAOE,KAGX,IAAKH,EACD,OAAO,CAEX,IAAII,GAAQjR,SAAS6Q,EAAa,GAAI,IAAKK,EAAQlR,SAAS6Q,EAAa,GAAI,GAE7E,OADAM,GAA0BF,EAAQ,GAAKC,EAAQ,GACxC,EA6CX,QAASE,KACL,IAAIC,EAAJ,CAGAA,GAAa,CACb,KAAK,GAAIhwC,GAAI,EAAGA,EAAIiwC,EAAc7wC,OAAQY,IACtCiwC,EAAcjwC,IAElBiwC,GAAc7wC,OAAS,GA0C3B,QAAS8wC,GAAUt7B,EAAIu7B,GACnB,MAAIH,OACAp7B,GAAG3U,KAAKkwC,OAGZF,GAAc3qC,KAAK,WACfsP,EAAG3U,KAAKkwC,KAUhB,QAASC,KACL,GAAIjxC,GAAMyhB,MACV,IAAkB,KAAdkN,EACA,IAAK,GAAI9tB,GAAI,EAAGqwC,EAAKviB,EAAUjqB,MAAM,KAAM7D,EAAIqwC,EAAGjxC,OAAQY,IACtDb,EAAMA,EAAIkxC,EAAGrwC,GAGrB,OAAOb,GAAImxC,QAWf,QAASjH,GAAW2E,GAOhB,MALAjvC,GAAOuxC,QAAUC,EACjBziB,EAAYkgB,EACRlgB,IACA0iB,EAAgB,WAAa1iB,EAAU/rB,QAAQ,IAAK,KAAO,KAExDuuC,EAYX,QAASG,GAAc7O,GACnB,MAAOA,GAAI9gC,MAAM4vC,GAAO,GAS5B,QAASC,GAAQ/O,GACb,MAAOA,GAAI9gC,MAAM4vC,GAAO,IAAM,GAQlC,QAASE,GAAYhP,GACjB,GAAIhqB,GAAIgqB,EAAI3/B,cAAcnB,MAAM4vC,GAC5BG,EAAQj5B,EAAE,GAAIk5B,EAASl5B,EAAE,GAAIm5B,EAAOn5B,EAAE,IAAM,EAIhD,QAHc,SAATi5B,GAA4B,OAARE,GAA4B,UAATF,GAA6B,QAARE,KAC7DA,EAAO,IAEJF,EAAQ,KAAOC,EAASC,EAQnC,QAASC,GAAWpP,GAMhB,GAHAA,EAAMA,EAAI7/B,QAAQkvC,EAAe,QAG5BrP,EAAI9gC,MAAM,uBAAwB,CAEnC,GAAIowC,GAAgC,MAAxBtP,EAAIuP,UAAU,EAAG,GAAc,GAAK7sB,EAAS8sB,QACjB,OAApCF,EAAKC,UAAUD,EAAK9xC,OAAS,KAC7B8xC,EAAOA,EAAKC,UAAU,EAAGD,EAAKG,YAAY,KAAO,IAGrDzP,EAAMtd,EAASgtB,SAAW,KAAOhtB,EAASitB,KAAOL,EAAOtP,EAI5D,KAAO4P,EAASrxC,KAAKyhC,IACjBA,EAAMA,EAAI7/B,QAAQyvC,EAAU,GAGhC,OAAO5P,GAUX,QAAS6P,GAAsB7P,EAAK8P,GAEhC,GAAIrtB,GAAO,GAAIhQ,EAAUutB,EAAIvtB,QAAQ,IACrB,MAAZA,IACAgQ,EAAOud,EAAIuP,UAAU98B,GACrButB,EAAMA,EAAIuP,UAAU,EAAG98B,GAE3B,IAAIs9B,KACJ,KAAK,GAAIhwC,KAAO+vC,GACRA,EAAWj9B,eAAe9S,IAC1BgwC,EAAErsC,KAAK3D,EAAM,IAAM2jC,EAAmBoM,EAAW/vC,IAGzD,OAAOigC,IAAOgQ,EAAU,IAA2B,IAApBhQ,EAAIvtB,QAAQ,KAAa,IAAM,KAAQs9B,EAAE14B,KAAK,KAAOoL,EAuBxF,QAAS6qB,GAAMt7B,GACX,MAAoB,mBAANA,GAkDlB,QAASrK,GAAMsoC,EAAarmB,EAAQsmB,GAChC,GAAIC,EACJ,KAAK,GAAIlmC,KAAQ2f,GACTA,EAAO/W,eAAe5I,KAClBA,IAAQgmC,IACRE,EAASvmB,EAAO3f,GACM,gBAAXkmC,GACPxoC,EAAMsoC,EAAYhmC,GAAOkmC,EAAQD,GAE3BA,IACND,EAAYhmC,GAAQ2f,EAAO3f,KAI/BgmC,EAAYhmC,GAAQ2f,EAAO3f,GAIvC,OAAOgmC,GAIX,QAASG,KACL,GAAI/f,GAAOrzB,EAAS0J,KAAKvC,YAAYnH,EAAS+F,cAAc,SAAU0c,EAAQ4Q,EAAKlsB,YAAYnH,EAAS+F,cAAc,SACtH0c,GAAMvf,KAAO0uC,EAAgB,OAASyB,EACtCC,EAAwB7wB,IAAU4Q,EAAKvyB,SAAS2hB,EAAMvf,MACtDlD,EAAS0J,KAAKqR,YAAYsY,GAe9B,QAASkgB,GAAYC,GACblD,EAAMgD,IACNF,GAEJ,IAAIK,EAIAH,GACAG,EAAQzzC,EAAS+F,cAAc,iBAAoBytC,EAAOjlC,MAAMrL,KAAO,QAGvEuwC,EAAQzzC,EAAS+F,cAAc,UAC/B0tC,EAAMvwC,KAAOswC,EAAOjlC,MAAMrL,MAG9BuwC,EAAMpvC,GAAKovC,EAAMvwC,KAAOswC,EAAOjlC,MAAMrL,WAC9BswC,GAAOjlC,MAAMrL,KAEW,gBAApBswC,GAAO1nB,YACd0nB,EAAO1nB,UAAY9rB,EAAS0Z,eAAe85B,EAAO1nB,YAGjD0nB,EAAO1nB,YAERnhB,EAAM8oC,EAAMjqC,OACRkwB,SAAU,WACVzX,IAAK,UAELgW,KAAM,QAEVub,EAAO1nB,UAAY9rB,EAAS0J,KAQhC,IAAI1B,GAAMwrC,EAAOjlC,MAAMvG,GAgBvB,IAfAwrC,EAAOjlC,MAAMvG,IAAM,mBAGnB2C,EAAM8oC,EAAOD,EAAOjlC,OAEpBklC,EAAM3Y,OAAS2Y,EAAMC,YAAc,EACnCD,EAAME,mBAAoB,EAC1BH,EAAO1nB,UAAU3kB,YAAYssC,GAEzBD,EAAOI,QACPhgB,EAAG6f,EAAO,OAAQD,EAAOI,QAK1BJ,EAAOK,QAAS,CACf,GAAyEpxB,GAArE4Q,EAAOmgB,EAAO1nB,UAAU3kB,YAAYnH,EAAS+F,cAAc,QAI/D,IAHAstB,EAAKngB,OAASugC,EAAMvwC,KACpBmwB,EAAKygB,OAAS9rC,EACdqrB,EAAKqS,OAAS,OACiB,gBAApB8N,GAAc,QACrB,IAAK,GAAIpyC,KAAKoyC,GAAOK,QACbL,EAAOK,QAAQh+B,eAAezU,KAC1BkyC,EACA7wB,EAAQziB,EAAS+F,cAAc,gBAAkB3E,EAAI,QAErDqhB,EAAQziB,EAAS+F,cAAc,SAC/B0c,EAAMvf,KAAO9B,GAEjBqhB,EAAMvZ,MAAQsqC,EAAOK,QAAQzyC,GAC7BiyB,EAAKlsB,YAAYsb,GAI7B4Q,GAAKvM,SACLuM,EAAKxqB,WAAWkS,YAAYsY,OAE5BogB,GAAMzrC,IAAMA,CAIhB,OAFAwrC,GAAOjlC,MAAMvG,IAAMA,EAEZyrC,EAWX,QAASM,GAASC,EAAK9B,GAED,gBAAP8B,KACPA,GAAOA,GAGX,KADA,GAAIC,GAAI7yC,EAAI4yC,EAAIxzC,OACTY,KAGH,GAFA6yC,EAAKD,EAAI5yC,GACT6yC,EAAK,GAAI7zB,QAA0B,KAAnB6zB,EAAGC,OAAO,EAAG,GAAYD,EAAM,IAAMA,EAAG9wC,QAAQ,QAAS,OAAOA,QAAQ,MAAO,KAAO,KAClG8wC,EAAG1yC,KAAK2wC,GACR,OAAO,CAGf,QAAO,EAWX,QAASiC,GAAsBX,GAC3B,GAAgCY,GAA5B1B,EAAWc,EAAOd,QAOtB,IANAc,EAAOa,OAASb,EAAOa,QAAU/D,EAAMgE,EAAMC,OAC7CvB,EAAUQ,EAAO/tB,OAAQ,EAEpB+tB,EAAOjlC,QACRilC,EAAOjlC,UAENilC,EAAOa,OAWRb,EAAOnI,OAAS+G,EAAWoB,EAAOnI,QAClCmI,EAAOgB,QAAUhB,EAAOgB,SAAW,UAAYnB,IAC/CG,EAAOiB,OAAS3oC,KAAK4L,SAAS/B,SAAS,IAAI48B,UAAU,GACjDjC,EAAMoC,KAKFA,EAJAV,EAAYtsB,EAASI,OAASksB,EAAYwB,EAAOnI,QAItC,IAEN4E,EAAa9vC,EAAQ,gBAAkB8vC,EAAajwC,EAAU,eAIxD,IAENwzC,EAAOkB,KAAOzE,EAAa9vC,EAAQ,kBAAoBkwC,IAIjD,IAEgB,UAAtBE,UAAUoE,SAAuB,gBAAkBx0C,IAAmD,IAAzCowC,UAAUqE,UAAUn/B,QAAQ,UAInF,IAEN+9B,EAAOqB,aAMD,IAQA,SA/CnB,IALArB,EAAOgB,QAAUF,EAAMQ,MAAM3xC,QAAQ,YAAa,IAClDqwC,EAAOiB,OAASH,EAAMS,MACtBvB,EAAOnI,OAASiJ,EAAMU,MAAM7xC,QAAQ,YAAa,IAEjDuvC,EAAW4B,EAAMC,MACbf,EAAOQ,MAAQD,EAASP,EAAOQ,IAAKR,EAAOnI,QAC3C,KAAM,IAAInrC,OAAM,qBAAuBszC,EAAOnI,OAmDtD,QADAmI,EAAOd,SAAWA,EACVA,GACJ,IAAK,IAQD,GAPA/nC,EAAM6oC,GACFnW,SAAU,IACVK,MAAO,IACPuX,WAAW,EACXC,WAAW,EACXC,YAAY,IACb,GACC3B,EAAOa,OAAQ,CACf,IAAKb,EAAO4B,MAAO,CAIf,IAFA,GAA2GvuB,GAAvGqrB,EAASxsB,EAASgtB,SAAW,KAAOhtB,EAASitB,KAAM0C,EAASr1C,EAAS0J,KAAKrD,qBAAqB,OAC/FjF,EAAIi0C,EAAO70C,OACRY,KAEH,GADAylB,EAAQwuB,EAAOj0C,GACXylB,EAAM7e,IAAIuqC,UAAU,EAAGL,EAAO1xC,UAAY0xC,EAAQ,CAClDsB,EAAO4B,MAAQvuB,EAAM7e,GACrB,OAGHwrC,EAAO4B,QAER5B,EAAO4B,MAAQj1C,GAIvB,GAAI2yC,IACAgC,MAAOtB,EAAOgB,QACdD,MAAO,EAGPf,GAAO4B,QAAUj1C,GAEjBqzC,EAAO2B,YAAa,EACpB3B,EAAO0B,WAAY,EACnB1B,EAAO4B,MAAQ1vB,EAASgtB,SAAW,KAAOhtB,EAASitB,KAAOjtB,EAAS8sB,SAAW9sB,EAAS4vB,OACvFxC,EAAWkC,MAAQxB,EAAO4B,MAC1BtC,EAAWyC,OAAS,GAGpBzC,EAAWkC,MAAQ5C,EAAWoB,EAAO4B,OAGrC5B,EAAO1nB,YACP0nB,EAAOyB,WAAY,EACnBnC,EAAW0C,OAAS,GAExBhC,EAAOnI,OAASwH,EAAsBW,EAAOnI,OAAQyH,OAGrDnoC,GAAM6oC,GACFgB,QAASF,EAAMQ,MACfzJ,OAAQiJ,EAAMU,MACdE,WAAY5E,EAAMgE,EAAMiB,QACxBJ,YAAa7E,EAAMgE,EAAMkB,QACzBP,UAAWzB,EAAO0B,WAAY,EAAQ1B,EAAOyB,WAGrDb,IAAY,GAAI1C,GAAQhoB,MAAM+rB,cAAcjC,GAAS,GAAI9B,GAAQhoB,MAAMgsB,qBAAsB,GAAIhE,GAAQhoB,MAAMisB,eAC3GC,QAAQ,EACRC,UAAW,IAAOrC,EAAOnI,OAAO7qC,SAChC,GAAIkxC,GAAQhoB,MAAMosB,gBAClBC,SAAUvC,EAAOa,SAErB,MACJ,KAAK,IACDD,GAAY,GAAI1C,GAAQhoB,MAAMssB,qBAAqBxC,GACnD,MACJ,KAAK,IACGA,EAAOa,SACPb,EAAOqB,aAAezC,EAAWoB,EAAOqB,eAE5CT,GAAY,GAAI1C,GAAQhoB,MAAMusB,cAAczC,GAAS,GAAI9B,GAAQhoB,MAAMisB,cAAiB,GAAIjE,GAAQhoB,MAAMosB,gBACtGC,SAAUvC,EAAOa,SAErB,MACJ,KAAK,IACDD,GAAY,GAAI1C,GAAQhoB,MAAMwsB,aAAa1C,GAC3C,MACJ,KAAK,IACDY,GAAY,GAAI1C,GAAQhoB,MAAMysB,oBAAoB3C,GAClD,MACJ,KAAK,IACDY,GAAY,GAAI1C,GAAQhoB,MAAM0sB,sBAAsB5C,GACpD,MACJ,KAAK,IACI5C,GACDP,IAEJ+D,GAAY,GAAI1C,GAAQhoB,MAAM2sB,eAAe7C,IAQrD,MAJAY,GAAS1tC,KAAK,GAAIgrC,GAAQhoB,MAAMisB,eAC5BW,KAAM9C,EAAO8C,KACbxsB,QAAQ,KAELsqB,EASX,QAASmC,GAAWC,GAkBhB,IAAK,GAjBDC,GAASC,GACTC,SAAU,SAASC,EAASC,GACxBz2C,KAAK02C,GAAGH,SAASC,EAASC,IAE9BE,SAAU,SAASH,EAASI,GACxB52C,KAAK62C,KAAKF,SAASH,EAASI,IAEhCngC,SAAU,SAASqtB,GACf9jC,KAAK02C,GAAGjgC,SAASqtB,IAErB72B,KAAM,WACFjN,KAAK62C,KAAK5pC,QAEd6pC,QAAS,WACL92C,KAAK62C,KAAKC,YAGT91C,EAAI,EAAG8V,EAAMs/B,EAAch2C,OAAY0W,EAAJ9V,EAASA,IACjDq1C,EAAUD,EAAcp1C,GACxBuJ,EAAM8rC,EAASC,GAAU,GACf,IAANt1C,IACAq1C,EAAQQ,KAAOT,EAAcp1C,EAAI,IAEjCA,IAAM8V,EAAM,IACZu/B,EAAQK,GAAKN,EAAcp1C,EAAI,GAGvC,OAAOq1C,GAOX,QAASU,GAAgBpM,GACrBA,EAAQ+L,GAAGG,KAAOlM,EAAQkM,KAC1BlM,EAAQkM,KAAKH,GAAK/L,EAAQ+L,GAC1B/L,EAAQ+L,GAAK/L,EAAQkM,KAAO,KAxtBhC,GAUI3D,GAEA1C,EACAM,EAsDAtd,EAAIwjB,EAnEJv3C,EAASO,KACTizC,EAAYvnC,KAAKurC,MAAsB,IAAhBvrC,KAAK4L,UAC5B4/B,EAAU1V,SAASx0B,UACnB0kC,EAAQ,qCACRc,EAAW,kBACXP,EAAgB,cAChBnjB,EAAY,GACZwiB,KACAC,EAAWxxC,EAAOuxC,QAClBE,EAAgB,WAEhBoB,GAAU,CAyDd,IAAI/C,EAAa9vC,EAAQ,oBACrByzB,EAAK,SAAS1gB,EAAQzS,EAAMguC,GACxBv7B,EAAO3Q,iBAAiB9B,EAAMguC,GAAU,IAE5C2I,EAAK,SAASlkC,EAAQzS,EAAMguC,GACxBv7B,EAAO1Q,oBAAoB/B,EAAMguC,GAAU,QAG9C,CAAA,IAAIwB,EAAa9vC,EAAQ,eAS1B,KAAM,IAAID,OAAM,wBARhB0zB,GAAK,SAAS7xB,EAAQw1C,EAAQC,GAC1Bz1C,EAAOmgB,YAAY,KAAOq1B,EAAQC,IAEtCJ,EAAK,SAASr1C,EAAQw1C,EAAQC,GAC1Bz1C,EAAOW,YAAY,KAAO60C,EAAQC,IAU1C,GAA4C50C,GAAxCwuC,GAAa,EAAOC,IA2BxB,IA1BI,cAAgBrxC,IAIhB4C,EAAa5C,EAAS4C,WACtBwuC,EAA2B,YAAdxuC,IAA+B2tC,UAAUqE,UAAUn/B,QAAQ,kBAAkC,UAAd7S,GAAwC,eAAdA,IAMtHwuC,IAAepxC,EAAS0J,MAevB0nC,EAAY,CACb,GAAInB,EAAa9vC,EAAQ,oBACrByzB,EAAG5zB,EAAU,mBAAoBmxC,OAQjC,IALAvd,EAAG5zB,EAAU,mBAAoB,WACF,YAAvBA,EAAS4C,YACTuuC,MAGJnxC,EAASiK,gBAAgB2hB,UAAYzrB,IAAW8hB,IAAK,CACrD,GAAI4J,GAAgB,WAChB,IAAIulB,EAAJ,CAIA,IACIpxC,EAASiK,gBAAgB2hB,SAAS,QAEtC,MAAOnoB,GAEH,WADA8J,GAAWse,EAAe,GAG9BslB,KAEJtlB,KAKR+H,EAAGzzB,EAAQ,OAAQgxC,GA+IvB,GAAImD,GAAS,SAAS7xB,GAClBA,EAAQA,EAAM8vB,UAAU,GAAGttC,MAAM,IAEjC,KADA,GAAewyC,GAAXz0C,KAAiB5B,EAAIqhB,EAAMjiB,OACxBY,KACHq2C,EAAOh1B,EAAMrhB,GAAG6D,MAAM,KACtBjC,EAAKy0C,EAAK,IAAMzH,EAAmByH,EAAK,GAE5C,OAAOz0C,IACT,SAASzB,KAAKmkB,EAAS4vB,QAAU5vB,EAAS4vB,OAAS5vB,EAASD,MAkB1DsgB,EAAU,WACV,GAAI3e,MACA7mB,GACA6a,GAAI,EAAG,EAAG,IACXioB,EAAO,eAEV,OAAmB,mBAARhC,OAAiD,kBAAnBA,MAAKqW,WAA4BrW,KAAKqW,UAAUn3C,GAAK4C,QAAQ,MAAS,MAAQkgC,EAE5GhC,MAEP/oB,OAAO7T,QACH6T,OAAO7T,OAAOlE,GAAK4C,QAAQ,MAAS,MAAQkgC,IAE5Cjc,EAAOswB,UAAYp/B,OAAO7T,QAIO,kBAA9Bkd,QAAOvU,UAAUuqC,WACxBp3C,EAAM8iC,EAAKsU,WACPp3C,EAAI6a,GAAsB,IAAjB7a,EAAI6a,EAAE5a,QAA6B,IAAbD,EAAI6a,EAAE,KAErCgM,EAAOka,MAAQ,SAASG,GACpB,MAAOA,GAAIkW,cAKnBvwB,EAAOswB,WAAatwB,EAAOka,OAE3ByE,EAAU,WACN,MAAO3e,IAEJA,GAEJ,MAqYXzc,GAAM+mC,GAKF57B,QAAS,WAMTw+B,MAAOA,EAIP5qB,SAOA/e,MAAOA,EAMPitC,cAAe7R,EAOfuL,UAAWA,EASX7G,WAAYA,IA4DhBiH,EAAQmG,WAOJjkB,GAAIA,EAOJwjB,GAAIA,EAQJU,aAAc,SAASxF,GACdnC,EAAahwC,EAAQ,SAGtBH,EAASoK,MAAM,uCAA8CkoC,EAAO,iBA8B/E,WAEG,GAAIyF,KAQJrG,GAAQsG,IAOJ/gB,IAAK,SAAS/zB,EAAM8S,GAChB+hC,EAAK70C,GAAQ8S,GASjBvL,IAAK,SAASvH,EAAM+0C,GAChB,GAAKF,EAAKliC,eAAe3S,GAAzB,CAGA,GAAI8S,GAAK+hC,EAAK70C,EAKd,OAHI+0C,UACOF,GAAK70C,GAET8S,QAoFnB07B,EAAQwG,OAAS,SAAS1E,GAGtB,GAAI9pB,GAAQ6sB,EAAWpC,EAAsBX,GAAQzuC,SACjD4xC,SAAU,SAASC,EAASC,GACxBrD,EAAO2E,UAAUvB,EAASC,IAE9BhgC,SAAU,SAASqtB,GACXsP,EAAO4E,SACP5E,EAAO4E,QAAQlU,QAGrB8S,EAAYhF,EAAYwB,EAAOnI,OAGrCjrC,MAAKy2C,OAAS7E,EAAYwB,EAAOnI,QAKjCjrC,KAAK82C,QAAU,WACXxtB,EAAMwtB,WAOV92C,KAAKi4C,YAAc,SAASzB,GACxBltB,EAAMqtB,SAASH,EAASI,IAG5BttB,EAAMrc,QAmIVqkC,EAAQ4G,IAAM,SAAS9E,EAAQ+E,GAG3B,GAAIA,EAAcnD,MACd,IAAK,GAAI1P,KAAU6S,GAAcnD,MAC7B,GAAImD,EAAcnD,MAAMv/B,eAAe6vB,GAAS,CAC5C,GAAIyN,GAASoF,EAAcnD,MAAM1P,EACX,mBAAXyN,KACPoF,EAAcnD,MAAM1P,IAChBA,OAAQyN,IAQ5B,GAAIzpB,GAAQ6sB,EAAWpC,EAAsBX,GAAQzuC,QAAQ,GAAI2sC,GAAQhoB,MAAM8uB,YAAYp4C,KAAMm4C,IAC7F1hC,SAAU,SAASqtB,GACXsP,EAAO4E,SACP5E,EAAO4E,QAAQlU,OAM3B9jC,MAAKy2C,OAAS7E,EAAYwB,EAAOnI,QAMjCjrC,KAAK82C,QAAU,WACXxtB,EAAMwtB,WAGVxtB,EAAMrc,QAqCVqkC,EAAQhoB,MAAMysB,oBAAsB,SAAS3C,GACzC,GAAIiF,GAAKhF,EAAO3N,EAAM4S,CAEtB,OAAQD,IACJ1B,SAAU,SAASH,EAAS1E,EAAQl8B,GAChC8vB,EAAK8Q,GACD5gC,GACAA,KAGRkhC,QAAS,WACDzD,IACAA,EAAM5qC,WAAWkS,YAAY04B,GAC7BA,EAAQ,OAGhBkF,WAAY,WACRD,EAAe1G,EAAYwB,EAAOnI,QAE9BmI,EAAOa,QAEP1pC,EAAM6oC,EAAOjlC,OACTvG,IAAK6qC,EAAsBW,EAAOnI,QAC9B2J,MAAOtvB,EAASgtB,SAAW,KAAOhtB,EAASitB,KAAOjtB,EAAS8sB,SAC3DsC,MAAOtB,EAAOgB,QACdD,MAAO,IAEXrxC,KAAM0uC,EAAgB4B,EAAOgB,QAAU,cAE3Cf,EAAQF,EAAYC,GACpB9B,EAAQsG,GAAG/gB,IAAIuc,EAAOgB,QAAS,SAASoE,GAKpC,MAJA9S,GAAO8S,EACPrrC,EAAW,WACPkrC,EAAI3B,GAAGjgC,UAAS,IACjB,GACI,SAASe,GACZ6gC,EAAI3B,GAAGH,SAAS/+B,EAAK8gC,QAK7B5S,EAAO0L,IAAkBwG,GAAGvtC,IAAI+oC,EAAOgB,SAAS,GAAM,SAAS58B,GAC3D6gC,EAAI3B,GAAGH,SAAS/+B,EAAK8gC,KAEzBnrC,EAAW,WACPkrC,EAAI3B,GAAGjgC,UAAS,IACjB,KAGXxJ,KAAM,WACFikC,EAAUmH,EAAIE,WAAYF,MA0CtC/G,EAAQhoB,MAAM2sB,eAAiB,SAAS7C,GAIpC,QAAS2E,GAAUvB,GACfrpC,EAAW,WACPkrC,EAAI3B,GAAGH,SAASC,EAAS8B,IAC1B,GAMP,QAASG,GAAO3G,GAEZ,GAAIlP,GAAMwQ,EAAOkB,IAAM,SAAWlB,EAAOa,OACrChwC,EAAK,eAAiByH,KAAKurC,MAAsB,IAAhBvrC,KAAK4L,SAG1Cg6B,GAAQsG,GAAG/gB,IAAI,eAAiBib,EAAO/uC,QAAQ,SAAU,KAAM,WAC3DuuC,EAAQhoB,MAAM2sB,eAAenE,GAAQwC,IAAMA,EAAMoE,EAAa5xC,UAE9D,KAAK,GADD8H,GAAQ0iC,EAAQhoB,MAAM2sB,eAAenE,GAAQljC,MACxC5N,EAAI,EAAGA,EAAI4N,EAAMxO,OAAQY,IAC9B4N,EAAM5N,IAEV4N,GAAMxO,OAAS,IAGfgzC,EAAOsF,aACPA,EAA8C,gBAAvBtF,GAAOsF,aAA4B94C,EAAS0Z,eAAe85B,EAAOsF,cAAgBtF,EAAOsF,cAIhHA,EAAe94C,EAAS+F,cAAc,OAKtC4E,EAAMmuC,EAAatvC,MAAO0nC,GAA2BsC,EAAOuF,eACxDjrC,OAAQ,OACRE,MAAO,OACP0rB,SAAU,QACVsf,MAAO,EACP/2B,IAAK,IAELnU,OAAQ,MACRE,MAAO,MACP0rB,SAAU,WACVpqB,SAAU,SACV0pC,MAAO,EACP/2B,IAAK,IAETjiB,EAAS0J,KAAKvC,YAAY2xC,GAI9B,IAAIG,GAAY,wBAA0BvS,EAAmBwL,EAAO/uC,QAAQ,SAAU,MAChF,UAAYtD,EAAO6lB,SAASgtB,SAC5B,WAAahM,EAAmBmL,EAAchyC,EAAO6lB,SAASI,OAC9D,SAAW4gB,EAAmBqL,EAAQlyC,EAAO6lB,SAASI,OACtD,OAAS4gB,EAAmBxX,EAClC4pB,GAAa9vC,UAAY,2EAA6E3E,EAAK,WAAa2+B,EAAM,+HAI9HA,EACA,4CAEAiW,EACA,oEAEAA,EACA,yDACAjW,EACA,2CAzEJ,GAAIyV,GACPhF,EAAaiF,EAAchE,EAAKoE,CA4E7B,OAAQL,IACJ1B,SAAU,SAASH,EAAS1E,EAAQl8B,GAChC0+B,EAAI2D,YAAY7E,EAAOgB,QAASoC,EAAQjhC,YACpCK,GACAA,KAGRkhC,QAAS,WACL,IACIxC,EAAIwE,eAAe1F,EAAOgB,SAE9B,MAAO/wC,IAEPixC,EAAM,KACFjB,IACAA,EAAM5qC,WAAWkS,YAAY04B,GAC7BA,EAAQ,OAGhBkF,WAAY,WAERD,EAAelF,EAAOnI,OAGtBqG,EAAQsG,GAAG/gB,IAAI,SAAWuc,EAAOgB,QAAU,QAAS,WAChDjnC,EAAW,WACPkrC,EAAI3B,GAAGjgC,UAAS,OAKxB66B,EAAQsG,GAAG/gB,IAAI,SAAWuc,EAAOgB,QAAU,aAAc2D,GAEzD3E,EAAOkB,IAAMtC,EAAWoB,EAAOkB,IAC/B,IAAIyE,GAAYtH,EAAc2B,EAAOkB,KACjC1+B,EAAK,WAEL07B,EAAQhoB,MAAM2sB,eAAe8C,GAAW9rC,MAAO,EAC/CqnC,EAAMhD,EAAQhoB,MAAM2sB,eAAe8C,GAAWzE,IAE9CA,EAAI0E,cAAc5F,EAAOgB,QAAShB,EAAOiB,OAAQzC,EAAYwB,EAAOnI,QAASmI,EAAOa,QAEhFb,EAAOa,SAEHnD,GAA2BsC,EAAOuF,eAClCpuC,EAAM6oC,EAAOjlC,OACTmrB,SAAU,QACVsf,MAAO,EACP/2B,IAAK,EACLnU,OAAQ,OACRE,MAAO,SAIfrD,EAAM6oC,EAAOjlC,OACTvG,IAAK6qC,EAAsBW,EAAOnI,QAC9B2J,MAAOhD,EAAYtsB,EAASI,MAC5BgvB,MAAOtB,EAAOgB,QACdD,MAAO,EACPQ,MAAOvB,EAAOiB,SAElBvxC,KAAM0uC,EAAgB4B,EAAOgB,QAAU,cAE3Cf,EAAQF,EAAYC,IAIxB9B,GAAQhoB,MAAM2sB,eAAe8C,IAAczH,EAAQhoB,MAAM2sB,eAAe8C,GAAW9rC,KAEnF2I,IAIK07B,EAAQhoB,MAAM2sB,eAAe8C,GAQ9BzH,EAAQhoB,MAAM2sB,eAAe8C,GAAWnqC,MAAMtI,KAAKsP,IANnD07B,EAAQhoB,MAAM2sB,eAAe8C,IACzBnqC,OAAQgH,IAEZ6iC,EAAOM,KAOnB9rC,KAAM,WACFikC,EAAUmH,EAAIE,WAAYF,MAwCtC/G,EAAQhoB,MAAMssB,qBAAuB,SAASxC,GAW1C,QAAS6F,GAAW12C,GAChB,GAAIA,EAAMk0C,OAEN,MAAO7E,GAAYrvC,EAAMk0C,OAE7B,IAAIl0C,EAAM22C,IAEN,MAAOtH,GAAYrvC,EAAM22C,IAE7B,IAAI32C,EAAMuvC,OAGN,MAAOxsB,GAASgtB,SAAW,KAAO/vC,EAAMuvC,MAE5C,MAAM,6CASV,QAASqH,GAAkB52C,GACvB,GAAIk0C,GAASwC,EAAW12C,EACpBk0C,IAAU6B,GAAgB/1C,EAAMK,KAAKuvC,UAAU,EAAGiB,EAAOgB,QAAQh0C,OAAS,IAAMgzC,EAAOgB,QAAU,KACjGiE,EAAI3B,GAAGH,SAASh0C,EAAMK,KAAKuvC,UAAUiB,EAAOgB,QAAQh0C,OAAS,GAAIq2C,GApCzE,GAAI4B,GACPhF,EACA+F,EACAd,CAqCG,OAAQD,IACJ1B,SAAU,SAASH,EAAS1E,EAAQl8B,GAChCwjC,EAAanB,YAAY7E,EAAOgB,QAAU,IAAMoC,EAAS1E,GAAUwG,GAC/D1iC,GACAA,KAGRkhC,QAAS,WACLE,EAAGj3C,EAAQ,UAAWo5C,GAClB9F,IACA+F,EAAe,KACf/F,EAAM5qC,WAAWkS,YAAY04B,GAC7BA,EAAQ,OAGhBkF,WAAY,WAER,GADAD,EAAe1G,EAAYwB,EAAOnI,QAC9BmI,EAAOa,OAAQ,CAEf,GAAIoF,GAAe,SAAS92C,GACpBA,EAAMK,MAAQwwC,EAAOgB,QAAU,WAE/BgF,EAAgB,eAAiB/F,GAAMvpC,cAAiBupC,EAAMvpC,cAAgBupC,EAAMvpC,cAAclK,SAClGo3C,EAAGj3C,EAAQ,UAAWs5C,GACtB7lB,EAAGzzB,EAAQ,UAAWo5C,GACtBhsC,EAAW,WACPkrC,EAAI3B,GAAGjgC,UAAS,IACjB,IAGX+c,GAAGzzB,EAAQ,UAAWs5C,GAGtB9uC,EAAM6oC,EAAOjlC,OACTvG,IAAK6qC,EAAsBW,EAAOnI,QAC9B2J,MAAOhD,EAAYtsB,EAASI,MAC5BgvB,MAAOtB,EAAOgB,QACdD,MAAO,IAEXrxC,KAAM0uC,EAAgB4B,EAAOgB,QAAU,cAE3Cf,EAAQF,EAAYC,OAIpB5f,GAAGzzB,EAAQ,UAAWo5C,GACtBC,EAAgB,eAAiBr5C,GAAO6hB,OAAU7hB,EAAO6hB,OAAS7hB,EAAO6hB,OAAOhiB,SAChFw5C,EAAanB,YAAY7E,EAAOgB,QAAU,SAAUkE,GAEpDnrC,EAAW,WACPkrC,EAAI3B,GAAGjgC,UAAS,IACjB,IAGXxJ,KAAM,WACFikC,EAAUmH,EAAIE,WAAYF,MAuCtC/G,EAAQhoB,MAAM0sB,sBAAwB,SAAS5C,GAC3C,GAAIiF,GAAKhF,EAAO3N,EAAM4S,CAEtB,OAAQD,IACJ1B,SAAU,SAASH,EAAS1E,EAAQl8B,GAChC8vB,EAAKzkC,KAAKjB,KAAMw2C,GACZ5gC,GACAA,KAGRkhC,QAAS,WACDzD,IACAA,EAAM5qC,WAAWkS,YAAY04B,GAC7BA,EAAQ,OAGhBkF,WAAY,WACRD,EAAe1G,EAAYwB,EAAOnI,QAE9BmI,EAAOa,QAEP1pC,EAAM6oC,EAAOjlC,OACTvG,IAAK6qC,EAAsBW,EAAOnI,QAC9B2J,MAAOhD,EAAYtsB,EAASI,MAC5BgvB,MAAOtB,EAAOgB,QACdD,MAAO,IAEXrxC,KAAM0uC,EAAgB4B,EAAOgB,QAAU,cAE3Cf,EAAQF,EAAYC,GACpBC,EAAMz9B,GAAK,SAAS4iC,GAOhB,aANOnF,GAAMz9B,GACb8vB,EAAO8S,EACPrrC,EAAW,WACPkrC,EAAI3B,GAAGjgC,UAAS,IACjB,GAEI,SAASe,GACZ6gC,EAAI3B,GAAGH,SAAS/+B,EAAK8gC,OAMzB14C,EAAS05C,UAAY1H,EAAYhyC,EAAS05C,WAAapF,EAAMU,QAC7D70C,EAAO8hB,IAAIyD,SAAW4uB,EAAMU,OAEhClP,EAAO3lC,EAAOwrB,aAAa3V,GAAG,SAAS4B,GACnC6gC,EAAI3B,GAAGH,SAAS/+B,EAAK8gC,KAEzBD,EAAI3B,GAAGjgC,UAAS,KAGxBxJ,KAAM,WACFikC,EAAUmH,EAAIE,WAAYF,MAwCtC/G,EAAQhoB,MAAMusB,cAAgB,SAASzC,GAKnC,QAASmG,GAAa/C,GAClB,GAAI5T,GAAMwQ,EAAOqB,cAAgBR,EAAS,MAAQ,OAASb,EAAOgB,OAClEgF,GAAatvC,cAAc0vC,YAAYhD,EAAS5T,GAGpD,QAAS6W,KACDxF,EACqB,MAAfyF,GAAqBzF,GACvBoE,EAAI3B,GAAGjgC,UAAS,IAIpB8iC,EAAa,SACblB,EAAI3B,GAAGjgC,UAAS,IAIxB,QAASkjC,GAAWnD,GAChB6B,EAAI3B,GAAGH,SAASC,EAASoD,GAG7B,QAASC,KACDpjC,GACAtJ,EAAW,WACPsJ,GAAS,IACV,GA5BX,GAAI4hC,GACApE,EAAQmF,EAAcU,EAAcJ,EAAYjjC,EAAUmjC,EAAcG,CA+B5E,OAAQ1B,IACJ1B,SAAU,SAASH,EAAS1E,EAAQl8B,GAChCa,EAAWb,EACX2jC,EAAa/C,IAEjBM,QAAS,WACLsC,EAAa3wC,WAAWkS,YAAYy+B,GACpCA,EAAe,KACXnF,IACA6F,EAAarxC,WAAWkS,YAAYm/B,GACpCA,EAAe,OAGvBvB,WAAY,WACRtE,EAASb,EAAOa,OAChByF,EAAa,EACbE,EAAehI,EAAYwB,EAAOnI,QAClCmI,EAAO4B,MAAQhD,EAAWoB,EAAO4B,OAE7Bf,GAEA3C,EAAQsG,GAAG/gB,IAAIuc,EAAOgB,QAAS,SAASoC,GAChCvC,GAAsB,UAAZuC,IAEVlF,EAAQsG,GAAG/gB,IAAIuc,EAAOgB,QAASuF,GAC/BF,OAKRM,EAAYtH,EAAsBW,EAAOnI,QACrC2J,MAAOxB,EAAO4B,MACdN,MAAOtB,EAAOgB,QACdD,MAAO,IAEX5pC,EAAM6oC,EAAOjlC,OACTvG,IAAKmyC,EAAY,IAAM3G,EAAOgB,QAC9BtxC,KAAM0uC,EAAgB4B,EAAOgB,QAAU,cAE3C0F,EAAe3G,EAAYC,KAG3BA,EAAOqB,aAAerB,EAAOnI,OAC7BqG,EAAQsG,GAAG/gB,IAAIuc,EAAOgB,QAASuF,GAInC,IAAInG,GAAS,WAET,GAAI3zC,GAAIu5C,GAAgBp5C,IACxBg3C,GAAGn3C,EAAG,OAAQ2zC,GACdlC,EAAQsG,GAAG/gB,IAAIuc,EAAOgB,QAAU,QAASyF,GACxC,QAAS14C,KACoC,kBAA/BtB,GAAEiK,cAAc0vC,YACvBC,IAGAtsC,EAAWhM,EAAM,OAK7Bi4C,GAAejG,GACXhlC,OACIvG,IAAKwrC,EAAO4B,MAAQ,MAAQ5B,EAAOgB,SAEvCZ,OAAQA,KAGhBvmC,KAAM,WACFikC,EAAUmH,EAAIE,WAAYF,MAyCtC/G,EAAQhoB,MAAM+rB,cAAgB,SAASjC,GAKnC,QAASmG,GAAa/C,GAClB,GAAKwD,EAAL,CAGA,GAAIpX,GAAMwQ,EAAOnI,OAAS,IAAOgP,KAAY,IAAMzD,GACjDvC,IAAWa,EAAakF,EAAclwC,cAAgBkwC,GAAe10B,SAAWsd,GAGtF,QAASsX,GAAY70B,GACjB80B,EAAW90B,EACXgzB,EAAI3B,GAAGH,SAAS4D,EAAShI,UAAUgI,EAAS9kC,QAAQ,KAAO,GAAI+kC,GAOnE,QAASC,KACL,GAAKC,EAAL,CAGA,GAAI50B,GAAO40B,EAAgBh1B,SAASI,KAAML,EAAO,GAAIhQ,EAAUqQ,EAAKrQ,QAAQ,IAC7D,KAAXA,IACAgQ,EAAOK,EAAKysB,UAAU98B,IAEtBgQ,GAAQA,GAAQ80B,GAChBD,EAAY70B,IAIpB,QAASk1B,KACLC,EAAStd,YAAYmd,EAAWI,GAnCpC,GAAIpC,GACWpE,EAAQuG,EAAQC,EAAcN,EAAUF,EAAQK,EAAiBN,EAC5ElF,EAAWsF,CAoCf,OAAQ/B,IACJ1B,SAAU,SAASH,GACf+C,EAAa/C,IAEjBM,QAAS,WACL/2C,EAAOo9B,cAAcqd,IACjBvG,IAAWa,IACXkF,EAAcvxC,WAAWkS,YAAYq/B,GAEzCA,EAAgB,MAEpBzB,WAAY,WAOR,GANAtE,EAASb,EAAOa,OAChBwG,EAAerH,EAAOnW,SACtBkd,EAAW,IAAM/G,EAAOgB,QACxB6F,EAAS,EACTnF,EAAY1B,EAAO0B,UACnBsF,EAAgBxI,EAAYwB,EAAOnI,QAC/BgJ,EAAQ,CAKR,GAJA1pC,EAAM6oC,EAAOjlC,OACTvG,IAAKwrC,EAAOnI,OACZnoC,KAAM0uC,EAAgB4B,EAAOgB,QAAU,cAEvCU,EACA1B,EAAOI,OAAS,WACZ8G,EAAkBv6C,EAClBw6C,IACAlC,EAAI3B,GAAGjgC,UAAS,QAGnB,CACD,GAAIikC,GAAQ,EAAG/uC,EAAMynC,EAAO9V,MAAQ,IACnC,QAASqd,KACN,KAAMD,EAAQ/uC,EACV,KAAM,IAAI7L,OAAM,qCAEpB,KACIw6C,EAAkBN,EAAclwC,cAAc8wC,OAAOpJ,EAAgB4B,EAAOgB,QAAU,aAE1F,MAAOyG,IAEHP,GACAC,IACAlC,EAAI3B,GAAGjgC,UAAS,IAGhBtJ,EAAWwtC,EAAQ,OAI/BX,EAAgB7G,EAAYC,OAG5BkH,GAAkBv6C,EAClBw6C,IACIzF,GACAkF,EAAgBp4B,OAChBy2B,EAAI3B,GAAGjgC,UAAS,KAGhBlM,EAAM6oC,GACFjlC,OACIvG,IAAKwrC,EAAOnI,OAAS,IAAMmI,EAAOgB,QAAU,GAAI37B,MAChD3V,KAAM0uC,EAAgB4B,EAAOgB,QAAU,aAE3CZ,OAAQ,WACJ6E,EAAI3B,GAAGjgC,UAAS,MAGxBujC,EAAgB7G,EAAYC,KAIxCnmC,KAAM,WACFikC,EAAUmH,EAAIE,WAAYF,MAqCtC/G,EAAQhoB,MAAMgsB,iBAAmB,WAC7B,GAAI+C,GACP5hC,EACOqkC,EAAQ,EAAGC,EAAO,EAAGC,EAAiB,EAE1C,OAAQ3C,IACJ9B,SAAU,SAASC,EAASC,GACxB,GAAIphC,GAAUmhC,EAAQnhC,QAAQ,KAAM4lC,EAAMzE,EAAQrE,UAAU,EAAG98B,GAASxQ,MAAM,IAC9E2xC,GAAUA,EAAQrE,UAAU98B,EAAU,GAElC4lC,EAAI,IAAMH,IACVE,EAAiB,GACbvkC,GACAA,GAAS,IAGb+/B,EAAQp2C,OAAS,IACjBi4C,EAAIxB,KAAKF,SAASsE,EAAI,GAAK,IAAMH,EAAQ,IAAME,EAAgBvE,GAC3DsE,GAAQE,EAAI,KACZF,EAAOE,EAAI,GACX5C,EAAI3B,GAAGH,SAASC,EAASC,MAKrCE,SAAU,SAASH,EAASC,EAAQ7gC,GAChColC,EAAiBxE,EACjB//B,EAAWb,EACXyiC,EAAIxB,KAAKF,SAASoE,EAAO,OAASD,EAAS,IAAMtE,EAASC,MAyCtEnF,EAAQhoB,MAAMisB,cAAgB,SAASnC,GAGnC,QAASzkB,KACL,GAAIykB,EAAO1pB,QAA2B,IAAjB9a,EAAMxO,OAEvB,WADA22C,GAAgBsB,EAGpB,KAAI6C,GAA4B,IAAjBtsC,EAAMxO,SAAgB+6C,EAArC,CAGAD,GAAU,CACV,IAAI1E,GAAU5nC,EAAM6E,OAEpB4kC,GAAIxB,KAAKF,SAASH,EAAQ5zC,KAAM4zC,EAAQC,OAAQ,SAAS3S,GACrDoX,GAAU,EACN1E,EAAQ//B,UACRtJ,EAAW,WACPqpC,EAAQ//B,SAASqtB,IAClB,GAEPnV,OApBR,GAAI0pB,GAAgD8C,EAA3CvsC,KAAYssC,GAAU,EAAM3E,EAAW,GAAgBd,EAAY,EAAGS,GAAO,EAAOkF,GAAa,CAuB1G,OAAQ/C,IACJprC,KAAM,WACEijC,EAAMkD,KACNA,MAEAA,EAAOqC,YACPA,EAAYrC,EAAOqC,UACnB2F,GAAa,GAEbhI,EAAO8C,KACPA,GAAO,EAGPmC,EAAIxB,KAAK5pC,QAGjBwJ,SAAU,SAASqtB,GACfoX,GAAU,CACV,IAAIxE,GAAK2B,EAAI3B,EACb/nB,KACA+nB,EAAGjgC,SAASqtB,IAEhByS,SAAU,SAASC,EAASC,GACxB,GAAI2E,EAAY,CACZ,GAAI/lC,GAAUmhC,EAAQnhC,QAAQ,KAAMgmC,EAAM1b,SAAS6W,EAAQrE,UAAU,EAAG98B,GAAU,GAClFkhC,IAAYC,EAAQrE,UAAU98B,EAAU,GAC5B,IAARgmC,IACIjI,EAAOoC,SACPe,EAAW3G,EAAmB2G,IAElC8B,EAAI3B,GAAGH,SAASA,EAAUE,GAC1BF,EAAW,QAIf8B,GAAI3B,GAAGH,SAASC,EAASC,IAGjCE,SAAU,SAASH,EAASC,EAAQ7gC,GAC5Bw9B,EAAOoC,SACPgB,EAAUlQ,EAAmBkQ,GAEjC,IAAoBzpB,GAAhBuuB,IACJ,IAAIF,EAAY,CAEZ,KAA0B,IAAnB5E,EAAQp2C,QACX2sB,EAAWypB,EAAQrE,UAAU,EAAGsD,GAChCe,EAAUA,EAAQrE,UAAUplB,EAAS3sB,QACrCk7C,EAAUh1C,KAAKymB,EAGnB,MAAQA,EAAWuuB,EAAU7nC,SACzB7E,EAAMtI,MACF1D,KAAM04C,EAAUl7C,OAAS,IAAM2sB,EAC/B0pB,OAAQA,EACRhgC,SAA+B,IAArB6kC,EAAUl7C,OAAewV,EAAK,WAKhDhH,GAAMtI,MACF1D,KAAM4zC,EACNC,OAAQA,EACRhgC,SAAUb,GAGdsgC,GACAmC,EAAIxB,KAAK5pC,OAGT0hB,KAGRmoB,QAAS,WACLqE,GAAa,EACb9C,EAAIxB,KAAKC,aAuCrBxF,EAAQhoB,MAAMosB,eAAiB,SAAStC,GAGpC,QAASmI,KACLC,EAAW9vC,KAAK4L,SAAS/B,SAAS,IAAI48B,UAAU,GAChDkG,EAAIxB,KAAKF,SAAS6E,GAJtB,GAAInD,GAAKmD,EAAUC,CAOnB,OAAQpD,IACJ9B,SAAU,SAASC,EAASC,GACxB,GAAIphC,GAAUmhC,EAAQnhC,QAAQ,IACd,MAAZA,EACImhC,IAAYgF,EACZnD,EAAI3B,GAAGjgC,UAAS,GAEVglC,IACNA,EAAcjF,EACTpD,EAAOuC,UACR4F,IAEJlD,EAAIxB,KAAKF,SAASH,IAIlBA,EAAQrE,UAAU,EAAG98B,KAAaomC,GAClCpD,EAAI3B,GAAGH,SAASC,EAAQrE,UAAU98B,EAAU,GAAIohC,IAI5DE,SAAU,SAASH,EAASC,EAAQ7gC,GAChCyiC,EAAIxB,KAAKF,SAAS6E,EAAW,IAAMhF,EAASC,EAAQ7gC,IAExDa,SAAU,WACF28B,EAAOuC,UACP4F,OA2ChBjK,EAAQhoB,MAAM8uB,YAAc,SAAS5/B,EAAO46B,GASxC,QAASsI,GAAM94C,GACXA,EAAK+4C,QAAU,MACftD,EAAIxB,KAAKF,SAASiF,EAAWtE,UAAU10C,IAU3C,QAASi5C,GAAcC,EAAYxW,GAC/B,GAAIz6B,GAAQ4M,MAAMzK,UAAUnC,KAE5B,OAAO,YACH,GAA0B4L,GAAtB1O,EAAIyC,UAAUpK,OAAkBo2C,GAChClR,OAAQA,EAGRv9B,GAAI,GAAiC,kBAArByC,WAAUzC,EAAI,IAE1BA,EAAI,GAAiC,kBAArByC,WAAUzC,EAAI,IAE9B0O,GACIqtB,QAASt5B,UAAUzC,EAAI,GACvByM,MAAOhK,UAAUzC,EAAI,IAEzByuC,EAAQnO,OAASx9B,EAAM5J,KAAKuJ,UAAW,EAAGzC,EAAI,KAI9C0O,GACIqtB,QAASt5B,UAAUzC,EAAI,IAE3ByuC,EAAQnO,OAASx9B,EAAM5J,KAAKuJ,UAAW,EAAGzC,EAAI,IAElDg0C,EAAW,MAAQC,GAAqBvlC,EACxC+/B,EAAQvyC,GAAK+3C,GAIbxF,EAAQnO,OAASx9B,EAAM5J,KAAKuJ,UAAW,GAEvCsxC,EAAWG,aAAyC,IAA1BzF,EAAQnO,OAAOjoC,SACzCo2C,EAAQnO,OAASmO,EAAQnO,OAAO,IAGpCqT,EAAMlF,IAYd,QAAS0F,GAAe5W,EAAQrhC,EAAI2R,EAAIyyB,GACpC,IAAKzyB,EAUD,YATI3R,GACAy3C,GACIz3C,GAAIA,EACJuQ,OACI2wB,KAAM,OACNqR,QAAS,0BAOzB,IAAI1S,GAAStvB,CACTvQ,IACA6/B,EAAU,SAAS3zB,GACf2zB,EAAUoT,EACVwE,GACIz3C,GAAIA,EACJkM,OAAQA,KAGhBqE,EAAQ,SAASgiC,EAAS5zC,GACtB4R,EAAQ0iC,CACR,IAAI1/B,IACAvT,GAAIA,EACJuQ,OACI2wB,KAAM,OACNqR,QAASA,GAGb5zC,KACA4U,EAAIhD,MAAM5R,KAAOA,GAErB84C,EAAMlkC,KAIVssB,EAAUtvB,EAAQ0iC,EAGjBxyC,EAAQ2jC,KACTA,GAAUA,GAEd,KACI,GAAIl4B,GAASyF,EAAG0vB,OAAO/6B,MAAMqL,EAAGu7B,MAAO9I,EAAO1jC,QAAQm/B,EAAStvB,IAC1D07B,GAAM//B,IACP2zB,EAAQ3zB,GAGhB,MAAOgsC,GACH3nC,EAAM2nC,EAAI3F,UAxHlB,GAAI6B,GAAKuD,EAAaxI,EAAOwI,YAAcjW,IACvCqW,EAAmB,EAAGD,IA2H1B,OAAQ1D,IACJ9B,SAAU,SAASC,GACf,GAAI5zC,GAAOg5C,EAAW1a,MAAMsV,EAC5B,IAAI5zC,EAAK0iC,OAED8N,EAAOjrC,OACPirC,EAAOjrC,OAAOvF,EAAM84C,GAGpBQ,EAAet5C,EAAK0iC,OAAQ1iC,EAAKqB,GAAImvC,EAAO4B,MAAMpyC,EAAK0iC,QAAS1iC,EAAKylC,YAGxE,CAED,GAAI5xB,GAAWslC,EAAWn5C,EAAKqB,GAC3BrB,GAAK4R,MACDiC,EAASjC,OACTiC,EAASjC,MAAM5R,EAAK4R,OAGnBiC,EAASqtB,SACdrtB,EAASqtB,QAAQlhC,EAAKuN,cAEnB4rC,GAAWn5C,EAAKqB,MAG/BgJ,KAAM,WACF,GAAImmC,EAAOnI,OAEP,IAAK,GAAI3F,KAAU8N,GAAOnI,OAClBmI,EAAOnI,OAAOx1B,eAAe6vB,KAC7B9sB,EAAM8sB,GAAUuW,EAAczI,EAAOnI,OAAO3F,GAASA,GAIjE+S,GAAIxB,KAAK5pC,QAEb6pC,QAAS,WACL,IAAK,GAAIxR,KAAU8N,GAAOnI,OAClBmI,EAAOnI,OAAOx1B,eAAe6vB,IAAW9sB,EAAM/C,eAAe6vB,UACtD9sB,GAAM8sB,EAGrB+S,GAAIxB,KAAKC,aAIrBr3C,EAAO6xC,QAAUA,GACdvxC,OAAQH,SAAU0lB,SAAUvlB,OAAOoN,WAAYyiC,mBAAoBtJ,mBAEtE,IAAI/mC,GAOJA,IAAK,WAYJ,GAAI68C,GAAiB,SAASpgC,EAAM0J,GAEnC,QAAS22B,GAAkBh6B,GAC1B,GAAIi6B,KAWJ,OAVAj6B,GAAMtf,QAAQ,kBAAmB,IAC/BA,QAAQ,iBAAkB,KAC1BA,QAAQ,UAAW,QACnBA,QAAQ,aAAc,SAAUo4B,GACtB,QAANA,EACHmhB,EAAOn4C,MAEPm4C,EAAOh2C,KAAK60B,KAGRmhB,EAAOriC,KAAK,IAAIlX,QAAQ,MAA2B,MAApBsf,EAAM1X,OAAO,GAAa,IAAM,IAMvE,MAHA+a,GAAO62B,EAAU72B,GAAQ,IACzB1J,EAAOugC,EAAUvgC,GAAQ,IAEjB0J,GAAS1J,GAAe0J,EAAK4sB,UAAYt2B,EAAKs2B,WACpD5sB,EAAK4sB,UAAY5sB,EAAK82B,UAAY92B,EAAK82B,UAAYxgC,EAAKwgC,WACzDH,EAAkB32B,EAAK4sB,UAAY5sB,EAAK82B,WAAyC,MAA5B92B,EAAK0sB,SAASznC,OAAO,GAAa+a,EAAK0sB,SAAY1sB,EAAK0sB,UAAap2B,EAAKwgC,YAAcxgC,EAAKo2B,SAAW,IAAM,IAAMp2B,EAAKo2B,SAASvnC,MAAM,EAAGmR,EAAKo2B,SAASC,YAAY,KAAO,GAAK3sB,EAAK0sB,SAAYp2B,EAAKo2B,WAC3P1sB,EAAK4sB,UAAY5sB,EAAK82B,WAAa92B,EAAK0sB,SAAW1sB,EAAKwvB,OAAUxvB,EAAKwvB,QAAUl5B,EAAKk5B,QACvFxvB,EAAKL,KAJkB,MAgBrBk3B,EAAY,SAAS3Z,GACxB,GAAIhqB,GAAI2I,OAAOqhB,GAAK7/B,QAAQ,aAAc,IAAIjB,MAAM,qGAEpD,OAAQ8W,IACN8M,KAAW9M,EAAE,IAAM,GACnB05B,SAAW15B,EAAE,IAAM,GACnB4jC,UAAW5jC,EAAE,IAAM,GACnB25B,KAAW35B,EAAE,IAAM,GACnB6jC,SAAW7jC,EAAE,IAAM,GACnBm5B,KAAWn5B,EAAE,IAAM,GACnBw5B,SAAWx5B,EAAE,IAAM,GACnBs8B,OAAWt8B,EAAE,IAAM,GACnByM,KAAWzM,EAAE,IAAM,IAChB,KAGN,QAMC8jC,kBAAmB,SAAS/5C,EAAKmG,GAChC,MAAW,QAAPnG,GAAwB,MAAPA,GAAsB,UAAPA,EAC5BE,OAEAiG,GAsCT6zC,QAWAp4C,OAAQ,SAAUyqC,EAAI7uC,EAAKy8C,GAC1B,GAAIC,GAAwB,kBAAR18C,GAChB06B,EAAQmU,EAAKA,EAAGnqC,MAAM,QACtB+c,EAAS5hB,IACbG,GAAMA,MAGW,OAAb06B,EAAM,KACTA,EAAQA,EAAMhwB,MAAM,GAIrB,KAAK,GAAI7J,GAAI,EAAG8V,EAAM+jB,EAAMz6B,OAAY0W,EAAJ9V,EAASA,IACvC4gB,EAAOiZ,EAAM75B,MACjB4gB,EAAOiZ,EAAM75B,IAAM67C,GAAU77C,EAAI,GAAK8V,EAAM3W,MAE7CyhB,EAASA,EAAOiZ,EAAM75B,GAIvB,KAAK67C,EACJ,IAAK,GAAIhwC,KAAQ1M,IACY,mBAAjByhB,GAAO/U,IAAyB+vC,KAC1Ch7B,EAAO/U,GAAQ1M,EAAI0M,GAKtB,OAAO+U,IAQRxd,KAAM,WACL,GAAI04C,GAAK,WACR,OAA2B,OAAjB,EAAEpxC,KAAK4L,UAAmB,GAAG/B,SAAS,IAAI48B,UAAU,GAE/D,OAAQ2K,KAAKA,IAAK,IAAIA,IAAK,IAAIA,IAAK,IAAIA,IAAK,IAAIA,IAAKA,IAAKA,KAS5Dz7C,QAAS,SAASyH,EAAOi0C,GACxB,MAAOz8C,QAAOe,QAAQyH,EAAOi0C,GAAS,IASvCC,eAAgB,SAASpa,GACxB,GAGCb,GACAD,EAJGQ,EAAO,8CACV2a,EAAWra,EAAI3/B,cACf43B,EAAQyH,EAAKh7B,KAAM21C,EAIpB,KACClb,EAAezc,SAASI,KACvB,MAAOriB,GAGR0+B,EAAeniC,SAAS+F,cAAc,KACtCo8B,EAAarc,KAAO,GACpBqc,EAAeA,EAAarc,KAG7Bqc,EAAeA,EAAa9+B,cAIvB43B,IACJoiB,EAAWb,EAAera,EAAakb,GAAUh6C,cACjD43B,EAAQyH,EAAKh7B,KAAM21C,IAIpBnb,EAAeQ,EAAKh7B,KAAMy6B,MAG1B,IAAI/c,KAAY6V,IACbA,EAAO,KAAQiH,EAAc,IAAOjH,EAAO,KAAQiH,EAAc,KAChEjH,EAAO,KAAuB,UAAfA,EAAO,GAAkB,KAAO,WAC9CiH,EAAc,KAA8B,UAAtBA,EAAc,GAAkB,KAAO,SAElE,OAAO9c,IAQRk4B,gBAAiB,SAASC,GACzB,GAAIC,GACa,gBAATC,MAAoBF,YAAsBE,MACjDF,GAAoC,gBAAfA,IAA0D,gBAAxBA,GAAW38C,UAAwD,gBAAxB28C,GAAW92C,SAG1Gi3C,EACoB,gBAAhBC,aAA2BJ,YAAsBI,aACxDJ,GAAoC,gBAAfA,IAAmD,IAAxBA,EAAW38C,UAAiD,gBAAxB28C,GAAW92C,QAGhG,OAAQ+2C,IAAWE,GAgBpBE,IAAK,WACJ,GAAKz9C,OAAOyuC,QAAZ,CAIA,GAAIlJ,GAAS,MACT5uB,EAAOe,MAAMzK,UAAUnC,MAAMN,MAAMC,UAEnCkM,GAAKtW,OAAS,GAAKsW,EAAK,IAAM3W,QAAOyuC,UACxClJ,EAAS5uB,EAAKjD,SAGX1T,OAAOyuC,QAAQlJ,IAClBvlC,OAAOyuC,QAAQlJ,GAAQ/6B,MAAMxK,OAAOyuC,QAAS93B,KAS/CwqB,MAAO,SAASG,GACf,MAAOJ,MAAKC,MAAMG,IAoBnBiW,UAAW,SAASxuC,EAAO20C,EAAUC,GACpC,MAAOzc,MAAKqW,UAAUxuC,EAAO20C,EAAUC;EAOxChoC,QAAS,WAAa,MAAO,aAwC/BnW,GAAGgF,OAAO,cAAe,WAGxB,GAAIo5C,GAAMp+C,GAAG6E,OACTw5C,EAAOr+C,GAAG6E,OAEVy5C,GACHC,iBACAC,mBACAC,oBACAC,kBACAC,mBACAC,aACAC,cACAC,wBAGGC,GACHH,UAAW,SAASI,EAAWC,GAE9B,GAAIC,GAAQ,IAGRl/C,IAAG29C,gBAAgBqB,EAAUh5B,OAShCk5B,EAAQn+C,OAAOi+C,EAAUh5B,MAGzBk5B,EAAMvoB,OAAOsoB,KAVbD,EAAUh5B,KAAOjlB,OAAOk+C,GAASn0C,IAAI,GAErCo0C,EAAQn+C,OAAOi+C,EAAUh5B,OAY1BjlB,OAAO,QAAQ41B,OAAOuoB,IAEvBL,WAAY,SAASM,GAGjBA,GAAeA,EAAYC,KAAOD,EAAYC,IAAI7H,SAA8C,kBAA5B4H,GAAYC,IAAW,QAE7FD,EAAYC,IAAI7H,UAGT4H,GAAeA,EAAYC,KAAOD,EAAYC,IAAI7H,SAEzDv3C,GAAGi+C,IAAIkB,EAAYtL,OAAOwL,MAAQ,kGAInCt+C,OAAOo+C,EAAYtL,OAAO7tB,MAAMwX,QAAQ,IAAK,WAC5Cz8B,OAAON,MAAM0pB,aAKZm1B,EAAiB,SAAS53B,EAAO63B,EAAYC,EAAiBC,GAGjEC,EAAeh4B,EAGf,IAAIpM,IACH5I,KAAkC8sC,EAClCjwB,UAAWgwB,EACXI,QAAU3/C,GAAG29C,gBAAgB6B,GAAoBA,EAAkB,KAGpE,KAAIlkC,EAAQ5I,OAAS4I,EAAQqkC,QAE5B,KAAM,iIAGP,IAAGrkC,EAAQqkC,UAAYF,EAEtB,KAAM,wHAGP,OAAOnkC,IAGJokC,EAAiB,SAASE,GAG7B,GAAGxB,GAAOwB,GAAUvB,GAAQuB,EAAU,KAAM,yHAGzCC,EAAiB,SAASD,EAAQE,EAAUP,GAK/C,GAFAG,EAAeE,GAEXL,GAAeO,EAKd,IAAIP,GAAcO,EAEtBxB,EAAmBwB,UAGf,IAAGP,IAAeO,EACvB,CACCP,EAAaA,EAAW77C,aAExB,KAAI,GAAIq8C,KAAmBzB,GAC3B,CAIC,IAAI,GAHA0B,GAAkB1B,EAAmByB,GACrCE,KAEIx+C,EAAI,EAAGy+C,EAAKF,EAAgBn/C,OAAYq/C,EAAJz+C,EAAQA,IACpD,CACC,GAAI0+C,GAAsBH,EAAgBv+C,EACvC0+C,KAEEA,EAAoB5wB,WAAa4wB,EAAoB5wB,UAAU7rB,eAAiB67C,GAEnFU,EAAUl5C,KAAKo5C,IAKlBH,EAAkBC,OAGf,IAAGV,GAAcjB,EAAmBwB,GACzC,CACCP,EAAaA,EAAW77C,aAIxB,KAAI,GAFA08C,MAEIC,EAAW,EAAGC,EAAKhC,EAAmBwB,GAAUj/C,OAAmBy/C,EAAXD,EAAeA,IAC/E,CACC,GAAIE,GAAiBjC,EAAmBwB,GAAUO,EAC/CE,KAEEA,EAAehxB,WAAagxB,EAAehxB,UAAU7rB,eAAiB67C,GAEzEa,EAAqBr5C,KAAKw5C,IAK7BjC,EAAmBwB,GAAYM,GAIjC,QAOCI,SAAU,WAMT,aAFO//C,MAAK+/C,SAELpC,GASRqC,aAAc,WAMb,aAFOhgD,MAAKggD,aAELpC,GAURqC,UAAW,SAASh5B,EAAOo4B,GAG1B,GAAGp4B,GAAS22B,EAEX,KAAM,iFAGP,KAAGC,IAAsBA,EAAmBwB,GA+C3C,KAAM,2DAzCN,KAAI,GAHAa,MAGIl/C,EAAI,EAAG+V,EAAIvM,UAAUpK,OAAY2W,EAAJ/V,EAAOA,IAE3Ck/C,EAAa55C,KAAKkE,UAAUxJ,GAG7B,IAA2C,IAAxC68C,EAAmBwB,GAAUj/C,QAAgBk+C,EAAgBe,GAG/D,MADAf,GAAgBe,GAAU90C,MAAMhL,GAAI2gD,GAC7BlgD,IAEH,IAA2C,IAAxC69C,EAAmBwB,GAAUj/C,SAAiBy9C,EAAmBwB,GAExE,MAAOr/C,KAIR,KAAI,GAAI4/C,GAAW,EAAGO,EAAMtC,EAAmBwB,GAAUj/C,OAAmB+/C,EAAXP,EAAgBA,IACjF,CACC,GAAI/kC,GAAUgjC,EAAmBwB,GAAUO,EAG3C,IAAI/kC,EAAQqkC,SAAW10C,UAAU,IAAMA,UAAU,GAAG+a,MAAQ/a,UAAU,GACtE,CACC,GAAI41C,GAAW9/C,OAAOkK,UAAU,GAAG+a,MAAM2Q,OAAO1rB,UAAU,GAC1DlK,QAAOua,EAAQqkC,SAAShpB,OAAOkqB,OAEvBvlC,GAAQqkC,SAAW10C,UAAU,KAAOA,UAAU,GAAG+a,MAAQ/a,UAAU,IAG3EA,UAAU,GAAG+a,KAAOjlB,OAAOkK,UAAU,IAAIH,IAAI,GAE7C/J,OAAOua,EAAQqkC,SAAShpB,OAAO1rB,UAAU,GAAG+a,OAI5C1K,EAAQ5I,KAAK1H,MAAMhL,GAAI2gD,GAS1B,MAAOlgD,OAoDRwzB,GAAI,SAASvM,EAAOo4B,EAAUN,GAE7B,GAAID,GAAa,IAEjB,KAAIO,EAEH,KAAM,yGAIP,IAAGA,EAAShqC,QAAQ,KAAO,GAC3B,CACC,GAAIgrC,GAAShB,EAASx6C,MAAM,IAC5Bw6C,GAAWgB,EAAO,GAClBvB,EAAauB,EAAO,GAGrB,IAAGxC,IAAsBA,EAAmBwB,GAa3C,KAAM,2DAGP,OAdCxB,GAAmBwB,GAAU/4C,KAC5Bu4C,EACC53B,EACA63B,EACAC,EACa,aAAZM,IASGr/C,MAeRsrB,IAAK,SAASrE,EAAOo4B,GAEpB,GAAIP,GAAa,IAEjB,KAAIO,EAEH,KAAM,yGAIP,IAAGA,EAAShqC,QAAQ,KAAO,GAC3B,CACC,GAAIgrC,GAAShB,EAASx6C,MAAM,IAC5Bw6C,GAAWgB,EAAO,GAClBvB,EAAauB,EAAO,GAGrB,IAAGxC,IAAsBA,EAAmBwB,GAU3C,KAAM,2DAGP,OAXCD,GACCn4B,EACAo4B,EACAP,GAQK9+C,WAKVT,GAAGgF,OAAO,aAKT+7C,YAAa,WAEZ,OAsBCC,gBAAiB,gBAoBjBC,kBAAmB,kBAuCnBC,WAAY,YAoBZC,iBAAkB,iBAoBlBC,mBAAoB,mBAiCpBC,YAAa,aAoBbC,kBAAmB,kBAoBnBC,uBAAwB,4BAQ3BvhD,GAAGgF,OAAO,IAaTw8C,IAAK,WACJ,OAOC9zC,KAAK,eAOP+zC,WAQCpC,MAAO,GAMP/4C,WAOAo7C,qBAAqB,EAUrBvzC,OAAQ,EASRwzC,WAAY,GAWZC,UAAU,EAYVC,gBAAiB,KAWjBC,iBAQAC,YAAa,GASb5pB,SAAU,EAUV6pB,YAAa,EAUb9pB,SAAU,IAOV30B,KAAM,GASNyiB,KAAM1iB,OASN2+C,GAAI3+C,OAYJ4+C,UAMDC,aAQCC,QAOAC,iBAOAhsB,WAOA7pB,WAMD81C,YAOCj/C,QAOA6zB,KAAM,GAONkN,OAAQ,IAOTme,iBAYCC,eAAgB,aAchB5D,UAAW,aAWX6D,gBAAiB,aAOjBC,WAAW,EAYXC,OAAQ,KAORC,mBAAoB,IAOpBC,iBAAiB,EASjBC,kBAAmB,GASnBC,kBAKAC,IAOCC,MAOCC,gBAAiB,OAMjBC,YAAa,GAOb/0C,QAAS,GASTg1C,YAAY,EAOZvoB,OAAQ,IAkEVqM,KAsBCv0B,SAAU,aAsBV7R,KAAM,aAmBNuiC,IAAK,cAgBNggB,YAAa,aAebC,WAAY,gBAQdtjD,GAAGgF,OAAO,aAKTu+C,IAAK,WAGJ,GAAIC,GAAU,KAEd,QAWCC,IAAKD,EAAU,MASfE,cAAeF,EAAU,gBAUzBG,UAAWH,EAAU,YAYrBI,SAAUJ,EAAU,WAcpBK,iBAAkBL,EAAU,mBAU5BM,KAAMN,EAAU,OAShBO,eAAgBP,EAAU,qBAQ5BQ,OAAQ,WAEP,GAAIC,GAAoB,OAEpBC,EAA0B,YAE9B,QAaCC,kBAAmBF,EAAoB,eAcvCG,iBAAkBH,EAAoB,eActCI,wBAAyBH,EAA0B,eASnDI,uBAAwBJ,EAA0B,cAclDK,wBAAyBL,EAA0B,mBAIrDM,eAAgB,oBAOhBC,SASCC,MAAO,YAYPC,KAAM,iBASNC,IAAK,UASLC,aAAc,kBAQdC,OAAQ,aAWTC,OASCC,eAAgB,eAQhBC,MAAO,QAQPC,KAAM,OASNC,KAAM,OASNC,OAAQ,SASRC,SAAU,cAQZrlD,GAAGgF,OAAO,SAAU,WAEnB,GAAIqoC,GAAU,GAAI6C,gBACjBvC,UAAS,GAMV,OAFAN,GAAQ8B,gBAAgB,IAWvBmW,YAAa,WACZ,MAAOpV,eAAcziC,UAAU8hC,KAAKvkC,MAAMqiC,KAAY/hC,MAAM5J,KAAKuJ,aASlEskC,KAAM,WAEL,MADAvvC,IAAG24C,IAAI4M,UAAUvlD,GAAGwlD,UAAUf,QAAQC,SAAUp5C,MAAM5J,KAAKuJ,YACpDilC,cAAcziC,UAAU8hC,KAAKvkC,MAAMqiC,KAAY/hC,MAAM5J,KAAKuJ,aAalEmkC,KAAM,SAASpsC,EAAOyiD,EAAe3W,GACpC,MAAOzB,GAAQ+B,KAAKpsC,EAAOyiD,EAAe3W,IAQ3C/iB,IAAK,SAAS/oB,EAAO8rC,GACpB,MAAOzB,GAAQthB,IAAI/oB,EAAO8rC,IAS3B7a,GAAI,SAASjxB,EAAO8rC,GACnB,MAAOzB,GAAQpZ,GAAGjxB,EAAO8rC,IAU1B9kB,KAAM,SAAShnB,EAAO8rC,GACrB,MAAOzB,GAAQrjB,KAAKhnB,EAAO8rC,SAQ9B9uC,GAAGgF,OAAO,MAAO,WAChB,GAAIw3C,MACAkJ,EAAqB,GACrBC,KACAC,EAAW,GAAInlC,QAAO,IAAMzgB,GAAGwlD,UAAUf,QAAQC,OACjDmB,EAAQ,GAAIplC,QAAO,IAAMzgB,GAAGwlD,UAAUf,QAAQG,KAC9CkB,EAAgB,GAAIrlC,QAAO,IAAMzgB,GAAGwlD,UAAUf,QAAQI,cACtDkB,EAAe,GAAItlC,QAAO,IAAMzgB,GAAGwlD,UAAUf,QAAQE,MACrDqB,EAAW,GAAIvlC,QAAO,IAAMzgB,GAAGwlD,UAAUf,QAAQK,QAQjDmB,EAA8B,WAEjC,GAAIjH,GACAkH,GAAW,EAIXC,KAEAC,EAAS,GAAIrU,SAAQwG,QACxBC,UAAW,SAASvB,EAASC,GAG5B,IAAKgP,GAAYH,EAAankD,KAAKq1C,GAAU,CAC5CA,EAAUA,EAAQzzC,QAAQuiD,EAAc,GACxC,IAAIM,GAAWrmD,GAAG2hC,MAAMsV,EAGD,IAAnBoP,EAASxlD,SACZm+C,EAAYqH,EAAS,GAGrBV,EAAM3G,EAAU2C,aACf9N,OAAOmL,EACPoH,OAAOA,GAIRpmD,GAAGsmD,cAActH,IAAaqH,EAAS,KAGvCtlD,OAAOuB,KAAK6jD,EAAiB,WAC5B/L,EAAW4E,EAAW/H,EAASC,KAGhCgP,GAAW,OAEFA,GAEV9L,EAAW4E,EAAW/H,EAASC,GAG/BiP,EAAgBp/C,KAAKkwC,OAcrBsP,EAA8B,SAASvH,EAAWwH,GAErD,GAAIr6B,GAAYprB,OAAOi+C,EAAUh5B,KAMjC,IAJKmG,EAAUjE,GAAG,IAAMloB,GAAGwlD,UAAUjC,IAAIG,gBACxCv3B,EAAUxkB,KAAK,IAAM3H,GAAGwlD,UAAUjC,IAAIG,gBAGlCv3B,EAAUtrB,OAEd,WADAb,IAAGi+C,IAAI,gEAIR,IAAIwI,IACHC,UAAU,KACV78C,OACCwE,MAAM,QAIJ2wC,GAAU7wC,SACbs4C,EAAY58C,MAAMsE,OAAS6wC,EAAU7wC,OAAS,KAG/C,IAAIi4C,GAAS,GAAIrU,SAAQwG,QACxB7M,OAAQga,EACRv5B,UAAWA,EAAUrhB,IAAI,GACzB8D,MAAM63C,EACNjO,UAAW,SAASvB,EAASC,GAE5BkD,EAAW4E,EAAW/H,EAASC,IAEhCuB,QAAS,WACR2N,EAAO1N,YAAY14C,GAAGwlD,UAAUf,QAAQE,KAAO3kD,GAAG+3C,WAAWiH,EAAWwH,GAAcxmD,GAAGm9C,sBAI3F,OAAOiJ,IAUJO,EAAqB,SAAShF,EAAYiF,GAC7C,MAAO,YACN5mD,GAAG24C,IAAIj3C,KACNigD,EACA3hD,GAAGwlD,UAAUf,QAAQI,aACrB+B,KACGt7C,MAAM5J,KAAKuJ,WAAWK,MAAM,MAa9B8uC,EAAa,SAAS4E,EAAW/H,GAIpC,QAAS4P,GAAcxkC,EAAQykC,GAE9B,IAAK,GADDnU,GAAO3wB,OAAO8kC,GAAcxhD,MAAM,KAC7B7D,EAAI,EAAGA,EAAIkxC,EAAK9xC,OAAQY,IAAK,CACrC,GAAwB6B,SAApB+e,EAAOswB,EAAKlxC,IAAmB,CAClC4gB,EAAS/e,MACT,OAED+e,EAASA,EAAOswB,EAAKlxC,IAEtB,MAAO4gB,GAGR,QAAS0kC,GAAaC,EAAO/P,EAAS0K,GACrC,GAAIlR,GAAIzwC,GAAG2hC,MAAMsV,EAAQzzC,QAAQwjD,EAAO,IAiBxC,OAVIvW,GAAE3H,QAAU2H,EAAE3H,OAAOjoC,QAAU4vC,EAAEwW,WAAaxW,EAAEwW,UAAUpmD,QAC7DE,OAAOuB,KAAKmuC,EAAEwW,UAAW,SAASxlD,EAAGylD,GACpCnmD,OAAOuB,KAAKmuC,EAAE3H,OAAQ,SAASrnC,EAAGm6B,GAC7BsrB,GAAKtrB,IACR6U,EAAE3H,OAAOrnC,GAAKklD,EAAmBhF,EAAYuF,QAM1CzW,EAhCR,GAAI7vC,GAAK8R,CAoCLszC,GAASpkD,KAAKq1C,IACjBr2C,EAAMmmD,EAAaf,EAAU/O,EAAS+H,EAAU2C,YAChDjvC,EAAOm0C,EAAc7H,EAAUiD,GAAIrhD,EAAIkmD,cAE1BxjD,SAAToP,EACHA,EAAK1H,MAAMg0C,EAAUiD,GAAIrhD,EAAIkoC,QAE7B9oC,GAAGi+C,IAAI,qCAAuCr9C,EAAIkmD,eAIzCjB,EAAMjkD,KAAKq1C,IACrBr2C,EAAMmmD,EAAalB,EAAO5O,EAAS+H,EAAU2C,YAC7CjvC,EAAOm0C,EAAcrmD,OAAQI,EAAIkmD,cACpBxjD,SAAToP,EACHA,EAAK1H,MAAM0H,EAAM9R,EAAIkoC,QAErB9oC,GAAGi+C,IAAI,kCAAoCr9C,EAAIkmD,eAItChB,EAAclkD,KAAKq1C,IAC7Br2C,EAAMmmD,EAAajB,EAAe7O,EAAS+H,EAAU2C,YAChBr+C,SAAjCk5C,EAAW57C,EAAIkmD,gBAClBtK,EAAW57C,EAAIkmD,cAAc97C,MAAMwxC,EAAW57C,EAAIkmD,cAAelmD,EAAIkoC,cAC9D0T,GAAW57C,EAAIkmD,gBAIblB,EAAShkD,KAAKq1C,KACxBr2C,EAAMmmD,EAAanB,EAAU3O,EAAS+H,EAAU2C,YAChD3hD,GAAGgkD,OAAOsB,YAAYt6C,MAAMhL,GAAGgkD,OAAQpjD,KAWrCumD,EAAoB,SAASjwC,GAChC,GAAI0vC,GAAa5mD,GAAG6E,MAEpB,OADA23C,GAAWoK,GAAc1vC,EAClB0vC,EAGR,QAOCrB,UAAW,SAAS6B,EAAate,GAEhC,GAAImO,GAAUmQ,EAAcpnD,GAAG+3C,UAAUjP,EACzC/nC,QAAOuB,KAAKqjD,EAAO,SAASlkD,EAAGga,GAC9BA,EAAE2qC,OAAO1N,YAAYzB,MAavBv1C,KAAM,SAASigD,EAAYyF,EAAaN,EAAche,GAErD,GAAIme,KACJlmD,QAAOuB,KAAKwmC,EAAQ,SAASrnC,EAAGqC,GAC/B,GAAiB,kBAANA,GAAkB,CAC5B,GAAIujD,GAAMF,EAAkBrjD,EAC5BglC,GAAOrnC,GAAK4lD,EACZJ,EAAUlgD,KAAKsgD,MAIjB1B,EAAMhE,GAAYyE,OAAO1N,YACxB0O,EAAcpnD,GAAG+3C,WAChB+O,aAAaA,EACbhe,OAAOA,EACPme,UAAUA,MAcbv5C,KAAM,SAASo1C,GACd4C,EAAqB5C,EAChB4C,GACJO,KAYFqB,SAAU,SAAS3F,GAClB,MAEuBr+C,UAAtBqiD,EAAMhE,IAENgE,EAAMhE,GAAY9N,OAAO+N,UAEuC,IAAhE7gD,OAAO4kD,EAAMhE,GAAY9N,OAAO7tB,MAAMre,KAAK,UAAU9G,QAUvD0mD,SAAU,SAASvI,EAAWwH,GACvBxH,GAAewH,EACpBb,EAAM3G,EAAU2C,aACf9N,OAAOmL,EACPoH,OAAOG,EAA4BvH,EAAWwH,IAG/CxmD,GAAGi+C,IAAI,qFAKXj+C,GAAGgF,OAAO,KAAM,WAEf,GAAIwiD,GAQAC,EAAW,SAASzI,GAEvB,GAAI0I,GAAa1I,EACbE,EAAQn+C,OAAOi+C,EAAUh5B,MAEzB2hC,EAAgB,SAASx5C,GAC5BA,EAASA,GAAUpN,OAAO2mD,EAAW1hC,MAAM4hC,cAEvC5nD,GAAG24C,IAAI2O,SAASI,EAAW/F,YAC9B3hD,GAAG24C,IAAIj3C,KACNgmD,EAAW/F,WACX3hD,GAAGwlD,UAAUf,QAAQK,OACrB,gBAEC32C,KAIFu5C,EAAWv5C,OAASA,EACpB+wC,EAAMv3C,KAAK,UAAUwG,OAAOu5C,EAAWv5C,UAKrC05C,EAAa,SAAS/mD,EAAKm2C,EAAQ6Q,GACtC,OACC,sBACC,6BACC,8BACC,6BACC,8IACA,2BAA2BhnD,EAAK,QACjC,SACA,8BACCm2C,EACA,aACD,6BACE,EAAe,oFAAsF,GACtG,mEACD,SACD,SACD,SACD,UACEv8B,KAAK,IAGT,QAOCqtC,SAAU,SAAS3xC,GAClBpW,GAAGgjD,GAAG+E,SAASL,EAAW/F,WAAYvrC,IAOvC4xC,OAAQ,WAEP,GAAIC,GAAe,SAAShR,GAC3B,MAAO4Q,GAAW,QAAQ5Q,IAGvBiR,EAAiB,SAASjR,GAC7B,MAAO4Q,GAAW,UAAU5Q,GAAQ,GAGrC,QASCkR,MAAO,SAASlR,EAAS//B,GAExB,MAAKlX,IAAGooD,cAKJpoD,GAAG24C,IAAI2O,SAASI,EAAW/F,YAC9B3hD,GAAG24C,IAAIj3C,KACNgmD,EAAW/F,WACX3hD,GAAGwlD,UAAUf,QAAQK,OACrB,kBACGx5C,MAAM5J,KAAKuJ,YAIflK,OAAOknD,EAAahR,IAClBhjB,GAAG,gBAAiB,WACpB,GAAIgZ,GAAQxsC,IACZM,QAAOksC,GAAOtlC,KAAK,gBAAgBssB,GAAG,QAAS,WAC9ClzB,OAAOksC,GAAOA,MAAM,QAAQ9iB,UAC3BjT,GAAYnW,OAAOgE,YAGrBkoC,OAAOnB,UAAS,SArBlB9rC,IAAGi+C,IAAI,yDAkCToK,QAAS,SAASpR,EAASqR,EAAYC,GAEtC,MAAKvoD,IAAGooD,cAKJpoD,GAAG24C,IAAI2O,SAASI,EAAW/F,YAC9B3hD,GAAG24C,IAAIj3C,KACNgmD,EAAW/F,WACX3hD,GAAGwlD,UAAUf,QAAQK,OACrB,oBACGx5C,MAAM5J,KAAKuJ,YAIflK,OAAOmnD,EAAejR,IACpBhjB,GAAG,gBAAiB,WACpB,GAAIgZ,GAAQxsC,IAEZM,QAAOksC,GAAOtlC,KAAK,WAAWssB,GAAG,QAAS,WACzClzB,OAAOksC,GAAOA,MAAM,QAAQ9iB,UAC3Bm+B,GAAcvnD,OAAOgE,UAGvBhE,OAAOksC,GAAOtlC,KAAK,eAAessB,GAAG,QAAS,WAC7ClzB,OAAOksC,GAAOA,MAAM,QAAQ9iB,UAC3Bo+B,GAAkBxnD,OAAOgE,YAG3BkoC,OAAOnB,UAAS,SA3BlB9rC,IAAGi+C,IAAI,+DAyCXuK,SAAU,SAASpY,GAEdpwC,GAAG24C,IAAI2O,SAASI,EAAW/F,YAC9B3hD,GAAG24C,IAAIj3C,KACNgmD,EAAW/F,WACX3hD,GAAGwlD,UAAUf,QAAQK,OACrB,YAEC1U,IAIFrvC,OAAO2mD,EAAW1hC,MAAMre,KAAK,IAAM3H,GAAGwlD,UAAUjC,IAAII,WAAW16C,KAAKmnC,IAUtEqY,SAAU,SAASryC,EAAUsyC,GAC5B1oD,GAAGgjD,GAAGyF,SAASf,EAAW/F,WAAYvrC,EAAUsyC,IASjDC,aAAchB,EAMd5C,MAAO,WAEN,GAAI1X,GAAU,GAAI6C,eACd0Y,EAAgB,SAGpBvb,GAAQ8B,gBAAgB,EAExB,IAAI0Z,GAAW,SAAS56B,GACvB,MAAI26B,GAAchnD,KAAKqsB,IACf,GAEPjuB,GAAGi+C,IAAI,IAAMhwB,EAAY,4CAClB,GAIT,QASCC,OAAQ,SAASpL,GAEK,kBAAVA,GACVriB,KAAKwzB,GAAG,SAAUnR,GACS,gBAAVA,KAEb4kC,EAAW9F,WAAa5hD,GAAG24C,IAAI2O,SAASI,EAAW/F,YACtD3hD,GAAG24C,IAAIj3C,KACNgmD,EAAW/F,WACX3hD,GAAGwlD,UAAUf,QAAQK,OACrB,kBACGx5C,MAAM5J,KAAKuJ,YAELjL,GAAG8B,QAAQghB,EAAO4kC,EAAWxF,SACvCnhD,OAAO,IAAMf,GAAGwlD,UAAUjC,IAAIK,SAAU1E,GACtC5e,SAAS,QACTz+B,OAAO,kBAAoBihB,EAAQ,KAAMo8B,GACzCve,YAAY,QAEdgnB,IACAta,EAAQkC,KAAK,SAAUzsB,MAW1BiJ,IAAK,SAAS/oB,EAAO8rC,GAChB+Z,EAAS7lD,IACZqqC,EAAQthB,IAAI/oB,EAAO8rC,IAWrB7a,GAAI,SAASjxB,EAAO8rC,GACf+Z,EAAS7lD,IACZqqC,EAAQpZ,GAAGjxB,EAAO8rC,SAyIxB,OAxHA2Y,GAASM,SAAW,SAASpG,EAAYvrC,GAExC,IAAKpW,GAAGooD,SAEP,WADApoD,IAAGi+C,IAAI,mDAIR,IAAIj+C,GAAG24C,IAAI2O,SAAS3F,KAAgB5gD,OAAOqV,GAAU8R,GAAG,IAAMloB,GAAGwlD,UAAUjC,IAAIE,KAC9EzjD,GAAG24C,IAAIj3C,KACNigD,EACA3hD,GAAGwlD,UAAUf,QAAQG,IACrB,kBAECjD,EAGA5gD,OAAOqV,GAAUA,eAGb,CAEN,GAAI+V,GAAYprB,OAAOqV,EACvB+V,GAAUxkB,KAAK,MAAQ3H,GAAGwlD,UAAUjC,IAAIO,MAAM35B,SAC9CgC,EAAUwU,YAAY3gC,GAAGwlD,UAAUjC,IAAIQ,gBAInC53B,EAAU9oB,KAAKrD,GAAGwlD,UAAUjC,IAAIQ,iBACnC53B,EAAUjiB,KAAK6vB,SAAW,aAW7B0tB,EAAS/5C,KAAO,SAASo7C,GACxBtB,EAAmBsB,EAGnBtB,EAAiBxE,GAAKjiD,OAAOiE,QAAO,KAAUhF,GAAGuiD,gBAAgBS,GAAIwE,EAAiBxE,SAYvFyE,EAASgB,SAAW,SAAS9G,EAAYvrC,EAAU2yC,GAElD,IAAK/oD,GAAGooD,SAEP,WADApoD,IAAGi+C,IAAI,mDAIR,IAAIj+C,GAAG24C,IAAI2O,SAAS3F,IAAe5gD,OAAOqV,GAAU8R,GAAG,IAAMloB,GAAGwlD,UAAUjC,IAAIE,KAC7EzjD,GAAG24C,IAAIj3C,KACNigD,EACA3hD,GAAGwlD,UAAUf,QAAQG,IACrB,kBAECjD,EAGA5gD,OAAOqV,GAAUA,SACjB2yC,QAGI,CAEFA,IAAgBvB,EAAiBxE,GAAGC,KAAKE,aAC5CnjD,GAAGi+C,IAAI,4GAGR,IAAI9xB,GAAYprB,OAAOqV,GAAUkqB,SAAStgC,GAAGwlD,UAAUjC,IAAIQ,gBACvDiF,EAAOjoD,OAAO,SAChBoN,OAAO,QACPE,MAAM,QACNiyB,SAAStgC,GAAGwlD,UAAUjC,IAAIO,KAGvB0D,GAAiBxE,GAAGC,KAAKG,YAC7B4F,EAAK9+C,KACJ++C,mBAAmBzB,EAAiBxE,GAAGC,KAAKC,gBAC5CgG,mBAAsB1B,EAAiBxE,GAAGC,KAAKE,YAAe,OAASqE,EAAiBxE,GAAGC,KAAKE,YAAc,IAAO,GACrHgG,sBAAsB,UACtBC,oBAAoB,YACpBp/C,QAAU,QACVsuB,KAAO,EACP+wB,aAAa,GACbnuB,QAAU,EACVnB,SAAW,WACXzX,IAAM,EACNgnC,UAAU9B,EAAiBxE,GAAGC,KAAKpoB,OAEnCh5B,OAAS,iBAAuD,IAAnC2lD,EAAiBxE,GAAGC,KAAK70C,QAAiB,IACvEA,QAAUo5C,EAAiBxE,GAAGC,KAAK70C,UAKH,WAA9B+d,EAAUjiB,IAAI,cACjBiiB,EAAUjiB,KAAK6vB,SAAW,aAG1B5N,EAAU9oB,KAAKrD,GAAGwlD,UAAUjC,IAAIQ,gBAAgB,IAIjD53B,EAAUwK,OAAOqyB,KAIZvB,MAORznD,GAAGgF,OAAO,GAAI,WAEb,GAAI2gD,UACA4D,SAAU,EACVC,mBAAoB,EACpBC,kBAAoBzpD,GAAG+gD,YAAYN,eACnCiJ,kBACAC,iBACAC,mBAWAC,gBAAkB,SAAS7K,EAAW9nB,GAEzC,GAAI5b,GAAUiuC,QAAQ/G,gBAAkB,SAASxD,EAAW9nB,GAC1D,MAAOn2B,QAAOm2B,GAAMptB,SAAS,SAE3BggD,EAAexuC,EAAQ0jC,EAAW9nB,EAEtC,OAAQqyB,SAAQ/G,iBAAmBsH,MAClC9pD,IAAGi+C,IAAI,0FAKPl9C,OAAO+oD,GAAcxpB,SAAStgC,GAAGwlD,UAAUjC,IAAIE,KACxCqG,EAAah/C,IAAI,KAYtBi/C,WAAa,SAAS/K,EAAW9nB,GAUpC,MAPAA,GAAO8yB,WAAWjpD,OAAOm2B,GAAMoJ,SAAStgC,GAAGwlD,UAAUjC,IAAIG,cAAgB,IAAM1E,EAAUK,QAGrFkK,QAAQ3K,YACX1nB,EAAOqyB,QAAQ3K,UAAUI,EAAW9nB,IAG9B8yB,WAAW9yB,IAYf+yB,iBAAmB,SAASjL,GAC/B,GAAI1jC,GAAUiuC,QAAQ9G,iBAAmB1hD,OAAOgE,IAChD,OAAOuW,GAAQ0jC,IAYZkL,qBAAuB,SAASlL,EAAWmL,GAC9C,GAAI7uC,GAAUiuC,QAAQzK,qBAAuB/9C,OAAOgE,IACpD,OAAOuW,GAAQ0jC,EAAWmL,IAWvBC,iBAAmB,SAASpL,GAmB/B,MAhBAA,GAAYj+C,OAAOiE,QAAO,KAAUg6C,GAGpCA,EAAU2C,WAAa3C,EAAU2C,YAAc3hD,GAAG6E,OAGlDm6C,EAAUkD,MAAQlD,EAAUkD,UACvBliD,GAAG8B,QAAQ9B,GAAGwlD,UAAUT,MAAMI,KAAMnG,EAAUkD,QAClDlD,EAAUkD,MAAMn7C,KAAK/G,GAAGwlD,UAAUT,MAAMI,MAIrCnlD,GAAGuiD,gBAAgBI,SACtB3D,EAAU6C,gBAAkB7hD,GAAGuiD,gBAAgBI,QAGzC3D,GAUJqL,yBAA2B,SAASloC,GACvC,GAAI68B,EAEJ,IAAI78B,EAAM,CACT,GAAIk9B,GAAQl9B,EAAKxe,aAAa,iBAC1Bo+C,EAAc5/B,EAAKxe,aAAa,sBAEpC,IAAI07C,GAAS0C,EAAa,CACzB/C,GACCK,MAAOA,EACPqC,oBAAqBv/B,EAAKmoC,aAAa,+BACvC1I,SAAUz/B,EAAKmoC,aAAa,oBAC5BvI,YAAaA,EACb/7B,KAAM7D,EAIP,IAAIooC,GAAcpoC,EAAKxe,aAAa,kBAEpC,IAAI4mD,EACH,IACCvL,EAAU14C,QAAUtG,GAAG2hC,MAAM4oB,GAE9B,MAAOzmD,GACNmrC,QAAQub,KAAK,kDAAmD,IAAM1mD,EAAI,OAM9E,MAAOk7C,IAUJyL,sBAAwB,SAAStoC,GACpC,GAAIuoC,IAAW,CAEf,IAAIvoC,EAAKwoC,gBACR,IAAK,GAAIlpD,GAAI,EAAG8V,EAAM4K,EAAKtb,WAAWhG,OAAY0W,EAAJ9V,EAASA,IACtD,GAAoC,IAAhC0gB,EAAKtb,WAAWpF,GAAGR,SAAgB,CACtCypD,GAAW,CACX,OAKH,MAAOA,IASJE,wBAA0B,SAAS9B,GAEjCA,EAAgBlG,qBACpBkG,EAAgBlG,mBAAqB5iD,GAAGuiD,gBAAgBK,oBAGrDkG,EAAgBpG,aAAc,IACjCoG,EAAgBpG,UAAY1iD,GAAGuiD,gBAAgBG,WAG5CoG,EAAgBnG,QAA2C,gBAA1BmG,GAAgBnG,SACpD3iD,GAAGuiD,gBAAgBI,OAASmG,EAAgBnG,SAS1CkI,eAAiB,SAAS7L,GAE7Bj+C,OAAOi+C,EAAUh5B,MAAMiO,GAAG,QAAS,IAAMj0B,GAAGwlD,UAAUjC,IAAIM,iBAAmB,IAAM7jD,GAAGwlD,UAAUT,MAAMC,eAAiB,IAAK,SAAShiD,GAEpIA,EAAMutB,gBAEN,IAAIu6B,GAAO/pD,OAAON,MAAMmH,KAAK5H,GAAGwlD,UAAUT,MAAMC,gBAAgBthD,aAG5DonD,IAAQ9qD,GAAGwlD,UAAUT,MAAMK,OAC9BplD,GAAG+qD,UAAU/L,EAAU2C,YAGvB3C,EAAUiD,GAAG8C,MAAM72B,OAAO48B,MAUzBE,qBAAuB,WAE1B,GAAIC,GACAC,EAAgB,WACnBlrD,GAAGgkD,OAAOzU,KAAKvvC,GAAGwlD,UAAUxB,OAAOM,wBAGpCvjD,QAAOP,QAAQyzB,GAAG,SAAU,WAC3BiK,aAAa+sB,GACbA,EAAgBr9C,WAAWs9C,EAAe,OAI3ClrD,GAAGgkD,OAAO/vB,GAAGj0B,GAAGwlD,UAAUxB,OAAOO,wBAAwB,SAASlhD,GAC7DA,EAAKs/C,QAAgC,gBAAft/C,GAAKs/C,SAC9B3iD,GAAGuiD,gBAAgBI,OAASt/C,EAAKs/C,WAYhCwI,sBAAwB,SAAShpC,GACpC,MACCniB,IAAG29C,gBAAgBx7B,KAClBsoC,sBAAsBtoC,MACrBA,EAAKxe,aAAa,oBAClBwe,EAAKxe,aAAa,wBAUlBynD,QAAU,WACb,QAAS7B,SASN8B,mBAAqB,SAASrM,EAAWsM,GAE5CtM,EAAUiD,GAAK,GAAIjiD,IAAGgjD,GAAGhE,GAGQ17C,SAA7BtD,GAAGo9C,KAAK4B,EAAUK,SACmB,kBAA7Br/C,IAAGo9C,KAAK4B,EAAUK,OAG5BzxC,WAAW,WACV+3C,MAAM3G,EAAU2C,YAAYvC,IAAM,GAAIp/C,IAAGo9C,KAAK4B,EAAUK,OAAOL,EAAWsM,EAAYtM,EAAUh5B,MAChD1iB,SAA5CqiD,MAAM3G,EAAU2C,YAAYvC,IAAU,MACzCuG,MAAM3G,EAAU2C,YAAYvC,IAAI1xC,QAE/B,GAIH1N,GAAGi+C,IAAI,4DAA8De,EAAUK,MAAQ,OAatFkM,UAAY,SAASC,WAAYhF,aAIpC,GAHAgF,cAAgBpmD,OAAOomD,YAGE,GAArBA,WAAW3qD,QAAe2qD,WAAW,GAAG5J,WAAa2H,QAAQ1G,gBAEhE,WADA4I,gBAAeD,WAAW,GAAIhF,YAK/B,IAAIgF,WAAW3qD,QAAU2lD,YAAYpE,KAAKvhD,OAEzC,WADAb,IAAGi+C,IAAI,mFAAoFuI,YAK5F,IAAIkF,aAAc,SAASl/C,EAAQm/C,GAElC,GAAIpC,QAAQjG,WACX,MAAOiG,SAAQjG,WAAW92C,EAAQm/C,EAInC,IAAIC,GAAiB,KACpBC,IAAyBxrD,SAASyrD,gBAEnC/qD,QAAOuB,KAAKkK,EAAQ,SAAS/K,EAAGqC,GAC/B,GAAIioD,GAAcjoD,EACjBkoD,EAAcloD,EAAEJ,aAEbimD,eAAcqC,KAIdH,EACHxrD,SAASyrD,iBAAiBC,IAG1BH,EAAiBA,MACjBA,EAAe7kD,KAAK,gDAAkDglD,EAAc,QAGrFpC,cAAcqC,IAAe,KAG1BJ,GACH7qD,OAAO,QAAQ41B,OAAOi1B,EAAelxC,KAAK,KAG3CixC,KAKGM,aAAe,SAAS51B,EAASs1B,GAEpC,GAAIpC,QAAQlG,YACX,MAAOkG,SAAQlG,YAAYhtB,EAASs1B,EAGrC,KAAKt1B,EAAQx1B,OACZ,MAAO8qD,IAGR,IAAI/hD,GAAMpJ,OAAOH,SACb6rD,EAAc71B,EAAQx1B,OACtBsrD,EAAgB,EAGhBrkB,EAAOl+B,IAAQA,EAAU,MAAKA,EAAIlD,qBAAqB,QAAQ,IAG/D0lD,EAAiBtkB,GAAQA,EAAKphC,qBAAqB,QAAQ,IAAM,KAEjE2lD,EAAc,oBAAsB7rD,YAAgB8rD,QAAU,EAAMj6C,UAAY,GAGhFk6C,EAAS,SAASzoD,GACrB8J,WAAW,WACV,GAAI4+C,IACHnkD,IAAKvE,EAAEyP,OAAOlL,IACdg3C,MAAOmM,WAAW,GAAGnM,MAItBr/C,IAAGi+C,IAAI,sBAAyBuO,EAAQnN,MAAQ,qBAAyBmN,EAAQnkD,IAAM,KAGvFrI,GAAGgkD,OAAOzU,KAAK,0BAA2Bid,GAErChD,kBAIJxpD,GAAG+gD,YAAYL,UACd+I,kBACAzpD,GAAGwlD,UAAUzE,YAAYQ,uBACzBiK,WAAW,GACXgB,EAAQnkD,KAPT6hD,qBAAqBsB,WAAW,GAAIgB,EAAQnkD,MAU3CkhD,QAAQ3G,qBAGR6J,EAAiB,aAEdN,IAAkBD,GAEvBP,KAIEe,EAAiB,SAASV,EAAaW,GAC1C,GAAIhR,GACHiR,EAAWhD,gBAAgBoC,EAE5B,IAAKY,EAAL,CAIA,IAAK,GAAInrD,GAAE,EAAGA,EAAEmrD,EAAS/rD,OAAQY,IAChCk6C,EAAUiR,EAAUnrD,GAEhBkrD,EACHhR,EAAQ1mC,MAAM03C,GAEdhR,EAAQpX,SAIVqlB,iBAAgBoC,GAAe,MAIhCjrD,QAAOuB,KAAK+zB,EAAS,SAAS50B,EAAGqC,GAChC,GAAI8jC,GAASh+B,EAAIxD,cAAc,UAC9B2lD,EAAcjoD,EACdkoD,EAAcD,EAAYroD,aAG3B,OAAIgmD,gBAAesC,GACXS,IAIJ7C,gBAAgBoC,OACnBpC,iBAAgBoC,GAAajlD,MAC5Bw9B,QAASkoB,EACTx3C,MAAOs3C,KAMT3C,gBAAgBoC,MAGZzC,QAAQ7G,YACXqJ,GAAe,iBAAkB,GAAI7yC,OAAO2zC,WAK7CjlB,EAAOvF,OAAQ,EACfuF,EAAO9mC,KAAO,kBACd8mC,EAAOI,QAAU,QAEjBJ,EAAOklB,QAAU,SAAShpD,GACzByoD,EAAOzoD,GACP4oD,EAAeV,EAAaloD,IAI7B8jC,EAAOK,OAASL,EAAOF,mBAAqB,SAAS5jC,GACpDA,EAAIA,GAAKtD,OAAOwC,OAMF,QAAVc,EAAEhD,MAAkBurD,EAAYzkB,EAAO3kC,eAE1C2kC,EAAOK,OAASL,EAAOF,mBAAqBE,EAAOklB,QAAU,GAE7DpD,eAAesC,IAAe,EAE9BS,IAEAC,EAAeV,GAEfpkB,EAAS,OAKXA,EAAOv/B,IAAM0jD,MAGbjkB,GAAKhR,aAAa8Q,EAAQwkB,OAIxBW,mBAAqB,SAASC,QAASrB,IAE1C,GAAIpC,QAAQ0D,kBACX1D,QAAQ0D,kBAAkBD,QAASrB,QAE/B,CACJ,IAAK,GAAIlqD,GAAI,EAAG8V,IAAMy1C,QAAQnsD,OAAY0W,IAAJ9V,EAASA,IAC9C,IACCyrD,KAAKF,QAAQvrD,IAEd,MAAO0rD,WACNntD,GAAGi+C,IAAI,gCAAkCkP,UAAY,OAASH,QAAQvrD,IAGtEzB,GAAGgkD,OAAOzU,KAAK,2BAA6B8P,MAAMmM,WAAW,GAAGnM,MAAOh3C,IAAK2kD,QAAQvrD,GAAIqE,IAAKqnD,YAExF3D,kBAIJxpD,GAAG+gD,YAAYL,UACd+I,kBACAzpD,GAAGwlD,UAAUzE,YAAYQ,uBACzBiK,WAAW,GACX2B,WAPDjD,qBAAqBsB,WAAW,GAAI2B,WAYvCxB,OAKEyB,kBAAoB,SAAShiB,GAChC,GAAIA,EACH,KAAOA,EAAQliC,YAGd,GAFAkiC,EAAUA,EAAQliC,WAEdkiC,IAAY/qC,SACf,OAAO,CAKV,QAAO,GAIJgtD,UAAY,SAASjL,GACxBrhD,OAAOuB,KAAK8/C,EAAM,SAAS3gD,EAAGga,GAC7B,GAAI0vC,sBAAsBK,WAAW/pD,GAAGukB,MACvCjlB,OAAOyqD,WAAW/pD,GAAGukB,MACnBsa,SAAStgC,GAAGwlD,UAAUjC,IAAIE,KAC1B9sB,OAAO51B,OAAO0a,EAAEyb,MAAMoJ,SAAStgC,GAAGwlD,UAAUjC,IAAIG,cAAgB,IAAM8H,WAAW/pD,GAAG49C,YAElF,IAAKmK,kBAIL,CACJxpD,GAAG+gD,YAAYL,UACd+I,kBACAzpD,GAAGwlD,UAAUzE,YAAYG,WACzBsK,WAAW/pD,GACXuoD,WAAWjpD,OAAO0a,EAAEyb,MAAMoJ,SAAStgC,GAAGwlD,UAAUjC,IAAIG,cAAgB,IAAM8H,WAAW/pD,GAAG49C,QAGzF,IAAIA,GAAQmM,WAAW/pD,GAAG49C,MACzBr5B,EAAOwlC,WAAW/pD,GAAGukB,IAEtB,KAAKA,EACJ,KAAO,YAAcq5B,EAAQ,yJAG9B,KAAK+N,kBAAkBpnC,GACtB,KAAO,gBAAkBq5B,EAAQ,oHASlC,IANAr/C,GAAG+gD,YAAYL,UACd+I,kBACAzpD,GAAGwlD,UAAUzE,YAAYI,iBACzBqK,WAAW/pD,KAGPzB,GAAG29C,gBAAgB33B,GACvB,KAAO,gBAAkBq5B,EAAQ,8HA5BlCmM,YAAW/pD,GAAGukB,KAAO6jC,gBAAgB2B,WAAW/pD,GAAIsoD,WAAWyB,WAAW/pD,GAAIga,EAAEyb,MAiCjF2zB,gBAAeW,WAAW/pD,OAKxB40B,QAAUmwB,YAAYnwB,YACtB7pB,OAASg6C,YAAYh6C,WACrBwgD,QAAUxG,YAAYnE,kBACtBD,KAAOoE,YAAYpE,QAGvBsJ,aAAYl/C,OAAQ,WAEnB6gD,UAAUjL,MAEV6J,aAAa51B,QAAS,WAEjBm1B,WAAW,IAAKxrD,GAAGgkD,OAAOzU,KAAK,sBAAwB8P,MAAMmM,WAAW,GAAGnM,MAAOhpB,QAAQA,UAE9F02B,mBAAmBC,QAAS,WAE3BjsD,OAAOuB,KAAKkpD,WAAY,SAAS/pD,EAAGga,GACnC4vC,mBAAmB5vC,EAAG+qC,YAAYpE,KAAK3gD,aAexCgqD,eAAiB,SAASzM,EAAWwH,GAGxC,GAAI+C,QAAQzG,kBAAmB,CAC9B,GAAIqI,sBAAsBnM,EAAUh5B,MACnCjlB,OAAOi+C,EAAUh5B,MACfsa,SAAStgC,GAAGwlD,UAAUjC,IAAIE,KAC1B9sB,OAAO51B,OAAO,eAAeu/B,SAAStgC,GAAGwlD,UAAUjC,IAAIG,cAAgB,IAAM1E,EAAUK,YAErF,IAAKmK,kBAIL,CACJ,GAAItK,GAAQn+C,OAAOi+C,EAAUh5B,KAS7B,IAPAhmB,GAAG+gD,YAAYL,UACd+I,kBACAzpD,GAAGwlD,UAAUzE,YAAYG,WACzBlC,EACAgL,WAAWjpD,OAAOylD,EAAYtvB,MAAMoJ,SAAStgC,GAAGwlD,UAAUjC,IAAIG,cAAgB,IAAM1E,EAAUK,SAGpD,IAAvCH,EAAMj2B,QAAQ,cAAcpoB,OAC/B,KAAM,iIASP,IANAb,GAAG+gD,YAAYL,UACd+I,kBACAzpD,GAAGwlD,UAAUzE,YAAYI,iBACzBnC,IAGIA,EAAUh5B,KACd,KAAM,mKAGP,KAAKhmB,GAAG29C,gBAAgBqB,EAAUh5B,MACjC,KAAM,uIA3BPg5B,GAAUh5B,KAAO6jC,gBAAgB7K,EAAW+K,WAAW/K,EAAW,eAgCnEA,GAAUiD,GAAK,GAAIjiD,IAAGgjD,GAAGhE,GAEzB6L,eAAe7L,GAEfh/C,GAAG24C,IAAI4O,SAASvI,EAAWwH,OAG3BxmD,IAAGi+C,IAAI,yFAIL+L,WAAa,SAAS9yB,GACzB,MAAOn2B,QAAO,eAAe41B,OAAOO,GAAMA,QAUvCo2B,aAAe,SAAStO,GAG3B,MAAKA,GAAUK,MAILL,EAAUh5B,MAASg5B,EAAU+C,aAKhC,GAJN/hD,GAAGi+C,IAAI,0CACA,IALPj+C,GAAGi+C,IAAI,oCACA,IAgBLsP,yBAA2B,WAE9B,GAAIhE,SACCA,QAAQriB,IAAK,CAChB,GAA6B,kBAAhBqiB,SAAQriB,KAA6C,gBAAhBqiB,SAAQriB,IACzD,KAAM,uDAEP,IAAIqiB,QAAQriB,IAAIv0B,UAA4C,kBAAzB42C,SAAQriB,IAAIv0B,SAC9C,KAAM,mDAEP,IAAI42C,QAAQriB,IAAIpmC,MAAoC,kBAArByoD,SAAQriB,IAAIpmC,KAC1C,KAAM,+CAEP,IAAIyoD,QAAQriB,IAAI7D,KAAkC,kBAApBkmB,SAAQriB,IAAI7D,IACzC,KAAM,+CAKT,OAAO,EAGR,QAMCmqB,kBAAmB,WAClB,MAAKpC,WAKErqD,OAAOsE,IAAIsgD,MAAO,SAASvG,GACjC,OACCC,MAAOD,EAAIvL,OAAOwL,aANnBr/C,IAAGi+C,IAAI,2DAeTwP,mBAAoB,WACnB,MAAKrC,WAKEprD,GAAGuiD,gBAAgBI,WAJzB3iD,IAAGi+C,IAAI,4DAYTvwC,KAAM,SAASmmC,GACd0V,QAAU1V,MAEV0Z,2BAEA3C,wBAAwBrB,SAIxBC,oBAAsBD,QAAQ9G,iBAAoB8G,QAAQ3K,WAAc2K,QAAQ/G,gBAAmB+G,QAAQzK,sBAGnGyK,QAAQzG,mBAAqByG,QAAQ1G,kBAC5C7iD,GAAG24C,IAAIjrC,KAAS67C,QAAQzG,kBAAoByG,QAAQzG,mBAAoB,GAGzE9iD,GAAGgjD,GAAGt1C,KAAK67C,SAENA,QAAQ1G,iBACZmI,wBAQF5C,OAAQgD,QAQRsC,iBAAkB,SAASxkD,GAE1B,GAAI/H,MACHqqD,KACA3iD,EAAM,SAAS/E,GACTA,GACL3C,EAAS4F,KAAKjD,IAEf6pD,EAAS,SAASzrC,GACjB,GAAKA,EACL,IAAK,GAAIzgB,GAAI,EAAG8V,EAAM2K,EAAIrhB,OAAY0W,EAAJ9V,EAASA,IAC1CoH,EAAIqZ,EAAIzgB,IAIX,IAAMyH,IAAelJ,GAAG29C,gBAAgBz0C,GACvC,KAAM,yCAMHA,IAAcA,EAAWohD,aAAa,iBACzCzhD,EAAIK,IAKJA,EAAaA,GAAc7I,SACvB6I,EAAWtC,kBACd+mD,EAAOzkD,EAAWtC,iBAAiB,oBAIrC,KAAK,GAAInF,GAAI,EAAG8V,EAAMpW,EAASN,OAAY0W,EAAJ9V,EAASA,IAAK,CACpD,GAAIu9C,GAAYqL,yBAAyBlpD,EAASM,GAClD+pD,GAAWzkD,KAAKi4C,GAGbwM,EAAW3qD,QACdb,GAAGsmD,aAAakF,IA4GlBlF,aAAc,SAASkF,EAAYoC,GAElC,IAAKxC,UAEJ,WADAprD,IAAGi+C,IAAI,oDAGH,KAAKuN,EAET,WADAxrD,IAAGi+C,IAAI,uEAIR,IAAI4P,MACAC,KACAC,KACAC,GAAgB,CAMpB,OALAxC,MAAgBpmD,OAAOomD,GACvBoC,KAAkBxoD,OAAOwoD,OACzBI,IAAmBJ,EAAa/sD,OAG3B2qD,EAAW3qD,OAKP2qD,EAAW3qD,QAAUmtD,GAAiBxC,EAAW3qD,QAAU+sD,EAAa/sD,WAChFb,IAAGi+C,IAAI,qEAMRl9C,OAAOuB,KAAKkpD,EAAY,SAAS/pD,EAAGga,GAUnC,GARAA,EAAI2uC,iBAAiB3uC,GAIrBA,EAAEuK,KAAOvK,EAAEuK,MAAQ,KAIdsnC,aAAa7xC,GAAlB,CAWA,GANAkqC,MAAMlqC,EAAEkmC,aACP9N,OAAQp4B,GAKLA,EAAEuK,OAASmlC,sBAAsB1vC,EAAEuK,MAAO,CAC7C,IAAMvK,EAAEuK,MAA0B,gBAAXvK,GAAM,OAAmBzb,GAAG29C,gBAAgBliC,EAAEuK,MAGpE,KAFAhmB,IAAGi+C,IAAI,uEACPj+C,GAAGi+C,IAAI,sBAAuBxiC,GACxB,iJAEF,IAA6B,GAAzB1a,OAAO0a,EAAEuK,MAAMnlB,OAIvB,KAHAb,IAAGi+C,IAAI,mDACPj+C,GAAGi+C,IAAI,sBAAuBxiC,GAC9Bzb,GAAGi+C,IAAI,gCAAiCl9C,OAAO0a,EAAEuK,MAAMnlB,QACjD,0GAWP,OAPAwqD,oBAAmB5vC,OAGnBovC,gBAAepvC,GAOX0vC,sBAAsB1vC,EAAEuK,QACvBwjC,mBAKJxpD,GAAG+gD,YAAYL,UACd+I,kBACAzpD,GAAGwlD,UAAUzE,YAAYC,gBACzBvlC,GAGDzb,GAAG+gD,YAAYL,UACd+I,kBACAzpD,GAAGwlD,UAAUzE,YAAYE,kBACzBxlC,IAZDA,EAAEuK,KAAOikC,iBAAiBxuC,IAkBxBuyC,EACHzC,UAAU9vC,EAAGmyC,EAAansD,IAItBga,EAAEimC,sBAAwBjmC,EAAEmmC,UAC/BkM,EAAQryC,EAAEsmC,YAAYr+C,eAAiBoqD,EAAQryC,EAAEsmC,YAAYr+C,mBAC7DoqD,EAAQryC,EAAEsmC,YAAYr+C,eAAeqD,KAAK0U,IAG1CoyC,EAAS9mD,MACRq7C,MAAO3mC,GACP4nB,IAAK5nB,EAAEsmC,sBAONiM,IAEJjtD,OAAOuB,KAAKwrD,EAAS,SAASrsD,EAAGia,GAChCmyC,EAAS9mD,MACRs8B,IAAK5hC,EACL2gD,KAAM1mC,MAUR3a,OAAOuB,KAAKurD,EAAU,SAASpsD,EAAGwsD,GAEjC,GAAI5lB,GAAgBroC,GAAGwlD,UAAUhB,eAAiByJ,EAAI7L,KAAK,GAAG/C,KAG9D0O,GAAc1lB,GAAiB0lB,EAAc1lB,OAC7C0lB,EAAc1lB,GAAethC,KAAKknD,KAMnCltD,OAAOuB,KAAKyrD,EAAe,SAAStsD,EAAGysD,GAEtC,GAAIC,GAAkB,SAAS9lB,EAAe4lB,GAC7C,GAAKA,EAAL,CAKA,GAAI5qB,GAAM4qB,EAAI5qB,IACbviC,EAAO,MACP6R,EAAW,QACXy7C,EAAe,WACdD,EAAgB1sD,EAAGysD,EAAStpD,QAE7BypD,EAAY,WACXttD,OAAOuB,KAAK2rD,EAAI7L,KAAM,SAAS58B,EAAK8oC,GACnCA,EAAK/qD,KAAO+qD,EAAK/qD,MAAQ+qD,EAAKjP,MAC9Br/C,GAAGi+C,IAAI,kBAAoBqQ,EAAK/qD,KAAO,OAAQ+qD,GAC/CtuD,GAAG+qD,UAAUuD,EAAK3M,eAGpB4M,EAAc,SAAS/H,GACtB+E,UAAU0C,EAAI7L,KAAMoE,GAItB,IAAI+C,QAAQriB,KAAOqiB,QAAQriB,IAAIv0B,WAC9BA,EAAW42C,QAAQriB,IAAIv0B,SAASs7C,EAAI5qB,IAAK4qB,EAAI7L,MACrB,gBAAbzvC,IACV,KAAM,qDAGR,IAAI42C,QAAQriB,KAAOqiB,QAAQriB,IAAIpmC,OAC9BA,EAAOyoD,QAAQriB,IAAIpmC,KAAKmtD,EAAI5qB,IAAK4qB,EAAI7L,MACjB,gBAATthD,IACV,KAAM,iDAGR,IAAIyoD,QAAQriB,KAAOqiB,QAAQriB,IAAI7D,MAC9BA,EAAMkmB,QAAQriB,IAAI7D,IAAI4qB,EAAI5qB,IAAK4qB,EAAI7L,MAChB,gBAAR/e,IACV,KAAM,gDAKR,IAAImrB,GAAcjF,QAAQriB,GACC,mBAAhBsnB,KACVA,EAAc,SAASnrB,EAAKmoB,EAAYiD,EAAiBC,EAAeC,GACvE5tD,OAAOojC,MACNd,IAAKA,EACLviC,KAAMA,EACNuC,MACCylC,OAAQ9oC,GAAG+3C,UAAUkW,EAAI7L,KAAMpiD,GAAGm9C,oBAEnC/U,OAAO,EACPC,cAAeA,EACf11B,SAAUA,EACV4xB,QAASkqB,EACTx5C,MAAO,SAAS25C,EAAO5qB,EAAUmpB,GAChCntD,GAAGi+C,IAAI,wBAAyBkP,EAAUn3C,WAAYi4C,EAAI7L,MAC1DsM,KAEDr8C,SAAUs8C,MAKbH,EAAYnrB,EAAK4qB,EAAI7L,KAAMmM,EAAaF,EAAWD,IAGpDD,GAAgB1sD,EAAGysD,EAAStpD,gBAlM7B5E,IAAGi+C,IAAI,yEA0MT4Q,cAAe,WAEd,MAAKzD,eAKLrqD,QAAOuB,KAAKqjD,MAAO,SAASlkD,EAAGga,GAC9Bzb,GAAG+qD,UAAUtvC,EAAEo4B,OAAO8N,kBALtB3hD,IAAGi+C,IAAI,uDAaT8M,UAAW,SAASpJ,GAEnB,MAAKyJ,gBAKDzF,MAAMhE,KACT3hD,GAAG+gD,YAAYL,UACd+I,kBACAzpD,GAAGwlD,UAAUzE,YAAYK,mBACzBuE,MAAMhE,IAGP3hD,GAAG+gD,YAAYL,UACd+I,kBACAzpD,GAAGwlD,UAAUzE,YAAYM,YACzBsE,MAAMhE,IAGP3hD,GAAG+gD,YAAYL,UACd+I,kBACAzpD,GAAGwlD,UAAUzE,YAAYO,kBACzBqE,MAAMhE,UAGAgE,OAAMhE,SAvBb3hD,IAAGi+C,IAAI,wDA6BVl9C,OAAO,WACN,GAAI+tD,MACHjmD,EAAM,SAAS/E,GACTA,GACLgrD,EAAY/nD,KAAKjD,IAElB6pD,EAAS,SAASzrC,GACjB,GAAKA,EACL,IAAK,GAAIzgB,GAAI,EAAG8V,EAAM2K,EAAIrhB,OAAY0W,EAAJ9V,EAASA,IAC1CoH,EAAIqZ,EAAIzgB,IAcX,IATAoH,EAAIxI,SAAS0Z,eAAe,gBAGxB1Z,SAASuG,mBACZ+mD,EAAOttD,SAASuG,iBAAiB,uBACjC+mD,EAAOttD,SAASuG,iBAAiB,kBAI9BkoD,EAAYjuD,OAAQ,CACvBb,GAAG0N,MACH,KAAK,GAAIjM,GAAI,EAAG8V,EAAMu3C,EAAYjuD,OAAY0W,EAAJ9V,EAASA,IAClDzB,GAAG0tD,iBAAiBoB,EAAYrtD,OAKnC1B,QAAQC,GAAKA,GAES,mBAAXyqC,SAA0BA,OAAOC,KAE3CD,OAAO,WACN,MAAOzqC,QAKY,mBAAZD,SAA0BA,QAAUS"}
\ No newline at end of file
+{"version":3,"file":"f2.min.js","sources":["f2.debug.js"],"names":["exports","F2","F2_TESTING_MODE","global","factory","module","document","w","Error","window","this","noGlobal","isArraylike","obj","length","type","jQuery","isWindow","nodeType","winnow","elements","qualifier","not","isFunction","grep","elem","i","call","risSimple","test","filter","inArray","sibling","cur","dir","createOptions","options","object","optionsCache","each","match","rnotwhite","_","flag","detach","addEventListener","removeEventListener","completed","detachEvent","event","readyState","ready","dataAttr","key","data","undefined","name","replace","rmultiDash","toLowerCase","getAttribute","rbrace","parseJSON","e","isEmptyDataObject","isEmptyObject","internalData","pvt","acceptData","ret","thisCache","internalKey","expando","isNode","cache","id","deletedIds","pop","guid","toJSON","noop","extend","camelCase","internalRemoveData","isArray","concat","map","split","cleanData","support","deleteExpando","returnTrue","returnFalse","safeActiveElement","activeElement","err","createSafeFragment","list","nodeNames","safeFrag","createDocumentFragment","createElement","getAll","context","tag","elems","found","getElementsByTagName","strundefined","querySelectorAll","childNodes","nodeName","push","merge","fixDefaultChecked","rcheckableType","defaultChecked","checked","manipulationTarget","content","firstChild","appendChild","ownerDocument","disableScript","find","attr","restoreScript","rscriptTypeMasked","exec","removeAttribute","setGlobalEval","refElements","_data","cloneCopyEvent","src","dest","hasData","l","oldData","curData","events","handle","add","fixCloneNodeIssues","noCloneEvent","removeEvent","text","parentNode","outerHTML","html5Clone","innerHTML","trim","value","defaultSelected","selected","defaultValue","actualDisplay","doc","style","appendTo","body","display","getDefaultComputedStyle","css","defaultDisplay","elemdisplay","iframe","documentElement","contentWindow","contentDocument","write","close","addGetHookIf","conditionFn","hookFn","get","condition","apply","arguments","vendorPropName","capName","charAt","toUpperCase","slice","origName","cssPrefixes","showHide","show","hidden","values","index","isHidden","setPositiveNumber","subtract","matches","rnumsplit","Math","max","augmentWidthOrHeight","extra","isBorderBox","styles","val","cssExpand","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","getStyles","boxSizing","curCSS","rnumnonpx","boxSizingReliable","parseFloat","Tween","prop","end","easing","prototype","init","createFxNow","setTimeout","fxNow","now","genFx","includeWidth","which","attrs","height","opacity","width","createTween","animation","tween","collection","tweeners","defaultPrefilter","props","opts","toggle","hooks","oldfire","checkDisplay","anim","orig","dataShow","queue","_queueHooks","unqueued","empty","fire","always","overflow","overflowX","overflowY","inlineBlockNeedsLayout","zoom","shrinkWrapBlocks","rfxtypes","done","hide","_removeData","start","propFilter","specialEasing","cssHooks","expand","Animation","properties","result","stopped","animationPrefilters","deferred","Deferred","tick","currentTime","remaining","startTime","duration","temp","percent","tweens","run","notifyWith","resolveWith","promise","originalProperties","originalOptions","stop","gotoEnd","rejectWith","fx","timer","progress","complete","fail","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","jqXHR","inspect","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","target","deep","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","firstDataType","ct","finalDataType","contents","shift","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","tmp","prev","responseFields","dataFilter","state","error","buildParams","prefix","traditional","v","rbracket","createStandardXHR","XMLHttpRequest","createActiveXHR","ActiveXObject","getWindow","defaultView","parentWindow","indexOf","class2type","toString","hasOwn","hasOwnProperty","version","selector","fn","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","jquery","constructor","toArray","num","pushStack","prevObject","callback","args","first","eq","last","len","j","sort","splice","copyIsArray","copy","clone","isPlainObject","random","isReady","msg","Array","isNumeric","ownLast","globalEval","execScript","string","makeArray","arr","results","Object","second","invert","callbackInverse","callbackExpect","arg","proxy","Date","Sizzle","seed","m","groups","old","nid","newContext","newSelector","preferredDoc","setDocument","documentIsHTML","rquickExpr","getElementById","contains","getElementsByClassName","qsa","rbuggyQSA","tokenize","rescape","setAttribute","toSelector","rsibling","testContext","join","qsaError","select","createCache","keys","Expr","cacheLength","markFunction","assert","div","removeChild","addHandle","handler","attrHandle","siblingCheck","a","b","diff","sourceIndex","MAX_NEGATIVE","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","checkNonElements","doneName","xml","oldCache","outerCache","newCache","dirruns","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","classCache","tokenCache","compilerCache","sortOrder","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escaped","escapedWhitespace","high","String","fromCharCode","els","node","hasCompare","parent","top","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","specified","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","nodeIndex","useCache","lastChild","pseudo","idx","matched","has","innerText","lang","elemLang","hash","location","root","focus","hasFocus","href","tabIndex","enabled","disabled","selectedIndex","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","soFar","preFilters","cached","token","compiled","div1","unique","isXMLDoc","rneedsContext","rsingleTag","self","is","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","children","next","until","n","r","targets","closest","pos","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","reverse","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","stack","once","stopOnFalse","disable","remove","lock","locked","fireWith","tuples","then","fns","newDefer","tuple","returned","resolve","reject","notify","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","updateFunc","readyList","readyWait","holdReady","hold","wait","triggerHandler","off","frameElement","doScroll","doScrollCheck","container","cssText","noData","applet ","embed ","object ","removeData","dequeue","startLength","setter","clearQueue","count","defer","pnum","source","el","access","chainable","emptyGet","raw","bulk","fragment","leadingWhitespace","tbody","htmlSerialize","cloneNode","appendChecked","noCloneChecked","checkClone","click","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","types","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","trigger","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","srcElement","metaKey","original","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","one","origFn","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rchecked","rscriptType","rcleanScript","wrapMap","option","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","buildFragment","scripts","selection","wrap","safe","nodes","createTextNode","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","hasScripts","set","iNoClone","_evalUrl","prependTo","insertAfter","replaceAll","insert","shrinkWrapBlocksVal","rmargin","rposition","getComputedStyle","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","computeStyleTests","pixelPositionVal","boxSizingReliableVal","reliableMarginRightVal","marginRight","reliableHiddenOffsetsVal","cssFloat","backgroundClip","clearCloneStyle","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","pixelPosition","reliableMarginRight","swap","ralpha","ropacity","rdisplayswap","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","cssProps","float","$1","margin","padding","border","suffix","expanded","parts","unit","propHooks","eased","step","linear","p","swing","cos","PI","timerId","rfxnum","rrun","*","scale","maxIterations","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","for","class","notxml","tabindex","parseInt","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","rvalidtokens","JSON","parse","requireNonComma","depth","str","comma","open","Function","parseXML","DOMParser","parseFromString","async","loadXML","ajaxLocParts","ajaxLocation","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","allTypes","active","lastModified","etag","url","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","status","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","code","abort","finalText","method","crossDomain","hasContent","beforeSend","send","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","serialize","serializeArray","xhr","xhrId","xhrCallbacks","xhrSupported","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","head","scriptCharset","charset","onload","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict","Plugin","_relatedTarget","$this","Modal","DEFAULTS","element","$body","$element","$backdrop","isShown","scrollbarWidth","remote","VERSION","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","backdrop","keyboard","that","checkScrollbar","setScrollbar","escape","transition","enforceFocus","emulateTransitionEnd","hideModal","resetScrollbar","removeBackdrop","doAnimate","callbackRemove","measureScrollbar","bodyPad","clientWidth","innerWidth","scrollDiv","modal","Constructor","$target","showEvent","_events","_conf","configure","conf","delimiter","maxListeners","wildcard","newListener","listenerTree","EventEmitter","searchListenerTree","tree","leaf","branch","xTree","xxTree","isolatedBranch","endReached","listeners","typeLength","currentType","nextType","_listeners","**","growListenerTree","listener","warned","defaultMaxListeners","console","trace","setMaxListeners","many","ttl","_origin","emit","_all","ns","onAny","addListener","leafs","iLeaf","offAny","removeListener","removeAllListeners","listenersAny","EventEmitter2","process","title","decodeURIComponent","isHostMethod","property","isHostObject","o","hasFlash","undef","navigator","plugins","description","mimeTypes","enabledPlugin","flashVersion","flash","GetVariable","notSupportedException","major","minor","HAS_FLASH_THROTTLED_BUG","dom_onReady","domIsReady","domReadyQueue","whenReady","scope","getParentObject","ii","easyXDM","_easyXDM","IFRAME_PREFIX","getDomainName","reURI","getPort","getLocation","proto","domain","port","resolveUrl","reDoubleSlash","path","substring","pathname","lastIndexOf","protocol","host","reParent","appendQueryParameters","parameters","q","useHash","destination","noOverwrite","member","testForNamePropertyBug","channelId","HAS_NAME_PROPERTY_BUG","createFrame","config","frame","frameBorder","allowTransparency","onLoad","usePost","action","checkAcl","acl","re","substr","prepareTransportStack","stackEls","isHost","query","xdm_p","channel","secret","swf","product","userAgent","remoteHelper","xdm_c","xdm_s","xdm_e","useResize","useParent","usePolling","local","images","search","xdm_pa","xdm_po","HashTransport","ReliableBehavior","QueueBehavior","encode","maxLength","VerifyBehavior","initiate","PostMessageTransport","NameTransport","NixTransport","SameOriginTransport","FrameElementTransport","FlashTransport","lazy","chainStack","stackElements","stackEl","defaults","incoming","message","origin","up","outgoing","recipient","down","destroy","removeFromStack","un","floor","emptyFn","sEvent","fpNotify","pair","stringify","evalJSON","getJSONObject","DomHelper","requiresJSON","_map","Fn","del","Socket","onMessage","onReady","postMessage","Rpc","jsonRpcConfig","RpcBehavior","pub","targetOrigin","onDOMReady","sendFn","addSwf","swfContainer","swfNoThrottle","right","flashVars","destroyChannel","swfdomain","createChannel","_getOrigin","uri","_window_onMessage","callerWindow","waitForReady","referrer","_sendMessage","sendMessage","_onReady","readyCount","_onMessage","remoteOrigin","_onLoad","remoteWindow","remoteUrl","_callerWindow","_msgNr","_handleHash","_lastMsg","_remoteOrigin","_pollHash","_listenerWindow","_attachListeners","_timer","pollInterval","tries","getRef","frames","ex","idOut","idIn","currentMessage","ack","waiting","destroying","doFragment","seq","fragments","startVerification","mySecret","theirSecret","_send","jsonrpc","serializer","_createMethod","definition","_callbacks","_callbackCounter","namedParams","_executeMethod","ex1","_absolutizeURI","removeDotSegments","output","_parseURI","authority","hostname","appConfigReplacer","Apps","overwrite","isFunc","S4","array","isLocalRequest","urlLower","isNativeDOMNode","testObject","bIsNode","Node","bIsElement","HTMLElement","log","replacer","space","_createHandler","fnOrNode","domNodeAppropriate","_validateToken","domNode","_containerToken","_f2Token","_validateF2Token","_filterHandlersByNamespace","newHandlers","_removeHandler","eventKey","_handlerCollection","_parseEventKey","eventParts","appCreateRoot","appRenderBefore","appDestroyBefore","appRenderAfter","appDestroyAfter","appRender","appDestroy","appScriptLoadFailed","_defaultMethods","appConfig","appHtml","appInstance","app","appId","getToken","__f2GetToken","__trigger","callbackArgs","isAppRender","AppHandlers","APP_CREATE_ROOT","APP_RENDER_BEFORE","APP_RENDER","APP_RENDER_AFTER","APP_DESTROY_BEFORE","APP_DESTROY","APP_DESTROY_AFTER","APP_SCRIPT_LOAD_FAILED","App","AppConfig","enableBatchRequests","instanceId","isSecure","containerLocale","localeSupport","manifestUrl","minGridSize","ui","views","AppManifest","apps","inlineScripts","AppContent","ContainerConfig","afterAppRender","beforeAppRender","debugMode","locale","scriptErrorTimeout","isSecureAppPage","secureAppPagePath","supportedViews","UI","Mask","backgroundColor","loadingIcon","useClasses","loadScripts","loadStyles","Css","_PREFIX","APP","APP_CONTAINER","APP_TITLE","APP_VIEW","APP_VIEW_TRIGGER","MASK","MASK_CONTAINER","Events","_APP_EVENT_PREFIX","_CONTAINER_EVENT_PREFIX","APP_SYMBOL_CHANGE","APP_WIDTH_CHANGE","CONTAINER_SYMBOL_CHANGE","CONTAINER_WIDTH_CHANGE","CONTAINER_LOCALE_CHANGE","JSONP_CALLBACK","Sockets","EVENT","LOAD","RPC","RPC_CALLBACK","UI_RPC","Views","DATA_ATTRIBUTE","ABOUT","HELP","HOME","REMOVE","SETTINGS","_socketEmit","broadcast","Constants","timesToListen","_secureAppPagePath","_apps","_rEvents","_rRpc","_rRpcCallback","_rSocketLoad","_rUiCall","_createAppToContainerSocket","isLoaded","messagePlayback","socket","appParts","registerApps","_createContainerToAppSocket","appManifest","iframeProps","scrolling","_createRpcCallback","callbackId","parseFunction","functionName","parseMessage","regEx","callbacks","c","_registerCallback","messageType","cid","isRemote","register","_containerConfig","UI_Class","_appConfig","$root","_updateHeight","outerHeight","_modalHtml","showCancel","hideMask","Modals","_renderAlert","_renderConfirm","alert","isInit","confirm","okCallback","cancelCallback","setTitle","showMask","showLoader","updateHeight","_rValidEvents","_isValid","containerConfig","showLoading","mask","background-color","background-image","background-position","background-repeat","min-height","z-index","_config","_bUsesAppHandlers","_sAppHandlerToken","_loadedScripts","_loadedStyles","_loadingScripts","_afterAppRender","appContainer","_appRender","_outerHtml","_beforeAppRender","_appScriptLoadFailed","scriptInfo","_createAppConfig","_getAppConfigFromElement","hasAttribute","contextJson","warn","_hasNonTextChildNodes","hasNodes","hasChildNodes","_hydrateContainerConfig","_initAppEvents","view","removeApp","_initContainerEvents","resizeTimeout","resizeHandler","_isPlaceholderElement","_isInit","_createAppInstance","appContent","_loadApps","appConfigs","_loadSecureApp","_loadStyles","cb","stylesFragment","useCreateStyleSheet","createStyleSheet","resourceUrl","resourceKey","_loadScripts","scriptCount","scriptsLoaded","insertBeforeEl","readyStates","loaded","_error","evtData","_checkComplete","_emptyWaitlist","errorEvt","waitlist","getTime","onerror","_loadInlineScripts","inlines","loadInlineScripts","eval","exception","elementInDocument","_loadHtml","_validateApp","_validateContainerConfig","getContainerState","getContainerLocale","loadPlaceholders","addAll","appManifests","appStack","batches","callbackStack","haveManifests","req","requests","manifestRequest","completeFunc","errorFunc","item","successFunc","requestFunc","successCallback","errorCallback","completeCallback","jqxhr","removeAllApps","autoloadEls"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/f2.no-third-party.js b/dist/f2.no-third-party.js
index fd1d510a..a1ad6b5a 100644
--- a/dist/f2.no-third-party.js
+++ b/dist/f2.no-third-party.js
@@ -1,5 +1,5 @@
/*!
- * F2 v1.4.0 12-29-2014
+ * F2 v1.4.0 01-15-2015
* Copyright (c) 2014 Markit On Demand, Inc. http://www.openf2.org
*
* "F2" is licensed under the Apache License, Version 2.0 (the "License");
@@ -283,13 +283,13 @@ F2 = (function() {
* @param {object|string} Object/Method An object to be logged _or_ a `console` API method name, such as `warn` or `error`. All of the console method names are [detailed in the Chrome docs](https://developers.google.com/chrome-developer-tools/docs/console-api).
* @param {object} [obj2]* An object to be logged
* @example
- * Pass any value (string, int, array, object, bool).
- * F2.log('foo');
- * F2.log([1, 2, 3]);
+ * // Pass any value (string, int, array, object, bool).
+ * F2.log('foo');
+ * F2.log([1, 2, 3]);
* @example
- * Use a console method name as the first argument.
- * F2.log('error', err);
- * F2.log('info', 'The session ID is ' + sessionId);
+ * // Use a console method name as the first argument.
+ * F2.log('error', err);
+ * F2.log('info', 'The session ID is ' + sessionId);
*/
log: function() {
if (!window.console) {
@@ -358,7 +358,7 @@ F2 = (function() {
*
*
* ### Order of Execution
- *
+ *
* **App Rendering**
*
* 0. {{#crossLink "F2/registerApps"}}F2.registerApps(){{/crossLink}} method is called by the Container Developer and the following methods are run for *each* {{#crossLink "F2.AppConfig"}}{{/crossLink}} passed.
@@ -375,392 +375,299 @@ F2 = (function() {
* 1. **'appDestroyBefore'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_BEFORE*) handlers are fired in the order they were attached.
* 2. **'appDestroy'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY*) handlers are fired in the order they were attached.
* 3. **'appDestroyAfter'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_AFTER*) handlers are fired in the order they were attached.
- *
+ *
* **Error Handling**
* 0. **'appScriptLoadFailed'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_SCRIPT\_LOAD\_FAILED*) handlers are fired in the order they were attached.
- *
+ *
* @class F2.AppHandlers
*/
F2.extend('AppHandlers', (function() {
- // the hidden token that we will check against every time someone tries to add, remove, fire handler
- var _ct = F2.guid();
- var _f2t = F2.guid();
-
+ // The hidden token that we will check against every time someone tries to add, remove, fire handler
+ var _containerToken = F2.guid();
+ var _f2Token = F2.guid();
+
var _handlerCollection = {
appCreateRoot: [],
- appRenderBefore: [],
+ appRenderBefore: [],
appDestroyBefore: [],
appRenderAfter: [],
appDestroyAfter: [],
appRender: [],
appDestroy: [],
- appScriptLoadFailed: []
+ appScriptLoadFailed: []
};
-
+
var _defaultMethods = {
- appRender: function(appConfig, appHtml)
- {
- var $root = null;
-
- // if no app root is defined use the app's outer most node
- if(!F2.isNativeDOMNode(appConfig.root))
- {
+ appRender: function(appConfig, appHtml) {
+ // If no app root is defined use the app's outer most node
+ if (F2.isNativeDOMNode(appConfig.root)) {
+ jQuery(appConfig.root).append(appHtml);
+ } else {
appConfig.root = jQuery(appHtml).get(0);
- // get a handle on the root in jQuery
- $root = jQuery(appConfig.root);
- }
- else
- {
- // get a handle on the root in jQuery
- $root = jQuery(appConfig.root);
-
- // append the app html to the root
- $root.append(appHtml);
- }
-
- // append the root to the body by default.
- jQuery('body').append($root);
+ }
+
+ document.body.appendChild(appConfig.root);
},
- appDestroy: function(appInstance)
- {
- // call the apps destroy method, if it has one
- if(appInstance && appInstance.app && appInstance.app.destroy && typeof(appInstance.app.destroy) == 'function')
- {
- appInstance.app.destroy();
- }
- // warn the Container and App Developer that even though they have a destroy method it hasn't been
- else if(appInstance && appInstance.app && appInstance.app.destroy)
- {
- F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
+ appDestroy: function(appInstance) {
+ if (appInstance.app && appInstance.app.destroy) {
+ if (typeof appInstance.app.destroy === 'function') {
+ appInstance.app.destroy();
+ } else {
+ F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
+ }
}
-
- // fade out and remove the root
+
jQuery(appInstance.config.root).fadeOut(500, function() {
jQuery(this).remove();
});
}
};
-
- var _createHandler = function(token, sNamespace, func_or_element, bDomNodeAppropriate)
- {
- // will throw an exception and stop execution if the token is invalid
- _validateToken(token);
-
- // create handler structure. Not all arguments properties will be populated/used.
+
+ function _createHandler(token, namespace, fnOrNode, domNodeAppropriate) {
+ _validateToken(token);
+
var handler = {
- func: (typeof(func_or_element)) ? func_or_element : null,
- namespace: sNamespace,
- domNode: (F2.isNativeDOMNode(func_or_element)) ? func_or_element : null
+ domNode: null,
+ func: null,
+ namespace: namespace
};
-
- if(!handler.func && !handler.domNode)
- {
- throw ('Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.');
+
+ if (F2.isNativeDOMNode(fnOrNode)) {
+ handler.domNode = fnOrNode;
+ } else if (typeof fnOrNode === 'function') {
+ handler.func = fnOrNode;
}
- if(handler.domNode && !bDomNodeAppropriate)
- {
- throw ('Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.');
+ if (!handler.func && !handler.domNode) {
+ throw new Error('Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.');
}
-
+
+ if (handler.domNode && !domNodeAppropriate) {
+ throw new Error('Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.');
+ }
+
return handler;
- };
-
- var _validateToken = function(sToken)
- {
- // check token against F2 and container
- if(_ct != sToken && _f2t != sToken) { throw ('Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().'); }
- };
-
- var _removeHandler = function(sToken, eventKey, sNamespace)
- {
- // will throw an exception and stop execution if the token is invalid
- _validateToken(sToken);
-
- if(!sNamespace && !eventKey)
- {
- return;
+ }
+
+ // Token must match F2 or container
+ function _validateToken(token) {
+ if (_containerToken !== token && _f2Token !== token) {
+ throw new Error('Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().');
}
- // remove by event key
- else if(!sNamespace && eventKey)
- {
- _handlerCollection[eventKey] = [];
+ }
+
+ // Token must match F2
+ function _validateF2Token(token) {
+ if (token != _f2Token) {
+ throw new Error('Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().');
}
- // remove by namespace only
- else if(sNamespace && !eventKey)
- {
- sNamespace = sNamespace.toLowerCase();
-
- for(var currentEventKey in _handlerCollection)
- {
- var eventCollection = _handlerCollection[currentEventKey];
- var newEvents = [];
-
- for(var i = 0, ec = eventCollection.length; i < ec; i++)
- {
- var currentEventHandler = eventCollection[i];
- if(currentEventHandler)
- {
- if(!currentEventHandler.namespace || currentEventHandler.namespace.toLowerCase() != sNamespace)
- {
- newEvents.push(currentEventHandler);
- }
- }
- }
+ }
+
+ function _filterHandlersByNamespace(handlers, namespace) {
+ var newHandlers = handlers.slice();
- eventCollection = newEvents;
- }
+ for (var i = newHandlers.length; i >= 0; i--) {
+ if (!newHandlers[i] || (newHandlers[i].namespace && newHandlers[i].namespace.toLowerCase() === namespace)) {
+ newHandlers.splice(i, 1);
+ }
}
- else if(sNamespace && _handlerCollection[eventKey])
- {
- sNamespace = sNamespace.toLowerCase();
-
- var newHandlerCollection = [];
-
- for(var iCounter = 0, hc = _handlerCollection[eventKey].length; iCounter < hc; iCounter++)
- {
- var currentHandler = _handlerCollection[eventKey][iCounter];
- if(currentHandler)
- {
- if(!currentHandler.namespace || currentHandler.namespace.toLowerCase() != sNamespace)
- {
- newHandlerCollection.push(currentHandler);
- }
+
+ return newHandlers;
+ }
+
+ function _removeHandler(token, eventKey, namespace) {
+ _validateToken(token);
+
+ if (namespace) {
+ namespace = namespace.toLowerCase();
+
+ if (eventKey && eventKey in _handlerCollection) {
+ _handlerCollection[eventKey] = _filterHandlersByNamespace(_handlerCollection[eventKey], namespace);
+ } else {
+ for (var key in _handlerCollection) {
+ _removeHandler(token, key, namespace);
}
}
-
- _handlerCollection[eventKey] = newHandlerCollection;
+ } else if (eventKey) {
+ _handlerCollection[eventKey] = [];
}
- };
-
+ }
+
+ function _parseEventKey(eventKey) {
+ var namespace = '';
+
+ if (eventKey.indexOf('.') !== -1) {
+ var eventParts = eventKey.split('.');
+ eventKey = eventParts[0];
+ namespace = eventParts[1];
+ }
+
+ return {
+ key: eventKey,
+ namespace: namespace
+ };
+ }
+
return {
/**
- * Allows Container Developer to retrieve a unique token which must be passed to
- * all `on` and `off` methods. This function will self destruct and can only be called
- * one time. Container Developers must store the return value inside of a closure.
- * @method getToken
- **/
- getToken: function()
- {
- // delete this method for security that way only the container has access to the token 1 time.
- // kind of Ethan Hunt-ish, this message will self destruct immediately.
+ * Allows Container Developer to retrieve a unique token which must be
+ * passed to all `on` and `off` methods. This function will self destruct
+ * and can only be called one time. Container Developers must store the
+ * return value inside of a closure.
+ * @method getToken
+ */
+ getToken: function() {
+ /**
+ * Delete this method for security that way only the container has
+ * access to the token 1 time. Kind of Ethan Hunt-ish, this message will
+ * self-destruct immediately.
+ */
delete this.getToken;
- // return the token, which we validate against.
- return _ct;
+ return _containerToken;
},
/**
- * Allows F2 to get a token internally. Token is required to call {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}}.
- * This function will self destruct to eliminate other sources from using the {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}}
- * and additional internal methods.
- * @method __f2GetToken
- * @private
- **/
- __f2GetToken: function()
- {
- // delete this method for security that way only the F2 internally has access to the token 1 time.
- // kind of Ethan Hunt-ish, this message will self destruct immediately.
+ * Allows F2 to get a token internally. Token is required to call
+ * {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}}. This
+ * function will self destruct to eliminate other sources from using the
+ * {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}} and
+ * additional internal methods.
+ * @method __f2GetToken
+ * @private
+ */
+ __f2GetToken: function() {
+ /**
+ * Delete this method for security that way only the container has
+ * access to the token 1 time. Kind of Ethan Hunt-ish, this message will
+ * self-destruct immediately.
+ */
delete this.__f2GetToken;
- // return the token, which we validate against.
- return _f2t;
+ return _f2Token;
},
/**
- * Allows F2 to trigger specific events internally.
- * @method __trigger
- * @private
- * @chainable
- * @param {String} token The token received from {{#crossLink "F2.AppHandlers/\_\_f2GetToken:method"}}{{/crossLink}}.
- * @param {String} eventKey The event to fire. The complete list of event keys is available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- **/
- __trigger: function(token, eventKey) // additional arguments will likely be passed
- {
- // will throw an exception and stop execution if the token is invalid
- if(token != _f2t)
- {
- throw ('Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().');
+ * Allows F2 to trigger specific events internally.
+ * @method __trigger
+ * @private
+ * @chainable
+ * @param {String} token The token received from {{#crossLink "F2.AppHandlers/\_\_f2GetToken:method"}}{{/crossLink}}.
+ * @param {String} eventKey The event to fire. The complete list of event
+ * keys is available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ */
+ __trigger: function(token, eventKey) {
+ _validateF2Token(token);
+
+ if (!_handlerCollection[eventKey]) {
+ throw new Error('Invalid EventKey passed. Check your inputs and try again.');
}
-
- if(_handlerCollection && _handlerCollection[eventKey])
- {
- // create a collection of arguments that are safe to pass to the callback.
- var passableArgs = [];
-
- // populate that collection with all arguments except token and eventKey
- for(var i = 2, j = arguments.length; i < j; i++)
- {
- passableArgs.push(arguments[i]);
- }
-
- if(_handlerCollection[eventKey].length === 0 && _defaultMethods[eventKey])
- {
- _defaultMethods[eventKey].apply(F2, passableArgs);
- return this;
- }
- else if(_handlerCollection[eventKey].length === 0 && !_handlerCollection[eventKey])
- {
- return this;
- }
-
- // fire all event listeners in the order that they were added.
- for(var iCounter = 0, hcl = _handlerCollection[eventKey].length; iCounter < hcl; iCounter++)
- {
- var handler = _handlerCollection[eventKey][iCounter];
-
- // appRender where root is already defined
- if (handler.domNode && arguments[2] && arguments[2].root && arguments[3])
- {
- var $appRoot = jQuery(arguments[2].root).append(arguments[3]);
- jQuery(handler.domNode).append($appRoot);
- }
- else if (handler.domNode && arguments[2] && !arguments[2].root && arguments[3])
- {
- // set the root to the actual HTML of the app
- arguments[2].root = jQuery(arguments[3]).get(0);
- // appends the root to the dom node specified
- jQuery(handler.domNode).append(arguments[2].root);
- }
- else
- {
- handler.func.apply(F2, passableArgs);
+
+ var callbackArgs = Array.prototype.slice.call(arguments, 2);
+
+ if (!_handlerCollection[eventKey].length && _defaultMethods[eventKey]) {
+ _defaultMethods[eventKey].apply(F2, callbackArgs);
+ } else {
+ for (var i = 0; i < _handlerCollection[eventKey].length; i++) {
+ var handler = _handlerCollection[eventKey][i];
+
+ // Check for appRender
+ if (handler.domNode && arguments.length >= 4) {
+ var appConfig = arguments[2];
+ var appHtml = arguments[3];
+
+ if (appConfig.root) {
+ jQuery(appConfig.root).append(appHtml);
+ } else {
+ appConfig.root = jQuery(appHtml).get(0);
+ }
+
+ jQuery(handler.domNode).append(appConfig.root);
+ } else {
+ handler.func.apply(F2, callbackArgs);
}
}
}
- else
- {
- throw ('Invalid EventKey passed. Check your inputs and try again.');
- }
-
+
return this;
},
/**
- * Allows Container Developer to easily tell all apps to render in a specific location. Only valid for eventType `appRender`.
- * @method on
- * @chainable
- * @param {String} token The token received from {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
- * @param {String} eventKey{.namespace} The event key used to determine which event to attach the listener to. The namespace is useful for removal
- * purposes. At this time it does not affect when an event is fired. Complete list of event keys available in
- * {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @params {HTMLElement} element Specific DOM element to which app gets appended.
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * 'appRender',
- * document.getElementById('my_app')
- * );
- *
- * Or:
- * @example
- * F2.AppHandlers.on(
- * _token,
- * 'appRender.myNamespace',
- * document.getElementById('my_app')
- * );
- **/
- /**
- * Allows Container Developer to add listener method that will be triggered when a specific event occurs.
- * @method on
- * @chainable
- * @param {String} token The token received from {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
- * @param {String} eventKey{.namespace} The event key used to determine which event to attach the listener to. The namespace is useful for removal
- * purposes. At this time it does not affect when an event is fired. Complete list of event keys available in
- * {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @params {Function} listener A function that will be triggered when a specific event occurs. For detailed argument definition refer to {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * 'appRenderBefore'
- * function() { F2.log('before app rendered!'); }
- * );
- *
- * Or:
- * @example
- * F2.AppHandlers.on(
- * _token,
- * 'appRenderBefore.myNamespace',
- * function() { F2.log('before app rendered!'); }
- * );
- **/
- on: function(token, eventKey, func_or_element)
- {
- var sNamespace = null;
-
- if(!eventKey)
- {
- throw ('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
- }
-
- // we need to check the key for a namespace
- if(eventKey.indexOf('.') > -1)
- {
- var arData = eventKey.split('.');
- eventKey = arData[0];
- sNamespace = arData[1];
- }
-
- if(_handlerCollection && _handlerCollection[eventKey])
- {
- _handlerCollection[eventKey].push(
- _createHandler(
- token,
- sNamespace,
- func_or_element,
- (eventKey == 'appRender')
- )
- );
+ * Allows Container Developer to add listener method that will be triggered
+ * when a specific event occurs.
+ * @method on
+ * @chainable
+ * @param {String} token The token received from
+ * {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
+ * @param {String} eventKey{.namespace} The event key used to determine
+ * which event to attach the listener to. The namespace is useful for
+ * removal purposes. At this time it does not affect when an event is fired.
+ * Complete list of event keys available in
+ * {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ * @param {Function|Element} listener A function that will be triggered
+ * when a specific event occurs. Optionally, a specific DOM element to
+ * which the app will be appended can be passed. For detailed argument
+ * definition refer to
+ * {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * 'appRenderBefore',
+ * function() {
+ * F2.log('before app rendered!');
+ * }
+ * );
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * 'appRenderBefore.myNamespace',
+ * function() {
+ * F2.log('before app rendered!');
+ * }
+ * );
+ */
+ on: function(token, eventKey, listener) {
+ if (!eventKey) {
+ throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
}
- else
- {
- throw ('Invalid EventKey passed. Check your inputs and try again.');
+
+ var event = _parseEventKey(eventKey);
+
+ if (!_handlerCollection[event.key]) {
+ throw new Error('Invalid eventKey passed. Check your inputs and try again.');
}
-
+
+ var isAppRender = (event.key === 'appRender');
+ var handler = _createHandler(token, event.namespace, listener, isAppRender);
+ _handlerCollection[event.key].push(handler);
+
return this;
},
/**
- * Allows Container Developer to remove listener methods for specific events
- * @method off
- * @chainable
- * @param {String} token The token received from {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
- * @param {String} eventKey{.namespace} The event key used to determine which event to attach the listener to. If no namespace is provided all
- * listeners for the specified event type will be removed.
- * Complete list available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.off(_token,'appRenderBefore');
- *
- **/
- off: function(token, eventKey)
- {
- var sNamespace = null;
-
- if(!eventKey)
- {
- throw ('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
- }
-
- // we need to check the key for a namespace
- if(eventKey.indexOf('.') > -1)
- {
- var arData = eventKey.split('.');
- eventKey = arData[0];
- sNamespace = arData[1];
- }
-
- if(_handlerCollection && _handlerCollection[eventKey])
- {
- _removeHandler(
- token,
- eventKey,
- sNamespace
- );
+ * Allows Container Developer to remove listener methods for specific events
+ * @method off
+ * @chainable
+ * @param {String} token The token received from {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
+ * @param {String} eventKey{.namespace} The event key used to determine
+ * which event to attach the listener to. If no namespace is provided all
+ * listeners for the specified event type will be removed. Complete list
+ * available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.off(token, 'appRenderBefore');
+ */
+ off: function(token, eventKey) {
+ if (!eventKey) {
+ throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
}
- else
- {
- throw ('Invalid EventKey passed. Check your inputs and try again.');
+
+ var event = _parseEventKey(eventKey);
+
+ if (!_handlerCollection[event.key]) {
+ throw new Error('Invalid EventKey passed. Check your inputs and try again.');
}
-
+
+ _removeHandler(token, event.key, event.namespace);
+
return this;
}
};
@@ -768,209 +675,205 @@ F2.extend('AppHandlers', (function() {
F2.extend('Constants', {
/**
- * A convenient collection of all available appHandler events.
- * @class F2.Constants.AppHandlers
- **/
- AppHandlers: (function()
- {
- return {
- /**
- * Equivalent to `appCreateRoot`. Identifies the create root method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}} )
- * @property APP_CREATE_ROOT
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_CREATE_ROOT,
- * function(appConfig)
- * {
- * // If you want to create a custom root. By default F2 uses the app's outermost HTML element.
- * // the app's html is not available until after the manifest is retrieved so this logic occurs in F2.Constants.AppHandlers.APP_RENDER
- * appConfig.root = jQuery('').get(0);
- * }
- * );
- */
- APP_CREATE_ROOT: 'appCreateRoot',
- /**
- * Equivalent to `appRenderBefore`. Identifies the before app render method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}} )
- * @property APP_RENDER_BEFORE
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_RENDER_BEFORE,
- * function(appConfig)
- * {
- * F2.log(appConfig);
- * }
- * );
- */
- APP_RENDER_BEFORE: 'appRenderBefore',
- /**
- * Equivalent to `appRender`. Identifies the app render method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}, [appHtml](../../app-development.html#app-design) )
- * @property APP_RENDER
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_RENDER,
- * function(appConfig, appHtml)
- * {
- * var $root = null;
- *
- * // if no app root is defined use the app's outer most node
- * if(!F2.isNativeDOMNode(appConfig.root))
- * {
- * appConfig.root = jQuery(appHtml).get(0);
- * // get a handle on the root in jQuery
- * $root = jQuery(appConfig.root);
- * }
- * else
- * {
- * // get a handle on the root in jQuery
- * $root = jQuery(appConfig.root);
- *
- * // append the app html to the root
- * $root.append(appHtml);
- * }
- *
- * // append the root to the body by default.
- * jQuery('body').append($root);
- * }
- * );
- */
- APP_RENDER: 'appRender',
- /**
- * Equivalent to `appRenderAfter`. Identifies the after app render method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}} )
- * @property APP_RENDER_AFTER
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_RENDER_AFTER,
- * function(appConfig)
- * {
- * F2.log(appConfig);
- * }
- * );
- */
- APP_RENDER_AFTER: 'appRenderAfter',
- /**
- * Equivalent to `appDestroyBefore`. Identifies the before app destroy method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( appInstance )
- * @property APP_DESTROY_BEFORE
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
- * function(appInstance)
- * {
- * F2.log(appInstance);
- * }
- * );
- */
- APP_DESTROY_BEFORE: 'appDestroyBefore',
- /**
- * Equivalent to `appDestroy`. Identifies the app destroy method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( appInstance )
- * @property APP_DESTROY
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_DESTROY,
- * function(appInstance)
- * {
- * // call the apps destroy method, if it has one
- * if(appInstance && appInstance.app && appInstance.app.destroy && typeof(appInstance.app.destroy) == 'function')
- * {
- * appInstance.app.destroy();
- * }
- * else if(appInstance && appInstance.app && appInstance.app.destroy)
- * {
- * F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
- * }
- *
- * // fade out and remove the root
- * jQuery(appInstance.config.root).fadeOut(500, function() {
- * jQuery(this).remove();
- * });
- * }
- * );
- */
- APP_DESTROY: 'appDestroy',
- /**
- * Equivalent to `appDestroyAfter`. Identifies the after app destroy method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( appInstance )
- * @property APP_DESTROY_AFTER
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_DESTROY_AFTER,
- * function(appInstance)
- * {
- * F2.log(appInstance);
- * }
- * );
- */
- APP_DESTROY_AFTER: 'appDestroyAfter',
- /**
- * Equivalent to `appScriptLoadFailed`. Identifies the app script load failed method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}, scriptInfo )
- * @property APP_SCRIPT_LOAD_FAILED
- * @type string
- * @static
- * @final
- * @example
- * var _token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * _token,
- * F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
- * function(appConfig, scriptInfo)
- * {
- * F2.log(appConfig.appId);
- * }
- * );
- */
- APP_SCRIPT_LOAD_FAILED: 'appScriptLoadFailed'
- };
- })()
+ * A convenient collection of all available appHandler events.
+ * @class F2.Constants.AppHandlers
+ **/
+ AppHandlers: {
+ /**
+ * Equivalent to `appCreateRoot`. Identifies the create root method for use
+ * in AppHandlers.on/off. When bound using
+ * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ * listener function passed will receive the following argument(s):
+ * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
+ * @property APP_CREATE_ROOT
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_CREATE_ROOT,
+ * function(appConfig) {
+ * // If you want to create a custom root. By default F2 uses the app's outermost HTML element.
+ * // The app's html is not available until after the manifest is retrieved so this logic occurs in F2.Constants.AppHandlers.APP_RENDER
+ * appConfig.root = jQuery('').get(0);
+ * }
+ * );
+ */
+ APP_CREATE_ROOT: 'appCreateRoot',
+ /**
+ * Equivalent to `appRenderBefore`. Identifies the before app render method
+ * for use in AppHandlers.on/off. When bound using
+ * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ * listener function passed will receive the following argument(s):
+ * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
+ * @property APP_RENDER_BEFORE
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_RENDER_BEFORE,
+ * function(appConfig) {
+ * F2.log(appConfig);
+ * }
+ * );
+ */
+ APP_RENDER_BEFORE: 'appRenderBefore',
+ /**
+ * Equivalent to `appRender`. Identifies the app render method for use in
+ * AppHandlers.on/off. When bound using
+ * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ * listener function passed will receive the following argument(s):
+ * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}},
+ * [appHtml](../../app-development.html#app-design)).
+ * @property APP_RENDER
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_RENDER,
+ * function(appConfig, appHtml) {
+ * var $root;
+ *
+ * // If no app root is defined use the app's outer most node
+ * if (!F2.isNativeDOMNode(appConfig.root)) {
+ * appConfig.root = jQuery(appHtml).get(0);
+ * // Get a handle on the root in jQuery
+ * $root = jQuery(appConfig.root);
+ * } else {
+ * // Get a handle on the root in jQuery
+ * $root = jQuery(appConfig.root);
+ * // Append the app html to the root
+ * $root.append(appHtml);
+ * }
+ *
+ * // Append the root to the body by default.
+ * jQuery('body').append($root);
+ * }
+ * );
+ */
+ APP_RENDER: 'appRender',
+ /**
+ * Equivalent to `appRenderAfter`. Identifies the after app render method for use in AppHandlers.on/off.
+ * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
+ * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}} )
+ * @property APP_RENDER_AFTER
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_RENDER_AFTER,
+ * function(appConfig) {
+ * F2.log(appConfig);
+ * }
+ * );
+ */
+ APP_RENDER_AFTER: 'appRenderAfter',
+ /**
+ * Equivalent to `appDestroyBefore`. Identifies the before app destroy
+ * method for use in AppHandlers.(on|off). When bound using
+ * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ * listener function passed will receive the following argument(s):
+ * (appInstance).
+ * @property APP_DESTROY_BEFORE
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
+ * function(appInstance) {
+ * F2.log(appInstance);
+ * }
+ * );
+ */
+ APP_DESTROY_BEFORE: 'appDestroyBefore',
+ /**
+ * Equivalent to `appDestroy`. Identifies the app destroy method for use in AppHandlers.on/off.
+ * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
+ * following argument(s): ( appInstance )
+ * @property APP_DESTROY
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_DESTROY,
+ * function(appInstance) {
+ * // Call the apps destroy method, if it has one
+ * if (appInstance && appInstance.app && appInstance.app.destroy && typeof(appInstance.app.destroy) == 'function') {
+ * appInstance.app.destroy();
+ * } else if (appInstance && appInstance.app && appInstance.app.destroy) {
+ * F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
+ * }
+ *
+ * // Fade out and remove the root
+ * jQuery(appInstance.config.root).fadeOut(500, function() {
+ * jQuery(this).remove();
+ * });
+ * }
+ * );
+ */
+ APP_DESTROY: 'appDestroy',
+ /**
+ * Equivalent to `appDestroyAfter`. Identifies the after app destroy method
+ * for use in AppHandlers.on/off. When bound using
+ * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ * listener function passed will receive the following argument(s):
+ * (appInstance)
+ * @property APP_DESTROY_AFTER
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_DESTROY_AFTER,
+ * function(appInstance) {
+ * F2.log(appInstance);
+ * }
+ * );
+ */
+ APP_DESTROY_AFTER: 'appDestroyAfter',
+ /**
+ * Equivalent to `appScriptLoadFailed`. Identifies the app script load
+ * failed method for use in AppHandlers.on/off. When bound using
+ * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}}
+ * the listener function passed will receive the following argument(s):
+ * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}, scriptInfo)
+ * @property APP_SCRIPT_LOAD_FAILED
+ * @type string
+ * @static
+ * @final
+ * @example
+ * var token = F2.AppHandlers.getToken();
+ * F2.AppHandlers.on(
+ * token,
+ * F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
+ * function(appConfig, scriptInfo) {
+ * F2.log(appConfig.appId);
+ * }
+ * );
+ */
+ APP_SCRIPT_LOAD_FAILED: 'appScriptLoadFailed'
+ }
});
+
/**
* Class stubs for documentation purposes
* @main F2
From 7571c41feb7b754b5860a8447bcccc0e1e15a4b4 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Fri, 2 Jan 2015 16:59:17 -0500
Subject: [PATCH 04/61] Setting the necessary values until we add modules
---
.jshintrc | 53 ++++++++++++++++++++++++++++++++---------------------
1 file changed, 32 insertions(+), 21 deletions(-)
diff --git a/.jshintrc b/.jshintrc
index 1da5e27a..a5fa8161 100644
--- a/.jshintrc
+++ b/.jshintrc
@@ -1,22 +1,33 @@
{
- "browser": true,
- "curly": true,
- "evil": true,
- "globals": {
- "console": true,
- "define": true, "exports": true, "require": true, "module": true,
- "describe": true, "xdescribe": true, "it": true, "xit": true, "expect": true, "runs": true, "waits": true, "waitsFor": true, "itConditionally": true,
- "easyXDM": true,
- "EventEmitter2": true,
- "F2": true,
- "jQuery": true,
- "$": true
- },
- "latedef": true,
- "noarg": true,
- "quotmark": "single",
- "shadow": false,
- "sub": true,
- "undef": true,
- "unused": "vars"
-}
\ No newline at end of file
+ "browser": true,
+ "curly": true,
+ "evil": true,
+ "globals": {
+ "console": true,
+ "define": true,
+ "exports": true,
+ "require": true,
+ "module": true,
+ "describe": true,
+ "xdescribe": true,
+ "it": true,
+ "xit": true,
+ "expect": true,
+ "runs": true,
+ "waits": true,
+ "waitsFor": true,
+ "itConditionally": true,
+ "easyXDM": true,
+ "EventEmitter2": true,
+ "F2": true,
+ "jQuery": true,
+ "$": true
+ },
+ "latedef": true,
+ "noarg": true,
+ "quotmark": "single",
+ "shadow": false,
+ "sub": true,
+ "undef": true,
+ "unused": false
+}
From 68375ca7957cef4782f45591cdd4bfe1de628f4a Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Fri, 2 Jan 2015 16:59:37 -0500
Subject: [PATCH 05/61] Fixing formatting and minor refactor
---
src/lib/F2.js | 611 ++++++++++++++++++++++++++------------------------
1 file changed, 317 insertions(+), 294 deletions(-)
diff --git a/src/lib/F2.js b/src/lib/F2.js
index 0baec7c8..3b77215e 100644
--- a/src/lib/F2.js
+++ b/src/lib/F2.js
@@ -1,313 +1,336 @@
-var F2;
-
/**
- * Open F2
- * @module f2
- * @main f2
- */
-F2 = (function() {
+ Open F2
+ @module f2
+ @main f2
+*/
+var F2 = (function() {
+ /**
+ Test whether a value is a native Node
+ @method _isNode
+ @private
+ @param {Value to test} test
+ @returns {boolean} True if Node
+ */
+ function _isNode(test) {
+ if (typeof Node === 'object') {
+ return test instanceof Node;
+ }
+
+ return typeof test === 'object' && typeof test.nodeType === 'number' && typeof test.nodeName === 'string';
+ }
+
+ /**
+ Test whether a value is a native Element
+ @method _isElement
+ @private
+ @param {Value to test} test
+ @returns {boolean} True if Element
+ */
+ function _isElement(test) {
+ if (typeof HTMLElement === 'object') {
+ return test instanceof HTMLElement;
+ }
+
+ return typeof test === 'object' && test.nodeType === 1 && typeof test.nodeName === 'string';
+ }
+
+ /**
+ Abosolutizes a relative URL
+ @method _absolutizeURI
+ @private
+ @param {e.g., location.href} base
+ @param {URL to absolutize} href
+ @returns {string} URL
+ Source: https://gist.github.com/Yaffle/1088850
+ Tests: http://skew.org/uri/uri_tests.html
+ */
+ function _absolutizeURI(base, href) { // RFC 3986
+ function removeDotSegments(input) {
+ var output = [];
+ input.replace(/^(\.\.?(\/|$))+/, '')
+ .replace(/\/(\.(\/|$))+/g, '/')
+ .replace(/\/\.\.$/, '/../')
+ .replace(/\/?[^\/]*/g, function(p) {
+ if (p === '/..') {
+ output.pop();
+ } else {
+ output.push(p);
+ }
+ });
+ return output.join('').replace(/^\//, input.charAt(0) === '/' ? '/' : '');
+ }
+
+ href = _parseURI(href || '');
+ base = _parseURI(base || '');
+
+ return !href || !base ? null : (href.protocol || base.protocol) +
+ (href.protocol || href.authority ? href.authority : base.authority) +
+ removeDotSegments(href.protocol || href.authority || href.pathname.charAt(0) === '/' ? href.pathname : (href.pathname ? ((base.authority && !base.pathname ? '/' : '') + base.pathname.slice(0, base.pathname.lastIndexOf('/') + 1) + href.pathname) : base.pathname)) +
+ (href.protocol || href.authority || href.pathname ? href.search : (href.search || base.search)) +
+ href.hash;
+ }
+
+ /**
+ Parses URI
+ @method _parseURI
+ @private
+ @param {The URL to parse} url
+ @returns {Parsed URL} string
+ Source: https://gist.github.com/Yaffle/1088850
+ Tests: http://skew.org/uri/uri_tests.html
+ */
+ function _parseURI(url) {
+ var whitespacePattern = /^\s+|\s+$/g;
+ var uriPattern = /^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/;
+ var match = String(url).replace(whitespacePattern, '').match(uriPattern);
- /**
- * Abosolutizes a relative URL
- * @method _absolutizeURI
- * @private
- * @param {e.g., location.href} base
- * @param {URL to absolutize} href
- * @returns {string} URL
- * Source: https://gist.github.com/Yaffle/1088850
- * Tests: http://skew.org/uri/uri_tests.html
- */
- var _absolutizeURI = function(base, href) {// RFC 3986
+ if (match) {
+ return {
+ href: match[0] || '',
+ protocol: match[1] || '',
+ authority: match[2] || '',
+ host: match[3] || '',
+ hostname: match[4] || '',
+ port: match[5] || '',
+ pathname: match[6] || '',
+ search: match[7] || '',
+ hash: match[8] || ''
+ };
+ }
+ }
- function removeDotSegments(input) {
- var output = [];
- input.replace(/^(\.\.?(\/|$))+/, '')
- .replace(/\/(\.(\/|$))+/g, '/')
- .replace(/\/\.\.$/, '/../')
- .replace(/\/?[^\/]*/g, function (p) {
- if (p === '/..') {
- output.pop();
- } else {
- output.push(p);
- }
- });
- return output.join('').replace(/^\//, input.charAt(0) === '/' ? '/' : '');
- }
+ return {
+ /**
+ A function to pass into F2.stringify which will prevent circular
+ reference errors when serializing objects
+ @method appConfigReplacer
+ */
+ appConfigReplacer: function(key, value) {
+ if (key == 'root' || key == 'ui' || key == 'height') {
+ return undefined;
+ } else {
+ return value;
+ }
+ },
+ /**
+ The apps namespace is a place for app developers to put the javascript
+ class that is used to initialize their app. The javascript classes should
+ be namepaced with the {{#crossLink "F2.AppConfig"}}{{/crossLink}}.appId.
+ It is recommended that the code be placed in a closure to help keep the
+ global namespace clean.
+ If the class has an 'init' function, that function will be called
+ automatically by F2.
+ @property Apps
+ @type object
+ @for F2
+ @example
+ F2.Apps['com_example_helloworld'] = (function() {
+ var App_Class = function(appConfig, appContent, root) {
+ this._app = appConfig; // the F2.AppConfig object
+ this._appContent = appContent // the F2.AppManifest.AppContent object
+ this.$root = $(root); // the root DOM Element that contains this app
+ }
- href = _parseURI(href || '');
- base = _parseURI(base || '');
+ App_Class.prototype.init = function() {
+ // perform init actions
+ }
- return !href || !base ? null : (href.protocol || base.protocol) +
- (href.protocol || href.authority ? href.authority : base.authority) +
- removeDotSegments(href.protocol || href.authority || href.pathname.charAt(0) === '/' ? href.pathname : (href.pathname ? ((base.authority && !base.pathname ? '/' : '') + base.pathname.slice(0, base.pathname.lastIndexOf('/') + 1) + href.pathname) : base.pathname)) +
- (href.protocol || href.authority || href.pathname ? href.search : (href.search || base.search)) +
- href.hash;
- };
+ return App_Class;
+ })();
+ @example
+ F2.Apps['com_example_helloworld'] = function(appConfig, appContent, root) {
+ return {
+ init: function() {
+ // Perform init actions
+ }
+ };
+ };
+ */
+ Apps: {},
+ /**
+ Creates a namespace on F2 and copies the contents of an object into that
+ namespace optionally overwriting existing properties.
+ @method extend
+ @param {string} ns The namespace to create. Pass a falsy value to
+ add properties to the F2 namespace directly.
+ @param {object} obj The object to copy into the namespace.
+ @param {bool} overwrite True if object properties should be overwritten
+ @return {object} The created object
+ */
+ extend: function(ns, obj, overwrite) {
+ var isFunc = typeof obj === 'function';
+ var parts = ns ? ns.split('.') : [];
+ var parent = this;
+ obj = obj || {};
- /**
- * Parses URI
- * @method _parseURI
- * @private
- * @param {The URL to parse} url
- * @returns {Parsed URL} string
- * Source: https://gist.github.com/Yaffle/1088850
- * Tests: http://skew.org/uri/uri_tests.html
- */
- var _parseURI = function(url) {
- var m = String(url).replace(/^\s+|\s+$/g, '').match(/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);
- // authority = '//' + user + ':' + pass '@' + hostname + ':' port
- return (m ? {
- href : m[0] || '',
- protocol : m[1] || '',
- authority: m[2] || '',
- host : m[3] || '',
- hostname : m[4] || '',
- port : m[5] || '',
- pathname : m[6] || '',
- search : m[7] || '',
- hash : m[8] || ''
- } : null);
- };
+ // Ignore leading global
+ if (parts[0] === 'F2') {
+ parts = parts.slice(1);
+ }
- return {
- /**
- * A function to pass into F2.stringify which will prevent circular
- * reference errors when serializing objects
- * @method appConfigReplacer
- */
- appConfigReplacer: function(key, value) {
- if (key == 'root' || key == 'ui' || key == 'height') {
- return undefined;
- } else {
- return value;
- }
- },
- /**
- * The apps namespace is a place for app developers to put the javascript
- * class that is used to initialize their app. The javascript classes should
- * be namepaced with the {{#crossLink "F2.AppConfig"}}{{/crossLink}}.appId.
- * It is recommended that the code be placed in a closure to help keep the
- * global namespace clean.
- *
- * If the class has an 'init' function, that function will be called
- * automatically by F2.
- * @property Apps
- * @type object
- * @example
- * F2.Apps["com_example_helloworld"] = (function() {
- * var App_Class = function(appConfig, appContent, root) {
- * this._app = appConfig; // the F2.AppConfig object
- * this._appContent = appContent // the F2.AppManifest.AppContent object
- * this.$root = $(root); // the root DOM Element that contains this app
- * }
- *
- * App_Class.prototype.init = function() {
- * // perform init actions
- * }
- *
- * return App_Class;
- * })();
- * @example
- * F2.Apps["com_example_helloworld"] = function(appConfig, appContent, root) {
- * return {
- * init:function() {
- * // perform init actions
- * }
- * };
- * };
- * @for F2
- */
- Apps: {},
- /**
- * Creates a namespace on F2 and copies the contents of an object into
- * that namespace optionally overwriting existing properties.
- * @method extend
- * @param {string} ns The namespace to create. Pass a falsy value to
- * add properties to the F2 namespace directly.
- * @param {object} obj The object to copy into the namespace.
- * @param {bool} overwrite True if object properties should be overwritten
- * @return {object} The created object
- */
- extend: function (ns, obj, overwrite) {
- var isFunc = typeof obj === 'function';
- var parts = ns ? ns.split('.') : [];
- var parent = this;
- obj = obj || {};
-
- // ignore leading global
- if (parts[0] === 'F2') {
- parts = parts.slice(1);
- }
+ // Create namespaces
+ for (var i = 0, len = parts.length; i < len; i++) {
+ if (!parent[parts[i]]) {
+ parent[parts[i]] = isFunc && (i + 1 === len) ? obj : {};
+ }
+ parent = parent[parts[i]];
+ }
- // create namespaces
- for (var i = 0, len = parts.length; i < len; i++) {
- if (!parent[parts[i]]) {
- parent[parts[i]] = isFunc && i + 1 == len ? obj : {};
- }
- parent = parent[parts[i]];
- }
+ // Copy object into namespace
+ if (!isFunc) {
+ for (var prop in obj) {
+ if (parent[prop] === undefined || overwrite) {
+ parent[prop] = obj[prop];
+ }
+ }
+ }
- // copy object into namespace
- if (!isFunc) {
- for (var prop in obj) {
- if (typeof parent[prop] === 'undefined' || overwrite) {
- parent[prop] = obj[prop];
- }
- }
- }
+ return parent;
+ },
+ /**
+ Generates a somewhat random id
+ @method guid
+ @return {string} A random id
+ @for F2
+ */
+ guid: function() {
+ function s4() {
+ return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
+ }
+ return (s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4());
+ },
+ /**
+ Search for a value within an array.
+ @method inArray
+ @param {object} value The value to search for
+ @param {Array} array The array to search
+ @return {bool} True if the item is in the array
+ */
+ inArray: function(value, array) {
+ return jQuery.inArray(value, array) > -1;
+ },
+ /**
+ Tests a URL to see if it's on the same domain (local) or not
+ @method isLocalRequest
+ @param {URL to test} url
+ @returns {bool} Whether the URL is local or not
+ Derived from: https://github.com/jquery/jquery/blob/master/src/ajax.js
+ */
+ isLocalRequest: function(url) {
+ var urlLower = url.toLowerCase();
+ var relUrlPattern = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/;
+ var parts = relUrlPattern.execute(urlLower);
+ var ajaxLocation;
+ var ajaxLocParts;
- return parent;
- },
- /**
- * Generates a somewhat random id
- * @method guid
- * @return {string} A random id
- * @for F2
- */
- guid: function() {
- var S4 = function() {
- return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
- };
- return (S4()+S4()+'-'+S4()+'-'+S4()+'-'+S4()+'-'+S4()+S4()+S4());
- },
- /**
- * Search for a value within an array.
- * @method inArray
- * @param {object} value The value to search for
- * @param {Array} array The array to search
- * @return {bool} True if the item is in the array
- */
- inArray: function(value, array) {
- return jQuery.inArray(value, array) > -1;
- },
- /**
- * Tests a URL to see if it's on the same domain (local) or not
- * @method isLocalRequest
- * @param {URL to test} url
- * @returns {bool} Whether the URL is local or not
- * Derived from: https://github.com/jquery/jquery/blob/master/src/ajax.js
- */
- isLocalRequest: function(url){
- var rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
- urlLower = url.toLowerCase(),
- parts = rurl.exec( urlLower ),
- ajaxLocation,
- ajaxLocParts;
+ try {
+ ajaxLocation = location.href;
+ } catch ( e ) {
+ // Use the href of an anchor since IE account for document.location
+ ajaxLocation = document.createElement('a');
+ ajaxLocation.href = '';
+ ajaxLocation = ajaxLocation.href;
+ }
- try {
- ajaxLocation = location.href;
- } catch( e ) {
- // Use the href attribute of an A element
- // since IE will modify it given document.location
- ajaxLocation = document.createElement('a');
- ajaxLocation.href = '';
- ajaxLocation = ajaxLocation.href;
- }
+ ajaxLocation = ajaxLocation.toLowerCase();
- ajaxLocation = ajaxLocation.toLowerCase();
+ // The url is relative, so we'll fully qualify it and re-regex
+ if (!parts) {
+ urlLower = _absolutizeURI(ajaxLocation, urlLower).toLowerCase();
+ parts = relUrlPattern.exec(urlLower);
+ }
- // uh oh, the url must be relative
- // make it fully qualified and re-regex url
- if (!parts){
- urlLower = _absolutizeURI(ajaxLocation,urlLower).toLowerCase();
- parts = rurl.exec( urlLower );
- }
+ // Segment location into parts
+ ajaxLocParts = relUrlPattern.exec(ajaxLocation) || [];
- // Segment location into parts
- ajaxLocParts = rurl.exec( ajaxLocation ) || [];
+ // Do hostname and protocol and port of manifest URL match location.href?
+ var matched = !(parts &&
+ (parts[1] !== ajaxLocParts[1] || parts[2] !== ajaxLocParts[2] ||
+ (parts[3] || (parts[1] === 'http:' ? '80' : '443')) !==
+ (ajaxLocParts[3] || (ajaxLocParts[1] === 'http:' ? '80' : '443'))));
- // do hostname and protocol and port of manifest URL match location.href? (a "local" request on the same domain)
- var matched = !(parts &&
- (parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
- (parts[ 3 ] || (parts[ 1 ] === 'http:' ? '80' : '443')) !==
- (ajaxLocParts[ 3 ] || (ajaxLocParts[ 1 ] === 'http:' ? '80' : '443'))));
-
- return matched;
- },
- /**
- * Utility method to determine whether or not the argument passed in is or is not a native dom node.
- * @method isNativeDOMNode
- * @param {object} testObject The object you want to check as native dom node.
- * @return {bool} Returns true if the object passed is a native dom node.
- */
- isNativeDOMNode: function(testObject) {
- var bIsNode = (
- typeof Node === 'object' ? testObject instanceof Node :
- testObject && typeof testObject === 'object' && typeof testObject.nodeType === 'number' && typeof testObject.nodeName === 'string'
- );
-
- var bIsElement = (
- typeof HTMLElement === 'object' ? testObject instanceof HTMLElement : //DOM2
- testObject && typeof testObject === 'object' && testObject.nodeType === 1 && typeof testObject.nodeName === 'string'
- );
-
- return (bIsNode || bIsElement);
- },
- /**
- * A utility logging function to write messages or objects to the browser console. This is a proxy for the [`console` API](https://developers.google.com/chrome-developer-tools/docs/console).
- * @method log
- * @param {object|string} Object/Method An object to be logged _or_ a `console` API method name, such as `warn` or `error`. All of the console method names are [detailed in the Chrome docs](https://developers.google.com/chrome-developer-tools/docs/console-api).
- * @param {object} [obj2]* An object to be logged
- * @example
- * // Pass any value (string, int, array, object, bool).
- * F2.log('foo');
- * F2.log([1, 2, 3]);
- * @example
- * // Use a console method name as the first argument.
- * F2.log('error', err);
- * F2.log('info', 'The session ID is ' + sessionId);
- */
- log: function() {
- if (!window.console) {
- return;
- }
+ return matched;
+ },
+ /**
+ Utility method to determine whether or not the argument passed in is or
+ is not a native DOM node.
+ @method isNativeDOMNode
+ @param {object} testObject The object you want to check as native DOM
+ node.
+ @return {bool} Returns true if the object passed is a native DOM node.
+ */
+ isNativeDOMNode: function(testObject) {
+ return _isNode(testObject) || _isElement(testObject);
+ },
+ /**
+ A utility logging function to write messages or objects to the browser
+ console. This is a proxy for the [`console` API](https://developers.google.com/chrome-developer-tools/docs/console).
+ @method log
+ @param {object|string} Object/Method An object to be logged _or_ a
+ `console` API method name, such as `warn` or `error`. All of the console
+ method names are [detailed in the Chrome docs](https://developers.google.com/chrome-developer-tools/docs/console-api).
+ @param {object} [obj2]* An object to be logged
+ @example
+ Pass any value (string, int, array, object, bool).
+ F2.log('foo');
+ F2.log([1, 2, 3]);
+ @example
+ Use a console method name as the first argument.
+ F2.log('error', err);
+ F2.log('info', 'The session ID is ' + sessionId);
+ */
+ log: function() {
+ if (!window.console) {
+ return;
+ }
- var method = 'log';
- var args = Array.prototype.slice.apply(arguments);
+ var method = 'log';
+ var args = Array.prototype.slice.apply(arguments);
- if (args.length > 1 && args[0] in window.console) {
- method = args.shift();
- }
+ if (args.length > 1 && args[0] in window.console) {
+ method = args.shift();
+ }
- if (window.console[method]) {
- window.console[method].apply(window.console, args);
- }
- },
- /**
- * Wrapper to convert a JSON string to an object
- * @method parse
- * @param {string} str The JSON string to convert
- * @return {object} The parsed object
- */
- parse: function(str) {
- return JSON.parse(str);
- },
- /**
- * Wrapper to convert an object to JSON
- *
- * **Note: When using F2.stringify on an F2.AppConfig object, it is
- * recommended to pass F2.appConfigReplacer as the replacer function in
- * order to prevent circular serialization errors.**
- * @method stringify
- * @param {object} value The object to convert
- * @param {function|Array} replacer An optional parameter that determines
- * how object values are stringified for objects. It can be a function or an
- * array of strings.
- * @param {int|string} space An optional parameter that specifies the
- * indentation of nested structures. If it is omitted, the text will be
- * packed without extra whitespace. If it is a number, it will specify the
- * number of spaces to indent at each level. If it is a string (such as '\t'
- * or ' '), it contains the characters used to indent at each level.
- * @return {string} The JSON string
- */
- stringify: function(value, replacer, space) {
- return JSON.stringify(value, replacer, space);
- },
- /**
- * Function to get the F2 version number
- * @method version
- * @return {string} F2 version number
- */
- version: function() { return '<%= version%>'; }
- };
+ if (window.console[method]) {
+ window.console[method].apply(window.console, args);
+ }
+ },
+ /**
+ Wrapper to convert a JSON string to an object
+ @method parse
+ @param {string} str The JSON string to convert
+ @return {object} The parsed object
+ */
+ parse: function(str) {
+ return JSON.parse(str);
+ },
+ /**
+ Wrapper to convert an object to JSON
+ **Note: When using F2.stringify on an F2.AppConfig object, it is
+ recommended to pass F2.appConfigReplacer as the replacer function in
+ order to prevent circular serialization errors.**
+ @method stringify
+ @param {object} value The object to convert
+ @param {function|Array} replacer An optional parameter that determines
+ how object values are stringified for objects. It can be a function or an
+ array of strings.
+ @param {int|string} space An optional parameter that specifies the
+ indentation of nested structures. If it is omitted, the text will be
+ packed without extra whitespace. If it is a number, it will specify the
+ number of spaces to indent at each level. If it is a string (such as '\t'
+ or ' '), it contains the characters used to indent at each level.
+ @return {string} The JSON string
+ */
+ stringify: function(value, replacer, space) {
+ return JSON.stringify(value, replacer, space);
+ },
+ /**
+ Function to get the F2 version number
+ @method version
+ @return {string} F2 version number
+ */
+ version: function() {
+ return '<%= version%>';
+ }
+ };
})();
From 694e5f0c46b196827aae0deaf1c339d0eabfa919 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Mon, 5 Jan 2015 09:40:40 -0700
Subject: [PATCH 06/61] Fixing app handlers styling
---
src/lib/app_handlers.js | 1041 ++++++++++++++++++++-------------------
1 file changed, 521 insertions(+), 520 deletions(-)
diff --git a/src/lib/app_handlers.js b/src/lib/app_handlers.js
index d689cf37..7c072aad 100644
--- a/src/lib/app_handlers.js
+++ b/src/lib/app_handlers.js
@@ -1,527 +1,528 @@
/**
- * The new `AppHandlers` functionality provides Container Developers a higher level of control over configuring app rendering and interaction.
- *
- *
- *The addition of `F2.AppHandlers` replaces the previous {{#crossLink "F2.ContainerConfig"}}{{/crossLink}} properties `beforeAppRender`, `appRender`, and `afterAppRender`. These methods were deprecated—but not removed—in version 1.2. They will be permanently removed in a future version of F2.
- *
- *
- *
- *Starting with F2 version 1.2, `AppHandlers` is the preferred method for Container Developers to manage app layout.
- *
- *
- * ### Order of Execution
- *
- * **App Rendering**
- *
- * 0. {{#crossLink "F2/registerApps"}}F2.registerApps(){{/crossLink}} method is called by the Container Developer and the following methods are run for *each* {{#crossLink "F2.AppConfig"}}{{/crossLink}} passed.
- * 1. **'appCreateRoot'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_CREATE\_ROOT*) handlers are fired in the order they were attached.
- * 2. **'appRenderBefore'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER\_BEFORE*) handlers are fired in the order they were attached.
- * 3. Each app's `manifestUrl` is requested asynchronously; on success the following methods are fired.
- * 3. **'appRender'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER*) handlers are fired in the order they were attached.
- * 4. **'appRenderAfter'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER\_AFTER*) handlers are fired in the order they were attached.
- *
- *
- * **App Removal**
-
- * 0. {{#crossLink "F2/removeApp"}}F2.removeApp(){{/crossLink}} with a specific {{#crossLink "F2.AppConfig/instanceId "}}{{/crossLink}} or {{#crossLink "F2/removeAllApps"}}F2.removeAllApps(){{/crossLink}} method is called by the Container Developer and the following methods are run.
- * 1. **'appDestroyBefore'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_BEFORE*) handlers are fired in the order they were attached.
- * 2. **'appDestroy'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY*) handlers are fired in the order they were attached.
- * 3. **'appDestroyAfter'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_AFTER*) handlers are fired in the order they were attached.
- *
- * **Error Handling**
-
- * 0. **'appScriptLoadFailed'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_SCRIPT\_LOAD\_FAILED*) handlers are fired in the order they were attached.
- *
- * @class F2.AppHandlers
- */
+ The new `AppHandlers` functionality provides Container Developers a higher
+ level of control over configuring app rendering and interaction.
+
+
+ The addition of `F2.AppHandlers` replaces the previous {{#crossLink "F2.ContainerConfig"}}{{/crossLink}} properties `beforeAppRender`, `appRender`, and `afterAppRender`. These methods were deprecated—but not removed—in version 1.2. They will be permanently removed in a future version of F2.
+
+
+
+ Starting with F2 version 1.2, `AppHandlers` is the preferred method for
+ Container Developers to manage app layout.
+
+
+ ### Order of Execution
+
+ **App Rendering**
+
+ 0. {{#crossLink "F2/registerApps"}}F2.registerApps(){{/crossLink}} method is called by the Container Developer and the following methods are run for *each* {{#crossLink "F2.AppConfig"}}{{/crossLink}} passed.
+ 1. **'appCreateRoot'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_CREATE\_ROOT*) handlers are fired in the order they were attached.
+ 2. **'appRenderBefore'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER\_BEFORE*) handlers are fired in the order they were attached.
+ 3. Each app's `manifestUrl` is requested asynchronously; on success the following methods are fired.
+ 3. **'appRender'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER*) handlers are fired in the order they were attached.
+ 4. **'appRenderAfter'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER\_AFTER*) handlers are fired in the order they were attached.
+
+ **App Removal**
+
+ 0. {{#crossLink "F2/removeApp"}}F2.removeApp(){{/crossLink}} with a specific {{#crossLink "F2.AppConfig/instanceId "}}{{/crossLink}} or {{#crossLink "F2/removeAllApps"}}F2.removeAllApps(){{/crossLink}} method is called by the Container Developer and the following methods are run.
+ 1. **'appDestroyBefore'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_BEFORE*) handlers are fired in the order they were attached.
+ 2. **'appDestroy'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY*) handlers are fired in the order they were attached.
+ 3. **'appDestroyAfter'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_AFTER*) handlers are fired in the order they were attached.
+
+ **Error Handling**
+
+ 0. **'appScriptLoadFailed'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_SCRIPT\_LOAD\_FAILED*) handlers are fired in the order they were attached.
+
+ @class F2.AppHandlers
+*/
F2.extend('AppHandlers', (function() {
- // The hidden token that we will check against every time someone tries to add, remove, fire handler
- var _containerToken = F2.guid();
- var _f2Token = F2.guid();
-
- var _handlerCollection = {
- appCreateRoot: [],
- appRenderBefore: [],
- appDestroyBefore: [],
- appRenderAfter: [],
- appDestroyAfter: [],
- appRender: [],
- appDestroy: [],
- appScriptLoadFailed: []
- };
-
- var _defaultMethods = {
- appRender: function(appConfig, appHtml) {
- // If no app root is defined use the app's outer most node
- if (F2.isNativeDOMNode(appConfig.root)) {
- jQuery(appConfig.root).append(appHtml);
- } else {
- appConfig.root = jQuery(appHtml).get(0);
- }
-
- document.body.appendChild(appConfig.root);
- },
- appDestroy: function(appInstance) {
- if (appInstance.app && appInstance.app.destroy) {
- if (typeof appInstance.app.destroy === 'function') {
- appInstance.app.destroy();
- } else {
- F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
- }
- }
-
- jQuery(appInstance.config.root).fadeOut(500, function() {
- jQuery(this).remove();
- });
- }
- };
-
- function _createHandler(token, namespace, fnOrNode, domNodeAppropriate) {
- _validateToken(token);
-
- var handler = {
- domNode: null,
- func: null,
- namespace: namespace
- };
-
- if (F2.isNativeDOMNode(fnOrNode)) {
- handler.domNode = fnOrNode;
- } else if (typeof fnOrNode === 'function') {
- handler.func = fnOrNode;
- }
-
- if (!handler.func && !handler.domNode) {
- throw new Error('Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.');
- }
-
- if (handler.domNode && !domNodeAppropriate) {
- throw new Error('Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.');
- }
-
- return handler;
- }
-
- // Token must match F2 or container
- function _validateToken(token) {
- if (_containerToken !== token && _f2Token !== token) {
- throw new Error('Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().');
- }
- }
-
- // Token must match F2
- function _validateF2Token(token) {
- if (token != _f2Token) {
- throw new Error('Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().');
- }
- }
-
- function _filterHandlersByNamespace(handlers, namespace) {
- var newHandlers = handlers.slice();
-
- for (var i = newHandlers.length; i >= 0; i--) {
- if (!newHandlers[i] || (newHandlers[i].namespace && newHandlers[i].namespace.toLowerCase() === namespace)) {
- newHandlers.splice(i, 1);
- }
- }
-
- return newHandlers;
- }
-
- function _removeHandler(token, eventKey, namespace) {
- _validateToken(token);
-
- if (namespace) {
- namespace = namespace.toLowerCase();
-
- if (eventKey && eventKey in _handlerCollection) {
- _handlerCollection[eventKey] = _filterHandlersByNamespace(_handlerCollection[eventKey], namespace);
- } else {
- for (var key in _handlerCollection) {
- _removeHandler(token, key, namespace);
- }
- }
- } else if (eventKey) {
- _handlerCollection[eventKey] = [];
- }
- }
-
- function _parseEventKey(eventKey) {
- var namespace = '';
-
- if (eventKey.indexOf('.') !== -1) {
- var eventParts = eventKey.split('.');
- eventKey = eventParts[0];
- namespace = eventParts[1];
- }
-
- return {
- key: eventKey,
- namespace: namespace
- };
- }
-
- return {
- /**
- * Allows Container Developer to retrieve a unique token which must be
- * passed to all `on` and `off` methods. This function will self destruct
- * and can only be called one time. Container Developers must store the
- * return value inside of a closure.
- * @method getToken
- */
- getToken: function() {
- /**
- * Delete this method for security that way only the container has
- * access to the token 1 time. Kind of Ethan Hunt-ish, this message will
- * self-destruct immediately.
- */
- delete this.getToken;
- return _containerToken;
- },
- /**
- * Allows F2 to get a token internally. Token is required to call
- * {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}}. This
- * function will self destruct to eliminate other sources from using the
- * {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}} and
- * additional internal methods.
- * @method __f2GetToken
- * @private
- */
- __f2GetToken: function() {
- /**
- * Delete this method for security that way only the container has
- * access to the token 1 time. Kind of Ethan Hunt-ish, this message will
- * self-destruct immediately.
- */
- delete this.__f2GetToken;
- return _f2Token;
- },
- /**
- * Allows F2 to trigger specific events internally.
- * @method __trigger
- * @private
- * @chainable
- * @param {String} token The token received from {{#crossLink "F2.AppHandlers/\_\_f2GetToken:method"}}{{/crossLink}}.
- * @param {String} eventKey The event to fire. The complete list of event
- * keys is available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- */
- __trigger: function(token, eventKey) {
- _validateF2Token(token);
-
- if (!_handlerCollection[eventKey]) {
- throw new Error('Invalid EventKey passed. Check your inputs and try again.');
- }
-
- var callbackArgs = Array.prototype.slice.call(arguments, 2);
-
- if (!_handlerCollection[eventKey].length && _defaultMethods[eventKey]) {
- _defaultMethods[eventKey].apply(F2, callbackArgs);
- } else {
- for (var i = 0; i < _handlerCollection[eventKey].length; i++) {
- var handler = _handlerCollection[eventKey][i];
-
- // Check for appRender
- if (handler.domNode && arguments.length >= 4) {
- var appConfig = arguments[2];
- var appHtml = arguments[3];
-
- if (appConfig.root) {
- jQuery(appConfig.root).append(appHtml);
- } else {
- appConfig.root = jQuery(appHtml).get(0);
- }
-
- jQuery(handler.domNode).append(appConfig.root);
- } else {
- handler.func.apply(F2, callbackArgs);
- }
- }
- }
-
- return this;
- },
- /**
- * Allows Container Developer to add listener method that will be triggered
- * when a specific event occurs.
- * @method on
- * @chainable
- * @param {String} token The token received from
- * {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
- * @param {String} eventKey{.namespace} The event key used to determine
- * which event to attach the listener to. The namespace is useful for
- * removal purposes. At this time it does not affect when an event is fired.
- * Complete list of event keys available in
- * {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @param {Function|Element} listener A function that will be triggered
- * when a specific event occurs. Optionally, a specific DOM element to
- * which the app will be appended can be passed. For detailed argument
- * definition refer to
- * {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * 'appRenderBefore',
- * function() {
- * F2.log('before app rendered!');
- * }
- * );
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * 'appRenderBefore.myNamespace',
- * function() {
- * F2.log('before app rendered!');
- * }
- * );
- */
- on: function(token, eventKey, listener) {
- if (!eventKey) {
- throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
- }
-
- var event = _parseEventKey(eventKey);
-
- if (!_handlerCollection[event.key]) {
- throw new Error('Invalid eventKey passed. Check your inputs and try again.');
- }
-
- var isAppRender = (event.key === 'appRender');
- var handler = _createHandler(token, event.namespace, listener, isAppRender);
- _handlerCollection[event.key].push(handler);
-
- return this;
- },
- /**
- * Allows Container Developer to remove listener methods for specific events
- * @method off
- * @chainable
- * @param {String} token The token received from {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
- * @param {String} eventKey{.namespace} The event key used to determine
- * which event to attach the listener to. If no namespace is provided all
- * listeners for the specified event type will be removed. Complete list
- * available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.off(token, 'appRenderBefore');
- */
- off: function(token, eventKey) {
- if (!eventKey) {
- throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
- }
-
- var event = _parseEventKey(eventKey);
-
- if (!_handlerCollection[event.key]) {
- throw new Error('Invalid EventKey passed. Check your inputs and try again.');
- }
-
- _removeHandler(token, event.key, event.namespace);
-
- return this;
- }
- };
+ // Token used when adding, removing, or triggering handlers
+ var _containerToken = F2.guid();
+ var _f2Token = F2.guid();
+
+ var _handlerCollection = {
+ appCreateRoot: [],
+ appRenderBefore: [],
+ appDestroyBefore: [],
+ appRenderAfter: [],
+ appDestroyAfter: [],
+ appRender: [],
+ appDestroy: [],
+ appScriptLoadFailed: []
+ };
+
+ var _defaultMethods = {
+ appRender: function(appConfig, appHtml) {
+ // If no app root is defined use the app's outer most node
+ if (F2.isNativeDOMNode(appConfig.root)) {
+ jQuery(appConfig.root).append(appHtml);
+ } else {
+ appConfig.root = jQuery(appHtml).get(0);
+ }
+
+ document.body.appendChild(appConfig.root);
+ },
+ appDestroy: function(appInstance) {
+ if (appInstance.app && appInstance.app.destroy) {
+ if (typeof appInstance.app.destroy === 'function') {
+ appInstance.app.destroy();
+ } else {
+ F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
+ }
+ }
+
+ jQuery(appInstance.config.root).fadeOut(500, function() {
+ jQuery(this).remove();
+ });
+ }
+ };
+
+ function _createHandler(token, namespace, fnOrNode, domNodeAppropriate) {
+ _validateToken(token);
+
+ var handler = {
+ domNode: null,
+ func: null,
+ namespace: namespace
+ };
+
+ if (F2.isNativeDOMNode(fnOrNode)) {
+ handler.domNode = fnOrNode;
+ } else if (typeof fnOrNode === 'function') {
+ handler.func = fnOrNode;
+ }
+
+ if (!handler.func && !handler.domNode) {
+ throw new Error('Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.');
+ }
+
+ if (handler.domNode && !domNodeAppropriate) {
+ throw new Error('Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.');
+ }
+
+ return handler;
+ }
+
+ // Token must match F2 or container
+ function _validateToken(token) {
+ if (_containerToken !== token && _f2Token !== token) {
+ throw new Error('Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().');
+ }
+ }
+
+ // Token must match F2
+ function _validateF2Token(token) {
+ if (token != _f2Token) {
+ throw new Error('Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().');
+ }
+ }
+
+ function _filterHandlersByNamespace(handlers, namespace) {
+ var newHandlers = handlers.slice();
+
+ for (var i = newHandlers.length; i >= 0; i--) {
+ if (!newHandlers[i] || (newHandlers[i].namespace && newHandlers[i].namespace.toLowerCase() === namespace)) {
+ newHandlers.splice(i, 1);
+ }
+ }
+
+ return newHandlers;
+ }
+
+ function _removeHandler(token, eventKey, namespace) {
+ _validateToken(token);
+
+ if (namespace) {
+ namespace = namespace.toLowerCase();
+
+ if (eventKey && eventKey in _handlerCollection) {
+ _handlerCollection[eventKey] = _filterHandlersByNamespace(_handlerCollection[eventKey], namespace);
+ } else {
+ for (var key in _handlerCollection) {
+ _removeHandler(token, key, namespace);
+ }
+ }
+ } else if (eventKey) {
+ _handlerCollection[eventKey] = [];
+ }
+ }
+
+ function _parseEventKey(eventKey) {
+ var namespace = '';
+
+ if (eventKey.indexOf('.') !== -1) {
+ var eventParts = eventKey.split('.');
+ eventKey = eventParts[0];
+ namespace = eventParts[1];
+ }
+
+ return {
+ key: eventKey,
+ namespace: namespace
+ };
+ }
+
+ return {
+ /**
+ Allows Container Developer to retrieve a unique token which must be
+ passed to all `on` and `off` methods. This function will self destruct
+ and can only be called one time. Container Developers must store the
+ return value inside of a closure.
+ @method getToken
+ */
+ getToken: function() {
+ /**
+ Delete this method for security that way only the container has
+ access to the token 1 time. Kind of Ethan Hunt-ish, this message will
+ self-destruct immediately.
+ */
+ delete this.getToken;
+ return _containerToken;
+ },
+ /**
+ Allows F2 to get a token internally. Token is required to call
+ {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}}. This
+ function will self destruct to eliminate other sources from using the
+ {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}} and
+ additional internal methods.
+ @method __f2GetToken
+ @private
+ */
+ __f2GetToken: function() {
+ /**
+ Delete this method for security that way only the container has
+ access to the token 1 time. Kind of Ethan Hunt-ish, this message will
+ self-destruct immediately.
+ */
+ delete this.__f2GetToken;
+ return _f2Token;
+ },
+ /**
+ Allows F2 to trigger specific events internally.
+ @method __trigger
+ @private
+ @chainable
+ @param {String} token The token received from {{#crossLink "F2.AppHandlers/\_\_f2GetToken:method"}}{{/crossLink}}.
+ @param {String} eventKey The event to fire. The complete list of event
+ keys is available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ */
+ __trigger: function(token, eventKey) {
+ _validateF2Token(token);
+
+ if (!_handlerCollection[eventKey]) {
+ throw new Error('Invalid EventKey passed. Check your inputs and try again.');
+ }
+
+ var callbackArgs = Array.prototype.slice.call(arguments, 2);
+
+ if (!_handlerCollection[eventKey].length && _defaultMethods[eventKey]) {
+ _defaultMethods[eventKey].apply(F2, callbackArgs);
+ } else {
+ for (var i = 0; i < _handlerCollection[eventKey].length; i++) {
+ var handler = _handlerCollection[eventKey][i];
+
+ // Check for appRender
+ if (handler.domNode && arguments.length >= 4) {
+ var appConfig = arguments[2];
+ var appHtml = arguments[3];
+
+ if (appConfig.root) {
+ jQuery(appConfig.root).append(appHtml);
+ } else {
+ appConfig.root = jQuery(appHtml).get(0);
+ }
+
+ jQuery(handler.domNode).append(appConfig.root);
+ } else {
+ handler.func.apply(F2, callbackArgs);
+ }
+ }
+ }
+
+ return this;
+ },
+ /**
+ Allows Container Developer to add listener method that will be triggered
+ when a specific event occurs.
+ @method on
+ @chainable
+ @param {String} token The token received from
+ {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
+ @param {String} eventKey{.namespace} The event key used to determine
+ which event to attach the listener to. The namespace is useful for
+ removal purposes. At this time it does not affect when an event is fired.
+ Complete list of event keys available in
+ {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ @param {Function} listener A function that will be triggered when a
+ specific event occurs. For detailed argument definition refer to
+ {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ 'appRenderBefore'
+ function() {
+ F2.log('before app rendered!');
+ }
+ );
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ 'appRenderBefore.myNamespace',
+ function() {
+ F2.log('before app rendered!');
+ }
+ );
+ */
+ on: function(token, eventKey, listener) {
+ if (!eventKey) {
+ throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
+ }
+
+ var event = _parseEventKey(eventKey);
+
+ if (!_handlerCollection[event.key]) {
+ throw new Error('Invalid eventKey passed. Check your inputs and try again.');
+ }
+
+ var isAppRender = (event.key === 'appRender');
+ var handler = _createHandler(token, event.namespace, listener, isAppRender);
+ _handlerCollection[event.key].push(handler);
+
+ return this;
+ },
+ /**
+ Allows Container Developer to remove listener methods for specific events
+ @method off
+ @chainable
+ @param {String} token The token received from {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
+ @param {String} eventKey{.namespace} The event key used to determine
+ which event to attach the listener to. If no namespace is provided all
+ listeners for the specified event type will be removed. Complete list
+ available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.off(token, 'appRenderBefore');
+ */
+ off: function(token, eventKey) {
+ if (!eventKey) {
+ throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
+ }
+
+ var event = _parseEventKey(eventKey);
+
+ if (!_handlerCollection[event.key]) {
+ throw new Error('Invalid EventKey passed. Check your inputs and try again.');
+ }
+
+ _removeHandler(token, event.key, event.namespace);
+
+ return this;
+ }
+ };
})());
F2.extend('Constants', {
- /**
- * A convenient collection of all available appHandler events.
- * @class F2.Constants.AppHandlers
- **/
- AppHandlers: {
- /**
- * Equivalent to `appCreateRoot`. Identifies the create root method for use
- * in AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
- * @property APP_CREATE_ROOT
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_CREATE_ROOT,
- * function(appConfig) {
- * // If you want to create a custom root. By default F2 uses the app's outermost HTML element.
- * // The app's html is not available until after the manifest is retrieved so this logic occurs in F2.Constants.AppHandlers.APP_RENDER
- * appConfig.root = jQuery('').get(0);
- * }
- * );
- */
- APP_CREATE_ROOT: 'appCreateRoot',
- /**
- * Equivalent to `appRenderBefore`. Identifies the before app render method
- * for use in AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
- * @property APP_RENDER_BEFORE
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_RENDER_BEFORE,
- * function(appConfig) {
- * F2.log(appConfig);
- * }
- * );
- */
- APP_RENDER_BEFORE: 'appRenderBefore',
- /**
- * Equivalent to `appRender`. Identifies the app render method for use in
- * AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}},
- * [appHtml](../../app-development.html#app-design)).
- * @property APP_RENDER
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_RENDER,
- * function(appConfig, appHtml) {
- * var $root;
- *
- * // If no app root is defined use the app's outer most node
- * if (!F2.isNativeDOMNode(appConfig.root)) {
- * appConfig.root = jQuery(appHtml).get(0);
- * // Get a handle on the root in jQuery
- * $root = jQuery(appConfig.root);
- * } else {
- * // Get a handle on the root in jQuery
- * $root = jQuery(appConfig.root);
- * // Append the app html to the root
- * $root.append(appHtml);
- * }
- *
- * // Append the root to the body by default.
- * jQuery('body').append($root);
- * }
- * );
- */
- APP_RENDER: 'appRender',
- /**
- * Equivalent to `appRenderAfter`. Identifies the after app render method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}} )
- * @property APP_RENDER_AFTER
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_RENDER_AFTER,
- * function(appConfig) {
- * F2.log(appConfig);
- * }
- * );
- */
- APP_RENDER_AFTER: 'appRenderAfter',
- /**
- * Equivalent to `appDestroyBefore`. Identifies the before app destroy
- * method for use in AppHandlers.(on|off). When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * (appInstance).
- * @property APP_DESTROY_BEFORE
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
- * function(appInstance) {
- * F2.log(appInstance);
- * }
- * );
- */
- APP_DESTROY_BEFORE: 'appDestroyBefore',
- /**
- * Equivalent to `appDestroy`. Identifies the app destroy method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( appInstance )
- * @property APP_DESTROY
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_DESTROY,
- * function(appInstance) {
- * // Call the apps destroy method, if it has one
- * if (appInstance && appInstance.app && appInstance.app.destroy && typeof(appInstance.app.destroy) == 'function') {
- * appInstance.app.destroy();
- * } else if (appInstance && appInstance.app && appInstance.app.destroy) {
- * F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
- * }
- *
- * // Fade out and remove the root
- * jQuery(appInstance.config.root).fadeOut(500, function() {
- * jQuery(this).remove();
- * });
- * }
- * );
- */
- APP_DESTROY: 'appDestroy',
- /**
- * Equivalent to `appDestroyAfter`. Identifies the after app destroy method
- * for use in AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * (appInstance)
- * @property APP_DESTROY_AFTER
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_DESTROY_AFTER,
- * function(appInstance) {
- * F2.log(appInstance);
- * }
- * );
- */
- APP_DESTROY_AFTER: 'appDestroyAfter',
- /**
- * Equivalent to `appScriptLoadFailed`. Identifies the app script load
- * failed method for use in AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}}
- * the listener function passed will receive the following argument(s):
- * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}, scriptInfo)
- * @property APP_SCRIPT_LOAD_FAILED
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
- * function(appConfig, scriptInfo) {
- * F2.log(appConfig.appId);
- * }
- * );
- */
- APP_SCRIPT_LOAD_FAILED: 'appScriptLoadFailed'
- }
+ /**
+ A convenient collection of all available appHandler events.
+ @class F2.Constants.AppHandlers
+ */
+ AppHandlers: {
+ /**
+ Equivalent to `appCreateRoot`. Identifies the create root method for use
+ in AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
+ @property APP_CREATE_ROOT
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_CREATE_ROOT,
+ function(appConfig) {
+ // If you want to create a custom root. By default F2 uses the app's outermost HTML element.
+ // The app's html is not available until after the manifest is retrieved so this logic occurs in F2.Constants.AppHandlers.APP_RENDER
+ appConfig.root = jQuery('').get(0);
+ }
+ );
+ */
+ APP_CREATE_ROOT: 'appCreateRoot',
+ /**
+ Equivalent to `appRenderBefore`. Identifies the before app render method
+ for use in AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
+ @property APP_RENDER_BEFORE
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_RENDER_BEFORE,
+ function(appConfig) {
+ F2.log(appConfig);
+ }
+ );
+ */
+ APP_RENDER_BEFORE: 'appRenderBefore',
+ /**
+ Equivalent to `appRender`. Identifies the app render method for use in
+ AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}},
+ [appHtml](../../app-development.html#app-design)).
+ @property APP_RENDER
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_RENDER,
+ function(appConfig, appHtml) {
+ var $root;
+
+ // If no app root is defined use the app's outer most node
+ if (!F2.isNativeDOMNode(appConfig.root)) {
+ appConfig.root = jQuery(appHtml).get(0);
+ // Get a handle on the root in jQuery
+ $root = jQuery(appConfig.root);
+ } else {
+ // Get a handle on the root in jQuery
+ $root = jQuery(appConfig.root);
+ // Append the app html to the root
+ $root.append(appHtml);
+ }
+
+ // Append the root to the body by default.
+ jQuery('body').append($root);
+ }
+ );
+ */
+ APP_RENDER: 'appRender',
+ /**
+ Equivalent to `appRenderAfter`. Identifies the after app render method
+ for use in AppHandlers.on/off. When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}}
+ the listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}})
+ @property APP_RENDER_AFTER
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_RENDER_AFTER,
+ function(appConfig) {
+ F2.log(appConfig);
+ }
+ );
+ */
+ APP_RENDER_AFTER: 'appRenderAfter',
+ /**
+ Equivalent to `appDestroyBefore`. Identifies the before app destroy
+ method for use in AppHandlers.(on|off). When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ (appInstance).
+ @property APP_DESTROY_BEFORE
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
+ function(appInstance) {
+ F2.log(appInstance);
+ }
+ );
+ */
+ APP_DESTROY_BEFORE: 'appDestroyBefore',
+ /**
+ Equivalent to `appDestroy`. Identifies the app destroy method for use in
+ AppHandlers.on/off. When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}}
+ the listener function passed will receive the following argument(s):
+ (appInstance)
+ @property APP_DESTROY
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_DESTROY,
+ function(appInstance) {
+ // Call the apps destroy method, if it has one
+ if (appInstance && appInstance.app && appInstance.app.destroy && typeof(appInstance.app.destroy) == 'function') {
+ appInstance.app.destroy();
+ } else if (appInstance && appInstance.app && appInstance.app.destroy) {
+ F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
+ }
+
+ // Fade out and remove the root
+ jQuery(appInstance.config.root).fadeOut(500, function() {
+ jQuery(this).remove();
+ });
+ }
+ );
+ */
+ APP_DESTROY: 'appDestroy',
+ /**
+ Equivalent to `appDestroyAfter`. Identifies the after app destroy method
+ for use in AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ (appInstance)
+ @property APP_DESTROY_AFTER
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_DESTROY_AFTER,
+ function(appInstance) {
+ F2.log(appInstance);
+ }
+ );
+ */
+ APP_DESTROY_AFTER: 'appDestroyAfter',
+ /**
+ Equivalent to `appScriptLoadFailed`. Identifies the app script load
+ failed method for use in AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}}
+ the listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}, scriptInfo)
+ @property APP_SCRIPT_LOAD_FAILED
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
+ function(appConfig, scriptInfo) {
+ F2.log(appConfig.appId);
+ }
+ );
+ */
+ APP_SCRIPT_LOAD_FAILED: 'appScriptLoadFailed'
+ }
});
From 12b5c4981d939fee2d192bfb774ebf9a2b792cc4 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Mon, 5 Jan 2015 09:41:10 -0700
Subject: [PATCH 07/61] Fixing 'classes' styling
---
src/lib/classes.js | 1023 +++++++++++++++++++++-----------------------
1 file changed, 477 insertions(+), 546 deletions(-)
diff --git a/src/lib/classes.js b/src/lib/classes.js
index 7ca91a86..e2286cab 100644
--- a/src/lib/classes.js
+++ b/src/lib/classes.js
@@ -1,548 +1,479 @@
/**
- * Class stubs for documentation purposes
- * @main F2
- */
+ Class stubs for documentation purposes
+ @main F2
+*/
F2.extend('', {
- /**
- * The App Class is an optional class that can be namespaced onto the
- * {{#crossLink "F2\Apps"}}{{/crossLink}} namespace. The
- * [F2 Docs](../../app-development.html#app-class)
- * has more information on the usage of the App Class.
- * @class F2.App
- * @constructor
- * @param {F2.AppConfig} appConfig The F2.AppConfig object for the app
- * @param {F2.AppManifest.AppContent} appContent The F2.AppManifest.AppContent
- * object
- * @param {Element} root The root DOM Element for the app
- */
- App: function(appConfig, appContent, root) {
- return {
- /**
- * An optional init function that will automatically be called when
- * F2.{{#crossLink "F2\registerApps"}}{{/crossLink}} is called.
- * @method init
- * @optional
- */
- init:function() {}
- };
- },
- /**
- * The AppConfig object represents an app's meta data
- * @class F2.AppConfig
- */
- AppConfig: {
- /**
- * The unique ID of the app. More information can be found
- * [here](../../app-development.html#f2-appid)
- * @property appId
- * @type string
- * @required
- */
- appId: '',
- /**
- * An object that represents the context of an app
- * @property context
- * @type object
- */
- context: {},
- /**
- * True if the app should be requested in a single request with other apps.
- * @property enableBatchRequests
- * @type bool
- * @default false
- */
- enableBatchRequests: false,
- /**
- * The height of the app. The initial height will be pulled from
- * the {{#crossLink "F2.AppConfig"}}{{/crossLink}} object, but later
- * modified by calling
- * F2.UI.{{#crossLink "F2.UI/updateHeight"}}{{/crossLink}}. This is used
- * for secure apps to be able to set the initial height of the iframe.
- * @property height
- * @type int
- */
- height: 0,
- /**
- * The unique runtime ID of the app.
- *
- * **This property is populated during the
- * F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process**
- * @property instanceId
- * @type string
- */
- instanceId: '',
- /**
- * True if the app will be loaded in an iframe. This property
- * will be true if the {{#crossLink "F2.AppConfig"}}{{/crossLink}} object
- * sets isSecure = true. It will also be true if the
- * [container](../../container-development.html) has made the decision to
- * run apps in iframes.
- * @property isSecure
- * @type bool
- * @default false
- */
- isSecure: false,
- /**
- * The language and region specification for this container
- * represented as an IETF-defined standard language tag,
- * e.g. `"en-us"` or `"de-de"`. This is passed during the
- * F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process.
- *
- * @property containerLocale
- * @type string
- * @default null
- * @since 1.4.0
- */
- containerLocale: null,
- /**
- * The languages and regions supported by this app represented
- * as an array of IETF-defined standard language tags,
- * e.g. `["en-us","de-de"]`.
- *
- * @property localeSupport
- * @type array
- * @default []
- * @since 1.4.0
- */
- localeSupport: [],
- /**
- * The url to retrieve the {{#crossLink "F2.AppManifest"}}{{/crossLink}}
- * object.
- * @property manifestUrl
- * @type string
- * @required
- */
- manifestUrl: '',
- /**
- * The recommended maximum width in pixels that this app should be run.
- * **It is up to the [container](../../container-development.html) to
- * implement the logic to prevent an app from being run when the maxWidth
- * requirements are not met.**
- * @property maxWidth
- * @type int
- */
- maxWidth: 0,
- /**
- * The recommended minimum grid size that this app should be run. This
- * value corresponds to the 12-grid system that is used by the
- * [container](../../container-development.html). This property should be
- * set by apps that require a certain number of columns in their layout.
- * @property minGridSize
- * @type int
- * @default 4
- */
- minGridSize: 4,
- /**
- * The recommended minimum width in pixels that this app should be run. **It
- * is up to the [container](../../container-development.html) to implement
- * the logic to prevent an app from being run when the minWidth requirements
- * are not met.
- * @property minWidth
- * @type int
- * @default 300
- */
- minWidth: 300,
- /**
- * The name of the app
- * @property name
- * @type string
- * @required
- */
- name: '',
- /**
- * The root DOM element that contains the app
- *
- * **This property is populated during the
- * F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process**
- * @property root
- * @type Element
- */
- root: undefined,
- /**
- * The instance of F2.UI providing easy access to F2.UI methods
- *
- * **This property is populated during the
- * F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process**
- * @property ui
- * @type F2.UI
- */
- ui: undefined,
- /**
- * The views that this app supports. Available views
- * are defined in {{#crossLink "F2.Constants.Views"}}{{/crossLink}}. The
- * presence of a view can be checked via
- * F2.{{#crossLink "F2/inArray"}}{{/crossLink}}:
- *
- * F2.inArray(F2.Constants.Views.SETTINGS, app.views)
- *
- * @property views
- * @type Array
- */
- views: []
- },
- /**
- * The assets needed to render an app on the page
- * @class F2.AppManifest
- */
- AppManifest: {
- /**
- * The array of {{#crossLink "F2.AppManifest.AppContent"}}{{/crossLink}}
- * objects
- * @property apps
- * @type Array
- * @required
- */
- apps: [],
- /**
- * Any inline javascript tha should initially be run
- * @property inlineScripts
- * @type Array
- * @optional
- */
- inlineScripts: [],
- /**
- * Urls to javascript files required by the app
- * @property scripts
- * @type Array
- * @optional
- */
- scripts: [],
- /**
- * Urls to CSS files required by the app
- * @property styles
- * @type Array
- * @optional
- */
- styles: []
- },
- /**
- * The AppContent object
- * @class F2.AppManifest.AppContent
- **/
- AppContent: {
- /**
- * Arbitrary data to be passed along with the app
- * @property data
- * @type object
- * @optional
- */
- data: {},
- /**
- * The string of HTML representing the app
- * @property html
- * @type string
- * @required
- */
- html: '',
- /**
- * A status message
- * @property status
- * @type string
- * @optional
- */
- status: ''
- },
- /**
- * An object containing configuration information for the
- * [container](../../container-development.html)
- * @class F2.ContainerConfig
- */
- ContainerConfig: {
- /**
- * Allows the [container](../../container-development.html) to override how
- * an app's html is inserted into the page. The function should accept an
- * {{#crossLink "F2.AppConfig"}}{{/crossLink}} object and also a string of
- * html
- * @method afterAppRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} html The string of html representing the app
- * @return {Element} The DOM Element surrounding the app
- */
- afterAppRender: function(appConfig, html) {},
- /**
- * Allows the [container](../../container-development.html) to wrap an app
- * in extra html. The function should accept an
- * {{#crossLink "F2.AppConfig"}}{{/crossLink}} object and also a string of
- * html. The extra html can provide links to edit app settings and remove an
- * app from the container. See
- * {{#crossLink "F2.Constants.Css"}}{{/crossLink}} for CSS classes that
- * should be applied to elements.
- * @method appRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} html The string of html representing the app
- */
- appRender: function(appConfig, html) {},
- /**
- * Allows the container to render html for an app before the AppManifest for
- * an app has loaded. This can be useful if the design calls for loading
- * icons to appear for each app before each app is loaded and rendered to
- * the page.
- * @method beforeAppRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @return {Element} The DOM Element surrounding the app
- */
- beforeAppRender: function(appConfig) {},
- /**
- * True to enable debug mode in F2.js. Adds additional logging, resource cache busting, etc.
- * @property debugMode
- * @type bool
- * @default false
- */
- debugMode: false,
- /**
- * The default language and region specification for this container
- * represented as an IETF-defined standard language tag,
- * e.g. `"en-us"` or `"de-de"`. This value is passed to each app
- * registered as `containerLocale`.
- *
- * @property locale
- * @type string
- * @default null
- * @since 1.4.0
- */
- locale: null,
- /**
- * Milliseconds before F2 fires callback on script resource load errors. Due to issue with the way Internet Explorer attaches load events to script elements, the error event doesn't fire.
- * @property scriptErrorTimeout
- * @type milliseconds
- * @default 7000 (7 seconds)
- */
- scriptErrorTimeout: 7000,
- /**
- * Tells the container that it is currently running within
- * a secure app page
- * @property isSecureAppPage
- * @type bool
- */
- isSecureAppPage: false,
- /**
- * Allows the container to specify which page is used when
- * loading a secure app. The page must reside on a different domain than the
- * container
- * @property secureAppPagePath
- * @type string
- * @for F2.ContainerConfig
- */
- secureAppPagePath: '',
- /**
- * Specifies what views a container will provide buttons
- * or links to. Generally, the views will be switched via buttons or links
- * in the app's header.
- * @property supportedViews
- * @type Array
- * @required
- */
- supportedViews: [],
- /**
- * An object containing configuration defaults for F2.UI
- * @class F2.ContainerConfig.UI
- */
- UI: {
- /**
- * An object containing configuration defaults for the
- * F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} and
- * F2.UI.{{#crossLink "F2.UI/hideMask"}}{{/crossLink}} methods.
- * @class F2.ContainerConfig.UI.Mask
- */
- Mask: {
- /**
- * The backround color of the overlay
- * @property backgroundColor
- * @type string
- * @default #FFF
- */
- backgroundColor: '#FFF',
- /**
- * The path to the loading icon
- * @property loadingIcon
- * @type string
- */
- loadingIcon: '',
- /**
- * The opacity of the background overlay
- * @property opacity
- * @type int
- * @default 0.6
- */
- opacity: 0.6,
- /**
- * Do not use inline styles for mask functinality. Instead classes will
- * be applied to the elements and it is up to the container provider to
- * implement the class definitions.
- * @property useClasses
- * @type bool
- * @default false
- */
- useClasses: false,
- /**
- * The z-index to use for the overlay
- * @property zIndex
- * @type int
- * @default 2
- */
- zIndex: 2
- }
- },
- /**
- * Allows the container to fully override how the AppManifest request is
- * made inside of F2.
- *
- * @method xhr
- * @param {string} url The manifest url
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @param {function} success The function to be called if the request
- * succeeds
- * @param {function} error The function to be called if the request fails
- * @param {function} complete The function to be called when the request
- * finishes (after success and error callbacks have been executed)
- * @return {XMLHttpRequest} The XMLHttpRequest object (or an object that has
- * an `abort` function (such as the jqXHR object in jQuery) to abort the
- * request)
- *
- * @example
- * F2.init({
- * xhr: function(url, appConfigs, success, error, complete) {
- * $.ajax({
- * url: url,
- * type: 'POST',
- * data: {
- * params: F2.stringify(appConfigs, F2.appConfigReplacer)
- * },
- * jsonp: false, // do not put 'callback=' in the query string
- * jsonpCallback: F2.Constants.JSONP_CALLBACK + appConfigs[0].appId, // Unique function name
- * dataType: 'json',
- * success: function(appManifest) {
- * // custom success logic
- * success(appManifest); // fire success callback
- * },
- * error: function() {
- * // custom error logic
- * error(); // fire error callback
- * },
- * complete: function() {
- * // custom complete logic
- * complete(); // fire complete callback
- * }
- * });
- * }
- * });
- *
- * @for F2.ContainerConfig
- */
- //xhr: function(url, appConfigs, success, error, complete) {},
- /**
- * Allows the container to override individual parts of the AppManifest
- * request. See properties and methods with the `xhr.` prefix.
- * @property xhr
- * @type Object
- *
- * @example
- * F2.init({
- * xhr: {
- * url: function(url, appConfigs) {
- * return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url);
- * }
- * }
- * });
- */
- xhr: {
- /**
- * Allows the container to override the request data type (JSON or JSONP)
- * that is used for the request
- * @method xhr.dataType
- * @param {string} url The manifest url
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @return {string} The request data type that should be used
- *
- * @example
- * F2.init({
- * xhr: {
- * dataType: function(url) {
- * return F2.isLocalRequest(url) ? 'json' : 'jsonp';
- * },
- * type: function(url) {
- * return F2.isLocalRequest(url) ? 'POST' : 'GET';
- * }
- * }
- * });
- */
- dataType: function(url, appConfigs) {},
- /**
- * Allows the container to override the request method that is used (just
- * like the `type` parameter to `jQuery.ajax()`.
- * @method xhr.type
- * @param {string} url The manifest url
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @return {string} The request method that should be used
- *
- * @example
- * F2.init({
- * xhr: {
- * dataType: function(url) {
- * return F2.isLocalRequest(url) ? 'json' : 'jsonp';
- * },
- * type: function(url) {
- * return F2.isLocalRequest(url) ? 'POST' : 'GET';
- * }
- * }
- * });
- */
- type: function(url, appConfigs) {},
- /**
- * Allows the container to override the url that is used to request an
- * app's F2.{{#crossLink "F2.AppManifest"}}{{/crossLink}}
- * @method xhr.url
- * @param {string} url The manifest url
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @return {string} The url that should be used for the request
- *
- * @example
- * F2.init({
- * xhr: {
- * url: function(url, appConfigs) {
- * return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url);
- * }
- * }
- * });
- */
- url: function(url, appConfigs) {}
- },
- /**
- * Allows the container to override the script loader which requests
- * dependencies defined in the {{#crossLink "F2.AppManifest"}}{{/crossLink}}.
- * @property loadScripts
- * @type function
- *
- * @example
- * F2.init({
- * loadScripts: function(scripts,inlines,callback){
- * //load scripts using $.load() for each script or require(scripts)
- * callback();
- * }
- * });
- */
- loadScripts: function(scripts,inlines,callback){},
- /**
- * Allows the container to override the stylesheet loader which requests
- * dependencies defined in the {{#crossLink "F2.AppManifest"}}{{/crossLink}}.
- * @property loadStyles
- * @type function
- *
- * @example
- * F2.init({
- * loadStyles: function(styles,callback){
- * //load styles using $.load() for each stylesheet or another method
- * callback();
- * }
- * });
- */
- loadStyles: function(styles,callback){}
- }
-});
\ No newline at end of file
+ /**
+ The App Class is an optional class that can be namespaced onto the
+ {{#crossLink "F2\Apps"}}{{/crossLink}} namespace. The [F2 Docs](../../app-development.html#app-class)
+ has more information on the usage of the App Class.
+ @class F2.App
+ @constructor
+ @param {F2.AppConfig} appConfig The F2.AppConfig object for the app
+ @param {F2.AppManifest.AppContent} appContent The F2.AppManifest.AppContent
+ object
+ @param {Element} root The root DOM Element for the app
+ */
+ App: function(appConfig, appContent, root) {
+ return {
+ /**
+ An optional init function that will automatically be called when
+ F2.{{#crossLink "F2\registerApps"}}{{/crossLink}} is called.
+ @method init
+ @optional
+ */
+ init: function() {}
+ };
+ },
+ /**
+ The AppConfig object represents an app's meta data
+ @class F2.AppConfig
+ */
+ AppConfig: {
+ /**
+ The unique ID of the app. More information can be found [here](../../app-development.html#f2-appid).
+ @property appId
+ @type string
+ @required
+ */
+ appId: '',
+ /**
+ An object that represents the context of an app.
+ @property context
+ @type object
+ */
+ context: {},
+ /**
+ True if the app should be requested in a single request with other apps.
+ @property enableBatchRequests
+ @type bool
+ @default false
+ */
+ enableBatchRequests: false,
+ /**
+ The height of the app. The initial height will be pulled from the
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} object, but later modified by
+ calling F2.UI.{{#crossLink "F2.UI/updateHeight"}}{{/crossLink}}. This is
+ used for secure apps to be able to set the initial height of the iframe.
+ @property height
+ @type int
+ */
+ height: 0,
+ /**
+ The unique runtime ID of the app.
+ **This property is populated during the
+ F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process**
+ @property instanceId
+ @type string
+ */
+ instanceId: '',
+ /**
+ True if the app will be loaded in an iframe. This property will be true
+ if the {{#crossLink "F2.AppConfig"}}{{/crossLink}} object sets
+ `isSecure = true`. It will also be true if the [container](../../container-development.html)
+ has made the decision to run apps in iframes.
+ @property isSecure
+ @type bool
+ @default false
+ */
+ isSecure: false,
+ /**
+ The language and region specification for this container represented as
+ an IETF-defined standard language tag, e.g. `"en-us"` or `"de-de"`. This
+ is passed during the F2.{{#crossLink "F2/registerApps"}}{{/crossLink}}
+ process.
+ @property containerLocale
+ @type string
+ @default null
+ @since 1.4.0
+ */
+ containerLocale: null,
+ /**
+ The languages and regions supported by this app represented as an array
+ of IETF-defined standard language tags, e.g. `["en-us","de-de"]`.
+ @property localeSupport
+ @type array
+ @default []
+ @since 1.4.0
+ */
+ localeSupport: [],
+ /**
+ The url to retrieve the {{#crossLink "F2.AppManifest"}}{{/crossLink}}
+ object.
+ @property manifestUrl
+ @type string
+ @required
+ */
+ manifestUrl: '',
+ /**
+ The recommended maximum width in pixels that this app should be run. **It
+ is up to the [container](../../container-development.html) to implement
+ the logic to prevent an app from being run when the maxWidth requirements
+ are not met.**
+ @property maxWidth
+ @type int
+ */
+ maxWidth: 0,
+ /**
+ The recommended minimum grid size that this app should be run. This value
+ corresponds to the 12-grid system that is used by the [container](../../container-development.html).
+ This property should be set by apps that require a certain number of
+ columns in their layout.
+ @property minGridSize
+ @type int
+ @default 4
+ */
+ minGridSize: 4,
+ /**
+ The recommended minimum width in pixels that this app should be run.
+ **It is up to the [container](../../container-development.html) to
+ implement the logic to prevent an app from being run when the minWidth
+ requirements are not met.
+ @property minWidth
+ @type int
+ @default 300
+ */
+ minWidth: 300,
+ /**
+ The name of the app.
+ @property name
+ @type string
+ @required
+ */
+ name: '',
+ /**
+ The root DOM element that contains the app.
+ **This property is populated during the F2.{{#crossLink "F2/registerApps"}}{{/crossLink}}
+ process.**
+ @property root
+ @type Element
+ */
+ root: undefined,
+ /**
+ The instance of F2.UI providing easy access to F2.UI methods.
+ **This property is populated during the F2.{{#crossLink "F2/registerApps"}}{{/crossLink}}
+ process.**
+ @property ui
+ @type F2.UI
+ */
+ ui: undefined,
+ /**
+ The views that this app supports. Available views are defined in
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}}. The presence of a view
+ can be checked via F2.{{#crossLink "F2/inArray"}}{{/crossLink}}: F2.inArray(F2.Constants.Views.SETTINGS, app.views).
+ @property views
+ @type Array
+ */
+ views: []
+ },
+ /**
+ The assets needed to render an app on the page.
+ @class F2.AppManifest
+ */
+ AppManifest: {
+ /**
+ The array of {{#crossLink "F2.AppManifest.AppContent"}}{{/crossLink}}
+ objects.
+ @property apps
+ @type Array
+ @required
+ */
+ apps: [],
+ /**
+ Any inline javascript tha should initially be run.
+ @property inlineScripts
+ @type Array
+ @optional
+ */
+ inlineScripts: [],
+ /**
+ Urls to javascript files required by the app.
+ @property scripts
+ @type Array
+ @optional
+ */
+ scripts: [],
+ /**
+ Urls to CSS files required by the app.
+ @property styles
+ @type Array
+ @optional
+ */
+ styles: []
+ },
+ /**
+ The AppContent object.
+ @class F2.AppManifest.AppContent
+ */
+ AppContent: {
+ /**
+ Arbitrary data to be passed along with the app.
+ @property data
+ @type object
+ @optional
+ */
+ data: {},
+ /**
+ The string of HTML representing the app.
+ @property html
+ @type string
+ @required
+ */
+ html: '',
+ /**
+ A status message.
+ @property status
+ @type string
+ @optional
+ */
+ status: ''
+ },
+ /**
+ An object containing configuration information for the [container](../../container-development.html).
+ @class F2.ContainerConfig
+ */
+ ContainerConfig: {
+ /**
+ Allows the [container](../../container-development.html) to override how
+ an app's html is inserted into the page. The function should accept an
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} object and also a string of
+ html.
+ @method afterAppRender
+ @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}}
+ and will be removed in v2.0
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} html The string of html representing the app
+ @return {Element} The DOM Element surrounding the app
+ */
+ afterAppRender: function(appConfig, html) {},
+ /**
+ Allows the [container](../../container-development.html) to wrap an app
+ in extra html. The function should accept an {{#crossLink "F2.AppConfig"}}{{/crossLink}}
+ object and also a string of html. The extra html can provide links to
+ edit app settings and remove an app from the container. See {{#crossLink "F2.Constants.Css"}}{{/crossLink}}
+ for CSS classes that should be applied to elements.
+ @method appRender
+ @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}}
+ and will be removed in v2.0
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} html The string of html representing the app
+ */
+ appRender: function(appConfig, html) {},
+ /**
+ Allows the container to render html for an app before the AppManifest for
+ an app has loaded. This can be useful if the design calls for loading
+ icons to appear for each app before each app is loaded and rendered to
+ the page.
+ @method beforeAppRender
+ @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}}
+ and will be removed in v2.0
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @return {Element} The DOM Element surrounding the app
+ */
+ beforeAppRender: function(appConfig) {},
+ /**
+ True to enable debug mode in F2.js. Adds additional logging, resource
+ cache busting, etc.
+ @property debugMode
+ @type bool
+ @default false
+ */
+ debugMode: false,
+ /**
+ The default language and region specification for this container
+ represented as an IETF-defined standard language tag, e.g. `"en-us"` or
+ `"de-de"`. This value is passed to each app registered as
+ `containerLocale`.
+ @property locale
+ @type string
+ @default null
+ @since 1.4.0
+ */
+ locale: null,
+ /**
+ Milliseconds before F2 fires callback on script resource load errors. Due
+ to issue with the way Internet Explorer attaches load events to script
+ elements, the error event doesn't fire.
+ @property scriptErrorTimeout
+ @type milliseconds
+ @default 7000 (7 seconds)
+ */
+ scriptErrorTimeout: 7000,
+ /**
+ Tells the container that it is currently running within a secure app page.
+ @property isSecureAppPage
+ @type bool
+ */
+ isSecureAppPage: false,
+ /**
+ Allows the container to specify which page is used when loading a secure
+ app. The page must reside on a different domain than the container.
+ @property secureAppPagePath
+ @type string
+ @for F2.ContainerConfig
+ */
+ secureAppPagePath: '',
+ /**
+ Specifies what views a container will provide buttons or links to.
+ Generally, the views will be switched via buttons or links in the app's
+ header.
+ @property supportedViews
+ @type Array
+ @required
+ */
+ supportedViews: [],
+ /**
+ An object containing configuration defaults for F2.UI.
+ @class F2.ContainerConfig.UI
+ */
+ UI: {
+ /**
+ An object containing configuration defaults for the F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}}
+ and F2.UI.{{#crossLink "F2.UI/hideMask"}}{{/crossLink}} methods.
+ @class F2.ContainerConfig.UI.Mask
+ */
+ Mask: {
+ /**
+ The backround color of the overlay.
+ @property backgroundColor
+ @type string
+ @default #FFF
+ */
+ backgroundColor: '#FFF',
+ /**
+ The path to the loading icon.
+ @property loadingIcon
+ @type string
+ */
+ loadingIcon: '',
+ /**
+ The opacity of the background overlay.
+ @property opacity
+ @type int
+ @default 0.6
+ */
+ opacity: 0.6,
+ /**
+ Do not use inline styles for mask functinality. Instead classes will
+ be applied to the elements and it is up to the container provider to
+ implement the class definitions.
+ @property useClasses
+ @type bool
+ @default false
+ */
+ useClasses: false,
+ /**
+ The z-index to use for the overlay
+ @property zIndex
+ @type int
+ @default 2
+ */
+ zIndex: 2
+ }
+ },
+ /**
+ Allows the container to override individual parts of the AppManifest
+ request. See properties and methods with the `xhr.` prefix.
+ @property xhr
+ @type Object
+ @example
+ F2.init({
+ xhr: {
+ url: function(url, appConfigs) {
+ return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url);
+ }
+ }
+ });
+ */
+ xhr: {
+ /**
+ Allows the container to override the request data type (JSON or JSONP)
+ that is used for the request.
+ @method xhr.dataType
+ @param {string} url The manifest url
+ @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
+ objects
+ @return {string} The request data type that should be used
+ @example
+ F2.init({
+ xhr: {
+ dataType: function(url) {
+ return F2.isLocalRequest(url) ? 'json' : 'jsonp';
+ },
+ type: function(url) {
+ return F2.isLocalRequest(url) ? 'POST' : 'GET';
+ }
+ }
+ });
+ */
+ dataType: function(url, appConfigs) {},
+ /**
+ Allows the container to override the request method that is used (just
+ like the `type` parameter to `jQuery.ajax()`.
+ @method xhr.type
+ @param {string} url The manifest url
+ @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
+ objects
+ @return {string} The request method that should be used
+ @example
+ F2.init({
+ xhr: {
+ dataType: function(url) {
+ return F2.isLocalRequest(url) ? 'json' : 'jsonp';
+ },
+ type: function(url) {
+ return F2.isLocalRequest(url) ? 'POST' : 'GET';
+ }
+ }
+ });
+ */
+ type: function(url, appConfigs) {},
+ /**
+ Allows the container to override the url that is used to request an
+ app's F2.{{#crossLink "F2.AppManifest"}}{{/crossLink}}.
+ @method xhr.url
+ @param {string} url The manifest url
+ @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
+ objects
+ @return {string} The url that should be used for the request
+ @example
+ F2.init({
+ xhr: {
+ url: function(url, appConfigs) {
+ return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url);
+ }
+ }
+ });
+ */
+ url: function(url, appConfigs) {}
+ },
+ /**
+ Allows the container to override the script loader which requests
+ dependencies defined in the {{#crossLink "F2.AppManifest"}}{{/crossLink}}.
+ @property loadScripts
+ @type function
+ @example
+ F2.init({
+ loadScripts: function(scripts, inlines, callback) {
+ // Load scripts using $.load() for each script or require(scripts)
+ callback();
+ }
+ });
+ */
+ loadScripts: function(scripts, inlines, callback) {},
+ /**
+ Allows the container to override the stylesheet loader which requests
+ dependencies defined in the {{#crossLink "F2.AppManifest"}}{{/crossLink}}.
+ @property loadStyles
+ @type function
+ @example
+ F2.init({
+ loadStyles: function(styles, callback) {
+ // Load styles using $.load() for each stylesheet or another method
+ callback();
+ }
+ });
+ */
+ loadStyles: function(styles, callback) {}
+ }
+});
From 13e6e0ff35f842b910876ede9b2090cf05c34c57 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Mon, 5 Jan 2015 09:41:44 -0700
Subject: [PATCH 08/61] Fixing 'constants' styling
---
src/lib/constants.js | 550 ++++++++++++++++++++-----------------------
1 file changed, 260 insertions(+), 290 deletions(-)
diff --git a/src/lib/constants.js b/src/lib/constants.js
index 62cf277c..cae522d6 100644
--- a/src/lib/constants.js
+++ b/src/lib/constants.js
@@ -1,292 +1,262 @@
/**
- * Constants used throughout the Open Financial Framework
- * @class F2.Constants
- * @static
- */
+ Constants used throughout the Open Financial Framework.
+ @class F2.Constants
+ @static
+*/
F2.extend('Constants', {
- /**
- * CSS class constants
- * @class F2.Constants.Css
- */
- Css: (function() {
-
- /** @private */
- var _PREFIX = 'f2-';
-
- return {
- /**
- * The APP class should be applied to the DOM Element that surrounds the
- * entire app, including any extra html that surrounds the APP\_CONTAINER
- * that is inserted by the container. See the
- * {{#crossLink "F2.ContainerConfig"}}{{/crossLink}} object.
- * @property APP
- * @type string
- * @static
- * @final
- */
- APP: _PREFIX + 'app',
- /**
- * The APP\_CONTAINER class should be applied to the outermost DOM Element
- * of the app.
- * @property APP_CONTAINER
- * @type string
- * @static
- * @final
- */
- APP_CONTAINER: _PREFIX + 'app-container',
- /**
- * The APP\_TITLE class should be applied to the DOM Element that contains
- * the title for an app. If this class is not present, then
- * F2.UI.{{#crossLink "F2.UI/setTitle"}}{{/crossLink}} will not function.
- * @property APP_TITLE
- * @type string
- * @static
- * @final
- */
- APP_TITLE: _PREFIX + 'app-title',
- /**
- * The APP\_VIEW class should be applied to the DOM Element that contains
- * a view for an app. The DOM Element should also have a
- * {{#crossLink "F2.Constants.Views"}}{{/crossLink}}.DATA_ATTRIBUTE
- * attribute that specifies which
- * {{#crossLink "F2.Constants.Views"}}{{/crossLink}} it is.
- * @property APP_VIEW
- * @type string
- * @static
- * @final
- */
- APP_VIEW: _PREFIX + 'app-view',
- /**
- * APP\_VIEW\_TRIGGER class should be applied to the DOM Elements that
- * trigger an
- * {{#crossLink "F2.Constants.Events"}}{{/crossLink}}.APP\_VIEW\_CHANGE
- * event. The DOM Element should also have a
- * {{#crossLink "F2.Constants.Views"}}{{/crossLink}}.DATA_ATTRIBUTE
- * attribute that specifies which
- * {{#crossLink "F2.Constants.Views"}}{{/crossLink}} it will trigger.
- * @property APP_VIEW_TRIGGER
- * @type string
- * @static
- * @final
- */
- APP_VIEW_TRIGGER: _PREFIX + 'app-view-trigger',
- /**
- * The MASK class is applied to the overlay element that is created
- * when the F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} method is
- * fired.
- * @property MASK
- * @type string
- * @static
- * @final
- */
- MASK: _PREFIX + 'mask',
- /**
- * The MASK_CONTAINER class is applied to the Element that is passed into
- * the F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} method.
- * @property MASK_CONTAINER
- * @type string
- * @static
- * @final
- */
- MASK_CONTAINER: _PREFIX + 'mask-container'
- };
- })(),
-
- /**
- * Events constants
- * @class F2.Constants.Events
- */
- Events: (function() {
- /** @private */
- var _APP_EVENT_PREFIX = 'App.';
- /** @private */
- var _CONTAINER_EVENT_PREFIX = 'Container.';
-
- return {
- /**
- * The APP\_SYMBOL\_CHANGE event is fired when the symbol is changed in an
- * app. It is up to the app developer to fire this event.
- * Returns an object with the symbol and company name:
- *
- * { symbol: 'MSFT', name: 'Microsoft Corp (NASDAQ)' }
- *
- * @property APP_SYMBOL_CHANGE
- * @type string
- * @static
- * @final
- */
- APP_SYMBOL_CHANGE: _APP_EVENT_PREFIX + 'symbolChange',
- /**
- * The APP\_WIDTH\_CHANGE event will be fired by the container when the
- * width of an app is changed. The app's instanceId should be concatenated
- * to this constant.
- * Returns an object with the gridSize and width in pixels:
- *
- * { gridSize:8, width:620 }
- *
- * @property APP_WIDTH_CHANGE
- * @type string
- * @static
- * @final
- */
- APP_WIDTH_CHANGE: _APP_EVENT_PREFIX + 'widthChange.',
- /**
- * The CONTAINER\_SYMBOL\_CHANGE event is fired when the symbol is changed
- * at the container level. This event should only be fired by the
- * container or container provider.
- * Returns an object with the symbol and company name:
- *
- * { symbol: 'MSFT', name: 'Microsoft Corp (NASDAQ)' }
- *
- * @property CONTAINER_SYMBOL_CHANGE
- * @type string
- * @static
- * @final
- */
- CONTAINER_SYMBOL_CHANGE: _CONTAINER_EVENT_PREFIX + 'symbolChange',
- /**
- * The CONTAINER\_WIDTH\_CHANGE event will be fired by the container when
- * the width of the container has changed.
- * @property CONTAINER_WIDTH_CHANGE
- * @type string
- * @static
- * @final
- */
- CONTAINER_WIDTH_CHANGE: _CONTAINER_EVENT_PREFIX + 'widthChange',
- /**
- * The CONTAINER\_LOCALE\_CHANGE event will be fired by the container when
- * the locale of the container has changed. This event should only be fired by the
- * container or container provider.
- * Returns an object with the updated locale (IETF-defined standard language tag):
- *
- * { locale: 'en-us' }
- *
- * @property CONTAINER_LOCALE_CHANGE
- * @type string
- * @static
- * @final
- */
- CONTAINER_LOCALE_CHANGE: _CONTAINER_EVENT_PREFIX + 'localeChange'
- };
- })(),
-
- JSONP_CALLBACK: 'F2_jsonpCallback_',
-
- /**
- * Constants for use with cross-domain sockets
- * @class F2.Constants.Sockets
- * @protected
- */
- Sockets: {
- /**
- * The EVENT message is sent whenever
- * F2.Events.{{#crossLink "F2.Events/emit"}}{{/crossLink}} is fired
- * @property EVENT
- * @type string
- * @static
- * @final
- */
- EVENT: '__event__',
- /**
- * The LOAD message is sent when an iframe socket initially loads.
- * Returns a JSON string that represents:
- *
- * [ App, AppManifest]
- *
- * @property LOAD
- * @type string
- * @static
- * @final
- */
- LOAD: '__socketLoad__',
- /**
- * The RPC message is sent when a method is passed up from within a secure
- * app page.
- * @property RPC
- * @type string
- * @static
- * @final
- */
- RPC: '__rpc__',
- /**
- * The RPC\_CALLBACK message is sent when a call back from an RPC method is
- * fired.
- * @property RPC_CALLBACK
- * @type string
- * @static
- * @final
- */
- RPC_CALLBACK: '__rpcCallback__',
- /**
- * The UI\_RPC message is sent when a UI method called.
- * @property UI_RPC
- * @type string
- * @static
- * @final
- */
- UI_RPC: '__uiRpc__'
- },
-
- /**
- * The available view types to apps. The view should be specified by applying
- * the {{#crossLink "F2.Constants.Css"}}{{/crossLink}}.APP\_VIEW class to the
- * containing DOM Element. A DATA\_ATTRIBUTE attribute should be added to the
- * Element as well which defines what view type is represented.
- * The `hide` class can be applied to views that should be hidden by default.
- * @class F2.Constants.Views
- */
- Views: {
- /**
- * The DATA_ATTRIBUTE should be placed on the DOM Element that contains the
- * view.
- * @property DATA_ATTRIBUTE
- * @type string
- * @static
- * @final
- */
- DATA_ATTRIBUTE: 'data-f2-view',
- /**
- * The ABOUT view gives details about the app.
- * @property ABOUT
- * @type string
- * @static
- * @final
- */
- ABOUT: 'about',
- /**
- * The HELP view provides users with help information for using an app.
- * @property HELP
- * @type string
- * @static
- * @final
- */
- HELP: 'help',
- /**
- * The HOME view is the main view for an app. This view should always
- * be provided by an app.
- * @property HOME
- * @type string
- * @static
- * @final
- */
- HOME: 'home',
- /**
- * The REMOVE view is a special view that handles the removal of an app
- * from the container.
- * @property REMOVE
- * @type string
- * @static
- * @final
- */
- REMOVE: 'remove',
- /**
- * The SETTINGS view provides users the ability to modify advanced settings
- * for an app.
- * @property SETTINGS
- * @type string
- * @static
- * @final
- */
- SETTINGS: 'settings'
- }
-});
\ No newline at end of file
+ /**
+ CSS class constants
+ @class F2.Constants.Css
+ */
+ Css: {
+ /**
+ The APP class should be applied to the DOM Element that surrounds the
+ entire app, including any extra html that surrounds the APP\_CONTAINER
+ that is inserted by the container. See the
+ {{#crossLink "F2.ContainerConfig"}}{{/crossLink}} object.
+ @property APP
+ @type string
+ @static
+ @final
+ */
+ APP: 'f2-app',
+ /**
+ The APP\_CONTAINER class should be applied to the outermost DOM Element
+ of the app.
+ @property APP_CONTAINER
+ @type string
+ @static
+ @final
+ */
+ APP_CONTAINER: 'f2-app-container',
+ /**
+ The APP\_TITLE class should be applied to the DOM Element that contains
+ the title for an app. If this class is not present, then
+ F2.UI.{{#crossLink "F2.UI/setTitle"}}{{/crossLink}} will not function.
+ @property APP_TITLE
+ @type string
+ @static
+ @final
+ */
+ APP_TITLE: 'f2-app-title',
+ /**
+ The APP\_VIEW class should be applied to the DOM Element that contains
+ a view for an app. The DOM Element should also have a
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}}.DATA_ATTRIBUTE
+ attribute that specifies which
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}} it is.
+ @property APP_VIEW
+ @type string
+ @static
+ @final
+ */
+ APP_VIEW: 'f2-app-view',
+ /**
+ APP\_VIEW\_TRIGGER class should be applied to the DOM Elements that
+ trigger an
+ {{#crossLink "F2.Constants.Events"}}{{/crossLink}}.APP\_VIEW\_CHANGE
+ event. The DOM Element should also have a
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}}.DATA_ATTRIBUTE
+ attribute that specifies which
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}} it will trigger.
+ @property APP_VIEW_TRIGGER
+ @type string
+ @static
+ @final
+ */
+ APP_VIEW_TRIGGER: 'f2-app-view-trigger',
+ /**
+ The MASK class is applied to the overlay element that is created
+ when the F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} method is
+ fired.
+ @property MASK
+ @type string
+ @static
+ @final
+ */
+ MASK: 'f2-mask',
+ /**
+ The MASK_CONTAINER class is applied to the Element that is passed into
+ the F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} method.
+ @property MASK_CONTAINER
+ @type string
+ @static
+ @final
+ */
+ MASK_CONTAINER: 'f2-mask-container'
+ },
+ /**
+ Events constants
+ @class F2.Constants.Events
+ */
+ Events: {
+ /**
+ The APP\_SYMBOL\_CHANGE event is fired when the symbol is changed in an
+ app. It is up to the app developer to fire this event. Returns an object
+ with the symbol and company name:
+ `{ symbol: 'MSFT', name: 'Microsoft Corp (NASDAQ)' }`
+ @property APP_SYMBOL_CHANGE
+ @type string
+ @static
+ @final
+ */
+ APP_SYMBOL_CHANGE: 'App.symbolChange',
+ /**
+ The APP\_WIDTH\_CHANGE event will be fired by the container when the
+ width of an app is changed. The app's instanceId should be concatenated
+ to this constant. Returns an object with the gridSize and width in pixels:
+ `{ gridSize: 8, width: 620 }`
+ @property APP_WIDTH_CHANGE
+ @type string
+ @static
+ @final
+ */
+ APP_WIDTH_CHANGE: 'App.widthChange.',
+ /**
+ The CONTAINER\_SYMBOL\_CHANGE event is fired when the symbol is changed
+ at the container level. This event should only be fired by the container
+ or container provider. Returns an object with the symbol and company name:
+ `{ symbol: 'MSFT', name: 'Microsoft Corp (NASDAQ)' }`
+ @property CONTAINER_SYMBOL_CHANGE
+ @type string
+ @static
+ @final
+ */
+ CONTAINER_SYMBOL_CHANGE: 'Container.symbolChange',
+ /**
+ The CONTAINER\_WIDTH\_CHANGE event will be fired by the container when
+ the width of the container has changed.
+ @property CONTAINER_WIDTH_CHANGE
+ @type string
+ @static
+ @final
+ */
+ CONTAINER_WIDTH_CHANGE: 'Container.widthChange',
+ /**
+ The CONTAINER\_LOCALE\_CHANGE event will be fired by the container when
+ the locale of the container has changed. This event should only be fired
+ by the container or container provider. Returns an object with the
+ updated locale (IETF-defined standard language tag):
+ `{ locale: 'en-us' }`
+ @property CONTAINER_LOCALE_CHANGE
+ @type string
+ @static
+ @final
+ */
+ CONTAINER_LOCALE_CHANGE: 'Container.localeChange'
+ },
+ JSONP_CALLBACK: 'F2_jsonpCallback_',
+ /**
+ Constants for use with cross-domain sockets.
+ @class F2.Constants.Sockets
+ @protected
+ */
+ Sockets: {
+ /**
+ The EVENT message is sent whenever
+ F2.Events.{{#crossLink "F2.Events/emit"}}{{/crossLink}} is fired.
+ @property EVENT
+ @type string
+ @static
+ @final
+ */
+ EVENT: '__event__',
+ /**
+ The LOAD message is sent when an iframe socket initially loads. Returns
+ a JSON string that represents: `[ App, AppManifest]`
+ @property LOAD
+ @type string
+ @static
+ @final
+ */
+ LOAD: '__socketLoad__',
+ /**
+ The RPC message is sent when a method is passed up from within a secure
+ app page.
+ @property RPC
+ @type string
+ @static
+ @final
+ */
+ RPC: '__rpc__',
+ /**
+ The RPC\_CALLBACK message is sent when a call back from an RPC method is
+ fired.
+ @property RPC_CALLBACK
+ @type string
+ @static
+ @final
+ */
+ RPC_CALLBACK: '__rpcCallback__',
+ /**
+ The UI\_RPC message is sent when a UI method called.
+ @property UI_RPC
+ @type string
+ @static
+ @final
+ */
+ UI_RPC: '__uiRpc__'
+ },
+ /**
+ The available view types to apps. The view should be specified by applying
+ the {{#crossLink "F2.Constants.Css"}}{{/crossLink}}.APP\_VIEW class to the
+ containing DOM Element. A DATA\_ATTRIBUTE attribute should be added to the
+ Element as well which defines what view type is represented. The `hide`
+ class can be applied to views that should be hidden by default.
+ @class F2.Constants.Views
+ */
+ Views: {
+ /**
+ The DATA_ATTRIBUTE should be placed on the DOM Element that contains the
+ view.
+ @property DATA_ATTRIBUTE
+ @type string
+ @static
+ @final
+ */
+ DATA_ATTRIBUTE: 'data-f2-view',
+ /**
+ The ABOUT view gives details about the app.
+ @property ABOUT
+ @type string
+ @static
+ @final
+ */
+ ABOUT: 'about',
+ /**
+ The HELP view provides users with help information for using an app.
+ @property HELP
+ @type string
+ @static
+ @final
+ */
+ HELP: 'help',
+ /**
+ The HOME view is the main view for an app. This view should always be
+ provided by an app.
+ @property HOME
+ @type string
+ @static
+ @final
+ */
+ HOME: 'home',
+ /**
+ The REMOVE view is a special view that handles the removal of an app from
+ the container.
+ @property REMOVE
+ @type string
+ @static
+ @final
+ */
+ REMOVE: 'remove',
+ /**
+ The SETTINGS view provides users the ability to modify advanced settings
+ for an app.
+ @property SETTINGS
+ @type string
+ @static
+ @final
+ */
+ SETTINGS: 'settings'
+ }
+});
From 511cede0ba8d830b0716647dfb58572ce9f82e71 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Mon, 5 Jan 2015 09:42:24 -0700
Subject: [PATCH 09/61] Fixing 'events' styling
---
src/lib/events.js | 158 +++++++++++++++++++++++-----------------------
1 file changed, 79 insertions(+), 79 deletions(-)
diff --git a/src/lib/events.js b/src/lib/events.js
index 6853e3a4..68ec5716 100644
--- a/src/lib/events.js
+++ b/src/lib/events.js
@@ -1,83 +1,83 @@
/**
- * Handles [Context](../../app-development.html#context) passing from
- * containers to apps and apps to apps.
- * @class F2.Events
- */
+ Handles [Context](../../app-development.html#context) passing from containers
+ to apps and apps to apps.
+ @class F2.Events
+*/
F2.extend('Events', (function() {
- // init EventEmitter
- var _events = new EventEmitter2({
- wildcard:true
- });
+ var _events = new EventEmitter2({
+ wildcard: true
+ });
- // unlimited listeners, set to > 0 for debugging
- _events.setMaxListeners(0);
+ // Unlimited listeners, set to > 0 for debugging
+ _events.setMaxListeners(0);
+
+ return {
+ /**
+ Same as F2.Events.emit except that it will not send the event to all
+ sockets.
+ @method _socketEmit
+ @private
+ @param {string} event The event name
+ @param {object} [arg]* The arguments to be passed
+ */
+ _socketEmit: function() {
+ return EventEmitter2.prototype.emit.apply(_events, [].slice.call(arguments));
+ },
+ /**
+ Execute each of the listeners that may be listening for the specified
+ event name in order with the list of arguments.
+ @method emit
+ @param {string} event The event name
+ @param {object} [arg]* The arguments to be passed
+ */
+ emit: function() {
+ F2.Rpc.broadcast(F2.Constants.Sockets.EVENT, [].slice.call(arguments));
+ return EventEmitter2.prototype.emit.apply(_events, [].slice.call(arguments));
+ },
+ /**
+ Adds a listener that will execute n times for the event before being
+ removed. The listener is invoked only the first time the event is
+ fired, after which it is removed.
+ @method many
+ @param {string} event The event name
+ @param {int} timesToListen The number of times to execute the event
+ before being removed
+ @param {function} listener The function to be fired when the event is
+ emitted
+ */
+ many: function(event, timesToListen, listener) {
+ return _events.many(event, timesToListen, listener);
+ },
+ /**
+ * Remove a listener for the specified event.
+ * @method off
+ * @param {string} event The event name
+ * @param {function} listener The function that will be removed
+ */
+ off: function(event, listener) {
+ return _events.off(event, listener);
+ },
+ /**
+ * Adds a listener for the specified event
+ * @method on
+ * @param {string} event The event name
+ * @param {function} listener The function to be fired when the event is
+ * emitted
+ */
+ on: function(event, listener) {
+ return _events.on(event, listener);
+ },
+ /**
+ * Adds a one time listener for the event. The listener is invoked only
+ * the first time the event is fired, after which it is removed.
+ * @method once
+ * @param {string} event The event name
+ * @param {function} listener The function to be fired when the event is
+ * emitted
+ */
+ once: function(event, listener) {
+ return _events.once(event, listener);
+ }
+ };
+})());
- return {
- /**
- * Same as F2.Events.emit except that it will not send the event
- * to all sockets.
- * @method _socketEmit
- * @private
- * @param {string} event The event name
- * @param {object} [arg]* The arguments to be passed
- */
- _socketEmit: function() {
- return EventEmitter2.prototype.emit.apply(_events, [].slice.call(arguments));
- },
- /**
- * Execute each of the listeners that may be listening for the specified
- * event name in order with the list of arguments.
- * @method emit
- * @param {string} event The event name
- * @param {object} [arg]* The arguments to be passed
- */
- emit: function() {
- F2.Rpc.broadcast(F2.Constants.Sockets.EVENT, [].slice.call(arguments));
- return EventEmitter2.prototype.emit.apply(_events, [].slice.call(arguments));
- },
- /**
- * Adds a listener that will execute n times for the event before being
- * removed. The listener is invoked only the first time the event is
- * fired, after which it is removed.
- * @method many
- * @param {string} event The event name
- * @param {int} timesToListen The number of times to execute the event
- * before being removed
- * @param {function} listener The function to be fired when the event is
- * emitted
- */
- many: function(event, timesToListen, listener) {
- return _events.many(event, timesToListen, listener);
- },
- /**
- * Remove a listener for the specified event.
- * @method off
- * @param {string} event The event name
- * @param {function} listener The function that will be removed
- */
- off: function(event, listener) {
- return _events.off(event, listener);
- },
- /**
- * Adds a listener for the specified event
- * @method on
- * @param {string} event The event name
- * @param {function} listener The function to be fired when the event is
- * emitted
- */
- on: function(event, listener){
- return _events.on(event, listener);
- },
- /**
- * Adds a one time listener for the event. The listener is invoked only
- * the first time the event is fired, after which it is removed.
- * @method once
- * @param {string} event The event name
- * @param {function} listener The function to be fired when the event is
- * emitted
- */
- once: function(event, listener) {
- return _events.once(event, listener);
- }
- };
-})());
\ No newline at end of file
From acd042821f04802e9a4dbe0e9a87e7efc84f93b3 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Mon, 5 Jan 2015 09:42:40 -0700
Subject: [PATCH 10/61] Fixing 'ui' styling
---
src/lib/ui.js | 846 +++++++++++++++++++++++++-------------------------
1 file changed, 426 insertions(+), 420 deletions(-)
diff --git a/src/lib/ui.js b/src/lib/ui.js
index d4f7ddbc..ba5b3072 100644
--- a/src/lib/ui.js
+++ b/src/lib/ui.js
@@ -1,420 +1,426 @@
-F2.extend('UI', (function(){
-
- var _containerConfig;
-
- /**
- * UI helper methods
- * @class F2.UI
- * @constructor
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- */
- var UI_Class = function(appConfig) {
-
- var _appConfig = appConfig;
- var $root = jQuery(appConfig.root);
-
- var _updateHeight = function(height) {
- height = height || jQuery(_appConfig.root).outerHeight();
-
- if (F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'updateHeight',
- [
- height
- ]
- );
- } else {
- _appConfig.height = height;
- $root.find('iframe').height(_appConfig.height);
- }
- };
-
- //http://getbootstrap.com/javascript/#modals
- var _modalHtml = function(type,message,showCancel){
- return [
- '
',
- '
',
- '
',
- '
',
- '',
- '
',type,'
',
- '
',
- '
',
- message,
- '
',
- '',
- '
',
- '
',
- '
'
- ].join('');
- };
-
- return {
- /**
- * Removes a overlay from an Element on the page
- * @method hideMask
- * @param {string|Element} selector The Element or selector to an Element
- * that currently contains the loader
- */
- hideMask: function(selector) {
- F2.UI.hideMask(_appConfig.instanceId, selector);
- },
- /**
- * Helper methods for creating and using Modals
- * @class F2.UI.Modals
- * @for F2.UI
- */
- Modals: (function(){
-
- var _renderAlert = function(message) {
- return _modalHtml('Alert',message);
- };
-
- var _renderConfirm = function(message) {
- return _modalHtml('Confirm',message,true);
- };
-
- return {
- /**
- * Display an alert message on the page
- * @method alert
- * @param {string} message The message to be displayed
- * @param {function} [callback] The callback to be fired when the user
- * closes the dialog
- * @for F2.UI.Modals
- */
- alert: function(message, callback) {
-
- if (!F2.isInit()) {
- F2.log('F2.init() must be called before F2.UI.Modals.alert()');
- return;
- }
-
- if (F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'Modals.alert',
- [].slice.call(arguments)
- );
- } else {
- // display the alert
- jQuery(_renderAlert(message))
- .on('show.bs.modal', function() {
- var modal = this;
- jQuery(modal).find('.btn-primary').on('click', function() {
- jQuery(modal).modal('hide').remove();
- (callback || jQuery.noop)();
- });
- })
- .modal({backdrop:true});
- }
- },
- /**
- * Display a confirm message on the page
- * @method confirm
- * @param {string} message The message to be displayed
- * @param {function} okCallback The function that will be called when the OK
- * button is pressed
- * @param {function} cancelCallback The function that will be called when
- * the Cancel button is pressed
- * @for F2.UI.Modals
- */
- confirm: function(message, okCallback, cancelCallback) {
-
- if (!F2.isInit()) {
- F2.log('F2.init() must be called before F2.UI.Modals.confirm()');
- return;
- }
-
- if (F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'Modals.confirm',
- [].slice.call(arguments)
- );
- } else {
- // display the alert
- jQuery(_renderConfirm(message))
- .on('show.bs.modal', function() {
- var modal = this;
-
- jQuery(modal).find('.btn-ok').on('click', function() {
- jQuery(modal).modal('hide').remove();
- (okCallback || jQuery.noop)();
- });
-
- jQuery(modal).find('.btn-cancel').on('click', function() {
- jQuery(modal).modal('hide').remove();
- (cancelCallback || jQuery.noop)();
- });
- })
- .modal({backdrop:true});
- }
- }
- };
- })(),
- /**
- * Sets the title of the app as shown in the browser. Depending on the
- * container HTML, this method may do nothing if the container has not been
- * configured properly or else the container provider does not allow Title's
- * to be set.
- * @method setTitle
- * @params {string} title The title of the app
- * @for F2.UI
- */
- setTitle: function(title) {
-
- if (F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'setTitle',
- [
- title
- ]
- );
- } else {
- jQuery(_appConfig.root).find('.' + F2.Constants.Css.APP_TITLE).text(title);
- }
- },
- /**
- * Display an ovarlay over an Element on the page
- * @method showMask
- * @param {string|Element} selector The Element or selector to an Element
- * over which to display the loader
- * @param {bool} showLoading Display a loading icon
- */
- showMask: function(selector, showLoader) {
- F2.UI.showMask(_appConfig.instanceId, selector, showLoader);
- },
- /**
- * For secure apps, this method updates the size of the iframe that
- * contains the app. **Note: It is recommended that app developers call
- * this method anytime Elements are added or removed from the DOM**
- * @method updateHeight
- * @params {int} height The height of the app
- */
- updateHeight: _updateHeight,
- /**
- * Helper methods for creating and using Views
- * @class F2.UI.Views
- * @for F2.UI
- */
- Views: (function(){
-
- var _events = new EventEmitter2();
- var _rValidEvents = /change/i;
-
- // unlimited listeners, set to > 0 for debugging
- _events.setMaxListeners(0);
-
- var _isValid = function(eventName) {
- if (_rValidEvents.test(eventName)) {
- return true;
- } else {
- F2.log('"' + eventName + '" is not a valid F2.UI.Views event name');
- return false;
- }
- };
-
- return {
- /**
- * Change the current view for the app or add an event listener
- * @method change
- * @param {string|function} [input] If a string is passed in, the view
- * will be changed for the app. If a function is passed in, a change
- * event listener will be added.
- * @for F2.UI.Views
- */
- change: function(input) {
-
- if (typeof input === 'function') {
- this.on('change', input);
- } else if (typeof input === 'string') {
-
- if (_appConfig.isSecure && !F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'Views.change',
- [].slice.call(arguments)
- );
- } else if (F2.inArray(input, _appConfig.views)) {
- jQuery('.' + F2.Constants.Css.APP_VIEW, $root)
- .addClass('hide')
- .filter('[data-f2-view="' + input + '"]', $root)
- .removeClass('hide');
-
- _updateHeight();
- _events.emit('change', input);
- }
- }
- },
- /**
- * Removes a view event listener
- * @method off
- * @param {string} event The event name
- * @param {function} listener The function that will be removed
- * @for F2.UI.Views
- */
- off: function(event, listener) {
- if (_isValid(event)) {
- _events.off(event, listener);
- }
- },
- /**
- * Adds a view event listener
- * @method on
- * @param {string} event The event name
- * @param {function} listener The function to be fired when the event is
- * emitted
- * @for F2.UI.Views
- */
- on: function(event, listener) {
- if (_isValid(event)) {
- _events.on(event, listener);
- }
- }
- };
- })()
- };
- };
-
- /**
- * Removes a overlay from an Element on the page
- * @method hideMask
- * @static
- * @param {string} instanceId The Instance ID of the app
- * @param {string|Element} selector The Element or selector to an Element
- * that currently contains the loader
- * @for F2.UI
- */
- UI_Class.hideMask = function(instanceId, selector) {
-
- if (!F2.isInit()) {
- F2.log('F2.init() must be called before F2.UI.hideMask()');
- return;
- }
-
- if (F2.Rpc.isRemote(instanceId) && !jQuery(selector).is('.' + F2.Constants.Css.APP)) {
- F2.Rpc.call(
- instanceId,
- F2.Constants.Sockets.RPC,
- 'F2.UI.hideMask',
- [
- instanceId,
- // must only pass the selector argument. if we pass an Element there
- // will be F2.stringify() errors
- jQuery(selector).selector
- ]
- );
- } else {
-
- var container = jQuery(selector);
- container.find('> .' + F2.Constants.Css.MASK).remove();
- container.removeClass(F2.Constants.Css.MASK_CONTAINER);
-
- // if the element contains this data property, we need to reset static
- // position
- if (container.data(F2.Constants.Css.MASK_CONTAINER)) {
- container.css({'position':'static'});
- }
- }
- };
-
- /**
- *
- * @method init
- * @static
- * @param {F2.ContainerConfig} containerConfig The F2.ContainerConfig object
- */
- UI_Class.init = function(containerConfig) {
- _containerConfig = containerConfig;
-
- // set defaults
- _containerConfig.UI = jQuery.extend(true, {}, F2.ContainerConfig.UI, _containerConfig.UI || {});
- };
-
- /**
- * Display an ovarlay over an Element on the page
- * @method showMask
- * @static
- * @param {string} instanceId The Instance ID of the app
- * @param {string|Element} selector The Element or selector to an Element
- * over which to display the loader
- * @param {bool} showLoading Display a loading icon
- */
- UI_Class.showMask = function(instanceId, selector, showLoading) {
-
- if (!F2.isInit()) {
- F2.log('F2.init() must be called before F2.UI.showMask()');
- return;
- }
-
- if (F2.Rpc.isRemote(instanceId) && jQuery(selector).is('.' + F2.Constants.Css.APP)) {
- F2.Rpc.call(
- instanceId,
- F2.Constants.Sockets.RPC,
- 'F2.UI.showMask',
- [
- instanceId,
- // must only pass the selector argument. if we pass an Element there
- // will be F2.stringify() errors
- jQuery(selector).selector,
- showLoading
- ]
- );
- } else {
-
- if (showLoading && !_containerConfig.UI.Mask.loadingIcon) {
- F2.log('Unable to display loading icon. Please set F2.ContainerConfig.UI.Mask.loadingIcon when calling F2.init();');
- }
-
- var container = jQuery(selector).addClass(F2.Constants.Css.MASK_CONTAINER);
- var mask = jQuery('
')
- .height('100%' /*container.outerHeight()*/)
- .width('100%' /*container.outerWidth()*/)
- .addClass(F2.Constants.Css.MASK);
-
- // set inline styles if useClasses is false
- if (!_containerConfig.UI.Mask.useClasses) {
- mask.css({
- 'background-color':_containerConfig.UI.Mask.backgroundColor,
- 'background-image': !!_containerConfig.UI.Mask.loadingIcon ? ('url(' + _containerConfig.UI.Mask.loadingIcon + ')') : '',
- 'background-position':'50% 50%',
- 'background-repeat':'no-repeat',
- 'display':'block',
- 'left':0,
- 'min-height':30,
- 'padding':0,
- 'position':'absolute',
- 'top':0,
- 'z-index':_containerConfig.UI.Mask.zIndex,
-
- 'filter':'alpha(opacity=' + (_containerConfig.UI.Mask.opacity * 100) + ')',
- 'opacity':_containerConfig.UI.Mask.opacity
- });
- }
-
- // only set the position if the container is currently static
- if (container.css('position') === 'static') {
- container.css({'position':'relative'});
- // setting this data property tells hideMask to set the position
- // back to static
- container.data(F2.Constants.Css.MASK_CONTAINER, true);
- }
-
- // add the mask to the container
- container.append(mask);
- }
- };
-
- return UI_Class;
-})());
\ No newline at end of file
+F2.extend('UI', (function() {
+
+ var _containerConfig;
+
+ /**
+ UI helper methods
+ @class F2.UI
+ @constructor
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ */
+ var UIClass = function(appConfig) {
+
+ var _appConfig = appConfig;
+ var $root = jQuery(appConfig.root);
+
+ function _updateHeight(height) {
+ height = height || jQuery(_appConfig.root).outerHeight();
+
+ if (F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'updateHeight',
+ [
+ height
+ ]
+ );
+ } else {
+ _appConfig.height = height;
+ $root.find('iframe').height(_appConfig.height);
+ }
+ }
+
+ // http://getbootstrap.com/javascript/#modals
+ function _modalHtml(type, message, showCancel) {
+ return [
+ '
',
+ '
',
+ '
',
+ '
',
+ '',
+ '
', type, '
',
+ '
',
+ '
', message, '
',
+ '',
+ '
',
+ '
',
+ '
'
+ ].join('');
+ }
+
+ return {
+ /**
+ Removes a overlay from an Element on the page
+ @method hideMask
+ @param {string|Element} selector The Element or selector to an Element
+ that currently contains the loader
+ */
+ hideMask: function(selector) {
+ F2.UI.hideMask(_appConfig.instanceId, selector);
+ },
+ /**
+ * Helper methods for creating and using Modals
+ * @class F2.UI.Modals
+ * @for F2.UI
+ */
+ Modals: (function() {
+
+ var _renderAlert = function(message) {
+ return _modalHtml('Alert', message);
+ };
+
+ var _renderConfirm = function(message) {
+ return _modalHtml('Confirm', message, true);
+ };
+
+ return {
+ /**
+ * Display an alert message on the page
+ * @method alert
+ * @param {string} message The message to be displayed
+ * @param {function} [callback] The callback to be fired when the user
+ * closes the dialog
+ * @for F2.UI.Modals
+ */
+ alert: function(message, callback) {
+
+ if (!F2.isInit()) {
+ F2.log('F2.init() must be called before F2.UI.Modals.alert()');
+ return;
+ }
+
+ if (F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'Modals.alert',
+ [].slice.call(arguments)
+ );
+ } else {
+ // display the alert
+ jQuery(_renderAlert(message))
+ .on('show.bs.modal', function() {
+ var modal = this;
+ jQuery(modal).find('.btn-primary').on('click', function() {
+ jQuery(modal).modal('hide').remove();
+ (callback || jQuery.noop)();
+ });
+ })
+ .modal({
+ backdrop: true
+ });
+ }
+ },
+ /**
+ * Display a confirm message on the page
+ * @method confirm
+ * @param {string} message The message to be displayed
+ * @param {function} okCallback The function that will be called when the OK
+ * button is pressed
+ * @param {function} cancelCallback The function that will be called when
+ * the Cancel button is pressed
+ * @for F2.UI.Modals
+ */
+ confirm: function(message, okCallback, cancelCallback) {
+
+ if (!F2.isInit()) {
+ F2.log('F2.init() must be called before F2.UI.Modals.confirm()');
+ return;
+ }
+
+ if (F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'Modals.confirm',
+ [].slice.call(arguments)
+ );
+ } else {
+ // display the alert
+ jQuery(_renderConfirm(message))
+ .on('show.bs.modal', function() {
+ var modal = this;
+
+ jQuery(modal).find('.btn-ok').on('click', function() {
+ jQuery(modal).modal('hide').remove();
+ (okCallback || jQuery.noop)();
+ });
+
+ jQuery(modal).find('.btn-cancel').on('click', function() {
+ jQuery(modal).modal('hide').remove();
+ (cancelCallback || jQuery.noop)();
+ });
+ })
+ .modal({
+ backdrop: true
+ });
+ }
+ }
+ };
+ })(),
+ /**
+ * Sets the title of the app as shown in the browser. Depending on the
+ * container HTML, this method may do nothing if the container has not been
+ * configured properly or else the container provider does not allow Title's
+ * to be set.
+ * @method setTitle
+ * @params {string} title The title of the app
+ * @for F2.UI
+ */
+ setTitle: function(title) {
+
+ if (F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'setTitle',
+ [
+ title
+ ]
+ );
+ } else {
+ jQuery(_appConfig.root).find('.' + F2.Constants.Css.APP_TITLE).text(title);
+ }
+ },
+ /**
+ * Display an ovarlay over an Element on the page
+ * @method showMask
+ * @param {string|Element} selector The Element or selector to an Element
+ * over which to display the loader
+ * @param {bool} showLoading Display a loading icon
+ */
+ showMask: function(selector, showLoader) {
+ F2.UI.showMask(_appConfig.instanceId, selector, showLoader);
+ },
+ /**
+ * For secure apps, this method updates the size of the iframe that
+ * contains the app. **Note: It is recommended that app developers call
+ * this method anytime Elements are added or removed from the DOM**
+ * @method updateHeight
+ * @params {int} height The height of the app
+ */
+ updateHeight: _updateHeight,
+ /**
+ * Helper methods for creating and using Views
+ * @class F2.UI.Views
+ * @for F2.UI
+ */
+ Views: (function() {
+
+ var _events = new EventEmitter2();
+ var _rValidEvents = /change/i;
+
+ // unlimited listeners, set to > 0 for debugging
+ _events.setMaxListeners(0);
+
+ var _isValid = function(eventName) {
+ if (_rValidEvents.test(eventName)) {
+ return true;
+ } else {
+ F2.log('"' + eventName + '" is not a valid F2.UI.Views event name');
+ return false;
+ }
+ };
+
+ return {
+ /**
+ * Change the current view for the app or add an event listener
+ * @method change
+ * @param {string|function} [input] If a string is passed in, the view
+ * will be changed for the app. If a function is passed in, a change
+ * event listener will be added.
+ * @for F2.UI.Views
+ */
+ change: function(input) {
+
+ if (typeof input === 'function') {
+ this.on('change', input);
+ } else if (typeof input === 'string') {
+
+ if (_appConfig.isSecure && !F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'Views.change',
+ [].slice.call(arguments)
+ );
+ } else if (F2.inArray(input, _appConfig.views)) {
+ jQuery('.' + F2.Constants.Css.APP_VIEW, $root)
+ .addClass('hide')
+ .filter('[data-f2-view="' + input + '"]', $root)
+ .removeClass('hide');
+
+ _updateHeight();
+ _events.emit('change', input);
+ }
+ }
+ },
+ /**
+ * Removes a view event listener
+ * @method off
+ * @param {string} event The event name
+ * @param {function} listener The function that will be removed
+ * @for F2.UI.Views
+ */
+ off: function(event, listener) {
+ if (_isValid(event)) {
+ _events.off(event, listener);
+ }
+ },
+ /**
+ * Adds a view event listener
+ * @method on
+ * @param {string} event The event name
+ * @param {function} listener The function to be fired when the event is
+ * emitted
+ * @for F2.UI.Views
+ */
+ on: function(event, listener) {
+ if (_isValid(event)) {
+ _events.on(event, listener);
+ }
+ }
+ };
+ })()
+ };
+ };
+
+ /**
+ * Removes a overlay from an Element on the page
+ * @method hideMask
+ * @static
+ * @param {string} instanceId The Instance ID of the app
+ * @param {string|Element} selector The Element or selector to an Element
+ * that currently contains the loader
+ * @for F2.UI
+ */
+ UIClass.hideMask = function(instanceId, selector) {
+
+ if (!F2.isInit()) {
+ F2.log('F2.init() must be called before F2.UI.hideMask()');
+ return;
+ }
+
+ if (F2.Rpc.isRemote(instanceId) && !jQuery(selector).is('.' + F2.Constants.Css.APP)) {
+ F2.Rpc.call(
+ instanceId,
+ F2.Constants.Sockets.RPC,
+ 'F2.UI.hideMask',
+ [
+ instanceId,
+ // must only pass the selector argument. if we pass an Element there
+ // will be F2.stringify() errors
+ jQuery(selector).selector
+ ]
+ );
+ } else {
+
+ var container = jQuery(selector);
+ container.find('> .' + F2.Constants.Css.MASK).remove();
+ container.removeClass(F2.Constants.Css.MASK_CONTAINER);
+
+ // if the element contains this data property, we need to reset static
+ // position
+ if (container.data(F2.Constants.Css.MASK_CONTAINER)) {
+ container.css({
+ 'position': 'static'
+ });
+ }
+ }
+ };
+
+ /**
+ *
+ * @method init
+ * @static
+ * @param {F2.ContainerConfig} containerConfig The F2.ContainerConfig object
+ */
+ UIClass.init = function(containerConfig) {
+ _containerConfig = containerConfig;
+
+ // set defaults
+ _containerConfig.UI = jQuery.extend(true, {}, F2.ContainerConfig.UI, _containerConfig.UI || {});
+ };
+
+ /**
+ * Display an ovarlay over an Element on the page
+ * @method showMask
+ * @static
+ * @param {string} instanceId The Instance ID of the app
+ * @param {string|Element} selector The Element or selector to an Element
+ * over which to display the loader
+ * @param {bool} showLoading Display a loading icon
+ */
+ UIClass.showMask = function(instanceId, selector, showLoading) {
+
+ if (!F2.isInit()) {
+ F2.log('F2.init() must be called before F2.UI.showMask()');
+ return;
+ }
+
+ if (F2.Rpc.isRemote(instanceId) && jQuery(selector).is('.' + F2.Constants.Css.APP)) {
+ F2.Rpc.call(
+ instanceId,
+ F2.Constants.Sockets.RPC,
+ 'F2.UI.showMask',
+ [
+ instanceId,
+ // must only pass the selector argument. if we pass an Element there
+ // will be F2.stringify() errors
+ jQuery(selector).selector,
+ showLoading
+ ]
+ );
+ } else {
+
+ if (showLoading && !_containerConfig.UI.Mask.loadingIcon) {
+ F2.log('Unable to display loading icon. Please set F2.ContainerConfig.UI.Mask.loadingIcon when calling F2.init();');
+ }
+
+ var container = jQuery(selector).addClass(F2.Constants.Css.MASK_CONTAINER);
+ var mask = jQuery('
')
+ .height('100%' /*container.outerHeight()*/ )
+ .width('100%' /*container.outerWidth()*/ )
+ .addClass(F2.Constants.Css.MASK);
+
+ // set inline styles if useClasses is false
+ if (!_containerConfig.UI.Mask.useClasses) {
+ mask.css({
+ 'background-color': _containerConfig.UI.Mask.backgroundColor,
+ 'background-image': !!_containerConfig.UI.Mask.loadingIcon ? ('url(' + _containerConfig.UI.Mask.loadingIcon + ')') : '',
+ 'background-position': '50% 50%',
+ 'background-repeat': 'no-repeat',
+ 'display': 'block',
+ 'left': 0,
+ 'min-height': 30,
+ 'padding': 0,
+ 'position': 'absolute',
+ 'top': 0,
+ 'z-index': _containerConfig.UI.Mask.zIndex,
+
+ 'filter': 'alpha(opacity=' + (_containerConfig.UI.Mask.opacity * 100) + ')',
+ 'opacity': _containerConfig.UI.Mask.opacity
+ });
+ }
+
+ // only set the position if the container is currently static
+ if (container.css('position') === 'static') {
+ container.css({
+ 'position': 'relative'
+ });
+ // setting this data property tells hideMask to set the position
+ // back to static
+ container.data(F2.Constants.Css.MASK_CONTAINER, true);
+ }
+
+ // add the mask to the container
+ container.append(mask);
+ }
+ };
+
+ return UIClass;
+})());
From 659a54636dd5cece0ce6957a50f186308672184a Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Mon, 5 Jan 2015 11:20:58 -0700
Subject: [PATCH 11/61] Switching to eslint for additional rules
---
.eslintrc | 45 +++
Gruntfile.js | 841 ++++++++++++++++++++++++++-------------------------
package.json | 102 ++++---
3 files changed, 520 insertions(+), 468 deletions(-)
create mode 100644 .eslintrc
diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 00000000..7d4a1838
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,45 @@
+{
+ "env": {
+ "browser": true,
+ "amd": true,
+ "jasmine": true
+ },
+ "globals": {
+ "console": true,
+ "F2": true,
+ // Vendor
+ "$": true,
+ "jQuery": true,
+ "EventEmitter2": true,
+ "easyXDM": true,
+ // Testing
+ "runs": true,
+ "itConditionally": true
+ },
+ "rules": {
+ "no-comma-dangle": true,
+ "no-cond-assign": true,
+ "no-console": false,
+ "quotes": [1, "single"],
+ "strict": false,
+ "no-underscore-dangle": false,
+ "valid-jsdoc": [2, {
+ "requireReturn": false
+ }],
+ // Stylistic
+ "block-scoped-var": true,
+ "no-else-return": true,
+ "no-eq-null": true,
+ "func-style": [2, "declaration"],
+ "spaced-line-comment": ["always"],
+ "space-in-parens": ["never"],
+ "space-in-brackets": ["never"],
+ "space-before-blocks": "always",
+ "space-after-keywords": "always",
+ "space-after-function-name": "never",
+ "operator-assignment": [2, "always"],
+ // TODO: reverse when issues are fixed
+ "no-use-before-define": false,
+ "no-unused-vars": false
+ }
+}
diff --git a/Gruntfile.js b/Gruntfile.js
index f5667641..1d04f923 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -1,441 +1,446 @@
module.exports = function(grunt) {
+ var exec = require('child_process').exec;
+ var handlebars = require('handlebars');
+ var moment = require('moment');
+ var pkg = grunt.file.readJSON('package.json');
+ var semver = require('semver');
+ var path = require('path');
- var exec = require('child_process').exec,
- handlebars = require('handlebars'),
- moment = require('moment'),
- pkg = grunt.file.readJSON('package.json'),
- semver = require('semver'),
- path = require('path');
+ // TODO: Remove Handlebars dependency and use the built-in grunt templating
+ handlebars.registerHelper('if', function(conditional, options) {
+ if (options.hash.desired === options.hash.test) {
+ return options.fn(this);
+ }
+ });
- // TODO: Remove Handlebars dependency and use the built-in grunt templating
- // Handlebars helpers
- handlebars.registerHelper('if', function(conditional, options) {
- if (options.hash.desired === options.hash.test) {
- return options.fn(this);
- }
- });
+ grunt.initConfig({
+ pkg: pkg,
+ clean: {
+ 'github-pages': {
+ options: {
+ force: true
+ },
+ src: ['../gh-pages/src']
+ },
+ 'F2-examples': {
+ options: {
+ force: true
+ },
+ src: ['./F2-examples.zip']
+ }
+ },
+ copy: {
+ 'github-pages': {
+ files: [{
+ expand: true,
+ cwd: 'docs/',
+ src: ['**'],
+ dest: '../gh-pages'
+ }, {
+ expand: true,
+ cwd: 'dist/',
+ src: ['f2.latest.js'],
+ rename: function(dest, src) {
+ return '../gh-pages/js/f2.min.js'; //See #35
+ }
+ }]
+ },
+ 'F2-examples': {
+ files: [{
+ expand: true,
+ cwd: './',
+ src: ['F2-examples.zip'],
+ dest: '../gh-pages'
+ }]
+ }
+ },
+ compress: {
+ main: {
+ options: {
+ archive: 'F2-examples.zip',
+ pretty: true
+ },
+ files: [{
+ expand: true,
+ cwd: 'examples/',
+ src: ['**'],
+ dest: 'examples/'
+ }, {
+ expand: true,
+ cwd: 'dist/',
+ src: ['f2.debug.js'],
+ dest: 'dist/'
+ }, {
+ expand: true,
+ src: ['tests/require.min.js'],
+ dest: 'dist/'
+ }]
+ }
+ },
+ concat: {
+ options: {
+ process: {
+ data: pkg
+ },
+ separator: '\n',
+ stripBanners: false
+ },
+ dist: {
+ src: [
+ 'src/lib/template/header.js.tmpl',
+ 'src/vendor/jquery.js',
+ 'src/vendor/jquery.noconflict.js',
+ 'src/vendor/bootstrap-modal.js',
+ 'src/vendor/eventemitter2.js',
+ 'src/vendor/easyXDM/easyXDM.js',
+ '<%= eslint.files %>',
+ 'src/lib/template/footer.js.tmpl'
+ ],
+ dest: 'dist/f2.debug.js'
+ },
+ 'no-third-party': {
+ src: [
+ 'src/lib/template/header.js.tmpl',
+ '<%= eslint.files %>',
+ 'src/lib/template/footer.js.tmpl'
+ ],
+ dest: 'dist/f2.no-third-party.js'
+ },
+ 'no-jquery-or-bootstrap': {
+ src: [
+ 'src/lib/template/header.js.tmpl',
+ 'src/vendor/eventemitter2.js',
+ 'src/vendor/easyXDM/easyXDM.js',
+ '<%= eslint.files %>',
+ 'src/lib/template/footer.js.tmpl'
+ ],
+ dest: 'dist/packages/f2.no-jquery-or-bootstrap.js'
+ },
+ 'no-bootstrap': {
+ src: [
+ 'src/lib/template/header.js.tmpl',
+ 'src/vendor/jquery.js',
+ 'src/vendor/jquery.noconflict.js',
+ 'src/vendor/eventemitter2.js',
+ 'src/vendor/easyXDM/easyXDM.js',
+ '<%= eslint.files %>',
+ 'src/lib/template/footer.js.tmpl'
+ ],
+ dest: 'dist/packages/f2.no-bootstrap.js'
+ },
+ 'no-easyXDM': {
+ src: [
+ 'src/lib/template/header.js.tmpl',
+ 'src/vendor/jquery.js',
+ 'src/vendor/bootstrap-modal.js',
+ 'src/vendor/jquery.noconflict.js',
+ 'src/vendor/eventemitter2.js',
+ '<%= eslint.files %>',
+ 'src/lib/template/footer.js.tmpl'
+ ],
+ dest: 'dist/packages/f2.no-easyXDM.js'
+ },
+ // Reminiscent of F2 1.0, no secure apps and Container Provide must have jQuery & Bootstrap on page before F2.
+ 'basic': {
+ src: [
+ 'src/lib/template/header.js.tmpl',
+ 'src/vendor/eventemitter2.js',
+ '<%= eslint.files %>',
+ 'src/lib/template/footer.js.tmpl'
+ ],
+ dest: 'dist/packages/f2.basic.js'
+ }
+ },
+ /**
+ * Need to downgrade forever-monitor to v1.1 because of:
+ * https://github.com/blai/grunt-express/issues/12
+ * cd node_modules/grunt-express; npm uninstall forever-monitor; npm install forever-monitor@1.1;
+ */
+ express: {
+ server: {
+ options: {
+ bases: './',
+ port: 8080,
+ server: (require('path')).resolve('./tests/server')
+ }
+ }
+ },
+ jasmine: {
+ 'non-amd': {
+ options: {
+ host: 'http://localhost:8080/tests/',
+ outfile: 'index.html'
+ }
+ },
+ 'amd': {
+ options: {
+ host: 'http://localhost:8080/tests/',
+ outfile: 'index-amd.html'
+ }
+ }
+ },
+ eslint: {
+ options: {
+ config: '.eslintrc'
+ },
+ target: [
+ './src/lib/*.js',
+ './tests/spec/*.js'
+ ]
+ },
+ uglify: {
+ options: {
+ preserveComments: 'some',
+ banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("mm-dd-yyyy") %> - See below for copyright and license */\n'
+ },
+ dist: {
+ files: {
+ 'dist/f2.min.js': ['dist/f2.debug.js']
+ },
+ options: {
+ report: 'gzip'
+ }
+ },
+ sourcemap: {
+ files: '<%= uglify.dist.files %>',
+ options: {
+ sourceMap: function(fileName) {
+ return fileName.replace(/\.js$/, '.js.map');
+ },
+ sourceMapPrefix: 1,
+ sourceMappingURL: function(path) {
+ return path.replace(grunt.config('sourcemap.options.prefix'), '').replace(/\.js$/, '.js.map');
+ }
+ }
+ },
+ 'package-no-jquery-or-bootstrap': {
+ files: {
+ 'dist/packages/f2.no-jquery-or-bootstrap.min.js': ['dist/packages/f2.no-jquery-or-bootstrap.js']
+ },
+ options: {
+ report: 'gzip'
+ }
+ },
+ 'package-no-bootstrap': {
+ files: {
+ 'dist/packages/f2.no-bootstrap.min.js': ['dist/packages/f2.no-bootstrap.js']
+ },
+ options: {
+ report: 'gzip'
+ }
+ },
+ 'package-no-easyXDM': {
+ files: {
+ 'dist/packages/f2.no-easyXDM.min.js': ['dist/packages/f2.no-easyXDM.js']
+ },
+ options: {
+ report: 'gzip'
+ }
+ },
+ 'package-basic': {
+ files: {
+ 'dist/packages/f2.basic.min.js': ['dist/packages/f2.basic.js']
+ },
+ options: {
+ report: 'gzip'
+ }
+ }
+ },
+ sourcemap: {
+ options: {
+ src: 'dist/f2.min.js',
+ prefix: './dist/'
+ }
+ },
+ watch: {
+ docs: {
+ files: ['docs/src/**/*.*', 'package.json', 'docs/bin/gen-docs.js'],
+ tasks: ['docs'],
+ options: {
+ spawn: false
+ }
+ },
+ scripts: {
+ files: ['./src/lib/**/*.js'],
+ tasks: ['js'],
+ options: {
+ spawn: false
+ }
+ }
+ },
+ http: {
+ getDocsLayout: {
+ options: {
+ url: 'http://www.openf2.org/api/layout/docs',
+ json: true,
+ strictSSL: false,
+ callback: function(err, res, response) {
+ var log = grunt.log.write('Retrieved doc layout...')
+ grunt.config.set('docs-layout', response);
+ log.ok();
+ log = grunt.log.write('Saving templates as HTML...');
+ // Save as HTML for gen-docs step
+ grunt.file.write('./docs/src/template/head.html', response.head);
+ grunt.file.write('./docs/src/template/nav.html', response.nav);
+ grunt.file.write('./docs/src/template/footer.html', response.footer);
+ log.ok();
+ }
+ }
+ }
+ }
+ });
- // Project config
- grunt.initConfig({
- pkg: pkg,
- clean: {
- 'github-pages': {
- options: { force: true },
- src: ['../gh-pages/src']
- },
- 'F2-examples': {
- options: { force: true },
- src: ['./F2-examples.zip']
- }
- },
- copy: {
- 'github-pages': {
- files: [
- {
- expand: true,
- cwd: 'docs/',
- src: ['**'],
- dest: '../gh-pages'
- },
- {
- expand: true,
- cwd: 'dist/',
- src: ['f2.latest.js'],
- rename: function(dest, src){
- return '../gh-pages/js/f2.min.js';//See #35
- }
- }
- ]
- },
- 'F2-examples': {
- files: [
- {
- expand: true,
- cwd: './',
- src: ['F2-examples.zip'],
- dest: '../gh-pages'
- }
- ]
- }
- },
- compress: {
- main: {
- options: {
- archive: 'F2-examples.zip',
- pretty: true
- },
- files: [
- {
- expand: true,
- cwd: 'examples/',
- src: ['**'],
- dest: 'examples/'
- },
- {
- expand: true,
- cwd: 'dist/',
- src: ['f2.debug.js'],
- dest: 'dist/'
- },
- {
- expand: true,
- src: ['tests/require.min.js'],
- dest: 'dist/'
- }
- ]
- }
- },
- concat: {
- options: {
- process: { data: pkg },
- separator: '\n',
- stripBanners: false
- },
- dist: {
- src: [
- 'src/lib/template/header.js.tmpl',
- 'src/vendor/jquery.js',
- 'src/vendor/jquery.noconflict.js',
- 'src/vendor/bootstrap-modal.js',
- 'src/vendor/eventemitter2.js',
- 'src/vendor/easyXDM/easyXDM.js',
- '<%= jshint.files %>',
- 'src/lib/template/footer.js.tmpl'
- ],
- dest: 'dist/f2.debug.js'
- },
- 'no-third-party': {
- src: [
- 'src/lib/template/header.js.tmpl',
- '<%= jshint.files %>',
- 'src/lib/template/footer.js.tmpl'
- ],
- dest: 'dist/f2.no-third-party.js'
- },
- 'no-jquery-or-bootstrap': {
- src: [
- 'src/lib/template/header.js.tmpl',
- 'src/vendor/eventemitter2.js',
- 'src/vendor/easyXDM/easyXDM.js',
- '<%= jshint.files %>',
- 'src/lib/template/footer.js.tmpl'
- ],
- dest: 'dist/packages/f2.no-jquery-or-bootstrap.js'
- },
- 'no-bootstrap': {
- src: [
- 'src/lib/template/header.js.tmpl',
- 'src/vendor/jquery.js',
- 'src/vendor/jquery.noconflict.js',
- 'src/vendor/eventemitter2.js',
- 'src/vendor/easyXDM/easyXDM.js',
- '<%= jshint.files %>',
- 'src/lib/template/footer.js.tmpl'
- ],
- dest: 'dist/packages/f2.no-bootstrap.js'
- },
- 'no-easyXDM': {
- src: [
- 'src/lib/template/header.js.tmpl',
- 'src/vendor/jquery.js',
- 'src/vendor/bootstrap-modal.js',
- 'src/vendor/jquery.noconflict.js',
- 'src/vendor/eventemitter2.js',
- '<%= jshint.files %>',
- 'src/lib/template/footer.js.tmpl'
- ],
- dest: 'dist/packages/f2.no-easyXDM.js'
- },
- 'basic': { //reminiscent of F2 1.0, no secure apps and Container Provide must have jQuery & Bootstrap on page before F2.
- src: [
- 'src/lib/template/header.js.tmpl',
- 'src/vendor/eventemitter2.js',
- '<%= jshint.files %>',
- 'src/lib/template/footer.js.tmpl'
- ],
- dest: 'dist/packages/f2.basic.js'
- },
- },
- /**
- * Need to downgrade forever-monitor to v1.1 because of:
- * https://github.com/blai/grunt-express/issues/12
- * cd node_modules/grunt-express; npm uninstall forever-monitor; npm install forever-monitor@1.1;
- */
- express: {
- server: {
- options: {
- bases: './',
- port: 8080,
- server: (require('path')).resolve('./tests/server')
- }
- }
- },
- jasmine: {
- 'non-amd': {
- options: {
- host: 'http://localhost:8080/tests/',
- outfile: 'index.html'
- }
- },
- 'amd': {
- options: {
- host: 'http://localhost:8080/tests/',
- outfile: 'index-amd.html'
- }
- }
- },
- jshint: {
- options: {
- jshintrc: '.jshintrc'
- },
- files: [
- 'src/lib/F2.js',
- 'src/lib/app_handlers.js',
- 'src/lib/classes.js',
- 'src/lib/constants.js',
- 'src/lib/events.js',
- 'src/lib/rpc.js',
- 'src/lib/ui.js',
- 'src/lib/container.js'
- ]
- },
- uglify: {
- options: {
- preserveComments: 'some',
- banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("mm-dd-yyyy") %> - See below for copyright and license */\n'
- },
- dist: {
- files: {'dist/f2.min.js': ['dist/f2.debug.js']},
- options: {
- report: 'gzip'
- }
- },
- sourcemap: {
- files: '<%= uglify.dist.files %>',
- options: {
- sourceMap: function(fileName) {
- return fileName.replace(/\.js$/, '.js.map');
- },
- sourceMapPrefix: 1,
- sourceMappingURL: function(path) {
- return path.replace(grunt.config('sourcemap.options.prefix'), '').replace(/\.js$/, '.js.map');
- }
- }
- },
- 'package-no-jquery-or-bootstrap': {
- files: { 'dist/packages/f2.no-jquery-or-bootstrap.min.js' : ['dist/packages/f2.no-jquery-or-bootstrap.js'] },
- options: { report: 'gzip' }
- },
- 'package-no-bootstrap': {
- files: { 'dist/packages/f2.no-bootstrap.min.js' : ['dist/packages/f2.no-bootstrap.js'] },
- options: { report: 'gzip' }
- },
- 'package-no-easyXDM': {
- files: { 'dist/packages/f2.no-easyXDM.min.js' : ['dist/packages/f2.no-easyXDM.js'] },
- options: { report: 'gzip' }
- },
- 'package-basic': {
- files: { 'dist/packages/f2.basic.min.js' : ['dist/packages/f2.basic.js'] },
- options: { report: 'gzip' }
- }
- },
- sourcemap: {
- options: {
- src: 'dist/f2.min.js',
- prefix: './dist/'
- }
- },
- watch: {
- docs: {
- files: ['docs/src/**/*.*', 'package.json', 'docs/bin/gen-docs.js'],
- tasks: ['docs'],
- options: {
- spawn: false,
- }
- },
- scripts: {
- files: ['./src/lib/**/*.js'],
- tasks: ['js'],
- options: {
- spawn: false,
- }
- }
- },
- http: {
- getDocsLayout: {
- options: {
- url: 'http://www.openf2.org/api/layout/docs',
- json: true,
- strictSSL: false,
- callback: function(err, res, response){
- var log = grunt.log.write('Retrieved doc layout...')
- grunt.config.set('docs-layout',response);
- log.ok();
- log = grunt.log.write('Saving templates as HTML...');
- //save as HTML for gen-docs step
- grunt.file.write('./docs/src/template/head.html', response.head);
- grunt.file.write('./docs/src/template/nav.html', response.nav);
- grunt.file.write('./docs/src/template/footer.html', response.footer);
- log.ok();
- }
- }
- }
- }
- });
+ // Register tasks
+ grunt.registerTask('fix-sourcemap', 'Fixes the source map file', function() {
+ var uglifyOptions = grunt.config('uglify.sourcemap.options');
+ var options = grunt.config('sourcemap.options');
+ var dest = uglifyOptions.sourceMap(options.src);
+ var rawMap = grunt.file.read(dest);
- // Register tasks
- grunt.registerTask('fix-sourcemap', 'Fixes the source map file', function() {
- var uglifyOptions = grunt.config('uglify.sourcemap.options');
- var options = grunt.config('sourcemap.options');
- var dest = uglifyOptions.sourceMap(options.src);
- var rawMap = grunt.file.read(dest);
+ rawMap = rawMap.replace(options.prefix, '');
+ grunt.file.write(dest, rawMap);
+ });
- rawMap = rawMap.replace(options.prefix, '');
- grunt.file.write(dest, rawMap);
- });
+ grunt.registerTask('generate-docs', 'Generate docs', function() {
+ var done = this.async();
+ var log = grunt.log.write('Generating docs...');
- grunt.registerTask('generate-docs', 'Generate docs', function() {
- var done = this.async(),
- log = grunt.log.write('Generating docs...');
+ exec('node ' + path.join(__dirname, 'docs/bin/gen-docs'), function(err, stdout, stderr) {
+ if (err) {
+ grunt.log.error(err.message);
+ grunt.fail.fatal('Docs generation aborted.');
+ return;
+ }
+ grunt.log.write(stdout);
+ log.ok();
+ done();
+ });
+ });
- exec('node ' + path.join(__dirname, 'docs/bin/gen-docs'), function(err, stdout, stderr) {
- if (err) {
- grunt.log.error(err.message);
- grunt.fail.fatal('Docs generation aborted.');
- return;
- }
- grunt.log.write(stdout);
- log.ok();
- done();
- });
- });
+ grunt.registerTask('yuidoc', 'Builds the reference docs with YUIDocJS', function() {
+ var builder;
+ var docOptions = {
+ quiet: true,
+ norecurse: true,
+ paths: ['./src/lib'],
+ outdir: './docs/dist/sdk/',
+ themedir: './docs/src/sdk-template',
+ helpers: ['./docs/src/sdk-template/helpers/helpers.js']
+ };
+ var done = this.async();
+ var json;
+ var log = grunt.log.write('Generating reference docs...');
+ var Y = require('yuidocjs');
- grunt.registerTask('yuidoc', 'Builds the reference docs with YUIDocJS', function() {
+ json = (new Y.YUIDoc(docOptions)).run();
+ // Massage in some meta information from F2.json
+ json.project = {
+ docsAssets: '../',
+ version: pkg.version,
+ releaseDateFormatted: pkg._releaseDateFormatted
+ };
+ docOptions = Y.Project.mix(json, docOptions);
- var builder,
- docOptions = {
- quiet: true,
- norecurse: true,
- paths: ['./src/lib'],
- outdir: './docs/dist/sdk/',
- themedir: './docs/src/sdk-template',
- helpers: ['./docs/src/sdk-template/helpers/helpers.js']
- },
- done = this.async(),
- json,
- log = grunt.log.write('Generating reference docs...'),
- Y = require('yuidocjs');
+ // Ensures that the class has members and isn't just an empty namespace
+ // Used in sidebar.handlebars
+ Y.Handlebars.registerHelper('hasClassMembers', function() {
+ for (var i = 0, len = json.classitems.length; i < len; i++) {
+ if (json.classitems[i].class === this.name) {
+ return '';
+ }
+ }
- json = (new Y.YUIDoc(docOptions)).run();
- // massage in some meta information from F2.json
- json.project = {
- docsAssets: '../',
- version: pkg.version,
- releaseDateFormatted: pkg._releaseDateFormatted
- };
- docOptions = Y.Project.mix(json, docOptions);
+ return 'hidden';
+ });
- // ensures that the class has members and isn't just an empty namespace
- // used in sidebar.handlebars
- Y.Handlebars.registerHelper('hasClassMembers', function() {
- for (var i = 0, len = json.classitems.length; i < len; i++) {
- //console.log(json.classitems[i].class, this.name);
- if (json.classitems[i].class === this.name) {
- return '';
- }
- }
- return 'hidden';
- });
+ builder = new Y.DocBuilder(docOptions, json);
+ builder.compile(function() {
+ log.ok();
+ done();
+ });
+ });
- builder = new Y.DocBuilder(docOptions, json);
- builder.compile(function() {
- log.ok();
- done();
- });
- });
+ grunt.registerTask('nuget', 'Builds the NuGet package for distribution on NuGet.org', function() {
+ var done = this.async();
+ var log = grunt.log.write('Creating NuSpec file...');
+ var nuspec = grunt.file.read('./dist/f2.nuspec.tmpl');
- grunt.registerTask('nuget', 'Builds the NuGet package for distribution on NuGet.org', function() {
- var done = this.async(),
- log = grunt.log.write('Creating NuSpec file...'),
- nuspec = grunt.file.read('./dist/f2.nuspec.tmpl');
+ nuspec = grunt.template.process(nuspec, { data: pkg });
+ grunt.file.write('./dist/f2.nuspec', nuspec);
+ log.ok();
- nuspec = grunt.template.process(nuspec, { data: pkg });
- grunt.file.write('./dist/f2.nuspec', nuspec);
- log.ok();
+ log = grunt.log.write('Creating NuGet package...');
+ grunt.util.spawn({
+ cmd: 'nuget',
+ args: ['pack', 'f2.nuspec'],
+ opts: {
+ cwd: './dist'
+ }
+ }, function(error, result, code) {
+ if (error) {
+ grunt.fail.fatal(error);
+ } else {
+ grunt.file.delete('./dist/f2.nuspec');
+ log.ok();
+ done();
+ }
+ });
+ });
- log = grunt.log.write('Creating NuGet package...');
- grunt.util.spawn(
- {
- cmd: 'nuget',
- args: ['pack', 'f2.nuspec'],
- opts: {
- cwd: './dist'
- }
- },
- function(error, result, code){
- if (error){
- grunt.fail.fatal(error);
- } else {
- grunt.file.delete('./dist/f2.nuspec');
- log.ok();
- done();
- }
- }
- );
- });
+ grunt.registerTask('release', 'Prepares the code for release (merge into master)', function(releaseType) {
+ if (!/^major|minor|patch$/i.test(releaseType) && !semver.valid(releaseType)) {
+ grunt.log.error('"' + releaseType + '" is not a valid release type (major, minor, or patch) or SemVer version');
+ return;
+ }
- grunt.registerTask('release', 'Prepares the code for release (merge into master)', function(releaseType) {
- if (!/^major|minor|patch$/i.test(releaseType) && !semver.valid(releaseType)) {
- grunt.log.error('"' + releaseType + '" is not a valid release type (major, minor, or patch) or SemVer version');
- return;
- }
+ pkg.version = semver.valid(releaseType) ? releaseType : String(semver.inc(pkg.version, releaseType)).replace(/\-\w+$/, '');
+ pkg._releaseDate = new Date().toJSON();
+ pkg._releaseDateFormatted = moment(pkg._releaseDate).format('D MMMM YYYY');
- pkg.version = semver.valid(releaseType) ? releaseType : String(semver.inc(pkg.version, releaseType)).replace(/\-\w+$/, '');
- pkg._releaseDate = new Date().toJSON();
- pkg._releaseDateFormatted = moment(pkg._releaseDate).format('D MMMM YYYY');
+ grunt.file.write('./package.json', JSON.stringify(pkg, null, '\t'));
+ grunt.config.set('pkg', pkg);
- grunt.file.write('./package.json', JSON.stringify(pkg, null, '\t'));
- grunt.config.set('pkg', pkg);
+ grunt.task.run('version');
+ });
- grunt.task.run('version');
- });
+ grunt.registerTask('version', 'Displays version information for F2', function() {
+ grunt.log.writeln(grunt.template.process(
+ 'This copy of F2 is at version <%= version %> with a release date of <%= _releaseDateFormatted %>',
+ { data: pkg }
+ ));
+ });
- grunt.registerTask('version', 'Displays version information for F2', function() {
- grunt.log.writeln(grunt.template.process(
- 'This copy of F2 is at version <%= version %> with a release date of <%= _releaseDateFormatted %>',
- { data: pkg }
- ));
- });
+ // Load plugins
+ grunt.loadNpmTasks('grunt-contrib-clean');
+ grunt.loadNpmTasks('grunt-contrib-copy');
+ grunt.loadNpmTasks('grunt-contrib-concat');
+ grunt.loadNpmTasks('grunt-contrib-compress');
+ grunt.loadNpmTasks('grunt-contrib-jasmine');
+ grunt.loadNpmTasks('grunt-contrib-jshint');
+ grunt.loadNpmTasks('grunt-contrib-uglify');
+ grunt.loadNpmTasks('grunt-contrib-watch');
+ grunt.loadNpmTasks('grunt-express');
+ grunt.loadNpmTasks('grunt-http');
+ grunt.loadNpmTasks('grunt-eslint');
- // Load plugins
- grunt.loadNpmTasks('grunt-contrib-clean');
- grunt.loadNpmTasks('grunt-contrib-copy');
- grunt.loadNpmTasks('grunt-contrib-concat');
- grunt.loadNpmTasks('grunt-contrib-compress');
- grunt.loadNpmTasks('grunt-contrib-jasmine');
- grunt.loadNpmTasks('grunt-contrib-jshint');
- grunt.loadNpmTasks('grunt-contrib-uglify');
- grunt.loadNpmTasks('grunt-contrib-watch');
- grunt.loadNpmTasks('grunt-express');
- grunt.loadNpmTasks('grunt-http');
-
- grunt.registerTask('docs', ['http','generate-docs', 'yuidoc']);
- grunt.registerTask('github-pages', ['copy:github-pages', 'clean:github-pages']);
- grunt.registerTask('zip', ['compress', 'copy:F2-examples', 'clean:F2-examples']);
- grunt.registerTask('js', ['concat:dist', 'concat:no-third-party', 'uglify:dist', 'sourcemap']);
- grunt.registerTask('sourcemap', ['uglify:sourcemap', 'fix-sourcemap']);
- grunt.registerTask('packages', [
- 'concat:no-jquery-or-bootstrap',
- 'concat:no-bootstrap',
- 'concat:no-easyXDM',
- 'concat:basic',
- 'uglify:package-no-jquery-or-bootstrap',
- 'uglify:package-no-bootstrap',
- 'uglify:package-no-easyXDM',
- 'uglify:package-basic'
- ]);
- grunt.registerTask('test', ['jshint', 'express', 'jasmine']);
- grunt.registerTask('test-live', ['jshint', 'express', 'express-keepalive']);
- grunt.registerTask('travis', ['test']);
- grunt.registerTask('default', ['test', 'js', 'docs', 'zip']);
+ grunt.registerTask('docs', ['http', 'generate-docs', 'yuidoc']);
+ grunt.registerTask('github-pages', ['copy:github-pages', 'clean:github-pages']);
+ grunt.registerTask('zip', ['compress', 'copy:F2-examples', 'clean:F2-examples']);
+ grunt.registerTask('lint', ['eslint']);
+ grunt.registerTask('js', ['lint', 'concat:dist', 'concat:no-third-party', 'uglify:dist', 'sourcemap']);
+ grunt.registerTask('sourcemap', ['uglify:sourcemap', 'fix-sourcemap']);
+ grunt.registerTask('packages', [
+ 'concat:no-jquery-or-bootstrap',
+ 'concat:no-bootstrap',
+ 'concat:no-easyXDM',
+ 'concat:basic',
+ 'uglify:package-no-jquery-or-bootstrap',
+ 'uglify:package-no-bootstrap',
+ 'uglify:package-no-easyXDM',
+ 'uglify:package-basic'
+ ]);
+ grunt.registerTask('test', ['express', 'jasmine']);
+ grunt.registerTask('test-live', ['express', 'express-keepalive']);
+ grunt.registerTask('travis', ['test']);
+ grunt.registerTask('default', ['test', 'js', 'docs', 'zip']);
};
diff --git a/package.json b/package.json
index 36ef55cd..c40c4850 100644
--- a/package.json
+++ b/package.json
@@ -1,51 +1,53 @@
{
- "name": "F2",
- "description": "An open framework for the financial services industry.",
- "version": "1.4.0",
- "keywords": [
- "openf2"
- ],
- "homepage": "https://github.com/OpenF2/F2",
- "author": "Markit On Demand, Inc",
- "repository": {
- "type": "git",
- "url": "https://github.com/OpenF2/F2.git"
- },
- "bugs": {
- "url": "https://github.com/OpenF2/F2/issues",
- "email": "OpenF2@googlegroups.com"
- },
- "licenses": [
- {
- "type": "Apache-2.0",
- "url": "http://www.apache.org/licenses/LICENSE-2.0"
- }
- ],
- "devDependencies": {
- "express": "^4.10.4",
- "grunt": "^0.4.5",
- "grunt-cli": "^0.1.13",
- "grunt-contrib-clean": "^0.6.0",
- "grunt-contrib-concat": "^0.5.0",
- "grunt-contrib-compress": "^0.12.0",
- "grunt-contrib-copy": "^0.7.0",
- "grunt-contrib-jasmine": "~0.4.2",
- "grunt-contrib-jshint": "^0.10.0",
- "grunt-contrib-uglify": "^0.6.0",
- "grunt-contrib-watch": "^0.6.1",
- "grunt-express": "~0.3.3",
- "grunt-http": "^1.5.0",
- "handlebars": "^2.0.0",
- "moment": "^2.8.4",
- "semver": "^4.1.0",
- "yuidocjs": "~0.3.44",
- "highlight.js": "^8.4.0",
- "marked": "^0.3.2",
- "underscore": "^1.7.0"
- },
- "engines": {
- "node": ">=0.10"
- },
- "_releaseDate": "2014-12-17T17:59:22.636Z",
- "_releaseDateFormatted": "17 December 2014"
-}
\ No newline at end of file
+ "name": "F2",
+ "description": "An open framework for the financial services industry.",
+ "version": "1.4.0",
+ "keywords": [
+ "openf2"
+ ],
+ "homepage": "https://github.com/OpenF2/F2",
+ "author": "Markit On Demand, Inc",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/OpenF2/F2.git"
+ },
+ "bugs": {
+ "url": "https://github.com/OpenF2/F2/issues",
+ "email": "OpenF2@googlegroups.com"
+ },
+ "licenses": [
+ {
+ "type": "Apache-2.0",
+ "url": "http://www.apache.org/licenses/LICENSE-2.0"
+ }
+ ],
+ "devDependencies": {
+ "express": "^4.10.4",
+ "grunt": "^0.4.5",
+ "grunt-cli": "^0.1.13",
+ "grunt-contrib-clean": "^0.6.0",
+ "grunt-contrib-compress": "^0.12.0",
+ "grunt-contrib-concat": "^0.5.0",
+ "grunt-contrib-copy": "^0.7.0",
+ "grunt-contrib-jasmine": "~0.4.2",
+ "grunt-contrib-jshint": "^0.10.0",
+ "grunt-contrib-uglify": "^0.6.0",
+ "grunt-contrib-watch": "^0.6.1",
+ "grunt-eslint": "^3.0.0",
+ "grunt-express": "~0.3.3",
+ "grunt-http": "^1.5.0",
+ "grunt-jscs": "^1.1.0",
+ "handlebars": "^2.0.0",
+ "highlight.js": "^8.4.0",
+ "marked": "^0.3.2",
+ "moment": "^2.8.4",
+ "semver": "^4.1.0",
+ "underscore": "^1.7.0",
+ "yuidocjs": "~0.3.44"
+ },
+ "engines": {
+ "node": ">=0.10"
+ },
+ "_releaseDate": "2014-12-17T17:59:22.636Z",
+ "_releaseDateFormatted": "17 December 2014"
+}
From 0726efd337f482bd0fa70a7b7da1f626d7f9ed03 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Mon, 5 Jan 2015 11:37:22 -0700
Subject: [PATCH 12/61] Fixing styling and lint errors in 'ui.js'
---
src/lib/ui.js | 250 ++++++++++++++++++++++----------------------------
1 file changed, 112 insertions(+), 138 deletions(-)
diff --git a/src/lib/ui.js b/src/lib/ui.js
index ba5b3072..05c90dad 100644
--- a/src/lib/ui.js
+++ b/src/lib/ui.js
@@ -8,8 +8,7 @@ F2.extend('UI', (function() {
@constructor
@param {F2.AppConfig} appConfig The F2.AppConfig object
*/
- var UIClass = function(appConfig) {
-
+ function UIClass(appConfig) {
var _appConfig = appConfig;
var $root = jQuery(appConfig.root);
@@ -63,31 +62,29 @@ F2.extend('UI', (function() {
F2.UI.hideMask(_appConfig.instanceId, selector);
},
/**
- * Helper methods for creating and using Modals
- * @class F2.UI.Modals
- * @for F2.UI
- */
+ Helper methods for creating and using Modals
+ @class F2.UI.Modals
+ @for F2.UI
+ */
Modals: (function() {
-
- var _renderAlert = function(message) {
+ function _renderAlert(message) {
return _modalHtml('Alert', message);
- };
+ }
- var _renderConfirm = function(message) {
+ function _renderConfirm(message) {
return _modalHtml('Confirm', message, true);
- };
+ }
return {
/**
- * Display an alert message on the page
- * @method alert
- * @param {string} message The message to be displayed
- * @param {function} [callback] The callback to be fired when the user
- * closes the dialog
- * @for F2.UI.Modals
- */
+ Display an alert message on the page
+ @method alert
+ @param {string} message The message to be displayed
+ @param {function} [callback] The callback to be fired when the user
+ closes the dialog
+ @for F2.UI.Modals
+ */
alert: function(message, callback) {
-
if (!F2.isInit()) {
F2.log('F2.init() must be called before F2.UI.Modals.alert()');
return;
@@ -101,7 +98,7 @@ F2.extend('UI', (function() {
[].slice.call(arguments)
);
} else {
- // display the alert
+ // Display the alert
jQuery(_renderAlert(message))
.on('show.bs.modal', function() {
var modal = this;
@@ -116,17 +113,16 @@ F2.extend('UI', (function() {
}
},
/**
- * Display a confirm message on the page
- * @method confirm
- * @param {string} message The message to be displayed
- * @param {function} okCallback The function that will be called when the OK
- * button is pressed
- * @param {function} cancelCallback The function that will be called when
- * the Cancel button is pressed
- * @for F2.UI.Modals
- */
+ Display a confirm message on the page
+ @method confirm
+ @param {string} message The message to be displayed
+ @param {function} okCallback The function that will be called when
+ the OK button is pressed
+ @param {function} cancelCallback The function that will be called
+ when the Cancel button is pressed
+ @for F2.UI.Modals
+ */
confirm: function(message, okCallback, cancelCallback) {
-
if (!F2.isInit()) {
F2.log('F2.init() must be called before F2.UI.Modals.confirm()');
return;
@@ -140,7 +136,7 @@ F2.extend('UI', (function() {
[].slice.call(arguments)
);
} else {
- // display the alert
+ // Display the alert
jQuery(_renderConfirm(message))
.on('show.bs.modal', function() {
var modal = this;
@@ -163,84 +159,78 @@ F2.extend('UI', (function() {
};
})(),
/**
- * Sets the title of the app as shown in the browser. Depending on the
- * container HTML, this method may do nothing if the container has not been
- * configured properly or else the container provider does not allow Title's
- * to be set.
- * @method setTitle
- * @params {string} title The title of the app
- * @for F2.UI
- */
+ Sets the title of the app as shown in the browser. Depending on the
+ container HTML, this method may do nothing if the container has not been
+ configured properly or else the container provider does not allow Title's
+ to be set.
+ @method setTitle
+ @param {string} title The title of the app
+ @for F2.UI
+ */
setTitle: function(title) {
-
if (F2.Rpc.isRemote(_appConfig.instanceId)) {
F2.Rpc.call(
_appConfig.instanceId,
F2.Constants.Sockets.UI_RPC,
'setTitle',
- [
- title
- ]
+ [title]
);
} else {
jQuery(_appConfig.root).find('.' + F2.Constants.Css.APP_TITLE).text(title);
}
},
/**
- * Display an ovarlay over an Element on the page
- * @method showMask
- * @param {string|Element} selector The Element or selector to an Element
- * over which to display the loader
- * @param {bool} showLoading Display a loading icon
- */
+ Display an ovarlay over an Element on the page
+ @method showMask
+ @param {string|Element} selector The Element or selector to an Element
+ over which to display the loader
+ @param {bool} showLoader Display a loading icon
+ */
showMask: function(selector, showLoader) {
F2.UI.showMask(_appConfig.instanceId, selector, showLoader);
},
/**
- * For secure apps, this method updates the size of the iframe that
- * contains the app. **Note: It is recommended that app developers call
- * this method anytime Elements are added or removed from the DOM**
- * @method updateHeight
- * @params {int} height The height of the app
- */
+ For secure apps, this method updates the size of the iframe that
+ contains the app. **Note: It is recommended that app developers call
+ this method anytime Elements are added or removed from the DOM**
+ @method updateHeight
+ @param {int} height The height of the app
+ */
updateHeight: _updateHeight,
/**
- * Helper methods for creating and using Views
- * @class F2.UI.Views
- * @for F2.UI
- */
+ Helper methods for creating and using Views
+ @class F2.UI.Views
+ @for F2.UI
+ */
Views: (function() {
-
var _events = new EventEmitter2();
- var _rValidEvents = /change/i;
+ var eventsPattern = /change/i;
- // unlimited listeners, set to > 0 for debugging
+ // Unlimited listeners, set to > 0 for debugging
_events.setMaxListeners(0);
- var _isValid = function(eventName) {
- if (_rValidEvents.test(eventName)) {
- return true;
- } else {
+ function _isValid(eventName) {
+ if (!eventsPattern.test(eventName)) {
F2.log('"' + eventName + '" is not a valid F2.UI.Views event name');
return false;
}
- };
+
+ return true;
+ }
return {
/**
- * Change the current view for the app or add an event listener
- * @method change
- * @param {string|function} [input] If a string is passed in, the view
- * will be changed for the app. If a function is passed in, a change
- * event listener will be added.
- * @for F2.UI.Views
- */
+ Change the current view for the app or add an event listener
+ @method change
+ @param {string|function} [input] If a string is passed in, the view
+ will be changed for the app. If a function is passed in, a change
+ event listener will be added.
+ @for F2.UI.Views
+ */
change: function(input) {
-
if (typeof input === 'function') {
this.on('change', input);
} else if (typeof input === 'string') {
-
if (_appConfig.isSecure && !F2.Rpc.isRemote(_appConfig.instanceId)) {
F2.Rpc.call(
_appConfig.instanceId,
@@ -260,25 +250,25 @@ F2.extend('UI', (function() {
}
},
/**
- * Removes a view event listener
- * @method off
- * @param {string} event The event name
- * @param {function} listener The function that will be removed
- * @for F2.UI.Views
- */
+ Removes a view event listener
+ @method off
+ @param {string} event The event name
+ @param {function} listener The function that will be removed
+ @for F2.UI.Views
+ */
off: function(event, listener) {
if (_isValid(event)) {
_events.off(event, listener);
}
},
/**
- * Adds a view event listener
- * @method on
- * @param {string} event The event name
- * @param {function} listener The function to be fired when the event is
- * emitted
- * @for F2.UI.Views
- */
+ Adds a view event listener
+ @method on
+ @param {string} event The event name
+ @param {function} listener The function to be fired when the event is
+ emitted
+ @for F2.UI.Views
+ */
on: function(event, listener) {
if (_isValid(event)) {
_events.on(event, listener);
@@ -287,19 +277,18 @@ F2.extend('UI', (function() {
};
})()
};
- };
+ }
/**
- * Removes a overlay from an Element on the page
- * @method hideMask
- * @static
- * @param {string} instanceId The Instance ID of the app
- * @param {string|Element} selector The Element or selector to an Element
- * that currently contains the loader
- * @for F2.UI
- */
+ Removes a overlay from an Element on the page
+ @method hideMask
+ @static
+ @param {string} instanceId The Instance ID of the app
+ @param {string|Element} selector The Element or selector to an Element
+ that currently contains the loader
+ @for F2.UI
+ */
UIClass.hideMask = function(instanceId, selector) {
-
if (!F2.isInit()) {
F2.log('F2.init() must be called before F2.UI.hideMask()');
return;
@@ -312,51 +301,43 @@ F2.extend('UI', (function() {
'F2.UI.hideMask',
[
instanceId,
- // must only pass the selector argument. if we pass an Element there
- // will be F2.stringify() errors
+ // Have to pass selector or else there will be stringify errors
jQuery(selector).selector
]
);
} else {
-
var container = jQuery(selector);
container.find('> .' + F2.Constants.Css.MASK).remove();
container.removeClass(F2.Constants.Css.MASK_CONTAINER);
- // if the element contains this data property, we need to reset static
- // position
+ // If the element contains this property, reset to static position
if (container.data(F2.Constants.Css.MASK_CONTAINER)) {
- container.css({
- 'position': 'static'
- });
+ container.css({ 'position': 'static' });
}
}
};
/**
- *
- * @method init
- * @static
- * @param {F2.ContainerConfig} containerConfig The F2.ContainerConfig object
- */
+ Runs initialization code for the UI class
+ @method init
+ @static
+ @param {F2.ContainerConfig} containerConfig The F2.ContainerConfig object
+ */
UIClass.init = function(containerConfig) {
_containerConfig = containerConfig;
-
- // set defaults
_containerConfig.UI = jQuery.extend(true, {}, F2.ContainerConfig.UI, _containerConfig.UI || {});
};
/**
- * Display an ovarlay over an Element on the page
- * @method showMask
- * @static
- * @param {string} instanceId The Instance ID of the app
- * @param {string|Element} selector The Element or selector to an Element
- * over which to display the loader
- * @param {bool} showLoading Display a loading icon
- */
+ Display an ovarlay over an Element on the page
+ @method showMask
+ @static
+ @param {string} instanceId The Instance ID of the app
+ @param {string|Element} selector The Element or selector to an Element over
+ which to display the loader
+ @param {bool} showLoading Display a loading icon
+ */
UIClass.showMask = function(instanceId, selector, showLoading) {
-
if (!F2.isInit()) {
F2.log('F2.init() must be called before F2.UI.showMask()');
return;
@@ -369,29 +350,27 @@ F2.extend('UI', (function() {
'F2.UI.showMask',
[
instanceId,
- // must only pass the selector argument. if we pass an Element there
- // will be F2.stringify() errors
+ // Have to pass selector or else there will be stringify errors
jQuery(selector).selector,
showLoading
]
);
} else {
-
if (showLoading && !_containerConfig.UI.Mask.loadingIcon) {
F2.log('Unable to display loading icon. Please set F2.ContainerConfig.UI.Mask.loadingIcon when calling F2.init();');
}
var container = jQuery(selector).addClass(F2.Constants.Css.MASK_CONTAINER);
var mask = jQuery('
')
- .height('100%' /*container.outerHeight()*/ )
- .width('100%' /*container.outerWidth()*/ )
+ .height('100%')
+ .width('100%')
.addClass(F2.Constants.Css.MASK);
- // set inline styles if useClasses is false
+ // Set inline styles if useClasses is false
if (!_containerConfig.UI.Mask.useClasses) {
mask.css({
'background-color': _containerConfig.UI.Mask.backgroundColor,
- 'background-image': !!_containerConfig.UI.Mask.loadingIcon ? ('url(' + _containerConfig.UI.Mask.loadingIcon + ')') : '',
+ 'background-image': _containerConfig.UI.Mask.loadingIcon ? ('url(' + _containerConfig.UI.Mask.loadingIcon + ')') : '',
'background-position': '50% 50%',
'background-repeat': 'no-repeat',
'display': 'block',
@@ -401,23 +380,18 @@ F2.extend('UI', (function() {
'position': 'absolute',
'top': 0,
'z-index': _containerConfig.UI.Mask.zIndex,
-
'filter': 'alpha(opacity=' + (_containerConfig.UI.Mask.opacity * 100) + ')',
'opacity': _containerConfig.UI.Mask.opacity
});
}
- // only set the position if the container is currently static
if (container.css('position') === 'static') {
- container.css({
- 'position': 'relative'
- });
- // setting this data property tells hideMask to set the position
- // back to static
+ container.css({ 'position': 'relative' });
+
+ // Setting this property tells hideMask to set the position to static
container.data(F2.Constants.Css.MASK_CONTAINER, true);
}
- // add the mask to the container
container.append(mask);
}
};
From de7c65ae43a26ed9e7ff12ae2ffc109fac680bc5 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Thu, 8 Jan 2015 15:36:02 -0700
Subject: [PATCH 13/61] Tweaking rules for eval and return
---
.eslintrc | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.eslintrc b/.eslintrc
index 7d4a1838..32127646 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -17,6 +17,7 @@
"itConditionally": true
},
"rules": {
+ "no-eval": false,
"no-comma-dangle": true,
"no-cond-assign": true,
"no-console": false,
@@ -39,6 +40,7 @@
"space-after-function-name": "never",
"operator-assignment": [2, "always"],
// TODO: reverse when issues are fixed
+ "consistent-return": false,
"no-use-before-define": false,
"no-unused-vars": false
}
From e267a2e35e9fa783730adfca39012cc9fb2930d0 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Thu, 8 Jan 2015 15:36:18 -0700
Subject: [PATCH 14/61] Removing commented code
---
Gruntfile.js | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/Gruntfile.js b/Gruntfile.js
index 1d04f923..f9132ae4 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -183,10 +183,7 @@ module.exports = function(grunt) {
options: {
config: '.eslintrc'
},
- target: [
- './src/lib/*.js',
- './tests/spec/*.js'
- ]
+ target: ['./src/lib/*.js']
},
uglify: {
options: {
From 94a7f97557ace10d2b36031df927f8f7cb750ae4 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Thu, 8 Jan 2015 15:36:32 -0700
Subject: [PATCH 15/61] Fixing styling and lint errors
---
src/lib/F2.js | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/src/lib/F2.js b/src/lib/F2.js
index 3b77215e..1e97e641 100644
--- a/src/lib/F2.js
+++ b/src/lib/F2.js
@@ -8,7 +8,7 @@ var F2 = (function() {
Test whether a value is a native Node
@method _isNode
@private
- @param {Value to test} test
+ @param {object} test Any value to test
@returns {boolean} True if Node
*/
function _isNode(test) {
@@ -23,7 +23,7 @@ var F2 = (function() {
Test whether a value is a native Element
@method _isElement
@private
- @param {Value to test} test
+ @param {object} test Any value to test
@returns {boolean} True if Element
*/
function _isElement(test) {
@@ -38,8 +38,8 @@ var F2 = (function() {
Abosolutizes a relative URL
@method _absolutizeURI
@private
- @param {e.g., location.href} base
- @param {URL to absolutize} href
+ @param {string} base The base domain
+ @param {strong} href The relative url to make absolute
@returns {string} URL
Source: https://gist.github.com/Yaffle/1088850
Tests: http://skew.org/uri/uri_tests.html
@@ -71,11 +71,11 @@ var F2 = (function() {
}
/**
- Parses URI
- @method _parseURI
+ Parses URI into its component parts
@private
- @param {The URL to parse} url
- @returns {Parsed URL} string
+ @method _parseURI
+ @param {string} url The url to be parsed
+ @returns {object} The parts of the url
Source: https://gist.github.com/Yaffle/1088850
Tests: http://skew.org/uri/uri_tests.html
*/
@@ -104,9 +104,12 @@ var F2 = (function() {
A function to pass into F2.stringify which will prevent circular
reference errors when serializing objects
@method appConfigReplacer
+ @param {string} key The key being examined
+ @param {*} value The value being examined
+ @returns {*} Returns the original allowed value or undefined
*/
appConfigReplacer: function(key, value) {
- if (key == 'root' || key == 'ui' || key == 'height') {
+ if (key === 'root' || key === 'ui' || key === 'height') {
return undefined;
} else {
return value;
@@ -212,7 +215,7 @@ var F2 = (function() {
/**
Tests a URL to see if it's on the same domain (local) or not
@method isLocalRequest
- @param {URL to test} url
+ @param {string} url The url to test
@returns {bool} Whether the URL is local or not
Derived from: https://github.com/jquery/jquery/blob/master/src/ajax.js
*/
From 93eb76140c47ee8a381ed7304794c179920cca8a Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Thu, 8 Jan 2015 15:36:43 -0700
Subject: [PATCH 16/61] Fixing styling and lint errors
---
src/lib/app_handlers.js | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/lib/app_handlers.js b/src/lib/app_handlers.js
index 7c072aad..48d342bd 100644
--- a/src/lib/app_handlers.js
+++ b/src/lib/app_handlers.js
@@ -113,7 +113,7 @@ F2.extend('AppHandlers', (function() {
// Token must match F2
function _validateF2Token(token) {
- if (token != _f2Token) {
+ if (token !== _f2Token) {
throw new Error('Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().');
}
}
@@ -170,6 +170,7 @@ F2.extend('AppHandlers', (function() {
and can only be called one time. Container Developers must store the
return value inside of a closure.
@method getToken
+ @returns {string} A one-time container token
*/
getToken: function() {
/**
@@ -188,6 +189,7 @@ F2.extend('AppHandlers', (function() {
additional internal methods.
@method __f2GetToken
@private
+ @returns {string} A one-time container token
*/
__f2GetToken: function() {
/**
@@ -206,6 +208,7 @@ F2.extend('AppHandlers', (function() {
@param {String} token The token received from {{#crossLink "F2.AppHandlers/\_\_f2GetToken:method"}}{{/crossLink}}.
@param {String} eventKey The event to fire. The complete list of event
keys is available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ @returns {object} The F2 instance for chaining purposes
*/
__trigger: function(token, eventKey) {
_validateF2Token(token);
@@ -257,6 +260,7 @@ F2.extend('AppHandlers', (function() {
@param {Function} listener A function that will be triggered when a
specific event occurs. For detailed argument definition refer to
{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ @returns {object} The F2 instance for chaining purposes
@example
var token = F2.AppHandlers.getToken();
F2.AppHandlers.on(
@@ -302,6 +306,7 @@ F2.extend('AppHandlers', (function() {
which event to attach the listener to. If no namespace is provided all
listeners for the specified event type will be removed. Complete list
available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ @returns {object} The F2 instance for chaining purposes
@example
var token = F2.AppHandlers.getToken();
F2.AppHandlers.off(token, 'appRenderBefore');
From 3c1a3214558170f10ca75c80f90e38733c2e2e3d Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Thu, 8 Jan 2015 15:37:02 -0700
Subject: [PATCH 17/61] Fixing styling and lint errors for 'classes'
---
src/lib/classes.js | 95 ++++++++++++++++++++++++++--------------------
1 file changed, 53 insertions(+), 42 deletions(-)
diff --git a/src/lib/classes.js b/src/lib/classes.js
index e2286cab..d3428af0 100644
--- a/src/lib/classes.js
+++ b/src/lib/classes.js
@@ -5,8 +5,9 @@
F2.extend('', {
/**
The App Class is an optional class that can be namespaced onto the
- {{#crossLink "F2\Apps"}}{{/crossLink}} namespace. The [F2 Docs](../../app-development.html#app-class)
- has more information on the usage of the App Class.
+ {{#crossLink "F2\Apps"}}{{/crossLink}} namespace. The
+ [F2 Docs](../../app-development.html#app-class) has more information on the
+ usage of the App Class.
@class F2.App
@constructor
@param {F2.AppConfig} appConfig The F2.AppConfig object for the app
@@ -31,7 +32,8 @@ F2.extend('', {
*/
AppConfig: {
/**
- The unique ID of the app. More information can be found [here](../../app-development.html#f2-appid).
+ The unique ID of the app. More information can be found
+ [here](../../app-development.html#f2-appid).
@property appId
@type string
@required
@@ -70,8 +72,9 @@ F2.extend('', {
/**
True if the app will be loaded in an iframe. This property will be true
if the {{#crossLink "F2.AppConfig"}}{{/crossLink}} object sets
- `isSecure = true`. It will also be true if the [container](../../container-development.html)
- has made the decision to run apps in iframes.
+ `isSecure = true`. It will also be true if the
+ [container](../../container-development.html) has made the decision to
+ run apps in iframes.
@property isSecure
@type bool
@default false
@@ -116,9 +119,9 @@ F2.extend('', {
maxWidth: 0,
/**
The recommended minimum grid size that this app should be run. This value
- corresponds to the 12-grid system that is used by the [container](../../container-development.html).
- This property should be set by apps that require a certain number of
- columns in their layout.
+ corresponds to the 12-grid system that is used by the
+ [container](../../container-development.html). This property should be
+ set by apps that require a certain number of columns in their layout.
@property minGridSize
@type int
@default 4
@@ -143,16 +146,16 @@ F2.extend('', {
name: '',
/**
The root DOM element that contains the app.
- **This property is populated during the F2.{{#crossLink "F2/registerApps"}}{{/crossLink}}
- process.**
+ **This property is populated during the
+ F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process.**
@property root
@type Element
*/
root: undefined,
/**
The instance of F2.UI providing easy access to F2.UI methods.
- **This property is populated during the F2.{{#crossLink "F2/registerApps"}}{{/crossLink}}
- process.**
+ **This property is populated during the
+ F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process.**
@property ui
@type F2.UI
*/
@@ -160,7 +163,8 @@ F2.extend('', {
/**
The views that this app supports. Available views are defined in
{{#crossLink "F2.Constants.Views"}}{{/crossLink}}. The presence of a view
- can be checked via F2.{{#crossLink "F2/inArray"}}{{/crossLink}}: F2.inArray(F2.Constants.Views.SETTINGS, app.views).
+ can be checked via F2.{{#crossLink "F2/inArray"}}{{/crossLink}}:
+ F2.inArray(F2.Constants.Views.SETTINGS, app.views).
@property views
@type Array
*/
@@ -229,7 +233,8 @@ F2.extend('', {
status: ''
},
/**
- An object containing configuration information for the [container](../../container-development.html).
+ An object containing configuration information for the
+ [container](../../container-development.html).
@class F2.ContainerConfig
*/
ContainerConfig: {
@@ -239,38 +244,40 @@ F2.extend('', {
{{#crossLink "F2.AppConfig"}}{{/crossLink}} object and also a string of
html.
@method afterAppRender
- @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}}
- and will be removed in v2.0
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
@param {F2.AppConfig} appConfig The F2.AppConfig object
@param {string} html The string of html representing the app
@return {Element} The DOM Element surrounding the app
*/
- afterAppRender: function(appConfig, html) {},
+ afterAppRender: null,
/**
Allows the [container](../../container-development.html) to wrap an app
- in extra html. The function should accept an {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- object and also a string of html. The extra html can provide links to
- edit app settings and remove an app from the container. See {{#crossLink "F2.Constants.Css"}}{{/crossLink}}
- for CSS classes that should be applied to elements.
+ in extra html. The function should accept an
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} object and also a string of
+ html. The extra html can provide links to edit app settings and remove an
+ app from the container. See
+ {{#crossLink "F2.Constants.Css"}}{{/crossLink}} for CSS classes that
+ should be applied to elements.
@method appRender
- @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}}
- and will be removed in v2.0
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
@param {F2.AppConfig} appConfig The F2.AppConfig object
@param {string} html The string of html representing the app
*/
- appRender: function(appConfig, html) {},
+ appRender: null,
/**
Allows the container to render html for an app before the AppManifest for
an app has loaded. This can be useful if the design calls for loading
icons to appear for each app before each app is loaded and rendered to
the page.
@method beforeAppRender
- @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}}
- and will be removed in v2.0
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
@param {F2.AppConfig} appConfig The F2.AppConfig object
@return {Element} The DOM Element surrounding the app
*/
- beforeAppRender: function(appConfig) {},
+ beforeAppRender: null,
/**
True to enable debug mode in F2.js. Adds additional logging, resource
cache busting, etc.
@@ -328,8 +335,9 @@ F2.extend('', {
*/
UI: {
/**
- An object containing configuration defaults for the F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}}
- and F2.UI.{{#crossLink "F2.UI/hideMask"}}{{/crossLink}} methods.
+ An object containing configuration defaults for the
+ F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} and
+ F2.UI.{{#crossLink "F2.UI/hideMask"}}{{/crossLink}} methods.
@class F2.ContainerConfig.UI.Mask
*/
Mask: {
@@ -391,8 +399,8 @@ F2.extend('', {
that is used for the request.
@method xhr.dataType
@param {string} url The manifest url
- @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- objects
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
@return {string} The request data type that should be used
@example
F2.init({
@@ -406,14 +414,14 @@ F2.extend('', {
}
});
*/
- dataType: function(url, appConfigs) {},
+ dataType: null,
/**
Allows the container to override the request method that is used (just
like the `type` parameter to `jQuery.ajax()`.
@method xhr.type
@param {string} url The manifest url
- @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- objects
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
@return {string} The request method that should be used
@example
F2.init({
@@ -427,14 +435,14 @@ F2.extend('', {
}
});
*/
- type: function(url, appConfigs) {},
+ type: null,
/**
Allows the container to override the url that is used to request an
app's F2.{{#crossLink "F2.AppManifest"}}{{/crossLink}}.
@method xhr.url
@param {string} url The manifest url
- @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- objects
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
@return {string} The url that should be used for the request
@example
F2.init({
@@ -445,13 +453,15 @@ F2.extend('', {
}
});
*/
- url: function(url, appConfigs) {}
+ url: null
},
/**
Allows the container to override the script loader which requests
dependencies defined in the {{#crossLink "F2.AppManifest"}}{{/crossLink}}.
- @property loadScripts
- @type function
+ @method loadScripts
+ @param {Array} scripts Script file urls to be loaded
+ @param {Array} inlines Inline JavaScript to be run
+ @param {Function} callback Should be called when loading is complete
@example
F2.init({
loadScripts: function(scripts, inlines, callback) {
@@ -464,8 +474,9 @@ F2.extend('', {
/**
Allows the container to override the stylesheet loader which requests
dependencies defined in the {{#crossLink "F2.AppManifest"}}{{/crossLink}}.
- @property loadStyles
- @type function
+ @method loadStyles
+ @param {Array} styles CSS file urls to be loaded
+ @param {Function} callback Should be called when loading is complete
@example
F2.init({
loadStyles: function(styles, callback) {
From 71a6cda8cc08de29c112a657f66961f3495c3cd4 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Thu, 8 Jan 2015 15:37:16 -0700
Subject: [PATCH 18/61] Fixing styling and lint errors for 'container'
---
src/lib/container.js | 2427 +++++++++++++++++++++---------------------
1 file changed, 1188 insertions(+), 1239 deletions(-)
diff --git a/src/lib/container.js b/src/lib/container.js
index ebee0c2a..858b705e 100644
--- a/src/lib/container.js
+++ b/src/lib/container.js
@@ -1,1243 +1,1192 @@
/**
- * Root namespace of the F2 SDK
- * @module f2
- * @class F2
- */
+ Root namespace of the F2 SDK
+ @module f2
+ @class F2
+*/
F2.extend('', (function() {
- var _apps = {};
- var _config = false;
- var _bUsesAppHandlers = false;
- var _sAppHandlerToken = F2.AppHandlers.__f2GetToken();
- var _loadedScripts = {};
- var _loadedStyles = {};
- var _loadingScripts = {};
-
- /**
- * Appends the app's html to the DOM
- * @method _afterAppRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} html The string of html
- * @return {Element} The DOM Element that contains the app
- */
- var _afterAppRender = function(appConfig, html) {
-
- var handler = _config.afterAppRender || function(appConfig, html) {
- return jQuery(html).appendTo('body');
- };
- var appContainer = handler(appConfig, html);
-
- if ( !! _config.afterAppRender && !appContainer) {
- F2.log('F2.ContainerConfig.afterAppRender() must return the DOM Element that contains the app');
- return;
- }
- else {
- // apply APP class
- jQuery(appContainer).addClass(F2.Constants.Css.APP);
- return appContainer.get(0);
- }
- };
-
- /**
- * Renders the html for an app.
- * @method _appRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} html The string of html
- */
- var _appRender = function(appConfig, html) {
-
- // apply APP_CONTAINER class and AppID
- html = _outerHtml(jQuery(html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId));
-
- // optionally apply wrapper html
- if (_config.appRender) {
- html = _config.appRender(appConfig, html);
- }
-
- return _outerHtml(html);
- };
-
- /**
- * Rendering hook to allow containers to render some html prior to an app
- * loading
- * @method _beforeAppRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @return {Element} The DOM Element surrounding the app
- */
- var _beforeAppRender = function(appConfig) {
- var handler = _config.beforeAppRender || jQuery.noop;
- return handler(appConfig);
- };
-
- /**
- * Handler to inform the container that a script failed to load
- * @method _onScriptLoadFailure
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param scriptInfo The path of the script that failed to load or the exception info
- * for the inline script that failed to execute
- */
- var _appScriptLoadFailed = function(appConfig, scriptInfo) {
- var handler = _config.appScriptLoadFailed || jQuery.noop;
- return handler(appConfig, scriptInfo);
- };
-
- /**
- * Adds properties to the AppConfig object
- * @method _createAppConfig
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @return {F2.AppConfig} The new F2.AppConfig object, prepopulated with
- * necessary properties
- */
- var _createAppConfig = function(appConfig) {
-
- // make a copy of the app config to ensure that the original is not modified
- appConfig = jQuery.extend(true, {}, appConfig);
-
- // create the instanceId for the app
- appConfig.instanceId = appConfig.instanceId || F2.guid();
-
- // default the views if not provided
- appConfig.views = appConfig.views || [];
- if (!F2.inArray(F2.Constants.Views.HOME, appConfig.views)) {
- appConfig.views.push(F2.Constants.Views.HOME);
- }
-
- //pass container-defined locale to each app
- if (F2.ContainerConfig.locale){
- appConfig.containerLocale = F2.ContainerConfig.locale;
- }
-
- return appConfig;
- };
-
- /**
- * Generate an AppConfig from the element's attributes
- * @method _getAppConfigFromElement
- * @private
- * @param {Element} node The DOM node from which to generate the F2.AppConfig object
- * @return {F2.AppConfig} The new F2.AppConfig object
- */
- var _getAppConfigFromElement = function(node) {
- var appConfig;
-
- if (node) {
- var appId = node.getAttribute('data-f2-appid');
- var manifestUrl = node.getAttribute('data-f2-manifesturl');
-
- if (appId && manifestUrl) {
- appConfig = {
- appId: appId,
- enableBatchRequests: node.hasAttribute('data-f2-enablebatchrequests'),
- isSecure: node.hasAttribute('data-f2-issecure'),
- manifestUrl: manifestUrl,
- root: node
- };
-
- // See if the user passed in a block of serialized json
- var contextJson = node.getAttribute('data-f2-context');
-
- if (contextJson) {
- try {
- appConfig.context = F2.parse(contextJson);
- }
- catch (e) {
- console.warn('F2: "data-f2-context" of node is not valid JSON', '"' + e + '"');
- }
- }
- }
- }
-
- return appConfig;
- };
-
- /**
- * Returns true if the DOM node has children that are not text nodes
- * @method _hasNonTextChildNodes
- * @private
- * @param {Element} node The DOM node
- * @return {bool} True if there are non-text children
- */
- var _hasNonTextChildNodes = function(node) {
- var hasNodes = false;
-
- if (node.hasChildNodes()) {
- for (var i = 0, len = node.childNodes.length; i < len; i++) {
- if (node.childNodes[i].nodeType === 1) {
- hasNodes = true;
- break;
- }
- }
- }
-
- return hasNodes;
- };
-
- /**
- * Adds properties to the ContainerConfig object to take advantage of defaults
- * @method _hydrateContainerConfig
- * @private
- * @param {F2.ContainerConfig} containerConfig The F2.ContainerConfig object
- */
- var _hydrateContainerConfig = function(containerConfig) {
-
- if (!containerConfig.scriptErrorTimeout) {
- containerConfig.scriptErrorTimeout = F2.ContainerConfig.scriptErrorTimeout;
- }
-
- if (containerConfig.debugMode !== true) {
- containerConfig.debugMode = F2.ContainerConfig.debugMode;
- }
-
- if (containerConfig.locale && typeof containerConfig.locale == 'string'){
- F2.ContainerConfig.locale = containerConfig.locale;
- }
- };
-
- /**
- * Attach app events
- * @method _initAppEvents
- * @private
- */
- var _initAppEvents = function(appConfig) {
-
- jQuery(appConfig.root).on('click', '.' + F2.Constants.Css.APP_VIEW_TRIGGER + '[' + F2.Constants.Views.DATA_ATTRIBUTE + ']', function(event) {
-
- event.preventDefault();
-
- var view = jQuery(this).attr(F2.Constants.Views.DATA_ATTRIBUTE).toLowerCase();
-
- // handle the special REMOVE view
- if (view == F2.Constants.Views.REMOVE) {
- F2.removeApp(appConfig.instanceId);
- }
- else {
- appConfig.ui.Views.change(view);
- }
- });
- };
-
- /**
- * Attach container Events
- * @method _initContainerEvents
- * @private
- */
- var _initContainerEvents = function() {
-
- var resizeTimeout;
- var resizeHandler = function() {
- F2.Events.emit(F2.Constants.Events.CONTAINER_WIDTH_CHANGE);
- };
-
- jQuery(window).on('resize', function() {
- clearTimeout(resizeTimeout);
- resizeTimeout = setTimeout(resizeHandler, 100);
- });
-
- //listen for container-broadcasted locale changes
- F2.Events.on(F2.Constants.Events.CONTAINER_LOCALE_CHANGE,function(data){
- if (data.locale && typeof data.locale == 'string'){
- F2.ContainerConfig.locale = data.locale;
- }
- });
- };
-
- /**
- * Checks if an element is a placeholder element
- * @method _isPlaceholderElement
- * @private
- * @param {Element} node The DOM element to check
- * @return {bool} True if the element is a placeholder
- */
- var _isPlaceholderElement = function(node) {
- return (
- F2.isNativeDOMNode(node) &&
- !_hasNonTextChildNodes(node) &&
- !!node.getAttribute('data-f2-appid') &&
- !!node.getAttribute('data-f2-manifesturl')
- );
- };
-
- /**
- * Has the container been init?
- * @method _isInit
- * @private
- * @return {bool} True if the container has been init
- */
- var _isInit = function() {
- return !!_config;
- };
-
- /**
- * Instantiates each app from it's appConfig and stores that in a local private collection
- * @method _createAppInstance
- * @private
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
- */
- var _createAppInstance = function(appConfig, appContent) {
- // instantiate F2.UI
- appConfig.ui = new F2.UI(appConfig);
-
- // instantiate F2.App
- if (F2.Apps[appConfig.appId] !== undefined) {
- if (typeof F2.Apps[appConfig.appId] === 'function') {
-
- // IE
- setTimeout(function() {
- _apps[appConfig.instanceId].app = new F2.Apps[appConfig.appId](appConfig, appContent, appConfig.root);
- if (_apps[appConfig.instanceId].app['init'] !== undefined) {
- _apps[appConfig.instanceId].app.init();
- }
- }, 0);
-
- }
- else {
- F2.log('app initialization class is defined but not a function. (' + appConfig.appId + ')');
- }
- }
- };
-
- /**
- * Loads the app's html/css/javascript
- * @method loadApp
- * @private
- * @param {Array} appConfigs An array of
- * {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
- * @param {F2.AppManifest} [appManifest] The AppManifest object
- */
- var _loadApps = function(appConfigs, appManifest) {
- appConfigs = [].concat(appConfigs);
-
- // check for secure app
- if (appConfigs.length == 1 && appConfigs[0].isSecure && !_config.isSecureAppPage) {
- _loadSecureApp(appConfigs[0], appManifest);
- return;
- }
-
- // check that the number of apps in manifest matches the number requested
- if (appConfigs.length != appManifest.apps.length) {
- F2.log('The number of apps defined in the AppManifest do not match the number requested.', appManifest);
- return;
- }
-
- // Fn for loading manifest Styles
- var _loadStyles = function(styles, cb) {
- // Attempt to use the user provided method
- if (_config.loadStyles) {
- return _config.loadStyles(styles, cb);
- }
-
- // load styles, see #101
- var stylesFragment = null,
- useCreateStyleSheet = !! document.createStyleSheet;
-
- jQuery.each(styles, function(i, e) {
- var resourceUrl = e,
- resourceKey = e.toLowerCase();
-
- if (_loadedStyles[resourceKey]) {
- return;
- }
-
- if (useCreateStyleSheet) {
- document.createStyleSheet(resourceUrl);
- }
- else {
- stylesFragment = stylesFragment || [];
- stylesFragment.push('');
- }
-
- _loadedStyles[resourceKey] = true;
- });
-
- if (stylesFragment) {
- jQuery('head').append(stylesFragment.join(''));
- }
-
- cb();
- };
-
- // For loading AppManifest.scripts
- // Parts derived from curljs, headjs, requirejs, dojo
- var _loadScripts = function(scripts, cb) {
- // Attempt to use the user provided method
- if (_config.loadScripts) {
- return _config.loadScripts(scripts, cb);
- }
-
- if (!scripts.length) {
- return cb();
- }
-
- var doc = window.document;
- var scriptCount = scripts.length;
- var scriptsLoaded = 0;
- //http://caniuse.com/#feat=script-async
- // var supportsAsync = 'async' in doc.createElement('script') || 'MozAppearance' in doc.documentElement.style || window.opera;
- var head = doc && (doc['head'] || doc.getElementsByTagName('head')[0]);
- // to keep IE from crying, we need to put scripts before any
- // elements, but after any . this should do it:
- var insertBeforeEl = head && head.getElementsByTagName('base')[0] || null;
- // Check for IE10+ so that we don't rely on onreadystatechange, readyStates for IE6-9
- var readyStates = 'addEventListener' in window ? {} : { 'loaded': true, 'complete': true };
-
- // Log and emit event for the failed (400,500) scripts
- var _error = function(e) {
- setTimeout(function() {
- var evtData = {
- src: e.target.src,
- appId: appConfigs[0].appId
- };
-
- // Send error to console
- F2.log('Script defined in \'' + evtData.appId + '\' failed to load \'' + evtData.src + '\'');
-
- // Emit events
- F2.Events.emit('RESOURCE_FAILED_TO_LOAD', evtData);
-
- if (!_bUsesAppHandlers) {
- _appScriptLoadFailed(appConfigs[0], evtData.src);
- }
- else {
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
- appConfigs[0],
- evtData.src
- );
- }
- }, _config.scriptErrorTimeout); // Defaults to 7000
- };
-
- var _checkComplete = function() {
- // Are we done loading all scripts for this app?
- if (++scriptsLoaded === scriptCount) {
- // success
- cb();
- }
- };
-
- var _emptyWaitlist = function(resourceKey, errorEvt) {
- var waiting,
- waitlist = _loadingScripts[resourceKey];
-
- if (!waitlist) {
- return;
- }
-
- for (var i=0; i really is the best
- head.insertBefore(script, insertBeforeEl);
- });
- };
-
- var _loadInlineScripts = function(inlines, cb) {
- // Attempt to use the user provided method
- if (_config.loadInlineScripts) {
- _config.loadInlineScripts(inlines, cb);
- }
- else {
- for (var i = 0, len = inlines.length; i < len; i++) {
- try {
- eval(inlines[i]);
- }
- catch (exception) {
- F2.log('Error loading inline script: ' + exception + '\n\n' + inlines[i]);
-
- // Emit events
- F2.Events.emit('RESOURCE_FAILED_TO_LOAD', { appId:appConfigs[0].appId, src: inlines[i], err: exception });
-
- if (!_bUsesAppHandlers) {
- _appScriptLoadFailed(appConfigs[0], exception);
- }
- else {
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
- appConfigs[0],
- exception
- );
- }
- }
- }
- cb();
- }
- };
-
- // Determine whether an element has been added to the page
- var elementInDocument = function(element) {
- if (element) {
- while (element.parentNode) {
- element = element.parentNode;
-
- if (element === document) {
- return true;
- }
- }
- }
-
- return false;
- };
-
- // Fn for loading manifest app html
- var _loadHtml = function(apps) {
- jQuery.each(apps, function(i, a) {
- if (_isPlaceholderElement(appConfigs[i].root)) {
- jQuery(appConfigs[i].root)
- .addClass(F2.Constants.Css.APP)
- .append(jQuery(a.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfigs[i].appId));
- }
- else if (!_bUsesAppHandlers) {
- // load html and save the root node
- appConfigs[i].root = _afterAppRender(appConfigs[i], _appRender(appConfigs[i], a.html));
- }
- else {
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER,
- appConfigs[i], // the app config
- _outerHtml(jQuery(a.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfigs[i].appId))
- );
-
- var appId = appConfigs[i].appId,
- root = appConfigs[i].root;
-
- if (!root) {
- throw ('Root for ' + appId + ' must be a native DOM element and cannot be null or undefined. Check your AppHandler callbacks to ensure you have set App root to a native DOM element.');
- }
-
- if (!elementInDocument(root)) {
- throw ('App root for ' + appId + ' was not appended to the DOM. Check your AppHandler callbacks to ensure you have rendered the app root to the DOM.');
- }
-
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER_AFTER,
- appConfigs[i] // the app config
- );
-
- if (!F2.isNativeDOMNode(root)) {
- throw ('App root for ' + appId + ' must be a native DOM element. Check your AppHandler callbacks to ensure you have set app root to a native DOM element.');
- }
- }
-
- // init events
- _initAppEvents(appConfigs[i]);
- });
- };
-
- // Pull out the manifest data
- var scripts = appManifest.scripts || [];
- var styles = appManifest.styles || [];
- var inlines = appManifest.inlineScripts || [];
- var apps = appManifest.apps || [];
-
- // Finally, load the styles, html, and scripts
- _loadStyles(styles, function() {
- // Put the html on the page
- _loadHtml(apps);
- // Add the script content to the page
- _loadScripts(scripts, function() {
- // emit event we're done with scripts
- if (appConfigs[0]){ F2.Events.emit('APP_SCRIPTS_LOADED', { appId:appConfigs[0].appId, scripts:scripts }); }
- // Load any inline scripts
- _loadInlineScripts(inlines, function() {
- // Create the apps
- jQuery.each(appConfigs, function(i, a) {
- _createAppInstance(a, appManifest.apps[i]);
- });
- });
- });
- });
- };
-
- /**
- * Loads the app's html/css/javascript into an iframe
- * @method loadSecureApp
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {F2.AppManifest} appManifest The app's html/css/js to be loaded into the
- * page.
- */
- var _loadSecureApp = function(appConfig, appManifest) {
-
- // make sure the container is configured for secure apps
- if (_config.secureAppPagePath) {
- if (_isPlaceholderElement(appConfig.root)) {
- jQuery(appConfig.root)
- .addClass(F2.Constants.Css.APP)
- .append(jQuery('').addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId));
- }
- else if (!_bUsesAppHandlers) {
- // create the html container for the iframe
- appConfig.root = _afterAppRender(appConfig, _appRender(appConfig, ''));
- }
- else {
- var $root = jQuery(appConfig.root);
-
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER,
- appConfig, // the app config
- _outerHtml(jQuery(appManifest.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId))
- );
-
- if ($root.parents('body:first').length === 0) {
- throw ('App was never rendered on the page. Please check your AppHandler callbacks to ensure you have rendered the app root to the DOM.');
- }
-
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER_AFTER,
- appConfig // the app config
- );
-
- if (!appConfig.root) {
- throw ('App Root must be a native dom node and can not be null or undefined. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.');
- }
-
- if (!F2.isNativeDOMNode(appConfig.root)) {
- throw ('App Root must be a native dom node. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.');
- }
- }
-
- // instantiate F2.UI
- appConfig.ui = new F2.UI(appConfig);
- // init events
- _initAppEvents(appConfig);
- // create RPC socket
- F2.Rpc.register(appConfig, appManifest);
- }
- else {
- F2.log('Unable to load secure app: "secureAppPagePath" is not defined in F2.ContainerConfig.');
- }
- };
-
- var _outerHtml = function(html) {
- return jQuery('').append(html).html();
- };
-
- /**
- * Checks if the app is valid
- * @method _validateApp
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @returns {bool} True if the app is valid
- */
- var _validateApp = function(appConfig) {
-
- // check for valid app configurations
- if (!appConfig.appId) {
- F2.log('"appId" missing from app object');
- return false;
- }
- else if (!appConfig.root && !appConfig.manifestUrl) {
- F2.log('"manifestUrl" missing from app object');
- return false;
- }
-
- return true;
- };
-
- /**
- * Checks if the ContainerConfig is valid
- * @method _validateContainerConfig
- * @private
- * @returns {bool} True if the config is valid
- */
- var _validateContainerConfig = function() {
-
- if (_config) {
- if (_config.xhr) {
- if (!(typeof _config.xhr === 'function' || typeof _config.xhr === 'object')) {
- throw ('ContainerConfig.xhr should be a function or an object');
- }
- if (_config.xhr.dataType && typeof _config.xhr.dataType !== 'function') {
- throw ('ContainerConfig.xhr.dataType should be a function');
- }
- if (_config.xhr.type && typeof _config.xhr.type !== 'function') {
- throw ('ContainerConfig.xhr.type should be a function');
- }
- if (_config.xhr.url && typeof _config.xhr.url !== 'function') {
- throw ('ContainerConfig.xhr.url should be a function');
- }
- }
- }
-
- return true;
- };
-
- return {
- /**
- * Gets the current list of apps in the container
- * @method getContainerState
- * @returns {Array} An array of objects containing the appId
- */
- getContainerState: function() {
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.getContainerState()');
- return;
- }
-
- return jQuery.map(_apps, function(app) {
- return {
- appId: app.config.appId
- };
- });
- },
- /**
- * Gets the current locale defined by the container
- * @method getContainerLocale
- * @returns {String} IETF-defined standard language tag
- */
- getContainerLocale: function() {
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.getContainerLocale()');
- return;
- }
-
- return F2.ContainerConfig.locale;
- },
- /**
- * Initializes the container. This method must be called before performing
- * any other actions in the container.
- * @method init
- * @param {F2.ContainerConfig} config The configuration object
- */
- init: function(config) {
- _config = config || {};
-
- _validateContainerConfig();
-
- _hydrateContainerConfig(_config);
-
- // dictates whether we use the old logic or the new logic.
- // TODO: Remove in v2.0
- _bUsesAppHandlers = (!_config.beforeAppRender && !_config.appRender && !_config.afterAppRender && !_config.appScriptLoadFailed);
-
- // only establish RPC connection if the container supports the secure app page
- if ( !! _config.secureAppPagePath || _config.isSecureAppPage) {
- F2.Rpc.init( !! _config.secureAppPagePath ? _config.secureAppPagePath : false);
- }
-
- F2.UI.init(_config);
-
- if (!_config.isSecureAppPage) {
- _initContainerEvents();
- }
- },
- /**
- * Has the container been init?
- * @method isInit
- * @return {bool} True if the container has been init
- */
- isInit: _isInit,
- /**
- * Automatically load apps that are already defined in the DOM. Elements will
- * be rendered into the location of the placeholder DOM element. Any AppHandlers
- * that are defined will be bypassed.
- * @method loadPlaceholders
- * @param {Element} parentNode The element to search for placeholder apps
- */
- loadPlaceholders: function(parentNode) {
-
- var elements = [],
- appConfigs = [],
- add = function(e) {
- if (!e) { return; }
- elements.push(e);
- },
- addAll = function(els) {
- if (!els) { return; }
- for (var i = 0, len = els.length; i < len; i++) {
- add(els[i]);
- }
- };
-
- if (!!parentNode && !F2.isNativeDOMNode(parentNode)) {
- throw ('"parentNode" must be null or a DOM node');
- }
-
- // if the passed in element has a data-f2-appid attribute add
- // it to the list of elements but to not search within that
- // element for other placeholders
- if (parentNode && parentNode.hasAttribute('data-f2-appid')) {
- add(parentNode);
- } else {
-
- // find placeholders within the parentNode only if
- // querySelectorAll exists
- parentNode = parentNode || document;
- if (parentNode.querySelectorAll) {
- addAll(parentNode.querySelectorAll('[data-f2-appid]'));
- }
- }
-
- for (var i = 0, len = elements.length; i < len; i++) {
- var appConfig = _getAppConfigFromElement(elements[i]);
- appConfigs.push(appConfig);
- }
-
- if (appConfigs.length) {
- F2.registerApps(appConfigs);
- }
- },
- /**
- * Begins the loading process for all apps and/or initialization process for pre-loaded apps.
- * The app will be passed the {{#crossLink "F2.AppConfig"}}{{/crossLink}} object which will
- * contain the app's unique instanceId within the container. If the
- * {{#crossLink "F2.AppConfig"}}{{/crossLink}}.root property is populated the app is considered
- * to be a pre-loaded app and will be handled accordingly. Optionally, the
- * {{#crossLink "F2.AppManifest"}}{{/crossLink}} can be passed in and those
- * assets will be used instead of making a request.
- * @method registerApps
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @param {Array} [appManifests] An array of
- * {{#crossLink "F2.AppManifest"}}{{/crossLink}}
- * objects. This array must be the same length as the apps array that is
- * objects. This array must be the same length as the apps array that is
- * passed in. This can be useful if apps are loaded on the server-side and
- * passed down to the client.
- * @example
- * Traditional App requests.
- *
- * // Traditional f2 app configs
- * var arConfigs = [
- * {
- * appId: 'com_externaldomain_example_app',
- * context: {},
- * manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
- * },
- * {
- * appId: 'com_externaldomain_example_app',
- * context: {},
- * manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
- * },
- * {
- * appId: 'com_externaldomain_example_app2',
- * context: {},
- * manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
- * }
- * ];
- *
- * F2.init();
- * F2.registerApps(arConfigs);
- *
- * @example
- * Pre-loaded and tradition apps mixed.
- *
- * // Pre-loaded apps and traditional f2 app configs
- * // you can preload the same app multiple times as long as you have a unique root for each
- * var arConfigs = [
- * {
- * appId: 'com_mydomain_example_app',
- * context: {},
- * root: 'div#example-app-1',
- * manifestUrl: ''
- * },
- * {
- * appId: 'com_mydomain_example_app',
- * context: {},
- * root: 'div#example-app-2',
- * manifestUrl: ''
- * },
- * {
- * appId: 'com_externaldomain_example_app',
- * context: {},
- * manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
- * }
- * ];
- *
- * F2.init();
- * F2.registerApps(arConfigs);
- *
- * @example
- * Apps with predefined manifests.
- *
- * // Traditional f2 app configs
- * var arConfigs = [
- * {appId: 'com_externaldomain_example_app', context: {}},
- * {appId: 'com_externaldomain_example_app', context: {}},
- * {appId: 'com_externaldomain_example_app2', context: {}}
- * ];
- *
- * // Pre requested manifest responses
- * var arManifests = [
- * {
- * apps: ['
'],
- * inlineScripts: [],
- * scripts: ['http://www.domain.com/js/App2Class.js'],
- * styles: ['http://www.domain.com/css/App2Styles.css']
- * }
- * ];
- *
- * F2.init();
- * F2.registerApps(arConfigs, arManifests);
- */
- registerApps: function(appConfigs, appManifests) {
-
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.registerApps()');
- return;
- }
- else if (!appConfigs) {
- F2.log('At least one AppConfig must be passed when calling F2.registerApps()');
- return;
- }
-
- var appStack = [];
- var batches = {};
- var callbackStack = {};
- var haveManifests = false;
- appConfigs = [].concat(appConfigs);
- appManifests = [].concat(appManifests || []);
- haveManifests = !! appManifests.length;
-
- // appConfigs must have a length
- if (!appConfigs.length) {
- F2.log('At least one AppConfig must be passed when calling F2.registerApps()');
- return;
- // ensure that the array of apps and manifests are qual
- }
- else if (appConfigs.length && haveManifests && appConfigs.length != appManifests.length) {
- F2.log('The length of "apps" does not equal the length of "appManifests"');
- return;
- }
-
- // validate each app and assign it an instanceId
- // then determine which apps can be batched together
- jQuery.each(appConfigs, function(i, a) {
- // add properties and methods
- a = _createAppConfig(a);
-
- // Will set to itself, for preloaded apps, or set to null for apps that aren't already
- // on the page.
- a.root = a.root || null;
-
- // we validate the app after setting the root property because pre-load apps do no require
- // manifest url
- if (!_validateApp(a)) {
- return; // move to the next app
- }
-
- // save app
- _apps[a.instanceId] = {
- config: a
- };
-
- // If the root property is defined then this app is considered to be preloaded and we will
- // run it through that logic.
- if (a.root && !_isPlaceholderElement(a.root)) {
- if ((!a.root && typeof(a.root) != 'string') && !F2.isNativeDOMNode(a.root)) {
- F2.log('AppConfig invalid for pre-load, not a valid string and not dom node');
- F2.log('AppConfig instance:', a);
- throw ('Preloaded appConfig.root property must be a native dom node or a string representing a sizzle selector. Please check your inputs and try again.');
- }
- else if (jQuery(a.root).length != 1) {
- F2.log('AppConfig invalid for pre-load, root not unique');
- F2.log('AppConfig instance:', a);
- F2.log('Number of dom node instances:', jQuery(a.root).length);
- throw ('Preloaded appConfig.root property must map to a unique dom node. Please check your inputs and try again.');
- }
-
- // instantiate F2.App
- _createAppInstance(a);
-
- // init events
- _initAppEvents(a);
-
- // Continue on in the .each loop, no need to continue because the app is on the page
- // the js in initialized, and it is ready to role.
- return; // equivalent to continue in .each
- }
-
- if (!_isPlaceholderElement(a.root)) {
- if (!_bUsesAppHandlers) {
- // fire beforeAppRender
- a.root = _beforeAppRender(a);
- }
- else {
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_CREATE_ROOT,
- a // the app config
- );
-
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER_BEFORE,
- a // the app config
- );
- }
- }
-
- // if we have the manifest, go ahead and load the app
- if (haveManifests) {
- _loadApps(a, appManifests[i]);
- }
- else {
- // check if this app can be batched
- if (a.enableBatchRequests && !a.isSecure) {
- batches[a.manifestUrl.toLowerCase()] = batches[a.manifestUrl.toLowerCase()] || [];
- batches[a.manifestUrl.toLowerCase()].push(a);
- }
- else {
- appStack.push({
- apps: [a],
- url: a.manifestUrl
- });
- }
- }
- });
-
- // we don't have the manifests, go ahead and load them
- if (!haveManifests) {
- // add the batches to the appStack
- jQuery.each(batches, function(i, b) {
- appStack.push({
- url: i,
- apps: b
- });
- });
-
- // if an app is being loaded more than once on the page, there is the
- // potential that the jsonp callback will be clobbered if the request
- // for the AppManifest for the app comes back at the same time as
- // another request for the same app. We'll create a callbackStack
- // that will ensure that requests for the same app are loaded in order
- // rather than at the same time
- jQuery.each(appStack, function(i, req) {
- // define the callback function based on the first app's App ID
- var jsonpCallback = F2.Constants.JSONP_CALLBACK + req.apps[0].appId;
-
- // push the request onto the callback stack
- callbackStack[jsonpCallback] = callbackStack[jsonpCallback] || [];
- callbackStack[jsonpCallback].push(req);
- });
-
- // loop through each item in the callback stack and make the request
- // for the AppManifest. When the request is complete, pop the next
- // request off the stack and make the request.
- jQuery.each(callbackStack, function(i, requests) {
-
- var manifestRequest = function(jsonpCallback, req) {
- if (!req) {
- return;
- }
-
- // setup defaults and callbacks
- var url = req.url,
- type = 'GET',
- dataType = 'jsonp',
- completeFunc = function() {
- manifestRequest(i, requests.pop());
- },
- errorFunc = function() {
- jQuery.each(req.apps, function(idx, item) {
- item.name = item.name || item.appId;
- F2.log('Removed failed ' + item.name + ' app', item);
- F2.removeApp(item.instanceId);
- });
- },
- successFunc = function(appManifest) {
- _loadApps(req.apps, appManifest);
- };
-
- // optionally fire xhr overrides
- if (_config.xhr && _config.xhr.dataType) {
- dataType = _config.xhr.dataType(req.url, req.apps);
- if (typeof dataType !== 'string') {
- throw ('ContainerConfig.xhr.dataType should return a string');
- }
- }
- if (_config.xhr && _config.xhr.type) {
- type = _config.xhr.type(req.url, req.apps);
- if (typeof type !== 'string') {
- throw ('ContainerConfig.xhr.type should return a string');
- }
- }
- if (_config.xhr && _config.xhr.url) {
- url = _config.xhr.url(req.url, req.apps);
- if (typeof url !== 'string') {
- throw ('ContainerConfig.xhr.url should return a string');
- }
- }
-
- // setup the default request function if an override is not present
- var requestFunc = _config.xhr;
- if (typeof requestFunc !== 'function') {
- requestFunc = function(url, appConfigs, successCallback, errorCallback, completeCallback) {
- jQuery.ajax({
- url: url,
- type: type,
- data: {
- params: F2.stringify(req.apps, F2.appConfigReplacer)
- },
- jsonp: false, // do not put 'callback=' in the query string
- jsonpCallback: jsonpCallback, // Unique function name
- dataType: dataType,
- success: successCallback,
- error: function(jqxhr, settings, exception) {
- F2.log('Failed to load app(s)', exception.toString(), req.apps);
- errorCallback();
- },
- complete: completeCallback
- });
- };
- }
-
- requestFunc(url, req.apps, successFunc, errorFunc, completeFunc);
- };
-
- manifestRequest(i, requests.pop());
- });
- }
- },
- /**
- * Removes all apps from the container
- * @method removeAllApps
- */
- removeAllApps: function() {
-
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.removeAllApps()');
- return;
- }
-
- jQuery.each(_apps, function(i, a) {
- F2.removeApp(a.config.instanceId);
- });
- },
- /**
- * Removes an app from the container
- * @method removeApp
- * @param {string} instanceId The app's instanceId
- */
- removeApp: function(instanceId) {
-
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.removeApp()');
- return;
- }
-
- if (_apps[instanceId]) {
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
- _apps[instanceId] // the app instance
- );
-
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_DESTROY,
- _apps[instanceId] // the app instance
- );
-
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_DESTROY_AFTER,
- _apps[instanceId] // the app instance
- );
-
- delete _apps[instanceId];
- }
- }
- };
+ var _apps = {};
+ var _config = false;
+ var _usesAppHandlers = false;
+ var _appHandlerToken = F2.AppHandlers.__f2GetToken();
+ var _loadedScripts = {};
+ var _loadedStyles = {};
+ var _loadingScripts = {};
+
+ /**
+ Appends the app's html to the DOM.
+ @method _afterAppRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} html The string of html
+ @return {Element} The DOM Element that contains the app
+ */
+ function _afterAppRender(appConfig, html) {
+ var handler = _config.afterAppRender || function(_appConfig, _html) {
+ return jQuery(_html).appendTo('body');
+ };
+ var $appContainer = handler(appConfig, html);
+
+ if (_config.afterAppRender && !$appContainer) {
+ F2.log('F2.ContainerConfig.afterAppRender() must return the DOM Element that contains the app');
+ return;
+ }
+
+ jQuery($appContainer).addClass(F2.Constants.Css.APP);
+
+ return $appContainer.get(0);
+ }
+
+ /**
+ Renders the html for an app.
+ @method _appRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0.
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} html The string of html
+ @returns {string} HTML for the app
+ */
+ function _appRender(appConfig, html) {
+ // Apply APP_CONTAINER class and AppID
+ html = _outerHtml(jQuery(html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId));
+
+ // Optionally apply wrapper html
+ if (_config.appRender) {
+ html = _config.appRender(appConfig, html);
+ }
+
+ return _outerHtml(html);
+ }
+
+ /**
+ Rendering hook to allow containers to render some html prior to an app
+ loading.
+ @method _beforeAppRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0.
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @return {Element} The DOM Element surrounding the app
+ */
+ function _beforeAppRender(appConfig) {
+ var handler = _config.beforeAppRender || jQuery.noop;
+ return handler(appConfig);
+ }
+
+ /**
+ Handler to inform the container that a script failed to load.
+ @method _onScriptLoadFailure
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0.
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} scriptInfo The path of the script that failed to load or
+ the exception info for the inline script that failed to execute.
+ */
+ function _appScriptLoadFailed(appConfig, scriptInfo) {
+ if (_config.appScriptLoadFailed) {
+ _config.appScriptLoadFailed(appConfig, scriptInfo);
+ }
+ }
+
+ /**
+ Adds properties to the AppConfig object.
+ @method _createAppConfig
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @return {F2.AppConfig} The new F2.AppConfig object, prepopulated with
+ necessary properties.
+ */
+ function _createAppConfig(appConfig) {
+ // Make a copy of the app config to ensure that the original is not modified
+ appConfig = jQuery.extend(true, {}, appConfig);
+
+ // Create the instanceId for the app
+ appConfig.instanceId = appConfig.instanceId || F2.guid();
+
+ // Default the views if not provided
+ appConfig.views = appConfig.views || [];
+ if (!F2.inArray(F2.Constants.Views.HOME, appConfig.views)) {
+ appConfig.views.push(F2.Constants.Views.HOME);
+ }
+
+ // Pass container-defined locale to each app
+ if (F2.ContainerConfig.locale) {
+ appConfig.containerLocale = F2.ContainerConfig.locale;
+ }
+
+ return appConfig;
+ }
+
+ /**
+ Generate an AppConfig from the element's attributes.
+ @method _getAppConfigFromElement
+ @private
+ @param {Element} node The DOM node from which to generate the F2.AppConfig
+ object
+ @return {F2.AppConfig} The new F2.AppConfig object
+ */
+ function _getAppConfigFromElement(node) {
+ var appConfig;
+
+ if (node) {
+ var appId = node.getAttribute('data-f2-appid');
+ var manifestUrl = node.getAttribute('data-f2-manifesturl');
+
+ if (appId && manifestUrl) {
+ appConfig = {
+ appId: appId,
+ enableBatchRequests: node.hasAttribute('data-f2-enablebatchrequests'),
+ isSecure: node.hasAttribute('data-f2-issecure'),
+ manifestUrl: manifestUrl,
+ root: node
+ };
+
+ // See if the user passed in a block of serialized json
+ var contextJson = node.getAttribute('data-f2-context');
+
+ if (contextJson) {
+ try {
+ appConfig.context = F2.parse(contextJson);
+ } catch (e) {
+ console.warn('F2: "data-f2-context" of node is not valid JSON', '"' + e + '"');
+ }
+ }
+ }
+ }
+
+ return appConfig;
+ }
+
+ /**
+ Returns true if the DOM node has children that are not text nodes
+ @method _hasNonTextChildNodes
+ @private
+ @param {Element} node The DOM node
+ @return {bool} True if there are non-text children
+ */
+ function _hasNonTextChildNodes(node) {
+ var hasNodes = false;
+
+ if (node.hasChildNodes()) {
+ for (var i = 0, len = node.childNodes.length; i < len; i++) {
+ if (node.childNodes[i].nodeType === 1) {
+ hasNodes = true;
+ break;
+ }
+ }
+ }
+
+ return hasNodes;
+ }
+
+ /**
+ Adds properties to the ContainerConfig object to take advantage of defaults.
+ @method _hydrateContainerConfig
+ @private
+ @param {F2.ContainerConfig} containerConfig The F2.ContainerConfig object
+ */
+ function _hydrateContainerConfig(containerConfig) {
+ if (!containerConfig.scriptErrorTimeout) {
+ containerConfig.scriptErrorTimeout = F2.ContainerConfig.scriptErrorTimeout;
+ }
+
+ if (containerConfig.debugMode !== true) {
+ containerConfig.debugMode = F2.ContainerConfig.debugMode;
+ }
+
+ if (containerConfig.locale && typeof containerConfig.locale === 'string') {
+ F2.ContainerConfig.locale = containerConfig.locale;
+ }
+ }
+
+ /**
+ Attach app events.
+ @method _initAppEvents
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ */
+ function _initAppEvents(appConfig) {
+ var elementFilter = '.' + F2.Constants.Css.APP_VIEW_TRIGGER + '[' + F2.Constants.Views.DATA_ATTRIBUTE + ']';
+
+ jQuery(appConfig.root).on('click', elementFilter, function(e) {
+ e.preventDefault();
+
+ var view = jQuery(this).attr(F2.Constants.Views.DATA_ATTRIBUTE).toLowerCase();
+
+ // Handle the special REMOVE view
+ if (view === F2.Constants.Views.REMOVE) {
+ F2.removeApp(appConfig.instanceId);
+ } else {
+ appConfig.ui.Views.change(view);
+ }
+ });
+ }
+
+ /**
+ Attach container Events
+ @method _initContainerEvents
+ @private
+ */
+ function _initContainerEvents() {
+ function resizeHandler() {
+ F2.Events.emit(F2.Constants.Events.CONTAINER_WIDTH_CHANGE);
+ }
+
+ var resizeTimeout;
+
+ jQuery(window).on('resize', function() {
+ clearTimeout(resizeTimeout);
+ resizeTimeout = setTimeout(resizeHandler, 100);
+ });
+
+ // Listen for container-broadcasted locale changes
+ F2.Events.on(F2.Constants.Events.CONTAINER_LOCALE_CHANGE, function(data) {
+ if (data.locale && typeof data.locale === 'string') {
+ F2.ContainerConfig.locale = data.locale;
+ }
+ });
+ }
+
+ /**
+ Checks if an element is a placeholder element.
+ @method _isPlaceholderElement
+ @private
+ @param {Element} node The DOM element to check
+ @return {bool} True if the element is a placeholder
+ */
+ function _isPlaceholderElement(node) {
+ return (
+ F2.isNativeDOMNode(node) &&
+ !_hasNonTextChildNodes(node) &&
+ !!node.getAttribute('data-f2-appid') &&
+ !!node.getAttribute('data-f2-manifesturl')
+ );
+ }
+
+ /**
+ Has the container been init?
+ @method _isInit
+ @private
+ @return {bool} True if the container has been init
+ */
+ function _isInit() {
+ return !!_config;
+ }
+
+ /**
+ Instantiates app from its appConfig and stores that in a private collection.
+ @method _createAppInstance
+ @private
+ @param {object} appConfig An {{#crossLink "F2.AppConfig"}}{{/crossLink}}
+ @param {F2.AppManifest.AppContent} appContent The F2.AppManifest.AppContent
+ object.
+ */
+ function _createAppInstance(appConfig, appContent) {
+ appConfig.ui = new F2.UI(appConfig);
+
+ // instantiate F2.App
+ if (F2.Apps[appConfig.appId] !== undefined) {
+ if (typeof F2.Apps[appConfig.appId] === 'function') {
+ // IE
+ setTimeout(function() {
+ _apps[appConfig.instanceId].app = new F2.Apps[appConfig.appId](appConfig, appContent, appConfig.root);
+
+ if (_apps[appConfig.instanceId].app.init !== undefined) {
+ _apps[appConfig.instanceId].app.init();
+ }
+ }, 0);
+ } else {
+ F2.log('app initialization class is defined but not a function. (' + appConfig.appId + ')');
+ }
+ }
+ }
+
+ /**
+ Loads the app's html/css/javascript.
+ @method loadApp
+ @private
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects.
+ @param {F2.AppManifest} [appManifest] The AppManifest object
+ */
+ function _loadApps(appConfigs, appManifest) {
+ appConfigs = [].concat(appConfigs);
+
+ // Check for secure app
+ if (appConfigs.length === 1 && appConfigs[0].isSecure && !_config.isSecureAppPage) {
+ _loadSecureApp(appConfigs[0], appManifest);
+ return;
+ }
+
+ // Check that the number of apps in manifest matches the number requested
+ if (appConfigs.length !== appManifest.apps.length) {
+ F2.log('The number of apps defined in the AppManifest do not match the number requested.', appManifest);
+ return;
+ }
+
+ function _loadStyles(styles, cb) {
+ if (_config.loadStyles) {
+ return _config.loadStyles(styles, cb);
+ }
+
+ // Load styles, see #101
+ var stylesFragment;
+ var useCreateStyleSheet = !!document.createStyleSheet;
+
+ jQuery.each(styles, function(i, e) {
+ var resourceUrl = e;
+ var resourceKey = e.toLowerCase();
+
+ if (_loadedStyles[resourceKey]) {
+ return;
+ }
+
+ if (useCreateStyleSheet) {
+ document.createStyleSheet(resourceUrl);
+ } else {
+ stylesFragment = stylesFragment || [];
+ stylesFragment.push('');
+ }
+
+ _loadedStyles[resourceKey] = true;
+ });
+
+ if (stylesFragment) {
+ jQuery('head').append(stylesFragment.join(''));
+ }
+
+ cb();
+ }
+
+ function _loadScripts(scripts, cb) {
+ if (_config.loadScripts) {
+ return _config.loadScripts(scripts, cb);
+ }
+
+ if (!scripts.length) {
+ return cb();
+ }
+
+ var doc = window.document;
+ var scriptCount = scripts.length;
+ var scriptsLoaded = 0;
+ // http://caniuse.com/#feat=script-async
+ var head = doc && (doc.head || doc.getElementsByTagName('head')[0]);
+ // For IE, put scripts before any elements, but after any
+ var insertBeforeEl = head && head.getElementsByTagName('base')[0] || null;
+ // Check for IE10+ so that we don't rely on onreadystatechange, readyStates for IE6-9
+ var readyStates = (window.addEventListener) ? {} : {
+ 'loaded': true,
+ 'complete': true
+ };
+
+ // Log and emit event for the failed (400,500) scripts
+ function _error(e) {
+ setTimeout(function() {
+ var evtData = {
+ src: e.target.src,
+ appId: appConfigs[0].appId
+ };
+
+ // Send error to console
+ F2.log('Script defined in \'' + evtData.appId + '\' failed to load \'' + evtData.src + '\'');
+
+ // Emit events
+ F2.Events.emit('RESOURCE_FAILED_TO_LOAD', evtData);
+
+ if (!_usesAppHandlers) {
+ _appScriptLoadFailed(appConfigs[0], evtData.src);
+ } else {
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
+ appConfigs[0],
+ evtData.src
+ );
+ }
+ }, _config.scriptErrorTimeout); // Defaults to 7000
+ }
+
+ function _checkComplete() {
+ // Are we done loading all scripts for this app?
+ if (++scriptsLoaded === scriptCount) {
+ // success
+ cb();
+ }
+ }
+
+ function _emptyWaitlist(resourceKey, errorEvt) {
+ var waiting;
+ var waitlist = _loadingScripts[resourceKey];
+
+ if (!waitlist) {
+ return;
+ }
+
+ for (var i = 0; i < waitlist.length; i++) {
+ waiting = waitlist [i];
+
+ if (errorEvt) {
+ waiting.error(errorEvt);
+ } else {
+ waiting.success();
+ }
+ }
+
+ _loadingScripts[resourceKey] = null;
+ }
+
+ // Load scripts and eval inlines once complete
+ jQuery.each(scripts, function(i, url) {
+ var script = doc.createElement('script');
+ var resourceUrl = url;
+ var resourceKey = resourceUrl.toLowerCase();
+
+ // Already finished loading, trigger callback
+ if (_loadedScripts[resourceKey]) {
+ return _checkComplete();
+ }
+
+ // This script is actively loading, add this app to the wait list
+ if (_loadingScripts[resourceKey]) {
+ _loadingScripts[resourceKey].push({
+ success: _checkComplete,
+ error: _error
+ });
+
+ return;
+ }
+
+ // Create the waitlist
+ _loadingScripts[resourceKey] = [];
+
+ // If in debugMode, add cache buster to each script URL
+ if (_config.debugMode) {
+ resourceUrl += '?cachebuster=' + new Date().getTime();
+ }
+
+ // Scripts are loaded asynchronously and executed in order
+ // in supported browsers: http://caniuse.com/#feat=script-async
+ script.async = false;
+ script.type = 'text/javascript';
+ script.charset = 'utf-8';
+
+ script.onerror = function(e) {
+ _error(e);
+ _emptyWaitlist(resourceKey, e);
+ };
+
+ // Use a closure for the load event so that we can dereference the original script
+ script.onload = script.onreadystatechange = function(e) {
+ e = e || window.event; // For older IE
+
+ // Detect when it's done loading
+ // ev.type == 'load' is for all browsers except IE6-9
+ // IE6-9 need to use onreadystatechange and look for
+ // el.readyState in {loaded, complete} (yes, we need both)
+ if (e.type === 'load' || readyStates[script.readyState]) {
+ // Done, cleanup
+ script.onload = script.onreadystatechange = script.onerror = '';
+ // Loaded
+ _loadedScripts[resourceKey] = true;
+ // Increment and check if scripts are done
+ _checkComplete();
+ // Empty wait list
+ _emptyWaitlist(resourceKey);
+ // Dereference script
+ script = null;
+ }
+ };
+
+ // Set the src, start loading
+ script.src = resourceUrl;
+
+ // really is the best
+ head.insertBefore(script, insertBeforeEl);
+ });
+ }
+
+ function _loadInlineScripts(inlines, cb) {
+ // Attempt to use the user provided method
+ if (_config.loadInlineScripts) {
+ _config.loadInlineScripts(inlines, cb);
+ } else {
+ for (var i = 0, len = inlines.length; i < len; i++) {
+ try {
+ eval(inlines[i]);
+ } catch ( exception ) {
+ F2.log('Error loading inline script: ' + exception + '\n\n' + inlines[i]);
+
+ // Emit events
+ F2.Events.emit('RESOURCE_FAILED_TO_LOAD', {
+ appId: appConfigs[0].appId,
+ src: inlines[i],
+ err: exception
+ });
+
+ if (!_usesAppHandlers) {
+ _appScriptLoadFailed(appConfigs[0], exception);
+ } else {
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
+ appConfigs[0],
+ exception
+ );
+ }
+ }
+ }
+ cb();
+ }
+ }
+
+ // Determine whether an element has been added to the page
+ function elementInDocument(element) {
+ if (element) {
+ while (element.parentNode) {
+ element = element.parentNode;
+
+ if (element === document) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ function _loadHtml(apps) {
+ jQuery.each(apps, function(i, a) {
+ if (_isPlaceholderElement(appConfigs[i].root)) {
+ jQuery(appConfigs[i].root)
+ .addClass(F2.Constants.Css.APP)
+ .append(jQuery(a.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfigs[i].appId));
+ } else if (!_usesAppHandlers) {
+ // Load html and save the root node
+ appConfigs[i].root = _afterAppRender(appConfigs[i], _appRender(appConfigs[i], a.html));
+ } else {
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_RENDER,
+ appConfigs[i], // the app config
+ _outerHtml(jQuery(a.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfigs[i].appId))
+ );
+
+ var appId = appConfigs[i].appId;
+ var root = appConfigs[i].root;
+
+ if (!root) {
+ throw new Error('Root for ' + appId + ' must be a native DOM element and cannot be null or undefined. Check your AppHandler callbacks to ensure you have set App root to a native DOM element.');
+ }
+
+ if (!elementInDocument(root)) {
+ throw new Error('App root for ' + appId + ' was not appended to the DOM. Check your AppHandler callbacks to ensure you have rendered the app root to the DOM.');
+ }
+
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_RENDER_AFTER,
+ appConfigs[i] // the app config
+ );
+
+ if (!F2.isNativeDOMNode(root)) {
+ throw new Error('App root for ' + appId + ' must be a native DOM element. Check your AppHandler callbacks to ensure you have set app root to a native DOM element.');
+ }
+ }
+
+ // init events
+ _initAppEvents(appConfigs[i]);
+ });
+ }
+
+ // Pull out the manifest data
+ var manifestScripts = appManifest.scripts || [];
+ var manifestStyles = appManifest.styles || [];
+ var manifestInlines = appManifest.inlineScripts || [];
+ var manifestApps = appManifest.apps || [];
+
+ // Finally, load the styles, html, and scripts
+ _loadStyles(manifestStyles, function() {
+ _loadHtml(manifestApps);
+ _loadScripts(manifestScripts, function() {
+ // Emit event we're done with scripts
+ if (appConfigs[0]) {
+ F2.Events.emit('APP_SCRIPTS_LOADED', {
+ appId: appConfigs[0].appId,
+ scripts: manifestScripts
+ });
+ }
+
+ _loadInlineScripts(manifestInlines, function() {
+ // Create the apps
+ jQuery.each(appConfigs, function(i, a) {
+ _createAppInstance(a, manifestApps[i]);
+ });
+ });
+ });
+ });
+ }
+
+ /**
+ Loads the app's html/css/javascript into an iframe.
+ @method loadSecureApp
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {F2.AppManifest} appManifest The app's html/css/js to be loaded into
+ the page.
+ */
+ function _loadSecureApp(appConfig, appManifest) {
+ // Make sure the container is configured for secure apps
+ if (_config.secureAppPagePath) {
+ if (_isPlaceholderElement(appConfig.root)) {
+ jQuery(appConfig.root)
+ .addClass(F2.Constants.Css.APP)
+ .append(jQuery('')
+ .addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId));
+ } else if (!_usesAppHandlers) {
+ // Create the html container for the iframe
+ appConfig.root = _afterAppRender(appConfig, _appRender(appConfig, ''));
+ } else {
+ var $root = jQuery(appConfig.root);
+
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_RENDER,
+ appConfig,
+ _outerHtml(jQuery(appManifest.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId))
+ );
+
+ if ($root.parents('body:first').length === 0) {
+ throw new Error('App was never rendered on the page. Please check your AppHandler callbacks to ensure you have rendered the app root to the DOM.');
+ }
+
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_RENDER_AFTER,
+ appConfig // the app config
+ );
+
+ if (!appConfig.root) {
+ throw new Error('App Root must be a native dom node and can not be null or undefined. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.');
+ }
+
+ if (!F2.isNativeDOMNode(appConfig.root)) {
+ throw new Error('App Root must be a native dom node. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.');
+ }
+ }
+
+ // Instantiate F2.UI
+ appConfig.ui = new F2.UI(appConfig);
+ // Init events
+ _initAppEvents(appConfig);
+ // Create RPC socket
+ F2.Rpc.register(appConfig, appManifest);
+ } else {
+ F2.log('Unable to load secure app: "secureAppPagePath" is not defined in F2.ContainerConfig.');
+ }
+ }
+
+ function _outerHtml(html) {
+ return jQuery('').append(html).html();
+ }
+
+ /**
+ Checks if the app is valid.
+ @method _validateApp
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @returns {bool} True if the app is valid
+ */
+ function _validateApp(appConfig) {
+ // Check for valid app configurations
+ if (!appConfig.appId) {
+ F2.log('"appId" missing from app object');
+ return false;
+ } else if (!appConfig.root && !appConfig.manifestUrl) {
+ F2.log('"manifestUrl" missing from app object');
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ Checks if the ContainerConfig is valid.
+ @method _validateContainerConfig
+ @private
+ @returns {bool} True if the config is valid
+ */
+ function _validateContainerConfig() {
+ if (_config) {
+ if (_config.xhr) {
+ if (!(typeof _config.xhr === 'function' || typeof _config.xhr === 'object')) {
+ throw new Error('ContainerConfig.xhr should be a function or an object');
+ }
+ if (_config.xhr.dataType && typeof _config.xhr.dataType !== 'function') {
+ throw new Error('ContainerConfig.xhr.dataType should be a function');
+ }
+ if (_config.xhr.type && typeof _config.xhr.type !== 'function') {
+ throw new Error('ContainerConfig.xhr.type should be a function');
+ }
+ if (_config.xhr.url && typeof _config.xhr.url !== 'function') {
+ throw new Error('ContainerConfig.xhr.url should be a function');
+ }
+ }
+ }
+
+ return true;
+ }
+
+ return {
+ /**
+ Gets the current list of apps in the container.
+ @method getContainerState
+ @returns {Array} An array of objects containing the appId
+ */
+ getContainerState: function() {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.getContainerState()');
+ return;
+ }
+
+ return jQuery.map(_apps, function(app) {
+ return {
+ appId: app.config.appId
+ };
+ });
+ },
+ /**
+ Gets the current locale defined by the container.
+ @method getContainerLocale
+ @returns {String} IETF-defined standard language tag
+ */
+ getContainerLocale: function() {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.getContainerLocale()');
+ return;
+ }
+
+ return F2.ContainerConfig.locale;
+ },
+ /**
+ Initializes the container. This method must be called before performing
+ any other actions in the container.
+ @method init
+ @param {F2.ContainerConfig} config The configuration object
+ */
+ init: function(config) {
+ _config = config || {};
+ _validateContainerConfig();
+ _hydrateContainerConfig(_config);
+
+ // Dictates whether we use the old logic or the new logic.
+ // TODO: Remove in v2.0
+ _usesAppHandlers = (_config.beforeAppRender || _config.appRender || _config.afterAppRender || _config.appScriptLoadFailed);
+
+ // Only establish RPC connection if the container supports the secure app page
+ if (!!_config.secureAppPagePath || _config.isSecureAppPage) {
+ F2.Rpc.init(_config.secureAppPagePath ? _config.secureAppPagePath : false);
+ }
+
+ F2.UI.init(_config);
+
+ if (!_config.isSecureAppPage) {
+ _initContainerEvents();
+ }
+ },
+ /**
+ Has the container been init?
+ @method isInit
+ @return {bool} True if the container has been init
+ */
+ isInit: _isInit,
+ /**
+ Automatically load apps that are already defined in the DOM. Elements will
+ be rendered into the location of the placeholder DOM element. Any
+ AppHandlers that are defined will be bypassed.
+ @method loadPlaceholders
+ @param {Element} parentNode The element to search for placeholder apps
+ */
+ loadPlaceholders: function(parentNode) {
+ if (parentNode && !F2.isNativeDOMNode(parentNode)) {
+ throw new Error('"parentNode" must be null or a DOM node');
+ }
+
+ var elements = [];
+ var appConfigs = [];
+
+ /**
+ If the passed in element has a data-f2-appid attribute add it to the
+ list of elements but to not search within that element for other
+ placeholders
+ */
+ if (parentNode) {
+ if (parentNode.hasAttribute('data-f2-appid')) {
+ elements.push(parentNode);
+ }
+ } else if (document.querySelectorAll) {
+ elements = elements.concat(document.querySelectorAll('[data-f2-appid]'));
+ }
+
+ for (var i = 0, len = elements.length; i < len; i++) {
+ var appConfig = _getAppConfigFromElement(elements[i]);
+ appConfigs.push(appConfig);
+ }
+
+ if (appConfigs.length) {
+ F2.registerApps(appConfigs);
+ }
+ },
+ /**
+ Begins the loading process for all apps and/or initialization process for
+ pre-loaded apps. The app will be passed the
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} object which will contain the
+ app's unique instanceId within the container. If the
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}}.root property is populated
+ the app is considered to be a pre-loaded app and will be handled
+ accordingly. Optionally, the
+ {{#crossLink "F2.AppManifest"}}{{/crossLink}} can be passed in and those
+ assets will be used instead of making a request.
+ @method registerApps
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
+ @param {Array} [appManifests] An array of
+ {{#crossLink "F2.AppManifest"}}{{/crossLink}}
+ objects. This array must be the same length as the apps array that is
+ passed in. This can be useful if apps are loaded on the server-side and
+ passed down to the client.
+ @example
+ // Traditional App requests.
+ var configs = [{
+ appId: 'com_externaldomain_example_app',
+ context: {},
+ manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
+ }, {
+ appId: 'com_externaldomain_example_app',
+ context: {},
+ manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
+ }, {
+ appId: 'com_externaldomain_example_app2',
+ context: {},
+ manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
+ }];
+
+ F2.init();
+ F2.registerApps(configs);
+ @example
+ // Pre-loaded and tradition apps mixed.
+ // You can preload the same app multiple times as long as you have a unique root for each
+ var configs = [{
+ appId: 'com_mydomain_example_app',
+ context: {},
+ root: 'div#example-app-1',
+ manifestUrl: ''
+ }, {
+ appId: 'com_mydomain_example_app',
+ context: {},
+ root: 'div#example-app-2',
+ manifestUrl: ''
+ }, {
+ appId: 'com_externaldomain_example_app',
+ context: {},
+ manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
+ }];
+
+ F2.init();
+ F2.registerApps(configs);
+ @example
+ // Apps with predefined manifests.
+ var configs = [
+ { appId: 'com_externaldomain_example_app', context: {} },
+ { appId: 'com_externaldomain_example_app', context: {} },
+ { appId: 'com_externaldomain_example_app2', context: {} }
+ ];
+
+ // Pre requested manifest responses
+ var manifests = [{
+ apps: ['
'],
+ inlineScripts: [],
+ scripts: ['http://www.domain.com/js/App2Class.js'],
+ styles: ['http://www.domain.com/css/App2Styles.css']
+ }];
+
+ F2.init();
+ F2.registerApps(configs, manifests);
+ */
+ registerApps: function(appConfigs, appManifests) {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.registerApps()');
+ return;
+ } else if (!appConfigs) {
+ F2.log('At least one AppConfig must be passed when calling F2.registerApps()');
+ return;
+ }
+
+ var appStack = [];
+ var batches = {};
+ var callbackStack = {};
+ var haveManifests = false;
+ appConfigs = [].concat(appConfigs);
+ appManifests = [].concat(appManifests || []);
+ haveManifests = !!appManifests.length;
+
+ // AppConfigs must have a length
+ if (!appConfigs.length) {
+ F2.log('At least one AppConfig must be passed when calling F2.registerApps()');
+ return;
+ } else if (appConfigs.length && haveManifests && appConfigs.length !== appManifests.length) {
+ // Ensure that the array of apps and manifests are equal
+ F2.log('The length of "apps" does not equal the length of "appManifests"');
+ return;
+ }
+
+ // Validate apps, assign instanceId, then determine which apps can be batched together
+ jQuery.each(appConfigs, function(i, a) {
+ // Add properties and methods
+ a = _createAppConfig(a);
+
+ // Set to itself for preloaded apps
+ a.root = a.root || null;
+
+ // Validate the app after setting the root because preloaded apps do not require manifest url
+ if (!_validateApp(a)) {
+ return;
+ }
+
+ _apps[a.instanceId] = {
+ config: a
+ };
+
+ // If the root property is defined then this app is considered to be preloaded and we will run it through that logic.
+ if (a.root && !_isPlaceholderElement(a.root)) {
+ if ((!a.root && typeof a.root !== 'string') && !F2.isNativeDOMNode(a.root)) {
+ F2.log('AppConfig invalid for pre-load, not a valid string and not dom node');
+ F2.log('AppConfig instance:', a);
+ throw new Error('Preloaded appConfig.root property must be a native dom node or a string representing a sizzle selector. Please check your inputs and try again.');
+ } else if (jQuery(a.root).length !== 1) {
+ F2.log('AppConfig invalid for pre-load, root not unique');
+ F2.log('AppConfig instance:', a);
+ F2.log('Number of dom node instances:', jQuery(a.root).length);
+ throw new Error('Preloaded appConfig.root property must map to a unique dom node. Please check your inputs and try again.');
+ }
+
+ // Instantiate F2.App
+ _createAppInstance(a);
+ _initAppEvents(a);
+
+ return;
+ }
+
+ if (!_isPlaceholderElement(a.root)) {
+ if (!_usesAppHandlers) {
+ a.root = _beforeAppRender(a);
+ } else {
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_CREATE_ROOT,
+ a
+ );
+
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_RENDER_BEFORE,
+ a
+ );
+ }
+ }
+
+ // Load the page if we have the manifest
+ if (haveManifests) {
+ _loadApps(a, appManifests[i]);
+ } else {
+ // Check if this app can be batched
+ if (a.enableBatchRequests && !a.isSecure) {
+ batches[a.manifestUrl.toLowerCase()] = batches[a.manifestUrl.toLowerCase()] || [];
+ batches[a.manifestUrl.toLowerCase()].push(a);
+ } else {
+ appStack.push({
+ apps: [a],
+ url: a.manifestUrl
+ });
+ }
+ }
+ });
+
+ if (!haveManifests) {
+ // Add the batches to the appStack
+ jQuery.each(batches, function(i, b) {
+ appStack.push({
+ url: i,
+ apps: b
+ });
+ });
+
+ /*
+ If an app is being loaded more than once on the page, there is the
+ potential that the jsonp callback will be clobbered if the request
+ for the AppManifest for the app comes back at the same time as
+ another request for the same app. We'll create a callbackStack
+ that will ensure that requests for the same app are loaded in order
+ rather than at the same time
+ */
+ jQuery.each(appStack, function(i, req) {
+ // Define the callback function based on the first app's App ID
+ var jsonpCallback = F2.Constants.JSONP_CALLBACK + req.apps[0].appId;
+
+ // Push the request onto the callback stack
+ callbackStack[jsonpCallback] = callbackStack[jsonpCallback] || [];
+ callbackStack[jsonpCallback].push(req);
+ });
+
+ /*
+ Loop through each item in the callback stack and make the request
+ for the AppManifest. When the request is complete, pop the next
+ request off the stack and make the request.
+ */
+ jQuery.each(callbackStack, function(i, requests) {
+ function manifestRequest(jsonpCallback, req) {
+ if (!req) {
+ return;
+ }
+
+ // Setup defaults and callbacks
+ var type = 'GET';
+ var dataType = 'jsonp';
+
+ function completeFunc() {
+ manifestRequest(i, requests.pop());
+ }
+
+ function errorFunc() {
+ jQuery.each(req.apps, function(idx, item) {
+ item.name = item.name || item.appId;
+ F2.log('Removed failed ' + item.name + ' app', item);
+ F2.removeApp(item.instanceId);
+ });
+ }
+
+ function successFunc(appManifest) {
+ _loadApps(req.apps, appManifest);
+ }
+
+ // Optionally fire xhr overrides
+ if (_config.xhr) {
+ if (_config.xhr.dataType) {
+ dataType = _config.xhr.dataType(req.url, req.apps);
+
+ if (typeof dataType !== 'string') {
+ throw new Error('ContainerConfig.xhr.dataType should return a string');
+ }
+ }
+
+ if (_config.xhr.type) {
+ type = _config.xhr.type(req.url, req.apps);
+
+ if (typeof type !== 'string') {
+ throw new Error('ContainerConfig.xhr.type should return a string');
+ }
+ }
+
+ if (_config.xhr.url) {
+ req.url = _config.xhr.url(req.url, req.apps);
+
+ if (typeof req.url !== 'string') {
+ throw new Error('ContainerConfig.xhr.url should return a string');
+ }
+ }
+ }
+
+ // Setup the default request function if an override is not present
+ var requestFunc = _config.xhr;
+
+ if (typeof requestFunc !== 'function') {
+ requestFunc = function(url, apps, successCallback, errorCallback, completeCallback) {
+ jQuery.ajax({
+ url: url,
+ type: type,
+ data: {
+ params: F2.stringify(req.apps, F2.appConfigReplacer)
+ },
+ jsonp: false, // do not put 'callback=' in the query string
+ jsonpCallback: jsonpCallback, // Unique function name
+ dataType: dataType,
+ success: successCallback,
+ error: function(jqxhr, settings, exception) {
+ F2.log('Failed to load app(s)', exception.toString(), req.apps);
+ errorCallback();
+ },
+ complete: completeCallback
+ });
+ };
+ }
+
+ requestFunc(req.url, req.apps, successFunc, errorFunc, completeFunc);
+ }
+
+ manifestRequest(i, requests.pop());
+ });
+ }
+ },
+ /**
+ Removes all apps from the container
+ @method removeAllApps
+ */
+ removeAllApps: function() {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.removeAllApps()');
+ return;
+ }
+
+ jQuery.each(_apps, function(i, a) {
+ F2.removeApp(a.config.instanceId);
+ });
+ },
+ /**
+ Removes an app from the container.
+ @method removeApp
+ @param {string} instanceId The app's instanceId
+ */
+ removeApp: function(instanceId) {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.removeApp()');
+ return;
+ }
+
+ if (_apps[instanceId]) {
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
+ _apps[instanceId]
+ );
+
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_DESTROY,
+ _apps[instanceId]
+ );
+
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_DESTROY_AFTER,
+ _apps[instanceId]
+ );
+
+ delete _apps[instanceId];
+ }
+ }
+ };
})());
From cada63b0884a2562cd8ef2b2d771f152b8572eb6 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Thu, 8 Jan 2015 15:37:26 -0700
Subject: [PATCH 19/61] Fixing styling and lint errors for 'events'
---
src/lib/events.js | 47 ++++++++++++++++++++++++++---------------------
1 file changed, 26 insertions(+), 21 deletions(-)
diff --git a/src/lib/events.js b/src/lib/events.js
index 68ec5716..3a4cc860 100644
--- a/src/lib/events.js
+++ b/src/lib/events.js
@@ -19,6 +19,7 @@ F2.extend('Events', (function() {
@private
@param {string} event The event name
@param {object} [arg]* The arguments to be passed
+ @returns {object} EventEmitter2 instance
*/
_socketEmit: function() {
return EventEmitter2.prototype.emit.apply(_events, [].slice.call(arguments));
@@ -29,6 +30,7 @@ F2.extend('Events', (function() {
@method emit
@param {string} event The event name
@param {object} [arg]* The arguments to be passed
+ @returns {object} EventEmitter2 instance
*/
emit: function() {
F2.Rpc.broadcast(F2.Constants.Sockets.EVENT, [].slice.call(arguments));
@@ -36,48 +38,51 @@ F2.extend('Events', (function() {
},
/**
Adds a listener that will execute n times for the event before being
- removed. The listener is invoked only the first time the event is
- fired, after which it is removed.
+ removed. The listener is invoked only the first time the event is fired,
+ after which it is removed.
@method many
@param {string} event The event name
@param {int} timesToListen The number of times to execute the event
before being removed
@param {function} listener The function to be fired when the event is
emitted
+ @returns {object} EventEmitter2 instance
*/
many: function(event, timesToListen, listener) {
return _events.many(event, timesToListen, listener);
},
/**
- * Remove a listener for the specified event.
- * @method off
- * @param {string} event The event name
- * @param {function} listener The function that will be removed
- */
+ Remove a listener for the specified event.
+ @method off
+ @param {string} event The event name
+ @param {function} listener The function that will be removed
+ @returns {object} EventEmitter2 instance
+ */
off: function(event, listener) {
return _events.off(event, listener);
},
/**
- * Adds a listener for the specified event
- * @method on
- * @param {string} event The event name
- * @param {function} listener The function to be fired when the event is
- * emitted
- */
+ Adds a listener for the specified event
+ @method on
+ @param {string} event The event name
+ @param {function} listener The function to be fired when the event is
+ emitted
+ @returns {object} EventEmitter2 instance
+ */
on: function(event, listener) {
return _events.on(event, listener);
},
/**
- * Adds a one time listener for the event. The listener is invoked only
- * the first time the event is fired, after which it is removed.
- * @method once
- * @param {string} event The event name
- * @param {function} listener The function to be fired when the event is
- * emitted
- */
+ Adds a one time listener for the event. The listener is invoked only
+ the first time the event is fired, after which it is removed.
+ @method once
+ @param {string} event The event name
+ @param {function} listener The function to be fired when the event is
+ emitted
+ @returns {object} EventEmitter2 instance
+ */
once: function(event, listener) {
return _events.once(event, listener);
}
};
})());
-
From 79fa138e7bd32f82982e33eaade73b70728e38e0 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Thu, 8 Jan 2015 15:37:48 -0700
Subject: [PATCH 20/61] Fixing styling and lint errors for 'rpc'
---
src/lib/rpc.js | 636 ++++++++++++++++++++++++-------------------------
1 file changed, 312 insertions(+), 324 deletions(-)
diff --git a/src/lib/rpc.js b/src/lib/rpc.js
index d7210387..73899161 100644
--- a/src/lib/rpc.js
+++ b/src/lib/rpc.js
@@ -1,325 +1,313 @@
/**
- * Handles socket communication between the container and secure apps
- * @class F2.Rpc
- */
-F2.extend('Rpc', (function(){
- var _callbacks = {};
- var _secureAppPagePath = '';
- var _apps = {};
- var _rEvents = new RegExp('^' + F2.Constants.Sockets.EVENT);
- var _rRpc = new RegExp('^' + F2.Constants.Sockets.RPC);
- var _rRpcCallback = new RegExp('^' + F2.Constants.Sockets.RPC_CALLBACK);
- var _rSocketLoad = new RegExp('^' + F2.Constants.Sockets.LOAD);
- var _rUiCall = new RegExp('^' + F2.Constants.Sockets.UI_RPC);
-
- /**
- * Creates a socket connection from the app to the container using
- * easyXDM.
- * @method _createAppToContainerSocket
- * @private
- */
- var _createAppToContainerSocket = function() {
-
- var appConfig; // socket closure
- var isLoaded = false;
- // its possible for messages to be received before the socket load event has
- // happened. We'll save off these messages and replay them once the socket
- // is ready
- var messagePlayback = [];
-
- var socket = new easyXDM.Socket({
- onMessage: function(message, origin){
-
- // handle Socket Load
- if (!isLoaded && _rSocketLoad.test(message)) {
- message = message.replace(_rSocketLoad, '');
- var appParts = F2.parse(message);
-
- // make sure we have the AppConfig and AppManifest
- if (appParts.length == 2) {
- appConfig = appParts[0];
-
- // save socket
- _apps[appConfig.instanceId] = {
- config:appConfig,
- socket:socket
- };
-
- // register app
- F2.registerApps([appConfig], [appParts[1]]);
-
- // socket message playback
- jQuery.each(messagePlayback, function(i, e) {
- _onMessage(appConfig, message, origin);
- });
-
- isLoaded = true;
- }
- } else if (isLoaded) {
- // pass everyting else to _onMessage
- _onMessage(appConfig, message, origin);
- } else {
- //F2.log('socket not ready, queuing message', message);
- messagePlayback.push(message);
- }
- }
- });
- };
-
- /**
- * Creates a socket connection from the container to the app using
- * easyXDM.
- * @method _createContainerToAppSocket
- * @private
- * @param {appConfig} appConfig The F2.AppConfig object
- * @param {F2.AppManifest} appManifest The F2.AppManifest object
- */
- var _createContainerToAppSocket = function(appConfig, appManifest) {
-
- var container = jQuery(appConfig.root);
-
- if (!container.is('.' + F2.Constants.Css.APP_CONTAINER)) {
- container.find('.' + F2.Constants.Css.APP_CONTAINER);
- }
-
- if (!container.length) {
- F2.log('Unable to locate app in order to establish secure connection.');
- return;
- }
-
- var iframeProps = {
- scrolling:'no',
- style:{
- width:'100%'
- }
- };
-
- if (appConfig.height) {
- iframeProps.style.height = appConfig.height + 'px';
- }
-
- var socket = new easyXDM.Socket({
- remote: _secureAppPagePath,
- container: container.get(0),
- props:iframeProps,
- onMessage: function(message, origin) {
- // pass everything to _onMessage
- _onMessage(appConfig, message, origin);
- },
- onReady: function() {
- socket.postMessage(F2.Constants.Sockets.LOAD + F2.stringify([appConfig, appManifest], F2.appConfigReplacer));
- }
- });
-
- return socket;
- };
-
- /**
- * @method _createRpcCallback
- * @private
- * @param {string} instanceId The app's Instance ID
- * @param {function} callbackId The callback ID
- * @return {function} A function to make the RPC call
- */
- var _createRpcCallback = function(instanceId, callbackId) {
- return function() {
- F2.Rpc.call(
- instanceId,
- F2.Constants.Sockets.RPC_CALLBACK,
- callbackId,
- [].slice.call(arguments).slice(2)
- );
- };
- };
-
- /**
- * Handles messages that come across the sockets
- * @method _onMessage
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} message The socket message
- * @param {string} origin The originator
- */
- var _onMessage = function(appConfig, message, origin) {
-
- var obj, func;
-
- function parseFunction(parent, functionName) {
- var path = String(functionName).split('.');
- for (var i = 0; i < path.length; i++) {
- if (parent[path[i]] === undefined) {
- parent = undefined;
- break;
- }
- parent = parent[path[i]];
- }
- return parent;
- }
-
- function parseMessage(regEx, message, instanceId) {
- var o = F2.parse(message.replace(regEx, ''));
-
- // if obj.callbacks
- // for each callback
- // for each params
- // if callback matches param
- // replace param with _createRpcCallback(app.instanceId, callback)
- if (o.params && o.params.length && o.callbacks && o.callbacks.length) {
- jQuery.each(o.callbacks, function(i, c) {
- jQuery.each(o.params, function(i, p) {
- if (c == p) {
- o.params[i] = _createRpcCallback(instanceId, c);
- }
- });
- });
- }
-
- return o;
- }
-
- // handle UI Call
- if (_rUiCall.test(message)) {
- obj = parseMessage(_rUiCall, message, appConfig.instanceId);
- func = parseFunction(appConfig.ui, obj.functionName);
- // if we found the function, call it
- if (func !== undefined) {
- func.apply(appConfig.ui, obj.params);
- } else {
- F2.log('Unable to locate UI RPC function: ' + obj.functionName);
- }
-
- // handle RPC
- } else if (_rRpc.test(message)) {
- obj = parseMessage(_rRpc, message, appConfig.instanceId);
- func = parseFunction(window, obj.functionName);
- if (func !== undefined) {
- func.apply(func, obj.params);
- } else {
- F2.log('Unable to locate RPC function: ' + obj.functionName);
- }
-
- // handle RPC Callback
- } else if (_rRpcCallback.test(message)) {
- obj = parseMessage(_rRpcCallback, message, appConfig.instanceId);
- if (_callbacks[obj.functionName] !== undefined) {
- _callbacks[obj.functionName].apply(_callbacks[obj.functionName], obj.params);
- delete _callbacks[obj.functionName];
- }
-
- // handle Events
- } else if (_rEvents.test(message)) {
- obj = parseMessage(_rEvents, message, appConfig.instanceId);
- F2.Events._socketEmit.apply(F2.Events, obj);
- }
- };
-
- /**
- * Registers a callback function
- * @method _registerCallback
- * @private
- * @param {function} callback The callback function
- * @return {string} The callback ID
- */
- var _registerCallback = function(callback) {
- var callbackId = F2.guid();
- _callbacks[callbackId] = callback;
- return callbackId;
- };
-
- return {
- /**
- * Broadcast an RPC function to all sockets
- * @method broadcast
- * @param {string} messageType The message type
- * @param {Array} params The parameters to broadcast
- */
- broadcast: function(messageType, params) {
- // check valid messageType
- var message = messageType + F2.stringify(params);
- jQuery.each(_apps, function(i, a) {
- a.socket.postMessage(message);
- });
- },
- /**
- * Calls a remote function
- * @method call
- * @param {string} instanceId The app's Instance ID
- * @param {string} messageType The message type
- * @param {string} functionName The name of the remote function
- * @param {Array} params An array of parameters to pass to the remote
- * function. Any functions found within the params will be treated as a
- * callback function.
- */
- call: function(instanceId, messageType, functionName, params) {
- // loop through params and find functions and convert them to callbacks
- var callbacks = [];
- jQuery.each(params, function(i, e) {
- if (typeof e === 'function') {
- var cid = _registerCallback(e);
- params[i] = cid;
- callbacks.push(cid);
- }
- });
- // check valid messageType
- _apps[instanceId].socket.postMessage(
- messageType + F2.stringify({
- functionName:functionName,
- params:params,
- callbacks:callbacks
- })
- );
- },
-
- /**
- * Init function which tells F2.Rpc whether it is running at the container-
- * level or the app-level. This method is generally called by
- * F2.{{#crossLink "F2/init"}}{{/crossLink}}
- * @method init
- * @param {string} [secureAppPagePath] The
- * {{#crossLink "F2.ContainerConfig"}}{{/crossLink}}.secureAppPagePath
- * property
- */
- init: function(secureAppPagePath) {
- _secureAppPagePath = secureAppPagePath;
- if (!_secureAppPagePath) {
- _createAppToContainerSocket();
- }
- },
-
- /**
- * Determines whether the Instance ID is considered to be 'remote'. This is
- * determined by checking if 1) the app has an open socket and 2) whether
- * F2.Rpc is running inside of an iframe
- * @method isRemote
- * @param {string} instanceId The Instance ID
- * @return {bool} True if there is an open socket
- */
- isRemote: function(instanceId) {
- return (
- // we have an app
- _apps[instanceId] !== undefined &&
- // the app is secure
- _apps[instanceId].config.isSecure &&
- // we can't access the iframe
- jQuery(_apps[instanceId].config.root).find('iframe').length === 0
- );
- },
-
- /**
- * Creates a container-to-app or app-to-container socket for communication
- * @method register
- * @param {F2.AppConfig} [appConfig] The F2.AppConfig object
- * @param {F2.AppManifest} [appManifest] The F2.AppManifest object
- */
- register: function(appConfig, appManifest) {
- if (!!appConfig && !!appManifest) {
- _apps[appConfig.instanceId] = {
- config:appConfig,
- socket:_createContainerToAppSocket(appConfig, appManifest)
- };
- } else {
- F2.log('Unable to register socket connection. Please check container configuration.');
- }
- }
- };
-})());
\ No newline at end of file
+ Handles socket communication between the container and secure apps
+ @class F2.Rpc
+*/
+F2.extend('Rpc', (function() {
+ var _callbacks = {};
+ var _secureAppPagePath = '';
+ var _apps = {};
+ var _rEvents = new RegExp('^' + F2.Constants.Sockets.EVENT);
+ var _rRpc = new RegExp('^' + F2.Constants.Sockets.RPC);
+ var _rRpcCallback = new RegExp('^' + F2.Constants.Sockets.RPC_CALLBACK);
+ var _rSocketLoad = new RegExp('^' + F2.Constants.Sockets.LOAD);
+ var _rUiCall = new RegExp('^' + F2.Constants.Sockets.UI_RPC);
+
+ /**
+ Creates a socket connection from the app to the container using
+ easyXDM.
+ @method _createAppToContainerSocket
+ @private
+ */
+ function _createAppToContainerSocket() {
+ var appConfig;
+ var isLoaded = false;
+ /**
+ It's possible for messages to be received before the socket load event has
+ happened. We'll save off these messages and replay them once the socket is
+ ready.
+ */
+ var messagePlayback = [];
+
+ var socket = new easyXDM.Socket({
+ onMessage: function(message, origin) {
+ // Handle Socket Load
+ if (!isLoaded && _rSocketLoad.test(message)) {
+ message = message.replace(_rSocketLoad, '');
+ var appParts = F2.parse(message);
+
+ // Make sure we have the AppConfig and AppManifest
+ if (appParts.length === 2) {
+ appConfig = appParts[0];
+
+ // Save socket
+ _apps[appConfig.instanceId] = {
+ config: appConfig,
+ socket: socket
+ };
+
+ F2.registerApps([appConfig], [appParts[1]]);
+
+ // Socket message playback
+ jQuery.each(messagePlayback, function() {
+ _onMessage(appConfig, message, origin);
+ });
+
+ isLoaded = true;
+ }
+ } else if (isLoaded) {
+ // Pass everyting else to _onMessage
+ _onMessage(appConfig, message, origin);
+ } else {
+ messagePlayback.push(message);
+ }
+ }
+ });
+ }
+
+ /**
+ Creates a socket connection from the container to the app using
+ easyXDM.
+ @method _createContainerToAppSocket
+ @private
+ @param {appConfig} appConfig The F2.AppConfig object
+ @param {F2.AppManifest} appManifest The F2.AppManifest object
+ @return {object} The new socket
+ */
+ function _createContainerToAppSocket(appConfig, appManifest) {
+ var container = jQuery(appConfig.root);
+
+ if (!container.length) {
+ F2.log('Unable to locate app in order to establish secure connection.');
+ return;
+ }
+
+ var iframeProps = {
+ scrolling: 'no',
+ style: {
+ width: '100%'
+ }
+ };
+
+ if (appConfig.height) {
+ iframeProps.style.height = appConfig.height + 'px';
+ }
+
+ var socket = new easyXDM.Socket({
+ remote: _secureAppPagePath,
+ container: container.get(0),
+ props: iframeProps,
+ onMessage: function(message, origin) {
+ _onMessage(appConfig, message, origin);
+ },
+ onReady: function() {
+ socket.postMessage(F2.Constants.Sockets.LOAD + F2.stringify([appConfig, appManifest], F2.appConfigReplacer));
+ }
+ });
+
+ return socket;
+ }
+
+ /**
+ @method _createRpcCallback
+ @private
+ @param {string} instanceId The app's Instance ID
+ @param {function} callbackId The callback ID
+ @return {function} A function to make the RPC call
+ */
+ function _createRpcCallback(instanceId, callbackId) {
+ return function() {
+ F2.Rpc.call(
+ instanceId,
+ F2.Constants.Sockets.RPC_CALLBACK,
+ callbackId,
+ [].slice.call(arguments).slice(2)
+ );
+ };
+ }
+
+ /**
+ Handles messages that come across the sockets
+ @method _onMessage
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} message The socket message
+ @param {string} origin The originator
+ */
+ function _onMessage(appConfig, message, origin) {
+ var obj;
+ var func;
+
+ function parseFunction(parent, functionName) {
+ var path = String(functionName).split('.');
+ for (var i = 0; i < path.length; i++) {
+ if (parent[path[i]] === undefined) {
+ parent = undefined;
+ break;
+ }
+ parent = parent[path[i]];
+ }
+ return parent;
+ }
+
+ function parseMessage(regEx, rawMessage, instanceId) {
+ var o = F2.parse(rawMessage.replace(regEx, ''));
+
+ // if obj.callbacks
+ // for each callback
+ // for each params
+ // if callback matches param
+ // replace param with _createRpcCallback(app.instanceId, callback)
+ if (o.params && o.params.length && o.callbacks && o.callbacks.length) {
+ jQuery.each(o.callbacks, function(i, c) {
+ jQuery.each(o.params, function(j, p) {
+ if (c === p) {
+ o.params[j] = _createRpcCallback(instanceId, c);
+ }
+ });
+ });
+ }
+
+ return o;
+ }
+
+ // Handle UI Call
+ if (_rUiCall.test(message)) {
+ obj = parseMessage(_rUiCall, message, appConfig.instanceId);
+ func = parseFunction(appConfig.ui, obj.functionName);
+
+ if (func !== undefined) {
+ func.apply(appConfig.ui, obj.params);
+ } else {
+ F2.log('Unable to locate UI RPC function: ' + obj.functionName);
+ }
+ } else if (_rRpc.test(message)) {
+ obj = parseMessage(_rRpc, message, appConfig.instanceId);
+ func = parseFunction(window, obj.functionName);
+
+ if (func !== undefined) {
+ func.apply(func, obj.params);
+ } else {
+ F2.log('Unable to locate RPC function: ' + obj.functionName);
+ }
+ } else if (_rRpcCallback.test(message)) {
+ obj = parseMessage(_rRpcCallback, message, appConfig.instanceId);
+
+ if (_callbacks[obj.functionName] !== undefined) {
+ _callbacks[obj.functionName].apply(_callbacks[obj.functionName], obj.params);
+ delete _callbacks[obj.functionName];
+ }
+ } else if (_rEvents.test(message)) {
+ obj = parseMessage(_rEvents, message, appConfig.instanceId);
+ F2.Events._socketEmit.apply(F2.Events, obj);
+ }
+ }
+
+ /**
+ Registers a callback function
+ @method _registerCallback
+ @private
+ @param {function} callback The callback function
+ @return {string} The callback ID
+ */
+ function _registerCallback(callback) {
+ var callbackId = F2.guid();
+ _callbacks[callbackId] = callback;
+ return callbackId;
+ }
+
+ return {
+ /**
+ Broadcast an RPC function to all sockets
+ @method broadcast
+ @param {string} messageType The message type
+ @param {Array} params The parameters to broadcast
+ */
+ broadcast: function(messageType, params) {
+ var message = messageType + F2.stringify(params);
+
+ jQuery.each(_apps, function(i, a) {
+ a.socket.postMessage(message);
+ });
+ },
+ /**
+ Calls a remote function
+ @method call
+ @param {string} instanceId The app's Instance ID
+ @param {string} messageType The message type
+ @param {string} functionName The name of the remote function
+ @param {Array} params An array of parameters to pass to the remote
+ function. Any functions found within the params will be treated as a
+ callback function.
+ */
+ call: function(instanceId, messageType, functionName, params) {
+ // Loop through params and find functions and convert them to callbacks
+ var callbacks = [];
+
+ jQuery.each(params, function(i, e) {
+ if (typeof e === 'function') {
+ var cid = _registerCallback(e);
+ params[i] = cid;
+ callbacks.push(cid);
+ }
+ });
+
+ _apps[instanceId].socket.postMessage(
+ messageType + F2.stringify({
+ functionName: functionName,
+ params: params,
+ callbacks: callbacks
+ })
+ );
+ },
+
+ /**
+ Init function which tells F2.Rpc whether it is running at the container-
+ level or the app-level. This method is generally called by
+ F2.{{#crossLink "F2/init"}}{{/crossLink}}
+ @method init
+ @param {string} [secureAppPagePath] The
+ {{#crossLink "F2.ContainerConfig"}}{{/crossLink}}.secureAppPagePath
+ property
+ */
+ init: function(secureAppPagePath) {
+ _secureAppPagePath = secureAppPagePath;
+
+ if (!_secureAppPagePath) {
+ _createAppToContainerSocket();
+ }
+ },
+
+ /**
+ Determines whether the Instance ID is considered to be 'remote'. This is
+ determined by checking if 1) the app has an open socket and 2) whether
+ F2.Rpc is running inside of an iframe
+ @method isRemote
+ @param {string} instanceId The Instance ID
+ @return {bool} True if there is an open socket
+ */
+ isRemote: function(instanceId) {
+ var appExists = _apps[instanceId] !== undefined;
+ var appIsSecure = _apps[instanceId].config.isSecure;
+ var noFrameAccess = !jQuery(_apps[instanceId].config.root).find('iframe').length;
+
+ return appExists && appIsSecure && noFrameAccess;
+ },
+
+ /**
+ Creates a container-to-app or app-to-container socket for communication
+ @method register
+ @param {F2.AppConfig} [appConfig] The F2.AppConfig object
+ @param {F2.AppManifest} [appManifest] The F2.AppManifest object
+ */
+ register: function(appConfig, appManifest) {
+ if (appConfig && appManifest) {
+ _apps[appConfig.instanceId] = {
+ config: appConfig,
+ socket: _createContainerToAppSocket(appConfig, appManifest)
+ };
+ } else {
+ F2.log('Unable to register socket connection. Please check container configuration.');
+ }
+ }
+ };
+})());
From 2ecd770d889fdbf8e4d8381572abb9fad6a4b28a Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Fri, 9 Jan 2015 10:15:43 -0700
Subject: [PATCH 21/61] Fixing inclusion of eslint files
---
Gruntfile.js | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/Gruntfile.js b/Gruntfile.js
index f9132ae4..e3438d36 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -93,7 +93,7 @@ module.exports = function(grunt) {
'src/vendor/bootstrap-modal.js',
'src/vendor/eventemitter2.js',
'src/vendor/easyXDM/easyXDM.js',
- '<%= eslint.files %>',
+ '<%= eslint.target %>',
'src/lib/template/footer.js.tmpl'
],
dest: 'dist/f2.debug.js'
@@ -101,7 +101,7 @@ module.exports = function(grunt) {
'no-third-party': {
src: [
'src/lib/template/header.js.tmpl',
- '<%= eslint.files %>',
+ '<%= eslint.target %>',
'src/lib/template/footer.js.tmpl'
],
dest: 'dist/f2.no-third-party.js'
@@ -111,7 +111,7 @@ module.exports = function(grunt) {
'src/lib/template/header.js.tmpl',
'src/vendor/eventemitter2.js',
'src/vendor/easyXDM/easyXDM.js',
- '<%= eslint.files %>',
+ '<%= eslint.target %>',
'src/lib/template/footer.js.tmpl'
],
dest: 'dist/packages/f2.no-jquery-or-bootstrap.js'
@@ -123,7 +123,7 @@ module.exports = function(grunt) {
'src/vendor/jquery.noconflict.js',
'src/vendor/eventemitter2.js',
'src/vendor/easyXDM/easyXDM.js',
- '<%= eslint.files %>',
+ '<%= eslint.target %>',
'src/lib/template/footer.js.tmpl'
],
dest: 'dist/packages/f2.no-bootstrap.js'
@@ -135,7 +135,7 @@ module.exports = function(grunt) {
'src/vendor/bootstrap-modal.js',
'src/vendor/jquery.noconflict.js',
'src/vendor/eventemitter2.js',
- '<%= eslint.files %>',
+ '<%= eslint.target %>',
'src/lib/template/footer.js.tmpl'
],
dest: 'dist/packages/f2.no-easyXDM.js'
@@ -145,7 +145,7 @@ module.exports = function(grunt) {
src: [
'src/lib/template/header.js.tmpl',
'src/vendor/eventemitter2.js',
- '<%= eslint.files %>',
+ '<%= eslint.target %>',
'src/lib/template/footer.js.tmpl'
],
dest: 'dist/packages/f2.basic.js'
From 52a1a86f12e35de9c47fcea253325500f37b4a15 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Fri, 9 Jan 2015 10:16:49 -0700
Subject: [PATCH 22/61] Fixing check for node and element
---
src/lib/F2.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/lib/F2.js b/src/lib/F2.js
index 1e97e641..c53f52ff 100644
--- a/src/lib/F2.js
+++ b/src/lib/F2.js
@@ -16,7 +16,7 @@ var F2 = (function() {
return test instanceof Node;
}
- return typeof test === 'object' && typeof test.nodeType === 'number' && typeof test.nodeName === 'string';
+ return test && typeof test === 'object' && typeof test.nodeType === 'number' && typeof test.nodeName === 'string';
}
/**
@@ -31,7 +31,7 @@ var F2 = (function() {
return test instanceof HTMLElement;
}
- return typeof test === 'object' && test.nodeType === 1 && typeof test.nodeName === 'string';
+ return test && typeof test === 'object' && test.nodeType === 1 && typeof test.nodeName === 'string';
}
/**
From aed09811291b5febb4b5cd11e16926178186e7f8 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Fri, 9 Jan 2015 10:17:11 -0700
Subject: [PATCH 23/61] Adding compiled files
---
dist/f2.debug.js | 6901 +++++++++++++++++-----------------
dist/f2.min.js | 4 +-
dist/f2.min.js.map | 2 +-
dist/f2.no-third-party.js | 7307 ++++++++++++++++++-------------------
tests/f2.min.map | 1 -
5 files changed, 6978 insertions(+), 7237 deletions(-)
delete mode 100644 tests/f2.min.map
diff --git a/dist/f2.debug.js b/dist/f2.debug.js
index a68f85ea..e8bf8f76 100644
--- a/dist/f2.debug.js
+++ b/dist/f2.debug.js
@@ -13800,3758 +13800,3629 @@ easyXDM.stack.RpcBehavior = function(proxy, config){
global.easyXDM = easyXDM;
})(window, document, location, window.setTimeout, decodeURIComponent, encodeURIComponent);
-var F2;
-
/**
- * Open F2
- * @module f2
- * @main f2
- */
-F2 = (function() {
-
- /**
- * Abosolutizes a relative URL
- * @method _absolutizeURI
- * @private
- * @param {e.g., location.href} base
- * @param {URL to absolutize} href
- * @returns {string} URL
- * Source: https://gist.github.com/Yaffle/1088850
- * Tests: http://skew.org/uri/uri_tests.html
- */
- var _absolutizeURI = function(base, href) {// RFC 3986
-
- function removeDotSegments(input) {
- var output = [];
- input.replace(/^(\.\.?(\/|$))+/, '')
- .replace(/\/(\.(\/|$))+/g, '/')
- .replace(/\/\.\.$/, '/../')
- .replace(/\/?[^\/]*/g, function (p) {
- if (p === '/..') {
- output.pop();
- } else {
- output.push(p);
- }
- });
- return output.join('').replace(/^\//, input.charAt(0) === '/' ? '/' : '');
- }
+ Open F2
+ @module f2
+ @main f2
+*/
+var F2 = (function() {
+ /**
+ Test whether a value is a native Node
+ @method _isNode
+ @private
+ @param {object} test Any value to test
+ @returns {boolean} True if Node
+ */
+ function _isNode(test) {
+ if (typeof Node === 'object') {
+ return test instanceof Node;
+ }
- href = _parseURI(href || '');
- base = _parseURI(base || '');
+ return test && typeof test === 'object' && typeof test.nodeType === 'number' && typeof test.nodeName === 'string';
+ }
- return !href || !base ? null : (href.protocol || base.protocol) +
- (href.protocol || href.authority ? href.authority : base.authority) +
- removeDotSegments(href.protocol || href.authority || href.pathname.charAt(0) === '/' ? href.pathname : (href.pathname ? ((base.authority && !base.pathname ? '/' : '') + base.pathname.slice(0, base.pathname.lastIndexOf('/') + 1) + href.pathname) : base.pathname)) +
- (href.protocol || href.authority || href.pathname ? href.search : (href.search || base.search)) +
- href.hash;
- };
+ /**
+ Test whether a value is a native Element
+ @method _isElement
+ @private
+ @param {object} test Any value to test
+ @returns {boolean} True if Element
+ */
+ function _isElement(test) {
+ if (typeof HTMLElement === 'object') {
+ return test instanceof HTMLElement;
+ }
- /**
- * Parses URI
- * @method _parseURI
- * @private
- * @param {The URL to parse} url
- * @returns {Parsed URL} string
- * Source: https://gist.github.com/Yaffle/1088850
- * Tests: http://skew.org/uri/uri_tests.html
- */
- var _parseURI = function(url) {
- var m = String(url).replace(/^\s+|\s+$/g, '').match(/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);
- // authority = '//' + user + ':' + pass '@' + hostname + ':' port
- return (m ? {
- href : m[0] || '',
- protocol : m[1] || '',
- authority: m[2] || '',
- host : m[3] || '',
- hostname : m[4] || '',
- port : m[5] || '',
- pathname : m[6] || '',
- search : m[7] || '',
- hash : m[8] || ''
- } : null);
- };
+ return test && typeof test === 'object' && test.nodeType === 1 && typeof test.nodeName === 'string';
+ }
- return {
- /**
- * A function to pass into F2.stringify which will prevent circular
- * reference errors when serializing objects
- * @method appConfigReplacer
- */
- appConfigReplacer: function(key, value) {
- if (key == 'root' || key == 'ui' || key == 'height') {
- return undefined;
- } else {
- return value;
- }
- },
- /**
- * The apps namespace is a place for app developers to put the javascript
- * class that is used to initialize their app. The javascript classes should
- * be namepaced with the {{#crossLink "F2.AppConfig"}}{{/crossLink}}.appId.
- * It is recommended that the code be placed in a closure to help keep the
- * global namespace clean.
- *
- * If the class has an 'init' function, that function will be called
- * automatically by F2.
- * @property Apps
- * @type object
- * @example
- * F2.Apps["com_example_helloworld"] = (function() {
- * var App_Class = function(appConfig, appContent, root) {
- * this._app = appConfig; // the F2.AppConfig object
- * this._appContent = appContent // the F2.AppManifest.AppContent object
- * this.$root = $(root); // the root DOM Element that contains this app
- * }
- *
- * App_Class.prototype.init = function() {
- * // perform init actions
- * }
- *
- * return App_Class;
- * })();
- * @example
- * F2.Apps["com_example_helloworld"] = function(appConfig, appContent, root) {
- * return {
- * init:function() {
- * // perform init actions
- * }
- * };
- * };
- * @for F2
- */
- Apps: {},
- /**
- * Creates a namespace on F2 and copies the contents of an object into
- * that namespace optionally overwriting existing properties.
- * @method extend
- * @param {string} ns The namespace to create. Pass a falsy value to
- * add properties to the F2 namespace directly.
- * @param {object} obj The object to copy into the namespace.
- * @param {bool} overwrite True if object properties should be overwritten
- * @return {object} The created object
- */
- extend: function (ns, obj, overwrite) {
- var isFunc = typeof obj === 'function';
- var parts = ns ? ns.split('.') : [];
- var parent = this;
- obj = obj || {};
-
- // ignore leading global
- if (parts[0] === 'F2') {
- parts = parts.slice(1);
- }
+ /**
+ Abosolutizes a relative URL
+ @method _absolutizeURI
+ @private
+ @param {string} base The base domain
+ @param {strong} href The relative url to make absolute
+ @returns {string} URL
+ Source: https://gist.github.com/Yaffle/1088850
+ Tests: http://skew.org/uri/uri_tests.html
+ */
+ function _absolutizeURI(base, href) { // RFC 3986
+ function removeDotSegments(input) {
+ var output = [];
+ input.replace(/^(\.\.?(\/|$))+/, '')
+ .replace(/\/(\.(\/|$))+/g, '/')
+ .replace(/\/\.\.$/, '/../')
+ .replace(/\/?[^\/]*/g, function(p) {
+ if (p === '/..') {
+ output.pop();
+ } else {
+ output.push(p);
+ }
+ });
+ return output.join('').replace(/^\//, input.charAt(0) === '/' ? '/' : '');
+ }
- // create namespaces
- for (var i = 0, len = parts.length; i < len; i++) {
- if (!parent[parts[i]]) {
- parent[parts[i]] = isFunc && i + 1 == len ? obj : {};
- }
- parent = parent[parts[i]];
- }
+ href = _parseURI(href || '');
+ base = _parseURI(base || '');
- // copy object into namespace
- if (!isFunc) {
- for (var prop in obj) {
- if (typeof parent[prop] === 'undefined' || overwrite) {
- parent[prop] = obj[prop];
- }
- }
- }
+ return !href || !base ? null : (href.protocol || base.protocol) +
+ (href.protocol || href.authority ? href.authority : base.authority) +
+ removeDotSegments(href.protocol || href.authority || href.pathname.charAt(0) === '/' ? href.pathname : (href.pathname ? ((base.authority && !base.pathname ? '/' : '') + base.pathname.slice(0, base.pathname.lastIndexOf('/') + 1) + href.pathname) : base.pathname)) +
+ (href.protocol || href.authority || href.pathname ? href.search : (href.search || base.search)) +
+ href.hash;
+ }
- return parent;
- },
- /**
- * Generates a somewhat random id
- * @method guid
- * @return {string} A random id
- * @for F2
- */
- guid: function() {
- var S4 = function() {
- return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
- };
- return (S4()+S4()+'-'+S4()+'-'+S4()+'-'+S4()+'-'+S4()+S4()+S4());
- },
- /**
- * Search for a value within an array.
- * @method inArray
- * @param {object} value The value to search for
- * @param {Array} array The array to search
- * @return {bool} True if the item is in the array
- */
- inArray: function(value, array) {
- return jQuery.inArray(value, array) > -1;
- },
- /**
- * Tests a URL to see if it's on the same domain (local) or not
- * @method isLocalRequest
- * @param {URL to test} url
- * @returns {bool} Whether the URL is local or not
- * Derived from: https://github.com/jquery/jquery/blob/master/src/ajax.js
- */
- isLocalRequest: function(url){
- var rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
- urlLower = url.toLowerCase(),
- parts = rurl.exec( urlLower ),
- ajaxLocation,
- ajaxLocParts;
+ /**
+ Parses URI into its component parts
+ @private
+ @method _parseURI
+ @param {string} url The url to be parsed
+ @returns {object} The parts of the url
+ Source: https://gist.github.com/Yaffle/1088850
+ Tests: http://skew.org/uri/uri_tests.html
+ */
+ function _parseURI(url) {
+ var whitespacePattern = /^\s+|\s+$/g;
+ var uriPattern = /^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/;
+ var match = String(url).replace(whitespacePattern, '').match(uriPattern);
+
+ if (match) {
+ return {
+ href: match[0] || '',
+ protocol: match[1] || '',
+ authority: match[2] || '',
+ host: match[3] || '',
+ hostname: match[4] || '',
+ port: match[5] || '',
+ pathname: match[6] || '',
+ search: match[7] || '',
+ hash: match[8] || ''
+ };
+ }
+ }
- try {
- ajaxLocation = location.href;
- } catch( e ) {
- // Use the href attribute of an A element
- // since IE will modify it given document.location
- ajaxLocation = document.createElement('a');
- ajaxLocation.href = '';
- ajaxLocation = ajaxLocation.href;
- }
+ return {
+ /**
+ A function to pass into F2.stringify which will prevent circular
+ reference errors when serializing objects
+ @method appConfigReplacer
+ @param {string} key The key being examined
+ @param {*} value The value being examined
+ @returns {*} Returns the original allowed value or undefined
+ */
+ appConfigReplacer: function(key, value) {
+ if (key === 'root' || key === 'ui' || key === 'height') {
+ return undefined;
+ } else {
+ return value;
+ }
+ },
+ /**
+ The apps namespace is a place for app developers to put the javascript
+ class that is used to initialize their app. The javascript classes should
+ be namepaced with the {{#crossLink "F2.AppConfig"}}{{/crossLink}}.appId.
+ It is recommended that the code be placed in a closure to help keep the
+ global namespace clean.
+ If the class has an 'init' function, that function will be called
+ automatically by F2.
+ @property Apps
+ @type object
+ @for F2
+ @example
+ F2.Apps['com_example_helloworld'] = (function() {
+ var App_Class = function(appConfig, appContent, root) {
+ this._app = appConfig; // the F2.AppConfig object
+ this._appContent = appContent // the F2.AppManifest.AppContent object
+ this.$root = $(root); // the root DOM Element that contains this app
+ }
- ajaxLocation = ajaxLocation.toLowerCase();
+ App_Class.prototype.init = function() {
+ // perform init actions
+ }
- // uh oh, the url must be relative
- // make it fully qualified and re-regex url
- if (!parts){
- urlLower = _absolutizeURI(ajaxLocation,urlLower).toLowerCase();
- parts = rurl.exec( urlLower );
- }
+ return App_Class;
+ })();
+ @example
+ F2.Apps['com_example_helloworld'] = function(appConfig, appContent, root) {
+ return {
+ init: function() {
+ // Perform init actions
+ }
+ };
+ };
+ */
+ Apps: {},
+ /**
+ Creates a namespace on F2 and copies the contents of an object into that
+ namespace optionally overwriting existing properties.
+ @method extend
+ @param {string} ns The namespace to create. Pass a falsy value to
+ add properties to the F2 namespace directly.
+ @param {object} obj The object to copy into the namespace.
+ @param {bool} overwrite True if object properties should be overwritten
+ @return {object} The created object
+ */
+ extend: function(ns, obj, overwrite) {
+ var isFunc = typeof obj === 'function';
+ var parts = ns ? ns.split('.') : [];
+ var parent = this;
+ obj = obj || {};
+
+ // Ignore leading global
+ if (parts[0] === 'F2') {
+ parts = parts.slice(1);
+ }
- // Segment location into parts
- ajaxLocParts = rurl.exec( ajaxLocation ) || [];
+ // Create namespaces
+ for (var i = 0, len = parts.length; i < len; i++) {
+ if (!parent[parts[i]]) {
+ parent[parts[i]] = isFunc && (i + 1 === len) ? obj : {};
+ }
+ parent = parent[parts[i]];
+ }
- // do hostname and protocol and port of manifest URL match location.href? (a "local" request on the same domain)
- var matched = !(parts &&
- (parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
- (parts[ 3 ] || (parts[ 1 ] === 'http:' ? '80' : '443')) !==
- (ajaxLocParts[ 3 ] || (ajaxLocParts[ 1 ] === 'http:' ? '80' : '443'))));
-
- return matched;
- },
- /**
- * Utility method to determine whether or not the argument passed in is or is not a native dom node.
- * @method isNativeDOMNode
- * @param {object} testObject The object you want to check as native dom node.
- * @return {bool} Returns true if the object passed is a native dom node.
- */
- isNativeDOMNode: function(testObject) {
- var bIsNode = (
- typeof Node === 'object' ? testObject instanceof Node :
- testObject && typeof testObject === 'object' && typeof testObject.nodeType === 'number' && typeof testObject.nodeName === 'string'
- );
-
- var bIsElement = (
- typeof HTMLElement === 'object' ? testObject instanceof HTMLElement : //DOM2
- testObject && typeof testObject === 'object' && testObject.nodeType === 1 && typeof testObject.nodeName === 'string'
- );
-
- return (bIsNode || bIsElement);
- },
- /**
- * A utility logging function to write messages or objects to the browser console. This is a proxy for the [`console` API](https://developers.google.com/chrome-developer-tools/docs/console).
- * @method log
- * @param {object|string} Object/Method An object to be logged _or_ a `console` API method name, such as `warn` or `error`. All of the console method names are [detailed in the Chrome docs](https://developers.google.com/chrome-developer-tools/docs/console-api).
- * @param {object} [obj2]* An object to be logged
- * @example
- * // Pass any value (string, int, array, object, bool).
- * F2.log('foo');
- * F2.log([1, 2, 3]);
- * @example
- * // Use a console method name as the first argument.
- * F2.log('error', err);
- * F2.log('info', 'The session ID is ' + sessionId);
- */
- log: function() {
- if (!window.console) {
- return;
- }
+ // Copy object into namespace
+ if (!isFunc) {
+ for (var prop in obj) {
+ if (parent[prop] === undefined || overwrite) {
+ parent[prop] = obj[prop];
+ }
+ }
+ }
- var method = 'log';
- var args = Array.prototype.slice.apply(arguments);
+ return parent;
+ },
+ /**
+ Generates a somewhat random id
+ @method guid
+ @return {string} A random id
+ @for F2
+ */
+ guid: function() {
+ function s4() {
+ return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
+ }
+ return (s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4());
+ },
+ /**
+ Search for a value within an array.
+ @method inArray
+ @param {object} value The value to search for
+ @param {Array} array The array to search
+ @return {bool} True if the item is in the array
+ */
+ inArray: function(value, array) {
+ return jQuery.inArray(value, array) > -1;
+ },
+ /**
+ Tests a URL to see if it's on the same domain (local) or not
+ @method isLocalRequest
+ @param {string} url The url to test
+ @returns {bool} Whether the URL is local or not
+ Derived from: https://github.com/jquery/jquery/blob/master/src/ajax.js
+ */
+ isLocalRequest: function(url) {
+ var urlLower = url.toLowerCase();
+ var relUrlPattern = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/;
+ var parts = relUrlPattern.execute(urlLower);
+ var ajaxLocation;
+ var ajaxLocParts;
+
+ try {
+ ajaxLocation = location.href;
+ } catch ( e ) {
+ // Use the href of an anchor since IE account for document.location
+ ajaxLocation = document.createElement('a');
+ ajaxLocation.href = '';
+ ajaxLocation = ajaxLocation.href;
+ }
- if (args.length > 1 && args[0] in window.console) {
- method = args.shift();
- }
+ ajaxLocation = ajaxLocation.toLowerCase();
- if (window.console[method]) {
- window.console[method].apply(window.console, args);
- }
- },
- /**
- * Wrapper to convert a JSON string to an object
- * @method parse
- * @param {string} str The JSON string to convert
- * @return {object} The parsed object
- */
- parse: function(str) {
- return JSON.parse(str);
- },
- /**
- * Wrapper to convert an object to JSON
- *
- * **Note: When using F2.stringify on an F2.AppConfig object, it is
- * recommended to pass F2.appConfigReplacer as the replacer function in
- * order to prevent circular serialization errors.**
- * @method stringify
- * @param {object} value The object to convert
- * @param {function|Array} replacer An optional parameter that determines
- * how object values are stringified for objects. It can be a function or an
- * array of strings.
- * @param {int|string} space An optional parameter that specifies the
- * indentation of nested structures. If it is omitted, the text will be
- * packed without extra whitespace. If it is a number, it will specify the
- * number of spaces to indent at each level. If it is a string (such as '\t'
- * or ' '), it contains the characters used to indent at each level.
- * @return {string} The JSON string
- */
- stringify: function(value, replacer, space) {
- return JSON.stringify(value, replacer, space);
- },
- /**
- * Function to get the F2 version number
- * @method version
- * @return {string} F2 version number
- */
- version: function() { return '1.4.0'; }
- };
+ // The url is relative, so we'll fully qualify it and re-regex
+ if (!parts) {
+ urlLower = _absolutizeURI(ajaxLocation, urlLower).toLowerCase();
+ parts = relUrlPattern.exec(urlLower);
+ }
+
+ // Segment location into parts
+ ajaxLocParts = relUrlPattern.exec(ajaxLocation) || [];
+
+ // Do hostname and protocol and port of manifest URL match location.href?
+ var matched = !(parts &&
+ (parts[1] !== ajaxLocParts[1] || parts[2] !== ajaxLocParts[2] ||
+ (parts[3] || (parts[1] === 'http:' ? '80' : '443')) !==
+ (ajaxLocParts[3] || (ajaxLocParts[1] === 'http:' ? '80' : '443'))));
+
+ return matched;
+ },
+ /**
+ Utility method to determine whether or not the argument passed in is or
+ is not a native DOM node.
+ @method isNativeDOMNode
+ @param {object} testObject The object you want to check as native DOM
+ node.
+ @return {bool} Returns true if the object passed is a native DOM node.
+ */
+ isNativeDOMNode: function(testObject) {
+ return _isNode(testObject) || _isElement(testObject);
+ },
+ /**
+ A utility logging function to write messages or objects to the browser
+ console. This is a proxy for the [`console` API](https://developers.google.com/chrome-developer-tools/docs/console).
+ @method log
+ @param {object|string} Object/Method An object to be logged _or_ a
+ `console` API method name, such as `warn` or `error`. All of the console
+ method names are [detailed in the Chrome docs](https://developers.google.com/chrome-developer-tools/docs/console-api).
+ @param {object} [obj2]* An object to be logged
+ @example
+ Pass any value (string, int, array, object, bool).
+ F2.log('foo');
+ F2.log([1, 2, 3]);
+ @example
+ Use a console method name as the first argument.
+ F2.log('error', err);
+ F2.log('info', 'The session ID is ' + sessionId);
+ */
+ log: function() {
+ if (!window.console) {
+ return;
+ }
+
+ var method = 'log';
+ var args = Array.prototype.slice.apply(arguments);
+
+ if (args.length > 1 && args[0] in window.console) {
+ method = args.shift();
+ }
+
+ if (window.console[method]) {
+ window.console[method].apply(window.console, args);
+ }
+ },
+ /**
+ Wrapper to convert a JSON string to an object
+ @method parse
+ @param {string} str The JSON string to convert
+ @return {object} The parsed object
+ */
+ parse: function(str) {
+ return JSON.parse(str);
+ },
+ /**
+ Wrapper to convert an object to JSON
+ **Note: When using F2.stringify on an F2.AppConfig object, it is
+ recommended to pass F2.appConfigReplacer as the replacer function in
+ order to prevent circular serialization errors.**
+ @method stringify
+ @param {object} value The object to convert
+ @param {function|Array} replacer An optional parameter that determines
+ how object values are stringified for objects. It can be a function or an
+ array of strings.
+ @param {int|string} space An optional parameter that specifies the
+ indentation of nested structures. If it is omitted, the text will be
+ packed without extra whitespace. If it is a number, it will specify the
+ number of spaces to indent at each level. If it is a string (such as '\t'
+ or ' '), it contains the characters used to indent at each level.
+ @return {string} The JSON string
+ */
+ stringify: function(value, replacer, space) {
+ return JSON.stringify(value, replacer, space);
+ },
+ /**
+ Function to get the F2 version number
+ @method version
+ @return {string} F2 version number
+ */
+ version: function() {
+ return '1.4.0';
+ }
+ };
})();
/**
- * The new `AppHandlers` functionality provides Container Developers a higher level of control over configuring app rendering and interaction.
- *
- *
- *The addition of `F2.AppHandlers` replaces the previous {{#crossLink "F2.ContainerConfig"}}{{/crossLink}} properties `beforeAppRender`, `appRender`, and `afterAppRender`. These methods were deprecated—but not removed—in version 1.2. They will be permanently removed in a future version of F2.
- *
- *
- *
- *Starting with F2 version 1.2, `AppHandlers` is the preferred method for Container Developers to manage app layout.
- *
- *
- * ### Order of Execution
- *
- * **App Rendering**
- *
- * 0. {{#crossLink "F2/registerApps"}}F2.registerApps(){{/crossLink}} method is called by the Container Developer and the following methods are run for *each* {{#crossLink "F2.AppConfig"}}{{/crossLink}} passed.
- * 1. **'appCreateRoot'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_CREATE\_ROOT*) handlers are fired in the order they were attached.
- * 2. **'appRenderBefore'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER\_BEFORE*) handlers are fired in the order they were attached.
- * 3. Each app's `manifestUrl` is requested asynchronously; on success the following methods are fired.
- * 3. **'appRender'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER*) handlers are fired in the order they were attached.
- * 4. **'appRenderAfter'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER\_AFTER*) handlers are fired in the order they were attached.
- *
- *
- * **App Removal**
+ The new `AppHandlers` functionality provides Container Developers a higher
+ level of control over configuring app rendering and interaction.
- * 0. {{#crossLink "F2/removeApp"}}F2.removeApp(){{/crossLink}} with a specific {{#crossLink "F2.AppConfig/instanceId "}}{{/crossLink}} or {{#crossLink "F2/removeAllApps"}}F2.removeAllApps(){{/crossLink}} method is called by the Container Developer and the following methods are run.
- * 1. **'appDestroyBefore'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_BEFORE*) handlers are fired in the order they were attached.
- * 2. **'appDestroy'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY*) handlers are fired in the order they were attached.
- * 3. **'appDestroyAfter'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_AFTER*) handlers are fired in the order they were attached.
- *
- * **Error Handling**
+
+ The addition of `F2.AppHandlers` replaces the previous {{#crossLink "F2.ContainerConfig"}}{{/crossLink}} properties `beforeAppRender`, `appRender`, and `afterAppRender`. These methods were deprecated—but not removed—in version 1.2. They will be permanently removed in a future version of F2.
+
- * 0. **'appScriptLoadFailed'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_SCRIPT\_LOAD\_FAILED*) handlers are fired in the order they were attached.
- *
- * @class F2.AppHandlers
- */
-F2.extend('AppHandlers', (function() {
+
+ Starting with F2 version 1.2, `AppHandlers` is the preferred method for
+ Container Developers to manage app layout.
+
- // The hidden token that we will check against every time someone tries to add, remove, fire handler
- var _containerToken = F2.guid();
- var _f2Token = F2.guid();
-
- var _handlerCollection = {
- appCreateRoot: [],
- appRenderBefore: [],
- appDestroyBefore: [],
- appRenderAfter: [],
- appDestroyAfter: [],
- appRender: [],
- appDestroy: [],
- appScriptLoadFailed: []
- };
+ ### Order of Execution
- var _defaultMethods = {
- appRender: function(appConfig, appHtml) {
- // If no app root is defined use the app's outer most node
- if (F2.isNativeDOMNode(appConfig.root)) {
- jQuery(appConfig.root).append(appHtml);
- } else {
- appConfig.root = jQuery(appHtml).get(0);
- }
+ **App Rendering**
- document.body.appendChild(appConfig.root);
- },
- appDestroy: function(appInstance) {
- if (appInstance.app && appInstance.app.destroy) {
- if (typeof appInstance.app.destroy === 'function') {
- appInstance.app.destroy();
- } else {
- F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
- }
- }
+ 0. {{#crossLink "F2/registerApps"}}F2.registerApps(){{/crossLink}} method is called by the Container Developer and the following methods are run for *each* {{#crossLink "F2.AppConfig"}}{{/crossLink}} passed.
+ 1. **'appCreateRoot'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_CREATE\_ROOT*) handlers are fired in the order they were attached.
+ 2. **'appRenderBefore'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER\_BEFORE*) handlers are fired in the order they were attached.
+ 3. Each app's `manifestUrl` is requested asynchronously; on success the following methods are fired.
+ 3. **'appRender'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER*) handlers are fired in the order they were attached.
+ 4. **'appRenderAfter'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER\_AFTER*) handlers are fired in the order they were attached.
- jQuery(appInstance.config.root).fadeOut(500, function() {
- jQuery(this).remove();
- });
- }
- };
+ **App Removal**
- function _createHandler(token, namespace, fnOrNode, domNodeAppropriate) {
- _validateToken(token);
+ 0. {{#crossLink "F2/removeApp"}}F2.removeApp(){{/crossLink}} with a specific {{#crossLink "F2.AppConfig/instanceId "}}{{/crossLink}} or {{#crossLink "F2/removeAllApps"}}F2.removeAllApps(){{/crossLink}} method is called by the Container Developer and the following methods are run.
+ 1. **'appDestroyBefore'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_BEFORE*) handlers are fired in the order they were attached.
+ 2. **'appDestroy'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY*) handlers are fired in the order they were attached.
+ 3. **'appDestroyAfter'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_AFTER*) handlers are fired in the order they were attached.
- var handler = {
- domNode: null,
- func: null,
- namespace: namespace
- };
+ **Error Handling**
- if (F2.isNativeDOMNode(fnOrNode)) {
- handler.domNode = fnOrNode;
- } else if (typeof fnOrNode === 'function') {
- handler.func = fnOrNode;
- }
+ 0. **'appScriptLoadFailed'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_SCRIPT\_LOAD\_FAILED*) handlers are fired in the order they were attached.
- if (!handler.func && !handler.domNode) {
- throw new Error('Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.');
- }
+ @class F2.AppHandlers
+*/
+F2.extend('AppHandlers', (function() {
- if (handler.domNode && !domNodeAppropriate) {
- throw new Error('Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.');
- }
+ // Token used when adding, removing, or triggering handlers
+ var _containerToken = F2.guid();
+ var _f2Token = F2.guid();
+
+ var _handlerCollection = {
+ appCreateRoot: [],
+ appRenderBefore: [],
+ appDestroyBefore: [],
+ appRenderAfter: [],
+ appDestroyAfter: [],
+ appRender: [],
+ appDestroy: [],
+ appScriptLoadFailed: []
+ };
- return handler;
- }
+ var _defaultMethods = {
+ appRender: function(appConfig, appHtml) {
+ // If no app root is defined use the app's outer most node
+ if (F2.isNativeDOMNode(appConfig.root)) {
+ jQuery(appConfig.root).append(appHtml);
+ } else {
+ appConfig.root = jQuery(appHtml).get(0);
+ }
- // Token must match F2 or container
- function _validateToken(token) {
- if (_containerToken !== token && _f2Token !== token) {
- throw new Error('Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().');
- }
- }
+ document.body.appendChild(appConfig.root);
+ },
+ appDestroy: function(appInstance) {
+ if (appInstance.app && appInstance.app.destroy) {
+ if (typeof appInstance.app.destroy === 'function') {
+ appInstance.app.destroy();
+ } else {
+ F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
+ }
+ }
- // Token must match F2
- function _validateF2Token(token) {
- if (token != _f2Token) {
- throw new Error('Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().');
- }
- }
+ jQuery(appInstance.config.root).fadeOut(500, function() {
+ jQuery(this).remove();
+ });
+ }
+ };
- function _filterHandlersByNamespace(handlers, namespace) {
- var newHandlers = handlers.slice();
+ function _createHandler(token, namespace, fnOrNode, domNodeAppropriate) {
+ _validateToken(token);
- for (var i = newHandlers.length; i >= 0; i--) {
- if (!newHandlers[i] || (newHandlers[i].namespace && newHandlers[i].namespace.toLowerCase() === namespace)) {
- newHandlers.splice(i, 1);
- }
- }
+ var handler = {
+ domNode: null,
+ func: null,
+ namespace: namespace
+ };
- return newHandlers;
- }
+ if (F2.isNativeDOMNode(fnOrNode)) {
+ handler.domNode = fnOrNode;
+ } else if (typeof fnOrNode === 'function') {
+ handler.func = fnOrNode;
+ }
- function _removeHandler(token, eventKey, namespace) {
- _validateToken(token);
+ if (!handler.func && !handler.domNode) {
+ throw new Error('Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.');
+ }
- if (namespace) {
- namespace = namespace.toLowerCase();
+ if (handler.domNode && !domNodeAppropriate) {
+ throw new Error('Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.');
+ }
- if (eventKey && eventKey in _handlerCollection) {
- _handlerCollection[eventKey] = _filterHandlersByNamespace(_handlerCollection[eventKey], namespace);
- } else {
- for (var key in _handlerCollection) {
- _removeHandler(token, key, namespace);
- }
- }
- } else if (eventKey) {
- _handlerCollection[eventKey] = [];
- }
- }
+ return handler;
+ }
- function _parseEventKey(eventKey) {
- var namespace = '';
+ // Token must match F2 or container
+ function _validateToken(token) {
+ if (_containerToken !== token && _f2Token !== token) {
+ throw new Error('Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().');
+ }
+ }
- if (eventKey.indexOf('.') !== -1) {
- var eventParts = eventKey.split('.');
- eventKey = eventParts[0];
- namespace = eventParts[1];
- }
+ // Token must match F2
+ function _validateF2Token(token) {
+ if (token !== _f2Token) {
+ throw new Error('Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().');
+ }
+ }
- return {
- key: eventKey,
- namespace: namespace
- };
- }
+ function _filterHandlersByNamespace(handlers, namespace) {
+ var newHandlers = handlers.slice();
- return {
- /**
- * Allows Container Developer to retrieve a unique token which must be
- * passed to all `on` and `off` methods. This function will self destruct
- * and can only be called one time. Container Developers must store the
- * return value inside of a closure.
- * @method getToken
- */
- getToken: function() {
- /**
- * Delete this method for security that way only the container has
- * access to the token 1 time. Kind of Ethan Hunt-ish, this message will
- * self-destruct immediately.
- */
- delete this.getToken;
- return _containerToken;
- },
- /**
- * Allows F2 to get a token internally. Token is required to call
- * {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}}. This
- * function will self destruct to eliminate other sources from using the
- * {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}} and
- * additional internal methods.
- * @method __f2GetToken
- * @private
- */
- __f2GetToken: function() {
- /**
- * Delete this method for security that way only the container has
- * access to the token 1 time. Kind of Ethan Hunt-ish, this message will
- * self-destruct immediately.
- */
- delete this.__f2GetToken;
- return _f2Token;
- },
- /**
- * Allows F2 to trigger specific events internally.
- * @method __trigger
- * @private
- * @chainable
- * @param {String} token The token received from {{#crossLink "F2.AppHandlers/\_\_f2GetToken:method"}}{{/crossLink}}.
- * @param {String} eventKey The event to fire. The complete list of event
- * keys is available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- */
- __trigger: function(token, eventKey) {
- _validateF2Token(token);
-
- if (!_handlerCollection[eventKey]) {
- throw new Error('Invalid EventKey passed. Check your inputs and try again.');
- }
+ for (var i = newHandlers.length; i >= 0; i--) {
+ if (!newHandlers[i] || (newHandlers[i].namespace && newHandlers[i].namespace.toLowerCase() === namespace)) {
+ newHandlers.splice(i, 1);
+ }
+ }
- var callbackArgs = Array.prototype.slice.call(arguments, 2);
+ return newHandlers;
+ }
- if (!_handlerCollection[eventKey].length && _defaultMethods[eventKey]) {
- _defaultMethods[eventKey].apply(F2, callbackArgs);
- } else {
- for (var i = 0; i < _handlerCollection[eventKey].length; i++) {
- var handler = _handlerCollection[eventKey][i];
+ function _removeHandler(token, eventKey, namespace) {
+ _validateToken(token);
- // Check for appRender
- if (handler.domNode && arguments.length >= 4) {
- var appConfig = arguments[2];
- var appHtml = arguments[3];
+ if (namespace) {
+ namespace = namespace.toLowerCase();
- if (appConfig.root) {
- jQuery(appConfig.root).append(appHtml);
- } else {
- appConfig.root = jQuery(appHtml).get(0);
- }
+ if (eventKey && eventKey in _handlerCollection) {
+ _handlerCollection[eventKey] = _filterHandlersByNamespace(_handlerCollection[eventKey], namespace);
+ } else {
+ for (var key in _handlerCollection) {
+ _removeHandler(token, key, namespace);
+ }
+ }
+ } else if (eventKey) {
+ _handlerCollection[eventKey] = [];
+ }
+ }
- jQuery(handler.domNode).append(appConfig.root);
- } else {
- handler.func.apply(F2, callbackArgs);
- }
- }
- }
+ function _parseEventKey(eventKey) {
+ var namespace = '';
- return this;
- },
- /**
- * Allows Container Developer to add listener method that will be triggered
- * when a specific event occurs.
- * @method on
- * @chainable
- * @param {String} token The token received from
- * {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
- * @param {String} eventKey{.namespace} The event key used to determine
- * which event to attach the listener to. The namespace is useful for
- * removal purposes. At this time it does not affect when an event is fired.
- * Complete list of event keys available in
- * {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @param {Function|Element} listener A function that will be triggered
- * when a specific event occurs. Optionally, a specific DOM element to
- * which the app will be appended can be passed. For detailed argument
- * definition refer to
- * {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * 'appRenderBefore',
- * function() {
- * F2.log('before app rendered!');
- * }
- * );
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * 'appRenderBefore.myNamespace',
- * function() {
- * F2.log('before app rendered!');
- * }
- * );
- */
- on: function(token, eventKey, listener) {
- if (!eventKey) {
- throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
- }
+ if (eventKey.indexOf('.') !== -1) {
+ var eventParts = eventKey.split('.');
+ eventKey = eventParts[0];
+ namespace = eventParts[1];
+ }
- var event = _parseEventKey(eventKey);
+ return {
+ key: eventKey,
+ namespace: namespace
+ };
+ }
- if (!_handlerCollection[event.key]) {
- throw new Error('Invalid eventKey passed. Check your inputs and try again.');
- }
+ return {
+ /**
+ Allows Container Developer to retrieve a unique token which must be
+ passed to all `on` and `off` methods. This function will self destruct
+ and can only be called one time. Container Developers must store the
+ return value inside of a closure.
+ @method getToken
+ @returns {string} A one-time container token
+ */
+ getToken: function() {
+ /**
+ Delete this method for security that way only the container has
+ access to the token 1 time. Kind of Ethan Hunt-ish, this message will
+ self-destruct immediately.
+ */
+ delete this.getToken;
+ return _containerToken;
+ },
+ /**
+ Allows F2 to get a token internally. Token is required to call
+ {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}}. This
+ function will self destruct to eliminate other sources from using the
+ {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}} and
+ additional internal methods.
+ @method __f2GetToken
+ @private
+ @returns {string} A one-time container token
+ */
+ __f2GetToken: function() {
+ /**
+ Delete this method for security that way only the container has
+ access to the token 1 time. Kind of Ethan Hunt-ish, this message will
+ self-destruct immediately.
+ */
+ delete this.__f2GetToken;
+ return _f2Token;
+ },
+ /**
+ Allows F2 to trigger specific events internally.
+ @method __trigger
+ @private
+ @chainable
+ @param {String} token The token received from {{#crossLink "F2.AppHandlers/\_\_f2GetToken:method"}}{{/crossLink}}.
+ @param {String} eventKey The event to fire. The complete list of event
+ keys is available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ @returns {object} The F2 instance for chaining purposes
+ */
+ __trigger: function(token, eventKey) {
+ _validateF2Token(token);
+
+ if (!_handlerCollection[eventKey]) {
+ throw new Error('Invalid EventKey passed. Check your inputs and try again.');
+ }
- var isAppRender = (event.key === 'appRender');
- var handler = _createHandler(token, event.namespace, listener, isAppRender);
- _handlerCollection[event.key].push(handler);
+ var callbackArgs = Array.prototype.slice.call(arguments, 2);
- return this;
- },
- /**
- * Allows Container Developer to remove listener methods for specific events
- * @method off
- * @chainable
- * @param {String} token The token received from {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
- * @param {String} eventKey{.namespace} The event key used to determine
- * which event to attach the listener to. If no namespace is provided all
- * listeners for the specified event type will be removed. Complete list
- * available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.off(token, 'appRenderBefore');
- */
- off: function(token, eventKey) {
- if (!eventKey) {
- throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
- }
+ if (!_handlerCollection[eventKey].length && _defaultMethods[eventKey]) {
+ _defaultMethods[eventKey].apply(F2, callbackArgs);
+ } else {
+ for (var i = 0; i < _handlerCollection[eventKey].length; i++) {
+ var handler = _handlerCollection[eventKey][i];
- var event = _parseEventKey(eventKey);
+ // Check for appRender
+ if (handler.domNode && arguments.length >= 4) {
+ var appConfig = arguments[2];
+ var appHtml = arguments[3];
- if (!_handlerCollection[event.key]) {
- throw new Error('Invalid EventKey passed. Check your inputs and try again.');
- }
+ if (appConfig.root) {
+ jQuery(appConfig.root).append(appHtml);
+ } else {
+ appConfig.root = jQuery(appHtml).get(0);
+ }
- _removeHandler(token, event.key, event.namespace);
+ jQuery(handler.domNode).append(appConfig.root);
+ } else {
+ handler.func.apply(F2, callbackArgs);
+ }
+ }
+ }
- return this;
- }
- };
-})());
+ return this;
+ },
+ /**
+ Allows Container Developer to add listener method that will be triggered
+ when a specific event occurs.
+ @method on
+ @chainable
+ @param {String} token The token received from
+ {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
+ @param {String} eventKey{.namespace} The event key used to determine
+ which event to attach the listener to. The namespace is useful for
+ removal purposes. At this time it does not affect when an event is fired.
+ Complete list of event keys available in
+ {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ @param {Function} listener A function that will be triggered when a
+ specific event occurs. For detailed argument definition refer to
+ {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ @returns {object} The F2 instance for chaining purposes
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ 'appRenderBefore'
+ function() {
+ F2.log('before app rendered!');
+ }
+ );
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ 'appRenderBefore.myNamespace',
+ function() {
+ F2.log('before app rendered!');
+ }
+ );
+ */
+ on: function(token, eventKey, listener) {
+ if (!eventKey) {
+ throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
+ }
-F2.extend('Constants', {
- /**
- * A convenient collection of all available appHandler events.
- * @class F2.Constants.AppHandlers
- **/
- AppHandlers: {
- /**
- * Equivalent to `appCreateRoot`. Identifies the create root method for use
- * in AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
- * @property APP_CREATE_ROOT
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_CREATE_ROOT,
- * function(appConfig) {
- * // If you want to create a custom root. By default F2 uses the app's outermost HTML element.
- * // The app's html is not available until after the manifest is retrieved so this logic occurs in F2.Constants.AppHandlers.APP_RENDER
- * appConfig.root = jQuery('').get(0);
- * }
- * );
- */
- APP_CREATE_ROOT: 'appCreateRoot',
- /**
- * Equivalent to `appRenderBefore`. Identifies the before app render method
- * for use in AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
- * @property APP_RENDER_BEFORE
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_RENDER_BEFORE,
- * function(appConfig) {
- * F2.log(appConfig);
- * }
- * );
- */
- APP_RENDER_BEFORE: 'appRenderBefore',
- /**
- * Equivalent to `appRender`. Identifies the app render method for use in
- * AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}},
- * [appHtml](../../app-development.html#app-design)).
- * @property APP_RENDER
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_RENDER,
- * function(appConfig, appHtml) {
- * var $root;
- *
- * // If no app root is defined use the app's outer most node
- * if (!F2.isNativeDOMNode(appConfig.root)) {
- * appConfig.root = jQuery(appHtml).get(0);
- * // Get a handle on the root in jQuery
- * $root = jQuery(appConfig.root);
- * } else {
- * // Get a handle on the root in jQuery
- * $root = jQuery(appConfig.root);
- * // Append the app html to the root
- * $root.append(appHtml);
- * }
- *
- * // Append the root to the body by default.
- * jQuery('body').append($root);
- * }
- * );
- */
- APP_RENDER: 'appRender',
- /**
- * Equivalent to `appRenderAfter`. Identifies the after app render method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}} )
- * @property APP_RENDER_AFTER
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_RENDER_AFTER,
- * function(appConfig) {
- * F2.log(appConfig);
- * }
- * );
- */
- APP_RENDER_AFTER: 'appRenderAfter',
- /**
- * Equivalent to `appDestroyBefore`. Identifies the before app destroy
- * method for use in AppHandlers.(on|off). When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * (appInstance).
- * @property APP_DESTROY_BEFORE
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
- * function(appInstance) {
- * F2.log(appInstance);
- * }
- * );
- */
- APP_DESTROY_BEFORE: 'appDestroyBefore',
- /**
- * Equivalent to `appDestroy`. Identifies the app destroy method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( appInstance )
- * @property APP_DESTROY
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_DESTROY,
- * function(appInstance) {
- * // Call the apps destroy method, if it has one
- * if (appInstance && appInstance.app && appInstance.app.destroy && typeof(appInstance.app.destroy) == 'function') {
- * appInstance.app.destroy();
- * } else if (appInstance && appInstance.app && appInstance.app.destroy) {
- * F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
- * }
- *
- * // Fade out and remove the root
- * jQuery(appInstance.config.root).fadeOut(500, function() {
- * jQuery(this).remove();
- * });
- * }
- * );
- */
- APP_DESTROY: 'appDestroy',
- /**
- * Equivalent to `appDestroyAfter`. Identifies the after app destroy method
- * for use in AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * (appInstance)
- * @property APP_DESTROY_AFTER
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_DESTROY_AFTER,
- * function(appInstance) {
- * F2.log(appInstance);
- * }
- * );
- */
- APP_DESTROY_AFTER: 'appDestroyAfter',
- /**
- * Equivalent to `appScriptLoadFailed`. Identifies the app script load
- * failed method for use in AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}}
- * the listener function passed will receive the following argument(s):
- * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}, scriptInfo)
- * @property APP_SCRIPT_LOAD_FAILED
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
- * function(appConfig, scriptInfo) {
- * F2.log(appConfig.appId);
- * }
- * );
- */
- APP_SCRIPT_LOAD_FAILED: 'appScriptLoadFailed'
- }
-});
+ var event = _parseEventKey(eventKey);
-/**
- * Class stubs for documentation purposes
- * @main F2
- */
-F2.extend('', {
- /**
- * The App Class is an optional class that can be namespaced onto the
- * {{#crossLink "F2\Apps"}}{{/crossLink}} namespace. The
- * [F2 Docs](../../app-development.html#app-class)
- * has more information on the usage of the App Class.
- * @class F2.App
- * @constructor
- * @param {F2.AppConfig} appConfig The F2.AppConfig object for the app
- * @param {F2.AppManifest.AppContent} appContent The F2.AppManifest.AppContent
- * object
- * @param {Element} root The root DOM Element for the app
- */
- App: function(appConfig, appContent, root) {
- return {
- /**
- * An optional init function that will automatically be called when
- * F2.{{#crossLink "F2\registerApps"}}{{/crossLink}} is called.
- * @method init
- * @optional
- */
- init:function() {}
- };
- },
- /**
- * The AppConfig object represents an app's meta data
- * @class F2.AppConfig
- */
- AppConfig: {
- /**
- * The unique ID of the app. More information can be found
- * [here](../../app-development.html#f2-appid)
- * @property appId
- * @type string
- * @required
- */
- appId: '',
- /**
- * An object that represents the context of an app
- * @property context
- * @type object
- */
- context: {},
- /**
- * True if the app should be requested in a single request with other apps.
- * @property enableBatchRequests
- * @type bool
- * @default false
- */
- enableBatchRequests: false,
- /**
- * The height of the app. The initial height will be pulled from
- * the {{#crossLink "F2.AppConfig"}}{{/crossLink}} object, but later
- * modified by calling
- * F2.UI.{{#crossLink "F2.UI/updateHeight"}}{{/crossLink}}. This is used
- * for secure apps to be able to set the initial height of the iframe.
- * @property height
- * @type int
- */
- height: 0,
- /**
- * The unique runtime ID of the app.
- *
- * **This property is populated during the
- * F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process**
- * @property instanceId
- * @type string
- */
- instanceId: '',
- /**
- * True if the app will be loaded in an iframe. This property
- * will be true if the {{#crossLink "F2.AppConfig"}}{{/crossLink}} object
- * sets isSecure = true. It will also be true if the
- * [container](../../container-development.html) has made the decision to
- * run apps in iframes.
- * @property isSecure
- * @type bool
- * @default false
- */
- isSecure: false,
- /**
- * The language and region specification for this container
- * represented as an IETF-defined standard language tag,
- * e.g. `"en-us"` or `"de-de"`. This is passed during the
- * F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process.
- *
- * @property containerLocale
- * @type string
- * @default null
- * @since 1.4.0
- */
- containerLocale: null,
- /**
- * The languages and regions supported by this app represented
- * as an array of IETF-defined standard language tags,
- * e.g. `["en-us","de-de"]`.
- *
- * @property localeSupport
- * @type array
- * @default []
- * @since 1.4.0
- */
- localeSupport: [],
- /**
- * The url to retrieve the {{#crossLink "F2.AppManifest"}}{{/crossLink}}
- * object.
- * @property manifestUrl
- * @type string
- * @required
- */
- manifestUrl: '',
- /**
- * The recommended maximum width in pixels that this app should be run.
- * **It is up to the [container](../../container-development.html) to
- * implement the logic to prevent an app from being run when the maxWidth
- * requirements are not met.**
- * @property maxWidth
- * @type int
- */
- maxWidth: 0,
- /**
- * The recommended minimum grid size that this app should be run. This
- * value corresponds to the 12-grid system that is used by the
- * [container](../../container-development.html). This property should be
- * set by apps that require a certain number of columns in their layout.
- * @property minGridSize
- * @type int
- * @default 4
- */
- minGridSize: 4,
- /**
- * The recommended minimum width in pixels that this app should be run. **It
- * is up to the [container](../../container-development.html) to implement
- * the logic to prevent an app from being run when the minWidth requirements
- * are not met.
- * @property minWidth
- * @type int
- * @default 300
- */
- minWidth: 300,
- /**
- * The name of the app
- * @property name
- * @type string
- * @required
- */
- name: '',
- /**
- * The root DOM element that contains the app
- *
- * **This property is populated during the
- * F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process**
- * @property root
- * @type Element
- */
- root: undefined,
- /**
- * The instance of F2.UI providing easy access to F2.UI methods
- *
- * **This property is populated during the
- * F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process**
- * @property ui
- * @type F2.UI
- */
- ui: undefined,
- /**
- * The views that this app supports. Available views
- * are defined in {{#crossLink "F2.Constants.Views"}}{{/crossLink}}. The
- * presence of a view can be checked via
- * F2.{{#crossLink "F2/inArray"}}{{/crossLink}}:
- *
- * F2.inArray(F2.Constants.Views.SETTINGS, app.views)
- *
- * @property views
- * @type Array
- */
- views: []
- },
- /**
- * The assets needed to render an app on the page
- * @class F2.AppManifest
- */
- AppManifest: {
- /**
- * The array of {{#crossLink "F2.AppManifest.AppContent"}}{{/crossLink}}
- * objects
- * @property apps
- * @type Array
- * @required
- */
- apps: [],
- /**
- * Any inline javascript tha should initially be run
- * @property inlineScripts
- * @type Array
- * @optional
- */
- inlineScripts: [],
- /**
- * Urls to javascript files required by the app
- * @property scripts
- * @type Array
- * @optional
- */
- scripts: [],
- /**
- * Urls to CSS files required by the app
- * @property styles
- * @type Array
- * @optional
- */
- styles: []
- },
- /**
- * The AppContent object
- * @class F2.AppManifest.AppContent
- **/
- AppContent: {
- /**
- * Arbitrary data to be passed along with the app
- * @property data
- * @type object
- * @optional
- */
- data: {},
- /**
- * The string of HTML representing the app
- * @property html
- * @type string
- * @required
- */
- html: '',
- /**
- * A status message
- * @property status
- * @type string
- * @optional
- */
- status: ''
- },
- /**
- * An object containing configuration information for the
- * [container](../../container-development.html)
- * @class F2.ContainerConfig
- */
- ContainerConfig: {
- /**
- * Allows the [container](../../container-development.html) to override how
- * an app's html is inserted into the page. The function should accept an
- * {{#crossLink "F2.AppConfig"}}{{/crossLink}} object and also a string of
- * html
- * @method afterAppRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} html The string of html representing the app
- * @return {Element} The DOM Element surrounding the app
- */
- afterAppRender: function(appConfig, html) {},
- /**
- * Allows the [container](../../container-development.html) to wrap an app
- * in extra html. The function should accept an
- * {{#crossLink "F2.AppConfig"}}{{/crossLink}} object and also a string of
- * html. The extra html can provide links to edit app settings and remove an
- * app from the container. See
- * {{#crossLink "F2.Constants.Css"}}{{/crossLink}} for CSS classes that
- * should be applied to elements.
- * @method appRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} html The string of html representing the app
- */
- appRender: function(appConfig, html) {},
- /**
- * Allows the container to render html for an app before the AppManifest for
- * an app has loaded. This can be useful if the design calls for loading
- * icons to appear for each app before each app is loaded and rendered to
- * the page.
- * @method beforeAppRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @return {Element} The DOM Element surrounding the app
- */
- beforeAppRender: function(appConfig) {},
- /**
- * True to enable debug mode in F2.js. Adds additional logging, resource cache busting, etc.
- * @property debugMode
- * @type bool
- * @default false
- */
- debugMode: false,
- /**
- * The default language and region specification for this container
- * represented as an IETF-defined standard language tag,
- * e.g. `"en-us"` or `"de-de"`. This value is passed to each app
- * registered as `containerLocale`.
- *
- * @property locale
- * @type string
- * @default null
- * @since 1.4.0
- */
- locale: null,
- /**
- * Milliseconds before F2 fires callback on script resource load errors. Due to issue with the way Internet Explorer attaches load events to script elements, the error event doesn't fire.
- * @property scriptErrorTimeout
- * @type milliseconds
- * @default 7000 (7 seconds)
- */
- scriptErrorTimeout: 7000,
- /**
- * Tells the container that it is currently running within
- * a secure app page
- * @property isSecureAppPage
- * @type bool
- */
- isSecureAppPage: false,
- /**
- * Allows the container to specify which page is used when
- * loading a secure app. The page must reside on a different domain than the
- * container
- * @property secureAppPagePath
- * @type string
- * @for F2.ContainerConfig
- */
- secureAppPagePath: '',
- /**
- * Specifies what views a container will provide buttons
- * or links to. Generally, the views will be switched via buttons or links
- * in the app's header.
- * @property supportedViews
- * @type Array
- * @required
- */
- supportedViews: [],
- /**
- * An object containing configuration defaults for F2.UI
- * @class F2.ContainerConfig.UI
- */
- UI: {
- /**
- * An object containing configuration defaults for the
- * F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} and
- * F2.UI.{{#crossLink "F2.UI/hideMask"}}{{/crossLink}} methods.
- * @class F2.ContainerConfig.UI.Mask
- */
- Mask: {
- /**
- * The backround color of the overlay
- * @property backgroundColor
- * @type string
- * @default #FFF
- */
- backgroundColor: '#FFF',
- /**
- * The path to the loading icon
- * @property loadingIcon
- * @type string
- */
- loadingIcon: '',
- /**
- * The opacity of the background overlay
- * @property opacity
- * @type int
- * @default 0.6
- */
- opacity: 0.6,
- /**
- * Do not use inline styles for mask functinality. Instead classes will
- * be applied to the elements and it is up to the container provider to
- * implement the class definitions.
- * @property useClasses
- * @type bool
- * @default false
- */
- useClasses: false,
- /**
- * The z-index to use for the overlay
- * @property zIndex
- * @type int
- * @default 2
- */
- zIndex: 2
- }
- },
- /**
- * Allows the container to fully override how the AppManifest request is
- * made inside of F2.
- *
- * @method xhr
- * @param {string} url The manifest url
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @param {function} success The function to be called if the request
- * succeeds
- * @param {function} error The function to be called if the request fails
- * @param {function} complete The function to be called when the request
- * finishes (after success and error callbacks have been executed)
- * @return {XMLHttpRequest} The XMLHttpRequest object (or an object that has
- * an `abort` function (such as the jqXHR object in jQuery) to abort the
- * request)
- *
- * @example
- * F2.init({
- * xhr: function(url, appConfigs, success, error, complete) {
- * $.ajax({
- * url: url,
- * type: 'POST',
- * data: {
- * params: F2.stringify(appConfigs, F2.appConfigReplacer)
- * },
- * jsonp: false, // do not put 'callback=' in the query string
- * jsonpCallback: F2.Constants.JSONP_CALLBACK + appConfigs[0].appId, // Unique function name
- * dataType: 'json',
- * success: function(appManifest) {
- * // custom success logic
- * success(appManifest); // fire success callback
- * },
- * error: function() {
- * // custom error logic
- * error(); // fire error callback
- * },
- * complete: function() {
- * // custom complete logic
- * complete(); // fire complete callback
- * }
- * });
- * }
- * });
- *
- * @for F2.ContainerConfig
- */
- //xhr: function(url, appConfigs, success, error, complete) {},
- /**
- * Allows the container to override individual parts of the AppManifest
- * request. See properties and methods with the `xhr.` prefix.
- * @property xhr
- * @type Object
- *
- * @example
- * F2.init({
- * xhr: {
- * url: function(url, appConfigs) {
- * return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url);
- * }
- * }
- * });
- */
- xhr: {
- /**
- * Allows the container to override the request data type (JSON or JSONP)
- * that is used for the request
- * @method xhr.dataType
- * @param {string} url The manifest url
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @return {string} The request data type that should be used
- *
- * @example
- * F2.init({
- * xhr: {
- * dataType: function(url) {
- * return F2.isLocalRequest(url) ? 'json' : 'jsonp';
- * },
- * type: function(url) {
- * return F2.isLocalRequest(url) ? 'POST' : 'GET';
- * }
- * }
- * });
- */
- dataType: function(url, appConfigs) {},
- /**
- * Allows the container to override the request method that is used (just
- * like the `type` parameter to `jQuery.ajax()`.
- * @method xhr.type
- * @param {string} url The manifest url
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @return {string} The request method that should be used
- *
- * @example
- * F2.init({
- * xhr: {
- * dataType: function(url) {
- * return F2.isLocalRequest(url) ? 'json' : 'jsonp';
- * },
- * type: function(url) {
- * return F2.isLocalRequest(url) ? 'POST' : 'GET';
- * }
- * }
- * });
- */
- type: function(url, appConfigs) {},
- /**
- * Allows the container to override the url that is used to request an
- * app's F2.{{#crossLink "F2.AppManifest"}}{{/crossLink}}
- * @method xhr.url
- * @param {string} url The manifest url
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @return {string} The url that should be used for the request
- *
- * @example
- * F2.init({
- * xhr: {
- * url: function(url, appConfigs) {
- * return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url);
- * }
- * }
- * });
- */
- url: function(url, appConfigs) {}
- },
- /**
- * Allows the container to override the script loader which requests
- * dependencies defined in the {{#crossLink "F2.AppManifest"}}{{/crossLink}}.
- * @property loadScripts
- * @type function
- *
- * @example
- * F2.init({
- * loadScripts: function(scripts,inlines,callback){
- * //load scripts using $.load() for each script or require(scripts)
- * callback();
- * }
- * });
- */
- loadScripts: function(scripts,inlines,callback){},
- /**
- * Allows the container to override the stylesheet loader which requests
- * dependencies defined in the {{#crossLink "F2.AppManifest"}}{{/crossLink}}.
- * @property loadStyles
- * @type function
- *
- * @example
- * F2.init({
- * loadStyles: function(styles,callback){
- * //load styles using $.load() for each stylesheet or another method
- * callback();
- * }
- * });
- */
- loadStyles: function(styles,callback){}
- }
-});
-/**
- * Constants used throughout the Open Financial Framework
- * @class F2.Constants
- * @static
- */
-F2.extend('Constants', {
- /**
- * CSS class constants
- * @class F2.Constants.Css
- */
- Css: (function() {
+ if (!_handlerCollection[event.key]) {
+ throw new Error('Invalid eventKey passed. Check your inputs and try again.');
+ }
- /** @private */
- var _PREFIX = 'f2-';
+ var isAppRender = (event.key === 'appRender');
+ var handler = _createHandler(token, event.namespace, listener, isAppRender);
+ _handlerCollection[event.key].push(handler);
- return {
- /**
- * The APP class should be applied to the DOM Element that surrounds the
- * entire app, including any extra html that surrounds the APP\_CONTAINER
- * that is inserted by the container. See the
- * {{#crossLink "F2.ContainerConfig"}}{{/crossLink}} object.
- * @property APP
- * @type string
- * @static
- * @final
- */
- APP: _PREFIX + 'app',
- /**
- * The APP\_CONTAINER class should be applied to the outermost DOM Element
- * of the app.
- * @property APP_CONTAINER
- * @type string
- * @static
- * @final
- */
- APP_CONTAINER: _PREFIX + 'app-container',
- /**
- * The APP\_TITLE class should be applied to the DOM Element that contains
- * the title for an app. If this class is not present, then
- * F2.UI.{{#crossLink "F2.UI/setTitle"}}{{/crossLink}} will not function.
- * @property APP_TITLE
- * @type string
- * @static
- * @final
- */
- APP_TITLE: _PREFIX + 'app-title',
- /**
- * The APP\_VIEW class should be applied to the DOM Element that contains
- * a view for an app. The DOM Element should also have a
- * {{#crossLink "F2.Constants.Views"}}{{/crossLink}}.DATA_ATTRIBUTE
- * attribute that specifies which
- * {{#crossLink "F2.Constants.Views"}}{{/crossLink}} it is.
- * @property APP_VIEW
- * @type string
- * @static
- * @final
- */
- APP_VIEW: _PREFIX + 'app-view',
- /**
- * APP\_VIEW\_TRIGGER class should be applied to the DOM Elements that
- * trigger an
- * {{#crossLink "F2.Constants.Events"}}{{/crossLink}}.APP\_VIEW\_CHANGE
- * event. The DOM Element should also have a
- * {{#crossLink "F2.Constants.Views"}}{{/crossLink}}.DATA_ATTRIBUTE
- * attribute that specifies which
- * {{#crossLink "F2.Constants.Views"}}{{/crossLink}} it will trigger.
- * @property APP_VIEW_TRIGGER
- * @type string
- * @static
- * @final
- */
- APP_VIEW_TRIGGER: _PREFIX + 'app-view-trigger',
- /**
- * The MASK class is applied to the overlay element that is created
- * when the F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} method is
- * fired.
- * @property MASK
- * @type string
- * @static
- * @final
- */
- MASK: _PREFIX + 'mask',
- /**
- * The MASK_CONTAINER class is applied to the Element that is passed into
- * the F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} method.
- * @property MASK_CONTAINER
- * @type string
- * @static
- * @final
- */
- MASK_CONTAINER: _PREFIX + 'mask-container'
- };
- })(),
-
- /**
- * Events constants
- * @class F2.Constants.Events
- */
- Events: (function() {
- /** @private */
- var _APP_EVENT_PREFIX = 'App.';
- /** @private */
- var _CONTAINER_EVENT_PREFIX = 'Container.';
+ return this;
+ },
+ /**
+ Allows Container Developer to remove listener methods for specific events
+ @method off
+ @chainable
+ @param {String} token The token received from {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
+ @param {String} eventKey{.namespace} The event key used to determine
+ which event to attach the listener to. If no namespace is provided all
+ listeners for the specified event type will be removed. Complete list
+ available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ @returns {object} The F2 instance for chaining purposes
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.off(token, 'appRenderBefore');
+ */
+ off: function(token, eventKey) {
+ if (!eventKey) {
+ throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
+ }
- return {
- /**
- * The APP\_SYMBOL\_CHANGE event is fired when the symbol is changed in an
- * app. It is up to the app developer to fire this event.
- * Returns an object with the symbol and company name:
- *
- * { symbol: 'MSFT', name: 'Microsoft Corp (NASDAQ)' }
- *
- * @property APP_SYMBOL_CHANGE
- * @type string
- * @static
- * @final
- */
- APP_SYMBOL_CHANGE: _APP_EVENT_PREFIX + 'symbolChange',
- /**
- * The APP\_WIDTH\_CHANGE event will be fired by the container when the
- * width of an app is changed. The app's instanceId should be concatenated
- * to this constant.
- * Returns an object with the gridSize and width in pixels:
- *
- * { gridSize:8, width:620 }
- *
- * @property APP_WIDTH_CHANGE
- * @type string
- * @static
- * @final
- */
- APP_WIDTH_CHANGE: _APP_EVENT_PREFIX + 'widthChange.',
- /**
- * The CONTAINER\_SYMBOL\_CHANGE event is fired when the symbol is changed
- * at the container level. This event should only be fired by the
- * container or container provider.
- * Returns an object with the symbol and company name:
- *
- * { symbol: 'MSFT', name: 'Microsoft Corp (NASDAQ)' }
- *
- * @property CONTAINER_SYMBOL_CHANGE
- * @type string
- * @static
- * @final
- */
- CONTAINER_SYMBOL_CHANGE: _CONTAINER_EVENT_PREFIX + 'symbolChange',
- /**
- * The CONTAINER\_WIDTH\_CHANGE event will be fired by the container when
- * the width of the container has changed.
- * @property CONTAINER_WIDTH_CHANGE
- * @type string
- * @static
- * @final
- */
- CONTAINER_WIDTH_CHANGE: _CONTAINER_EVENT_PREFIX + 'widthChange',
- /**
- * The CONTAINER\_LOCALE\_CHANGE event will be fired by the container when
- * the locale of the container has changed. This event should only be fired by the
- * container or container provider.
- * Returns an object with the updated locale (IETF-defined standard language tag):
- *
- * { locale: 'en-us' }
- *
- * @property CONTAINER_LOCALE_CHANGE
- * @type string
- * @static
- * @final
- */
- CONTAINER_LOCALE_CHANGE: _CONTAINER_EVENT_PREFIX + 'localeChange'
- };
- })(),
+ var event = _parseEventKey(eventKey);
- JSONP_CALLBACK: 'F2_jsonpCallback_',
+ if (!_handlerCollection[event.key]) {
+ throw new Error('Invalid EventKey passed. Check your inputs and try again.');
+ }
- /**
- * Constants for use with cross-domain sockets
- * @class F2.Constants.Sockets
- * @protected
- */
- Sockets: {
- /**
- * The EVENT message is sent whenever
- * F2.Events.{{#crossLink "F2.Events/emit"}}{{/crossLink}} is fired
- * @property EVENT
- * @type string
- * @static
- * @final
- */
- EVENT: '__event__',
- /**
- * The LOAD message is sent when an iframe socket initially loads.
- * Returns a JSON string that represents:
- *
- * [ App, AppManifest]
- *
- * @property LOAD
- * @type string
- * @static
- * @final
- */
- LOAD: '__socketLoad__',
- /**
- * The RPC message is sent when a method is passed up from within a secure
- * app page.
- * @property RPC
- * @type string
- * @static
- * @final
- */
- RPC: '__rpc__',
- /**
- * The RPC\_CALLBACK message is sent when a call back from an RPC method is
- * fired.
- * @property RPC_CALLBACK
- * @type string
- * @static
- * @final
- */
- RPC_CALLBACK: '__rpcCallback__',
- /**
- * The UI\_RPC message is sent when a UI method called.
- * @property UI_RPC
- * @type string
- * @static
- * @final
- */
- UI_RPC: '__uiRpc__'
- },
+ _removeHandler(token, event.key, event.namespace);
- /**
- * The available view types to apps. The view should be specified by applying
- * the {{#crossLink "F2.Constants.Css"}}{{/crossLink}}.APP\_VIEW class to the
- * containing DOM Element. A DATA\_ATTRIBUTE attribute should be added to the
- * Element as well which defines what view type is represented.
- * The `hide` class can be applied to views that should be hidden by default.
- * @class F2.Constants.Views
- */
- Views: {
- /**
- * The DATA_ATTRIBUTE should be placed on the DOM Element that contains the
- * view.
- * @property DATA_ATTRIBUTE
- * @type string
- * @static
- * @final
- */
- DATA_ATTRIBUTE: 'data-f2-view',
- /**
- * The ABOUT view gives details about the app.
- * @property ABOUT
- * @type string
- * @static
- * @final
- */
- ABOUT: 'about',
- /**
- * The HELP view provides users with help information for using an app.
- * @property HELP
- * @type string
- * @static
- * @final
- */
- HELP: 'help',
- /**
- * The HOME view is the main view for an app. This view should always
- * be provided by an app.
- * @property HOME
- * @type string
- * @static
- * @final
- */
- HOME: 'home',
- /**
- * The REMOVE view is a special view that handles the removal of an app
- * from the container.
- * @property REMOVE
- * @type string
- * @static
- * @final
- */
- REMOVE: 'remove',
- /**
- * The SETTINGS view provides users the ability to modify advanced settings
- * for an app.
- * @property SETTINGS
- * @type string
- * @static
- * @final
- */
- SETTINGS: 'settings'
- }
-});
-/**
- * Handles [Context](../../app-development.html#context) passing from
- * containers to apps and apps to apps.
- * @class F2.Events
- */
-F2.extend('Events', (function() {
- // init EventEmitter
- var _events = new EventEmitter2({
- wildcard:true
- });
+ return this;
+ }
+ };
+})());
- // unlimited listeners, set to > 0 for debugging
- _events.setMaxListeners(0);
+F2.extend('Constants', {
+ /**
+ A convenient collection of all available appHandler events.
+ @class F2.Constants.AppHandlers
+ */
+ AppHandlers: {
+ /**
+ Equivalent to `appCreateRoot`. Identifies the create root method for use
+ in AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
+ @property APP_CREATE_ROOT
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_CREATE_ROOT,
+ function(appConfig) {
+ // If you want to create a custom root. By default F2 uses the app's outermost HTML element.
+ // The app's html is not available until after the manifest is retrieved so this logic occurs in F2.Constants.AppHandlers.APP_RENDER
+ appConfig.root = jQuery('').get(0);
+ }
+ );
+ */
+ APP_CREATE_ROOT: 'appCreateRoot',
+ /**
+ Equivalent to `appRenderBefore`. Identifies the before app render method
+ for use in AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
+ @property APP_RENDER_BEFORE
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_RENDER_BEFORE,
+ function(appConfig) {
+ F2.log(appConfig);
+ }
+ );
+ */
+ APP_RENDER_BEFORE: 'appRenderBefore',
+ /**
+ Equivalent to `appRender`. Identifies the app render method for use in
+ AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}},
+ [appHtml](../../app-development.html#app-design)).
+ @property APP_RENDER
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_RENDER,
+ function(appConfig, appHtml) {
+ var $root;
+
+ // If no app root is defined use the app's outer most node
+ if (!F2.isNativeDOMNode(appConfig.root)) {
+ appConfig.root = jQuery(appHtml).get(0);
+ // Get a handle on the root in jQuery
+ $root = jQuery(appConfig.root);
+ } else {
+ // Get a handle on the root in jQuery
+ $root = jQuery(appConfig.root);
+ // Append the app html to the root
+ $root.append(appHtml);
+ }
- return {
- /**
- * Same as F2.Events.emit except that it will not send the event
- * to all sockets.
- * @method _socketEmit
- * @private
- * @param {string} event The event name
- * @param {object} [arg]* The arguments to be passed
- */
- _socketEmit: function() {
- return EventEmitter2.prototype.emit.apply(_events, [].slice.call(arguments));
- },
- /**
- * Execute each of the listeners that may be listening for the specified
- * event name in order with the list of arguments.
- * @method emit
- * @param {string} event The event name
- * @param {object} [arg]* The arguments to be passed
- */
- emit: function() {
- F2.Rpc.broadcast(F2.Constants.Sockets.EVENT, [].slice.call(arguments));
- return EventEmitter2.prototype.emit.apply(_events, [].slice.call(arguments));
- },
- /**
- * Adds a listener that will execute n times for the event before being
- * removed. The listener is invoked only the first time the event is
- * fired, after which it is removed.
- * @method many
- * @param {string} event The event name
- * @param {int} timesToListen The number of times to execute the event
- * before being removed
- * @param {function} listener The function to be fired when the event is
- * emitted
- */
- many: function(event, timesToListen, listener) {
- return _events.many(event, timesToListen, listener);
- },
- /**
- * Remove a listener for the specified event.
- * @method off
- * @param {string} event The event name
- * @param {function} listener The function that will be removed
- */
- off: function(event, listener) {
- return _events.off(event, listener);
- },
- /**
- * Adds a listener for the specified event
- * @method on
- * @param {string} event The event name
- * @param {function} listener The function to be fired when the event is
- * emitted
- */
- on: function(event, listener){
- return _events.on(event, listener);
- },
- /**
- * Adds a one time listener for the event. The listener is invoked only
- * the first time the event is fired, after which it is removed.
- * @method once
- * @param {string} event The event name
- * @param {function} listener The function to be fired when the event is
- * emitted
- */
- once: function(event, listener) {
- return _events.once(event, listener);
- }
- };
-})());
-/**
- * Handles socket communication between the container and secure apps
- * @class F2.Rpc
- */
-F2.extend('Rpc', (function(){
- var _callbacks = {};
- var _secureAppPagePath = '';
- var _apps = {};
- var _rEvents = new RegExp('^' + F2.Constants.Sockets.EVENT);
- var _rRpc = new RegExp('^' + F2.Constants.Sockets.RPC);
- var _rRpcCallback = new RegExp('^' + F2.Constants.Sockets.RPC_CALLBACK);
- var _rSocketLoad = new RegExp('^' + F2.Constants.Sockets.LOAD);
- var _rUiCall = new RegExp('^' + F2.Constants.Sockets.UI_RPC);
-
- /**
- * Creates a socket connection from the app to the container using
- * easyXDM.
- * @method _createAppToContainerSocket
- * @private
- */
- var _createAppToContainerSocket = function() {
-
- var appConfig; // socket closure
- var isLoaded = false;
- // its possible for messages to be received before the socket load event has
- // happened. We'll save off these messages and replay them once the socket
- // is ready
- var messagePlayback = [];
-
- var socket = new easyXDM.Socket({
- onMessage: function(message, origin){
-
- // handle Socket Load
- if (!isLoaded && _rSocketLoad.test(message)) {
- message = message.replace(_rSocketLoad, '');
- var appParts = F2.parse(message);
-
- // make sure we have the AppConfig and AppManifest
- if (appParts.length == 2) {
- appConfig = appParts[0];
-
- // save socket
- _apps[appConfig.instanceId] = {
- config:appConfig,
- socket:socket
- };
-
- // register app
- F2.registerApps([appConfig], [appParts[1]]);
-
- // socket message playback
- jQuery.each(messagePlayback, function(i, e) {
- _onMessage(appConfig, message, origin);
- });
-
- isLoaded = true;
- }
- } else if (isLoaded) {
- // pass everyting else to _onMessage
- _onMessage(appConfig, message, origin);
- } else {
- //F2.log('socket not ready, queuing message', message);
- messagePlayback.push(message);
- }
- }
- });
- };
-
- /**
- * Creates a socket connection from the container to the app using
- * easyXDM.
- * @method _createContainerToAppSocket
- * @private
- * @param {appConfig} appConfig The F2.AppConfig object
- * @param {F2.AppManifest} appManifest The F2.AppManifest object
- */
- var _createContainerToAppSocket = function(appConfig, appManifest) {
-
- var container = jQuery(appConfig.root);
-
- if (!container.is('.' + F2.Constants.Css.APP_CONTAINER)) {
- container.find('.' + F2.Constants.Css.APP_CONTAINER);
- }
-
- if (!container.length) {
- F2.log('Unable to locate app in order to establish secure connection.');
- return;
- }
+ // Append the root to the body by default.
+ jQuery('body').append($root);
+ }
+ );
+ */
+ APP_RENDER: 'appRender',
+ /**
+ Equivalent to `appRenderAfter`. Identifies the after app render method
+ for use in AppHandlers.on/off. When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}}
+ the listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}})
+ @property APP_RENDER_AFTER
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_RENDER_AFTER,
+ function(appConfig) {
+ F2.log(appConfig);
+ }
+ );
+ */
+ APP_RENDER_AFTER: 'appRenderAfter',
+ /**
+ Equivalent to `appDestroyBefore`. Identifies the before app destroy
+ method for use in AppHandlers.(on|off). When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ (appInstance).
+ @property APP_DESTROY_BEFORE
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
+ function(appInstance) {
+ F2.log(appInstance);
+ }
+ );
+ */
+ APP_DESTROY_BEFORE: 'appDestroyBefore',
+ /**
+ Equivalent to `appDestroy`. Identifies the app destroy method for use in
+ AppHandlers.on/off. When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}}
+ the listener function passed will receive the following argument(s):
+ (appInstance)
+ @property APP_DESTROY
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_DESTROY,
+ function(appInstance) {
+ // Call the apps destroy method, if it has one
+ if (appInstance && appInstance.app && appInstance.app.destroy && typeof(appInstance.app.destroy) == 'function') {
+ appInstance.app.destroy();
+ } else if (appInstance && appInstance.app && appInstance.app.destroy) {
+ F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
+ }
- var iframeProps = {
- scrolling:'no',
- style:{
- width:'100%'
- }
- };
+ // Fade out and remove the root
+ jQuery(appInstance.config.root).fadeOut(500, function() {
+ jQuery(this).remove();
+ });
+ }
+ );
+ */
+ APP_DESTROY: 'appDestroy',
+ /**
+ Equivalent to `appDestroyAfter`. Identifies the after app destroy method
+ for use in AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ (appInstance)
+ @property APP_DESTROY_AFTER
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_DESTROY_AFTER,
+ function(appInstance) {
+ F2.log(appInstance);
+ }
+ );
+ */
+ APP_DESTROY_AFTER: 'appDestroyAfter',
+ /**
+ Equivalent to `appScriptLoadFailed`. Identifies the app script load
+ failed method for use in AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}}
+ the listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}, scriptInfo)
+ @property APP_SCRIPT_LOAD_FAILED
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
+ function(appConfig, scriptInfo) {
+ F2.log(appConfig.appId);
+ }
+ );
+ */
+ APP_SCRIPT_LOAD_FAILED: 'appScriptLoadFailed'
+ }
+});
- if (appConfig.height) {
- iframeProps.style.height = appConfig.height + 'px';
- }
+/**
+ Class stubs for documentation purposes
+ @main F2
+*/
+F2.extend('', {
+ /**
+ The App Class is an optional class that can be namespaced onto the
+ {{#crossLink "F2\Apps"}}{{/crossLink}} namespace. The
+ [F2 Docs](../../app-development.html#app-class) has more information on the
+ usage of the App Class.
+ @class F2.App
+ @constructor
+ @param {F2.AppConfig} appConfig The F2.AppConfig object for the app
+ @param {F2.AppManifest.AppContent} appContent The F2.AppManifest.AppContent
+ object
+ @param {Element} root The root DOM Element for the app
+ */
+ App: function(appConfig, appContent, root) {
+ return {
+ /**
+ An optional init function that will automatically be called when
+ F2.{{#crossLink "F2\registerApps"}}{{/crossLink}} is called.
+ @method init
+ @optional
+ */
+ init: function() {}
+ };
+ },
+ /**
+ The AppConfig object represents an app's meta data
+ @class F2.AppConfig
+ */
+ AppConfig: {
+ /**
+ The unique ID of the app. More information can be found
+ [here](../../app-development.html#f2-appid).
+ @property appId
+ @type string
+ @required
+ */
+ appId: '',
+ /**
+ An object that represents the context of an app.
+ @property context
+ @type object
+ */
+ context: {},
+ /**
+ True if the app should be requested in a single request with other apps.
+ @property enableBatchRequests
+ @type bool
+ @default false
+ */
+ enableBatchRequests: false,
+ /**
+ The height of the app. The initial height will be pulled from the
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} object, but later modified by
+ calling F2.UI.{{#crossLink "F2.UI/updateHeight"}}{{/crossLink}}. This is
+ used for secure apps to be able to set the initial height of the iframe.
+ @property height
+ @type int
+ */
+ height: 0,
+ /**
+ The unique runtime ID of the app.
+ **This property is populated during the
+ F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process**
+ @property instanceId
+ @type string
+ */
+ instanceId: '',
+ /**
+ True if the app will be loaded in an iframe. This property will be true
+ if the {{#crossLink "F2.AppConfig"}}{{/crossLink}} object sets
+ `isSecure = true`. It will also be true if the
+ [container](../../container-development.html) has made the decision to
+ run apps in iframes.
+ @property isSecure
+ @type bool
+ @default false
+ */
+ isSecure: false,
+ /**
+ The language and region specification for this container represented as
+ an IETF-defined standard language tag, e.g. `"en-us"` or `"de-de"`. This
+ is passed during the F2.{{#crossLink "F2/registerApps"}}{{/crossLink}}
+ process.
+ @property containerLocale
+ @type string
+ @default null
+ @since 1.4.0
+ */
+ containerLocale: null,
+ /**
+ The languages and regions supported by this app represented as an array
+ of IETF-defined standard language tags, e.g. `["en-us","de-de"]`.
+ @property localeSupport
+ @type array
+ @default []
+ @since 1.4.0
+ */
+ localeSupport: [],
+ /**
+ The url to retrieve the {{#crossLink "F2.AppManifest"}}{{/crossLink}}
+ object.
+ @property manifestUrl
+ @type string
+ @required
+ */
+ manifestUrl: '',
+ /**
+ The recommended maximum width in pixels that this app should be run. **It
+ is up to the [container](../../container-development.html) to implement
+ the logic to prevent an app from being run when the maxWidth requirements
+ are not met.**
+ @property maxWidth
+ @type int
+ */
+ maxWidth: 0,
+ /**
+ The recommended minimum grid size that this app should be run. This value
+ corresponds to the 12-grid system that is used by the
+ [container](../../container-development.html). This property should be
+ set by apps that require a certain number of columns in their layout.
+ @property minGridSize
+ @type int
+ @default 4
+ */
+ minGridSize: 4,
+ /**
+ The recommended minimum width in pixels that this app should be run.
+ **It is up to the [container](../../container-development.html) to
+ implement the logic to prevent an app from being run when the minWidth
+ requirements are not met.
+ @property minWidth
+ @type int
+ @default 300
+ */
+ minWidth: 300,
+ /**
+ The name of the app.
+ @property name
+ @type string
+ @required
+ */
+ name: '',
+ /**
+ The root DOM element that contains the app.
+ **This property is populated during the
+ F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process.**
+ @property root
+ @type Element
+ */
+ root: undefined,
+ /**
+ The instance of F2.UI providing easy access to F2.UI methods.
+ **This property is populated during the
+ F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process.**
+ @property ui
+ @type F2.UI
+ */
+ ui: undefined,
+ /**
+ The views that this app supports. Available views are defined in
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}}. The presence of a view
+ can be checked via F2.{{#crossLink "F2/inArray"}}{{/crossLink}}:
+ F2.inArray(F2.Constants.Views.SETTINGS, app.views).
+ @property views
+ @type Array
+ */
+ views: []
+ },
+ /**
+ The assets needed to render an app on the page.
+ @class F2.AppManifest
+ */
+ AppManifest: {
+ /**
+ The array of {{#crossLink "F2.AppManifest.AppContent"}}{{/crossLink}}
+ objects.
+ @property apps
+ @type Array
+ @required
+ */
+ apps: [],
+ /**
+ Any inline javascript tha should initially be run.
+ @property inlineScripts
+ @type Array
+ @optional
+ */
+ inlineScripts: [],
+ /**
+ Urls to javascript files required by the app.
+ @property scripts
+ @type Array
+ @optional
+ */
+ scripts: [],
+ /**
+ Urls to CSS files required by the app.
+ @property styles
+ @type Array
+ @optional
+ */
+ styles: []
+ },
+ /**
+ The AppContent object.
+ @class F2.AppManifest.AppContent
+ */
+ AppContent: {
+ /**
+ Arbitrary data to be passed along with the app.
+ @property data
+ @type object
+ @optional
+ */
+ data: {},
+ /**
+ The string of HTML representing the app.
+ @property html
+ @type string
+ @required
+ */
+ html: '',
+ /**
+ A status message.
+ @property status
+ @type string
+ @optional
+ */
+ status: ''
+ },
+ /**
+ An object containing configuration information for the
+ [container](../../container-development.html).
+ @class F2.ContainerConfig
+ */
+ ContainerConfig: {
+ /**
+ Allows the [container](../../container-development.html) to override how
+ an app's html is inserted into the page. The function should accept an
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} object and also a string of
+ html.
+ @method afterAppRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} html The string of html representing the app
+ @return {Element} The DOM Element surrounding the app
+ */
+ afterAppRender: null,
+ /**
+ Allows the [container](../../container-development.html) to wrap an app
+ in extra html. The function should accept an
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} object and also a string of
+ html. The extra html can provide links to edit app settings and remove an
+ app from the container. See
+ {{#crossLink "F2.Constants.Css"}}{{/crossLink}} for CSS classes that
+ should be applied to elements.
+ @method appRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} html The string of html representing the app
+ */
+ appRender: null,
+ /**
+ Allows the container to render html for an app before the AppManifest for
+ an app has loaded. This can be useful if the design calls for loading
+ icons to appear for each app before each app is loaded and rendered to
+ the page.
+ @method beforeAppRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @return {Element} The DOM Element surrounding the app
+ */
+ beforeAppRender: null,
+ /**
+ True to enable debug mode in F2.js. Adds additional logging, resource
+ cache busting, etc.
+ @property debugMode
+ @type bool
+ @default false
+ */
+ debugMode: false,
+ /**
+ The default language and region specification for this container
+ represented as an IETF-defined standard language tag, e.g. `"en-us"` or
+ `"de-de"`. This value is passed to each app registered as
+ `containerLocale`.
+ @property locale
+ @type string
+ @default null
+ @since 1.4.0
+ */
+ locale: null,
+ /**
+ Milliseconds before F2 fires callback on script resource load errors. Due
+ to issue with the way Internet Explorer attaches load events to script
+ elements, the error event doesn't fire.
+ @property scriptErrorTimeout
+ @type milliseconds
+ @default 7000 (7 seconds)
+ */
+ scriptErrorTimeout: 7000,
+ /**
+ Tells the container that it is currently running within a secure app page.
+ @property isSecureAppPage
+ @type bool
+ */
+ isSecureAppPage: false,
+ /**
+ Allows the container to specify which page is used when loading a secure
+ app. The page must reside on a different domain than the container.
+ @property secureAppPagePath
+ @type string
+ @for F2.ContainerConfig
+ */
+ secureAppPagePath: '',
+ /**
+ Specifies what views a container will provide buttons or links to.
+ Generally, the views will be switched via buttons or links in the app's
+ header.
+ @property supportedViews
+ @type Array
+ @required
+ */
+ supportedViews: [],
+ /**
+ An object containing configuration defaults for F2.UI.
+ @class F2.ContainerConfig.UI
+ */
+ UI: {
+ /**
+ An object containing configuration defaults for the
+ F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} and
+ F2.UI.{{#crossLink "F2.UI/hideMask"}}{{/crossLink}} methods.
+ @class F2.ContainerConfig.UI.Mask
+ */
+ Mask: {
+ /**
+ The backround color of the overlay.
+ @property backgroundColor
+ @type string
+ @default #FFF
+ */
+ backgroundColor: '#FFF',
+ /**
+ The path to the loading icon.
+ @property loadingIcon
+ @type string
+ */
+ loadingIcon: '',
+ /**
+ The opacity of the background overlay.
+ @property opacity
+ @type int
+ @default 0.6
+ */
+ opacity: 0.6,
+ /**
+ Do not use inline styles for mask functinality. Instead classes will
+ be applied to the elements and it is up to the container provider to
+ implement the class definitions.
+ @property useClasses
+ @type bool
+ @default false
+ */
+ useClasses: false,
+ /**
+ The z-index to use for the overlay
+ @property zIndex
+ @type int
+ @default 2
+ */
+ zIndex: 2
+ }
+ },
+ /**
+ Allows the container to override individual parts of the AppManifest
+ request. See properties and methods with the `xhr.` prefix.
+ @property xhr
+ @type Object
+ @example
+ F2.init({
+ xhr: {
+ url: function(url, appConfigs) {
+ return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url);
+ }
+ }
+ });
+ */
+ xhr: {
+ /**
+ Allows the container to override the request data type (JSON or JSONP)
+ that is used for the request.
+ @method xhr.dataType
+ @param {string} url The manifest url
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
+ @return {string} The request data type that should be used
+ @example
+ F2.init({
+ xhr: {
+ dataType: function(url) {
+ return F2.isLocalRequest(url) ? 'json' : 'jsonp';
+ },
+ type: function(url) {
+ return F2.isLocalRequest(url) ? 'POST' : 'GET';
+ }
+ }
+ });
+ */
+ dataType: null,
+ /**
+ Allows the container to override the request method that is used (just
+ like the `type` parameter to `jQuery.ajax()`.
+ @method xhr.type
+ @param {string} url The manifest url
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
+ @return {string} The request method that should be used
+ @example
+ F2.init({
+ xhr: {
+ dataType: function(url) {
+ return F2.isLocalRequest(url) ? 'json' : 'jsonp';
+ },
+ type: function(url) {
+ return F2.isLocalRequest(url) ? 'POST' : 'GET';
+ }
+ }
+ });
+ */
+ type: null,
+ /**
+ Allows the container to override the url that is used to request an
+ app's F2.{{#crossLink "F2.AppManifest"}}{{/crossLink}}.
+ @method xhr.url
+ @param {string} url The manifest url
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
+ @return {string} The url that should be used for the request
+ @example
+ F2.init({
+ xhr: {
+ url: function(url, appConfigs) {
+ return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url);
+ }
+ }
+ });
+ */
+ url: null
+ },
+ /**
+ Allows the container to override the script loader which requests
+ dependencies defined in the {{#crossLink "F2.AppManifest"}}{{/crossLink}}.
+ @method loadScripts
+ @param {Array} scripts Script file urls to be loaded
+ @param {Array} inlines Inline JavaScript to be run
+ @param {Function} callback Should be called when loading is complete
+ @example
+ F2.init({
+ loadScripts: function(scripts, inlines, callback) {
+ // Load scripts using $.load() for each script or require(scripts)
+ callback();
+ }
+ });
+ */
+ loadScripts: function(scripts, inlines, callback) {},
+ /**
+ Allows the container to override the stylesheet loader which requests
+ dependencies defined in the {{#crossLink "F2.AppManifest"}}{{/crossLink}}.
+ @method loadStyles
+ @param {Array} styles CSS file urls to be loaded
+ @param {Function} callback Should be called when loading is complete
+ @example
+ F2.init({
+ loadStyles: function(styles, callback) {
+ // Load styles using $.load() for each stylesheet or another method
+ callback();
+ }
+ });
+ */
+ loadStyles: function(styles, callback) {}
+ }
+});
- var socket = new easyXDM.Socket({
- remote: _secureAppPagePath,
- container: container.get(0),
- props:iframeProps,
- onMessage: function(message, origin) {
- // pass everything to _onMessage
- _onMessage(appConfig, message, origin);
- },
- onReady: function() {
- socket.postMessage(F2.Constants.Sockets.LOAD + F2.stringify([appConfig, appManifest], F2.appConfigReplacer));
- }
- });
+/**
+ Constants used throughout the Open Financial Framework.
+ @class F2.Constants
+ @static
+*/
+F2.extend('Constants', {
+ /**
+ CSS class constants
+ @class F2.Constants.Css
+ */
+ Css: {
+ /**
+ The APP class should be applied to the DOM Element that surrounds the
+ entire app, including any extra html that surrounds the APP\_CONTAINER
+ that is inserted by the container. See the
+ {{#crossLink "F2.ContainerConfig"}}{{/crossLink}} object.
+ @property APP
+ @type string
+ @static
+ @final
+ */
+ APP: 'f2-app',
+ /**
+ The APP\_CONTAINER class should be applied to the outermost DOM Element
+ of the app.
+ @property APP_CONTAINER
+ @type string
+ @static
+ @final
+ */
+ APP_CONTAINER: 'f2-app-container',
+ /**
+ The APP\_TITLE class should be applied to the DOM Element that contains
+ the title for an app. If this class is not present, then
+ F2.UI.{{#crossLink "F2.UI/setTitle"}}{{/crossLink}} will not function.
+ @property APP_TITLE
+ @type string
+ @static
+ @final
+ */
+ APP_TITLE: 'f2-app-title',
+ /**
+ The APP\_VIEW class should be applied to the DOM Element that contains
+ a view for an app. The DOM Element should also have a
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}}.DATA_ATTRIBUTE
+ attribute that specifies which
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}} it is.
+ @property APP_VIEW
+ @type string
+ @static
+ @final
+ */
+ APP_VIEW: 'f2-app-view',
+ /**
+ APP\_VIEW\_TRIGGER class should be applied to the DOM Elements that
+ trigger an
+ {{#crossLink "F2.Constants.Events"}}{{/crossLink}}.APP\_VIEW\_CHANGE
+ event. The DOM Element should also have a
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}}.DATA_ATTRIBUTE
+ attribute that specifies which
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}} it will trigger.
+ @property APP_VIEW_TRIGGER
+ @type string
+ @static
+ @final
+ */
+ APP_VIEW_TRIGGER: 'f2-app-view-trigger',
+ /**
+ The MASK class is applied to the overlay element that is created
+ when the F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} method is
+ fired.
+ @property MASK
+ @type string
+ @static
+ @final
+ */
+ MASK: 'f2-mask',
+ /**
+ The MASK_CONTAINER class is applied to the Element that is passed into
+ the F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} method.
+ @property MASK_CONTAINER
+ @type string
+ @static
+ @final
+ */
+ MASK_CONTAINER: 'f2-mask-container'
+ },
+ /**
+ Events constants
+ @class F2.Constants.Events
+ */
+ Events: {
+ /**
+ The APP\_SYMBOL\_CHANGE event is fired when the symbol is changed in an
+ app. It is up to the app developer to fire this event. Returns an object
+ with the symbol and company name:
+ `{ symbol: 'MSFT', name: 'Microsoft Corp (NASDAQ)' }`
+ @property APP_SYMBOL_CHANGE
+ @type string
+ @static
+ @final
+ */
+ APP_SYMBOL_CHANGE: 'App.symbolChange',
+ /**
+ The APP\_WIDTH\_CHANGE event will be fired by the container when the
+ width of an app is changed. The app's instanceId should be concatenated
+ to this constant. Returns an object with the gridSize and width in pixels:
+ `{ gridSize: 8, width: 620 }`
+ @property APP_WIDTH_CHANGE
+ @type string
+ @static
+ @final
+ */
+ APP_WIDTH_CHANGE: 'App.widthChange.',
+ /**
+ The CONTAINER\_SYMBOL\_CHANGE event is fired when the symbol is changed
+ at the container level. This event should only be fired by the container
+ or container provider. Returns an object with the symbol and company name:
+ `{ symbol: 'MSFT', name: 'Microsoft Corp (NASDAQ)' }`
+ @property CONTAINER_SYMBOL_CHANGE
+ @type string
+ @static
+ @final
+ */
+ CONTAINER_SYMBOL_CHANGE: 'Container.symbolChange',
+ /**
+ The CONTAINER\_WIDTH\_CHANGE event will be fired by the container when
+ the width of the container has changed.
+ @property CONTAINER_WIDTH_CHANGE
+ @type string
+ @static
+ @final
+ */
+ CONTAINER_WIDTH_CHANGE: 'Container.widthChange',
+ /**
+ The CONTAINER\_LOCALE\_CHANGE event will be fired by the container when
+ the locale of the container has changed. This event should only be fired
+ by the container or container provider. Returns an object with the
+ updated locale (IETF-defined standard language tag):
+ `{ locale: 'en-us' }`
+ @property CONTAINER_LOCALE_CHANGE
+ @type string
+ @static
+ @final
+ */
+ CONTAINER_LOCALE_CHANGE: 'Container.localeChange'
+ },
+ JSONP_CALLBACK: 'F2_jsonpCallback_',
+ /**
+ Constants for use with cross-domain sockets.
+ @class F2.Constants.Sockets
+ @protected
+ */
+ Sockets: {
+ /**
+ The EVENT message is sent whenever
+ F2.Events.{{#crossLink "F2.Events/emit"}}{{/crossLink}} is fired.
+ @property EVENT
+ @type string
+ @static
+ @final
+ */
+ EVENT: '__event__',
+ /**
+ The LOAD message is sent when an iframe socket initially loads. Returns
+ a JSON string that represents: `[ App, AppManifest]`
+ @property LOAD
+ @type string
+ @static
+ @final
+ */
+ LOAD: '__socketLoad__',
+ /**
+ The RPC message is sent when a method is passed up from within a secure
+ app page.
+ @property RPC
+ @type string
+ @static
+ @final
+ */
+ RPC: '__rpc__',
+ /**
+ The RPC\_CALLBACK message is sent when a call back from an RPC method is
+ fired.
+ @property RPC_CALLBACK
+ @type string
+ @static
+ @final
+ */
+ RPC_CALLBACK: '__rpcCallback__',
+ /**
+ The UI\_RPC message is sent when a UI method called.
+ @property UI_RPC
+ @type string
+ @static
+ @final
+ */
+ UI_RPC: '__uiRpc__'
+ },
+ /**
+ The available view types to apps. The view should be specified by applying
+ the {{#crossLink "F2.Constants.Css"}}{{/crossLink}}.APP\_VIEW class to the
+ containing DOM Element. A DATA\_ATTRIBUTE attribute should be added to the
+ Element as well which defines what view type is represented. The `hide`
+ class can be applied to views that should be hidden by default.
+ @class F2.Constants.Views
+ */
+ Views: {
+ /**
+ The DATA_ATTRIBUTE should be placed on the DOM Element that contains the
+ view.
+ @property DATA_ATTRIBUTE
+ @type string
+ @static
+ @final
+ */
+ DATA_ATTRIBUTE: 'data-f2-view',
+ /**
+ The ABOUT view gives details about the app.
+ @property ABOUT
+ @type string
+ @static
+ @final
+ */
+ ABOUT: 'about',
+ /**
+ The HELP view provides users with help information for using an app.
+ @property HELP
+ @type string
+ @static
+ @final
+ */
+ HELP: 'help',
+ /**
+ The HOME view is the main view for an app. This view should always be
+ provided by an app.
+ @property HOME
+ @type string
+ @static
+ @final
+ */
+ HOME: 'home',
+ /**
+ The REMOVE view is a special view that handles the removal of an app from
+ the container.
+ @property REMOVE
+ @type string
+ @static
+ @final
+ */
+ REMOVE: 'remove',
+ /**
+ The SETTINGS view provides users the ability to modify advanced settings
+ for an app.
+ @property SETTINGS
+ @type string
+ @static
+ @final
+ */
+ SETTINGS: 'settings'
+ }
+});
- return socket;
- };
+/**
+ Root namespace of the F2 SDK
+ @module f2
+ @class F2
+*/
+F2.extend('', (function() {
- /**
- * @method _createRpcCallback
- * @private
- * @param {string} instanceId The app's Instance ID
- * @param {function} callbackId The callback ID
- * @return {function} A function to make the RPC call
- */
- var _createRpcCallback = function(instanceId, callbackId) {
- return function() {
- F2.Rpc.call(
- instanceId,
- F2.Constants.Sockets.RPC_CALLBACK,
- callbackId,
- [].slice.call(arguments).slice(2)
- );
- };
- };
+ var _apps = {};
+ var _config = false;
+ var _usesAppHandlers = false;
+ var _appHandlerToken = F2.AppHandlers.__f2GetToken();
+ var _loadedScripts = {};
+ var _loadedStyles = {};
+ var _loadingScripts = {};
+
+ /**
+ Appends the app's html to the DOM.
+ @method _afterAppRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} html The string of html
+ @return {Element} The DOM Element that contains the app
+ */
+ function _afterAppRender(appConfig, html) {
+ var handler = _config.afterAppRender || function(_appConfig, _html) {
+ return jQuery(_html).appendTo('body');
+ };
+ var $appContainer = handler(appConfig, html);
- /**
- * Handles messages that come across the sockets
- * @method _onMessage
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} message The socket message
- * @param {string} origin The originator
- */
- var _onMessage = function(appConfig, message, origin) {
+ if (_config.afterAppRender && !$appContainer) {
+ F2.log('F2.ContainerConfig.afterAppRender() must return the DOM Element that contains the app');
+ return;
+ }
- var obj, func;
+ jQuery($appContainer).addClass(F2.Constants.Css.APP);
- function parseFunction(parent, functionName) {
- var path = String(functionName).split('.');
- for (var i = 0; i < path.length; i++) {
- if (parent[path[i]] === undefined) {
- parent = undefined;
- break;
- }
- parent = parent[path[i]];
- }
- return parent;
- }
-
- function parseMessage(regEx, message, instanceId) {
- var o = F2.parse(message.replace(regEx, ''));
-
- // if obj.callbacks
- // for each callback
- // for each params
- // if callback matches param
- // replace param with _createRpcCallback(app.instanceId, callback)
- if (o.params && o.params.length && o.callbacks && o.callbacks.length) {
- jQuery.each(o.callbacks, function(i, c) {
- jQuery.each(o.params, function(i, p) {
- if (c == p) {
- o.params[i] = _createRpcCallback(instanceId, c);
- }
- });
- });
- }
+ return $appContainer.get(0);
+ }
- return o;
- }
+ /**
+ Renders the html for an app.
+ @method _appRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0.
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} html The string of html
+ @returns {string} HTML for the app
+ */
+ function _appRender(appConfig, html) {
+ // Apply APP_CONTAINER class and AppID
+ html = _outerHtml(jQuery(html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId));
+
+ // Optionally apply wrapper html
+ if (_config.appRender) {
+ html = _config.appRender(appConfig, html);
+ }
- // handle UI Call
- if (_rUiCall.test(message)) {
- obj = parseMessage(_rUiCall, message, appConfig.instanceId);
- func = parseFunction(appConfig.ui, obj.functionName);
- // if we found the function, call it
- if (func !== undefined) {
- func.apply(appConfig.ui, obj.params);
- } else {
- F2.log('Unable to locate UI RPC function: ' + obj.functionName);
- }
+ return _outerHtml(html);
+ }
- // handle RPC
- } else if (_rRpc.test(message)) {
- obj = parseMessage(_rRpc, message, appConfig.instanceId);
- func = parseFunction(window, obj.functionName);
- if (func !== undefined) {
- func.apply(func, obj.params);
- } else {
- F2.log('Unable to locate RPC function: ' + obj.functionName);
- }
+ /**
+ Rendering hook to allow containers to render some html prior to an app
+ loading.
+ @method _beforeAppRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0.
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @return {Element} The DOM Element surrounding the app
+ */
+ function _beforeAppRender(appConfig) {
+ var handler = _config.beforeAppRender || jQuery.noop;
+ return handler(appConfig);
+ }
- // handle RPC Callback
- } else if (_rRpcCallback.test(message)) {
- obj = parseMessage(_rRpcCallback, message, appConfig.instanceId);
- if (_callbacks[obj.functionName] !== undefined) {
- _callbacks[obj.functionName].apply(_callbacks[obj.functionName], obj.params);
- delete _callbacks[obj.functionName];
- }
+ /**
+ Handler to inform the container that a script failed to load.
+ @method _onScriptLoadFailure
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0.
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} scriptInfo The path of the script that failed to load or
+ the exception info for the inline script that failed to execute.
+ */
+ function _appScriptLoadFailed(appConfig, scriptInfo) {
+ if (_config.appScriptLoadFailed) {
+ _config.appScriptLoadFailed(appConfig, scriptInfo);
+ }
+ }
- // handle Events
- } else if (_rEvents.test(message)) {
- obj = parseMessage(_rEvents, message, appConfig.instanceId);
- F2.Events._socketEmit.apply(F2.Events, obj);
- }
- };
+ /**
+ Adds properties to the AppConfig object.
+ @method _createAppConfig
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @return {F2.AppConfig} The new F2.AppConfig object, prepopulated with
+ necessary properties.
+ */
+ function _createAppConfig(appConfig) {
+ // Make a copy of the app config to ensure that the original is not modified
+ appConfig = jQuery.extend(true, {}, appConfig);
+
+ // Create the instanceId for the app
+ appConfig.instanceId = appConfig.instanceId || F2.guid();
+
+ // Default the views if not provided
+ appConfig.views = appConfig.views || [];
+ if (!F2.inArray(F2.Constants.Views.HOME, appConfig.views)) {
+ appConfig.views.push(F2.Constants.Views.HOME);
+ }
- /**
- * Registers a callback function
- * @method _registerCallback
- * @private
- * @param {function} callback The callback function
- * @return {string} The callback ID
- */
- var _registerCallback = function(callback) {
- var callbackId = F2.guid();
- _callbacks[callbackId] = callback;
- return callbackId;
- };
+ // Pass container-defined locale to each app
+ if (F2.ContainerConfig.locale) {
+ appConfig.containerLocale = F2.ContainerConfig.locale;
+ }
- return {
- /**
- * Broadcast an RPC function to all sockets
- * @method broadcast
- * @param {string} messageType The message type
- * @param {Array} params The parameters to broadcast
- */
- broadcast: function(messageType, params) {
- // check valid messageType
- var message = messageType + F2.stringify(params);
- jQuery.each(_apps, function(i, a) {
- a.socket.postMessage(message);
- });
- },
- /**
- * Calls a remote function
- * @method call
- * @param {string} instanceId The app's Instance ID
- * @param {string} messageType The message type
- * @param {string} functionName The name of the remote function
- * @param {Array} params An array of parameters to pass to the remote
- * function. Any functions found within the params will be treated as a
- * callback function.
- */
- call: function(instanceId, messageType, functionName, params) {
- // loop through params and find functions and convert them to callbacks
- var callbacks = [];
- jQuery.each(params, function(i, e) {
- if (typeof e === 'function') {
- var cid = _registerCallback(e);
- params[i] = cid;
- callbacks.push(cid);
- }
- });
- // check valid messageType
- _apps[instanceId].socket.postMessage(
- messageType + F2.stringify({
- functionName:functionName,
- params:params,
- callbacks:callbacks
- })
- );
- },
+ return appConfig;
+ }
- /**
- * Init function which tells F2.Rpc whether it is running at the container-
- * level or the app-level. This method is generally called by
- * F2.{{#crossLink "F2/init"}}{{/crossLink}}
- * @method init
- * @param {string} [secureAppPagePath] The
- * {{#crossLink "F2.ContainerConfig"}}{{/crossLink}}.secureAppPagePath
- * property
- */
- init: function(secureAppPagePath) {
- _secureAppPagePath = secureAppPagePath;
- if (!_secureAppPagePath) {
- _createAppToContainerSocket();
- }
- },
+ /**
+ Generate an AppConfig from the element's attributes.
+ @method _getAppConfigFromElement
+ @private
+ @param {Element} node The DOM node from which to generate the F2.AppConfig
+ object
+ @return {F2.AppConfig} The new F2.AppConfig object
+ */
+ function _getAppConfigFromElement(node) {
+ var appConfig;
+
+ if (node) {
+ var appId = node.getAttribute('data-f2-appid');
+ var manifestUrl = node.getAttribute('data-f2-manifesturl');
+
+ if (appId && manifestUrl) {
+ appConfig = {
+ appId: appId,
+ enableBatchRequests: node.hasAttribute('data-f2-enablebatchrequests'),
+ isSecure: node.hasAttribute('data-f2-issecure'),
+ manifestUrl: manifestUrl,
+ root: node
+ };
- /**
- * Determines whether the Instance ID is considered to be 'remote'. This is
- * determined by checking if 1) the app has an open socket and 2) whether
- * F2.Rpc is running inside of an iframe
- * @method isRemote
- * @param {string} instanceId The Instance ID
- * @return {bool} True if there is an open socket
- */
- isRemote: function(instanceId) {
- return (
- // we have an app
- _apps[instanceId] !== undefined &&
- // the app is secure
- _apps[instanceId].config.isSecure &&
- // we can't access the iframe
- jQuery(_apps[instanceId].config.root).find('iframe').length === 0
- );
- },
+ // See if the user passed in a block of serialized json
+ var contextJson = node.getAttribute('data-f2-context');
- /**
- * Creates a container-to-app or app-to-container socket for communication
- * @method register
- * @param {F2.AppConfig} [appConfig] The F2.AppConfig object
- * @param {F2.AppManifest} [appManifest] The F2.AppManifest object
- */
- register: function(appConfig, appManifest) {
- if (!!appConfig && !!appManifest) {
- _apps[appConfig.instanceId] = {
- config:appConfig,
- socket:_createContainerToAppSocket(appConfig, appManifest)
- };
- } else {
- F2.log('Unable to register socket connection. Please check container configuration.');
- }
- }
- };
-})());
-F2.extend('UI', (function(){
+ if (contextJson) {
+ try {
+ appConfig.context = F2.parse(contextJson);
+ } catch (e) {
+ console.warn('F2: "data-f2-context" of node is not valid JSON', '"' + e + '"');
+ }
+ }
+ }
+ }
- var _containerConfig;
+ return appConfig;
+ }
- /**
- * UI helper methods
- * @class F2.UI
- * @constructor
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- */
- var UI_Class = function(appConfig) {
-
- var _appConfig = appConfig;
- var $root = jQuery(appConfig.root);
-
- var _updateHeight = function(height) {
- height = height || jQuery(_appConfig.root).outerHeight();
-
- if (F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'updateHeight',
- [
- height
- ]
- );
- } else {
- _appConfig.height = height;
- $root.find('iframe').height(_appConfig.height);
- }
- };
+ /**
+ Returns true if the DOM node has children that are not text nodes
+ @method _hasNonTextChildNodes
+ @private
+ @param {Element} node The DOM node
+ @return {bool} True if there are non-text children
+ */
+ function _hasNonTextChildNodes(node) {
+ var hasNodes = false;
+
+ if (node.hasChildNodes()) {
+ for (var i = 0, len = node.childNodes.length; i < len; i++) {
+ if (node.childNodes[i].nodeType === 1) {
+ hasNodes = true;
+ break;
+ }
+ }
+ }
- //http://getbootstrap.com/javascript/#modals
- var _modalHtml = function(type,message,showCancel){
- return [
- '
',
- '
',
- '
',
- '
',
- '',
- '
',type,'
',
- '
',
- '
',
- message,
- '
',
- '',
- '
',
- '
',
- '
'
- ].join('');
- };
+ return hasNodes;
+ }
- return {
- /**
- * Removes a overlay from an Element on the page
- * @method hideMask
- * @param {string|Element} selector The Element or selector to an Element
- * that currently contains the loader
- */
- hideMask: function(selector) {
- F2.UI.hideMask(_appConfig.instanceId, selector);
- },
- /**
- * Helper methods for creating and using Modals
- * @class F2.UI.Modals
- * @for F2.UI
- */
- Modals: (function(){
-
- var _renderAlert = function(message) {
- return _modalHtml('Alert',message);
- };
+ /**
+ Adds properties to the ContainerConfig object to take advantage of defaults.
+ @method _hydrateContainerConfig
+ @private
+ @param {F2.ContainerConfig} containerConfig The F2.ContainerConfig object
+ */
+ function _hydrateContainerConfig(containerConfig) {
+ if (!containerConfig.scriptErrorTimeout) {
+ containerConfig.scriptErrorTimeout = F2.ContainerConfig.scriptErrorTimeout;
+ }
- var _renderConfirm = function(message) {
- return _modalHtml('Confirm',message,true);
- };
+ if (containerConfig.debugMode !== true) {
+ containerConfig.debugMode = F2.ContainerConfig.debugMode;
+ }
- return {
- /**
- * Display an alert message on the page
- * @method alert
- * @param {string} message The message to be displayed
- * @param {function} [callback] The callback to be fired when the user
- * closes the dialog
- * @for F2.UI.Modals
- */
- alert: function(message, callback) {
-
- if (!F2.isInit()) {
- F2.log('F2.init() must be called before F2.UI.Modals.alert()');
- return;
- }
+ if (containerConfig.locale && typeof containerConfig.locale === 'string') {
+ F2.ContainerConfig.locale = containerConfig.locale;
+ }
+ }
- if (F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'Modals.alert',
- [].slice.call(arguments)
- );
- } else {
- // display the alert
- jQuery(_renderAlert(message))
- .on('show.bs.modal', function() {
- var modal = this;
- jQuery(modal).find('.btn-primary').on('click', function() {
- jQuery(modal).modal('hide').remove();
- (callback || jQuery.noop)();
- });
- })
- .modal({backdrop:true});
- }
- },
- /**
- * Display a confirm message on the page
- * @method confirm
- * @param {string} message The message to be displayed
- * @param {function} okCallback The function that will be called when the OK
- * button is pressed
- * @param {function} cancelCallback The function that will be called when
- * the Cancel button is pressed
- * @for F2.UI.Modals
- */
- confirm: function(message, okCallback, cancelCallback) {
-
- if (!F2.isInit()) {
- F2.log('F2.init() must be called before F2.UI.Modals.confirm()');
- return;
- }
+ /**
+ Attach app events.
+ @method _initAppEvents
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ */
+ function _initAppEvents(appConfig) {
+ var elementFilter = '.' + F2.Constants.Css.APP_VIEW_TRIGGER + '[' + F2.Constants.Views.DATA_ATTRIBUTE + ']';
- if (F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'Modals.confirm',
- [].slice.call(arguments)
- );
- } else {
- // display the alert
- jQuery(_renderConfirm(message))
- .on('show.bs.modal', function() {
- var modal = this;
-
- jQuery(modal).find('.btn-ok').on('click', function() {
- jQuery(modal).modal('hide').remove();
- (okCallback || jQuery.noop)();
- });
-
- jQuery(modal).find('.btn-cancel').on('click', function() {
- jQuery(modal).modal('hide').remove();
- (cancelCallback || jQuery.noop)();
- });
- })
- .modal({backdrop:true});
- }
- }
- };
- })(),
- /**
- * Sets the title of the app as shown in the browser. Depending on the
- * container HTML, this method may do nothing if the container has not been
- * configured properly or else the container provider does not allow Title's
- * to be set.
- * @method setTitle
- * @params {string} title The title of the app
- * @for F2.UI
- */
- setTitle: function(title) {
-
- if (F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'setTitle',
- [
- title
- ]
- );
- } else {
- jQuery(_appConfig.root).find('.' + F2.Constants.Css.APP_TITLE).text(title);
- }
- },
- /**
- * Display an ovarlay over an Element on the page
- * @method showMask
- * @param {string|Element} selector The Element or selector to an Element
- * over which to display the loader
- * @param {bool} showLoading Display a loading icon
- */
- showMask: function(selector, showLoader) {
- F2.UI.showMask(_appConfig.instanceId, selector, showLoader);
- },
- /**
- * For secure apps, this method updates the size of the iframe that
- * contains the app. **Note: It is recommended that app developers call
- * this method anytime Elements are added or removed from the DOM**
- * @method updateHeight
- * @params {int} height The height of the app
- */
- updateHeight: _updateHeight,
- /**
- * Helper methods for creating and using Views
- * @class F2.UI.Views
- * @for F2.UI
- */
- Views: (function(){
-
- var _events = new EventEmitter2();
- var _rValidEvents = /change/i;
-
- // unlimited listeners, set to > 0 for debugging
- _events.setMaxListeners(0);
-
- var _isValid = function(eventName) {
- if (_rValidEvents.test(eventName)) {
- return true;
- } else {
- F2.log('"' + eventName + '" is not a valid F2.UI.Views event name');
- return false;
- }
- };
+ jQuery(appConfig.root).on('click', elementFilter, function(e) {
+ e.preventDefault();
- return {
- /**
- * Change the current view for the app or add an event listener
- * @method change
- * @param {string|function} [input] If a string is passed in, the view
- * will be changed for the app. If a function is passed in, a change
- * event listener will be added.
- * @for F2.UI.Views
- */
- change: function(input) {
-
- if (typeof input === 'function') {
- this.on('change', input);
- } else if (typeof input === 'string') {
-
- if (_appConfig.isSecure && !F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'Views.change',
- [].slice.call(arguments)
- );
- } else if (F2.inArray(input, _appConfig.views)) {
- jQuery('.' + F2.Constants.Css.APP_VIEW, $root)
- .addClass('hide')
- .filter('[data-f2-view="' + input + '"]', $root)
- .removeClass('hide');
-
- _updateHeight();
- _events.emit('change', input);
- }
- }
- },
- /**
- * Removes a view event listener
- * @method off
- * @param {string} event The event name
- * @param {function} listener The function that will be removed
- * @for F2.UI.Views
- */
- off: function(event, listener) {
- if (_isValid(event)) {
- _events.off(event, listener);
- }
- },
- /**
- * Adds a view event listener
- * @method on
- * @param {string} event The event name
- * @param {function} listener The function to be fired when the event is
- * emitted
- * @for F2.UI.Views
- */
- on: function(event, listener) {
- if (_isValid(event)) {
- _events.on(event, listener);
- }
- }
- };
- })()
- };
- };
+ var view = jQuery(this).attr(F2.Constants.Views.DATA_ATTRIBUTE).toLowerCase();
- /**
- * Removes a overlay from an Element on the page
- * @method hideMask
- * @static
- * @param {string} instanceId The Instance ID of the app
- * @param {string|Element} selector The Element or selector to an Element
- * that currently contains the loader
- * @for F2.UI
- */
- UI_Class.hideMask = function(instanceId, selector) {
+ // Handle the special REMOVE view
+ if (view === F2.Constants.Views.REMOVE) {
+ F2.removeApp(appConfig.instanceId);
+ } else {
+ appConfig.ui.Views.change(view);
+ }
+ });
+ }
- if (!F2.isInit()) {
- F2.log('F2.init() must be called before F2.UI.hideMask()');
- return;
- }
+ /**
+ Attach container Events
+ @method _initContainerEvents
+ @private
+ */
+ function _initContainerEvents() {
+ function resizeHandler() {
+ F2.Events.emit(F2.Constants.Events.CONTAINER_WIDTH_CHANGE);
+ }
- if (F2.Rpc.isRemote(instanceId) && !jQuery(selector).is('.' + F2.Constants.Css.APP)) {
- F2.Rpc.call(
- instanceId,
- F2.Constants.Sockets.RPC,
- 'F2.UI.hideMask',
- [
- instanceId,
- // must only pass the selector argument. if we pass an Element there
- // will be F2.stringify() errors
- jQuery(selector).selector
- ]
- );
- } else {
-
- var container = jQuery(selector);
- container.find('> .' + F2.Constants.Css.MASK).remove();
- container.removeClass(F2.Constants.Css.MASK_CONTAINER);
-
- // if the element contains this data property, we need to reset static
- // position
- if (container.data(F2.Constants.Css.MASK_CONTAINER)) {
- container.css({'position':'static'});
- }
- }
- };
+ var resizeTimeout;
- /**
- *
- * @method init
- * @static
- * @param {F2.ContainerConfig} containerConfig The F2.ContainerConfig object
- */
- UI_Class.init = function(containerConfig) {
- _containerConfig = containerConfig;
+ jQuery(window).on('resize', function() {
+ clearTimeout(resizeTimeout);
+ resizeTimeout = setTimeout(resizeHandler, 100);
+ });
- // set defaults
- _containerConfig.UI = jQuery.extend(true, {}, F2.ContainerConfig.UI, _containerConfig.UI || {});
- };
+ // Listen for container-broadcasted locale changes
+ F2.Events.on(F2.Constants.Events.CONTAINER_LOCALE_CHANGE, function(data) {
+ if (data.locale && typeof data.locale === 'string') {
+ F2.ContainerConfig.locale = data.locale;
+ }
+ });
+ }
- /**
- * Display an ovarlay over an Element on the page
- * @method showMask
- * @static
- * @param {string} instanceId The Instance ID of the app
- * @param {string|Element} selector The Element or selector to an Element
- * over which to display the loader
- * @param {bool} showLoading Display a loading icon
- */
- UI_Class.showMask = function(instanceId, selector, showLoading) {
+ /**
+ Checks if an element is a placeholder element.
+ @method _isPlaceholderElement
+ @private
+ @param {Element} node The DOM element to check
+ @return {bool} True if the element is a placeholder
+ */
+ function _isPlaceholderElement(node) {
+ return (
+ F2.isNativeDOMNode(node) &&
+ !_hasNonTextChildNodes(node) &&
+ !!node.getAttribute('data-f2-appid') &&
+ !!node.getAttribute('data-f2-manifesturl')
+ );
+ }
- if (!F2.isInit()) {
- F2.log('F2.init() must be called before F2.UI.showMask()');
- return;
- }
+ /**
+ Has the container been init?
+ @method _isInit
+ @private
+ @return {bool} True if the container has been init
+ */
+ function _isInit() {
+ return !!_config;
+ }
- if (F2.Rpc.isRemote(instanceId) && jQuery(selector).is('.' + F2.Constants.Css.APP)) {
- F2.Rpc.call(
- instanceId,
- F2.Constants.Sockets.RPC,
- 'F2.UI.showMask',
- [
- instanceId,
- // must only pass the selector argument. if we pass an Element there
- // will be F2.stringify() errors
- jQuery(selector).selector,
- showLoading
- ]
- );
- } else {
+ /**
+ Instantiates app from its appConfig and stores that in a private collection.
+ @method _createAppInstance
+ @private
+ @param {object} appConfig An {{#crossLink "F2.AppConfig"}}{{/crossLink}}
+ @param {F2.AppManifest.AppContent} appContent The F2.AppManifest.AppContent
+ object.
+ */
+ function _createAppInstance(appConfig, appContent) {
+ appConfig.ui = new F2.UI(appConfig);
+
+ // instantiate F2.App
+ if (F2.Apps[appConfig.appId] !== undefined) {
+ if (typeof F2.Apps[appConfig.appId] === 'function') {
+ // IE
+ setTimeout(function() {
+ _apps[appConfig.instanceId].app = new F2.Apps[appConfig.appId](appConfig, appContent, appConfig.root);
+
+ if (_apps[appConfig.instanceId].app.init !== undefined) {
+ _apps[appConfig.instanceId].app.init();
+ }
+ }, 0);
+ } else {
+ F2.log('app initialization class is defined but not a function. (' + appConfig.appId + ')');
+ }
+ }
+ }
- if (showLoading && !_containerConfig.UI.Mask.loadingIcon) {
- F2.log('Unable to display loading icon. Please set F2.ContainerConfig.UI.Mask.loadingIcon when calling F2.init();');
- }
+ /**
+ Loads the app's html/css/javascript.
+ @method loadApp
+ @private
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects.
+ @param {F2.AppManifest} [appManifest] The AppManifest object
+ */
+ function _loadApps(appConfigs, appManifest) {
+ appConfigs = [].concat(appConfigs);
+
+ // Check for secure app
+ if (appConfigs.length === 1 && appConfigs[0].isSecure && !_config.isSecureAppPage) {
+ _loadSecureApp(appConfigs[0], appManifest);
+ return;
+ }
- var container = jQuery(selector).addClass(F2.Constants.Css.MASK_CONTAINER);
- var mask = jQuery('
')
- .height('100%' /*container.outerHeight()*/)
- .width('100%' /*container.outerWidth()*/)
- .addClass(F2.Constants.Css.MASK);
-
- // set inline styles if useClasses is false
- if (!_containerConfig.UI.Mask.useClasses) {
- mask.css({
- 'background-color':_containerConfig.UI.Mask.backgroundColor,
- 'background-image': !!_containerConfig.UI.Mask.loadingIcon ? ('url(' + _containerConfig.UI.Mask.loadingIcon + ')') : '',
- 'background-position':'50% 50%',
- 'background-repeat':'no-repeat',
- 'display':'block',
- 'left':0,
- 'min-height':30,
- 'padding':0,
- 'position':'absolute',
- 'top':0,
- 'z-index':_containerConfig.UI.Mask.zIndex,
-
- 'filter':'alpha(opacity=' + (_containerConfig.UI.Mask.opacity * 100) + ')',
- 'opacity':_containerConfig.UI.Mask.opacity
- });
- }
+ // Check that the number of apps in manifest matches the number requested
+ if (appConfigs.length !== appManifest.apps.length) {
+ F2.log('The number of apps defined in the AppManifest do not match the number requested.', appManifest);
+ return;
+ }
- // only set the position if the container is currently static
- if (container.css('position') === 'static') {
- container.css({'position':'relative'});
- // setting this data property tells hideMask to set the position
- // back to static
- container.data(F2.Constants.Css.MASK_CONTAINER, true);
- }
+ function _loadStyles(styles, cb) {
+ if (_config.loadStyles) {
+ return _config.loadStyles(styles, cb);
+ }
- // add the mask to the container
- container.append(mask);
- }
- };
+ // Load styles, see #101
+ var stylesFragment;
+ var useCreateStyleSheet = !!document.createStyleSheet;
- return UI_Class;
-})());
-/**
- * Root namespace of the F2 SDK
- * @module f2
- * @class F2
- */
-F2.extend('', (function() {
+ jQuery.each(styles, function(i, e) {
+ var resourceUrl = e;
+ var resourceKey = e.toLowerCase();
- var _apps = {};
- var _config = false;
- var _bUsesAppHandlers = false;
- var _sAppHandlerToken = F2.AppHandlers.__f2GetToken();
- var _loadedScripts = {};
- var _loadedStyles = {};
- var _loadingScripts = {};
-
- /**
- * Appends the app's html to the DOM
- * @method _afterAppRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} html The string of html
- * @return {Element} The DOM Element that contains the app
- */
- var _afterAppRender = function(appConfig, html) {
+ if (_loadedStyles[resourceKey]) {
+ return;
+ }
- var handler = _config.afterAppRender || function(appConfig, html) {
- return jQuery(html).appendTo('body');
- };
- var appContainer = handler(appConfig, html);
+ if (useCreateStyleSheet) {
+ document.createStyleSheet(resourceUrl);
+ } else {
+ stylesFragment = stylesFragment || [];
+ stylesFragment.push('');
+ }
- if ( !! _config.afterAppRender && !appContainer) {
- F2.log('F2.ContainerConfig.afterAppRender() must return the DOM Element that contains the app');
- return;
- }
- else {
- // apply APP class
- jQuery(appContainer).addClass(F2.Constants.Css.APP);
- return appContainer.get(0);
- }
- };
+ _loadedStyles[resourceKey] = true;
+ });
- /**
- * Renders the html for an app.
- * @method _appRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} html The string of html
- */
- var _appRender = function(appConfig, html) {
+ if (stylesFragment) {
+ jQuery('head').append(stylesFragment.join(''));
+ }
- // apply APP_CONTAINER class and AppID
- html = _outerHtml(jQuery(html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId));
+ cb();
+ }
- // optionally apply wrapper html
- if (_config.appRender) {
- html = _config.appRender(appConfig, html);
- }
+ function _loadScripts(scripts, cb) {
+ if (_config.loadScripts) {
+ return _config.loadScripts(scripts, cb);
+ }
- return _outerHtml(html);
- };
+ if (!scripts.length) {
+ return cb();
+ }
- /**
- * Rendering hook to allow containers to render some html prior to an app
- * loading
- * @method _beforeAppRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @return {Element} The DOM Element surrounding the app
- */
- var _beforeAppRender = function(appConfig) {
- var handler = _config.beforeAppRender || jQuery.noop;
- return handler(appConfig);
- };
+ var doc = window.document;
+ var scriptCount = scripts.length;
+ var scriptsLoaded = 0;
+ // http://caniuse.com/#feat=script-async
+ var head = doc && (doc.head || doc.getElementsByTagName('head')[0]);
+ // For IE, put scripts before any elements, but after any
+ var insertBeforeEl = head && head.getElementsByTagName('base')[0] || null;
+ // Check for IE10+ so that we don't rely on onreadystatechange, readyStates for IE6-9
+ var readyStates = (window.addEventListener) ? {} : {
+ 'loaded': true,
+ 'complete': true
+ };
+
+ // Log and emit event for the failed (400,500) scripts
+ function _error(e) {
+ setTimeout(function() {
+ var evtData = {
+ src: e.target.src,
+ appId: appConfigs[0].appId
+ };
+
+ // Send error to console
+ F2.log('Script defined in \'' + evtData.appId + '\' failed to load \'' + evtData.src + '\'');
+
+ // Emit events
+ F2.Events.emit('RESOURCE_FAILED_TO_LOAD', evtData);
+
+ if (!_usesAppHandlers) {
+ _appScriptLoadFailed(appConfigs[0], evtData.src);
+ } else {
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
+ appConfigs[0],
+ evtData.src
+ );
+ }
+ }, _config.scriptErrorTimeout); // Defaults to 7000
+ }
- /**
- * Handler to inform the container that a script failed to load
- * @method _onScriptLoadFailure
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param scriptInfo The path of the script that failed to load or the exception info
- * for the inline script that failed to execute
- */
- var _appScriptLoadFailed = function(appConfig, scriptInfo) {
- var handler = _config.appScriptLoadFailed || jQuery.noop;
- return handler(appConfig, scriptInfo);
- };
+ function _checkComplete() {
+ // Are we done loading all scripts for this app?
+ if (++scriptsLoaded === scriptCount) {
+ // success
+ cb();
+ }
+ }
- /**
- * Adds properties to the AppConfig object
- * @method _createAppConfig
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @return {F2.AppConfig} The new F2.AppConfig object, prepopulated with
- * necessary properties
- */
- var _createAppConfig = function(appConfig) {
+ function _emptyWaitlist(resourceKey, errorEvt) {
+ var waiting;
+ var waitlist = _loadingScripts[resourceKey];
- // make a copy of the app config to ensure that the original is not modified
- appConfig = jQuery.extend(true, {}, appConfig);
+ if (!waitlist) {
+ return;
+ }
- // create the instanceId for the app
- appConfig.instanceId = appConfig.instanceId || F2.guid();
+ for (var i = 0; i < waitlist.length; i++) {
+ waiting = waitlist [i];
- // default the views if not provided
- appConfig.views = appConfig.views || [];
- if (!F2.inArray(F2.Constants.Views.HOME, appConfig.views)) {
- appConfig.views.push(F2.Constants.Views.HOME);
- }
+ if (errorEvt) {
+ waiting.error(errorEvt);
+ } else {
+ waiting.success();
+ }
+ }
- //pass container-defined locale to each app
- if (F2.ContainerConfig.locale){
- appConfig.containerLocale = F2.ContainerConfig.locale;
- }
+ _loadingScripts[resourceKey] = null;
+ }
- return appConfig;
- };
+ // Load scripts and eval inlines once complete
+ jQuery.each(scripts, function(i, url) {
+ var script = doc.createElement('script');
+ var resourceUrl = url;
+ var resourceKey = resourceUrl.toLowerCase();
- /**
- * Generate an AppConfig from the element's attributes
- * @method _getAppConfigFromElement
- * @private
- * @param {Element} node The DOM node from which to generate the F2.AppConfig object
- * @return {F2.AppConfig} The new F2.AppConfig object
- */
- var _getAppConfigFromElement = function(node) {
- var appConfig;
-
- if (node) {
- var appId = node.getAttribute('data-f2-appid');
- var manifestUrl = node.getAttribute('data-f2-manifesturl');
-
- if (appId && manifestUrl) {
- appConfig = {
- appId: appId,
- enableBatchRequests: node.hasAttribute('data-f2-enablebatchrequests'),
- isSecure: node.hasAttribute('data-f2-issecure'),
- manifestUrl: manifestUrl,
- root: node
- };
+ // Already finished loading, trigger callback
+ if (_loadedScripts[resourceKey]) {
+ return _checkComplete();
+ }
- // See if the user passed in a block of serialized json
- var contextJson = node.getAttribute('data-f2-context');
+ // This script is actively loading, add this app to the wait list
+ if (_loadingScripts[resourceKey]) {
+ _loadingScripts[resourceKey].push({
+ success: _checkComplete,
+ error: _error
+ });
- if (contextJson) {
- try {
- appConfig.context = F2.parse(contextJson);
- }
- catch (e) {
- console.warn('F2: "data-f2-context" of node is not valid JSON', '"' + e + '"');
- }
- }
- }
- }
+ return;
+ }
- return appConfig;
- };
+ // Create the waitlist
+ _loadingScripts[resourceKey] = [];
- /**
- * Returns true if the DOM node has children that are not text nodes
- * @method _hasNonTextChildNodes
- * @private
- * @param {Element} node The DOM node
- * @return {bool} True if there are non-text children
- */
- var _hasNonTextChildNodes = function(node) {
- var hasNodes = false;
+ // If in debugMode, add cache buster to each script URL
+ if (_config.debugMode) {
+ resourceUrl += '?cachebuster=' + new Date().getTime();
+ }
- if (node.hasChildNodes()) {
- for (var i = 0, len = node.childNodes.length; i < len; i++) {
- if (node.childNodes[i].nodeType === 1) {
- hasNodes = true;
- break;
- }
- }
- }
+ // Scripts are loaded asynchronously and executed in order
+ // in supported browsers: http://caniuse.com/#feat=script-async
+ script.async = false;
+ script.type = 'text/javascript';
+ script.charset = 'utf-8';
- return hasNodes;
- };
+ script.onerror = function(e) {
+ _error(e);
+ _emptyWaitlist(resourceKey, e);
+ };
- /**
- * Adds properties to the ContainerConfig object to take advantage of defaults
- * @method _hydrateContainerConfig
- * @private
- * @param {F2.ContainerConfig} containerConfig The F2.ContainerConfig object
- */
- var _hydrateContainerConfig = function(containerConfig) {
+ // Use a closure for the load event so that we can dereference the original script
+ script.onload = script.onreadystatechange = function(e) {
+ e = e || window.event; // For older IE
+
+ // Detect when it's done loading
+ // ev.type == 'load' is for all browsers except IE6-9
+ // IE6-9 need to use onreadystatechange and look for
+ // el.readyState in {loaded, complete} (yes, we need both)
+ if (e.type === 'load' || readyStates[script.readyState]) {
+ // Done, cleanup
+ script.onload = script.onreadystatechange = script.onerror = '';
+ // Loaded
+ _loadedScripts[resourceKey] = true;
+ // Increment and check if scripts are done
+ _checkComplete();
+ // Empty wait list
+ _emptyWaitlist(resourceKey);
+ // Dereference script
+ script = null;
+ }
+ };
- if (!containerConfig.scriptErrorTimeout) {
- containerConfig.scriptErrorTimeout = F2.ContainerConfig.scriptErrorTimeout;
- }
+ // Set the src, start loading
+ script.src = resourceUrl;
- if (containerConfig.debugMode !== true) {
- containerConfig.debugMode = F2.ContainerConfig.debugMode;
- }
+ // really is the best
+ head.insertBefore(script, insertBeforeEl);
+ });
+ }
- if (containerConfig.locale && typeof containerConfig.locale == 'string'){
- F2.ContainerConfig.locale = containerConfig.locale;
- }
- };
+ function _loadInlineScripts(inlines, cb) {
+ // Attempt to use the user provided method
+ if (_config.loadInlineScripts) {
+ _config.loadInlineScripts(inlines, cb);
+ } else {
+ for (var i = 0, len = inlines.length; i < len; i++) {
+ try {
+ eval(inlines[i]);
+ } catch ( exception ) {
+ F2.log('Error loading inline script: ' + exception + '\n\n' + inlines[i]);
+
+ // Emit events
+ F2.Events.emit('RESOURCE_FAILED_TO_LOAD', {
+ appId: appConfigs[0].appId,
+ src: inlines[i],
+ err: exception
+ });
- /**
- * Attach app events
- * @method _initAppEvents
- * @private
- */
- var _initAppEvents = function(appConfig) {
+ if (!_usesAppHandlers) {
+ _appScriptLoadFailed(appConfigs[0], exception);
+ } else {
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
+ appConfigs[0],
+ exception
+ );
+ }
+ }
+ }
+ cb();
+ }
+ }
- jQuery(appConfig.root).on('click', '.' + F2.Constants.Css.APP_VIEW_TRIGGER + '[' + F2.Constants.Views.DATA_ATTRIBUTE + ']', function(event) {
+ // Determine whether an element has been added to the page
+ function elementInDocument(element) {
+ if (element) {
+ while (element.parentNode) {
+ element = element.parentNode;
- event.preventDefault();
+ if (element === document) {
+ return true;
+ }
+ }
+ }
- var view = jQuery(this).attr(F2.Constants.Views.DATA_ATTRIBUTE).toLowerCase();
+ return false;
+ }
- // handle the special REMOVE view
- if (view == F2.Constants.Views.REMOVE) {
- F2.removeApp(appConfig.instanceId);
- }
- else {
- appConfig.ui.Views.change(view);
- }
- });
- };
+ function _loadHtml(apps) {
+ jQuery.each(apps, function(i, a) {
+ if (_isPlaceholderElement(appConfigs[i].root)) {
+ jQuery(appConfigs[i].root)
+ .addClass(F2.Constants.Css.APP)
+ .append(jQuery(a.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfigs[i].appId));
+ } else if (!_usesAppHandlers) {
+ // Load html and save the root node
+ appConfigs[i].root = _afterAppRender(appConfigs[i], _appRender(appConfigs[i], a.html));
+ } else {
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_RENDER,
+ appConfigs[i], // the app config
+ _outerHtml(jQuery(a.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfigs[i].appId))
+ );
+
+ var appId = appConfigs[i].appId;
+ var root = appConfigs[i].root;
+
+ if (!root) {
+ throw new Error('Root for ' + appId + ' must be a native DOM element and cannot be null or undefined. Check your AppHandler callbacks to ensure you have set App root to a native DOM element.');
+ }
- /**
- * Attach container Events
- * @method _initContainerEvents
- * @private
- */
- var _initContainerEvents = function() {
+ if (!elementInDocument(root)) {
+ throw new Error('App root for ' + appId + ' was not appended to the DOM. Check your AppHandler callbacks to ensure you have rendered the app root to the DOM.');
+ }
- var resizeTimeout;
- var resizeHandler = function() {
- F2.Events.emit(F2.Constants.Events.CONTAINER_WIDTH_CHANGE);
- };
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_RENDER_AFTER,
+ appConfigs[i] // the app config
+ );
- jQuery(window).on('resize', function() {
- clearTimeout(resizeTimeout);
- resizeTimeout = setTimeout(resizeHandler, 100);
- });
+ if (!F2.isNativeDOMNode(root)) {
+ throw new Error('App root for ' + appId + ' must be a native DOM element. Check your AppHandler callbacks to ensure you have set app root to a native DOM element.');
+ }
+ }
- //listen for container-broadcasted locale changes
- F2.Events.on(F2.Constants.Events.CONTAINER_LOCALE_CHANGE,function(data){
- if (data.locale && typeof data.locale == 'string'){
- F2.ContainerConfig.locale = data.locale;
- }
- });
- };
+ // init events
+ _initAppEvents(appConfigs[i]);
+ });
+ }
- /**
- * Checks if an element is a placeholder element
- * @method _isPlaceholderElement
- * @private
- * @param {Element} node The DOM element to check
- * @return {bool} True if the element is a placeholder
- */
- var _isPlaceholderElement = function(node) {
- return (
- F2.isNativeDOMNode(node) &&
- !_hasNonTextChildNodes(node) &&
- !!node.getAttribute('data-f2-appid') &&
- !!node.getAttribute('data-f2-manifesturl')
- );
- };
+ // Pull out the manifest data
+ var manifestScripts = appManifest.scripts || [];
+ var manifestStyles = appManifest.styles || [];
+ var manifestInlines = appManifest.inlineScripts || [];
+ var manifestApps = appManifest.apps || [];
+
+ // Finally, load the styles, html, and scripts
+ _loadStyles(manifestStyles, function() {
+ _loadHtml(manifestApps);
+ _loadScripts(manifestScripts, function() {
+ // Emit event we're done with scripts
+ if (appConfigs[0]) {
+ F2.Events.emit('APP_SCRIPTS_LOADED', {
+ appId: appConfigs[0].appId,
+ scripts: manifestScripts
+ });
+ }
- /**
- * Has the container been init?
- * @method _isInit
- * @private
- * @return {bool} True if the container has been init
- */
- var _isInit = function() {
- return !!_config;
- };
+ _loadInlineScripts(manifestInlines, function() {
+ // Create the apps
+ jQuery.each(appConfigs, function(i, a) {
+ _createAppInstance(a, manifestApps[i]);
+ });
+ });
+ });
+ });
+ }
- /**
- * Instantiates each app from it's appConfig and stores that in a local private collection
- * @method _createAppInstance
- * @private
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
- */
- var _createAppInstance = function(appConfig, appContent) {
- // instantiate F2.UI
- appConfig.ui = new F2.UI(appConfig);
-
- // instantiate F2.App
- if (F2.Apps[appConfig.appId] !== undefined) {
- if (typeof F2.Apps[appConfig.appId] === 'function') {
-
- // IE
- setTimeout(function() {
- _apps[appConfig.instanceId].app = new F2.Apps[appConfig.appId](appConfig, appContent, appConfig.root);
- if (_apps[appConfig.instanceId].app['init'] !== undefined) {
- _apps[appConfig.instanceId].app.init();
- }
- }, 0);
+ /**
+ Loads the app's html/css/javascript into an iframe.
+ @method loadSecureApp
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {F2.AppManifest} appManifest The app's html/css/js to be loaded into
+ the page.
+ */
+ function _loadSecureApp(appConfig, appManifest) {
+ // Make sure the container is configured for secure apps
+ if (_config.secureAppPagePath) {
+ if (_isPlaceholderElement(appConfig.root)) {
+ jQuery(appConfig.root)
+ .addClass(F2.Constants.Css.APP)
+ .append(jQuery('')
+ .addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId));
+ } else if (!_usesAppHandlers) {
+ // Create the html container for the iframe
+ appConfig.root = _afterAppRender(appConfig, _appRender(appConfig, ''));
+ } else {
+ var $root = jQuery(appConfig.root);
- }
- else {
- F2.log('app initialization class is defined but not a function. (' + appConfig.appId + ')');
- }
- }
- };
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_RENDER,
+ appConfig,
+ _outerHtml(jQuery(appManifest.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId))
+ );
- /**
- * Loads the app's html/css/javascript
- * @method loadApp
- * @private
- * @param {Array} appConfigs An array of
- * {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
- * @param {F2.AppManifest} [appManifest] The AppManifest object
- */
- var _loadApps = function(appConfigs, appManifest) {
- appConfigs = [].concat(appConfigs);
+ if ($root.parents('body:first').length === 0) {
+ throw new Error('App was never rendered on the page. Please check your AppHandler callbacks to ensure you have rendered the app root to the DOM.');
+ }
- // check for secure app
- if (appConfigs.length == 1 && appConfigs[0].isSecure && !_config.isSecureAppPage) {
- _loadSecureApp(appConfigs[0], appManifest);
- return;
- }
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_RENDER_AFTER,
+ appConfig // the app config
+ );
- // check that the number of apps in manifest matches the number requested
- if (appConfigs.length != appManifest.apps.length) {
- F2.log('The number of apps defined in the AppManifest do not match the number requested.', appManifest);
- return;
- }
+ if (!appConfig.root) {
+ throw new Error('App Root must be a native dom node and can not be null or undefined. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.');
+ }
- // Fn for loading manifest Styles
- var _loadStyles = function(styles, cb) {
- // Attempt to use the user provided method
- if (_config.loadStyles) {
- return _config.loadStyles(styles, cb);
- }
+ if (!F2.isNativeDOMNode(appConfig.root)) {
+ throw new Error('App Root must be a native dom node. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.');
+ }
+ }
- // load styles, see #101
- var stylesFragment = null,
- useCreateStyleSheet = !! document.createStyleSheet;
+ // Instantiate F2.UI
+ appConfig.ui = new F2.UI(appConfig);
+ // Init events
+ _initAppEvents(appConfig);
+ // Create RPC socket
+ F2.Rpc.register(appConfig, appManifest);
+ } else {
+ F2.log('Unable to load secure app: "secureAppPagePath" is not defined in F2.ContainerConfig.');
+ }
+ }
- jQuery.each(styles, function(i, e) {
- var resourceUrl = e,
- resourceKey = e.toLowerCase();
+ function _outerHtml(html) {
+ return jQuery('').append(html).html();
+ }
- if (_loadedStyles[resourceKey]) {
- return;
- }
+ /**
+ Checks if the app is valid.
+ @method _validateApp
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @returns {bool} True if the app is valid
+ */
+ function _validateApp(appConfig) {
+ // Check for valid app configurations
+ if (!appConfig.appId) {
+ F2.log('"appId" missing from app object');
+ return false;
+ } else if (!appConfig.root && !appConfig.manifestUrl) {
+ F2.log('"manifestUrl" missing from app object');
+ return false;
+ }
- if (useCreateStyleSheet) {
- document.createStyleSheet(resourceUrl);
- }
- else {
- stylesFragment = stylesFragment || [];
- stylesFragment.push('');
- }
+ return true;
+ }
- _loadedStyles[resourceKey] = true;
- });
+ /**
+ Checks if the ContainerConfig is valid.
+ @method _validateContainerConfig
+ @private
+ @returns {bool} True if the config is valid
+ */
+ function _validateContainerConfig() {
+ if (_config) {
+ if (_config.xhr) {
+ if (!(typeof _config.xhr === 'function' || typeof _config.xhr === 'object')) {
+ throw new Error('ContainerConfig.xhr should be a function or an object');
+ }
+ if (_config.xhr.dataType && typeof _config.xhr.dataType !== 'function') {
+ throw new Error('ContainerConfig.xhr.dataType should be a function');
+ }
+ if (_config.xhr.type && typeof _config.xhr.type !== 'function') {
+ throw new Error('ContainerConfig.xhr.type should be a function');
+ }
+ if (_config.xhr.url && typeof _config.xhr.url !== 'function') {
+ throw new Error('ContainerConfig.xhr.url should be a function');
+ }
+ }
+ }
- if (stylesFragment) {
- jQuery('head').append(stylesFragment.join(''));
- }
+ return true;
+ }
- cb();
- };
+ return {
+ /**
+ Gets the current list of apps in the container.
+ @method getContainerState
+ @returns {Array} An array of objects containing the appId
+ */
+ getContainerState: function() {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.getContainerState()');
+ return;
+ }
- // For loading AppManifest.scripts
- // Parts derived from curljs, headjs, requirejs, dojo
- var _loadScripts = function(scripts, cb) {
- // Attempt to use the user provided method
- if (_config.loadScripts) {
- return _config.loadScripts(scripts, cb);
- }
+ return jQuery.map(_apps, function(app) {
+ return {
+ appId: app.config.appId
+ };
+ });
+ },
+ /**
+ Gets the current locale defined by the container.
+ @method getContainerLocale
+ @returns {String} IETF-defined standard language tag
+ */
+ getContainerLocale: function() {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.getContainerLocale()');
+ return;
+ }
- if (!scripts.length) {
- return cb();
- }
+ return F2.ContainerConfig.locale;
+ },
+ /**
+ Initializes the container. This method must be called before performing
+ any other actions in the container.
+ @method init
+ @param {F2.ContainerConfig} config The configuration object
+ */
+ init: function(config) {
+ _config = config || {};
+ _validateContainerConfig();
+ _hydrateContainerConfig(_config);
+
+ // Dictates whether we use the old logic or the new logic.
+ // TODO: Remove in v2.0
+ _usesAppHandlers = (_config.beforeAppRender || _config.appRender || _config.afterAppRender || _config.appScriptLoadFailed);
+
+ // Only establish RPC connection if the container supports the secure app page
+ if (!!_config.secureAppPagePath || _config.isSecureAppPage) {
+ F2.Rpc.init(_config.secureAppPagePath ? _config.secureAppPagePath : false);
+ }
- var doc = window.document;
- var scriptCount = scripts.length;
- var scriptsLoaded = 0;
- //http://caniuse.com/#feat=script-async
- // var supportsAsync = 'async' in doc.createElement('script') || 'MozAppearance' in doc.documentElement.style || window.opera;
- var head = doc && (doc['head'] || doc.getElementsByTagName('head')[0]);
- // to keep IE from crying, we need to put scripts before any
- // elements, but after any . this should do it:
- var insertBeforeEl = head && head.getElementsByTagName('base')[0] || null;
- // Check for IE10+ so that we don't rely on onreadystatechange, readyStates for IE6-9
- var readyStates = 'addEventListener' in window ? {} : { 'loaded': true, 'complete': true };
-
- // Log and emit event for the failed (400,500) scripts
- var _error = function(e) {
- setTimeout(function() {
- var evtData = {
- src: e.target.src,
- appId: appConfigs[0].appId
- };
+ F2.UI.init(_config);
- // Send error to console
- F2.log('Script defined in \'' + evtData.appId + '\' failed to load \'' + evtData.src + '\'');
+ if (!_config.isSecureAppPage) {
+ _initContainerEvents();
+ }
+ },
+ /**
+ Has the container been init?
+ @method isInit
+ @return {bool} True if the container has been init
+ */
+ isInit: _isInit,
+ /**
+ Automatically load apps that are already defined in the DOM. Elements will
+ be rendered into the location of the placeholder DOM element. Any
+ AppHandlers that are defined will be bypassed.
+ @method loadPlaceholders
+ @param {Element} parentNode The element to search for placeholder apps
+ */
+ loadPlaceholders: function(parentNode) {
+ if (parentNode && !F2.isNativeDOMNode(parentNode)) {
+ throw new Error('"parentNode" must be null or a DOM node');
+ }
- // Emit events
- F2.Events.emit('RESOURCE_FAILED_TO_LOAD', evtData);
+ var elements = [];
+ var appConfigs = [];
+
+ /**
+ If the passed in element has a data-f2-appid attribute add it to the
+ list of elements but to not search within that element for other
+ placeholders
+ */
+ if (parentNode) {
+ if (parentNode.hasAttribute('data-f2-appid')) {
+ elements.push(parentNode);
+ }
+ } else if (document.querySelectorAll) {
+ elements = elements.concat(document.querySelectorAll('[data-f2-appid]'));
+ }
- if (!_bUsesAppHandlers) {
- _appScriptLoadFailed(appConfigs[0], evtData.src);
- }
- else {
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
- appConfigs[0],
- evtData.src
- );
- }
- }, _config.scriptErrorTimeout); // Defaults to 7000
- };
+ for (var i = 0, len = elements.length; i < len; i++) {
+ var appConfig = _getAppConfigFromElement(elements[i]);
+ appConfigs.push(appConfig);
+ }
- var _checkComplete = function() {
- // Are we done loading all scripts for this app?
- if (++scriptsLoaded === scriptCount) {
- // success
- cb();
- }
- };
+ if (appConfigs.length) {
+ F2.registerApps(appConfigs);
+ }
+ },
+ /**
+ Begins the loading process for all apps and/or initialization process for
+ pre-loaded apps. The app will be passed the
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} object which will contain the
+ app's unique instanceId within the container. If the
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}}.root property is populated
+ the app is considered to be a pre-loaded app and will be handled
+ accordingly. Optionally, the
+ {{#crossLink "F2.AppManifest"}}{{/crossLink}} can be passed in and those
+ assets will be used instead of making a request.
+ @method registerApps
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
+ @param {Array} [appManifests] An array of
+ {{#crossLink "F2.AppManifest"}}{{/crossLink}}
+ objects. This array must be the same length as the apps array that is
+ passed in. This can be useful if apps are loaded on the server-side and
+ passed down to the client.
+ @example
+ // Traditional App requests.
+ var configs = [{
+ appId: 'com_externaldomain_example_app',
+ context: {},
+ manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
+ }, {
+ appId: 'com_externaldomain_example_app',
+ context: {},
+ manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
+ }, {
+ appId: 'com_externaldomain_example_app2',
+ context: {},
+ manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
+ }];
+
+ F2.init();
+ F2.registerApps(configs);
+ @example
+ // Pre-loaded and tradition apps mixed.
+ // You can preload the same app multiple times as long as you have a unique root for each
+ var configs = [{
+ appId: 'com_mydomain_example_app',
+ context: {},
+ root: 'div#example-app-1',
+ manifestUrl: ''
+ }, {
+ appId: 'com_mydomain_example_app',
+ context: {},
+ root: 'div#example-app-2',
+ manifestUrl: ''
+ }, {
+ appId: 'com_externaldomain_example_app',
+ context: {},
+ manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
+ }];
+
+ F2.init();
+ F2.registerApps(configs);
+ @example
+ // Apps with predefined manifests.
+ var configs = [
+ { appId: 'com_externaldomain_example_app', context: {} },
+ { appId: 'com_externaldomain_example_app', context: {} },
+ { appId: 'com_externaldomain_example_app2', context: {} }
+ ];
+
+ // Pre requested manifest responses
+ var manifests = [{
+ apps: ['
'],
+ inlineScripts: [],
+ scripts: ['http://www.domain.com/js/App2Class.js'],
+ styles: ['http://www.domain.com/css/App2Styles.css']
+ }];
+
+ F2.init();
+ F2.registerApps(configs, manifests);
+ */
+ registerApps: function(appConfigs, appManifests) {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.registerApps()');
+ return;
+ } else if (!appConfigs) {
+ F2.log('At least one AppConfig must be passed when calling F2.registerApps()');
+ return;
+ }
- var _emptyWaitlist = function(resourceKey, errorEvt) {
- var waiting,
- waitlist = _loadingScripts[resourceKey];
+ var appStack = [];
+ var batches = {};
+ var callbackStack = {};
+ var haveManifests = false;
+ appConfigs = [].concat(appConfigs);
+ appManifests = [].concat(appManifests || []);
+ haveManifests = !!appManifests.length;
+
+ // AppConfigs must have a length
+ if (!appConfigs.length) {
+ F2.log('At least one AppConfig must be passed when calling F2.registerApps()');
+ return;
+ } else if (appConfigs.length && haveManifests && appConfigs.length !== appManifests.length) {
+ // Ensure that the array of apps and manifests are equal
+ F2.log('The length of "apps" does not equal the length of "appManifests"');
+ return;
+ }
- if (!waitlist) {
- return;
- }
+ // Validate apps, assign instanceId, then determine which apps can be batched together
+ jQuery.each(appConfigs, function(i, a) {
+ // Add properties and methods
+ a = _createAppConfig(a);
- for (var i=0; i really is the best
- head.insertBefore(script, insertBeforeEl);
- });
- };
+ function errorFunc() {
+ jQuery.each(req.apps, function(idx, item) {
+ item.name = item.name || item.appId;
+ F2.log('Removed failed ' + item.name + ' app', item);
+ F2.removeApp(item.instanceId);
+ });
+ }
- var _loadInlineScripts = function(inlines, cb) {
- // Attempt to use the user provided method
- if (_config.loadInlineScripts) {
- _config.loadInlineScripts(inlines, cb);
- }
- else {
- for (var i = 0, len = inlines.length; i < len; i++) {
- try {
- eval(inlines[i]);
- }
- catch (exception) {
- F2.log('Error loading inline script: ' + exception + '\n\n' + inlines[i]);
-
- // Emit events
- F2.Events.emit('RESOURCE_FAILED_TO_LOAD', { appId:appConfigs[0].appId, src: inlines[i], err: exception });
-
- if (!_bUsesAppHandlers) {
- _appScriptLoadFailed(appConfigs[0], exception);
- }
- else {
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
- appConfigs[0],
- exception
- );
- }
- }
- }
- cb();
- }
- };
+ function successFunc(appManifest) {
+ _loadApps(req.apps, appManifest);
+ }
- // Determine whether an element has been added to the page
- var elementInDocument = function(element) {
- if (element) {
- while (element.parentNode) {
- element = element.parentNode;
+ // Optionally fire xhr overrides
+ if (_config.xhr) {
+ if (_config.xhr.dataType) {
+ dataType = _config.xhr.dataType(req.url, req.apps);
- if (element === document) {
- return true;
- }
- }
- }
+ if (typeof dataType !== 'string') {
+ throw new Error('ContainerConfig.xhr.dataType should return a string');
+ }
+ }
- return false;
- };
+ if (_config.xhr.type) {
+ type = _config.xhr.type(req.url, req.apps);
- // Fn for loading manifest app html
- var _loadHtml = function(apps) {
- jQuery.each(apps, function(i, a) {
- if (_isPlaceholderElement(appConfigs[i].root)) {
- jQuery(appConfigs[i].root)
- .addClass(F2.Constants.Css.APP)
- .append(jQuery(a.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfigs[i].appId));
- }
- else if (!_bUsesAppHandlers) {
- // load html and save the root node
- appConfigs[i].root = _afterAppRender(appConfigs[i], _appRender(appConfigs[i], a.html));
- }
- else {
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER,
- appConfigs[i], // the app config
- _outerHtml(jQuery(a.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfigs[i].appId))
- );
+ if (typeof type !== 'string') {
+ throw new Error('ContainerConfig.xhr.type should return a string');
+ }
+ }
- var appId = appConfigs[i].appId,
- root = appConfigs[i].root;
+ if (_config.xhr.url) {
+ req.url = _config.xhr.url(req.url, req.apps);
- if (!root) {
- throw ('Root for ' + appId + ' must be a native DOM element and cannot be null or undefined. Check your AppHandler callbacks to ensure you have set App root to a native DOM element.');
- }
+ if (typeof req.url !== 'string') {
+ throw new Error('ContainerConfig.xhr.url should return a string');
+ }
+ }
+ }
- if (!elementInDocument(root)) {
- throw ('App root for ' + appId + ' was not appended to the DOM. Check your AppHandler callbacks to ensure you have rendered the app root to the DOM.');
- }
+ // Setup the default request function if an override is not present
+ var requestFunc = _config.xhr;
+
+ if (typeof requestFunc !== 'function') {
+ requestFunc = function(url, apps, successCallback, errorCallback, completeCallback) {
+ jQuery.ajax({
+ url: url,
+ type: type,
+ data: {
+ params: F2.stringify(req.apps, F2.appConfigReplacer)
+ },
+ jsonp: false, // do not put 'callback=' in the query string
+ jsonpCallback: jsonpCallback, // Unique function name
+ dataType: dataType,
+ success: successCallback,
+ error: function(jqxhr, settings, exception) {
+ F2.log('Failed to load app(s)', exception.toString(), req.apps);
+ errorCallback();
+ },
+ complete: completeCallback
+ });
+ };
+ }
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER_AFTER,
- appConfigs[i] // the app config
- );
+ requestFunc(req.url, req.apps, successFunc, errorFunc, completeFunc);
+ }
- if (!F2.isNativeDOMNode(root)) {
- throw ('App root for ' + appId + ' must be a native DOM element. Check your AppHandler callbacks to ensure you have set app root to a native DOM element.');
- }
- }
+ manifestRequest(i, requests.pop());
+ });
+ }
+ },
+ /**
+ Removes all apps from the container
+ @method removeAllApps
+ */
+ removeAllApps: function() {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.removeAllApps()');
+ return;
+ }
- // init events
- _initAppEvents(appConfigs[i]);
- });
- };
+ jQuery.each(_apps, function(i, a) {
+ F2.removeApp(a.config.instanceId);
+ });
+ },
+ /**
+ Removes an app from the container.
+ @method removeApp
+ @param {string} instanceId The app's instanceId
+ */
+ removeApp: function(instanceId) {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.removeApp()');
+ return;
+ }
- // Pull out the manifest data
- var scripts = appManifest.scripts || [];
- var styles = appManifest.styles || [];
- var inlines = appManifest.inlineScripts || [];
- var apps = appManifest.apps || [];
-
- // Finally, load the styles, html, and scripts
- _loadStyles(styles, function() {
- // Put the html on the page
- _loadHtml(apps);
- // Add the script content to the page
- _loadScripts(scripts, function() {
- // emit event we're done with scripts
- if (appConfigs[0]){ F2.Events.emit('APP_SCRIPTS_LOADED', { appId:appConfigs[0].appId, scripts:scripts }); }
- // Load any inline scripts
- _loadInlineScripts(inlines, function() {
- // Create the apps
- jQuery.each(appConfigs, function(i, a) {
- _createAppInstance(a, appManifest.apps[i]);
- });
- });
- });
- });
- };
+ if (_apps[instanceId]) {
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
+ _apps[instanceId]
+ );
+
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_DESTROY,
+ _apps[instanceId]
+ );
+
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_DESTROY_AFTER,
+ _apps[instanceId]
+ );
+
+ delete _apps[instanceId];
+ }
+ }
+ };
+})());
- /**
- * Loads the app's html/css/javascript into an iframe
- * @method loadSecureApp
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {F2.AppManifest} appManifest The app's html/css/js to be loaded into the
- * page.
- */
- var _loadSecureApp = function(appConfig, appManifest) {
-
- // make sure the container is configured for secure apps
- if (_config.secureAppPagePath) {
- if (_isPlaceholderElement(appConfig.root)) {
- jQuery(appConfig.root)
- .addClass(F2.Constants.Css.APP)
- .append(jQuery('').addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId));
- }
- else if (!_bUsesAppHandlers) {
- // create the html container for the iframe
- appConfig.root = _afterAppRender(appConfig, _appRender(appConfig, ''));
- }
- else {
- var $root = jQuery(appConfig.root);
-
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER,
- appConfig, // the app config
- _outerHtml(jQuery(appManifest.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId))
- );
+/**
+ Handles [Context](../../app-development.html#context) passing from containers
+ to apps and apps to apps.
+ @class F2.Events
+*/
+F2.extend('Events', (function() {
+ var _events = new EventEmitter2({
+ wildcard: true
+ });
- if ($root.parents('body:first').length === 0) {
- throw ('App was never rendered on the page. Please check your AppHandler callbacks to ensure you have rendered the app root to the DOM.');
- }
+ // Unlimited listeners, set to > 0 for debugging
+ _events.setMaxListeners(0);
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER_AFTER,
- appConfig // the app config
- );
+ return {
+ /**
+ Same as F2.Events.emit except that it will not send the event to all
+ sockets.
+ @method _socketEmit
+ @private
+ @param {string} event The event name
+ @param {object} [arg]* The arguments to be passed
+ @returns {object} EventEmitter2 instance
+ */
+ _socketEmit: function() {
+ return EventEmitter2.prototype.emit.apply(_events, [].slice.call(arguments));
+ },
+ /**
+ Execute each of the listeners that may be listening for the specified
+ event name in order with the list of arguments.
+ @method emit
+ @param {string} event The event name
+ @param {object} [arg]* The arguments to be passed
+ @returns {object} EventEmitter2 instance
+ */
+ emit: function() {
+ F2.Rpc.broadcast(F2.Constants.Sockets.EVENT, [].slice.call(arguments));
+ return EventEmitter2.prototype.emit.apply(_events, [].slice.call(arguments));
+ },
+ /**
+ Adds a listener that will execute n times for the event before being
+ removed. The listener is invoked only the first time the event is fired,
+ after which it is removed.
+ @method many
+ @param {string} event The event name
+ @param {int} timesToListen The number of times to execute the event
+ before being removed
+ @param {function} listener The function to be fired when the event is
+ emitted
+ @returns {object} EventEmitter2 instance
+ */
+ many: function(event, timesToListen, listener) {
+ return _events.many(event, timesToListen, listener);
+ },
+ /**
+ Remove a listener for the specified event.
+ @method off
+ @param {string} event The event name
+ @param {function} listener The function that will be removed
+ @returns {object} EventEmitter2 instance
+ */
+ off: function(event, listener) {
+ return _events.off(event, listener);
+ },
+ /**
+ Adds a listener for the specified event
+ @method on
+ @param {string} event The event name
+ @param {function} listener The function to be fired when the event is
+ emitted
+ @returns {object} EventEmitter2 instance
+ */
+ on: function(event, listener) {
+ return _events.on(event, listener);
+ },
+ /**
+ Adds a one time listener for the event. The listener is invoked only
+ the first time the event is fired, after which it is removed.
+ @method once
+ @param {string} event The event name
+ @param {function} listener The function to be fired when the event is
+ emitted
+ @returns {object} EventEmitter2 instance
+ */
+ once: function(event, listener) {
+ return _events.once(event, listener);
+ }
+ };
+})());
- if (!appConfig.root) {
- throw ('App Root must be a native dom node and can not be null or undefined. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.');
- }
+/**
+ Handles socket communication between the container and secure apps
+ @class F2.Rpc
+*/
+F2.extend('Rpc', (function() {
+ var _callbacks = {};
+ var _secureAppPagePath = '';
+ var _apps = {};
+ var _rEvents = new RegExp('^' + F2.Constants.Sockets.EVENT);
+ var _rRpc = new RegExp('^' + F2.Constants.Sockets.RPC);
+ var _rRpcCallback = new RegExp('^' + F2.Constants.Sockets.RPC_CALLBACK);
+ var _rSocketLoad = new RegExp('^' + F2.Constants.Sockets.LOAD);
+ var _rUiCall = new RegExp('^' + F2.Constants.Sockets.UI_RPC);
+
+ /**
+ Creates a socket connection from the app to the container using
+ easyXDM.
+ @method _createAppToContainerSocket
+ @private
+ */
+ function _createAppToContainerSocket() {
+ var appConfig;
+ var isLoaded = false;
+ /**
+ It's possible for messages to be received before the socket load event has
+ happened. We'll save off these messages and replay them once the socket is
+ ready.
+ */
+ var messagePlayback = [];
+
+ var socket = new easyXDM.Socket({
+ onMessage: function(message, origin) {
+ // Handle Socket Load
+ if (!isLoaded && _rSocketLoad.test(message)) {
+ message = message.replace(_rSocketLoad, '');
+ var appParts = F2.parse(message);
+
+ // Make sure we have the AppConfig and AppManifest
+ if (appParts.length === 2) {
+ appConfig = appParts[0];
+
+ // Save socket
+ _apps[appConfig.instanceId] = {
+ config: appConfig,
+ socket: socket
+ };
- if (!F2.isNativeDOMNode(appConfig.root)) {
- throw ('App Root must be a native dom node. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.');
- }
- }
+ F2.registerApps([appConfig], [appParts[1]]);
- // instantiate F2.UI
- appConfig.ui = new F2.UI(appConfig);
- // init events
- _initAppEvents(appConfig);
- // create RPC socket
- F2.Rpc.register(appConfig, appManifest);
- }
- else {
- F2.log('Unable to load secure app: "secureAppPagePath" is not defined in F2.ContainerConfig.');
- }
- };
+ // Socket message playback
+ jQuery.each(messagePlayback, function() {
+ _onMessage(appConfig, message, origin);
+ });
- var _outerHtml = function(html) {
- return jQuery('').append(html).html();
- };
+ isLoaded = true;
+ }
+ } else if (isLoaded) {
+ // Pass everyting else to _onMessage
+ _onMessage(appConfig, message, origin);
+ } else {
+ messagePlayback.push(message);
+ }
+ }
+ });
+ }
- /**
- * Checks if the app is valid
- * @method _validateApp
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @returns {bool} True if the app is valid
- */
- var _validateApp = function(appConfig) {
+ /**
+ Creates a socket connection from the container to the app using
+ easyXDM.
+ @method _createContainerToAppSocket
+ @private
+ @param {appConfig} appConfig The F2.AppConfig object
+ @param {F2.AppManifest} appManifest The F2.AppManifest object
+ @return {object} The new socket
+ */
+ function _createContainerToAppSocket(appConfig, appManifest) {
+ var container = jQuery(appConfig.root);
+
+ if (!container.length) {
+ F2.log('Unable to locate app in order to establish secure connection.');
+ return;
+ }
- // check for valid app configurations
- if (!appConfig.appId) {
- F2.log('"appId" missing from app object');
- return false;
- }
- else if (!appConfig.root && !appConfig.manifestUrl) {
- F2.log('"manifestUrl" missing from app object');
- return false;
- }
+ var iframeProps = {
+ scrolling: 'no',
+ style: {
+ width: '100%'
+ }
+ };
- return true;
- };
+ if (appConfig.height) {
+ iframeProps.style.height = appConfig.height + 'px';
+ }
- /**
- * Checks if the ContainerConfig is valid
- * @method _validateContainerConfig
- * @private
- * @returns {bool} True if the config is valid
- */
- var _validateContainerConfig = function() {
+ var socket = new easyXDM.Socket({
+ remote: _secureAppPagePath,
+ container: container.get(0),
+ props: iframeProps,
+ onMessage: function(message, origin) {
+ _onMessage(appConfig, message, origin);
+ },
+ onReady: function() {
+ socket.postMessage(F2.Constants.Sockets.LOAD + F2.stringify([appConfig, appManifest], F2.appConfigReplacer));
+ }
+ });
- if (_config) {
- if (_config.xhr) {
- if (!(typeof _config.xhr === 'function' || typeof _config.xhr === 'object')) {
- throw ('ContainerConfig.xhr should be a function or an object');
- }
- if (_config.xhr.dataType && typeof _config.xhr.dataType !== 'function') {
- throw ('ContainerConfig.xhr.dataType should be a function');
- }
- if (_config.xhr.type && typeof _config.xhr.type !== 'function') {
- throw ('ContainerConfig.xhr.type should be a function');
- }
- if (_config.xhr.url && typeof _config.xhr.url !== 'function') {
- throw ('ContainerConfig.xhr.url should be a function');
- }
- }
- }
+ return socket;
+ }
- return true;
- };
+ /**
+ @method _createRpcCallback
+ @private
+ @param {string} instanceId The app's Instance ID
+ @param {function} callbackId The callback ID
+ @return {function} A function to make the RPC call
+ */
+ function _createRpcCallback(instanceId, callbackId) {
+ return function() {
+ F2.Rpc.call(
+ instanceId,
+ F2.Constants.Sockets.RPC_CALLBACK,
+ callbackId,
+ [].slice.call(arguments).slice(2)
+ );
+ };
+ }
- return {
- /**
- * Gets the current list of apps in the container
- * @method getContainerState
- * @returns {Array} An array of objects containing the appId
- */
- getContainerState: function() {
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.getContainerState()');
- return;
- }
+ /**
+ Handles messages that come across the sockets
+ @method _onMessage
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} message The socket message
+ @param {string} origin The originator
+ */
+ function _onMessage(appConfig, message, origin) {
+ var obj;
+ var func;
+
+ function parseFunction(parent, functionName) {
+ var path = String(functionName).split('.');
+ for (var i = 0; i < path.length; i++) {
+ if (parent[path[i]] === undefined) {
+ parent = undefined;
+ break;
+ }
+ parent = parent[path[i]];
+ }
+ return parent;
+ }
- return jQuery.map(_apps, function(app) {
- return {
- appId: app.config.appId
- };
- });
- },
- /**
- * Gets the current locale defined by the container
- * @method getContainerLocale
- * @returns {String} IETF-defined standard language tag
- */
- getContainerLocale: function() {
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.getContainerLocale()');
- return;
- }
+ function parseMessage(regEx, rawMessage, instanceId) {
+ var o = F2.parse(rawMessage.replace(regEx, ''));
+
+ // if obj.callbacks
+ // for each callback
+ // for each params
+ // if callback matches param
+ // replace param with _createRpcCallback(app.instanceId, callback)
+ if (o.params && o.params.length && o.callbacks && o.callbacks.length) {
+ jQuery.each(o.callbacks, function(i, c) {
+ jQuery.each(o.params, function(j, p) {
+ if (c === p) {
+ o.params[j] = _createRpcCallback(instanceId, c);
+ }
+ });
+ });
+ }
- return F2.ContainerConfig.locale;
- },
- /**
- * Initializes the container. This method must be called before performing
- * any other actions in the container.
- * @method init
- * @param {F2.ContainerConfig} config The configuration object
- */
- init: function(config) {
- _config = config || {};
-
- _validateContainerConfig();
-
- _hydrateContainerConfig(_config);
-
- // dictates whether we use the old logic or the new logic.
- // TODO: Remove in v2.0
- _bUsesAppHandlers = (!_config.beforeAppRender && !_config.appRender && !_config.afterAppRender && !_config.appScriptLoadFailed);
-
- // only establish RPC connection if the container supports the secure app page
- if ( !! _config.secureAppPagePath || _config.isSecureAppPage) {
- F2.Rpc.init( !! _config.secureAppPagePath ? _config.secureAppPagePath : false);
- }
+ return o;
+ }
- F2.UI.init(_config);
+ // Handle UI Call
+ if (_rUiCall.test(message)) {
+ obj = parseMessage(_rUiCall, message, appConfig.instanceId);
+ func = parseFunction(appConfig.ui, obj.functionName);
- if (!_config.isSecureAppPage) {
- _initContainerEvents();
- }
- },
- /**
- * Has the container been init?
- * @method isInit
- * @return {bool} True if the container has been init
- */
- isInit: _isInit,
- /**
- * Automatically load apps that are already defined in the DOM. Elements will
- * be rendered into the location of the placeholder DOM element. Any AppHandlers
- * that are defined will be bypassed.
- * @method loadPlaceholders
- * @param {Element} parentNode The element to search for placeholder apps
- */
- loadPlaceholders: function(parentNode) {
-
- var elements = [],
- appConfigs = [],
- add = function(e) {
- if (!e) { return; }
- elements.push(e);
- },
- addAll = function(els) {
- if (!els) { return; }
- for (var i = 0, len = els.length; i < len; i++) {
- add(els[i]);
- }
- };
+ if (func !== undefined) {
+ func.apply(appConfig.ui, obj.params);
+ } else {
+ F2.log('Unable to locate UI RPC function: ' + obj.functionName);
+ }
+ } else if (_rRpc.test(message)) {
+ obj = parseMessage(_rRpc, message, appConfig.instanceId);
+ func = parseFunction(window, obj.functionName);
- if (!!parentNode && !F2.isNativeDOMNode(parentNode)) {
- throw ('"parentNode" must be null or a DOM node');
- }
+ if (func !== undefined) {
+ func.apply(func, obj.params);
+ } else {
+ F2.log('Unable to locate RPC function: ' + obj.functionName);
+ }
+ } else if (_rRpcCallback.test(message)) {
+ obj = parseMessage(_rRpcCallback, message, appConfig.instanceId);
- // if the passed in element has a data-f2-appid attribute add
- // it to the list of elements but to not search within that
- // element for other placeholders
- if (parentNode && parentNode.hasAttribute('data-f2-appid')) {
- add(parentNode);
- } else {
+ if (_callbacks[obj.functionName] !== undefined) {
+ _callbacks[obj.functionName].apply(_callbacks[obj.functionName], obj.params);
+ delete _callbacks[obj.functionName];
+ }
+ } else if (_rEvents.test(message)) {
+ obj = parseMessage(_rEvents, message, appConfig.instanceId);
+ F2.Events._socketEmit.apply(F2.Events, obj);
+ }
+ }
- // find placeholders within the parentNode only if
- // querySelectorAll exists
- parentNode = parentNode || document;
- if (parentNode.querySelectorAll) {
- addAll(parentNode.querySelectorAll('[data-f2-appid]'));
- }
- }
+ /**
+ Registers a callback function
+ @method _registerCallback
+ @private
+ @param {function} callback The callback function
+ @return {string} The callback ID
+ */
+ function _registerCallback(callback) {
+ var callbackId = F2.guid();
+ _callbacks[callbackId] = callback;
+ return callbackId;
+ }
- for (var i = 0, len = elements.length; i < len; i++) {
- var appConfig = _getAppConfigFromElement(elements[i]);
- appConfigs.push(appConfig);
- }
+ return {
+ /**
+ Broadcast an RPC function to all sockets
+ @method broadcast
+ @param {string} messageType The message type
+ @param {Array} params The parameters to broadcast
+ */
+ broadcast: function(messageType, params) {
+ var message = messageType + F2.stringify(params);
+
+ jQuery.each(_apps, function(i, a) {
+ a.socket.postMessage(message);
+ });
+ },
+ /**
+ Calls a remote function
+ @method call
+ @param {string} instanceId The app's Instance ID
+ @param {string} messageType The message type
+ @param {string} functionName The name of the remote function
+ @param {Array} params An array of parameters to pass to the remote
+ function. Any functions found within the params will be treated as a
+ callback function.
+ */
+ call: function(instanceId, messageType, functionName, params) {
+ // Loop through params and find functions and convert them to callbacks
+ var callbacks = [];
+
+ jQuery.each(params, function(i, e) {
+ if (typeof e === 'function') {
+ var cid = _registerCallback(e);
+ params[i] = cid;
+ callbacks.push(cid);
+ }
+ });
- if (appConfigs.length) {
- F2.registerApps(appConfigs);
- }
- },
- /**
- * Begins the loading process for all apps and/or initialization process for pre-loaded apps.
- * The app will be passed the {{#crossLink "F2.AppConfig"}}{{/crossLink}} object which will
- * contain the app's unique instanceId within the container. If the
- * {{#crossLink "F2.AppConfig"}}{{/crossLink}}.root property is populated the app is considered
- * to be a pre-loaded app and will be handled accordingly. Optionally, the
- * {{#crossLink "F2.AppManifest"}}{{/crossLink}} can be passed in and those
- * assets will be used instead of making a request.
- * @method registerApps
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @param {Array} [appManifests] An array of
- * {{#crossLink "F2.AppManifest"}}{{/crossLink}}
- * objects. This array must be the same length as the apps array that is
- * objects. This array must be the same length as the apps array that is
- * passed in. This can be useful if apps are loaded on the server-side and
- * passed down to the client.
- * @example
- * Traditional App requests.
- *
- * // Traditional f2 app configs
- * var arConfigs = [
- * {
- * appId: 'com_externaldomain_example_app',
- * context: {},
- * manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
- * },
- * {
- * appId: 'com_externaldomain_example_app',
- * context: {},
- * manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
- * },
- * {
- * appId: 'com_externaldomain_example_app2',
- * context: {},
- * manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
- * }
- * ];
- *
- * F2.init();
- * F2.registerApps(arConfigs);
- *
- * @example
- * Pre-loaded and tradition apps mixed.
- *
- * // Pre-loaded apps and traditional f2 app configs
- * // you can preload the same app multiple times as long as you have a unique root for each
- * var arConfigs = [
- * {
- * appId: 'com_mydomain_example_app',
- * context: {},
- * root: 'div#example-app-1',
- * manifestUrl: ''
- * },
- * {
- * appId: 'com_mydomain_example_app',
- * context: {},
- * root: 'div#example-app-2',
- * manifestUrl: ''
- * },
- * {
- * appId: 'com_externaldomain_example_app',
- * context: {},
- * manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
- * }
- * ];
- *
- * F2.init();
- * F2.registerApps(arConfigs);
- *
- * @example
- * Apps with predefined manifests.
- *
- * // Traditional f2 app configs
- * var arConfigs = [
- * {appId: 'com_externaldomain_example_app', context: {}},
- * {appId: 'com_externaldomain_example_app', context: {}},
- * {appId: 'com_externaldomain_example_app2', context: {}}
- * ];
- *
- * // Pre requested manifest responses
- * var arManifests = [
- * {
- * apps: ['
'],
- * inlineScripts: [],
- * scripts: ['http://www.domain.com/js/App2Class.js'],
- * styles: ['http://www.domain.com/css/App2Styles.css']
- * }
- * ];
- *
- * F2.init();
- * F2.registerApps(arConfigs, arManifests);
- */
- registerApps: function(appConfigs, appManifests) {
-
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.registerApps()');
- return;
- }
- else if (!appConfigs) {
- F2.log('At least one AppConfig must be passed when calling F2.registerApps()');
- return;
- }
+ _apps[instanceId].socket.postMessage(
+ messageType + F2.stringify({
+ functionName: functionName,
+ params: params,
+ callbacks: callbacks
+ })
+ );
+ },
- var appStack = [];
- var batches = {};
- var callbackStack = {};
- var haveManifests = false;
- appConfigs = [].concat(appConfigs);
- appManifests = [].concat(appManifests || []);
- haveManifests = !! appManifests.length;
-
- // appConfigs must have a length
- if (!appConfigs.length) {
- F2.log('At least one AppConfig must be passed when calling F2.registerApps()');
- return;
- // ensure that the array of apps and manifests are qual
- }
- else if (appConfigs.length && haveManifests && appConfigs.length != appManifests.length) {
- F2.log('The length of "apps" does not equal the length of "appManifests"');
- return;
- }
+ /**
+ Init function which tells F2.Rpc whether it is running at the container-
+ level or the app-level. This method is generally called by
+ F2.{{#crossLink "F2/init"}}{{/crossLink}}
+ @method init
+ @param {string} [secureAppPagePath] The
+ {{#crossLink "F2.ContainerConfig"}}{{/crossLink}}.secureAppPagePath
+ property
+ */
+ init: function(secureAppPagePath) {
+ _secureAppPagePath = secureAppPagePath;
+
+ if (!_secureAppPagePath) {
+ _createAppToContainerSocket();
+ }
+ },
- // validate each app and assign it an instanceId
- // then determine which apps can be batched together
- jQuery.each(appConfigs, function(i, a) {
- // add properties and methods
- a = _createAppConfig(a);
+ /**
+ Determines whether the Instance ID is considered to be 'remote'. This is
+ determined by checking if 1) the app has an open socket and 2) whether
+ F2.Rpc is running inside of an iframe
+ @method isRemote
+ @param {string} instanceId The Instance ID
+ @return {bool} True if there is an open socket
+ */
+ isRemote: function(instanceId) {
+ var appExists = _apps[instanceId] !== undefined;
+ var appIsSecure = _apps[instanceId].config.isSecure;
+ var noFrameAccess = !jQuery(_apps[instanceId].config.root).find('iframe').length;
+
+ return appExists && appIsSecure && noFrameAccess;
+ },
- // Will set to itself, for preloaded apps, or set to null for apps that aren't already
- // on the page.
- a.root = a.root || null;
+ /**
+ Creates a container-to-app or app-to-container socket for communication
+ @method register
+ @param {F2.AppConfig} [appConfig] The F2.AppConfig object
+ @param {F2.AppManifest} [appManifest] The F2.AppManifest object
+ */
+ register: function(appConfig, appManifest) {
+ if (appConfig && appManifest) {
+ _apps[appConfig.instanceId] = {
+ config: appConfig,
+ socket: _createContainerToAppSocket(appConfig, appManifest)
+ };
+ } else {
+ F2.log('Unable to register socket connection. Please check container configuration.');
+ }
+ }
+ };
+})());
- // we validate the app after setting the root property because pre-load apps do no require
- // manifest url
- if (!_validateApp(a)) {
- return; // move to the next app
- }
+F2.extend('UI', (function() {
+
+ var _containerConfig;
+
+ /**
+ UI helper methods
+ @class F2.UI
+ @constructor
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ */
+ function UIClass(appConfig) {
+ var _appConfig = appConfig;
+ var $root = jQuery(appConfig.root);
+
+ function _updateHeight(height) {
+ height = height || jQuery(_appConfig.root).outerHeight();
+
+ if (F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'updateHeight',
+ [
+ height
+ ]
+ );
+ } else {
+ _appConfig.height = height;
+ $root.find('iframe').height(_appConfig.height);
+ }
+ }
- // save app
- _apps[a.instanceId] = {
- config: a
- };
+ // http://getbootstrap.com/javascript/#modals
+ function _modalHtml(type, message, showCancel) {
+ return [
+ '
',
+ '
',
+ '
',
+ '
',
+ '',
+ '
', type, '
',
+ '
',
+ '
', message, '
',
+ '',
+ '
',
+ '
',
+ '
'
+ ].join('');
+ }
- // If the root property is defined then this app is considered to be preloaded and we will
- // run it through that logic.
- if (a.root && !_isPlaceholderElement(a.root)) {
- if ((!a.root && typeof(a.root) != 'string') && !F2.isNativeDOMNode(a.root)) {
- F2.log('AppConfig invalid for pre-load, not a valid string and not dom node');
- F2.log('AppConfig instance:', a);
- throw ('Preloaded appConfig.root property must be a native dom node or a string representing a sizzle selector. Please check your inputs and try again.');
- }
- else if (jQuery(a.root).length != 1) {
- F2.log('AppConfig invalid for pre-load, root not unique');
- F2.log('AppConfig instance:', a);
- F2.log('Number of dom node instances:', jQuery(a.root).length);
- throw ('Preloaded appConfig.root property must map to a unique dom node. Please check your inputs and try again.');
- }
-
- // instantiate F2.App
- _createAppInstance(a);
+ return {
+ /**
+ Removes a overlay from an Element on the page
+ @method hideMask
+ @param {string|Element} selector The Element or selector to an Element
+ that currently contains the loader
+ */
+ hideMask: function(selector) {
+ F2.UI.hideMask(_appConfig.instanceId, selector);
+ },
+ /**
+ Helper methods for creating and using Modals
+ @class F2.UI.Modals
+ @for F2.UI
+ */
+ Modals: (function() {
+ function _renderAlert(message) {
+ return _modalHtml('Alert', message);
+ }
- // init events
- _initAppEvents(a);
+ function _renderConfirm(message) {
+ return _modalHtml('Confirm', message, true);
+ }
- // Continue on in the .each loop, no need to continue because the app is on the page
- // the js in initialized, and it is ready to role.
- return; // equivalent to continue in .each
- }
+ return {
+ /**
+ Display an alert message on the page
+ @method alert
+ @param {string} message The message to be displayed
+ @param {function} [callback] The callback to be fired when the user
+ closes the dialog
+ @for F2.UI.Modals
+ */
+ alert: function(message, callback) {
+ if (!F2.isInit()) {
+ F2.log('F2.init() must be called before F2.UI.Modals.alert()');
+ return;
+ }
- if (!_isPlaceholderElement(a.root)) {
- if (!_bUsesAppHandlers) {
- // fire beforeAppRender
- a.root = _beforeAppRender(a);
- }
- else {
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_CREATE_ROOT,
- a // the app config
- );
-
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER_BEFORE,
- a // the app config
- );
- }
- }
+ if (F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'Modals.alert',
+ [].slice.call(arguments)
+ );
+ } else {
+ // Display the alert
+ jQuery(_renderAlert(message))
+ .on('show.bs.modal', function() {
+ var modal = this;
+ jQuery(modal).find('.btn-primary').on('click', function() {
+ jQuery(modal).modal('hide').remove();
+ (callback || jQuery.noop)();
+ });
+ })
+ .modal({
+ backdrop: true
+ });
+ }
+ },
+ /**
+ Display a confirm message on the page
+ @method confirm
+ @param {string} message The message to be displayed
+ @param {function} okCallback The function that will be called when
+ the OK button is pressed
+ @param {function} cancelCallback The function that will be called
+ when the Cancel button is pressed
+ @for F2.UI.Modals
+ */
+ confirm: function(message, okCallback, cancelCallback) {
+ if (!F2.isInit()) {
+ F2.log('F2.init() must be called before F2.UI.Modals.confirm()');
+ return;
+ }
- // if we have the manifest, go ahead and load the app
- if (haveManifests) {
- _loadApps(a, appManifests[i]);
- }
- else {
- // check if this app can be batched
- if (a.enableBatchRequests && !a.isSecure) {
- batches[a.manifestUrl.toLowerCase()] = batches[a.manifestUrl.toLowerCase()] || [];
- batches[a.manifestUrl.toLowerCase()].push(a);
- }
- else {
- appStack.push({
- apps: [a],
- url: a.manifestUrl
- });
- }
- }
- });
+ if (F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'Modals.confirm',
+ [].slice.call(arguments)
+ );
+ } else {
+ // Display the alert
+ jQuery(_renderConfirm(message))
+ .on('show.bs.modal', function() {
+ var modal = this;
+
+ jQuery(modal).find('.btn-ok').on('click', function() {
+ jQuery(modal).modal('hide').remove();
+ (okCallback || jQuery.noop)();
+ });
+
+ jQuery(modal).find('.btn-cancel').on('click', function() {
+ jQuery(modal).modal('hide').remove();
+ (cancelCallback || jQuery.noop)();
+ });
+ })
+ .modal({
+ backdrop: true
+ });
+ }
+ }
+ };
+ })(),
+ /**
+ Sets the title of the app as shown in the browser. Depending on the
+ container HTML, this method may do nothing if the container has not been
+ configured properly or else the container provider does not allow Title's
+ to be set.
+ @method setTitle
+ @param {string} title The title of the app
+ @for F2.UI
+ */
+ setTitle: function(title) {
+ if (F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'setTitle',
+ [title]
+ );
+ } else {
+ jQuery(_appConfig.root).find('.' + F2.Constants.Css.APP_TITLE).text(title);
+ }
+ },
+ /**
+ Display an ovarlay over an Element on the page
+ @method showMask
+ @param {string|Element} selector The Element or selector to an Element
+ over which to display the loader
+ @param {bool} showLoader Display a loading icon
+ */
+ showMask: function(selector, showLoader) {
+ F2.UI.showMask(_appConfig.instanceId, selector, showLoader);
+ },
+ /**
+ For secure apps, this method updates the size of the iframe that
+ contains the app. **Note: It is recommended that app developers call
+ this method anytime Elements are added or removed from the DOM**
+ @method updateHeight
+ @param {int} height The height of the app
+ */
+ updateHeight: _updateHeight,
+ /**
+ Helper methods for creating and using Views
+ @class F2.UI.Views
+ @for F2.UI
+ */
+ Views: (function() {
+ var _events = new EventEmitter2();
+ var eventsPattern = /change/i;
+
+ // Unlimited listeners, set to > 0 for debugging
+ _events.setMaxListeners(0);
+
+ function _isValid(eventName) {
+ if (!eventsPattern.test(eventName)) {
+ F2.log('"' + eventName + '" is not a valid F2.UI.Views event name');
+ return false;
+ }
- // we don't have the manifests, go ahead and load them
- if (!haveManifests) {
- // add the batches to the appStack
- jQuery.each(batches, function(i, b) {
- appStack.push({
- url: i,
- apps: b
- });
- });
+ return true;
+ }
- // if an app is being loaded more than once on the page, there is the
- // potential that the jsonp callback will be clobbered if the request
- // for the AppManifest for the app comes back at the same time as
- // another request for the same app. We'll create a callbackStack
- // that will ensure that requests for the same app are loaded in order
- // rather than at the same time
- jQuery.each(appStack, function(i, req) {
- // define the callback function based on the first app's App ID
- var jsonpCallback = F2.Constants.JSONP_CALLBACK + req.apps[0].appId;
-
- // push the request onto the callback stack
- callbackStack[jsonpCallback] = callbackStack[jsonpCallback] || [];
- callbackStack[jsonpCallback].push(req);
- });
+ return {
+ /**
+ Change the current view for the app or add an event listener
+ @method change
+ @param {string|function} [input] If a string is passed in, the view
+ will be changed for the app. If a function is passed in, a change
+ event listener will be added.
+ @for F2.UI.Views
+ */
+ change: function(input) {
+ if (typeof input === 'function') {
+ this.on('change', input);
+ } else if (typeof input === 'string') {
+ if (_appConfig.isSecure && !F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'Views.change',
+ [].slice.call(arguments)
+ );
+ } else if (F2.inArray(input, _appConfig.views)) {
+ jQuery('.' + F2.Constants.Css.APP_VIEW, $root)
+ .addClass('hide')
+ .filter('[data-f2-view="' + input + '"]', $root)
+ .removeClass('hide');
+
+ _updateHeight();
+ _events.emit('change', input);
+ }
+ }
+ },
+ /**
+ Removes a view event listener
+ @method off
+ @param {string} event The event name
+ @param {function} listener The function that will be removed
+ @for F2.UI.Views
+ */
+ off: function(event, listener) {
+ if (_isValid(event)) {
+ _events.off(event, listener);
+ }
+ },
+ /**
+ Adds a view event listener
+ @method on
+ @param {string} event The event name
+ @param {function} listener The function to be fired when the event is
+ emitted
+ @for F2.UI.Views
+ */
+ on: function(event, listener) {
+ if (_isValid(event)) {
+ _events.on(event, listener);
+ }
+ }
+ };
+ })()
+ };
+ }
- // loop through each item in the callback stack and make the request
- // for the AppManifest. When the request is complete, pop the next
- // request off the stack and make the request.
- jQuery.each(callbackStack, function(i, requests) {
+ /**
+ Removes a overlay from an Element on the page
+ @method hideMask
+ @static
+ @param {string} instanceId The Instance ID of the app
+ @param {string|Element} selector The Element or selector to an Element
+ that currently contains the loader
+ @for F2.UI
+ */
+ UIClass.hideMask = function(instanceId, selector) {
+ if (!F2.isInit()) {
+ F2.log('F2.init() must be called before F2.UI.hideMask()');
+ return;
+ }
- var manifestRequest = function(jsonpCallback, req) {
- if (!req) {
- return;
- }
+ if (F2.Rpc.isRemote(instanceId) && !jQuery(selector).is('.' + F2.Constants.Css.APP)) {
+ F2.Rpc.call(
+ instanceId,
+ F2.Constants.Sockets.RPC,
+ 'F2.UI.hideMask',
+ [
+ instanceId,
+ // Have to pass selector or else there will be stringify errors
+ jQuery(selector).selector
+ ]
+ );
+ } else {
+ var container = jQuery(selector);
+ container.find('> .' + F2.Constants.Css.MASK).remove();
+ container.removeClass(F2.Constants.Css.MASK_CONTAINER);
- // setup defaults and callbacks
- var url = req.url,
- type = 'GET',
- dataType = 'jsonp',
- completeFunc = function() {
- manifestRequest(i, requests.pop());
- },
- errorFunc = function() {
- jQuery.each(req.apps, function(idx, item) {
- item.name = item.name || item.appId;
- F2.log('Removed failed ' + item.name + ' app', item);
- F2.removeApp(item.instanceId);
- });
- },
- successFunc = function(appManifest) {
- _loadApps(req.apps, appManifest);
- };
-
- // optionally fire xhr overrides
- if (_config.xhr && _config.xhr.dataType) {
- dataType = _config.xhr.dataType(req.url, req.apps);
- if (typeof dataType !== 'string') {
- throw ('ContainerConfig.xhr.dataType should return a string');
- }
- }
- if (_config.xhr && _config.xhr.type) {
- type = _config.xhr.type(req.url, req.apps);
- if (typeof type !== 'string') {
- throw ('ContainerConfig.xhr.type should return a string');
- }
- }
- if (_config.xhr && _config.xhr.url) {
- url = _config.xhr.url(req.url, req.apps);
- if (typeof url !== 'string') {
- throw ('ContainerConfig.xhr.url should return a string');
- }
- }
+ // If the element contains this property, reset to static position
+ if (container.data(F2.Constants.Css.MASK_CONTAINER)) {
+ container.css({ 'position': 'static' });
+ }
+ }
+ };
- // setup the default request function if an override is not present
- var requestFunc = _config.xhr;
- if (typeof requestFunc !== 'function') {
- requestFunc = function(url, appConfigs, successCallback, errorCallback, completeCallback) {
- jQuery.ajax({
- url: url,
- type: type,
- data: {
- params: F2.stringify(req.apps, F2.appConfigReplacer)
- },
- jsonp: false, // do not put 'callback=' in the query string
- jsonpCallback: jsonpCallback, // Unique function name
- dataType: dataType,
- success: successCallback,
- error: function(jqxhr, settings, exception) {
- F2.log('Failed to load app(s)', exception.toString(), req.apps);
- errorCallback();
- },
- complete: completeCallback
- });
- };
- }
+ /**
+ Runs initialization code for the UI class
+ @method init
+ @static
+ @param {F2.ContainerConfig} containerConfig The F2.ContainerConfig object
+ */
+ UIClass.init = function(containerConfig) {
+ _containerConfig = containerConfig;
+ _containerConfig.UI = jQuery.extend(true, {}, F2.ContainerConfig.UI, _containerConfig.UI || {});
+ };
- requestFunc(url, req.apps, successFunc, errorFunc, completeFunc);
- };
+ /**
+ Display an ovarlay over an Element on the page
+ @method showMask
+ @static
+ @param {string} instanceId The Instance ID of the app
+ @param {string|Element} selector The Element or selector to an Element over
+ which to display the loader
+ @param {bool} showLoading Display a loading icon
+ */
+ UIClass.showMask = function(instanceId, selector, showLoading) {
+ if (!F2.isInit()) {
+ F2.log('F2.init() must be called before F2.UI.showMask()');
+ return;
+ }
- manifestRequest(i, requests.pop());
- });
- }
- },
- /**
- * Removes all apps from the container
- * @method removeAllApps
- */
- removeAllApps: function() {
-
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.removeAllApps()');
- return;
- }
+ if (F2.Rpc.isRemote(instanceId) && jQuery(selector).is('.' + F2.Constants.Css.APP)) {
+ F2.Rpc.call(
+ instanceId,
+ F2.Constants.Sockets.RPC,
+ 'F2.UI.showMask',
+ [
+ instanceId,
+ // Have to pass selector or else there will be stringify errors
+ jQuery(selector).selector,
+ showLoading
+ ]
+ );
+ } else {
+ if (showLoading && !_containerConfig.UI.Mask.loadingIcon) {
+ F2.log('Unable to display loading icon. Please set F2.ContainerConfig.UI.Mask.loadingIcon when calling F2.init();');
+ }
- jQuery.each(_apps, function(i, a) {
- F2.removeApp(a.config.instanceId);
- });
- },
- /**
- * Removes an app from the container
- * @method removeApp
- * @param {string} instanceId The app's instanceId
- */
- removeApp: function(instanceId) {
-
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.removeApp()');
- return;
- }
+ var container = jQuery(selector).addClass(F2.Constants.Css.MASK_CONTAINER);
+ var mask = jQuery('
").append(eb.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},eb.expr.filters.animated=function(a){return eb.grep(eb.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;eb.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=eb.css(a,"position"),l=eb(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=eb.css(a,"top"),i=eb.css(a,"left"),j=("absolute"===k||"fixed"===k)&&eb.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),eb.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},eb.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){eb.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,eb.contains(b,e)?(typeof e.getBoundingClientRect!==xb&&(d=e.getBoundingClientRect()),c=V(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===eb.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),eb.nodeName(a[0],"html")||(c=a.offset()),c.top+=eb.css(a[0],"borderTopWidth",!0),c.left+=eb.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-eb.css(d,"marginTop",!0),left:b.left-c.left-eb.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||dd;a&&!eb.nodeName(a,"html")&&"static"===eb.css(a,"position");)a=a.offsetParent;return a||dd})}}),eb.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);eb.fn[a]=function(d){return Db(this,function(a,d,e){var f=V(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?eb(f).scrollLeft():e,c?e:eb(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),eb.each(["top","left"],function(a,b){eb.cssHooks[b]=A(cb.pixelPosition,function(a,c){return c?(c=bc(a,b),dc.test(c)?eb(a).position()[b]+"px":c):void 0})}),eb.each({Height:"height",Width:"width"},function(a,b){eb.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){eb.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Db(this,function(b,c,d){var e;return eb.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?eb.css(b,c,g):eb.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),eb.fn.size=function(){return this.length},eb.fn.andSelf=eb.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return eb});var ed=a.jQuery,fd=a.$;return eb.noConflict=function(b){return a.$===eb&&(a.$=fd),b&&a.jQuery===eb&&(a.jQuery=ed),eb},typeof b===xb&&(a.jQuery=a.$=eb),eb});/*!
* This file creates $ and jQuery variables within the F2 closure scope
*/
-var $,jQuery=$=window.jQuery.noConflict(!0);+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$element.find(".modal-dialog").one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.checkScrollbar=function(){this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){if(document.body.clientWidth>=window.innerWidth)return 0;var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),!function(a){function b(){this._events={},this._conf&&c.call(this,this._conf)}function c(a){a&&(this._conf=a,a.delimiter&&(this.delimiter=a.delimiter),a.maxListeners&&(this._events.maxListeners=a.maxListeners),a.wildcard&&(this.wildcard=a.wildcard),a.newListener&&(this.newListener=a.newListener),this.wildcard&&(this.listenerTree={}))}function d(a){this._events={},this.newListener=!1,c.call(this,a)}function e(a,b,c,d){if(!c)return[];var f,g,h,i,j,k,l,m=[],n=b.length,o=b[d],p=b[d+1];if(d===n&&c._listeners){if("function"==typeof c._listeners)return a&&a.push(c._listeners),[c];for(f=0,g=c._listeners.length;g>f;f++)a&&a.push(c._listeners[f]);return[c]}if("*"===o||"**"===o||c[o]){if("*"===o){for(h in c)"_listeners"!==h&&c.hasOwnProperty(h)&&(m=m.concat(e(a,b,c[h],d+1)));return m}if("**"===o){l=d+1===n||d+2===n&&"*"===p,l&&c._listeners&&(m=m.concat(e(a,b,c,n)));for(h in c)"_listeners"!==h&&c.hasOwnProperty(h)&&("*"===h||"**"===h?(c[h]._listeners&&!l&&(m=m.concat(e(a,b,c[h],n))),m=m.concat(e(a,b,c[h],d))):m=m.concat(h===p?e(a,b,c[h],d+2):e(a,b,c[h],d)));return m}m=m.concat(e(a,b,c[o],d+1))}if(i=c["*"],i&&e(a,b,i,d+1),j=c["**"])if(n>d){j._listeners&&e(a,b,j,n);for(h in j)"_listeners"!==h&&j.hasOwnProperty(h)&&(h===p?e(a,b,j[h],d+2):h===o?e(a,b,j[h],d+1):(k={},k[h]=j[h],e(a,b,{"**":k},d+1)))}else j._listeners?e(a,b,j,n):j["*"]&&j["*"]._listeners&&e(a,b,j["*"],n);return m}function f(a,b){a="string"==typeof a?a.split(this.delimiter):a.slice();for(var c=0,d=a.length;d>c+1;c++)if("**"===a[c]&&"**"===a[c+1])return;for(var e=this.listenerTree,f=a.shift();f;){if(e[f]||(e[f]={}),e=e[f],0===a.length){if(e._listeners){if("function"==typeof e._listeners)e._listeners=[e._listeners,b];else if(g(e._listeners)&&(e._listeners.push(b),!e._listeners.warned)){var i=h;"undefined"!=typeof this._events.maxListeners&&(i=this._events.maxListeners),i>0&&e._listeners.length>i&&(e._listeners.warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",e._listeners.length),console.trace())}}else e._listeners=b;return!0}f=a.shift()}return!0}var g=Array.isArray?Array.isArray:function(a){return"[object Array]"===Object.prototype.toString.call(a)},h=10;d.prototype.delimiter=".",d.prototype.setMaxListeners=function(a){this._events||b.call(this),this._events.maxListeners=a,this._conf||(this._conf={}),this._conf.maxListeners=a},d.prototype.event="",d.prototype.once=function(a,b){return this.many(a,1,b),this},d.prototype.many=function(a,b,c){function d(){0===--b&&e.off(a,d),c.apply(this,arguments)}var e=this;if("function"!=typeof c)throw new Error("many only accepts instances of Function");return d._origin=c,this.on(a,d),e},d.prototype.emit=function(){this._events||b.call(this);var a=arguments[0];if("newListener"===a&&!this.newListener&&!this._events.newListener)return!1;if(this._all){for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];for(f=0,c=this._all.length;c>f;f++)this.event=a,this._all[f].apply(this,d)}if("error"===a&&!(this._all||this._events.error||this.wildcard&&this.listenerTree.error))throw arguments[1]instanceof Error?arguments[1]:new Error("Uncaught, unspecified 'error' event.");var g;if(this.wildcard){g=[];var h="string"==typeof a?a.split(this.delimiter):a.slice();e.call(this,g,h,this.listenerTree,0)}else g=this._events[a];if("function"==typeof g){if(this.event=a,1===arguments.length)g.call(this);else if(arguments.length>1)switch(arguments.length){case 2:g.call(this,arguments[1]);break;case 3:g.call(this,arguments[1],arguments[2]);break;default:for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];g.apply(this,d)}return!0}if(g){for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];for(var i=g.slice(),f=0,c=i.length;c>f;f++)this.event=a,i[f].apply(this,d);return i.length>0||this._all}return this._all},d.prototype.on=function(a,c){if("function"==typeof a)return this.onAny(a),this;if("function"!=typeof c)throw new Error("on only accepts instances of Function");if(this._events||b.call(this),this.emit("newListener",a,c),this.wildcard)return f.call(this,a,c),this;if(this._events[a]){if("function"==typeof this._events[a])this._events[a]=[this._events[a],c];else if(g(this._events[a])&&(this._events[a].push(c),!this._events[a].warned)){var d=h;"undefined"!=typeof this._events.maxListeners&&(d=this._events.maxListeners),d>0&&this._events[a].length>d&&(this._events[a].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[a].length),console.trace())}}else this._events[a]=c;return this},d.prototype.onAny=function(a){if(this._all||(this._all=[]),"function"!=typeof a)throw new Error("onAny only accepts instances of Function");return this._all.push(a),this},d.prototype.addListener=d.prototype.on,d.prototype.off=function(a,b){if("function"!=typeof b)throw new Error("removeListener only takes instances of Function");var c,d=[];if(this.wildcard){var f="string"==typeof a?a.split(this.delimiter):a.slice();d=e.call(this,null,f,this.listenerTree,0)}else{if(!this._events[a])return this;c=this._events[a],d.push({_listeners:c})}for(var h=0;hk;k++)if(c[k]===b||c[k].listener&&c[k].listener===b||c[k]._origin&&c[k]._origin===b){j=k;break}if(0>j)continue;return this.wildcard?i._listeners.splice(j,1):this._events[a].splice(j,1),0===c.length&&(this.wildcard?delete i._listeners:delete this._events[a]),this}(c===b||c.listener&&c.listener===b||c._origin&&c._origin===b)&&(this.wildcard?delete i._listeners:delete this._events[a])}return this},d.prototype.offAny=function(a){var b,c=0,d=0;if(a&&this._all&&this._all.length>0){for(b=this._all,c=0,d=b.length;d>c;c++)if(a===b[c])return b.splice(c,1),this}else this._all=[];return this},d.prototype.removeListener=d.prototype.off,d.prototype.removeAllListeners=function(a){if(0===arguments.length)return!this._events||b.call(this),this;if(this.wildcard)for(var c="string"==typeof a?a.split(this.delimiter):a.slice(),d=e.call(this,null,c,this.listenerTree,0),f=0;f9&&g>0,!0}function k(){if(!S){S=!0;for(var a=0;a'):(c=b.createElement("IFRAME"),c.name=a.props.name),c.id=c.name=a.props.name,delete a.props.name,"string"==typeof a.container&&(a.container=b.getElementById(a.container)),a.container||(u(c.style,{position:"absolute",top:"-2000px",left:"0px"}),a.container=b.body);var d=a.props.src;if(a.props.src="javascript:false",u(c,a.props),c.border=c.frameBorder=0,c.allowTransparency=!0,a.container.appendChild(c),a.onLoad&&E(c,"load",a.onLoad),a.usePost){var e,f=a.container.appendChild(b.createElement("form"));if(f.target=c.name,f.action=d,f.method="POST","object"==typeof a.usePost)for(var g in a.usePost)a.usePost.hasOwnProperty(g)&&(B?e=b.createElement(''):(e=b.createElement("INPUT"),e.name=g),e.value=a.usePost[g],f.appendChild(e));f.submit(),f.parentNode.removeChild(f)}else c.src=d;return a.props.src=d,c}function x(a,b){"string"==typeof a&&(a=[a]);for(var c,d=a.length;d--;)if(c=a[d],c=new RegExp("^"==c.substr(0,1)?c:"^"+c.replace(/(\*)/g,".$1").replace(/\?/g,".")+"$"),c.test(b))return!0;return!1}function y(d){var e,f=d.protocol;if(d.isHost=d.isHost||t(V.xdm_p),Q=d.hash||!1,d.props||(d.props={}),d.isHost)d.remote=r(d.remote),d.channel=d.channel||"default"+H++,d.secret=Math.random().toString(16).substring(2),t(f)&&(f=q(c.href)==q(d.remote)?"4":g(a,"postMessage")||g(b,"postMessage")?"1":d.swf&&g(a,"ActiveXObject")&&j()?"6":"Gecko"===navigator.product&&"frameElement"in a&&-1==navigator.userAgent.indexOf("WebKit")?"5":d.remoteHelper?"2":"0");else if(d.channel=V.xdm_c.replace(/["'<>\\]/g,""),d.secret=V.xdm_s,d.remote=V.xdm_e.replace(/["'<>\\]/g,""),f=V.xdm_p,d.acl&&!x(d.acl,d.remote))throw new Error("Access denied for "+d.remote);switch(d.protocol=f,f){case"0":if(u(d,{interval:100,delay:2e3,useResize:!0,useParent:!1,usePolling:!1},!0),d.isHost){if(!d.local){for(var h,i=c.protocol+"//"+c.host,k=b.body.getElementsByTagName("img"),l=k.length;l--;)if(h=k[l],h.src.substring(0,i.length)===i){d.local=h.src;break}d.local||(d.local=a)}var m={xdm_c:d.channel,xdm_p:0};d.local===a?(d.usePolling=!0,d.useParent=!0,d.local=c.protocol+"//"+c.host+c.pathname+c.search,m.xdm_e=d.local,m.xdm_pa=1):m.xdm_e=r(d.local),d.container&&(d.useResize=!1,m.xdm_po=1),d.remote=s(d.remote,m)}else u(d,{channel:V.xdm_c,remote:V.xdm_e,useParent:!t(V.xdm_pa),usePolling:!t(V.xdm_po),useResize:d.useParent?!1:d.useResize});e=[new N.stack.HashTransport(d),new N.stack.ReliableBehavior({}),new N.stack.QueueBehavior({encode:!0,maxLength:4e3-d.remote.length}),new N.stack.VerifyBehavior({initiate:d.isHost})];break;case"1":e=[new N.stack.PostMessageTransport(d)];break;case"2":d.isHost&&(d.remoteHelper=r(d.remoteHelper)),e=[new N.stack.NameTransport(d),new N.stack.QueueBehavior,new N.stack.VerifyBehavior({initiate:d.isHost})];break;case"3":e=[new N.stack.NixTransport(d)];break;case"4":e=[new N.stack.SameOriginTransport(d)];break;case"5":e=[new N.stack.FrameElementTransport(d)];break;case"6":C||j(),e=[new N.stack.FlashTransport(d)]}return e.push(new N.stack.QueueBehavior({lazy:d.lazy,remove:!0})),e}function z(a){for(var b,c={incoming:function(a,b){this.up.incoming(a,b)},outgoing:function(a,b){this.down.outgoing(a,b)},callback:function(a){this.up.callback(a)},init:function(){this.down.init()},destroy:function(){this.down.destroy()}},d=0,e=a.length;e>d;d++)b=a[d],u(b,c,!0),0!==d&&(b.down=a[d-1]),d!==e-1&&(b.up=a[d+1]);return b}function A(a){a.up.down=a.down,a.down.up=a.up,a.up=a.down=null}var B,C,D,E,F,G=this,H=Math.floor(1e4*Math.random()),I=Function.prototype,J=/^((http.?:)\/\/([^:\/\s]+)(:\d+)*)/,K=/[\-\w]+\/\.\.\//,L=/([^:])\/\//g,M="",N={},O=a.easyXDM,P="easyXDM_",Q=!1;if(g(a,"addEventListener"))E=function(a,b,c){a.addEventListener(b,c,!1)},F=function(a,b,c){a.removeEventListener(b,c,!1)};else{if(!g(a,"attachEvent"))throw new Error("Browser not supported");E=function(a,b,c){a.attachEvent("on"+b,c)},F=function(a,b,c){a.detachEvent("on"+b,c)}}var R,S=!1,T=[];if("readyState"in b?(R=b.readyState,S="complete"==R||~navigator.userAgent.indexOf("AppleWebKit/")&&("loaded"==R||"interactive"==R)):S=!!b.body,!S){if(g(a,"addEventListener"))E(b,"DOMContentLoaded",k);else if(E(b,"readystatechange",function(){"complete"==b.readyState&&k()}),b.documentElement.doScroll&&a===top){var U=function(){if(!S){try{b.documentElement.doScroll("left")}catch(a){return void d(U,1)}k()}};U()}E(a,"load",k)}var V=function(a){a=a.substring(1).split("&");for(var b,c={},d=a.length;d--;)b=a[d].split("="),c[b[0]]=e(b[1]);return c}(/xdm_e=/.test(c.search)?c.search:c.hash),W=function(){var a={},b={a:[1,2,3]},c='{"a":[1,2,3]}';return"undefined"!=typeof JSON&&"function"==typeof JSON.stringify&&JSON.stringify(b).replace(/\s/g,"")===c?JSON:(Object.toJSON&&Object.toJSON(b).replace(/\s/g,"")===c&&(a.stringify=Object.toJSON),"function"==typeof String.prototype.evalJSON&&(b=c.evalJSON(),b.a&&3===b.a.length&&3===b.a[2]&&(a.parse=function(a){return a.evalJSON()})),a.stringify&&a.parse?(W=function(){return a},a):null)};u(N,{version:"2.4.19.3",query:V,stack:{},apply:u,getJSONObject:W,whenReady:l,noConflict:n}),N.DomHelper={on:E,un:F,requiresJSON:function(c){h(a,"JSON")||b.write('')}},function(){var a={};N.Fn={set:function(b,c){a[b]=c},get:function(b,c){if(a.hasOwnProperty(b)){var d=a[b];return c&&delete a[b],d}}}}(),N.Socket=function(a){var b=z(y(a).concat([{incoming:function(b,c){a.onMessage(b,c)},callback:function(b){a.onReady&&a.onReady(b)}}])),c=q(a.remote);this.origin=q(a.remote),this.destroy=function(){b.destroy()},this.postMessage=function(a){b.outgoing(a,c)},b.init()},N.Rpc=function(a,b){if(b.local)for(var c in b.local)if(b.local.hasOwnProperty(c)){var d=b.local[c];"function"==typeof d&&(b.local[c]={method:d})}var e=z(y(a).concat([new N.stack.RpcBehavior(this,b),{callback:function(b){a.onReady&&a.onReady(b)}}]));this.origin=q(a.remote),this.destroy=function(){e.destroy()},e.init()},N.stack.SameOriginTransport=function(a){var b,e,f,g;return b={outgoing:function(a,b,c){f(a),c&&c()},destroy:function(){e&&(e.parentNode.removeChild(e),e=null)},onDOMReady:function(){g=q(a.remote),a.isHost?(u(a.props,{src:s(a.remote,{xdm_e:c.protocol+"//"+c.host+c.pathname,xdm_c:a.channel,xdm_p:4}),name:P+a.channel+"_provider"}),e=w(a),N.Fn.set(a.channel,function(a){return f=a,d(function(){b.up.callback(!0)},0),function(a){b.up.incoming(a,g)}})):(f=m().Fn.get(a.channel,!0)(function(a){b.up.incoming(a,g)}),d(function(){b.up.callback(!0)},0))},init:function(){l(b.onDOMReady,b)}}},N.stack.FlashTransport=function(a){function e(a){d(function(){h.up.incoming(a,j)},0)}function g(c){var d=a.swf+"?host="+a.isHost,e="easyXDM_swf_"+Math.floor(1e4*Math.random());N.Fn.set("flash_loaded"+c.replace(/[\-.]/g,"_"),function(){N.stack.FlashTransport[c].swf=k=m.firstChild;for(var a=N.stack.FlashTransport[c].queue,b=0;b"}var h,i,j,k,m;return h={outgoing:function(b,c,d){k.postMessage(a.channel,b.toString()),d&&d()},destroy:function(){try{k.destroyChannel(a.channel)}catch(b){}k=null,i&&(i.parentNode.removeChild(i),i=null)},onDOMReady:function(){j=a.remote,N.Fn.set("flash_"+a.channel+"_init",function(){d(function(){h.up.callback(!0)})}),N.Fn.set("flash_"+a.channel+"_onMessage",e),a.swf=r(a.swf);var b=o(a.swf),f=function(){N.stack.FlashTransport[b].init=!0,k=N.stack.FlashTransport[b].swf,k.createChannel(a.channel,a.secret,q(a.remote),a.isHost),a.isHost&&(D&&a.swfNoThrottle&&u(a.props,{position:"fixed",right:0,top:0,height:"20px",width:"20px"}),u(a.props,{src:s(a.remote,{xdm_e:q(c.href),xdm_c:a.channel,xdm_p:6,xdm_s:a.secret}),name:P+a.channel+"_provider"}),i=w(a))};N.stack.FlashTransport[b]&&N.stack.FlashTransport[b].init?f():N.stack.FlashTransport[b]?N.stack.FlashTransport[b].queue.push(f):(N.stack.FlashTransport[b]={queue:[f]},g(b))},init:function(){l(h.onDOMReady,h)}}},N.stack.PostMessageTransport=function(b){function e(a){if(a.origin)return q(a.origin);if(a.uri)return q(a.uri);if(a.domain)return c.protocol+"//"+a.domain;throw"Unable to retrieve the origin of the event"}function f(a){var c=e(a);c==j&&a.data.substring(0,b.channel.length+1)==b.channel+" "&&g.up.incoming(a.data.substring(b.channel.length+1),c)}var g,h,i,j;return g={outgoing:function(a,c,d){i.postMessage(b.channel+" "+a,c||j),d&&d()},destroy:function(){F(a,"message",f),h&&(i=null,h.parentNode.removeChild(h),h=null)},onDOMReady:function(){if(j=q(b.remote),b.isHost){var e=function(c){c.data==b.channel+"-ready"&&(i="postMessage"in h.contentWindow?h.contentWindow:h.contentWindow.document,F(a,"message",e),E(a,"message",f),d(function(){g.up.callback(!0)},0))};E(a,"message",e),u(b.props,{src:s(b.remote,{xdm_e:q(c.href),xdm_c:b.channel,xdm_p:1}),name:P+b.channel+"_provider"}),h=w(b)}else E(a,"message",f),i="postMessage"in a.parent?a.parent:a.parent.document,i.postMessage(b.channel+"-ready",j),d(function(){g.up.callback(!0)},0)},init:function(){l(g.onDOMReady,g)}}},N.stack.FrameElementTransport=function(e){var f,g,h,i;return f={outgoing:function(a,b,c){h.call(this,a),c&&c()},destroy:function(){g&&(g.parentNode.removeChild(g),g=null)},onDOMReady:function(){i=q(e.remote),e.isHost?(u(e.props,{src:s(e.remote,{xdm_e:q(c.href),xdm_c:e.channel,xdm_p:5}),name:P+e.channel+"_provider"}),g=w(e),g.fn=function(a){return delete g.fn,h=a,d(function(){f.up.callback(!0)},0),function(a){f.up.incoming(a,i)}}):(b.referrer&&q(b.referrer)!=V.xdm_e&&(a.top.location=V.xdm_e),h=a.frameElement.fn(function(a){f.up.incoming(a,i)}),f.up.callback(!0))},init:function(){l(f.onDOMReady,f)}}},N.stack.NameTransport=function(a){function b(b){var c=a.remoteHelper+(h?"#_3":"#_2")+a.channel;i.contentWindow.sendMessage(b,c)}function c(){h?2!==++k&&h||g.up.callback(!0):(b("ready"),g.up.callback(!0))}function e(a){g.up.incoming(a,n)}function f(){m&&d(function(){m(!0)},0)}var g,h,i,j,k,m,n,o;return g={outgoing:function(a,c,d){m=d,b(a)},destroy:function(){i.parentNode.removeChild(i),i=null,h&&(j.parentNode.removeChild(j),j=null)},onDOMReady:function(){h=a.isHost,k=0,n=q(a.remote),a.local=r(a.local),h?(N.Fn.set(a.channel,function(b){h&&"ready"===b&&(N.Fn.set(a.channel,e),c())}),o=s(a.remote,{xdm_e:a.local,xdm_c:a.channel,xdm_p:2}),u(a.props,{src:o+"#"+a.channel,name:P+a.channel+"_provider"}),j=w(a)):(a.remoteHelper=a.remote,N.Fn.set(a.channel,e));var b=function(){var e=i||this;F(e,"load",b),N.Fn.set(a.channel+"_load",f),function g(){"function"==typeof e.contentWindow.sendMessage?c():d(g,50)}()};i=w({props:{src:a.local+"#_4"+a.channel},onLoad:b})},init:function(){l(g.onDOMReady,g)}}},N.stack.HashTransport=function(b){function c(a){if(p){var c=b.remote+"#"+n++ +"_"+a;(i||!r?p.contentWindow:p).location=c}}function e(a){m=a,h.up.incoming(m.substring(m.indexOf("_")+1),s)}function f(){if(o){var a=o.location.href,b="",c=a.indexOf("#");-1!=c&&(b=a.substring(c)),b&&b!=m&&e(b)}}function g(){j=setInterval(f,k)}var h,i,j,k,m,n,o,p,r,s;return h={outgoing:function(a){c(a)},destroy:function(){a.clearInterval(j),(i||!r)&&p.parentNode.removeChild(p),p=null},onDOMReady:function(){if(i=b.isHost,k=b.interval,m="#"+b.channel,n=0,r=b.useParent,s=q(b.remote),i){if(u(b.props,{src:b.remote,name:P+b.channel+"_provider"}),r)b.onLoad=function(){o=a,g(),h.up.callback(!0)};else{var c=0,e=b.delay/50;!function f(){if(++c>e)throw new Error("Unable to reference listenerwindow");try{o=p.contentWindow.frames[P+b.channel+"_consumer"]}catch(a){}o?(g(),h.up.callback(!0)):d(f,50)}()}p=w(b)}else o=a,g(),r?(p=parent,h.up.callback(!0)):(u(b,{props:{src:b.remote+"#"+b.channel+new Date,name:P+b.channel+"_consumer"},onLoad:function(){h.up.callback(!0)}}),p=w(b))},init:function(){l(h.onDOMReady,h)}}},N.stack.ReliableBehavior=function(){var a,b,c=0,d=0,e="";return a={incoming:function(f,g){var h=f.indexOf("_"),i=f.substring(0,h).split(",");f=f.substring(h+1),i[0]==c&&(e="",b&&b(!0)),f.length>0&&(a.down.outgoing(i[1]+","+c+"_"+e,g),d!=i[1]&&(d=i[1],a.up.incoming(f,g)))},outgoing:function(f,g,h){e=f,b=h,a.down.outgoing(d+","+ ++c+"_"+f,g)}}},N.stack.QueueBehavior=function(a){function b(){if(a.remove&&0===h.length)return void A(c);if(!i&&0!==h.length&&!g){i=!0;var e=h.shift();c.down.outgoing(e.data,e.origin,function(a){i=!1,e.callback&&d(function(){e.callback(a)},0),b()})}}var c,g,h=[],i=!0,j="",k=0,l=!1,m=!1;return c={init:function(){t(a)&&(a={}),a.maxLength&&(k=a.maxLength,m=!0),a.lazy?l=!0:c.down.init()},callback:function(a){i=!1;var d=c.up;b(),d.callback(a)},incoming:function(b,d){if(m){var f=b.indexOf("_"),g=parseInt(b.substring(0,f),10);j+=b.substring(f+1),0===g&&(a.encode&&(j=e(j)),c.up.incoming(j,d),j="")}else c.up.incoming(b,d)},outgoing:function(d,e,g){a.encode&&(d=f(d));var i,j=[];if(m){for(;0!==d.length;)i=d.substring(0,k),d=d.substring(i.length),j.push(i);for(;i=j.shift();)h.push({data:j.length+"_"+i,origin:e,callback:0===j.length?g:null})}else h.push({data:d,origin:e,callback:g});l?c.down.init():b()},destroy:function(){g=!0,c.down.destroy()}}},N.stack.VerifyBehavior=function(a){function b(){d=Math.random().toString(16).substring(2),c.down.outgoing(d)}var c,d,e;return c={incoming:function(f,g){var h=f.indexOf("_");-1===h?f===d?c.up.callback(!0):e||(e=f,a.initiate||b(),c.down.outgoing(f)):f.substring(0,h)===e&&c.up.incoming(f.substring(h+1),g)},outgoing:function(a,b,e){c.down.outgoing(d+"_"+a,b,e)},callback:function(){a.initiate&&b()}}},N.stack.RpcBehavior=function(a,b){function c(a){a.jsonrpc="2.0",f.down.outgoing(g.stringify(a))}function d(a,b){var d=Array.prototype.slice;return function(){var e,f=arguments.length,g={method:b};f>0&&"function"==typeof arguments[f-1]?(f>1&&"function"==typeof arguments[f-2]?(e={success:arguments[f-2],error:arguments[f-1]},g.params=d.call(arguments,0,f-2)):(e={success:arguments[f-1]},g.params=d.call(arguments,0,f-1)),j[""+ ++h]=e,g.id=h):g.params=d.call(arguments,0),a.namedParams&&1===g.params.length&&(g.params=g.params[0]),c(g)}}function e(a,b,d,e){if(!d)return void(b&&c({id:b,error:{code:-32601,message:"Procedure not found."}}));var f,g;b?(f=function(a){f=I,c({id:b,result:a})},g=function(a,d){g=I;var e={id:b,error:{code:-32099,message:a}};d&&(e.error.data=d),c(e)}):f=g=I,i(e)||(e=[e]);try{var h=d.method.apply(d.scope,e.concat([f,g]));t(h)||f(h)}catch(j){g(j.message)}}var f,g=b.serializer||W(),h=0,j={};return f={incoming:function(a){var d=g.parse(a);if(d.method)b.handle?b.handle(d,c):e(d.method,d.id,b.local[d.method],d.params);else{var f=j[d.id];d.error?f.error&&f.error(d.error):f.success&&f.success(d.result),delete j[d.id]}},init:function(){if(b.remote)for(var c in b.remote)b.remote.hasOwnProperty(c)&&(a[c]=d(b.remote[c],c));f.down.init()},destroy:function(){for(var c in b.remote)b.remote.hasOwnProperty(c)&&a.hasOwnProperty(c)&&delete a[c];f.down.destroy()}}},G.easyXDM=N}(window,document,location,window.setTimeout,decodeURIComponent,encodeURIComponent);var F2;F2=function(){var a=function(a,c){function d(a){var b=[];return a.replace(/^(\.\.?(\/|$))+/,"").replace(/\/(\.(\/|$))+/g,"/").replace(/\/\.\.$/,"/../").replace(/\/?[^\/]*/g,function(a){"/.."===a?b.pop():b.push(a)}),b.join("").replace(/^\//,"/"===a.charAt(0)?"/":"")}return c=b(c||""),a=b(a||""),c&&a?(c.protocol||a.protocol)+(c.protocol||c.authority?c.authority:a.authority)+d(c.protocol||c.authority||"/"===c.pathname.charAt(0)?c.pathname:c.pathname?(a.authority&&!a.pathname?"/":"")+a.pathname.slice(0,a.pathname.lastIndexOf("/")+1)+c.pathname:a.pathname)+(c.protocol||c.authority||c.pathname?c.search:c.search||a.search)+c.hash:null},b=function(a){var b=String(a).replace(/^\s+|\s+$/g,"").match(/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);return b?{href:b[0]||"",protocol:b[1]||"",authority:b[2]||"",host:b[3]||"",hostname:b[4]||"",port:b[5]||"",pathname:b[6]||"",search:b[7]||"",hash:b[8]||""}:null};return{appConfigReplacer:function(a,b){return"root"==a||"ui"==a||"height"==a?void 0:b},Apps:{},extend:function(a,b,c){var d="function"==typeof b,e=a?a.split("."):[],f=this;b=b||{},"F2"===e[0]&&(e=e.slice(1));for(var g=0,h=e.length;h>g;g++)f[e[g]]||(f[e[g]]=d&&g+1==h?b:{}),f=f[e[g]];if(!d)for(var i in b)("undefined"==typeof f[i]||c)&&(f[i]=b[i]);return f},guid:function(){var a=function(){return(65536*(1+Math.random())|0).toString(16).substring(1)};return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()},inArray:function(a,b){return jQuery.inArray(a,b)>-1},isLocalRequest:function(b){var c,d,e=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,f=b.toLowerCase(),g=e.exec(f);try{c=location.href}catch(h){c=document.createElement("a"),c.href="",c=c.href}c=c.toLowerCase(),g||(f=a(c,f).toLowerCase(),g=e.exec(f)),d=e.exec(c)||[];var i=!(g&&(g[1]!==d[1]||g[2]!==d[2]||(g[3]||("http:"===g[1]?"80":"443"))!==(d[3]||("http:"===d[1]?"80":"443"))));return i},isNativeDOMNode:function(a){var b="object"==typeof Node?a instanceof Node:a&&"object"==typeof a&&"number"==typeof a.nodeType&&"string"==typeof a.nodeName,c="object"==typeof HTMLElement?a instanceof HTMLElement:a&&"object"==typeof a&&1===a.nodeType&&"string"==typeof a.nodeName;return b||c},log:function(){if(window.console){var a="log",b=Array.prototype.slice.apply(arguments);b.length>1&&b[0]in window.console&&(a=b.shift()),window.console[a]&&window.console[a].apply(window.console,b)}},parse:function(a){return JSON.parse(a)},stringify:function(a,b,c){return JSON.stringify(a,b,c)
-},version:function(){return"1.4.0"}}}(),F2.extend("AppHandlers",function(){function a(a,c,d,e){b(a);var f={domNode:null,func:null,namespace:c};if(F2.isNativeDOMNode(d)?f.domNode=d:"function"==typeof d&&(f.func=d),!f.func&&!f.domNode)throw new Error("Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.");if(f.domNode&&!e)throw new Error("Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.");return f}function b(a){if(g!==a&&h!==a)throw new Error("Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().")}function c(a){if(a!=h)throw new Error("Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().")}function d(a,b){for(var c=a.slice(),d=c.length;d>=0;d--)(!c[d]||c[d].namespace&&c[d].namespace.toLowerCase()===b)&&c.splice(d,1);return c}function e(a,c,f){if(b(a),f)if(f=f.toLowerCase(),c&&c in i)i[c]=d(i[c],f);else for(var g in i)e(a,g,f);else c&&(i[c]=[])}function f(a){var b="";if(-1!==a.indexOf(".")){var c=a.split(".");a=c[0],b=c[1]}return{key:a,namespace:b}}var g=F2.guid(),h=F2.guid(),i={appCreateRoot:[],appRenderBefore:[],appDestroyBefore:[],appRenderAfter:[],appDestroyAfter:[],appRender:[],appDestroy:[],appScriptLoadFailed:[]},j={appRender:function(a,b){F2.isNativeDOMNode(a.root)?jQuery(a.root).append(b):a.root=jQuery(b).get(0),document.body.appendChild(a.root)},appDestroy:function(a){a.app&&a.app.destroy&&("function"==typeof a.app.destroy?a.app.destroy():F2.log(a.config.appId+" has a destroy property, but destroy is not of type function and as such will not be executed.")),jQuery(a.config.root).fadeOut(500,function(){jQuery(this).remove()})}};return{getToken:function(){return delete this.getToken,g},__f2GetToken:function(){return delete this.__f2GetToken,h},__trigger:function(a,b){if(c(a),!i[b])throw new Error("Invalid EventKey passed. Check your inputs and try again.");var d=Array.prototype.slice.call(arguments,2);if(!i[b].length&&j[b])j[b].apply(F2,d);else for(var e=0;e=4){var g=arguments[2],h=arguments[3];g.root?jQuery(g.root).append(h):g.root=jQuery(h).get(0),jQuery(f.domNode).append(g.root)}else f.func.apply(F2,d)}return this},on:function(b,c,d){if(!c)throw new Error("eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.");var e=f(c);if(!i[e.key])throw new Error("Invalid eventKey passed. Check your inputs and try again.");var g="appRender"===e.key,h=a(b,e.namespace,d,g);return i[e.key].push(h),this},off:function(a,b){if(!b)throw new Error("eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.");var c=f(b);if(!i[c.key])throw new Error("Invalid EventKey passed. Check your inputs and try again.");return e(a,c.key,c.namespace),this}}}()),F2.extend("Constants",{AppHandlers:{APP_CREATE_ROOT:"appCreateRoot",APP_RENDER_BEFORE:"appRenderBefore",APP_RENDER:"appRender",APP_RENDER_AFTER:"appRenderAfter",APP_DESTROY_BEFORE:"appDestroyBefore",APP_DESTROY:"appDestroy",APP_DESTROY_AFTER:"appDestroyAfter",APP_SCRIPT_LOAD_FAILED:"appScriptLoadFailed"}}),F2.extend("",{App:function(){return{init:function(){}}},AppConfig:{appId:"",context:{},enableBatchRequests:!1,height:0,instanceId:"",isSecure:!1,containerLocale:null,localeSupport:[],manifestUrl:"",maxWidth:0,minGridSize:4,minWidth:300,name:"",root:void 0,ui:void 0,views:[]},AppManifest:{apps:[],inlineScripts:[],scripts:[],styles:[]},AppContent:{data:{},html:"",status:""},ContainerConfig:{afterAppRender:function(){},appRender:function(){},beforeAppRender:function(){},debugMode:!1,locale:null,scriptErrorTimeout:7e3,isSecureAppPage:!1,secureAppPagePath:"",supportedViews:[],UI:{Mask:{backgroundColor:"#FFF",loadingIcon:"",opacity:.6,useClasses:!1,zIndex:2}},xhr:{dataType:function(){},type:function(){},url:function(){}},loadScripts:function(){},loadStyles:function(){}}}),F2.extend("Constants",{Css:function(){var a="f2-";return{APP:a+"app",APP_CONTAINER:a+"app-container",APP_TITLE:a+"app-title",APP_VIEW:a+"app-view",APP_VIEW_TRIGGER:a+"app-view-trigger",MASK:a+"mask",MASK_CONTAINER:a+"mask-container"}}(),Events:function(){var a="App.",b="Container.";return{APP_SYMBOL_CHANGE:a+"symbolChange",APP_WIDTH_CHANGE:a+"widthChange.",CONTAINER_SYMBOL_CHANGE:b+"symbolChange",CONTAINER_WIDTH_CHANGE:b+"widthChange",CONTAINER_LOCALE_CHANGE:b+"localeChange"}}(),JSONP_CALLBACK:"F2_jsonpCallback_",Sockets:{EVENT:"__event__",LOAD:"__socketLoad__",RPC:"__rpc__",RPC_CALLBACK:"__rpcCallback__",UI_RPC:"__uiRpc__"},Views:{DATA_ATTRIBUTE:"data-f2-view",ABOUT:"about",HELP:"help",HOME:"home",REMOVE:"remove",SETTINGS:"settings"}}),F2.extend("Events",function(){var a=new EventEmitter2({wildcard:!0});return a.setMaxListeners(0),{_socketEmit:function(){return EventEmitter2.prototype.emit.apply(a,[].slice.call(arguments))},emit:function(){return F2.Rpc.broadcast(F2.Constants.Sockets.EVENT,[].slice.call(arguments)),EventEmitter2.prototype.emit.apply(a,[].slice.call(arguments))},many:function(b,c,d){return a.many(b,c,d)},off:function(b,c){return a.off(b,c)},on:function(b,c){return a.on(b,c)},once:function(b,c){return a.once(b,c)}}}()),F2.extend("Rpc",function(){var a={},b="",c={},d=new RegExp("^"+F2.Constants.Sockets.EVENT),e=new RegExp("^"+F2.Constants.Sockets.RPC),f=new RegExp("^"+F2.Constants.Sockets.RPC_CALLBACK),g=new RegExp("^"+F2.Constants.Sockets.LOAD),h=new RegExp("^"+F2.Constants.Sockets.UI_RPC),i=function(){var a,b=!1,d=[],e=new easyXDM.Socket({onMessage:function(f,h){if(!b&&g.test(f)){f=f.replace(g,"");var i=F2.parse(f);2==i.length&&(a=i[0],c[a.instanceId]={config:a,socket:e},F2.registerApps([a],[i[1]]),jQuery.each(d,function(){l(a,f,h)}),b=!0)}else b?l(a,f,h):d.push(f)}})},j=function(a,c){var d=jQuery(a.root);if(d.is("."+F2.Constants.Css.APP_CONTAINER)||d.find("."+F2.Constants.Css.APP_CONTAINER),!d.length)return void F2.log("Unable to locate app in order to establish secure connection.");var e={scrolling:"no",style:{width:"100%"}};a.height&&(e.style.height=a.height+"px");var f=new easyXDM.Socket({remote:b,container:d.get(0),props:e,onMessage:function(b,c){l(a,b,c)},onReady:function(){f.postMessage(F2.Constants.Sockets.LOAD+F2.stringify([a,c],F2.appConfigReplacer))}});return f},k=function(a,b){return function(){F2.Rpc.call(a,F2.Constants.Sockets.RPC_CALLBACK,b,[].slice.call(arguments).slice(2))}},l=function(b,c){function g(a,b){for(var c=String(b).split("."),d=0;d','
','
','
','','
',a,"
","
",'
',b,"
",'","
","
","
"].join("")};return{hideMask:function(a){F2.UI.hideMask(b.instanceId,a)},Modals:function(){var a=function(a){return e("Alert",a)},c=function(a){return e("Confirm",a,!0)};return{alert:function(c,d){return F2.isInit()?void(F2.Rpc.isRemote(b.instanceId)?F2.Rpc.call(b.instanceId,F2.Constants.Sockets.UI_RPC,"Modals.alert",[].slice.call(arguments)):jQuery(a(c)).on("show.bs.modal",function(){var a=this;jQuery(a).find(".btn-primary").on("click",function(){jQuery(a).modal("hide").remove(),(d||jQuery.noop)()})}).modal({backdrop:!0})):void F2.log("F2.init() must be called before F2.UI.Modals.alert()")},confirm:function(a,d,e){return F2.isInit()?void(F2.Rpc.isRemote(b.instanceId)?F2.Rpc.call(b.instanceId,F2.Constants.Sockets.UI_RPC,"Modals.confirm",[].slice.call(arguments)):jQuery(c(a)).on("show.bs.modal",function(){var a=this;jQuery(a).find(".btn-ok").on("click",function(){jQuery(a).modal("hide").remove(),(d||jQuery.noop)()}),jQuery(a).find(".btn-cancel").on("click",function(){jQuery(a).modal("hide").remove(),(e||jQuery.noop)()})}).modal({backdrop:!0})):void F2.log("F2.init() must be called before F2.UI.Modals.confirm()")}}}(),setTitle:function(a){F2.Rpc.isRemote(b.instanceId)?F2.Rpc.call(b.instanceId,F2.Constants.Sockets.UI_RPC,"setTitle",[a]):jQuery(b.root).find("."+F2.Constants.Css.APP_TITLE).text(a)},showMask:function(a,c){F2.UI.showMask(b.instanceId,a,c)},updateHeight:d,Views:function(){var a=new EventEmitter2,e=/change/i;a.setMaxListeners(0);var f=function(a){return e.test(a)?!0:(F2.log('"'+a+'" is not a valid F2.UI.Views event name'),!1)};return{change:function(e){"function"==typeof e?this.on("change",e):"string"==typeof e&&(b.isSecure&&!F2.Rpc.isRemote(b.instanceId)?F2.Rpc.call(b.instanceId,F2.Constants.Sockets.UI_RPC,"Views.change",[].slice.call(arguments)):F2.inArray(e,b.views)&&(jQuery("."+F2.Constants.Css.APP_VIEW,c).addClass("hide").filter('[data-f2-view="'+e+'"]',c).removeClass("hide"),d(),a.emit("change",e)))},off:function(b,c){f(b)&&a.off(b,c)},on:function(b,c){f(b)&&a.on(b,c)}}}()}};return b.hideMask=function(a,b){if(!F2.isInit())return void F2.log("F2.init() must be called before F2.UI.hideMask()");if(F2.Rpc.isRemote(a)&&!jQuery(b).is("."+F2.Constants.Css.APP))F2.Rpc.call(a,F2.Constants.Sockets.RPC,"F2.UI.hideMask",[a,jQuery(b).selector]);else{var c=jQuery(b);c.find("> ."+F2.Constants.Css.MASK).remove(),c.removeClass(F2.Constants.Css.MASK_CONTAINER),c.data(F2.Constants.Css.MASK_CONTAINER)&&c.css({position:"static"})}},b.init=function(b){a=b,a.UI=jQuery.extend(!0,{},F2.ContainerConfig.UI,a.UI||{})},b.showMask=function(b,c,d){if(!F2.isInit())return void F2.log("F2.init() must be called before F2.UI.showMask()");if(F2.Rpc.isRemote(b)&&jQuery(c).is("."+F2.Constants.Css.APP))F2.Rpc.call(b,F2.Constants.Sockets.RPC,"F2.UI.showMask",[b,jQuery(c).selector,d]);else{d&&!a.UI.Mask.loadingIcon&&F2.log("Unable to display loading icon. Please set F2.ContainerConfig.UI.Mask.loadingIcon when calling F2.init();");var e=jQuery(c).addClass(F2.Constants.Css.MASK_CONTAINER),f=jQuery("
").height("100%").width("100%").addClass(F2.Constants.Css.MASK);a.UI.Mask.useClasses||f.css({"background-color":a.UI.Mask.backgroundColor,"background-image":a.UI.Mask.loadingIcon?"url("+a.UI.Mask.loadingIcon+")":"","background-position":"50% 50%","background-repeat":"no-repeat",display:"block",left:0,"min-height":30,padding:0,position:"absolute",top:0,"z-index":a.UI.Mask.zIndex,filter:"alpha(opacity="+100*a.UI.Mask.opacity+")",opacity:a.UI.Mask.opacity}),"static"===e.css("position")&&(e.css({position:"relative"}),e.data(F2.Constants.Css.MASK_CONTAINER,!0)),e.append(f)}},b}()),F2.extend("",function(){var _apps={},_config=!1,_bUsesAppHandlers=!1,_sAppHandlerToken=F2.AppHandlers.__f2GetToken(),_loadedScripts={},_loadedStyles={},_loadingScripts={},_afterAppRender=function(a,b){var c=_config.afterAppRender||function(a,b){return jQuery(b).appendTo("body")},d=c(a,b);return _config.afterAppRender&&!d?void F2.log("F2.ContainerConfig.afterAppRender() must return the DOM Element that contains the app"):(jQuery(d).addClass(F2.Constants.Css.APP),d.get(0))},_appRender=function(a,b){return b=_outerHtml(jQuery(b).addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId)),_config.appRender&&(b=_config.appRender(a,b)),_outerHtml(b)},_beforeAppRender=function(a){var b=_config.beforeAppRender||jQuery.noop;return b(a)},_appScriptLoadFailed=function(a,b){var c=_config.appScriptLoadFailed||jQuery.noop;return c(a,b)},_createAppConfig=function(a){return a=jQuery.extend(!0,{},a),a.instanceId=a.instanceId||F2.guid(),a.views=a.views||[],F2.inArray(F2.Constants.Views.HOME,a.views)||a.views.push(F2.Constants.Views.HOME),F2.ContainerConfig.locale&&(a.containerLocale=F2.ContainerConfig.locale),a},_getAppConfigFromElement=function(a){var b;if(a){var c=a.getAttribute("data-f2-appid"),d=a.getAttribute("data-f2-manifesturl");if(c&&d){b={appId:c,enableBatchRequests:a.hasAttribute("data-f2-enablebatchrequests"),isSecure:a.hasAttribute("data-f2-issecure"),manifestUrl:d,root:a};var e=a.getAttribute("data-f2-context");if(e)try{b.context=F2.parse(e)}catch(f){console.warn('F2: "data-f2-context" of node is not valid JSON','"'+f+'"')}}}return b},_hasNonTextChildNodes=function(a){var b=!1;if(a.hasChildNodes())for(var c=0,d=a.childNodes.length;d>c;c++)if(1===a.childNodes[c].nodeType){b=!0;break}return b},_hydrateContainerConfig=function(a){a.scriptErrorTimeout||(a.scriptErrorTimeout=F2.ContainerConfig.scriptErrorTimeout),a.debugMode!==!0&&(a.debugMode=F2.ContainerConfig.debugMode),a.locale&&"string"==typeof a.locale&&(F2.ContainerConfig.locale=a.locale)},_initAppEvents=function(a){jQuery(a.root).on("click","."+F2.Constants.Css.APP_VIEW_TRIGGER+"["+F2.Constants.Views.DATA_ATTRIBUTE+"]",function(b){b.preventDefault();var c=jQuery(this).attr(F2.Constants.Views.DATA_ATTRIBUTE).toLowerCase();c==F2.Constants.Views.REMOVE?F2.removeApp(a.instanceId):a.ui.Views.change(c)})},_initContainerEvents=function(){var a,b=function(){F2.Events.emit(F2.Constants.Events.CONTAINER_WIDTH_CHANGE)};jQuery(window).on("resize",function(){clearTimeout(a),a=setTimeout(b,100)}),F2.Events.on(F2.Constants.Events.CONTAINER_LOCALE_CHANGE,function(a){a.locale&&"string"==typeof a.locale&&(F2.ContainerConfig.locale=a.locale)})},_isPlaceholderElement=function(a){return F2.isNativeDOMNode(a)&&!_hasNonTextChildNodes(a)&&!!a.getAttribute("data-f2-appid")&&!!a.getAttribute("data-f2-manifesturl")},_isInit=function(){return!!_config},_createAppInstance=function(a,b){a.ui=new F2.UI(a),void 0!==F2.Apps[a.appId]&&("function"==typeof F2.Apps[a.appId]?setTimeout(function(){_apps[a.instanceId].app=new F2.Apps[a.appId](a,b,a.root),void 0!==_apps[a.instanceId].app.init&&_apps[a.instanceId].app.init()},0):F2.log("app initialization class is defined but not a function. ("+a.appId+")"))},_loadApps=function(appConfigs,appManifest){if(appConfigs=[].concat(appConfigs),1==appConfigs.length&&appConfigs[0].isSecure&&!_config.isSecureAppPage)return void _loadSecureApp(appConfigs[0],appManifest);if(appConfigs.length!=appManifest.apps.length)return void F2.log("The number of apps defined in the AppManifest do not match the number requested.",appManifest);var _loadStyles=function(a,b){if(_config.loadStyles)return _config.loadStyles(a,b);var c=null,d=!!document.createStyleSheet;jQuery.each(a,function(a,b){var e=b,f=b.toLowerCase();_loadedStyles[f]||(d?document.createStyleSheet(e):(c=c||[],c.push('')),_loadedStyles[f]=!0)}),c&&jQuery("head").append(c.join("")),b()},_loadScripts=function(a,b){if(_config.loadScripts)return _config.loadScripts(a,b);if(!a.length)return b();var c=window.document,d=a.length,e=0,f=c&&(c.head||c.getElementsByTagName("head")[0]),g=f&&f.getElementsByTagName("base")[0]||null,h="addEventListener"in window?{}:{loaded:!0,complete:!0},i=function(a){setTimeout(function(){var b={src:a.target.src,appId:appConfigs[0].appId};F2.log("Script defined in '"+b.appId+"' failed to load '"+b.src+"'"),F2.Events.emit("RESOURCE_FAILED_TO_LOAD",b),_bUsesAppHandlers?F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,appConfigs[0],b.src):_appScriptLoadFailed(appConfigs[0],b.src)},_config.scriptErrorTimeout)},j=function(){++e===d&&b()},k=function(a,b){var c,d=_loadingScripts[a];if(d){for(var e=0;ei;i++)try{eval(inlines[i])}catch(exception){F2.log("Error loading inline script: "+exception+"\n\n"+inlines[i]),F2.Events.emit("RESOURCE_FAILED_TO_LOAD",{appId:appConfigs[0].appId,src:inlines[i],err:exception}),_bUsesAppHandlers?F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,appConfigs[0],exception):_appScriptLoadFailed(appConfigs[0],exception)}cb()}},elementInDocument=function(a){if(a)for(;a.parentNode;)if(a=a.parentNode,a===document)return!0;return!1},_loadHtml=function(a){jQuery.each(a,function(a,b){if(_isPlaceholderElement(appConfigs[a].root))jQuery(appConfigs[a].root).addClass(F2.Constants.Css.APP).append(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+appConfigs[a].appId));else if(_bUsesAppHandlers){F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER,appConfigs[a],_outerHtml(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+appConfigs[a].appId)));var c=appConfigs[a].appId,d=appConfigs[a].root;if(!d)throw"Root for "+c+" must be a native DOM element and cannot be null or undefined. Check your AppHandler callbacks to ensure you have set App root to a native DOM element.";if(!elementInDocument(d))throw"App root for "+c+" was not appended to the DOM. Check your AppHandler callbacks to ensure you have rendered the app root to the DOM.";if(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER_AFTER,appConfigs[a]),!F2.isNativeDOMNode(d))throw"App root for "+c+" must be a native DOM element. Check your AppHandler callbacks to ensure you have set app root to a native DOM element."}else appConfigs[a].root=_afterAppRender(appConfigs[a],_appRender(appConfigs[a],b.html));_initAppEvents(appConfigs[a])})},scripts=appManifest.scripts||[],styles=appManifest.styles||[],inlines=appManifest.inlineScripts||[],apps=appManifest.apps||[];_loadStyles(styles,function(){_loadHtml(apps),_loadScripts(scripts,function(){appConfigs[0]&&F2.Events.emit("APP_SCRIPTS_LOADED",{appId:appConfigs[0].appId,scripts:scripts}),_loadInlineScripts(inlines,function(){jQuery.each(appConfigs,function(a,b){_createAppInstance(b,appManifest.apps[a])})})})})},_loadSecureApp=function(a,b){if(_config.secureAppPagePath){if(_isPlaceholderElement(a.root))jQuery(a.root).addClass(F2.Constants.Css.APP).append(jQuery("").addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId));else if(_bUsesAppHandlers){var c=jQuery(a.root);if(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER,a,_outerHtml(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId))),0===c.parents("body:first").length)throw"App was never rendered on the page. Please check your AppHandler callbacks to ensure you have rendered the app root to the DOM.";if(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER_AFTER,a),!a.root)throw"App Root must be a native dom node and can not be null or undefined. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.";if(!F2.isNativeDOMNode(a.root))throw"App Root must be a native dom node. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node."}else a.root=_afterAppRender(a,_appRender(a,""));a.ui=new F2.UI(a),_initAppEvents(a),F2.Rpc.register(a,b)}else F2.log('Unable to load secure app: "secureAppPagePath" is not defined in F2.ContainerConfig.')},_outerHtml=function(a){return jQuery("").append(a).html()},_validateApp=function(a){return a.appId?a.root||a.manifestUrl?!0:(F2.log('"manifestUrl" missing from app object'),!1):(F2.log('"appId" missing from app object'),!1)},_validateContainerConfig=function(){if(_config&&_config.xhr){if("function"!=typeof _config.xhr&&"object"!=typeof _config.xhr)throw"ContainerConfig.xhr should be a function or an object";if(_config.xhr.dataType&&"function"!=typeof _config.xhr.dataType)throw"ContainerConfig.xhr.dataType should be a function";if(_config.xhr.type&&"function"!=typeof _config.xhr.type)throw"ContainerConfig.xhr.type should be a function";if(_config.xhr.url&&"function"!=typeof _config.xhr.url)throw"ContainerConfig.xhr.url should be a function"}return!0};return{getContainerState:function(){return _isInit()?jQuery.map(_apps,function(a){return{appId:a.config.appId}}):void F2.log("F2.init() must be called before F2.getContainerState()")},getContainerLocale:function(){return _isInit()?F2.ContainerConfig.locale:void F2.log("F2.init() must be called before F2.getContainerLocale()")},init:function(a){_config=a||{},_validateContainerConfig(),_hydrateContainerConfig(_config),_bUsesAppHandlers=!(_config.beforeAppRender||_config.appRender||_config.afterAppRender||_config.appScriptLoadFailed),(_config.secureAppPagePath||_config.isSecureAppPage)&&F2.Rpc.init(_config.secureAppPagePath?_config.secureAppPagePath:!1),F2.UI.init(_config),_config.isSecureAppPage||_initContainerEvents()},isInit:_isInit,loadPlaceholders:function(a){var b=[],c=[],d=function(a){a&&b.push(a)},e=function(a){if(a)for(var b=0,c=a.length;c>b;b++)d(a[b])};if(a&&!F2.isNativeDOMNode(a))throw'"parentNode" must be null or a DOM node';a&&a.hasAttribute("data-f2-appid")?d(a):(a=a||document,a.querySelectorAll&&e(a.querySelectorAll("[data-f2-appid]")));for(var f=0,g=b.length;g>f;f++){var h=_getAppConfigFromElement(b[f]);c.push(h)}c.length&&F2.registerApps(c)},registerApps:function(a,b){if(!_isInit())return void F2.log("F2.init() must be called before F2.registerApps()");if(!a)return void F2.log("At least one AppConfig must be passed when calling F2.registerApps()");var c=[],d={},e={},f=!1;return a=[].concat(a),b=[].concat(b||[]),f=!!b.length,a.length?a.length&&f&&a.length!=b.length?void F2.log('The length of "apps" does not equal the length of "appManifests"'):(jQuery.each(a,function(a,e){if(e=_createAppConfig(e),e.root=e.root||null,_validateApp(e)){if(_apps[e.instanceId]={config:e},e.root&&!_isPlaceholderElement(e.root)){if(!e.root&&"string"!=typeof e.root&&!F2.isNativeDOMNode(e.root))throw F2.log("AppConfig invalid for pre-load, not a valid string and not dom node"),F2.log("AppConfig instance:",e),"Preloaded appConfig.root property must be a native dom node or a string representing a sizzle selector. Please check your inputs and try again.";if(1!=jQuery(e.root).length)throw F2.log("AppConfig invalid for pre-load, root not unique"),F2.log("AppConfig instance:",e),F2.log("Number of dom node instances:",jQuery(e.root).length),"Preloaded appConfig.root property must map to a unique dom node. Please check your inputs and try again.";return _createAppInstance(e),void _initAppEvents(e)}_isPlaceholderElement(e.root)||(_bUsesAppHandlers?(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_CREATE_ROOT,e),F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_RENDER_BEFORE,e)):e.root=_beforeAppRender(e)),f?_loadApps(e,b[a]):e.enableBatchRequests&&!e.isSecure?(d[e.manifestUrl.toLowerCase()]=d[e.manifestUrl.toLowerCase()]||[],d[e.manifestUrl.toLowerCase()].push(e)):c.push({apps:[e],url:e.manifestUrl})}}),void(f||(jQuery.each(d,function(a,b){c.push({url:a,apps:b})}),jQuery.each(c,function(a,b){var c=F2.Constants.JSONP_CALLBACK+b.apps[0].appId;e[c]=e[c]||[],e[c].push(b)}),jQuery.each(e,function(a,b){var c=function(d,e){if(e){var f=e.url,g="GET",h="jsonp",i=function(){c(a,b.pop())},j=function(){jQuery.each(e.apps,function(a,b){b.name=b.name||b.appId,F2.log("Removed failed "+b.name+" app",b),F2.removeApp(b.instanceId)})},k=function(a){_loadApps(e.apps,a)};if(_config.xhr&&_config.xhr.dataType&&(h=_config.xhr.dataType(e.url,e.apps),"string"!=typeof h))throw"ContainerConfig.xhr.dataType should return a string";if(_config.xhr&&_config.xhr.type&&(g=_config.xhr.type(e.url,e.apps),"string"!=typeof g))throw"ContainerConfig.xhr.type should return a string";if(_config.xhr&&_config.xhr.url&&(f=_config.xhr.url(e.url,e.apps),"string"!=typeof f))throw"ContainerConfig.xhr.url should return a string";var l=_config.xhr;"function"!=typeof l&&(l=function(a,b,c,f,i){jQuery.ajax({url:a,type:g,data:{params:F2.stringify(e.apps,F2.appConfigReplacer)},jsonp:!1,jsonpCallback:d,dataType:h,success:c,error:function(a,b,c){F2.log("Failed to load app(s)",c.toString(),e.apps),f()},complete:i})}),l(f,e.apps,k,j,i)}};c(a,b.pop())})))):void F2.log("At least one AppConfig must be passed when calling F2.registerApps()")},removeAllApps:function(){return _isInit()?void jQuery.each(_apps,function(a,b){F2.removeApp(b.config.instanceId)}):void F2.log("F2.init() must be called before F2.removeAllApps()")},removeApp:function(a){return _isInit()?void(_apps[a]&&(F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_DESTROY_BEFORE,_apps[a]),F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_DESTROY,_apps[a]),F2.AppHandlers.__trigger(_sAppHandlerToken,F2.Constants.AppHandlers.APP_DESTROY_AFTER,_apps[a]),delete _apps[a])):void F2.log("F2.init() must be called before F2.removeApp()")}}}()),jQuery(function(){var a=[],b=function(b){b&&a.push(b)},c=function(a){if(a)for(var c=0,d=a.length;d>c;c++)b(a[c])};if(b(document.getElementById("f2-autoload")),document.querySelectorAll&&(c(document.querySelectorAll("[data-f2-autoload]")),c(document.querySelectorAll(".f2-autoload"))),a.length){F2.init();for(var d=0,e=a.length;e>d;d++)F2.loadPlaceholders(a[d])}}),exports.F2=F2,"undefined"!=typeof define&&define.amd&&define(function(){return F2})}}("undefined"!=typeof exports?exports:window);
+var $,jQuery=$=window.jQuery.noConflict(!0);+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$element.find(".modal-dialog").one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.checkScrollbar=function(){this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){if(document.body.clientWidth>=window.innerWidth)return 0;var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),!function(a){function b(){this._events={},this._conf&&c.call(this,this._conf)}function c(a){a&&(this._conf=a,a.delimiter&&(this.delimiter=a.delimiter),a.maxListeners&&(this._events.maxListeners=a.maxListeners),a.wildcard&&(this.wildcard=a.wildcard),a.newListener&&(this.newListener=a.newListener),this.wildcard&&(this.listenerTree={}))}function d(a){this._events={},this.newListener=!1,c.call(this,a)}function e(a,b,c,d){if(!c)return[];var f,g,h,i,j,k,l,m=[],n=b.length,o=b[d],p=b[d+1];if(d===n&&c._listeners){if("function"==typeof c._listeners)return a&&a.push(c._listeners),[c];for(f=0,g=c._listeners.length;g>f;f++)a&&a.push(c._listeners[f]);return[c]}if("*"===o||"**"===o||c[o]){if("*"===o){for(h in c)"_listeners"!==h&&c.hasOwnProperty(h)&&(m=m.concat(e(a,b,c[h],d+1)));return m}if("**"===o){l=d+1===n||d+2===n&&"*"===p,l&&c._listeners&&(m=m.concat(e(a,b,c,n)));for(h in c)"_listeners"!==h&&c.hasOwnProperty(h)&&("*"===h||"**"===h?(c[h]._listeners&&!l&&(m=m.concat(e(a,b,c[h],n))),m=m.concat(e(a,b,c[h],d))):m=m.concat(h===p?e(a,b,c[h],d+2):e(a,b,c[h],d)));return m}m=m.concat(e(a,b,c[o],d+1))}if(i=c["*"],i&&e(a,b,i,d+1),j=c["**"])if(n>d){j._listeners&&e(a,b,j,n);for(h in j)"_listeners"!==h&&j.hasOwnProperty(h)&&(h===p?e(a,b,j[h],d+2):h===o?e(a,b,j[h],d+1):(k={},k[h]=j[h],e(a,b,{"**":k},d+1)))}else j._listeners?e(a,b,j,n):j["*"]&&j["*"]._listeners&&e(a,b,j["*"],n);return m}function f(a,b){a="string"==typeof a?a.split(this.delimiter):a.slice();for(var c=0,d=a.length;d>c+1;c++)if("**"===a[c]&&"**"===a[c+1])return;for(var e=this.listenerTree,f=a.shift();f;){if(e[f]||(e[f]={}),e=e[f],0===a.length){if(e._listeners){if("function"==typeof e._listeners)e._listeners=[e._listeners,b];else if(g(e._listeners)&&(e._listeners.push(b),!e._listeners.warned)){var i=h;"undefined"!=typeof this._events.maxListeners&&(i=this._events.maxListeners),i>0&&e._listeners.length>i&&(e._listeners.warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",e._listeners.length),console.trace())}}else e._listeners=b;return!0}f=a.shift()}return!0}var g=Array.isArray?Array.isArray:function(a){return"[object Array]"===Object.prototype.toString.call(a)},h=10;d.prototype.delimiter=".",d.prototype.setMaxListeners=function(a){this._events||b.call(this),this._events.maxListeners=a,this._conf||(this._conf={}),this._conf.maxListeners=a},d.prototype.event="",d.prototype.once=function(a,b){return this.many(a,1,b),this},d.prototype.many=function(a,b,c){function d(){0===--b&&e.off(a,d),c.apply(this,arguments)}var e=this;if("function"!=typeof c)throw new Error("many only accepts instances of Function");return d._origin=c,this.on(a,d),e},d.prototype.emit=function(){this._events||b.call(this);var a=arguments[0];if("newListener"===a&&!this.newListener&&!this._events.newListener)return!1;if(this._all){for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];for(f=0,c=this._all.length;c>f;f++)this.event=a,this._all[f].apply(this,d)}if("error"===a&&!(this._all||this._events.error||this.wildcard&&this.listenerTree.error))throw arguments[1]instanceof Error?arguments[1]:new Error("Uncaught, unspecified 'error' event.");var g;if(this.wildcard){g=[];var h="string"==typeof a?a.split(this.delimiter):a.slice();e.call(this,g,h,this.listenerTree,0)}else g=this._events[a];if("function"==typeof g){if(this.event=a,1===arguments.length)g.call(this);else if(arguments.length>1)switch(arguments.length){case 2:g.call(this,arguments[1]);break;case 3:g.call(this,arguments[1],arguments[2]);break;default:for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];g.apply(this,d)}return!0}if(g){for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];for(var i=g.slice(),f=0,c=i.length;c>f;f++)this.event=a,i[f].apply(this,d);return i.length>0||this._all}return this._all},d.prototype.on=function(a,c){if("function"==typeof a)return this.onAny(a),this;if("function"!=typeof c)throw new Error("on only accepts instances of Function");if(this._events||b.call(this),this.emit("newListener",a,c),this.wildcard)return f.call(this,a,c),this;if(this._events[a]){if("function"==typeof this._events[a])this._events[a]=[this._events[a],c];else if(g(this._events[a])&&(this._events[a].push(c),!this._events[a].warned)){var d=h;"undefined"!=typeof this._events.maxListeners&&(d=this._events.maxListeners),d>0&&this._events[a].length>d&&(this._events[a].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[a].length),console.trace())}}else this._events[a]=c;return this},d.prototype.onAny=function(a){if(this._all||(this._all=[]),"function"!=typeof a)throw new Error("onAny only accepts instances of Function");return this._all.push(a),this},d.prototype.addListener=d.prototype.on,d.prototype.off=function(a,b){if("function"!=typeof b)throw new Error("removeListener only takes instances of Function");var c,d=[];if(this.wildcard){var f="string"==typeof a?a.split(this.delimiter):a.slice();d=e.call(this,null,f,this.listenerTree,0)}else{if(!this._events[a])return this;c=this._events[a],d.push({_listeners:c})}for(var h=0;hk;k++)if(c[k]===b||c[k].listener&&c[k].listener===b||c[k]._origin&&c[k]._origin===b){j=k;break}if(0>j)continue;return this.wildcard?i._listeners.splice(j,1):this._events[a].splice(j,1),0===c.length&&(this.wildcard?delete i._listeners:delete this._events[a]),this}(c===b||c.listener&&c.listener===b||c._origin&&c._origin===b)&&(this.wildcard?delete i._listeners:delete this._events[a])}return this},d.prototype.offAny=function(a){var b,c=0,d=0;if(a&&this._all&&this._all.length>0){for(b=this._all,c=0,d=b.length;d>c;c++)if(a===b[c])return b.splice(c,1),this}else this._all=[];return this},d.prototype.removeListener=d.prototype.off,d.prototype.removeAllListeners=function(a){if(0===arguments.length)return!this._events||b.call(this),this;if(this.wildcard)for(var c="string"==typeof a?a.split(this.delimiter):a.slice(),d=e.call(this,null,c,this.listenerTree,0),f=0;f9&&g>0,!0}function k(){if(!S){S=!0;for(var a=0;a'):(c=b.createElement("IFRAME"),c.name=a.props.name),c.id=c.name=a.props.name,delete a.props.name,"string"==typeof a.container&&(a.container=b.getElementById(a.container)),a.container||(u(c.style,{position:"absolute",top:"-2000px",left:"0px"}),a.container=b.body);var d=a.props.src;if(a.props.src="javascript:false",u(c,a.props),c.border=c.frameBorder=0,c.allowTransparency=!0,a.container.appendChild(c),a.onLoad&&E(c,"load",a.onLoad),a.usePost){var e,f=a.container.appendChild(b.createElement("form"));if(f.target=c.name,f.action=d,f.method="POST","object"==typeof a.usePost)for(var g in a.usePost)a.usePost.hasOwnProperty(g)&&(B?e=b.createElement(''):(e=b.createElement("INPUT"),e.name=g),e.value=a.usePost[g],f.appendChild(e));f.submit(),f.parentNode.removeChild(f)}else c.src=d;return a.props.src=d,c}function x(a,b){"string"==typeof a&&(a=[a]);for(var c,d=a.length;d--;)if(c=a[d],c=new RegExp("^"==c.substr(0,1)?c:"^"+c.replace(/(\*)/g,".$1").replace(/\?/g,".")+"$"),c.test(b))return!0;return!1}function y(d){var e,f=d.protocol;if(d.isHost=d.isHost||t(V.xdm_p),Q=d.hash||!1,d.props||(d.props={}),d.isHost)d.remote=r(d.remote),d.channel=d.channel||"default"+H++,d.secret=Math.random().toString(16).substring(2),t(f)&&(f=q(c.href)==q(d.remote)?"4":g(a,"postMessage")||g(b,"postMessage")?"1":d.swf&&g(a,"ActiveXObject")&&j()?"6":"Gecko"===navigator.product&&"frameElement"in a&&-1==navigator.userAgent.indexOf("WebKit")?"5":d.remoteHelper?"2":"0");else if(d.channel=V.xdm_c.replace(/["'<>\\]/g,""),d.secret=V.xdm_s,d.remote=V.xdm_e.replace(/["'<>\\]/g,""),f=V.xdm_p,d.acl&&!x(d.acl,d.remote))throw new Error("Access denied for "+d.remote);switch(d.protocol=f,f){case"0":if(u(d,{interval:100,delay:2e3,useResize:!0,useParent:!1,usePolling:!1},!0),d.isHost){if(!d.local){for(var h,i=c.protocol+"//"+c.host,k=b.body.getElementsByTagName("img"),l=k.length;l--;)if(h=k[l],h.src.substring(0,i.length)===i){d.local=h.src;break}d.local||(d.local=a)}var m={xdm_c:d.channel,xdm_p:0};d.local===a?(d.usePolling=!0,d.useParent=!0,d.local=c.protocol+"//"+c.host+c.pathname+c.search,m.xdm_e=d.local,m.xdm_pa=1):m.xdm_e=r(d.local),d.container&&(d.useResize=!1,m.xdm_po=1),d.remote=s(d.remote,m)}else u(d,{channel:V.xdm_c,remote:V.xdm_e,useParent:!t(V.xdm_pa),usePolling:!t(V.xdm_po),useResize:d.useParent?!1:d.useResize});e=[new N.stack.HashTransport(d),new N.stack.ReliableBehavior({}),new N.stack.QueueBehavior({encode:!0,maxLength:4e3-d.remote.length}),new N.stack.VerifyBehavior({initiate:d.isHost})];break;case"1":e=[new N.stack.PostMessageTransport(d)];break;case"2":d.isHost&&(d.remoteHelper=r(d.remoteHelper)),e=[new N.stack.NameTransport(d),new N.stack.QueueBehavior,new N.stack.VerifyBehavior({initiate:d.isHost})];break;case"3":e=[new N.stack.NixTransport(d)];break;case"4":e=[new N.stack.SameOriginTransport(d)];break;case"5":e=[new N.stack.FrameElementTransport(d)];break;case"6":C||j(),e=[new N.stack.FlashTransport(d)]}return e.push(new N.stack.QueueBehavior({lazy:d.lazy,remove:!0})),e}function z(a){for(var b,c={incoming:function(a,b){this.up.incoming(a,b)},outgoing:function(a,b){this.down.outgoing(a,b)},callback:function(a){this.up.callback(a)},init:function(){this.down.init()},destroy:function(){this.down.destroy()}},d=0,e=a.length;e>d;d++)b=a[d],u(b,c,!0),0!==d&&(b.down=a[d-1]),d!==e-1&&(b.up=a[d+1]);return b}function A(a){a.up.down=a.down,a.down.up=a.up,a.up=a.down=null}var B,C,D,E,F,G=this,H=Math.floor(1e4*Math.random()),I=Function.prototype,J=/^((http.?:)\/\/([^:\/\s]+)(:\d+)*)/,K=/[\-\w]+\/\.\.\//,L=/([^:])\/\//g,M="",N={},O=a.easyXDM,P="easyXDM_",Q=!1;if(g(a,"addEventListener"))E=function(a,b,c){a.addEventListener(b,c,!1)},F=function(a,b,c){a.removeEventListener(b,c,!1)};else{if(!g(a,"attachEvent"))throw new Error("Browser not supported");E=function(a,b,c){a.attachEvent("on"+b,c)},F=function(a,b,c){a.detachEvent("on"+b,c)}}var R,S=!1,T=[];if("readyState"in b?(R=b.readyState,S="complete"==R||~navigator.userAgent.indexOf("AppleWebKit/")&&("loaded"==R||"interactive"==R)):S=!!b.body,!S){if(g(a,"addEventListener"))E(b,"DOMContentLoaded",k);else if(E(b,"readystatechange",function(){"complete"==b.readyState&&k()}),b.documentElement.doScroll&&a===top){var U=function(){if(!S){try{b.documentElement.doScroll("left")}catch(a){return void d(U,1)}k()}};U()}E(a,"load",k)}var V=function(a){a=a.substring(1).split("&");for(var b,c={},d=a.length;d--;)b=a[d].split("="),c[b[0]]=e(b[1]);return c}(/xdm_e=/.test(c.search)?c.search:c.hash),W=function(){var a={},b={a:[1,2,3]},c='{"a":[1,2,3]}';return"undefined"!=typeof JSON&&"function"==typeof JSON.stringify&&JSON.stringify(b).replace(/\s/g,"")===c?JSON:(Object.toJSON&&Object.toJSON(b).replace(/\s/g,"")===c&&(a.stringify=Object.toJSON),"function"==typeof String.prototype.evalJSON&&(b=c.evalJSON(),b.a&&3===b.a.length&&3===b.a[2]&&(a.parse=function(a){return a.evalJSON()})),a.stringify&&a.parse?(W=function(){return a},a):null)};u(N,{version:"2.4.19.3",query:V,stack:{},apply:u,getJSONObject:W,whenReady:l,noConflict:n}),N.DomHelper={on:E,un:F,requiresJSON:function(c){h(a,"JSON")||b.write('')}},function(){var a={};N.Fn={set:function(b,c){a[b]=c},get:function(b,c){if(a.hasOwnProperty(b)){var d=a[b];return c&&delete a[b],d}}}}(),N.Socket=function(a){var b=z(y(a).concat([{incoming:function(b,c){a.onMessage(b,c)},callback:function(b){a.onReady&&a.onReady(b)}}])),c=q(a.remote);this.origin=q(a.remote),this.destroy=function(){b.destroy()},this.postMessage=function(a){b.outgoing(a,c)},b.init()},N.Rpc=function(a,b){if(b.local)for(var c in b.local)if(b.local.hasOwnProperty(c)){var d=b.local[c];"function"==typeof d&&(b.local[c]={method:d})}var e=z(y(a).concat([new N.stack.RpcBehavior(this,b),{callback:function(b){a.onReady&&a.onReady(b)}}]));this.origin=q(a.remote),this.destroy=function(){e.destroy()},e.init()},N.stack.SameOriginTransport=function(a){var b,e,f,g;return b={outgoing:function(a,b,c){f(a),c&&c()},destroy:function(){e&&(e.parentNode.removeChild(e),e=null)},onDOMReady:function(){g=q(a.remote),a.isHost?(u(a.props,{src:s(a.remote,{xdm_e:c.protocol+"//"+c.host+c.pathname,xdm_c:a.channel,xdm_p:4}),name:P+a.channel+"_provider"}),e=w(a),N.Fn.set(a.channel,function(a){return f=a,d(function(){b.up.callback(!0)},0),function(a){b.up.incoming(a,g)}})):(f=m().Fn.get(a.channel,!0)(function(a){b.up.incoming(a,g)}),d(function(){b.up.callback(!0)},0))},init:function(){l(b.onDOMReady,b)}}},N.stack.FlashTransport=function(a){function e(a){d(function(){h.up.incoming(a,j)},0)}function g(c){var d=a.swf+"?host="+a.isHost,e="easyXDM_swf_"+Math.floor(1e4*Math.random());N.Fn.set("flash_loaded"+c.replace(/[\-.]/g,"_"),function(){N.stack.FlashTransport[c].swf=k=m.firstChild;for(var a=N.stack.FlashTransport[c].queue,b=0;b"}var h,i,j,k,m;return h={outgoing:function(b,c,d){k.postMessage(a.channel,b.toString()),d&&d()},destroy:function(){try{k.destroyChannel(a.channel)}catch(b){}k=null,i&&(i.parentNode.removeChild(i),i=null)},onDOMReady:function(){j=a.remote,N.Fn.set("flash_"+a.channel+"_init",function(){d(function(){h.up.callback(!0)})}),N.Fn.set("flash_"+a.channel+"_onMessage",e),a.swf=r(a.swf);var b=o(a.swf),f=function(){N.stack.FlashTransport[b].init=!0,k=N.stack.FlashTransport[b].swf,k.createChannel(a.channel,a.secret,q(a.remote),a.isHost),a.isHost&&(D&&a.swfNoThrottle&&u(a.props,{position:"fixed",right:0,top:0,height:"20px",width:"20px"}),u(a.props,{src:s(a.remote,{xdm_e:q(c.href),xdm_c:a.channel,xdm_p:6,xdm_s:a.secret}),name:P+a.channel+"_provider"}),i=w(a))};N.stack.FlashTransport[b]&&N.stack.FlashTransport[b].init?f():N.stack.FlashTransport[b]?N.stack.FlashTransport[b].queue.push(f):(N.stack.FlashTransport[b]={queue:[f]},g(b))},init:function(){l(h.onDOMReady,h)}}},N.stack.PostMessageTransport=function(b){function e(a){if(a.origin)return q(a.origin);if(a.uri)return q(a.uri);if(a.domain)return c.protocol+"//"+a.domain;throw"Unable to retrieve the origin of the event"}function f(a){var c=e(a);c==j&&a.data.substring(0,b.channel.length+1)==b.channel+" "&&g.up.incoming(a.data.substring(b.channel.length+1),c)}var g,h,i,j;return g={outgoing:function(a,c,d){i.postMessage(b.channel+" "+a,c||j),d&&d()},destroy:function(){F(a,"message",f),h&&(i=null,h.parentNode.removeChild(h),h=null)},onDOMReady:function(){if(j=q(b.remote),b.isHost){var e=function(c){c.data==b.channel+"-ready"&&(i="postMessage"in h.contentWindow?h.contentWindow:h.contentWindow.document,F(a,"message",e),E(a,"message",f),d(function(){g.up.callback(!0)},0))};E(a,"message",e),u(b.props,{src:s(b.remote,{xdm_e:q(c.href),xdm_c:b.channel,xdm_p:1}),name:P+b.channel+"_provider"}),h=w(b)}else E(a,"message",f),i="postMessage"in a.parent?a.parent:a.parent.document,i.postMessage(b.channel+"-ready",j),d(function(){g.up.callback(!0)},0)},init:function(){l(g.onDOMReady,g)}}},N.stack.FrameElementTransport=function(e){var f,g,h,i;return f={outgoing:function(a,b,c){h.call(this,a),c&&c()},destroy:function(){g&&(g.parentNode.removeChild(g),g=null)},onDOMReady:function(){i=q(e.remote),e.isHost?(u(e.props,{src:s(e.remote,{xdm_e:q(c.href),xdm_c:e.channel,xdm_p:5}),name:P+e.channel+"_provider"}),g=w(e),g.fn=function(a){return delete g.fn,h=a,d(function(){f.up.callback(!0)},0),function(a){f.up.incoming(a,i)}}):(b.referrer&&q(b.referrer)!=V.xdm_e&&(a.top.location=V.xdm_e),h=a.frameElement.fn(function(a){f.up.incoming(a,i)}),f.up.callback(!0))},init:function(){l(f.onDOMReady,f)}}},N.stack.NameTransport=function(a){function b(b){var c=a.remoteHelper+(h?"#_3":"#_2")+a.channel;i.contentWindow.sendMessage(b,c)}function c(){h?2!==++k&&h||g.up.callback(!0):(b("ready"),g.up.callback(!0))}function e(a){g.up.incoming(a,n)}function f(){m&&d(function(){m(!0)},0)}var g,h,i,j,k,m,n,o;return g={outgoing:function(a,c,d){m=d,b(a)},destroy:function(){i.parentNode.removeChild(i),i=null,h&&(j.parentNode.removeChild(j),j=null)},onDOMReady:function(){h=a.isHost,k=0,n=q(a.remote),a.local=r(a.local),h?(N.Fn.set(a.channel,function(b){h&&"ready"===b&&(N.Fn.set(a.channel,e),c())}),o=s(a.remote,{xdm_e:a.local,xdm_c:a.channel,xdm_p:2}),u(a.props,{src:o+"#"+a.channel,name:P+a.channel+"_provider"}),j=w(a)):(a.remoteHelper=a.remote,N.Fn.set(a.channel,e));var b=function(){var e=i||this;F(e,"load",b),N.Fn.set(a.channel+"_load",f),function g(){"function"==typeof e.contentWindow.sendMessage?c():d(g,50)}()};i=w({props:{src:a.local+"#_4"+a.channel},onLoad:b})},init:function(){l(g.onDOMReady,g)}}},N.stack.HashTransport=function(b){function c(a){if(p){var c=b.remote+"#"+n++ +"_"+a;(i||!r?p.contentWindow:p).location=c}}function e(a){m=a,h.up.incoming(m.substring(m.indexOf("_")+1),s)}function f(){if(o){var a=o.location.href,b="",c=a.indexOf("#");-1!=c&&(b=a.substring(c)),b&&b!=m&&e(b)}}function g(){j=setInterval(f,k)}var h,i,j,k,m,n,o,p,r,s;return h={outgoing:function(a){c(a)},destroy:function(){a.clearInterval(j),(i||!r)&&p.parentNode.removeChild(p),p=null},onDOMReady:function(){if(i=b.isHost,k=b.interval,m="#"+b.channel,n=0,r=b.useParent,s=q(b.remote),i){if(u(b.props,{src:b.remote,name:P+b.channel+"_provider"}),r)b.onLoad=function(){o=a,g(),h.up.callback(!0)};else{var c=0,e=b.delay/50;!function f(){if(++c>e)throw new Error("Unable to reference listenerwindow");try{o=p.contentWindow.frames[P+b.channel+"_consumer"]}catch(a){}o?(g(),h.up.callback(!0)):d(f,50)}()}p=w(b)}else o=a,g(),r?(p=parent,h.up.callback(!0)):(u(b,{props:{src:b.remote+"#"+b.channel+new Date,name:P+b.channel+"_consumer"},onLoad:function(){h.up.callback(!0)}}),p=w(b))},init:function(){l(h.onDOMReady,h)}}},N.stack.ReliableBehavior=function(){var a,b,c=0,d=0,e="";return a={incoming:function(f,g){var h=f.indexOf("_"),i=f.substring(0,h).split(",");f=f.substring(h+1),i[0]==c&&(e="",b&&b(!0)),f.length>0&&(a.down.outgoing(i[1]+","+c+"_"+e,g),d!=i[1]&&(d=i[1],a.up.incoming(f,g)))},outgoing:function(f,g,h){e=f,b=h,a.down.outgoing(d+","+ ++c+"_"+f,g)}}},N.stack.QueueBehavior=function(a){function b(){if(a.remove&&0===h.length)return void A(c);if(!i&&0!==h.length&&!g){i=!0;var e=h.shift();c.down.outgoing(e.data,e.origin,function(a){i=!1,e.callback&&d(function(){e.callback(a)},0),b()})}}var c,g,h=[],i=!0,j="",k=0,l=!1,m=!1;return c={init:function(){t(a)&&(a={}),a.maxLength&&(k=a.maxLength,m=!0),a.lazy?l=!0:c.down.init()},callback:function(a){i=!1;var d=c.up;b(),d.callback(a)},incoming:function(b,d){if(m){var f=b.indexOf("_"),g=parseInt(b.substring(0,f),10);j+=b.substring(f+1),0===g&&(a.encode&&(j=e(j)),c.up.incoming(j,d),j="")}else c.up.incoming(b,d)},outgoing:function(d,e,g){a.encode&&(d=f(d));var i,j=[];if(m){for(;0!==d.length;)i=d.substring(0,k),d=d.substring(i.length),j.push(i);for(;i=j.shift();)h.push({data:j.length+"_"+i,origin:e,callback:0===j.length?g:null})}else h.push({data:d,origin:e,callback:g});l?c.down.init():b()},destroy:function(){g=!0,c.down.destroy()}}},N.stack.VerifyBehavior=function(a){function b(){d=Math.random().toString(16).substring(2),c.down.outgoing(d)}var c,d,e;return c={incoming:function(f,g){var h=f.indexOf("_");-1===h?f===d?c.up.callback(!0):e||(e=f,a.initiate||b(),c.down.outgoing(f)):f.substring(0,h)===e&&c.up.incoming(f.substring(h+1),g)},outgoing:function(a,b,e){c.down.outgoing(d+"_"+a,b,e)},callback:function(){a.initiate&&b()}}},N.stack.RpcBehavior=function(a,b){function c(a){a.jsonrpc="2.0",f.down.outgoing(g.stringify(a))}function d(a,b){var d=Array.prototype.slice;return function(){var e,f=arguments.length,g={method:b};f>0&&"function"==typeof arguments[f-1]?(f>1&&"function"==typeof arguments[f-2]?(e={success:arguments[f-2],error:arguments[f-1]},g.params=d.call(arguments,0,f-2)):(e={success:arguments[f-1]},g.params=d.call(arguments,0,f-1)),j[""+ ++h]=e,g.id=h):g.params=d.call(arguments,0),a.namedParams&&1===g.params.length&&(g.params=g.params[0]),c(g)}}function e(a,b,d,e){if(!d)return void(b&&c({id:b,error:{code:-32601,message:"Procedure not found."}}));var f,g;b?(f=function(a){f=I,c({id:b,result:a})},g=function(a,d){g=I;var e={id:b,error:{code:-32099,message:a}};d&&(e.error.data=d),c(e)}):f=g=I,i(e)||(e=[e]);try{var h=d.method.apply(d.scope,e.concat([f,g]));t(h)||f(h)}catch(j){g(j.message)}}var f,g=b.serializer||W(),h=0,j={};return f={incoming:function(a){var d=g.parse(a);if(d.method)b.handle?b.handle(d,c):e(d.method,d.id,b.local[d.method],d.params);else{var f=j[d.id];d.error?f.error&&f.error(d.error):f.success&&f.success(d.result),delete j[d.id]}},init:function(){if(b.remote)for(var c in b.remote)b.remote.hasOwnProperty(c)&&(a[c]=d(b.remote[c],c));f.down.init()},destroy:function(){for(var c in b.remote)b.remote.hasOwnProperty(c)&&a.hasOwnProperty(c)&&delete a[c];f.down.destroy()}}},G.easyXDM=N}(window,document,location,window.setTimeout,decodeURIComponent,encodeURIComponent);var F2=function(){function a(a){return"object"==typeof Node?a instanceof Node:a&&"object"==typeof a&&"number"==typeof a.nodeType&&"string"==typeof a.nodeName}function b(a){return"object"==typeof HTMLElement?a instanceof HTMLElement:a&&"object"==typeof a&&1===a.nodeType&&"string"==typeof a.nodeName}function c(a,b){function c(a){var b=[];return a.replace(/^(\.\.?(\/|$))+/,"").replace(/\/(\.(\/|$))+/g,"/").replace(/\/\.\.$/,"/../").replace(/\/?[^\/]*/g,function(a){"/.."===a?b.pop():b.push(a)}),b.join("").replace(/^\//,"/"===a.charAt(0)?"/":"")}return b=d(b||""),a=d(a||""),b&&a?(b.protocol||a.protocol)+(b.protocol||b.authority?b.authority:a.authority)+c(b.protocol||b.authority||"/"===b.pathname.charAt(0)?b.pathname:b.pathname?(a.authority&&!a.pathname?"/":"")+a.pathname.slice(0,a.pathname.lastIndexOf("/")+1)+b.pathname:a.pathname)+(b.protocol||b.authority||b.pathname?b.search:b.search||a.search)+b.hash:null}function d(a){var b=/^\s+|\s+$/g,c=/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/,d=String(a).replace(b,"").match(c);return d?{href:d[0]||"",protocol:d[1]||"",authority:d[2]||"",host:d[3]||"",hostname:d[4]||"",port:d[5]||"",pathname:d[6]||"",search:d[7]||"",hash:d[8]||""}:void 0}return{appConfigReplacer:function(a,b){return"root"===a||"ui"===a||"height"===a?void 0:b},Apps:{},extend:function(a,b,c){var d="function"==typeof b,e=a?a.split("."):[],f=this;b=b||{},"F2"===e[0]&&(e=e.slice(1));for(var g=0,h=e.length;h>g;g++)f[e[g]]||(f[e[g]]=d&&g+1===h?b:{}),f=f[e[g]];if(!d)for(var i in b)(void 0===f[i]||c)&&(f[i]=b[i]);return f},guid:function(){function a(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()},inArray:function(a,b){return jQuery.inArray(a,b)>-1},isLocalRequest:function(a){var b,d,e=a.toLowerCase(),f=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,g=f.execute(e);try{b=location.href}catch(h){b=document.createElement("a"),b.href="",b=b.href}b=b.toLowerCase(),g||(e=c(b,e).toLowerCase(),g=f.exec(e)),d=f.exec(b)||[];var i=!(g&&(g[1]!==d[1]||g[2]!==d[2]||(g[3]||("http:"===g[1]?"80":"443"))!==(d[3]||("http:"===d[1]?"80":"443"))));return i},isNativeDOMNode:function(c){return a(c)||b(c)},log:function(){if(window.console){var a="log",b=Array.prototype.slice.apply(arguments);b.length>1&&b[0]in window.console&&(a=b.shift()),window.console[a]&&window.console[a].apply(window.console,b)}},parse:function(a){return JSON.parse(a)
+},stringify:function(a,b,c){return JSON.stringify(a,b,c)},version:function(){return"1.4.0"}}}();F2.extend("AppHandlers",function(){function a(a,c,d,e){b(a);var f={domNode:null,func:null,namespace:c};if(F2.isNativeDOMNode(d)?f.domNode=d:"function"==typeof d&&(f.func=d),!f.func&&!f.domNode)throw new Error("Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.");if(f.domNode&&!e)throw new Error("Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.");return f}function b(a){if(g!==a&&h!==a)throw new Error("Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().")}function c(a){if(a!==h)throw new Error("Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().")}function d(a,b){for(var c=a.slice(),d=c.length;d>=0;d--)(!c[d]||c[d].namespace&&c[d].namespace.toLowerCase()===b)&&c.splice(d,1);return c}function e(a,c,f){if(b(a),f)if(f=f.toLowerCase(),c&&c in i)i[c]=d(i[c],f);else for(var g in i)e(a,g,f);else c&&(i[c]=[])}function f(a){var b="";if(-1!==a.indexOf(".")){var c=a.split(".");a=c[0],b=c[1]}return{key:a,namespace:b}}var g=F2.guid(),h=F2.guid(),i={appCreateRoot:[],appRenderBefore:[],appDestroyBefore:[],appRenderAfter:[],appDestroyAfter:[],appRender:[],appDestroy:[],appScriptLoadFailed:[]},j={appRender:function(a,b){F2.isNativeDOMNode(a.root)?jQuery(a.root).append(b):a.root=jQuery(b).get(0),document.body.appendChild(a.root)},appDestroy:function(a){a.app&&a.app.destroy&&("function"==typeof a.app.destroy?a.app.destroy():F2.log(a.config.appId+" has a destroy property, but destroy is not of type function and as such will not be executed.")),jQuery(a.config.root).fadeOut(500,function(){jQuery(this).remove()})}};return{getToken:function(){return delete this.getToken,g},__f2GetToken:function(){return delete this.__f2GetToken,h},__trigger:function(a,b){if(c(a),!i[b])throw new Error("Invalid EventKey passed. Check your inputs and try again.");var d=Array.prototype.slice.call(arguments,2);if(!i[b].length&&j[b])j[b].apply(F2,d);else for(var e=0;e=4){var g=arguments[2],h=arguments[3];g.root?jQuery(g.root).append(h):g.root=jQuery(h).get(0),jQuery(f.domNode).append(g.root)}else f.func.apply(F2,d)}return this},on:function(b,c,d){if(!c)throw new Error("eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.");var e=f(c);if(!i[e.key])throw new Error("Invalid eventKey passed. Check your inputs and try again.");var g="appRender"===e.key,h=a(b,e.namespace,d,g);return i[e.key].push(h),this},off:function(a,b){if(!b)throw new Error("eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.");var c=f(b);if(!i[c.key])throw new Error("Invalid EventKey passed. Check your inputs and try again.");return e(a,c.key,c.namespace),this}}}()),F2.extend("Constants",{AppHandlers:{APP_CREATE_ROOT:"appCreateRoot",APP_RENDER_BEFORE:"appRenderBefore",APP_RENDER:"appRender",APP_RENDER_AFTER:"appRenderAfter",APP_DESTROY_BEFORE:"appDestroyBefore",APP_DESTROY:"appDestroy",APP_DESTROY_AFTER:"appDestroyAfter",APP_SCRIPT_LOAD_FAILED:"appScriptLoadFailed"}}),F2.extend("",{App:function(){return{init:function(){}}},AppConfig:{appId:"",context:{},enableBatchRequests:!1,height:0,instanceId:"",isSecure:!1,containerLocale:null,localeSupport:[],manifestUrl:"",maxWidth:0,minGridSize:4,minWidth:300,name:"",root:void 0,ui:void 0,views:[]},AppManifest:{apps:[],inlineScripts:[],scripts:[],styles:[]},AppContent:{data:{},html:"",status:""},ContainerConfig:{afterAppRender:null,appRender:null,beforeAppRender:null,debugMode:!1,locale:null,scriptErrorTimeout:7e3,isSecureAppPage:!1,secureAppPagePath:"",supportedViews:[],UI:{Mask:{backgroundColor:"#FFF",loadingIcon:"",opacity:.6,useClasses:!1,zIndex:2}},xhr:{dataType:null,type:null,url:null},loadScripts:function(){},loadStyles:function(){}}}),F2.extend("Constants",{Css:{APP:"f2-app",APP_CONTAINER:"f2-app-container",APP_TITLE:"f2-app-title",APP_VIEW:"f2-app-view",APP_VIEW_TRIGGER:"f2-app-view-trigger",MASK:"f2-mask",MASK_CONTAINER:"f2-mask-container"},Events:{APP_SYMBOL_CHANGE:"App.symbolChange",APP_WIDTH_CHANGE:"App.widthChange.",CONTAINER_SYMBOL_CHANGE:"Container.symbolChange",CONTAINER_WIDTH_CHANGE:"Container.widthChange",CONTAINER_LOCALE_CHANGE:"Container.localeChange"},JSONP_CALLBACK:"F2_jsonpCallback_",Sockets:{EVENT:"__event__",LOAD:"__socketLoad__",RPC:"__rpc__",RPC_CALLBACK:"__rpcCallback__",UI_RPC:"__uiRpc__"},Views:{DATA_ATTRIBUTE:"data-f2-view",ABOUT:"about",HELP:"help",HOME:"home",REMOVE:"remove",SETTINGS:"settings"}}),F2.extend("",function(){function _afterAppRender(a,b){var c=_config.afterAppRender||function(a,b){return jQuery(b).appendTo("body")},d=c(a,b);return _config.afterAppRender&&!d?void F2.log("F2.ContainerConfig.afterAppRender() must return the DOM Element that contains the app"):(jQuery(d).addClass(F2.Constants.Css.APP),d.get(0))}function _appRender(a,b){return b=_outerHtml(jQuery(b).addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId)),_config.appRender&&(b=_config.appRender(a,b)),_outerHtml(b)}function _beforeAppRender(a){var b=_config.beforeAppRender||jQuery.noop;return b(a)}function _appScriptLoadFailed(a,b){_config.appScriptLoadFailed&&_config.appScriptLoadFailed(a,b)}function _createAppConfig(a){return a=jQuery.extend(!0,{},a),a.instanceId=a.instanceId||F2.guid(),a.views=a.views||[],F2.inArray(F2.Constants.Views.HOME,a.views)||a.views.push(F2.Constants.Views.HOME),F2.ContainerConfig.locale&&(a.containerLocale=F2.ContainerConfig.locale),a}function _getAppConfigFromElement(a){var b;if(a){var c=a.getAttribute("data-f2-appid"),d=a.getAttribute("data-f2-manifesturl");if(c&&d){b={appId:c,enableBatchRequests:a.hasAttribute("data-f2-enablebatchrequests"),isSecure:a.hasAttribute("data-f2-issecure"),manifestUrl:d,root:a};var e=a.getAttribute("data-f2-context");if(e)try{b.context=F2.parse(e)}catch(f){console.warn('F2: "data-f2-context" of node is not valid JSON','"'+f+'"')}}}return b}function _hasNonTextChildNodes(a){var b=!1;if(a.hasChildNodes())for(var c=0,d=a.childNodes.length;d>c;c++)if(1===a.childNodes[c].nodeType){b=!0;break}return b}function _hydrateContainerConfig(a){a.scriptErrorTimeout||(a.scriptErrorTimeout=F2.ContainerConfig.scriptErrorTimeout),a.debugMode!==!0&&(a.debugMode=F2.ContainerConfig.debugMode),a.locale&&"string"==typeof a.locale&&(F2.ContainerConfig.locale=a.locale)}function _initAppEvents(a){var b="."+F2.Constants.Css.APP_VIEW_TRIGGER+"["+F2.Constants.Views.DATA_ATTRIBUTE+"]";jQuery(a.root).on("click",b,function(b){b.preventDefault();var c=jQuery(this).attr(F2.Constants.Views.DATA_ATTRIBUTE).toLowerCase();c===F2.Constants.Views.REMOVE?F2.removeApp(a.instanceId):a.ui.Views.change(c)})}function _initContainerEvents(){function a(){F2.Events.emit(F2.Constants.Events.CONTAINER_WIDTH_CHANGE)}var b;jQuery(window).on("resize",function(){clearTimeout(b),b=setTimeout(a,100)}),F2.Events.on(F2.Constants.Events.CONTAINER_LOCALE_CHANGE,function(a){a.locale&&"string"==typeof a.locale&&(F2.ContainerConfig.locale=a.locale)})}function _isPlaceholderElement(a){return F2.isNativeDOMNode(a)&&!_hasNonTextChildNodes(a)&&!!a.getAttribute("data-f2-appid")&&!!a.getAttribute("data-f2-manifesturl")}function _isInit(){return!!_config}function _createAppInstance(a,b){a.ui=new F2.UI(a),void 0!==F2.Apps[a.appId]&&("function"==typeof F2.Apps[a.appId]?setTimeout(function(){_apps[a.instanceId].app=new F2.Apps[a.appId](a,b,a.root),void 0!==_apps[a.instanceId].app.init&&_apps[a.instanceId].app.init()},0):F2.log("app initialization class is defined but not a function. ("+a.appId+")"))}function _loadApps(appConfigs,appManifest){function _loadStyles(a,b){if(_config.loadStyles)return _config.loadStyles(a,b);var c,d=!!document.createStyleSheet;jQuery.each(a,function(a,b){var e=b,f=b.toLowerCase();_loadedStyles[f]||(d?document.createStyleSheet(e):(c=c||[],c.push('')),_loadedStyles[f]=!0)}),c&&jQuery("head").append(c.join("")),b()}function _loadScripts(a,b){function c(a){setTimeout(function(){var b={src:a.target.src,appId:appConfigs[0].appId};F2.log("Script defined in '"+b.appId+"' failed to load '"+b.src+"'"),F2.Events.emit("RESOURCE_FAILED_TO_LOAD",b),_usesAppHandlers?F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,appConfigs[0],b.src):_appScriptLoadFailed(appConfigs[0],b.src)},_config.scriptErrorTimeout)}function d(){++h===g&&b()}function e(a,b){var c,d=_loadingScripts[a];if(d){for(var e=0;ei;i++)try{eval(inlines[i])}catch(exception){F2.log("Error loading inline script: "+exception+"\n\n"+inlines[i]),F2.Events.emit("RESOURCE_FAILED_TO_LOAD",{appId:appConfigs[0].appId,src:inlines[i],err:exception}),_usesAppHandlers?F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,appConfigs[0],exception):_appScriptLoadFailed(appConfigs[0],exception)}cb()}}function elementInDocument(a){if(a)for(;a.parentNode;)if(a=a.parentNode,a===document)return!0;return!1}function _loadHtml(a){jQuery.each(a,function(a,b){if(_isPlaceholderElement(appConfigs[a].root))jQuery(appConfigs[a].root).addClass(F2.Constants.Css.APP).append(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+appConfigs[a].appId));else if(_usesAppHandlers){F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER,appConfigs[a],_outerHtml(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+appConfigs[a].appId)));var c=appConfigs[a].appId,d=appConfigs[a].root;if(!d)throw new Error("Root for "+c+" must be a native DOM element and cannot be null or undefined. Check your AppHandler callbacks to ensure you have set App root to a native DOM element.");if(!elementInDocument(d))throw new Error("App root for "+c+" was not appended to the DOM. Check your AppHandler callbacks to ensure you have rendered the app root to the DOM.");if(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER_AFTER,appConfigs[a]),!F2.isNativeDOMNode(d))throw new Error("App root for "+c+" must be a native DOM element. Check your AppHandler callbacks to ensure you have set app root to a native DOM element.")}else appConfigs[a].root=_afterAppRender(appConfigs[a],_appRender(appConfigs[a],b.html));_initAppEvents(appConfigs[a])})}if(appConfigs=[].concat(appConfigs),1===appConfigs.length&&appConfigs[0].isSecure&&!_config.isSecureAppPage)return void _loadSecureApp(appConfigs[0],appManifest);if(appConfigs.length!==appManifest.apps.length)return void F2.log("The number of apps defined in the AppManifest do not match the number requested.",appManifest);var manifestScripts=appManifest.scripts||[],manifestStyles=appManifest.styles||[],manifestInlines=appManifest.inlineScripts||[],manifestApps=appManifest.apps||[];_loadStyles(manifestStyles,function(){_loadHtml(manifestApps),_loadScripts(manifestScripts,function(){appConfigs[0]&&F2.Events.emit("APP_SCRIPTS_LOADED",{appId:appConfigs[0].appId,scripts:manifestScripts}),_loadInlineScripts(manifestInlines,function(){jQuery.each(appConfigs,function(a,b){_createAppInstance(b,manifestApps[a])})})})})}function _loadSecureApp(a,b){if(_config.secureAppPagePath){if(_isPlaceholderElement(a.root))jQuery(a.root).addClass(F2.Constants.Css.APP).append(jQuery("").addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId));else if(_usesAppHandlers){var c=jQuery(a.root);if(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER,a,_outerHtml(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId))),0===c.parents("body:first").length)throw new Error("App was never rendered on the page. Please check your AppHandler callbacks to ensure you have rendered the app root to the DOM.");if(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER_AFTER,a),!a.root)throw new Error("App Root must be a native dom node and can not be null or undefined. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.");if(!F2.isNativeDOMNode(a.root))throw new Error("App Root must be a native dom node. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.")}else a.root=_afterAppRender(a,_appRender(a,""));a.ui=new F2.UI(a),_initAppEvents(a),F2.Rpc.register(a,b)}else F2.log('Unable to load secure app: "secureAppPagePath" is not defined in F2.ContainerConfig.')}function _outerHtml(a){return jQuery("").append(a).html()}function _validateApp(a){return a.appId?a.root||a.manifestUrl?!0:(F2.log('"manifestUrl" missing from app object'),!1):(F2.log('"appId" missing from app object'),!1)}function _validateContainerConfig(){if(_config&&_config.xhr){if("function"!=typeof _config.xhr&&"object"!=typeof _config.xhr)throw new Error("ContainerConfig.xhr should be a function or an object");if(_config.xhr.dataType&&"function"!=typeof _config.xhr.dataType)throw new Error("ContainerConfig.xhr.dataType should be a function");if(_config.xhr.type&&"function"!=typeof _config.xhr.type)throw new Error("ContainerConfig.xhr.type should be a function");if(_config.xhr.url&&"function"!=typeof _config.xhr.url)throw new Error("ContainerConfig.xhr.url should be a function")}return!0}var _apps={},_config=!1,_usesAppHandlers=!1,_appHandlerToken=F2.AppHandlers.__f2GetToken(),_loadedScripts={},_loadedStyles={},_loadingScripts={};return{getContainerState:function(){return _isInit()?jQuery.map(_apps,function(a){return{appId:a.config.appId}}):void F2.log("F2.init() must be called before F2.getContainerState()")},getContainerLocale:function(){return _isInit()?F2.ContainerConfig.locale:void F2.log("F2.init() must be called before F2.getContainerLocale()")},init:function(a){_config=a||{},_validateContainerConfig(),_hydrateContainerConfig(_config),_usesAppHandlers=_config.beforeAppRender||_config.appRender||_config.afterAppRender||_config.appScriptLoadFailed,(_config.secureAppPagePath||_config.isSecureAppPage)&&F2.Rpc.init(_config.secureAppPagePath?_config.secureAppPagePath:!1),F2.UI.init(_config),_config.isSecureAppPage||_initContainerEvents()},isInit:_isInit,loadPlaceholders:function(a){if(a&&!F2.isNativeDOMNode(a))throw new Error('"parentNode" must be null or a DOM node');var b=[],c=[];a?a.hasAttribute("data-f2-appid")&&b.push(a):document.querySelectorAll&&(b=b.concat(document.querySelectorAll("[data-f2-appid]")));for(var d=0,e=b.length;e>d;d++){var f=_getAppConfigFromElement(b[d]);c.push(f)}c.length&&F2.registerApps(c)},registerApps:function(a,b){if(!_isInit())return void F2.log("F2.init() must be called before F2.registerApps()");if(!a)return void F2.log("At least one AppConfig must be passed when calling F2.registerApps()");var c=[],d={},e={},f=!1;return a=[].concat(a),b=[].concat(b||[]),f=!!b.length,a.length?a.length&&f&&a.length!==b.length?void F2.log('The length of "apps" does not equal the length of "appManifests"'):(jQuery.each(a,function(a,e){if(e=_createAppConfig(e),e.root=e.root||null,_validateApp(e)){if(_apps[e.instanceId]={config:e},e.root&&!_isPlaceholderElement(e.root)){if(!e.root&&"string"!=typeof e.root&&!F2.isNativeDOMNode(e.root))throw F2.log("AppConfig invalid for pre-load, not a valid string and not dom node"),F2.log("AppConfig instance:",e),new Error("Preloaded appConfig.root property must be a native dom node or a string representing a sizzle selector. Please check your inputs and try again.");if(1!==jQuery(e.root).length)throw F2.log("AppConfig invalid for pre-load, root not unique"),F2.log("AppConfig instance:",e),F2.log("Number of dom node instances:",jQuery(e.root).length),new Error("Preloaded appConfig.root property must map to a unique dom node. Please check your inputs and try again.");return _createAppInstance(e),void _initAppEvents(e)}_isPlaceholderElement(e.root)||(_usesAppHandlers?(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_CREATE_ROOT,e),F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER_BEFORE,e)):e.root=_beforeAppRender(e)),f?_loadApps(e,b[a]):e.enableBatchRequests&&!e.isSecure?(d[e.manifestUrl.toLowerCase()]=d[e.manifestUrl.toLowerCase()]||[],d[e.manifestUrl.toLowerCase()].push(e)):c.push({apps:[e],url:e.manifestUrl})}}),void(f||(jQuery.each(d,function(a,b){c.push({url:a,apps:b})}),jQuery.each(c,function(a,b){var c=F2.Constants.JSONP_CALLBACK+b.apps[0].appId;e[c]=e[c]||[],e[c].push(b)}),jQuery.each(e,function(a,b){function c(d,e){function f(){c(a,b.pop())}function g(){jQuery.each(e.apps,function(a,b){b.name=b.name||b.appId,F2.log("Removed failed "+b.name+" app",b),F2.removeApp(b.instanceId)})}function h(a){_loadApps(e.apps,a)}if(e){var i="GET",j="jsonp";if(_config.xhr){if(_config.xhr.dataType&&(j=_config.xhr.dataType(e.url,e.apps),"string"!=typeof j))throw new Error("ContainerConfig.xhr.dataType should return a string");if(_config.xhr.type&&(i=_config.xhr.type(e.url,e.apps),"string"!=typeof i))throw new Error("ContainerConfig.xhr.type should return a string");if(_config.xhr.url&&(e.url=_config.xhr.url(e.url,e.apps),"string"!=typeof e.url))throw new Error("ContainerConfig.xhr.url should return a string")}var k=_config.xhr;"function"!=typeof k&&(k=function(a,b,c,f,g){jQuery.ajax({url:a,type:i,data:{params:F2.stringify(e.apps,F2.appConfigReplacer)},jsonp:!1,jsonpCallback:d,dataType:j,success:c,error:function(a,b,c){F2.log("Failed to load app(s)",c.toString(),e.apps),f()},complete:g})}),k(e.url,e.apps,h,g,f)}}c(a,b.pop())})))):void F2.log("At least one AppConfig must be passed when calling F2.registerApps()")},removeAllApps:function(){return _isInit()?void jQuery.each(_apps,function(a,b){F2.removeApp(b.config.instanceId)}):void F2.log("F2.init() must be called before F2.removeAllApps()")},removeApp:function(a){return _isInit()?void(_apps[a]&&(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_DESTROY_BEFORE,_apps[a]),F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_DESTROY,_apps[a]),F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_DESTROY_AFTER,_apps[a]),delete _apps[a])):void F2.log("F2.init() must be called before F2.removeApp()")}}}()),F2.extend("Events",function(){var a=new EventEmitter2({wildcard:!0});return a.setMaxListeners(0),{_socketEmit:function(){return EventEmitter2.prototype.emit.apply(a,[].slice.call(arguments))},emit:function(){return F2.Rpc.broadcast(F2.Constants.Sockets.EVENT,[].slice.call(arguments)),EventEmitter2.prototype.emit.apply(a,[].slice.call(arguments))},many:function(b,c,d){return a.many(b,c,d)},off:function(b,c){return a.off(b,c)},on:function(b,c){return a.on(b,c)},once:function(b,c){return a.once(b,c)}}}()),F2.extend("Rpc",function(){function a(){var a,b=!1,c=[],e=new easyXDM.Socket({onMessage:function(f,g){if(!b&&l.test(f)){f=f.replace(l,"");var i=F2.parse(f);2===i.length&&(a=i[0],h[a.instanceId]={config:a,socket:e},F2.registerApps([a],[i[1]]),jQuery.each(c,function(){d(a,f,g)}),b=!0)}else b?d(a,f,g):c.push(f)}})}function b(a,b){var c=jQuery(a.root);if(!c.length)return void F2.log("Unable to locate app in order to establish secure connection.");var e={scrolling:"no",style:{width:"100%"}};a.height&&(e.style.height=a.height+"px");var f=new easyXDM.Socket({remote:g,container:c.get(0),props:e,onMessage:function(b,c){d(a,b,c)},onReady:function(){f.postMessage(F2.Constants.Sockets.LOAD+F2.stringify([a,b],F2.appConfigReplacer))}});return f}function c(a,b){return function(){F2.Rpc.call(a,F2.Constants.Sockets.RPC_CALLBACK,b,[].slice.call(arguments).slice(2))}}function d(a,b){function d(a,b){for(var c=String(b).split("."),d=0;d','
','
','
','','
',a,"
","
",'
',b,"
",'","
","
","
"].join("")}var d=a,e=jQuery(a.root);return{hideMask:function(a){F2.UI.hideMask(d.instanceId,a)},Modals:function(){function a(a){return c("Alert",a)}function b(a){return c("Confirm",a,!0)}return{alert:function(b,c){return F2.isInit()?void(F2.Rpc.isRemote(d.instanceId)?F2.Rpc.call(d.instanceId,F2.Constants.Sockets.UI_RPC,"Modals.alert",[].slice.call(arguments)):jQuery(a(b)).on("show.bs.modal",function(){var a=this;jQuery(a).find(".btn-primary").on("click",function(){jQuery(a).modal("hide").remove(),(c||jQuery.noop)()})}).modal({backdrop:!0})):void F2.log("F2.init() must be called before F2.UI.Modals.alert()")},confirm:function(a,c,e){return F2.isInit()?void(F2.Rpc.isRemote(d.instanceId)?F2.Rpc.call(d.instanceId,F2.Constants.Sockets.UI_RPC,"Modals.confirm",[].slice.call(arguments)):jQuery(b(a)).on("show.bs.modal",function(){var a=this;jQuery(a).find(".btn-ok").on("click",function(){jQuery(a).modal("hide").remove(),(c||jQuery.noop)()}),jQuery(a).find(".btn-cancel").on("click",function(){jQuery(a).modal("hide").remove(),(e||jQuery.noop)()})}).modal({backdrop:!0})):void F2.log("F2.init() must be called before F2.UI.Modals.confirm()")}}}(),setTitle:function(a){F2.Rpc.isRemote(d.instanceId)?F2.Rpc.call(d.instanceId,F2.Constants.Sockets.UI_RPC,"setTitle",[a]):jQuery(d.root).find("."+F2.Constants.Css.APP_TITLE).text(a)},showMask:function(a,b){F2.UI.showMask(d.instanceId,a,b)},updateHeight:b,Views:function(){function a(a){return f.test(a)?!0:(F2.log('"'+a+'" is not a valid F2.UI.Views event name'),!1)}var c=new EventEmitter2,f=/change/i;return c.setMaxListeners(0),{change:function(a){"function"==typeof a?this.on("change",a):"string"==typeof a&&(d.isSecure&&!F2.Rpc.isRemote(d.instanceId)?F2.Rpc.call(d.instanceId,F2.Constants.Sockets.UI_RPC,"Views.change",[].slice.call(arguments)):F2.inArray(a,d.views)&&(jQuery("."+F2.Constants.Css.APP_VIEW,e).addClass("hide").filter('[data-f2-view="'+a+'"]',e).removeClass("hide"),b(),c.emit("change",a)))},off:function(b,d){a(b)&&c.off(b,d)},on:function(b,d){a(b)&&c.on(b,d)}}}()}}var b;return a.hideMask=function(a,b){if(!F2.isInit())return void F2.log("F2.init() must be called before F2.UI.hideMask()");if(F2.Rpc.isRemote(a)&&!jQuery(b).is("."+F2.Constants.Css.APP))F2.Rpc.call(a,F2.Constants.Sockets.RPC,"F2.UI.hideMask",[a,jQuery(b).selector]);else{var c=jQuery(b);c.find("> ."+F2.Constants.Css.MASK).remove(),c.removeClass(F2.Constants.Css.MASK_CONTAINER),c.data(F2.Constants.Css.MASK_CONTAINER)&&c.css({position:"static"})}},a.init=function(a){b=a,b.UI=jQuery.extend(!0,{},F2.ContainerConfig.UI,b.UI||{})},a.showMask=function(a,c,d){if(!F2.isInit())return void F2.log("F2.init() must be called before F2.UI.showMask()");if(F2.Rpc.isRemote(a)&&jQuery(c).is("."+F2.Constants.Css.APP))F2.Rpc.call(a,F2.Constants.Sockets.RPC,"F2.UI.showMask",[a,jQuery(c).selector,d]);else{d&&!b.UI.Mask.loadingIcon&&F2.log("Unable to display loading icon. Please set F2.ContainerConfig.UI.Mask.loadingIcon when calling F2.init();");var e=jQuery(c).addClass(F2.Constants.Css.MASK_CONTAINER),f=jQuery("
").height("100%").width("100%").addClass(F2.Constants.Css.MASK);b.UI.Mask.useClasses||f.css({"background-color":b.UI.Mask.backgroundColor,"background-image":b.UI.Mask.loadingIcon?"url("+b.UI.Mask.loadingIcon+")":"","background-position":"50% 50%","background-repeat":"no-repeat",display:"block",left:0,"min-height":30,padding:0,position:"absolute",top:0,"z-index":b.UI.Mask.zIndex,filter:"alpha(opacity="+100*b.UI.Mask.opacity+")",opacity:b.UI.Mask.opacity}),"static"===e.css("position")&&(e.css({position:"relative"}),e.data(F2.Constants.Css.MASK_CONTAINER,!0)),e.append(f)}},a}()),jQuery(function(){var a=[],b=function(b){b&&a.push(b)},c=function(a){if(a)for(var c=0,d=a.length;d>c;c++)b(a[c])};if(b(document.getElementById("f2-autoload")),document.querySelectorAll&&(c(document.querySelectorAll("[data-f2-autoload]")),c(document.querySelectorAll(".f2-autoload"))),a.length){F2.init();for(var d=0,e=a.length;e>d;d++)F2.loadPlaceholders(a[d])}}),exports.F2=F2,"undefined"!=typeof define&&define.amd&&define(function(){return F2})}}("undefined"!=typeof exports?exports:window);
//# sourceMappingURL=f2.min.js.map
\ No newline at end of file
diff --git a/dist/f2.min.js.map b/dist/f2.min.js.map
index cc4e43ef..18b48749 100644
--- a/dist/f2.min.js.map
+++ b/dist/f2.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"f2.min.js","sources":["f2.debug.js"],"names":["exports","F2","F2_TESTING_MODE","global","factory","module","document","w","Error","window","this","noGlobal","isArraylike","obj","length","type","jQuery","isWindow","nodeType","winnow","elements","qualifier","not","isFunction","grep","elem","i","call","risSimple","test","filter","inArray","sibling","cur","dir","createOptions","options","object","optionsCache","each","match","rnotwhite","_","flag","detach","addEventListener","removeEventListener","completed","detachEvent","event","readyState","ready","dataAttr","key","data","undefined","name","replace","rmultiDash","toLowerCase","getAttribute","rbrace","parseJSON","e","isEmptyDataObject","isEmptyObject","internalData","pvt","acceptData","ret","thisCache","internalKey","expando","isNode","cache","id","deletedIds","pop","guid","toJSON","noop","extend","camelCase","internalRemoveData","isArray","concat","map","split","cleanData","support","deleteExpando","returnTrue","returnFalse","safeActiveElement","activeElement","err","createSafeFragment","list","nodeNames","safeFrag","createDocumentFragment","createElement","getAll","context","tag","elems","found","getElementsByTagName","strundefined","querySelectorAll","childNodes","nodeName","push","merge","fixDefaultChecked","rcheckableType","defaultChecked","checked","manipulationTarget","content","firstChild","appendChild","ownerDocument","disableScript","find","attr","restoreScript","rscriptTypeMasked","exec","removeAttribute","setGlobalEval","refElements","_data","cloneCopyEvent","src","dest","hasData","l","oldData","curData","events","handle","add","fixCloneNodeIssues","noCloneEvent","removeEvent","text","parentNode","outerHTML","html5Clone","innerHTML","trim","value","defaultSelected","selected","defaultValue","actualDisplay","doc","style","appendTo","body","display","getDefaultComputedStyle","css","defaultDisplay","elemdisplay","iframe","documentElement","contentWindow","contentDocument","write","close","addGetHookIf","conditionFn","hookFn","get","condition","apply","arguments","vendorPropName","capName","charAt","toUpperCase","slice","origName","cssPrefixes","showHide","show","hidden","values","index","isHidden","setPositiveNumber","subtract","matches","rnumsplit","Math","max","augmentWidthOrHeight","extra","isBorderBox","styles","val","cssExpand","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","getStyles","boxSizing","curCSS","rnumnonpx","boxSizingReliable","parseFloat","Tween","prop","end","easing","prototype","init","createFxNow","setTimeout","fxNow","now","genFx","includeWidth","which","attrs","height","opacity","width","createTween","animation","tween","collection","tweeners","defaultPrefilter","props","opts","toggle","hooks","oldfire","checkDisplay","anim","orig","dataShow","queue","_queueHooks","unqueued","empty","fire","always","overflow","overflowX","overflowY","inlineBlockNeedsLayout","zoom","shrinkWrapBlocks","rfxtypes","done","hide","_removeData","start","propFilter","specialEasing","cssHooks","expand","Animation","properties","result","stopped","animationPrefilters","deferred","Deferred","tick","currentTime","remaining","startTime","duration","temp","percent","tweens","run","notifyWith","resolveWith","promise","originalProperties","originalOptions","stop","gotoEnd","rejectWith","fx","timer","progress","complete","fail","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","jqXHR","inspect","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","target","deep","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","firstDataType","ct","finalDataType","contents","shift","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","tmp","prev","responseFields","dataFilter","state","error","buildParams","prefix","traditional","v","rbracket","createStandardXHR","XMLHttpRequest","createActiveXHR","ActiveXObject","getWindow","defaultView","parentWindow","indexOf","class2type","toString","hasOwn","hasOwnProperty","version","selector","fn","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","jquery","constructor","toArray","num","pushStack","prevObject","callback","args","first","eq","last","len","j","sort","splice","copyIsArray","copy","clone","isPlainObject","random","isReady","msg","Array","isNumeric","ownLast","globalEval","execScript","string","makeArray","arr","results","Object","second","invert","callbackInverse","callbackExpect","arg","proxy","Date","Sizzle","seed","m","groups","old","nid","newContext","newSelector","preferredDoc","setDocument","documentIsHTML","rquickExpr","getElementById","contains","getElementsByClassName","qsa","rbuggyQSA","tokenize","rescape","setAttribute","toSelector","rsibling","testContext","join","qsaError","select","createCache","keys","Expr","cacheLength","markFunction","assert","div","removeChild","addHandle","handler","attrHandle","siblingCheck","a","b","diff","sourceIndex","MAX_NEGATIVE","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","checkNonElements","doneName","xml","oldCache","outerCache","newCache","dirruns","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","classCache","tokenCache","compilerCache","sortOrder","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escaped","escapedWhitespace","high","String","fromCharCode","els","node","hasCompare","parent","top","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","specified","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","nodeIndex","useCache","lastChild","pseudo","idx","matched","has","innerText","lang","elemLang","hash","location","root","focus","hasFocus","href","tabIndex","enabled","disabled","selectedIndex","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","soFar","preFilters","cached","token","compiled","div1","unique","isXMLDoc","rneedsContext","rsingleTag","self","is","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","children","next","until","n","r","targets","closest","pos","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","reverse","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","stack","once","stopOnFalse","disable","remove","lock","locked","fireWith","tuples","then","fns","newDefer","tuple","returned","resolve","reject","notify","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","updateFunc","readyList","readyWait","holdReady","hold","wait","triggerHandler","off","frameElement","doScroll","doScrollCheck","container","cssText","noData","applet ","embed ","object ","removeData","dequeue","startLength","setter","clearQueue","count","defer","pnum","source","el","access","chainable","emptyGet","raw","bulk","fragment","leadingWhitespace","tbody","htmlSerialize","cloneNode","appendChecked","noCloneChecked","checkClone","click","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","types","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","trigger","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","srcElement","metaKey","original","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","one","origFn","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rchecked","rscriptType","rcleanScript","wrapMap","option","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","buildFragment","scripts","selection","wrap","safe","nodes","createTextNode","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","hasScripts","set","iNoClone","_evalUrl","prependTo","insertAfter","replaceAll","insert","shrinkWrapBlocksVal","rmargin","rposition","getComputedStyle","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","computeStyleTests","pixelPositionVal","boxSizingReliableVal","reliableMarginRightVal","marginRight","reliableHiddenOffsetsVal","cssFloat","backgroundClip","clearCloneStyle","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","pixelPosition","reliableMarginRight","swap","ralpha","ropacity","rdisplayswap","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","cssProps","float","$1","margin","padding","border","suffix","expanded","parts","unit","propHooks","eased","step","linear","p","swing","cos","PI","timerId","rfxnum","rrun","*","scale","maxIterations","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","for","class","notxml","tabindex","parseInt","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","rvalidtokens","JSON","parse","requireNonComma","depth","str","comma","open","Function","parseXML","DOMParser","parseFromString","async","loadXML","ajaxLocParts","ajaxLocation","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","allTypes","active","lastModified","etag","url","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","status","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","code","abort","finalText","method","crossDomain","hasContent","beforeSend","send","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","serialize","serializeArray","xhr","xhrId","xhrCallbacks","xhrSupported","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","head","scriptCharset","charset","onload","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict","Plugin","_relatedTarget","$this","Modal","DEFAULTS","element","$body","$element","$backdrop","isShown","scrollbarWidth","remote","VERSION","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","backdrop","keyboard","that","checkScrollbar","setScrollbar","escape","transition","enforceFocus","emulateTransitionEnd","hideModal","resetScrollbar","removeBackdrop","doAnimate","callbackRemove","measureScrollbar","bodyPad","clientWidth","innerWidth","scrollDiv","modal","Constructor","$target","showEvent","_events","_conf","configure","conf","delimiter","maxListeners","wildcard","newListener","listenerTree","EventEmitter","searchListenerTree","tree","leaf","branch","xTree","xxTree","isolatedBranch","endReached","listeners","typeLength","currentType","nextType","_listeners","**","growListenerTree","listener","warned","defaultMaxListeners","console","trace","setMaxListeners","many","ttl","_origin","emit","_all","ns","onAny","addListener","leafs","iLeaf","offAny","removeListener","removeAllListeners","listenersAny","EventEmitter2","process","title","decodeURIComponent","isHostMethod","property","isHostObject","o","hasFlash","undef","navigator","plugins","description","mimeTypes","enabledPlugin","flashVersion","flash","GetVariable","notSupportedException","major","minor","HAS_FLASH_THROTTLED_BUG","dom_onReady","domIsReady","domReadyQueue","whenReady","scope","getParentObject","ii","easyXDM","_easyXDM","IFRAME_PREFIX","getDomainName","reURI","getPort","getLocation","proto","domain","port","resolveUrl","reDoubleSlash","path","substring","pathname","lastIndexOf","protocol","host","reParent","appendQueryParameters","parameters","q","useHash","destination","noOverwrite","member","testForNamePropertyBug","channelId","HAS_NAME_PROPERTY_BUG","createFrame","config","frame","frameBorder","allowTransparency","onLoad","usePost","action","checkAcl","acl","re","substr","prepareTransportStack","stackEls","isHost","query","xdm_p","channel","secret","swf","product","userAgent","remoteHelper","xdm_c","xdm_s","xdm_e","useResize","useParent","usePolling","local","images","search","xdm_pa","xdm_po","HashTransport","ReliableBehavior","QueueBehavior","encode","maxLength","VerifyBehavior","initiate","PostMessageTransport","NameTransport","NixTransport","SameOriginTransport","FrameElementTransport","FlashTransport","lazy","chainStack","stackElements","stackEl","defaults","incoming","message","origin","up","outgoing","recipient","down","destroy","removeFromStack","un","floor","emptyFn","sEvent","fpNotify","pair","stringify","evalJSON","getJSONObject","DomHelper","requiresJSON","_map","Fn","del","Socket","onMessage","onReady","postMessage","Rpc","jsonRpcConfig","RpcBehavior","pub","targetOrigin","onDOMReady","sendFn","addSwf","swfContainer","swfNoThrottle","right","flashVars","destroyChannel","swfdomain","createChannel","_getOrigin","uri","_window_onMessage","callerWindow","waitForReady","referrer","_sendMessage","sendMessage","_onReady","readyCount","_onMessage","remoteOrigin","_onLoad","remoteWindow","remoteUrl","_callerWindow","_msgNr","_handleHash","_lastMsg","_remoteOrigin","_pollHash","_listenerWindow","_attachListeners","_timer","pollInterval","tries","getRef","frames","ex","idOut","idIn","currentMessage","ack","waiting","destroying","doFragment","seq","fragments","startVerification","mySecret","theirSecret","_send","jsonrpc","serializer","_createMethod","definition","_callbacks","_callbackCounter","namedParams","_executeMethod","ex1","_absolutizeURI","removeDotSegments","output","_parseURI","authority","hostname","appConfigReplacer","Apps","overwrite","isFunc","S4","array","isLocalRequest","urlLower","isNativeDOMNode","testObject","bIsNode","Node","bIsElement","HTMLElement","log","replacer","space","_createHandler","fnOrNode","domNodeAppropriate","_validateToken","domNode","_containerToken","_f2Token","_validateF2Token","_filterHandlersByNamespace","newHandlers","_removeHandler","eventKey","_handlerCollection","_parseEventKey","eventParts","appCreateRoot","appRenderBefore","appDestroyBefore","appRenderAfter","appDestroyAfter","appRender","appDestroy","appScriptLoadFailed","_defaultMethods","appConfig","appHtml","appInstance","app","appId","getToken","__f2GetToken","__trigger","callbackArgs","isAppRender","AppHandlers","APP_CREATE_ROOT","APP_RENDER_BEFORE","APP_RENDER","APP_RENDER_AFTER","APP_DESTROY_BEFORE","APP_DESTROY","APP_DESTROY_AFTER","APP_SCRIPT_LOAD_FAILED","App","AppConfig","enableBatchRequests","instanceId","isSecure","containerLocale","localeSupport","manifestUrl","minGridSize","ui","views","AppManifest","apps","inlineScripts","AppContent","ContainerConfig","afterAppRender","beforeAppRender","debugMode","locale","scriptErrorTimeout","isSecureAppPage","secureAppPagePath","supportedViews","UI","Mask","backgroundColor","loadingIcon","useClasses","loadScripts","loadStyles","Css","_PREFIX","APP","APP_CONTAINER","APP_TITLE","APP_VIEW","APP_VIEW_TRIGGER","MASK","MASK_CONTAINER","Events","_APP_EVENT_PREFIX","_CONTAINER_EVENT_PREFIX","APP_SYMBOL_CHANGE","APP_WIDTH_CHANGE","CONTAINER_SYMBOL_CHANGE","CONTAINER_WIDTH_CHANGE","CONTAINER_LOCALE_CHANGE","JSONP_CALLBACK","Sockets","EVENT","LOAD","RPC","RPC_CALLBACK","UI_RPC","Views","DATA_ATTRIBUTE","ABOUT","HELP","HOME","REMOVE","SETTINGS","_socketEmit","broadcast","Constants","timesToListen","_secureAppPagePath","_apps","_rEvents","_rRpc","_rRpcCallback","_rSocketLoad","_rUiCall","_createAppToContainerSocket","isLoaded","messagePlayback","socket","appParts","registerApps","_createContainerToAppSocket","appManifest","iframeProps","scrolling","_createRpcCallback","callbackId","parseFunction","functionName","parseMessage","regEx","callbacks","c","_registerCallback","messageType","cid","isRemote","register","_containerConfig","UI_Class","_appConfig","$root","_updateHeight","outerHeight","_modalHtml","showCancel","hideMask","Modals","_renderAlert","_renderConfirm","alert","isInit","confirm","okCallback","cancelCallback","setTitle","showMask","showLoader","updateHeight","_rValidEvents","_isValid","containerConfig","showLoading","mask","background-color","background-image","background-position","background-repeat","min-height","z-index","_config","_bUsesAppHandlers","_sAppHandlerToken","_loadedScripts","_loadedStyles","_loadingScripts","_afterAppRender","appContainer","_appRender","_outerHtml","_beforeAppRender","_appScriptLoadFailed","scriptInfo","_createAppConfig","_getAppConfigFromElement","hasAttribute","contextJson","warn","_hasNonTextChildNodes","hasNodes","hasChildNodes","_hydrateContainerConfig","_initAppEvents","view","removeApp","_initContainerEvents","resizeTimeout","resizeHandler","_isPlaceholderElement","_isInit","_createAppInstance","appContent","_loadApps","appConfigs","_loadSecureApp","_loadStyles","cb","stylesFragment","useCreateStyleSheet","createStyleSheet","resourceUrl","resourceKey","_loadScripts","scriptCount","scriptsLoaded","insertBeforeEl","readyStates","loaded","_error","evtData","_checkComplete","_emptyWaitlist","errorEvt","waitlist","getTime","onerror","_loadInlineScripts","inlines","loadInlineScripts","eval","exception","elementInDocument","_loadHtml","_validateApp","_validateContainerConfig","getContainerState","getContainerLocale","loadPlaceholders","addAll","appManifests","appStack","batches","callbackStack","haveManifests","req","requests","manifestRequest","completeFunc","errorFunc","item","successFunc","requestFunc","successCallback","errorCallback","completeCallback","jqxhr","removeAllApps","autoloadEls"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"f2.min.js","sources":["f2.debug.js"],"names":["exports","F2","F2_TESTING_MODE","global","factory","module","document","w","Error","window","this","noGlobal","isArraylike","obj","length","type","jQuery","isWindow","nodeType","winnow","elements","qualifier","not","isFunction","grep","elem","i","call","risSimple","test","filter","inArray","sibling","cur","dir","createOptions","options","object","optionsCache","each","match","rnotwhite","_","flag","detach","addEventListener","removeEventListener","completed","detachEvent","event","readyState","ready","dataAttr","key","data","undefined","name","replace","rmultiDash","toLowerCase","getAttribute","rbrace","parseJSON","e","isEmptyDataObject","isEmptyObject","internalData","pvt","acceptData","ret","thisCache","internalKey","expando","isNode","cache","id","deletedIds","pop","guid","toJSON","noop","extend","camelCase","internalRemoveData","isArray","concat","map","split","cleanData","support","deleteExpando","returnTrue","returnFalse","safeActiveElement","activeElement","err","createSafeFragment","list","nodeNames","safeFrag","createDocumentFragment","createElement","getAll","context","tag","elems","found","getElementsByTagName","strundefined","querySelectorAll","childNodes","nodeName","push","merge","fixDefaultChecked","rcheckableType","defaultChecked","checked","manipulationTarget","content","firstChild","appendChild","ownerDocument","disableScript","find","attr","restoreScript","rscriptTypeMasked","exec","removeAttribute","setGlobalEval","refElements","_data","cloneCopyEvent","src","dest","hasData","l","oldData","curData","events","handle","add","fixCloneNodeIssues","noCloneEvent","removeEvent","text","parentNode","outerHTML","html5Clone","innerHTML","trim","value","defaultSelected","selected","defaultValue","actualDisplay","doc","style","appendTo","body","display","getDefaultComputedStyle","css","defaultDisplay","elemdisplay","iframe","documentElement","contentWindow","contentDocument","write","close","addGetHookIf","conditionFn","hookFn","get","condition","apply","arguments","vendorPropName","capName","charAt","toUpperCase","slice","origName","cssPrefixes","showHide","show","hidden","values","index","isHidden","setPositiveNumber","subtract","matches","rnumsplit","Math","max","augmentWidthOrHeight","extra","isBorderBox","styles","val","cssExpand","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","getStyles","boxSizing","curCSS","rnumnonpx","boxSizingReliable","parseFloat","Tween","prop","end","easing","prototype","init","createFxNow","setTimeout","fxNow","now","genFx","includeWidth","which","attrs","height","opacity","width","createTween","animation","tween","collection","tweeners","defaultPrefilter","props","opts","toggle","hooks","oldfire","checkDisplay","anim","orig","dataShow","queue","_queueHooks","unqueued","empty","fire","always","overflow","overflowX","overflowY","inlineBlockNeedsLayout","zoom","shrinkWrapBlocks","rfxtypes","done","hide","_removeData","start","propFilter","specialEasing","cssHooks","expand","Animation","properties","result","stopped","animationPrefilters","deferred","Deferred","tick","currentTime","remaining","startTime","duration","temp","percent","tweens","run","notifyWith","resolveWith","promise","originalProperties","originalOptions","stop","gotoEnd","rejectWith","fx","timer","progress","complete","fail","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","jqXHR","inspect","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","target","deep","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","firstDataType","ct","finalDataType","contents","shift","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","tmp","prev","responseFields","dataFilter","state","error","buildParams","prefix","traditional","v","rbracket","createStandardXHR","XMLHttpRequest","createActiveXHR","ActiveXObject","getWindow","defaultView","parentWindow","indexOf","class2type","toString","hasOwn","hasOwnProperty","version","selector","fn","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","jquery","constructor","toArray","num","pushStack","prevObject","callback","args","first","eq","last","len","j","sort","splice","copyIsArray","copy","clone","isPlainObject","random","isReady","msg","Array","isNumeric","ownLast","globalEval","execScript","string","makeArray","arr","results","Object","second","invert","callbackInverse","callbackExpect","arg","proxy","Date","Sizzle","seed","m","groups","old","nid","newContext","newSelector","preferredDoc","setDocument","documentIsHTML","rquickExpr","getElementById","contains","getElementsByClassName","qsa","rbuggyQSA","tokenize","rescape","setAttribute","toSelector","rsibling","testContext","join","qsaError","select","createCache","keys","Expr","cacheLength","markFunction","assert","div","removeChild","addHandle","handler","attrHandle","siblingCheck","a","b","diff","sourceIndex","MAX_NEGATIVE","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","checkNonElements","doneName","xml","oldCache","outerCache","newCache","dirruns","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","classCache","tokenCache","compilerCache","sortOrder","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escaped","escapedWhitespace","high","String","fromCharCode","els","node","hasCompare","parent","top","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","specified","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","nodeIndex","useCache","lastChild","pseudo","idx","matched","has","innerText","lang","elemLang","hash","location","root","focus","hasFocus","href","tabIndex","enabled","disabled","selectedIndex","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","soFar","preFilters","cached","token","compiled","div1","unique","isXMLDoc","rneedsContext","rsingleTag","self","is","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","children","next","until","n","r","targets","closest","pos","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","reverse","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","stack","once","stopOnFalse","disable","remove","lock","locked","fireWith","tuples","then","fns","newDefer","tuple","returned","resolve","reject","notify","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","updateFunc","readyList","readyWait","holdReady","hold","wait","triggerHandler","off","frameElement","doScroll","doScrollCheck","container","cssText","noData","applet ","embed ","object ","removeData","dequeue","startLength","setter","clearQueue","count","defer","pnum","source","el","access","chainable","emptyGet","raw","bulk","fragment","leadingWhitespace","tbody","htmlSerialize","cloneNode","appendChecked","noCloneChecked","checkClone","click","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","types","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","trigger","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","srcElement","metaKey","original","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","one","origFn","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rchecked","rscriptType","rcleanScript","wrapMap","option","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","buildFragment","scripts","selection","wrap","safe","nodes","createTextNode","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","hasScripts","set","iNoClone","_evalUrl","prependTo","insertAfter","replaceAll","insert","shrinkWrapBlocksVal","rmargin","rposition","getComputedStyle","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","computeStyleTests","pixelPositionVal","boxSizingReliableVal","reliableMarginRightVal","marginRight","reliableHiddenOffsetsVal","cssFloat","backgroundClip","clearCloneStyle","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","pixelPosition","reliableMarginRight","swap","ralpha","ropacity","rdisplayswap","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","cssProps","float","$1","margin","padding","border","suffix","expanded","parts","unit","propHooks","eased","step","linear","p","swing","cos","PI","timerId","rfxnum","rrun","*","scale","maxIterations","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","for","class","notxml","tabindex","parseInt","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","rvalidtokens","JSON","parse","requireNonComma","depth","str","comma","open","Function","parseXML","DOMParser","parseFromString","async","loadXML","ajaxLocParts","ajaxLocation","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","allTypes","active","lastModified","etag","url","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","status","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","code","abort","finalText","method","crossDomain","hasContent","beforeSend","send","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","serialize","serializeArray","xhr","xhrId","xhrCallbacks","xhrSupported","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","head","scriptCharset","charset","onload","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict","Plugin","_relatedTarget","$this","Modal","DEFAULTS","element","$body","$element","$backdrop","isShown","scrollbarWidth","remote","VERSION","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","backdrop","keyboard","that","checkScrollbar","setScrollbar","escape","transition","enforceFocus","emulateTransitionEnd","hideModal","resetScrollbar","removeBackdrop","doAnimate","callbackRemove","measureScrollbar","bodyPad","clientWidth","innerWidth","scrollDiv","modal","Constructor","$target","showEvent","_events","_conf","configure","conf","delimiter","maxListeners","wildcard","newListener","listenerTree","EventEmitter","searchListenerTree","tree","leaf","branch","xTree","xxTree","isolatedBranch","endReached","listeners","typeLength","currentType","nextType","_listeners","**","growListenerTree","listener","warned","defaultMaxListeners","console","trace","setMaxListeners","many","ttl","_origin","emit","_all","ns","onAny","addListener","leafs","iLeaf","offAny","removeListener","removeAllListeners","listenersAny","EventEmitter2","process","title","decodeURIComponent","isHostMethod","property","isHostObject","o","hasFlash","undef","navigator","plugins","description","mimeTypes","enabledPlugin","flashVersion","flash","GetVariable","notSupportedException","major","minor","HAS_FLASH_THROTTLED_BUG","dom_onReady","domIsReady","domReadyQueue","whenReady","scope","getParentObject","ii","easyXDM","_easyXDM","IFRAME_PREFIX","getDomainName","reURI","getPort","getLocation","proto","domain","port","resolveUrl","reDoubleSlash","path","substring","pathname","lastIndexOf","protocol","host","reParent","appendQueryParameters","parameters","q","useHash","destination","noOverwrite","member","testForNamePropertyBug","channelId","HAS_NAME_PROPERTY_BUG","createFrame","config","frame","frameBorder","allowTransparency","onLoad","usePost","action","checkAcl","acl","re","substr","prepareTransportStack","stackEls","isHost","query","xdm_p","channel","secret","swf","product","userAgent","remoteHelper","xdm_c","xdm_s","xdm_e","useResize","useParent","usePolling","local","images","search","xdm_pa","xdm_po","HashTransport","ReliableBehavior","QueueBehavior","encode","maxLength","VerifyBehavior","initiate","PostMessageTransport","NameTransport","NixTransport","SameOriginTransport","FrameElementTransport","FlashTransport","lazy","chainStack","stackElements","stackEl","defaults","incoming","message","origin","up","outgoing","recipient","down","destroy","removeFromStack","un","floor","emptyFn","sEvent","fpNotify","pair","stringify","evalJSON","getJSONObject","DomHelper","requiresJSON","_map","Fn","del","Socket","onMessage","onReady","postMessage","Rpc","jsonRpcConfig","RpcBehavior","pub","targetOrigin","onDOMReady","sendFn","addSwf","swfContainer","swfNoThrottle","right","flashVars","destroyChannel","swfdomain","createChannel","_getOrigin","uri","_window_onMessage","callerWindow","waitForReady","referrer","_sendMessage","sendMessage","_onReady","readyCount","_onMessage","remoteOrigin","_onLoad","remoteWindow","remoteUrl","_callerWindow","_msgNr","_handleHash","_lastMsg","_remoteOrigin","_pollHash","_listenerWindow","_attachListeners","_timer","pollInterval","tries","getRef","frames","ex","idOut","idIn","currentMessage","ack","waiting","destroying","doFragment","seq","fragments","startVerification","mySecret","theirSecret","_send","jsonrpc","serializer","_createMethod","definition","_callbacks","_callbackCounter","namedParams","_executeMethod","ex1","_isNode","Node","_isElement","HTMLElement","_absolutizeURI","removeDotSegments","output","_parseURI","authority","whitespacePattern","uriPattern","hostname","appConfigReplacer","Apps","overwrite","isFunc","s4","array","isLocalRequest","urlLower","relUrlPattern","execute","isNativeDOMNode","testObject","log","replacer","space","_createHandler","fnOrNode","domNodeAppropriate","_validateToken","domNode","_containerToken","_f2Token","_validateF2Token","_filterHandlersByNamespace","newHandlers","_removeHandler","eventKey","_handlerCollection","_parseEventKey","eventParts","appCreateRoot","appRenderBefore","appDestroyBefore","appRenderAfter","appDestroyAfter","appRender","appDestroy","appScriptLoadFailed","_defaultMethods","appConfig","appHtml","appInstance","app","appId","getToken","__f2GetToken","__trigger","callbackArgs","isAppRender","AppHandlers","APP_CREATE_ROOT","APP_RENDER_BEFORE","APP_RENDER","APP_RENDER_AFTER","APP_DESTROY_BEFORE","APP_DESTROY","APP_DESTROY_AFTER","APP_SCRIPT_LOAD_FAILED","App","AppConfig","enableBatchRequests","instanceId","isSecure","containerLocale","localeSupport","manifestUrl","minGridSize","ui","views","AppManifest","apps","inlineScripts","AppContent","ContainerConfig","afterAppRender","beforeAppRender","debugMode","locale","scriptErrorTimeout","isSecureAppPage","secureAppPagePath","supportedViews","UI","Mask","backgroundColor","loadingIcon","useClasses","loadScripts","loadStyles","Css","APP","APP_CONTAINER","APP_TITLE","APP_VIEW","APP_VIEW_TRIGGER","MASK","MASK_CONTAINER","Events","APP_SYMBOL_CHANGE","APP_WIDTH_CHANGE","CONTAINER_SYMBOL_CHANGE","CONTAINER_WIDTH_CHANGE","CONTAINER_LOCALE_CHANGE","JSONP_CALLBACK","Sockets","EVENT","LOAD","RPC","RPC_CALLBACK","UI_RPC","Views","DATA_ATTRIBUTE","ABOUT","HELP","HOME","REMOVE","SETTINGS","_afterAppRender","_config","_appConfig","_html","$appContainer","Constants","_appRender","_outerHtml","_beforeAppRender","_appScriptLoadFailed","scriptInfo","_createAppConfig","_getAppConfigFromElement","hasAttribute","contextJson","warn","_hasNonTextChildNodes","hasNodes","hasChildNodes","_hydrateContainerConfig","containerConfig","_initAppEvents","elementFilter","view","removeApp","_initContainerEvents","resizeHandler","resizeTimeout","_isPlaceholderElement","_isInit","_createAppInstance","appContent","_apps","_loadApps","appConfigs","appManifest","_loadStyles","cb","stylesFragment","useCreateStyleSheet","createStyleSheet","resourceUrl","resourceKey","_loadedStyles","_loadScripts","_error","evtData","_usesAppHandlers","_appHandlerToken","_checkComplete","scriptsLoaded","scriptCount","_emptyWaitlist","errorEvt","waitlist","_loadingScripts","insertBeforeEl","readyStates","loaded","_loadedScripts","getTime","onerror","_loadInlineScripts","inlines","loadInlineScripts","eval","exception","elementInDocument","_loadHtml","_loadSecureApp","manifestScripts","manifestStyles","manifestInlines","manifestApps","$root","register","_validateApp","_validateContainerConfig","getContainerState","getContainerLocale","isInit","loadPlaceholders","registerApps","appManifests","appStack","batches","callbackStack","haveManifests","req","requests","manifestRequest","completeFunc","errorFunc","item","successFunc","requestFunc","successCallback","errorCallback","completeCallback","jqxhr","removeAllApps","_socketEmit","broadcast","timesToListen","_createAppToContainerSocket","isLoaded","messagePlayback","socket","_rSocketLoad","appParts","_createContainerToAppSocket","iframeProps","scrolling","_secureAppPagePath","_createRpcCallback","callbackId","parseFunction","functionName","parseMessage","regEx","rawMessage","callbacks","c","_rUiCall","_rRpc","_rRpcCallback","_rEvents","_registerCallback","messageType","cid","isRemote","appExists","appIsSecure","noFrameAccess","UIClass","_updateHeight","outerHeight","_modalHtml","showCancel","hideMask","Modals","_renderAlert","_renderConfirm","alert","confirm","okCallback","cancelCallback","setTitle","showMask","showLoader","updateHeight","_isValid","eventsPattern","_containerConfig","showLoading","mask","background-color","background-image","background-position","background-repeat","min-height","z-index","autoloadEls","addAll"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/f2.no-third-party.js b/dist/f2.no-third-party.js
index a1ad6b5a..3561f506 100644
--- a/dist/f2.no-third-party.js
+++ b/dist/f2.no-third-party.js
@@ -32,3758 +32,3629 @@
return;
}
-var F2;
-
/**
- * Open F2
- * @module f2
- * @main f2
- */
-F2 = (function() {
-
- /**
- * Abosolutizes a relative URL
- * @method _absolutizeURI
- * @private
- * @param {e.g., location.href} base
- * @param {URL to absolutize} href
- * @returns {string} URL
- * Source: https://gist.github.com/Yaffle/1088850
- * Tests: http://skew.org/uri/uri_tests.html
- */
- var _absolutizeURI = function(base, href) {// RFC 3986
-
- function removeDotSegments(input) {
- var output = [];
- input.replace(/^(\.\.?(\/|$))+/, '')
- .replace(/\/(\.(\/|$))+/g, '/')
- .replace(/\/\.\.$/, '/../')
- .replace(/\/?[^\/]*/g, function (p) {
- if (p === '/..') {
- output.pop();
- } else {
- output.push(p);
- }
- });
- return output.join('').replace(/^\//, input.charAt(0) === '/' ? '/' : '');
- }
-
- href = _parseURI(href || '');
- base = _parseURI(base || '');
-
- return !href || !base ? null : (href.protocol || base.protocol) +
- (href.protocol || href.authority ? href.authority : base.authority) +
- removeDotSegments(href.protocol || href.authority || href.pathname.charAt(0) === '/' ? href.pathname : (href.pathname ? ((base.authority && !base.pathname ? '/' : '') + base.pathname.slice(0, base.pathname.lastIndexOf('/') + 1) + href.pathname) : base.pathname)) +
- (href.protocol || href.authority || href.pathname ? href.search : (href.search || base.search)) +
- href.hash;
- };
-
- /**
- * Parses URI
- * @method _parseURI
- * @private
- * @param {The URL to parse} url
- * @returns {Parsed URL} string
- * Source: https://gist.github.com/Yaffle/1088850
- * Tests: http://skew.org/uri/uri_tests.html
- */
- var _parseURI = function(url) {
- var m = String(url).replace(/^\s+|\s+$/g, '').match(/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);
- // authority = '//' + user + ':' + pass '@' + hostname + ':' port
- return (m ? {
- href : m[0] || '',
- protocol : m[1] || '',
- authority: m[2] || '',
- host : m[3] || '',
- hostname : m[4] || '',
- port : m[5] || '',
- pathname : m[6] || '',
- search : m[7] || '',
- hash : m[8] || ''
- } : null);
- };
-
- return {
- /**
- * A function to pass into F2.stringify which will prevent circular
- * reference errors when serializing objects
- * @method appConfigReplacer
- */
- appConfigReplacer: function(key, value) {
- if (key == 'root' || key == 'ui' || key == 'height') {
- return undefined;
- } else {
- return value;
- }
- },
- /**
- * The apps namespace is a place for app developers to put the javascript
- * class that is used to initialize their app. The javascript classes should
- * be namepaced with the {{#crossLink "F2.AppConfig"}}{{/crossLink}}.appId.
- * It is recommended that the code be placed in a closure to help keep the
- * global namespace clean.
- *
- * If the class has an 'init' function, that function will be called
- * automatically by F2.
- * @property Apps
- * @type object
- * @example
- * F2.Apps["com_example_helloworld"] = (function() {
- * var App_Class = function(appConfig, appContent, root) {
- * this._app = appConfig; // the F2.AppConfig object
- * this._appContent = appContent // the F2.AppManifest.AppContent object
- * this.$root = $(root); // the root DOM Element that contains this app
- * }
- *
- * App_Class.prototype.init = function() {
- * // perform init actions
- * }
- *
- * return App_Class;
- * })();
- * @example
- * F2.Apps["com_example_helloworld"] = function(appConfig, appContent, root) {
- * return {
- * init:function() {
- * // perform init actions
- * }
- * };
- * };
- * @for F2
- */
- Apps: {},
- /**
- * Creates a namespace on F2 and copies the contents of an object into
- * that namespace optionally overwriting existing properties.
- * @method extend
- * @param {string} ns The namespace to create. Pass a falsy value to
- * add properties to the F2 namespace directly.
- * @param {object} obj The object to copy into the namespace.
- * @param {bool} overwrite True if object properties should be overwritten
- * @return {object} The created object
- */
- extend: function (ns, obj, overwrite) {
- var isFunc = typeof obj === 'function';
- var parts = ns ? ns.split('.') : [];
- var parent = this;
- obj = obj || {};
-
- // ignore leading global
- if (parts[0] === 'F2') {
- parts = parts.slice(1);
- }
-
- // create namespaces
- for (var i = 0, len = parts.length; i < len; i++) {
- if (!parent[parts[i]]) {
- parent[parts[i]] = isFunc && i + 1 == len ? obj : {};
- }
- parent = parent[parts[i]];
- }
-
- // copy object into namespace
- if (!isFunc) {
- for (var prop in obj) {
- if (typeof parent[prop] === 'undefined' || overwrite) {
- parent[prop] = obj[prop];
- }
- }
- }
-
- return parent;
- },
- /**
- * Generates a somewhat random id
- * @method guid
- * @return {string} A random id
- * @for F2
- */
- guid: function() {
- var S4 = function() {
- return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
- };
- return (S4()+S4()+'-'+S4()+'-'+S4()+'-'+S4()+'-'+S4()+S4()+S4());
- },
- /**
- * Search for a value within an array.
- * @method inArray
- * @param {object} value The value to search for
- * @param {Array} array The array to search
- * @return {bool} True if the item is in the array
- */
- inArray: function(value, array) {
- return jQuery.inArray(value, array) > -1;
- },
- /**
- * Tests a URL to see if it's on the same domain (local) or not
- * @method isLocalRequest
- * @param {URL to test} url
- * @returns {bool} Whether the URL is local or not
- * Derived from: https://github.com/jquery/jquery/blob/master/src/ajax.js
- */
- isLocalRequest: function(url){
- var rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
- urlLower = url.toLowerCase(),
- parts = rurl.exec( urlLower ),
- ajaxLocation,
- ajaxLocParts;
-
- try {
- ajaxLocation = location.href;
- } catch( e ) {
- // Use the href attribute of an A element
- // since IE will modify it given document.location
- ajaxLocation = document.createElement('a');
- ajaxLocation.href = '';
- ajaxLocation = ajaxLocation.href;
- }
-
- ajaxLocation = ajaxLocation.toLowerCase();
-
- // uh oh, the url must be relative
- // make it fully qualified and re-regex url
- if (!parts){
- urlLower = _absolutizeURI(ajaxLocation,urlLower).toLowerCase();
- parts = rurl.exec( urlLower );
- }
-
- // Segment location into parts
- ajaxLocParts = rurl.exec( ajaxLocation ) || [];
-
- // do hostname and protocol and port of manifest URL match location.href? (a "local" request on the same domain)
- var matched = !(parts &&
- (parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
- (parts[ 3 ] || (parts[ 1 ] === 'http:' ? '80' : '443')) !==
- (ajaxLocParts[ 3 ] || (ajaxLocParts[ 1 ] === 'http:' ? '80' : '443'))));
-
- return matched;
- },
- /**
- * Utility method to determine whether or not the argument passed in is or is not a native dom node.
- * @method isNativeDOMNode
- * @param {object} testObject The object you want to check as native dom node.
- * @return {bool} Returns true if the object passed is a native dom node.
- */
- isNativeDOMNode: function(testObject) {
- var bIsNode = (
- typeof Node === 'object' ? testObject instanceof Node :
- testObject && typeof testObject === 'object' && typeof testObject.nodeType === 'number' && typeof testObject.nodeName === 'string'
- );
-
- var bIsElement = (
- typeof HTMLElement === 'object' ? testObject instanceof HTMLElement : //DOM2
- testObject && typeof testObject === 'object' && testObject.nodeType === 1 && typeof testObject.nodeName === 'string'
- );
-
- return (bIsNode || bIsElement);
- },
- /**
- * A utility logging function to write messages or objects to the browser console. This is a proxy for the [`console` API](https://developers.google.com/chrome-developer-tools/docs/console).
- * @method log
- * @param {object|string} Object/Method An object to be logged _or_ a `console` API method name, such as `warn` or `error`. All of the console method names are [detailed in the Chrome docs](https://developers.google.com/chrome-developer-tools/docs/console-api).
- * @param {object} [obj2]* An object to be logged
- * @example
- * // Pass any value (string, int, array, object, bool).
- * F2.log('foo');
- * F2.log([1, 2, 3]);
- * @example
- * // Use a console method name as the first argument.
- * F2.log('error', err);
- * F2.log('info', 'The session ID is ' + sessionId);
- */
- log: function() {
- if (!window.console) {
- return;
- }
-
- var method = 'log';
- var args = Array.prototype.slice.apply(arguments);
-
- if (args.length > 1 && args[0] in window.console) {
- method = args.shift();
- }
-
- if (window.console[method]) {
- window.console[method].apply(window.console, args);
- }
- },
- /**
- * Wrapper to convert a JSON string to an object
- * @method parse
- * @param {string} str The JSON string to convert
- * @return {object} The parsed object
- */
- parse: function(str) {
- return JSON.parse(str);
- },
- /**
- * Wrapper to convert an object to JSON
- *
- * **Note: When using F2.stringify on an F2.AppConfig object, it is
- * recommended to pass F2.appConfigReplacer as the replacer function in
- * order to prevent circular serialization errors.**
- * @method stringify
- * @param {object} value The object to convert
- * @param {function|Array} replacer An optional parameter that determines
- * how object values are stringified for objects. It can be a function or an
- * array of strings.
- * @param {int|string} space An optional parameter that specifies the
- * indentation of nested structures. If it is omitted, the text will be
- * packed without extra whitespace. If it is a number, it will specify the
- * number of spaces to indent at each level. If it is a string (such as '\t'
- * or ' '), it contains the characters used to indent at each level.
- * @return {string} The JSON string
- */
- stringify: function(value, replacer, space) {
- return JSON.stringify(value, replacer, space);
- },
- /**
- * Function to get the F2 version number
- * @method version
- * @return {string} F2 version number
- */
- version: function() { return '1.4.0'; }
- };
+ Open F2
+ @module f2
+ @main f2
+*/
+var F2 = (function() {
+ /**
+ Test whether a value is a native Node
+ @method _isNode
+ @private
+ @param {object} test Any value to test
+ @returns {boolean} True if Node
+ */
+ function _isNode(test) {
+ if (typeof Node === 'object') {
+ return test instanceof Node;
+ }
+
+ return test && typeof test === 'object' && typeof test.nodeType === 'number' && typeof test.nodeName === 'string';
+ }
+
+ /**
+ Test whether a value is a native Element
+ @method _isElement
+ @private
+ @param {object} test Any value to test
+ @returns {boolean} True if Element
+ */
+ function _isElement(test) {
+ if (typeof HTMLElement === 'object') {
+ return test instanceof HTMLElement;
+ }
+
+ return test && typeof test === 'object' && test.nodeType === 1 && typeof test.nodeName === 'string';
+ }
+
+ /**
+ Abosolutizes a relative URL
+ @method _absolutizeURI
+ @private
+ @param {string} base The base domain
+ @param {strong} href The relative url to make absolute
+ @returns {string} URL
+ Source: https://gist.github.com/Yaffle/1088850
+ Tests: http://skew.org/uri/uri_tests.html
+ */
+ function _absolutizeURI(base, href) { // RFC 3986
+ function removeDotSegments(input) {
+ var output = [];
+ input.replace(/^(\.\.?(\/|$))+/, '')
+ .replace(/\/(\.(\/|$))+/g, '/')
+ .replace(/\/\.\.$/, '/../')
+ .replace(/\/?[^\/]*/g, function(p) {
+ if (p === '/..') {
+ output.pop();
+ } else {
+ output.push(p);
+ }
+ });
+ return output.join('').replace(/^\//, input.charAt(0) === '/' ? '/' : '');
+ }
+
+ href = _parseURI(href || '');
+ base = _parseURI(base || '');
+
+ return !href || !base ? null : (href.protocol || base.protocol) +
+ (href.protocol || href.authority ? href.authority : base.authority) +
+ removeDotSegments(href.protocol || href.authority || href.pathname.charAt(0) === '/' ? href.pathname : (href.pathname ? ((base.authority && !base.pathname ? '/' : '') + base.pathname.slice(0, base.pathname.lastIndexOf('/') + 1) + href.pathname) : base.pathname)) +
+ (href.protocol || href.authority || href.pathname ? href.search : (href.search || base.search)) +
+ href.hash;
+ }
+
+ /**
+ Parses URI into its component parts
+ @private
+ @method _parseURI
+ @param {string} url The url to be parsed
+ @returns {object} The parts of the url
+ Source: https://gist.github.com/Yaffle/1088850
+ Tests: http://skew.org/uri/uri_tests.html
+ */
+ function _parseURI(url) {
+ var whitespacePattern = /^\s+|\s+$/g;
+ var uriPattern = /^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/;
+ var match = String(url).replace(whitespacePattern, '').match(uriPattern);
+
+ if (match) {
+ return {
+ href: match[0] || '',
+ protocol: match[1] || '',
+ authority: match[2] || '',
+ host: match[3] || '',
+ hostname: match[4] || '',
+ port: match[5] || '',
+ pathname: match[6] || '',
+ search: match[7] || '',
+ hash: match[8] || ''
+ };
+ }
+ }
+
+ return {
+ /**
+ A function to pass into F2.stringify which will prevent circular
+ reference errors when serializing objects
+ @method appConfigReplacer
+ @param {string} key The key being examined
+ @param {*} value The value being examined
+ @returns {*} Returns the original allowed value or undefined
+ */
+ appConfigReplacer: function(key, value) {
+ if (key === 'root' || key === 'ui' || key === 'height') {
+ return undefined;
+ } else {
+ return value;
+ }
+ },
+ /**
+ The apps namespace is a place for app developers to put the javascript
+ class that is used to initialize their app. The javascript classes should
+ be namepaced with the {{#crossLink "F2.AppConfig"}}{{/crossLink}}.appId.
+ It is recommended that the code be placed in a closure to help keep the
+ global namespace clean.
+ If the class has an 'init' function, that function will be called
+ automatically by F2.
+ @property Apps
+ @type object
+ @for F2
+ @example
+ F2.Apps['com_example_helloworld'] = (function() {
+ var App_Class = function(appConfig, appContent, root) {
+ this._app = appConfig; // the F2.AppConfig object
+ this._appContent = appContent // the F2.AppManifest.AppContent object
+ this.$root = $(root); // the root DOM Element that contains this app
+ }
+
+ App_Class.prototype.init = function() {
+ // perform init actions
+ }
+
+ return App_Class;
+ })();
+ @example
+ F2.Apps['com_example_helloworld'] = function(appConfig, appContent, root) {
+ return {
+ init: function() {
+ // Perform init actions
+ }
+ };
+ };
+ */
+ Apps: {},
+ /**
+ Creates a namespace on F2 and copies the contents of an object into that
+ namespace optionally overwriting existing properties.
+ @method extend
+ @param {string} ns The namespace to create. Pass a falsy value to
+ add properties to the F2 namespace directly.
+ @param {object} obj The object to copy into the namespace.
+ @param {bool} overwrite True if object properties should be overwritten
+ @return {object} The created object
+ */
+ extend: function(ns, obj, overwrite) {
+ var isFunc = typeof obj === 'function';
+ var parts = ns ? ns.split('.') : [];
+ var parent = this;
+ obj = obj || {};
+
+ // Ignore leading global
+ if (parts[0] === 'F2') {
+ parts = parts.slice(1);
+ }
+
+ // Create namespaces
+ for (var i = 0, len = parts.length; i < len; i++) {
+ if (!parent[parts[i]]) {
+ parent[parts[i]] = isFunc && (i + 1 === len) ? obj : {};
+ }
+ parent = parent[parts[i]];
+ }
+
+ // Copy object into namespace
+ if (!isFunc) {
+ for (var prop in obj) {
+ if (parent[prop] === undefined || overwrite) {
+ parent[prop] = obj[prop];
+ }
+ }
+ }
+
+ return parent;
+ },
+ /**
+ Generates a somewhat random id
+ @method guid
+ @return {string} A random id
+ @for F2
+ */
+ guid: function() {
+ function s4() {
+ return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
+ }
+ return (s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4());
+ },
+ /**
+ Search for a value within an array.
+ @method inArray
+ @param {object} value The value to search for
+ @param {Array} array The array to search
+ @return {bool} True if the item is in the array
+ */
+ inArray: function(value, array) {
+ return jQuery.inArray(value, array) > -1;
+ },
+ /**
+ Tests a URL to see if it's on the same domain (local) or not
+ @method isLocalRequest
+ @param {string} url The url to test
+ @returns {bool} Whether the URL is local or not
+ Derived from: https://github.com/jquery/jquery/blob/master/src/ajax.js
+ */
+ isLocalRequest: function(url) {
+ var urlLower = url.toLowerCase();
+ var relUrlPattern = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/;
+ var parts = relUrlPattern.execute(urlLower);
+ var ajaxLocation;
+ var ajaxLocParts;
+
+ try {
+ ajaxLocation = location.href;
+ } catch ( e ) {
+ // Use the href of an anchor since IE account for document.location
+ ajaxLocation = document.createElement('a');
+ ajaxLocation.href = '';
+ ajaxLocation = ajaxLocation.href;
+ }
+
+ ajaxLocation = ajaxLocation.toLowerCase();
+
+ // The url is relative, so we'll fully qualify it and re-regex
+ if (!parts) {
+ urlLower = _absolutizeURI(ajaxLocation, urlLower).toLowerCase();
+ parts = relUrlPattern.exec(urlLower);
+ }
+
+ // Segment location into parts
+ ajaxLocParts = relUrlPattern.exec(ajaxLocation) || [];
+
+ // Do hostname and protocol and port of manifest URL match location.href?
+ var matched = !(parts &&
+ (parts[1] !== ajaxLocParts[1] || parts[2] !== ajaxLocParts[2] ||
+ (parts[3] || (parts[1] === 'http:' ? '80' : '443')) !==
+ (ajaxLocParts[3] || (ajaxLocParts[1] === 'http:' ? '80' : '443'))));
+
+ return matched;
+ },
+ /**
+ Utility method to determine whether or not the argument passed in is or
+ is not a native DOM node.
+ @method isNativeDOMNode
+ @param {object} testObject The object you want to check as native DOM
+ node.
+ @return {bool} Returns true if the object passed is a native DOM node.
+ */
+ isNativeDOMNode: function(testObject) {
+ return _isNode(testObject) || _isElement(testObject);
+ },
+ /**
+ A utility logging function to write messages or objects to the browser
+ console. This is a proxy for the [`console` API](https://developers.google.com/chrome-developer-tools/docs/console).
+ @method log
+ @param {object|string} Object/Method An object to be logged _or_ a
+ `console` API method name, such as `warn` or `error`. All of the console
+ method names are [detailed in the Chrome docs](https://developers.google.com/chrome-developer-tools/docs/console-api).
+ @param {object} [obj2]* An object to be logged
+ @example
+ Pass any value (string, int, array, object, bool).
+ F2.log('foo');
+ F2.log([1, 2, 3]);
+ @example
+ Use a console method name as the first argument.
+ F2.log('error', err);
+ F2.log('info', 'The session ID is ' + sessionId);
+ */
+ log: function() {
+ if (!window.console) {
+ return;
+ }
+
+ var method = 'log';
+ var args = Array.prototype.slice.apply(arguments);
+
+ if (args.length > 1 && args[0] in window.console) {
+ method = args.shift();
+ }
+
+ if (window.console[method]) {
+ window.console[method].apply(window.console, args);
+ }
+ },
+ /**
+ Wrapper to convert a JSON string to an object
+ @method parse
+ @param {string} str The JSON string to convert
+ @return {object} The parsed object
+ */
+ parse: function(str) {
+ return JSON.parse(str);
+ },
+ /**
+ Wrapper to convert an object to JSON
+ **Note: When using F2.stringify on an F2.AppConfig object, it is
+ recommended to pass F2.appConfigReplacer as the replacer function in
+ order to prevent circular serialization errors.**
+ @method stringify
+ @param {object} value The object to convert
+ @param {function|Array} replacer An optional parameter that determines
+ how object values are stringified for objects. It can be a function or an
+ array of strings.
+ @param {int|string} space An optional parameter that specifies the
+ indentation of nested structures. If it is omitted, the text will be
+ packed without extra whitespace. If it is a number, it will specify the
+ number of spaces to indent at each level. If it is a string (such as '\t'
+ or ' '), it contains the characters used to indent at each level.
+ @return {string} The JSON string
+ */
+ stringify: function(value, replacer, space) {
+ return JSON.stringify(value, replacer, space);
+ },
+ /**
+ Function to get the F2 version number
+ @method version
+ @return {string} F2 version number
+ */
+ version: function() {
+ return '1.4.0';
+ }
+ };
})();
/**
- * The new `AppHandlers` functionality provides Container Developers a higher level of control over configuring app rendering and interaction.
- *
- *
- *The addition of `F2.AppHandlers` replaces the previous {{#crossLink "F2.ContainerConfig"}}{{/crossLink}} properties `beforeAppRender`, `appRender`, and `afterAppRender`. These methods were deprecated—but not removed—in version 1.2. They will be permanently removed in a future version of F2.
- *
- *
- *
- *Starting with F2 version 1.2, `AppHandlers` is the preferred method for Container Developers to manage app layout.
- *
- *
- * ### Order of Execution
- *
- * **App Rendering**
- *
- * 0. {{#crossLink "F2/registerApps"}}F2.registerApps(){{/crossLink}} method is called by the Container Developer and the following methods are run for *each* {{#crossLink "F2.AppConfig"}}{{/crossLink}} passed.
- * 1. **'appCreateRoot'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_CREATE\_ROOT*) handlers are fired in the order they were attached.
- * 2. **'appRenderBefore'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER\_BEFORE*) handlers are fired in the order they were attached.
- * 3. Each app's `manifestUrl` is requested asynchronously; on success the following methods are fired.
- * 3. **'appRender'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER*) handlers are fired in the order they were attached.
- * 4. **'appRenderAfter'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER\_AFTER*) handlers are fired in the order they were attached.
- *
- *
- * **App Removal**
+ The new `AppHandlers` functionality provides Container Developers a higher
+ level of control over configuring app rendering and interaction.
- * 0. {{#crossLink "F2/removeApp"}}F2.removeApp(){{/crossLink}} with a specific {{#crossLink "F2.AppConfig/instanceId "}}{{/crossLink}} or {{#crossLink "F2/removeAllApps"}}F2.removeAllApps(){{/crossLink}} method is called by the Container Developer and the following methods are run.
- * 1. **'appDestroyBefore'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_BEFORE*) handlers are fired in the order they were attached.
- * 2. **'appDestroy'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY*) handlers are fired in the order they were attached.
- * 3. **'appDestroyAfter'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_AFTER*) handlers are fired in the order they were attached.
- *
- * **Error Handling**
+
+ The addition of `F2.AppHandlers` replaces the previous {{#crossLink "F2.ContainerConfig"}}{{/crossLink}} properties `beforeAppRender`, `appRender`, and `afterAppRender`. These methods were deprecated—but not removed—in version 1.2. They will be permanently removed in a future version of F2.
+
- * 0. **'appScriptLoadFailed'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_SCRIPT\_LOAD\_FAILED*) handlers are fired in the order they were attached.
- *
- * @class F2.AppHandlers
- */
-F2.extend('AppHandlers', (function() {
+
+ Starting with F2 version 1.2, `AppHandlers` is the preferred method for
+ Container Developers to manage app layout.
+
- // The hidden token that we will check against every time someone tries to add, remove, fire handler
- var _containerToken = F2.guid();
- var _f2Token = F2.guid();
-
- var _handlerCollection = {
- appCreateRoot: [],
- appRenderBefore: [],
- appDestroyBefore: [],
- appRenderAfter: [],
- appDestroyAfter: [],
- appRender: [],
- appDestroy: [],
- appScriptLoadFailed: []
- };
-
- var _defaultMethods = {
- appRender: function(appConfig, appHtml) {
- // If no app root is defined use the app's outer most node
- if (F2.isNativeDOMNode(appConfig.root)) {
- jQuery(appConfig.root).append(appHtml);
- } else {
- appConfig.root = jQuery(appHtml).get(0);
- }
+ ### Order of Execution
- document.body.appendChild(appConfig.root);
- },
- appDestroy: function(appInstance) {
- if (appInstance.app && appInstance.app.destroy) {
- if (typeof appInstance.app.destroy === 'function') {
- appInstance.app.destroy();
- } else {
- F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
- }
- }
+ **App Rendering**
- jQuery(appInstance.config.root).fadeOut(500, function() {
- jQuery(this).remove();
- });
- }
- };
+ 0. {{#crossLink "F2/registerApps"}}F2.registerApps(){{/crossLink}} method is called by the Container Developer and the following methods are run for *each* {{#crossLink "F2.AppConfig"}}{{/crossLink}} passed.
+ 1. **'appCreateRoot'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_CREATE\_ROOT*) handlers are fired in the order they were attached.
+ 2. **'appRenderBefore'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER\_BEFORE*) handlers are fired in the order they were attached.
+ 3. Each app's `manifestUrl` is requested asynchronously; on success the following methods are fired.
+ 3. **'appRender'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER*) handlers are fired in the order they were attached.
+ 4. **'appRenderAfter'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_RENDER\_AFTER*) handlers are fired in the order they were attached.
- function _createHandler(token, namespace, fnOrNode, domNodeAppropriate) {
- _validateToken(token);
+ **App Removal**
- var handler = {
- domNode: null,
- func: null,
- namespace: namespace
- };
+ 0. {{#crossLink "F2/removeApp"}}F2.removeApp(){{/crossLink}} with a specific {{#crossLink "F2.AppConfig/instanceId "}}{{/crossLink}} or {{#crossLink "F2/removeAllApps"}}F2.removeAllApps(){{/crossLink}} method is called by the Container Developer and the following methods are run.
+ 1. **'appDestroyBefore'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_BEFORE*) handlers are fired in the order they were attached.
+ 2. **'appDestroy'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY*) handlers are fired in the order they were attached.
+ 3. **'appDestroyAfter'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_DESTROY\_AFTER*) handlers are fired in the order they were attached.
- if (F2.isNativeDOMNode(fnOrNode)) {
- handler.domNode = fnOrNode;
- } else if (typeof fnOrNode === 'function') {
- handler.func = fnOrNode;
- }
+ **Error Handling**
- if (!handler.func && !handler.domNode) {
- throw new Error('Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.');
- }
-
- if (handler.domNode && !domNodeAppropriate) {
- throw new Error('Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.');
- }
-
- return handler;
- }
-
- // Token must match F2 or container
- function _validateToken(token) {
- if (_containerToken !== token && _f2Token !== token) {
- throw new Error('Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().');
- }
- }
-
- // Token must match F2
- function _validateF2Token(token) {
- if (token != _f2Token) {
- throw new Error('Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().');
- }
- }
-
- function _filterHandlersByNamespace(handlers, namespace) {
- var newHandlers = handlers.slice();
-
- for (var i = newHandlers.length; i >= 0; i--) {
- if (!newHandlers[i] || (newHandlers[i].namespace && newHandlers[i].namespace.toLowerCase() === namespace)) {
- newHandlers.splice(i, 1);
- }
- }
-
- return newHandlers;
- }
-
- function _removeHandler(token, eventKey, namespace) {
- _validateToken(token);
-
- if (namespace) {
- namespace = namespace.toLowerCase();
-
- if (eventKey && eventKey in _handlerCollection) {
- _handlerCollection[eventKey] = _filterHandlersByNamespace(_handlerCollection[eventKey], namespace);
- } else {
- for (var key in _handlerCollection) {
- _removeHandler(token, key, namespace);
- }
- }
- } else if (eventKey) {
- _handlerCollection[eventKey] = [];
- }
- }
-
- function _parseEventKey(eventKey) {
- var namespace = '';
-
- if (eventKey.indexOf('.') !== -1) {
- var eventParts = eventKey.split('.');
- eventKey = eventParts[0];
- namespace = eventParts[1];
- }
-
- return {
- key: eventKey,
- namespace: namespace
- };
- }
-
- return {
- /**
- * Allows Container Developer to retrieve a unique token which must be
- * passed to all `on` and `off` methods. This function will self destruct
- * and can only be called one time. Container Developers must store the
- * return value inside of a closure.
- * @method getToken
- */
- getToken: function() {
- /**
- * Delete this method for security that way only the container has
- * access to the token 1 time. Kind of Ethan Hunt-ish, this message will
- * self-destruct immediately.
- */
- delete this.getToken;
- return _containerToken;
- },
- /**
- * Allows F2 to get a token internally. Token is required to call
- * {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}}. This
- * function will self destruct to eliminate other sources from using the
- * {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}} and
- * additional internal methods.
- * @method __f2GetToken
- * @private
- */
- __f2GetToken: function() {
- /**
- * Delete this method for security that way only the container has
- * access to the token 1 time. Kind of Ethan Hunt-ish, this message will
- * self-destruct immediately.
- */
- delete this.__f2GetToken;
- return _f2Token;
- },
- /**
- * Allows F2 to trigger specific events internally.
- * @method __trigger
- * @private
- * @chainable
- * @param {String} token The token received from {{#crossLink "F2.AppHandlers/\_\_f2GetToken:method"}}{{/crossLink}}.
- * @param {String} eventKey The event to fire. The complete list of event
- * keys is available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- */
- __trigger: function(token, eventKey) {
- _validateF2Token(token);
-
- if (!_handlerCollection[eventKey]) {
- throw new Error('Invalid EventKey passed. Check your inputs and try again.');
- }
-
- var callbackArgs = Array.prototype.slice.call(arguments, 2);
-
- if (!_handlerCollection[eventKey].length && _defaultMethods[eventKey]) {
- _defaultMethods[eventKey].apply(F2, callbackArgs);
- } else {
- for (var i = 0; i < _handlerCollection[eventKey].length; i++) {
- var handler = _handlerCollection[eventKey][i];
-
- // Check for appRender
- if (handler.domNode && arguments.length >= 4) {
- var appConfig = arguments[2];
- var appHtml = arguments[3];
-
- if (appConfig.root) {
- jQuery(appConfig.root).append(appHtml);
- } else {
- appConfig.root = jQuery(appHtml).get(0);
- }
-
- jQuery(handler.domNode).append(appConfig.root);
- } else {
- handler.func.apply(F2, callbackArgs);
- }
- }
- }
-
- return this;
- },
- /**
- * Allows Container Developer to add listener method that will be triggered
- * when a specific event occurs.
- * @method on
- * @chainable
- * @param {String} token The token received from
- * {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
- * @param {String} eventKey{.namespace} The event key used to determine
- * which event to attach the listener to. The namespace is useful for
- * removal purposes. At this time it does not affect when an event is fired.
- * Complete list of event keys available in
- * {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @param {Function|Element} listener A function that will be triggered
- * when a specific event occurs. Optionally, a specific DOM element to
- * which the app will be appended can be passed. For detailed argument
- * definition refer to
- * {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * 'appRenderBefore',
- * function() {
- * F2.log('before app rendered!');
- * }
- * );
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * 'appRenderBefore.myNamespace',
- * function() {
- * F2.log('before app rendered!');
- * }
- * );
- */
- on: function(token, eventKey, listener) {
- if (!eventKey) {
- throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
- }
-
- var event = _parseEventKey(eventKey);
+ 0. **'appScriptLoadFailed'** (*{{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.APP\_SCRIPT\_LOAD\_FAILED*) handlers are fired in the order they were attached.
- if (!_handlerCollection[event.key]) {
- throw new Error('Invalid eventKey passed. Check your inputs and try again.');
- }
-
- var isAppRender = (event.key === 'appRender');
- var handler = _createHandler(token, event.namespace, listener, isAppRender);
- _handlerCollection[event.key].push(handler);
-
- return this;
- },
- /**
- * Allows Container Developer to remove listener methods for specific events
- * @method off
- * @chainable
- * @param {String} token The token received from {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
- * @param {String} eventKey{.namespace} The event key used to determine
- * which event to attach the listener to. If no namespace is provided all
- * listeners for the specified event type will be removed. Complete list
- * available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.off(token, 'appRenderBefore');
- */
- off: function(token, eventKey) {
- if (!eventKey) {
- throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
- }
-
- var event = _parseEventKey(eventKey);
-
- if (!_handlerCollection[event.key]) {
- throw new Error('Invalid EventKey passed. Check your inputs and try again.');
- }
-
- _removeHandler(token, event.key, event.namespace);
+ @class F2.AppHandlers
+*/
+F2.extend('AppHandlers', (function() {
- return this;
- }
- };
+ // Token used when adding, removing, or triggering handlers
+ var _containerToken = F2.guid();
+ var _f2Token = F2.guid();
+
+ var _handlerCollection = {
+ appCreateRoot: [],
+ appRenderBefore: [],
+ appDestroyBefore: [],
+ appRenderAfter: [],
+ appDestroyAfter: [],
+ appRender: [],
+ appDestroy: [],
+ appScriptLoadFailed: []
+ };
+
+ var _defaultMethods = {
+ appRender: function(appConfig, appHtml) {
+ // If no app root is defined use the app's outer most node
+ if (F2.isNativeDOMNode(appConfig.root)) {
+ jQuery(appConfig.root).append(appHtml);
+ } else {
+ appConfig.root = jQuery(appHtml).get(0);
+ }
+
+ document.body.appendChild(appConfig.root);
+ },
+ appDestroy: function(appInstance) {
+ if (appInstance.app && appInstance.app.destroy) {
+ if (typeof appInstance.app.destroy === 'function') {
+ appInstance.app.destroy();
+ } else {
+ F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
+ }
+ }
+
+ jQuery(appInstance.config.root).fadeOut(500, function() {
+ jQuery(this).remove();
+ });
+ }
+ };
+
+ function _createHandler(token, namespace, fnOrNode, domNodeAppropriate) {
+ _validateToken(token);
+
+ var handler = {
+ domNode: null,
+ func: null,
+ namespace: namespace
+ };
+
+ if (F2.isNativeDOMNode(fnOrNode)) {
+ handler.domNode = fnOrNode;
+ } else if (typeof fnOrNode === 'function') {
+ handler.func = fnOrNode;
+ }
+
+ if (!handler.func && !handler.domNode) {
+ throw new Error('Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.');
+ }
+
+ if (handler.domNode && !domNodeAppropriate) {
+ throw new Error('Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.');
+ }
+
+ return handler;
+ }
+
+ // Token must match F2 or container
+ function _validateToken(token) {
+ if (_containerToken !== token && _f2Token !== token) {
+ throw new Error('Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().');
+ }
+ }
+
+ // Token must match F2
+ function _validateF2Token(token) {
+ if (token !== _f2Token) {
+ throw new Error('Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().');
+ }
+ }
+
+ function _filterHandlersByNamespace(handlers, namespace) {
+ var newHandlers = handlers.slice();
+
+ for (var i = newHandlers.length; i >= 0; i--) {
+ if (!newHandlers[i] || (newHandlers[i].namespace && newHandlers[i].namespace.toLowerCase() === namespace)) {
+ newHandlers.splice(i, 1);
+ }
+ }
+
+ return newHandlers;
+ }
+
+ function _removeHandler(token, eventKey, namespace) {
+ _validateToken(token);
+
+ if (namespace) {
+ namespace = namespace.toLowerCase();
+
+ if (eventKey && eventKey in _handlerCollection) {
+ _handlerCollection[eventKey] = _filterHandlersByNamespace(_handlerCollection[eventKey], namespace);
+ } else {
+ for (var key in _handlerCollection) {
+ _removeHandler(token, key, namespace);
+ }
+ }
+ } else if (eventKey) {
+ _handlerCollection[eventKey] = [];
+ }
+ }
+
+ function _parseEventKey(eventKey) {
+ var namespace = '';
+
+ if (eventKey.indexOf('.') !== -1) {
+ var eventParts = eventKey.split('.');
+ eventKey = eventParts[0];
+ namespace = eventParts[1];
+ }
+
+ return {
+ key: eventKey,
+ namespace: namespace
+ };
+ }
+
+ return {
+ /**
+ Allows Container Developer to retrieve a unique token which must be
+ passed to all `on` and `off` methods. This function will self destruct
+ and can only be called one time. Container Developers must store the
+ return value inside of a closure.
+ @method getToken
+ @returns {string} A one-time container token
+ */
+ getToken: function() {
+ /**
+ Delete this method for security that way only the container has
+ access to the token 1 time. Kind of Ethan Hunt-ish, this message will
+ self-destruct immediately.
+ */
+ delete this.getToken;
+ return _containerToken;
+ },
+ /**
+ Allows F2 to get a token internally. Token is required to call
+ {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}}. This
+ function will self destruct to eliminate other sources from using the
+ {{#crossLink "F2.AppHandlers/\_\_trigger:method"}}{{/crossLink}} and
+ additional internal methods.
+ @method __f2GetToken
+ @private
+ @returns {string} A one-time container token
+ */
+ __f2GetToken: function() {
+ /**
+ Delete this method for security that way only the container has
+ access to the token 1 time. Kind of Ethan Hunt-ish, this message will
+ self-destruct immediately.
+ */
+ delete this.__f2GetToken;
+ return _f2Token;
+ },
+ /**
+ Allows F2 to trigger specific events internally.
+ @method __trigger
+ @private
+ @chainable
+ @param {String} token The token received from {{#crossLink "F2.AppHandlers/\_\_f2GetToken:method"}}{{/crossLink}}.
+ @param {String} eventKey The event to fire. The complete list of event
+ keys is available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ @returns {object} The F2 instance for chaining purposes
+ */
+ __trigger: function(token, eventKey) {
+ _validateF2Token(token);
+
+ if (!_handlerCollection[eventKey]) {
+ throw new Error('Invalid EventKey passed. Check your inputs and try again.');
+ }
+
+ var callbackArgs = Array.prototype.slice.call(arguments, 2);
+
+ if (!_handlerCollection[eventKey].length && _defaultMethods[eventKey]) {
+ _defaultMethods[eventKey].apply(F2, callbackArgs);
+ } else {
+ for (var i = 0; i < _handlerCollection[eventKey].length; i++) {
+ var handler = _handlerCollection[eventKey][i];
+
+ // Check for appRender
+ if (handler.domNode && arguments.length >= 4) {
+ var appConfig = arguments[2];
+ var appHtml = arguments[3];
+
+ if (appConfig.root) {
+ jQuery(appConfig.root).append(appHtml);
+ } else {
+ appConfig.root = jQuery(appHtml).get(0);
+ }
+
+ jQuery(handler.domNode).append(appConfig.root);
+ } else {
+ handler.func.apply(F2, callbackArgs);
+ }
+ }
+ }
+
+ return this;
+ },
+ /**
+ Allows Container Developer to add listener method that will be triggered
+ when a specific event occurs.
+ @method on
+ @chainable
+ @param {String} token The token received from
+ {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
+ @param {String} eventKey{.namespace} The event key used to determine
+ which event to attach the listener to. The namespace is useful for
+ removal purposes. At this time it does not affect when an event is fired.
+ Complete list of event keys available in
+ {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ @param {Function} listener A function that will be triggered when a
+ specific event occurs. For detailed argument definition refer to
+ {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ @returns {object} The F2 instance for chaining purposes
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ 'appRenderBefore'
+ function() {
+ F2.log('before app rendered!');
+ }
+ );
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ 'appRenderBefore.myNamespace',
+ function() {
+ F2.log('before app rendered!');
+ }
+ );
+ */
+ on: function(token, eventKey, listener) {
+ if (!eventKey) {
+ throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
+ }
+
+ var event = _parseEventKey(eventKey);
+
+ if (!_handlerCollection[event.key]) {
+ throw new Error('Invalid eventKey passed. Check your inputs and try again.');
+ }
+
+ var isAppRender = (event.key === 'appRender');
+ var handler = _createHandler(token, event.namespace, listener, isAppRender);
+ _handlerCollection[event.key].push(handler);
+
+ return this;
+ },
+ /**
+ Allows Container Developer to remove listener methods for specific events
+ @method off
+ @chainable
+ @param {String} token The token received from {{#crossLink "F2.AppHandlers/getToken:method"}}{{/crossLink}}.
+ @param {String} eventKey{.namespace} The event key used to determine
+ which event to attach the listener to. If no namespace is provided all
+ listeners for the specified event type will be removed. Complete list
+ available in {{#crossLink "F2.Constants.AppHandlers"}}{{/crossLink}}.
+ @returns {object} The F2 instance for chaining purposes
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.off(token, 'appRenderBefore');
+ */
+ off: function(token, eventKey) {
+ if (!eventKey) {
+ throw new Error('eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.');
+ }
+
+ var event = _parseEventKey(eventKey);
+
+ if (!_handlerCollection[event.key]) {
+ throw new Error('Invalid EventKey passed. Check your inputs and try again.');
+ }
+
+ _removeHandler(token, event.key, event.namespace);
+
+ return this;
+ }
+ };
})());
F2.extend('Constants', {
- /**
- * A convenient collection of all available appHandler events.
- * @class F2.Constants.AppHandlers
- **/
- AppHandlers: {
- /**
- * Equivalent to `appCreateRoot`. Identifies the create root method for use
- * in AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
- * @property APP_CREATE_ROOT
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_CREATE_ROOT,
- * function(appConfig) {
- * // If you want to create a custom root. By default F2 uses the app's outermost HTML element.
- * // The app's html is not available until after the manifest is retrieved so this logic occurs in F2.Constants.AppHandlers.APP_RENDER
- * appConfig.root = jQuery('').get(0);
- * }
- * );
- */
- APP_CREATE_ROOT: 'appCreateRoot',
- /**
- * Equivalent to `appRenderBefore`. Identifies the before app render method
- * for use in AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
- * @property APP_RENDER_BEFORE
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_RENDER_BEFORE,
- * function(appConfig) {
- * F2.log(appConfig);
- * }
- * );
- */
- APP_RENDER_BEFORE: 'appRenderBefore',
- /**
- * Equivalent to `appRender`. Identifies the app render method for use in
- * AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}},
- * [appHtml](../../app-development.html#app-design)).
- * @property APP_RENDER
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_RENDER,
- * function(appConfig, appHtml) {
- * var $root;
- *
- * // If no app root is defined use the app's outer most node
- * if (!F2.isNativeDOMNode(appConfig.root)) {
- * appConfig.root = jQuery(appHtml).get(0);
- * // Get a handle on the root in jQuery
- * $root = jQuery(appConfig.root);
- * } else {
- * // Get a handle on the root in jQuery
- * $root = jQuery(appConfig.root);
- * // Append the app html to the root
- * $root.append(appHtml);
- * }
- *
- * // Append the root to the body by default.
- * jQuery('body').append($root);
- * }
- * );
- */
- APP_RENDER: 'appRender',
- /**
- * Equivalent to `appRenderAfter`. Identifies the after app render method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( {{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}} )
- * @property APP_RENDER_AFTER
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_RENDER_AFTER,
- * function(appConfig) {
- * F2.log(appConfig);
- * }
- * );
- */
- APP_RENDER_AFTER: 'appRenderAfter',
- /**
- * Equivalent to `appDestroyBefore`. Identifies the before app destroy
- * method for use in AppHandlers.(on|off). When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * (appInstance).
- * @property APP_DESTROY_BEFORE
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
- * function(appInstance) {
- * F2.log(appInstance);
- * }
- * );
- */
- APP_DESTROY_BEFORE: 'appDestroyBefore',
- /**
- * Equivalent to `appDestroy`. Identifies the app destroy method for use in AppHandlers.on/off.
- * When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the listener function passed will receive the
- * following argument(s): ( appInstance )
- * @property APP_DESTROY
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_DESTROY,
- * function(appInstance) {
- * // Call the apps destroy method, if it has one
- * if (appInstance && appInstance.app && appInstance.app.destroy && typeof(appInstance.app.destroy) == 'function') {
- * appInstance.app.destroy();
- * } else if (appInstance && appInstance.app && appInstance.app.destroy) {
- * F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
- * }
- *
- * // Fade out and remove the root
- * jQuery(appInstance.config.root).fadeOut(500, function() {
- * jQuery(this).remove();
- * });
- * }
- * );
- */
- APP_DESTROY: 'appDestroy',
- /**
- * Equivalent to `appDestroyAfter`. Identifies the after app destroy method
- * for use in AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
- * listener function passed will receive the following argument(s):
- * (appInstance)
- * @property APP_DESTROY_AFTER
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_DESTROY_AFTER,
- * function(appInstance) {
- * F2.log(appInstance);
- * }
- * );
- */
- APP_DESTROY_AFTER: 'appDestroyAfter',
- /**
- * Equivalent to `appScriptLoadFailed`. Identifies the app script load
- * failed method for use in AppHandlers.on/off. When bound using
- * {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}}
- * the listener function passed will receive the following argument(s):
- * ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}, scriptInfo)
- * @property APP_SCRIPT_LOAD_FAILED
- * @type string
- * @static
- * @final
- * @example
- * var token = F2.AppHandlers.getToken();
- * F2.AppHandlers.on(
- * token,
- * F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
- * function(appConfig, scriptInfo) {
- * F2.log(appConfig.appId);
- * }
- * );
- */
- APP_SCRIPT_LOAD_FAILED: 'appScriptLoadFailed'
- }
+ /**
+ A convenient collection of all available appHandler events.
+ @class F2.Constants.AppHandlers
+ */
+ AppHandlers: {
+ /**
+ Equivalent to `appCreateRoot`. Identifies the create root method for use
+ in AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
+ @property APP_CREATE_ROOT
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_CREATE_ROOT,
+ function(appConfig) {
+ // If you want to create a custom root. By default F2 uses the app's outermost HTML element.
+ // The app's html is not available until after the manifest is retrieved so this logic occurs in F2.Constants.AppHandlers.APP_RENDER
+ appConfig.root = jQuery('').get(0);
+ }
+ );
+ */
+ APP_CREATE_ROOT: 'appCreateRoot',
+ /**
+ Equivalent to `appRenderBefore`. Identifies the before app render method
+ for use in AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}).
+ @property APP_RENDER_BEFORE
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_RENDER_BEFORE,
+ function(appConfig) {
+ F2.log(appConfig);
+ }
+ );
+ */
+ APP_RENDER_BEFORE: 'appRenderBefore',
+ /**
+ Equivalent to `appRender`. Identifies the app render method for use in
+ AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}},
+ [appHtml](../../app-development.html#app-design)).
+ @property APP_RENDER
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_RENDER,
+ function(appConfig, appHtml) {
+ var $root;
+
+ // If no app root is defined use the app's outer most node
+ if (!F2.isNativeDOMNode(appConfig.root)) {
+ appConfig.root = jQuery(appHtml).get(0);
+ // Get a handle on the root in jQuery
+ $root = jQuery(appConfig.root);
+ } else {
+ // Get a handle on the root in jQuery
+ $root = jQuery(appConfig.root);
+ // Append the app html to the root
+ $root.append(appHtml);
+ }
+
+ // Append the root to the body by default.
+ jQuery('body').append($root);
+ }
+ );
+ */
+ APP_RENDER: 'appRender',
+ /**
+ Equivalent to `appRenderAfter`. Identifies the after app render method
+ for use in AppHandlers.on/off. When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}}
+ the listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}})
+ @property APP_RENDER_AFTER
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_RENDER_AFTER,
+ function(appConfig) {
+ F2.log(appConfig);
+ }
+ );
+ */
+ APP_RENDER_AFTER: 'appRenderAfter',
+ /**
+ Equivalent to `appDestroyBefore`. Identifies the before app destroy
+ method for use in AppHandlers.(on|off). When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ (appInstance).
+ @property APP_DESTROY_BEFORE
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
+ function(appInstance) {
+ F2.log(appInstance);
+ }
+ );
+ */
+ APP_DESTROY_BEFORE: 'appDestroyBefore',
+ /**
+ Equivalent to `appDestroy`. Identifies the app destroy method for use in
+ AppHandlers.on/off. When bound using {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}}
+ the listener function passed will receive the following argument(s):
+ (appInstance)
+ @property APP_DESTROY
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_DESTROY,
+ function(appInstance) {
+ // Call the apps destroy method, if it has one
+ if (appInstance && appInstance.app && appInstance.app.destroy && typeof(appInstance.app.destroy) == 'function') {
+ appInstance.app.destroy();
+ } else if (appInstance && appInstance.app && appInstance.app.destroy) {
+ F2.log(appInstance.config.appId + ' has a destroy property, but destroy is not of type function and as such will not be executed.');
+ }
+
+ // Fade out and remove the root
+ jQuery(appInstance.config.root).fadeOut(500, function() {
+ jQuery(this).remove();
+ });
+ }
+ );
+ */
+ APP_DESTROY: 'appDestroy',
+ /**
+ Equivalent to `appDestroyAfter`. Identifies the after app destroy method
+ for use in AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}} the
+ listener function passed will receive the following argument(s):
+ (appInstance)
+ @property APP_DESTROY_AFTER
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_DESTROY_AFTER,
+ function(appInstance) {
+ F2.log(appInstance);
+ }
+ );
+ */
+ APP_DESTROY_AFTER: 'appDestroyAfter',
+ /**
+ Equivalent to `appScriptLoadFailed`. Identifies the app script load
+ failed method for use in AppHandlers.on/off. When bound using
+ {{#crossLink "F2.AppHandlers/on"}}F2.AppHandlers.on(){{/crossLink}}
+ the listener function passed will receive the following argument(s):
+ ({{#crossLink "F2.AppConfig"}}appConfig{{/crossLink}}, scriptInfo)
+ @property APP_SCRIPT_LOAD_FAILED
+ @type string
+ @static
+ @final
+ @example
+ var token = F2.AppHandlers.getToken();
+ F2.AppHandlers.on(
+ token,
+ F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
+ function(appConfig, scriptInfo) {
+ F2.log(appConfig.appId);
+ }
+ );
+ */
+ APP_SCRIPT_LOAD_FAILED: 'appScriptLoadFailed'
+ }
});
/**
- * Class stubs for documentation purposes
- * @main F2
- */
+ Class stubs for documentation purposes
+ @main F2
+*/
F2.extend('', {
- /**
- * The App Class is an optional class that can be namespaced onto the
- * {{#crossLink "F2\Apps"}}{{/crossLink}} namespace. The
- * [F2 Docs](../../app-development.html#app-class)
- * has more information on the usage of the App Class.
- * @class F2.App
- * @constructor
- * @param {F2.AppConfig} appConfig The F2.AppConfig object for the app
- * @param {F2.AppManifest.AppContent} appContent The F2.AppManifest.AppContent
- * object
- * @param {Element} root The root DOM Element for the app
- */
- App: function(appConfig, appContent, root) {
- return {
- /**
- * An optional init function that will automatically be called when
- * F2.{{#crossLink "F2\registerApps"}}{{/crossLink}} is called.
- * @method init
- * @optional
- */
- init:function() {}
- };
- },
- /**
- * The AppConfig object represents an app's meta data
- * @class F2.AppConfig
- */
- AppConfig: {
- /**
- * The unique ID of the app. More information can be found
- * [here](../../app-development.html#f2-appid)
- * @property appId
- * @type string
- * @required
- */
- appId: '',
- /**
- * An object that represents the context of an app
- * @property context
- * @type object
- */
- context: {},
- /**
- * True if the app should be requested in a single request with other apps.
- * @property enableBatchRequests
- * @type bool
- * @default false
- */
- enableBatchRequests: false,
- /**
- * The height of the app. The initial height will be pulled from
- * the {{#crossLink "F2.AppConfig"}}{{/crossLink}} object, but later
- * modified by calling
- * F2.UI.{{#crossLink "F2.UI/updateHeight"}}{{/crossLink}}. This is used
- * for secure apps to be able to set the initial height of the iframe.
- * @property height
- * @type int
- */
- height: 0,
- /**
- * The unique runtime ID of the app.
- *
- * **This property is populated during the
- * F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process**
- * @property instanceId
- * @type string
- */
- instanceId: '',
- /**
- * True if the app will be loaded in an iframe. This property
- * will be true if the {{#crossLink "F2.AppConfig"}}{{/crossLink}} object
- * sets isSecure = true. It will also be true if the
- * [container](../../container-development.html) has made the decision to
- * run apps in iframes.
- * @property isSecure
- * @type bool
- * @default false
- */
- isSecure: false,
- /**
- * The language and region specification for this container
- * represented as an IETF-defined standard language tag,
- * e.g. `"en-us"` or `"de-de"`. This is passed during the
- * F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process.
- *
- * @property containerLocale
- * @type string
- * @default null
- * @since 1.4.0
- */
- containerLocale: null,
- /**
- * The languages and regions supported by this app represented
- * as an array of IETF-defined standard language tags,
- * e.g. `["en-us","de-de"]`.
- *
- * @property localeSupport
- * @type array
- * @default []
- * @since 1.4.0
- */
- localeSupport: [],
- /**
- * The url to retrieve the {{#crossLink "F2.AppManifest"}}{{/crossLink}}
- * object.
- * @property manifestUrl
- * @type string
- * @required
- */
- manifestUrl: '',
- /**
- * The recommended maximum width in pixels that this app should be run.
- * **It is up to the [container](../../container-development.html) to
- * implement the logic to prevent an app from being run when the maxWidth
- * requirements are not met.**
- * @property maxWidth
- * @type int
- */
- maxWidth: 0,
- /**
- * The recommended minimum grid size that this app should be run. This
- * value corresponds to the 12-grid system that is used by the
- * [container](../../container-development.html). This property should be
- * set by apps that require a certain number of columns in their layout.
- * @property minGridSize
- * @type int
- * @default 4
- */
- minGridSize: 4,
- /**
- * The recommended minimum width in pixels that this app should be run. **It
- * is up to the [container](../../container-development.html) to implement
- * the logic to prevent an app from being run when the minWidth requirements
- * are not met.
- * @property minWidth
- * @type int
- * @default 300
- */
- minWidth: 300,
- /**
- * The name of the app
- * @property name
- * @type string
- * @required
- */
- name: '',
- /**
- * The root DOM element that contains the app
- *
- * **This property is populated during the
- * F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process**
- * @property root
- * @type Element
- */
- root: undefined,
- /**
- * The instance of F2.UI providing easy access to F2.UI methods
- *
- * **This property is populated during the
- * F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process**
- * @property ui
- * @type F2.UI
- */
- ui: undefined,
- /**
- * The views that this app supports. Available views
- * are defined in {{#crossLink "F2.Constants.Views"}}{{/crossLink}}. The
- * presence of a view can be checked via
- * F2.{{#crossLink "F2/inArray"}}{{/crossLink}}:
- *
- * F2.inArray(F2.Constants.Views.SETTINGS, app.views)
- *
- * @property views
- * @type Array
- */
- views: []
- },
- /**
- * The assets needed to render an app on the page
- * @class F2.AppManifest
- */
- AppManifest: {
- /**
- * The array of {{#crossLink "F2.AppManifest.AppContent"}}{{/crossLink}}
- * objects
- * @property apps
- * @type Array
- * @required
- */
- apps: [],
- /**
- * Any inline javascript tha should initially be run
- * @property inlineScripts
- * @type Array
- * @optional
- */
- inlineScripts: [],
- /**
- * Urls to javascript files required by the app
- * @property scripts
- * @type Array
- * @optional
- */
- scripts: [],
- /**
- * Urls to CSS files required by the app
- * @property styles
- * @type Array
- * @optional
- */
- styles: []
- },
- /**
- * The AppContent object
- * @class F2.AppManifest.AppContent
- **/
- AppContent: {
- /**
- * Arbitrary data to be passed along with the app
- * @property data
- * @type object
- * @optional
- */
- data: {},
- /**
- * The string of HTML representing the app
- * @property html
- * @type string
- * @required
- */
- html: '',
- /**
- * A status message
- * @property status
- * @type string
- * @optional
- */
- status: ''
- },
- /**
- * An object containing configuration information for the
- * [container](../../container-development.html)
- * @class F2.ContainerConfig
- */
- ContainerConfig: {
- /**
- * Allows the [container](../../container-development.html) to override how
- * an app's html is inserted into the page. The function should accept an
- * {{#crossLink "F2.AppConfig"}}{{/crossLink}} object and also a string of
- * html
- * @method afterAppRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} html The string of html representing the app
- * @return {Element} The DOM Element surrounding the app
- */
- afterAppRender: function(appConfig, html) {},
- /**
- * Allows the [container](../../container-development.html) to wrap an app
- * in extra html. The function should accept an
- * {{#crossLink "F2.AppConfig"}}{{/crossLink}} object and also a string of
- * html. The extra html can provide links to edit app settings and remove an
- * app from the container. See
- * {{#crossLink "F2.Constants.Css"}}{{/crossLink}} for CSS classes that
- * should be applied to elements.
- * @method appRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} html The string of html representing the app
- */
- appRender: function(appConfig, html) {},
- /**
- * Allows the container to render html for an app before the AppManifest for
- * an app has loaded. This can be useful if the design calls for loading
- * icons to appear for each app before each app is loaded and rendered to
- * the page.
- * @method beforeAppRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @return {Element} The DOM Element surrounding the app
- */
- beforeAppRender: function(appConfig) {},
- /**
- * True to enable debug mode in F2.js. Adds additional logging, resource cache busting, etc.
- * @property debugMode
- * @type bool
- * @default false
- */
- debugMode: false,
- /**
- * The default language and region specification for this container
- * represented as an IETF-defined standard language tag,
- * e.g. `"en-us"` or `"de-de"`. This value is passed to each app
- * registered as `containerLocale`.
- *
- * @property locale
- * @type string
- * @default null
- * @since 1.4.0
- */
- locale: null,
- /**
- * Milliseconds before F2 fires callback on script resource load errors. Due to issue with the way Internet Explorer attaches load events to script elements, the error event doesn't fire.
- * @property scriptErrorTimeout
- * @type milliseconds
- * @default 7000 (7 seconds)
- */
- scriptErrorTimeout: 7000,
- /**
- * Tells the container that it is currently running within
- * a secure app page
- * @property isSecureAppPage
- * @type bool
- */
- isSecureAppPage: false,
- /**
- * Allows the container to specify which page is used when
- * loading a secure app. The page must reside on a different domain than the
- * container
- * @property secureAppPagePath
- * @type string
- * @for F2.ContainerConfig
- */
- secureAppPagePath: '',
- /**
- * Specifies what views a container will provide buttons
- * or links to. Generally, the views will be switched via buttons or links
- * in the app's header.
- * @property supportedViews
- * @type Array
- * @required
- */
- supportedViews: [],
- /**
- * An object containing configuration defaults for F2.UI
- * @class F2.ContainerConfig.UI
- */
- UI: {
- /**
- * An object containing configuration defaults for the
- * F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} and
- * F2.UI.{{#crossLink "F2.UI/hideMask"}}{{/crossLink}} methods.
- * @class F2.ContainerConfig.UI.Mask
- */
- Mask: {
- /**
- * The backround color of the overlay
- * @property backgroundColor
- * @type string
- * @default #FFF
- */
- backgroundColor: '#FFF',
- /**
- * The path to the loading icon
- * @property loadingIcon
- * @type string
- */
- loadingIcon: '',
- /**
- * The opacity of the background overlay
- * @property opacity
- * @type int
- * @default 0.6
- */
- opacity: 0.6,
- /**
- * Do not use inline styles for mask functinality. Instead classes will
- * be applied to the elements and it is up to the container provider to
- * implement the class definitions.
- * @property useClasses
- * @type bool
- * @default false
- */
- useClasses: false,
- /**
- * The z-index to use for the overlay
- * @property zIndex
- * @type int
- * @default 2
- */
- zIndex: 2
- }
- },
- /**
- * Allows the container to fully override how the AppManifest request is
- * made inside of F2.
- *
- * @method xhr
- * @param {string} url The manifest url
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @param {function} success The function to be called if the request
- * succeeds
- * @param {function} error The function to be called if the request fails
- * @param {function} complete The function to be called when the request
- * finishes (after success and error callbacks have been executed)
- * @return {XMLHttpRequest} The XMLHttpRequest object (or an object that has
- * an `abort` function (such as the jqXHR object in jQuery) to abort the
- * request)
- *
- * @example
- * F2.init({
- * xhr: function(url, appConfigs, success, error, complete) {
- * $.ajax({
- * url: url,
- * type: 'POST',
- * data: {
- * params: F2.stringify(appConfigs, F2.appConfigReplacer)
- * },
- * jsonp: false, // do not put 'callback=' in the query string
- * jsonpCallback: F2.Constants.JSONP_CALLBACK + appConfigs[0].appId, // Unique function name
- * dataType: 'json',
- * success: function(appManifest) {
- * // custom success logic
- * success(appManifest); // fire success callback
- * },
- * error: function() {
- * // custom error logic
- * error(); // fire error callback
- * },
- * complete: function() {
- * // custom complete logic
- * complete(); // fire complete callback
- * }
- * });
- * }
- * });
- *
- * @for F2.ContainerConfig
- */
- //xhr: function(url, appConfigs, success, error, complete) {},
- /**
- * Allows the container to override individual parts of the AppManifest
- * request. See properties and methods with the `xhr.` prefix.
- * @property xhr
- * @type Object
- *
- * @example
- * F2.init({
- * xhr: {
- * url: function(url, appConfigs) {
- * return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url);
- * }
- * }
- * });
- */
- xhr: {
- /**
- * Allows the container to override the request data type (JSON or JSONP)
- * that is used for the request
- * @method xhr.dataType
- * @param {string} url The manifest url
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @return {string} The request data type that should be used
- *
- * @example
- * F2.init({
- * xhr: {
- * dataType: function(url) {
- * return F2.isLocalRequest(url) ? 'json' : 'jsonp';
- * },
- * type: function(url) {
- * return F2.isLocalRequest(url) ? 'POST' : 'GET';
- * }
- * }
- * });
- */
- dataType: function(url, appConfigs) {},
- /**
- * Allows the container to override the request method that is used (just
- * like the `type` parameter to `jQuery.ajax()`.
- * @method xhr.type
- * @param {string} url The manifest url
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @return {string} The request method that should be used
- *
- * @example
- * F2.init({
- * xhr: {
- * dataType: function(url) {
- * return F2.isLocalRequest(url) ? 'json' : 'jsonp';
- * },
- * type: function(url) {
- * return F2.isLocalRequest(url) ? 'POST' : 'GET';
- * }
- * }
- * });
- */
- type: function(url, appConfigs) {},
- /**
- * Allows the container to override the url that is used to request an
- * app's F2.{{#crossLink "F2.AppManifest"}}{{/crossLink}}
- * @method xhr.url
- * @param {string} url The manifest url
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @return {string} The url that should be used for the request
- *
- * @example
- * F2.init({
- * xhr: {
- * url: function(url, appConfigs) {
- * return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url);
- * }
- * }
- * });
- */
- url: function(url, appConfigs) {}
- },
- /**
- * Allows the container to override the script loader which requests
- * dependencies defined in the {{#crossLink "F2.AppManifest"}}{{/crossLink}}.
- * @property loadScripts
- * @type function
- *
- * @example
- * F2.init({
- * loadScripts: function(scripts,inlines,callback){
- * //load scripts using $.load() for each script or require(scripts)
- * callback();
- * }
- * });
- */
- loadScripts: function(scripts,inlines,callback){},
- /**
- * Allows the container to override the stylesheet loader which requests
- * dependencies defined in the {{#crossLink "F2.AppManifest"}}{{/crossLink}}.
- * @property loadStyles
- * @type function
- *
- * @example
- * F2.init({
- * loadStyles: function(styles,callback){
- * //load styles using $.load() for each stylesheet or another method
- * callback();
- * }
- * });
- */
- loadStyles: function(styles,callback){}
- }
+ /**
+ The App Class is an optional class that can be namespaced onto the
+ {{#crossLink "F2\Apps"}}{{/crossLink}} namespace. The
+ [F2 Docs](../../app-development.html#app-class) has more information on the
+ usage of the App Class.
+ @class F2.App
+ @constructor
+ @param {F2.AppConfig} appConfig The F2.AppConfig object for the app
+ @param {F2.AppManifest.AppContent} appContent The F2.AppManifest.AppContent
+ object
+ @param {Element} root The root DOM Element for the app
+ */
+ App: function(appConfig, appContent, root) {
+ return {
+ /**
+ An optional init function that will automatically be called when
+ F2.{{#crossLink "F2\registerApps"}}{{/crossLink}} is called.
+ @method init
+ @optional
+ */
+ init: function() {}
+ };
+ },
+ /**
+ The AppConfig object represents an app's meta data
+ @class F2.AppConfig
+ */
+ AppConfig: {
+ /**
+ The unique ID of the app. More information can be found
+ [here](../../app-development.html#f2-appid).
+ @property appId
+ @type string
+ @required
+ */
+ appId: '',
+ /**
+ An object that represents the context of an app.
+ @property context
+ @type object
+ */
+ context: {},
+ /**
+ True if the app should be requested in a single request with other apps.
+ @property enableBatchRequests
+ @type bool
+ @default false
+ */
+ enableBatchRequests: false,
+ /**
+ The height of the app. The initial height will be pulled from the
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} object, but later modified by
+ calling F2.UI.{{#crossLink "F2.UI/updateHeight"}}{{/crossLink}}. This is
+ used for secure apps to be able to set the initial height of the iframe.
+ @property height
+ @type int
+ */
+ height: 0,
+ /**
+ The unique runtime ID of the app.
+ **This property is populated during the
+ F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process**
+ @property instanceId
+ @type string
+ */
+ instanceId: '',
+ /**
+ True if the app will be loaded in an iframe. This property will be true
+ if the {{#crossLink "F2.AppConfig"}}{{/crossLink}} object sets
+ `isSecure = true`. It will also be true if the
+ [container](../../container-development.html) has made the decision to
+ run apps in iframes.
+ @property isSecure
+ @type bool
+ @default false
+ */
+ isSecure: false,
+ /**
+ The language and region specification for this container represented as
+ an IETF-defined standard language tag, e.g. `"en-us"` or `"de-de"`. This
+ is passed during the F2.{{#crossLink "F2/registerApps"}}{{/crossLink}}
+ process.
+ @property containerLocale
+ @type string
+ @default null
+ @since 1.4.0
+ */
+ containerLocale: null,
+ /**
+ The languages and regions supported by this app represented as an array
+ of IETF-defined standard language tags, e.g. `["en-us","de-de"]`.
+ @property localeSupport
+ @type array
+ @default []
+ @since 1.4.0
+ */
+ localeSupport: [],
+ /**
+ The url to retrieve the {{#crossLink "F2.AppManifest"}}{{/crossLink}}
+ object.
+ @property manifestUrl
+ @type string
+ @required
+ */
+ manifestUrl: '',
+ /**
+ The recommended maximum width in pixels that this app should be run. **It
+ is up to the [container](../../container-development.html) to implement
+ the logic to prevent an app from being run when the maxWidth requirements
+ are not met.**
+ @property maxWidth
+ @type int
+ */
+ maxWidth: 0,
+ /**
+ The recommended minimum grid size that this app should be run. This value
+ corresponds to the 12-grid system that is used by the
+ [container](../../container-development.html). This property should be
+ set by apps that require a certain number of columns in their layout.
+ @property minGridSize
+ @type int
+ @default 4
+ */
+ minGridSize: 4,
+ /**
+ The recommended minimum width in pixels that this app should be run.
+ **It is up to the [container](../../container-development.html) to
+ implement the logic to prevent an app from being run when the minWidth
+ requirements are not met.
+ @property minWidth
+ @type int
+ @default 300
+ */
+ minWidth: 300,
+ /**
+ The name of the app.
+ @property name
+ @type string
+ @required
+ */
+ name: '',
+ /**
+ The root DOM element that contains the app.
+ **This property is populated during the
+ F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process.**
+ @property root
+ @type Element
+ */
+ root: undefined,
+ /**
+ The instance of F2.UI providing easy access to F2.UI methods.
+ **This property is populated during the
+ F2.{{#crossLink "F2/registerApps"}}{{/crossLink}} process.**
+ @property ui
+ @type F2.UI
+ */
+ ui: undefined,
+ /**
+ The views that this app supports. Available views are defined in
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}}. The presence of a view
+ can be checked via F2.{{#crossLink "F2/inArray"}}{{/crossLink}}:
+ F2.inArray(F2.Constants.Views.SETTINGS, app.views).
+ @property views
+ @type Array
+ */
+ views: []
+ },
+ /**
+ The assets needed to render an app on the page.
+ @class F2.AppManifest
+ */
+ AppManifest: {
+ /**
+ The array of {{#crossLink "F2.AppManifest.AppContent"}}{{/crossLink}}
+ objects.
+ @property apps
+ @type Array
+ @required
+ */
+ apps: [],
+ /**
+ Any inline javascript tha should initially be run.
+ @property inlineScripts
+ @type Array
+ @optional
+ */
+ inlineScripts: [],
+ /**
+ Urls to javascript files required by the app.
+ @property scripts
+ @type Array
+ @optional
+ */
+ scripts: [],
+ /**
+ Urls to CSS files required by the app.
+ @property styles
+ @type Array
+ @optional
+ */
+ styles: []
+ },
+ /**
+ The AppContent object.
+ @class F2.AppManifest.AppContent
+ */
+ AppContent: {
+ /**
+ Arbitrary data to be passed along with the app.
+ @property data
+ @type object
+ @optional
+ */
+ data: {},
+ /**
+ The string of HTML representing the app.
+ @property html
+ @type string
+ @required
+ */
+ html: '',
+ /**
+ A status message.
+ @property status
+ @type string
+ @optional
+ */
+ status: ''
+ },
+ /**
+ An object containing configuration information for the
+ [container](../../container-development.html).
+ @class F2.ContainerConfig
+ */
+ ContainerConfig: {
+ /**
+ Allows the [container](../../container-development.html) to override how
+ an app's html is inserted into the page. The function should accept an
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} object and also a string of
+ html.
+ @method afterAppRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} html The string of html representing the app
+ @return {Element} The DOM Element surrounding the app
+ */
+ afterAppRender: null,
+ /**
+ Allows the [container](../../container-development.html) to wrap an app
+ in extra html. The function should accept an
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} object and also a string of
+ html. The extra html can provide links to edit app settings and remove an
+ app from the container. See
+ {{#crossLink "F2.Constants.Css"}}{{/crossLink}} for CSS classes that
+ should be applied to elements.
+ @method appRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} html The string of html representing the app
+ */
+ appRender: null,
+ /**
+ Allows the container to render html for an app before the AppManifest for
+ an app has loaded. This can be useful if the design calls for loading
+ icons to appear for each app before each app is loaded and rendered to
+ the page.
+ @method beforeAppRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @return {Element} The DOM Element surrounding the app
+ */
+ beforeAppRender: null,
+ /**
+ True to enable debug mode in F2.js. Adds additional logging, resource
+ cache busting, etc.
+ @property debugMode
+ @type bool
+ @default false
+ */
+ debugMode: false,
+ /**
+ The default language and region specification for this container
+ represented as an IETF-defined standard language tag, e.g. `"en-us"` or
+ `"de-de"`. This value is passed to each app registered as
+ `containerLocale`.
+ @property locale
+ @type string
+ @default null
+ @since 1.4.0
+ */
+ locale: null,
+ /**
+ Milliseconds before F2 fires callback on script resource load errors. Due
+ to issue with the way Internet Explorer attaches load events to script
+ elements, the error event doesn't fire.
+ @property scriptErrorTimeout
+ @type milliseconds
+ @default 7000 (7 seconds)
+ */
+ scriptErrorTimeout: 7000,
+ /**
+ Tells the container that it is currently running within a secure app page.
+ @property isSecureAppPage
+ @type bool
+ */
+ isSecureAppPage: false,
+ /**
+ Allows the container to specify which page is used when loading a secure
+ app. The page must reside on a different domain than the container.
+ @property secureAppPagePath
+ @type string
+ @for F2.ContainerConfig
+ */
+ secureAppPagePath: '',
+ /**
+ Specifies what views a container will provide buttons or links to.
+ Generally, the views will be switched via buttons or links in the app's
+ header.
+ @property supportedViews
+ @type Array
+ @required
+ */
+ supportedViews: [],
+ /**
+ An object containing configuration defaults for F2.UI.
+ @class F2.ContainerConfig.UI
+ */
+ UI: {
+ /**
+ An object containing configuration defaults for the
+ F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} and
+ F2.UI.{{#crossLink "F2.UI/hideMask"}}{{/crossLink}} methods.
+ @class F2.ContainerConfig.UI.Mask
+ */
+ Mask: {
+ /**
+ The backround color of the overlay.
+ @property backgroundColor
+ @type string
+ @default #FFF
+ */
+ backgroundColor: '#FFF',
+ /**
+ The path to the loading icon.
+ @property loadingIcon
+ @type string
+ */
+ loadingIcon: '',
+ /**
+ The opacity of the background overlay.
+ @property opacity
+ @type int
+ @default 0.6
+ */
+ opacity: 0.6,
+ /**
+ Do not use inline styles for mask functinality. Instead classes will
+ be applied to the elements and it is up to the container provider to
+ implement the class definitions.
+ @property useClasses
+ @type bool
+ @default false
+ */
+ useClasses: false,
+ /**
+ The z-index to use for the overlay
+ @property zIndex
+ @type int
+ @default 2
+ */
+ zIndex: 2
+ }
+ },
+ /**
+ Allows the container to override individual parts of the AppManifest
+ request. See properties and methods with the `xhr.` prefix.
+ @property xhr
+ @type Object
+ @example
+ F2.init({
+ xhr: {
+ url: function(url, appConfigs) {
+ return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url);
+ }
+ }
+ });
+ */
+ xhr: {
+ /**
+ Allows the container to override the request data type (JSON or JSONP)
+ that is used for the request.
+ @method xhr.dataType
+ @param {string} url The manifest url
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
+ @return {string} The request data type that should be used
+ @example
+ F2.init({
+ xhr: {
+ dataType: function(url) {
+ return F2.isLocalRequest(url) ? 'json' : 'jsonp';
+ },
+ type: function(url) {
+ return F2.isLocalRequest(url) ? 'POST' : 'GET';
+ }
+ }
+ });
+ */
+ dataType: null,
+ /**
+ Allows the container to override the request method that is used (just
+ like the `type` parameter to `jQuery.ajax()`.
+ @method xhr.type
+ @param {string} url The manifest url
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
+ @return {string} The request method that should be used
+ @example
+ F2.init({
+ xhr: {
+ dataType: function(url) {
+ return F2.isLocalRequest(url) ? 'json' : 'jsonp';
+ },
+ type: function(url) {
+ return F2.isLocalRequest(url) ? 'POST' : 'GET';
+ }
+ }
+ });
+ */
+ type: null,
+ /**
+ Allows the container to override the url that is used to request an
+ app's F2.{{#crossLink "F2.AppManifest"}}{{/crossLink}}.
+ @method xhr.url
+ @param {string} url The manifest url
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
+ @return {string} The url that should be used for the request
+ @example
+ F2.init({
+ xhr: {
+ url: function(url, appConfigs) {
+ return 'http://example.com/proxy.php?url=' + encocdeURIComponent(url);
+ }
+ }
+ });
+ */
+ url: null
+ },
+ /**
+ Allows the container to override the script loader which requests
+ dependencies defined in the {{#crossLink "F2.AppManifest"}}{{/crossLink}}.
+ @method loadScripts
+ @param {Array} scripts Script file urls to be loaded
+ @param {Array} inlines Inline JavaScript to be run
+ @param {Function} callback Should be called when loading is complete
+ @example
+ F2.init({
+ loadScripts: function(scripts, inlines, callback) {
+ // Load scripts using $.load() for each script or require(scripts)
+ callback();
+ }
+ });
+ */
+ loadScripts: function(scripts, inlines, callback) {},
+ /**
+ Allows the container to override the stylesheet loader which requests
+ dependencies defined in the {{#crossLink "F2.AppManifest"}}{{/crossLink}}.
+ @method loadStyles
+ @param {Array} styles CSS file urls to be loaded
+ @param {Function} callback Should be called when loading is complete
+ @example
+ F2.init({
+ loadStyles: function(styles, callback) {
+ // Load styles using $.load() for each stylesheet or another method
+ callback();
+ }
+ });
+ */
+ loadStyles: function(styles, callback) {}
+ }
});
+
/**
- * Constants used throughout the Open Financial Framework
- * @class F2.Constants
- * @static
- */
+ Constants used throughout the Open Financial Framework.
+ @class F2.Constants
+ @static
+*/
F2.extend('Constants', {
- /**
- * CSS class constants
- * @class F2.Constants.Css
- */
- Css: (function() {
-
- /** @private */
- var _PREFIX = 'f2-';
-
- return {
- /**
- * The APP class should be applied to the DOM Element that surrounds the
- * entire app, including any extra html that surrounds the APP\_CONTAINER
- * that is inserted by the container. See the
- * {{#crossLink "F2.ContainerConfig"}}{{/crossLink}} object.
- * @property APP
- * @type string
- * @static
- * @final
- */
- APP: _PREFIX + 'app',
- /**
- * The APP\_CONTAINER class should be applied to the outermost DOM Element
- * of the app.
- * @property APP_CONTAINER
- * @type string
- * @static
- * @final
- */
- APP_CONTAINER: _PREFIX + 'app-container',
- /**
- * The APP\_TITLE class should be applied to the DOM Element that contains
- * the title for an app. If this class is not present, then
- * F2.UI.{{#crossLink "F2.UI/setTitle"}}{{/crossLink}} will not function.
- * @property APP_TITLE
- * @type string
- * @static
- * @final
- */
- APP_TITLE: _PREFIX + 'app-title',
- /**
- * The APP\_VIEW class should be applied to the DOM Element that contains
- * a view for an app. The DOM Element should also have a
- * {{#crossLink "F2.Constants.Views"}}{{/crossLink}}.DATA_ATTRIBUTE
- * attribute that specifies which
- * {{#crossLink "F2.Constants.Views"}}{{/crossLink}} it is.
- * @property APP_VIEW
- * @type string
- * @static
- * @final
- */
- APP_VIEW: _PREFIX + 'app-view',
- /**
- * APP\_VIEW\_TRIGGER class should be applied to the DOM Elements that
- * trigger an
- * {{#crossLink "F2.Constants.Events"}}{{/crossLink}}.APP\_VIEW\_CHANGE
- * event. The DOM Element should also have a
- * {{#crossLink "F2.Constants.Views"}}{{/crossLink}}.DATA_ATTRIBUTE
- * attribute that specifies which
- * {{#crossLink "F2.Constants.Views"}}{{/crossLink}} it will trigger.
- * @property APP_VIEW_TRIGGER
- * @type string
- * @static
- * @final
- */
- APP_VIEW_TRIGGER: _PREFIX + 'app-view-trigger',
- /**
- * The MASK class is applied to the overlay element that is created
- * when the F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} method is
- * fired.
- * @property MASK
- * @type string
- * @static
- * @final
- */
- MASK: _PREFIX + 'mask',
- /**
- * The MASK_CONTAINER class is applied to the Element that is passed into
- * the F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} method.
- * @property MASK_CONTAINER
- * @type string
- * @static
- * @final
- */
- MASK_CONTAINER: _PREFIX + 'mask-container'
- };
- })(),
-
- /**
- * Events constants
- * @class F2.Constants.Events
- */
- Events: (function() {
- /** @private */
- var _APP_EVENT_PREFIX = 'App.';
- /** @private */
- var _CONTAINER_EVENT_PREFIX = 'Container.';
-
- return {
- /**
- * The APP\_SYMBOL\_CHANGE event is fired when the symbol is changed in an
- * app. It is up to the app developer to fire this event.
- * Returns an object with the symbol and company name:
- *
- * { symbol: 'MSFT', name: 'Microsoft Corp (NASDAQ)' }
- *
- * @property APP_SYMBOL_CHANGE
- * @type string
- * @static
- * @final
- */
- APP_SYMBOL_CHANGE: _APP_EVENT_PREFIX + 'symbolChange',
- /**
- * The APP\_WIDTH\_CHANGE event will be fired by the container when the
- * width of an app is changed. The app's instanceId should be concatenated
- * to this constant.
- * Returns an object with the gridSize and width in pixels:
- *
- * { gridSize:8, width:620 }
- *
- * @property APP_WIDTH_CHANGE
- * @type string
- * @static
- * @final
- */
- APP_WIDTH_CHANGE: _APP_EVENT_PREFIX + 'widthChange.',
- /**
- * The CONTAINER\_SYMBOL\_CHANGE event is fired when the symbol is changed
- * at the container level. This event should only be fired by the
- * container or container provider.
- * Returns an object with the symbol and company name:
- *
- * { symbol: 'MSFT', name: 'Microsoft Corp (NASDAQ)' }
- *
- * @property CONTAINER_SYMBOL_CHANGE
- * @type string
- * @static
- * @final
- */
- CONTAINER_SYMBOL_CHANGE: _CONTAINER_EVENT_PREFIX + 'symbolChange',
- /**
- * The CONTAINER\_WIDTH\_CHANGE event will be fired by the container when
- * the width of the container has changed.
- * @property CONTAINER_WIDTH_CHANGE
- * @type string
- * @static
- * @final
- */
- CONTAINER_WIDTH_CHANGE: _CONTAINER_EVENT_PREFIX + 'widthChange',
- /**
- * The CONTAINER\_LOCALE\_CHANGE event will be fired by the container when
- * the locale of the container has changed. This event should only be fired by the
- * container or container provider.
- * Returns an object with the updated locale (IETF-defined standard language tag):
- *
- * { locale: 'en-us' }
- *
- * @property CONTAINER_LOCALE_CHANGE
- * @type string
- * @static
- * @final
- */
- CONTAINER_LOCALE_CHANGE: _CONTAINER_EVENT_PREFIX + 'localeChange'
- };
- })(),
-
- JSONP_CALLBACK: 'F2_jsonpCallback_',
-
- /**
- * Constants for use with cross-domain sockets
- * @class F2.Constants.Sockets
- * @protected
- */
- Sockets: {
- /**
- * The EVENT message is sent whenever
- * F2.Events.{{#crossLink "F2.Events/emit"}}{{/crossLink}} is fired
- * @property EVENT
- * @type string
- * @static
- * @final
- */
- EVENT: '__event__',
- /**
- * The LOAD message is sent when an iframe socket initially loads.
- * Returns a JSON string that represents:
- *
- * [ App, AppManifest]
- *
- * @property LOAD
- * @type string
- * @static
- * @final
- */
- LOAD: '__socketLoad__',
- /**
- * The RPC message is sent when a method is passed up from within a secure
- * app page.
- * @property RPC
- * @type string
- * @static
- * @final
- */
- RPC: '__rpc__',
- /**
- * The RPC\_CALLBACK message is sent when a call back from an RPC method is
- * fired.
- * @property RPC_CALLBACK
- * @type string
- * @static
- * @final
- */
- RPC_CALLBACK: '__rpcCallback__',
- /**
- * The UI\_RPC message is sent when a UI method called.
- * @property UI_RPC
- * @type string
- * @static
- * @final
- */
- UI_RPC: '__uiRpc__'
- },
-
- /**
- * The available view types to apps. The view should be specified by applying
- * the {{#crossLink "F2.Constants.Css"}}{{/crossLink}}.APP\_VIEW class to the
- * containing DOM Element. A DATA\_ATTRIBUTE attribute should be added to the
- * Element as well which defines what view type is represented.
- * The `hide` class can be applied to views that should be hidden by default.
- * @class F2.Constants.Views
- */
- Views: {
- /**
- * The DATA_ATTRIBUTE should be placed on the DOM Element that contains the
- * view.
- * @property DATA_ATTRIBUTE
- * @type string
- * @static
- * @final
- */
- DATA_ATTRIBUTE: 'data-f2-view',
- /**
- * The ABOUT view gives details about the app.
- * @property ABOUT
- * @type string
- * @static
- * @final
- */
- ABOUT: 'about',
- /**
- * The HELP view provides users with help information for using an app.
- * @property HELP
- * @type string
- * @static
- * @final
- */
- HELP: 'help',
- /**
- * The HOME view is the main view for an app. This view should always
- * be provided by an app.
- * @property HOME
- * @type string
- * @static
- * @final
- */
- HOME: 'home',
- /**
- * The REMOVE view is a special view that handles the removal of an app
- * from the container.
- * @property REMOVE
- * @type string
- * @static
- * @final
- */
- REMOVE: 'remove',
- /**
- * The SETTINGS view provides users the ability to modify advanced settings
- * for an app.
- * @property SETTINGS
- * @type string
- * @static
- * @final
- */
- SETTINGS: 'settings'
- }
+ /**
+ CSS class constants
+ @class F2.Constants.Css
+ */
+ Css: {
+ /**
+ The APP class should be applied to the DOM Element that surrounds the
+ entire app, including any extra html that surrounds the APP\_CONTAINER
+ that is inserted by the container. See the
+ {{#crossLink "F2.ContainerConfig"}}{{/crossLink}} object.
+ @property APP
+ @type string
+ @static
+ @final
+ */
+ APP: 'f2-app',
+ /**
+ The APP\_CONTAINER class should be applied to the outermost DOM Element
+ of the app.
+ @property APP_CONTAINER
+ @type string
+ @static
+ @final
+ */
+ APP_CONTAINER: 'f2-app-container',
+ /**
+ The APP\_TITLE class should be applied to the DOM Element that contains
+ the title for an app. If this class is not present, then
+ F2.UI.{{#crossLink "F2.UI/setTitle"}}{{/crossLink}} will not function.
+ @property APP_TITLE
+ @type string
+ @static
+ @final
+ */
+ APP_TITLE: 'f2-app-title',
+ /**
+ The APP\_VIEW class should be applied to the DOM Element that contains
+ a view for an app. The DOM Element should also have a
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}}.DATA_ATTRIBUTE
+ attribute that specifies which
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}} it is.
+ @property APP_VIEW
+ @type string
+ @static
+ @final
+ */
+ APP_VIEW: 'f2-app-view',
+ /**
+ APP\_VIEW\_TRIGGER class should be applied to the DOM Elements that
+ trigger an
+ {{#crossLink "F2.Constants.Events"}}{{/crossLink}}.APP\_VIEW\_CHANGE
+ event. The DOM Element should also have a
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}}.DATA_ATTRIBUTE
+ attribute that specifies which
+ {{#crossLink "F2.Constants.Views"}}{{/crossLink}} it will trigger.
+ @property APP_VIEW_TRIGGER
+ @type string
+ @static
+ @final
+ */
+ APP_VIEW_TRIGGER: 'f2-app-view-trigger',
+ /**
+ The MASK class is applied to the overlay element that is created
+ when the F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} method is
+ fired.
+ @property MASK
+ @type string
+ @static
+ @final
+ */
+ MASK: 'f2-mask',
+ /**
+ The MASK_CONTAINER class is applied to the Element that is passed into
+ the F2.UI.{{#crossLink "F2.UI/showMask"}}{{/crossLink}} method.
+ @property MASK_CONTAINER
+ @type string
+ @static
+ @final
+ */
+ MASK_CONTAINER: 'f2-mask-container'
+ },
+ /**
+ Events constants
+ @class F2.Constants.Events
+ */
+ Events: {
+ /**
+ The APP\_SYMBOL\_CHANGE event is fired when the symbol is changed in an
+ app. It is up to the app developer to fire this event. Returns an object
+ with the symbol and company name:
+ `{ symbol: 'MSFT', name: 'Microsoft Corp (NASDAQ)' }`
+ @property APP_SYMBOL_CHANGE
+ @type string
+ @static
+ @final
+ */
+ APP_SYMBOL_CHANGE: 'App.symbolChange',
+ /**
+ The APP\_WIDTH\_CHANGE event will be fired by the container when the
+ width of an app is changed. The app's instanceId should be concatenated
+ to this constant. Returns an object with the gridSize and width in pixels:
+ `{ gridSize: 8, width: 620 }`
+ @property APP_WIDTH_CHANGE
+ @type string
+ @static
+ @final
+ */
+ APP_WIDTH_CHANGE: 'App.widthChange.',
+ /**
+ The CONTAINER\_SYMBOL\_CHANGE event is fired when the symbol is changed
+ at the container level. This event should only be fired by the container
+ or container provider. Returns an object with the symbol and company name:
+ `{ symbol: 'MSFT', name: 'Microsoft Corp (NASDAQ)' }`
+ @property CONTAINER_SYMBOL_CHANGE
+ @type string
+ @static
+ @final
+ */
+ CONTAINER_SYMBOL_CHANGE: 'Container.symbolChange',
+ /**
+ The CONTAINER\_WIDTH\_CHANGE event will be fired by the container when
+ the width of the container has changed.
+ @property CONTAINER_WIDTH_CHANGE
+ @type string
+ @static
+ @final
+ */
+ CONTAINER_WIDTH_CHANGE: 'Container.widthChange',
+ /**
+ The CONTAINER\_LOCALE\_CHANGE event will be fired by the container when
+ the locale of the container has changed. This event should only be fired
+ by the container or container provider. Returns an object with the
+ updated locale (IETF-defined standard language tag):
+ `{ locale: 'en-us' }`
+ @property CONTAINER_LOCALE_CHANGE
+ @type string
+ @static
+ @final
+ */
+ CONTAINER_LOCALE_CHANGE: 'Container.localeChange'
+ },
+ JSONP_CALLBACK: 'F2_jsonpCallback_',
+ /**
+ Constants for use with cross-domain sockets.
+ @class F2.Constants.Sockets
+ @protected
+ */
+ Sockets: {
+ /**
+ The EVENT message is sent whenever
+ F2.Events.{{#crossLink "F2.Events/emit"}}{{/crossLink}} is fired.
+ @property EVENT
+ @type string
+ @static
+ @final
+ */
+ EVENT: '__event__',
+ /**
+ The LOAD message is sent when an iframe socket initially loads. Returns
+ a JSON string that represents: `[ App, AppManifest]`
+ @property LOAD
+ @type string
+ @static
+ @final
+ */
+ LOAD: '__socketLoad__',
+ /**
+ The RPC message is sent when a method is passed up from within a secure
+ app page.
+ @property RPC
+ @type string
+ @static
+ @final
+ */
+ RPC: '__rpc__',
+ /**
+ The RPC\_CALLBACK message is sent when a call back from an RPC method is
+ fired.
+ @property RPC_CALLBACK
+ @type string
+ @static
+ @final
+ */
+ RPC_CALLBACK: '__rpcCallback__',
+ /**
+ The UI\_RPC message is sent when a UI method called.
+ @property UI_RPC
+ @type string
+ @static
+ @final
+ */
+ UI_RPC: '__uiRpc__'
+ },
+ /**
+ The available view types to apps. The view should be specified by applying
+ the {{#crossLink "F2.Constants.Css"}}{{/crossLink}}.APP\_VIEW class to the
+ containing DOM Element. A DATA\_ATTRIBUTE attribute should be added to the
+ Element as well which defines what view type is represented. The `hide`
+ class can be applied to views that should be hidden by default.
+ @class F2.Constants.Views
+ */
+ Views: {
+ /**
+ The DATA_ATTRIBUTE should be placed on the DOM Element that contains the
+ view.
+ @property DATA_ATTRIBUTE
+ @type string
+ @static
+ @final
+ */
+ DATA_ATTRIBUTE: 'data-f2-view',
+ /**
+ The ABOUT view gives details about the app.
+ @property ABOUT
+ @type string
+ @static
+ @final
+ */
+ ABOUT: 'about',
+ /**
+ The HELP view provides users with help information for using an app.
+ @property HELP
+ @type string
+ @static
+ @final
+ */
+ HELP: 'help',
+ /**
+ The HOME view is the main view for an app. This view should always be
+ provided by an app.
+ @property HOME
+ @type string
+ @static
+ @final
+ */
+ HOME: 'home',
+ /**
+ The REMOVE view is a special view that handles the removal of an app from
+ the container.
+ @property REMOVE
+ @type string
+ @static
+ @final
+ */
+ REMOVE: 'remove',
+ /**
+ The SETTINGS view provides users the ability to modify advanced settings
+ for an app.
+ @property SETTINGS
+ @type string
+ @static
+ @final
+ */
+ SETTINGS: 'settings'
+ }
});
-/**
- * Handles [Context](../../app-development.html#context) passing from
- * containers to apps and apps to apps.
- * @class F2.Events
- */
-F2.extend('Events', (function() {
- // init EventEmitter
- var _events = new EventEmitter2({
- wildcard:true
- });
- // unlimited listeners, set to > 0 for debugging
- _events.setMaxListeners(0);
-
- return {
- /**
- * Same as F2.Events.emit except that it will not send the event
- * to all sockets.
- * @method _socketEmit
- * @private
- * @param {string} event The event name
- * @param {object} [arg]* The arguments to be passed
- */
- _socketEmit: function() {
- return EventEmitter2.prototype.emit.apply(_events, [].slice.call(arguments));
- },
- /**
- * Execute each of the listeners that may be listening for the specified
- * event name in order with the list of arguments.
- * @method emit
- * @param {string} event The event name
- * @param {object} [arg]* The arguments to be passed
- */
- emit: function() {
- F2.Rpc.broadcast(F2.Constants.Sockets.EVENT, [].slice.call(arguments));
- return EventEmitter2.prototype.emit.apply(_events, [].slice.call(arguments));
- },
- /**
- * Adds a listener that will execute n times for the event before being
- * removed. The listener is invoked only the first time the event is
- * fired, after which it is removed.
- * @method many
- * @param {string} event The event name
- * @param {int} timesToListen The number of times to execute the event
- * before being removed
- * @param {function} listener The function to be fired when the event is
- * emitted
- */
- many: function(event, timesToListen, listener) {
- return _events.many(event, timesToListen, listener);
- },
- /**
- * Remove a listener for the specified event.
- * @method off
- * @param {string} event The event name
- * @param {function} listener The function that will be removed
- */
- off: function(event, listener) {
- return _events.off(event, listener);
- },
- /**
- * Adds a listener for the specified event
- * @method on
- * @param {string} event The event name
- * @param {function} listener The function to be fired when the event is
- * emitted
- */
- on: function(event, listener){
- return _events.on(event, listener);
- },
- /**
- * Adds a one time listener for the event. The listener is invoked only
- * the first time the event is fired, after which it is removed.
- * @method once
- * @param {string} event The event name
- * @param {function} listener The function to be fired when the event is
- * emitted
- */
- once: function(event, listener) {
- return _events.once(event, listener);
- }
- };
-})());
/**
- * Handles socket communication between the container and secure apps
- * @class F2.Rpc
- */
-F2.extend('Rpc', (function(){
- var _callbacks = {};
- var _secureAppPagePath = '';
- var _apps = {};
- var _rEvents = new RegExp('^' + F2.Constants.Sockets.EVENT);
- var _rRpc = new RegExp('^' + F2.Constants.Sockets.RPC);
- var _rRpcCallback = new RegExp('^' + F2.Constants.Sockets.RPC_CALLBACK);
- var _rSocketLoad = new RegExp('^' + F2.Constants.Sockets.LOAD);
- var _rUiCall = new RegExp('^' + F2.Constants.Sockets.UI_RPC);
-
- /**
- * Creates a socket connection from the app to the container using
- * easyXDM.
- * @method _createAppToContainerSocket
- * @private
- */
- var _createAppToContainerSocket = function() {
-
- var appConfig; // socket closure
- var isLoaded = false;
- // its possible for messages to be received before the socket load event has
- // happened. We'll save off these messages and replay them once the socket
- // is ready
- var messagePlayback = [];
-
- var socket = new easyXDM.Socket({
- onMessage: function(message, origin){
-
- // handle Socket Load
- if (!isLoaded && _rSocketLoad.test(message)) {
- message = message.replace(_rSocketLoad, '');
- var appParts = F2.parse(message);
-
- // make sure we have the AppConfig and AppManifest
- if (appParts.length == 2) {
- appConfig = appParts[0];
-
- // save socket
- _apps[appConfig.instanceId] = {
- config:appConfig,
- socket:socket
- };
-
- // register app
- F2.registerApps([appConfig], [appParts[1]]);
-
- // socket message playback
- jQuery.each(messagePlayback, function(i, e) {
- _onMessage(appConfig, message, origin);
- });
-
- isLoaded = true;
- }
- } else if (isLoaded) {
- // pass everyting else to _onMessage
- _onMessage(appConfig, message, origin);
- } else {
- //F2.log('socket not ready, queuing message', message);
- messagePlayback.push(message);
- }
- }
- });
- };
-
- /**
- * Creates a socket connection from the container to the app using
- * easyXDM.
- * @method _createContainerToAppSocket
- * @private
- * @param {appConfig} appConfig The F2.AppConfig object
- * @param {F2.AppManifest} appManifest The F2.AppManifest object
- */
- var _createContainerToAppSocket = function(appConfig, appManifest) {
-
- var container = jQuery(appConfig.root);
-
- if (!container.is('.' + F2.Constants.Css.APP_CONTAINER)) {
- container.find('.' + F2.Constants.Css.APP_CONTAINER);
- }
-
- if (!container.length) {
- F2.log('Unable to locate app in order to establish secure connection.');
- return;
- }
-
- var iframeProps = {
- scrolling:'no',
- style:{
- width:'100%'
- }
- };
-
- if (appConfig.height) {
- iframeProps.style.height = appConfig.height + 'px';
- }
-
- var socket = new easyXDM.Socket({
- remote: _secureAppPagePath,
- container: container.get(0),
- props:iframeProps,
- onMessage: function(message, origin) {
- // pass everything to _onMessage
- _onMessage(appConfig, message, origin);
- },
- onReady: function() {
- socket.postMessage(F2.Constants.Sockets.LOAD + F2.stringify([appConfig, appManifest], F2.appConfigReplacer));
- }
- });
-
- return socket;
- };
-
- /**
- * @method _createRpcCallback
- * @private
- * @param {string} instanceId The app's Instance ID
- * @param {function} callbackId The callback ID
- * @return {function} A function to make the RPC call
- */
- var _createRpcCallback = function(instanceId, callbackId) {
- return function() {
- F2.Rpc.call(
- instanceId,
- F2.Constants.Sockets.RPC_CALLBACK,
- callbackId,
- [].slice.call(arguments).slice(2)
- );
- };
- };
-
- /**
- * Handles messages that come across the sockets
- * @method _onMessage
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} message The socket message
- * @param {string} origin The originator
- */
- var _onMessage = function(appConfig, message, origin) {
-
- var obj, func;
-
- function parseFunction(parent, functionName) {
- var path = String(functionName).split('.');
- for (var i = 0; i < path.length; i++) {
- if (parent[path[i]] === undefined) {
- parent = undefined;
- break;
- }
- parent = parent[path[i]];
- }
- return parent;
- }
-
- function parseMessage(regEx, message, instanceId) {
- var o = F2.parse(message.replace(regEx, ''));
-
- // if obj.callbacks
- // for each callback
- // for each params
- // if callback matches param
- // replace param with _createRpcCallback(app.instanceId, callback)
- if (o.params && o.params.length && o.callbacks && o.callbacks.length) {
- jQuery.each(o.callbacks, function(i, c) {
- jQuery.each(o.params, function(i, p) {
- if (c == p) {
- o.params[i] = _createRpcCallback(instanceId, c);
- }
- });
- });
- }
-
- return o;
- }
-
- // handle UI Call
- if (_rUiCall.test(message)) {
- obj = parseMessage(_rUiCall, message, appConfig.instanceId);
- func = parseFunction(appConfig.ui, obj.functionName);
- // if we found the function, call it
- if (func !== undefined) {
- func.apply(appConfig.ui, obj.params);
- } else {
- F2.log('Unable to locate UI RPC function: ' + obj.functionName);
- }
-
- // handle RPC
- } else if (_rRpc.test(message)) {
- obj = parseMessage(_rRpc, message, appConfig.instanceId);
- func = parseFunction(window, obj.functionName);
- if (func !== undefined) {
- func.apply(func, obj.params);
- } else {
- F2.log('Unable to locate RPC function: ' + obj.functionName);
- }
-
- // handle RPC Callback
- } else if (_rRpcCallback.test(message)) {
- obj = parseMessage(_rRpcCallback, message, appConfig.instanceId);
- if (_callbacks[obj.functionName] !== undefined) {
- _callbacks[obj.functionName].apply(_callbacks[obj.functionName], obj.params);
- delete _callbacks[obj.functionName];
- }
+ Root namespace of the F2 SDK
+ @module f2
+ @class F2
+*/
+F2.extend('', (function() {
- // handle Events
- } else if (_rEvents.test(message)) {
- obj = parseMessage(_rEvents, message, appConfig.instanceId);
- F2.Events._socketEmit.apply(F2.Events, obj);
- }
- };
-
- /**
- * Registers a callback function
- * @method _registerCallback
- * @private
- * @param {function} callback The callback function
- * @return {string} The callback ID
- */
- var _registerCallback = function(callback) {
- var callbackId = F2.guid();
- _callbacks[callbackId] = callback;
- return callbackId;
- };
-
- return {
- /**
- * Broadcast an RPC function to all sockets
- * @method broadcast
- * @param {string} messageType The message type
- * @param {Array} params The parameters to broadcast
- */
- broadcast: function(messageType, params) {
- // check valid messageType
- var message = messageType + F2.stringify(params);
- jQuery.each(_apps, function(i, a) {
- a.socket.postMessage(message);
- });
- },
- /**
- * Calls a remote function
- * @method call
- * @param {string} instanceId The app's Instance ID
- * @param {string} messageType The message type
- * @param {string} functionName The name of the remote function
- * @param {Array} params An array of parameters to pass to the remote
- * function. Any functions found within the params will be treated as a
- * callback function.
- */
- call: function(instanceId, messageType, functionName, params) {
- // loop through params and find functions and convert them to callbacks
- var callbacks = [];
- jQuery.each(params, function(i, e) {
- if (typeof e === 'function') {
- var cid = _registerCallback(e);
- params[i] = cid;
- callbacks.push(cid);
- }
- });
- // check valid messageType
- _apps[instanceId].socket.postMessage(
- messageType + F2.stringify({
- functionName:functionName,
- params:params,
- callbacks:callbacks
- })
- );
- },
-
- /**
- * Init function which tells F2.Rpc whether it is running at the container-
- * level or the app-level. This method is generally called by
- * F2.{{#crossLink "F2/init"}}{{/crossLink}}
- * @method init
- * @param {string} [secureAppPagePath] The
- * {{#crossLink "F2.ContainerConfig"}}{{/crossLink}}.secureAppPagePath
- * property
- */
- init: function(secureAppPagePath) {
- _secureAppPagePath = secureAppPagePath;
- if (!_secureAppPagePath) {
- _createAppToContainerSocket();
- }
- },
-
- /**
- * Determines whether the Instance ID is considered to be 'remote'. This is
- * determined by checking if 1) the app has an open socket and 2) whether
- * F2.Rpc is running inside of an iframe
- * @method isRemote
- * @param {string} instanceId The Instance ID
- * @return {bool} True if there is an open socket
- */
- isRemote: function(instanceId) {
- return (
- // we have an app
- _apps[instanceId] !== undefined &&
- // the app is secure
- _apps[instanceId].config.isSecure &&
- // we can't access the iframe
- jQuery(_apps[instanceId].config.root).find('iframe').length === 0
- );
- },
-
- /**
- * Creates a container-to-app or app-to-container socket for communication
- * @method register
- * @param {F2.AppConfig} [appConfig] The F2.AppConfig object
- * @param {F2.AppManifest} [appManifest] The F2.AppManifest object
- */
- register: function(appConfig, appManifest) {
- if (!!appConfig && !!appManifest) {
- _apps[appConfig.instanceId] = {
- config:appConfig,
- socket:_createContainerToAppSocket(appConfig, appManifest)
- };
- } else {
- F2.log('Unable to register socket connection. Please check container configuration.');
- }
- }
- };
+ var _apps = {};
+ var _config = false;
+ var _usesAppHandlers = false;
+ var _appHandlerToken = F2.AppHandlers.__f2GetToken();
+ var _loadedScripts = {};
+ var _loadedStyles = {};
+ var _loadingScripts = {};
+
+ /**
+ Appends the app's html to the DOM.
+ @method _afterAppRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} html The string of html
+ @return {Element} The DOM Element that contains the app
+ */
+ function _afterAppRender(appConfig, html) {
+ var handler = _config.afterAppRender || function(_appConfig, _html) {
+ return jQuery(_html).appendTo('body');
+ };
+ var $appContainer = handler(appConfig, html);
+
+ if (_config.afterAppRender && !$appContainer) {
+ F2.log('F2.ContainerConfig.afterAppRender() must return the DOM Element that contains the app');
+ return;
+ }
+
+ jQuery($appContainer).addClass(F2.Constants.Css.APP);
+
+ return $appContainer.get(0);
+ }
+
+ /**
+ Renders the html for an app.
+ @method _appRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0.
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} html The string of html
+ @returns {string} HTML for the app
+ */
+ function _appRender(appConfig, html) {
+ // Apply APP_CONTAINER class and AppID
+ html = _outerHtml(jQuery(html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId));
+
+ // Optionally apply wrapper html
+ if (_config.appRender) {
+ html = _config.appRender(appConfig, html);
+ }
+
+ return _outerHtml(html);
+ }
+
+ /**
+ Rendering hook to allow containers to render some html prior to an app
+ loading.
+ @method _beforeAppRender
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0.
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @return {Element} The DOM Element surrounding the app
+ */
+ function _beforeAppRender(appConfig) {
+ var handler = _config.beforeAppRender || jQuery.noop;
+ return handler(appConfig);
+ }
+
+ /**
+ Handler to inform the container that a script failed to load.
+ @method _onScriptLoadFailure
+ @deprecated This has been replaced with
+ {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0.
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} scriptInfo The path of the script that failed to load or
+ the exception info for the inline script that failed to execute.
+ */
+ function _appScriptLoadFailed(appConfig, scriptInfo) {
+ if (_config.appScriptLoadFailed) {
+ _config.appScriptLoadFailed(appConfig, scriptInfo);
+ }
+ }
+
+ /**
+ Adds properties to the AppConfig object.
+ @method _createAppConfig
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @return {F2.AppConfig} The new F2.AppConfig object, prepopulated with
+ necessary properties.
+ */
+ function _createAppConfig(appConfig) {
+ // Make a copy of the app config to ensure that the original is not modified
+ appConfig = jQuery.extend(true, {}, appConfig);
+
+ // Create the instanceId for the app
+ appConfig.instanceId = appConfig.instanceId || F2.guid();
+
+ // Default the views if not provided
+ appConfig.views = appConfig.views || [];
+ if (!F2.inArray(F2.Constants.Views.HOME, appConfig.views)) {
+ appConfig.views.push(F2.Constants.Views.HOME);
+ }
+
+ // Pass container-defined locale to each app
+ if (F2.ContainerConfig.locale) {
+ appConfig.containerLocale = F2.ContainerConfig.locale;
+ }
+
+ return appConfig;
+ }
+
+ /**
+ Generate an AppConfig from the element's attributes.
+ @method _getAppConfigFromElement
+ @private
+ @param {Element} node The DOM node from which to generate the F2.AppConfig
+ object
+ @return {F2.AppConfig} The new F2.AppConfig object
+ */
+ function _getAppConfigFromElement(node) {
+ var appConfig;
+
+ if (node) {
+ var appId = node.getAttribute('data-f2-appid');
+ var manifestUrl = node.getAttribute('data-f2-manifesturl');
+
+ if (appId && manifestUrl) {
+ appConfig = {
+ appId: appId,
+ enableBatchRequests: node.hasAttribute('data-f2-enablebatchrequests'),
+ isSecure: node.hasAttribute('data-f2-issecure'),
+ manifestUrl: manifestUrl,
+ root: node
+ };
+
+ // See if the user passed in a block of serialized json
+ var contextJson = node.getAttribute('data-f2-context');
+
+ if (contextJson) {
+ try {
+ appConfig.context = F2.parse(contextJson);
+ } catch (e) {
+ console.warn('F2: "data-f2-context" of node is not valid JSON', '"' + e + '"');
+ }
+ }
+ }
+ }
+
+ return appConfig;
+ }
+
+ /**
+ Returns true if the DOM node has children that are not text nodes
+ @method _hasNonTextChildNodes
+ @private
+ @param {Element} node The DOM node
+ @return {bool} True if there are non-text children
+ */
+ function _hasNonTextChildNodes(node) {
+ var hasNodes = false;
+
+ if (node.hasChildNodes()) {
+ for (var i = 0, len = node.childNodes.length; i < len; i++) {
+ if (node.childNodes[i].nodeType === 1) {
+ hasNodes = true;
+ break;
+ }
+ }
+ }
+
+ return hasNodes;
+ }
+
+ /**
+ Adds properties to the ContainerConfig object to take advantage of defaults.
+ @method _hydrateContainerConfig
+ @private
+ @param {F2.ContainerConfig} containerConfig The F2.ContainerConfig object
+ */
+ function _hydrateContainerConfig(containerConfig) {
+ if (!containerConfig.scriptErrorTimeout) {
+ containerConfig.scriptErrorTimeout = F2.ContainerConfig.scriptErrorTimeout;
+ }
+
+ if (containerConfig.debugMode !== true) {
+ containerConfig.debugMode = F2.ContainerConfig.debugMode;
+ }
+
+ if (containerConfig.locale && typeof containerConfig.locale === 'string') {
+ F2.ContainerConfig.locale = containerConfig.locale;
+ }
+ }
+
+ /**
+ Attach app events.
+ @method _initAppEvents
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ */
+ function _initAppEvents(appConfig) {
+ var elementFilter = '.' + F2.Constants.Css.APP_VIEW_TRIGGER + '[' + F2.Constants.Views.DATA_ATTRIBUTE + ']';
+
+ jQuery(appConfig.root).on('click', elementFilter, function(e) {
+ e.preventDefault();
+
+ var view = jQuery(this).attr(F2.Constants.Views.DATA_ATTRIBUTE).toLowerCase();
+
+ // Handle the special REMOVE view
+ if (view === F2.Constants.Views.REMOVE) {
+ F2.removeApp(appConfig.instanceId);
+ } else {
+ appConfig.ui.Views.change(view);
+ }
+ });
+ }
+
+ /**
+ Attach container Events
+ @method _initContainerEvents
+ @private
+ */
+ function _initContainerEvents() {
+ function resizeHandler() {
+ F2.Events.emit(F2.Constants.Events.CONTAINER_WIDTH_CHANGE);
+ }
+
+ var resizeTimeout;
+
+ jQuery(window).on('resize', function() {
+ clearTimeout(resizeTimeout);
+ resizeTimeout = setTimeout(resizeHandler, 100);
+ });
+
+ // Listen for container-broadcasted locale changes
+ F2.Events.on(F2.Constants.Events.CONTAINER_LOCALE_CHANGE, function(data) {
+ if (data.locale && typeof data.locale === 'string') {
+ F2.ContainerConfig.locale = data.locale;
+ }
+ });
+ }
+
+ /**
+ Checks if an element is a placeholder element.
+ @method _isPlaceholderElement
+ @private
+ @param {Element} node The DOM element to check
+ @return {bool} True if the element is a placeholder
+ */
+ function _isPlaceholderElement(node) {
+ return (
+ F2.isNativeDOMNode(node) &&
+ !_hasNonTextChildNodes(node) &&
+ !!node.getAttribute('data-f2-appid') &&
+ !!node.getAttribute('data-f2-manifesturl')
+ );
+ }
+
+ /**
+ Has the container been init?
+ @method _isInit
+ @private
+ @return {bool} True if the container has been init
+ */
+ function _isInit() {
+ return !!_config;
+ }
+
+ /**
+ Instantiates app from its appConfig and stores that in a private collection.
+ @method _createAppInstance
+ @private
+ @param {object} appConfig An {{#crossLink "F2.AppConfig"}}{{/crossLink}}
+ @param {F2.AppManifest.AppContent} appContent The F2.AppManifest.AppContent
+ object.
+ */
+ function _createAppInstance(appConfig, appContent) {
+ appConfig.ui = new F2.UI(appConfig);
+
+ // instantiate F2.App
+ if (F2.Apps[appConfig.appId] !== undefined) {
+ if (typeof F2.Apps[appConfig.appId] === 'function') {
+ // IE
+ setTimeout(function() {
+ _apps[appConfig.instanceId].app = new F2.Apps[appConfig.appId](appConfig, appContent, appConfig.root);
+
+ if (_apps[appConfig.instanceId].app.init !== undefined) {
+ _apps[appConfig.instanceId].app.init();
+ }
+ }, 0);
+ } else {
+ F2.log('app initialization class is defined but not a function. (' + appConfig.appId + ')');
+ }
+ }
+ }
+
+ /**
+ Loads the app's html/css/javascript.
+ @method loadApp
+ @private
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects.
+ @param {F2.AppManifest} [appManifest] The AppManifest object
+ */
+ function _loadApps(appConfigs, appManifest) {
+ appConfigs = [].concat(appConfigs);
+
+ // Check for secure app
+ if (appConfigs.length === 1 && appConfigs[0].isSecure && !_config.isSecureAppPage) {
+ _loadSecureApp(appConfigs[0], appManifest);
+ return;
+ }
+
+ // Check that the number of apps in manifest matches the number requested
+ if (appConfigs.length !== appManifest.apps.length) {
+ F2.log('The number of apps defined in the AppManifest do not match the number requested.', appManifest);
+ return;
+ }
+
+ function _loadStyles(styles, cb) {
+ if (_config.loadStyles) {
+ return _config.loadStyles(styles, cb);
+ }
+
+ // Load styles, see #101
+ var stylesFragment;
+ var useCreateStyleSheet = !!document.createStyleSheet;
+
+ jQuery.each(styles, function(i, e) {
+ var resourceUrl = e;
+ var resourceKey = e.toLowerCase();
+
+ if (_loadedStyles[resourceKey]) {
+ return;
+ }
+
+ if (useCreateStyleSheet) {
+ document.createStyleSheet(resourceUrl);
+ } else {
+ stylesFragment = stylesFragment || [];
+ stylesFragment.push('');
+ }
+
+ _loadedStyles[resourceKey] = true;
+ });
+
+ if (stylesFragment) {
+ jQuery('head').append(stylesFragment.join(''));
+ }
+
+ cb();
+ }
+
+ function _loadScripts(scripts, cb) {
+ if (_config.loadScripts) {
+ return _config.loadScripts(scripts, cb);
+ }
+
+ if (!scripts.length) {
+ return cb();
+ }
+
+ var doc = window.document;
+ var scriptCount = scripts.length;
+ var scriptsLoaded = 0;
+ // http://caniuse.com/#feat=script-async
+ var head = doc && (doc.head || doc.getElementsByTagName('head')[0]);
+ // For IE, put scripts before any elements, but after any
+ var insertBeforeEl = head && head.getElementsByTagName('base')[0] || null;
+ // Check for IE10+ so that we don't rely on onreadystatechange, readyStates for IE6-9
+ var readyStates = (window.addEventListener) ? {} : {
+ 'loaded': true,
+ 'complete': true
+ };
+
+ // Log and emit event for the failed (400,500) scripts
+ function _error(e) {
+ setTimeout(function() {
+ var evtData = {
+ src: e.target.src,
+ appId: appConfigs[0].appId
+ };
+
+ // Send error to console
+ F2.log('Script defined in \'' + evtData.appId + '\' failed to load \'' + evtData.src + '\'');
+
+ // Emit events
+ F2.Events.emit('RESOURCE_FAILED_TO_LOAD', evtData);
+
+ if (!_usesAppHandlers) {
+ _appScriptLoadFailed(appConfigs[0], evtData.src);
+ } else {
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
+ appConfigs[0],
+ evtData.src
+ );
+ }
+ }, _config.scriptErrorTimeout); // Defaults to 7000
+ }
+
+ function _checkComplete() {
+ // Are we done loading all scripts for this app?
+ if (++scriptsLoaded === scriptCount) {
+ // success
+ cb();
+ }
+ }
+
+ function _emptyWaitlist(resourceKey, errorEvt) {
+ var waiting;
+ var waitlist = _loadingScripts[resourceKey];
+
+ if (!waitlist) {
+ return;
+ }
+
+ for (var i = 0; i < waitlist.length; i++) {
+ waiting = waitlist [i];
+
+ if (errorEvt) {
+ waiting.error(errorEvt);
+ } else {
+ waiting.success();
+ }
+ }
+
+ _loadingScripts[resourceKey] = null;
+ }
+
+ // Load scripts and eval inlines once complete
+ jQuery.each(scripts, function(i, url) {
+ var script = doc.createElement('script');
+ var resourceUrl = url;
+ var resourceKey = resourceUrl.toLowerCase();
+
+ // Already finished loading, trigger callback
+ if (_loadedScripts[resourceKey]) {
+ return _checkComplete();
+ }
+
+ // This script is actively loading, add this app to the wait list
+ if (_loadingScripts[resourceKey]) {
+ _loadingScripts[resourceKey].push({
+ success: _checkComplete,
+ error: _error
+ });
+
+ return;
+ }
+
+ // Create the waitlist
+ _loadingScripts[resourceKey] = [];
+
+ // If in debugMode, add cache buster to each script URL
+ if (_config.debugMode) {
+ resourceUrl += '?cachebuster=' + new Date().getTime();
+ }
+
+ // Scripts are loaded asynchronously and executed in order
+ // in supported browsers: http://caniuse.com/#feat=script-async
+ script.async = false;
+ script.type = 'text/javascript';
+ script.charset = 'utf-8';
+
+ script.onerror = function(e) {
+ _error(e);
+ _emptyWaitlist(resourceKey, e);
+ };
+
+ // Use a closure for the load event so that we can dereference the original script
+ script.onload = script.onreadystatechange = function(e) {
+ e = e || window.event; // For older IE
+
+ // Detect when it's done loading
+ // ev.type == 'load' is for all browsers except IE6-9
+ // IE6-9 need to use onreadystatechange and look for
+ // el.readyState in {loaded, complete} (yes, we need both)
+ if (e.type === 'load' || readyStates[script.readyState]) {
+ // Done, cleanup
+ script.onload = script.onreadystatechange = script.onerror = '';
+ // Loaded
+ _loadedScripts[resourceKey] = true;
+ // Increment and check if scripts are done
+ _checkComplete();
+ // Empty wait list
+ _emptyWaitlist(resourceKey);
+ // Dereference script
+ script = null;
+ }
+ };
+
+ // Set the src, start loading
+ script.src = resourceUrl;
+
+ // really is the best
+ head.insertBefore(script, insertBeforeEl);
+ });
+ }
+
+ function _loadInlineScripts(inlines, cb) {
+ // Attempt to use the user provided method
+ if (_config.loadInlineScripts) {
+ _config.loadInlineScripts(inlines, cb);
+ } else {
+ for (var i = 0, len = inlines.length; i < len; i++) {
+ try {
+ eval(inlines[i]);
+ } catch ( exception ) {
+ F2.log('Error loading inline script: ' + exception + '\n\n' + inlines[i]);
+
+ // Emit events
+ F2.Events.emit('RESOURCE_FAILED_TO_LOAD', {
+ appId: appConfigs[0].appId,
+ src: inlines[i],
+ err: exception
+ });
+
+ if (!_usesAppHandlers) {
+ _appScriptLoadFailed(appConfigs[0], exception);
+ } else {
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
+ appConfigs[0],
+ exception
+ );
+ }
+ }
+ }
+ cb();
+ }
+ }
+
+ // Determine whether an element has been added to the page
+ function elementInDocument(element) {
+ if (element) {
+ while (element.parentNode) {
+ element = element.parentNode;
+
+ if (element === document) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ function _loadHtml(apps) {
+ jQuery.each(apps, function(i, a) {
+ if (_isPlaceholderElement(appConfigs[i].root)) {
+ jQuery(appConfigs[i].root)
+ .addClass(F2.Constants.Css.APP)
+ .append(jQuery(a.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfigs[i].appId));
+ } else if (!_usesAppHandlers) {
+ // Load html and save the root node
+ appConfigs[i].root = _afterAppRender(appConfigs[i], _appRender(appConfigs[i], a.html));
+ } else {
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_RENDER,
+ appConfigs[i], // the app config
+ _outerHtml(jQuery(a.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfigs[i].appId))
+ );
+
+ var appId = appConfigs[i].appId;
+ var root = appConfigs[i].root;
+
+ if (!root) {
+ throw new Error('Root for ' + appId + ' must be a native DOM element and cannot be null or undefined. Check your AppHandler callbacks to ensure you have set App root to a native DOM element.');
+ }
+
+ if (!elementInDocument(root)) {
+ throw new Error('App root for ' + appId + ' was not appended to the DOM. Check your AppHandler callbacks to ensure you have rendered the app root to the DOM.');
+ }
+
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_RENDER_AFTER,
+ appConfigs[i] // the app config
+ );
+
+ if (!F2.isNativeDOMNode(root)) {
+ throw new Error('App root for ' + appId + ' must be a native DOM element. Check your AppHandler callbacks to ensure you have set app root to a native DOM element.');
+ }
+ }
+
+ // init events
+ _initAppEvents(appConfigs[i]);
+ });
+ }
+
+ // Pull out the manifest data
+ var manifestScripts = appManifest.scripts || [];
+ var manifestStyles = appManifest.styles || [];
+ var manifestInlines = appManifest.inlineScripts || [];
+ var manifestApps = appManifest.apps || [];
+
+ // Finally, load the styles, html, and scripts
+ _loadStyles(manifestStyles, function() {
+ _loadHtml(manifestApps);
+ _loadScripts(manifestScripts, function() {
+ // Emit event we're done with scripts
+ if (appConfigs[0]) {
+ F2.Events.emit('APP_SCRIPTS_LOADED', {
+ appId: appConfigs[0].appId,
+ scripts: manifestScripts
+ });
+ }
+
+ _loadInlineScripts(manifestInlines, function() {
+ // Create the apps
+ jQuery.each(appConfigs, function(i, a) {
+ _createAppInstance(a, manifestApps[i]);
+ });
+ });
+ });
+ });
+ }
+
+ /**
+ Loads the app's html/css/javascript into an iframe.
+ @method loadSecureApp
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {F2.AppManifest} appManifest The app's html/css/js to be loaded into
+ the page.
+ */
+ function _loadSecureApp(appConfig, appManifest) {
+ // Make sure the container is configured for secure apps
+ if (_config.secureAppPagePath) {
+ if (_isPlaceholderElement(appConfig.root)) {
+ jQuery(appConfig.root)
+ .addClass(F2.Constants.Css.APP)
+ .append(jQuery('')
+ .addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId));
+ } else if (!_usesAppHandlers) {
+ // Create the html container for the iframe
+ appConfig.root = _afterAppRender(appConfig, _appRender(appConfig, ''));
+ } else {
+ var $root = jQuery(appConfig.root);
+
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_RENDER,
+ appConfig,
+ _outerHtml(jQuery(appManifest.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId))
+ );
+
+ if ($root.parents('body:first').length === 0) {
+ throw new Error('App was never rendered on the page. Please check your AppHandler callbacks to ensure you have rendered the app root to the DOM.');
+ }
+
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_RENDER_AFTER,
+ appConfig // the app config
+ );
+
+ if (!appConfig.root) {
+ throw new Error('App Root must be a native dom node and can not be null or undefined. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.');
+ }
+
+ if (!F2.isNativeDOMNode(appConfig.root)) {
+ throw new Error('App Root must be a native dom node. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.');
+ }
+ }
+
+ // Instantiate F2.UI
+ appConfig.ui = new F2.UI(appConfig);
+ // Init events
+ _initAppEvents(appConfig);
+ // Create RPC socket
+ F2.Rpc.register(appConfig, appManifest);
+ } else {
+ F2.log('Unable to load secure app: "secureAppPagePath" is not defined in F2.ContainerConfig.');
+ }
+ }
+
+ function _outerHtml(html) {
+ return jQuery('').append(html).html();
+ }
+
+ /**
+ Checks if the app is valid.
+ @method _validateApp
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @returns {bool} True if the app is valid
+ */
+ function _validateApp(appConfig) {
+ // Check for valid app configurations
+ if (!appConfig.appId) {
+ F2.log('"appId" missing from app object');
+ return false;
+ } else if (!appConfig.root && !appConfig.manifestUrl) {
+ F2.log('"manifestUrl" missing from app object');
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ Checks if the ContainerConfig is valid.
+ @method _validateContainerConfig
+ @private
+ @returns {bool} True if the config is valid
+ */
+ function _validateContainerConfig() {
+ if (_config) {
+ if (_config.xhr) {
+ if (!(typeof _config.xhr === 'function' || typeof _config.xhr === 'object')) {
+ throw new Error('ContainerConfig.xhr should be a function or an object');
+ }
+ if (_config.xhr.dataType && typeof _config.xhr.dataType !== 'function') {
+ throw new Error('ContainerConfig.xhr.dataType should be a function');
+ }
+ if (_config.xhr.type && typeof _config.xhr.type !== 'function') {
+ throw new Error('ContainerConfig.xhr.type should be a function');
+ }
+ if (_config.xhr.url && typeof _config.xhr.url !== 'function') {
+ throw new Error('ContainerConfig.xhr.url should be a function');
+ }
+ }
+ }
+
+ return true;
+ }
+
+ return {
+ /**
+ Gets the current list of apps in the container.
+ @method getContainerState
+ @returns {Array} An array of objects containing the appId
+ */
+ getContainerState: function() {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.getContainerState()');
+ return;
+ }
+
+ return jQuery.map(_apps, function(app) {
+ return {
+ appId: app.config.appId
+ };
+ });
+ },
+ /**
+ Gets the current locale defined by the container.
+ @method getContainerLocale
+ @returns {String} IETF-defined standard language tag
+ */
+ getContainerLocale: function() {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.getContainerLocale()');
+ return;
+ }
+
+ return F2.ContainerConfig.locale;
+ },
+ /**
+ Initializes the container. This method must be called before performing
+ any other actions in the container.
+ @method init
+ @param {F2.ContainerConfig} config The configuration object
+ */
+ init: function(config) {
+ _config = config || {};
+ _validateContainerConfig();
+ _hydrateContainerConfig(_config);
+
+ // Dictates whether we use the old logic or the new logic.
+ // TODO: Remove in v2.0
+ _usesAppHandlers = (_config.beforeAppRender || _config.appRender || _config.afterAppRender || _config.appScriptLoadFailed);
+
+ // Only establish RPC connection if the container supports the secure app page
+ if (!!_config.secureAppPagePath || _config.isSecureAppPage) {
+ F2.Rpc.init(_config.secureAppPagePath ? _config.secureAppPagePath : false);
+ }
+
+ F2.UI.init(_config);
+
+ if (!_config.isSecureAppPage) {
+ _initContainerEvents();
+ }
+ },
+ /**
+ Has the container been init?
+ @method isInit
+ @return {bool} True if the container has been init
+ */
+ isInit: _isInit,
+ /**
+ Automatically load apps that are already defined in the DOM. Elements will
+ be rendered into the location of the placeholder DOM element. Any
+ AppHandlers that are defined will be bypassed.
+ @method loadPlaceholders
+ @param {Element} parentNode The element to search for placeholder apps
+ */
+ loadPlaceholders: function(parentNode) {
+ if (parentNode && !F2.isNativeDOMNode(parentNode)) {
+ throw new Error('"parentNode" must be null or a DOM node');
+ }
+
+ var elements = [];
+ var appConfigs = [];
+
+ /**
+ If the passed in element has a data-f2-appid attribute add it to the
+ list of elements but to not search within that element for other
+ placeholders
+ */
+ if (parentNode) {
+ if (parentNode.hasAttribute('data-f2-appid')) {
+ elements.push(parentNode);
+ }
+ } else if (document.querySelectorAll) {
+ elements = elements.concat(document.querySelectorAll('[data-f2-appid]'));
+ }
+
+ for (var i = 0, len = elements.length; i < len; i++) {
+ var appConfig = _getAppConfigFromElement(elements[i]);
+ appConfigs.push(appConfig);
+ }
+
+ if (appConfigs.length) {
+ F2.registerApps(appConfigs);
+ }
+ },
+ /**
+ Begins the loading process for all apps and/or initialization process for
+ pre-loaded apps. The app will be passed the
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} object which will contain the
+ app's unique instanceId within the container. If the
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}}.root property is populated
+ the app is considered to be a pre-loaded app and will be handled
+ accordingly. Optionally, the
+ {{#crossLink "F2.AppManifest"}}{{/crossLink}} can be passed in and those
+ assets will be used instead of making a request.
+ @method registerApps
+ @param {Array} appConfigs An array of
+ {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
+ @param {Array} [appManifests] An array of
+ {{#crossLink "F2.AppManifest"}}{{/crossLink}}
+ objects. This array must be the same length as the apps array that is
+ passed in. This can be useful if apps are loaded on the server-side and
+ passed down to the client.
+ @example
+ // Traditional App requests.
+ var configs = [{
+ appId: 'com_externaldomain_example_app',
+ context: {},
+ manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
+ }, {
+ appId: 'com_externaldomain_example_app',
+ context: {},
+ manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
+ }, {
+ appId: 'com_externaldomain_example_app2',
+ context: {},
+ manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
+ }];
+
+ F2.init();
+ F2.registerApps(configs);
+ @example
+ // Pre-loaded and tradition apps mixed.
+ // You can preload the same app multiple times as long as you have a unique root for each
+ var configs = [{
+ appId: 'com_mydomain_example_app',
+ context: {},
+ root: 'div#example-app-1',
+ manifestUrl: ''
+ }, {
+ appId: 'com_mydomain_example_app',
+ context: {},
+ root: 'div#example-app-2',
+ manifestUrl: ''
+ }, {
+ appId: 'com_externaldomain_example_app',
+ context: {},
+ manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
+ }];
+
+ F2.init();
+ F2.registerApps(configs);
+ @example
+ // Apps with predefined manifests.
+ var configs = [
+ { appId: 'com_externaldomain_example_app', context: {} },
+ { appId: 'com_externaldomain_example_app', context: {} },
+ { appId: 'com_externaldomain_example_app2', context: {} }
+ ];
+
+ // Pre requested manifest responses
+ var manifests = [{
+ apps: ['
'],
+ inlineScripts: [],
+ scripts: ['http://www.domain.com/js/App2Class.js'],
+ styles: ['http://www.domain.com/css/App2Styles.css']
+ }];
+
+ F2.init();
+ F2.registerApps(configs, manifests);
+ */
+ registerApps: function(appConfigs, appManifests) {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.registerApps()');
+ return;
+ } else if (!appConfigs) {
+ F2.log('At least one AppConfig must be passed when calling F2.registerApps()');
+ return;
+ }
+
+ var appStack = [];
+ var batches = {};
+ var callbackStack = {};
+ var haveManifests = false;
+ appConfigs = [].concat(appConfigs);
+ appManifests = [].concat(appManifests || []);
+ haveManifests = !!appManifests.length;
+
+ // AppConfigs must have a length
+ if (!appConfigs.length) {
+ F2.log('At least one AppConfig must be passed when calling F2.registerApps()');
+ return;
+ } else if (appConfigs.length && haveManifests && appConfigs.length !== appManifests.length) {
+ // Ensure that the array of apps and manifests are equal
+ F2.log('The length of "apps" does not equal the length of "appManifests"');
+ return;
+ }
+
+ // Validate apps, assign instanceId, then determine which apps can be batched together
+ jQuery.each(appConfigs, function(i, a) {
+ // Add properties and methods
+ a = _createAppConfig(a);
+
+ // Set to itself for preloaded apps
+ a.root = a.root || null;
+
+ // Validate the app after setting the root because preloaded apps do not require manifest url
+ if (!_validateApp(a)) {
+ return;
+ }
+
+ _apps[a.instanceId] = {
+ config: a
+ };
+
+ // If the root property is defined then this app is considered to be preloaded and we will run it through that logic.
+ if (a.root && !_isPlaceholderElement(a.root)) {
+ if ((!a.root && typeof a.root !== 'string') && !F2.isNativeDOMNode(a.root)) {
+ F2.log('AppConfig invalid for pre-load, not a valid string and not dom node');
+ F2.log('AppConfig instance:', a);
+ throw new Error('Preloaded appConfig.root property must be a native dom node or a string representing a sizzle selector. Please check your inputs and try again.');
+ } else if (jQuery(a.root).length !== 1) {
+ F2.log('AppConfig invalid for pre-load, root not unique');
+ F2.log('AppConfig instance:', a);
+ F2.log('Number of dom node instances:', jQuery(a.root).length);
+ throw new Error('Preloaded appConfig.root property must map to a unique dom node. Please check your inputs and try again.');
+ }
+
+ // Instantiate F2.App
+ _createAppInstance(a);
+ _initAppEvents(a);
+
+ return;
+ }
+
+ if (!_isPlaceholderElement(a.root)) {
+ if (!_usesAppHandlers) {
+ a.root = _beforeAppRender(a);
+ } else {
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_CREATE_ROOT,
+ a
+ );
+
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_RENDER_BEFORE,
+ a
+ );
+ }
+ }
+
+ // Load the page if we have the manifest
+ if (haveManifests) {
+ _loadApps(a, appManifests[i]);
+ } else {
+ // Check if this app can be batched
+ if (a.enableBatchRequests && !a.isSecure) {
+ batches[a.manifestUrl.toLowerCase()] = batches[a.manifestUrl.toLowerCase()] || [];
+ batches[a.manifestUrl.toLowerCase()].push(a);
+ } else {
+ appStack.push({
+ apps: [a],
+ url: a.manifestUrl
+ });
+ }
+ }
+ });
+
+ if (!haveManifests) {
+ // Add the batches to the appStack
+ jQuery.each(batches, function(i, b) {
+ appStack.push({
+ url: i,
+ apps: b
+ });
+ });
+
+ /*
+ If an app is being loaded more than once on the page, there is the
+ potential that the jsonp callback will be clobbered if the request
+ for the AppManifest for the app comes back at the same time as
+ another request for the same app. We'll create a callbackStack
+ that will ensure that requests for the same app are loaded in order
+ rather than at the same time
+ */
+ jQuery.each(appStack, function(i, req) {
+ // Define the callback function based on the first app's App ID
+ var jsonpCallback = F2.Constants.JSONP_CALLBACK + req.apps[0].appId;
+
+ // Push the request onto the callback stack
+ callbackStack[jsonpCallback] = callbackStack[jsonpCallback] || [];
+ callbackStack[jsonpCallback].push(req);
+ });
+
+ /*
+ Loop through each item in the callback stack and make the request
+ for the AppManifest. When the request is complete, pop the next
+ request off the stack and make the request.
+ */
+ jQuery.each(callbackStack, function(i, requests) {
+ function manifestRequest(jsonpCallback, req) {
+ if (!req) {
+ return;
+ }
+
+ // Setup defaults and callbacks
+ var type = 'GET';
+ var dataType = 'jsonp';
+
+ function completeFunc() {
+ manifestRequest(i, requests.pop());
+ }
+
+ function errorFunc() {
+ jQuery.each(req.apps, function(idx, item) {
+ item.name = item.name || item.appId;
+ F2.log('Removed failed ' + item.name + ' app', item);
+ F2.removeApp(item.instanceId);
+ });
+ }
+
+ function successFunc(appManifest) {
+ _loadApps(req.apps, appManifest);
+ }
+
+ // Optionally fire xhr overrides
+ if (_config.xhr) {
+ if (_config.xhr.dataType) {
+ dataType = _config.xhr.dataType(req.url, req.apps);
+
+ if (typeof dataType !== 'string') {
+ throw new Error('ContainerConfig.xhr.dataType should return a string');
+ }
+ }
+
+ if (_config.xhr.type) {
+ type = _config.xhr.type(req.url, req.apps);
+
+ if (typeof type !== 'string') {
+ throw new Error('ContainerConfig.xhr.type should return a string');
+ }
+ }
+
+ if (_config.xhr.url) {
+ req.url = _config.xhr.url(req.url, req.apps);
+
+ if (typeof req.url !== 'string') {
+ throw new Error('ContainerConfig.xhr.url should return a string');
+ }
+ }
+ }
+
+ // Setup the default request function if an override is not present
+ var requestFunc = _config.xhr;
+
+ if (typeof requestFunc !== 'function') {
+ requestFunc = function(url, apps, successCallback, errorCallback, completeCallback) {
+ jQuery.ajax({
+ url: url,
+ type: type,
+ data: {
+ params: F2.stringify(req.apps, F2.appConfigReplacer)
+ },
+ jsonp: false, // do not put 'callback=' in the query string
+ jsonpCallback: jsonpCallback, // Unique function name
+ dataType: dataType,
+ success: successCallback,
+ error: function(jqxhr, settings, exception) {
+ F2.log('Failed to load app(s)', exception.toString(), req.apps);
+ errorCallback();
+ },
+ complete: completeCallback
+ });
+ };
+ }
+
+ requestFunc(req.url, req.apps, successFunc, errorFunc, completeFunc);
+ }
+
+ manifestRequest(i, requests.pop());
+ });
+ }
+ },
+ /**
+ Removes all apps from the container
+ @method removeAllApps
+ */
+ removeAllApps: function() {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.removeAllApps()');
+ return;
+ }
+
+ jQuery.each(_apps, function(i, a) {
+ F2.removeApp(a.config.instanceId);
+ });
+ },
+ /**
+ Removes an app from the container.
+ @method removeApp
+ @param {string} instanceId The app's instanceId
+ */
+ removeApp: function(instanceId) {
+ if (!_isInit()) {
+ F2.log('F2.init() must be called before F2.removeApp()');
+ return;
+ }
+
+ if (_apps[instanceId]) {
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
+ _apps[instanceId]
+ );
+
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_DESTROY,
+ _apps[instanceId]
+ );
+
+ F2.AppHandlers.__trigger(
+ _appHandlerToken,
+ F2.Constants.AppHandlers.APP_DESTROY_AFTER,
+ _apps[instanceId]
+ );
+
+ delete _apps[instanceId];
+ }
+ }
+ };
})());
-F2.extend('UI', (function(){
-
- var _containerConfig;
-
- /**
- * UI helper methods
- * @class F2.UI
- * @constructor
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- */
- var UI_Class = function(appConfig) {
-
- var _appConfig = appConfig;
- var $root = jQuery(appConfig.root);
-
- var _updateHeight = function(height) {
- height = height || jQuery(_appConfig.root).outerHeight();
-
- if (F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'updateHeight',
- [
- height
- ]
- );
- } else {
- _appConfig.height = height;
- $root.find('iframe').height(_appConfig.height);
- }
- };
-
- //http://getbootstrap.com/javascript/#modals
- var _modalHtml = function(type,message,showCancel){
- return [
- '
',
- '
',
- '
',
- '
',
- '',
- '
',type,'
',
- '
',
- '
',
- message,
- '
',
- '',
- '
',
- '
',
- '
'
- ].join('');
- };
-
- return {
- /**
- * Removes a overlay from an Element on the page
- * @method hideMask
- * @param {string|Element} selector The Element or selector to an Element
- * that currently contains the loader
- */
- hideMask: function(selector) {
- F2.UI.hideMask(_appConfig.instanceId, selector);
- },
- /**
- * Helper methods for creating and using Modals
- * @class F2.UI.Modals
- * @for F2.UI
- */
- Modals: (function(){
-
- var _renderAlert = function(message) {
- return _modalHtml('Alert',message);
- };
-
- var _renderConfirm = function(message) {
- return _modalHtml('Confirm',message,true);
- };
-
- return {
- /**
- * Display an alert message on the page
- * @method alert
- * @param {string} message The message to be displayed
- * @param {function} [callback] The callback to be fired when the user
- * closes the dialog
- * @for F2.UI.Modals
- */
- alert: function(message, callback) {
-
- if (!F2.isInit()) {
- F2.log('F2.init() must be called before F2.UI.Modals.alert()');
- return;
- }
-
- if (F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'Modals.alert',
- [].slice.call(arguments)
- );
- } else {
- // display the alert
- jQuery(_renderAlert(message))
- .on('show.bs.modal', function() {
- var modal = this;
- jQuery(modal).find('.btn-primary').on('click', function() {
- jQuery(modal).modal('hide').remove();
- (callback || jQuery.noop)();
- });
- })
- .modal({backdrop:true});
- }
- },
- /**
- * Display a confirm message on the page
- * @method confirm
- * @param {string} message The message to be displayed
- * @param {function} okCallback The function that will be called when the OK
- * button is pressed
- * @param {function} cancelCallback The function that will be called when
- * the Cancel button is pressed
- * @for F2.UI.Modals
- */
- confirm: function(message, okCallback, cancelCallback) {
-
- if (!F2.isInit()) {
- F2.log('F2.init() must be called before F2.UI.Modals.confirm()');
- return;
- }
-
- if (F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'Modals.confirm',
- [].slice.call(arguments)
- );
- } else {
- // display the alert
- jQuery(_renderConfirm(message))
- .on('show.bs.modal', function() {
- var modal = this;
-
- jQuery(modal).find('.btn-ok').on('click', function() {
- jQuery(modal).modal('hide').remove();
- (okCallback || jQuery.noop)();
- });
-
- jQuery(modal).find('.btn-cancel').on('click', function() {
- jQuery(modal).modal('hide').remove();
- (cancelCallback || jQuery.noop)();
- });
- })
- .modal({backdrop:true});
- }
- }
- };
- })(),
- /**
- * Sets the title of the app as shown in the browser. Depending on the
- * container HTML, this method may do nothing if the container has not been
- * configured properly or else the container provider does not allow Title's
- * to be set.
- * @method setTitle
- * @params {string} title The title of the app
- * @for F2.UI
- */
- setTitle: function(title) {
-
- if (F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'setTitle',
- [
- title
- ]
- );
- } else {
- jQuery(_appConfig.root).find('.' + F2.Constants.Css.APP_TITLE).text(title);
- }
- },
- /**
- * Display an ovarlay over an Element on the page
- * @method showMask
- * @param {string|Element} selector The Element or selector to an Element
- * over which to display the loader
- * @param {bool} showLoading Display a loading icon
- */
- showMask: function(selector, showLoader) {
- F2.UI.showMask(_appConfig.instanceId, selector, showLoader);
- },
- /**
- * For secure apps, this method updates the size of the iframe that
- * contains the app. **Note: It is recommended that app developers call
- * this method anytime Elements are added or removed from the DOM**
- * @method updateHeight
- * @params {int} height The height of the app
- */
- updateHeight: _updateHeight,
- /**
- * Helper methods for creating and using Views
- * @class F2.UI.Views
- * @for F2.UI
- */
- Views: (function(){
-
- var _events = new EventEmitter2();
- var _rValidEvents = /change/i;
-
- // unlimited listeners, set to > 0 for debugging
- _events.setMaxListeners(0);
-
- var _isValid = function(eventName) {
- if (_rValidEvents.test(eventName)) {
- return true;
- } else {
- F2.log('"' + eventName + '" is not a valid F2.UI.Views event name');
- return false;
- }
- };
-
- return {
- /**
- * Change the current view for the app or add an event listener
- * @method change
- * @param {string|function} [input] If a string is passed in, the view
- * will be changed for the app. If a function is passed in, a change
- * event listener will be added.
- * @for F2.UI.Views
- */
- change: function(input) {
-
- if (typeof input === 'function') {
- this.on('change', input);
- } else if (typeof input === 'string') {
-
- if (_appConfig.isSecure && !F2.Rpc.isRemote(_appConfig.instanceId)) {
- F2.Rpc.call(
- _appConfig.instanceId,
- F2.Constants.Sockets.UI_RPC,
- 'Views.change',
- [].slice.call(arguments)
- );
- } else if (F2.inArray(input, _appConfig.views)) {
- jQuery('.' + F2.Constants.Css.APP_VIEW, $root)
- .addClass('hide')
- .filter('[data-f2-view="' + input + '"]', $root)
- .removeClass('hide');
-
- _updateHeight();
- _events.emit('change', input);
- }
- }
- },
- /**
- * Removes a view event listener
- * @method off
- * @param {string} event The event name
- * @param {function} listener The function that will be removed
- * @for F2.UI.Views
- */
- off: function(event, listener) {
- if (_isValid(event)) {
- _events.off(event, listener);
- }
- },
- /**
- * Adds a view event listener
- * @method on
- * @param {string} event The event name
- * @param {function} listener The function to be fired when the event is
- * emitted
- * @for F2.UI.Views
- */
- on: function(event, listener) {
- if (_isValid(event)) {
- _events.on(event, listener);
- }
- }
- };
- })()
- };
- };
-
- /**
- * Removes a overlay from an Element on the page
- * @method hideMask
- * @static
- * @param {string} instanceId The Instance ID of the app
- * @param {string|Element} selector The Element or selector to an Element
- * that currently contains the loader
- * @for F2.UI
- */
- UI_Class.hideMask = function(instanceId, selector) {
-
- if (!F2.isInit()) {
- F2.log('F2.init() must be called before F2.UI.hideMask()');
- return;
- }
- if (F2.Rpc.isRemote(instanceId) && !jQuery(selector).is('.' + F2.Constants.Css.APP)) {
- F2.Rpc.call(
- instanceId,
- F2.Constants.Sockets.RPC,
- 'F2.UI.hideMask',
- [
- instanceId,
- // must only pass the selector argument. if we pass an Element there
- // will be F2.stringify() errors
- jQuery(selector).selector
- ]
- );
- } else {
-
- var container = jQuery(selector);
- container.find('> .' + F2.Constants.Css.MASK).remove();
- container.removeClass(F2.Constants.Css.MASK_CONTAINER);
-
- // if the element contains this data property, we need to reset static
- // position
- if (container.data(F2.Constants.Css.MASK_CONTAINER)) {
- container.css({'position':'static'});
- }
- }
- };
-
- /**
- *
- * @method init
- * @static
- * @param {F2.ContainerConfig} containerConfig The F2.ContainerConfig object
- */
- UI_Class.init = function(containerConfig) {
- _containerConfig = containerConfig;
-
- // set defaults
- _containerConfig.UI = jQuery.extend(true, {}, F2.ContainerConfig.UI, _containerConfig.UI || {});
- };
-
- /**
- * Display an ovarlay over an Element on the page
- * @method showMask
- * @static
- * @param {string} instanceId The Instance ID of the app
- * @param {string|Element} selector The Element or selector to an Element
- * over which to display the loader
- * @param {bool} showLoading Display a loading icon
- */
- UI_Class.showMask = function(instanceId, selector, showLoading) {
-
- if (!F2.isInit()) {
- F2.log('F2.init() must be called before F2.UI.showMask()');
- return;
- }
-
- if (F2.Rpc.isRemote(instanceId) && jQuery(selector).is('.' + F2.Constants.Css.APP)) {
- F2.Rpc.call(
- instanceId,
- F2.Constants.Sockets.RPC,
- 'F2.UI.showMask',
- [
- instanceId,
- // must only pass the selector argument. if we pass an Element there
- // will be F2.stringify() errors
- jQuery(selector).selector,
- showLoading
- ]
- );
- } else {
-
- if (showLoading && !_containerConfig.UI.Mask.loadingIcon) {
- F2.log('Unable to display loading icon. Please set F2.ContainerConfig.UI.Mask.loadingIcon when calling F2.init();');
- }
-
- var container = jQuery(selector).addClass(F2.Constants.Css.MASK_CONTAINER);
- var mask = jQuery('
')
- .height('100%' /*container.outerHeight()*/)
- .width('100%' /*container.outerWidth()*/)
- .addClass(F2.Constants.Css.MASK);
-
- // set inline styles if useClasses is false
- if (!_containerConfig.UI.Mask.useClasses) {
- mask.css({
- 'background-color':_containerConfig.UI.Mask.backgroundColor,
- 'background-image': !!_containerConfig.UI.Mask.loadingIcon ? ('url(' + _containerConfig.UI.Mask.loadingIcon + ')') : '',
- 'background-position':'50% 50%',
- 'background-repeat':'no-repeat',
- 'display':'block',
- 'left':0,
- 'min-height':30,
- 'padding':0,
- 'position':'absolute',
- 'top':0,
- 'z-index':_containerConfig.UI.Mask.zIndex,
-
- 'filter':'alpha(opacity=' + (_containerConfig.UI.Mask.opacity * 100) + ')',
- 'opacity':_containerConfig.UI.Mask.opacity
- });
- }
-
- // only set the position if the container is currently static
- if (container.css('position') === 'static') {
- container.css({'position':'relative'});
- // setting this data property tells hideMask to set the position
- // back to static
- container.data(F2.Constants.Css.MASK_CONTAINER, true);
- }
-
- // add the mask to the container
- container.append(mask);
- }
- };
-
- return UI_Class;
-})());
/**
- * Root namespace of the F2 SDK
- * @module f2
- * @class F2
- */
-F2.extend('', (function() {
-
- var _apps = {};
- var _config = false;
- var _bUsesAppHandlers = false;
- var _sAppHandlerToken = F2.AppHandlers.__f2GetToken();
- var _loadedScripts = {};
- var _loadedStyles = {};
- var _loadingScripts = {};
-
- /**
- * Appends the app's html to the DOM
- * @method _afterAppRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} html The string of html
- * @return {Element} The DOM Element that contains the app
- */
- var _afterAppRender = function(appConfig, html) {
-
- var handler = _config.afterAppRender || function(appConfig, html) {
- return jQuery(html).appendTo('body');
- };
- var appContainer = handler(appConfig, html);
-
- if ( !! _config.afterAppRender && !appContainer) {
- F2.log('F2.ContainerConfig.afterAppRender() must return the DOM Element that contains the app');
- return;
- }
- else {
- // apply APP class
- jQuery(appContainer).addClass(F2.Constants.Css.APP);
- return appContainer.get(0);
- }
- };
-
- /**
- * Renders the html for an app.
- * @method _appRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {string} html The string of html
- */
- var _appRender = function(appConfig, html) {
-
- // apply APP_CONTAINER class and AppID
- html = _outerHtml(jQuery(html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId));
-
- // optionally apply wrapper html
- if (_config.appRender) {
- html = _config.appRender(appConfig, html);
- }
-
- return _outerHtml(html);
- };
-
- /**
- * Rendering hook to allow containers to render some html prior to an app
- * loading
- * @method _beforeAppRender
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @return {Element} The DOM Element surrounding the app
- */
- var _beforeAppRender = function(appConfig) {
- var handler = _config.beforeAppRender || jQuery.noop;
- return handler(appConfig);
- };
-
- /**
- * Handler to inform the container that a script failed to load
- * @method _onScriptLoadFailure
- * @deprecated This has been replaced with {{#crossLink "F2.AppHandlers"}}{{/crossLink}} and will be removed in v2.0
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param scriptInfo The path of the script that failed to load or the exception info
- * for the inline script that failed to execute
- */
- var _appScriptLoadFailed = function(appConfig, scriptInfo) {
- var handler = _config.appScriptLoadFailed || jQuery.noop;
- return handler(appConfig, scriptInfo);
- };
-
- /**
- * Adds properties to the AppConfig object
- * @method _createAppConfig
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @return {F2.AppConfig} The new F2.AppConfig object, prepopulated with
- * necessary properties
- */
- var _createAppConfig = function(appConfig) {
-
- // make a copy of the app config to ensure that the original is not modified
- appConfig = jQuery.extend(true, {}, appConfig);
-
- // create the instanceId for the app
- appConfig.instanceId = appConfig.instanceId || F2.guid();
-
- // default the views if not provided
- appConfig.views = appConfig.views || [];
- if (!F2.inArray(F2.Constants.Views.HOME, appConfig.views)) {
- appConfig.views.push(F2.Constants.Views.HOME);
- }
-
- //pass container-defined locale to each app
- if (F2.ContainerConfig.locale){
- appConfig.containerLocale = F2.ContainerConfig.locale;
- }
-
- return appConfig;
- };
-
- /**
- * Generate an AppConfig from the element's attributes
- * @method _getAppConfigFromElement
- * @private
- * @param {Element} node The DOM node from which to generate the F2.AppConfig object
- * @return {F2.AppConfig} The new F2.AppConfig object
- */
- var _getAppConfigFromElement = function(node) {
- var appConfig;
-
- if (node) {
- var appId = node.getAttribute('data-f2-appid');
- var manifestUrl = node.getAttribute('data-f2-manifesturl');
-
- if (appId && manifestUrl) {
- appConfig = {
- appId: appId,
- enableBatchRequests: node.hasAttribute('data-f2-enablebatchrequests'),
- isSecure: node.hasAttribute('data-f2-issecure'),
- manifestUrl: manifestUrl,
- root: node
- };
-
- // See if the user passed in a block of serialized json
- var contextJson = node.getAttribute('data-f2-context');
-
- if (contextJson) {
- try {
- appConfig.context = F2.parse(contextJson);
- }
- catch (e) {
- console.warn('F2: "data-f2-context" of node is not valid JSON', '"' + e + '"');
- }
- }
- }
- }
-
- return appConfig;
- };
-
- /**
- * Returns true if the DOM node has children that are not text nodes
- * @method _hasNonTextChildNodes
- * @private
- * @param {Element} node The DOM node
- * @return {bool} True if there are non-text children
- */
- var _hasNonTextChildNodes = function(node) {
- var hasNodes = false;
-
- if (node.hasChildNodes()) {
- for (var i = 0, len = node.childNodes.length; i < len; i++) {
- if (node.childNodes[i].nodeType === 1) {
- hasNodes = true;
- break;
- }
- }
- }
-
- return hasNodes;
- };
-
- /**
- * Adds properties to the ContainerConfig object to take advantage of defaults
- * @method _hydrateContainerConfig
- * @private
- * @param {F2.ContainerConfig} containerConfig The F2.ContainerConfig object
- */
- var _hydrateContainerConfig = function(containerConfig) {
-
- if (!containerConfig.scriptErrorTimeout) {
- containerConfig.scriptErrorTimeout = F2.ContainerConfig.scriptErrorTimeout;
- }
-
- if (containerConfig.debugMode !== true) {
- containerConfig.debugMode = F2.ContainerConfig.debugMode;
- }
-
- if (containerConfig.locale && typeof containerConfig.locale == 'string'){
- F2.ContainerConfig.locale = containerConfig.locale;
- }
- };
-
- /**
- * Attach app events
- * @method _initAppEvents
- * @private
- */
- var _initAppEvents = function(appConfig) {
-
- jQuery(appConfig.root).on('click', '.' + F2.Constants.Css.APP_VIEW_TRIGGER + '[' + F2.Constants.Views.DATA_ATTRIBUTE + ']', function(event) {
-
- event.preventDefault();
-
- var view = jQuery(this).attr(F2.Constants.Views.DATA_ATTRIBUTE).toLowerCase();
-
- // handle the special REMOVE view
- if (view == F2.Constants.Views.REMOVE) {
- F2.removeApp(appConfig.instanceId);
- }
- else {
- appConfig.ui.Views.change(view);
- }
- });
- };
-
- /**
- * Attach container Events
- * @method _initContainerEvents
- * @private
- */
- var _initContainerEvents = function() {
-
- var resizeTimeout;
- var resizeHandler = function() {
- F2.Events.emit(F2.Constants.Events.CONTAINER_WIDTH_CHANGE);
- };
-
- jQuery(window).on('resize', function() {
- clearTimeout(resizeTimeout);
- resizeTimeout = setTimeout(resizeHandler, 100);
- });
-
- //listen for container-broadcasted locale changes
- F2.Events.on(F2.Constants.Events.CONTAINER_LOCALE_CHANGE,function(data){
- if (data.locale && typeof data.locale == 'string'){
- F2.ContainerConfig.locale = data.locale;
- }
- });
- };
-
- /**
- * Checks if an element is a placeholder element
- * @method _isPlaceholderElement
- * @private
- * @param {Element} node The DOM element to check
- * @return {bool} True if the element is a placeholder
- */
- var _isPlaceholderElement = function(node) {
- return (
- F2.isNativeDOMNode(node) &&
- !_hasNonTextChildNodes(node) &&
- !!node.getAttribute('data-f2-appid') &&
- !!node.getAttribute('data-f2-manifesturl')
- );
- };
-
- /**
- * Has the container been init?
- * @method _isInit
- * @private
- * @return {bool} True if the container has been init
- */
- var _isInit = function() {
- return !!_config;
- };
-
- /**
- * Instantiates each app from it's appConfig and stores that in a local private collection
- * @method _createAppInstance
- * @private
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
- */
- var _createAppInstance = function(appConfig, appContent) {
- // instantiate F2.UI
- appConfig.ui = new F2.UI(appConfig);
-
- // instantiate F2.App
- if (F2.Apps[appConfig.appId] !== undefined) {
- if (typeof F2.Apps[appConfig.appId] === 'function') {
-
- // IE
- setTimeout(function() {
- _apps[appConfig.instanceId].app = new F2.Apps[appConfig.appId](appConfig, appContent, appConfig.root);
- if (_apps[appConfig.instanceId].app['init'] !== undefined) {
- _apps[appConfig.instanceId].app.init();
- }
- }, 0);
-
- }
- else {
- F2.log('app initialization class is defined but not a function. (' + appConfig.appId + ')');
- }
- }
- };
-
- /**
- * Loads the app's html/css/javascript
- * @method loadApp
- * @private
- * @param {Array} appConfigs An array of
- * {{#crossLink "F2.AppConfig"}}{{/crossLink}} objects
- * @param {F2.AppManifest} [appManifest] The AppManifest object
- */
- var _loadApps = function(appConfigs, appManifest) {
- appConfigs = [].concat(appConfigs);
-
- // check for secure app
- if (appConfigs.length == 1 && appConfigs[0].isSecure && !_config.isSecureAppPage) {
- _loadSecureApp(appConfigs[0], appManifest);
- return;
- }
-
- // check that the number of apps in manifest matches the number requested
- if (appConfigs.length != appManifest.apps.length) {
- F2.log('The number of apps defined in the AppManifest do not match the number requested.', appManifest);
- return;
- }
-
- // Fn for loading manifest Styles
- var _loadStyles = function(styles, cb) {
- // Attempt to use the user provided method
- if (_config.loadStyles) {
- return _config.loadStyles(styles, cb);
- }
-
- // load styles, see #101
- var stylesFragment = null,
- useCreateStyleSheet = !! document.createStyleSheet;
-
- jQuery.each(styles, function(i, e) {
- var resourceUrl = e,
- resourceKey = e.toLowerCase();
-
- if (_loadedStyles[resourceKey]) {
- return;
- }
-
- if (useCreateStyleSheet) {
- document.createStyleSheet(resourceUrl);
- }
- else {
- stylesFragment = stylesFragment || [];
- stylesFragment.push('');
- }
-
- _loadedStyles[resourceKey] = true;
- });
-
- if (stylesFragment) {
- jQuery('head').append(stylesFragment.join(''));
- }
-
- cb();
- };
-
- // For loading AppManifest.scripts
- // Parts derived from curljs, headjs, requirejs, dojo
- var _loadScripts = function(scripts, cb) {
- // Attempt to use the user provided method
- if (_config.loadScripts) {
- return _config.loadScripts(scripts, cb);
- }
-
- if (!scripts.length) {
- return cb();
- }
-
- var doc = window.document;
- var scriptCount = scripts.length;
- var scriptsLoaded = 0;
- //http://caniuse.com/#feat=script-async
- // var supportsAsync = 'async' in doc.createElement('script') || 'MozAppearance' in doc.documentElement.style || window.opera;
- var head = doc && (doc['head'] || doc.getElementsByTagName('head')[0]);
- // to keep IE from crying, we need to put scripts before any
- // elements, but after any . this should do it:
- var insertBeforeEl = head && head.getElementsByTagName('base')[0] || null;
- // Check for IE10+ so that we don't rely on onreadystatechange, readyStates for IE6-9
- var readyStates = 'addEventListener' in window ? {} : { 'loaded': true, 'complete': true };
-
- // Log and emit event for the failed (400,500) scripts
- var _error = function(e) {
- setTimeout(function() {
- var evtData = {
- src: e.target.src,
- appId: appConfigs[0].appId
- };
-
- // Send error to console
- F2.log('Script defined in \'' + evtData.appId + '\' failed to load \'' + evtData.src + '\'');
-
- // Emit events
- F2.Events.emit('RESOURCE_FAILED_TO_LOAD', evtData);
-
- if (!_bUsesAppHandlers) {
- _appScriptLoadFailed(appConfigs[0], evtData.src);
- }
- else {
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
- appConfigs[0],
- evtData.src
- );
- }
- }, _config.scriptErrorTimeout); // Defaults to 7000
- };
-
- var _checkComplete = function() {
- // Are we done loading all scripts for this app?
- if (++scriptsLoaded === scriptCount) {
- // success
- cb();
- }
- };
-
- var _emptyWaitlist = function(resourceKey, errorEvt) {
- var waiting,
- waitlist = _loadingScripts[resourceKey];
-
- if (!waitlist) {
- return;
- }
-
- for (var i=0; i really is the best
- head.insertBefore(script, insertBeforeEl);
- });
- };
-
- var _loadInlineScripts = function(inlines, cb) {
- // Attempt to use the user provided method
- if (_config.loadInlineScripts) {
- _config.loadInlineScripts(inlines, cb);
- }
- else {
- for (var i = 0, len = inlines.length; i < len; i++) {
- try {
- eval(inlines[i]);
- }
- catch (exception) {
- F2.log('Error loading inline script: ' + exception + '\n\n' + inlines[i]);
-
- // Emit events
- F2.Events.emit('RESOURCE_FAILED_TO_LOAD', { appId:appConfigs[0].appId, src: inlines[i], err: exception });
-
- if (!_bUsesAppHandlers) {
- _appScriptLoadFailed(appConfigs[0], exception);
- }
- else {
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,
- appConfigs[0],
- exception
- );
- }
- }
- }
- cb();
- }
- };
-
- // Determine whether an element has been added to the page
- var elementInDocument = function(element) {
- if (element) {
- while (element.parentNode) {
- element = element.parentNode;
-
- if (element === document) {
- return true;
- }
- }
- }
-
- return false;
- };
-
- // Fn for loading manifest app html
- var _loadHtml = function(apps) {
- jQuery.each(apps, function(i, a) {
- if (_isPlaceholderElement(appConfigs[i].root)) {
- jQuery(appConfigs[i].root)
- .addClass(F2.Constants.Css.APP)
- .append(jQuery(a.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfigs[i].appId));
- }
- else if (!_bUsesAppHandlers) {
- // load html and save the root node
- appConfigs[i].root = _afterAppRender(appConfigs[i], _appRender(appConfigs[i], a.html));
- }
- else {
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER,
- appConfigs[i], // the app config
- _outerHtml(jQuery(a.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfigs[i].appId))
- );
-
- var appId = appConfigs[i].appId,
- root = appConfigs[i].root;
-
- if (!root) {
- throw ('Root for ' + appId + ' must be a native DOM element and cannot be null or undefined. Check your AppHandler callbacks to ensure you have set App root to a native DOM element.');
- }
-
- if (!elementInDocument(root)) {
- throw ('App root for ' + appId + ' was not appended to the DOM. Check your AppHandler callbacks to ensure you have rendered the app root to the DOM.');
- }
-
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER_AFTER,
- appConfigs[i] // the app config
- );
-
- if (!F2.isNativeDOMNode(root)) {
- throw ('App root for ' + appId + ' must be a native DOM element. Check your AppHandler callbacks to ensure you have set app root to a native DOM element.');
- }
- }
-
- // init events
- _initAppEvents(appConfigs[i]);
- });
- };
-
- // Pull out the manifest data
- var scripts = appManifest.scripts || [];
- var styles = appManifest.styles || [];
- var inlines = appManifest.inlineScripts || [];
- var apps = appManifest.apps || [];
-
- // Finally, load the styles, html, and scripts
- _loadStyles(styles, function() {
- // Put the html on the page
- _loadHtml(apps);
- // Add the script content to the page
- _loadScripts(scripts, function() {
- // emit event we're done with scripts
- if (appConfigs[0]){ F2.Events.emit('APP_SCRIPTS_LOADED', { appId:appConfigs[0].appId, scripts:scripts }); }
- // Load any inline scripts
- _loadInlineScripts(inlines, function() {
- // Create the apps
- jQuery.each(appConfigs, function(i, a) {
- _createAppInstance(a, appManifest.apps[i]);
- });
- });
- });
- });
- };
-
- /**
- * Loads the app's html/css/javascript into an iframe
- * @method loadSecureApp
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @param {F2.AppManifest} appManifest The app's html/css/js to be loaded into the
- * page.
- */
- var _loadSecureApp = function(appConfig, appManifest) {
-
- // make sure the container is configured for secure apps
- if (_config.secureAppPagePath) {
- if (_isPlaceholderElement(appConfig.root)) {
- jQuery(appConfig.root)
- .addClass(F2.Constants.Css.APP)
- .append(jQuery('').addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId));
- }
- else if (!_bUsesAppHandlers) {
- // create the html container for the iframe
- appConfig.root = _afterAppRender(appConfig, _appRender(appConfig, ''));
- }
- else {
- var $root = jQuery(appConfig.root);
-
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER,
- appConfig, // the app config
- _outerHtml(jQuery(appManifest.html).addClass(F2.Constants.Css.APP_CONTAINER + ' ' + appConfig.appId))
- );
-
- if ($root.parents('body:first').length === 0) {
- throw ('App was never rendered on the page. Please check your AppHandler callbacks to ensure you have rendered the app root to the DOM.');
- }
-
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER_AFTER,
- appConfig // the app config
- );
-
- if (!appConfig.root) {
- throw ('App Root must be a native dom node and can not be null or undefined. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.');
- }
-
- if (!F2.isNativeDOMNode(appConfig.root)) {
- throw ('App Root must be a native dom node. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.');
- }
- }
-
- // instantiate F2.UI
- appConfig.ui = new F2.UI(appConfig);
- // init events
- _initAppEvents(appConfig);
- // create RPC socket
- F2.Rpc.register(appConfig, appManifest);
- }
- else {
- F2.log('Unable to load secure app: "secureAppPagePath" is not defined in F2.ContainerConfig.');
- }
- };
-
- var _outerHtml = function(html) {
- return jQuery('').append(html).html();
- };
-
- /**
- * Checks if the app is valid
- * @method _validateApp
- * @private
- * @param {F2.AppConfig} appConfig The F2.AppConfig object
- * @returns {bool} True if the app is valid
- */
- var _validateApp = function(appConfig) {
-
- // check for valid app configurations
- if (!appConfig.appId) {
- F2.log('"appId" missing from app object');
- return false;
- }
- else if (!appConfig.root && !appConfig.manifestUrl) {
- F2.log('"manifestUrl" missing from app object');
- return false;
- }
-
- return true;
- };
-
- /**
- * Checks if the ContainerConfig is valid
- * @method _validateContainerConfig
- * @private
- * @returns {bool} True if the config is valid
- */
- var _validateContainerConfig = function() {
-
- if (_config) {
- if (_config.xhr) {
- if (!(typeof _config.xhr === 'function' || typeof _config.xhr === 'object')) {
- throw ('ContainerConfig.xhr should be a function or an object');
- }
- if (_config.xhr.dataType && typeof _config.xhr.dataType !== 'function') {
- throw ('ContainerConfig.xhr.dataType should be a function');
- }
- if (_config.xhr.type && typeof _config.xhr.type !== 'function') {
- throw ('ContainerConfig.xhr.type should be a function');
- }
- if (_config.xhr.url && typeof _config.xhr.url !== 'function') {
- throw ('ContainerConfig.xhr.url should be a function');
- }
- }
- }
-
- return true;
- };
-
- return {
- /**
- * Gets the current list of apps in the container
- * @method getContainerState
- * @returns {Array} An array of objects containing the appId
- */
- getContainerState: function() {
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.getContainerState()');
- return;
- }
-
- return jQuery.map(_apps, function(app) {
- return {
- appId: app.config.appId
- };
- });
- },
- /**
- * Gets the current locale defined by the container
- * @method getContainerLocale
- * @returns {String} IETF-defined standard language tag
- */
- getContainerLocale: function() {
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.getContainerLocale()');
- return;
- }
-
- return F2.ContainerConfig.locale;
- },
- /**
- * Initializes the container. This method must be called before performing
- * any other actions in the container.
- * @method init
- * @param {F2.ContainerConfig} config The configuration object
- */
- init: function(config) {
- _config = config || {};
-
- _validateContainerConfig();
-
- _hydrateContainerConfig(_config);
-
- // dictates whether we use the old logic or the new logic.
- // TODO: Remove in v2.0
- _bUsesAppHandlers = (!_config.beforeAppRender && !_config.appRender && !_config.afterAppRender && !_config.appScriptLoadFailed);
-
- // only establish RPC connection if the container supports the secure app page
- if ( !! _config.secureAppPagePath || _config.isSecureAppPage) {
- F2.Rpc.init( !! _config.secureAppPagePath ? _config.secureAppPagePath : false);
- }
-
- F2.UI.init(_config);
-
- if (!_config.isSecureAppPage) {
- _initContainerEvents();
- }
- },
- /**
- * Has the container been init?
- * @method isInit
- * @return {bool} True if the container has been init
- */
- isInit: _isInit,
- /**
- * Automatically load apps that are already defined in the DOM. Elements will
- * be rendered into the location of the placeholder DOM element. Any AppHandlers
- * that are defined will be bypassed.
- * @method loadPlaceholders
- * @param {Element} parentNode The element to search for placeholder apps
- */
- loadPlaceholders: function(parentNode) {
-
- var elements = [],
- appConfigs = [],
- add = function(e) {
- if (!e) { return; }
- elements.push(e);
- },
- addAll = function(els) {
- if (!els) { return; }
- for (var i = 0, len = els.length; i < len; i++) {
- add(els[i]);
- }
- };
-
- if (!!parentNode && !F2.isNativeDOMNode(parentNode)) {
- throw ('"parentNode" must be null or a DOM node');
- }
-
- // if the passed in element has a data-f2-appid attribute add
- // it to the list of elements but to not search within that
- // element for other placeholders
- if (parentNode && parentNode.hasAttribute('data-f2-appid')) {
- add(parentNode);
- } else {
-
- // find placeholders within the parentNode only if
- // querySelectorAll exists
- parentNode = parentNode || document;
- if (parentNode.querySelectorAll) {
- addAll(parentNode.querySelectorAll('[data-f2-appid]'));
- }
- }
-
- for (var i = 0, len = elements.length; i < len; i++) {
- var appConfig = _getAppConfigFromElement(elements[i]);
- appConfigs.push(appConfig);
- }
-
- if (appConfigs.length) {
- F2.registerApps(appConfigs);
- }
- },
- /**
- * Begins the loading process for all apps and/or initialization process for pre-loaded apps.
- * The app will be passed the {{#crossLink "F2.AppConfig"}}{{/crossLink}} object which will
- * contain the app's unique instanceId within the container. If the
- * {{#crossLink "F2.AppConfig"}}{{/crossLink}}.root property is populated the app is considered
- * to be a pre-loaded app and will be handled accordingly. Optionally, the
- * {{#crossLink "F2.AppManifest"}}{{/crossLink}} can be passed in and those
- * assets will be used instead of making a request.
- * @method registerApps
- * @param {Array} appConfigs An array of {{#crossLink "F2.AppConfig"}}{{/crossLink}}
- * objects
- * @param {Array} [appManifests] An array of
- * {{#crossLink "F2.AppManifest"}}{{/crossLink}}
- * objects. This array must be the same length as the apps array that is
- * objects. This array must be the same length as the apps array that is
- * passed in. This can be useful if apps are loaded on the server-side and
- * passed down to the client.
- * @example
- * Traditional App requests.
- *
- * // Traditional f2 app configs
- * var arConfigs = [
- * {
- * appId: 'com_externaldomain_example_app',
- * context: {},
- * manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
- * },
- * {
- * appId: 'com_externaldomain_example_app',
- * context: {},
- * manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
- * },
- * {
- * appId: 'com_externaldomain_example_app2',
- * context: {},
- * manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
- * }
- * ];
- *
- * F2.init();
- * F2.registerApps(arConfigs);
- *
- * @example
- * Pre-loaded and tradition apps mixed.
- *
- * // Pre-loaded apps and traditional f2 app configs
- * // you can preload the same app multiple times as long as you have a unique root for each
- * var arConfigs = [
- * {
- * appId: 'com_mydomain_example_app',
- * context: {},
- * root: 'div#example-app-1',
- * manifestUrl: ''
- * },
- * {
- * appId: 'com_mydomain_example_app',
- * context: {},
- * root: 'div#example-app-2',
- * manifestUrl: ''
- * },
- * {
- * appId: 'com_externaldomain_example_app',
- * context: {},
- * manifestUrl: 'http://www.externaldomain.com/F2/AppManifest'
- * }
- * ];
- *
- * F2.init();
- * F2.registerApps(arConfigs);
- *
- * @example
- * Apps with predefined manifests.
- *
- * // Traditional f2 app configs
- * var arConfigs = [
- * {appId: 'com_externaldomain_example_app', context: {}},
- * {appId: 'com_externaldomain_example_app', context: {}},
- * {appId: 'com_externaldomain_example_app2', context: {}}
- * ];
- *
- * // Pre requested manifest responses
- * var arManifests = [
- * {
- * apps: ['
'],
- * inlineScripts: [],
- * scripts: ['http://www.domain.com/js/App2Class.js'],
- * styles: ['http://www.domain.com/css/App2Styles.css']
- * }
- * ];
- *
- * F2.init();
- * F2.registerApps(arConfigs, arManifests);
- */
- registerApps: function(appConfigs, appManifests) {
-
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.registerApps()');
- return;
- }
- else if (!appConfigs) {
- F2.log('At least one AppConfig must be passed when calling F2.registerApps()');
- return;
- }
-
- var appStack = [];
- var batches = {};
- var callbackStack = {};
- var haveManifests = false;
- appConfigs = [].concat(appConfigs);
- appManifests = [].concat(appManifests || []);
- haveManifests = !! appManifests.length;
-
- // appConfigs must have a length
- if (!appConfigs.length) {
- F2.log('At least one AppConfig must be passed when calling F2.registerApps()');
- return;
- // ensure that the array of apps and manifests are qual
- }
- else if (appConfigs.length && haveManifests && appConfigs.length != appManifests.length) {
- F2.log('The length of "apps" does not equal the length of "appManifests"');
- return;
- }
-
- // validate each app and assign it an instanceId
- // then determine which apps can be batched together
- jQuery.each(appConfigs, function(i, a) {
- // add properties and methods
- a = _createAppConfig(a);
-
- // Will set to itself, for preloaded apps, or set to null for apps that aren't already
- // on the page.
- a.root = a.root || null;
-
- // we validate the app after setting the root property because pre-load apps do no require
- // manifest url
- if (!_validateApp(a)) {
- return; // move to the next app
- }
-
- // save app
- _apps[a.instanceId] = {
- config: a
- };
-
- // If the root property is defined then this app is considered to be preloaded and we will
- // run it through that logic.
- if (a.root && !_isPlaceholderElement(a.root)) {
- if ((!a.root && typeof(a.root) != 'string') && !F2.isNativeDOMNode(a.root)) {
- F2.log('AppConfig invalid for pre-load, not a valid string and not dom node');
- F2.log('AppConfig instance:', a);
- throw ('Preloaded appConfig.root property must be a native dom node or a string representing a sizzle selector. Please check your inputs and try again.');
- }
- else if (jQuery(a.root).length != 1) {
- F2.log('AppConfig invalid for pre-load, root not unique');
- F2.log('AppConfig instance:', a);
- F2.log('Number of dom node instances:', jQuery(a.root).length);
- throw ('Preloaded appConfig.root property must map to a unique dom node. Please check your inputs and try again.');
- }
-
- // instantiate F2.App
- _createAppInstance(a);
-
- // init events
- _initAppEvents(a);
-
- // Continue on in the .each loop, no need to continue because the app is on the page
- // the js in initialized, and it is ready to role.
- return; // equivalent to continue in .each
- }
-
- if (!_isPlaceholderElement(a.root)) {
- if (!_bUsesAppHandlers) {
- // fire beforeAppRender
- a.root = _beforeAppRender(a);
- }
- else {
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_CREATE_ROOT,
- a // the app config
- );
-
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_RENDER_BEFORE,
- a // the app config
- );
- }
- }
-
- // if we have the manifest, go ahead and load the app
- if (haveManifests) {
- _loadApps(a, appManifests[i]);
- }
- else {
- // check if this app can be batched
- if (a.enableBatchRequests && !a.isSecure) {
- batches[a.manifestUrl.toLowerCase()] = batches[a.manifestUrl.toLowerCase()] || [];
- batches[a.manifestUrl.toLowerCase()].push(a);
- }
- else {
- appStack.push({
- apps: [a],
- url: a.manifestUrl
- });
- }
- }
- });
-
- // we don't have the manifests, go ahead and load them
- if (!haveManifests) {
- // add the batches to the appStack
- jQuery.each(batches, function(i, b) {
- appStack.push({
- url: i,
- apps: b
- });
- });
-
- // if an app is being loaded more than once on the page, there is the
- // potential that the jsonp callback will be clobbered if the request
- // for the AppManifest for the app comes back at the same time as
- // another request for the same app. We'll create a callbackStack
- // that will ensure that requests for the same app are loaded in order
- // rather than at the same time
- jQuery.each(appStack, function(i, req) {
- // define the callback function based on the first app's App ID
- var jsonpCallback = F2.Constants.JSONP_CALLBACK + req.apps[0].appId;
-
- // push the request onto the callback stack
- callbackStack[jsonpCallback] = callbackStack[jsonpCallback] || [];
- callbackStack[jsonpCallback].push(req);
- });
-
- // loop through each item in the callback stack and make the request
- // for the AppManifest. When the request is complete, pop the next
- // request off the stack and make the request.
- jQuery.each(callbackStack, function(i, requests) {
-
- var manifestRequest = function(jsonpCallback, req) {
- if (!req) {
- return;
- }
-
- // setup defaults and callbacks
- var url = req.url,
- type = 'GET',
- dataType = 'jsonp',
- completeFunc = function() {
- manifestRequest(i, requests.pop());
- },
- errorFunc = function() {
- jQuery.each(req.apps, function(idx, item) {
- item.name = item.name || item.appId;
- F2.log('Removed failed ' + item.name + ' app', item);
- F2.removeApp(item.instanceId);
- });
- },
- successFunc = function(appManifest) {
- _loadApps(req.apps, appManifest);
- };
-
- // optionally fire xhr overrides
- if (_config.xhr && _config.xhr.dataType) {
- dataType = _config.xhr.dataType(req.url, req.apps);
- if (typeof dataType !== 'string') {
- throw ('ContainerConfig.xhr.dataType should return a string');
- }
- }
- if (_config.xhr && _config.xhr.type) {
- type = _config.xhr.type(req.url, req.apps);
- if (typeof type !== 'string') {
- throw ('ContainerConfig.xhr.type should return a string');
- }
- }
- if (_config.xhr && _config.xhr.url) {
- url = _config.xhr.url(req.url, req.apps);
- if (typeof url !== 'string') {
- throw ('ContainerConfig.xhr.url should return a string');
- }
- }
-
- // setup the default request function if an override is not present
- var requestFunc = _config.xhr;
- if (typeof requestFunc !== 'function') {
- requestFunc = function(url, appConfigs, successCallback, errorCallback, completeCallback) {
- jQuery.ajax({
- url: url,
- type: type,
- data: {
- params: F2.stringify(req.apps, F2.appConfigReplacer)
- },
- jsonp: false, // do not put 'callback=' in the query string
- jsonpCallback: jsonpCallback, // Unique function name
- dataType: dataType,
- success: successCallback,
- error: function(jqxhr, settings, exception) {
- F2.log('Failed to load app(s)', exception.toString(), req.apps);
- errorCallback();
- },
- complete: completeCallback
- });
- };
- }
-
- requestFunc(url, req.apps, successFunc, errorFunc, completeFunc);
- };
-
- manifestRequest(i, requests.pop());
- });
- }
- },
- /**
- * Removes all apps from the container
- * @method removeAllApps
- */
- removeAllApps: function() {
-
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.removeAllApps()');
- return;
- }
+ Handles [Context](../../app-development.html#context) passing from containers
+ to apps and apps to apps.
+ @class F2.Events
+*/
+F2.extend('Events', (function() {
+ var _events = new EventEmitter2({
+ wildcard: true
+ });
+
+ // Unlimited listeners, set to > 0 for debugging
+ _events.setMaxListeners(0);
+
+ return {
+ /**
+ Same as F2.Events.emit except that it will not send the event to all
+ sockets.
+ @method _socketEmit
+ @private
+ @param {string} event The event name
+ @param {object} [arg]* The arguments to be passed
+ @returns {object} EventEmitter2 instance
+ */
+ _socketEmit: function() {
+ return EventEmitter2.prototype.emit.apply(_events, [].slice.call(arguments));
+ },
+ /**
+ Execute each of the listeners that may be listening for the specified
+ event name in order with the list of arguments.
+ @method emit
+ @param {string} event The event name
+ @param {object} [arg]* The arguments to be passed
+ @returns {object} EventEmitter2 instance
+ */
+ emit: function() {
+ F2.Rpc.broadcast(F2.Constants.Sockets.EVENT, [].slice.call(arguments));
+ return EventEmitter2.prototype.emit.apply(_events, [].slice.call(arguments));
+ },
+ /**
+ Adds a listener that will execute n times for the event before being
+ removed. The listener is invoked only the first time the event is fired,
+ after which it is removed.
+ @method many
+ @param {string} event The event name
+ @param {int} timesToListen The number of times to execute the event
+ before being removed
+ @param {function} listener The function to be fired when the event is
+ emitted
+ @returns {object} EventEmitter2 instance
+ */
+ many: function(event, timesToListen, listener) {
+ return _events.many(event, timesToListen, listener);
+ },
+ /**
+ Remove a listener for the specified event.
+ @method off
+ @param {string} event The event name
+ @param {function} listener The function that will be removed
+ @returns {object} EventEmitter2 instance
+ */
+ off: function(event, listener) {
+ return _events.off(event, listener);
+ },
+ /**
+ Adds a listener for the specified event
+ @method on
+ @param {string} event The event name
+ @param {function} listener The function to be fired when the event is
+ emitted
+ @returns {object} EventEmitter2 instance
+ */
+ on: function(event, listener) {
+ return _events.on(event, listener);
+ },
+ /**
+ Adds a one time listener for the event. The listener is invoked only
+ the first time the event is fired, after which it is removed.
+ @method once
+ @param {string} event The event name
+ @param {function} listener The function to be fired when the event is
+ emitted
+ @returns {object} EventEmitter2 instance
+ */
+ once: function(event, listener) {
+ return _events.once(event, listener);
+ }
+ };
+})());
- jQuery.each(_apps, function(i, a) {
- F2.removeApp(a.config.instanceId);
- });
- },
- /**
- * Removes an app from the container
- * @method removeApp
- * @param {string} instanceId The app's instanceId
- */
- removeApp: function(instanceId) {
-
- if (!_isInit()) {
- F2.log('F2.init() must be called before F2.removeApp()');
- return;
- }
+/**
+ Handles socket communication between the container and secure apps
+ @class F2.Rpc
+*/
+F2.extend('Rpc', (function() {
+ var _callbacks = {};
+ var _secureAppPagePath = '';
+ var _apps = {};
+ var _rEvents = new RegExp('^' + F2.Constants.Sockets.EVENT);
+ var _rRpc = new RegExp('^' + F2.Constants.Sockets.RPC);
+ var _rRpcCallback = new RegExp('^' + F2.Constants.Sockets.RPC_CALLBACK);
+ var _rSocketLoad = new RegExp('^' + F2.Constants.Sockets.LOAD);
+ var _rUiCall = new RegExp('^' + F2.Constants.Sockets.UI_RPC);
+
+ /**
+ Creates a socket connection from the app to the container using
+ easyXDM.
+ @method _createAppToContainerSocket
+ @private
+ */
+ function _createAppToContainerSocket() {
+ var appConfig;
+ var isLoaded = false;
+ /**
+ It's possible for messages to be received before the socket load event has
+ happened. We'll save off these messages and replay them once the socket is
+ ready.
+ */
+ var messagePlayback = [];
+
+ var socket = new easyXDM.Socket({
+ onMessage: function(message, origin) {
+ // Handle Socket Load
+ if (!isLoaded && _rSocketLoad.test(message)) {
+ message = message.replace(_rSocketLoad, '');
+ var appParts = F2.parse(message);
+
+ // Make sure we have the AppConfig and AppManifest
+ if (appParts.length === 2) {
+ appConfig = appParts[0];
+
+ // Save socket
+ _apps[appConfig.instanceId] = {
+ config: appConfig,
+ socket: socket
+ };
+
+ F2.registerApps([appConfig], [appParts[1]]);
+
+ // Socket message playback
+ jQuery.each(messagePlayback, function() {
+ _onMessage(appConfig, message, origin);
+ });
+
+ isLoaded = true;
+ }
+ } else if (isLoaded) {
+ // Pass everyting else to _onMessage
+ _onMessage(appConfig, message, origin);
+ } else {
+ messagePlayback.push(message);
+ }
+ }
+ });
+ }
+
+ /**
+ Creates a socket connection from the container to the app using
+ easyXDM.
+ @method _createContainerToAppSocket
+ @private
+ @param {appConfig} appConfig The F2.AppConfig object
+ @param {F2.AppManifest} appManifest The F2.AppManifest object
+ @return {object} The new socket
+ */
+ function _createContainerToAppSocket(appConfig, appManifest) {
+ var container = jQuery(appConfig.root);
+
+ if (!container.length) {
+ F2.log('Unable to locate app in order to establish secure connection.');
+ return;
+ }
+
+ var iframeProps = {
+ scrolling: 'no',
+ style: {
+ width: '100%'
+ }
+ };
+
+ if (appConfig.height) {
+ iframeProps.style.height = appConfig.height + 'px';
+ }
+
+ var socket = new easyXDM.Socket({
+ remote: _secureAppPagePath,
+ container: container.get(0),
+ props: iframeProps,
+ onMessage: function(message, origin) {
+ _onMessage(appConfig, message, origin);
+ },
+ onReady: function() {
+ socket.postMessage(F2.Constants.Sockets.LOAD + F2.stringify([appConfig, appManifest], F2.appConfigReplacer));
+ }
+ });
+
+ return socket;
+ }
+
+ /**
+ @method _createRpcCallback
+ @private
+ @param {string} instanceId The app's Instance ID
+ @param {function} callbackId The callback ID
+ @return {function} A function to make the RPC call
+ */
+ function _createRpcCallback(instanceId, callbackId) {
+ return function() {
+ F2.Rpc.call(
+ instanceId,
+ F2.Constants.Sockets.RPC_CALLBACK,
+ callbackId,
+ [].slice.call(arguments).slice(2)
+ );
+ };
+ }
+
+ /**
+ Handles messages that come across the sockets
+ @method _onMessage
+ @private
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ @param {string} message The socket message
+ @param {string} origin The originator
+ */
+ function _onMessage(appConfig, message, origin) {
+ var obj;
+ var func;
+
+ function parseFunction(parent, functionName) {
+ var path = String(functionName).split('.');
+ for (var i = 0; i < path.length; i++) {
+ if (parent[path[i]] === undefined) {
+ parent = undefined;
+ break;
+ }
+ parent = parent[path[i]];
+ }
+ return parent;
+ }
+
+ function parseMessage(regEx, rawMessage, instanceId) {
+ var o = F2.parse(rawMessage.replace(regEx, ''));
+
+ // if obj.callbacks
+ // for each callback
+ // for each params
+ // if callback matches param
+ // replace param with _createRpcCallback(app.instanceId, callback)
+ if (o.params && o.params.length && o.callbacks && o.callbacks.length) {
+ jQuery.each(o.callbacks, function(i, c) {
+ jQuery.each(o.params, function(j, p) {
+ if (c === p) {
+ o.params[j] = _createRpcCallback(instanceId, c);
+ }
+ });
+ });
+ }
+
+ return o;
+ }
+
+ // Handle UI Call
+ if (_rUiCall.test(message)) {
+ obj = parseMessage(_rUiCall, message, appConfig.instanceId);
+ func = parseFunction(appConfig.ui, obj.functionName);
+
+ if (func !== undefined) {
+ func.apply(appConfig.ui, obj.params);
+ } else {
+ F2.log('Unable to locate UI RPC function: ' + obj.functionName);
+ }
+ } else if (_rRpc.test(message)) {
+ obj = parseMessage(_rRpc, message, appConfig.instanceId);
+ func = parseFunction(window, obj.functionName);
+
+ if (func !== undefined) {
+ func.apply(func, obj.params);
+ } else {
+ F2.log('Unable to locate RPC function: ' + obj.functionName);
+ }
+ } else if (_rRpcCallback.test(message)) {
+ obj = parseMessage(_rRpcCallback, message, appConfig.instanceId);
+
+ if (_callbacks[obj.functionName] !== undefined) {
+ _callbacks[obj.functionName].apply(_callbacks[obj.functionName], obj.params);
+ delete _callbacks[obj.functionName];
+ }
+ } else if (_rEvents.test(message)) {
+ obj = parseMessage(_rEvents, message, appConfig.instanceId);
+ F2.Events._socketEmit.apply(F2.Events, obj);
+ }
+ }
+
+ /**
+ Registers a callback function
+ @method _registerCallback
+ @private
+ @param {function} callback The callback function
+ @return {string} The callback ID
+ */
+ function _registerCallback(callback) {
+ var callbackId = F2.guid();
+ _callbacks[callbackId] = callback;
+ return callbackId;
+ }
+
+ return {
+ /**
+ Broadcast an RPC function to all sockets
+ @method broadcast
+ @param {string} messageType The message type
+ @param {Array} params The parameters to broadcast
+ */
+ broadcast: function(messageType, params) {
+ var message = messageType + F2.stringify(params);
+
+ jQuery.each(_apps, function(i, a) {
+ a.socket.postMessage(message);
+ });
+ },
+ /**
+ Calls a remote function
+ @method call
+ @param {string} instanceId The app's Instance ID
+ @param {string} messageType The message type
+ @param {string} functionName The name of the remote function
+ @param {Array} params An array of parameters to pass to the remote
+ function. Any functions found within the params will be treated as a
+ callback function.
+ */
+ call: function(instanceId, messageType, functionName, params) {
+ // Loop through params and find functions and convert them to callbacks
+ var callbacks = [];
+
+ jQuery.each(params, function(i, e) {
+ if (typeof e === 'function') {
+ var cid = _registerCallback(e);
+ params[i] = cid;
+ callbacks.push(cid);
+ }
+ });
+
+ _apps[instanceId].socket.postMessage(
+ messageType + F2.stringify({
+ functionName: functionName,
+ params: params,
+ callbacks: callbacks
+ })
+ );
+ },
+
+ /**
+ Init function which tells F2.Rpc whether it is running at the container-
+ level or the app-level. This method is generally called by
+ F2.{{#crossLink "F2/init"}}{{/crossLink}}
+ @method init
+ @param {string} [secureAppPagePath] The
+ {{#crossLink "F2.ContainerConfig"}}{{/crossLink}}.secureAppPagePath
+ property
+ */
+ init: function(secureAppPagePath) {
+ _secureAppPagePath = secureAppPagePath;
+
+ if (!_secureAppPagePath) {
+ _createAppToContainerSocket();
+ }
+ },
+
+ /**
+ Determines whether the Instance ID is considered to be 'remote'. This is
+ determined by checking if 1) the app has an open socket and 2) whether
+ F2.Rpc is running inside of an iframe
+ @method isRemote
+ @param {string} instanceId The Instance ID
+ @return {bool} True if there is an open socket
+ */
+ isRemote: function(instanceId) {
+ var appExists = _apps[instanceId] !== undefined;
+ var appIsSecure = _apps[instanceId].config.isSecure;
+ var noFrameAccess = !jQuery(_apps[instanceId].config.root).find('iframe').length;
+
+ return appExists && appIsSecure && noFrameAccess;
+ },
+
+ /**
+ Creates a container-to-app or app-to-container socket for communication
+ @method register
+ @param {F2.AppConfig} [appConfig] The F2.AppConfig object
+ @param {F2.AppManifest} [appManifest] The F2.AppManifest object
+ */
+ register: function(appConfig, appManifest) {
+ if (appConfig && appManifest) {
+ _apps[appConfig.instanceId] = {
+ config: appConfig,
+ socket: _createContainerToAppSocket(appConfig, appManifest)
+ };
+ } else {
+ F2.log('Unable to register socket connection. Please check container configuration.');
+ }
+ }
+ };
+})());
- if (_apps[instanceId]) {
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_DESTROY_BEFORE,
- _apps[instanceId] // the app instance
- );
-
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_DESTROY,
- _apps[instanceId] // the app instance
- );
-
- F2.AppHandlers.__trigger(
- _sAppHandlerToken,
- F2.Constants.AppHandlers.APP_DESTROY_AFTER,
- _apps[instanceId] // the app instance
- );
-
- delete _apps[instanceId];
- }
- }
- };
+F2.extend('UI', (function() {
+
+ var _containerConfig;
+
+ /**
+ UI helper methods
+ @class F2.UI
+ @constructor
+ @param {F2.AppConfig} appConfig The F2.AppConfig object
+ */
+ function UIClass(appConfig) {
+ var _appConfig = appConfig;
+ var $root = jQuery(appConfig.root);
+
+ function _updateHeight(height) {
+ height = height || jQuery(_appConfig.root).outerHeight();
+
+ if (F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'updateHeight',
+ [
+ height
+ ]
+ );
+ } else {
+ _appConfig.height = height;
+ $root.find('iframe').height(_appConfig.height);
+ }
+ }
+
+ // http://getbootstrap.com/javascript/#modals
+ function _modalHtml(type, message, showCancel) {
+ return [
+ '
',
+ '
',
+ '
',
+ '
',
+ '',
+ '
', type, '
',
+ '
',
+ '
', message, '
',
+ '',
+ '
',
+ '
',
+ '
'
+ ].join('');
+ }
+
+ return {
+ /**
+ Removes a overlay from an Element on the page
+ @method hideMask
+ @param {string|Element} selector The Element or selector to an Element
+ that currently contains the loader
+ */
+ hideMask: function(selector) {
+ F2.UI.hideMask(_appConfig.instanceId, selector);
+ },
+ /**
+ Helper methods for creating and using Modals
+ @class F2.UI.Modals
+ @for F2.UI
+ */
+ Modals: (function() {
+ function _renderAlert(message) {
+ return _modalHtml('Alert', message);
+ }
+
+ function _renderConfirm(message) {
+ return _modalHtml('Confirm', message, true);
+ }
+
+ return {
+ /**
+ Display an alert message on the page
+ @method alert
+ @param {string} message The message to be displayed
+ @param {function} [callback] The callback to be fired when the user
+ closes the dialog
+ @for F2.UI.Modals
+ */
+ alert: function(message, callback) {
+ if (!F2.isInit()) {
+ F2.log('F2.init() must be called before F2.UI.Modals.alert()');
+ return;
+ }
+
+ if (F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'Modals.alert',
+ [].slice.call(arguments)
+ );
+ } else {
+ // Display the alert
+ jQuery(_renderAlert(message))
+ .on('show.bs.modal', function() {
+ var modal = this;
+ jQuery(modal).find('.btn-primary').on('click', function() {
+ jQuery(modal).modal('hide').remove();
+ (callback || jQuery.noop)();
+ });
+ })
+ .modal({
+ backdrop: true
+ });
+ }
+ },
+ /**
+ Display a confirm message on the page
+ @method confirm
+ @param {string} message The message to be displayed
+ @param {function} okCallback The function that will be called when
+ the OK button is pressed
+ @param {function} cancelCallback The function that will be called
+ when the Cancel button is pressed
+ @for F2.UI.Modals
+ */
+ confirm: function(message, okCallback, cancelCallback) {
+ if (!F2.isInit()) {
+ F2.log('F2.init() must be called before F2.UI.Modals.confirm()');
+ return;
+ }
+
+ if (F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'Modals.confirm',
+ [].slice.call(arguments)
+ );
+ } else {
+ // Display the alert
+ jQuery(_renderConfirm(message))
+ .on('show.bs.modal', function() {
+ var modal = this;
+
+ jQuery(modal).find('.btn-ok').on('click', function() {
+ jQuery(modal).modal('hide').remove();
+ (okCallback || jQuery.noop)();
+ });
+
+ jQuery(modal).find('.btn-cancel').on('click', function() {
+ jQuery(modal).modal('hide').remove();
+ (cancelCallback || jQuery.noop)();
+ });
+ })
+ .modal({
+ backdrop: true
+ });
+ }
+ }
+ };
+ })(),
+ /**
+ Sets the title of the app as shown in the browser. Depending on the
+ container HTML, this method may do nothing if the container has not been
+ configured properly or else the container provider does not allow Title's
+ to be set.
+ @method setTitle
+ @param {string} title The title of the app
+ @for F2.UI
+ */
+ setTitle: function(title) {
+ if (F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'setTitle',
+ [title]
+ );
+ } else {
+ jQuery(_appConfig.root).find('.' + F2.Constants.Css.APP_TITLE).text(title);
+ }
+ },
+ /**
+ Display an ovarlay over an Element on the page
+ @method showMask
+ @param {string|Element} selector The Element or selector to an Element
+ over which to display the loader
+ @param {bool} showLoader Display a loading icon
+ */
+ showMask: function(selector, showLoader) {
+ F2.UI.showMask(_appConfig.instanceId, selector, showLoader);
+ },
+ /**
+ For secure apps, this method updates the size of the iframe that
+ contains the app. **Note: It is recommended that app developers call
+ this method anytime Elements are added or removed from the DOM**
+ @method updateHeight
+ @param {int} height The height of the app
+ */
+ updateHeight: _updateHeight,
+ /**
+ Helper methods for creating and using Views
+ @class F2.UI.Views
+ @for F2.UI
+ */
+ Views: (function() {
+ var _events = new EventEmitter2();
+ var eventsPattern = /change/i;
+
+ // Unlimited listeners, set to > 0 for debugging
+ _events.setMaxListeners(0);
+
+ function _isValid(eventName) {
+ if (!eventsPattern.test(eventName)) {
+ F2.log('"' + eventName + '" is not a valid F2.UI.Views event name');
+ return false;
+ }
+
+ return true;
+ }
+
+ return {
+ /**
+ Change the current view for the app or add an event listener
+ @method change
+ @param {string|function} [input] If a string is passed in, the view
+ will be changed for the app. If a function is passed in, a change
+ event listener will be added.
+ @for F2.UI.Views
+ */
+ change: function(input) {
+ if (typeof input === 'function') {
+ this.on('change', input);
+ } else if (typeof input === 'string') {
+ if (_appConfig.isSecure && !F2.Rpc.isRemote(_appConfig.instanceId)) {
+ F2.Rpc.call(
+ _appConfig.instanceId,
+ F2.Constants.Sockets.UI_RPC,
+ 'Views.change',
+ [].slice.call(arguments)
+ );
+ } else if (F2.inArray(input, _appConfig.views)) {
+ jQuery('.' + F2.Constants.Css.APP_VIEW, $root)
+ .addClass('hide')
+ .filter('[data-f2-view="' + input + '"]', $root)
+ .removeClass('hide');
+
+ _updateHeight();
+ _events.emit('change', input);
+ }
+ }
+ },
+ /**
+ Removes a view event listener
+ @method off
+ @param {string} event The event name
+ @param {function} listener The function that will be removed
+ @for F2.UI.Views
+ */
+ off: function(event, listener) {
+ if (_isValid(event)) {
+ _events.off(event, listener);
+ }
+ },
+ /**
+ Adds a view event listener
+ @method on
+ @param {string} event The event name
+ @param {function} listener The function to be fired when the event is
+ emitted
+ @for F2.UI.Views
+ */
+ on: function(event, listener) {
+ if (_isValid(event)) {
+ _events.on(event, listener);
+ }
+ }
+ };
+ })()
+ };
+ }
+
+ /**
+ Removes a overlay from an Element on the page
+ @method hideMask
+ @static
+ @param {string} instanceId The Instance ID of the app
+ @param {string|Element} selector The Element or selector to an Element
+ that currently contains the loader
+ @for F2.UI
+ */
+ UIClass.hideMask = function(instanceId, selector) {
+ if (!F2.isInit()) {
+ F2.log('F2.init() must be called before F2.UI.hideMask()');
+ return;
+ }
+
+ if (F2.Rpc.isRemote(instanceId) && !jQuery(selector).is('.' + F2.Constants.Css.APP)) {
+ F2.Rpc.call(
+ instanceId,
+ F2.Constants.Sockets.RPC,
+ 'F2.UI.hideMask',
+ [
+ instanceId,
+ // Have to pass selector or else there will be stringify errors
+ jQuery(selector).selector
+ ]
+ );
+ } else {
+ var container = jQuery(selector);
+ container.find('> .' + F2.Constants.Css.MASK).remove();
+ container.removeClass(F2.Constants.Css.MASK_CONTAINER);
+
+ // If the element contains this property, reset to static position
+ if (container.data(F2.Constants.Css.MASK_CONTAINER)) {
+ container.css({ 'position': 'static' });
+ }
+ }
+ };
+
+ /**
+ Runs initialization code for the UI class
+ @method init
+ @static
+ @param {F2.ContainerConfig} containerConfig The F2.ContainerConfig object
+ */
+ UIClass.init = function(containerConfig) {
+ _containerConfig = containerConfig;
+ _containerConfig.UI = jQuery.extend(true, {}, F2.ContainerConfig.UI, _containerConfig.UI || {});
+ };
+
+ /**
+ Display an ovarlay over an Element on the page
+ @method showMask
+ @static
+ @param {string} instanceId The Instance ID of the app
+ @param {string|Element} selector The Element or selector to an Element over
+ which to display the loader
+ @param {bool} showLoading Display a loading icon
+ */
+ UIClass.showMask = function(instanceId, selector, showLoading) {
+ if (!F2.isInit()) {
+ F2.log('F2.init() must be called before F2.UI.showMask()');
+ return;
+ }
+
+ if (F2.Rpc.isRemote(instanceId) && jQuery(selector).is('.' + F2.Constants.Css.APP)) {
+ F2.Rpc.call(
+ instanceId,
+ F2.Constants.Sockets.RPC,
+ 'F2.UI.showMask',
+ [
+ instanceId,
+ // Have to pass selector or else there will be stringify errors
+ jQuery(selector).selector,
+ showLoading
+ ]
+ );
+ } else {
+ if (showLoading && !_containerConfig.UI.Mask.loadingIcon) {
+ F2.log('Unable to display loading icon. Please set F2.ContainerConfig.UI.Mask.loadingIcon when calling F2.init();');
+ }
+
+ var container = jQuery(selector).addClass(F2.Constants.Css.MASK_CONTAINER);
+ var mask = jQuery('
')
+ .height('100%')
+ .width('100%')
+ .addClass(F2.Constants.Css.MASK);
+
+ // Set inline styles if useClasses is false
+ if (!_containerConfig.UI.Mask.useClasses) {
+ mask.css({
+ 'background-color': _containerConfig.UI.Mask.backgroundColor,
+ 'background-image': _containerConfig.UI.Mask.loadingIcon ? ('url(' + _containerConfig.UI.Mask.loadingIcon + ')') : '',
+ 'background-position': '50% 50%',
+ 'background-repeat': 'no-repeat',
+ 'display': 'block',
+ 'left': 0,
+ 'min-height': 30,
+ 'padding': 0,
+ 'position': 'absolute',
+ 'top': 0,
+ 'z-index': _containerConfig.UI.Mask.zIndex,
+ 'filter': 'alpha(opacity=' + (_containerConfig.UI.Mask.opacity * 100) + ')',
+ 'opacity': _containerConfig.UI.Mask.opacity
+ });
+ }
+
+ if (container.css('position') === 'static') {
+ container.css({ 'position': 'relative' });
+
+ // Setting this property tells hideMask to set the position to static
+ container.data(F2.Constants.Css.MASK_CONTAINER, true);
+ }
+
+ container.append(mask);
+ }
+ };
+
+ return UIClass;
})());
jQuery(function() {
diff --git a/tests/f2.min.map b/tests/f2.min.map
deleted file mode 100644
index f2076109..00000000
--- a/tests/f2.min.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"f2.min.js","sources":["f2.debug.js"],"names":["exports","F2","F2_TESTING_MODE","JSON","f","n","quote","string","escapable","lastIndex","test","replace","a","c","meta","charCodeAt","toString","slice","str","key","holder","i","k","v","length","partial","mind","gap","value","toJSON","rep","call","isFinite","String","indent","Object","prototype","apply","join","push","hasOwnProperty","Date","this","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Number","Boolean","cx","\b","\t","\n","\f","\r","\"","\\","stringify","replacer","space","Error","parse","text","reviver","walk","undefined","j","eval","SyntaxError","window","createOptions","options","object","optionsCache","jQuery","each","split","core_rspace","_","flag","dataAttr","elem","data","nodeType","name","rmultiDash","toLowerCase","getAttribute","rbrace","parseJSON","e","isEmptyDataObject","obj","isEmptyObject","returnFalse","returnTrue","isDisconnected","node","parentNode","sibling","cur","dir","winnow","elements","qualifier","keep","isFunction","grep","retVal","filtered","isSimple","filter","inArray","createSafeFragment","document","list","nodeNames","safeFrag","createDocumentFragment","createElement","pop","findOrAppend","tag","getElementsByTagName","appendChild","ownerDocument","cloneCopyEvent","src","dest","hasData","type","l","oldData","_data","curData","events","handle","event","add","extend","cloneFixAttributes","nodeName","clearAttributes","mergeAttributes","outerHTML","support","html5Clone","innerHTML","trim","rcheckableType","defaultChecked","checked","selected","defaultSelected","defaultValue","removeAttribute","expando","getAll","querySelectorAll","fixDefaultChecked","vendorPropName","style","capName","charAt","toUpperCase","origName","cssPrefixes","isHidden","el","css","contains","showHide","show","display","values","index","css_defaultDisplay","curCSS","setPositiveNumber","subtract","matches","rnumsplit","exec","Math","max","augmentWidthOrHeight","extra","isBorderBox","val","cssExpand","parseFloat","getWidthOrHeight","offsetWidth","offsetHeight","valueIsBorderBox","boxSizing","rnumnonpx","boxSizingReliable","elemdisplay","appendTo","body","remove","iframe","frameBorder","width","height","iframeDoc","contentWindow","contentDocument","write","close","removeChild","buildParams","prefix","traditional","isArray","rbracket","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","placeBefore","dataTypes","substr","inspectPrefiltersOrTransports","originalOptions","jqXHR","inspected","selection","executeOnly","prefilters","unshift","ajaxExtend","target","deep","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","ct","finalDataType","firstDataType","contents","responseFields","shift","mimeType","getResponseHeader","converters","ajaxConvert","response","conv","conv2","current","tmp","prev","dataFilter","splice","state","error","createStandardXHR","XMLHttpRequest","createActiveXHR","ActiveXObject","createFxNow","setTimeout","fxNow","now","createTweens","animation","props","prop","collection","tweeners","concat","Animation","properties","result","animationPrefilters","deferred","Deferred","always","tick","currentTime","remaining","startTime","duration","temp","percent","tweens","run","notifyWith","resolveWith","promise","opts","specialEasing","originalProperties","createTween","end","tween","Tween","easing","stop","gotoEnd","rejectWith","propFilter","start","fx","timer","anim","queue","progress","done","complete","fail","hooks","camelCase","cssHooks","expand","defaultPrefilter","dataShow","toggle","oldfire","orig","handled","hidden","_queueHooks","unqueued","empty","fire","overflow","overflowX","overflowY","inlineBlockNeedsLayout","zoom","shrinkWrapBlocks","rfxtypes","hide","removeData","init","genFx","includeWidth","which","attrs","opacity","getWindow","isWindow","defaultView","parentWindow","rootjQuery","readyList","location","navigator","_jQuery","_$","$","core_push","Array","core_slice","core_indexOf","indexOf","core_toString","core_hasOwn","core_trim","selector","context","fn","core_pnum","source","core_rnotwhite","rtrim","rquickExpr","rsingleTag","rvalidchars","rvalidbraces","rvalidescape","rvalidtokens","rmsPrefix","rdashAlpha","fcamelCase","all","letter","DOMContentLoaded","addEventListener","removeEventListener","ready","readyState","detachEvent","class2type","constructor","match","doc","jquery","find","parseHTML","isPlainObject","attr","merge","getElementById","id","makeArray","size","toArray","get","num","pushStack","elems","ret","prevObject","callback","args","eq","first","last","arguments","map","sort","copy","copyIsArray","clone","noConflict","isReady","readyWait","holdReady","hold","wait","trigger","off","isNumeric","isNaN","msg","scripts","parsed","buildFragment","cacheable","fragment","childNodes","Function","parseXML","xml","DOMParser","parseFromString","async","loadXML","documentElement","noop","globalEval","execScript","isObj","arr","results","len","second","inv","arg","guid","proxy","access","chainable","emptyGet","pass","bulk","getTime","attachEvent","top","frameElement","doScroll","doScrollCheck","Callbacks","memory","fired","firing","firingStart","firingLength","firingIndex","stack","once","stopOnFalse","self","disable","unique","has","disabled","lock","locked","fireWith","tuples","then","fns","newDefer","tuple","action","returned","resolve","reject","notify","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","updateFunc","contexts","select","opt","input","eventName","isSupported","clickFn","div","setAttribute","cssText","leadingWhitespace","firstChild","tbody","htmlSerialize","hrefNormalized","cssFloat","checkOn","optSelected","getSetAttribute","className","enctype","cloneNode","boxModel","compatMode","submitBubbles","changeBubbles","focusinBubbles","deleteExpando","noCloneEvent","reliableMarginRight","pixelPosition","noCloneChecked","optDisabled","fireEvent","radioValue","lastChild","checkClone","appendChecked","submit","change","focusin","container","tds","marginDiv","divReset","insertBefore","reliableHiddenOffsets","doesNotIncludeMarginInBodyOffset","offsetTop","getComputedStyle","marginRight","cache","deletedIds","uuid","random","noData","embed","applet","pvt","acceptData","thisCache","internalKey","getByName","isNode","cleanData","parts","part","attributes","substring","triggerHandler","dequeue","startLength","next","setter","delay","time","speeds","timeout","clearTimeout","clearQueue","count","defer","nodeHook","boolHook","fixSpecified","rclass","rreturn","rtype","rfocusable","rclickable","rboolean","removeAttr","removeProp","propFix","addClass","classNames","setClass","cl","removeClass","removes","toggleClass","stateVal","isBool","hasClass","valHooks","set","option","specified","selectedIndex","one","attrFn","notxml","nType","isXMLDoc","attrHooks","propName","attrNames","tabindex","readonly","for","class","maxlength","cellspacing","cellpadding","rowspan","colspan","usemap","frameborder","contenteditable","propHooks","tabIndex","attributeNode","getAttributeNode","parseInt","href","attrNode","property","nodeValue","coords","button","createAttribute","setAttributeNode","parent","rformElems","rtypenamespace","rhoverHack","rkeyEvent","rmouseEvent","rfocusMorph","hoverHack","special","hover","types","handler","elemData","eventHandle","t","tns","namespaces","handleObj","handleObjIn","handlers","triggered","dispatch","delegateType","bindType","origType","needsContext","expr","namespace","delegateCount","setup","global","mappedTypes","origCount","eventType","RegExp","teardown","removeEvent","customEvent","getData","setData","changeData","onlyHandlers","exclusive","old","ontype","eventPath","bubbleType","Event","isTrigger","namespace_re","noBubble","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","selMatch","matched","sel","run_all","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","fixHooks","keyHooks","original","charCode","keyCode","mouseHooks","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","originalEvent","fixHook","srcElement","metaKey","load","focus","blur","beforeunload","onbeforeunload","simulate","bubble","isSimulated","defaultPrevented","returnValue","getPreventDefault","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","related","form","_submit_bubble","propertyName","_just_changed","attaches","on","origFn","bind","unbind","live","die","delegate","undelegate","toggler","lastToggle","click","fnOver","fnOut","Sizzle","seed","m","isXML","assertUsableClassName","getElementsByClassName","createInputPseudo","createButtonPseudo","createPositionalPseudo","markFunction","argument","matchIndexes","siblingCheck","b","nextSibling","tokenize","parseOnly","tokens","soFar","groups","preFilters","cached","tokenCache","Expr","preFilter","rcomma","rcombinators","Token","matchExpr","addCombinator","matcher","combinator","base","checkNonElements","doneName","dirkey","dirruns","cachedkey","cachedruns","sizset","elementMatcher","matchers","condense","unmatched","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","expandContext","setMatched","matchedCount","outermost","contextBackup","dirrunsUnique","E","uniqueSort","token","rbackslash","rsibling","compile","setFilters","assertGetIdNotName","getText","sortOrder","hasDuplicate","baseHasDuplicate","strundefined","docElem","createCache","keys","cacheLength","classCache","compilerCache","whitespace","characterEncoding","identifier","operators","pseudos","pos","rpseudo","rheader","rinputs","ID","CLASS","NAME","TAG","ATTR","PSEUDO","POS","CHILD","assert","assertTagNameNoComments","createComment","assertHrefNotNormalized","assertAttributes","assertUsableName","getElementsByName","matchesSelector","textContent","adown","bup","compareDocumentPosition","attrHandle","selectors","createPseudo",">"," ","+","~","unquoted","excess","pattern","operator","check","diff","previousSibling","pseudo","idx","not","innerText","enabled","header","radio","checkbox","file","password","image","reset","activeElement","hasFocus","active","even","odd","lt","gt","sourceIndex","al","bl","ap","bp","aup","duplicates","group","disconnectedMatch","oldSelect","rescape","rattributeQuotes","rbuggyQSA","rbuggyMatches","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","msMatchesSelector","nid","newContext","newSelector","qsaError","filters","runtil","rparentsprev","rneedsContext","guaranteedUnique","children","r","targets","is","closest","prevAll","addBack","andSelf","parents","parentsUntil","until","nextAll","nextUntil","prevUntil","siblings","reverse","rinlinejQuery","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rnocache","rnoshimcache","rchecked","rscriptType","rcleanScript","wrapMap","legend","thead","tr","td","col","area","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","append","createTextNode","wrapAll","html","wrap","wrapInner","unwrap","replaceWith","domManip","prepend","before","clean","after","keepData","dataAndEvents","deepDataAndEvents","detach","table","iNoClone","ajax","url","throws","cachehit","fragments","prependTo","insertAfter","replaceAll","insert","srcElements","destElements","depth","hasBody","handleScript","jsTags","safe","browser","uaMatch","ua","version","userAgent","chrome","webkit","safari","sub","jQuerySub","superclass","rootjQuerySub","ralpha","ropacity","rposition","rdisplayswap","rmargin","rrelNum","BODY","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","eventsToggle","fn2","bool","computed","cssNumber","fillOpacity","lineHeight","orphans","widows","zIndex","cssProps","float","numeric","swap","minWidth","maxWidth","getPropertyValue","currentStyle","left","rsLeft","runtimeStyle","pixelLeft","$1","visible","margin","padding","border","suffix","expanded","r20","rCRLF","rinput","rselectTextarea","serialize","param","serializeArray","encodeURIComponent","ajaxLocParts","ajaxLocation","rhash","rheaders","rlocalProtocol","rnoContent","rprotocol","rquery","rscript","rts","rurl","_load","transports","allTypes","params","status","responseText","o","method","success","getScript","getJSON","ajaxSetup","settings","isLocal","contentType","processData","accepts","json","*","* text","text html","text json","text xml","ajaxPrefilter","ajaxTransport","nativeStatusText","headers","isSuccess","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","lastModified","ifModifiedKey","etag","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","requestHeaders","requestHeadersNames","strAbort","setRequestHeader","lname","getAllResponseHeaders","overrideMimeType","abort","crossDomain","hasContent","ts","beforeSend","send","oldCallbacks","rquestion","rjsonp","nonce","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","hasCallback","replaceInUrl","replaceInData","script","text script","head","scriptCharset","charset","onload","onreadystatechange","isAbort","xhrCallbacks","xhrOnUnloadAbort","xhrId","xhr","cors","username","open","xhrFields","responseXML","firefoxAccessException","unload","timerId","rfxnum","rrun","unit","scale","maxIterations","tweener","prefilter","eased","step","cssFn","speed","animate","fadeTo","to","optall","doAnimation","stopQueue","timers","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","linear","p","swing","cos","PI","setInterval","interval","clearInterval","slow","fast","animated","rroot","offset","setOffset","win","box","bodyOffset","getBoundingClientRect","pageYOffset","pageXOffset","offsetLeft","curTop","curLeft","curElem","curOffset","curCSSTop","curCSSLeft","calculatePosition","curPosition","using","offsetParent","parentOffset","scrollTo","Height","Width","content","defaultExtra","funcName","define","amd","Modal","element","$element","remote","isShown","that","escape","backdrop","transition","enforceFocus","hideWithTransition","hideModal","keyboard","removeBackdrop","$backdrop","doAnimate","modal","$this","defaults","Constructor","$target","_events","configure","conf","delimiter","wildcard","listenerTree","EventEmitter","searchListenerTree","tree","leaf","branch","xTree","xxTree","isolatedBranch","endReached","listeners","typeLength","currentType","nextType","_listeners","**","growListenerTree","listener","warned","defaultMaxListeners","maxListeners","console","trace","setMaxListeners","many","ttl","_origin","emit","newListener","_all","ns","onAny","addListener","leafs","iLeaf","offAny","removeListener","removeAllListeners","listenersAny","EventEmitter2","process","title","decodeURIComponent","isHostMethod","isHostObject","hasFlash","activeX","flashVersion","GetVariable","HAS_FLASH_THROTTLED_BUG","notSupportedException","dom_onReady","domIsReady","domReadyQueue","whenReady","scope","getParentObject","ii","easyXDM","_easyXDM","IFRAME_PREFIX","getDomainName","reURI","getPort","getLocation","proto","domain","port","resolveUrl","reDoubleSlash","path","pathname","lastIndexOf","protocol","host","reParent","appendQueryParameters","parameters","hash","q","useHash","undef","destination","noOverwrite","member","testForNamePropertyBug","channelId","HAS_NAME_PROPERTY_BUG","createFrame","config","frame","onLoad","allowTransparency","checkAcl","acl","re","prepareTransportStack","stackEls","isHost","query","xdm_p","channel","secret","swf","product","remoteHelper","xdm_c","xdm_s","xdm_e","useResize","useParent","usePolling","local","images","search","xdm_pa","xdm_po","HashTransport","ReliableBehavior","QueueBehavior","encode","maxLength","VerifyBehavior","initiate","PostMessageTransport","NameTransport","NixTransport","SameOriginTransport","FrameElementTransport","FlashTransport","lazy","chainStack","stackElements","stackEl","incoming","message","origin","up","outgoing","recipient","down","destroy","removeFromStack","un","floor","emptyFn","sEvent","fpNotify","pair","evalJSON","getJSONObject","DomHelper","requiresJSON","_map","Fn","del","Socket","onMessage","onReady","postMessage","Rpc","jsonRpcConfig","RpcBehavior","pub","targetOrigin","onDOMReady","sendFn","addSwf","swfContainer","swfNoThrottle","right","flashVars","destroyChannel","swfdomain","createChannel","_getOrigin","uri","_window_onMessage","callerWindow","waitForReady","referrer","_sendMessage","sendMessage","_onReady","readyCount","_onMessage","remoteOrigin","_onLoad","remoteWindow","remoteUrl","w","_callerWindow","_msgNr","_handleHash","_lastMsg","_remoteOrigin","_pollHash","_listenerWindow","_attachListeners","_timer","pollInterval","tries","getRef","frames","ex","idOut","idIn","currentMessage","ack","waiting","destroying","doFragment","seq","startVerification","mySecret","theirSecret","_send","jsonrpc","serializer","_createMethod","definition","_callbacks","_callbackCounter","namedParams","_executeMethod","code","ex1","_absolutizeURI","removeDotSegments","output","_parseURI","authority","hostname","appConfigReplacer","Apps","overwrite","isFunc","S4","array","isLocalRequest","urlLower","isNativeDOMNode","testObject","bIsNode","Node","bIsElement","HTMLElement","log","_log","_logMethod","methods","_ct","_f2t","_handlerCollection","appCreateRoot","appRenderBefore","appDestroyBefore","appRenderAfter","appDestroyAfter","appRender","appDestroy","appScriptLoadFailed","_defaultMethods","appConfig","appHtml","$root","root","appInstance","app","appId","_createHandler","sNamespace","func_or_element","bDomNodeAppropriate","_validateToken","domNode","sToken","_removeHandler","eventKey","currentEventKey","eventCollection","newEvents","ec","currentEventHandler","newHandlerCollection","iCounter","hc","currentHandler","getToken","__f2GetToken","__trigger","passableArgs","hcl","$appRoot","arData","AppHandlers","APP_CREATE_ROOT","APP_RENDER_BEFORE","APP_RENDER","APP_RENDER_AFTER","APP_DESTROY_BEFORE","APP_DESTROY","APP_DESTROY_AFTER","APP_SCRIPT_LOAD_FAILED","App","AppConfig","enableBatchRequests","instanceId","isSecure","manifestUrl","minGridSize","ui","views","AppManifest","apps","inlineScripts","styles","AppContent","ContainerConfig","afterAppRender","beforeAppRender","debugMode","scriptErrorTimeout","isSecureAppPage","secureAppPagePath","supportedViews","UI","Mask","backgroundColor","loadingIcon","useClasses","loadScripts","loadStyles","Css","_PREFIX","APP","APP_CONTAINER","APP_TITLE","APP_VIEW","APP_VIEW_TRIGGER","MASK","MASK_CONTAINER","Events","_APP_EVENT_PREFIX","_CONTAINER_EVENT_PREFIX","APP_SYMBOL_CHANGE","APP_WIDTH_CHANGE","CONTAINER_SYMBOL_CHANGE","CONTAINER_WIDTH_CHANGE","JSONP_CALLBACK","Sockets","EVENT","LOAD","RPC","RPC_CALLBACK","UI_RPC","Views","DATA_ATTRIBUTE","ABOUT","HELP","HOME","REMOVE","SETTINGS","_socketEmit","broadcast","Constants","timesToListen","_secureAppPagePath","_apps","_rEvents","_rRpc","_rRpcCallback","_rSocketLoad","_rUiCall","_createAppToContainerSocket","isLoaded","messagePlayback","socket","appParts","registerApps","_createContainerToAppSocket","appManifest","iframeProps","scrolling","_createRpcCallback","callbackId","parseFunction","functionName","parseMessage","regEx","callbacks","_registerCallback","messageType","cid","isRemote","register","_containerConfig","UI_Class","_appConfig","_updateHeight","outerHeight","hideMask","Modals","_renderAlert","_renderConfirm","alert","isInit","confirm","okCallback","cancelCallback","setTitle","showMask","showLoader","updateHeight","_rValidEvents","_isValid","containerConfig","showLoading","mask","background-color","background-image","background-position","background-repeat","min-height","z-index","_config","_bUsesAppHandlers","_sAppHandlerToken","_afterAppRender","appContainer","_appRender","_outerHtml","_beforeAppRender","_appScriptLoadFailed","scriptInfo","_createAppConfig","_hydrateContainerConfig","_initAppEvents","view","removeApp","_initContainerEvents","resizeTimeout","resizeHandler","_isInit","_createAppInstance","appContent","_loadApps","appConfigs","_loadSecureApp","_loadStyles","cb","stylesFragment","useCreateStyleSheet","createStyleSheet","_loadScripts","scriptCount","scriptsLoaded","readyStates","loaded","_error","evtData","resourceUrl","onerror","_loadInlineScripts","inlines","loadInlineScripts","exception","elementInDocument","_loadHtml","_validateApp","_validateContainerConfig","getContainerState","appManifests","appStack","batches","callbackStack","haveManifests","req","requests","manifestRequest","completeFunc","errorFunc","item","successFunc","requestFunc","successCallback","errorCallback","completeCallback","jqxhr","removeAllApps"],"mappings":"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"}
\ No newline at end of file
From d28ead8c92698e6f6f7f4bf14ca7dd85df085c02 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Fri, 9 Jan 2015 11:34:02 -0700
Subject: [PATCH 24/61] Minor: comments
---
src/lib/F2.js | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/lib/F2.js b/src/lib/F2.js
index c53f52ff..f9844b06 100644
--- a/src/lib/F2.js
+++ b/src/lib/F2.js
@@ -219,17 +219,17 @@ var F2 = (function() {
@returns {bool} Whether the URL is local or not
Derived from: https://github.com/jquery/jquery/blob/master/src/ajax.js
*/
- isLocalRequest: function(url) {
+ isLocalRequest: function(url){
+ var urlPattern = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/;
var urlLower = url.toLowerCase();
- var relUrlPattern = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/;
- var parts = relUrlPattern.execute(urlLower);
+ var parts = urlPattern.exec(urlLower);
var ajaxLocation;
var ajaxLocParts;
try {
ajaxLocation = location.href;
- } catch ( e ) {
- // Use the href of an anchor since IE account for document.location
+ } catch (e) {
+ // Use the href of an anchor since IE accounts for document.location
ajaxLocation = document.createElement('a');
ajaxLocation.href = '';
ajaxLocation = ajaxLocation.href;
@@ -237,16 +237,16 @@ var F2 = (function() {
ajaxLocation = ajaxLocation.toLowerCase();
- // The url is relative, so we'll fully qualify it and re-regex
+ // The url must be relative, so fully qualify it and re-regex url
if (!parts) {
urlLower = _absolutizeURI(ajaxLocation, urlLower).toLowerCase();
- parts = relUrlPattern.exec(urlLower);
+ parts = urlPattern.exec(urlLower);
}
// Segment location into parts
- ajaxLocParts = relUrlPattern.exec(ajaxLocation) || [];
+ ajaxLocParts = urlPattern.exec(ajaxLocation) || [];
- // Do hostname and protocol and port of manifest URL match location.href?
+ // Do hostname and protocol and port of manifest URL match location.href? (a "local" request on the same domain)
var matched = !(parts &&
(parts[1] !== ajaxLocParts[1] || parts[2] !== ajaxLocParts[2] ||
(parts[3] || (parts[1] === 'http:' ? '80' : '443')) !==
From 7cc187e689b1a441153b5ef768426060fdb5b23a Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Fri, 9 Jan 2015 11:35:18 -0700
Subject: [PATCH 25/61] Minor refactor & boolean logic fix
---
src/lib/container.js | 83 ++++++++++++++++++++++++--------------------
1 file changed, 46 insertions(+), 37 deletions(-)
diff --git a/src/lib/container.js b/src/lib/container.js
index 858b705e..df306126 100644
--- a/src/lib/container.js
+++ b/src/lib/container.js
@@ -130,30 +130,31 @@ F2.extend('', (function() {
@return {F2.AppConfig} The new F2.AppConfig object
*/
function _getAppConfigFromElement(node) {
- var appConfig;
+ if (!node) {
+ return;
+ }
- if (node) {
- var appId = node.getAttribute('data-f2-appid');
- var manifestUrl = node.getAttribute('data-f2-manifesturl');
-
- if (appId && manifestUrl) {
- appConfig = {
- appId: appId,
- enableBatchRequests: node.hasAttribute('data-f2-enablebatchrequests'),
- isSecure: node.hasAttribute('data-f2-issecure'),
- manifestUrl: manifestUrl,
- root: node
- };
+ var appConfig;
+ var appId = node.getAttribute('data-f2-appid');
+ var manifestUrl = node.getAttribute('data-f2-manifesturl');
+
+ if (appId && manifestUrl) {
+ appConfig = {
+ appId: appId,
+ enableBatchRequests: node.hasAttribute('data-f2-enablebatchrequests'),
+ isSecure: node.hasAttribute('data-f2-issecure'),
+ manifestUrl: manifestUrl,
+ root: node
+ };
- // See if the user passed in a block of serialized json
- var contextJson = node.getAttribute('data-f2-context');
+ // See if the user passed in a block of serialized json
+ var contextJson = node.getAttribute('data-f2-context');
- if (contextJson) {
- try {
- appConfig.context = F2.parse(contextJson);
- } catch (e) {
- console.warn('F2: "data-f2-context" of node is not valid JSON', '"' + e + '"');
- }
+ if (contextJson) {
+ try {
+ appConfig.context = F2.parse(contextJson);
+ } catch (e) {
+ F2.log('warn', 'F2: "data-f2-context" of node is not valid JSON', '"' + e + '"');
}
}
}
@@ -414,7 +415,6 @@ F2.extend('', (function() {
function _checkComplete() {
// Are we done loading all scripts for this app?
if (++scriptsLoaded === scriptCount) {
- // success
cb();
}
}
@@ -741,6 +741,28 @@ F2.extend('', (function() {
return true;
}
+ /**
+ Find app placeholders on the page
+ @method _getPlaceholders
+ @private
+ @param {Element} parentNode The element to search for placeholder apps
+ @returns {Array} The discovered placeholder elements
+ */
+ function _getPlaceholders(parentNode) {
+ var elements = [];
+
+ if (parentNode.hasAttribute('data-f2-appid')) {
+ elements.push(parentNode);
+ }
+
+ if (parentNode.querySelectorAll) {
+ var children = Array.prototype.slice.call(parentNode.querySelectorAll('[data-f2-appid]'));
+ elements = elements.concat(children);
+ }
+
+ return elements;
+ }
+
return {
/**
Gets the current list of apps in the container.
@@ -785,7 +807,7 @@ F2.extend('', (function() {
// Dictates whether we use the old logic or the new logic.
// TODO: Remove in v2.0
- _usesAppHandlers = (_config.beforeAppRender || _config.appRender || _config.afterAppRender || _config.appScriptLoadFailed);
+ _usesAppHandlers = (!_config.beforeAppRender && !_config.appRender && !_config.afterAppRender && !_config.appScriptLoadFailed);
// Only establish RPC connection if the container supports the secure app page
if (!!_config.secureAppPagePath || _config.isSecureAppPage) {
@@ -816,22 +838,9 @@ F2.extend('', (function() {
throw new Error('"parentNode" must be null or a DOM node');
}
- var elements = [];
+ var elements = _getPlaceholders(parentNode || document.body);
var appConfigs = [];
- /**
- If the passed in element has a data-f2-appid attribute add it to the
- list of elements but to not search within that element for other
- placeholders
- */
- if (parentNode) {
- if (parentNode.hasAttribute('data-f2-appid')) {
- elements.push(parentNode);
- }
- } else if (document.querySelectorAll) {
- elements = elements.concat(document.querySelectorAll('[data-f2-appid]'));
- }
-
for (var i = 0, len = elements.length; i < len; i++) {
var appConfig = _getAppConfigFromElement(elements[i]);
appConfigs.push(appConfig);
From 75a6702e5e4e5c41361e7a6c44c1ba10cefd9295 Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Fri, 9 Jan 2015 11:35:48 -0700
Subject: [PATCH 26/61] Adding compiled files
---
dist/f2.debug.js | 101 +++++++++++++++++++++-----------------
dist/f2.min.js | 4 +-
dist/f2.min.js.map | 2 +-
dist/f2.no-third-party.js | 101 +++++++++++++++++++++-----------------
4 files changed, 113 insertions(+), 95 deletions(-)
diff --git a/dist/f2.debug.js b/dist/f2.debug.js
index e8bf8f76..67a87f77 100644
--- a/dist/f2.debug.js
+++ b/dist/f2.debug.js
@@ -14021,17 +14021,17 @@ var F2 = (function() {
@returns {bool} Whether the URL is local or not
Derived from: https://github.com/jquery/jquery/blob/master/src/ajax.js
*/
- isLocalRequest: function(url) {
+ isLocalRequest: function(url){
+ var urlPattern = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/;
var urlLower = url.toLowerCase();
- var relUrlPattern = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/;
- var parts = relUrlPattern.execute(urlLower);
+ var parts = urlPattern.exec(urlLower);
var ajaxLocation;
var ajaxLocParts;
try {
ajaxLocation = location.href;
- } catch ( e ) {
- // Use the href of an anchor since IE account for document.location
+ } catch (e) {
+ // Use the href of an anchor since IE accounts for document.location
ajaxLocation = document.createElement('a');
ajaxLocation.href = '';
ajaxLocation = ajaxLocation.href;
@@ -14039,16 +14039,16 @@ var F2 = (function() {
ajaxLocation = ajaxLocation.toLowerCase();
- // The url is relative, so we'll fully qualify it and re-regex
+ // The url must be relative, so fully qualify it and re-regex url
if (!parts) {
urlLower = _absolutizeURI(ajaxLocation, urlLower).toLowerCase();
- parts = relUrlPattern.exec(urlLower);
+ parts = urlPattern.exec(urlLower);
}
// Segment location into parts
- ajaxLocParts = relUrlPattern.exec(ajaxLocation) || [];
+ ajaxLocParts = urlPattern.exec(ajaxLocation) || [];
- // Do hostname and protocol and port of manifest URL match location.href?
+ // Do hostname and protocol and port of manifest URL match location.href? (a "local" request on the same domain)
var matched = !(parts &&
(parts[1] !== ajaxLocParts[1] || parts[2] !== ajaxLocParts[2] ||
(parts[3] || (parts[1] === 'http:' ? '80' : '443')) !==
@@ -15560,30 +15560,31 @@ F2.extend('', (function() {
@return {F2.AppConfig} The new F2.AppConfig object
*/
function _getAppConfigFromElement(node) {
- var appConfig;
+ if (!node) {
+ return;
+ }
- if (node) {
- var appId = node.getAttribute('data-f2-appid');
- var manifestUrl = node.getAttribute('data-f2-manifesturl');
-
- if (appId && manifestUrl) {
- appConfig = {
- appId: appId,
- enableBatchRequests: node.hasAttribute('data-f2-enablebatchrequests'),
- isSecure: node.hasAttribute('data-f2-issecure'),
- manifestUrl: manifestUrl,
- root: node
- };
+ var appConfig;
+ var appId = node.getAttribute('data-f2-appid');
+ var manifestUrl = node.getAttribute('data-f2-manifesturl');
+
+ if (appId && manifestUrl) {
+ appConfig = {
+ appId: appId,
+ enableBatchRequests: node.hasAttribute('data-f2-enablebatchrequests'),
+ isSecure: node.hasAttribute('data-f2-issecure'),
+ manifestUrl: manifestUrl,
+ root: node
+ };
- // See if the user passed in a block of serialized json
- var contextJson = node.getAttribute('data-f2-context');
+ // See if the user passed in a block of serialized json
+ var contextJson = node.getAttribute('data-f2-context');
- if (contextJson) {
- try {
- appConfig.context = F2.parse(contextJson);
- } catch (e) {
- console.warn('F2: "data-f2-context" of node is not valid JSON', '"' + e + '"');
- }
+ if (contextJson) {
+ try {
+ appConfig.context = F2.parse(contextJson);
+ } catch (e) {
+ F2.log('warn', 'F2: "data-f2-context" of node is not valid JSON', '"' + e + '"');
}
}
}
@@ -15844,7 +15845,6 @@ F2.extend('', (function() {
function _checkComplete() {
// Are we done loading all scripts for this app?
if (++scriptsLoaded === scriptCount) {
- // success
cb();
}
}
@@ -16171,6 +16171,28 @@ F2.extend('', (function() {
return true;
}
+ /**
+ Find app placeholders on the page
+ @method _getPlaceholders
+ @private
+ @param {Element} parentNode The element to search for placeholder apps
+ @returns {Array} The discovered placeholder elements
+ */
+ function _getPlaceholders(parentNode) {
+ var elements = [];
+
+ if (parentNode.hasAttribute('data-f2-appid')) {
+ elements.push(parentNode);
+ }
+
+ if (parentNode.querySelectorAll) {
+ var children = Array.prototype.slice.call(parentNode.querySelectorAll('[data-f2-appid]'));
+ elements = elements.concat(children);
+ }
+
+ return elements;
+ }
+
return {
/**
Gets the current list of apps in the container.
@@ -16215,7 +16237,7 @@ F2.extend('', (function() {
// Dictates whether we use the old logic or the new logic.
// TODO: Remove in v2.0
- _usesAppHandlers = (_config.beforeAppRender || _config.appRender || _config.afterAppRender || _config.appScriptLoadFailed);
+ _usesAppHandlers = (!_config.beforeAppRender && !_config.appRender && !_config.afterAppRender && !_config.appScriptLoadFailed);
// Only establish RPC connection if the container supports the secure app page
if (!!_config.secureAppPagePath || _config.isSecureAppPage) {
@@ -16246,22 +16268,9 @@ F2.extend('', (function() {
throw new Error('"parentNode" must be null or a DOM node');
}
- var elements = [];
+ var elements = _getPlaceholders(parentNode || document.body);
var appConfigs = [];
- /**
- If the passed in element has a data-f2-appid attribute add it to the
- list of elements but to not search within that element for other
- placeholders
- */
- if (parentNode) {
- if (parentNode.hasAttribute('data-f2-appid')) {
- elements.push(parentNode);
- }
- } else if (document.querySelectorAll) {
- elements = elements.concat(document.querySelectorAll('[data-f2-appid]'));
- }
-
for (var i = 0, len = elements.length; i < len; i++) {
var appConfig = _getAppConfigFromElement(elements[i]);
appConfigs.push(appConfig);
diff --git a/dist/f2.min.js b/dist/f2.min.js
index ab58a487..e31b7060 100644
--- a/dist/f2.min.js
+++ b/dist/f2.min.js
@@ -56,6 +56,6 @@ i&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||eb.removeEvent(a,
}}}),cb.optSelected||(eb.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),eb.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){eb.propFix[this.toLowerCase()]=this}),cb.enctype||(eb.propFix.enctype="encoding");var Dc=/[\t\r\n\f]/g;eb.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(eb.isFunction(a))return this.each(function(b){eb(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(tb)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(Dc," "):" ")){for(f=0;e=b[f++];)d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=eb.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(eb.isFunction(a))return this.each(function(b){eb(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(tb)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(Dc," "):"")){for(f=0;e=b[f++];)for(;d.indexOf(" "+e+" ")>=0;)d=d.replace(" "+e+" "," ");g=a?eb.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(eb.isFunction(a)?function(c){eb(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c)for(var b,d=0,e=eb(this),f=a.match(tb)||[];b=f[d++];)e.hasClass(b)?e.removeClass(b):e.addClass(b);else(c===xb||"boolean"===c)&&(this.className&&eb._data(this,"__className__",this.className),this.className=this.className||a===!1?"":eb._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(Dc," ").indexOf(b)>=0)return!0;return!1}}),eb.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){eb.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),eb.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var Ec=eb.now(),Fc=/\?/,Gc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;eb.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=eb.trim(b+"");return e&&!eb.trim(e.replace(Gc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():eb.error("Invalid JSON: "+b)},eb.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||eb.error("Invalid XML: "+b),c};var Hc,Ic,Jc=/#.*$/,Kc=/([?&])_=[^&]*/,Lc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Mc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nc=/^(?:GET|HEAD)$/,Oc=/^\/\//,Pc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Qc={},Rc={},Sc="*/".concat("*");try{Ic=location.href}catch(Tc){Ic=ob.createElement("a"),Ic.href="",Ic=Ic.href}Hc=Pc.exec(Ic.toLowerCase())||[],eb.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ic,type:"GET",isLocal:Mc.test(Hc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Sc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":eb.parseJSON,"text xml":eb.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?P(P(a,eb.ajaxSettings),b):P(eb.ajaxSettings,a)},ajaxPrefilter:N(Qc),ajaxTransport:N(Rc),ajax:function(a,b){function c(a,b,c,d){var e,k,r,s,u,w=b;2!==t&&(t=2,h&&clearTimeout(h),j=void 0,g=d||"",v.readyState=a>0?4:0,e=a>=200&&300>a||304===a,c&&(s=Q(l,v,c)),s=R(l,s,v,e),e?(l.ifModified&&(u=v.getResponseHeader("Last-Modified"),u&&(eb.lastModified[f]=u),u=v.getResponseHeader("etag"),u&&(eb.etag[f]=u)),204===a||"HEAD"===l.type?w="nocontent":304===a?w="notmodified":(w=s.state,k=s.data,r=s.error,e=!r)):(r=w,(a||!w)&&(w="error",0>a&&(a=0))),v.status=a,v.statusText=(b||w)+"",e?o.resolveWith(m,[k,w,v]):o.rejectWith(m,[v,w,r]),v.statusCode(q),q=void 0,i&&n.trigger(e?"ajaxSuccess":"ajaxError",[v,l,e?k:r]),p.fireWith(m,[v,w]),i&&(n.trigger("ajaxComplete",[v,l]),--eb.active||eb.event.trigger("ajaxStop")))}"object"==typeof a&&(b=a,a=void 0),b=b||{};var d,e,f,g,h,i,j,k,l=eb.ajaxSetup({},b),m=l.context||l,n=l.context&&(m.nodeType||m.jquery)?eb(m):eb.event,o=eb.Deferred(),p=eb.Callbacks("once memory"),q=l.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!k)for(k={};b=Lc.exec(g);)k[b[1].toLowerCase()]=b[2];b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return j&&j.abort(b),c(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,l.url=((a||l.url||Ic)+"").replace(Jc,"").replace(Oc,Hc[1]+"//"),l.type=b.method||b.type||l.method||l.type,l.dataTypes=eb.trim(l.dataType||"*").toLowerCase().match(tb)||[""],null==l.crossDomain&&(d=Pc.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Hc[1]&&d[2]===Hc[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Hc[3]||("http:"===Hc[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=eb.param(l.data,l.traditional)),O(Qc,l,b,v),2===t)return v;i=l.global,i&&0===eb.active++&&eb.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Nc.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fc.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Kc.test(f)?f.replace(Kc,"$1_="+Ec++):f+(Fc.test(f)?"&":"?")+"_="+Ec++)),l.ifModified&&(eb.lastModified[f]&&v.setRequestHeader("If-Modified-Since",eb.lastModified[f]),eb.etag[f]&&v.setRequestHeader("If-None-Match",eb.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",l.contentType),v.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Sc+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)v.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,v,l)===!1||2===t))return v.abort();u="abort";for(e in{success:1,error:1,complete:1})v[e](l[e]);if(j=O(Rc,l,b,v)){v.readyState=1,i&&n.trigger("ajaxSend",[v,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){v.abort("timeout")},l.timeout));try{t=1,j.send(r,c)}catch(w){if(!(2>t))throw w;c(-1,w)}}else c(-1,"No Transport");return v},getJSON:function(a,b,c){return eb.get(a,b,c,"json")},getScript:function(a,b){return eb.get(a,void 0,b,"script")}}),eb.each(["get","post"],function(a,b){eb[b]=function(a,c,d,e){return eb.isFunction(c)&&(e=e||d,d=c,c=void 0),eb.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),eb.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){eb.fn[b]=function(a){return this.on(b,a)}}),eb._evalUrl=function(a){return eb.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},eb.fn.extend({wrapAll:function(a){if(eb.isFunction(a))return this.each(function(b){eb(this).wrapAll(a.call(this,b))});if(this[0]){var b=eb(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){for(var a=this;a.firstChild&&1===a.firstChild.nodeType;)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(eb.isFunction(a)?function(b){eb(this).wrapInner(a.call(this,b))}:function(){var b=eb(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=eb.isFunction(a);return this.each(function(c){eb(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){eb.nodeName(this,"body")||eb(this).replaceWith(this.childNodes)}).end()}}),eb.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!cb.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||eb.css(a,"display"))},eb.expr.filters.visible=function(a){return!eb.expr.filters.hidden(a)};var Uc=/%20/g,Vc=/\[\]$/,Wc=/\r?\n/g,Xc=/^(?:submit|button|image|reset|file)$/i,Yc=/^(?:input|select|textarea|keygen)/i;eb.param=function(a,b){var c,d=[],e=function(a,b){b=eb.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=eb.ajaxSettings&&eb.ajaxSettings.traditional),eb.isArray(a)||a.jquery&&!eb.isPlainObject(a))eb.each(a,function(){e(this.name,this.value)});else for(c in a)S(c,a[c],b,e);return d.join("&").replace(Uc,"+")},eb.fn.extend({serialize:function(){return eb.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=eb.prop(this,"elements");return a?eb.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!eb(this).is(":disabled")&&Yc.test(this.nodeName)&&!Xc.test(a)&&(this.checked||!Eb.test(a))}).map(function(a,b){var c=eb(this).val();return null==c?null:eb.isArray(c)?eb.map(c,function(a){return{name:b.name,value:a.replace(Wc,"\r\n")}}):{name:b.name,value:c.replace(Wc,"\r\n")}}).get()}}),eb.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&T()||U()}:T;var Zc=0,$c={},_c=eb.ajaxSettings.xhr();a.ActiveXObject&&eb(a).on("unload",function(){for(var a in $c)$c[a](void 0,!0)}),cb.cors=!!_c&&"withCredentials"in _c,_c=cb.ajax=!!_c,_c&&eb.ajaxTransport(function(a){if(!a.crossDomain||cb.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Zc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete $c[g],b=void 0,f.onreadystatechange=eb.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=$c[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}}),eb.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return eb.globalEval(a),a}}}),eb.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),eb.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=ob.head||eb("head")[0]||ob.documentElement;return{send:function(d,e){b=ob.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;eb.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||eb.expando+"_"+Ec++;return this[a]=!0,a}}),eb.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=eb.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(Fc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||eb.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&eb.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),eb.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||ob;var d=lb.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=eb.buildFragment([a],b,e),e&&e.length&&eb(e).remove(),eb.merge([],d.childNodes))};var cd=eb.fn.load;eb.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=eb.trim(a.slice(h,a.length)),a=a.slice(0,h)),eb.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&eb.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?eb("
").append(eb.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},eb.expr.filters.animated=function(a){return eb.grep(eb.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;eb.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=eb.css(a,"position"),l=eb(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=eb.css(a,"top"),i=eb.css(a,"left"),j=("absolute"===k||"fixed"===k)&&eb.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),eb.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},eb.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){eb.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,eb.contains(b,e)?(typeof e.getBoundingClientRect!==xb&&(d=e.getBoundingClientRect()),c=V(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===eb.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),eb.nodeName(a[0],"html")||(c=a.offset()),c.top+=eb.css(a[0],"borderTopWidth",!0),c.left+=eb.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-eb.css(d,"marginTop",!0),left:b.left-c.left-eb.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||dd;a&&!eb.nodeName(a,"html")&&"static"===eb.css(a,"position");)a=a.offsetParent;return a||dd})}}),eb.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);eb.fn[a]=function(d){return Db(this,function(a,d,e){var f=V(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?eb(f).scrollLeft():e,c?e:eb(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),eb.each(["top","left"],function(a,b){eb.cssHooks[b]=A(cb.pixelPosition,function(a,c){return c?(c=bc(a,b),dc.test(c)?eb(a).position()[b]+"px":c):void 0})}),eb.each({Height:"height",Width:"width"},function(a,b){eb.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){eb.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Db(this,function(b,c,d){var e;return eb.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?eb.css(b,c,g):eb.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),eb.fn.size=function(){return this.length},eb.fn.andSelf=eb.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return eb});var ed=a.jQuery,fd=a.$;return eb.noConflict=function(b){return a.$===eb&&(a.$=fd),b&&a.jQuery===eb&&(a.jQuery=ed),eb},typeof b===xb&&(a.jQuery=a.$=eb),eb});/*!
* This file creates $ and jQuery variables within the F2 closure scope
*/
-var $,jQuery=$=window.jQuery.noConflict(!0);+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$element.find(".modal-dialog").one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.checkScrollbar=function(){this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){if(document.body.clientWidth>=window.innerWidth)return 0;var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),!function(a){function b(){this._events={},this._conf&&c.call(this,this._conf)}function c(a){a&&(this._conf=a,a.delimiter&&(this.delimiter=a.delimiter),a.maxListeners&&(this._events.maxListeners=a.maxListeners),a.wildcard&&(this.wildcard=a.wildcard),a.newListener&&(this.newListener=a.newListener),this.wildcard&&(this.listenerTree={}))}function d(a){this._events={},this.newListener=!1,c.call(this,a)}function e(a,b,c,d){if(!c)return[];var f,g,h,i,j,k,l,m=[],n=b.length,o=b[d],p=b[d+1];if(d===n&&c._listeners){if("function"==typeof c._listeners)return a&&a.push(c._listeners),[c];for(f=0,g=c._listeners.length;g>f;f++)a&&a.push(c._listeners[f]);return[c]}if("*"===o||"**"===o||c[o]){if("*"===o){for(h in c)"_listeners"!==h&&c.hasOwnProperty(h)&&(m=m.concat(e(a,b,c[h],d+1)));return m}if("**"===o){l=d+1===n||d+2===n&&"*"===p,l&&c._listeners&&(m=m.concat(e(a,b,c,n)));for(h in c)"_listeners"!==h&&c.hasOwnProperty(h)&&("*"===h||"**"===h?(c[h]._listeners&&!l&&(m=m.concat(e(a,b,c[h],n))),m=m.concat(e(a,b,c[h],d))):m=m.concat(h===p?e(a,b,c[h],d+2):e(a,b,c[h],d)));return m}m=m.concat(e(a,b,c[o],d+1))}if(i=c["*"],i&&e(a,b,i,d+1),j=c["**"])if(n>d){j._listeners&&e(a,b,j,n);for(h in j)"_listeners"!==h&&j.hasOwnProperty(h)&&(h===p?e(a,b,j[h],d+2):h===o?e(a,b,j[h],d+1):(k={},k[h]=j[h],e(a,b,{"**":k},d+1)))}else j._listeners?e(a,b,j,n):j["*"]&&j["*"]._listeners&&e(a,b,j["*"],n);return m}function f(a,b){a="string"==typeof a?a.split(this.delimiter):a.slice();for(var c=0,d=a.length;d>c+1;c++)if("**"===a[c]&&"**"===a[c+1])return;for(var e=this.listenerTree,f=a.shift();f;){if(e[f]||(e[f]={}),e=e[f],0===a.length){if(e._listeners){if("function"==typeof e._listeners)e._listeners=[e._listeners,b];else if(g(e._listeners)&&(e._listeners.push(b),!e._listeners.warned)){var i=h;"undefined"!=typeof this._events.maxListeners&&(i=this._events.maxListeners),i>0&&e._listeners.length>i&&(e._listeners.warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",e._listeners.length),console.trace())}}else e._listeners=b;return!0}f=a.shift()}return!0}var g=Array.isArray?Array.isArray:function(a){return"[object Array]"===Object.prototype.toString.call(a)},h=10;d.prototype.delimiter=".",d.prototype.setMaxListeners=function(a){this._events||b.call(this),this._events.maxListeners=a,this._conf||(this._conf={}),this._conf.maxListeners=a},d.prototype.event="",d.prototype.once=function(a,b){return this.many(a,1,b),this},d.prototype.many=function(a,b,c){function d(){0===--b&&e.off(a,d),c.apply(this,arguments)}var e=this;if("function"!=typeof c)throw new Error("many only accepts instances of Function");return d._origin=c,this.on(a,d),e},d.prototype.emit=function(){this._events||b.call(this);var a=arguments[0];if("newListener"===a&&!this.newListener&&!this._events.newListener)return!1;if(this._all){for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];for(f=0,c=this._all.length;c>f;f++)this.event=a,this._all[f].apply(this,d)}if("error"===a&&!(this._all||this._events.error||this.wildcard&&this.listenerTree.error))throw arguments[1]instanceof Error?arguments[1]:new Error("Uncaught, unspecified 'error' event.");var g;if(this.wildcard){g=[];var h="string"==typeof a?a.split(this.delimiter):a.slice();e.call(this,g,h,this.listenerTree,0)}else g=this._events[a];if("function"==typeof g){if(this.event=a,1===arguments.length)g.call(this);else if(arguments.length>1)switch(arguments.length){case 2:g.call(this,arguments[1]);break;case 3:g.call(this,arguments[1],arguments[2]);break;default:for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];g.apply(this,d)}return!0}if(g){for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];for(var i=g.slice(),f=0,c=i.length;c>f;f++)this.event=a,i[f].apply(this,d);return i.length>0||this._all}return this._all},d.prototype.on=function(a,c){if("function"==typeof a)return this.onAny(a),this;if("function"!=typeof c)throw new Error("on only accepts instances of Function");if(this._events||b.call(this),this.emit("newListener",a,c),this.wildcard)return f.call(this,a,c),this;if(this._events[a]){if("function"==typeof this._events[a])this._events[a]=[this._events[a],c];else if(g(this._events[a])&&(this._events[a].push(c),!this._events[a].warned)){var d=h;"undefined"!=typeof this._events.maxListeners&&(d=this._events.maxListeners),d>0&&this._events[a].length>d&&(this._events[a].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[a].length),console.trace())}}else this._events[a]=c;return this},d.prototype.onAny=function(a){if(this._all||(this._all=[]),"function"!=typeof a)throw new Error("onAny only accepts instances of Function");return this._all.push(a),this},d.prototype.addListener=d.prototype.on,d.prototype.off=function(a,b){if("function"!=typeof b)throw new Error("removeListener only takes instances of Function");var c,d=[];if(this.wildcard){var f="string"==typeof a?a.split(this.delimiter):a.slice();d=e.call(this,null,f,this.listenerTree,0)}else{if(!this._events[a])return this;c=this._events[a],d.push({_listeners:c})}for(var h=0;hk;k++)if(c[k]===b||c[k].listener&&c[k].listener===b||c[k]._origin&&c[k]._origin===b){j=k;break}if(0>j)continue;return this.wildcard?i._listeners.splice(j,1):this._events[a].splice(j,1),0===c.length&&(this.wildcard?delete i._listeners:delete this._events[a]),this}(c===b||c.listener&&c.listener===b||c._origin&&c._origin===b)&&(this.wildcard?delete i._listeners:delete this._events[a])}return this},d.prototype.offAny=function(a){var b,c=0,d=0;if(a&&this._all&&this._all.length>0){for(b=this._all,c=0,d=b.length;d>c;c++)if(a===b[c])return b.splice(c,1),this}else this._all=[];return this},d.prototype.removeListener=d.prototype.off,d.prototype.removeAllListeners=function(a){if(0===arguments.length)return!this._events||b.call(this),this;if(this.wildcard)for(var c="string"==typeof a?a.split(this.delimiter):a.slice(),d=e.call(this,null,c,this.listenerTree,0),f=0;f9&&g>0,!0}function k(){if(!S){S=!0;for(var a=0;a'):(c=b.createElement("IFRAME"),c.name=a.props.name),c.id=c.name=a.props.name,delete a.props.name,"string"==typeof a.container&&(a.container=b.getElementById(a.container)),a.container||(u(c.style,{position:"absolute",top:"-2000px",left:"0px"}),a.container=b.body);var d=a.props.src;if(a.props.src="javascript:false",u(c,a.props),c.border=c.frameBorder=0,c.allowTransparency=!0,a.container.appendChild(c),a.onLoad&&E(c,"load",a.onLoad),a.usePost){var e,f=a.container.appendChild(b.createElement("form"));if(f.target=c.name,f.action=d,f.method="POST","object"==typeof a.usePost)for(var g in a.usePost)a.usePost.hasOwnProperty(g)&&(B?e=b.createElement(''):(e=b.createElement("INPUT"),e.name=g),e.value=a.usePost[g],f.appendChild(e));f.submit(),f.parentNode.removeChild(f)}else c.src=d;return a.props.src=d,c}function x(a,b){"string"==typeof a&&(a=[a]);for(var c,d=a.length;d--;)if(c=a[d],c=new RegExp("^"==c.substr(0,1)?c:"^"+c.replace(/(\*)/g,".$1").replace(/\?/g,".")+"$"),c.test(b))return!0;return!1}function y(d){var e,f=d.protocol;if(d.isHost=d.isHost||t(V.xdm_p),Q=d.hash||!1,d.props||(d.props={}),d.isHost)d.remote=r(d.remote),d.channel=d.channel||"default"+H++,d.secret=Math.random().toString(16).substring(2),t(f)&&(f=q(c.href)==q(d.remote)?"4":g(a,"postMessage")||g(b,"postMessage")?"1":d.swf&&g(a,"ActiveXObject")&&j()?"6":"Gecko"===navigator.product&&"frameElement"in a&&-1==navigator.userAgent.indexOf("WebKit")?"5":d.remoteHelper?"2":"0");else if(d.channel=V.xdm_c.replace(/["'<>\\]/g,""),d.secret=V.xdm_s,d.remote=V.xdm_e.replace(/["'<>\\]/g,""),f=V.xdm_p,d.acl&&!x(d.acl,d.remote))throw new Error("Access denied for "+d.remote);switch(d.protocol=f,f){case"0":if(u(d,{interval:100,delay:2e3,useResize:!0,useParent:!1,usePolling:!1},!0),d.isHost){if(!d.local){for(var h,i=c.protocol+"//"+c.host,k=b.body.getElementsByTagName("img"),l=k.length;l--;)if(h=k[l],h.src.substring(0,i.length)===i){d.local=h.src;break}d.local||(d.local=a)}var m={xdm_c:d.channel,xdm_p:0};d.local===a?(d.usePolling=!0,d.useParent=!0,d.local=c.protocol+"//"+c.host+c.pathname+c.search,m.xdm_e=d.local,m.xdm_pa=1):m.xdm_e=r(d.local),d.container&&(d.useResize=!1,m.xdm_po=1),d.remote=s(d.remote,m)}else u(d,{channel:V.xdm_c,remote:V.xdm_e,useParent:!t(V.xdm_pa),usePolling:!t(V.xdm_po),useResize:d.useParent?!1:d.useResize});e=[new N.stack.HashTransport(d),new N.stack.ReliableBehavior({}),new N.stack.QueueBehavior({encode:!0,maxLength:4e3-d.remote.length}),new N.stack.VerifyBehavior({initiate:d.isHost})];break;case"1":e=[new N.stack.PostMessageTransport(d)];break;case"2":d.isHost&&(d.remoteHelper=r(d.remoteHelper)),e=[new N.stack.NameTransport(d),new N.stack.QueueBehavior,new N.stack.VerifyBehavior({initiate:d.isHost})];break;case"3":e=[new N.stack.NixTransport(d)];break;case"4":e=[new N.stack.SameOriginTransport(d)];break;case"5":e=[new N.stack.FrameElementTransport(d)];break;case"6":C||j(),e=[new N.stack.FlashTransport(d)]}return e.push(new N.stack.QueueBehavior({lazy:d.lazy,remove:!0})),e}function z(a){for(var b,c={incoming:function(a,b){this.up.incoming(a,b)},outgoing:function(a,b){this.down.outgoing(a,b)},callback:function(a){this.up.callback(a)},init:function(){this.down.init()},destroy:function(){this.down.destroy()}},d=0,e=a.length;e>d;d++)b=a[d],u(b,c,!0),0!==d&&(b.down=a[d-1]),d!==e-1&&(b.up=a[d+1]);return b}function A(a){a.up.down=a.down,a.down.up=a.up,a.up=a.down=null}var B,C,D,E,F,G=this,H=Math.floor(1e4*Math.random()),I=Function.prototype,J=/^((http.?:)\/\/([^:\/\s]+)(:\d+)*)/,K=/[\-\w]+\/\.\.\//,L=/([^:])\/\//g,M="",N={},O=a.easyXDM,P="easyXDM_",Q=!1;if(g(a,"addEventListener"))E=function(a,b,c){a.addEventListener(b,c,!1)},F=function(a,b,c){a.removeEventListener(b,c,!1)};else{if(!g(a,"attachEvent"))throw new Error("Browser not supported");E=function(a,b,c){a.attachEvent("on"+b,c)},F=function(a,b,c){a.detachEvent("on"+b,c)}}var R,S=!1,T=[];if("readyState"in b?(R=b.readyState,S="complete"==R||~navigator.userAgent.indexOf("AppleWebKit/")&&("loaded"==R||"interactive"==R)):S=!!b.body,!S){if(g(a,"addEventListener"))E(b,"DOMContentLoaded",k);else if(E(b,"readystatechange",function(){"complete"==b.readyState&&k()}),b.documentElement.doScroll&&a===top){var U=function(){if(!S){try{b.documentElement.doScroll("left")}catch(a){return void d(U,1)}k()}};U()}E(a,"load",k)}var V=function(a){a=a.substring(1).split("&");for(var b,c={},d=a.length;d--;)b=a[d].split("="),c[b[0]]=e(b[1]);return c}(/xdm_e=/.test(c.search)?c.search:c.hash),W=function(){var a={},b={a:[1,2,3]},c='{"a":[1,2,3]}';return"undefined"!=typeof JSON&&"function"==typeof JSON.stringify&&JSON.stringify(b).replace(/\s/g,"")===c?JSON:(Object.toJSON&&Object.toJSON(b).replace(/\s/g,"")===c&&(a.stringify=Object.toJSON),"function"==typeof String.prototype.evalJSON&&(b=c.evalJSON(),b.a&&3===b.a.length&&3===b.a[2]&&(a.parse=function(a){return a.evalJSON()})),a.stringify&&a.parse?(W=function(){return a},a):null)};u(N,{version:"2.4.19.3",query:V,stack:{},apply:u,getJSONObject:W,whenReady:l,noConflict:n}),N.DomHelper={on:E,un:F,requiresJSON:function(c){h(a,"JSON")||b.write('')}},function(){var a={};N.Fn={set:function(b,c){a[b]=c},get:function(b,c){if(a.hasOwnProperty(b)){var d=a[b];return c&&delete a[b],d}}}}(),N.Socket=function(a){var b=z(y(a).concat([{incoming:function(b,c){a.onMessage(b,c)},callback:function(b){a.onReady&&a.onReady(b)}}])),c=q(a.remote);this.origin=q(a.remote),this.destroy=function(){b.destroy()},this.postMessage=function(a){b.outgoing(a,c)},b.init()},N.Rpc=function(a,b){if(b.local)for(var c in b.local)if(b.local.hasOwnProperty(c)){var d=b.local[c];"function"==typeof d&&(b.local[c]={method:d})}var e=z(y(a).concat([new N.stack.RpcBehavior(this,b),{callback:function(b){a.onReady&&a.onReady(b)}}]));this.origin=q(a.remote),this.destroy=function(){e.destroy()},e.init()},N.stack.SameOriginTransport=function(a){var b,e,f,g;return b={outgoing:function(a,b,c){f(a),c&&c()},destroy:function(){e&&(e.parentNode.removeChild(e),e=null)},onDOMReady:function(){g=q(a.remote),a.isHost?(u(a.props,{src:s(a.remote,{xdm_e:c.protocol+"//"+c.host+c.pathname,xdm_c:a.channel,xdm_p:4}),name:P+a.channel+"_provider"}),e=w(a),N.Fn.set(a.channel,function(a){return f=a,d(function(){b.up.callback(!0)},0),function(a){b.up.incoming(a,g)}})):(f=m().Fn.get(a.channel,!0)(function(a){b.up.incoming(a,g)}),d(function(){b.up.callback(!0)},0))},init:function(){l(b.onDOMReady,b)}}},N.stack.FlashTransport=function(a){function e(a){d(function(){h.up.incoming(a,j)},0)}function g(c){var d=a.swf+"?host="+a.isHost,e="easyXDM_swf_"+Math.floor(1e4*Math.random());N.Fn.set("flash_loaded"+c.replace(/[\-.]/g,"_"),function(){N.stack.FlashTransport[c].swf=k=m.firstChild;for(var a=N.stack.FlashTransport[c].queue,b=0;b"}var h,i,j,k,m;return h={outgoing:function(b,c,d){k.postMessage(a.channel,b.toString()),d&&d()},destroy:function(){try{k.destroyChannel(a.channel)}catch(b){}k=null,i&&(i.parentNode.removeChild(i),i=null)},onDOMReady:function(){j=a.remote,N.Fn.set("flash_"+a.channel+"_init",function(){d(function(){h.up.callback(!0)})}),N.Fn.set("flash_"+a.channel+"_onMessage",e),a.swf=r(a.swf);var b=o(a.swf),f=function(){N.stack.FlashTransport[b].init=!0,k=N.stack.FlashTransport[b].swf,k.createChannel(a.channel,a.secret,q(a.remote),a.isHost),a.isHost&&(D&&a.swfNoThrottle&&u(a.props,{position:"fixed",right:0,top:0,height:"20px",width:"20px"}),u(a.props,{src:s(a.remote,{xdm_e:q(c.href),xdm_c:a.channel,xdm_p:6,xdm_s:a.secret}),name:P+a.channel+"_provider"}),i=w(a))};N.stack.FlashTransport[b]&&N.stack.FlashTransport[b].init?f():N.stack.FlashTransport[b]?N.stack.FlashTransport[b].queue.push(f):(N.stack.FlashTransport[b]={queue:[f]},g(b))},init:function(){l(h.onDOMReady,h)}}},N.stack.PostMessageTransport=function(b){function e(a){if(a.origin)return q(a.origin);if(a.uri)return q(a.uri);if(a.domain)return c.protocol+"//"+a.domain;throw"Unable to retrieve the origin of the event"}function f(a){var c=e(a);c==j&&a.data.substring(0,b.channel.length+1)==b.channel+" "&&g.up.incoming(a.data.substring(b.channel.length+1),c)}var g,h,i,j;return g={outgoing:function(a,c,d){i.postMessage(b.channel+" "+a,c||j),d&&d()},destroy:function(){F(a,"message",f),h&&(i=null,h.parentNode.removeChild(h),h=null)},onDOMReady:function(){if(j=q(b.remote),b.isHost){var e=function(c){c.data==b.channel+"-ready"&&(i="postMessage"in h.contentWindow?h.contentWindow:h.contentWindow.document,F(a,"message",e),E(a,"message",f),d(function(){g.up.callback(!0)},0))};E(a,"message",e),u(b.props,{src:s(b.remote,{xdm_e:q(c.href),xdm_c:b.channel,xdm_p:1}),name:P+b.channel+"_provider"}),h=w(b)}else E(a,"message",f),i="postMessage"in a.parent?a.parent:a.parent.document,i.postMessage(b.channel+"-ready",j),d(function(){g.up.callback(!0)},0)},init:function(){l(g.onDOMReady,g)}}},N.stack.FrameElementTransport=function(e){var f,g,h,i;return f={outgoing:function(a,b,c){h.call(this,a),c&&c()},destroy:function(){g&&(g.parentNode.removeChild(g),g=null)},onDOMReady:function(){i=q(e.remote),e.isHost?(u(e.props,{src:s(e.remote,{xdm_e:q(c.href),xdm_c:e.channel,xdm_p:5}),name:P+e.channel+"_provider"}),g=w(e),g.fn=function(a){return delete g.fn,h=a,d(function(){f.up.callback(!0)},0),function(a){f.up.incoming(a,i)}}):(b.referrer&&q(b.referrer)!=V.xdm_e&&(a.top.location=V.xdm_e),h=a.frameElement.fn(function(a){f.up.incoming(a,i)}),f.up.callback(!0))},init:function(){l(f.onDOMReady,f)}}},N.stack.NameTransport=function(a){function b(b){var c=a.remoteHelper+(h?"#_3":"#_2")+a.channel;i.contentWindow.sendMessage(b,c)}function c(){h?2!==++k&&h||g.up.callback(!0):(b("ready"),g.up.callback(!0))}function e(a){g.up.incoming(a,n)}function f(){m&&d(function(){m(!0)},0)}var g,h,i,j,k,m,n,o;return g={outgoing:function(a,c,d){m=d,b(a)},destroy:function(){i.parentNode.removeChild(i),i=null,h&&(j.parentNode.removeChild(j),j=null)},onDOMReady:function(){h=a.isHost,k=0,n=q(a.remote),a.local=r(a.local),h?(N.Fn.set(a.channel,function(b){h&&"ready"===b&&(N.Fn.set(a.channel,e),c())}),o=s(a.remote,{xdm_e:a.local,xdm_c:a.channel,xdm_p:2}),u(a.props,{src:o+"#"+a.channel,name:P+a.channel+"_provider"}),j=w(a)):(a.remoteHelper=a.remote,N.Fn.set(a.channel,e));var b=function(){var e=i||this;F(e,"load",b),N.Fn.set(a.channel+"_load",f),function g(){"function"==typeof e.contentWindow.sendMessage?c():d(g,50)}()};i=w({props:{src:a.local+"#_4"+a.channel},onLoad:b})},init:function(){l(g.onDOMReady,g)}}},N.stack.HashTransport=function(b){function c(a){if(p){var c=b.remote+"#"+n++ +"_"+a;(i||!r?p.contentWindow:p).location=c}}function e(a){m=a,h.up.incoming(m.substring(m.indexOf("_")+1),s)}function f(){if(o){var a=o.location.href,b="",c=a.indexOf("#");-1!=c&&(b=a.substring(c)),b&&b!=m&&e(b)}}function g(){j=setInterval(f,k)}var h,i,j,k,m,n,o,p,r,s;return h={outgoing:function(a){c(a)},destroy:function(){a.clearInterval(j),(i||!r)&&p.parentNode.removeChild(p),p=null},onDOMReady:function(){if(i=b.isHost,k=b.interval,m="#"+b.channel,n=0,r=b.useParent,s=q(b.remote),i){if(u(b.props,{src:b.remote,name:P+b.channel+"_provider"}),r)b.onLoad=function(){o=a,g(),h.up.callback(!0)};else{var c=0,e=b.delay/50;!function f(){if(++c>e)throw new Error("Unable to reference listenerwindow");try{o=p.contentWindow.frames[P+b.channel+"_consumer"]}catch(a){}o?(g(),h.up.callback(!0)):d(f,50)}()}p=w(b)}else o=a,g(),r?(p=parent,h.up.callback(!0)):(u(b,{props:{src:b.remote+"#"+b.channel+new Date,name:P+b.channel+"_consumer"},onLoad:function(){h.up.callback(!0)}}),p=w(b))},init:function(){l(h.onDOMReady,h)}}},N.stack.ReliableBehavior=function(){var a,b,c=0,d=0,e="";return a={incoming:function(f,g){var h=f.indexOf("_"),i=f.substring(0,h).split(",");f=f.substring(h+1),i[0]==c&&(e="",b&&b(!0)),f.length>0&&(a.down.outgoing(i[1]+","+c+"_"+e,g),d!=i[1]&&(d=i[1],a.up.incoming(f,g)))},outgoing:function(f,g,h){e=f,b=h,a.down.outgoing(d+","+ ++c+"_"+f,g)}}},N.stack.QueueBehavior=function(a){function b(){if(a.remove&&0===h.length)return void A(c);if(!i&&0!==h.length&&!g){i=!0;var e=h.shift();c.down.outgoing(e.data,e.origin,function(a){i=!1,e.callback&&d(function(){e.callback(a)},0),b()})}}var c,g,h=[],i=!0,j="",k=0,l=!1,m=!1;return c={init:function(){t(a)&&(a={}),a.maxLength&&(k=a.maxLength,m=!0),a.lazy?l=!0:c.down.init()},callback:function(a){i=!1;var d=c.up;b(),d.callback(a)},incoming:function(b,d){if(m){var f=b.indexOf("_"),g=parseInt(b.substring(0,f),10);j+=b.substring(f+1),0===g&&(a.encode&&(j=e(j)),c.up.incoming(j,d),j="")}else c.up.incoming(b,d)},outgoing:function(d,e,g){a.encode&&(d=f(d));var i,j=[];if(m){for(;0!==d.length;)i=d.substring(0,k),d=d.substring(i.length),j.push(i);for(;i=j.shift();)h.push({data:j.length+"_"+i,origin:e,callback:0===j.length?g:null})}else h.push({data:d,origin:e,callback:g});l?c.down.init():b()},destroy:function(){g=!0,c.down.destroy()}}},N.stack.VerifyBehavior=function(a){function b(){d=Math.random().toString(16).substring(2),c.down.outgoing(d)}var c,d,e;return c={incoming:function(f,g){var h=f.indexOf("_");-1===h?f===d?c.up.callback(!0):e||(e=f,a.initiate||b(),c.down.outgoing(f)):f.substring(0,h)===e&&c.up.incoming(f.substring(h+1),g)},outgoing:function(a,b,e){c.down.outgoing(d+"_"+a,b,e)},callback:function(){a.initiate&&b()}}},N.stack.RpcBehavior=function(a,b){function c(a){a.jsonrpc="2.0",f.down.outgoing(g.stringify(a))}function d(a,b){var d=Array.prototype.slice;return function(){var e,f=arguments.length,g={method:b};f>0&&"function"==typeof arguments[f-1]?(f>1&&"function"==typeof arguments[f-2]?(e={success:arguments[f-2],error:arguments[f-1]},g.params=d.call(arguments,0,f-2)):(e={success:arguments[f-1]},g.params=d.call(arguments,0,f-1)),j[""+ ++h]=e,g.id=h):g.params=d.call(arguments,0),a.namedParams&&1===g.params.length&&(g.params=g.params[0]),c(g)}}function e(a,b,d,e){if(!d)return void(b&&c({id:b,error:{code:-32601,message:"Procedure not found."}}));var f,g;b?(f=function(a){f=I,c({id:b,result:a})},g=function(a,d){g=I;var e={id:b,error:{code:-32099,message:a}};d&&(e.error.data=d),c(e)}):f=g=I,i(e)||(e=[e]);try{var h=d.method.apply(d.scope,e.concat([f,g]));t(h)||f(h)}catch(j){g(j.message)}}var f,g=b.serializer||W(),h=0,j={};return f={incoming:function(a){var d=g.parse(a);if(d.method)b.handle?b.handle(d,c):e(d.method,d.id,b.local[d.method],d.params);else{var f=j[d.id];d.error?f.error&&f.error(d.error):f.success&&f.success(d.result),delete j[d.id]}},init:function(){if(b.remote)for(var c in b.remote)b.remote.hasOwnProperty(c)&&(a[c]=d(b.remote[c],c));f.down.init()},destroy:function(){for(var c in b.remote)b.remote.hasOwnProperty(c)&&a.hasOwnProperty(c)&&delete a[c];f.down.destroy()}}},G.easyXDM=N}(window,document,location,window.setTimeout,decodeURIComponent,encodeURIComponent);var F2=function(){function a(a){return"object"==typeof Node?a instanceof Node:a&&"object"==typeof a&&"number"==typeof a.nodeType&&"string"==typeof a.nodeName}function b(a){return"object"==typeof HTMLElement?a instanceof HTMLElement:a&&"object"==typeof a&&1===a.nodeType&&"string"==typeof a.nodeName}function c(a,b){function c(a){var b=[];return a.replace(/^(\.\.?(\/|$))+/,"").replace(/\/(\.(\/|$))+/g,"/").replace(/\/\.\.$/,"/../").replace(/\/?[^\/]*/g,function(a){"/.."===a?b.pop():b.push(a)}),b.join("").replace(/^\//,"/"===a.charAt(0)?"/":"")}return b=d(b||""),a=d(a||""),b&&a?(b.protocol||a.protocol)+(b.protocol||b.authority?b.authority:a.authority)+c(b.protocol||b.authority||"/"===b.pathname.charAt(0)?b.pathname:b.pathname?(a.authority&&!a.pathname?"/":"")+a.pathname.slice(0,a.pathname.lastIndexOf("/")+1)+b.pathname:a.pathname)+(b.protocol||b.authority||b.pathname?b.search:b.search||a.search)+b.hash:null}function d(a){var b=/^\s+|\s+$/g,c=/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/,d=String(a).replace(b,"").match(c);return d?{href:d[0]||"",protocol:d[1]||"",authority:d[2]||"",host:d[3]||"",hostname:d[4]||"",port:d[5]||"",pathname:d[6]||"",search:d[7]||"",hash:d[8]||""}:void 0}return{appConfigReplacer:function(a,b){return"root"===a||"ui"===a||"height"===a?void 0:b},Apps:{},extend:function(a,b,c){var d="function"==typeof b,e=a?a.split("."):[],f=this;b=b||{},"F2"===e[0]&&(e=e.slice(1));for(var g=0,h=e.length;h>g;g++)f[e[g]]||(f[e[g]]=d&&g+1===h?b:{}),f=f[e[g]];if(!d)for(var i in b)(void 0===f[i]||c)&&(f[i]=b[i]);return f},guid:function(){function a(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()},inArray:function(a,b){return jQuery.inArray(a,b)>-1},isLocalRequest:function(a){var b,d,e=a.toLowerCase(),f=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,g=f.execute(e);try{b=location.href}catch(h){b=document.createElement("a"),b.href="",b=b.href}b=b.toLowerCase(),g||(e=c(b,e).toLowerCase(),g=f.exec(e)),d=f.exec(b)||[];var i=!(g&&(g[1]!==d[1]||g[2]!==d[2]||(g[3]||("http:"===g[1]?"80":"443"))!==(d[3]||("http:"===d[1]?"80":"443"))));return i},isNativeDOMNode:function(c){return a(c)||b(c)},log:function(){if(window.console){var a="log",b=Array.prototype.slice.apply(arguments);b.length>1&&b[0]in window.console&&(a=b.shift()),window.console[a]&&window.console[a].apply(window.console,b)}},parse:function(a){return JSON.parse(a)
-},stringify:function(a,b,c){return JSON.stringify(a,b,c)},version:function(){return"1.4.0"}}}();F2.extend("AppHandlers",function(){function a(a,c,d,e){b(a);var f={domNode:null,func:null,namespace:c};if(F2.isNativeDOMNode(d)?f.domNode=d:"function"==typeof d&&(f.func=d),!f.func&&!f.domNode)throw new Error("Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.");if(f.domNode&&!e)throw new Error("Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.");return f}function b(a){if(g!==a&&h!==a)throw new Error("Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().")}function c(a){if(a!==h)throw new Error("Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().")}function d(a,b){for(var c=a.slice(),d=c.length;d>=0;d--)(!c[d]||c[d].namespace&&c[d].namespace.toLowerCase()===b)&&c.splice(d,1);return c}function e(a,c,f){if(b(a),f)if(f=f.toLowerCase(),c&&c in i)i[c]=d(i[c],f);else for(var g in i)e(a,g,f);else c&&(i[c]=[])}function f(a){var b="";if(-1!==a.indexOf(".")){var c=a.split(".");a=c[0],b=c[1]}return{key:a,namespace:b}}var g=F2.guid(),h=F2.guid(),i={appCreateRoot:[],appRenderBefore:[],appDestroyBefore:[],appRenderAfter:[],appDestroyAfter:[],appRender:[],appDestroy:[],appScriptLoadFailed:[]},j={appRender:function(a,b){F2.isNativeDOMNode(a.root)?jQuery(a.root).append(b):a.root=jQuery(b).get(0),document.body.appendChild(a.root)},appDestroy:function(a){a.app&&a.app.destroy&&("function"==typeof a.app.destroy?a.app.destroy():F2.log(a.config.appId+" has a destroy property, but destroy is not of type function and as such will not be executed.")),jQuery(a.config.root).fadeOut(500,function(){jQuery(this).remove()})}};return{getToken:function(){return delete this.getToken,g},__f2GetToken:function(){return delete this.__f2GetToken,h},__trigger:function(a,b){if(c(a),!i[b])throw new Error("Invalid EventKey passed. Check your inputs and try again.");var d=Array.prototype.slice.call(arguments,2);if(!i[b].length&&j[b])j[b].apply(F2,d);else for(var e=0;e=4){var g=arguments[2],h=arguments[3];g.root?jQuery(g.root).append(h):g.root=jQuery(h).get(0),jQuery(f.domNode).append(g.root)}else f.func.apply(F2,d)}return this},on:function(b,c,d){if(!c)throw new Error("eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.");var e=f(c);if(!i[e.key])throw new Error("Invalid eventKey passed. Check your inputs and try again.");var g="appRender"===e.key,h=a(b,e.namespace,d,g);return i[e.key].push(h),this},off:function(a,b){if(!b)throw new Error("eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.");var c=f(b);if(!i[c.key])throw new Error("Invalid EventKey passed. Check your inputs and try again.");return e(a,c.key,c.namespace),this}}}()),F2.extend("Constants",{AppHandlers:{APP_CREATE_ROOT:"appCreateRoot",APP_RENDER_BEFORE:"appRenderBefore",APP_RENDER:"appRender",APP_RENDER_AFTER:"appRenderAfter",APP_DESTROY_BEFORE:"appDestroyBefore",APP_DESTROY:"appDestroy",APP_DESTROY_AFTER:"appDestroyAfter",APP_SCRIPT_LOAD_FAILED:"appScriptLoadFailed"}}),F2.extend("",{App:function(){return{init:function(){}}},AppConfig:{appId:"",context:{},enableBatchRequests:!1,height:0,instanceId:"",isSecure:!1,containerLocale:null,localeSupport:[],manifestUrl:"",maxWidth:0,minGridSize:4,minWidth:300,name:"",root:void 0,ui:void 0,views:[]},AppManifest:{apps:[],inlineScripts:[],scripts:[],styles:[]},AppContent:{data:{},html:"",status:""},ContainerConfig:{afterAppRender:null,appRender:null,beforeAppRender:null,debugMode:!1,locale:null,scriptErrorTimeout:7e3,isSecureAppPage:!1,secureAppPagePath:"",supportedViews:[],UI:{Mask:{backgroundColor:"#FFF",loadingIcon:"",opacity:.6,useClasses:!1,zIndex:2}},xhr:{dataType:null,type:null,url:null},loadScripts:function(){},loadStyles:function(){}}}),F2.extend("Constants",{Css:{APP:"f2-app",APP_CONTAINER:"f2-app-container",APP_TITLE:"f2-app-title",APP_VIEW:"f2-app-view",APP_VIEW_TRIGGER:"f2-app-view-trigger",MASK:"f2-mask",MASK_CONTAINER:"f2-mask-container"},Events:{APP_SYMBOL_CHANGE:"App.symbolChange",APP_WIDTH_CHANGE:"App.widthChange.",CONTAINER_SYMBOL_CHANGE:"Container.symbolChange",CONTAINER_WIDTH_CHANGE:"Container.widthChange",CONTAINER_LOCALE_CHANGE:"Container.localeChange"},JSONP_CALLBACK:"F2_jsonpCallback_",Sockets:{EVENT:"__event__",LOAD:"__socketLoad__",RPC:"__rpc__",RPC_CALLBACK:"__rpcCallback__",UI_RPC:"__uiRpc__"},Views:{DATA_ATTRIBUTE:"data-f2-view",ABOUT:"about",HELP:"help",HOME:"home",REMOVE:"remove",SETTINGS:"settings"}}),F2.extend("",function(){function _afterAppRender(a,b){var c=_config.afterAppRender||function(a,b){return jQuery(b).appendTo("body")},d=c(a,b);return _config.afterAppRender&&!d?void F2.log("F2.ContainerConfig.afterAppRender() must return the DOM Element that contains the app"):(jQuery(d).addClass(F2.Constants.Css.APP),d.get(0))}function _appRender(a,b){return b=_outerHtml(jQuery(b).addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId)),_config.appRender&&(b=_config.appRender(a,b)),_outerHtml(b)}function _beforeAppRender(a){var b=_config.beforeAppRender||jQuery.noop;return b(a)}function _appScriptLoadFailed(a,b){_config.appScriptLoadFailed&&_config.appScriptLoadFailed(a,b)}function _createAppConfig(a){return a=jQuery.extend(!0,{},a),a.instanceId=a.instanceId||F2.guid(),a.views=a.views||[],F2.inArray(F2.Constants.Views.HOME,a.views)||a.views.push(F2.Constants.Views.HOME),F2.ContainerConfig.locale&&(a.containerLocale=F2.ContainerConfig.locale),a}function _getAppConfigFromElement(a){var b;if(a){var c=a.getAttribute("data-f2-appid"),d=a.getAttribute("data-f2-manifesturl");if(c&&d){b={appId:c,enableBatchRequests:a.hasAttribute("data-f2-enablebatchrequests"),isSecure:a.hasAttribute("data-f2-issecure"),manifestUrl:d,root:a};var e=a.getAttribute("data-f2-context");if(e)try{b.context=F2.parse(e)}catch(f){console.warn('F2: "data-f2-context" of node is not valid JSON','"'+f+'"')}}}return b}function _hasNonTextChildNodes(a){var b=!1;if(a.hasChildNodes())for(var c=0,d=a.childNodes.length;d>c;c++)if(1===a.childNodes[c].nodeType){b=!0;break}return b}function _hydrateContainerConfig(a){a.scriptErrorTimeout||(a.scriptErrorTimeout=F2.ContainerConfig.scriptErrorTimeout),a.debugMode!==!0&&(a.debugMode=F2.ContainerConfig.debugMode),a.locale&&"string"==typeof a.locale&&(F2.ContainerConfig.locale=a.locale)}function _initAppEvents(a){var b="."+F2.Constants.Css.APP_VIEW_TRIGGER+"["+F2.Constants.Views.DATA_ATTRIBUTE+"]";jQuery(a.root).on("click",b,function(b){b.preventDefault();var c=jQuery(this).attr(F2.Constants.Views.DATA_ATTRIBUTE).toLowerCase();c===F2.Constants.Views.REMOVE?F2.removeApp(a.instanceId):a.ui.Views.change(c)})}function _initContainerEvents(){function a(){F2.Events.emit(F2.Constants.Events.CONTAINER_WIDTH_CHANGE)}var b;jQuery(window).on("resize",function(){clearTimeout(b),b=setTimeout(a,100)}),F2.Events.on(F2.Constants.Events.CONTAINER_LOCALE_CHANGE,function(a){a.locale&&"string"==typeof a.locale&&(F2.ContainerConfig.locale=a.locale)})}function _isPlaceholderElement(a){return F2.isNativeDOMNode(a)&&!_hasNonTextChildNodes(a)&&!!a.getAttribute("data-f2-appid")&&!!a.getAttribute("data-f2-manifesturl")}function _isInit(){return!!_config}function _createAppInstance(a,b){a.ui=new F2.UI(a),void 0!==F2.Apps[a.appId]&&("function"==typeof F2.Apps[a.appId]?setTimeout(function(){_apps[a.instanceId].app=new F2.Apps[a.appId](a,b,a.root),void 0!==_apps[a.instanceId].app.init&&_apps[a.instanceId].app.init()},0):F2.log("app initialization class is defined but not a function. ("+a.appId+")"))}function _loadApps(appConfigs,appManifest){function _loadStyles(a,b){if(_config.loadStyles)return _config.loadStyles(a,b);var c,d=!!document.createStyleSheet;jQuery.each(a,function(a,b){var e=b,f=b.toLowerCase();_loadedStyles[f]||(d?document.createStyleSheet(e):(c=c||[],c.push('')),_loadedStyles[f]=!0)}),c&&jQuery("head").append(c.join("")),b()}function _loadScripts(a,b){function c(a){setTimeout(function(){var b={src:a.target.src,appId:appConfigs[0].appId};F2.log("Script defined in '"+b.appId+"' failed to load '"+b.src+"'"),F2.Events.emit("RESOURCE_FAILED_TO_LOAD",b),_usesAppHandlers?F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,appConfigs[0],b.src):_appScriptLoadFailed(appConfigs[0],b.src)},_config.scriptErrorTimeout)}function d(){++h===g&&b()}function e(a,b){var c,d=_loadingScripts[a];if(d){for(var e=0;ei;i++)try{eval(inlines[i])}catch(exception){F2.log("Error loading inline script: "+exception+"\n\n"+inlines[i]),F2.Events.emit("RESOURCE_FAILED_TO_LOAD",{appId:appConfigs[0].appId,src:inlines[i],err:exception}),_usesAppHandlers?F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,appConfigs[0],exception):_appScriptLoadFailed(appConfigs[0],exception)}cb()}}function elementInDocument(a){if(a)for(;a.parentNode;)if(a=a.parentNode,a===document)return!0;return!1}function _loadHtml(a){jQuery.each(a,function(a,b){if(_isPlaceholderElement(appConfigs[a].root))jQuery(appConfigs[a].root).addClass(F2.Constants.Css.APP).append(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+appConfigs[a].appId));else if(_usesAppHandlers){F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER,appConfigs[a],_outerHtml(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+appConfigs[a].appId)));var c=appConfigs[a].appId,d=appConfigs[a].root;if(!d)throw new Error("Root for "+c+" must be a native DOM element and cannot be null or undefined. Check your AppHandler callbacks to ensure you have set App root to a native DOM element.");if(!elementInDocument(d))throw new Error("App root for "+c+" was not appended to the DOM. Check your AppHandler callbacks to ensure you have rendered the app root to the DOM.");if(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER_AFTER,appConfigs[a]),!F2.isNativeDOMNode(d))throw new Error("App root for "+c+" must be a native DOM element. Check your AppHandler callbacks to ensure you have set app root to a native DOM element.")}else appConfigs[a].root=_afterAppRender(appConfigs[a],_appRender(appConfigs[a],b.html));_initAppEvents(appConfigs[a])})}if(appConfigs=[].concat(appConfigs),1===appConfigs.length&&appConfigs[0].isSecure&&!_config.isSecureAppPage)return void _loadSecureApp(appConfigs[0],appManifest);if(appConfigs.length!==appManifest.apps.length)return void F2.log("The number of apps defined in the AppManifest do not match the number requested.",appManifest);var manifestScripts=appManifest.scripts||[],manifestStyles=appManifest.styles||[],manifestInlines=appManifest.inlineScripts||[],manifestApps=appManifest.apps||[];_loadStyles(manifestStyles,function(){_loadHtml(manifestApps),_loadScripts(manifestScripts,function(){appConfigs[0]&&F2.Events.emit("APP_SCRIPTS_LOADED",{appId:appConfigs[0].appId,scripts:manifestScripts}),_loadInlineScripts(manifestInlines,function(){jQuery.each(appConfigs,function(a,b){_createAppInstance(b,manifestApps[a])})})})})}function _loadSecureApp(a,b){if(_config.secureAppPagePath){if(_isPlaceholderElement(a.root))jQuery(a.root).addClass(F2.Constants.Css.APP).append(jQuery("").addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId));else if(_usesAppHandlers){var c=jQuery(a.root);if(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER,a,_outerHtml(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId))),0===c.parents("body:first").length)throw new Error("App was never rendered on the page. Please check your AppHandler callbacks to ensure you have rendered the app root to the DOM.");if(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER_AFTER,a),!a.root)throw new Error("App Root must be a native dom node and can not be null or undefined. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.");if(!F2.isNativeDOMNode(a.root))throw new Error("App Root must be a native dom node. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.")}else a.root=_afterAppRender(a,_appRender(a,""));a.ui=new F2.UI(a),_initAppEvents(a),F2.Rpc.register(a,b)}else F2.log('Unable to load secure app: "secureAppPagePath" is not defined in F2.ContainerConfig.')}function _outerHtml(a){return jQuery("").append(a).html()}function _validateApp(a){return a.appId?a.root||a.manifestUrl?!0:(F2.log('"manifestUrl" missing from app object'),!1):(F2.log('"appId" missing from app object'),!1)}function _validateContainerConfig(){if(_config&&_config.xhr){if("function"!=typeof _config.xhr&&"object"!=typeof _config.xhr)throw new Error("ContainerConfig.xhr should be a function or an object");if(_config.xhr.dataType&&"function"!=typeof _config.xhr.dataType)throw new Error("ContainerConfig.xhr.dataType should be a function");if(_config.xhr.type&&"function"!=typeof _config.xhr.type)throw new Error("ContainerConfig.xhr.type should be a function");if(_config.xhr.url&&"function"!=typeof _config.xhr.url)throw new Error("ContainerConfig.xhr.url should be a function")}return!0}var _apps={},_config=!1,_usesAppHandlers=!1,_appHandlerToken=F2.AppHandlers.__f2GetToken(),_loadedScripts={},_loadedStyles={},_loadingScripts={};return{getContainerState:function(){return _isInit()?jQuery.map(_apps,function(a){return{appId:a.config.appId}}):void F2.log("F2.init() must be called before F2.getContainerState()")},getContainerLocale:function(){return _isInit()?F2.ContainerConfig.locale:void F2.log("F2.init() must be called before F2.getContainerLocale()")},init:function(a){_config=a||{},_validateContainerConfig(),_hydrateContainerConfig(_config),_usesAppHandlers=_config.beforeAppRender||_config.appRender||_config.afterAppRender||_config.appScriptLoadFailed,(_config.secureAppPagePath||_config.isSecureAppPage)&&F2.Rpc.init(_config.secureAppPagePath?_config.secureAppPagePath:!1),F2.UI.init(_config),_config.isSecureAppPage||_initContainerEvents()},isInit:_isInit,loadPlaceholders:function(a){if(a&&!F2.isNativeDOMNode(a))throw new Error('"parentNode" must be null or a DOM node');var b=[],c=[];a?a.hasAttribute("data-f2-appid")&&b.push(a):document.querySelectorAll&&(b=b.concat(document.querySelectorAll("[data-f2-appid]")));for(var d=0,e=b.length;e>d;d++){var f=_getAppConfigFromElement(b[d]);c.push(f)}c.length&&F2.registerApps(c)},registerApps:function(a,b){if(!_isInit())return void F2.log("F2.init() must be called before F2.registerApps()");if(!a)return void F2.log("At least one AppConfig must be passed when calling F2.registerApps()");var c=[],d={},e={},f=!1;return a=[].concat(a),b=[].concat(b||[]),f=!!b.length,a.length?a.length&&f&&a.length!==b.length?void F2.log('The length of "apps" does not equal the length of "appManifests"'):(jQuery.each(a,function(a,e){if(e=_createAppConfig(e),e.root=e.root||null,_validateApp(e)){if(_apps[e.instanceId]={config:e},e.root&&!_isPlaceholderElement(e.root)){if(!e.root&&"string"!=typeof e.root&&!F2.isNativeDOMNode(e.root))throw F2.log("AppConfig invalid for pre-load, not a valid string and not dom node"),F2.log("AppConfig instance:",e),new Error("Preloaded appConfig.root property must be a native dom node or a string representing a sizzle selector. Please check your inputs and try again.");if(1!==jQuery(e.root).length)throw F2.log("AppConfig invalid for pre-load, root not unique"),F2.log("AppConfig instance:",e),F2.log("Number of dom node instances:",jQuery(e.root).length),new Error("Preloaded appConfig.root property must map to a unique dom node. Please check your inputs and try again.");return _createAppInstance(e),void _initAppEvents(e)}_isPlaceholderElement(e.root)||(_usesAppHandlers?(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_CREATE_ROOT,e),F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER_BEFORE,e)):e.root=_beforeAppRender(e)),f?_loadApps(e,b[a]):e.enableBatchRequests&&!e.isSecure?(d[e.manifestUrl.toLowerCase()]=d[e.manifestUrl.toLowerCase()]||[],d[e.manifestUrl.toLowerCase()].push(e)):c.push({apps:[e],url:e.manifestUrl})}}),void(f||(jQuery.each(d,function(a,b){c.push({url:a,apps:b})}),jQuery.each(c,function(a,b){var c=F2.Constants.JSONP_CALLBACK+b.apps[0].appId;e[c]=e[c]||[],e[c].push(b)}),jQuery.each(e,function(a,b){function c(d,e){function f(){c(a,b.pop())}function g(){jQuery.each(e.apps,function(a,b){b.name=b.name||b.appId,F2.log("Removed failed "+b.name+" app",b),F2.removeApp(b.instanceId)})}function h(a){_loadApps(e.apps,a)}if(e){var i="GET",j="jsonp";if(_config.xhr){if(_config.xhr.dataType&&(j=_config.xhr.dataType(e.url,e.apps),"string"!=typeof j))throw new Error("ContainerConfig.xhr.dataType should return a string");if(_config.xhr.type&&(i=_config.xhr.type(e.url,e.apps),"string"!=typeof i))throw new Error("ContainerConfig.xhr.type should return a string");if(_config.xhr.url&&(e.url=_config.xhr.url(e.url,e.apps),"string"!=typeof e.url))throw new Error("ContainerConfig.xhr.url should return a string")}var k=_config.xhr;"function"!=typeof k&&(k=function(a,b,c,f,g){jQuery.ajax({url:a,type:i,data:{params:F2.stringify(e.apps,F2.appConfigReplacer)},jsonp:!1,jsonpCallback:d,dataType:j,success:c,error:function(a,b,c){F2.log("Failed to load app(s)",c.toString(),e.apps),f()},complete:g})}),k(e.url,e.apps,h,g,f)}}c(a,b.pop())})))):void F2.log("At least one AppConfig must be passed when calling F2.registerApps()")},removeAllApps:function(){return _isInit()?void jQuery.each(_apps,function(a,b){F2.removeApp(b.config.instanceId)}):void F2.log("F2.init() must be called before F2.removeAllApps()")},removeApp:function(a){return _isInit()?void(_apps[a]&&(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_DESTROY_BEFORE,_apps[a]),F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_DESTROY,_apps[a]),F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_DESTROY_AFTER,_apps[a]),delete _apps[a])):void F2.log("F2.init() must be called before F2.removeApp()")}}}()),F2.extend("Events",function(){var a=new EventEmitter2({wildcard:!0});return a.setMaxListeners(0),{_socketEmit:function(){return EventEmitter2.prototype.emit.apply(a,[].slice.call(arguments))},emit:function(){return F2.Rpc.broadcast(F2.Constants.Sockets.EVENT,[].slice.call(arguments)),EventEmitter2.prototype.emit.apply(a,[].slice.call(arguments))},many:function(b,c,d){return a.many(b,c,d)},off:function(b,c){return a.off(b,c)},on:function(b,c){return a.on(b,c)},once:function(b,c){return a.once(b,c)}}}()),F2.extend("Rpc",function(){function a(){var a,b=!1,c=[],e=new easyXDM.Socket({onMessage:function(f,g){if(!b&&l.test(f)){f=f.replace(l,"");var i=F2.parse(f);2===i.length&&(a=i[0],h[a.instanceId]={config:a,socket:e},F2.registerApps([a],[i[1]]),jQuery.each(c,function(){d(a,f,g)}),b=!0)}else b?d(a,f,g):c.push(f)}})}function b(a,b){var c=jQuery(a.root);if(!c.length)return void F2.log("Unable to locate app in order to establish secure connection.");var e={scrolling:"no",style:{width:"100%"}};a.height&&(e.style.height=a.height+"px");var f=new easyXDM.Socket({remote:g,container:c.get(0),props:e,onMessage:function(b,c){d(a,b,c)},onReady:function(){f.postMessage(F2.Constants.Sockets.LOAD+F2.stringify([a,b],F2.appConfigReplacer))}});return f}function c(a,b){return function(){F2.Rpc.call(a,F2.Constants.Sockets.RPC_CALLBACK,b,[].slice.call(arguments).slice(2))}}function d(a,b){function d(a,b){for(var c=String(b).split("."),d=0;d','
','
','
','','
',a,"
","
",'
',b,"
",'","
","
","
"].join("")}var d=a,e=jQuery(a.root);return{hideMask:function(a){F2.UI.hideMask(d.instanceId,a)},Modals:function(){function a(a){return c("Alert",a)}function b(a){return c("Confirm",a,!0)}return{alert:function(b,c){return F2.isInit()?void(F2.Rpc.isRemote(d.instanceId)?F2.Rpc.call(d.instanceId,F2.Constants.Sockets.UI_RPC,"Modals.alert",[].slice.call(arguments)):jQuery(a(b)).on("show.bs.modal",function(){var a=this;jQuery(a).find(".btn-primary").on("click",function(){jQuery(a).modal("hide").remove(),(c||jQuery.noop)()})}).modal({backdrop:!0})):void F2.log("F2.init() must be called before F2.UI.Modals.alert()")},confirm:function(a,c,e){return F2.isInit()?void(F2.Rpc.isRemote(d.instanceId)?F2.Rpc.call(d.instanceId,F2.Constants.Sockets.UI_RPC,"Modals.confirm",[].slice.call(arguments)):jQuery(b(a)).on("show.bs.modal",function(){var a=this;jQuery(a).find(".btn-ok").on("click",function(){jQuery(a).modal("hide").remove(),(c||jQuery.noop)()}),jQuery(a).find(".btn-cancel").on("click",function(){jQuery(a).modal("hide").remove(),(e||jQuery.noop)()})}).modal({backdrop:!0})):void F2.log("F2.init() must be called before F2.UI.Modals.confirm()")}}}(),setTitle:function(a){F2.Rpc.isRemote(d.instanceId)?F2.Rpc.call(d.instanceId,F2.Constants.Sockets.UI_RPC,"setTitle",[a]):jQuery(d.root).find("."+F2.Constants.Css.APP_TITLE).text(a)},showMask:function(a,b){F2.UI.showMask(d.instanceId,a,b)},updateHeight:b,Views:function(){function a(a){return f.test(a)?!0:(F2.log('"'+a+'" is not a valid F2.UI.Views event name'),!1)}var c=new EventEmitter2,f=/change/i;return c.setMaxListeners(0),{change:function(a){"function"==typeof a?this.on("change",a):"string"==typeof a&&(d.isSecure&&!F2.Rpc.isRemote(d.instanceId)?F2.Rpc.call(d.instanceId,F2.Constants.Sockets.UI_RPC,"Views.change",[].slice.call(arguments)):F2.inArray(a,d.views)&&(jQuery("."+F2.Constants.Css.APP_VIEW,e).addClass("hide").filter('[data-f2-view="'+a+'"]',e).removeClass("hide"),b(),c.emit("change",a)))},off:function(b,d){a(b)&&c.off(b,d)},on:function(b,d){a(b)&&c.on(b,d)}}}()}}var b;return a.hideMask=function(a,b){if(!F2.isInit())return void F2.log("F2.init() must be called before F2.UI.hideMask()");if(F2.Rpc.isRemote(a)&&!jQuery(b).is("."+F2.Constants.Css.APP))F2.Rpc.call(a,F2.Constants.Sockets.RPC,"F2.UI.hideMask",[a,jQuery(b).selector]);else{var c=jQuery(b);c.find("> ."+F2.Constants.Css.MASK).remove(),c.removeClass(F2.Constants.Css.MASK_CONTAINER),c.data(F2.Constants.Css.MASK_CONTAINER)&&c.css({position:"static"})}},a.init=function(a){b=a,b.UI=jQuery.extend(!0,{},F2.ContainerConfig.UI,b.UI||{})},a.showMask=function(a,c,d){if(!F2.isInit())return void F2.log("F2.init() must be called before F2.UI.showMask()");if(F2.Rpc.isRemote(a)&&jQuery(c).is("."+F2.Constants.Css.APP))F2.Rpc.call(a,F2.Constants.Sockets.RPC,"F2.UI.showMask",[a,jQuery(c).selector,d]);else{d&&!b.UI.Mask.loadingIcon&&F2.log("Unable to display loading icon. Please set F2.ContainerConfig.UI.Mask.loadingIcon when calling F2.init();");var e=jQuery(c).addClass(F2.Constants.Css.MASK_CONTAINER),f=jQuery("
").height("100%").width("100%").addClass(F2.Constants.Css.MASK);b.UI.Mask.useClasses||f.css({"background-color":b.UI.Mask.backgroundColor,"background-image":b.UI.Mask.loadingIcon?"url("+b.UI.Mask.loadingIcon+")":"","background-position":"50% 50%","background-repeat":"no-repeat",display:"block",left:0,"min-height":30,padding:0,position:"absolute",top:0,"z-index":b.UI.Mask.zIndex,filter:"alpha(opacity="+100*b.UI.Mask.opacity+")",opacity:b.UI.Mask.opacity}),"static"===e.css("position")&&(e.css({position:"relative"}),e.data(F2.Constants.Css.MASK_CONTAINER,!0)),e.append(f)}},a}()),jQuery(function(){var a=[],b=function(b){b&&a.push(b)},c=function(a){if(a)for(var c=0,d=a.length;d>c;c++)b(a[c])};if(b(document.getElementById("f2-autoload")),document.querySelectorAll&&(c(document.querySelectorAll("[data-f2-autoload]")),c(document.querySelectorAll(".f2-autoload"))),a.length){F2.init();for(var d=0,e=a.length;e>d;d++)F2.loadPlaceholders(a[d])}}),exports.F2=F2,"undefined"!=typeof define&&define.amd&&define(function(){return F2})}}("undefined"!=typeof exports?exports:window);
+var $,jQuery=$=window.jQuery.noConflict(!0);+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$element.find(".modal-dialog").one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.checkScrollbar=function(){this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){if(document.body.clientWidth>=window.innerWidth)return 0;var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),!function(a){function b(){this._events={},this._conf&&c.call(this,this._conf)}function c(a){a&&(this._conf=a,a.delimiter&&(this.delimiter=a.delimiter),a.maxListeners&&(this._events.maxListeners=a.maxListeners),a.wildcard&&(this.wildcard=a.wildcard),a.newListener&&(this.newListener=a.newListener),this.wildcard&&(this.listenerTree={}))}function d(a){this._events={},this.newListener=!1,c.call(this,a)}function e(a,b,c,d){if(!c)return[];var f,g,h,i,j,k,l,m=[],n=b.length,o=b[d],p=b[d+1];if(d===n&&c._listeners){if("function"==typeof c._listeners)return a&&a.push(c._listeners),[c];for(f=0,g=c._listeners.length;g>f;f++)a&&a.push(c._listeners[f]);return[c]}if("*"===o||"**"===o||c[o]){if("*"===o){for(h in c)"_listeners"!==h&&c.hasOwnProperty(h)&&(m=m.concat(e(a,b,c[h],d+1)));return m}if("**"===o){l=d+1===n||d+2===n&&"*"===p,l&&c._listeners&&(m=m.concat(e(a,b,c,n)));for(h in c)"_listeners"!==h&&c.hasOwnProperty(h)&&("*"===h||"**"===h?(c[h]._listeners&&!l&&(m=m.concat(e(a,b,c[h],n))),m=m.concat(e(a,b,c[h],d))):m=m.concat(h===p?e(a,b,c[h],d+2):e(a,b,c[h],d)));return m}m=m.concat(e(a,b,c[o],d+1))}if(i=c["*"],i&&e(a,b,i,d+1),j=c["**"])if(n>d){j._listeners&&e(a,b,j,n);for(h in j)"_listeners"!==h&&j.hasOwnProperty(h)&&(h===p?e(a,b,j[h],d+2):h===o?e(a,b,j[h],d+1):(k={},k[h]=j[h],e(a,b,{"**":k},d+1)))}else j._listeners?e(a,b,j,n):j["*"]&&j["*"]._listeners&&e(a,b,j["*"],n);return m}function f(a,b){a="string"==typeof a?a.split(this.delimiter):a.slice();for(var c=0,d=a.length;d>c+1;c++)if("**"===a[c]&&"**"===a[c+1])return;for(var e=this.listenerTree,f=a.shift();f;){if(e[f]||(e[f]={}),e=e[f],0===a.length){if(e._listeners){if("function"==typeof e._listeners)e._listeners=[e._listeners,b];else if(g(e._listeners)&&(e._listeners.push(b),!e._listeners.warned)){var i=h;"undefined"!=typeof this._events.maxListeners&&(i=this._events.maxListeners),i>0&&e._listeners.length>i&&(e._listeners.warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",e._listeners.length),console.trace())}}else e._listeners=b;return!0}f=a.shift()}return!0}var g=Array.isArray?Array.isArray:function(a){return"[object Array]"===Object.prototype.toString.call(a)},h=10;d.prototype.delimiter=".",d.prototype.setMaxListeners=function(a){this._events||b.call(this),this._events.maxListeners=a,this._conf||(this._conf={}),this._conf.maxListeners=a},d.prototype.event="",d.prototype.once=function(a,b){return this.many(a,1,b),this},d.prototype.many=function(a,b,c){function d(){0===--b&&e.off(a,d),c.apply(this,arguments)}var e=this;if("function"!=typeof c)throw new Error("many only accepts instances of Function");return d._origin=c,this.on(a,d),e},d.prototype.emit=function(){this._events||b.call(this);var a=arguments[0];if("newListener"===a&&!this.newListener&&!this._events.newListener)return!1;if(this._all){for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];for(f=0,c=this._all.length;c>f;f++)this.event=a,this._all[f].apply(this,d)}if("error"===a&&!(this._all||this._events.error||this.wildcard&&this.listenerTree.error))throw arguments[1]instanceof Error?arguments[1]:new Error("Uncaught, unspecified 'error' event.");var g;if(this.wildcard){g=[];var h="string"==typeof a?a.split(this.delimiter):a.slice();e.call(this,g,h,this.listenerTree,0)}else g=this._events[a];if("function"==typeof g){if(this.event=a,1===arguments.length)g.call(this);else if(arguments.length>1)switch(arguments.length){case 2:g.call(this,arguments[1]);break;case 3:g.call(this,arguments[1],arguments[2]);break;default:for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];g.apply(this,d)}return!0}if(g){for(var c=arguments.length,d=new Array(c-1),f=1;c>f;f++)d[f-1]=arguments[f];for(var i=g.slice(),f=0,c=i.length;c>f;f++)this.event=a,i[f].apply(this,d);return i.length>0||this._all}return this._all},d.prototype.on=function(a,c){if("function"==typeof a)return this.onAny(a),this;if("function"!=typeof c)throw new Error("on only accepts instances of Function");if(this._events||b.call(this),this.emit("newListener",a,c),this.wildcard)return f.call(this,a,c),this;if(this._events[a]){if("function"==typeof this._events[a])this._events[a]=[this._events[a],c];else if(g(this._events[a])&&(this._events[a].push(c),!this._events[a].warned)){var d=h;"undefined"!=typeof this._events.maxListeners&&(d=this._events.maxListeners),d>0&&this._events[a].length>d&&(this._events[a].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[a].length),console.trace())}}else this._events[a]=c;return this},d.prototype.onAny=function(a){if(this._all||(this._all=[]),"function"!=typeof a)throw new Error("onAny only accepts instances of Function");return this._all.push(a),this},d.prototype.addListener=d.prototype.on,d.prototype.off=function(a,b){if("function"!=typeof b)throw new Error("removeListener only takes instances of Function");var c,d=[];if(this.wildcard){var f="string"==typeof a?a.split(this.delimiter):a.slice();d=e.call(this,null,f,this.listenerTree,0)}else{if(!this._events[a])return this;c=this._events[a],d.push({_listeners:c})}for(var h=0;hk;k++)if(c[k]===b||c[k].listener&&c[k].listener===b||c[k]._origin&&c[k]._origin===b){j=k;break}if(0>j)continue;return this.wildcard?i._listeners.splice(j,1):this._events[a].splice(j,1),0===c.length&&(this.wildcard?delete i._listeners:delete this._events[a]),this}(c===b||c.listener&&c.listener===b||c._origin&&c._origin===b)&&(this.wildcard?delete i._listeners:delete this._events[a])}return this},d.prototype.offAny=function(a){var b,c=0,d=0;if(a&&this._all&&this._all.length>0){for(b=this._all,c=0,d=b.length;d>c;c++)if(a===b[c])return b.splice(c,1),this}else this._all=[];return this},d.prototype.removeListener=d.prototype.off,d.prototype.removeAllListeners=function(a){if(0===arguments.length)return!this._events||b.call(this),this;if(this.wildcard)for(var c="string"==typeof a?a.split(this.delimiter):a.slice(),d=e.call(this,null,c,this.listenerTree,0),f=0;f9&&g>0,!0}function k(){if(!S){S=!0;for(var a=0;a'):(c=b.createElement("IFRAME"),c.name=a.props.name),c.id=c.name=a.props.name,delete a.props.name,"string"==typeof a.container&&(a.container=b.getElementById(a.container)),a.container||(u(c.style,{position:"absolute",top:"-2000px",left:"0px"}),a.container=b.body);var d=a.props.src;if(a.props.src="javascript:false",u(c,a.props),c.border=c.frameBorder=0,c.allowTransparency=!0,a.container.appendChild(c),a.onLoad&&E(c,"load",a.onLoad),a.usePost){var e,f=a.container.appendChild(b.createElement("form"));if(f.target=c.name,f.action=d,f.method="POST","object"==typeof a.usePost)for(var g in a.usePost)a.usePost.hasOwnProperty(g)&&(B?e=b.createElement(''):(e=b.createElement("INPUT"),e.name=g),e.value=a.usePost[g],f.appendChild(e));f.submit(),f.parentNode.removeChild(f)}else c.src=d;return a.props.src=d,c}function x(a,b){"string"==typeof a&&(a=[a]);for(var c,d=a.length;d--;)if(c=a[d],c=new RegExp("^"==c.substr(0,1)?c:"^"+c.replace(/(\*)/g,".$1").replace(/\?/g,".")+"$"),c.test(b))return!0;return!1}function y(d){var e,f=d.protocol;if(d.isHost=d.isHost||t(V.xdm_p),Q=d.hash||!1,d.props||(d.props={}),d.isHost)d.remote=r(d.remote),d.channel=d.channel||"default"+H++,d.secret=Math.random().toString(16).substring(2),t(f)&&(f=q(c.href)==q(d.remote)?"4":g(a,"postMessage")||g(b,"postMessage")?"1":d.swf&&g(a,"ActiveXObject")&&j()?"6":"Gecko"===navigator.product&&"frameElement"in a&&-1==navigator.userAgent.indexOf("WebKit")?"5":d.remoteHelper?"2":"0");else if(d.channel=V.xdm_c.replace(/["'<>\\]/g,""),d.secret=V.xdm_s,d.remote=V.xdm_e.replace(/["'<>\\]/g,""),f=V.xdm_p,d.acl&&!x(d.acl,d.remote))throw new Error("Access denied for "+d.remote);switch(d.protocol=f,f){case"0":if(u(d,{interval:100,delay:2e3,useResize:!0,useParent:!1,usePolling:!1},!0),d.isHost){if(!d.local){for(var h,i=c.protocol+"//"+c.host,k=b.body.getElementsByTagName("img"),l=k.length;l--;)if(h=k[l],h.src.substring(0,i.length)===i){d.local=h.src;break}d.local||(d.local=a)}var m={xdm_c:d.channel,xdm_p:0};d.local===a?(d.usePolling=!0,d.useParent=!0,d.local=c.protocol+"//"+c.host+c.pathname+c.search,m.xdm_e=d.local,m.xdm_pa=1):m.xdm_e=r(d.local),d.container&&(d.useResize=!1,m.xdm_po=1),d.remote=s(d.remote,m)}else u(d,{channel:V.xdm_c,remote:V.xdm_e,useParent:!t(V.xdm_pa),usePolling:!t(V.xdm_po),useResize:d.useParent?!1:d.useResize});e=[new N.stack.HashTransport(d),new N.stack.ReliableBehavior({}),new N.stack.QueueBehavior({encode:!0,maxLength:4e3-d.remote.length}),new N.stack.VerifyBehavior({initiate:d.isHost})];break;case"1":e=[new N.stack.PostMessageTransport(d)];break;case"2":d.isHost&&(d.remoteHelper=r(d.remoteHelper)),e=[new N.stack.NameTransport(d),new N.stack.QueueBehavior,new N.stack.VerifyBehavior({initiate:d.isHost})];break;case"3":e=[new N.stack.NixTransport(d)];break;case"4":e=[new N.stack.SameOriginTransport(d)];break;case"5":e=[new N.stack.FrameElementTransport(d)];break;case"6":C||j(),e=[new N.stack.FlashTransport(d)]}return e.push(new N.stack.QueueBehavior({lazy:d.lazy,remove:!0})),e}function z(a){for(var b,c={incoming:function(a,b){this.up.incoming(a,b)},outgoing:function(a,b){this.down.outgoing(a,b)},callback:function(a){this.up.callback(a)},init:function(){this.down.init()},destroy:function(){this.down.destroy()}},d=0,e=a.length;e>d;d++)b=a[d],u(b,c,!0),0!==d&&(b.down=a[d-1]),d!==e-1&&(b.up=a[d+1]);return b}function A(a){a.up.down=a.down,a.down.up=a.up,a.up=a.down=null}var B,C,D,E,F,G=this,H=Math.floor(1e4*Math.random()),I=Function.prototype,J=/^((http.?:)\/\/([^:\/\s]+)(:\d+)*)/,K=/[\-\w]+\/\.\.\//,L=/([^:])\/\//g,M="",N={},O=a.easyXDM,P="easyXDM_",Q=!1;if(g(a,"addEventListener"))E=function(a,b,c){a.addEventListener(b,c,!1)},F=function(a,b,c){a.removeEventListener(b,c,!1)};else{if(!g(a,"attachEvent"))throw new Error("Browser not supported");E=function(a,b,c){a.attachEvent("on"+b,c)},F=function(a,b,c){a.detachEvent("on"+b,c)}}var R,S=!1,T=[];if("readyState"in b?(R=b.readyState,S="complete"==R||~navigator.userAgent.indexOf("AppleWebKit/")&&("loaded"==R||"interactive"==R)):S=!!b.body,!S){if(g(a,"addEventListener"))E(b,"DOMContentLoaded",k);else if(E(b,"readystatechange",function(){"complete"==b.readyState&&k()}),b.documentElement.doScroll&&a===top){var U=function(){if(!S){try{b.documentElement.doScroll("left")}catch(a){return void d(U,1)}k()}};U()}E(a,"load",k)}var V=function(a){a=a.substring(1).split("&");for(var b,c={},d=a.length;d--;)b=a[d].split("="),c[b[0]]=e(b[1]);return c}(/xdm_e=/.test(c.search)?c.search:c.hash),W=function(){var a={},b={a:[1,2,3]},c='{"a":[1,2,3]}';return"undefined"!=typeof JSON&&"function"==typeof JSON.stringify&&JSON.stringify(b).replace(/\s/g,"")===c?JSON:(Object.toJSON&&Object.toJSON(b).replace(/\s/g,"")===c&&(a.stringify=Object.toJSON),"function"==typeof String.prototype.evalJSON&&(b=c.evalJSON(),b.a&&3===b.a.length&&3===b.a[2]&&(a.parse=function(a){return a.evalJSON()})),a.stringify&&a.parse?(W=function(){return a},a):null)};u(N,{version:"2.4.19.3",query:V,stack:{},apply:u,getJSONObject:W,whenReady:l,noConflict:n}),N.DomHelper={on:E,un:F,requiresJSON:function(c){h(a,"JSON")||b.write('')}},function(){var a={};N.Fn={set:function(b,c){a[b]=c},get:function(b,c){if(a.hasOwnProperty(b)){var d=a[b];return c&&delete a[b],d}}}}(),N.Socket=function(a){var b=z(y(a).concat([{incoming:function(b,c){a.onMessage(b,c)},callback:function(b){a.onReady&&a.onReady(b)}}])),c=q(a.remote);this.origin=q(a.remote),this.destroy=function(){b.destroy()},this.postMessage=function(a){b.outgoing(a,c)},b.init()},N.Rpc=function(a,b){if(b.local)for(var c in b.local)if(b.local.hasOwnProperty(c)){var d=b.local[c];"function"==typeof d&&(b.local[c]={method:d})}var e=z(y(a).concat([new N.stack.RpcBehavior(this,b),{callback:function(b){a.onReady&&a.onReady(b)}}]));this.origin=q(a.remote),this.destroy=function(){e.destroy()},e.init()},N.stack.SameOriginTransport=function(a){var b,e,f,g;return b={outgoing:function(a,b,c){f(a),c&&c()},destroy:function(){e&&(e.parentNode.removeChild(e),e=null)},onDOMReady:function(){g=q(a.remote),a.isHost?(u(a.props,{src:s(a.remote,{xdm_e:c.protocol+"//"+c.host+c.pathname,xdm_c:a.channel,xdm_p:4}),name:P+a.channel+"_provider"}),e=w(a),N.Fn.set(a.channel,function(a){return f=a,d(function(){b.up.callback(!0)},0),function(a){b.up.incoming(a,g)}})):(f=m().Fn.get(a.channel,!0)(function(a){b.up.incoming(a,g)}),d(function(){b.up.callback(!0)},0))},init:function(){l(b.onDOMReady,b)}}},N.stack.FlashTransport=function(a){function e(a){d(function(){h.up.incoming(a,j)},0)}function g(c){var d=a.swf+"?host="+a.isHost,e="easyXDM_swf_"+Math.floor(1e4*Math.random());N.Fn.set("flash_loaded"+c.replace(/[\-.]/g,"_"),function(){N.stack.FlashTransport[c].swf=k=m.firstChild;for(var a=N.stack.FlashTransport[c].queue,b=0;b"}var h,i,j,k,m;return h={outgoing:function(b,c,d){k.postMessage(a.channel,b.toString()),d&&d()},destroy:function(){try{k.destroyChannel(a.channel)}catch(b){}k=null,i&&(i.parentNode.removeChild(i),i=null)},onDOMReady:function(){j=a.remote,N.Fn.set("flash_"+a.channel+"_init",function(){d(function(){h.up.callback(!0)})}),N.Fn.set("flash_"+a.channel+"_onMessage",e),a.swf=r(a.swf);var b=o(a.swf),f=function(){N.stack.FlashTransport[b].init=!0,k=N.stack.FlashTransport[b].swf,k.createChannel(a.channel,a.secret,q(a.remote),a.isHost),a.isHost&&(D&&a.swfNoThrottle&&u(a.props,{position:"fixed",right:0,top:0,height:"20px",width:"20px"}),u(a.props,{src:s(a.remote,{xdm_e:q(c.href),xdm_c:a.channel,xdm_p:6,xdm_s:a.secret}),name:P+a.channel+"_provider"}),i=w(a))};N.stack.FlashTransport[b]&&N.stack.FlashTransport[b].init?f():N.stack.FlashTransport[b]?N.stack.FlashTransport[b].queue.push(f):(N.stack.FlashTransport[b]={queue:[f]},g(b))},init:function(){l(h.onDOMReady,h)}}},N.stack.PostMessageTransport=function(b){function e(a){if(a.origin)return q(a.origin);if(a.uri)return q(a.uri);if(a.domain)return c.protocol+"//"+a.domain;throw"Unable to retrieve the origin of the event"}function f(a){var c=e(a);c==j&&a.data.substring(0,b.channel.length+1)==b.channel+" "&&g.up.incoming(a.data.substring(b.channel.length+1),c)}var g,h,i,j;return g={outgoing:function(a,c,d){i.postMessage(b.channel+" "+a,c||j),d&&d()},destroy:function(){F(a,"message",f),h&&(i=null,h.parentNode.removeChild(h),h=null)},onDOMReady:function(){if(j=q(b.remote),b.isHost){var e=function(c){c.data==b.channel+"-ready"&&(i="postMessage"in h.contentWindow?h.contentWindow:h.contentWindow.document,F(a,"message",e),E(a,"message",f),d(function(){g.up.callback(!0)},0))};E(a,"message",e),u(b.props,{src:s(b.remote,{xdm_e:q(c.href),xdm_c:b.channel,xdm_p:1}),name:P+b.channel+"_provider"}),h=w(b)}else E(a,"message",f),i="postMessage"in a.parent?a.parent:a.parent.document,i.postMessage(b.channel+"-ready",j),d(function(){g.up.callback(!0)},0)},init:function(){l(g.onDOMReady,g)}}},N.stack.FrameElementTransport=function(e){var f,g,h,i;return f={outgoing:function(a,b,c){h.call(this,a),c&&c()},destroy:function(){g&&(g.parentNode.removeChild(g),g=null)},onDOMReady:function(){i=q(e.remote),e.isHost?(u(e.props,{src:s(e.remote,{xdm_e:q(c.href),xdm_c:e.channel,xdm_p:5}),name:P+e.channel+"_provider"}),g=w(e),g.fn=function(a){return delete g.fn,h=a,d(function(){f.up.callback(!0)},0),function(a){f.up.incoming(a,i)}}):(b.referrer&&q(b.referrer)!=V.xdm_e&&(a.top.location=V.xdm_e),h=a.frameElement.fn(function(a){f.up.incoming(a,i)}),f.up.callback(!0))},init:function(){l(f.onDOMReady,f)}}},N.stack.NameTransport=function(a){function b(b){var c=a.remoteHelper+(h?"#_3":"#_2")+a.channel;i.contentWindow.sendMessage(b,c)}function c(){h?2!==++k&&h||g.up.callback(!0):(b("ready"),g.up.callback(!0))}function e(a){g.up.incoming(a,n)}function f(){m&&d(function(){m(!0)},0)}var g,h,i,j,k,m,n,o;return g={outgoing:function(a,c,d){m=d,b(a)},destroy:function(){i.parentNode.removeChild(i),i=null,h&&(j.parentNode.removeChild(j),j=null)},onDOMReady:function(){h=a.isHost,k=0,n=q(a.remote),a.local=r(a.local),h?(N.Fn.set(a.channel,function(b){h&&"ready"===b&&(N.Fn.set(a.channel,e),c())}),o=s(a.remote,{xdm_e:a.local,xdm_c:a.channel,xdm_p:2}),u(a.props,{src:o+"#"+a.channel,name:P+a.channel+"_provider"}),j=w(a)):(a.remoteHelper=a.remote,N.Fn.set(a.channel,e));var b=function(){var e=i||this;F(e,"load",b),N.Fn.set(a.channel+"_load",f),function g(){"function"==typeof e.contentWindow.sendMessage?c():d(g,50)}()};i=w({props:{src:a.local+"#_4"+a.channel},onLoad:b})},init:function(){l(g.onDOMReady,g)}}},N.stack.HashTransport=function(b){function c(a){if(p){var c=b.remote+"#"+n++ +"_"+a;(i||!r?p.contentWindow:p).location=c}}function e(a){m=a,h.up.incoming(m.substring(m.indexOf("_")+1),s)}function f(){if(o){var a=o.location.href,b="",c=a.indexOf("#");-1!=c&&(b=a.substring(c)),b&&b!=m&&e(b)}}function g(){j=setInterval(f,k)}var h,i,j,k,m,n,o,p,r,s;return h={outgoing:function(a){c(a)},destroy:function(){a.clearInterval(j),(i||!r)&&p.parentNode.removeChild(p),p=null},onDOMReady:function(){if(i=b.isHost,k=b.interval,m="#"+b.channel,n=0,r=b.useParent,s=q(b.remote),i){if(u(b.props,{src:b.remote,name:P+b.channel+"_provider"}),r)b.onLoad=function(){o=a,g(),h.up.callback(!0)};else{var c=0,e=b.delay/50;!function f(){if(++c>e)throw new Error("Unable to reference listenerwindow");try{o=p.contentWindow.frames[P+b.channel+"_consumer"]}catch(a){}o?(g(),h.up.callback(!0)):d(f,50)}()}p=w(b)}else o=a,g(),r?(p=parent,h.up.callback(!0)):(u(b,{props:{src:b.remote+"#"+b.channel+new Date,name:P+b.channel+"_consumer"},onLoad:function(){h.up.callback(!0)}}),p=w(b))},init:function(){l(h.onDOMReady,h)}}},N.stack.ReliableBehavior=function(){var a,b,c=0,d=0,e="";return a={incoming:function(f,g){var h=f.indexOf("_"),i=f.substring(0,h).split(",");f=f.substring(h+1),i[0]==c&&(e="",b&&b(!0)),f.length>0&&(a.down.outgoing(i[1]+","+c+"_"+e,g),d!=i[1]&&(d=i[1],a.up.incoming(f,g)))},outgoing:function(f,g,h){e=f,b=h,a.down.outgoing(d+","+ ++c+"_"+f,g)}}},N.stack.QueueBehavior=function(a){function b(){if(a.remove&&0===h.length)return void A(c);if(!i&&0!==h.length&&!g){i=!0;var e=h.shift();c.down.outgoing(e.data,e.origin,function(a){i=!1,e.callback&&d(function(){e.callback(a)},0),b()})}}var c,g,h=[],i=!0,j="",k=0,l=!1,m=!1;return c={init:function(){t(a)&&(a={}),a.maxLength&&(k=a.maxLength,m=!0),a.lazy?l=!0:c.down.init()},callback:function(a){i=!1;var d=c.up;b(),d.callback(a)},incoming:function(b,d){if(m){var f=b.indexOf("_"),g=parseInt(b.substring(0,f),10);j+=b.substring(f+1),0===g&&(a.encode&&(j=e(j)),c.up.incoming(j,d),j="")}else c.up.incoming(b,d)},outgoing:function(d,e,g){a.encode&&(d=f(d));var i,j=[];if(m){for(;0!==d.length;)i=d.substring(0,k),d=d.substring(i.length),j.push(i);for(;i=j.shift();)h.push({data:j.length+"_"+i,origin:e,callback:0===j.length?g:null})}else h.push({data:d,origin:e,callback:g});l?c.down.init():b()},destroy:function(){g=!0,c.down.destroy()}}},N.stack.VerifyBehavior=function(a){function b(){d=Math.random().toString(16).substring(2),c.down.outgoing(d)}var c,d,e;return c={incoming:function(f,g){var h=f.indexOf("_");-1===h?f===d?c.up.callback(!0):e||(e=f,a.initiate||b(),c.down.outgoing(f)):f.substring(0,h)===e&&c.up.incoming(f.substring(h+1),g)},outgoing:function(a,b,e){c.down.outgoing(d+"_"+a,b,e)},callback:function(){a.initiate&&b()}}},N.stack.RpcBehavior=function(a,b){function c(a){a.jsonrpc="2.0",f.down.outgoing(g.stringify(a))}function d(a,b){var d=Array.prototype.slice;return function(){var e,f=arguments.length,g={method:b};f>0&&"function"==typeof arguments[f-1]?(f>1&&"function"==typeof arguments[f-2]?(e={success:arguments[f-2],error:arguments[f-1]},g.params=d.call(arguments,0,f-2)):(e={success:arguments[f-1]},g.params=d.call(arguments,0,f-1)),j[""+ ++h]=e,g.id=h):g.params=d.call(arguments,0),a.namedParams&&1===g.params.length&&(g.params=g.params[0]),c(g)}}function e(a,b,d,e){if(!d)return void(b&&c({id:b,error:{code:-32601,message:"Procedure not found."}}));var f,g;b?(f=function(a){f=I,c({id:b,result:a})},g=function(a,d){g=I;var e={id:b,error:{code:-32099,message:a}};d&&(e.error.data=d),c(e)}):f=g=I,i(e)||(e=[e]);try{var h=d.method.apply(d.scope,e.concat([f,g]));t(h)||f(h)}catch(j){g(j.message)}}var f,g=b.serializer||W(),h=0,j={};return f={incoming:function(a){var d=g.parse(a);if(d.method)b.handle?b.handle(d,c):e(d.method,d.id,b.local[d.method],d.params);else{var f=j[d.id];d.error?f.error&&f.error(d.error):f.success&&f.success(d.result),delete j[d.id]}},init:function(){if(b.remote)for(var c in b.remote)b.remote.hasOwnProperty(c)&&(a[c]=d(b.remote[c],c));f.down.init()},destroy:function(){for(var c in b.remote)b.remote.hasOwnProperty(c)&&a.hasOwnProperty(c)&&delete a[c];f.down.destroy()}}},G.easyXDM=N}(window,document,location,window.setTimeout,decodeURIComponent,encodeURIComponent);var F2=function(){function a(a){return"object"==typeof Node?a instanceof Node:a&&"object"==typeof a&&"number"==typeof a.nodeType&&"string"==typeof a.nodeName}function b(a){return"object"==typeof HTMLElement?a instanceof HTMLElement:a&&"object"==typeof a&&1===a.nodeType&&"string"==typeof a.nodeName}function c(a,b){function c(a){var b=[];return a.replace(/^(\.\.?(\/|$))+/,"").replace(/\/(\.(\/|$))+/g,"/").replace(/\/\.\.$/,"/../").replace(/\/?[^\/]*/g,function(a){"/.."===a?b.pop():b.push(a)}),b.join("").replace(/^\//,"/"===a.charAt(0)?"/":"")}return b=d(b||""),a=d(a||""),b&&a?(b.protocol||a.protocol)+(b.protocol||b.authority?b.authority:a.authority)+c(b.protocol||b.authority||"/"===b.pathname.charAt(0)?b.pathname:b.pathname?(a.authority&&!a.pathname?"/":"")+a.pathname.slice(0,a.pathname.lastIndexOf("/")+1)+b.pathname:a.pathname)+(b.protocol||b.authority||b.pathname?b.search:b.search||a.search)+b.hash:null}function d(a){var b=/^\s+|\s+$/g,c=/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/,d=String(a).replace(b,"").match(c);return d?{href:d[0]||"",protocol:d[1]||"",authority:d[2]||"",host:d[3]||"",hostname:d[4]||"",port:d[5]||"",pathname:d[6]||"",search:d[7]||"",hash:d[8]||""}:void 0}return{appConfigReplacer:function(a,b){return"root"===a||"ui"===a||"height"===a?void 0:b},Apps:{},extend:function(a,b,c){var d="function"==typeof b,e=a?a.split("."):[],f=this;b=b||{},"F2"===e[0]&&(e=e.slice(1));for(var g=0,h=e.length;h>g;g++)f[e[g]]||(f[e[g]]=d&&g+1===h?b:{}),f=f[e[g]];if(!d)for(var i in b)(void 0===f[i]||c)&&(f[i]=b[i]);return f},guid:function(){function a(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()},inArray:function(a,b){return jQuery.inArray(a,b)>-1},isLocalRequest:function(a){var b,d,e=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,f=a.toLowerCase(),g=e.exec(f);try{b=location.href}catch(h){b=document.createElement("a"),b.href="",b=b.href}b=b.toLowerCase(),g||(f=c(b,f).toLowerCase(),g=e.exec(f)),d=e.exec(b)||[];var i=!(g&&(g[1]!==d[1]||g[2]!==d[2]||(g[3]||("http:"===g[1]?"80":"443"))!==(d[3]||("http:"===d[1]?"80":"443"))));return i},isNativeDOMNode:function(c){return a(c)||b(c)},log:function(){if(window.console){var a="log",b=Array.prototype.slice.apply(arguments);b.length>1&&b[0]in window.console&&(a=b.shift()),window.console[a]&&window.console[a].apply(window.console,b)}},parse:function(a){return JSON.parse(a)
+},stringify:function(a,b,c){return JSON.stringify(a,b,c)},version:function(){return"1.4.0"}}}();F2.extend("AppHandlers",function(){function a(a,c,d,e){b(a);var f={domNode:null,func:null,namespace:c};if(F2.isNativeDOMNode(d)?f.domNode=d:"function"==typeof d&&(f.func=d),!f.func&&!f.domNode)throw new Error("Invalid or null argument passed. Handler will not be added to collection. A valid dom element or callback function is required.");if(f.domNode&&!e)throw new Error("Invalid argument passed. Handler will not be added to collection. A callback function is required for this event type.");return f}function b(a){if(g!==a&&h!==a)throw new Error("Invalid token passed. Please verify that you have correctly received and stored token from F2.AppHandlers.getToken().")}function c(a){if(a!==h)throw new Error("Token passed is invalid. Only F2 is allowed to call F2.AppHandlers.__trigger().")}function d(a,b){for(var c=a.slice(),d=c.length;d>=0;d--)(!c[d]||c[d].namespace&&c[d].namespace.toLowerCase()===b)&&c.splice(d,1);return c}function e(a,c,f){if(b(a),f)if(f=f.toLowerCase(),c&&c in i)i[c]=d(i[c],f);else for(var g in i)e(a,g,f);else c&&(i[c]=[])}function f(a){var b="";if(-1!==a.indexOf(".")){var c=a.split(".");a=c[0],b=c[1]}return{key:a,namespace:b}}var g=F2.guid(),h=F2.guid(),i={appCreateRoot:[],appRenderBefore:[],appDestroyBefore:[],appRenderAfter:[],appDestroyAfter:[],appRender:[],appDestroy:[],appScriptLoadFailed:[]},j={appRender:function(a,b){F2.isNativeDOMNode(a.root)?jQuery(a.root).append(b):a.root=jQuery(b).get(0),document.body.appendChild(a.root)},appDestroy:function(a){a.app&&a.app.destroy&&("function"==typeof a.app.destroy?a.app.destroy():F2.log(a.config.appId+" has a destroy property, but destroy is not of type function and as such will not be executed.")),jQuery(a.config.root).fadeOut(500,function(){jQuery(this).remove()})}};return{getToken:function(){return delete this.getToken,g},__f2GetToken:function(){return delete this.__f2GetToken,h},__trigger:function(a,b){if(c(a),!i[b])throw new Error("Invalid EventKey passed. Check your inputs and try again.");var d=Array.prototype.slice.call(arguments,2);if(!i[b].length&&j[b])j[b].apply(F2,d);else for(var e=0;e=4){var g=arguments[2],h=arguments[3];g.root?jQuery(g.root).append(h):g.root=jQuery(h).get(0),jQuery(f.domNode).append(g.root)}else f.func.apply(F2,d)}return this},on:function(b,c,d){if(!c)throw new Error("eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.");var e=f(c);if(!i[e.key])throw new Error("Invalid eventKey passed. Check your inputs and try again.");var g="appRender"===e.key,h=a(b,e.namespace,d,g);return i[e.key].push(h),this},off:function(a,b){if(!b)throw new Error("eventKey must be of type string and not null. For available appHandlers check F2.Constants.AppHandlers.");var c=f(b);if(!i[c.key])throw new Error("Invalid EventKey passed. Check your inputs and try again.");return e(a,c.key,c.namespace),this}}}()),F2.extend("Constants",{AppHandlers:{APP_CREATE_ROOT:"appCreateRoot",APP_RENDER_BEFORE:"appRenderBefore",APP_RENDER:"appRender",APP_RENDER_AFTER:"appRenderAfter",APP_DESTROY_BEFORE:"appDestroyBefore",APP_DESTROY:"appDestroy",APP_DESTROY_AFTER:"appDestroyAfter",APP_SCRIPT_LOAD_FAILED:"appScriptLoadFailed"}}),F2.extend("",{App:function(){return{init:function(){}}},AppConfig:{appId:"",context:{},enableBatchRequests:!1,height:0,instanceId:"",isSecure:!1,containerLocale:null,localeSupport:[],manifestUrl:"",maxWidth:0,minGridSize:4,minWidth:300,name:"",root:void 0,ui:void 0,views:[]},AppManifest:{apps:[],inlineScripts:[],scripts:[],styles:[]},AppContent:{data:{},html:"",status:""},ContainerConfig:{afterAppRender:null,appRender:null,beforeAppRender:null,debugMode:!1,locale:null,scriptErrorTimeout:7e3,isSecureAppPage:!1,secureAppPagePath:"",supportedViews:[],UI:{Mask:{backgroundColor:"#FFF",loadingIcon:"",opacity:.6,useClasses:!1,zIndex:2}},xhr:{dataType:null,type:null,url:null},loadScripts:function(){},loadStyles:function(){}}}),F2.extend("Constants",{Css:{APP:"f2-app",APP_CONTAINER:"f2-app-container",APP_TITLE:"f2-app-title",APP_VIEW:"f2-app-view",APP_VIEW_TRIGGER:"f2-app-view-trigger",MASK:"f2-mask",MASK_CONTAINER:"f2-mask-container"},Events:{APP_SYMBOL_CHANGE:"App.symbolChange",APP_WIDTH_CHANGE:"App.widthChange.",CONTAINER_SYMBOL_CHANGE:"Container.symbolChange",CONTAINER_WIDTH_CHANGE:"Container.widthChange",CONTAINER_LOCALE_CHANGE:"Container.localeChange"},JSONP_CALLBACK:"F2_jsonpCallback_",Sockets:{EVENT:"__event__",LOAD:"__socketLoad__",RPC:"__rpc__",RPC_CALLBACK:"__rpcCallback__",UI_RPC:"__uiRpc__"},Views:{DATA_ATTRIBUTE:"data-f2-view",ABOUT:"about",HELP:"help",HOME:"home",REMOVE:"remove",SETTINGS:"settings"}}),F2.extend("",function(){function _afterAppRender(a,b){var c=_config.afterAppRender||function(a,b){return jQuery(b).appendTo("body")},d=c(a,b);return _config.afterAppRender&&!d?void F2.log("F2.ContainerConfig.afterAppRender() must return the DOM Element that contains the app"):(jQuery(d).addClass(F2.Constants.Css.APP),d.get(0))}function _appRender(a,b){return b=_outerHtml(jQuery(b).addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId)),_config.appRender&&(b=_config.appRender(a,b)),_outerHtml(b)}function _beforeAppRender(a){var b=_config.beforeAppRender||jQuery.noop;return b(a)}function _appScriptLoadFailed(a,b){_config.appScriptLoadFailed&&_config.appScriptLoadFailed(a,b)}function _createAppConfig(a){return a=jQuery.extend(!0,{},a),a.instanceId=a.instanceId||F2.guid(),a.views=a.views||[],F2.inArray(F2.Constants.Views.HOME,a.views)||a.views.push(F2.Constants.Views.HOME),F2.ContainerConfig.locale&&(a.containerLocale=F2.ContainerConfig.locale),a}function _getAppConfigFromElement(a){if(a){var b,c=a.getAttribute("data-f2-appid"),d=a.getAttribute("data-f2-manifesturl");if(c&&d){b={appId:c,enableBatchRequests:a.hasAttribute("data-f2-enablebatchrequests"),isSecure:a.hasAttribute("data-f2-issecure"),manifestUrl:d,root:a};var e=a.getAttribute("data-f2-context");if(e)try{b.context=F2.parse(e)}catch(f){F2.log("warn",'F2: "data-f2-context" of node is not valid JSON','"'+f+'"')}}return b}}function _hasNonTextChildNodes(a){var b=!1;if(a.hasChildNodes())for(var c=0,d=a.childNodes.length;d>c;c++)if(1===a.childNodes[c].nodeType){b=!0;break}return b}function _hydrateContainerConfig(a){a.scriptErrorTimeout||(a.scriptErrorTimeout=F2.ContainerConfig.scriptErrorTimeout),a.debugMode!==!0&&(a.debugMode=F2.ContainerConfig.debugMode),a.locale&&"string"==typeof a.locale&&(F2.ContainerConfig.locale=a.locale)}function _initAppEvents(a){var b="."+F2.Constants.Css.APP_VIEW_TRIGGER+"["+F2.Constants.Views.DATA_ATTRIBUTE+"]";jQuery(a.root).on("click",b,function(b){b.preventDefault();var c=jQuery(this).attr(F2.Constants.Views.DATA_ATTRIBUTE).toLowerCase();c===F2.Constants.Views.REMOVE?F2.removeApp(a.instanceId):a.ui.Views.change(c)})}function _initContainerEvents(){function a(){F2.Events.emit(F2.Constants.Events.CONTAINER_WIDTH_CHANGE)}var b;jQuery(window).on("resize",function(){clearTimeout(b),b=setTimeout(a,100)}),F2.Events.on(F2.Constants.Events.CONTAINER_LOCALE_CHANGE,function(a){a.locale&&"string"==typeof a.locale&&(F2.ContainerConfig.locale=a.locale)})}function _isPlaceholderElement(a){return F2.isNativeDOMNode(a)&&!_hasNonTextChildNodes(a)&&!!a.getAttribute("data-f2-appid")&&!!a.getAttribute("data-f2-manifesturl")}function _isInit(){return!!_config}function _createAppInstance(a,b){a.ui=new F2.UI(a),void 0!==F2.Apps[a.appId]&&("function"==typeof F2.Apps[a.appId]?setTimeout(function(){_apps[a.instanceId].app=new F2.Apps[a.appId](a,b,a.root),void 0!==_apps[a.instanceId].app.init&&_apps[a.instanceId].app.init()},0):F2.log("app initialization class is defined but not a function. ("+a.appId+")"))}function _loadApps(appConfigs,appManifest){function _loadStyles(a,b){if(_config.loadStyles)return _config.loadStyles(a,b);var c,d=!!document.createStyleSheet;jQuery.each(a,function(a,b){var e=b,f=b.toLowerCase();_loadedStyles[f]||(d?document.createStyleSheet(e):(c=c||[],c.push('')),_loadedStyles[f]=!0)}),c&&jQuery("head").append(c.join("")),b()}function _loadScripts(a,b){function c(a){setTimeout(function(){var b={src:a.target.src,appId:appConfigs[0].appId};F2.log("Script defined in '"+b.appId+"' failed to load '"+b.src+"'"),F2.Events.emit("RESOURCE_FAILED_TO_LOAD",b),_usesAppHandlers?F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,appConfigs[0],b.src):_appScriptLoadFailed(appConfigs[0],b.src)},_config.scriptErrorTimeout)}function d(){++h===g&&b()}function e(a,b){var c,d=_loadingScripts[a];if(d){for(var e=0;ei;i++)try{eval(inlines[i])}catch(exception){F2.log("Error loading inline script: "+exception+"\n\n"+inlines[i]),F2.Events.emit("RESOURCE_FAILED_TO_LOAD",{appId:appConfigs[0].appId,src:inlines[i],err:exception}),_usesAppHandlers?F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_SCRIPT_LOAD_FAILED,appConfigs[0],exception):_appScriptLoadFailed(appConfigs[0],exception)}cb()}}function elementInDocument(a){if(a)for(;a.parentNode;)if(a=a.parentNode,a===document)return!0;return!1}function _loadHtml(a){jQuery.each(a,function(a,b){if(_isPlaceholderElement(appConfigs[a].root))jQuery(appConfigs[a].root).addClass(F2.Constants.Css.APP).append(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+appConfigs[a].appId));else if(_usesAppHandlers){F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER,appConfigs[a],_outerHtml(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+appConfigs[a].appId)));var c=appConfigs[a].appId,d=appConfigs[a].root;if(!d)throw new Error("Root for "+c+" must be a native DOM element and cannot be null or undefined. Check your AppHandler callbacks to ensure you have set App root to a native DOM element.");if(!elementInDocument(d))throw new Error("App root for "+c+" was not appended to the DOM. Check your AppHandler callbacks to ensure you have rendered the app root to the DOM.");if(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER_AFTER,appConfigs[a]),!F2.isNativeDOMNode(d))throw new Error("App root for "+c+" must be a native DOM element. Check your AppHandler callbacks to ensure you have set app root to a native DOM element.")}else appConfigs[a].root=_afterAppRender(appConfigs[a],_appRender(appConfigs[a],b.html));_initAppEvents(appConfigs[a])})}if(appConfigs=[].concat(appConfigs),1===appConfigs.length&&appConfigs[0].isSecure&&!_config.isSecureAppPage)return void _loadSecureApp(appConfigs[0],appManifest);if(appConfigs.length!==appManifest.apps.length)return void F2.log("The number of apps defined in the AppManifest do not match the number requested.",appManifest);var manifestScripts=appManifest.scripts||[],manifestStyles=appManifest.styles||[],manifestInlines=appManifest.inlineScripts||[],manifestApps=appManifest.apps||[];_loadStyles(manifestStyles,function(){_loadHtml(manifestApps),_loadScripts(manifestScripts,function(){appConfigs[0]&&F2.Events.emit("APP_SCRIPTS_LOADED",{appId:appConfigs[0].appId,scripts:manifestScripts}),_loadInlineScripts(manifestInlines,function(){jQuery.each(appConfigs,function(a,b){_createAppInstance(b,manifestApps[a])})})})})}function _loadSecureApp(a,b){if(_config.secureAppPagePath){if(_isPlaceholderElement(a.root))jQuery(a.root).addClass(F2.Constants.Css.APP).append(jQuery("").addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId));else if(_usesAppHandlers){var c=jQuery(a.root);if(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER,a,_outerHtml(jQuery(b.html).addClass(F2.Constants.Css.APP_CONTAINER+" "+a.appId))),0===c.parents("body:first").length)throw new Error("App was never rendered on the page. Please check your AppHandler callbacks to ensure you have rendered the app root to the DOM.");if(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER_AFTER,a),!a.root)throw new Error("App Root must be a native dom node and can not be null or undefined. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.");if(!F2.isNativeDOMNode(a.root))throw new Error("App Root must be a native dom node. Please check your AppHandler callbacks to ensure you have set App Root to a native dom node.")}else a.root=_afterAppRender(a,_appRender(a,""));a.ui=new F2.UI(a),_initAppEvents(a),F2.Rpc.register(a,b)}else F2.log('Unable to load secure app: "secureAppPagePath" is not defined in F2.ContainerConfig.')}function _outerHtml(a){return jQuery("").append(a).html()}function _validateApp(a){return a.appId?a.root||a.manifestUrl?!0:(F2.log('"manifestUrl" missing from app object'),!1):(F2.log('"appId" missing from app object'),!1)}function _validateContainerConfig(){if(_config&&_config.xhr){if("function"!=typeof _config.xhr&&"object"!=typeof _config.xhr)throw new Error("ContainerConfig.xhr should be a function or an object");if(_config.xhr.dataType&&"function"!=typeof _config.xhr.dataType)throw new Error("ContainerConfig.xhr.dataType should be a function");if(_config.xhr.type&&"function"!=typeof _config.xhr.type)throw new Error("ContainerConfig.xhr.type should be a function");if(_config.xhr.url&&"function"!=typeof _config.xhr.url)throw new Error("ContainerConfig.xhr.url should be a function")}return!0}function _getPlaceholders(a){var b=[];if(a.hasAttribute("data-f2-appid")&&b.push(a),a.querySelectorAll){var c=Array.prototype.slice.call(a.querySelectorAll("[data-f2-appid]"));b=b.concat(c)}return b}var _apps={},_config=!1,_usesAppHandlers=!1,_appHandlerToken=F2.AppHandlers.__f2GetToken(),_loadedScripts={},_loadedStyles={},_loadingScripts={};return{getContainerState:function(){return _isInit()?jQuery.map(_apps,function(a){return{appId:a.config.appId}}):void F2.log("F2.init() must be called before F2.getContainerState()")},getContainerLocale:function(){return _isInit()?F2.ContainerConfig.locale:void F2.log("F2.init() must be called before F2.getContainerLocale()")},init:function(a){_config=a||{},_validateContainerConfig(),_hydrateContainerConfig(_config),_usesAppHandlers=!(_config.beforeAppRender||_config.appRender||_config.afterAppRender||_config.appScriptLoadFailed),(_config.secureAppPagePath||_config.isSecureAppPage)&&F2.Rpc.init(_config.secureAppPagePath?_config.secureAppPagePath:!1),F2.UI.init(_config),_config.isSecureAppPage||_initContainerEvents()},isInit:_isInit,loadPlaceholders:function(a){if(a&&!F2.isNativeDOMNode(a))throw new Error('"parentNode" must be null or a DOM node');for(var b=_getPlaceholders(a||document.body),c=[],d=0,e=b.length;e>d;d++){var f=_getAppConfigFromElement(b[d]);c.push(f)}c.length&&F2.registerApps(c)},registerApps:function(a,b){if(!_isInit())return void F2.log("F2.init() must be called before F2.registerApps()");if(!a)return void F2.log("At least one AppConfig must be passed when calling F2.registerApps()");var c=[],d={},e={},f=!1;return a=[].concat(a),b=[].concat(b||[]),f=!!b.length,a.length?a.length&&f&&a.length!==b.length?void F2.log('The length of "apps" does not equal the length of "appManifests"'):(jQuery.each(a,function(a,e){if(e=_createAppConfig(e),e.root=e.root||null,_validateApp(e)){if(_apps[e.instanceId]={config:e},e.root&&!_isPlaceholderElement(e.root)){if(!e.root&&"string"!=typeof e.root&&!F2.isNativeDOMNode(e.root))throw F2.log("AppConfig invalid for pre-load, not a valid string and not dom node"),F2.log("AppConfig instance:",e),new Error("Preloaded appConfig.root property must be a native dom node or a string representing a sizzle selector. Please check your inputs and try again.");if(1!==jQuery(e.root).length)throw F2.log("AppConfig invalid for pre-load, root not unique"),F2.log("AppConfig instance:",e),F2.log("Number of dom node instances:",jQuery(e.root).length),new Error("Preloaded appConfig.root property must map to a unique dom node. Please check your inputs and try again.");return _createAppInstance(e),void _initAppEvents(e)}_isPlaceholderElement(e.root)||(_usesAppHandlers?(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_CREATE_ROOT,e),F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_RENDER_BEFORE,e)):e.root=_beforeAppRender(e)),f?_loadApps(e,b[a]):e.enableBatchRequests&&!e.isSecure?(d[e.manifestUrl.toLowerCase()]=d[e.manifestUrl.toLowerCase()]||[],d[e.manifestUrl.toLowerCase()].push(e)):c.push({apps:[e],url:e.manifestUrl})}}),void(f||(jQuery.each(d,function(a,b){c.push({url:a,apps:b})}),jQuery.each(c,function(a,b){var c=F2.Constants.JSONP_CALLBACK+b.apps[0].appId;e[c]=e[c]||[],e[c].push(b)}),jQuery.each(e,function(a,b){function c(d,e){function f(){c(a,b.pop())}function g(){jQuery.each(e.apps,function(a,b){b.name=b.name||b.appId,F2.log("Removed failed "+b.name+" app",b),F2.removeApp(b.instanceId)})}function h(a){_loadApps(e.apps,a)}if(e){var i="GET",j="jsonp";if(_config.xhr){if(_config.xhr.dataType&&(j=_config.xhr.dataType(e.url,e.apps),"string"!=typeof j))throw new Error("ContainerConfig.xhr.dataType should return a string");if(_config.xhr.type&&(i=_config.xhr.type(e.url,e.apps),"string"!=typeof i))throw new Error("ContainerConfig.xhr.type should return a string");if(_config.xhr.url&&(e.url=_config.xhr.url(e.url,e.apps),"string"!=typeof e.url))throw new Error("ContainerConfig.xhr.url should return a string")}var k=_config.xhr;"function"!=typeof k&&(k=function(a,b,c,f,g){jQuery.ajax({url:a,type:i,data:{params:F2.stringify(e.apps,F2.appConfigReplacer)},jsonp:!1,jsonpCallback:d,dataType:j,success:c,error:function(a,b,c){F2.log("Failed to load app(s)",c.toString(),e.apps),f()},complete:g})}),k(e.url,e.apps,h,g,f)}}c(a,b.pop())})))):void F2.log("At least one AppConfig must be passed when calling F2.registerApps()")},removeAllApps:function(){return _isInit()?void jQuery.each(_apps,function(a,b){F2.removeApp(b.config.instanceId)}):void F2.log("F2.init() must be called before F2.removeAllApps()")},removeApp:function(a){return _isInit()?void(_apps[a]&&(F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_DESTROY_BEFORE,_apps[a]),F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_DESTROY,_apps[a]),F2.AppHandlers.__trigger(_appHandlerToken,F2.Constants.AppHandlers.APP_DESTROY_AFTER,_apps[a]),delete _apps[a])):void F2.log("F2.init() must be called before F2.removeApp()")}}}()),F2.extend("Events",function(){var a=new EventEmitter2({wildcard:!0});return a.setMaxListeners(0),{_socketEmit:function(){return EventEmitter2.prototype.emit.apply(a,[].slice.call(arguments))},emit:function(){return F2.Rpc.broadcast(F2.Constants.Sockets.EVENT,[].slice.call(arguments)),EventEmitter2.prototype.emit.apply(a,[].slice.call(arguments))},many:function(b,c,d){return a.many(b,c,d)},off:function(b,c){return a.off(b,c)},on:function(b,c){return a.on(b,c)},once:function(b,c){return a.once(b,c)}}}()),F2.extend("Rpc",function(){function a(){var a,b=!1,c=[],e=new easyXDM.Socket({onMessage:function(f,g){if(!b&&l.test(f)){f=f.replace(l,"");var i=F2.parse(f);2===i.length&&(a=i[0],h[a.instanceId]={config:a,socket:e},F2.registerApps([a],[i[1]]),jQuery.each(c,function(){d(a,f,g)}),b=!0)}else b?d(a,f,g):c.push(f)}})}function b(a,b){var c=jQuery(a.root);if(!c.length)return void F2.log("Unable to locate app in order to establish secure connection.");var e={scrolling:"no",style:{width:"100%"}};a.height&&(e.style.height=a.height+"px");var f=new easyXDM.Socket({remote:g,container:c.get(0),props:e,onMessage:function(b,c){d(a,b,c)},onReady:function(){f.postMessage(F2.Constants.Sockets.LOAD+F2.stringify([a,b],F2.appConfigReplacer))}});return f}function c(a,b){return function(){F2.Rpc.call(a,F2.Constants.Sockets.RPC_CALLBACK,b,[].slice.call(arguments).slice(2))}}function d(a,b){function d(a,b){for(var c=String(b).split("."),d=0;d','
','
','
','','
',a,"
","
",'
',b,"
",'","
","
","
"].join("")}var d=a,e=jQuery(a.root);return{hideMask:function(a){F2.UI.hideMask(d.instanceId,a)},Modals:function(){function a(a){return c("Alert",a)}function b(a){return c("Confirm",a,!0)}return{alert:function(b,c){return F2.isInit()?void(F2.Rpc.isRemote(d.instanceId)?F2.Rpc.call(d.instanceId,F2.Constants.Sockets.UI_RPC,"Modals.alert",[].slice.call(arguments)):jQuery(a(b)).on("show.bs.modal",function(){var a=this;jQuery(a).find(".btn-primary").on("click",function(){jQuery(a).modal("hide").remove(),(c||jQuery.noop)()})}).modal({backdrop:!0})):void F2.log("F2.init() must be called before F2.UI.Modals.alert()")},confirm:function(a,c,e){return F2.isInit()?void(F2.Rpc.isRemote(d.instanceId)?F2.Rpc.call(d.instanceId,F2.Constants.Sockets.UI_RPC,"Modals.confirm",[].slice.call(arguments)):jQuery(b(a)).on("show.bs.modal",function(){var a=this;jQuery(a).find(".btn-ok").on("click",function(){jQuery(a).modal("hide").remove(),(c||jQuery.noop)()}),jQuery(a).find(".btn-cancel").on("click",function(){jQuery(a).modal("hide").remove(),(e||jQuery.noop)()})}).modal({backdrop:!0})):void F2.log("F2.init() must be called before F2.UI.Modals.confirm()")}}}(),setTitle:function(a){F2.Rpc.isRemote(d.instanceId)?F2.Rpc.call(d.instanceId,F2.Constants.Sockets.UI_RPC,"setTitle",[a]):jQuery(d.root).find("."+F2.Constants.Css.APP_TITLE).text(a)},showMask:function(a,b){F2.UI.showMask(d.instanceId,a,b)},updateHeight:b,Views:function(){function a(a){return f.test(a)?!0:(F2.log('"'+a+'" is not a valid F2.UI.Views event name'),!1)}var c=new EventEmitter2,f=/change/i;return c.setMaxListeners(0),{change:function(a){"function"==typeof a?this.on("change",a):"string"==typeof a&&(d.isSecure&&!F2.Rpc.isRemote(d.instanceId)?F2.Rpc.call(d.instanceId,F2.Constants.Sockets.UI_RPC,"Views.change",[].slice.call(arguments)):F2.inArray(a,d.views)&&(jQuery("."+F2.Constants.Css.APP_VIEW,e).addClass("hide").filter('[data-f2-view="'+a+'"]',e).removeClass("hide"),b(),c.emit("change",a)))},off:function(b,d){a(b)&&c.off(b,d)},on:function(b,d){a(b)&&c.on(b,d)}}}()}}var b;return a.hideMask=function(a,b){if(!F2.isInit())return void F2.log("F2.init() must be called before F2.UI.hideMask()");if(F2.Rpc.isRemote(a)&&!jQuery(b).is("."+F2.Constants.Css.APP))F2.Rpc.call(a,F2.Constants.Sockets.RPC,"F2.UI.hideMask",[a,jQuery(b).selector]);else{var c=jQuery(b);c.find("> ."+F2.Constants.Css.MASK).remove(),c.removeClass(F2.Constants.Css.MASK_CONTAINER),c.data(F2.Constants.Css.MASK_CONTAINER)&&c.css({position:"static"})}},a.init=function(a){b=a,b.UI=jQuery.extend(!0,{},F2.ContainerConfig.UI,b.UI||{})},a.showMask=function(a,c,d){if(!F2.isInit())return void F2.log("F2.init() must be called before F2.UI.showMask()");if(F2.Rpc.isRemote(a)&&jQuery(c).is("."+F2.Constants.Css.APP))F2.Rpc.call(a,F2.Constants.Sockets.RPC,"F2.UI.showMask",[a,jQuery(c).selector,d]);else{d&&!b.UI.Mask.loadingIcon&&F2.log("Unable to display loading icon. Please set F2.ContainerConfig.UI.Mask.loadingIcon when calling F2.init();");var e=jQuery(c).addClass(F2.Constants.Css.MASK_CONTAINER),f=jQuery("
").height("100%").width("100%").addClass(F2.Constants.Css.MASK);b.UI.Mask.useClasses||f.css({"background-color":b.UI.Mask.backgroundColor,"background-image":b.UI.Mask.loadingIcon?"url("+b.UI.Mask.loadingIcon+")":"","background-position":"50% 50%","background-repeat":"no-repeat",display:"block",left:0,"min-height":30,padding:0,position:"absolute",top:0,"z-index":b.UI.Mask.zIndex,filter:"alpha(opacity="+100*b.UI.Mask.opacity+")",opacity:b.UI.Mask.opacity}),"static"===e.css("position")&&(e.css({position:"relative"}),e.data(F2.Constants.Css.MASK_CONTAINER,!0)),e.append(f)}},a}()),jQuery(function(){var a=[],b=function(b){b&&a.push(b)},c=function(a){if(a)for(var c=0,d=a.length;d>c;c++)b(a[c])};if(b(document.getElementById("f2-autoload")),document.querySelectorAll&&(c(document.querySelectorAll("[data-f2-autoload]")),c(document.querySelectorAll(".f2-autoload"))),a.length){F2.init();for(var d=0,e=a.length;e>d;d++)F2.loadPlaceholders(a[d])}}),exports.F2=F2,"undefined"!=typeof define&&define.amd&&define(function(){return F2})}}("undefined"!=typeof exports?exports:window);
//# sourceMappingURL=f2.min.js.map
\ No newline at end of file
diff --git a/dist/f2.min.js.map b/dist/f2.min.js.map
index 18b48749..9b98b1f1 100644
--- a/dist/f2.min.js.map
+++ b/dist/f2.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"f2.min.js","sources":["f2.debug.js"],"names":["exports","F2","F2_TESTING_MODE","global","factory","module","document","w","Error","window","this","noGlobal","isArraylike","obj","length","type","jQuery","isWindow","nodeType","winnow","elements","qualifier","not","isFunction","grep","elem","i","call","risSimple","test","filter","inArray","sibling","cur","dir","createOptions","options","object","optionsCache","each","match","rnotwhite","_","flag","detach","addEventListener","removeEventListener","completed","detachEvent","event","readyState","ready","dataAttr","key","data","undefined","name","replace","rmultiDash","toLowerCase","getAttribute","rbrace","parseJSON","e","isEmptyDataObject","isEmptyObject","internalData","pvt","acceptData","ret","thisCache","internalKey","expando","isNode","cache","id","deletedIds","pop","guid","toJSON","noop","extend","camelCase","internalRemoveData","isArray","concat","map","split","cleanData","support","deleteExpando","returnTrue","returnFalse","safeActiveElement","activeElement","err","createSafeFragment","list","nodeNames","safeFrag","createDocumentFragment","createElement","getAll","context","tag","elems","found","getElementsByTagName","strundefined","querySelectorAll","childNodes","nodeName","push","merge","fixDefaultChecked","rcheckableType","defaultChecked","checked","manipulationTarget","content","firstChild","appendChild","ownerDocument","disableScript","find","attr","restoreScript","rscriptTypeMasked","exec","removeAttribute","setGlobalEval","refElements","_data","cloneCopyEvent","src","dest","hasData","l","oldData","curData","events","handle","add","fixCloneNodeIssues","noCloneEvent","removeEvent","text","parentNode","outerHTML","html5Clone","innerHTML","trim","value","defaultSelected","selected","defaultValue","actualDisplay","doc","style","appendTo","body","display","getDefaultComputedStyle","css","defaultDisplay","elemdisplay","iframe","documentElement","contentWindow","contentDocument","write","close","addGetHookIf","conditionFn","hookFn","get","condition","apply","arguments","vendorPropName","capName","charAt","toUpperCase","slice","origName","cssPrefixes","showHide","show","hidden","values","index","isHidden","setPositiveNumber","subtract","matches","rnumsplit","Math","max","augmentWidthOrHeight","extra","isBorderBox","styles","val","cssExpand","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","getStyles","boxSizing","curCSS","rnumnonpx","boxSizingReliable","parseFloat","Tween","prop","end","easing","prototype","init","createFxNow","setTimeout","fxNow","now","genFx","includeWidth","which","attrs","height","opacity","width","createTween","animation","tween","collection","tweeners","defaultPrefilter","props","opts","toggle","hooks","oldfire","checkDisplay","anim","orig","dataShow","queue","_queueHooks","unqueued","empty","fire","always","overflow","overflowX","overflowY","inlineBlockNeedsLayout","zoom","shrinkWrapBlocks","rfxtypes","done","hide","_removeData","start","propFilter","specialEasing","cssHooks","expand","Animation","properties","result","stopped","animationPrefilters","deferred","Deferred","tick","currentTime","remaining","startTime","duration","temp","percent","tweens","run","notifyWith","resolveWith","promise","originalProperties","originalOptions","stop","gotoEnd","rejectWith","fx","timer","progress","complete","fail","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","jqXHR","inspect","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","target","deep","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","firstDataType","ct","finalDataType","contents","shift","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","tmp","prev","responseFields","dataFilter","state","error","buildParams","prefix","traditional","v","rbracket","createStandardXHR","XMLHttpRequest","createActiveXHR","ActiveXObject","getWindow","defaultView","parentWindow","indexOf","class2type","toString","hasOwn","hasOwnProperty","version","selector","fn","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","jquery","constructor","toArray","num","pushStack","prevObject","callback","args","first","eq","last","len","j","sort","splice","copyIsArray","copy","clone","isPlainObject","random","isReady","msg","Array","isNumeric","ownLast","globalEval","execScript","string","makeArray","arr","results","Object","second","invert","callbackInverse","callbackExpect","arg","proxy","Date","Sizzle","seed","m","groups","old","nid","newContext","newSelector","preferredDoc","setDocument","documentIsHTML","rquickExpr","getElementById","contains","getElementsByClassName","qsa","rbuggyQSA","tokenize","rescape","setAttribute","toSelector","rsibling","testContext","join","qsaError","select","createCache","keys","Expr","cacheLength","markFunction","assert","div","removeChild","addHandle","handler","attrHandle","siblingCheck","a","b","diff","sourceIndex","MAX_NEGATIVE","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","checkNonElements","doneName","xml","oldCache","outerCache","newCache","dirruns","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","classCache","tokenCache","compilerCache","sortOrder","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escaped","escapedWhitespace","high","String","fromCharCode","els","node","hasCompare","parent","top","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","specified","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","nodeIndex","useCache","lastChild","pseudo","idx","matched","has","innerText","lang","elemLang","hash","location","root","focus","hasFocus","href","tabIndex","enabled","disabled","selectedIndex","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","soFar","preFilters","cached","token","compiled","div1","unique","isXMLDoc","rneedsContext","rsingleTag","self","is","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","children","next","until","n","r","targets","closest","pos","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","reverse","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","stack","once","stopOnFalse","disable","remove","lock","locked","fireWith","tuples","then","fns","newDefer","tuple","returned","resolve","reject","notify","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","updateFunc","readyList","readyWait","holdReady","hold","wait","triggerHandler","off","frameElement","doScroll","doScrollCheck","container","cssText","noData","applet ","embed ","object ","removeData","dequeue","startLength","setter","clearQueue","count","defer","pnum","source","el","access","chainable","emptyGet","raw","bulk","fragment","leadingWhitespace","tbody","htmlSerialize","cloneNode","appendChecked","noCloneChecked","checkClone","click","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","types","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","trigger","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","srcElement","metaKey","original","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","one","origFn","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rchecked","rscriptType","rcleanScript","wrapMap","option","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","buildFragment","scripts","selection","wrap","safe","nodes","createTextNode","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","hasScripts","set","iNoClone","_evalUrl","prependTo","insertAfter","replaceAll","insert","shrinkWrapBlocksVal","rmargin","rposition","getComputedStyle","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","computeStyleTests","pixelPositionVal","boxSizingReliableVal","reliableMarginRightVal","marginRight","reliableHiddenOffsetsVal","cssFloat","backgroundClip","clearCloneStyle","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","pixelPosition","reliableMarginRight","swap","ralpha","ropacity","rdisplayswap","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","cssProps","float","$1","margin","padding","border","suffix","expanded","parts","unit","propHooks","eased","step","linear","p","swing","cos","PI","timerId","rfxnum","rrun","*","scale","maxIterations","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","for","class","notxml","tabindex","parseInt","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","rvalidtokens","JSON","parse","requireNonComma","depth","str","comma","open","Function","parseXML","DOMParser","parseFromString","async","loadXML","ajaxLocParts","ajaxLocation","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","allTypes","active","lastModified","etag","url","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","status","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","code","abort","finalText","method","crossDomain","hasContent","beforeSend","send","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","serialize","serializeArray","xhr","xhrId","xhrCallbacks","xhrSupported","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","head","scriptCharset","charset","onload","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict","Plugin","_relatedTarget","$this","Modal","DEFAULTS","element","$body","$element","$backdrop","isShown","scrollbarWidth","remote","VERSION","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","backdrop","keyboard","that","checkScrollbar","setScrollbar","escape","transition","enforceFocus","emulateTransitionEnd","hideModal","resetScrollbar","removeBackdrop","doAnimate","callbackRemove","measureScrollbar","bodyPad","clientWidth","innerWidth","scrollDiv","modal","Constructor","$target","showEvent","_events","_conf","configure","conf","delimiter","maxListeners","wildcard","newListener","listenerTree","EventEmitter","searchListenerTree","tree","leaf","branch","xTree","xxTree","isolatedBranch","endReached","listeners","typeLength","currentType","nextType","_listeners","**","growListenerTree","listener","warned","defaultMaxListeners","console","trace","setMaxListeners","many","ttl","_origin","emit","_all","ns","onAny","addListener","leafs","iLeaf","offAny","removeListener","removeAllListeners","listenersAny","EventEmitter2","process","title","decodeURIComponent","isHostMethod","property","isHostObject","o","hasFlash","undef","navigator","plugins","description","mimeTypes","enabledPlugin","flashVersion","flash","GetVariable","notSupportedException","major","minor","HAS_FLASH_THROTTLED_BUG","dom_onReady","domIsReady","domReadyQueue","whenReady","scope","getParentObject","ii","easyXDM","_easyXDM","IFRAME_PREFIX","getDomainName","reURI","getPort","getLocation","proto","domain","port","resolveUrl","reDoubleSlash","path","substring","pathname","lastIndexOf","protocol","host","reParent","appendQueryParameters","parameters","q","useHash","destination","noOverwrite","member","testForNamePropertyBug","channelId","HAS_NAME_PROPERTY_BUG","createFrame","config","frame","frameBorder","allowTransparency","onLoad","usePost","action","checkAcl","acl","re","substr","prepareTransportStack","stackEls","isHost","query","xdm_p","channel","secret","swf","product","userAgent","remoteHelper","xdm_c","xdm_s","xdm_e","useResize","useParent","usePolling","local","images","search","xdm_pa","xdm_po","HashTransport","ReliableBehavior","QueueBehavior","encode","maxLength","VerifyBehavior","initiate","PostMessageTransport","NameTransport","NixTransport","SameOriginTransport","FrameElementTransport","FlashTransport","lazy","chainStack","stackElements","stackEl","defaults","incoming","message","origin","up","outgoing","recipient","down","destroy","removeFromStack","un","floor","emptyFn","sEvent","fpNotify","pair","stringify","evalJSON","getJSONObject","DomHelper","requiresJSON","_map","Fn","del","Socket","onMessage","onReady","postMessage","Rpc","jsonRpcConfig","RpcBehavior","pub","targetOrigin","onDOMReady","sendFn","addSwf","swfContainer","swfNoThrottle","right","flashVars","destroyChannel","swfdomain","createChannel","_getOrigin","uri","_window_onMessage","callerWindow","waitForReady","referrer","_sendMessage","sendMessage","_onReady","readyCount","_onMessage","remoteOrigin","_onLoad","remoteWindow","remoteUrl","_callerWindow","_msgNr","_handleHash","_lastMsg","_remoteOrigin","_pollHash","_listenerWindow","_attachListeners","_timer","pollInterval","tries","getRef","frames","ex","idOut","idIn","currentMessage","ack","waiting","destroying","doFragment","seq","fragments","startVerification","mySecret","theirSecret","_send","jsonrpc","serializer","_createMethod","definition","_callbacks","_callbackCounter","namedParams","_executeMethod","ex1","_isNode","Node","_isElement","HTMLElement","_absolutizeURI","removeDotSegments","output","_parseURI","authority","whitespacePattern","uriPattern","hostname","appConfigReplacer","Apps","overwrite","isFunc","s4","array","isLocalRequest","urlLower","relUrlPattern","execute","isNativeDOMNode","testObject","log","replacer","space","_createHandler","fnOrNode","domNodeAppropriate","_validateToken","domNode","_containerToken","_f2Token","_validateF2Token","_filterHandlersByNamespace","newHandlers","_removeHandler","eventKey","_handlerCollection","_parseEventKey","eventParts","appCreateRoot","appRenderBefore","appDestroyBefore","appRenderAfter","appDestroyAfter","appRender","appDestroy","appScriptLoadFailed","_defaultMethods","appConfig","appHtml","appInstance","app","appId","getToken","__f2GetToken","__trigger","callbackArgs","isAppRender","AppHandlers","APP_CREATE_ROOT","APP_RENDER_BEFORE","APP_RENDER","APP_RENDER_AFTER","APP_DESTROY_BEFORE","APP_DESTROY","APP_DESTROY_AFTER","APP_SCRIPT_LOAD_FAILED","App","AppConfig","enableBatchRequests","instanceId","isSecure","containerLocale","localeSupport","manifestUrl","minGridSize","ui","views","AppManifest","apps","inlineScripts","AppContent","ContainerConfig","afterAppRender","beforeAppRender","debugMode","locale","scriptErrorTimeout","isSecureAppPage","secureAppPagePath","supportedViews","UI","Mask","backgroundColor","loadingIcon","useClasses","loadScripts","loadStyles","Css","APP","APP_CONTAINER","APP_TITLE","APP_VIEW","APP_VIEW_TRIGGER","MASK","MASK_CONTAINER","Events","APP_SYMBOL_CHANGE","APP_WIDTH_CHANGE","CONTAINER_SYMBOL_CHANGE","CONTAINER_WIDTH_CHANGE","CONTAINER_LOCALE_CHANGE","JSONP_CALLBACK","Sockets","EVENT","LOAD","RPC","RPC_CALLBACK","UI_RPC","Views","DATA_ATTRIBUTE","ABOUT","HELP","HOME","REMOVE","SETTINGS","_afterAppRender","_config","_appConfig","_html","$appContainer","Constants","_appRender","_outerHtml","_beforeAppRender","_appScriptLoadFailed","scriptInfo","_createAppConfig","_getAppConfigFromElement","hasAttribute","contextJson","warn","_hasNonTextChildNodes","hasNodes","hasChildNodes","_hydrateContainerConfig","containerConfig","_initAppEvents","elementFilter","view","removeApp","_initContainerEvents","resizeHandler","resizeTimeout","_isPlaceholderElement","_isInit","_createAppInstance","appContent","_apps","_loadApps","appConfigs","appManifest","_loadStyles","cb","stylesFragment","useCreateStyleSheet","createStyleSheet","resourceUrl","resourceKey","_loadedStyles","_loadScripts","_error","evtData","_usesAppHandlers","_appHandlerToken","_checkComplete","scriptsLoaded","scriptCount","_emptyWaitlist","errorEvt","waitlist","_loadingScripts","insertBeforeEl","readyStates","loaded","_loadedScripts","getTime","onerror","_loadInlineScripts","inlines","loadInlineScripts","eval","exception","elementInDocument","_loadHtml","_loadSecureApp","manifestScripts","manifestStyles","manifestInlines","manifestApps","$root","register","_validateApp","_validateContainerConfig","getContainerState","getContainerLocale","isInit","loadPlaceholders","registerApps","appManifests","appStack","batches","callbackStack","haveManifests","req","requests","manifestRequest","completeFunc","errorFunc","item","successFunc","requestFunc","successCallback","errorCallback","completeCallback","jqxhr","removeAllApps","_socketEmit","broadcast","timesToListen","_createAppToContainerSocket","isLoaded","messagePlayback","socket","_rSocketLoad","appParts","_createContainerToAppSocket","iframeProps","scrolling","_secureAppPagePath","_createRpcCallback","callbackId","parseFunction","functionName","parseMessage","regEx","rawMessage","callbacks","c","_rUiCall","_rRpc","_rRpcCallback","_rEvents","_registerCallback","messageType","cid","isRemote","appExists","appIsSecure","noFrameAccess","UIClass","_updateHeight","outerHeight","_modalHtml","showCancel","hideMask","Modals","_renderAlert","_renderConfirm","alert","confirm","okCallback","cancelCallback","setTitle","showMask","showLoader","updateHeight","_isValid","eventsPattern","_containerConfig","showLoading","mask","background-color","background-image","background-position","background-repeat","min-height","z-index","autoloadEls","addAll"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"f2.min.js","sources":["f2.debug.js"],"names":["exports","F2","F2_TESTING_MODE","global","factory","module","document","w","Error","window","this","noGlobal","isArraylike","obj","length","type","jQuery","isWindow","nodeType","winnow","elements","qualifier","not","isFunction","grep","elem","i","call","risSimple","test","filter","inArray","sibling","cur","dir","createOptions","options","object","optionsCache","each","match","rnotwhite","_","flag","detach","addEventListener","removeEventListener","completed","detachEvent","event","readyState","ready","dataAttr","key","data","undefined","name","replace","rmultiDash","toLowerCase","getAttribute","rbrace","parseJSON","e","isEmptyDataObject","isEmptyObject","internalData","pvt","acceptData","ret","thisCache","internalKey","expando","isNode","cache","id","deletedIds","pop","guid","toJSON","noop","extend","camelCase","internalRemoveData","isArray","concat","map","split","cleanData","support","deleteExpando","returnTrue","returnFalse","safeActiveElement","activeElement","err","createSafeFragment","list","nodeNames","safeFrag","createDocumentFragment","createElement","getAll","context","tag","elems","found","getElementsByTagName","strundefined","querySelectorAll","childNodes","nodeName","push","merge","fixDefaultChecked","rcheckableType","defaultChecked","checked","manipulationTarget","content","firstChild","appendChild","ownerDocument","disableScript","find","attr","restoreScript","rscriptTypeMasked","exec","removeAttribute","setGlobalEval","refElements","_data","cloneCopyEvent","src","dest","hasData","l","oldData","curData","events","handle","add","fixCloneNodeIssues","noCloneEvent","removeEvent","text","parentNode","outerHTML","html5Clone","innerHTML","trim","value","defaultSelected","selected","defaultValue","actualDisplay","doc","style","appendTo","body","display","getDefaultComputedStyle","css","defaultDisplay","elemdisplay","iframe","documentElement","contentWindow","contentDocument","write","close","addGetHookIf","conditionFn","hookFn","get","condition","apply","arguments","vendorPropName","capName","charAt","toUpperCase","slice","origName","cssPrefixes","showHide","show","hidden","values","index","isHidden","setPositiveNumber","subtract","matches","rnumsplit","Math","max","augmentWidthOrHeight","extra","isBorderBox","styles","val","cssExpand","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","getStyles","boxSizing","curCSS","rnumnonpx","boxSizingReliable","parseFloat","Tween","prop","end","easing","prototype","init","createFxNow","setTimeout","fxNow","now","genFx","includeWidth","which","attrs","height","opacity","width","createTween","animation","tween","collection","tweeners","defaultPrefilter","props","opts","toggle","hooks","oldfire","checkDisplay","anim","orig","dataShow","queue","_queueHooks","unqueued","empty","fire","always","overflow","overflowX","overflowY","inlineBlockNeedsLayout","zoom","shrinkWrapBlocks","rfxtypes","done","hide","_removeData","start","propFilter","specialEasing","cssHooks","expand","Animation","properties","result","stopped","animationPrefilters","deferred","Deferred","tick","currentTime","remaining","startTime","duration","temp","percent","tweens","run","notifyWith","resolveWith","promise","originalProperties","originalOptions","stop","gotoEnd","rejectWith","fx","timer","progress","complete","fail","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","jqXHR","inspect","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","target","deep","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","firstDataType","ct","finalDataType","contents","shift","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","tmp","prev","responseFields","dataFilter","state","error","buildParams","prefix","traditional","v","rbracket","createStandardXHR","XMLHttpRequest","createActiveXHR","ActiveXObject","getWindow","defaultView","parentWindow","indexOf","class2type","toString","hasOwn","hasOwnProperty","version","selector","fn","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","jquery","constructor","toArray","num","pushStack","prevObject","callback","args","first","eq","last","len","j","sort","splice","copyIsArray","copy","clone","isPlainObject","random","isReady","msg","Array","isNumeric","ownLast","globalEval","execScript","string","makeArray","arr","results","Object","second","invert","callbackInverse","callbackExpect","arg","proxy","Date","Sizzle","seed","m","groups","old","nid","newContext","newSelector","preferredDoc","setDocument","documentIsHTML","rquickExpr","getElementById","contains","getElementsByClassName","qsa","rbuggyQSA","tokenize","rescape","setAttribute","toSelector","rsibling","testContext","join","qsaError","select","createCache","keys","Expr","cacheLength","markFunction","assert","div","removeChild","addHandle","handler","attrHandle","siblingCheck","a","b","diff","sourceIndex","MAX_NEGATIVE","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","checkNonElements","doneName","xml","oldCache","outerCache","newCache","dirruns","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","classCache","tokenCache","compilerCache","sortOrder","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escaped","escapedWhitespace","high","String","fromCharCode","els","node","hasCompare","parent","top","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","specified","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","nodeIndex","useCache","lastChild","pseudo","idx","matched","has","innerText","lang","elemLang","hash","location","root","focus","hasFocus","href","tabIndex","enabled","disabled","selectedIndex","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","soFar","preFilters","cached","token","compiled","div1","unique","isXMLDoc","rneedsContext","rsingleTag","self","is","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","children","next","until","n","r","targets","closest","pos","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","reverse","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","stack","once","stopOnFalse","disable","remove","lock","locked","fireWith","tuples","then","fns","newDefer","tuple","returned","resolve","reject","notify","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","updateFunc","readyList","readyWait","holdReady","hold","wait","triggerHandler","off","frameElement","doScroll","doScrollCheck","container","cssText","noData","applet ","embed ","object ","removeData","dequeue","startLength","setter","clearQueue","count","defer","pnum","source","el","access","chainable","emptyGet","raw","bulk","fragment","leadingWhitespace","tbody","htmlSerialize","cloneNode","appendChecked","noCloneChecked","checkClone","click","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","types","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","trigger","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","srcElement","metaKey","original","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","one","origFn","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rchecked","rscriptType","rcleanScript","wrapMap","option","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","buildFragment","scripts","selection","wrap","safe","nodes","createTextNode","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","hasScripts","set","iNoClone","_evalUrl","prependTo","insertAfter","replaceAll","insert","shrinkWrapBlocksVal","rmargin","rposition","getComputedStyle","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","computeStyleTests","pixelPositionVal","boxSizingReliableVal","reliableMarginRightVal","marginRight","reliableHiddenOffsetsVal","cssFloat","backgroundClip","clearCloneStyle","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","pixelPosition","reliableMarginRight","swap","ralpha","ropacity","rdisplayswap","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","cssProps","float","$1","margin","padding","border","suffix","expanded","parts","unit","propHooks","eased","step","linear","p","swing","cos","PI","timerId","rfxnum","rrun","*","scale","maxIterations","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","for","class","notxml","tabindex","parseInt","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","rvalidtokens","JSON","parse","requireNonComma","depth","str","comma","open","Function","parseXML","DOMParser","parseFromString","async","loadXML","ajaxLocParts","ajaxLocation","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","allTypes","active","lastModified","etag","url","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","status","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","code","abort","finalText","method","crossDomain","hasContent","beforeSend","send","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","serialize","serializeArray","xhr","xhrId","xhrCallbacks","xhrSupported","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","head","scriptCharset","charset","onload","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict","Plugin","_relatedTarget","$this","Modal","DEFAULTS","element","$body","$element","$backdrop","isShown","scrollbarWidth","remote","VERSION","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","backdrop","keyboard","that","checkScrollbar","setScrollbar","escape","transition","enforceFocus","emulateTransitionEnd","hideModal","resetScrollbar","removeBackdrop","doAnimate","callbackRemove","measureScrollbar","bodyPad","clientWidth","innerWidth","scrollDiv","modal","Constructor","$target","showEvent","_events","_conf","configure","conf","delimiter","maxListeners","wildcard","newListener","listenerTree","EventEmitter","searchListenerTree","tree","leaf","branch","xTree","xxTree","isolatedBranch","endReached","listeners","typeLength","currentType","nextType","_listeners","**","growListenerTree","listener","warned","defaultMaxListeners","console","trace","setMaxListeners","many","ttl","_origin","emit","_all","ns","onAny","addListener","leafs","iLeaf","offAny","removeListener","removeAllListeners","listenersAny","EventEmitter2","process","title","decodeURIComponent","isHostMethod","property","isHostObject","o","hasFlash","undef","navigator","plugins","description","mimeTypes","enabledPlugin","flashVersion","flash","GetVariable","notSupportedException","major","minor","HAS_FLASH_THROTTLED_BUG","dom_onReady","domIsReady","domReadyQueue","whenReady","scope","getParentObject","ii","easyXDM","_easyXDM","IFRAME_PREFIX","getDomainName","reURI","getPort","getLocation","proto","domain","port","resolveUrl","reDoubleSlash","path","substring","pathname","lastIndexOf","protocol","host","reParent","appendQueryParameters","parameters","q","useHash","destination","noOverwrite","member","testForNamePropertyBug","channelId","HAS_NAME_PROPERTY_BUG","createFrame","config","frame","frameBorder","allowTransparency","onLoad","usePost","action","checkAcl","acl","re","substr","prepareTransportStack","stackEls","isHost","query","xdm_p","channel","secret","swf","product","userAgent","remoteHelper","xdm_c","xdm_s","xdm_e","useResize","useParent","usePolling","local","images","search","xdm_pa","xdm_po","HashTransport","ReliableBehavior","QueueBehavior","encode","maxLength","VerifyBehavior","initiate","PostMessageTransport","NameTransport","NixTransport","SameOriginTransport","FrameElementTransport","FlashTransport","lazy","chainStack","stackElements","stackEl","defaults","incoming","message","origin","up","outgoing","recipient","down","destroy","removeFromStack","un","floor","emptyFn","sEvent","fpNotify","pair","stringify","evalJSON","getJSONObject","DomHelper","requiresJSON","_map","Fn","del","Socket","onMessage","onReady","postMessage","Rpc","jsonRpcConfig","RpcBehavior","pub","targetOrigin","onDOMReady","sendFn","addSwf","swfContainer","swfNoThrottle","right","flashVars","destroyChannel","swfdomain","createChannel","_getOrigin","uri","_window_onMessage","callerWindow","waitForReady","referrer","_sendMessage","sendMessage","_onReady","readyCount","_onMessage","remoteOrigin","_onLoad","remoteWindow","remoteUrl","_callerWindow","_msgNr","_handleHash","_lastMsg","_remoteOrigin","_pollHash","_listenerWindow","_attachListeners","_timer","pollInterval","tries","getRef","frames","ex","idOut","idIn","currentMessage","ack","waiting","destroying","doFragment","seq","fragments","startVerification","mySecret","theirSecret","_send","jsonrpc","serializer","_createMethod","definition","_callbacks","_callbackCounter","namedParams","_executeMethod","ex1","_isNode","Node","_isElement","HTMLElement","_absolutizeURI","removeDotSegments","output","_parseURI","authority","whitespacePattern","uriPattern","hostname","appConfigReplacer","Apps","overwrite","isFunc","s4","array","isLocalRequest","urlPattern","urlLower","isNativeDOMNode","testObject","log","replacer","space","_createHandler","fnOrNode","domNodeAppropriate","_validateToken","domNode","_containerToken","_f2Token","_validateF2Token","_filterHandlersByNamespace","newHandlers","_removeHandler","eventKey","_handlerCollection","_parseEventKey","eventParts","appCreateRoot","appRenderBefore","appDestroyBefore","appRenderAfter","appDestroyAfter","appRender","appDestroy","appScriptLoadFailed","_defaultMethods","appConfig","appHtml","appInstance","app","appId","getToken","__f2GetToken","__trigger","callbackArgs","isAppRender","AppHandlers","APP_CREATE_ROOT","APP_RENDER_BEFORE","APP_RENDER","APP_RENDER_AFTER","APP_DESTROY_BEFORE","APP_DESTROY","APP_DESTROY_AFTER","APP_SCRIPT_LOAD_FAILED","App","AppConfig","enableBatchRequests","instanceId","isSecure","containerLocale","localeSupport","manifestUrl","minGridSize","ui","views","AppManifest","apps","inlineScripts","AppContent","ContainerConfig","afterAppRender","beforeAppRender","debugMode","locale","scriptErrorTimeout","isSecureAppPage","secureAppPagePath","supportedViews","UI","Mask","backgroundColor","loadingIcon","useClasses","loadScripts","loadStyles","Css","APP","APP_CONTAINER","APP_TITLE","APP_VIEW","APP_VIEW_TRIGGER","MASK","MASK_CONTAINER","Events","APP_SYMBOL_CHANGE","APP_WIDTH_CHANGE","CONTAINER_SYMBOL_CHANGE","CONTAINER_WIDTH_CHANGE","CONTAINER_LOCALE_CHANGE","JSONP_CALLBACK","Sockets","EVENT","LOAD","RPC","RPC_CALLBACK","UI_RPC","Views","DATA_ATTRIBUTE","ABOUT","HELP","HOME","REMOVE","SETTINGS","_afterAppRender","_config","_appConfig","_html","$appContainer","Constants","_appRender","_outerHtml","_beforeAppRender","_appScriptLoadFailed","scriptInfo","_createAppConfig","_getAppConfigFromElement","hasAttribute","contextJson","_hasNonTextChildNodes","hasNodes","hasChildNodes","_hydrateContainerConfig","containerConfig","_initAppEvents","elementFilter","view","removeApp","_initContainerEvents","resizeHandler","resizeTimeout","_isPlaceholderElement","_isInit","_createAppInstance","appContent","_apps","_loadApps","appConfigs","appManifest","_loadStyles","cb","stylesFragment","useCreateStyleSheet","createStyleSheet","resourceUrl","resourceKey","_loadedStyles","_loadScripts","_error","evtData","_usesAppHandlers","_appHandlerToken","_checkComplete","scriptsLoaded","scriptCount","_emptyWaitlist","errorEvt","waitlist","_loadingScripts","insertBeforeEl","readyStates","loaded","_loadedScripts","getTime","onerror","_loadInlineScripts","inlines","loadInlineScripts","eval","exception","elementInDocument","_loadHtml","_loadSecureApp","manifestScripts","manifestStyles","manifestInlines","manifestApps","$root","register","_validateApp","_validateContainerConfig","_getPlaceholders","getContainerState","getContainerLocale","isInit","loadPlaceholders","registerApps","appManifests","appStack","batches","callbackStack","haveManifests","req","requests","manifestRequest","completeFunc","errorFunc","item","successFunc","requestFunc","successCallback","errorCallback","completeCallback","jqxhr","removeAllApps","_socketEmit","broadcast","timesToListen","_createAppToContainerSocket","isLoaded","messagePlayback","socket","_rSocketLoad","appParts","_createContainerToAppSocket","iframeProps","scrolling","_secureAppPagePath","_createRpcCallback","callbackId","parseFunction","functionName","parseMessage","regEx","rawMessage","callbacks","c","_rUiCall","_rRpc","_rRpcCallback","_rEvents","_registerCallback","messageType","cid","isRemote","appExists","appIsSecure","noFrameAccess","UIClass","_updateHeight","outerHeight","_modalHtml","showCancel","hideMask","Modals","_renderAlert","_renderConfirm","alert","confirm","okCallback","cancelCallback","setTitle","showMask","showLoader","updateHeight","_isValid","eventsPattern","_containerConfig","showLoading","mask","background-color","background-image","background-position","background-repeat","min-height","z-index","autoloadEls","addAll"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/f2.no-third-party.js b/dist/f2.no-third-party.js
index 3561f506..89099977 100644
--- a/dist/f2.no-third-party.js
+++ b/dist/f2.no-third-party.js
@@ -253,17 +253,17 @@ var F2 = (function() {
@returns {bool} Whether the URL is local or not
Derived from: https://github.com/jquery/jquery/blob/master/src/ajax.js
*/
- isLocalRequest: function(url) {
+ isLocalRequest: function(url){
+ var urlPattern = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/;
var urlLower = url.toLowerCase();
- var relUrlPattern = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/;
- var parts = relUrlPattern.execute(urlLower);
+ var parts = urlPattern.exec(urlLower);
var ajaxLocation;
var ajaxLocParts;
try {
ajaxLocation = location.href;
- } catch ( e ) {
- // Use the href of an anchor since IE account for document.location
+ } catch (e) {
+ // Use the href of an anchor since IE accounts for document.location
ajaxLocation = document.createElement('a');
ajaxLocation.href = '';
ajaxLocation = ajaxLocation.href;
@@ -271,16 +271,16 @@ var F2 = (function() {
ajaxLocation = ajaxLocation.toLowerCase();
- // The url is relative, so we'll fully qualify it and re-regex
+ // The url must be relative, so fully qualify it and re-regex url
if (!parts) {
urlLower = _absolutizeURI(ajaxLocation, urlLower).toLowerCase();
- parts = relUrlPattern.exec(urlLower);
+ parts = urlPattern.exec(urlLower);
}
// Segment location into parts
- ajaxLocParts = relUrlPattern.exec(ajaxLocation) || [];
+ ajaxLocParts = urlPattern.exec(ajaxLocation) || [];
- // Do hostname and protocol and port of manifest URL match location.href?
+ // Do hostname and protocol and port of manifest URL match location.href? (a "local" request on the same domain)
var matched = !(parts &&
(parts[1] !== ajaxLocParts[1] || parts[2] !== ajaxLocParts[2] ||
(parts[3] || (parts[1] === 'http:' ? '80' : '443')) !==
@@ -1792,30 +1792,31 @@ F2.extend('', (function() {
@return {F2.AppConfig} The new F2.AppConfig object
*/
function _getAppConfigFromElement(node) {
- var appConfig;
+ if (!node) {
+ return;
+ }
- if (node) {
- var appId = node.getAttribute('data-f2-appid');
- var manifestUrl = node.getAttribute('data-f2-manifesturl');
-
- if (appId && manifestUrl) {
- appConfig = {
- appId: appId,
- enableBatchRequests: node.hasAttribute('data-f2-enablebatchrequests'),
- isSecure: node.hasAttribute('data-f2-issecure'),
- manifestUrl: manifestUrl,
- root: node
- };
+ var appConfig;
+ var appId = node.getAttribute('data-f2-appid');
+ var manifestUrl = node.getAttribute('data-f2-manifesturl');
+
+ if (appId && manifestUrl) {
+ appConfig = {
+ appId: appId,
+ enableBatchRequests: node.hasAttribute('data-f2-enablebatchrequests'),
+ isSecure: node.hasAttribute('data-f2-issecure'),
+ manifestUrl: manifestUrl,
+ root: node
+ };
- // See if the user passed in a block of serialized json
- var contextJson = node.getAttribute('data-f2-context');
+ // See if the user passed in a block of serialized json
+ var contextJson = node.getAttribute('data-f2-context');
- if (contextJson) {
- try {
- appConfig.context = F2.parse(contextJson);
- } catch (e) {
- console.warn('F2: "data-f2-context" of node is not valid JSON', '"' + e + '"');
- }
+ if (contextJson) {
+ try {
+ appConfig.context = F2.parse(contextJson);
+ } catch (e) {
+ F2.log('warn', 'F2: "data-f2-context" of node is not valid JSON', '"' + e + '"');
}
}
}
@@ -2076,7 +2077,6 @@ F2.extend('', (function() {
function _checkComplete() {
// Are we done loading all scripts for this app?
if (++scriptsLoaded === scriptCount) {
- // success
cb();
}
}
@@ -2403,6 +2403,28 @@ F2.extend('', (function() {
return true;
}
+ /**
+ Find app placeholders on the page
+ @method _getPlaceholders
+ @private
+ @param {Element} parentNode The element to search for placeholder apps
+ @returns {Array} The discovered placeholder elements
+ */
+ function _getPlaceholders(parentNode) {
+ var elements = [];
+
+ if (parentNode.hasAttribute('data-f2-appid')) {
+ elements.push(parentNode);
+ }
+
+ if (parentNode.querySelectorAll) {
+ var children = Array.prototype.slice.call(parentNode.querySelectorAll('[data-f2-appid]'));
+ elements = elements.concat(children);
+ }
+
+ return elements;
+ }
+
return {
/**
Gets the current list of apps in the container.
@@ -2447,7 +2469,7 @@ F2.extend('', (function() {
// Dictates whether we use the old logic or the new logic.
// TODO: Remove in v2.0
- _usesAppHandlers = (_config.beforeAppRender || _config.appRender || _config.afterAppRender || _config.appScriptLoadFailed);
+ _usesAppHandlers = (!_config.beforeAppRender && !_config.appRender && !_config.afterAppRender && !_config.appScriptLoadFailed);
// Only establish RPC connection if the container supports the secure app page
if (!!_config.secureAppPagePath || _config.isSecureAppPage) {
@@ -2478,22 +2500,9 @@ F2.extend('', (function() {
throw new Error('"parentNode" must be null or a DOM node');
}
- var elements = [];
+ var elements = _getPlaceholders(parentNode || document.body);
var appConfigs = [];
- /**
- If the passed in element has a data-f2-appid attribute add it to the
- list of elements but to not search within that element for other
- placeholders
- */
- if (parentNode) {
- if (parentNode.hasAttribute('data-f2-appid')) {
- elements.push(parentNode);
- }
- } else if (document.querySelectorAll) {
- elements = elements.concat(document.querySelectorAll('[data-f2-appid]'));
- }
-
for (var i = 0, len = elements.length; i < len; i++) {
var appConfig = _getAppConfigFromElement(elements[i]);
appConfigs.push(appConfig);
From 14677038c2e5181295f244542911028a8c48827b Mon Sep 17 00:00:00 2001
From: Chris Montrois
Date: Fri, 9 Jan 2015 12:25:02 -0700
Subject: [PATCH 27/61] Fixing test whitespace
---
tests/css/override.css | 12 +-
tests/css/page.css | 12 +-
tests/css/test.css | 1 +
tests/index-amd.html | 165 +-
tests/index.html | 168 +-
tests/js/initialize.js | 24 +-
tests/js/preloadedTest-amd.js | 55 +-
tests/js/preloadedTest.js | 51 +-
tests/js/test.js | 41 +-
tests/server.js | 164 +-
tests/spec/amd-spec.js | 30 +-
tests/spec/app-handlers-spec.js | 1929 +++++++++---------
tests/spec/console-test.js | 19 +-
tests/spec/container-spec.js | 3344 ++++++++++++++++---------------
tests/spec/misc-spec.js | 16 +-
tests/spec/preamble-spec.js | 84 +-
tests/spec/spec-helpers.js | 140 +-
17 files changed, 3112 insertions(+), 3143 deletions(-)
diff --git a/tests/css/override.css b/tests/css/override.css
index 98bfa4a5..71b02412 100644
--- a/tests/css/override.css
+++ b/tests/css/override.css
@@ -1,9 +1,7 @@
-#TrivialReporter
-{
- display: none;
+#TrivialReporter {
+ display: none;
}
-.f2-app-container
-{
- display: none;
-}
\ No newline at end of file
+.f2-app-container {
+ display: none;
+}
diff --git a/tests/css/page.css b/tests/css/page.css
index 98bfa4a5..71b02412 100644
--- a/tests/css/page.css
+++ b/tests/css/page.css
@@ -1,9 +1,7 @@
-#TrivialReporter
-{
- display: none;
+#TrivialReporter {
+ display: none;
}
-.f2-app-container
-{
- display: none;
-}
\ No newline at end of file
+.f2-app-container {
+ display: none;
+}
diff --git a/tests/css/test.css b/tests/css/test.css
index e69de29b..c0b88506 100644
--- a/tests/css/test.css
+++ b/tests/css/test.css
@@ -0,0 +1 @@
+/* This file exists simply to test loading styles */
diff --git a/tests/index-amd.html b/tests/index-amd.html
index 2c375eee..367e6a1b 100644
--- a/tests/index-amd.html
+++ b/tests/index-amd.html
@@ -1,89 +1,90 @@
- F2 (AMD) - Jasmine Unit Tests
-
-
-
+ F2 (AMD) - Jasmine Unit Tests
+
+
+
-
- The Node.js Test Server is not running. Some tests will not be run.
-
',
- 'Falling (or narrowing) spreads indicate the perceived risk of default is falling. Rising (or widening) spreads indicate the perceived risk of default is rising.',
- '
',
- '
',
- 'All CDS are denominated in U.S. Dollars except U.S. sovereigns, which are in Euros.',
- '
'
- ].join("")
- }
- ]
-})
\ No newline at end of file
+ "scripts":[
+ "../apps/JavaScript/CDS/appclass.js"
+ ],
+ "styles":[
+ "../apps/JavaScript/CDS/app.css"
+ ],
+ "apps":[
+ {
+ "html":[
+ '
',
+ '
',
+ '
',
+ '',
+ '
',
+ '',
+ '
',
+ 'Falling (or narrowing) spreads indicate the perceived risk of default is falling. Rising (or widening) spreads indicate the perceived risk of default is rising.',
+ '
',
+ '
',
+ 'All CDS are denominated in U.S. Dollars except U.S. sovereigns, which are in Euros.',
+ '
'
+ ].join("")
+ }
+ ]
+})
diff --git a/examples/apps/JavaScript/Chart/app.css b/examples/apps/JavaScript/Chart/app.css
index 33a63594..9d249030 100644
--- a/examples/apps/JavaScript/Chart/app.css
+++ b/examples/apps/JavaScript/Chart/app.css
@@ -1,7 +1,7 @@
.com_openf2_examples_javascript_chart .btn-group {
- margin-bottom: 10px;
+ margin-bottom: 10px;
}
.com_openf2_examples_javascript_chart #f2-1year-chart {
- height:234px;
-}
\ No newline at end of file
+ height:234px;
+}
diff --git a/examples/apps/JavaScript/Chart/appclass.js b/examples/apps/JavaScript/Chart/appclass.js
index 0e2a41a5..b8875c6f 100644
--- a/examples/apps/JavaScript/Chart/appclass.js
+++ b/examples/apps/JavaScript/Chart/appclass.js
@@ -1,351 +1,349 @@
-F2.Apps["com_openf2_examples_javascript_chart"] = (function(){
+F2.Apps["com_openf2_examples_javascript_chart"] = (function() {
- var app = function (appConfig, appContent, root) {
- this.symbol = "MSFT";
- this.appConfig = appConfig;
- this.appContent = appContent;
- this.ui = this.appConfig.ui;
- this.root = root;
- this.$root = $(root);
- this.$app = $("#f2-1year-chart", this.$root);
- //set configuration
- this.config();
- };
+ var app = function(appConfig, appContent, root) {
+ this.symbol = "MSFT";
+ this.appConfig = appConfig;
+ this.appContent = appContent;
+ this.ui = this.appConfig.ui;
+ this.root = root;
+ this.$root = $(root);
+ this.$app = $("#f2-1year-chart", this.$root);
+ this.config();
+ };
- app.prototype.config = function() {
+ app.prototype.config = function() {
- var defaults = {
- backgroundColor: '#fff',
- lineColor: '#428bca',
- lineWidth: 1.5,
- gridColor: '#DDDDDD',
- gridAltColor: '#F7F7F7',
- fontColor: '#444444',
- fontFamily: 'Arial, sans-serif',
- fontSize: 12,
- lineHeight: 1.2,
- greenBar: '#2EA94F',
- redBar: '#DB411C'
- },
- styleImport = (this.appConfig.context && this.appConfig.context.style)?this.appConfig.context.style:{};
+ var defaults = {
+ backgroundColor: '#fff',
+ lineColor: '#428bca',
+ lineWidth: 1.5,
+ gridColor: '#DDDDDD',
+ gridAltColor: '#F7F7F7',
+ fontColor: '#444444',
+ fontFamily: 'Arial, sans-serif',
+ fontSize: 12,
+ lineHeight: 1.2,
+ greenBar: '#2EA94F',
+ redBar: '#DB411C'
+ };
+ var styleImport = (this.appConfig.context && this.appConfig.context.style) ? this.appConfig.context.style : {};
- /** for example purposes*/
- console.group('Chart app');
- console.info('The chart app (com_openf2_examples_javascript_chart) has configuration options which can be overriden by using Context. Set a "style" property in the AppConfig\'s Context property. The current AppConfig is on the next line.');
- console.info(this.appConfig);
- console.info('The chart\'s configuration parameters (defaults) are found in the following hash');
- console.info(defaults);
- console.groupEnd();
+ /** for example purposes*/
+ console.group('Chart app');
+ console.info('The chart app (com_openf2_examples_javascript_chart) has configuration options which can be overriden by using Context. Set a "style" property in the AppConfig\'s Context property. The current AppConfig is on the next line.');
+ console.info(this.appConfig);
+ console.info('The chart\'s configuration parameters (defaults) are found in the following hash');
+ console.info(defaults);
+ console.groupEnd();
- this.CHT_CONTAINER = 'f2-1year-chart';
- this.CHART_STYLES = $.extend({},defaults,styleImport);
- };
+ this.CHT_CONTAINER = 'f2-1year-chart';
+ this.CHART_STYLES = $.extend({}, defaults, styleImport);
+ };
- app.prototype.redraw = function(data) {
- this.hc = null;
- this.symbol = data.symbol;
- this.getData();
- };
+ app.prototype.redraw = function(data) {
+ this.hc = null;
+ this.symbol = data.symbol;
+ this.getData();
+ };
- app.prototype.init = function() {
-
- this.getData();
+ app.prototype.init = function() {
- //setup container symbol change listener to draw new chart.
- F2.Events.on(F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, $.proxy(function(symbolData){
- this.redraw(symbolData);
- },this)
- );
- };
+ this.getData();
- app.prototype.getData = function() {
+ //setup container symbol change listener to draw new chart.
+ F2.Events.on(F2.Constants.Events.CONTAINER_SYMBOL_CHANGE, $.proxy(function(symbolData) {
+ this.redraw(symbolData);
+ }, this));
+ };
- this.ui.showMask(this.$root,true);
+ app.prototype.getData = function() {
- $.ajax({
- beforeSend:function () {
- this.ui.setTitle('Loading chart...');
- },
- data: {
- symbol: this.symbol,
- duration: 365 // Fixed to one year
- },
- url: 'http://dev.markitondemand.com/Api/Timeseries/jsonp',
- dataType: 'jsonp',
- context: this
-
- }).done(function(jqxhr,txtStatus){
- //Catch errors
- if ( !jqxhr.Data || jqxhr.Message ) {
- if ( typeof console == 'object' ) console.error('Error: ', jqxhr.Message);
- this._chartError(jqxhr);
- return;
- }
- this.HandleAPIData(jqxhr);
+ this.ui.showMask(this.$root, true);
- }).fail(function(jqxhr,txtStatus){
- F2.log('Could not generate chart.', jqxhr);
- this._chartError(jqxhr);
- });
- };
+ $.ajax({
+ beforeSend: function() {
+ this.ui.setTitle('Loading chart...');
+ },
+ data: {
+ symbol: this.symbol,
+ duration: 365 // Fixed to one year
+ },
+ url: 'http://dev.markitondemand.com/Api/Timeseries/jsonp',
+ dataType: 'jsonp',
+ context: this
- app.prototype._chartError = function(jqxhr) {
- F2.log("Price Chart Error", jqxhr);
- this.ui.setTitle("Chart Error");
- this.$app.html("
An error occurred loading price data for " +this.symbol+ ".
");
- this.ui.hideMask(this.$root);
- this.ui.updateHeight();
- };
+ }).done(function(jqxhr, txtStatus) {
+ //Catch errors
+ if (!jqxhr.Data || jqxhr.Message) {
+ if (typeof console == 'object') {
+ console.error('Error: ', jqxhr.Message);
+ }
+ this._chartError(jqxhr);
+ return;
+ }
+ this.HandleAPIData(jqxhr);
-
+ }).fail(function(jqxhr, txtStatus) {
+ F2.log('Could not generate chart.', jqxhr);
+ this._chartError(jqxhr);
+ });
+ };
- // Parses API data to provide HighCharts-ready data series for close values,
- // additionally deriving up/down month indicators.
- //
- app.prototype.HandleAPIData = function (json) {
+ app.prototype._chartError = function(jqxhr) {
+ F2.log("Price Chart Error", jqxhr);
+ this.ui.setTitle("Chart Error");
+ this.$app.html("
An error occurred loading price data for " + this.symbol + ".
");
+ this.ui.hideMask(this.$root);
+ this.ui.updateHeight();
+ };
- $(this.CHT_CONTAINER).empty();
+ // Parses API data to provide HighCharts-ready data series for close values,
+ // additionally deriving up/down month indicators.
+ app.prototype.HandleAPIData = function(json) {
- // Set up vars for first data series
- var apiDates = json.Data.SeriesDates,
- apiValues = json.Data.Series.close.values,
- closeSeriesData = [ ];
-
- // Translate API JSON into a HighCharts-format data series
- for ( var i = 0; i < apiDates.length; i++ ) {
- var dat = new Date(apiDates[i]);
- var dateIn = Date.UTC(dat.getFullYear(), dat.getMonth(), dat.getDate());
- var val = apiValues[i];
- closeSeriesData.push([dateIn,val]);
- }
+ $(this.CHT_CONTAINER).empty();
- // Instantiate a new chart with base configuration options (everything but the data)
- var hcChartObj = new Highcharts.Chart(this.getBaselineOptions());
- hcChartObj.series[0].setData(closeSeriesData, true); // Set close-values series data
- //hcChartObj.setTitle({ text: ('One-year price movement for ' + json.Data.Name).toUpperCase() }); // Set title
- hcChartObj.setTitle({ text:'' });
+ // Set up vars for first data series
+ var apiDates = json.Data.SeriesDates;
+ var apiValues = json.Data.Series.close.values;
+ var closeSeriesData = [];
- this.ui.hideMask(this.$root);
- this.ui.setTitle("One-Year Price Movement " + this.symbol);
-
- // No options setting is available for this, so force the price line to be rounded
- $('.highcharts-series path:first', this.root).attr('stroke-linejoin', 'round').attr('stroke-linecap', 'round');
-
- // Set up vars for up/down month data series
- var currentMonthName, currentJSDate, currentJSUTCDate, currentVal,
- upSeriesData = [ ],
- downSeriesData = [ ];
- var dataRanges = hcChartObj.yAxis[0].getExtremes(); // Will need to reset to this later
- minVal = dataRanges.min, // Will set red/green indicators to this value
- apiValues = json.Data.Series.close.values,
- apiDates = json.Data.SeriesDates,
- firstMonthName = apiDates[0].substr(4, 3), // First!
- prevMonthName = firstMonthName,
- prevJSDate = new Date(prevMonthName + ' 1, ' + apiDates[0].substr(-4)),
- prevJSUTCDate = Date.UTC(prevJSDate.getFullYear(), prevJSDate.getMonth(), prevJSDate.getDate()),
- prevVal = apiValues[0];
-
- // Now walk through all data points again (had to do it once before to get the ranges),
- // looking for month boundaries and deciding if the previous month ended up or down over
- // the preceding month's close
- for ( var i = 1; i < apiDates.length; i++ ) {
- currentMonthName = apiDates[i].substr(4, 3);
- if ( currentMonthName != prevMonthName ) { // Into a new month in the data
- currentVal = apiValues[i - 1]; // Last close in the preceding month
- currentJSDate = new Date(currentMonthName + ' 1, ' + apiDates[i].substr(-4));
- currentJSUTCDate = Date.UTC(currentJSDate.getFullYear(), currentJSDate.getMonth(), currentJSDate.getDate());
- if ( prevMonthName != firstMonthName ) { // Skip the first month, it's incomplete
- if ( currentVal >= prevVal ) {
- upSeriesData.push( [ prevJSUTCDate, minVal ], [ currentJSUTCDate, minVal ] );
- downSeriesData.push( [ currentJSUTCDate, null ] );
- }
- else {
- downSeriesData.push( [ prevJSUTCDate, minVal ], [ currentJSUTCDate, minVal ] );
- upSeriesData.push( [ currentJSUTCDate, null ] );
- }
- }
- prevVal = currentVal;
- prevMonthName = currentMonthName;
- prevJSUTCDate = currentJSUTCDate;
- }
- }
- // Add one last interval for the partial month-to-date
- currentVal = apiValues[i - 1]; // Last close value in the data
- currentJSDate = new Date(apiDates[i - 1]);
- currentJSUTCDate = Date.UTC(currentJSDate.getFullYear(), currentJSDate.getMonth(), currentJSDate.getDate());
- if ( currentVal >= prevVal ) upSeriesData.push( [ prevJSUTCDate, minVal ], [ currentJSUTCDate, minVal ] );
- else downSeriesData.push( [ prevJSUTCDate, minVal ], [ currentJSUTCDate, minVal ] );
+ // Translate API JSON into a HighCharts-format data series
+ for (var i = 0; i < apiDates.length; i++) {
+ var dat = new Date(apiDates[i]);
+ var dateIn = Date.UTC(dat.getFullYear(), dat.getMonth(), dat.getDate());
+ var val = apiValues[i];
+ closeSeriesData.push([dateIn, val]);
+ }
- // Add the up month/down month data to the chart's series
- hcChartObj.series[1].setData(upSeriesData, false);
- hcChartObj.series[2].setData(downSeriesData, false);
-
- hcChartObj.yAxis[0].setExtremes(dataRanges.dataMin, dataRanges.dataMax, true, false);
+ // Instantiate a new chart with base configuration options (everything but the data)
+ var hcChartObj = new Highcharts.Chart(this.getBaselineOptions());
+ hcChartObj.series[0].setData(closeSeriesData, true); // Set close-values series data
+ //hcChartObj.setTitle({ text: ('One-year price movement for ' + json.Data.Name).toUpperCase() }); // Set title
+ hcChartObj.setTitle({
+ text: ''
+ });
- this.ui.updateHeight();
- };
+ this.ui.hideMask(this.$root);
+ this.ui.setTitle("One-Year Price Movement " + this.symbol);
- // Defines the HighCharts configuration options.
- //
- app.prototype.getBaselineOptions = function () {
- return {
- chart: {
- borderColor: 'rgba(255, 255, 255, 0.0)',
- borderRadius: 0,
- defaultSeriesType: 'line',
- renderTo: this.CHT_CONTAINER,
- spacingBottom: 25,
- spacingLeft: 1,
- spacingRight: 1,
- backgroundColor: this.CHART_STYLES.backgroundColor
- },
- credits: {
- enabled: false
- },
- legend: {
- enabled: false
- },
- plotOptions: {
- line: {
- animation: false,
- lineWidth: this.CHART_STYLES.lineWidth
- },
- series: {
- marker: {
- enabled: false
- },
- shadow: false,
- states: {
- hover: {
- enabled: false
- }
- }
- }
- },
- series: [{
- color: this.CHART_STYLES.lineColor,
- name: 'Close price'
- },
- {
- color: this.CHART_STYLES.greenBar,
- lineWidth: 6,
- name: 'Up months'
- },
- {
- color: this.CHART_STYLES.redBar,
- lineWidth: 6,
- name: 'Down months'
- }],
- title: {
- align: 'left',
- style: {
- color: '#666',
- fontFamily: this.CHART_STYLES.fontFamily,
- fontSize: 14,
- fontWeight: 'bold',
- lineHeight: this.CHART_STYLES.lineHeight
- }
- },
- tooltip: {
- borderRadius: 1,
- crosshairs: true,
- formatter: function () {
- if ( this.series.name == 'Close price' ) {
- return '