diff --git a/README.md b/README.md index 5d95b31..95cb318 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ If you don't need to bundle Tradable core in your code base, then you can simply ```html - ``` @@ -75,7 +75,7 @@ tradable.on("myEmbedReadyListener", "embedReady", function() { }); ``` -The `embedReady` listener is notified every time that the status of `tradable.tradingEnabled` changes. As you might guess, if `tradable.tradingEnabled` is `true`, it means that the OAuth token was received and the user is successfully authenticated, i.e. you can now execute trades and orders. +The `embedReady` listener is notified every time that the status of `tradable.tradingEnabled` changes. As you might guess, if `tradable.tradingEnabled` is `true`, it means that the OAuth token was received and the user is successfully authenticated, i.e. you can now execute trades and orders. On the other hand, if you receive an `embedReady` event and `tradable.tradingEnabled` is `false`, you need to show the disconnected state. Turning the listener off is as easy as: ```javascript diff --git a/dist/tradable.js b/dist/tradable.js index f8eb009..1101703 100644 --- a/dist/tradable.js +++ b/dist/tradable.js @@ -1,15 +1,15 @@ -/****** Copyright 2016 Tradable ApS; @license MIT; v1.20.4 ******/ +/****** Copyright 2016 Tradable ApS; @license MIT; v1.21 ******/ // Avoid console errors when not supported -if (typeof console === "undefined" || typeof console.log === "undefined") { - console = { log: function() {}, warn: function() {} }; +if (typeof console === "undefined" || typeof console.log !== "function" || typeof console.warn !== "function" || typeof console.error !== "function") { + console = { log: function() {}, warn: function() {}, error: function() {} }; } //Check minimum jQuery version '2.1.4' if(typeof jQuery === "undefined") { - console.warn('tradable requires jQuery to run'); + console.warn("tradable requires jQuery to run"); } else if(!isGreaterOrEqualMinVersion(jQuery.fn.jquery, '2.1.4')) { - console.warn('tradable requires jQuery version 2.1.4 or above'); + console.warn("tradable requires jQuery version 2.1.4 or above"); } // Save jQuery in custom variable @@ -45,7 +45,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : * @property {Array} availableInstruments List of instruments cached in memory for the selected account. If the full instrument list is available for the selected account, all of them. Otherwise, instruments are gradually cached for the requested prices. All instruments related to to the open positions and pending orders are cached since the beginning. */ var tradable = { - version : '1.20.4', + version : '1.21', app_id: appId, app_key: appKey, oauth_host: oauthEndpoint.oauthHost, @@ -74,6 +74,9 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : lastSnapshot: null, instrumentKeysForAccountUpdates: [], accountUpdateMillis: 700, + log: function(msg) { console.log("[TR] " + msg); }, + warn: function(msg) { console.warn("[TR] " + msg); }, + error: function(msg) { console.error("[TR] " + msg); }, /** * Redirect to the Tradable account approval page */ @@ -189,8 +192,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : localStorage.removeItem("tradingEnabled:"+appId); localStorage.removeItem("expirationTimeUTC:"+appId); } - tradable.tradingEnabled = false; - notifyReadyCallbacks(); + setTradingEnabled(false); }, isEventValid : function(eventName) { return (typeof eventName === "string" && $.inArray(eventName, availableEvents) !== -1); @@ -328,11 +330,11 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } }, addSymbolToUpdates: function(updateClientId, instrumentId) { - console.warn("'addSymbolToUpdates' is now deprecated, 'addInstrumentIdToUpdates' should now be used instead."); + tradable.warn("'addSymbolToUpdates' is now deprecated, 'addInstrumentIdToUpdates' should now be used instead."); tradable.addInstrumentIdToUpdates(updateClientId, instrumentId); }, removeSymbolFromUpdates: function(updateClientId, instrumentIdToRemove) { - console.warn("'removeSymbolFromUpdates' is now deprecated, 'removeInstrumentIdFromUpdates' should now be used instead."); + tradable.warn("'removeSymbolFromUpdates' is now deprecated, 'removeInstrumentIdFromUpdates' should now be used instead."); tradable.removeInstrumentIdFromUpdates(updateClientId, instrumentIdToRemove); }, /** @@ -423,7 +425,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : */ getRemainingTokenMillis : function() { if(!tradable.expirationTimeUTC) { - console.log("You need to authenticate before calling this method"); + tradable.log("You need to authenticate before calling this method"); } return (tradable.expirationTimeUTC - new Date().getTime()); }, @@ -448,7 +450,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } else if(tradable.accountMap[accountId]) { endpoint = tradable.accountMap[accountId].endpointURL; } else { - console.warn("Please specify a valid accountId or method"); + tradable.warn("Please specify a valid accountId or method"); var wrongRequestDeferred = new $.Deferred().reject("Invalid request: Please specify a valid accountId or method"); return resolveDeferred(wrongRequestDeferred, resolve, reject); } @@ -474,11 +476,13 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : ajaxPromise.then(function(){}, function(jqXHR){ if(jqXHR.responseJSON) { - if(jqXHR.responseJSON.httpStatus === 403 || jqXHR.responseJSON.httpStatus === 502) { - if(!tradable.initializingAccount && tradable.isReLoginRequired(jqXHR)) { + if(!tradable.initializingAccount && (jqXHR.responseJSON.httpStatus === 403 || jqXHR.responseJSON.httpStatus === 502)) { + if(tradable.isReLoginRequired(jqXHR)) { notifyReloginRequiredCallbacks(); - } else if(!tradable.isReLoginRequired(jqXHR)) { + } else if(tradable.isTokenExpiredCode(jqXHR)) { notifyTokenExpired(); + } else if(!tradable.isReLoginRequired(jqXHR)) { + setTradingEnabled(false); } } if(!tradable.isReLoginRequired(jqXHR)) { @@ -504,7 +508,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : tradable.lastSnapshot = undefined; tradable.selectedAccount = tradable.accountMap[accountId]; tradable.selectedAccountId = accountId; - console.log('New accountId is set'); + tradable.log("Setting account: " + ((accountId && accountId.length) ? (accountId.substring(0, accountId.length/2)) : accountId) + ".."); tradable.initializingAccount = true; var deferred = $.Deferred(); initializeValuesForCurrentAccount(function() { @@ -518,7 +522,6 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : if(tradable.isReLoginRequired(err)) { tradable.reLogin().then(function () { tradable.setSelectedAccount(accountId).then(function () { - tradable.initializingAccount = false; setTradingEnabled(true); deferred.resolve(); }); @@ -531,12 +534,15 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : }); return resolveDeferred(deferred, resolve, reject); } else { - console.error("Can't set account id to: " + accountId); + tradable.error("Can't set account id to: " + accountId); } }, isReLoginRequired : function (err) { return (!!err && !!err.responseJSON && err.responseJSON.httpStatus === 403 && err.responseJSON.code === 1005); }, + isTokenExpiredCode: function (err) { + return (!!err && !!err.responseJSON && err.responseJSON.httpStatus === 403 && err.responseJSON.code === 1007); + }, excludeCurrentAccount : function() { var accountId = tradable.selectedAccountId; var index = tradable.accounts.indexOf(tradable.selectedAccount); @@ -574,7 +580,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : if(isInstrumentCached(instrumentId)) { return tradable.getInstrumentForProperty(tradable.availableInstruments, "instrumentId", instrumentId); } else { - console.warn("Instrument Id not found..."); + tradable.warn("Instrument Id not found..."); } return null; }, @@ -883,6 +889,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } tradable.allAccounts.push(account); }); + tradable.log("Accounts initialized"); }); return resolveDeferred(accountsPromise, resolve, reject); @@ -1431,7 +1438,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : * @deprecated [This method will eventually be removed, please use 'placeProtectedOrderForAccount'] */ placeOrderWithProtectionsForAccount : function (accountId, amount, price, side, instrumentId, type, tpDistance, slDistance, resolve, reject){ - console.warn("placeOrderWithProtections is deprecated and will eventually be removed, please use placeProtectedOrder or placeProtectedOrderForAccount instead."); + tradable.warn("placeOrderWithProtections is deprecated and will eventually be removed, please use placeProtectedOrder or placeProtectedOrderForAccount instead."); var order = {'amount': amount, 'price': price, 'side': side, 'instrumentId': instrumentId, 'type': type}; if(tpDistance) order["takeProfitDistance"] = tpDistance; @@ -2037,7 +2044,6 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : return tradable.makeAccountRequest("POST", accountId, "prices/", instrumentIdsObj, resolve, reject); } else { var deferred = new $.Deferred(); - var missingInstrumentIds = findMissingInstrumentIds(instrumentIds); var promise; @@ -2154,7 +2160,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : enableTrading : function(access_token, end_point, expires_in, set_latest_account){ var deferred = new $.Deferred(); - console.log("Enabling Trading..."); + tradable.log("Enabling Trading..."); notifyNamespaceCallbacks("embedStarting"); tradable.tradingEnabled = false; @@ -2173,6 +2179,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } }; + tradable.log("Starting v_"+tradable.version); initializeLibrary(); function initializeLibrary(){ @@ -2204,7 +2211,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } if(!success) { - console.log('Initiating without authentication...'); + tradable.log("Initiating without authentication..."); $(document).ready(function() { notifyReadyCallbacks(); }); @@ -2293,7 +2300,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : var oauthHost = "api.tradable.com/"; if(appId > 200000) { // Staging app-id oauthHost = "api-staging.tradable.com/"; - console.log("Starting in staging mode..."); + tradable.log("Starting in staging mode..."); } if(customOAuthHost) { oauthHost = customOAuthHost; @@ -2370,25 +2377,18 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } resetInstrumentCache(); - return getDefaultInstruments().then(function() { - console.log('Instruments ready'); + var deferred = new $.Deferred(); + getDefaultInstruments().then(function() { + tradable.log("Instruments ready"); if(reset) { tradable.tradingEnabled = true; notifyAccountSwitchCallbacks(); } - if(!!resolve && typeof resolve === "function") { - return resolve(tradable.accounts); - } else { - return this; - } - //return + deferred.resolve(tradable.accounts); }, function(error) { - if(!!reject && typeof reject === "function") { - return reject(error); - } else { - return this; - } + deferred.reject(error); }); + return resolveDeferred(deferred, resolve, reject); } @@ -2526,18 +2526,26 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } function excludeAndValidate(deferred, err) { + var accQty = tradable.accounts.length; tradable.excludeCurrentAccount(); + tradable.log("Account initialization failed.."); if(tradable.accounts.length > 0) { - validateToken(); + tradable.log("Resetting to previous account"); + setSelectedAccountAndNotify(false, accQty).then(function() { + tradable.initializingAccount = false; + }, function() { + tradable.initializingAccount = false; + }); } else { + tradable.log("No more accounts available, signing out.."); tradable.signOut(); + tradable.initializingAccount = false; } deferred.reject(err); - tradable.initializingAccount = false; } function validateToken() { - console.log("Validating token..."); + tradable.log("Validating token..."); // Check token validity tradable.getAccounts().then( function() { @@ -2549,10 +2557,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : ); } - function setSelectedAccountAndNotify(set_latest_account, account_qty) { - var deferred = new $.Deferred(); - - console.log('Accounts initialized'); + function getAccountIdToInitialize(set_latest_account, account_qty) { var accountId; var savedAccId = localStorage.getItem("selectedAccount:"+appId); var accIdxToSelect = tradable.accounts.length - 1; @@ -2563,12 +2568,17 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } else if(accIdxToSelect >= 0) { accountId = tradable.accounts[accIdxToSelect].uniqueId; } + return accountId; + } + + function setSelectedAccountAndNotify(set_latest_account, account_qty) { + var deferred = new $.Deferred(); + + var accountId = getAccountIdToInitialize(set_latest_account, account_qty); resetUpdates(); if(accountId) { tradable.setSelectedAccount(accountId, function() { - if(!tradable.tradingEnabled) { - setTradingEnabled(true); - } + setTradingEnabled(true); deferred.resolve(); }, function(error) { deferred.reject(error); @@ -2581,11 +2591,14 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } function setTradingEnabled(value) { - tradable.tradingEnabled = value; - if(isLocalStorageSupported()) { - localStorage.setItem("tradingEnabled:"+appId, tradable.tradingEnabled); + if(value !== tradable.tradingEnabled) { + tradable.tradingEnabled = value; + tradable.log("Embed ready: " + tradable.tradingEnabled); + if(isLocalStorageSupported()) { + localStorage.setItem("tradingEnabled:"+appId, tradable.tradingEnabled); + } + notifyReadyCallbacks(); } - notifyReadyCallbacks(); } // Notify events @@ -2602,6 +2615,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : function processAccountUpdate() { if(tradable.tradingEnabled && !tradable.initializingAccount && !processingUpdate && (accountUpdatedCallbacks.length > 0 || typeof callbackHolder["accountUpdated"] !== undefined)) { + var processingAccountId = tradable.selectedAccountId; processingUpdate = true; var instrumentIds = []; $(tradable.instrumentKeysForAccountUpdates).each(function(idx, elem) { @@ -2611,8 +2625,12 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } }); tradable.getSnapshot(instrumentIds).then(function(account) { - tradable.lastSnapshot = account; - return checkInstrumentsToCache(account); + if(processingAccountId === tradable.selectedAccountId) { + tradable.lastSnapshot = account; + return checkInstrumentsToCache(account); + } else { + return new $.Deferred().reject(); + } }).then(function(account) { if(tradable.tradingEnabled && !tradable.initializingAccount) { $.each(accountUpdatedCallbacks, function(idx, call) { @@ -2644,6 +2662,8 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : if(missingInstrumentIds.length) { tradable.getInstrumentsFromIds(missingInstrumentIds).then(function() { deferred.resolve(snapshot); + }, function (err) { + deferred.reject(err); }); } else { deferred.resolve(snapshot); @@ -2654,6 +2674,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } function notifyTokenExpired() { + tradable.log("Token expired"); setTradingEnabled(false); $(tokenExpirationCallbacks).each(function(index, callback) { executeCallback(callback); @@ -2669,6 +2690,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } function notifyAccountSwitchCallbacks() { + tradable.log("Account switched: " + tradable.selectedAccount.displayName); $(accountSwitchCallbacks).each(function(index, callback) { executeCallback(callback); }); @@ -2690,7 +2712,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } } } else { - console.error("Careful, can't notify '" + eventName + "', it's an invalid event name"); + tradable.error("Careful, can't notify '" + eventName + "', it's an invalid event name"); } } @@ -2701,7 +2723,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } callback(); } catch(err) { - console.error(err); + tradable.error(err); } } diff --git a/dist/tradable.min.js b/dist/tradable.min.js index d9812a8..86ccdcd 100644 --- a/dist/tradable.min.js +++ b/dist/tradable.min.js @@ -1,3 +1,3 @@ -/****** Copyright 2016 Tradable ApS; @license MIT; v1.20.4 ******/ -function isGreaterOrEqualMinVersion(e,t){return this.toNum=function(e){return parseInt(e,10)},this.highest=function(e,t){for(var n=e.split(".").map(this.toNum),o=t.split(".").map(this.toNum),r=0;ro[r]?e:t;return o.length>n.length?t:void 0},!("undefined"!=typeof highest(e,t)&&highest(e,t)===t)}"undefined"!=typeof console&&"undefined"!=typeof console.log||(console={log:function(){},warn:function(){}}),"undefined"==typeof jQuery?console.warn("tradable requires jQuery to run"):isGreaterOrEqualMinVersion(jQuery.fn.jquery,"2.1.4")||console.warn("tradable requires jQuery version 2.1.4 or above");var trEmbJQ=jQuery.noConflict(!0),jsGlobalObject="undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:this;!function(e,t){"use strict";function n(){function e(e,t){t.tradingEnabled=!1,u()&&localStorage.setItem("tradingEnabled:"+Q,!1);var n=o(e);return n.accessToken&&n.endPoint?(t.enableTrading(n.accessToken,n.endPoint,n.expiresIn),"osLaunch"===window.name&&window.close(),!0):!1}var n=!1,r=window.opener;if(r&&"osBrokerSignUp"===window.name)window.close();else if(r&&"osLaunch"===window.name){var i=window.location.hash;if(i){try{r.postMessage("replace your location","*"),n=e(i,r.tradable)}catch(c){n=!1}n||(n=e(i,ue))}}else window.location.hash&&-1!==window.location.hash.indexOf("access_token")&&-1!==window.location.hash.indexOf("endpointURL")&&-1!==window.location.hash.indexOf("expires_in")?n=e(window.location.hash,ue):ue.tradingEnabled&&(E(),n=!0);n||(console.log("Initiating without authentication..."),t(document).ready(function(){S()}))}function o(e){var n={accessToken:void 0,endPoint:void 0,expiresIn:void 0},o=e.replace("#","").split("&");return t(o).each(function(e,t){var o=t.split("="),r=o[0],i=o[1];"access_token"===r?n.accessToken=i:"endpointURL"===r?n.endPoint=i:"expires_in"===r&&(n.expiresIn=i)}),n}function r(){var n="undefined"!=typeof e.tradableEmbedConfig?e.tradableEmbedConfig:e.tradableConfig;if("undefined"==typeof n){var o=0!==t("#tradable-embed").length?"#tradable-embed":0!==t("#tradable").length?"#tradable":"#tradable-api";n={appId:t(o).attr("data-app-id"),appKey:t(o).attr("data-app-key"),redirectURI:t(o).attr("data-redirect-uri"),customOAuthURL:t(o).attr("data-custom-oauth-url"),customOAuthHost:t(o).attr("data-custom-oauth-host")}}return n}function i(){var e=tradableConfig.redirectURI?tradableConfig.redirectURI:location.href;return encodeURIComponent(e)}function c(e){var t={},n=tradableConfig.customOAuthURL,o=tradableConfig.customOAuthHost,r="api.tradable.com/";Q>2e5&&(r="api-staging.tradable.com/",console.log("Starting in staging mode...")),o&&(r=o);var i="https://"+r+"oauth/authorize?client_id="+Q+"&scope=trade&response_type=token&redirect_uri="+e,c=n?n:i;return t.oauthHost=r,t.oauthURL=c,t}function a(){var e={};return e.token=localStorage.getItem("accessToken:"+Q),e.authEndpoint=localStorage.getItem("authEndpoint:"+Q),e.tradingEnabled=localStorage.getItem("tradingEnabled:"+Q),e.expirationTimeUTC=localStorage.getItem("expirationTimeUTC:"+Q),!e.tradingEnabled||e.authEndpoint&&e.token&&e.expirationTimeUTC||(e.tradingEnabled=!1,u()&&localStorage.setItem("tradingEnabled:"+Q,e.tradingEnabled)),e}function u(){var e="test";try{return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch(t){return!1}}function s(e,t){var n=window.screenLeft?window.screenLeft:window.screenX,o=window.screenTop?window.screenTop:window.screenY,r=420,i=500,c=n+window.innerWidth/2-r/2,a=o+window.innerHeight/2-i/2;return window.open(e,t,"toolbar=no, titlebar=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width="+r+", height="+i+", top="+a+", left="+c)}function d(e){if("number"!=typeof e)return 0;var t=String(e).replace(",",".").split(".")[1];return t?t.length:0}function l(e,t){var n=!1;return ue.tradingEnabled&&(ue.tradingEnabled=!1,n=!0),v(),g().then(function(){return console.log("Instruments ready"),n&&(ue.tradingEnabled=!0,q()),e&&"function"==typeof e?e(ue.accounts):this},function(e){return t&&"function"==typeof t?t(e):this})}function f(e,t){return p(ue.selectedAccountId,e,t)}function p(e,t,n){return ue.makeAccountRequest("GET",e,"instruments/",null,t,n)}function h(){return"FULL_INSTRUMENT_LIST"===ue.selectedAccount.instrumentRetrieval}function m(e){var n=!0;return t(ue.accounts).each(function(t,o){o.uniqueId===e&&"FULL_INSTRUMENT_LIST"!==o.instrumentRetrieval&&(n=!1)}),n}function g(){var e=new t.Deferred;return h()?f().then(function(t){y(t),e.resolve(ue.availableInstruments)},function(t){e.reject(t)}):(le=[],ue.searchInstruments("EUR").then(function(e){return A(e),ue.searchInstruments("AUD")}).then(function(e){return A(e),ue.searchInstruments("USD")}).then(function(e){return A(e),ue.getPrices(le)}).then(function(){e.resolve(ue.availableInstruments)},function(t){e.reject(t)})),e}function A(e){var n=0;t(e).each(function(e,t){(6===t.symbol.length||7===t.symbol.length)&&16>n&&(le.push(t.instrumentId),n++)})}function v(){ue.availableCategories.splice(0,ue.availableCategories.length),ue.availableInstruments.splice(0,ue.availableInstruments.length),ue.availableSymbols.splice(0,ue.availableSymbols.length),ue.availableCurrencies.splice(0,ue.availableCurrencies.length),ue.instrumentKeysForAccountUpdates.splice(0,ue.instrumentKeysForAccountUpdates.length),fe={}}function I(e){return"undefined"!=typeof fe[e]}function y(e){function n(e){var n=["100","200","225","spx","h33","nas","u30","e50","f40","d30","e35","i40","z30","s30","uso","uko"];-1===t.inArray(e,ue.availableCurrencies)&&-1===t.inArray(e,n)&&ue.availableCurrencies.push(e)}t(e).each(function(e,o){if(!I(o.instrumentId)){ue.availableInstruments.push(o),ue.availableSymbols.push(o.symbol);var r=o.symbol.replace("/","");if(("FOREX"===o.type||"CFD"===o.type)&&6===r.length){var i=r.toLowerCase().substring(0,3),c=r.toLowerCase().substring(3,6);n(i),n(c)}-1===t.inArray(o.type,ue.availableCategories)&&ue.availableCategories.push(o.type),fe[o.instrumentId]=!0}})}function T(e){var n=[];return t(e).each(function(e,t){I(t)||n.push(t)}),n}function b(){ue.instrumentKeysForAccountUpdates.length&&ue.instrumentKeysForAccountUpdates.splice(0,ue.instrumentKeysForAccountUpdates.length)}function P(){ue.accountIdsToExclude.splice(0,ue.accountIdsToExclude.length)}function O(e,t){ue.excludeCurrentAccount(),ue.accounts.length>0?E():ue.signOut(),e.reject(t),ue.initializingAccount=!1}function E(){console.log("Validating token..."),ue.getAccounts().then(function(){ue.enableTrading(ue.accessToken,ue.authEndpoint)},function(){R(!1)})}function k(e,n){var o=new t.Deferred;console.log("Accounts initialized");var r,i=localStorage.getItem("selectedAccount:"+Q),c=ue.accounts.length-1;return e&&ue.accounts.length>n?r=ue.accounts[c].uniqueId:i&&ue.accountMap[i]?r=i:c>=0&&(r=ue.accounts[c].uniqueId),b(),r?ue.setSelectedAccount(r,function(){ue.tradingEnabled||R(!0),o.resolve()},function(e){o.reject(e)}):(ue.signOut(),o.reject()),o}function R(e){ue.tradingEnabled=e,u()&&localStorage.setItem("tradingEnabled:"+Q,ue.tradingEnabled),S()}function S(){t(ue.readyCallbacks).each(function(e,t){M(t)}),L("embedReady"),ue.notifiedCallbacks=!0}function w(){if(ue.tradingEnabled&&!ue.initializingAccount&&!pe&&(oe.length>0||void 0!==typeof te.accountUpdated)){pe=!0;var e=[];t(ue.instrumentKeysForAccountUpdates).each(function(n,o){var r=o.substring(0,o.indexOf(":"));-1===t.inArray(r,e)&&e.push(r)}),ue.getSnapshot(e).then(function(e){return ue.lastSnapshot=e,U(e)}).then(function(e){ue.tradingEnabled&&!ue.initializingAccount&&(t.each(oe,function(t,n){M(n,e)}),L("accountUpdated",e)),pe=!1},function(){pe=!1})}}function U(e){var n=new t.Deferred;if(h())n.resolve(e);else{var o=[],r=function(e,t){I(t.instrumentId)||o.push(t.instrumentId)};t(e.positions.open).each(r),t(e.orders.pending).each(r),o.length?ue.getInstrumentsFromIds(o).then(function(){n.resolve(e)}):n.resolve(e)}return n}function F(){R(!1),t(ie).each(function(e,t){M(t)}),L("tokenExpired")}function C(e){t(ae).each(function(t,n){M(n,e)}),L("error",e)}function q(){t(ne).each(function(e,t){M(t)}),L("accountSwitch")}function x(){R(!1),L("reLoginRequired")}function L(e,t){if(ue.isEventValid(e)){if(void 0!==typeof te[e])for(var n in te[e])te[e].hasOwnProperty(n)&&M(te[e][n],t)}else console.error("Careful, can't notify '"+e+"', it's an invalid event name")}function M(e,t){try{if(t)return e(t);e()}catch(n){console.error(n)}}function _(e){ue.selectedAccount.uniqueId!==se&&(D(),se=ue.selectedAccount.uniqueId),de||(de=new N,de.orders=K(e.orders.pending,"orders",!0),de.cancelledOrders=K(e.orders.recentlyCancelled,"cancelledOrders",!0),de.positions=K(e.positions.open,"positions",!0),de.closedPositions=K(e.positions.recentlyClosed,"closedPositions",!0));var t=new N(K(e.orders.pending,"orders"),K(e.orders.recentlyCancelled,"cancelledOrders"),K(e.positions.open,"positions"),K(e.positions.recentlyClosed,"closedPositions"));return t.getTotal()>0&&L("execution",t),t}function D(){de=void 0}function N(e,t,n,o){this.orders=e?e:[],this.cancelledOrders=t?t:[],this.positions=n?n:[],this.closedPositions=o?o:[],this.getTotal=function(){return this.orders.length+this.cancelledOrders.length+this.positions.length+this.closedPositions.length}}function K(e,n,o){for(var r=[],i=0;i-1&&(r=!0)}),r}function G(e,n){return t.grep(n,function(t){return t.indexOf(e)<0})}function W(e){return e.id+(e.type?"":0!==e.amount?e.side+e.amount:e.lastModified)}function z(e,t,n){return t||n?e.then(function(e){return"function"==typeof t?t(e):void 0},function(e,t,o){return"function"==typeof n?n(e,t,o):void 0}):e.promise()}function B(){var e=new t.Deferred;if(ue.selectedAccount.brokerId<0&&1===ue.allAccounts.length)return e.resolve(),e;var n={tokenValue:ue.accessToken};return ue.makeOsRequest("internal","POST","","signOut",n).then(function(){e.resolve()},function(){e.reject()}),e}function V(e){var t,n,o=0;if(0===e.length)return o;for(t=0;t0&&"number"==typeof e))throw"Please specify a valid update frequency";ue.accountUpdateMillis=e,ue.accountUpdateInterval&&(clearInterval(ue.accountUpdateInterval),ue.accountUpdateInterval=setInterval(w,ue.accountUpdateMillis))},addSymbolToUpdates:function(e,t){console.warn("'addSymbolToUpdates' is now deprecated, 'addInstrumentIdToUpdates' should now be used instead."),ue.addInstrumentIdToUpdates(e,t)},removeSymbolFromUpdates:function(e,t){console.warn("'removeSymbolFromUpdates' is now deprecated, 'removeInstrumentIdFromUpdates' should now be used instead."),ue.removeInstrumentIdFromUpdates(e,t)},addInstrumentIdToUpdates:function(e,n){if(-1!==e.indexOf(":"))throw"It is not allowed to include a colon ':' in the updateClientId";var o=n+":"+e;-1===t.inArray(o,ue.instrumentKeysForAccountUpdates)&&ue.instrumentKeysForAccountUpdates.push(o)},removeInstrumentIdFromUpdates:function(e,n){var o=n+":"+e;ue.instrumentKeysForAccountUpdates=t.grep(ue.instrumentKeysForAccountUpdates,function(e){return e!==o})},onAccountSwitch:function(e){ue.saveCallback(e,ne)},onTokenExpired:function(e){ue.saveCallback(e,ie)},onError:function(e){ue.saveCallback(e,ae)},saveCallback:function(e,n){e&&-1===t.inArray(e,n)&&n.push(e)},tokenWillExpireInterval:null,initTokenWillExpire:function(){function e(){var e=ue.getRemainingTokenMillis();e&&e>0&&18e5>e&&(t(ce).each(function(t,n){n(e)}),L("tokenWillExpire",e))}null===ue.tokenWillExpireInterval&&(ue.tokenWillExpireInterval=setInterval(e,3e5))},onTokenWillExpire:function(e){ue.initTokenWillExpire(),-1===t.inArray(e,ce)&&ce.push(e)},getRemainingTokenMillis:function(){return ue.expirationTimeUTC||console.log("You need to authenticate before calling this method"),ue.expirationTimeUTC-(new Date).getTime()},listeningToExecutions:!1,initExecutions:function(){ue.listeningToExecutions||(ue.on("internalExecutionsListener","accountUpdated",_),ue.listeningToExecutions=!0)},stopExecutions:function(){ue.off("internalExecutionsListener","accountUpdated"),ue.listeningToExecutions=!1},makeOsRequest:function(e,n,o,r,i,c,a){var u,s="internal"===e?"":"v1/";if("user"!==e&&"accounts"!==e)u="https://"+ue.oauth_host;else if(void 0!==o&&null!==o&&0===o.length)u=ue.authEndpoint;else{if(!ue.accountMap[o]){console.warn("Please specify a valid accountId or method");var d=(new t.Deferred).reject("Invalid request: Please specify a valid accountId or method");return z(d,c,a)}u=ue.accountMap[o].endpointURL}var l=t.ajax({type:n,beforeSend:function(t){"internal"!==e&&t.setRequestHeader("Authorization","Bearer "+ue.accessToken),t.setRequestHeader("x-tr-embed-sdk","js-"+ue.version)},crossDomain:!0,xhrFields:{withCredentials:!0},url:o&&o.length>0?u+s+e+"/"+o+"/"+r:u+s+e+"/"+r,contentType:"application/json; charset=utf-8",data:i?JSON.stringify(i):void 0,dataType:"json"});return l.then(function(){},function(e){e.responseJSON&&(403!==e.responseJSON.httpStatus&&502!==e.responseJSON.httpStatus||(!ue.initializingAccount&&ue.isReLoginRequired(e)?x():ue.isReLoginRequired(e)||F()),ue.isReLoginRequired(e)||C(e.responseJSON))}),z(l,c,a)},makeAccountRequest:function(e,t,n,o,r,i){return ue.makeOsRequest("accounts",e,t,n,o,r,i)},initializingAccount:!1,setSelectedAccount:function(e,n,o){if(ue.accountMap[e]){ue.lastSnapshot=void 0,ue.selectedAccount=ue.accountMap[e],ue.selectedAccountId=e,console.log("New accountId is set"),ue.initializingAccount=!0;var r=t.Deferred();return l(function(){u()&&localStorage.setItem("selectedAccount:"+Q,e),ue.initializingAccount=!1,r.resolve()},function(t){ue.isReLoginRequired(t)?ue.reLogin().then(function(){ue.setSelectedAccount(e).then(function(){ue.initializingAccount=!1,R(!0),r.resolve()})},function(){O(r,t)}):O(r,t)}),z(r,n,o)}console.error("Can't set account id to: "+e)},isReLoginRequired:function(e){return!!e&&!!e.responseJSON&&403===e.responseJSON.httpStatus&&1005===e.responseJSON.code},excludeCurrentAccount:function(){var e=ue.selectedAccountId,t=ue.accounts.indexOf(ue.selectedAccount);t>-1&&(ue.accounts.splice(t,1),delete ue.accountMap[e],ue.accountIdsToExclude.push(e))},getInstrumentFromSymbol:function(e){return e?ue.getInstrumentForProperty(ue.availableInstruments,"symbol",e):null},getInstrumentFromId:function(e){return e&&ue.tradingEnabled?I(e)?ue.getInstrumentForProperty(ue.availableInstruments,"instrumentId",e):(console.warn("Instrument Id not found..."),null):null},getInstrumentFromBrokerageAccountSymbol:function(e){return ue.getInstrumentForProperty(ue.availableInstruments,"brokerageAccountSymbol",e)},getInstrumentForProperty:function(e,n,o){var r=null;return t(e).each(function(e,t){return t[n].toUpperCase()===o.toUpperCase()?(r=t,!1):void 0}),r},calculatePipSize:function(e){var t=ue.getInstrumentFromId(e);if(!t)throw"Instrument not found for the given instrumentId: "+e;var n=t.pipPrecision;return n>0?1/Math.pow(10,n):1},calculatePipDistance:function(e,t,n){var o=ue.getInstrumentFromId(e);if(!o)throw"Instrument not found for the given instrumentId: "+e;var r=o.pipPrecision?o.pipPrecision:0,i=(n-t)*Math.pow(10,r);return Math.round(10*i)/10},calculateExpectedProfitOrLoss:function(e,t,n){return Math.round(e*t*n*100)/100},calculatePositionSizeForRiskPercentage:function(e,t,n,o,r){return ue.calculatePositionSize(e,t,!1,n,o,r)},calculatePositionSizeForRiskAmount:function(e,t,n,o,r){return ue.calculatePositionSize(e,t,!0,n,o,r)},calculatePositionSize:function(e,t,n,o,r,i){var c=i;if(!c&&ue.lastSnapshot)c=ue.lastSnapshot.metrics.equity;else if(!i)throw"Please provide the equity or subscribe to account updates before calling calculatePositionSizeForAccount.";if(!n&&t>100)throw"Please provide a valid risk value: riskIsMoney is false but the provided risk is not a percentage..";var a=n?t:c*t/100,u=a/o/r,s=ue.getInstrumentFromId(e);if(s.multipleOfMinAmount)u=Math.floor(u/s.minAmount)*s.minAmount;else{var l=d(s.minAmount),f=Math.pow(10,l);u=Math.floor(u*f)/f}return u},getAccountById:function(e){return ue.accountMap[e]},getUser:function(e,t){return ue.makeOsRequest("user","GET","","",null,e,t)},getAppInfo:function(e,t){return ue.makeOsRequest("apps","GET","",ue.app_id,null,e,t)},getBrokers:function(e,t){return ue.makeOsRequest("brokers","GET","","",null,e,t)},APP_KEY_MISSING:"Please specify your 'appKey' in the tradable config object or the 'data-app-key' attribute in the tradable core script tag.",authenticateWithCredentials:function(e,n,o,r,i,c){var a=new t.Deferred;"function"==typeof r&&("function"==typeof i&&(c=i),i=r),P();var u={appId:ue.app_id,brokerId:e,login:n,password:o};if(!ue.app_key)throw ue.APP_KEY_MISSING;return u.appKey=ue.app_key,"string"==typeof r?u.externalId=r:"undefined"!=typeof ue.external_id&&(u.externalId=ue.external_id),ue.makeAuthenticationRequest(a,"authenticate",u),z(a,i,c)},createDemoAccount:function(e,n,o){var r=new t.Deferred,i={appId:ue.app_id,type:e};if(!ue.app_key)throw ue.APP_KEY_MISSING;return i.appKey=ue.app_key,ue.makeAuthenticationRequest(r,"createDemoAccount",i),z(r,n,o)},makeAuthenticationRequest:function(e,t,n){var o;return ue.makeOsRequest(t,"POST","","",n).then(function(e){return o=e,ue.enableTrading(e.apiTokenValue,e.apiEndpoint,e.expires)}).then(function(){e.resolve(o)},function(t){e.reject(t)})},createForexDemoAccount:function(e,t){return ue.createDemoAccount("FOREX",e,t)},createStocksDemoAccount:function(e,t){return ue.createDemoAccount("STOCKS",e,t)},refreshAuthentication:function(e,n,o,r){var i=new t.Deferred,c={refreshTokenValue:e};return n&&(c={refreshTokenValue:e,appSecret:n}),ue.makeAuthenticationRequest(i,"refreshAuthentication",c),z(i,o,r)},getAccounts:function(e,n){var o=ue.makeAccountRequest("GET","","",null).then(function(e){ue.accounts.splice(0,ue.accounts.length),ue.allAccounts.splice(0,ue.allAccounts.length),ue.accountMap={},t(e.accounts).each(function(e,t){t.uniqueId&&"NA"!==t.uniqueId&&ue.accountIdsToExclude.indexOf(t.uniqueId)<=-1&&(ue.accounts.push(t),ue.accountMap[t.uniqueId]=t),ue.allAccounts.push(t)})});return z(o,e,n)},getCandles:function(e,t,n,o,r,i){return ue.getCandlesForAccount(ue.selectedAccountId,e,t,n,o,r,i)},getCandlesForAccount:function(e,t,n,o,r,i,c){var a={instrumentId:t,from:n,to:o,aggregation:r};return ue.makeAccountRequest("POST",e,"candles/",a,i,c)},subscribedCandleId:void 0,lastReceivedCandle:void 0,startCandleUpdates:function(e,n,o,r){function i(){ue.on("internalCandleUpdates","accountUpdated",function(n){var o=a(e,n.prices);if(ue.lastReceivedCandle&&o&&o.bid){var i=JSON.stringify(t.extend({},ue.lastReceivedCandle));if(c(o,u),i!==JSON.stringify(ue.lastReceivedCandle)){var s=[];return s.push(ue.lastReceivedCandle),r(s)}}})}function c(e,t){var n=e.bid;if(Date.now()-ue.lastReceivedCandle.timestamp>=t){ue.lastReceivedCandle.timestamp=ue.lastReceivedCandle.timestamp+t;var o=ue.lastReceivedCandle.close;ue.lastReceivedCandle.open=o,ue.lastReceivedCandle.high=o,ue.lastReceivedCandle.low=o}ue.lastReceivedCandle.close=n,n>ue.lastReceivedCandle.high&&(ue.lastReceivedCandle.high=n),no[r]?e:t;return o.length>n.length?t:void 0},!("undefined"!=typeof highest(e,t)&&highest(e,t)===t)}"undefined"!=typeof console&&"function"==typeof console.log&&"function"==typeof console.warn&&"function"==typeof console.error||(console={log:function(){},warn:function(){},error:function(){}}),"undefined"==typeof jQuery?console.warn("tradable requires jQuery to run"):isGreaterOrEqualMinVersion(jQuery.fn.jquery,"2.1.4")||console.warn("tradable requires jQuery version 2.1.4 or above");var trEmbJQ=jQuery.noConflict(!0),jsGlobalObject="undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:this;!function(e,t){"use strict";function n(){function e(e,t){t.tradingEnabled=!1,u()&&localStorage.setItem("tradingEnabled:"+Y,!1);var n=o(e);return n.accessToken&&n.endPoint?(t.enableTrading(n.accessToken,n.endPoint,n.expiresIn),"osLaunch"===window.name&&window.close(),!0):!1}var n=!1,r=window.opener;if(r&&"osBrokerSignUp"===window.name)window.close();else if(r&&"osLaunch"===window.name){var i=window.location.hash;if(i){try{r.postMessage("replace your location","*"),n=e(i,r.tradable)}catch(c){n=!1}n||(n=e(i,se))}}else window.location.hash&&-1!==window.location.hash.indexOf("access_token")&&-1!==window.location.hash.indexOf("endpointURL")&&-1!==window.location.hash.indexOf("expires_in")?n=e(window.location.hash,se):se.tradingEnabled&&(E(),n=!0);n||(se.log("Initiating without authentication..."),t(document).ready(function(){w()}))}function o(e){var n={accessToken:void 0,endPoint:void 0,expiresIn:void 0},o=e.replace("#","").split("&");return t(o).each(function(e,t){var o=t.split("="),r=o[0],i=o[1];"access_token"===r?n.accessToken=i:"endpointURL"===r?n.endPoint=i:"expires_in"===r&&(n.expiresIn=i)}),n}function r(){var n="undefined"!=typeof e.tradableEmbedConfig?e.tradableEmbedConfig:e.tradableConfig;if("undefined"==typeof n){var o=0!==t("#tradable-embed").length?"#tradable-embed":0!==t("#tradable").length?"#tradable":"#tradable-api";n={appId:t(o).attr("data-app-id"),appKey:t(o).attr("data-app-key"),redirectURI:t(o).attr("data-redirect-uri"),customOAuthURL:t(o).attr("data-custom-oauth-url"),customOAuthHost:t(o).attr("data-custom-oauth-host")}}return n}function i(){var e=tradableConfig.redirectURI?tradableConfig.redirectURI:location.href;return encodeURIComponent(e)}function c(e){var t={},n=tradableConfig.customOAuthURL,o=tradableConfig.customOAuthHost,r="api.tradable.com/";Y>2e5&&(r="api-staging.tradable.com/",se.log("Starting in staging mode...")),o&&(r=o);var i="https://"+r+"oauth/authorize?client_id="+Y+"&scope=trade&response_type=token&redirect_uri="+e,c=n?n:i;return t.oauthHost=r,t.oauthURL=c,t}function a(){var e={};return e.token=localStorage.getItem("accessToken:"+Y),e.authEndpoint=localStorage.getItem("authEndpoint:"+Y),e.tradingEnabled=localStorage.getItem("tradingEnabled:"+Y),e.expirationTimeUTC=localStorage.getItem("expirationTimeUTC:"+Y),!e.tradingEnabled||e.authEndpoint&&e.token&&e.expirationTimeUTC||(e.tradingEnabled=!1,u()&&localStorage.setItem("tradingEnabled:"+Y,e.tradingEnabled)),e}function u(){var e="test";try{return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch(t){return!1}}function s(e,t){var n=window.screenLeft?window.screenLeft:window.screenX,o=window.screenTop?window.screenTop:window.screenY,r=420,i=500,c=n+window.innerWidth/2-r/2,a=o+window.innerHeight/2-i/2;return window.open(e,t,"toolbar=no, titlebar=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width="+r+", height="+i+", top="+a+", left="+c)}function d(e){if("number"!=typeof e)return 0;var t=String(e).replace(",",".").split(".")[1];return t?t.length:0}function l(e,n){var o=!1;se.tradingEnabled&&(se.tradingEnabled=!1,o=!0),v();var r=new t.Deferred;return m().then(function(){se.log("Instruments ready"),o&&(se.tradingEnabled=!0,x()),r.resolve(se.accounts)},function(e){r.reject(e)}),B(r,e,n)}function f(e,t){return p(se.selectedAccountId,e,t)}function p(e,t,n){return se.makeAccountRequest("GET",e,"instruments/",null,t,n)}function h(){return"FULL_INSTRUMENT_LIST"===se.selectedAccount.instrumentRetrieval}function g(e){var n=!0;return t(se.accounts).each(function(t,o){o.uniqueId===e&&"FULL_INSTRUMENT_LIST"!==o.instrumentRetrieval&&(n=!1)}),n}function m(){var e=new t.Deferred;return h()?f().then(function(t){y(t),e.resolve(se.availableInstruments)},function(t){e.reject(t)}):(fe=[],se.searchInstruments("EUR").then(function(e){return A(e),se.searchInstruments("AUD")}).then(function(e){return A(e),se.searchInstruments("USD")}).then(function(e){return A(e),se.getPrices(fe)}).then(function(){e.resolve(se.availableInstruments)},function(t){e.reject(t)})),e}function A(e){var n=0;t(e).each(function(e,t){(6===t.symbol.length||7===t.symbol.length)&&16>n&&(fe.push(t.instrumentId),n++)})}function v(){se.availableCategories.splice(0,se.availableCategories.length),se.availableInstruments.splice(0,se.availableInstruments.length),se.availableSymbols.splice(0,se.availableSymbols.length),se.availableCurrencies.splice(0,se.availableCurrencies.length),se.instrumentKeysForAccountUpdates.splice(0,se.instrumentKeysForAccountUpdates.length),pe={}}function I(e){return"undefined"!=typeof pe[e]}function y(e){function n(e){var n=["100","200","225","spx","h33","nas","u30","e50","f40","d30","e35","i40","z30","s30","uso","uko"];-1===t.inArray(e,se.availableCurrencies)&&-1===t.inArray(e,n)&&se.availableCurrencies.push(e)}t(e).each(function(e,o){if(!I(o.instrumentId)){se.availableInstruments.push(o),se.availableSymbols.push(o.symbol);var r=o.symbol.replace("/","");if(("FOREX"===o.type||"CFD"===o.type)&&6===r.length){var i=r.toLowerCase().substring(0,3),c=r.toLowerCase().substring(3,6);n(i),n(c)}-1===t.inArray(o.type,se.availableCategories)&&se.availableCategories.push(o.type),pe[o.instrumentId]=!0}})}function T(e){var n=[];return t(e).each(function(e,t){I(t)||n.push(t)}),n}function b(){se.instrumentKeysForAccountUpdates.length&&se.instrumentKeysForAccountUpdates.splice(0,se.instrumentKeysForAccountUpdates.length)}function O(){se.accountIdsToExclude.splice(0,se.accountIdsToExclude.length)}function P(e,t){var n=se.accounts.length;se.excludeCurrentAccount(),se.log("Account initialization failed.."),se.accounts.length>0?(se.log("Resetting to previous account"),R(!1,n).then(function(){se.initializingAccount=!1},function(){se.initializingAccount=!1})):(se.log("No more accounts available, signing out.."),se.signOut(),se.initializingAccount=!1),e.reject(t)}function E(){se.log("Validating token..."),se.getAccounts().then(function(){se.enableTrading(se.accessToken,se.authEndpoint)},function(){S(!1)})}function k(e,t){var n,o=localStorage.getItem("selectedAccount:"+Y),r=se.accounts.length-1;return e&&se.accounts.length>t?n=se.accounts[r].uniqueId:o&&se.accountMap[o]?n=o:r>=0&&(n=se.accounts[r].uniqueId),n}function R(e,n){var o=new t.Deferred,r=k(e,n);return b(),r?se.setSelectedAccount(r,function(){S(!0),o.resolve()},function(e){o.reject(e)}):(se.signOut(),o.reject()),o}function S(e){e!==se.tradingEnabled&&(se.tradingEnabled=e,se.log("Embed ready: "+se.tradingEnabled),u()&&localStorage.setItem("tradingEnabled:"+Y,se.tradingEnabled),w())}function w(){t(se.readyCallbacks).each(function(e,t){_(t)}),M("embedReady"),se.notifiedCallbacks=!0}function U(){if(se.tradingEnabled&&!se.initializingAccount&&!he&&(re.length>0||void 0!==typeof ne.accountUpdated)){var e=se.selectedAccountId;he=!0;var n=[];t(se.instrumentKeysForAccountUpdates).each(function(e,o){var r=o.substring(0,o.indexOf(":"));-1===t.inArray(r,n)&&n.push(r)}),se.getSnapshot(n).then(function(n){return e===se.selectedAccountId?(se.lastSnapshot=n,F(n)):(new t.Deferred).reject()}).then(function(e){se.tradingEnabled&&!se.initializingAccount&&(t.each(re,function(t,n){_(n,e)}),M("accountUpdated",e)),he=!1},function(){he=!1})}}function F(e){var n=new t.Deferred;if(h())n.resolve(e);else{var o=[],r=function(e,t){I(t.instrumentId)||o.push(t.instrumentId)};t(e.positions.open).each(r),t(e.orders.pending).each(r),o.length?se.getInstrumentsFromIds(o).then(function(){n.resolve(e)},function(e){n.reject(e)}):n.resolve(e)}return n}function C(){se.log("Token expired"),S(!1),t(ce).each(function(e,t){_(t)}),M("tokenExpired")}function q(e){t(ue).each(function(t,n){_(n,e)}),M("error",e)}function x(){se.log("Account switched: "+se.selectedAccount.displayName),t(oe).each(function(e,t){_(t)}),M("accountSwitch")}function L(){S(!1),M("reLoginRequired")}function M(e,t){if(se.isEventValid(e)){if(void 0!==typeof ne[e])for(var n in ne[e])ne[e].hasOwnProperty(n)&&_(ne[e][n],t)}else se.error("Careful, can't notify '"+e+"', it's an invalid event name")}function _(e,t){try{if(t)return e(t);e()}catch(n){se.error(n)}}function D(e){se.selectedAccount.uniqueId!==de&&(N(),de=se.selectedAccount.uniqueId),le||(le=new j,le.orders=K(e.orders.pending,"orders",!0),le.cancelledOrders=K(e.orders.recentlyCancelled,"cancelledOrders",!0),le.positions=K(e.positions.open,"positions",!0),le.closedPositions=K(e.positions.recentlyClosed,"closedPositions",!0));var t=new j(K(e.orders.pending,"orders"),K(e.orders.recentlyCancelled,"cancelledOrders"),K(e.positions.open,"positions"),K(e.positions.recentlyClosed,"closedPositions"));return t.getTotal()>0&&M("execution",t),t}function N(){le=void 0}function j(e,t,n,o){this.orders=e?e:[],this.cancelledOrders=t?t:[],this.positions=n?n:[],this.closedPositions=o?o:[],this.getTotal=function(){return this.orders.length+this.cancelledOrders.length+this.positions.length+this.closedPositions.length}}function K(e,n,o){for(var r=[],i=0;i-1&&(r=!0)}),r}function z(e,n){return t.grep(n,function(t){return t.indexOf(e)<0})}function W(e){return e.id+(e.type?"":0!==e.amount?e.side+e.amount:e.lastModified)}function B(e,t,n){return t||n?e.then(function(e){return"function"==typeof t?t(e):void 0},function(e,t,o){return"function"==typeof n?n(e,t,o):void 0}):e.promise()}function J(){var e=new t.Deferred;if(se.selectedAccount.brokerId<0&&1===se.allAccounts.length)return e.resolve(),e;var n={tokenValue:se.accessToken};return se.makeOsRequest("internal","POST","","signOut",n).then(function(){e.resolve()},function(){e.reject()}),e}function V(e){var t,n,o=0;if(0===e.length)return o;for(t=0;t0&&"number"==typeof e))throw"Please specify a valid update frequency";se.accountUpdateMillis=e,se.accountUpdateInterval&&(clearInterval(se.accountUpdateInterval),se.accountUpdateInterval=setInterval(U,se.accountUpdateMillis))},addSymbolToUpdates:function(e,t){se.warn("'addSymbolToUpdates' is now deprecated, 'addInstrumentIdToUpdates' should now be used instead."),se.addInstrumentIdToUpdates(e,t)},removeSymbolFromUpdates:function(e,t){se.warn("'removeSymbolFromUpdates' is now deprecated, 'removeInstrumentIdFromUpdates' should now be used instead."),se.removeInstrumentIdFromUpdates(e,t)},addInstrumentIdToUpdates:function(e,n){if(-1!==e.indexOf(":"))throw"It is not allowed to include a colon ':' in the updateClientId";var o=n+":"+e;-1===t.inArray(o,se.instrumentKeysForAccountUpdates)&&se.instrumentKeysForAccountUpdates.push(o)},removeInstrumentIdFromUpdates:function(e,n){var o=n+":"+e;se.instrumentKeysForAccountUpdates=t.grep(se.instrumentKeysForAccountUpdates,function(e){return e!==o})},onAccountSwitch:function(e){se.saveCallback(e,oe)},onTokenExpired:function(e){se.saveCallback(e,ce)},onError:function(e){se.saveCallback(e,ue)},saveCallback:function(e,n){e&&-1===t.inArray(e,n)&&n.push(e)},tokenWillExpireInterval:null,initTokenWillExpire:function(){function e(){var e=se.getRemainingTokenMillis();e&&e>0&&18e5>e&&(t(ae).each(function(t,n){n(e)}),M("tokenWillExpire",e))}null===se.tokenWillExpireInterval&&(se.tokenWillExpireInterval=setInterval(e,3e5))},onTokenWillExpire:function(e){se.initTokenWillExpire(),-1===t.inArray(e,ae)&&ae.push(e)},getRemainingTokenMillis:function(){return se.expirationTimeUTC||se.log("You need to authenticate before calling this method"),se.expirationTimeUTC-(new Date).getTime()},listeningToExecutions:!1,initExecutions:function(){se.listeningToExecutions||(se.on("internalExecutionsListener","accountUpdated",D),se.listeningToExecutions=!0)},stopExecutions:function(){se.off("internalExecutionsListener","accountUpdated"),se.listeningToExecutions=!1},makeOsRequest:function(e,n,o,r,i,c,a){var u,s="internal"===e?"":"v1/";if("user"!==e&&"accounts"!==e)u="https://"+se.oauth_host;else if(void 0!==o&&null!==o&&0===o.length)u=se.authEndpoint;else{if(!se.accountMap[o]){se.warn("Please specify a valid accountId or method");var d=(new t.Deferred).reject("Invalid request: Please specify a valid accountId or method");return B(d,c,a)}u=se.accountMap[o].endpointURL}var l=t.ajax({type:n,beforeSend:function(t){"internal"!==e&&t.setRequestHeader("Authorization","Bearer "+se.accessToken),t.setRequestHeader("x-tr-embed-sdk","js-"+se.version)},crossDomain:!0,xhrFields:{withCredentials:!0},url:o&&o.length>0?u+s+e+"/"+o+"/"+r:u+s+e+"/"+r,contentType:"application/json; charset=utf-8",data:i?JSON.stringify(i):void 0,dataType:"json"});return l.then(function(){},function(e){e.responseJSON&&(se.initializingAccount||403!==e.responseJSON.httpStatus&&502!==e.responseJSON.httpStatus||(se.isReLoginRequired(e)?L():se.isTokenExpiredCode(e)?C():se.isReLoginRequired(e)||S(!1)),se.isReLoginRequired(e)||q(e.responseJSON))}),B(l,c,a)},makeAccountRequest:function(e,t,n,o,r,i){return se.makeOsRequest("accounts",e,t,n,o,r,i)},initializingAccount:!1,setSelectedAccount:function(e,n,o){if(se.accountMap[e]){se.lastSnapshot=void 0,se.selectedAccount=se.accountMap[e],se.selectedAccountId=e,se.log("Setting account: "+(e&&e.length?e.substring(0,e.length/2):e)+".."),se.initializingAccount=!0;var r=t.Deferred();return l(function(){u()&&localStorage.setItem("selectedAccount:"+Y,e),se.initializingAccount=!1,r.resolve()},function(t){se.isReLoginRequired(t)?se.reLogin().then(function(){se.setSelectedAccount(e).then(function(){S(!0),r.resolve()})},function(){P(r,t)}):P(r,t)}),B(r,n,o)}se.error("Can't set account id to: "+e)},isReLoginRequired:function(e){return!!e&&!!e.responseJSON&&403===e.responseJSON.httpStatus&&1005===e.responseJSON.code},isTokenExpiredCode:function(e){return!!e&&!!e.responseJSON&&403===e.responseJSON.httpStatus&&1007===e.responseJSON.code},excludeCurrentAccount:function(){var e=se.selectedAccountId,t=se.accounts.indexOf(se.selectedAccount);t>-1&&(se.accounts.splice(t,1),delete se.accountMap[e],se.accountIdsToExclude.push(e))},getInstrumentFromSymbol:function(e){return e?se.getInstrumentForProperty(se.availableInstruments,"symbol",e):null},getInstrumentFromId:function(e){return e&&se.tradingEnabled?I(e)?se.getInstrumentForProperty(se.availableInstruments,"instrumentId",e):(se.warn("Instrument Id not found..."),null):null},getInstrumentFromBrokerageAccountSymbol:function(e){return se.getInstrumentForProperty(se.availableInstruments,"brokerageAccountSymbol",e)},getInstrumentForProperty:function(e,n,o){var r=null;return t(e).each(function(e,t){return t[n].toUpperCase()===o.toUpperCase()?(r=t,!1):void 0}),r},calculatePipSize:function(e){var t=se.getInstrumentFromId(e);if(!t)throw"Instrument not found for the given instrumentId: "+e;var n=t.pipPrecision;return n>0?1/Math.pow(10,n):1},calculatePipDistance:function(e,t,n){var o=se.getInstrumentFromId(e);if(!o)throw"Instrument not found for the given instrumentId: "+e;var r=o.pipPrecision?o.pipPrecision:0,i=(n-t)*Math.pow(10,r);return Math.round(10*i)/10},calculateExpectedProfitOrLoss:function(e,t,n){return Math.round(e*t*n*100)/100},calculatePositionSizeForRiskPercentage:function(e,t,n,o,r){return se.calculatePositionSize(e,t,!1,n,o,r)},calculatePositionSizeForRiskAmount:function(e,t,n,o,r){return se.calculatePositionSize(e,t,!0,n,o,r)},calculatePositionSize:function(e,t,n,o,r,i){var c=i;if(!c&&se.lastSnapshot)c=se.lastSnapshot.metrics.equity;else if(!i)throw"Please provide the equity or subscribe to account updates before calling calculatePositionSizeForAccount.";if(!n&&t>100)throw"Please provide a valid risk value: riskIsMoney is false but the provided risk is not a percentage..";var a=n?t:c*t/100,u=a/o/r,s=se.getInstrumentFromId(e);if(s.multipleOfMinAmount)u=Math.floor(u/s.minAmount)*s.minAmount;else{var l=d(s.minAmount),f=Math.pow(10,l);u=Math.floor(u*f)/f}return u},getAccountById:function(e){return se.accountMap[e]},getUser:function(e,t){return se.makeOsRequest("user","GET","","",null,e,t)},getAppInfo:function(e,t){return se.makeOsRequest("apps","GET","",se.app_id,null,e,t)},getBrokers:function(e,t){return se.makeOsRequest("brokers","GET","","",null,e,t)},APP_KEY_MISSING:"Please specify your 'appKey' in the tradable config object or the 'data-app-key' attribute in the tradable core script tag.",authenticateWithCredentials:function(e,n,o,r,i,c){var a=new t.Deferred;"function"==typeof r&&("function"==typeof i&&(c=i),i=r),O();var u={appId:se.app_id,brokerId:e,login:n,password:o};if(!se.app_key)throw se.APP_KEY_MISSING;return u.appKey=se.app_key,"string"==typeof r?u.externalId=r:"undefined"!=typeof se.external_id&&(u.externalId=se.external_id),se.makeAuthenticationRequest(a,"authenticate",u),B(a,i,c)},createDemoAccount:function(e,n,o){var r=new t.Deferred,i={appId:se.app_id,type:e};if(!se.app_key)throw se.APP_KEY_MISSING;return i.appKey=se.app_key,se.makeAuthenticationRequest(r,"createDemoAccount",i),B(r,n,o)},makeAuthenticationRequest:function(e,t,n){var o;return se.makeOsRequest(t,"POST","","",n).then(function(e){return o=e,se.enableTrading(e.apiTokenValue,e.apiEndpoint,e.expires)}).then(function(){e.resolve(o)},function(t){e.reject(t)})},createForexDemoAccount:function(e,t){return se.createDemoAccount("FOREX",e,t)},createStocksDemoAccount:function(e,t){return se.createDemoAccount("STOCKS",e,t)},refreshAuthentication:function(e,n,o,r){var i=new t.Deferred,c={refreshTokenValue:e};return n&&(c={refreshTokenValue:e,appSecret:n}),se.makeAuthenticationRequest(i,"refreshAuthentication",c),B(i,o,r)},getAccounts:function(e,n){var o=se.makeAccountRequest("GET","","",null).then(function(e){se.accounts.splice(0,se.accounts.length),se.allAccounts.splice(0,se.allAccounts.length),se.accountMap={},t(e.accounts).each(function(e,t){t.uniqueId&&"NA"!==t.uniqueId&&se.accountIdsToExclude.indexOf(t.uniqueId)<=-1&&(se.accounts.push(t),se.accountMap[t.uniqueId]=t),se.allAccounts.push(t)}),se.log("Accounts initialized")});return B(o,e,n)},getCandles:function(e,t,n,o,r,i){return se.getCandlesForAccount(se.selectedAccountId,e,t,n,o,r,i)},getCandlesForAccount:function(e,t,n,o,r,i,c){var a={instrumentId:t,from:n,to:o,aggregation:r};return se.makeAccountRequest("POST",e,"candles/",a,i,c)},subscribedCandleId:void 0,lastReceivedCandle:void 0,startCandleUpdates:function(e,n,o,r){function i(){se.on("internalCandleUpdates","accountUpdated",function(n){var o=a(e,n.prices);if(se.lastReceivedCandle&&o&&o.bid){var i=JSON.stringify(t.extend({},se.lastReceivedCandle));if(c(o,u),i!==JSON.stringify(se.lastReceivedCandle)){var s=[];return s.push(se.lastReceivedCandle),r(s)}}})}function c(e,t){var n=e.bid;if(Date.now()-se.lastReceivedCandle.timestamp>=t){se.lastReceivedCandle.timestamp=se.lastReceivedCandle.timestamp+t;var o=se.lastReceivedCandle.close;se.lastReceivedCandle.open=o,se.lastReceivedCandle.high=o,se.lastReceivedCandle.low=o}se.lastReceivedCandle.close=n,n>se.lastReceivedCandle.high&&(se.lastReceivedCandle.high=n),n 200000) { // Staging app-id oauthHost = "api-staging.tradable.com/"; - console.log("Starting in staging mode..."); + tradable.log("Starting in staging mode..."); } if(customOAuthHost) { oauthHost = customOAuthHost; @@ -2375,25 +2382,18 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } resetInstrumentCache(); - return getDefaultInstruments().then(function() { - console.log('Instruments ready'); + var deferred = new $.Deferred(); + getDefaultInstruments().then(function() { + tradable.log("Instruments ready"); if(reset) { tradable.tradingEnabled = true; notifyAccountSwitchCallbacks(); } - if(!!resolve && typeof resolve === "function") { - return resolve(tradable.accounts); - } else { - return this; - } - //return + deferred.resolve(tradable.accounts); }, function(error) { - if(!!reject && typeof reject === "function") { - return reject(error); - } else { - return this; - } + deferred.reject(error); }); + return resolveDeferred(deferred, resolve, reject); } @@ -2531,18 +2531,26 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } function excludeAndValidate(deferred, err) { + var accQty = tradable.accounts.length; tradable.excludeCurrentAccount(); + tradable.log("Account initialization failed.."); if(tradable.accounts.length > 0) { - validateToken(); + tradable.log("Resetting to previous account"); + setSelectedAccountAndNotify(false, accQty).then(function() { + tradable.initializingAccount = false; + }, function() { + tradable.initializingAccount = false; + }); } else { + tradable.log("No more accounts available, signing out.."); tradable.signOut(); + tradable.initializingAccount = false; } deferred.reject(err); - tradable.initializingAccount = false; } function validateToken() { - console.log("Validating token..."); + tradable.log("Validating token..."); // Check token validity tradable.getAccounts().then( function() { @@ -2554,10 +2562,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : ); } - function setSelectedAccountAndNotify(set_latest_account, account_qty) { - var deferred = new $.Deferred(); - - console.log('Accounts initialized'); + function getAccountIdToInitialize(set_latest_account, account_qty) { var accountId; var savedAccId = localStorage.getItem("selectedAccount:"+appId); var accIdxToSelect = tradable.accounts.length - 1; @@ -2568,12 +2573,17 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } else if(accIdxToSelect >= 0) { accountId = tradable.accounts[accIdxToSelect].uniqueId; } + return accountId; + } + + function setSelectedAccountAndNotify(set_latest_account, account_qty) { + var deferred = new $.Deferred(); + + var accountId = getAccountIdToInitialize(set_latest_account, account_qty); resetUpdates(); if(accountId) { tradable.setSelectedAccount(accountId, function() { - if(!tradable.tradingEnabled) { - setTradingEnabled(true); - } + setTradingEnabled(true); deferred.resolve(); }, function(error) { deferred.reject(error); @@ -2586,11 +2596,14 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } function setTradingEnabled(value) { - tradable.tradingEnabled = value; - if(isLocalStorageSupported()) { - localStorage.setItem("tradingEnabled:"+appId, tradable.tradingEnabled); + if(value !== tradable.tradingEnabled) { + tradable.tradingEnabled = value; + tradable.log("Embed ready: " + tradable.tradingEnabled); + if(isLocalStorageSupported()) { + localStorage.setItem("tradingEnabled:"+appId, tradable.tradingEnabled); + } + notifyReadyCallbacks(); } - notifyReadyCallbacks(); } // Notify events @@ -2607,6 +2620,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : function processAccountUpdate() { if(tradable.tradingEnabled && !tradable.initializingAccount && !processingUpdate && (accountUpdatedCallbacks.length > 0 || typeof callbackHolder["accountUpdated"] !== undefined)) { + var processingAccountId = tradable.selectedAccountId; processingUpdate = true; var instrumentIds = []; $(tradable.instrumentKeysForAccountUpdates).each(function(idx, elem) { @@ -2616,8 +2630,12 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } }); tradable.getSnapshot(instrumentIds).then(function(account) { - tradable.lastSnapshot = account; - return checkInstrumentsToCache(account); + if(processingAccountId === tradable.selectedAccountId) { + tradable.lastSnapshot = account; + return checkInstrumentsToCache(account); + } else { + return new $.Deferred().reject(); + } }).then(function(account) { if(tradable.tradingEnabled && !tradable.initializingAccount) { $.each(accountUpdatedCallbacks, function(idx, call) { @@ -2649,6 +2667,8 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : if(missingInstrumentIds.length) { tradable.getInstrumentsFromIds(missingInstrumentIds).then(function() { deferred.resolve(snapshot); + }, function (err) { + deferred.reject(err); }); } else { deferred.resolve(snapshot); @@ -2659,6 +2679,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } function notifyTokenExpired() { + tradable.log("Token expired"); setTradingEnabled(false); $(tokenExpirationCallbacks).each(function(index, callback) { executeCallback(callback); @@ -2674,6 +2695,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } function notifyAccountSwitchCallbacks() { + tradable.log("Account switched: " + tradable.selectedAccount.displayName); $(accountSwitchCallbacks).each(function(index, callback) { executeCallback(callback); }); @@ -2695,7 +2717,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } } } else { - console.error("Careful, can't notify '" + eventName + "', it's an invalid event name"); + tradable.error("Careful, can't notify '" + eventName + "', it's an invalid event name"); } } @@ -2706,7 +2728,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window : } callback(); } catch(err) { - console.error(err); + tradable.error(err); } } diff --git a/test/coverage/lcov.info b/test/coverage/lcov.info index 67732f6..49ab151 100644 --- a/test/coverage/lcov.info +++ b/test/coverage/lcov.info @@ -2,570 +2,588 @@ TN: SF:c:\Users\Oier\git\tradable-core/src/tradable.js FN:4,(anonymous_1) FN:4,(anonymous_2) -FN:23,(anonymous_3) -FN:79,(anonymous_4) -FN:85,(anonymous_5) -FN:92,(anonymous_6) -FN:102,(anonymous_7) -FN:109,(anonymous_8) -FN:116,(anonymous_9) -FN:122,(anonymous_10) -FN:128,(anonymous_11) -FN:135,(anonymous_12) -FN:138,(anonymous_13) -FN:157,(anonymous_14) -FN:177,(anonymous_15) -FN:183,(anonymous_16) -FN:194,(anonymous_17) -FN:207,(anonymous_18) -FN:245,(anonymous_19) -FN:267,(anonymous_20) -FN:277,(anonymous_21) -FN:286,(anonymous_22) -FN:291,(anonymous_23) -FN:302,(anonymous_24) -FN:318,(anonymous_25) -FN:329,(anonymous_26) -FN:333,(anonymous_27) -FN:346,(anonymous_28) -FN:362,(anonymous_29) -FN:364,(anonymous_30) -FN:372,(anonymous_31) -FN:379,(anonymous_32) -FN:386,(anonymous_33) -FN:389,(anonymous_34) -FN:395,(anonymous_35) -FN:399,processTokenWillExpire -FN:402,(anonymous_37) -FN:413,(anonymous_38) -FN:423,(anonymous_39) -FN:430,(anonymous_40) -FN:436,(anonymous_41) -FN:440,(anonymous_42) -FN:456,(anonymous_43) -FN:473,(anonymous_44) -FN:474,(anonymous_45) -FN:491,(anonymous_46) -FN:501,(anonymous_47) -FN:509,(anonymous_48) -FN:516,(anonymous_49) -FN:518,(anonymous_50) -FN:519,(anonymous_51) -FN:524,(anonymous_52) -FN:536,(anonymous_53) -FN:539,(anonymous_54) -FN:556,(anonymous_55) -FN:569,(anonymous_56) -FN:587,(anonymous_57) -FN:590,(anonymous_58) -FN:592,(anonymous_59) -FN:608,(anonymous_60) -FN:626,(anonymous_61) -FN:655,(anonymous_62) -FN:670,(anonymous_63) -FN:685,(anonymous_64) -FN:688,(anonymous_65) -FN:721,(anonymous_66) -FN:733,(anonymous_67) -FN:745,(anonymous_68) -FN:757,(anonymous_69) -FN:772,(anonymous_70) -FN:800,(anonymous_71) -FN:813,(anonymous_72) -FN:815,(anonymous_73) -FN:818,(anonymous_74) -FN:820,(anonymous_75) -FN:830,(anonymous_76) -FN:839,(anonymous_77) -FN:850,(anonymous_78) -FN:872,(anonymous_79) -FN:873,(anonymous_80) -FN:877,(anonymous_81) -FN:914,(anonymous_82) -FN:943,(anonymous_83) -FN:965,(anonymous_84) -FN:972,(anonymous_85) -FN:976,(anonymous_86) -FN:980,startCandleListener -FN:981,(anonymous_88) -FN:995,processCandle -FN:1014,getPriceFromList -FN:1016,(anonymous_91) -FN:1028,(anonymous_92) -FN:1046,(anonymous_93) -FN:1059,(anonymous_94) -FN:1079,(anonymous_95) -FN:1099,(anonymous_96) -FN:1110,(anonymous_97) -FN:1113,(anonymous_98) -FN:1120,(anonymous_99) -FN:1122,(anonymous_100) -FN:1129,(anonymous_101) -FN:1135,(anonymous_102) -FN:1137,(anonymous_103) -FN:1139,(anonymous_104) -FN:1161,(anonymous_105) -FN:1181,(anonymous_106) -FN:1188,(anonymous_107) -FN:1191,(anonymous_108) -FN:1195,(anonymous_109) -FN:1203,(anonymous_110) -FN:1205,(anonymous_111) -FN:1213,matchInstruments -FN:1215,(anonymous_113) -FN:1222,escRegex -FN:1226,normalizeInstrumentObject -FN:1235,(anonymous_116) -FN:1250,(anonymous_117) -FN:1262,(anonymous_118) -FN:1274,(anonymous_119) -FN:1286,(anonymous_120) -FN:1306,(anonymous_121) -FN:1328,(anonymous_122) -FN:1343,(anonymous_123) -FN:1359,(anonymous_124) -FN:1374,(anonymous_125) -FN:1390,(anonymous_126) -FN:1393,(anonymous_127) -FN:1396,(anonymous_128) -FN:1414,(anonymous_129) -FN:1432,(anonymous_130) -FN:1457,(anonymous_131) -FN:1477,(anonymous_132) -FN:1487,(anonymous_133) -FN:1511,(anonymous_134) -FN:1528,(anonymous_135) -FN:1542,(anonymous_136) -FN:1550,(anonymous_137) -FN:1567,getProtection -FN:1583,(anonymous_139) -FN:1596,(anonymous_140) -FN:1608,(anonymous_141) -FN:1621,(anonymous_142) -FN:1633,(anonymous_143) -FN:1645,(anonymous_144) -FN:1658,(anonymous_145) -FN:1671,(anonymous_146) -FN:1682,(anonymous_147) -FN:1694,(anonymous_148) -FN:1704,(anonymous_149) -FN:1715,(anonymous_150) -FN:1727,(anonymous_151) -FN:1739,(anonymous_152) -FN:1748,(anonymous_153) -FN:1758,(anonymous_154) -FN:1770,(anonymous_155) -FN:1782,(anonymous_156) -FN:1795,(anonymous_157) -FN:1808,(anonymous_158) -FN:1819,(anonymous_159) -FN:1831,(anonymous_160) -FN:1842,(anonymous_161) -FN:1853,(anonymous_162) -FN:1866,(anonymous_163) -FN:1879,(anonymous_164) -FN:1896,(anonymous_165) -FN:1907,(anonymous_166) -FN:1919,(anonymous_167) -FN:1931,(anonymous_168) -FN:1942,(anonymous_169) -FN:1954,(anonymous_170) -FN:1964,(anonymous_171) -FN:1975,(anonymous_172) -FN:1985,(anonymous_173) -FN:1996,(anonymous_174) -FN:1999,(anonymous_175) -FN:2002,(anonymous_176) -FN:2019,(anonymous_177) -FN:2032,(anonymous_178) -FN:2044,(anonymous_179) -FN:2051,(anonymous_180) -FN:2053,(anonymous_181) -FN:2060,(anonymous_182) -FN:2078,(anonymous_183) -FN:2084,(anonymous_184) -FN:2097,(anonymous_185) -FN:2109,(anonymous_186) -FN:2133,(anonymous_187) -FN:2143,(anonymous_188) -FN:2145,(anonymous_189) -FN:2153,(anonymous_190) -FN:2163,(anonymous_191) -FN:2165,(anonymous_192) -FN:2167,(anonymous_193) -FN:2177,initializeLibrary -FN:2207,(anonymous_195) -FN:2212,processHashFragment -FN:2234,getTokenValuesFromHashFragment -FN:2247,(anonymous_198) -FN:2263,initializeTradableConfig -FN:2285,getRedirectUrl -FN:2292,formOAuthEndpoint -FN:2317,getTokenFromStorage -FN:2335,isLocalStorageSupported -FN:2346,popupwindow -FN:2362,getDecimalQty -FN:2370,initializeValuesForCurrentAccount -FN:2378,(anonymous_207) -FN:2390,(anonymous_208) +FN:4,(anonymous_3) +FN:23,(anonymous_4) +FN:76,(anonymous_5) +FN:77,(anonymous_6) +FN:78,(anonymous_7) +FN:82,(anonymous_8) +FN:88,(anonymous_9) +FN:95,(anonymous_10) +FN:105,(anonymous_11) +FN:112,(anonymous_12) +FN:119,(anonymous_13) +FN:125,(anonymous_14) +FN:131,(anonymous_15) +FN:138,(anonymous_16) +FN:141,(anonymous_17) +FN:160,(anonymous_18) +FN:180,(anonymous_19) +FN:186,(anonymous_20) +FN:196,(anonymous_21) +FN:209,(anonymous_22) +FN:247,(anonymous_23) +FN:269,(anonymous_24) +FN:279,(anonymous_25) +FN:288,(anonymous_26) +FN:293,(anonymous_27) +FN:304,(anonymous_28) +FN:320,(anonymous_29) +FN:331,(anonymous_30) +FN:335,(anonymous_31) +FN:348,(anonymous_32) +FN:364,(anonymous_33) +FN:366,(anonymous_34) +FN:374,(anonymous_35) +FN:381,(anonymous_36) +FN:388,(anonymous_37) +FN:391,(anonymous_38) +FN:397,(anonymous_39) +FN:401,processTokenWillExpire +FN:404,(anonymous_41) +FN:415,(anonymous_42) +FN:425,(anonymous_43) +FN:432,(anonymous_44) +FN:438,(anonymous_45) +FN:442,(anonymous_46) +FN:458,(anonymous_47) +FN:475,(anonymous_48) +FN:476,(anonymous_49) +FN:495,(anonymous_50) +FN:505,(anonymous_51) +FN:513,(anonymous_52) +FN:520,(anonymous_53) +FN:522,(anonymous_54) +FN:523,(anonymous_55) +FN:527,(anonymous_56) +FN:539,(anonymous_57) +FN:542,(anonymous_58) +FN:545,(anonymous_59) +FN:562,(anonymous_60) +FN:575,(anonymous_61) +FN:593,(anonymous_62) +FN:596,(anonymous_63) +FN:598,(anonymous_64) +FN:614,(anonymous_65) +FN:632,(anonymous_66) +FN:661,(anonymous_67) +FN:676,(anonymous_68) +FN:691,(anonymous_69) +FN:694,(anonymous_70) +FN:727,(anonymous_71) +FN:739,(anonymous_72) +FN:751,(anonymous_73) +FN:763,(anonymous_74) +FN:778,(anonymous_75) +FN:806,(anonymous_76) +FN:819,(anonymous_77) +FN:821,(anonymous_78) +FN:824,(anonymous_79) +FN:826,(anonymous_80) +FN:836,(anonymous_81) +FN:845,(anonymous_82) +FN:856,(anonymous_83) +FN:878,(anonymous_84) +FN:879,(anonymous_85) +FN:883,(anonymous_86) +FN:921,(anonymous_87) +FN:950,(anonymous_88) +FN:972,(anonymous_89) +FN:979,(anonymous_90) +FN:983,(anonymous_91) +FN:987,startCandleListener +FN:988,(anonymous_93) +FN:1002,processCandle +FN:1021,getPriceFromList +FN:1023,(anonymous_96) +FN:1035,(anonymous_97) +FN:1053,(anonymous_98) +FN:1066,(anonymous_99) +FN:1086,(anonymous_100) +FN:1106,(anonymous_101) +FN:1117,(anonymous_102) +FN:1120,(anonymous_103) +FN:1127,(anonymous_104) +FN:1129,(anonymous_105) +FN:1136,(anonymous_106) +FN:1142,(anonymous_107) +FN:1144,(anonymous_108) +FN:1146,(anonymous_109) +FN:1168,(anonymous_110) +FN:1188,(anonymous_111) +FN:1195,(anonymous_112) +FN:1198,(anonymous_113) +FN:1202,(anonymous_114) +FN:1210,(anonymous_115) +FN:1212,(anonymous_116) +FN:1220,matchInstruments +FN:1222,(anonymous_118) +FN:1229,escRegex +FN:1233,normalizeInstrumentObject +FN:1242,(anonymous_121) +FN:1257,(anonymous_122) +FN:1269,(anonymous_123) +FN:1281,(anonymous_124) +FN:1293,(anonymous_125) +FN:1313,(anonymous_126) +FN:1335,(anonymous_127) +FN:1350,(anonymous_128) +FN:1366,(anonymous_129) +FN:1381,(anonymous_130) +FN:1397,(anonymous_131) +FN:1400,(anonymous_132) +FN:1403,(anonymous_133) +FN:1421,(anonymous_134) +FN:1439,(anonymous_135) +FN:1464,(anonymous_136) +FN:1484,(anonymous_137) +FN:1494,(anonymous_138) +FN:1518,(anonymous_139) +FN:1535,(anonymous_140) +FN:1549,(anonymous_141) +FN:1557,(anonymous_142) +FN:1574,getProtection +FN:1590,(anonymous_144) +FN:1603,(anonymous_145) +FN:1615,(anonymous_146) +FN:1628,(anonymous_147) +FN:1640,(anonymous_148) +FN:1652,(anonymous_149) +FN:1665,(anonymous_150) +FN:1678,(anonymous_151) +FN:1689,(anonymous_152) +FN:1701,(anonymous_153) +FN:1711,(anonymous_154) +FN:1722,(anonymous_155) +FN:1734,(anonymous_156) +FN:1746,(anonymous_157) +FN:1755,(anonymous_158) +FN:1765,(anonymous_159) +FN:1777,(anonymous_160) +FN:1789,(anonymous_161) +FN:1802,(anonymous_162) +FN:1815,(anonymous_163) +FN:1826,(anonymous_164) +FN:1838,(anonymous_165) +FN:1849,(anonymous_166) +FN:1860,(anonymous_167) +FN:1873,(anonymous_168) +FN:1886,(anonymous_169) +FN:1903,(anonymous_170) +FN:1914,(anonymous_171) +FN:1926,(anonymous_172) +FN:1938,(anonymous_173) +FN:1949,(anonymous_174) +FN:1961,(anonymous_175) +FN:1971,(anonymous_176) +FN:1982,(anonymous_177) +FN:1992,(anonymous_178) +FN:2003,(anonymous_179) +FN:2006,(anonymous_180) +FN:2009,(anonymous_181) +FN:2026,(anonymous_182) +FN:2039,(anonymous_183) +FN:2050,(anonymous_184) +FN:2057,(anonymous_185) +FN:2059,(anonymous_186) +FN:2066,(anonymous_187) +FN:2084,(anonymous_188) +FN:2090,(anonymous_189) +FN:2103,(anonymous_190) +FN:2115,(anonymous_191) +FN:2139,(anonymous_192) +FN:2149,(anonymous_193) +FN:2151,(anonymous_194) +FN:2159,(anonymous_195) +FN:2169,(anonymous_196) +FN:2171,(anonymous_197) +FN:2173,(anonymous_198) +FN:2184,initializeLibrary +FN:2214,(anonymous_200) +FN:2219,processHashFragment +FN:2241,getTokenValuesFromHashFragment +FN:2254,(anonymous_203) +FN:2270,initializeTradableConfig +FN:2292,getRedirectUrl +FN:2299,formOAuthEndpoint +FN:2324,getTokenFromStorage +FN:2342,isLocalStorageSupported +FN:2353,popupwindow +FN:2369,getDecimalQty +FN:2377,initializeValuesForCurrentAccount +FN:2386,(anonymous_212) +FN:2393,(anonymous_213) FN:2404,getInstruments FN:2412,getInstrumentsForAccount FN:2416,isFullInstrumentListAvailable FN:2419,isFullInstrumentListAvailableForAccount -FN:2421,(anonymous_213) +FN:2421,(anonymous_218) FN:2429,getDefaultInstruments -FN:2433,(anonymous_215) -FN:2436,(anonymous_216) -FN:2442,(anonymous_217) -FN:2445,(anonymous_218) -FN:2448,(anonymous_219) -FN:2451,(anonymous_220) -FN:2453,(anonymous_221) +FN:2433,(anonymous_220) +FN:2436,(anonymous_221) +FN:2442,(anonymous_222) +FN:2445,(anonymous_223) +FN:2448,(anonymous_224) +FN:2451,(anonymous_225) +FN:2453,(anonymous_226) FN:2460,gatherForexInstrumentIds -FN:2462,(anonymous_223) +FN:2462,(anonymous_228) FN:2471,resetInstrumentCache FN:2479,isInstrumentCached FN:2482,cacheInstruments -FN:2483,(anonymous_227) +FN:2483,(anonymous_232) FN:2504,cacheCurrency FN:2513,findMissingInstrumentIds -FN:2515,(anonymous_230) +FN:2515,(anonymous_235) FN:2523,resetUpdates FN:2529,resetExcludedAccounts FN:2533,excludeAndValidate -FN:2544,validateToken -FN:2548,(anonymous_235) -FN:2551,(anonymous_236) -FN:2557,setSelectedAccountAndNotify -FN:2573,(anonymous_238) -FN:2578,(anonymous_239) -FN:2588,setTradingEnabled -FN:2598,notifyReadyCallbacks -FN:2599,(anonymous_242) -FN:2607,processAccountUpdate -FN:2612,(anonymous_244) -FN:2618,(anonymous_245) -FN:2621,(anonymous_246) -FN:2623,(anonymous_247) -FN:2629,(anonymous_248) -FN:2635,checkInstrumentsToCache -FN:2642,(anonymous_250) -FN:2650,(anonymous_251) -FN:2661,notifyTokenExpired -FN:2663,(anonymous_253) -FN:2669,notifyErrorCallbacks -FN:2670,(anonymous_255) -FN:2676,notifyAccountSwitchCallbacks -FN:2677,(anonymous_257) -FN:2683,notifyReloginRequiredCallbacks -FN:2688,notifyNamespaceCallbacks -FN:2702,executeCallback -FN:2718,findAndNotifyExecutions -FN:2748,resetNotifiedExecutions -FN:2756,Execution -FN:2761,(anonymous_264) -FN:2767,collectNewExecutions -FN:2789,needToClearPositions -FN:2793,(anonymous_267) -FN:2802,clearPositions -FN:2803,(anonymous_269) -FN:2812,getItemId -FN:2816,resolveDeferred -FN:2818,(anonymous_272) -FN:2821,(anonymous_273) -FN:2830,internalSignOut -FN:2839,(anonymous_275) -FN:2841,(anonymous_276) -FN:2848,hashCode -FN:2861,ie -FN:2866,isEmpty -FN:2911,isGreaterOrEqualMinVersion -FN:2912,(anonymous_281) -FN:2916,(anonymous_282) -FNF:282 -FNH:213 +FN:2539,(anonymous_239) +FN:2541,(anonymous_240) +FN:2552,validateToken +FN:2556,(anonymous_242) +FN:2559,(anonymous_243) +FN:2565,getAccountIdToInitialize +FN:2579,setSelectedAccountAndNotify +FN:2585,(anonymous_246) +FN:2588,(anonymous_247) +FN:2598,setTradingEnabled +FN:2611,notifyReadyCallbacks +FN:2612,(anonymous_250) +FN:2620,processAccountUpdate +FN:2626,(anonymous_252) +FN:2632,(anonymous_253) +FN:2639,(anonymous_254) +FN:2641,(anonymous_255) +FN:2647,(anonymous_256) +FN:2653,checkInstrumentsToCache +FN:2660,(anonymous_258) +FN:2668,(anonymous_259) +FN:2670,(anonymous_260) +FN:2681,notifyTokenExpired +FN:2684,(anonymous_262) +FN:2690,notifyErrorCallbacks +FN:2691,(anonymous_264) +FN:2697,notifyAccountSwitchCallbacks +FN:2699,(anonymous_266) +FN:2705,notifyReloginRequiredCallbacks +FN:2710,notifyNamespaceCallbacks +FN:2724,executeCallback +FN:2740,findAndNotifyExecutions +FN:2770,resetNotifiedExecutions +FN:2778,Execution +FN:2783,(anonymous_273) +FN:2789,collectNewExecutions +FN:2811,needToClearPositions +FN:2815,(anonymous_276) +FN:2824,clearPositions +FN:2825,(anonymous_278) +FN:2834,getItemId +FN:2838,resolveDeferred +FN:2840,(anonymous_281) +FN:2843,(anonymous_282) +FN:2852,internalSignOut +FN:2861,(anonymous_284) +FN:2863,(anonymous_285) +FN:2870,hashCode +FN:2883,ie +FN:2888,isEmpty +FN:2933,isGreaterOrEqualMinVersion +FN:2934,(anonymous_290) +FN:2938,(anonymous_291) +FNF:291 +FNH:218 FNDA:0,(anonymous_1) FNDA:0,(anonymous_2) -FNDA:1,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) +FNDA:0,(anonymous_3) +FNDA:1,(anonymous_4) +FNDA:26,(anonymous_5) +FNDA:9,(anonymous_6) +FNDA:18,(anonymous_7) FNDA:0,(anonymous_8) FNDA:0,(anonymous_9) FNDA:0,(anonymous_10) FNDA:0,(anonymous_11) -FNDA:1,(anonymous_12) -FNDA:10,(anonymous_13) -FNDA:1,(anonymous_14) -FNDA:1,(anonymous_15) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) FNDA:1,(anonymous_16) -FNDA:82,(anonymous_17) -FNDA:39,(anonymous_18) -FNDA:17,(anonymous_19) -FNDA:5,(anonymous_20) -FNDA:2,(anonymous_21) -FNDA:11,(anonymous_22) -FNDA:3,(anonymous_23) -FNDA:3,(anonymous_24) -FNDA:3,(anonymous_25) -FNDA:3,(anonymous_26) -FNDA:1,(anonymous_27) -FNDA:5,(anonymous_28) -FNDA:2,(anonymous_29) -FNDA:4,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:4,(anonymous_35) -FNDA:0,processTokenWillExpire +FNDA:10,(anonymous_17) +FNDA:1,(anonymous_18) +FNDA:1,(anonymous_19) +FNDA:1,(anonymous_20) +FNDA:82,(anonymous_21) +FNDA:39,(anonymous_22) +FNDA:17,(anonymous_23) +FNDA:5,(anonymous_24) +FNDA:2,(anonymous_25) +FNDA:11,(anonymous_26) +FNDA:3,(anonymous_27) +FNDA:3,(anonymous_28) +FNDA:3,(anonymous_29) +FNDA:3,(anonymous_30) +FNDA:1,(anonymous_31) +FNDA:5,(anonymous_32) +FNDA:2,(anonymous_33) +FNDA:4,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) FNDA:0,(anonymous_37) FNDA:0,(anonymous_38) -FNDA:1,(anonymous_39) -FNDA:5,(anonymous_40) -FNDA:2,(anonymous_41) -FNDA:118,(anonymous_42) -FNDA:118,(anonymous_43) -FNDA:113,(anonymous_44) -FNDA:3,(anonymous_45) -FNDA:110,(anonymous_46) -FNDA:4,(anonymous_47) -FNDA:4,(anonymous_48) -FNDA:0,(anonymous_49) -FNDA:0,(anonymous_50) -FNDA:0,(anonymous_51) -FNDA:0,(anonymous_52) -FNDA:9,(anonymous_53) -FNDA:1,(anonymous_54) -FNDA:4,(anonymous_55) -FNDA:19,(anonymous_56) -FNDA:1,(anonymous_57) -FNDA:109,(anonymous_58) -FNDA:3281,(anonymous_59) +FNDA:4,(anonymous_39) +FNDA:0,processTokenWillExpire +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:1,(anonymous_43) +FNDA:5,(anonymous_44) +FNDA:2,(anonymous_45) +FNDA:118,(anonymous_46) +FNDA:118,(anonymous_47) +FNDA:113,(anonymous_48) +FNDA:3,(anonymous_49) +FNDA:110,(anonymous_50) +FNDA:4,(anonymous_51) +FNDA:4,(anonymous_52) +FNDA:0,(anonymous_53) +FNDA:0,(anonymous_54) +FNDA:0,(anonymous_55) +FNDA:0,(anonymous_56) +FNDA:9,(anonymous_57) +FNDA:6,(anonymous_58) +FNDA:1,(anonymous_59) FNDA:4,(anonymous_60) -FNDA:4,(anonymous_61) -FNDA:2,(anonymous_62) -FNDA:1,(anonymous_63) -FNDA:1,(anonymous_64) -FNDA:8,(anonymous_65) -FNDA:1,(anonymous_66) -FNDA:1,(anonymous_67) +FNDA:19,(anonymous_61) +FNDA:1,(anonymous_62) +FNDA:109,(anonymous_63) +FNDA:3281,(anonymous_64) +FNDA:4,(anonymous_65) +FNDA:4,(anonymous_66) +FNDA:2,(anonymous_67) FNDA:1,(anonymous_68) FNDA:1,(anonymous_69) -FNDA:4,(anonymous_70) -FNDA:2,(anonymous_71) -FNDA:3,(anonymous_72) -FNDA:3,(anonymous_73) -FNDA:3,(anonymous_74) -FNDA:0,(anonymous_75) -FNDA:1,(anonymous_76) -FNDA:1,(anonymous_77) -FNDA:1,(anonymous_78) -FNDA:6,(anonymous_79) -FNDA:5,(anonymous_80) -FNDA:5,(anonymous_81) +FNDA:8,(anonymous_70) +FNDA:1,(anonymous_71) +FNDA:1,(anonymous_72) +FNDA:1,(anonymous_73) +FNDA:1,(anonymous_74) +FNDA:4,(anonymous_75) +FNDA:2,(anonymous_76) +FNDA:3,(anonymous_77) +FNDA:3,(anonymous_78) +FNDA:3,(anonymous_79) +FNDA:0,(anonymous_80) +FNDA:1,(anonymous_81) FNDA:1,(anonymous_82) FNDA:1,(anonymous_83) -FNDA:1,(anonymous_84) -FNDA:1,(anonymous_85) -FNDA:0,(anonymous_86) +FNDA:6,(anonymous_84) +FNDA:5,(anonymous_85) +FNDA:5,(anonymous_86) +FNDA:1,(anonymous_87) +FNDA:1,(anonymous_88) +FNDA:1,(anonymous_89) +FNDA:1,(anonymous_90) +FNDA:0,(anonymous_91) FNDA:1,startCandleListener -FNDA:2,(anonymous_88) +FNDA:2,(anonymous_93) FNDA:2,processCandle FNDA:2,getPriceFromList -FNDA:2,(anonymous_91) -FNDA:2,(anonymous_92) -FNDA:7,(anonymous_93) -FNDA:7,(anonymous_94) -FNDA:0,(anonymous_95) -FNDA:3,(anonymous_96) +FNDA:2,(anonymous_96) FNDA:2,(anonymous_97) -FNDA:0,(anonymous_98) -FNDA:3,(anonymous_99) -FNDA:90,(anonymous_100) -FNDA:0,(anonymous_101) +FNDA:7,(anonymous_98) +FNDA:7,(anonymous_99) +FNDA:0,(anonymous_100) +FNDA:3,(anonymous_101) FNDA:2,(anonymous_102) FNDA:0,(anonymous_103) -FNDA:0,(anonymous_104) -FNDA:3,(anonymous_105) -FNDA:5,(anonymous_106) -FNDA:1,(anonymous_107) -FNDA:21,(anonymous_108) +FNDA:3,(anonymous_104) +FNDA:90,(anonymous_105) +FNDA:0,(anonymous_106) +FNDA:2,(anonymous_107) +FNDA:0,(anonymous_108) FNDA:0,(anonymous_109) -FNDA:4,(anonymous_110) -FNDA:0,(anonymous_111) +FNDA:3,(anonymous_110) +FNDA:5,(anonymous_111) +FNDA:1,(anonymous_112) +FNDA:21,(anonymous_113) +FNDA:0,(anonymous_114) +FNDA:4,(anonymous_115) +FNDA:0,(anonymous_116) FNDA:1,matchInstruments -FNDA:85,(anonymous_113) +FNDA:85,(anonymous_118) FNDA:1,escRegex FNDA:21,normalizeInstrumentObject -FNDA:168,(anonymous_116) -FNDA:1,(anonymous_117) -FNDA:2,(anonymous_118) -FNDA:0,(anonymous_119) -FNDA:0,(anonymous_120) -FNDA:3,(anonymous_121) -FNDA:0,(anonymous_122) -FNDA:1,(anonymous_123) +FNDA:168,(anonymous_121) +FNDA:1,(anonymous_122) +FNDA:2,(anonymous_123) FNDA:0,(anonymous_124) -FNDA:1,(anonymous_125) -FNDA:0,(anonymous_126) -FNDA:6,(anonymous_127) -FNDA:6,(anonymous_128) -FNDA:1,(anonymous_129) +FNDA:0,(anonymous_125) +FNDA:3,(anonymous_126) +FNDA:0,(anonymous_127) +FNDA:1,(anonymous_128) +FNDA:0,(anonymous_129) FNDA:1,(anonymous_130) -FNDA:12,(anonymous_131) -FNDA:12,(anonymous_132) -FNDA:12,(anonymous_133) -FNDA:8,(anonymous_134) -FNDA:8,(anonymous_135) -FNDA:16,(anonymous_136) +FNDA:0,(anonymous_131) +FNDA:6,(anonymous_132) +FNDA:6,(anonymous_133) +FNDA:1,(anonymous_134) +FNDA:1,(anonymous_135) +FNDA:12,(anonymous_136) FNDA:12,(anonymous_137) +FNDA:12,(anonymous_138) +FNDA:8,(anonymous_139) +FNDA:8,(anonymous_140) +FNDA:16,(anonymous_141) +FNDA:12,(anonymous_142) FNDA:20,getProtection -FNDA:2,(anonymous_139) -FNDA:2,(anonymous_140) -FNDA:2,(anonymous_141) -FNDA:2,(anonymous_142) -FNDA:0,(anonymous_143) -FNDA:0,(anonymous_144) -FNDA:16,(anonymous_145) -FNDA:16,(anonymous_146) +FNDA:2,(anonymous_144) +FNDA:2,(anonymous_145) +FNDA:2,(anonymous_146) FNDA:2,(anonymous_147) -FNDA:2,(anonymous_148) -FNDA:4,(anonymous_149) -FNDA:4,(anonymous_150) -FNDA:2,(anonymous_151) +FNDA:0,(anonymous_148) +FNDA:0,(anonymous_149) +FNDA:16,(anonymous_150) +FNDA:16,(anonymous_151) FNDA:2,(anonymous_152) -FNDA:1,(anonymous_153) -FNDA:1,(anonymous_154) +FNDA:2,(anonymous_153) +FNDA:4,(anonymous_154) FNDA:4,(anonymous_155) -FNDA:4,(anonymous_156) -FNDA:9,(anonymous_157) -FNDA:9,(anonymous_158) +FNDA:2,(anonymous_156) +FNDA:2,(anonymous_157) +FNDA:1,(anonymous_158) FNDA:1,(anonymous_159) -FNDA:1,(anonymous_160) -FNDA:5,(anonymous_161) -FNDA:5,(anonymous_162) -FNDA:1,(anonymous_163) +FNDA:4,(anonymous_160) +FNDA:4,(anonymous_161) +FNDA:9,(anonymous_162) +FNDA:9,(anonymous_163) FNDA:1,(anonymous_164) FNDA:1,(anonymous_165) -FNDA:1,(anonymous_166) -FNDA:0,(anonymous_167) -FNDA:0,(anonymous_168) -FNDA:0,(anonymous_169) -FNDA:0,(anonymous_170) -FNDA:3,(anonymous_171) +FNDA:5,(anonymous_166) +FNDA:5,(anonymous_167) +FNDA:1,(anonymous_168) +FNDA:1,(anonymous_169) +FNDA:1,(anonymous_170) +FNDA:1,(anonymous_171) FNDA:0,(anonymous_172) -FNDA:3,(anonymous_173) +FNDA:0,(anonymous_173) FNDA:0,(anonymous_174) -FNDA:6,(anonymous_175) -FNDA:6,(anonymous_176) -FNDA:9,(anonymous_177) -FNDA:10,(anonymous_178) -FNDA:1,(anonymous_179) -FNDA:4,(anonymous_180) -FNDA:0,(anonymous_181) -FNDA:2,(anonymous_182) -FNDA:2,(anonymous_183) -FNDA:0,(anonymous_184) -FNDA:2,(anonymous_185) -FNDA:5,(anonymous_186) -FNDA:0,(anonymous_187) -FNDA:0,(anonymous_188) +FNDA:0,(anonymous_175) +FNDA:3,(anonymous_176) +FNDA:0,(anonymous_177) +FNDA:3,(anonymous_178) +FNDA:0,(anonymous_179) +FNDA:6,(anonymous_180) +FNDA:6,(anonymous_181) +FNDA:9,(anonymous_182) +FNDA:10,(anonymous_183) +FNDA:1,(anonymous_184) +FNDA:4,(anonymous_185) +FNDA:0,(anonymous_186) +FNDA:2,(anonymous_187) +FNDA:2,(anonymous_188) FNDA:0,(anonymous_189) -FNDA:4,(anonymous_190) -FNDA:4,(anonymous_191) -FNDA:4,(anonymous_192) +FNDA:2,(anonymous_190) +FNDA:5,(anonymous_191) +FNDA:0,(anonymous_192) FNDA:0,(anonymous_193) +FNDA:0,(anonymous_194) +FNDA:4,(anonymous_195) +FNDA:4,(anonymous_196) +FNDA:4,(anonymous_197) +FNDA:0,(anonymous_198) FNDA:1,initializeLibrary -FNDA:1,(anonymous_195) +FNDA:1,(anonymous_200) FNDA:0,processHashFragment FNDA:1,getTokenValuesFromHashFragment -FNDA:3,(anonymous_198) +FNDA:3,(anonymous_203) FNDA:6,initializeTradableConfig FNDA:1,getRedirectUrl FNDA:1,formOAuthEndpoint FNDA:1,getTokenFromStorage -FNDA:15,isLocalStorageSupported +FNDA:16,isLocalStorageSupported FNDA:0,popupwindow FNDA:13,getDecimalQty FNDA:4,initializeValuesForCurrentAccount -FNDA:4,(anonymous_207) -FNDA:0,(anonymous_208) +FNDA:4,(anonymous_212) +FNDA:0,(anonymous_213) FNDA:3,getInstruments FNDA:3,getInstrumentsForAccount FNDA:11,isFullInstrumentListAvailable FNDA:18,isFullInstrumentListAvailableForAccount -FNDA:18,(anonymous_213) +FNDA:18,(anonymous_218) FNDA:4,getDefaultInstruments -FNDA:3,(anonymous_215) -FNDA:0,(anonymous_216) -FNDA:1,(anonymous_217) -FNDA:1,(anonymous_218) -FNDA:1,(anonymous_219) -FNDA:1,(anonymous_220) +FNDA:3,(anonymous_220) FNDA:0,(anonymous_221) +FNDA:1,(anonymous_222) +FNDA:1,(anonymous_223) +FNDA:1,(anonymous_224) +FNDA:1,(anonymous_225) +FNDA:0,(anonymous_226) FNDA:3,gatherForexInstrumentIds -FNDA:399,(anonymous_223) +FNDA:387,(anonymous_228) FNDA:5,resetInstrumentCache FNDA:494,isInstrumentCached FNDA:5,cacheInstruments -FNDA:335,(anonymous_227) +FNDA:335,(anonymous_232) FNDA:544,cacheCurrency FNDA:6,findMissingInstrumentIds -FNDA:120,(anonymous_230) +FNDA:120,(anonymous_235) FNDA:4,resetUpdates FNDA:4,resetExcludedAccounts FNDA:0,excludeAndValidate +FNDA:0,(anonymous_239) +FNDA:0,(anonymous_240) FNDA:1,validateToken -FNDA:0,(anonymous_235) -FNDA:0,(anonymous_236) +FNDA:0,(anonymous_242) +FNDA:0,(anonymous_243) +FNDA:4,getAccountIdToInitialize FNDA:4,setSelectedAccountAndNotify -FNDA:4,(anonymous_238) -FNDA:0,(anonymous_239) -FNDA:4,setTradingEnabled +FNDA:4,(anonymous_246) +FNDA:0,(anonymous_247) +FNDA:5,setTradingEnabled FNDA:6,notifyReadyCallbacks -FNDA:2,(anonymous_242) -FNDA:7,processAccountUpdate -FNDA:5,(anonymous_244) -FNDA:7,(anonymous_245) -FNDA:7,(anonymous_246) -FNDA:6,(anonymous_247) -FNDA:0,(anonymous_248) +FNDA:2,(anonymous_250) +FNDA:8,processAccountUpdate +FNDA:5,(anonymous_252) +FNDA:7,(anonymous_253) +FNDA:7,(anonymous_254) +FNDA:6,(anonymous_255) +FNDA:0,(anonymous_256) FNDA:7,checkInstrumentsToCache -FNDA:21,(anonymous_250) -FNDA:0,(anonymous_251) +FNDA:21,(anonymous_258) +FNDA:0,(anonymous_259) +FNDA:0,(anonymous_260) FNDA:0,notifyTokenExpired -FNDA:0,(anonymous_253) +FNDA:0,(anonymous_262) FNDA:3,notifyErrorCallbacks -FNDA:0,(anonymous_255) +FNDA:0,(anonymous_264) FNDA:0,notifyAccountSwitchCallbacks -FNDA:0,(anonymous_257) +FNDA:0,(anonymous_266) FNDA:0,notifyReloginRequiredCallbacks FNDA:28,notifyNamespaceCallbacks FNDA:54,executeCallback FNDA:9,findAndNotifyExecutions FNDA:3,resetNotifiedExecutions FNDA:12,Execution -FNDA:9,(anonymous_264) +FNDA:9,(anonymous_273) FNDA:48,collectNewExecutions -FNDA:256,needToClearPositions -FNDA:10,(anonymous_267) +FNDA:220,needToClearPositions +FNDA:9,(anonymous_276) FNDA:2,clearPositions -FNDA:3,(anonymous_269) -FNDA:259,getItemId -FNDA:150,resolveDeferred -FNDA:9,(anonymous_272) -FNDA:1,(anonymous_273) +FNDA:3,(anonymous_278) +FNDA:223,getItemId +FNDA:154,resolveDeferred +FNDA:13,(anonymous_281) +FNDA:1,(anonymous_282) FNDA:1,internalSignOut -FNDA:0,(anonymous_275) -FNDA:0,(anonymous_276) +FNDA:0,(anonymous_284) +FNDA:0,(anonymous_285) FNDA:2,hashCode FNDA:0,ie FNDA:57,isEmpty FNDA:49,isGreaterOrEqualMinVersion -FNDA:576,(anonymous_281) -FNDA:96,(anonymous_282) +FNDA:576,(anonymous_290) +FNDA:96,(anonymous_291) DA:3,1 DA:4,0 DA:8,1 @@ -585,680 +603,684 @@ DA:34,1 DA:35,1 DA:36,1 DA:46,1 -DA:80,0 -DA:86,0 -DA:93,0 -DA:94,0 +DA:76,26 +DA:77,9 +DA:78,18 +DA:83,0 +DA:89,0 DA:96,0 -DA:103,0 -DA:110,0 -DA:117,0 -DA:123,0 -DA:129,0 -DA:136,1 -DA:139,10 -DA:143,10 -DA:144,2 -DA:146,8 +DA:97,0 +DA:99,0 +DA:106,0 +DA:113,0 +DA:120,0 +DA:126,0 +DA:132,0 +DA:139,1 +DA:142,10 +DA:146,10 DA:147,2 -DA:150,8 -DA:151,6 -DA:152,2 -DA:155,8 -DA:158,1 -DA:160,0 -DA:161,0 +DA:149,8 +DA:150,2 +DA:153,8 +DA:154,6 +DA:155,2 +DA:158,8 +DA:161,1 +DA:163,0 DA:164,0 -DA:165,0 DA:167,0 DA:168,0 -DA:178,1 -DA:184,1 -DA:185,1 -DA:186,1 +DA:170,0 +DA:171,0 +DA:181,1 DA:187,1 DA:188,1 DA:189,1 +DA:190,1 DA:191,1 DA:192,1 -DA:195,82 -DA:208,39 -DA:209,1 -DA:212,38 -DA:214,16 -DA:218,38 -DA:219,1 -DA:220,37 -DA:221,6 -DA:225,31 -DA:226,1 -DA:229,30 -DA:230,4 -DA:231,9 +DA:194,1 +DA:197,82 +DA:210,39 +DA:211,1 +DA:214,38 +DA:216,16 +DA:220,38 +DA:221,1 +DA:222,37 +DA:223,6 +DA:227,31 +DA:228,1 +DA:231,30 DA:232,4 -DA:233,5 -DA:236,30 -DA:246,17 -DA:247,2 -DA:248,7 -DA:251,2 -DA:254,15 -DA:255,15 -DA:257,17 -DA:258,57 -DA:259,10 -DA:260,10 -DA:261,3 -DA:262,2 -DA:268,5 -DA:269,5 -DA:278,2 -DA:279,1 -DA:280,1 +DA:233,9 +DA:234,4 +DA:235,5 +DA:238,30 +DA:248,17 +DA:249,2 +DA:250,7 +DA:253,2 +DA:256,15 +DA:257,15 +DA:259,17 +DA:260,57 +DA:261,10 +DA:262,10 +DA:263,3 +DA:264,2 +DA:270,5 +DA:271,5 +DA:280,2 +DA:281,1 DA:282,1 -DA:287,11 -DA:288,4 -DA:292,3 -DA:293,3 +DA:284,1 +DA:289,11 +DA:290,4 DA:294,3 -DA:303,3 -DA:304,2 -DA:305,2 +DA:295,3 +DA:296,3 +DA:305,3 DA:306,2 -DA:307,1 -DA:308,1 -DA:311,1 -DA:319,3 -DA:320,2 -DA:321,2 +DA:307,2 +DA:308,2 +DA:309,1 +DA:310,1 +DA:313,1 +DA:321,3 DA:322,2 DA:323,2 -DA:326,1 -DA:330,3 -DA:331,3 -DA:334,1 -DA:335,1 -DA:347,5 -DA:348,1 -DA:350,4 -DA:351,4 -DA:352,3 -DA:363,2 -DA:364,2 -DA:365,4 -DA:373,0 -DA:380,0 -DA:387,0 -DA:390,0 -DA:391,0 -DA:396,4 -DA:397,1 +DA:324,2 +DA:325,2 +DA:328,1 +DA:332,3 +DA:333,3 +DA:336,1 +DA:337,1 +DA:349,5 +DA:350,1 +DA:352,4 +DA:353,4 +DA:354,3 +DA:365,2 +DA:366,2 +DA:367,4 +DA:375,0 +DA:382,0 +DA:389,0 +DA:392,0 +DA:393,0 +DA:398,4 DA:399,1 -DA:400,0 -DA:401,0 +DA:401,1 DA:402,0 DA:403,0 +DA:404,0 DA:405,0 -DA:414,0 -DA:415,0 +DA:407,0 DA:416,0 -DA:424,1 -DA:425,0 -DA:427,1 -DA:431,5 -DA:432,3 -DA:433,3 -DA:437,2 -DA:438,2 -DA:441,118 -DA:442,118 +DA:417,0 +DA:418,0 +DA:426,1 +DA:427,0 +DA:429,1 +DA:433,5 +DA:434,3 +DA:435,3 +DA:439,2 +DA:440,2 DA:443,118 -DA:444,7 -DA:445,111 +DA:444,118 +DA:445,118 DA:446,7 -DA:447,104 -DA:448,104 -DA:450,0 -DA:451,0 +DA:447,111 +DA:448,7 +DA:449,104 +DA:450,104 DA:452,0 -DA:454,118 -DA:457,118 -DA:458,117 -DA:460,118 -DA:473,118 -DA:475,3 -DA:476,3 -DA:477,0 -DA:478,0 +DA:453,0 +DA:454,0 +DA:456,118 +DA:459,118 +DA:460,117 +DA:462,118 +DA:475,118 +DA:477,3 +DA:478,3 DA:479,0 DA:480,0 -DA:483,3 -DA:484,3 -DA:489,118 -DA:492,110 -DA:502,4 -DA:503,4 -DA:504,4 -DA:505,4 +DA:481,0 +DA:482,0 +DA:483,0 +DA:484,0 +DA:487,3 +DA:488,3 +DA:493,118 +DA:496,110 DA:506,4 DA:507,4 DA:508,4 DA:509,4 DA:510,4 DA:511,4 +DA:512,4 DA:513,4 DA:514,4 -DA:517,0 -DA:518,0 -DA:519,0 -DA:520,0 +DA:515,4 +DA:517,4 +DA:518,4 DA:521,0 DA:522,0 +DA:523,0 +DA:524,0 DA:525,0 DA:528,0 -DA:531,4 -DA:533,0 -DA:537,9 -DA:540,1 -DA:541,1 -DA:542,1 -DA:543,1 -DA:544,1 -DA:545,1 -DA:557,4 -DA:558,1 -DA:560,3 -DA:570,19 -DA:571,1 -DA:573,18 -DA:574,15 -DA:576,3 -DA:578,3 -DA:588,1 -DA:591,109 -DA:592,109 -DA:593,3281 -DA:594,109 -DA:595,109 +DA:531,0 +DA:534,4 +DA:536,0 +DA:540,9 +DA:543,6 +DA:546,1 +DA:547,1 +DA:548,1 +DA:549,1 +DA:550,1 +DA:551,1 +DA:563,4 +DA:564,1 +DA:566,3 +DA:576,19 +DA:577,1 +DA:579,18 +DA:580,15 +DA:582,3 +DA:584,3 +DA:594,1 +DA:597,109 DA:598,109 -DA:609,4 -DA:610,4 -DA:611,1 -DA:613,3 -DA:614,3 -DA:627,4 -DA:628,4 -DA:629,1 -DA:631,3 -DA:632,3 -DA:633,3 -DA:656,2 -DA:671,1 -DA:686,1 -DA:690,8 -DA:691,8 -DA:692,6 -DA:693,2 -DA:694,0 +DA:599,3281 +DA:600,109 +DA:601,109 +DA:604,109 +DA:615,4 +DA:616,4 +DA:617,1 +DA:619,3 +DA:620,3 +DA:633,4 +DA:634,4 +DA:635,1 +DA:637,3 +DA:638,3 +DA:639,3 +DA:662,2 +DA:677,1 +DA:692,1 +DA:696,8 DA:697,8 -DA:698,0 -DA:701,8 -DA:702,8 -DA:704,8 -DA:705,8 -DA:706,1 -DA:708,6 -DA:709,6 -DA:710,6 -DA:712,7 -DA:722,1 -DA:734,1 -DA:746,1 -DA:758,1 -DA:773,4 -DA:776,4 -DA:777,3 -DA:778,3 -DA:780,3 -DA:783,4 -DA:784,4 -DA:785,4 -DA:786,2 -DA:788,2 -DA:790,2 -DA:791,1 -DA:792,1 -DA:793,1 -DA:795,2 -DA:797,2 +DA:698,6 +DA:699,2 +DA:700,0 +DA:703,8 +DA:704,0 +DA:707,8 +DA:708,8 +DA:710,8 +DA:711,8 +DA:712,1 +DA:714,6 +DA:715,6 +DA:716,6 +DA:718,7 +DA:728,1 +DA:740,1 +DA:752,1 +DA:764,1 +DA:779,4 +DA:782,4 +DA:783,3 +DA:784,3 +DA:786,3 +DA:789,4 +DA:790,4 +DA:791,4 +DA:792,2 +DA:794,2 +DA:796,2 +DA:797,1 +DA:798,1 +DA:799,1 DA:801,2 DA:803,2 -DA:804,2 -DA:805,0 DA:807,2 -DA:809,0 +DA:809,2 +DA:810,2 DA:811,0 -DA:814,3 -DA:815,3 -DA:816,3 -DA:817,3 -DA:819,3 -DA:821,0 -DA:831,1 -DA:840,1 -DA:851,1 -DA:853,1 -DA:854,1 -DA:856,0 -DA:858,1 +DA:813,2 +DA:815,0 +DA:817,0 +DA:820,3 +DA:821,3 +DA:822,3 +DA:823,3 +DA:825,3 +DA:827,0 +DA:837,1 +DA:846,1 +DA:857,1 +DA:859,1 DA:860,1 -DA:873,6 -DA:874,5 -DA:875,5 -DA:876,5 -DA:877,5 -DA:878,5 +DA:862,0 +DA:864,1 +DA:866,1 +DA:879,6 DA:880,5 DA:881,5 +DA:882,5 DA:883,5 -DA:887,6 -DA:915,1 -DA:944,1 -DA:945,1 -DA:966,1 -DA:968,1 -DA:969,1 -DA:970,1 -DA:972,1 +DA:884,5 +DA:886,5 +DA:887,5 +DA:889,5 +DA:891,5 +DA:894,6 +DA:922,1 +DA:951,1 +DA:952,1 DA:973,1 -DA:974,1 DA:975,1 -DA:977,0 +DA:976,1 +DA:977,1 +DA:979,1 DA:980,1 DA:981,1 -DA:982,2 -DA:983,2 -DA:984,2 -DA:985,2 -DA:987,2 -DA:988,2 +DA:982,1 +DA:984,0 +DA:987,1 +DA:988,1 DA:989,2 DA:990,2 -DA:995,1 +DA:991,2 +DA:992,2 +DA:994,2 +DA:995,2 DA:996,2 -DA:998,2 -DA:999,0 -DA:1000,0 -DA:1001,0 -DA:1002,0 -DA:1003,0 -DA:1006,2 -DA:1007,2 +DA:997,2 +DA:1002,1 +DA:1003,2 +DA:1005,2 +DA:1006,0 +DA:1007,0 DA:1008,0 -DA:1010,2 -DA:1011,1 -DA:1014,1 -DA:1015,2 -DA:1016,2 +DA:1009,0 +DA:1010,0 +DA:1013,2 +DA:1014,2 +DA:1015,0 DA:1017,2 DA:1018,2 -DA:1019,2 +DA:1021,1 DA:1022,2 +DA:1023,2 +DA:1024,2 +DA:1025,2 +DA:1026,2 DA:1029,2 -DA:1030,1 -DA:1031,1 -DA:1032,1 -DA:1033,1 -DA:1047,7 -DA:1060,7 -DA:1061,7 -DA:1080,0 -DA:1100,3 -DA:1102,3 -DA:1103,3 -DA:1104,2 +DA:1036,2 +DA:1037,1 +DA:1038,1 +DA:1039,1 +DA:1040,1 +DA:1054,7 +DA:1067,7 +DA:1068,7 +DA:1087,0 DA:1107,3 -DA:1108,3 -DA:1109,2 -DA:1110,2 +DA:1109,3 +DA:1110,3 DA:1111,2 -DA:1112,2 -DA:1114,0 -DA:1117,1 -DA:1120,3 -DA:1121,3 -DA:1122,3 -DA:1123,90 -DA:1124,90 -DA:1125,90 +DA:1114,3 +DA:1115,3 +DA:1116,2 +DA:1117,2 +DA:1118,2 +DA:1119,2 +DA:1121,0 +DA:1124,1 +DA:1127,3 DA:1128,3 -DA:1130,0 -DA:1133,3 -DA:1136,2 +DA:1129,3 +DA:1130,90 +DA:1131,90 +DA:1132,90 +DA:1135,3 DA:1137,0 -DA:1138,0 -DA:1140,0 +DA:1140,3 DA:1143,2 -DA:1162,3 -DA:1182,5 -DA:1184,5 -DA:1185,1 -DA:1186,1 -DA:1188,1 -DA:1189,1 -DA:1190,1 -DA:1191,1 -DA:1192,21 -DA:1194,1 -DA:1196,0 -DA:1199,4 -DA:1200,4 -DA:1201,0 -DA:1203,4 -DA:1204,4 -DA:1206,0 -DA:1211,5 -DA:1213,1 -DA:1214,1 -DA:1215,1 -DA:1216,85 +DA:1144,0 +DA:1145,0 +DA:1147,0 +DA:1150,2 +DA:1169,3 +DA:1189,5 +DA:1191,5 +DA:1192,1 +DA:1193,1 +DA:1195,1 +DA:1196,1 +DA:1197,1 +DA:1198,1 +DA:1199,21 +DA:1201,1 +DA:1203,0 +DA:1206,4 +DA:1207,4 +DA:1208,0 +DA:1210,4 +DA:1211,4 +DA:1213,0 +DA:1218,5 +DA:1220,1 +DA:1221,1 DA:1222,1 -DA:1223,1 -DA:1226,1 -DA:1227,21 -DA:1228,21 -DA:1229,21 -DA:1230,21 -DA:1231,294 -DA:1232,168 +DA:1223,85 +DA:1229,1 +DA:1230,1 +DA:1233,1 +DA:1234,21 DA:1235,21 -DA:1236,168 -DA:1238,21 -DA:1251,1 -DA:1263,2 -DA:1275,0 -DA:1287,0 -DA:1307,3 -DA:1329,0 -DA:1344,1 -DA:1360,0 -DA:1375,1 -DA:1391,0 -DA:1394,6 -DA:1397,6 -DA:1398,6 -DA:1415,1 -DA:1433,1 -DA:1434,1 -DA:1435,1 -DA:1436,1 -DA:1437,1 -DA:1438,1 -DA:1439,1 -DA:1458,12 -DA:1478,12 -DA:1480,4 -DA:1482,4 -DA:1483,4 -DA:1485,4 -DA:1488,12 -DA:1489,8 -DA:1490,2 -DA:1491,6 +DA:1236,21 +DA:1237,21 +DA:1238,294 +DA:1239,168 +DA:1242,21 +DA:1243,168 +DA:1245,21 +DA:1258,1 +DA:1270,2 +DA:1282,0 +DA:1294,0 +DA:1314,3 +DA:1336,0 +DA:1351,1 +DA:1367,0 +DA:1382,1 +DA:1398,0 +DA:1401,6 +DA:1404,6 +DA:1405,6 +DA:1422,1 +DA:1440,1 +DA:1441,1 +DA:1442,1 +DA:1443,1 +DA:1444,1 +DA:1445,1 +DA:1446,1 +DA:1465,12 +DA:1485,12 +DA:1487,4 +DA:1489,4 +DA:1490,4 DA:1492,4 -DA:1494,4 -DA:1495,2 -DA:1512,8 -DA:1529,8 -DA:1530,8 -DA:1532,8 -DA:1533,8 -DA:1535,8 +DA:1495,12 +DA:1496,8 +DA:1497,2 +DA:1498,6 +DA:1499,4 +DA:1501,4 +DA:1502,2 +DA:1519,8 DA:1536,8 -DA:1538,8 +DA:1537,8 +DA:1539,8 DA:1540,8 -DA:1543,16 -DA:1547,0 -DA:1551,12 -DA:1552,12 -DA:1554,12 -DA:1555,12 -DA:1556,12 +DA:1542,8 +DA:1543,8 +DA:1545,8 +DA:1547,8 +DA:1550,16 +DA:1554,0 DA:1558,12 -DA:1559,10 +DA:1559,12 DA:1561,12 -DA:1562,10 +DA:1562,12 +DA:1563,12 DA:1565,12 -DA:1567,1 -DA:1568,20 -DA:1584,2 -DA:1597,2 -DA:1609,2 -DA:1622,2 -DA:1634,0 -DA:1646,0 -DA:1659,16 -DA:1672,16 -DA:1683,2 -DA:1695,2 -DA:1705,4 -DA:1716,4 -DA:1728,2 -DA:1740,2 -DA:1749,1 -DA:1759,1 -DA:1771,4 -DA:1783,4 -DA:1796,9 -DA:1809,9 -DA:1820,1 -DA:1832,1 -DA:1833,1 -DA:1843,5 -DA:1854,5 -DA:1867,1 -DA:1880,1 -DA:1881,1 -DA:1882,1 -DA:1884,1 -DA:1885,1 +DA:1566,10 +DA:1568,12 +DA:1569,10 +DA:1572,12 +DA:1574,1 +DA:1575,20 +DA:1591,2 +DA:1604,2 +DA:1616,2 +DA:1629,2 +DA:1641,0 +DA:1653,0 +DA:1666,16 +DA:1679,16 +DA:1690,2 +DA:1702,2 +DA:1712,4 +DA:1723,4 +DA:1735,2 +DA:1747,2 +DA:1756,1 +DA:1766,1 +DA:1778,4 +DA:1790,4 +DA:1803,9 +DA:1816,9 +DA:1827,1 +DA:1839,1 +DA:1840,1 +DA:1850,5 +DA:1861,5 +DA:1874,1 DA:1887,1 -DA:1897,1 -DA:1908,1 -DA:1920,0 -DA:1932,0 -DA:1943,0 -DA:1955,0 -DA:1965,3 -DA:1976,0 -DA:1986,3 -DA:1997,0 -DA:2000,6 -DA:2003,6 -DA:2004,6 -DA:2005,6 +DA:1888,1 +DA:1889,1 +DA:1891,1 +DA:1892,1 +DA:1894,1 +DA:1904,1 +DA:1915,1 +DA:1927,0 +DA:1939,0 +DA:1950,0 +DA:1962,0 +DA:1972,3 +DA:1983,0 +DA:1993,3 +DA:2004,0 DA:2007,6 -DA:2020,9 -DA:2033,10 -DA:2035,10 -DA:2036,6 -DA:2038,4 -DA:2040,4 -DA:2042,4 -DA:2043,4 -DA:2044,1 -DA:2045,1 -DA:2048,3 -DA:2051,4 -DA:2052,4 -DA:2054,0 +DA:2010,6 +DA:2011,6 +DA:2012,6 +DA:2014,6 +DA:2027,9 +DA:2040,10 +DA:2042,10 +DA:2043,6 +DA:2045,4 +DA:2046,4 +DA:2048,4 +DA:2049,4 +DA:2050,1 +DA:2051,1 +DA:2054,3 DA:2057,4 -DA:2061,2 -DA:2062,2 -DA:2063,0 -DA:2065,2 -DA:2066,0 +DA:2058,4 +DA:2060,0 +DA:2063,4 +DA:2067,2 DA:2068,2 -DA:2077,2 -DA:2078,2 -DA:2079,2 -DA:2080,2 -DA:2082,0 -DA:2085,0 -DA:2088,2 -DA:2098,2 -DA:2110,5 -DA:2111,5 -DA:2112,5 -DA:2114,5 -DA:2115,5 +DA:2069,0 +DA:2071,2 +DA:2072,0 +DA:2074,2 +DA:2083,2 +DA:2084,2 +DA:2085,2 +DA:2086,2 +DA:2088,0 +DA:2091,0 +DA:2094,2 +DA:2104,2 DA:2116,5 +DA:2117,5 DA:2118,5 -DA:2119,5 DA:2120,5 +DA:2121,5 +DA:2122,5 DA:2124,5 DA:2125,5 -DA:2134,0 -DA:2144,0 -DA:2145,0 -DA:2146,0 -DA:2147,0 +DA:2126,5 +DA:2130,5 +DA:2131,5 +DA:2140,0 +DA:2150,0 DA:2151,0 -DA:2154,4 -DA:2156,4 -DA:2157,4 -DA:2159,4 +DA:2152,0 +DA:2153,0 +DA:2157,0 DA:2160,4 DA:2162,4 DA:2163,4 -DA:2164,4 +DA:2165,4 DA:2166,4 -DA:2168,0 -DA:2171,4 -DA:2175,1 -DA:2177,1 -DA:2178,1 -DA:2179,1 -DA:2180,1 -DA:2181,0 +DA:2168,4 +DA:2169,4 +DA:2170,4 +DA:2172,4 +DA:2174,0 +DA:2177,4 +DA:2181,1 DA:2182,1 -DA:2183,0 -DA:2184,0 -DA:2185,0 -DA:2186,0 -DA:2187,0 -DA:2189,0 +DA:2184,1 +DA:2185,1 +DA:2186,1 +DA:2187,1 +DA:2188,0 +DA:2189,1 +DA:2190,0 DA:2191,0 DA:2192,0 -DA:2195,1 +DA:2193,0 +DA:2194,0 +DA:2196,0 +DA:2198,0 DA:2199,0 -DA:2200,1 -DA:2201,0 -DA:2202,0 -DA:2205,1 -DA:2206,1 +DA:2202,1 +DA:2206,0 DA:2207,1 -DA:2208,1 +DA:2208,0 +DA:2209,0 DA:2212,1 -DA:2213,0 -DA:2214,0 -DA:2215,0 -DA:2218,0 +DA:2213,1 +DA:2214,1 +DA:2215,1 +DA:2219,1 DA:2220,0 DA:2221,0 DA:2222,0 -DA:2223,0 DA:2225,0 DA:2227,0 -DA:2232,1 -DA:2234,1 -DA:2237,1 -DA:2238,1 +DA:2228,0 +DA:2229,0 +DA:2230,0 +DA:2232,0 +DA:2234,0 +DA:2239,1 DA:2241,1 -DA:2246,1 -DA:2247,1 -DA:2248,3 -DA:2249,3 -DA:2250,3 -DA:2251,3 -DA:2252,1 -DA:2253,2 +DA:2244,1 +DA:2245,1 +DA:2248,1 +DA:2253,1 DA:2254,1 -DA:2255,1 -DA:2256,1 +DA:2255,3 +DA:2256,3 +DA:2257,3 +DA:2258,3 DA:2259,1 +DA:2260,2 +DA:2261,1 +DA:2262,1 DA:2263,1 -DA:2265,6 -DA:2267,6 -DA:2269,4 -DA:2272,4 -DA:2281,6 -DA:2285,1 -DA:2286,1 -DA:2288,1 +DA:2266,1 +DA:2270,1 +DA:2272,6 +DA:2274,6 +DA:2276,4 +DA:2279,4 +DA:2288,6 DA:2292,1 DA:2293,1 DA:2295,1 -DA:2296,1 -DA:2298,1 DA:2299,1 -DA:2300,0 -DA:2301,0 +DA:2300,1 +DA:2302,1 DA:2303,1 -DA:2304,0 -DA:2307,1 -DA:2308,1 +DA:2305,1 +DA:2306,1 +DA:2307,0 +DA:2308,0 DA:2310,1 -DA:2311,1 -DA:2313,1 +DA:2311,0 +DA:2314,1 +DA:2315,1 DA:2317,1 DA:2318,1 DA:2320,1 -DA:2321,1 -DA:2322,1 -DA:2323,1 +DA:2324,1 DA:2325,1 -DA:2326,0 -DA:2327,0 -DA:2328,0 +DA:2327,1 +DA:2328,1 +DA:2329,1 +DA:2330,1 DA:2332,1 -DA:2335,1 -DA:2336,15 -DA:2337,15 -DA:2338,15 -DA:2339,15 -DA:2340,15 -DA:2342,0 -DA:2346,1 -DA:2347,0 -DA:2348,0 +DA:2333,0 +DA:2334,0 +DA:2335,0 +DA:2339,1 +DA:2342,1 +DA:2343,16 +DA:2344,16 +DA:2345,16 +DA:2346,16 +DA:2347,16 DA:2349,0 -DA:2350,0 -DA:2351,0 -DA:2352,0 -DA:2353,0 -DA:2362,1 -DA:2363,13 -DA:2364,2 -DA:2366,11 -DA:2367,11 -DA:2370,1 -DA:2371,4 -DA:2372,4 -DA:2373,0 -DA:2374,0 -DA:2377,4 +DA:2353,1 +DA:2354,0 +DA:2355,0 +DA:2356,0 +DA:2357,0 +DA:2358,0 +DA:2359,0 +DA:2360,0 +DA:2369,1 +DA:2370,13 +DA:2371,2 +DA:2373,11 +DA:2374,11 +DA:2377,1 DA:2378,4 DA:2379,4 -DA:2380,4 +DA:2380,0 DA:2381,0 -DA:2382,0 DA:2384,4 DA:2385,4 -DA:2387,0 -DA:2391,0 -DA:2392,0 +DA:2386,4 +DA:2387,4 +DA:2388,4 +DA:2389,0 +DA:2390,0 +DA:2392,4 DA:2394,0 +DA:2396,4 DA:2404,1 DA:2405,3 DA:2412,1 @@ -1293,7 +1315,7 @@ DA:2458,4 DA:2460,1 DA:2461,3 DA:2462,3 -DA:2463,399 +DA:2463,387 DA:2464,48 DA:2465,48 DA:2470,1 @@ -1339,237 +1361,254 @@ DA:2533,1 DA:2534,0 DA:2535,0 DA:2536,0 +DA:2537,0 DA:2538,0 +DA:2539,0 DA:2540,0 -DA:2541,0 -DA:2544,1 -DA:2545,1 -DA:2547,1 +DA:2542,0 +DA:2545,0 +DA:2546,0 +DA:2547,0 DA:2549,0 -DA:2552,0 -DA:2557,1 -DA:2558,4 -DA:2560,4 -DA:2561,4 -DA:2562,4 -DA:2563,4 -DA:2564,4 -DA:2565,0 +DA:2552,1 +DA:2553,1 +DA:2555,1 +DA:2557,0 +DA:2560,0 +DA:2565,1 DA:2566,4 -DA:2567,1 -DA:2568,3 -DA:2569,3 +DA:2567,4 +DA:2568,4 +DA:2569,4 +DA:2570,0 DA:2571,4 -DA:2572,4 -DA:2573,4 -DA:2574,4 -DA:2575,4 -DA:2577,4 -DA:2579,0 -DA:2582,0 -DA:2583,0 +DA:2572,1 +DA:2573,3 +DA:2574,3 +DA:2576,4 +DA:2579,1 +DA:2580,4 +DA:2582,4 +DA:2583,4 +DA:2584,4 DA:2585,4 -DA:2588,1 -DA:2589,4 -DA:2590,4 -DA:2591,4 -DA:2593,4 +DA:2586,4 +DA:2587,4 +DA:2589,0 +DA:2592,0 +DA:2593,0 +DA:2595,4 DA:2598,1 -DA:2599,6 -DA:2600,2 -DA:2602,6 -DA:2603,6 -DA:2606,1 -DA:2607,1 -DA:2608,7 -DA:2610,7 -DA:2611,7 -DA:2612,7 -DA:2613,5 -DA:2614,5 -DA:2615,5 -DA:2618,7 -DA:2619,7 -DA:2620,7 -DA:2622,7 +DA:2599,5 +DA:2600,5 +DA:2601,5 +DA:2602,5 +DA:2603,5 +DA:2605,5 +DA:2611,1 +DA:2612,6 +DA:2613,2 +DA:2615,6 +DA:2616,6 +DA:2619,1 +DA:2620,1 +DA:2621,8 DA:2623,7 -DA:2624,6 +DA:2624,7 +DA:2625,7 DA:2626,7 -DA:2628,7 -DA:2630,0 -DA:2635,1 -DA:2636,7 -DA:2638,7 -DA:2639,4 -DA:2641,3 -DA:2642,3 -DA:2643,21 -DA:2644,0 -DA:2647,3 -DA:2648,3 -DA:2649,3 -DA:2650,0 -DA:2651,0 -DA:2654,3 -DA:2658,7 -DA:2661,1 +DA:2627,5 +DA:2628,5 +DA:2629,5 +DA:2632,7 +DA:2633,7 +DA:2634,7 +DA:2635,7 +DA:2637,0 +DA:2640,7 +DA:2641,7 +DA:2642,6 +DA:2644,7 +DA:2646,7 +DA:2648,0 +DA:2653,1 +DA:2654,7 +DA:2656,7 +DA:2657,4 +DA:2659,3 +DA:2660,3 +DA:2661,21 DA:2662,0 -DA:2663,0 -DA:2664,0 -DA:2666,0 -DA:2669,1 -DA:2670,3 +DA:2665,3 +DA:2666,3 +DA:2667,3 +DA:2668,0 +DA:2669,0 DA:2671,0 -DA:2673,3 -DA:2676,1 -DA:2677,0 -DA:2678,0 -DA:2680,0 -DA:2683,1 +DA:2674,3 +DA:2678,7 +DA:2681,1 +DA:2682,0 +DA:2683,0 DA:2684,0 DA:2685,0 -DA:2688,1 -DA:2689,28 -DA:2690,28 -DA:2691,28 -DA:2692,41 -DA:2693,41 +DA:2687,0 +DA:2690,1 +DA:2691,3 +DA:2692,0 +DA:2694,3 +DA:2697,1 DA:2698,0 -DA:2702,1 -DA:2703,54 -DA:2704,54 -DA:2705,29 -DA:2707,25 -DA:2709,17 -DA:2716,1 -DA:2717,1 -DA:2718,1 -DA:2719,9 -DA:2720,2 -DA:2721,2 -DA:2723,9 -DA:2724,3 -DA:2725,3 -DA:2726,3 -DA:2727,3 -DA:2728,3 -DA:2731,3 -DA:2734,9 +DA:2699,0 +DA:2700,0 +DA:2702,0 +DA:2705,1 +DA:2706,0 +DA:2707,0 +DA:2710,1 +DA:2711,28 +DA:2712,28 +DA:2713,28 +DA:2714,41 +DA:2715,41 +DA:2720,0 +DA:2724,1 +DA:2725,54 +DA:2726,54 +DA:2727,29 +DA:2729,25 +DA:2731,17 +DA:2738,1 +DA:2739,1 +DA:2740,1 DA:2741,9 DA:2742,2 +DA:2743,2 DA:2745,9 -DA:2748,1 +DA:2746,3 +DA:2747,3 +DA:2748,3 DA:2749,3 -DA:2752,3 -DA:2756,1 -DA:2757,12 -DA:2758,12 -DA:2759,12 -DA:2760,12 -DA:2761,12 -DA:2762,9 -DA:2767,1 -DA:2768,48 -DA:2769,48 -DA:2770,256 -DA:2776,256 -DA:2777,256 -DA:2778,2 -DA:2781,256 -DA:2782,66 -DA:2783,66 -DA:2786,48 +DA:2750,3 +DA:2753,3 +DA:2756,9 +DA:2763,9 +DA:2764,2 +DA:2767,9 +DA:2770,1 +DA:2771,3 +DA:2774,3 +DA:2778,1 +DA:2779,12 +DA:2780,12 +DA:2781,12 +DA:2782,12 +DA:2783,12 +DA:2784,9 DA:2789,1 -DA:2790,256 -DA:2791,256 -DA:2793,21 -DA:2794,10 -DA:2795,2 -DA:2799,256 -DA:2802,1 -DA:2803,2 -DA:2804,3 -DA:2812,1 -DA:2813,259 -DA:2816,1 -DA:2817,150 -DA:2818,10 -DA:2819,9 -DA:2820,9 -DA:2822,1 -DA:2823,1 -DA:2826,140 -DA:2830,1 -DA:2831,1 -DA:2833,1 -DA:2834,0 -DA:2835,0 +DA:2790,48 +DA:2791,48 +DA:2792,220 +DA:2798,220 +DA:2799,220 +DA:2800,2 +DA:2803,220 +DA:2804,57 +DA:2805,57 +DA:2808,48 +DA:2811,1 +DA:2812,220 +DA:2813,220 +DA:2815,16 +DA:2816,9 +DA:2817,2 +DA:2821,220 +DA:2824,1 +DA:2825,2 +DA:2826,3 +DA:2834,1 +DA:2835,223 DA:2838,1 -DA:2839,1 -DA:2840,0 -DA:2842,0 +DA:2839,154 +DA:2840,14 +DA:2841,13 +DA:2842,13 +DA:2844,1 DA:2845,1 -DA:2848,1 -DA:2849,2 -DA:2850,2 -DA:2851,2 -DA:2852,2 -DA:2853,2 -DA:2854,28 -DA:2855,28 -DA:2856,28 -DA:2858,2 +DA:2848,140 +DA:2852,1 +DA:2853,1 +DA:2855,1 +DA:2856,0 +DA:2857,0 +DA:2860,1 DA:2861,1 DA:2862,0 -DA:2866,1 -DA:2867,57 -DA:2868,47 -DA:2869,47 -DA:2872,10 -DA:2877,1 -DA:2878,1 -DA:2879,1 -DA:2880,1 -DA:2881,1 -DA:2882,1 +DA:2864,0 +DA:2867,1 +DA:2870,1 +DA:2871,2 +DA:2872,2 +DA:2873,2 +DA:2874,2 +DA:2875,2 +DA:2876,28 +DA:2877,28 +DA:2878,28 +DA:2880,2 DA:2883,1 -DA:2884,1 -DA:2885,1 -DA:2886,1 -DA:2887,1 +DA:2884,0 DA:2888,1 -DA:2889,1 -DA:2890,1 -DA:2891,1 -DA:2892,1 -DA:2896,1 -DA:2897,1 -DA:2898,1 +DA:2889,57 +DA:2890,47 +DA:2891,47 +DA:2894,10 +DA:2899,1 DA:2900,1 -DA:2902,0 +DA:2901,1 +DA:2902,1 DA:2903,1 -DA:2905,0 +DA:2904,1 +DA:2905,1 +DA:2906,1 +DA:2907,1 +DA:2908,1 +DA:2909,1 +DA:2910,1 DA:2911,1 -DA:2912,49 -DA:2913,576 -DA:2916,49 -DA:2917,96 -DA:2918,96 -DA:2920,96 -DA:2921,126 -DA:2922,32 -DA:2924,94 -DA:2925,6 -DA:2927,88 -DA:2930,2 -DA:2931,0 +DA:2912,1 +DA:2913,1 +DA:2914,1 +DA:2918,1 +DA:2919,1 +DA:2920,1 +DA:2922,1 +DA:2924,0 +DA:2925,1 +DA:2927,0 +DA:2933,1 DA:2934,49 -LF:998 -LH:818 +DA:2935,576 +DA:2938,49 +DA:2939,96 +DA:2940,96 +DA:2942,96 +DA:2943,126 +DA:2944,32 +DA:2946,94 +DA:2947,6 +DA:2949,88 +DA:2952,2 +DA:2953,0 +DA:2956,49 +LF:1017 +LH:829 BRDA:3,1,0,0 BRDA:3,1,1,1 BRDA:3,2,0,1 BRDA:3,2,1,1 +BRDA:3,2,2,1 +BRDA:3,2,3,1 BRDA:8,3,0,0 BRDA:8,3,1,1 BRDA:10,4,0,0 @@ -1580,556 +1619,559 @@ BRDA:19,6,0,0 BRDA:19,6,1,0 BRDA:20,7,0,0 BRDA:20,7,1,0 -BRDA:93,8,0,0 -BRDA:93,8,1,0 -BRDA:139,9,0,4 -BRDA:139,9,1,6 -BRDA:140,10,0,2 -BRDA:140,10,1,4 -BRDA:141,11,0,1 -BRDA:141,11,1,3 -BRDA:142,12,0,1 -BRDA:142,12,1,2 -BRDA:143,13,0,2 -BRDA:143,13,1,8 -BRDA:146,14,0,2 -BRDA:146,14,1,6 -BRDA:150,15,0,6 -BRDA:150,15,1,2 -BRDA:150,16,0,8 -BRDA:150,16,1,4 -BRDA:151,17,0,2 -BRDA:151,17,1,4 -BRDA:160,18,0,0 -BRDA:160,18,1,0 -BRDA:160,19,0,0 -BRDA:160,19,1,0 -BRDA:164,20,0,0 -BRDA:164,20,1,0 -BRDA:164,21,0,0 -BRDA:164,21,1,0 -BRDA:164,21,2,0 -BRDA:167,22,0,0 -BRDA:167,22,1,0 -BRDA:185,23,0,1 -BRDA:185,23,1,0 -BRDA:195,24,0,82 -BRDA:195,24,1,82 -BRDA:208,25,0,1 -BRDA:208,25,1,38 -BRDA:212,26,0,16 -BRDA:212,26,1,22 -BRDA:218,27,0,1 -BRDA:218,27,1,37 -BRDA:220,28,0,6 -BRDA:220,28,1,31 -BRDA:225,29,0,1 -BRDA:225,29,1,30 -BRDA:229,30,0,4 -BRDA:229,30,1,9 -BRDA:229,30,2,4 -BRDA:229,30,3,5 -BRDA:246,31,0,2 -BRDA:246,31,1,15 -BRDA:248,32,0,2 -BRDA:248,32,1,5 -BRDA:248,33,0,7 -BRDA:248,33,1,7 -BRDA:248,33,2,2 -BRDA:254,34,0,15 -BRDA:254,34,1,0 -BRDA:254,35,0,15 -BRDA:254,35,1,15 -BRDA:254,35,2,15 -BRDA:258,36,0,10 -BRDA:258,36,1,47 -BRDA:258,37,0,57 -BRDA:258,37,1,57 -BRDA:260,38,0,3 -BRDA:260,38,1,2 -BRDA:268,39,0,5 -BRDA:268,39,1,0 -BRDA:278,40,0,1 -BRDA:278,40,1,1 -BRDA:278,41,0,2 -BRDA:278,41,1,1 -BRDA:287,42,0,4 -BRDA:287,42,1,7 -BRDA:292,43,0,3 -BRDA:292,43,1,0 -BRDA:303,44,0,2 -BRDA:303,44,1,1 -BRDA:303,45,0,3 -BRDA:303,45,1,2 -BRDA:306,46,0,1 -BRDA:306,46,1,1 -BRDA:319,47,0,2 -BRDA:319,47,1,1 -BRDA:319,48,0,3 -BRDA:319,48,1,3 -BRDA:319,48,2,2 -BRDA:321,49,0,2 -BRDA:321,49,1,0 -BRDA:347,50,0,1 -BRDA:347,50,1,4 -BRDA:351,51,0,3 -BRDA:351,51,1,1 -BRDA:390,52,0,0 -BRDA:390,52,1,0 -BRDA:390,53,0,0 -BRDA:390,53,1,0 -BRDA:396,54,0,1 -BRDA:396,54,1,3 -BRDA:401,55,0,0 -BRDA:401,55,1,0 -BRDA:401,56,0,0 -BRDA:401,56,1,0 -BRDA:401,56,2,0 -BRDA:415,57,0,0 -BRDA:415,57,1,0 -BRDA:424,58,0,0 -BRDA:424,58,1,1 -BRDA:431,59,0,3 -BRDA:431,59,1,2 -BRDA:441,60,0,1 -BRDA:441,60,1,117 -BRDA:443,61,0,7 -BRDA:443,61,1,111 -BRDA:443,62,0,118 -BRDA:443,62,1,117 -BRDA:445,63,0,7 -BRDA:445,63,1,104 -BRDA:445,64,0,111 -BRDA:445,64,1,111 -BRDA:445,64,2,111 -BRDA:447,65,0,104 -BRDA:447,65,1,0 -BRDA:457,66,0,117 -BRDA:457,66,1,1 -BRDA:466,67,0,104 -BRDA:466,67,1,14 -BRDA:466,68,0,118 -BRDA:466,68,1,104 -BRDA:469,69,0,56 -BRDA:469,69,1,62 -BRDA:475,70,0,3 -BRDA:475,70,1,0 -BRDA:476,71,0,0 -BRDA:476,71,1,3 -BRDA:476,72,0,3 -BRDA:476,72,1,3 -BRDA:477,73,0,0 -BRDA:477,73,1,0 -BRDA:477,74,0,0 -BRDA:477,74,1,0 -BRDA:479,75,0,0 -BRDA:479,75,1,0 -BRDA:483,76,0,3 -BRDA:483,76,1,0 -BRDA:502,77,0,4 -BRDA:502,77,1,0 +BRDA:96,8,0,0 +BRDA:96,8,1,0 +BRDA:142,9,0,4 +BRDA:142,9,1,6 +BRDA:143,10,0,2 +BRDA:143,10,1,4 +BRDA:144,11,0,1 +BRDA:144,11,1,3 +BRDA:145,12,0,1 +BRDA:145,12,1,2 +BRDA:146,13,0,2 +BRDA:146,13,1,8 +BRDA:149,14,0,2 +BRDA:149,14,1,6 +BRDA:153,15,0,6 +BRDA:153,15,1,2 +BRDA:153,16,0,8 +BRDA:153,16,1,4 +BRDA:154,17,0,2 +BRDA:154,17,1,4 +BRDA:163,18,0,0 +BRDA:163,18,1,0 +BRDA:163,19,0,0 +BRDA:163,19,1,0 +BRDA:167,20,0,0 +BRDA:167,20,1,0 +BRDA:167,21,0,0 +BRDA:167,21,1,0 +BRDA:167,21,2,0 +BRDA:170,22,0,0 +BRDA:170,22,1,0 +BRDA:188,23,0,1 +BRDA:188,23,1,0 +BRDA:197,24,0,82 +BRDA:197,24,1,82 +BRDA:210,25,0,1 +BRDA:210,25,1,38 +BRDA:214,26,0,16 +BRDA:214,26,1,22 +BRDA:220,27,0,1 +BRDA:220,27,1,37 +BRDA:222,28,0,6 +BRDA:222,28,1,31 +BRDA:227,29,0,1 +BRDA:227,29,1,30 +BRDA:231,30,0,4 +BRDA:231,30,1,9 +BRDA:231,30,2,4 +BRDA:231,30,3,5 +BRDA:248,31,0,2 +BRDA:248,31,1,15 +BRDA:250,32,0,2 +BRDA:250,32,1,5 +BRDA:250,33,0,7 +BRDA:250,33,1,7 +BRDA:250,33,2,2 +BRDA:256,34,0,15 +BRDA:256,34,1,0 +BRDA:256,35,0,15 +BRDA:256,35,1,15 +BRDA:256,35,2,15 +BRDA:260,36,0,10 +BRDA:260,36,1,47 +BRDA:260,37,0,57 +BRDA:260,37,1,57 +BRDA:262,38,0,3 +BRDA:262,38,1,2 +BRDA:270,39,0,5 +BRDA:270,39,1,0 +BRDA:280,40,0,1 +BRDA:280,40,1,1 +BRDA:280,41,0,2 +BRDA:280,41,1,1 +BRDA:289,42,0,4 +BRDA:289,42,1,7 +BRDA:294,43,0,3 +BRDA:294,43,1,0 +BRDA:305,44,0,2 +BRDA:305,44,1,1 +BRDA:305,45,0,3 +BRDA:305,45,1,2 +BRDA:308,46,0,1 +BRDA:308,46,1,1 +BRDA:321,47,0,2 +BRDA:321,47,1,1 +BRDA:321,48,0,3 +BRDA:321,48,1,3 +BRDA:321,48,2,2 +BRDA:323,49,0,2 +BRDA:323,49,1,0 +BRDA:349,50,0,1 +BRDA:349,50,1,4 +BRDA:353,51,0,3 +BRDA:353,51,1,1 +BRDA:392,52,0,0 +BRDA:392,52,1,0 +BRDA:392,53,0,0 +BRDA:392,53,1,0 +BRDA:398,54,0,1 +BRDA:398,54,1,3 +BRDA:403,55,0,0 +BRDA:403,55,1,0 +BRDA:403,56,0,0 +BRDA:403,56,1,0 +BRDA:403,56,2,0 +BRDA:417,57,0,0 +BRDA:417,57,1,0 +BRDA:426,58,0,0 +BRDA:426,58,1,1 +BRDA:433,59,0,3 +BRDA:433,59,1,2 +BRDA:443,60,0,1 +BRDA:443,60,1,117 +BRDA:445,61,0,7 +BRDA:445,61,1,111 +BRDA:445,62,0,118 +BRDA:445,62,1,117 +BRDA:447,63,0,7 +BRDA:447,63,1,104 +BRDA:447,64,0,111 +BRDA:447,64,1,111 +BRDA:447,64,2,111 +BRDA:449,65,0,104 +BRDA:449,65,1,0 +BRDA:459,66,0,117 +BRDA:459,66,1,1 +BRDA:468,67,0,104 +BRDA:468,67,1,14 +BRDA:468,68,0,118 +BRDA:468,68,1,104 +BRDA:471,69,0,56 +BRDA:471,69,1,62 +BRDA:477,70,0,3 +BRDA:477,70,1,0 +BRDA:478,71,0,0 +BRDA:478,71,1,3 +BRDA:478,72,0,3 +BRDA:478,72,1,3 +BRDA:478,72,2,3 +BRDA:479,73,0,0 +BRDA:479,73,1,0 +BRDA:481,74,0,0 +BRDA:481,74,1,0 +BRDA:483,75,0,0 +BRDA:483,75,1,0 +BRDA:487,76,0,3 +BRDA:487,76,1,0 +BRDA:506,77,0,4 +BRDA:506,77,1,0 BRDA:510,78,0,4 BRDA:510,78,1,0 -BRDA:517,79,0,0 -BRDA:517,79,1,0 -BRDA:537,80,0,9 -BRDA:537,80,1,8 -BRDA:537,80,2,8 -BRDA:537,80,3,3 -BRDA:542,81,0,1 -BRDA:542,81,1,0 -BRDA:557,82,0,1 -BRDA:557,82,1,3 -BRDA:570,83,0,1 -BRDA:570,83,1,18 -BRDA:570,84,0,19 -BRDA:570,84,1,18 -BRDA:573,85,0,15 -BRDA:573,85,1,3 -BRDA:593,86,0,109 -BRDA:593,86,1,3172 -BRDA:610,87,0,1 -BRDA:610,87,1,3 -BRDA:614,88,0,2 -BRDA:614,88,1,1 -BRDA:628,89,0,1 -BRDA:628,89,1,3 -BRDA:631,90,0,2 -BRDA:631,90,1,1 -BRDA:691,91,0,6 -BRDA:691,91,1,2 -BRDA:691,92,0,8 -BRDA:691,92,1,6 -BRDA:693,93,0,0 -BRDA:693,93,1,2 -BRDA:697,94,0,0 -BRDA:697,94,1,8 +BRDA:510,79,0,4 +BRDA:510,79,1,4 +BRDA:514,80,0,4 +BRDA:514,80,1,0 +BRDA:521,81,0,0 +BRDA:521,81,1,0 +BRDA:540,82,0,9 +BRDA:540,82,1,8 +BRDA:540,82,2,8 +BRDA:540,82,3,3 +BRDA:543,83,0,6 +BRDA:543,83,1,5 +BRDA:543,83,2,5 +BRDA:543,83,3,3 +BRDA:548,84,0,1 +BRDA:548,84,1,0 +BRDA:563,85,0,1 +BRDA:563,85,1,3 +BRDA:576,86,0,1 +BRDA:576,86,1,18 +BRDA:576,87,0,19 +BRDA:576,87,1,18 +BRDA:579,88,0,15 +BRDA:579,88,1,3 +BRDA:599,89,0,109 +BRDA:599,89,1,3172 +BRDA:616,90,0,1 +BRDA:616,90,1,3 +BRDA:620,91,0,2 +BRDA:620,91,1,1 +BRDA:634,92,0,1 +BRDA:634,92,1,3 +BRDA:637,93,0,2 +BRDA:637,93,1,1 +BRDA:697,94,0,6 +BRDA:697,94,1,2 BRDA:697,95,0,8 -BRDA:697,95,1,3 -BRDA:701,96,0,5 -BRDA:701,96,1,3 -BRDA:705,97,0,1 -BRDA:705,97,1,6 -BRDA:776,98,0,3 -BRDA:776,98,1,1 -BRDA:777,99,0,3 -BRDA:777,99,1,0 -BRDA:785,100,0,2 -BRDA:785,100,1,2 -BRDA:790,101,0,1 -BRDA:790,101,1,1 -BRDA:792,102,0,1 -BRDA:792,102,1,0 -BRDA:804,103,0,0 -BRDA:804,103,1,2 -BRDA:854,104,0,0 -BRDA:854,104,1,1 -BRDA:878,105,0,5 -BRDA:878,105,1,0 -BRDA:878,106,0,5 -BRDA:878,106,1,5 -BRDA:878,106,2,5 -BRDA:983,107,0,2 -BRDA:983,107,1,0 -BRDA:983,108,0,2 -BRDA:983,108,1,2 -BRDA:983,108,2,2 -BRDA:987,109,0,2 -BRDA:987,109,1,0 -BRDA:998,110,0,0 -BRDA:998,110,1,2 -BRDA:1007,111,0,0 -BRDA:1007,111,1,2 -BRDA:1010,112,0,1 -BRDA:1010,112,1,1 -BRDA:1017,113,0,2 -BRDA:1017,113,1,0 -BRDA:1029,114,0,1 -BRDA:1029,114,1,1 -BRDA:1103,115,0,2 -BRDA:1103,115,1,1 -BRDA:1108,116,0,2 -BRDA:1108,116,1,1 -BRDA:1124,117,0,90 -BRDA:1124,117,1,0 -BRDA:1136,118,0,0 -BRDA:1136,118,1,2 -BRDA:1136,119,0,2 -BRDA:1136,119,1,2 -BRDA:1184,120,0,1 -BRDA:1184,120,1,4 -BRDA:1200,121,0,0 -BRDA:1200,121,1,4 -BRDA:1216,122,0,85 -BRDA:1216,122,1,68 -BRDA:1216,122,2,64 -BRDA:1216,122,3,64 -BRDA:1231,123,0,168 -BRDA:1231,123,1,126 -BRDA:1231,124,0,294 -BRDA:1231,124,1,294 -BRDA:1435,125,0,1 -BRDA:1435,125,1,0 -BRDA:1437,126,0,1 -BRDA:1437,126,1,0 -BRDA:1482,127,0,2 -BRDA:1482,127,1,2 -BRDA:1488,128,0,8 -BRDA:1488,128,1,4 -BRDA:1489,129,0,2 -BRDA:1489,129,1,6 -BRDA:1489,130,0,8 -BRDA:1489,130,1,4 -BRDA:1489,130,2,4 -BRDA:1489,130,3,2 -BRDA:1491,131,0,4 -BRDA:1491,131,1,2 -BRDA:1494,132,0,2 -BRDA:1494,132,1,2 -BRDA:1494,133,0,4 -BRDA:1494,133,1,4 -BRDA:1494,133,2,2 -BRDA:1529,134,0,4 -BRDA:1529,134,1,4 -BRDA:1529,135,0,8 -BRDA:1529,135,1,6 -BRDA:1530,136,0,4 -BRDA:1530,136,1,4 -BRDA:1532,137,0,0 -BRDA:1532,137,1,8 -BRDA:1543,138,0,0 -BRDA:1543,138,1,16 -BRDA:1543,139,0,16 -BRDA:1543,139,1,16 -BRDA:1543,139,2,4 -BRDA:1543,139,3,0 -BRDA:1543,139,4,0 -BRDA:1555,140,0,12 -BRDA:1555,140,1,0 -BRDA:1556,141,0,6 -BRDA:1556,141,1,6 -BRDA:1558,142,0,10 -BRDA:1558,142,1,2 -BRDA:1561,143,0,10 -BRDA:1561,143,1,2 -BRDA:1568,144,0,8 -BRDA:1568,144,1,12 -BRDA:1570,145,0,6 -BRDA:1570,145,1,6 -BRDA:1881,146,0,1 -BRDA:1881,146,1,0 -BRDA:1884,147,0,1 -BRDA:1884,147,1,0 -BRDA:2004,148,0,6 -BRDA:2004,148,1,0 -BRDA:2035,149,0,6 -BRDA:2035,149,1,4 -BRDA:2035,150,0,10 -BRDA:2035,150,1,4 -BRDA:2043,151,0,1 -BRDA:2043,151,1,3 -BRDA:2062,152,0,0 -BRDA:2062,152,1,2 -BRDA:2065,153,0,0 -BRDA:2065,153,1,2 -BRDA:2079,154,0,2 -BRDA:2079,154,1,0 -BRDA:2110,155,0,5 -BRDA:2110,155,1,0 -BRDA:2110,156,0,5 -BRDA:2110,156,1,5 -BRDA:2114,157,0,5 -BRDA:2114,157,1,0 -BRDA:2118,158,0,5 -BRDA:2118,158,1,0 -BRDA:2146,159,0,0 -BRDA:2146,159,1,0 -BRDA:2180,160,0,0 -BRDA:2180,160,1,1 -BRDA:2180,161,0,1 -BRDA:2180,161,1,0 -BRDA:2182,162,0,0 -BRDA:2182,162,1,1 -BRDA:2182,163,0,1 -BRDA:2182,163,1,0 -BRDA:2184,164,0,0 -BRDA:2184,164,1,0 -BRDA:2191,165,0,0 -BRDA:2191,165,1,0 -BRDA:2195,166,0,0 -BRDA:2195,166,1,1 -BRDA:2195,167,0,1 -BRDA:2195,167,1,0 -BRDA:2195,167,2,0 -BRDA:2195,167,3,0 -BRDA:2200,168,0,0 -BRDA:2200,168,1,1 -BRDA:2205,169,0,1 -BRDA:2205,169,1,0 -BRDA:2214,170,0,0 -BRDA:2214,170,1,0 -BRDA:2220,171,0,0 -BRDA:2220,171,1,0 -BRDA:2220,172,0,0 -BRDA:2220,172,1,0 -BRDA:2222,173,0,0 -BRDA:2222,173,1,0 -BRDA:2237,174,0,1 -BRDA:2237,174,1,0 -BRDA:2251,175,0,1 -BRDA:2251,175,1,2 -BRDA:2253,176,0,1 -BRDA:2253,176,1,1 -BRDA:2255,177,0,1 -BRDA:2255,177,1,0 -BRDA:2265,178,0,1 -BRDA:2265,178,1,5 -BRDA:2267,179,0,4 -BRDA:2267,179,1,2 -BRDA:2269,180,0,1 -BRDA:2269,180,1,3 -BRDA:2270,181,0,2 -BRDA:2270,181,1,1 -BRDA:2286,182,0,0 -BRDA:2286,182,1,1 -BRDA:2299,183,0,0 -BRDA:2299,183,1,1 -BRDA:2303,184,0,0 -BRDA:2303,184,1,1 -BRDA:2308,185,0,1 -BRDA:2308,185,1,0 -BRDA:2325,186,0,0 -BRDA:2325,186,1,1 -BRDA:2325,187,0,1 -BRDA:2325,187,1,0 -BRDA:2325,187,2,0 -BRDA:2325,187,3,0 -BRDA:2327,188,0,0 -BRDA:2327,188,1,0 -BRDA:2347,189,0,0 -BRDA:2347,189,1,0 -BRDA:2348,190,0,0 -BRDA:2348,190,1,0 -BRDA:2363,191,0,2 -BRDA:2363,191,1,11 -BRDA:2367,192,0,3 -BRDA:2367,192,1,8 -BRDA:2372,193,0,0 -BRDA:2372,193,1,4 -BRDA:2380,194,0,0 -BRDA:2380,194,1,4 -BRDA:2384,195,0,4 -BRDA:2384,195,1,0 -BRDA:2384,196,0,4 -BRDA:2384,196,1,4 -BRDA:2391,197,0,0 -BRDA:2391,197,1,0 -BRDA:2391,198,0,0 -BRDA:2391,198,1,0 -BRDA:2422,199,0,10 -BRDA:2422,199,1,8 -BRDA:2422,200,0,18 -BRDA:2422,200,1,18 -BRDA:2432,201,0,3 -BRDA:2432,201,1,1 -BRDA:2463,202,0,48 -BRDA:2463,202,1,351 -BRDA:2463,203,0,399 -BRDA:2463,203,1,214 -BRDA:2463,203,2,185 -BRDA:2484,204,0,335 -BRDA:2484,204,1,0 -BRDA:2489,205,0,272 -BRDA:2489,205,1,63 -BRDA:2489,206,0,335 -BRDA:2489,206,1,117 -BRDA:2489,206,2,335 -BRDA:2496,207,0,7 -BRDA:2496,207,1,328 -BRDA:2506,208,0,100 -BRDA:2506,208,1,444 -BRDA:2506,209,0,544 -BRDA:2506,209,1,106 -BRDA:2516,210,0,111 -BRDA:2516,210,1,9 -BRDA:2524,211,0,0 -BRDA:2524,211,1,4 -BRDA:2535,212,0,0 -BRDA:2535,212,1,0 -BRDA:2564,213,0,0 -BRDA:2564,213,1,4 -BRDA:2564,214,0,4 -BRDA:2564,214,1,1 -BRDA:2566,215,0,1 -BRDA:2566,215,1,3 -BRDA:2566,216,0,4 -BRDA:2566,216,1,4 -BRDA:2568,217,0,3 -BRDA:2568,217,1,0 -BRDA:2572,218,0,4 -BRDA:2572,218,1,0 -BRDA:2574,219,0,4 -BRDA:2574,219,1,0 -BRDA:2590,220,0,4 -BRDA:2590,220,1,0 -BRDA:2608,221,0,7 -BRDA:2608,221,1,0 -BRDA:2608,222,0,7 -BRDA:2608,222,1,7 -BRDA:2608,222,2,7 -BRDA:2608,222,3,7 -BRDA:2608,222,4,1 -BRDA:2614,223,0,5 -BRDA:2614,223,1,0 -BRDA:2622,224,0,7 -BRDA:2622,224,1,0 -BRDA:2622,225,0,7 -BRDA:2622,225,1,7 -BRDA:2638,226,0,4 -BRDA:2638,226,1,3 -BRDA:2643,227,0,0 -BRDA:2643,227,1,21 -BRDA:2649,228,0,0 -BRDA:2649,228,1,3 -BRDA:2689,229,0,28 -BRDA:2689,229,1,0 -BRDA:2690,230,0,28 -BRDA:2690,230,1,0 -BRDA:2692,231,0,41 -BRDA:2692,231,1,0 -BRDA:2704,232,0,29 -BRDA:2704,232,1,25 -BRDA:2719,233,0,2 -BRDA:2719,233,1,7 -BRDA:2723,234,0,3 -BRDA:2723,234,1,6 -BRDA:2741,235,0,2 -BRDA:2741,235,1,7 -BRDA:2757,236,0,9 -BRDA:2757,236,1,3 -BRDA:2758,237,0,9 -BRDA:2758,237,1,3 -BRDA:2759,238,0,9 -BRDA:2759,238,1,3 -BRDA:2760,239,0,9 -BRDA:2760,239,1,3 -BRDA:2777,240,0,2 -BRDA:2777,240,1,254 -BRDA:2781,241,0,66 -BRDA:2781,241,1,190 -BRDA:2781,242,0,256 -BRDA:2781,242,1,182 -BRDA:2781,242,2,252 -BRDA:2782,243,0,62 -BRDA:2782,243,1,4 -BRDA:2791,244,0,21 -BRDA:2791,244,1,235 -BRDA:2791,245,0,256 -BRDA:2791,245,1,244 -BRDA:2791,245,2,74 -BRDA:2794,246,0,2 -BRDA:2794,246,1,8 -BRDA:2813,247,0,76 -BRDA:2813,247,1,183 -BRDA:2813,248,0,13 -BRDA:2813,248,1,63 -BRDA:2817,249,0,10 -BRDA:2817,249,1,140 -BRDA:2817,250,0,150 -BRDA:2817,250,1,140 -BRDA:2819,251,0,9 -BRDA:2819,251,1,0 -BRDA:2822,252,0,1 -BRDA:2822,252,1,0 -BRDA:2833,253,0,0 -BRDA:2833,253,1,1 -BRDA:2833,254,0,1 -BRDA:2833,254,1,0 -BRDA:2852,255,0,0 -BRDA:2852,255,1,2 -BRDA:2862,256,0,0 -BRDA:2862,256,1,0 -BRDA:2868,257,0,47 -BRDA:2868,257,1,0 -BRDA:2900,258,0,0 -BRDA:2900,258,1,1 -BRDA:2900,259,0,1 -BRDA:2900,259,1,0 -BRDA:2900,259,2,0 -BRDA:2903,260,0,0 -BRDA:2903,260,1,1 -BRDA:2903,261,0,1 -BRDA:2903,261,1,0 -BRDA:2903,261,2,0 -BRDA:2903,261,3,0 -BRDA:2921,262,0,32 -BRDA:2921,262,1,94 -BRDA:2924,263,0,6 -BRDA:2924,263,1,88 -BRDA:2930,264,0,0 -BRDA:2930,264,1,2 -BRDA:2934,265,0,49 -BRDA:2934,265,1,47 -BRF:564 -BRH:400 +BRDA:697,95,1,6 +BRDA:699,96,0,0 +BRDA:699,96,1,2 +BRDA:703,97,0,0 +BRDA:703,97,1,8 +BRDA:703,98,0,8 +BRDA:703,98,1,3 +BRDA:707,99,0,5 +BRDA:707,99,1,3 +BRDA:711,100,0,1 +BRDA:711,100,1,6 +BRDA:782,101,0,3 +BRDA:782,101,1,1 +BRDA:783,102,0,3 +BRDA:783,102,1,0 +BRDA:791,103,0,2 +BRDA:791,103,1,2 +BRDA:796,104,0,1 +BRDA:796,104,1,1 +BRDA:798,105,0,1 +BRDA:798,105,1,0 +BRDA:810,106,0,0 +BRDA:810,106,1,2 +BRDA:860,107,0,0 +BRDA:860,107,1,1 +BRDA:884,108,0,5 +BRDA:884,108,1,0 +BRDA:884,109,0,5 +BRDA:884,109,1,5 +BRDA:884,109,2,5 +BRDA:990,110,0,2 +BRDA:990,110,1,0 +BRDA:990,111,0,2 +BRDA:990,111,1,2 +BRDA:990,111,2,2 +BRDA:994,112,0,2 +BRDA:994,112,1,0 +BRDA:1005,113,0,0 +BRDA:1005,113,1,2 +BRDA:1014,114,0,0 +BRDA:1014,114,1,2 +BRDA:1017,115,0,2 +BRDA:1017,115,1,0 +BRDA:1024,116,0,2 +BRDA:1024,116,1,0 +BRDA:1036,117,0,1 +BRDA:1036,117,1,1 +BRDA:1110,118,0,2 +BRDA:1110,118,1,1 +BRDA:1115,119,0,2 +BRDA:1115,119,1,1 +BRDA:1131,120,0,90 +BRDA:1131,120,1,0 +BRDA:1143,121,0,0 +BRDA:1143,121,1,2 +BRDA:1143,122,0,2 +BRDA:1143,122,1,2 +BRDA:1191,123,0,1 +BRDA:1191,123,1,4 +BRDA:1207,124,0,0 +BRDA:1207,124,1,4 +BRDA:1223,125,0,85 +BRDA:1223,125,1,68 +BRDA:1223,125,2,64 +BRDA:1223,125,3,64 +BRDA:1238,126,0,168 +BRDA:1238,126,1,126 +BRDA:1238,127,0,294 +BRDA:1238,127,1,294 +BRDA:1442,128,0,1 +BRDA:1442,128,1,0 +BRDA:1444,129,0,1 +BRDA:1444,129,1,0 +BRDA:1489,130,0,2 +BRDA:1489,130,1,2 +BRDA:1495,131,0,8 +BRDA:1495,131,1,4 +BRDA:1496,132,0,2 +BRDA:1496,132,1,6 +BRDA:1496,133,0,8 +BRDA:1496,133,1,4 +BRDA:1496,133,2,4 +BRDA:1496,133,3,2 +BRDA:1498,134,0,4 +BRDA:1498,134,1,2 +BRDA:1501,135,0,2 +BRDA:1501,135,1,2 +BRDA:1501,136,0,4 +BRDA:1501,136,1,4 +BRDA:1501,136,2,2 +BRDA:1536,137,0,4 +BRDA:1536,137,1,4 +BRDA:1536,138,0,8 +BRDA:1536,138,1,6 +BRDA:1537,139,0,4 +BRDA:1537,139,1,4 +BRDA:1539,140,0,0 +BRDA:1539,140,1,8 +BRDA:1550,141,0,0 +BRDA:1550,141,1,16 +BRDA:1550,142,0,16 +BRDA:1550,142,1,16 +BRDA:1550,142,2,4 +BRDA:1550,142,3,0 +BRDA:1550,142,4,0 +BRDA:1562,143,0,12 +BRDA:1562,143,1,0 +BRDA:1563,144,0,6 +BRDA:1563,144,1,6 +BRDA:1565,145,0,10 +BRDA:1565,145,1,2 +BRDA:1568,146,0,10 +BRDA:1568,146,1,2 +BRDA:1575,147,0,8 +BRDA:1575,147,1,12 +BRDA:1577,148,0,6 +BRDA:1577,148,1,6 +BRDA:1888,149,0,1 +BRDA:1888,149,1,0 +BRDA:1891,150,0,1 +BRDA:1891,150,1,0 +BRDA:2011,151,0,6 +BRDA:2011,151,1,0 +BRDA:2042,152,0,6 +BRDA:2042,152,1,4 +BRDA:2042,153,0,10 +BRDA:2042,153,1,4 +BRDA:2049,154,0,1 +BRDA:2049,154,1,3 +BRDA:2068,155,0,0 +BRDA:2068,155,1,2 +BRDA:2071,156,0,0 +BRDA:2071,156,1,2 +BRDA:2085,157,0,2 +BRDA:2085,157,1,0 +BRDA:2116,158,0,5 +BRDA:2116,158,1,0 +BRDA:2116,159,0,5 +BRDA:2116,159,1,5 +BRDA:2120,160,0,5 +BRDA:2120,160,1,0 +BRDA:2124,161,0,5 +BRDA:2124,161,1,0 +BRDA:2152,162,0,0 +BRDA:2152,162,1,0 +BRDA:2187,163,0,0 +BRDA:2187,163,1,1 +BRDA:2187,164,0,1 +BRDA:2187,164,1,0 +BRDA:2189,165,0,0 +BRDA:2189,165,1,1 +BRDA:2189,166,0,1 +BRDA:2189,166,1,0 +BRDA:2191,167,0,0 +BRDA:2191,167,1,0 +BRDA:2198,168,0,0 +BRDA:2198,168,1,0 +BRDA:2202,169,0,0 +BRDA:2202,169,1,1 +BRDA:2202,170,0,1 +BRDA:2202,170,1,0 +BRDA:2202,170,2,0 +BRDA:2202,170,3,0 +BRDA:2207,171,0,0 +BRDA:2207,171,1,1 +BRDA:2212,172,0,1 +BRDA:2212,172,1,0 +BRDA:2221,173,0,0 +BRDA:2221,173,1,0 +BRDA:2227,174,0,0 +BRDA:2227,174,1,0 +BRDA:2227,175,0,0 +BRDA:2227,175,1,0 +BRDA:2229,176,0,0 +BRDA:2229,176,1,0 +BRDA:2244,177,0,1 +BRDA:2244,177,1,0 +BRDA:2258,178,0,1 +BRDA:2258,178,1,2 +BRDA:2260,179,0,1 +BRDA:2260,179,1,1 +BRDA:2262,180,0,1 +BRDA:2262,180,1,0 +BRDA:2272,181,0,1 +BRDA:2272,181,1,5 +BRDA:2274,182,0,4 +BRDA:2274,182,1,2 +BRDA:2276,183,0,1 +BRDA:2276,183,1,3 +BRDA:2277,184,0,2 +BRDA:2277,184,1,1 +BRDA:2293,185,0,0 +BRDA:2293,185,1,1 +BRDA:2306,186,0,0 +BRDA:2306,186,1,1 +BRDA:2310,187,0,0 +BRDA:2310,187,1,1 +BRDA:2315,188,0,1 +BRDA:2315,188,1,0 +BRDA:2332,189,0,0 +BRDA:2332,189,1,1 +BRDA:2332,190,0,1 +BRDA:2332,190,1,0 +BRDA:2332,190,2,0 +BRDA:2332,190,3,0 +BRDA:2334,191,0,0 +BRDA:2334,191,1,0 +BRDA:2354,192,0,0 +BRDA:2354,192,1,0 +BRDA:2355,193,0,0 +BRDA:2355,193,1,0 +BRDA:2370,194,0,2 +BRDA:2370,194,1,11 +BRDA:2374,195,0,3 +BRDA:2374,195,1,8 +BRDA:2379,196,0,0 +BRDA:2379,196,1,4 +BRDA:2388,197,0,0 +BRDA:2388,197,1,4 +BRDA:2422,198,0,10 +BRDA:2422,198,1,8 +BRDA:2422,199,0,18 +BRDA:2422,199,1,18 +BRDA:2432,200,0,3 +BRDA:2432,200,1,1 +BRDA:2463,201,0,48 +BRDA:2463,201,1,339 +BRDA:2463,202,0,387 +BRDA:2463,202,1,202 +BRDA:2463,202,2,185 +BRDA:2484,203,0,335 +BRDA:2484,203,1,0 +BRDA:2489,204,0,272 +BRDA:2489,204,1,63 +BRDA:2489,205,0,335 +BRDA:2489,205,1,117 +BRDA:2489,205,2,335 +BRDA:2496,206,0,7 +BRDA:2496,206,1,328 +BRDA:2506,207,0,100 +BRDA:2506,207,1,444 +BRDA:2506,208,0,544 +BRDA:2506,208,1,106 +BRDA:2516,209,0,111 +BRDA:2516,209,1,9 +BRDA:2524,210,0,0 +BRDA:2524,210,1,4 +BRDA:2537,211,0,0 +BRDA:2537,211,1,0 +BRDA:2569,212,0,0 +BRDA:2569,212,1,4 +BRDA:2569,213,0,4 +BRDA:2569,213,1,1 +BRDA:2571,214,0,1 +BRDA:2571,214,1,3 +BRDA:2571,215,0,4 +BRDA:2571,215,1,4 +BRDA:2573,216,0,3 +BRDA:2573,216,1,0 +BRDA:2584,217,0,4 +BRDA:2584,217,1,0 +BRDA:2599,218,0,5 +BRDA:2599,218,1,0 +BRDA:2602,219,0,5 +BRDA:2602,219,1,0 +BRDA:2621,220,0,7 +BRDA:2621,220,1,1 +BRDA:2621,221,0,8 +BRDA:2621,221,1,7 +BRDA:2621,221,2,7 +BRDA:2621,221,3,7 +BRDA:2621,221,4,1 +BRDA:2628,222,0,5 +BRDA:2628,222,1,0 +BRDA:2633,223,0,7 +BRDA:2633,223,1,0 +BRDA:2640,224,0,7 +BRDA:2640,224,1,0 +BRDA:2640,225,0,7 +BRDA:2640,225,1,7 +BRDA:2656,226,0,4 +BRDA:2656,226,1,3 +BRDA:2661,227,0,0 +BRDA:2661,227,1,21 +BRDA:2667,228,0,0 +BRDA:2667,228,1,3 +BRDA:2711,229,0,28 +BRDA:2711,229,1,0 +BRDA:2712,230,0,28 +BRDA:2712,230,1,0 +BRDA:2714,231,0,41 +BRDA:2714,231,1,0 +BRDA:2726,232,0,29 +BRDA:2726,232,1,25 +BRDA:2741,233,0,2 +BRDA:2741,233,1,7 +BRDA:2745,234,0,3 +BRDA:2745,234,1,6 +BRDA:2763,235,0,2 +BRDA:2763,235,1,7 +BRDA:2779,236,0,9 +BRDA:2779,236,1,3 +BRDA:2780,237,0,9 +BRDA:2780,237,1,3 +BRDA:2781,238,0,9 +BRDA:2781,238,1,3 +BRDA:2782,239,0,9 +BRDA:2782,239,1,3 +BRDA:2799,240,0,2 +BRDA:2799,240,1,218 +BRDA:2803,241,0,57 +BRDA:2803,241,1,163 +BRDA:2803,242,0,220 +BRDA:2803,242,1,166 +BRDA:2803,242,2,216 +BRDA:2804,243,0,53 +BRDA:2804,243,1,4 +BRDA:2813,244,0,16 +BRDA:2813,244,1,204 +BRDA:2813,245,0,220 +BRDA:2813,245,1,208 +BRDA:2813,245,2,54 +BRDA:2816,246,0,2 +BRDA:2816,246,1,7 +BRDA:2835,247,0,56 +BRDA:2835,247,1,167 +BRDA:2835,248,0,13 +BRDA:2835,248,1,43 +BRDA:2839,249,0,14 +BRDA:2839,249,1,140 +BRDA:2839,250,0,154 +BRDA:2839,250,1,140 +BRDA:2841,251,0,13 +BRDA:2841,251,1,0 +BRDA:2844,252,0,1 +BRDA:2844,252,1,0 +BRDA:2855,253,0,0 +BRDA:2855,253,1,1 +BRDA:2855,254,0,1 +BRDA:2855,254,1,0 +BRDA:2874,255,0,0 +BRDA:2874,255,1,2 +BRDA:2884,256,0,0 +BRDA:2884,256,1,0 +BRDA:2890,257,0,47 +BRDA:2890,257,1,0 +BRDA:2922,258,0,0 +BRDA:2922,258,1,1 +BRDA:2922,259,0,1 +BRDA:2922,259,1,0 +BRDA:2922,259,2,0 +BRDA:2925,260,0,0 +BRDA:2925,260,1,1 +BRDA:2925,261,0,1 +BRDA:2925,261,1,0 +BRDA:2925,261,2,0 +BRDA:2925,261,3,0 +BRDA:2943,262,0,32 +BRDA:2943,262,1,94 +BRDA:2946,263,0,6 +BRDA:2946,263,1,88 +BRDA:2952,264,0,0 +BRDA:2952,264,1,2 +BRDA:2956,265,0,49 +BRDA:2956,265,1,47 +BRF:569 +BRH:408 end_of_record diff --git a/test/tests.js b/test/tests.js index 48da1c7..7d117f9 100644 --- a/test/tests.js +++ b/test/tests.js @@ -1008,6 +1008,22 @@ QUnit.test("isReLoginRequired", function ( assert ) { assert.ok(tradable.isReLoginRequired({'responseJSON': {'httpStatus': 403, 'code': 1005}}), "isReLoginRequired"); }); +QUnit.test("isTokenExpiredCode", function ( assert ) { + assert.ok(!tradable.isTokenExpiredCode(undefined), "isTokenExpiredCode: undefined"); + assert.ok(!tradable.isTokenExpiredCode({'responseJSON': {'httpStatus': 403 }}), "isTokenExpiredCode no code"); + assert.ok(!tradable.isTokenExpiredCode({'responseJSON': {'code': 1007}}), "isTokenExpiredCode no status"); + assert.ok(!tradable.isTokenExpiredCode({'responseJSON': {'httpStatus': 403, 'code': 107}}), "isTokenExpiredCode wrong code"); + assert.ok(!tradable.isTokenExpiredCode({'responseJSON': {'httpStatus': 43, 'code': 1007}}), "isTokenExpiredCode wrong status"); + assert.ok(tradable.isTokenExpiredCode({'responseJSON': {'httpStatus': 403, 'code': 1007}}), "isTokenExpiredCode"); +}); + +QUnit.test("Tradable logging", function ( assert ) { + tradable.log("test"); + tradable.warn("test"); + tradable.error("test"); + assert.ok(true, "Tradable logging does not break"); +}); + QUnit.test("Sign Out", function ( assert ) { signOut(assert); });