{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/state/modules/signalr.js","webpack:///./src/state/modules/auth.js","webpack:///./src/state/modules/notification.js","webpack:///./src/oauth-client.js","webpack:///./src/state/modules/messages.js","webpack:///./src/state/modules/execution-signalr.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/locales sync [A-Za-z0-9-_,\\s]+\\.json$/","webpack:///./src/state/modules/execution.js","webpack:///./src/backend-oauth-client.js","webpack:///./src/App.vue?5ba7","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/i18n.js","webpack:///./src/main.js","webpack:///./src/state/modules/index.js","webpack:///./src/state/store.js","webpack:///./src/explorer-axois.js","webpack:///./src/router/routes.js","webpack:///./src/router/hedge-routes.js","webpack:///./src/router/index.js","webpack:///./src/state/modules/layout.js","webpack:///index|\\.unit\\.).)*\\.js$","webpack:///./src/execution-http.js","webpack:///./src/state/modules/active-indices.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","signalR","require","connection","state","connectionId","mutations","SET_CONNECTIONID","newValue","actions","connect","dispatch","commit","stop","localStorage","getItem","uri","process","log","HubConnectionBuilder","withUrl","accessTokenFactory","withAutomaticReconnect","build","on","root","resp","start","catch","onreconnecting","onreconnected","onclose","disconnect","currentUser","loadState","getElementById","style","display","SET_CURRENT_USER","user","id","IdentityId","username","Name","roles","Roles","permissions","Permissions","isAdmin","find","a","isC8Internal","saveState","removeItem","getters","token","loggedIn","logIn","userName","password","http","login","response","logOut","clearTokens","setItem","JSON","stringify","b","parse","success","clear","axiosManager","createAxiosInstance","baseURL","authBaseURL","items","SET_ITEMS","count","activeExists","x","status","loadActualStatus","map","webpackContext","req","webpackContextResolve","keys","__timer","BINANCE_SIGNATURE","bytes","hmacSHA256","toString","Hex","binanceClient","axios","headers","interactiveBrokerClient","camelizeKeys","obj","Array","isArray","v","constructor","reduce","camelCase","UPLOAD_TRANSACTIONS","EXECUTION_RUNTIME_INIT_REQ_NAME","SAVE_EXECUTION_SETTINGS_REQ_NAME","LOAD_EXECUTION_SETTINGS_REQ_NAME","SAVE_USER_SETTINGS_REQ_NAME","LOAD_USER_SETTINGS_REQ_NAME","LOAD_LIVE_INDICIES_REQ_NAME","LOAD_LIVE_ITEM_STAT_REQ_NAME","LOAD_LIVE_ITEM_REBALANCE_REQ_NAME","LOAD_LIVE_ITEM_PORTFOLIO_POSITIONS_REQ_NAME","LOAD_LIVE_ITEM_PORTFOLIO_TRANSACTIONS_REQ_NAME","LOAD_TAX_LOSS_HARVEST_REQ_NAME","CALCULATE_FX_HEDGE","GET_FX_HEDGE_SETTINGS","GET_FX_VOLATILTY","CALCULATE_FX_HEDGE_CHARTS","CALCULATE_FX_HEDGE_DETAILS","CALCULATE_FX_HEDGE_PORTFOLIO_DETAILS","TIMEOUT","getDefaultState","binance","connected","serverTime","exchangeInfo","interactiveBrokers","uploadTransactionsFromTime","liveIndicies","isBackendAlive","requests","failedRequests","runtime","orders","item","currencyName","chartData","weights","totalReturn","ytd","mtd","dtd","reBalanceCloseoutTrades","taxLossHarvestTrades","country","reBalance","positions","userSettings","executionSettings","transactions","total","reqSize","SET_ORDER_PROCESSING","processing","SET_UPLOAD_TRANSACTIONS_FROM_TIME","PAPER_TRADE_UPDATE","filter","selected","forEach","orderStatus","HANDLE_INTERACTIVE_BROKER_POSITIONS_UPDATE","brokerPositions","pos","ticker","includes","nameList","split","brokerPos","instrument","brokerPosition","position","HANDLE_INTERACTIVE_BROKER_UPDATE","order","clOrderID","ClOrderID","index","indexOf","filled","cumQty","remaining","leavesQty","SET_INTERACTIVE_BROKERS_CONNECTED","copy","SET_BINANCE_CONNECTED","SET_BINANCE_SERVER_TIME","SET_BINANCE_EXCHANGE_INFO","SET_ORDER_SIZE","size","Number","NaN","orderQuantity","SET_ORDER_PRICE","price","parseFloat","SET_ORDER_PARAMETERS","parameters","orderParameters","SET_ORDER_TYPE","orderType","settings","orderTypes","SELECT_ALL_RUNTIME_ORDERS","UNSELECT_ALL_RUNTIME_ORDERS","SET_ORDER_SELECTED","SET_REBALANCE_CLOSEOUT_TRADES","SET_TAX_LOSS_HARVEST_TRADES","SET_COUNTRY","SET_ITEM_ID","SET_CURRENCY_NAME","SET_IS_BACKEND_ALIVE","SET_LIVE_INDICIES_LOADING","loading","BEGIN_REQUEST","HANDLE_LOAD_LIVE_INDICIES_REQ","payload","Payload","Id","Status","END_REQUEST","reqId","ReqId","failed","errorMessage","ErrorMessage","HANDLE_INIT_REQUEST","ChartData","Weights","TotalReturn","YTD","MTD","DTD","timeStamp","moment","dateTime","DateTime","unix","Value","productName","ProductName","Ticker","weight","Weight","displayName","DisplayName","currentSize","CurrentSize","difference","Difference","proposedSize","ProposedSize","newItem","OrderSettings","OrderTypes","OrderType","OrderParameters","defaultOrderType","DefaultOrderType","providerName","ProviderName","debugLevel","DebugLevel","autoExecuteTime","AutoExecuteTime","autoSnap","AutoSnap","hasExecuted","HasExecuted","aus","AUS","ausCurrency","AUSCurrency","gearing","Gearing","startDate","StartDate","format","annualFixFee","AnnualFixFee","annualPerformanceFee","AnnualPerformanceFee","UserName","Password","email","Email","broker","Broker","account","Account","defaultOrderSettings","DefaultOrderSettings","options","brokers","Options","Brokers","brokerName","BrokerName","Settings","Size","BrokerPosition","pl","PL","warning","Warning","Total","Items","direction","Direction","Price","timestamp","Timestamp","more","taxLoss","TaxLoss","runtimeOrders","cancellAllInteractiveBrokersOrders","checkConnectStatusOfInteractiveBrokers","updateInteractiveBrokersOrders","uploadTransactionsFromInteractiveBrokers","param","backendTransactions","tx","timeStampStr","toDate","execId","execID","orderId","orderID","qty","cancelOrderInteractiveBrokers","post","executeOrderInteractiveBrokers","dto","getBrokerPositionsFromInteractiveBrokers","loadTaxLossHarvest","connectToInteractiveBrokers","disconnectFromInteractiveBrokers","initInteractiveBrokers","paperTrade","uuid","v1","orderSide","Math","abs","sendBinanceOrder","apiKey","apiSecret","params","signature","reqParams","connectToBinance","timeResponse","exchangeResponse","disconnectFromBinance","backendInvoke","rootState","mutation","clientId","signalr","auth","userId","backendHttp","makeReq","changeCurrency","changeCountry","changeReBalanceCloseoutTrades","changeTaxLossHarvestTrades","rebelance","saveExecutionSettings","saveUserSettings","saveUserSettingsInBackend","loadExecutionSettings","loadUserSettings","loadPositions","loadTransactions","take","skip","loadMoreItemTransactions","loadItem","loadLiveIndicies","initRuntime","refresh","taxLossHarvest","taxLossHarvestData","closeout","loadFxHedge","loadFxHedgeSettings","loadFxVolatility","loadFxHedgeCharts","getFxHedgeDetails","getFxHedgePortfolioDetails","_vm","this","_h","$createElement","_c","_self","attrs","staticRenderFns","page","titleTemplate","title","$store","created","component","loadLocaleMessages","locales","messages","matched","match","locale","Vue","use","VueI18n","fallbackLocale","hcHeatmap","Highcharts","ExportingInit","ExportData","Stock","IndicatorsAll","highchartsMoreInit","solidGaugeInit","HighchartsVue","VueAuthHref","config","productionTip","VueYoutube","BootstrapVue","vco","Vuelidate","VueSweetalert2","VueMask","VueGoogleMaps","load","libraries","installComponents","VueApexCharts","router","store","i18n","render","h","App","$mount","modulesCache","storeData","getNamespace","subtree","path","namespace","namespaced","requireModule","fileName","moduleDefinition","modulePath","replace","pop","Vuex","Store","strict","saveTokens","access_token","refresh_token","isAuth","axiosInstance","loginRequest","Token","AccessToken","RefreshToken","requestInterceptor","accessToken","Authorization","responseInterceptor","responseErrorInterceptor","refreshToken","location","reload","interceptors","meta","beforeResolve","routeTo","routeFrom","next","authRequired","authRequiredOnPreviousRoute","some","route","props","role","assign","query","rList","routes","VueRouter","VueMeta","keyName","hedgeRoutes","scrollBehavior","to","from","savedPosition","y","sendAudit","beforeEach","redirectToLogin","protocol","hostname","substring","redirectFrom","fullPath","layoutType","layoutWidth","leftSidebarType","topbar","loader","fullScreen","CHANGE_LAYOUT","CHANGE_LAYOUT_WIDTH","CHANGE_LEFT_SIDEBAR_TYPE","CHANGE_TOPBAR","CHANGE_FULLSCREEN","LOADER","changeLayoutType","changeLayoutWidth","changeLeftSidebarType","changeTopbar","changeLoaderValue","httpClient","VUE_APP_BASE_EXECUTION_URL","getAuthToken","authInterceptor","errorInterceptor","SET_LOADING"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAG/Be,GAAqBA,EAAoBhB,GAE5C,MAAMO,EAASC,OACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAGnBC,EAAqB,CACxB,IAAO,GAMJjB,EAAkB,CACrB,IAAO,GAGJK,EAAkB,GAGtB,SAASa,EAAe7B,GACvB,OAAOyB,EAAoBK,EAAI,OAAS,GAAG9B,IAAUA,GAAW,IAAM,CAAC,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,YAAYA,GAAW,MAIhmC,SAASyB,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAUgC,QAGnC,IAAIC,EAASL,EAAiB5B,GAAY,CACzCK,EAAGL,EACHkC,GAAG,EACHF,QAAS,IAUV,OANAlB,EAAQd,GAAUW,KAAKsB,EAAOD,QAASC,EAAQA,EAAOD,QAASN,GAG/DO,EAAOC,GAAI,EAGJD,EAAOD,QAKfN,EAAoBS,EAAI,SAAuBlC,GAC9C,IAAImC,EAAW,GAIXC,EAAY,CAAC,iBAAiB,GAC/BR,EAAmB5B,GAAUmC,EAASvB,KAAKgB,EAAmB5B,IACzB,IAAhC4B,EAAmB5B,IAAkBoC,EAAUpC,IACtDmC,EAASvB,KAAKgB,EAAmB5B,GAAW,IAAIqC,SAAQ,SAASC,EAASC,GAIzE,IAHA,IAAIC,EAAO,QAAU,GAAGxC,IAAUA,GAAW,IAAM,CAAC,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,YAAYA,GAAW,OACxkCyC,EAAWhB,EAAoBK,EAAIU,EACnCE,EAAmBC,SAASC,qBAAqB,QAC7CxC,EAAI,EAAGA,EAAIsC,EAAiBpC,OAAQF,IAAK,CAChD,IAAIyC,EAAMH,EAAiBtC,GACvB0C,EAAWD,EAAIE,aAAa,cAAgBF,EAAIE,aAAa,QACjE,GAAe,eAAZF,EAAIG,MAAyBF,IAAaN,GAAQM,IAAaL,GAAW,OAAOH,IAErF,IAAIW,EAAoBN,SAASC,qBAAqB,SACtD,IAAQxC,EAAI,EAAGA,EAAI6C,EAAkB3C,OAAQF,IAAK,CAC7CyC,EAAMI,EAAkB7C,GACxB0C,EAAWD,EAAIE,aAAa,aAChC,GAAGD,IAAaN,GAAQM,IAAaL,EAAU,OAAOH,IAEvD,IAAIY,EAAUP,SAASQ,cAAc,QACrCD,EAAQF,IAAM,aACdE,EAAQE,KAAO,WACfF,EAAQG,OAASf,EACjBY,EAAQI,QAAU,SAASC,GAC1B,IAAIC,EAAUD,GAASA,EAAME,QAAUF,EAAME,OAAOC,KAAOjB,EACvDkB,EAAM,IAAIC,MAAM,qBAAuB5D,EAAU,cAAgBwD,EAAU,KAC/EG,EAAIE,KAAO,wBACXF,EAAIH,QAAUA,SACP5B,EAAmB5B,GAC1BkD,EAAQY,WAAWC,YAAYb,GAC/BX,EAAOoB,IAERT,EAAQV,KAAOC,EAEf,IAAIuB,EAAOrB,SAASC,qBAAqB,QAAQ,GACjDoB,EAAKC,YAAYf,MACfgB,MAAK,WACPtC,EAAmB5B,GAAW,MAMhC,IAAImE,EAAqBxD,EAAgBX,GACzC,GAA0B,IAAvBmE,EAGF,GAAGA,EACFhC,EAASvB,KAAKuD,EAAmB,QAC3B,CAEN,IAAIC,EAAU,IAAI/B,SAAQ,SAASC,EAASC,GAC3C4B,EAAqBxD,EAAgBX,GAAW,CAACsC,EAASC,MAE3DJ,EAASvB,KAAKuD,EAAmB,GAAKC,GAGtC,IACIC,EADAC,EAAS3B,SAASQ,cAAc,UAGpCmB,EAAOC,QAAU,QACjBD,EAAOE,QAAU,IACb/C,EAAoBgD,IACvBH,EAAOI,aAAa,QAASjD,EAAoBgD,IAElDH,EAAOZ,IAAM7B,EAAe7B,GAG5B,IAAI2E,EAAQ,IAAIf,MAChBS,EAAmB,SAAUd,GAE5Be,EAAOhB,QAAUgB,EAAOjB,OAAS,KACjCuB,aAAaJ,GACb,IAAIK,EAAQlE,EAAgBX,GAC5B,GAAa,IAAV6E,EAAa,CACf,GAAGA,EAAO,CACT,IAAIC,EAAYvB,IAAyB,SAAfA,EAAMH,KAAkB,UAAYG,EAAMH,MAChE2B,EAAUxB,GAASA,EAAME,QAAUF,EAAME,OAAOC,IACpDiB,EAAMK,QAAU,iBAAmBhF,EAAU,cAAgB8E,EAAY,KAAOC,EAAU,IAC1FJ,EAAMM,KAAO,iBACbN,EAAMvB,KAAO0B,EACbH,EAAMnB,QAAUuB,EAChBF,EAAM,GAAGF,GAEVhE,EAAgBX,QAAWkF,IAG7B,IAAIV,EAAUW,YAAW,WACxBd,EAAiB,CAAEjB,KAAM,UAAWK,OAAQa,MAC1C,MACHA,EAAOhB,QAAUgB,EAAOjB,OAASgB,EACjC1B,SAASqB,KAAKC,YAAYK,GAG5B,OAAOjC,QAAQ+C,IAAIjD,IAIpBV,EAAoB4D,EAAIxE,EAGxBY,EAAoB6D,EAAI3D,EAGxBF,EAAoB8D,EAAI,SAASxD,EAASkD,EAAMO,GAC3C/D,EAAoBgE,EAAE1D,EAASkD,IAClC1E,OAAOmF,eAAe3D,EAASkD,EAAM,CAAEU,YAAY,EAAMC,IAAKJ,KAKhE/D,EAAoBoE,EAAI,SAAS9D,GACX,qBAAX+D,QAA0BA,OAAOC,aAC1CxF,OAAOmF,eAAe3D,EAAS+D,OAAOC,YAAa,CAAEC,MAAO,WAE7DzF,OAAOmF,eAAe3D,EAAS,aAAc,CAAEiE,OAAO,KAQvDvE,EAAoBwE,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQvE,EAAoBuE,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAK7F,OAAO8F,OAAO,MAGvB,GAFA5E,EAAoBoE,EAAEO,GACtB7F,OAAOmF,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOvE,EAAoB8D,EAAEa,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIR3E,EAAoB+E,EAAI,SAASxE,GAChC,IAAIwD,EAASxD,GAAUA,EAAOmE,WAC7B,WAAwB,OAAOnE,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADAP,EAAoB8D,EAAEC,EAAQ,IAAKA,GAC5BA,GAIR/D,EAAoBgE,EAAI,SAASgB,EAAQC,GAAY,OAAOnG,OAAOC,UAAUC,eAAeC,KAAK+F,EAAQC,IAGzGjF,EAAoBK,EAAI,IAGxBL,EAAoBkF,GAAK,SAAShD,GAA2B,MAApBiD,QAAQjC,MAAMhB,GAAYA,GAEnE,IAAIkD,EAAaC,OAAO,gBAAkBA,OAAO,iBAAmB,GAChEC,EAAmBF,EAAWjG,KAAK2F,KAAKM,GAC5CA,EAAWjG,KAAOf,EAClBgH,EAAaA,EAAWG,QACxB,IAAI,IAAI5G,EAAI,EAAGA,EAAIyG,EAAWvG,OAAQF,IAAKP,EAAqBgH,EAAWzG,IAC3E,IAAIU,EAAsBiG,EAI1B/F,EAAgBJ,KAAK,CAAC,EAAE,kBAEjBM,K,4NC1QH+F,G,oBAAUC,EAAQ,SAGpBC,EAAa,KAEJC,EAAQ,CAClBC,aAAc,MAGJC,EAAY,CACrBC,iBADqB,SACJH,EAAOI,GACpBJ,EAAMC,aAAeG,IAIhBC,EAAU,CACnBC,QADmB,YACW,IAApBC,EAAoB,EAApBA,SAAUC,EAAU,EAAVA,OAChB,OAAO,IAAIvF,SAAS,SAACC,GAMjB,GAJG6E,GACCA,EAAWU,OAGZC,aAAaC,QAAQ,gBAAiB,CACrC,IAAMC,EAAMC,uDACZrB,QAAQsB,IAAI,6BAA+BF,GAC3Cb,GAAa,IAAIF,EAAQkB,sBACtBC,QAAQJ,EAAK,CAAEK,mBAAoB,kBAAMP,aAAaC,QAAQ,mBAC9DO,yBACAC,QAEHpB,EAAWqB,GAAG,gBAAgB,SAAA1I,GAC5B8G,QAAQsB,IAAI,eAAgBpI,MAG9BqH,EAAWqB,GAAG,wBAAwB,SAAA1I,GAClC8G,QAAQsB,IAAI,uBAAwBpI,GACpC6H,EAAS,4BAA6B,KAAM,CAAEc,MAAM,OAGxDtB,EAAWqB,GAAG,wBAAwB,SAAA1I,GAClC8G,QAAQsB,IAAI,uBAAwBpI,GACpC6H,EAAS,4BAA6B,KAAM,CAAEc,MAAM,OAGxDtB,EAAWqB,GAAG,iBAAiB,SAAA1I,GAC3B8G,QAAQsB,IAAI,gBAAiBpI,GAC7B6H,EAAS,kBAAmB,KAAM,CAAEc,MAAM,OAG9CtB,EAAWqB,GAAG,wBAAwB,SAAA1I,GAClC8G,QAAQsB,IAAI,uBAAwBpI,GACpC8H,EAAO,wBAAyB,CAAEc,KAAM5I,GAAO,CAAE2I,MAAM,OAG3DtB,EAAWqB,GAAG,uBAAuB,SAAA1I,GACjC8G,QAAQsB,IAAI,sBAAuBpI,GACnC8H,EAAO,iCAAkC9H,EAAM,CAAE2I,MAAM,OAG3DtB,EAAWwB,QACRzE,MAAK,WACJ0C,QAAQsB,IAAI,qBAAsBf,EAAWA,WAAWE,cACxDO,EAAO,mBAAoBT,EAAWA,WAAWE,iBAGpDuB,OAAM,SAAC1G,GACJ0F,EAAO,kCAAkC,EAAO,CAAEa,MAAM,IACxD7B,QAAQjC,MAAMzC,MAGlBiF,EAAW0B,gBAAe,SAACxB,GACvBT,QAAQsB,IAAI,0BAA2Bb,GACvCO,EAAO,kCAAkC,EAAO,CAAEa,MAAM,OAG5DtB,EAAW2B,eAAc,SAACzB,GACtBT,QAAQsB,IAAI,yBAA0Bb,GACtCO,EAAO,mBAAoBP,MAI/BF,EAAW4B,QAAX,wCAAmB,8FAChBnC,QAAQsB,IAAI,mBACZN,EAAO,kCAAkC,EAAO,CAAEa,MAAM,IAFxC,4CAMvBnG,QAGT0G,WA5EoB,WA6Ef,OAAO,IAAI3G,SAAS,SAACC,GACd6E,GACAA,EAAWU,OAEdV,EAAa,KACb7E,U,iQC7FC8E,EAAQ,CACjB6B,YAAaC,EAAU,qBAGxBA,EAAU,sBACTvG,SAASwG,eAAe,gCAAgCC,MAAMC,QAAU,SAIrE,IAAM/B,EAAY,CACrBgC,iBADqB,SACJlC,EAAOI,GAGpB,GAAGA,EAAU,CACT,IAAM+B,EAAO,CACTC,GAAIhC,EAASiC,WACbC,SAAUlC,EAASmC,KACnBC,MAAOpC,EAASqC,MAChBC,YAAatC,EAASuC,YACtBC,UAASxC,EAASqC,MAAMI,MAAK,SAAAC,GAAC,MAAU,kBAANA,KAClCC,eAAc3C,EAASqC,MAAMI,MAAK,SAAAC,GAAC,MAAU,eAANA,MAG3CtD,QAAQsB,IAAI,mBAAoBqB,GAChCnC,EAAM6B,YAAcM,EACpBa,EAAU,mBAAoBb,QAG9BzB,aAAauC,WAAW,sBAKvBC,EAAU,CACnBC,MADmB,SACbnD,GACF,OAAOA,EAAM6B,YAAYsB,OAG7BC,SALmB,SAKVpD,GACL,QAASA,EAAM6B,cAIVxB,EAAU,CAIpBgD,MAJoB,YAIqC,IAAjD9C,EAAiD,EAAjDA,SAAUC,EAAuC,EAAvCA,OAAuC,yDAAJ,GAAvB8C,EAA2B,EAA3BA,SAAUC,EAAiB,EAAjBA,SAClC,OAAO,IAAItI,SAAS,SAACC,EAASC,GAC3BqI,OAAKC,MAAM,CAACnB,SAAUgB,EAAUC,aAAWzG,MAAK,SAAC4G,GAE7ChD,aAAauC,WAAW,qBACxBvC,aAAauC,WAAW,sBACxBvC,aAAauC,WAAW,2BAGxBzC,EAAO,mBAAoBkD,EAAShL,MACpC6H,EAAS,kBAAmB,KAAM,CAAEc,MAAM,IAC1Cd,EAAS,2BAA4B,KAAM,CAAEc,MAAM,IACnD9F,SAASwG,eAAe,gCAAgCC,MAAMC,QAAU,QACxE/G,EAAQwI,EAAShL,KAAKyK,UACvB3B,OAAM,SAACjE,GAENpC,EAAOoC,UAMnBoG,OA1BmB,YA0BA,IAAVnD,EAAU,EAAVA,OAELE,aAAauC,WAAW,qBACxBvC,aAAauC,WAAW,sBACxBvC,aAAauC,WAAW,2BACxBzC,EAAO,mBAAoB,MAC3BjF,SAASwG,eAAe,gCAAgCC,MAAMC,QAAU,OACxEuB,OAAKI,gBAQb,SAASZ,EAAU9D,EAAKc,GACpBN,OAAOgB,aAAamD,QAAQ3E,EAAK4E,KAAKC,UAAU/D,IAIpD,SAAS8B,EAAU5C,GACf,IAAM8E,EAAKtE,OAAOgB,aAAaC,QAAQzB,GACvC,OAAI8E,EACOF,KAAKG,MAAMD,GAEf,O,kCClGX,+HAAO,IAAMhE,EAAQ,CACjBhE,KAAM,KACN4B,QAAS,MAGAsC,EAAY,CACrBgE,QADqB,SACblE,EAAOpC,GACXoC,EAAMhE,KAAO,UACbgE,EAAMpC,QAAUA,GAEpBL,MALqB,SAKfyC,EAAOpC,GACToC,EAAMhE,KAAO,SACbgE,EAAMpC,QAAUA,GAEpBuG,MATqB,SASfnE,GACFA,EAAMhE,KAAO,KACbgE,EAAMpC,QAAU,OAIXyC,EAAU,CACnB6D,QADmB,WACCtG,GAAS,IAAnB4C,EAAmB,EAAnBA,OACNA,EAAO,UAAW5C,IAEtBL,MAJmB,WAIDK,GAAS,IAAnB4C,EAAmB,EAAnBA,OACJA,EAAO,QAAS5C,IAEpBuG,MAPmB,YAOD,IAAV3D,EAAU,EAAVA,OACJA,EAAO,Y,oCC5Bf,gBAEM4D,EAAeC,eAAoB,CACrCC,QAASzD,kCACT0D,YAAa1D,iCAGFuD,U,+OCLFpE,EAAQ,CACjBwE,MAAO,IAGEtE,EAAY,CACrBuE,UADqB,SACXzE,EAAOI,GACbJ,EAAMwE,MAAQpE,IAIT8C,EAAU,CACnBsB,MADmB,SACbxE,GACF,OAAOA,EAAMwE,OAEjBE,MAJmB,SAIb1E,GACF,OAAOA,EAAMwE,MAAMtL,QAEvByL,aAPmB,SAON3E,GACT,OAAOA,EAAMwE,MAAM3B,MAAK,SAAA+B,GAAC,MAAiB,YAAbA,EAAEC,QAAqC,aAAbD,EAAEC,YAIpDxE,EAAU,CAEpByE,iBAFoB,YAES,IAAVtE,EAAU,EAAVA,OACb,OAAO,IAAIvF,SAAS,SAACC,EAASC,GAC3BqI,OAAKhF,IAAI,kCAAkC1B,MAAK,SAAC4G,GAC7ClD,EAAO,YAAakD,EAAShL,MAC7BwC,OACDsG,OAAM,SAACjE,GAENpC,EAAOoC,Y,iLC9BnBwC,EAAa,KAEJC,EAAQ,CAClBC,aAAc,MAGJC,EAAY,CACrBC,iBADqB,SACJH,EAAOI,GACpBJ,EAAMC,aAAeG,IAIhBC,EAAU,CACnBC,QADmB,WAEf,OAAO,IAAIrF,SAAS,SAACC,GAiDjBA,QAGT0G,WAtDoB,WAuDf,OAAO,IAAI3G,SAAS,SAACC,GACd6E,GACAA,EAAWU,OAEdV,EAAa,KACb7E,U,k+FC3EZ,IAAI6J,EAAM,CACT,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,QAAS,OACT,WAAY,OACZ,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,gBAAiB,OACjB,aAAc,OACd,gBAAiB,OACjB,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,WAAY,OACZ,cAAe,OACf,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,YAAa,OACb,eAAgB,OAChB,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,QAAS,OACT,WAAY,OACZ,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,QAAS,OACT,WAAY,OACZ,OAAQ,OACR,UAAW,OACX,QAAS,OACT,WAAY,OACZ,QAAS,OACT,aAAc,OACd,gBAAiB,OACjB,WAAY,OACZ,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,YAAa,OACb,eAAgB,OAChB,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,gBAAiB,OACjB,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,QAIf,SAASC,EAAeC,GACvB,IAAI7C,EAAK8C,EAAsBD,GAC/B,OAAO5K,EAAoB+H,GAE5B,SAAS8C,EAAsBD,GAC9B,IAAI5K,EAAoBgE,EAAE0G,EAAKE,GAAM,CACpC,IAAInK,EAAI,IAAI0B,MAAM,uBAAyByI,EAAM,KAEjD,MADAnK,EAAE2B,KAAO,mBACH3B,EAEP,OAAOiK,EAAIE,GAEZD,EAAeG,KAAO,WACrB,OAAOhM,OAAOgM,KAAKJ,IAEpBC,EAAe9J,QAAUgK,EACzBtK,EAAOD,QAAUqK,EACjBA,EAAe5C,GAAK,Q,uBCnSpB,IAAI2C,EAAM,CACT,YAAa,OACb,YAAa,OACb,YAAa,OACb,YAAa,OACb,YAAa,QAId,SAASC,EAAeC,GACvB,IAAI7C,EAAK8C,EAAsBD,GAC/B,OAAO5K,EAAoB+H,GAE5B,SAAS8C,EAAsBD,GAC9B,IAAI5K,EAAoBgE,EAAE0G,EAAKE,GAAM,CACpC,IAAInK,EAAI,IAAI0B,MAAM,uBAAyByI,EAAM,KAEjD,MADAnK,EAAE2B,KAAO,mBACH3B,EAEP,OAAOiK,EAAIE,GAEZD,EAAeG,KAAO,WACrB,OAAOhM,OAAOgM,KAAKJ,IAEpBC,EAAe9J,QAAUgK,EACzBtK,EAAOD,QAAUqK,EACjBA,EAAe5C,GAAK,Q,6MChBhBgD,E,gOCREhB,EAAeC,eAAoB,CACrCC,QAASzD,kCACT0D,YAAa1D,iCAGFuD,I,4GDMf,SAASiB,EAAkBnG,EAAKtB,GAC5B,IAAM0H,EAAQC,IAAW3H,EAASsB,GAClC,OAAOoG,EAAME,SAASC,KAG1B,IAAMC,EAAgBC,IAAM1G,OAAO,CAC/BqF,QAASzD,mCACT+E,QAAS,CACL,eAAgB,sBAMlBC,EAA0BF,IAAM1G,OAAO,CACzCqF,QAAS,wBACTsB,QAAS,CACL,eAAgB,sBAKlBE,EAAe,SAAfA,EAAgBC,GAClB,OAAIC,MAAMC,QAAQF,GACTA,EAAIhB,KAAI,SAAAmB,GAAC,OAAIJ,EAAaI,MACjB,MAAPH,GAAeA,EAAII,cAAgBhN,OACrCA,OAAOgM,KAAKY,GAAKK,QACtB,SAACrM,EAAQmF,GAAT,sBAAC,kBACInF,GADL,qBAEGsM,uBAAUnH,GAAO4G,EAAaC,EAAI7G,QAErC,IAGG6G,GAGLO,EAAsB,sBACtBC,EAAkC,yBAClCC,EAAmC,0BACnCC,EAAmC,0BACnCC,EAA8B,qBAC9BC,EAA8B,qBAC9BC,EAA8B,qBAC9BC,EAA+B,sBAC/BC,EAAoC,2BACpCC,EAA8C,qCAC9CC,EAAiD,wCACjDC,EAAgC,wBAChCC,EAAqB,qBACrBC,EAAwB,wBACxBC,EAAmB,mBACnBC,EAA4B,4BAC5BC,EAA6B,6BAC7BC,EAAuC,uCACvCC,EAAU,IAEVC,EAAkB,WACpB,MAAO,CACHC,QAAS,CACLC,WAAW,EACXC,WAAY,KACZC,aAAc,MAElBC,mBAAmB,CACfH,WAAW,GAEfI,2BAA4B,KAC5BC,aAAc,GACdC,gBAAgB,EAChBC,SAAU,GACVC,eAAgB,GAChBC,QAAS,CACLC,OAAQ,IAEZC,KAAM,CACFlG,GAAI,KACJmG,aAAc,MACd1K,KAAM,GACN2K,UAAW,GACXC,QAAS,GAETC,YAAa,KACbC,IAAK,KACLC,IAAK,KACLC,IAAK,KAELC,yBAAyB,EACzBC,sBAAsB,EACtBC,QAAS,KACTC,UAAW,GACXC,UAAW,GACXC,aAAc,KACdC,kBAAmB,KACnBC,aAAc,CACV7E,MAAO,GACP8E,MAAO,EACPC,QAAS,QAMZvJ,EAAQyH,IAERvH,EAAY,CACrBsJ,qBADqB,SACAxJ,EADA,GACoB,IAAZoC,EAAY,EAAZA,GAAIxD,EAAQ,EAARA,MACvB4F,EAAQ,eAAIxE,EAAMoI,QAAQC,QAC1BhK,EAAImG,EAAM3B,MAAK,SAAA+B,GAAC,OAAIA,EAAExC,KAAOA,KACnC/D,EAAEoL,WAAa7K,EACfoB,EAAMoI,QAAQC,OAAS7D,GAE3BkF,kCAPqB,SAOa1J,EAAOI,GACrCJ,EAAM+H,2BAA6B3H,GAEvCuJ,mBAVqB,SAUF3J,GACf,IAAMwE,EAAQ,eAAIxE,EAAMoI,QAAQC,OAAOuB,QAAO,SAAAhF,GAAC,OAAIA,EAAEiF,aACrDrF,EAAMsF,SAAQ,SAAAlF,GAAC,OAAIA,EAAEmF,YAAc,aAEvCC,2CAdqB,SAcsBhK,EAdtB,GAcgD,IAAlBiK,EAAkB,EAAlBA,gBACzCC,EAAMpG,KAAKG,MAAMH,KAAKC,UAAU/D,EAAMsI,KAAKY,YACjDgB,EAAIJ,SAAQ,SAAApP,GACR,IAAIyP,EAASzP,EAAEyP,OACf,GAAKA,EAAOC,SAAS,KACrB,CACI,IAAIC,EAAWF,EAAOG,MAAM,KAC5BH,EAASE,EAAS,GAEtB,IAAME,EAAYN,EAAgBpH,MAAK,SAAA+B,GAAC,OAAIA,EAAE4F,aAAeL,KAC1DI,IACC7P,EAAE+P,eAAiBF,EAAUG,aAGrC1K,EAAMsI,KAAKY,UAAYgB,GAE3BS,iCA9BqB,SA8BY3K,EAAOtH,GACpC,IAAM8L,EAAQ,eAAIxE,EAAMoI,QAAQC,QAC1BuC,EAAQpG,EAAM3B,MAAK,SAAA+B,GAAC,OAAIA,EAAExC,MAAQ1J,EAAKmS,WAAanS,EAAKoS,cAE/D,GAAGF,EAAO,CACN,IAAMG,EAAQvG,EAAMwG,QAAQJ,GAC5B,GAAGG,GAAQ,EAAG,CAEV,IAAMH,EAAQ,kBAAIpG,EAAMuG,IACxBH,EAAMb,YAAcrR,EAAKmM,OACzB+F,EAAMK,OAASvS,EAAKwS,OACpBN,EAAMO,UAAYzS,EAAK0S,UACvB5G,EAAMuG,GAASH,EAEf5K,EAAMoI,QAAN,iCAAqBpI,EAAMoI,SAA3B,IAAoCC,OAAQ7D,OAIxD6G,kCAhDqB,SAgDarL,EAAOI,GACrC,IAAMkL,EAAO,kBAAItL,EAAM8H,qBACD,IAAnBwD,EAAK3D,WAAsBvH,IAC1BJ,EAAMkI,SAAS4B,SAAQ,SAAA7E,GAChBA,EAAIjJ,OAASsK,GACTrB,EAAI9J,QACH8J,EAAI9J,YAIhB6E,EAAMkI,SAAWlI,EAAMkI,SAAS0B,QAAO,SAAA3E,GAAG,OAAIA,EAAIjJ,OAASsK,MAE/DgF,EAAK3D,UAAYvH,EACjBJ,EAAM8H,mBAAqBwD,GAG/BC,sBAhEqB,SAgECvL,EAAOI,GACzB,IAAMkL,EAAO,kBAAItL,EAAM0H,SACvB4D,EAAK3D,UAAYvH,EACjBJ,EAAM0H,QAAU4D,GAEpBE,wBArEqB,SAqEGxL,EAAOI,GAC3B,IAAMkL,EAAO,kBAAItL,EAAM0H,SACvB4D,EAAK1D,WAAaxH,EAClBJ,EAAM0H,QAAU4D,GAEpBG,0BA1EqB,SA0EKzL,EAAOI,GAC7B,IAAMkL,EAAO,kBAAItL,EAAM0H,SACvB4D,EAAKzD,aAAezH,EACpBJ,EAAM0H,QAAU4D,GAEpBI,eA/EqB,SA+EN1L,EA/EM,GA+EgB,IAAd+K,EAAc,EAAdA,MAAOY,EAAO,EAAPA,KACd,KAATA,GAAwB,MAARA,QAAwB7N,GAAR6N,GAAqBC,OAAOD,KAAUC,OAAOC,IAC5E7L,EAAMoI,QAAQC,OAAO0C,GAAOe,cAAgB,KAE5C9L,EAAMoI,QAAQC,OAAO0C,GAAOe,cAAgBF,OAAOD,IAG3DI,gBAtFqB,SAsFL/L,EAtFK,GAsFkB,IAAf+K,EAAe,EAAfA,MAAOiB,EAAQ,EAARA,MAC3BhM,EAAMoI,QAAQC,OAAO0C,GAAOiB,MAAmB,MAATA,QAA0BlO,GAATkO,EAAsB,EAAIC,WAAWD,IAEhGE,qBAzFqB,SAyFAlM,EAzFA,GAyF4B,IAApB+K,EAAoB,EAApBA,MAAOoB,EAAa,EAAbA,WAChCnM,EAAMoI,QAAQC,OAAO0C,GAAOqB,gBAAkBD,GAElDE,eA5FqB,SA4FNrM,EA5FM,GA4FqB,IAAnB+K,EAAmB,EAAnBA,MAAOuB,EAAY,EAAZA,UAC1BtM,EAAMoI,QAAQC,OAAO0C,GAAOuB,UAAYA,EACxC,IAAMC,EAAWvM,EAAMoI,QAAQC,OAAO0C,GAAO3B,kBAAkBoD,WAAW3J,MAAK,SAAA+B,GAAC,OAAIA,EAAE0H,YAAcA,KACpGtM,EAAMoI,QAAQC,OAAO0C,GAAOqB,gBAAkBG,EAASH,kBAAkC,UAAdE,EAAwB,SAAW,KAElHG,0BAjGqB,SAiGKzM,GACtBA,EAAMoI,QAAQC,OAASrI,EAAMoI,QAAQC,OAAOtD,KAAI,SAAAH,GAC5C,wCAAWA,GAAX,IAAciF,UAAU,QAGhC6C,4BAtGqB,SAsGO1M,GACxBA,EAAMoI,QAAQC,OAASrI,EAAMoI,QAAQC,OAAOtD,KAAI,SAAAH,GAC5C,wCAAWA,GAAX,IAAciF,UAAU,QAGhC8C,mBA3GqB,SA2GF3M,EA3GE,GA2GwB,IAAlB+K,EAAkB,EAAlBA,MAAOlB,EAAW,EAAXA,SAC9B7J,EAAMoI,QAAQC,OAAO0C,GAAOlB,SAAWA,GAE3C+C,8BA9GqB,SA8GS5M,EAAOI,GACjCJ,EAAMsI,KAAKQ,wBAA0B1I,GAEzCyM,4BAjHqB,SAiHO7M,EAAOI,GAC/BJ,EAAMsI,KAAKS,qBAAuB3I,GAEtC0M,YApHqB,SAoHT9M,EAAOI,GACfJ,EAAMsI,KAAKU,QAAU5I,GAEzB2M,YAvHqB,SAuHT/M,EAAOI,GACfJ,EAAMsI,KAAKlG,GAAKhC,GAEpB4M,kBA1HqB,SA0HHhN,EAAOI,GACrBJ,EAAMsI,KAAKC,aAAenI,GAE9B6M,qBA7HqB,SA6HAjN,EAAOI,GACxBJ,EAAMiI,eAAiB7H,GAE3B8M,0BAhIqB,SAgIKlN,EAAOI,GAC7BJ,EAAMgI,aAAamF,QAAU/M,GAEjCgN,cAnIqB,SAmIPpN,GAAqB,6DAAJ,GAARiF,EAAY,EAAZA,IACnBjF,EAAMkI,SAAN,yBAAqBlI,EAAMkI,UAA3B,CAAqCjD,KAEzCoI,8BAtIqB,SAsISrN,EAAOtH,GACjCsH,EAAMgI,cAAgBtP,EAAK4U,SAAW5U,EAAK6U,SAASxI,KAAI,SAAAH,GACpD,MAAO,CAAE/G,KAAM+G,EAAErC,KAAMH,GAAIwC,EAAExC,IAAMwC,EAAE4I,GAAI3I,OAAQD,EAAE6I,QAAU7I,EAAEC,YAGvE6I,YA3IqB,SA2IT1N,GAAsB,6DAAJ,GAATsB,EAAa,EAAbA,KACXqM,EAAQrM,EAAKqM,OAASrM,EAAKsM,MAC3B3I,EAAMjF,EAAMkI,SAASrF,MAAK,SAAA+B,GAAC,OAAIA,EAAExC,IAAMuL,KAE7C,GAAI1I,EAMJ,GAJAzF,QAAQsB,IAAI,cAAe,CAACmE,MAAK3D,SAEjCtB,EAAMkI,SAAN,eAAqBlI,EAAMkI,SAAS0B,QAAO,SAAAhF,GAAC,OAAIA,EAAExC,IAAMuL,MAEpDrM,EAAKuM,OA6HL7N,EAAMmI,eAAN,yBAA2BnI,EAAMmI,gBAAjC,kCAAoDlD,GAApD,IAAyD6I,aAAcxM,EAAKwM,cAAgBxM,EAAKyM,iBAC9F9I,EAAI9J,QACH8J,EAAI9J,aA/HK,CACb,GAAG8J,EAAIjJ,OAASuK,EACZyH,EAAoBhO,EAAO,CAAEsN,QAAShM,EAAKgM,SAAWhM,EAAKiM,eACzD,GAAGtI,EAAIjJ,OAAS4K,EAClB5G,EAAMgI,cAAgB1G,EAAKgM,SAAWhM,EAAKiM,SAASxI,KAAI,SAAAH,GACpD,MAAO,CAAE/G,KAAM+G,EAAErC,KAAMH,GAAIwC,EAAExC,IAAMwC,EAAE4I,YAEtC,GAAGvI,EAAIjJ,OAAS6K,EAA8B,CACjD,MAAiEvF,EAAKgM,SAAWhM,EAAKiM,QAA9EhL,EAAR,EAAQA,KAAM0L,EAAd,EAAcA,UAAWC,EAAzB,EAAyBA,QAASC,EAAlC,EAAkCA,YAAaC,EAA/C,EAA+CA,IAAKC,EAApD,EAAoDA,IAAKC,EAAzD,EAAyDA,IACzDtO,EAAMsI,KAAKzK,KAAO0E,EAClBvC,EAAMsI,KAAKE,UAAYyF,EAAUlJ,KAAI,SAAAH,GACjC,MAAO,CACH2J,UAAWC,IAAO5J,EAAE6J,UAAY7J,EAAE8J,UAAUC,OAC5CF,SAAU7J,EAAE6J,UAAY7J,EAAE8J,SAC1B9P,MAAOgG,EAAEhG,OAASgG,EAAEgK,UAG5B5O,EAAMsI,KAAKG,QAAUyF,EAAQnJ,KAAI,SAAAH,GAC7B,MAAO,CACHiK,YAAajK,EAAEkK,YACf3E,OAAQvF,EAAEmK,OACVC,OAAQpK,EAAEoK,QAAUpK,EAAEqK,WAG9BjP,EAAMsI,KAAKI,YAAcyF,EACzBnO,EAAMsI,KAAKK,IAAMyF,EACjBpO,EAAMsI,KAAKM,IAAMyF,EACjBrO,EAAMsI,KAAKO,IAAMyF,OACd,GAAGrJ,EAAIjJ,OAAS8K,EAAmC,CACtD,IAAMmC,EAAY3H,EAAKgM,SAAWhM,EAAKiM,QACvCvN,EAAMsI,KAAKW,UAAYA,EAAUlE,KAAI,SAAAH,GACjC,MAAO,CAAEsK,YAAatK,EAAEuK,YAAaN,YAAajK,EAAEkK,YAAa3E,OAAQvF,EAAEmK,OAAQK,YAAaxK,EAAEyK,YAAaC,WAAY1K,EAAE2K,WAAYC,aAAc5K,EAAE6K,sBAE1J,GAAGxK,EAAIjJ,OAASyK,EAAkC,CAErD,IAAM2C,EAAqB9H,EAAKgM,SAAWhM,EAAKiM,QAEhD,IACI,IAAMmC,EAAU,iCAAI1P,EAAMsI,MAAb,IAAmBc,kBAAmBA,EAAkBuG,cAAc5K,KAAI,SAAAH,GAE/E,IAAIvG,EAAI,CACJ6Q,YAAatK,EAAEuK,YACfN,YAAajK,EAAEkK,YACf3E,OAAQvF,EAAEmK,OAEVvC,WAAY5H,EAAEgL,WAAW7K,KAAI,SAAArK,GACzB,MAAO,CAAE4R,UAAW5R,EAAEmV,UAAWzD,gBAAiB1R,EAAEoV,qBAK5D,OAFAzR,EAAE0R,kBAAoBnL,EAAEoL,kBAAoB,IAAIH,UAEzCxR,OAGf2B,EAAMsI,KAAOoH,EAChB,MAAM5U,GACH0E,QAAQjC,MAAMzC,SAGd,GAAGmK,EAAIjJ,OAAS2K,EAA6B,CACjD,IAAMwC,EAAgB7H,EAAKgM,SAAWhM,EAAKiM,QACvClP,EAAIyF,KAAKG,MAAMH,KAAKC,UAAU/D,EAAMsI,OACxCjK,EAAE8K,aAAe,CACb8G,aAAc9G,EAAa+G,aAC3BrS,KAAMsL,EAAa5G,KACnB4N,WAAYhH,EAAaiH,WACzBC,gBAAiBlH,EAAamH,gBAC9BC,SAAUpH,EAAaqH,SACvBC,YAAatH,EAAauH,YAC1BC,IAAKxH,EAAayH,IAClBC,YAAa1H,EAAa2H,YAC1BC,QAAS5H,EAAa6H,QACtBC,UAAW9H,EAAa+H,UAAY1C,IAAOrF,EAAa+H,WAAWC,OAAO,cAAgB,GAC1FC,aAAcjI,EAAakI,aAC3BC,qBAAsBnI,EAAaoI,qBACnCjO,SAAU6F,EAAaqI,SACvBjO,SAAU4F,EAAasI,SACvBC,MAAOvI,EAAawI,MACpBC,OAAQzI,EAAa0I,OACrBC,QAAS3I,EAAa4I,QACtBhC,iBAAkB5G,EAAa6G,iBAC/BgC,qBAAsB7I,EAAa8I,qBACnCC,QAAS,CACLC,QAAShJ,EAAaiJ,QAAQC,QAAQtN,KAAI,SAAAf,GACtC,MAAO,CACHsO,WAAYtO,EAAEuO,WACdxC,iBAAkB/L,EAAEgM,iBACpBxD,WAAYxI,EAAE4L,WAAW7K,KAAI,SAAA1G,GACzB,MAAO,CACHiO,UAAWjO,EAAEwR,UACbtD,SAAUlO,EAAEmU,SAASzN,KAAI,SAAAzK,GACrB,MAAO,CACHuD,KAAMvD,EAAEiI,KACR3D,MAAOtE,EAAEsU,oBASzC5O,EAAMsI,KAAOjK,OACV,GAAG4G,EAAIjJ,OAAS+K,EAA6C,CAChE,IAAMuG,EAAUhM,EAAKgM,SAAWhM,EAAKiM,QACrCvN,EAAMsI,KAAKY,UAAYoE,EAAQvI,KAAI,SAAAH,GAC/B,MAAO,CAAEsK,YAAatK,EAAEuK,YAAaN,YAAajK,EAAEkK,YAAa3E,OAAQvF,EAAEmK,OAAQpD,KAAM/G,EAAE6N,KAAMhI,eAAgB7F,EAAE8N,eAAgBC,GAAI/N,EAAEgO,GAAIC,QAASjO,EAAEkO,iBAEzJ,GAAG7N,EAAIjJ,OAASgL,EAAgD,CACnE,IAAMsG,EAAUhM,EAAKgM,SAAWhM,EAAKiM,QAC7BwF,EAAiBzF,EAAjByF,MAAOC,EAAU1F,EAAV0F,MACfhT,EAAMsI,KAAKe,aAAaC,MAAQyJ,EAChC,IAAMvO,EAAQwO,EAAMjO,KAAI,SAAAH,GACpB,MAAO,CAAEsK,YAAatK,EAAEuK,YAAaN,YAAajK,EAAEkK,YAAa3E,OAAQvF,EAAEmK,OAAQkE,UAAWrO,EAAEsO,UAAWvH,KAAM/G,EAAE6N,KAAMzG,MAAOpH,EAAEuO,MAAOC,UAAWxO,EAAEyO,cAG1JrT,EAAMsI,KAAKe,aAAa7E,MAAQS,EAAIqO,KAAJ,yBAAetT,EAAMsI,KAAKe,aAAa7E,OAAvC,eAAiDA,IAASA,OACvF,GAAGS,EAAIjJ,OAASiL,EAAgC,CACnD,IAAMqG,EAAUhM,EAAKgM,SAAWhM,EAAKiM,QACrCvN,EAAMsI,KAAN,iCAAiBtI,EAAMsI,MAAvB,IAA6BiL,QAASzN,EAAawH,EAAQkG,SAAWlG,EAAQiG,WAE/EtO,EAAI/J,SACH+J,EAAI/J,QAAQoG,EAAKgM,SAAWhM,EAAKiM,SAAW,SAW/CrK,EAAU,CACnB6E,2BADmB,SACQ/H,GACvB,OAAOA,EAAM+H,4BAEjBL,QAJmB,SAIX1H,GACJ,OAAOA,EAAM0H,SAEjBI,mBAPmB,SAOA9H,GACf,OAAOA,EAAM8H,oBAEjBQ,KAVmB,SAUdtI,GACD,OAAOA,EAAMsI,MAEjBL,eAbmB,SAaJjI,GACX,OAAOA,EAAMiI,gBAEjBD,aAhBmB,SAgBNhI,GACT,OAAOA,EAAMgI,cAEjBmF,QAnBmB,SAmBXnN,GACJ,OAAOA,EAAMkI,SAAShP,OAAS,GAEnCua,cAtBmB,SAsBLzT,GACV,OAAOA,EAAMoI,QAAQC,QAAU,KAIvC,SAAS2F,EAAoBhO,GAAuB,6DAAJ,GAAXsN,EAAe,EAAfA,QAE7BjF,EAASvC,EAAawH,GAC1BjF,EAAOyB,SAAQ,SAAAc,GACXA,EAAMf,UAAW,EACjBe,EAAMK,OAAS,EACfL,EAAMO,UAAY,KAEtB3L,QAAQsB,IAAI,sBAAuBuH,GACnCrI,EAAMoI,QAAQC,OAASA,EAIpB,IAAMhI,EAAU,CAIbqT,mCAJa,YAI4C,4JAApBnT,EAAoB,EAApBA,SAAUC,EAAU,EAAVA,OAAU,kBAEjDqF,EAAwBrH,IAAI,wBAFqB,uBAGjD+B,EAAS,kCAHwC,0DAKvDf,QAAQjC,MAAR,MACAiD,EAAO,qCAAqC,GANW,4DASzDmT,uCAba,YAaiD,8JAApBpT,EAAoB,EAApBA,SAAUC,EAAU,EAAVA,OAAU,kBAEzCqF,EAAwBrH,IAAI,+BAFa,OAEtD8C,EAFsD,OAG5Dd,EAAO,oCAAqCc,EAAK5I,KAAKiP,WACtDpH,EAAS,kCAJmD,mDAM5Df,QAAQjC,MAAR,MACAiD,EAAO,qCAAqC,GAPgB,4DAU9DoT,+BAvBa,YAuB8C,4JAA1BrT,EAA0B,EAA1BA,SAAUC,EAAgB,EAAhBA,OAAQR,EAAQ,EAARA,MAClDoF,GACC1F,OAAOlC,aAAa4H,GAFqC,UAMtDpF,EAAM8H,mBAAmBH,UAN6B,gCAO9B9B,EAAwBrH,IAAI,qBAPE,OAO/CkF,EAP+C,OAQrDA,EAAShL,KAAKoR,SAAQ,SAAAzL,GAClBmC,EAAO,mCAAoCnC,MATM,OAazD+G,EAAU1F,OAAO3B,YAAW,WACxBwC,EAAS,oCACV,KAfsD,qDAkBzDf,QAAQjC,MAAR,MACAiD,EAAO,qCAAqC,GAnBa,6DAsBjEqT,yCA7CmB,YA6CmD,IAA1BtT,EAA0B,EAA1BA,SAAUP,EAAgB,EAAhBA,MAAOQ,EAAS,EAATA,OACzD,OAAO,IAAIvF,SAAS,SAACC,EAASC,GAC1B,IAAI2Y,EAAQ,GACZ,GAAG9T,EAAM+H,2BAA4B,CACjC,IAAM9J,EAAI+B,EAAM+H,2BAChB+L,EAAQ7V,EACR6V,EAAQ,SAAW7V,EAEvB4H,EAAwBrH,IAAI,0BAA4BsV,GAAOhX,MAAK,SAAC4G,GACjE,IAAM2E,EAASrI,EAAMoI,QAAQC,OAAOtD,KAAI,SAAA1G,GACpC,IAAI8L,EAAS9L,EAAE8L,OACf,GAAKA,EAAOC,SAAS,KACrB,CACI,IAAIC,EAAWF,EAAOG,MAAM,KAC5BH,EAASE,EAAS,GAEtB,MAAO,CACHF,SACA0E,YAAaxQ,EAAEwQ,gBAGjBkF,EAAsBrQ,EAAShL,KAAKqM,KAAI,SAAAiP,GAC1C,IAAM3V,EAAIgK,EAAOxF,MAAK,SAAAxE,GAAC,OAAIA,EAAE8L,SAAW6J,EAAGxJ,cAC3C,MAAO,CACH+D,UAAWC,IAAOwF,EAAGC,aAAc,qBAAqBC,SACxDC,OAASH,EAAGI,OACZC,QAASL,EAAGM,QACZzF,YAAaxQ,EAAIA,EAAEwQ,YAAc,KACjC1E,OAAQ6J,EAAGxJ,WACX+J,IAAKP,EAAGO,IACRvI,MAAOgI,EAAGhI,UAEfpC,QAAO,SAAAhF,GAAC,OAAIA,EAAEiK,eAEjBtO,EAAS,UAAW,CAAE+M,QAAS,CAAElL,GAAKpC,EAAMsI,KAAKlG,GAAIoC,MAAOuP,GAAuB7Y,UAASC,SAAQa,KAAMsK,OAC3G9E,OAAM,SAACjE,GACNiD,EAAO,qCAAqC,GAC5CrF,EAAOoC,UAKbiX,8BAvFa,cAuFyC,4JAAtBhU,EAAsB,EAAtBA,OAAUqK,EAAY,EAAZA,UAAY,SAEpDrK,EAAO,uBAAwB,CAAC4B,GAAIyI,EAAWjM,OAAO,IAFF,SAG9CiH,EAAwB4O,KAAK,oBAAqB,CAAC5J,cAHL,OAIpDnL,OAAO3B,YAAW,WACdyC,EAAO,uBAAwB,CAAC4B,GAAIyI,EAAWjM,OAAO,MACvD,KANiD,mDASpDY,QAAQjC,MAAR,MACAiD,EAAO,qCAAqC,GAVQ,4DAatDkU,+BApGa,WAoG6BC,GAAK,4JAAdnU,EAAc,EAAdA,OAAc,kBAEtBqF,EAAwB4O,KAAK,iBAAkBE,GAFzB,OAEvCjR,EAFuC,OAG7ClD,EAAO,mCAAoCkD,EAAShL,MAHP,mDAK7C8G,QAAQjC,MAAR,MACAiD,EAAO,qCAAqC,GANC,4DAS/CoU,yCA7Ga,YA6GsC,4JAATpU,EAAS,EAATA,OAAS,kBAE9BqF,EAAwBrH,IAAI,wBAFE,OAE3C8C,EAF2C,OAGjDd,EAAO,6CAA8C,CAACyJ,gBAAgB3I,EAAK5I,OAH1B,mDAKjD8G,QAAQjC,MAAR,MACAiD,EAAO,qCAAqC,GANK,4DASnDqU,mBAtHa,cAsH6B,4JAApBtU,EAAoB,EAApBA,SAAc6B,EAAM,EAANA,GAAM,SACtC7B,EAAS,UAAW,CAAC+M,QAAS,CAAElL,MAAOpG,KAAMiL,IADP,8CAG1C6N,4BAzHa,YAyH6C,8JAA3BtU,EAA2B,EAA3BA,OAAQR,EAAmB,EAAnBA,MAAOO,EAAY,EAAZA,SAAY,kBAElDA,EAAS,oBAFyC,uBAGlDsF,EAAwB4O,KAAK,qBAAsBzU,EAAMsI,KAAKa,cAHZ,cAIxD3I,EAAO,qCAAqC,GAJY,wDAOxDhB,QAAQjC,MAAR,MACAiD,EAAO,qCAAqC,GARY,6DAW1DuU,iCApIa,YAoIiC,0JAAVvU,EAAU,EAAVA,OAAU,SAC1CqF,EAAwBrH,IAAI,yBADc,OAEhDgC,EAAO,qCAAqC,GAFI,8CAI9CwU,uBAxIa,YAwIwB,mJAAZzU,EAAY,EAAZA,SAC3BA,EAAS,kCACTA,EAAS,0CAF8B,8CAI3C0U,WA5ImB,YA4ImB,IAA1BzU,EAA0B,EAA1BA,OAAQD,EAAkB,EAAlBA,SAAUP,EAAQ,EAARA,MAC1BQ,EAAO,sBACP,IAAM6H,EAASrI,EAAMoI,QAAQC,OAAOuB,QAAO,SAAAhF,GAAC,OAAIA,EAAEiF,YAC9CkK,EAAsB,GAY1B,OAXA1L,EAAOyB,SAAQ,SAAAzL,GACX0V,EAAoBva,KAAK,CACrB+U,UAAWC,MAAS0F,SACpBC,OAASe,OAAKC,KACdd,QAAShW,EAAE+D,GACXyM,YAAaxQ,EAAEwQ,YACf1E,OAAQ9L,EAAE8L,OACVoK,IAAqB,SAAhBlW,EAAE+W,WAAqD,EAA7BC,KAAKC,IAAIjX,EAAEyN,eAAuBuJ,KAAKC,IAAIjX,EAAEyN,eAC5EE,MAAO3N,EAAE2N,WAGV,IAAI/Q,SAAS,SAACC,EAASC,GAC1BoF,EAAS,UAAW,CAAE+M,QAAS,CAAElL,GAAKpC,EAAMsI,KAAKlG,GAAIoC,MAAOuP,GAAuB7Y,UAASC,SAAQa,KAAMsK,QAU5GiP,iBAtKa,YAsKc,sKAARvV,EAAQ,EAARA,MACfwV,EAAS,mEACTC,EAAY,mEAEZC,EAAS,sGAAwG1V,EAAM0H,QAAQE,WAC/H+N,EAAYtQ,EAAkBoQ,EAAWC,GACzCE,EAAYF,EAAS,eAAiBC,EACtC/P,EAAU,GAChBA,EAAQ,gBAAkB4P,EAC1B5P,EAAQ,gBAAkB,kDATG,UAUvBF,EAAc+O,KAAK,UAAYmB,EAAW,KAAM,CAAChQ,YAV1B,+CAY3BiQ,iBAlLa,YAkL0B,4JAApBrV,EAAoB,EAApBA,OAAQD,EAAY,EAAZA,SAAY,SAGjCP,EAAM0H,QAAQC,UAHmB,iCAINjC,EAAclH,IAAI,SAJZ,cAI3BsX,EAJ2B,gBAKFpQ,EAAclH,IAAI,iBALhB,OAK3BuX,EAL2B,OAMjCvV,EAAO,0BAA2BsV,EAAapd,KAAKkP,YACpDpH,EAAO,4BAA6BuV,EAAiBrd,MACrD8H,EAAO,yBAAyB,GAChCD,EAAS,oBATwB,6DAarCf,QAAQjC,MAAR,MAbqC,6DAgBvCyY,sBAlMa,YAkMqB,mJAAVxV,EAAU,EAAVA,OAC1B,IACIA,EAAO,yBAAyB,GAChCA,EAAO,0BAA2B,MAEpC,MAAM1F,GACJ0E,QAAQjC,MAAMzC,GANkB,8CAclCmN,eAhNa,WAgNK,oLASlBgO,cAzNa,YAyN0D,wLAAvDzV,EAAuD,EAAvDA,OAAQ0V,EAA+C,EAA/CA,UAA+C,iCAAJ,GAA5B5I,EAAgC,EAAhCA,QAAStR,EAAuB,EAAvBA,KAAMma,EAAiB,EAAjBA,SAClDlR,EAAM,CACR7C,GAAI8S,OAAKC,KACTiB,SAAUF,EAAUG,QAAQpW,aAC5BjE,KAAMA,EACNsR,QAASA,EACThK,SAAU4S,EAAUI,KAAKzU,YAAYS,SACrCiU,OAAQL,EAAUI,KAAKzU,YAAYO,IAPkC,SASlDoU,EAAY/B,KAAK,qBAAsBxP,GATW,cASnEvB,EATmE,OAUtEyS,GACC3V,EAAO2V,EAAUzS,EAAShL,MAX2C,kBAclEgL,GAdkE,8CAgBvE+S,QAzOa,YAyO2D,wLAA9DjW,EAA8D,EAA9DA,OAAQ0V,EAAsD,EAAtDA,UAAsD,iCAAJ,GAAnC5I,EAAuC,EAAvCA,QAAStR,EAA8B,EAA9BA,KAAMd,EAAwB,EAAxBA,QAASC,EAAe,EAAfA,OACrD8J,EAAM,CACR7C,GAAI8S,OAAKC,KACTja,UACAC,SACAib,SAAUF,EAAUG,QAAQpW,aAC5BjE,KAAMA,EACNsR,QAASA,EACThK,SAAU4S,EAAUI,KAAKzU,YAAYS,SACrCiU,OAAQL,EAAUI,KAAKzU,YAAYO,IAEvC5B,EAAO,gBAAkB,CAAEyE,QAC3BvF,OAAO3B,YAAW,WACdyC,EAAO,cAAgB,CAAEc,KAAM,CAAEqM,MAAO1I,EAAI7C,GAAIyL,QAAQ,EAAMC,aAAc,uBAC7EtG,GAduE,SAgBpEhE,OAAKiR,KAAK,iCAAkCxP,GAhBwB,8CAoBxEyR,eA7Pa,YA6P4C,gLAAzCnW,EAAyC,EAAzCA,SAAUC,EAA+B,EAA/BA,OAA+B,iCAAJ,GAAjB+H,EAAqB,EAArBA,aACtC/H,EAAO,oBAAqB+H,GAD+B,SAErDhI,EAAS,YAF4C,8CAIzDoW,cAjQa,WAiQqBvW,GAAU,4JAA7BG,EAA6B,EAA7BA,SAAUC,EAAmB,EAAnBA,OAC3BA,EAAO,cAAeJ,GADwB,SAExCG,EAAS,aAF+B,8CAK5CqW,8BAtQa,WAsQqCxW,GAAU,4JAA7BG,EAA6B,EAA7BA,SAAUC,EAAmB,EAAnBA,OAC3CA,EAAO,gCAAiCJ,GACrCA,GACCI,EAAO,+BAA+B,GAHoB,SAKxDD,EAAS,aAL+C,8CAQ5DsW,2BA9Qa,WA8QkCzW,GAAU,4JAA7BG,EAA6B,EAA7BA,SAAUC,EAAmB,EAAnBA,OACxCA,EAAO,8BAA+BJ,GACnCA,GACCI,EAAO,iCAAiC,GAHe,SAKrDD,EAAS,aAL4C,8CAQzDuW,UAtRa,YAsRkB,4JAAnBvW,EAAmB,EAAnBA,SAAUP,EAAS,EAATA,MAAS,SAC3BO,EAAS,UAAW,CACtB+M,QAAS,CACLlL,GAAIpC,EAAMsI,KAAKlG,GACf0G,wBAAyB9I,EAAMsI,KAAKQ,wBACpCC,qBAAsB/I,EAAMsI,KAAKS,qBACjCC,QAAShJ,EAAMsI,KAAKU,SAExBhN,KAAM8K,IARuB,8CAWrCiQ,sBAjSmB,YAiSwC,IAAnCxW,EAAmC,EAAnCA,SAAUP,EAAyB,EAAzBA,MAAyB,yDAAJ,GAAVpB,EAAc,EAAdA,MACzC,OAAO,IAAI3D,SAAS,SAACC,EAASC,GAC1BoF,EAAS,UAAW,CAAE+M,QAAS,CAAElL,GAAKpC,EAAMsI,KAAKlG,GAAIxD,SAAS1D,UAASC,SAAQa,KAAMwK,QAGvFwQ,iBAtSa,YAsSkC,8KAA5BzW,EAA4B,EAA5BA,SAA4B,iCAAJ,GAAV3B,EAAc,EAAdA,MAAc,SAC3C2B,EAAS,4BAA6B,CAAE3B,UADG,uBAE3C2B,EAAS,oBAFkC,8CAIrD0W,0BA1SmB,YA0S4C,IAAnC1W,EAAmC,EAAnCA,SAAUP,EAAyB,EAAzBA,MAAyB,yDAAJ,GAAVpB,EAAc,EAAdA,MAC7C,OAAO,IAAI3D,SAAS,SAACC,EAASC,GAC1BoF,EAAS,UAAW,CAAE+M,QAAS,CAAElL,GAAKpC,EAAMsI,KAAKlG,GAAIxD,SAAS1D,UAASC,SAAQa,KAAM0K,QAGvFwQ,sBA/Sa,YA+S8B,4JAAnB3W,EAAmB,EAAnBA,SAAUP,EAAS,EAATA,MAAS,SACvCO,EAAS,UAAW,CAAC+M,QAAS,CAAElL,GAAKpC,EAAMsI,KAAKlG,IAAOpG,KAAMyK,IADtB,8CAG3C0Q,iBAlTa,YAkTyB,4JAAnB5W,EAAmB,EAAnBA,SAAUP,EAAS,EAATA,MAAS,SAClCO,EAAS,UAAW,CAAC+M,QAAS,CAAElL,GAAKpC,EAAMsI,KAAKlG,IAAOpG,KAAM2K,IAD3B,8CAGtCyQ,cArTa,YAqTsB,4JAAnB7W,EAAmB,EAAnBA,SAAUP,EAAS,EAATA,MAAS,SAC/BO,EAAS,UAAW,CAAC+M,QAAS,CAAElL,GAAIpC,EAAMsI,KAAKlG,IAAMpG,KAAM+K,IAD5B,8CAGnCsQ,iBAxTa,YAwTyB,4JAAnB9W,EAAmB,EAAnBA,SAAUP,EAAS,EAATA,MAAS,SAClCO,EAAS,UAAW,CAAC+M,QAAS,CAAElL,GAAIpC,EAAMsI,KAAKlG,GAAIkV,KAAMtX,EAAMsI,KAAKe,aAAaE,QAASgO,KAAMvX,EAAMsI,KAAKe,aAAa7E,MAAMtL,QAAU8C,KAAMgL,IAD5G,8CAGtCwQ,yBA3Ta,YA2TiC,4JAAnBjX,EAAmB,EAAnBA,SAAUP,EAAS,EAATA,MAAS,SAC1CO,EAAS,UAAW,CAAC+M,QAAS,CAAEgG,MAAM,EAAMlR,GAAKpC,EAAMsI,KAAKlG,GAAIkV,KAAMtX,EAAMsI,KAAKe,aAAaE,QAASgO,KAAMvX,EAAMsI,KAAKe,aAAa7E,MAAMtL,QAAU8C,KAAMgL,IADjH,8CAG9CyQ,SA9Ta,YA8TiB,4JAAnBlX,EAAmB,EAAnBA,SAAUP,EAAS,EAATA,MAAS,SAC1BO,EAAS,UAAW,CAAC+M,QAAS,CAAElL,GAAIpC,EAAMsI,KAAKlG,GAAImG,aAAcvI,EAAMsI,KAAKC,cAAgBvM,KAAM6K,IADxE,uBAE1BtG,EAAS,aAFiB,8CAI9BmX,iBAlUa,YAkUkB,0JAAZnX,EAAY,EAAZA,SAAY,SAC3BA,EAAS,gBAAiB,CAAC+M,QAAS,KAAMtR,KAAM4K,EAA6BuP,SAAU,kCAD5D,8CAI/BwB,YAtUa,cAsUmF,oKAAlFpX,EAAkF,EAAlFA,SAAeqX,EAAmE,EAAnEA,QAASC,EAA0D,EAA1DA,eAAgBC,EAA0C,EAA1CA,mBAAoBC,EAAsB,EAAtBA,SAAU/O,EAAY,EAAZA,QACtFzI,EAAS,kCACTA,EAAS,0CAFyF,kBAG3F,IAAItF,SAAS,SAACC,EAASC,GAC1BoF,EAAS,UAAW,CAAE+M,QAAS,CAAGlL,GAAIpC,EAAMsI,KAAKlG,GAAIwV,UAASC,iBAAgBC,qBAAoBC,WAAU/O,WAAW9N,UAASC,SAAQa,KAAMuK,QAJhD,8CAOhGyR,YA7Ua,WA6Ua1K,GAAS,8JAArB/M,EAAqB,EAArBA,SAChBf,QAAQsB,IAAI,mBADyB,kBAGdP,EAAS,gBAAiB,CAAC+M,QAASA,EAAStR,KAAMkL,IAHrC,cAG3B5F,EAH2B,OAIjC9B,QAAQsB,IAAI,kBAAmBQ,GAJE,4BAK1BA,EAAK5I,YALqB,aAK1B,EAAW6U,SALe,2CAOjC/N,QAAQjC,MAAR,MAPiC,kEAWnC0a,oBAxVa,WAwVqB3K,GAAS,8JAArB/M,EAAqB,EAArBA,SACxBf,QAAQsB,IAAI,2BADiC,kBAGtBP,EAAS,gBAAiB,CAAC+M,QAASA,EAAStR,KAAMmL,IAH7B,cAGnC7F,EAHmC,OAIzC9B,QAAQsB,IAAI,0BAA2BQ,GAJE,4BAKlCA,EAAK5I,YAL6B,aAKlC,EAAW6U,SALuB,2CAOzC/N,QAAQjC,MAAR,MAPyC,kEAW3C2a,iBAnWa,WAmWkB5K,GAAS,8JAArB/M,EAAqB,EAArBA,SACrBf,QAAQsB,IAAI,wBAD8B,kBAGnBP,EAAS,gBAAiB,CAAC+M,QAASA,EAAStR,KAAMoL,IAHhC,cAGhC9F,EAHgC,OAItC9B,QAAQsB,IAAI,uBAAwBQ,GAJE,4BAK/BA,EAAK5I,YAL0B,aAK/B,EAAW6U,SALoB,2CAOtC/N,QAAQjC,MAAR,MAPsC,kEAWxC4a,kBA9Wa,WA8WmB7K,GAAS,8JAArB/M,EAAqB,EAArBA,SACtBf,QAAQsB,IAAI,yBAD+B,kBAGpBP,EAAS,gBAAiB,CAAC+M,QAASA,EAAStR,KAAMqL,IAH/B,cAGjC/F,EAHiC,OAIvC9B,QAAQsB,IAAI,wBAAyBQ,GAJE,4BAKhCA,EAAK5I,YAL2B,aAKhC,EAAW6U,SALqB,2CAOvC/N,QAAQjC,MAAR,MAPuC,kEAezC6a,kBA7Xa,WA6XmB9K,GAAS,0JAArB/M,EAAqB,EAArBA,SAAqB,kBACpC,IAAItF,SAAS,SAACC,EAASC,GAC1BoF,EAAS,UAAW,CAAE+M,QAASA,EAASpS,UAASC,SAAQa,KAAMsL,QAFxB,8CAKzC+Q,2BAlYa,WAkY4B/K,GAAS,0JAArB/M,EAAqB,EAArBA,SAAqB,kBAC7C,IAAItF,SAAS,SAACC,EAASC,GAC1BoF,EAAS,UAAW,CAAE+M,QAASA,EAASpS,UAASC,SAAQa,KAAMuL,QAFf,gD,mGE1zBxD,EAAS,WAAa,IAAI+Q,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,QAAQ,CAACF,EAAG,gBAAgB,IAC9IG,EAAkB,G,wBCQtB,GACEhb,KAAM,MAENib,KAAM,CAEJC,cAFJ,SAEA,GAEM,OADAC,EAAyB,oBAAVA,EAAuBA,EAAMT,KAAKU,QAAUD,EACpDA,EAAQ,GAArB,0CAGEE,QAVF,WAWIX,KAAKU,OAAO1Y,SAAS,mBACrBgY,KAAKU,OAAO1Y,SAAS,8BCrBqS,I,YCO1T4Y,EAAY,eACd,EACA,EACAN,GACA,EACA,KACA,KACA,MAIa,EAAAM,E,oOCbf,SAASC,IACP,IAAMC,EAAUvZ,UACVwZ,EAAW,GAQjB,OAPAD,EAAQlU,OAAO2E,SAAQ,SAAA5K,GACrB,IAAMqa,EAAUra,EAAIsa,MAAM,uBAC1B,GAAID,GAAWA,EAAQrgB,OAAS,EAAG,CACjC,IAAMugB,EAASF,EAAQ,GACvBD,EAASG,GAAUJ,EAAQna,OAGxBoa,EAZTI,aAAIC,IAAIC,QAeO,UAAIA,OAAQ,CACzBH,OAAQ5Y,KACRgZ,eAAgBhZ,KAChByY,SAAUF,M,+PCYZU,IAAUC,KACVC,IAAcD,KACdE,IAAWF,KACXG,IAAMH,KACNI,IAAcJ,KACdK,IAAmBL,KACnBM,IAAeN,KACfL,aAAIC,IAAIW,KAOR9L,IAAOiL,OAAO,MAId,IAAMvH,EAAU,CACd/O,MAAO,kBAAMzC,aAAaC,QAAQ,kBAGpC+Y,aAAIC,IAAIY,IAAarI,GAErBwH,aAAItgB,UAAUoV,OAASA,IACvBkL,aAAIc,OAAOC,eAAgB,EAC3Bf,aAAIC,IAAIe,KACRhB,aAAIC,IAAIgB,QACRjB,aAAIC,IAAIiB,KACRlB,aAAIC,IAAIkB,KACRnB,aAAIC,IAAImB,QACRpB,aAAIC,IAAIoB,QACRrB,aAAIC,IAAI7Z,EAAQ,SAChB4Z,aAAIC,IAAI7Z,EAAQ,SAChB4Z,aAAIC,IAAIqB,EAAe,CACrBC,KAAM,CACJ/b,IAAK,0CACLgc,UAAW,UAEbC,mBAAmB,IAErBzB,aAAIP,UAAU,YAAaiC,KAE3B,IAAI1B,aAAI,CACN2B,cACAC,aACAC,OACAC,OAAQ,SAAAC,GAAC,OAAIA,EAAEC,MACdC,OAAO,S,kMC3EJC,EAAe,GACfC,EAAY,CAAEpiB,QAAS,IA4D7B,SAASqiB,EAAaC,EAASC,GAC7B,GAAoB,IAAhBA,EAAK9iB,OAAc,OAAO6iB,EAE9B,IAAME,EAAYD,EAAKriB,QAMvB,OALAoiB,EAAQtiB,QAAQwiB,GAAhB,gBACExiB,QAAS,GACTyiB,YAAY,GACTH,EAAQtiB,QAAQwiB,IAEdH,EAAaC,EAAQtiB,QAAQwiB,GAAYD,IAnEjD,WAGC,IAAMG,EAAgBrc,UAUtBqc,EAAchX,OAAO2E,SAAQ,SAACsS,GAC5B,IAAMC,EAAmBF,EAAcC,GAIvC,GAAIR,EAAaQ,KAAcC,EAA/B,CAGAT,EAAaQ,GAAYC,EAGzB,IAAMC,EAAaF,EAEhBG,QAAQ,QAAS,IAEjBA,QAAQ,SAAU,IAElBjS,MAAM,MAENvF,IAAIsB,KAGP,EAAoByV,EAAaD,EAAWS,GAApC7iB,EAAR,EAAQA,QAGRA,EAAQ6iB,EAAWE,OAAnB,gBAEEN,YAAY,GACTG,QAzCR,GAsEcR,QAAf,QC1EAnC,aAAIC,IAAI8C,QAER,IAAMnB,EAAQ,IAAImB,OAAKC,MAAM,CAC3BjjB,UAIAkjB,QAAQ9b,IAGKya,U,6FCXTsB,EAAa,SAACC,EAAcC,GAC9Bpc,aAAamD,QAAQ,eAAgBgZ,GACrCnc,aAAamD,QAAQ,gBAAiBiZ,IAGpClZ,EAAc,WAChBlD,aAAauC,WAAW,gBACxBvC,aAAauC,WAAW,kBAGtB8Z,EAAS,WACX,QAAOrc,aAAaC,QAAQ,iBAG1B0D,EAAsB,WAAiB,IAAhBmW,EAAgB,uDAAP,GAC5BwC,EAAgBrX,IAAM1G,OAAO,CACjCqF,QAASkW,EAAOlW,SAAW,GAC3BsB,QAAS,CACP,eAAgB,sBAIdnC,EAAK,yDAAG,WAAOwZ,GAAP,oHAEiBtX,IAAM8O,KAAN,UAAcuI,EAAczY,YAA5B,SAAgD0Y,GAFjE,cAEAvZ,EAFA,OAGAmZ,EAAenZ,EAAShL,KAAKwkB,MAAMC,YACnCL,EAAgBpZ,EAAShL,KAAKwkB,MAAME,aAC1CR,EAAWC,EAAcC,GALnB,kBAMCpZ,GAND,2CAQNE,IARM,+DAAH,sDAaXoZ,EAAcJ,WAAaA,EAC3BI,EAAcpZ,YAAcA,EAC5BoZ,EAAczY,YAAciW,EAAOjW,aAAgBiW,EAAOlW,SAAW,GACrE0Y,EAAcD,OAASA,EACvBC,EAAcvZ,MAAQA,EAEtB,IAAM4Z,EAAqB,SAAC7C,GACxB,IAAM8C,EAAc5c,aAAaC,QAAQ,gBAIzC,OAHI2c,IACT9C,EAAO5U,QAAQ2X,cAAf,iBAAyCD,IAE7B9C,GAGLgD,EAAmB,yDAAG,WAAO9Z,GAAP,0GACjBA,GADiB,2CAAH,sDAInB+Z,EAAwB,yDAAG,WAAOlgB,GAAP,+FACzBA,EAAMmG,UAAsC,MAA1BnG,EAAMmG,SAASmB,OADR,oBAEnB6Y,EAAehd,aAAaC,QAAQ,iBACpC2c,EAAc5c,aAAaC,QAAQ,iBAErC+c,EALqB,0CAQM/X,IAAM8O,KAAN,UAAcuI,EAAczY,YAA5B,iBAAwD,CAAEmZ,aAAcA,EAAcJ,YAAaA,IARzG,UAQX5Z,EARW,OAUO,MAApBA,EAASmB,OAVI,wBAYbnE,aAAamD,QAAQ,eAAgBH,EAAShL,KAAKwkB,MAAMC,aACzD5f,EAAMid,OAAO5U,QAAQ2X,cAArB,iBAA+C7Z,EAAShL,KAAKwkB,MAAMC,aAbtD,kBAcNxX,IAAMpI,EAAMid,SAdN,eAgBbhb,QAAQsB,IAAI,wBACZ8C,IACAlE,OAAOie,SAASC,SAlBH,kBAmBN3iB,QAAQE,OAAOoC,IAnBT,oEAuBjBiC,QAAQsB,IAAI,wBACZtB,QAAQjC,MAAR,MACAqG,IACAlE,OAAOie,SAASC,SA1BC,kBA2BV3iB,QAAQE,OAAOoC,IA3BL,iCAgCtBtC,QAAQE,OAAOoC,IAhCO,0DAAH,sDAsC9B,OAHAyf,EAAca,aAAazhB,QAAQud,IAAI0D,GACvCL,EAAca,aAAana,SAASiW,IAAI6D,EAAqBC,GAEtDT,GAGM3Y,U,8KChGF,GACX,CACI2X,KAAM,SACNne,KAAM,QACNsb,UAAW,kBAAM,iDACjB2E,KAAM,CACFC,cADE,SACYC,EAASC,EAAWC,GAE1Bxd,aAAaC,QAAQ,gBAErBud,EAAK,CAAErgB,KAAM,SAGbqgB,OAKhB,CACIlC,KAAM,UACNne,KAAM,SACNigB,KAAM,CACFK,cAAc,EACdJ,cAFE,SAEYC,EAASC,EAAWC,GAC9B5C,OAAM/a,SAAS,eACf,IAAM6d,EAA8BH,EAAU1E,QAAQ8E,MAClD,SAACC,GAAD,OAAWA,EAAM9kB,KAAK,aAG1B0kB,EAAKE,EAA8B,CAAEvgB,KAAM,QAAX,kBAA2BogB,OAKvE,CACIjC,KAAM,IACNne,KAAM,OACNigB,KAAM,CACFK,cAAc,GAElBhF,UAAW,kBAAM,yJAErB,CACI6C,KAAM,4BACNne,KAAM,2BACNigB,KAAM,CACFK,cAAc,GAElBhF,UAAW,kBAAM,6GAErB,CACI6C,KAAM,2BACNne,KAAM,0BACNigB,KAAM,CACFK,cAAc,GAElBhF,UAAW,kBAAM,uFAErB,CACI6C,KAAM,gCACNne,KAAM,+BACNigB,KAAM,CACFK,cAAc,GAElBhF,UAAW,kBAAM,mIAGrB,CACI6C,KAAM,wBACNne,KAAM,uBACNigB,KAAM,CACFK,cAAc,GAElBhF,UAAW,kBAAM,uFAErB,CACI6C,KAAM,aACNne,KAAM,YACNigB,KAAM,CACFK,cAAc,GAElBhF,UAAW,kBAAM,6GAErB,CACI6C,KAAM,iBACNne,KAAM,iBACNigB,KAAM,CACFK,cAAc,GAElBhF,UAAW,kBAAM,4GACjBoF,OAAO,GAEX,CACIvC,KAAM,iBACNne,KAAM,gBACNigB,KAAM,CACFU,KAAK,CAAC,iBACNL,cAAc,GAElBhF,UAAW,kBAAM,uFAErB,CACI6C,KAAM,qBACNne,KAAM,oBACNigB,KAAM,CACFU,KAAK,CAAC,iBACNL,cAAc,GAElBhF,UAAW,kBAAM,uFAErB,CACI6C,KAAM,oBACNne,KAAM,mBACNigB,KAAM,CACFU,KAAK,CAAC,iBACNL,cAAc,GAElBhF,UAAW,kBAAM,uFAErB,CACI6C,KAAM,YACNne,KAAM,WACNigB,KAAM,CACFU,KAAK,CAAC,YACNL,cAAc,GAElBhF,UAAW,kBAAM,mIAErB,CACI6C,KAAM,0BACNne,KAAM,mBACNigB,KAAM,CACFU,KAAK,CAAC,YACNL,cAAc,GAElBhF,UAAW,kBAAM,4GACjBoF,OAAO,GAEX,CACIvC,KAAM,SACNne,KAAM,QACNigB,KAAM,CACFU,KAAK,CAAC,iBACNL,cAAc,GAElBhF,UAAW,kBAAM,yJAErB,CACI6C,KAAM,SACNne,KAAM,QACNigB,KAAM,CACFU,KAAK,CAAC,iBACNL,cAAc,GAElBhF,UAAW,kBAAM,6GAErB,CACI6C,KAAM,UACNne,KAAM,SACNigB,KAAM,CACFU,KAAK,CAAC,iBACNL,cAAc,GAElBhF,UAAW,kBAAM,mIAErB,CACI6C,KAAM,WACNne,KAAM,UACNigB,KAAM,CACFU,KAAK,CAAC,iBACNL,cAAc,GAElBhF,UAAW,kBAAM,mIAErB,CACI6C,KAAM,WACNne,KAAM,UACNigB,KAAM,CACFU,KAAK,CAAC,iBACNL,cAAc,GAElBhF,UAAW,kBAAM,mIAErB,CACI6C,KAAM,YACNne,KAAM,WACNigB,KAAM,CACFU,KAAK,CAAC,iBACNL,cAAc,GAElBhF,UAAW,kBAAM,mIAErB,CACI6C,KAAM,YACNne,KAAM,WACNigB,KAAM,CACFU,KAAK,CAAC,iBACNL,cAAc,GAElBhF,UAAW,kBAAM,yJAErB,CACI6C,KAAM,qBACNne,KAAM,oBACNigB,KAAM,CACFK,cAAc,GAElBhF,UAAW,kBAAM,6GAErB,CACI6C,KAAM,iBACNne,KAAM,YACNigB,KAAM,CACFK,cAAc,GAElBhF,UAAW,kBAAM,sFACjBoF,OAAO,GAEX,CACIvC,KAAM,WACNne,KAAM,UACNigB,KAAM,CACFK,cAAc,GAElBhF,UAAW,kBAAM,mIAGrB,CACI6C,KAAM,oBACNne,KAAM,aACNigB,KAAM,CACFK,cAAc,GAElBhF,UAAW,kBAAM,sFACjBoF,MAAO,SAAAD,GAAK,OAAInlB,OAAOslB,OAAO,GAAIH,EAAMI,MAAOJ,EAAM5I,UAEzD,CACIsG,KAAM,oBACNne,KAAM,aACNigB,KAAM,CACFK,cAAc,GAElBhF,UAAW,kBAAM,wJACjBoF,OAAO,GAEX,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","file":"js/app.85a15d8c.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-5a860c09\":\"16a78f7b\",\"chunk-5f438890\":\"46ed1709\",\"chunk-0cd68bc2\":\"d7b8d82c\",\"chunk-1ab78c2a\":\"7024512c\",\"chunk-1f77e83c\":\"89d66c19\",\"chunk-237980a4\":\"fd72ccf3\",\"chunk-2d0c4d85\":\"25bf45a2\",\"chunk-2d0e97b4\":\"dde4c1bd\",\"chunk-9853b620\":\"a261bc44\",\"chunk-6b05528e\":\"736454e7\",\"chunk-a1cb8ffe\":\"2d6c18bf\",\"chunk-78e59712\":\"25d1e853\",\"chunk-6521d6eb\":\"cacb4971\",\"chunk-30c02b2e\":\"484953a4\",\"chunk-4d8cbdb2\":\"067efb1e\",\"chunk-055b6a6c\":\"09de82fa\",\"chunk-0ab76c00\":\"f39a4b40\",\"chunk-2d0abdd3\":\"86fb7dd6\",\"chunk-14351d4a\":\"73fa8d9c\",\"chunk-2d0c93a6\":\"11b874e9\",\"chunk-1aaa01c6\":\"29414454\",\"chunk-4a1f369c\":\"f69d674e\",\"chunk-606cc334\":\"b0addcf1\",\"chunk-7971e638\":\"c13a80d6\",\"chunk-1e48a4b6\":\"d3262285\",\"chunk-d52bb652\":\"9c75f074\",\"chunk-6005efcc\":\"8ead8261\",\"chunk-2d0f1582\":\"11965953\",\"chunk-2d225631\":\"2b8ffee6\",\"chunk-2d237781\":\"ded5214a\",\"chunk-613f4730\":\"9b06e926\",\"chunk-a1759700\":\"e3c82e74\",\"chunk-50d395d8\":\"0151ac47\",\"chunk-5c9fb308\":\"3010c778\",\"chunk-ccabf340\":\"f25fdbf8\",\"chunk-71086a04\":\"5b79e5cd\",\"chunk-cc6c83a0\":\"d9817141\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-1e48a4b6\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-5a860c09\":\"31d6cfe0\",\"chunk-5f438890\":\"31d6cfe0\",\"chunk-0cd68bc2\":\"31d6cfe0\",\"chunk-1ab78c2a\":\"31d6cfe0\",\"chunk-1f77e83c\":\"31d6cfe0\",\"chunk-237980a4\":\"31d6cfe0\",\"chunk-2d0c4d85\":\"31d6cfe0\",\"chunk-2d0e97b4\":\"31d6cfe0\",\"chunk-9853b620\":\"31d6cfe0\",\"chunk-6b05528e\":\"31d6cfe0\",\"chunk-a1cb8ffe\":\"31d6cfe0\",\"chunk-78e59712\":\"31d6cfe0\",\"chunk-6521d6eb\":\"31d6cfe0\",\"chunk-30c02b2e\":\"31d6cfe0\",\"chunk-4d8cbdb2\":\"31d6cfe0\",\"chunk-055b6a6c\":\"31d6cfe0\",\"chunk-0ab76c00\":\"31d6cfe0\",\"chunk-2d0abdd3\":\"31d6cfe0\",\"chunk-14351d4a\":\"31d6cfe0\",\"chunk-2d0c93a6\":\"31d6cfe0\",\"chunk-1aaa01c6\":\"31d6cfe0\",\"chunk-4a1f369c\":\"31d6cfe0\",\"chunk-606cc334\":\"31d6cfe0\",\"chunk-7971e638\":\"31d6cfe0\",\"chunk-1e48a4b6\":\"e42a3c01\",\"chunk-d52bb652\":\"31d6cfe0\",\"chunk-6005efcc\":\"31d6cfe0\",\"chunk-2d0f1582\":\"31d6cfe0\",\"chunk-2d225631\":\"31d6cfe0\",\"chunk-2d237781\":\"31d6cfe0\",\"chunk-613f4730\":\"31d6cfe0\",\"chunk-a1759700\":\"31d6cfe0\",\"chunk-50d395d8\":\"31d6cfe0\",\"chunk-5c9fb308\":\"31d6cfe0\",\"chunk-ccabf340\":\"31d6cfe0\",\"chunk-71086a04\":\"31d6cfe0\",\"chunk-cc6c83a0\":\"31d6cfe0\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","const signalR = require(\"@microsoft/signalr\");\r\n\r\n\r\nlet connection = null;\r\n\r\nexport const state = {\r\n connectionId: null\r\n}\r\n\r\nexport const mutations = {\r\n SET_CONNECTIONID(state, newValue) {\r\n state.connectionId = newValue;\r\n },\r\n}\r\n\r\nexport const actions = {\r\n connect({ dispatch, commit }) {\r\n return new Promise( (resolve) => {\r\n \r\n if(connection) {\r\n connection.stop();\r\n }\r\n \r\n if(localStorage.getItem('access_token')) {\r\n const uri = process.env.VUE_APP_BASE_URL + \"/client-notifications\";\r\n console.log('signlaR trying to connect ' + uri)\r\n connection = new signalR.HubConnectionBuilder()\r\n .withUrl(uri, { accessTokenFactory: () => localStorage.getItem('access_token') })\r\n .withAutomaticReconnect()\r\n .build();\r\n \r\n connection.on(\"RefreshIndex\", data => {\r\n console.log('RefreshIndex', data);\r\n });\r\n \r\n connection.on(\"RefreshMessageStatus\", data => {\r\n console.log('RefreshMessageStatus', data);\r\n dispatch('messages/loadActualStatus', null, { root: true });\r\n });\r\n\r\n connection.on(\"RefreshMessageStatus\", data => {\r\n console.log('RefreshMessageStatus', data);\r\n dispatch('messages/loadActualStatus', null, { root: true });\r\n });\r\n\r\n connection.on(\"UpdatePersons\", data => {\r\n console.log('UpdatePersons', data);\r\n dispatch('contacts/reload', null, { root: true });\r\n });\r\n\r\n connection.on(\"NewExecutionResponse\", data => {\r\n console.log('NewExecutionResponse', data);\r\n commit('execution/END_REQUEST', { resp: data}, { root: true });\r\n });\r\n\r\n connection.on(\"UpdateBackendStatus\", data => {\r\n console.log('UpdateBackendStatus', data);\r\n commit('execution/SET_IS_BACKEND_ALIVE', data, { root: true });\r\n });\r\n \r\n connection.start()\r\n .then(() => {\r\n console.log('signlaR connected!', connection.connection.connectionId)\r\n commit('SET_CONNECTIONID', connection.connection.connectionId);\r\n //dispatch('execution/isBackendAlive', null, {root: true});\r\n })\r\n .catch((e) =>{\r\n commit('execution/SET_IS_BACKEND_ALIVE', false, { root: true });\r\n console.error(e);\r\n });\r\n \r\n connection.onreconnecting((connectionId) => {\r\n console.log('signlaR onreconnecting!', connectionId)\r\n commit('execution/SET_IS_BACKEND_ALIVE', false, { root: true });\r\n });\r\n\r\n connection.onreconnected((connectionId) => {\r\n console.log('signlaR onreconnected!', connectionId)\r\n commit('SET_CONNECTIONID', connectionId);\r\n // dispatch('execution/isBackendAlive', null, {root: true});\r\n });\r\n\r\n connection.onclose(async () => {\r\n console.log('signlaR onclose');\r\n commit('execution/SET_IS_BACKEND_ALIVE', false, { root: true });\r\n });\r\n \r\n }\r\n resolve();\r\n });\r\n },\r\n disconnect() {\r\n return new Promise( (resolve) => {\r\n if(connection) {\r\n connection.stop();\r\n }\r\n connection = null;\r\n resolve();\r\n });\r\n },\r\n}\r\n","//import http from '../../http'\r\nimport http from '../../oauth-client'\r\n\r\n\r\nexport const state = {\r\n currentUser: loadState('auth.currentUser')\r\n}\r\n\r\nif(loadState('auth.currentUser')) {\r\n document.getElementById(\"tradingview-widget-container\").style.display = 'block';\r\n}\r\n\r\n\r\nexport const mutations = {\r\n SET_CURRENT_USER(state, newValue) {\r\n\r\n \r\n if(newValue) {\r\n const user = {\r\n id: newValue.IdentityId,\r\n username: newValue.Name,\r\n roles: newValue.Roles,\r\n permissions: newValue.Permissions,\r\n isAdmin: newValue.Roles.find(a => a === 'administrator') ? true : false,\r\n isC8Internal: newValue.Roles.find(a => a === 'c8internal') ? true : false,\r\n };\r\n \r\n console.log('SET_CURRENT_USER', user);\r\n state.currentUser = user\r\n saveState('auth.currentUser', user)\r\n }\r\n else {\r\n localStorage.removeItem('auth.currentUser');\r\n }\r\n },\r\n}\r\n\r\nexport const getters = {\r\n token(state) {\r\n return state.currentUser.token;\r\n },\r\n // Whether the user is currently logged in.\r\n loggedIn(state) {\r\n return !!state.currentUser\r\n },\r\n}\r\n\r\nexport const actions = {\r\n \r\n\r\n // Logs in the current user.\r\n logIn({ dispatch, commit }, { userName, password } = {}) {\r\n return new Promise( (resolve, reject) => {\r\n http.login({username: userName, password}).then((response)=>{\r\n \r\n localStorage.removeItem('indices_list_data');\r\n localStorage.removeItem('index_view_history');\r\n localStorage.removeItem('indices_filter_criteria');\r\n\r\n \r\n commit('SET_CURRENT_USER', response.data);\r\n dispatch('signalr/connect', null, { root: true });\r\n dispatch('executionSignalr/connect', null, { root: true });\r\n document.getElementById(\"tradingview-widget-container\").style.display = 'block';\r\n resolve(response.data.token)\r\n }).catch((error) => {\r\n \r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n // Logs out the current user.\r\n logOut({ commit }) {\r\n // eslint-disable-next-line no-unused-vars\r\n localStorage.removeItem('indices_list_data');\r\n localStorage.removeItem('index_view_history');\r\n localStorage.removeItem('indices_filter_criteria');\r\n commit('SET_CURRENT_USER', null);\r\n document.getElementById(\"tradingview-widget-container\").style.display = 'none';\r\n http.clearTokens();\r\n }\r\n}\r\n\r\n// ===\r\n// Private helpers\r\n// ===\r\n\r\nfunction saveState(key, state) {\r\n window.localStorage.setItem(key, JSON.stringify(state))\r\n}\r\n\r\n\r\nfunction loadState(key) {\r\n const b = window.localStorage.getItem(key);\r\n if (b) {\r\n return JSON.parse(b);\r\n }\r\n return null;\r\n}\r\n","export const state = {\r\n type: null,\r\n message: null\r\n};\r\n\r\nexport const mutations = {\r\n success(state, message) {\r\n state.type = 'success';\r\n state.message = message;\r\n },\r\n error(state, message) {\r\n state.type = 'danger';\r\n state.message = message;\r\n },\r\n clear(state) {\r\n state.type = null;\r\n state.message = null;\r\n }\r\n};\r\n\r\nexport const actions = {\r\n success({ commit }, message) {\r\n commit('success', message);\r\n },\r\n error({ commit }, message) {\r\n commit('error', message);\r\n },\r\n clear({ commit }) {\r\n commit('clear');\r\n }\r\n};\r\n","import createAxiosInstance from './explorer-axois';\r\n\r\nconst axiosManager = createAxiosInstance({ \r\n baseURL: process.env.VUE_APP_BASE_URL,\r\n authBaseURL: process.env.VUE_APP_AUTH_BASE_URL,\r\n});\r\n\r\nexport default axiosManager;","import http from '@/oauth-client'\r\n\r\nexport const state = {\r\n items: []\r\n}\r\n\r\nexport const mutations = {\r\n SET_ITEMS(state, newValue) {\r\n state.items = newValue\r\n }\r\n}\r\n\r\nexport const getters = {\r\n items(state) {\r\n return state.items;\r\n },\r\n count(state) {\r\n return state.items.length;\r\n },\r\n activeExists(state) {\r\n return state.items.find(x => x.status === 'Pending' || x.status === 'Handling');\r\n }\r\n}\r\n\r\nexport const actions = {\r\n\r\n loadActualStatus({ commit }) {\r\n return new Promise( (resolve, reject) => {\r\n http.get('api/messages/get-actual-status').then((response)=>{\r\n commit('SET_ITEMS', response.data);\r\n resolve();\r\n }).catch((error) => {\r\n \r\n reject(error);\r\n });\r\n });\r\n },\r\n}","// const signalR = require(\"@microsoft/signalr\");\r\n// import Swal from \"sweetalert2\";\r\n\r\nlet connection = null;\r\n\r\nexport const state = {\r\n connectionId: null\r\n}\r\n\r\nexport const mutations = {\r\n SET_CONNECTIONID(state, newValue) {\r\n state.connectionId = newValue;\r\n },\r\n}\r\n\r\nexport const actions = {\r\n connect(/*{ dispatch, commit }*/) {\r\n return new Promise( (resolve) => {\r\n // console.log('execution signalr connect');\r\n // if(connection) {\r\n // connection.stop();\r\n // }\r\n \r\n // if(localStorage.getItem('token')) {\r\n // const uri = process.env.VUE_APP_BASE_EXECUTION_URL + \"/notifications\";\r\n // console.log('execution signlaR trying to connect ' + uri)\r\n // connection = new signalR.HubConnectionBuilder()\r\n // .withUrl(uri, { accessTokenFactory: () => localStorage.getItem('token') })\r\n // .withAutomaticReconnect()\r\n // .build();\r\n \r\n // connection.on(\"UserMessage\", data => {\r\n // console.log('UserMessage', data);\r\n // Swal.fire({\r\n // title: data.value,\r\n // width: 600,\r\n // padding: 100,\r\n // confirmButtonColor: \"#556ee6\",\r\n // background:\r\n // \"#fff url(//subtlepatterns2015.subtlepatterns.netdna-cdn.com/patterns/geometry.png)\"\r\n // });\r\n // });\r\n\r\n // connection.on(\"ActiveIndexNotification\", data => {\r\n // console.log('ActiveIndexNotification', data);\r\n // dispatch('activeIndices/load', null, { root: true });\r\n // });\r\n \r\n \r\n // connection.start()\r\n // .then(() => {\r\n // console.log('execution signlaR connected!', connection.connection.connectionId)\r\n // commit('SET_CONNECTIONID', connection.connection.connectionId);\r\n // })\r\n // .catch(console.error);\r\n\r\n // connection.onreconnected((connectionId) => {\r\n // console.log('execution signlaR onreconnected!', connectionId)\r\n // commit('SET_CONNECTIONID', connectionId);\r\n // });\r\n\r\n // connection.onclose(async () => {\r\n // console.log('execution signlaR onclose!', connectionId)\r\n // });\r\n \r\n // }\r\n resolve();\r\n });\r\n },\r\n disconnect() {\r\n return new Promise( (resolve) => {\r\n if(connection) {\r\n connection.stop();\r\n }\r\n connection = null;\r\n resolve();\r\n });\r\n },\r\n}\r\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","var map = {\n\t\"./ar.json\": \"af08\",\n\t\"./en.json\": \"edd4\",\n\t\"./es.json\": \"a306\",\n\t\"./fr.json\": \"f693\",\n\t\"./zh.json\": \"3504\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"49f8\";","import http from '@/oauth-client'\r\nimport backendHttp from '@/backend-oauth-client'\r\nimport { uuid } from 'vue-uuid';\r\nimport moment from 'moment'\r\nimport { camelCase } from 'lodash';\r\nimport axios from 'axios';\r\n\r\nimport hmacSHA256 from 'crypto-js/hmac-sha256';\r\nimport Hex from 'crypto-js/enc-hex'\r\n\r\nlet __timer;\r\n\r\n\r\nfunction BINANCE_SIGNATURE(key, message) {\r\n const bytes = hmacSHA256(message, key);\r\n return bytes.toString(Hex);\r\n}\r\n\r\nconst binanceClient = axios.create({\r\n baseURL: process.env.VUE_APP_BINANCE_API,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n // anything you want to add to the headers\r\n }\r\n});\r\n\r\n\r\nconst interactiveBrokerClient = axios.create({\r\n baseURL: 'http://localhost:7000',\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n // anything you want to add to the headers\r\n }\r\n});\r\n\r\nconst camelizeKeys = (obj) => {\r\n if (Array.isArray(obj)) {\r\n return obj.map(v => camelizeKeys(v));\r\n } else if (obj != null && obj.constructor === Object) {\r\n return Object.keys(obj).reduce(\r\n (result, key) => ({\r\n ...result,\r\n [camelCase(key)]: camelizeKeys(obj[key]),\r\n }),\r\n {},\r\n );\r\n }\r\n return obj;\r\n };\r\n\r\nconst UPLOAD_TRANSACTIONS = 'UPLOAD_TRANSACTIONS';\r\nconst EXECUTION_RUNTIME_INIT_REQ_NAME = 'EXECUTION_RUNTIME_INIT';\r\nconst SAVE_EXECUTION_SETTINGS_REQ_NAME = 'SAVE_EXECUTION_SETTINGS';\r\nconst LOAD_EXECUTION_SETTINGS_REQ_NAME = 'LOAD_EXECUTION_SETTINGS';\r\nconst SAVE_USER_SETTINGS_REQ_NAME = 'SAVE_USER_SETTINGS';\r\nconst LOAD_USER_SETTINGS_REQ_NAME = 'LOAD_USER_SETTINGS';\r\nconst LOAD_LIVE_INDICIES_REQ_NAME = 'LOAD_LIVE_INDICIES';\r\nconst LOAD_LIVE_ITEM_STAT_REQ_NAME = 'LOAD_LIVE_ITEM_STAT';\r\nconst LOAD_LIVE_ITEM_REBALANCE_REQ_NAME = 'LOAD_LIVE_ITEM_REBALANCE';\r\nconst LOAD_LIVE_ITEM_PORTFOLIO_POSITIONS_REQ_NAME = 'LOAD_LIVE_ITEM_PORTFOLIO_POSITIONS';\r\nconst LOAD_LIVE_ITEM_PORTFOLIO_TRANSACTIONS_REQ_NAME = 'LOAD_LIVE_ITEM_PORTFOLIO_TRANSACTIONS';\r\nconst LOAD_TAX_LOSS_HARVEST_REQ_NAME= 'LOAD_TAX_LOSS_HARVEST';\r\nconst CALCULATE_FX_HEDGE = \"CALCULATE_FX_HEDGE\";\r\nconst GET_FX_HEDGE_SETTINGS = \"GET_FX_HEDGE_SETTINGS\";\r\nconst GET_FX_VOLATILTY = \"GET_FX_VOLATILTY\";\r\nconst CALCULATE_FX_HEDGE_CHARTS = \"CALCULATE_FX_HEDGE_CHARTS\";\r\nconst CALCULATE_FX_HEDGE_DETAILS = \"CALCULATE_FX_HEDGE_DETAILS\";\r\nconst CALCULATE_FX_HEDGE_PORTFOLIO_DETAILS = \"CALCULATE_FX_HEDGE_PORTFOLIO_DETAILS\";\r\nconst TIMEOUT = 30000;\r\n\r\nconst getDefaultState = () => {\r\n return {\r\n binance: {\r\n connected: false,\r\n serverTime: null,\r\n exchangeInfo: null\r\n },\r\n interactiveBrokers:{\r\n connected: false\r\n },\r\n uploadTransactionsFromTime: null,\r\n liveIndicies: [],\r\n isBackendAlive: false,\r\n requests: [],\r\n failedRequests: [],\r\n runtime: {\r\n orders: []\r\n },\r\n item: {\r\n id: null,\r\n currencyName: 'USD',\r\n name: '',\r\n chartData: [],\r\n weights: [],\r\n \r\n totalReturn: null,\r\n ytd: null,\r\n mtd: null,\r\n dtd: null,\r\n\r\n reBalanceCloseoutTrades: false,\r\n taxLossHarvestTrades: false,\r\n country: 'US',\r\n reBalance: [],\r\n positions: [],\r\n userSettings: null,\r\n executionSettings: null,\r\n transactions: {\r\n items: [],\r\n total: 0,\r\n reqSize: 100\r\n }\r\n }\r\n };\r\n};\r\n\r\nexport const state = getDefaultState();\r\n\r\nexport const mutations = {\r\n SET_ORDER_PROCESSING(state, {id, value}) {\r\n const items = [...state.runtime.orders];\r\n const o = items.find(x => x.id === id);\r\n o.processing = value;\r\n state.runtime.orders = items;\r\n },\r\n SET_UPLOAD_TRANSACTIONS_FROM_TIME(state, newValue) {\r\n state.uploadTransactionsFromTime = newValue;\r\n },\r\n PAPER_TRADE_UPDATE(state) {\r\n const items = [...state.runtime.orders.filter(x => x.selected)];\r\n items.forEach(x => x.orderStatus = 'Filled');\r\n },\r\n HANDLE_INTERACTIVE_BROKER_POSITIONS_UPDATE(state, {brokerPositions}) {\r\n const pos = JSON.parse(JSON.stringify(state.item.positions));\r\n pos.forEach(p=>{\r\n let ticker = p.ticker;\r\n if ( ticker.includes(\":\") )\r\n {\r\n var nameList = ticker.split(\":\");\r\n ticker = nameList[0];\r\n }\r\n const brokerPos = brokerPositions.find(x => x.instrument === ticker);\r\n if(brokerPos) {\r\n p.brokerPosition = brokerPos.position;\r\n } \r\n });\r\n state.item.positions = pos;\r\n },\r\n HANDLE_INTERACTIVE_BROKER_UPDATE(state, data) {\r\n const items = [...state.runtime.orders];\r\n const order = items.find(x => x.id === (data.clOrderID || data.ClOrderID));\r\n \r\n if(order) {\r\n const index = items.indexOf(order);\r\n if(index>= 0) {\r\n \r\n const order = {...items[index]};\r\n order.orderStatus = data.status;\r\n order.filled = data.cumQty;\r\n order.remaining = data.leavesQty;\r\n items[index] = order;\r\n\r\n state.runtime = { ...state.runtime, orders: items};\r\n }\r\n }\r\n },\r\n SET_INTERACTIVE_BROKERS_CONNECTED(state, newValue) {\r\n const copy = {...state.interactiveBrokers};\r\n if(copy.connected !== true && newValue) {\r\n state.requests.forEach(req => {\r\n if(req.type === UPLOAD_TRANSACTIONS) {\r\n if(req.reject) {\r\n req.reject();\r\n }\r\n }\r\n });\r\n state.requests = state.requests.filter(req => req.type !== UPLOAD_TRANSACTIONS);\r\n }\r\n copy.connected = newValue;\r\n state.interactiveBrokers = copy;\r\n },\r\n\r\n SET_BINANCE_CONNECTED(state, newValue) {\r\n const copy = {...state.binance};\r\n copy.connected = newValue;\r\n state.binance = copy;\r\n },\r\n SET_BINANCE_SERVER_TIME(state, newValue) {\r\n const copy = {...state.binance};\r\n copy.serverTime = newValue;\r\n state.binance = copy;\r\n },\r\n SET_BINANCE_EXCHANGE_INFO(state, newValue) {\r\n const copy = {...state.binance};\r\n copy.exchangeInfo = newValue;\r\n state.binance = copy;\r\n },\r\n SET_ORDER_SIZE(state, {index, size}) {\r\n if(size === '' || size == null || size == undefined || Number(size) === Number.NaN) {\r\n state.runtime.orders[index].orderQuantity = null;\r\n } else {\r\n state.runtime.orders[index].orderQuantity = Number(size)\r\n }\r\n },\r\n SET_ORDER_PRICE(state, {index, price}) {\r\n state.runtime.orders[index].price = price == null || price == undefined ? 0 : parseFloat(price);\r\n },\r\n SET_ORDER_PARAMETERS(state, {index, parameters}) {\r\n state.runtime.orders[index].orderParameters = parameters;\r\n },\r\n SET_ORDER_TYPE(state, {index, orderType}) {\r\n state.runtime.orders[index].orderType = orderType;\r\n const settings = state.runtime.orders[index].executionSettings.orderTypes.find(x => x.orderType === orderType);\r\n state.runtime.orders[index].orderParameters = settings.orderParameters || (orderType === 'Limit' ? 'price=' : '');\r\n },\r\n SELECT_ALL_RUNTIME_ORDERS(state) {\r\n state.runtime.orders = state.runtime.orders.map(x =>{\r\n return {...x, selected: true };\r\n });\r\n },\r\n UNSELECT_ALL_RUNTIME_ORDERS(state) {\r\n state.runtime.orders = state.runtime.orders.map(x =>{\r\n return {...x, selected: false };\r\n });\r\n },\r\n SET_ORDER_SELECTED(state, {index, selected}) {\r\n state.runtime.orders[index].selected = selected;\r\n },\r\n SET_REBALANCE_CLOSEOUT_TRADES(state, newValue) {\r\n state.item.reBalanceCloseoutTrades = newValue;\r\n },\r\n SET_TAX_LOSS_HARVEST_TRADES(state, newValue) {\r\n state.item.taxLossHarvestTrades = newValue;\r\n },\r\n SET_COUNTRY(state, newValue) {\r\n state.item.country = newValue;\r\n },\r\n SET_ITEM_ID(state, newValue) {\r\n state.item.id = newValue;\r\n },\r\n SET_CURRENCY_NAME(state, newValue) {\r\n state.item.currencyName = newValue;\r\n },\r\n SET_IS_BACKEND_ALIVE(state, newValue) {\r\n state.isBackendAlive = newValue\r\n },\r\n SET_LIVE_INDICIES_LOADING(state, newValue) {\r\n state.liveIndicies.loading = newValue\r\n },\r\n BEGIN_REQUEST(state, { req } = {}) {\r\n state.requests = [...state.requests, req];\r\n },\r\n HANDLE_LOAD_LIVE_INDICIES_REQ(state, data) {\r\n state.liveIndicies = (data.payload || data.Payload).map(x => {\r\n return { name: x.Name, id: x.id || x.Id, status: x.Status || x.status };\r\n });\r\n },\r\n END_REQUEST(state, { resp } = {}) {\r\n const reqId = resp.reqId || resp.ReqId;\r\n const req = state.requests.find(x => x.id == reqId );\r\n \r\n if(!req) return;\r\n\r\n console.log('END_REQUEST', {req, resp });\r\n\r\n state.requests = [...state.requests.filter(x => x.id != reqId)];\r\n \r\n if(!resp.failed) {\r\n if(req.type === EXECUTION_RUNTIME_INIT_REQ_NAME) {\r\n HANDLE_INIT_REQUEST(state, { payload: resp.payload || resp.Payload } );\r\n }else if(req.type === LOAD_LIVE_INDICIES_REQ_NAME) {\r\n state.liveIndicies = (resp.payload || resp.Payload).map(x => {\r\n return { name: x.Name, id: x.id || x.Id };\r\n });\r\n } else if(req.type === LOAD_LIVE_ITEM_STAT_REQ_NAME) {\r\n const { Name, ChartData, Weights, TotalReturn, YTD, MTD, DTD } = resp.payload || resp.Payload;\r\n state.item.name = Name;\r\n state.item.chartData = ChartData.map(x => {\r\n return {\r\n timeStamp: moment(x.dateTime || x.DateTime).unix(),\r\n dateTime: x.dateTime || x.DateTime,\r\n value: x.value || x.Value\r\n };\r\n });\r\n state.item.weights = Weights.map(x => {\r\n return {\r\n productName: x.ProductName,\r\n ticker: x.Ticker,\r\n weight: x.weight || x.Weight\r\n };\r\n });\r\n state.item.totalReturn = TotalReturn;\r\n state.item.ytd = YTD;\r\n state.item.mtd = MTD;\r\n state.item.dtd = DTD;\r\n } else if(req.type === LOAD_LIVE_ITEM_REBALANCE_REQ_NAME) {\r\n const reBalance = resp.payload || resp.Payload;\r\n state.item.reBalance = reBalance.map(x => {\r\n return { displayName: x.DisplayName, productName: x.ProductName, ticker: x.Ticker, currentSize: x.CurrentSize, difference: x.Difference, proposedSize: x.ProposedSize};\r\n });\r\n } else if(req.type === LOAD_EXECUTION_SETTINGS_REQ_NAME) {\r\n \r\n const executionSettings = resp.payload || resp.Payload;\r\n \r\n try{\r\n const newItem = {...state.item, executionSettings: executionSettings.OrderSettings.map(x => {\r\n \r\n var o = {\r\n displayName: x.DisplayName,\r\n productName: x.ProductName,\r\n ticker: x.Ticker,\r\n // defaultOrderType: ot ? { orderType: ot.OrderType, orderParameters: ot.OrderParameters } : null,\r\n orderTypes: x.OrderTypes.map(p => {\r\n return { orderType: p.OrderType, orderParameters: p.OrderParameters }\r\n })\r\n };\r\n o.defaultOrderType = (x.DefaultOrderType || {}).OrderType;\r\n \r\n return o;\r\n })\r\n };\r\n state.item = newItem;\r\n }catch(e) {\r\n console.error(e)\r\n }\r\n \r\n } else if(req.type === LOAD_USER_SETTINGS_REQ_NAME) {\r\n const userSettings = resp.payload || resp.Payload;\r\n let o = JSON.parse(JSON.stringify(state.item));\r\n o.userSettings = {\r\n providerName: userSettings.ProviderName,\r\n name: userSettings.Name,\r\n debugLevel: userSettings.DebugLevel,\r\n autoExecuteTime: userSettings.AutoExecuteTime,\r\n autoSnap: userSettings.AutoSnap,\r\n hasExecuted: userSettings.HasExecuted,\r\n aus: userSettings.AUS,\r\n ausCurrency: userSettings.AUSCurrency,\r\n gearing: userSettings.Gearing,\r\n startDate: userSettings.StartDate ? moment(userSettings.StartDate).format('YYYY/MM/DD') : '',\r\n annualFixFee: userSettings.AnnualFixFee,\r\n annualPerformanceFee: userSettings.AnnualPerformanceFee,\r\n userName: userSettings.UserName,\r\n password: userSettings.Password,\r\n email: userSettings.Email,\r\n broker: userSettings.Broker,\r\n account: userSettings.Account,\r\n defaultOrderType: userSettings.DefaultOrderType,\r\n defaultOrderSettings: userSettings.DefaultOrderSettings,\r\n options: {\r\n brokers: userSettings.Options.Brokers.map(b => {\r\n return {\r\n brokerName: b.BrokerName,\r\n defaultOrderType: b.DefaultOrderType,\r\n orderTypes: b.OrderTypes.map(o => {\r\n return {\r\n orderType: o.OrderType,\r\n settings: o.Settings.map(s => {\r\n return {\r\n name: s.Name,\r\n value: s.Value\r\n }\r\n })\r\n }\r\n }),\r\n }\r\n })\r\n }\r\n };\r\n state.item = o;\r\n } else if(req.type === LOAD_LIVE_ITEM_PORTFOLIO_POSITIONS_REQ_NAME) {\r\n const payload = resp.payload || resp.Payload;\r\n state.item.positions = payload.map(x => {\r\n return { displayName: x.DisplayName, productName: x.ProductName, ticker: x.Ticker, size: x.Size, brokerPosition: x.BrokerPosition, pl: x.PL, warning: x.Warning };\r\n });\r\n } else if(req.type === LOAD_LIVE_ITEM_PORTFOLIO_TRANSACTIONS_REQ_NAME) {\r\n const payload = resp.payload || resp.Payload;\r\n const { Total, Items } = payload;\r\n state.item.transactions.total = Total;\r\n const items = Items.map(x => {\r\n return { displayName: x.DisplayName, productName: x.ProductName, ticker: x.Ticker, direction: x.Direction, size: x.Size, price: x.Price, timestamp: x.Timestamp };\r\n });\r\n\r\n state.item.transactions.items = req.more ? [...state.item.transactions.items, ...items] : items;\r\n } else if(req.type === LOAD_TAX_LOSS_HARVEST_REQ_NAME) {\r\n const payload = resp.payload || resp.Payload;\r\n state.item = {...state.item, taxLoss: camelizeKeys(payload.TaxLoss || payload.taxLoss) };\r\n }\r\n if(req.resolve) {\r\n req.resolve(resp.payload || resp.Payload || null);\r\n }\r\n } else {\r\n state.failedRequests = [...state.failedRequests,{...req, errorMessage: resp.errorMessage || resp.ErrorMessage}];\r\n if(req.reject) {\r\n req.reject();\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const getters = {\r\n uploadTransactionsFromTime(state) {\r\n return state.uploadTransactionsFromTime;\r\n },\r\n binance(state) {\r\n return state.binance;\r\n },\r\n interactiveBrokers(state) {\r\n return state.interactiveBrokers;\r\n },\r\n item(state) {\r\n return state.item;\r\n },\r\n isBackendAlive(state) {\r\n return state.isBackendAlive;\r\n },\r\n liveIndicies(state) {\r\n return state.liveIndicies;\r\n },\r\n loading(state) {\r\n return state.requests.length > 0;\r\n },\r\n runtimeOrders(state) {\r\n return state.runtime.orders || [];\r\n }\r\n}\r\n\r\nfunction HANDLE_INIT_REQUEST(state, {payload} = {}) {\r\n\r\n var orders = camelizeKeys(payload);\r\n orders.forEach(order => {\r\n order.selected = true;\r\n order.filled = 0;\r\n order.remaining = 0;\r\n });\r\n console.log('HANDLE_INIT_REQUEST', orders);\r\n state.runtime.orders = orders;\r\n}\r\n\r\n\r\nexport const actions = {\r\n /*\r\n INTERACTIVE BROKERS >>>\r\n */\r\n async cancellAllInteractiveBrokersOrders({ dispatch, commit }) {\r\n try {\r\n await interactiveBrokerClient.get('/execution/cancelall');\r\n await dispatch('updateInteractiveBrokersOrders');\r\n } catch(e) {\r\n console.error(e);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n }\r\n },\r\n async checkConnectStatusOfInteractiveBrokers ({ dispatch, commit }) {\r\n try {\r\n const resp = await interactiveBrokerClient.get('/execution/connectionstatus');\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', resp.data.connected);\r\n dispatch('updateInteractiveBrokersOrders');\r\n } catch(e) {\r\n console.error(e);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n }\r\n },\r\n async updateInteractiveBrokersOrders ({dispatch, commit, state}) {\r\n if(__timer){\r\n window.clearTimeout(__timer);\r\n }\r\n \r\n try {\r\n if(state.interactiveBrokers.connected) {\r\n const response = await interactiveBrokerClient.get('/execution/orders');\r\n response.data.forEach(o => {\r\n commit('HANDLE_INTERACTIVE_BROKER_UPDATE', o);\r\n });\r\n }\r\n \r\n __timer = window.setTimeout(() => {\r\n dispatch('updateInteractiveBrokersOrders');\r\n }, 1000); \r\n\r\n } catch(e) {\r\n console.error(e);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n } \r\n },\r\n uploadTransactionsFromInteractiveBrokers ({ dispatch, state, commit}) {\r\n return new Promise( (resolve, reject) => {\r\n let param = '';\r\n if(state.uploadTransactionsFromTime) {\r\n const m = state.uploadTransactionsFromTime;\r\n param = m;\r\n param = '?from=' + m;\r\n }\r\n interactiveBrokerClient.get('/execution/transactions' + param).then((response) => {\r\n const orders = state.runtime.orders.map(o => {\r\n let ticker = o.ticker;\r\n if ( ticker.includes(\":\") )\r\n {\r\n var nameList = ticker.split(\":\");\r\n ticker = nameList[0];\r\n }\r\n return {\r\n ticker,\r\n productName: o.productName\r\n };\r\n })\r\n const backendTransactions = response.data.map(tx => {\r\n const o = orders.find(o => o.ticker === tx.instrument);\r\n return {\r\n timeStamp: moment(tx.timeStampStr, 'YYYYMMDD hh:mm:ss').toDate(),\r\n execId : tx.execID,\r\n orderId: tx.orderID,\r\n productName: o ? o.productName : null,\r\n ticker: tx.instrument,\r\n qty: tx.qty,\r\n price: tx.price\r\n };\r\n }).filter(x => x.productName);\r\n\r\n dispatch('makeReq', { payload: { id: state.item.id, items: backendTransactions }, resolve, reject, type: UPLOAD_TRANSACTIONS });\r\n }).catch((error)=>{\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n reject(error);\r\n });\r\n \r\n });\r\n },\r\n async cancelOrderInteractiveBrokers ({commit}, {clOrderID}) {\r\n try {\r\n commit('SET_ORDER_PROCESSING', {id: clOrderID, value: true});\r\n await interactiveBrokerClient.post('/execution/cancel', {clOrderID});\r\n window.setTimeout(() => {\r\n commit('SET_ORDER_PROCESSING', {id: clOrderID, value: false});\r\n }, 1000);\r\n \r\n } catch(e) {\r\n console.error(e);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n } \r\n },\r\n async executeOrderInteractiveBrokers ({commit}, dto) {\r\n try {\r\n const response = await interactiveBrokerClient.post('/execution/new', dto);\r\n commit('HANDLE_INTERACTIVE_BROKER_UPDATE', response.data);\r\n } catch(e) {\r\n console.error(e);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n } \r\n },\r\n async getBrokerPositionsFromInteractiveBrokers({commit}) {\r\n try {\r\n const resp = await interactiveBrokerClient.get('/execution/positions');\r\n commit('HANDLE_INTERACTIVE_BROKER_POSITIONS_UPDATE', {brokerPositions:resp.data});\r\n } catch(e) {\r\n console.error(e);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n } \r\n },\r\n async loadTaxLossHarvest ({ dispatch }, { id }) {\r\n await dispatch('makeReq', {payload: { id }, type: LOAD_TAX_LOSS_HARVEST_REQ_NAME});\r\n },\r\n async connectToInteractiveBrokers ({ commit, state, dispatch }) {\r\n try {\r\n await dispatch('loadUserSettings')\r\n await interactiveBrokerClient.post('/execution/connect', state.item.userSettings);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', true);\r\n return;\r\n } catch(e) {\r\n console.error(e);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n }\r\n },\r\n async disconnectFromInteractiveBrokers ({ commit }) {\r\n await interactiveBrokerClient.get('/execution/disconnect');\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n },\r\n async initInteractiveBrokers({ dispatch }) {\r\n dispatch('updateInteractiveBrokersOrders');\r\n dispatch('checkConnectStatusOfInteractiveBrokers');\r\n },\r\n paperTrade({commit, dispatch, state}) {\r\n commit('PAPER_TRADE_UPDATE');\r\n const orders = state.runtime.orders.filter(x => x.selected);\r\n let backendTransactions = [];\r\n orders.forEach(o => {\r\n backendTransactions.push({\r\n timeStamp: moment().toDate(),\r\n execId : uuid.v1(),\r\n orderId: o.id,\r\n productName: o.productName,\r\n ticker: o.ticker,\r\n qty: o.orderSide === 'Sell' ? (Math.abs(o.orderQuantity) * -1) : Math.abs(o.orderQuantity),\r\n price: o.price\r\n });\r\n });\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: { id: state.item.id, items: backendTransactions }, resolve, reject, type: UPLOAD_TRANSACTIONS });\r\n });\r\n },\r\n /*\r\n INTERACTIVE BROKERS <<<\r\n */\r\n\r\n /*\r\n Binance >>>\r\n */\r\n async sendBinanceOrder( {state}) {\r\n const apiKey = 'dffddeac2d3393e0cbf0f5d23646c1fb31dbb31548396cb86899dacf23f2f7d7';\r\n const apiSecret = 'c83b8d5189f1b4eabc7650e06e7a6cecc5b6b6c8392b150b67a3d729dc382004';\r\n\r\n const params = \"symbol=BTCUSDT&side=BUY&type=LIMIT&quantity=1&price=9000&timeInForce=GTC&recvWindow=5000×tamp=\" + state.binance.serverTime;\r\n const signature = BINANCE_SIGNATURE(apiSecret, params);\r\n const reqParams = params + '%&signature=' + signature;\r\n const headers = {};\r\n headers['X-MBX-APIKEY'] = apiKey;\r\n headers['content-type'] = 'application/x-www-form-urlencoded;charset=utf-8';\r\n await binanceClient.post('/order?' + reqParams, null, {headers});\r\n },\r\n async connectToBinance({ commit, dispatch }) {\r\n \r\n try {\r\n if(!state.binance.connected) {\r\n const timeResponse = await binanceClient.get('/time');\r\n const exchangeResponse = await binanceClient.get('/exchangeInfo');\r\n commit('SET_BINANCE_SERVER_TIME', timeResponse.data.serverTime);\r\n commit('SET_BINANCE_EXCHANGE_INFO', exchangeResponse.data);\r\n commit('SET_BINANCE_CONNECTED', true);\r\n dispatch('sendBinanceOrder')\r\n }\r\n\r\n } catch(e) {\r\n console.error(e);\r\n }\r\n },\r\n async disconnectFromBinance({ commit }) {\r\n try {\r\n commit('SET_BINANCE_CONNECTED', false);\r\n commit('SET_BINANCE_SERVER_TIME', null);\r\n \r\n } catch(e) {\r\n console.error(e);\r\n }\r\n },\r\n \r\n /*\r\n Binance <<<\r\n */\r\n\r\n async isBackendAlive( ) {\r\n // try { \r\n // const response = await http.get('api/backend/alive');\r\n // commit('SET_IS_BACKEND_ALIVE', response.data);\r\n // } catch(e) {\r\n // console.log(e);\r\n // commit('SET_IS_BACKEND_ALIVE', false);\r\n // }\r\n },\r\n async backendInvoke({ commit, rootState }, { payload, type, mutation } = {}) {\r\n const req = { \r\n id: uuid.v1(),\r\n clientId: rootState.signalr.connectionId,\r\n type: type,\r\n payload: payload,\r\n userName: rootState.auth.currentUser.username,\r\n userId: rootState.auth.currentUser.id,\r\n };\r\n const response = await backendHttp.post('api/backend/invoke', req);\r\n if(mutation) {\r\n commit(mutation, response.data);\r\n }\r\n \r\n return response;\r\n },\r\n async makeReq({ commit, rootState }, { payload, type, resolve, reject } = {}) {\r\n const req = { \r\n id: uuid.v1(),\r\n resolve, \r\n reject,\r\n clientId: rootState.signalr.connectionId,\r\n type: type,\r\n payload: payload,\r\n userName: rootState.auth.currentUser.username,\r\n userId: rootState.auth.currentUser.id,\r\n };\r\n commit('BEGIN_REQUEST', { req });\r\n window.setTimeout(() => {\r\n commit('END_REQUEST', { resp: { reqId: req.id, failed: true, errorMessage: \"Timeout reached\" } });\r\n }, TIMEOUT);\r\n\r\n await http.post('api/backend/execution/requests', req);\r\n\r\n // commit('END_REQUEST', { resp: {...d, ReqId: req.id}});\r\n },\r\n async changeCurrency({dispatch, commit}, {currencyName } = {}) {\r\n commit('SET_CURRENCY_NAME', currencyName);\r\n await dispatch('loadItem');\r\n },\r\n async changeCountry({dispatch, commit}, newValue) {\r\n commit('SET_COUNTRY', newValue);\r\n await dispatch('rebelance');\r\n //await dispatch('makeReq', {payload: { id: state.item.id, reBalanceCloseoutTrades: newValue, taxLossHarvestTrades: state.taxLossHarvestTrades }, type: LOAD_LIVE_ITEM_REBALANCE_REQ_NAME});\r\n },\r\n async changeReBalanceCloseoutTrades({dispatch, commit}, newValue) {\r\n commit('SET_REBALANCE_CLOSEOUT_TRADES', newValue);\r\n if(newValue) {\r\n commit('SET_TAX_LOSS_HARVEST_TRADES', false);\r\n }\r\n await dispatch('rebelance');\r\n //await dispatch('makeReq', {payload: { id: state.item.id, reBalanceCloseoutTrades: newValue, taxLossHarvestTrades: state.taxLossHarvestTrades }, type: LOAD_LIVE_ITEM_REBALANCE_REQ_NAME});\r\n },\r\n async changeTaxLossHarvestTrades({dispatch, commit}, newValue) {\r\n commit('SET_TAX_LOSS_HARVEST_TRADES', newValue);\r\n if(newValue) {\r\n commit('SET_REBALANCE_CLOSEOUT_TRADES', false);\r\n }\r\n await dispatch('rebelance');\r\n //await dispatch('makeReq', {payload: { id: state.item.id, reBalanceCloseoutTrades: state.reBalanceCloseoutTrades, taxLossHarvestTrades: newValue }, type: LOAD_LIVE_ITEM_REBALANCE_REQ_NAME});\r\n },\r\n async rebelance({ dispatch, state }) {\r\n await dispatch('makeReq', {\r\n payload: { \r\n id: state.item.id,\r\n reBalanceCloseoutTrades: state.item.reBalanceCloseoutTrades, \r\n taxLossHarvestTrades: state.item.taxLossHarvestTrades,\r\n country: state.item.country\r\n }, \r\n type: LOAD_LIVE_ITEM_REBALANCE_REQ_NAME}\r\n );\r\n },\r\n saveExecutionSettings({ dispatch, state }, { value } = {}) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: { id: state.item.id, value }, resolve, reject, type: SAVE_EXECUTION_SETTINGS_REQ_NAME });\r\n });\r\n },\r\n async saveUserSettings({ dispatch }, { value } = {}) {\r\n await dispatch('saveUserSettingsInBackend', { value });\r\n await dispatch('loadUserSettings');\r\n },\r\n saveUserSettingsInBackend({ dispatch, state }, { value } = {}) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: { id: state.item.id, value }, resolve, reject, type: SAVE_USER_SETTINGS_REQ_NAME });\r\n });\r\n },\r\n async loadExecutionSettings({ dispatch, state }) {\r\n await dispatch('makeReq', {payload: { id: state.item.id, }, type: LOAD_EXECUTION_SETTINGS_REQ_NAME});\r\n },\r\n async loadUserSettings({ dispatch, state }) {\r\n await dispatch('makeReq', {payload: { id: state.item.id, }, type: LOAD_USER_SETTINGS_REQ_NAME});\r\n },\r\n async loadPositions({ dispatch, state }) {\r\n await dispatch('makeReq', {payload: { id: state.item.id }, type: LOAD_LIVE_ITEM_PORTFOLIO_POSITIONS_REQ_NAME});\r\n },\r\n async loadTransactions({ dispatch, state }) {\r\n await dispatch('makeReq', {payload: { id: state.item.id, take: state.item.transactions.reqSize, skip: state.item.transactions.items.length }, type: LOAD_LIVE_ITEM_PORTFOLIO_TRANSACTIONS_REQ_NAME});\r\n },\r\n async loadMoreItemTransactions({ dispatch, state }) {\r\n await dispatch('makeReq', {payload: { more: true, id: state.item.id, take: state.item.transactions.reqSize, skip: state.item.transactions.items.length }, type: LOAD_LIVE_ITEM_PORTFOLIO_TRANSACTIONS_REQ_NAME});\r\n },\r\n async loadItem({ dispatch, state }) {\r\n await dispatch('makeReq', {payload: { id: state.item.id, currencyName: state.item.currencyName }, type: LOAD_LIVE_ITEM_STAT_REQ_NAME});\r\n await dispatch('rebelance');\r\n },\r\n async loadLiveIndicies({ dispatch }) {\r\n await dispatch('backendInvoke', {payload: null, type: LOAD_LIVE_INDICIES_REQ_NAME, mutation: 'HANDLE_LOAD_LIVE_INDICIES_REQ'});\r\n },\r\n \r\n async initRuntime({ dispatch }, { refresh, taxLossHarvest, taxLossHarvestData, closeout, country } ) {\r\n dispatch('updateInteractiveBrokersOrders');\r\n dispatch('checkConnectStatusOfInteractiveBrokers');\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: { id: state.item.id, refresh, taxLossHarvest, taxLossHarvestData, closeout, country }, resolve, reject, type: EXECUTION_RUNTIME_INIT_REQ_NAME });\r\n });\r\n },\r\n async loadFxHedge({ dispatch} , payload) {\r\n console.log('loadFxHedge >>>');\r\n try {\r\n const resp = await dispatch('backendInvoke', {payload: payload, type: CALCULATE_FX_HEDGE});\r\n console.log('loadFxHedge <<<', resp);\r\n return resp.data?.Payload;\r\n }catch(e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n },\r\n async loadFxHedgeSettings({ dispatch} , payload) {\r\n console.log('loadFxHedgeSettings >>>');\r\n try {\r\n const resp = await dispatch('backendInvoke', {payload: payload, type: GET_FX_HEDGE_SETTINGS});\r\n console.log('loadFxHedgeSettings <<<', resp);\r\n return resp.data?.Payload;\r\n }catch(e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n },\r\n async loadFxVolatility({ dispatch} , payload) {\r\n console.log('loadFxVolatility >>>');\r\n try {\r\n const resp = await dispatch('backendInvoke', {payload: payload, type: GET_FX_VOLATILTY});\r\n console.log('loadFxVolatility <<<', resp);\r\n return resp.data?.Payload;\r\n }catch(e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n },\r\n async loadFxHedgeCharts({ dispatch} , payload) {\r\n console.log('loadFxHedgeCharts >>>');\r\n try {\r\n const resp = await dispatch('backendInvoke', {payload: payload, type: CALCULATE_FX_HEDGE_CHARTS});\r\n console.log('loadFxHedgeCharts <<<', resp);\r\n return resp.data?.Payload;\r\n }catch(e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n \r\n // return new Promise( (resolve, reject) => {\r\n // dispatch('makeReq', { payload: payload, resolve, reject, type: CALCULATE_FX_HEDGE_CHARTS });\r\n // });\r\n },\r\n async getFxHedgeDetails({ dispatch} , payload) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: payload, resolve, reject, type: CALCULATE_FX_HEDGE_DETAILS });\r\n });\r\n },\r\n async getFxHedgePortfolioDetails({ dispatch} , payload) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: payload, resolve, reject, type: CALCULATE_FX_HEDGE_PORTFOLIO_DETAILS });\r\n });\r\n },\r\n}","import createAxiosInstance from './explorer-axois';\r\n\r\nconst axiosManager = createAxiosInstance({ \r\n baseURL: process.env.VUE_APP_BACKEND_URL,\r\n authBaseURL: process.env.VUE_APP_AUTH_BASE_URL,\r\n});\r\n\r\nexport default axiosManager;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=37fc10f3&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\n\nVue.use(VueI18n)\n\nfunction loadLocaleMessages () {\n const locales = require.context('./locales', true, /[A-Za-z0-9-_,\\s]+\\.json$/i)\n const messages = {}\n locales.keys().forEach(key => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i)\n if (matched && matched.length > 1) {\n const locale = matched[1]\n messages[locale] = locales(key)\n }\n })\n return messages\n}\n\nexport default new VueI18n({\n locale: process.env.VUE_APP_I18N_LOCALE || 'en',\n fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en',\n messages: loadLocaleMessages()\n})\n","import Vue from 'vue'\r\nimport App from './App.vue'\r\nimport BootstrapVue from 'bootstrap-vue'\r\nimport VueApexCharts from 'vue-apexcharts'\r\nimport Vuelidate from 'vuelidate'\r\nimport VueSweetalert2 from 'vue-sweetalert2';\r\nimport VueMask from 'v-mask'\r\nimport * as VueGoogleMaps from 'vue2-google-maps'\r\nimport VueYoutube from 'vue-youtube'\r\nimport vco from \"v-click-outside\"\r\n\r\nimport router from './router'\r\nimport store from '@/state/store'\r\nimport i18n from './i18n'\r\n\r\n// import VueHighcharts from 'vue-highcharts'\r\n// import Highcharts from 'highcharts'\r\n// import loadStock from 'highcharts/modules/stock'\r\n// import loadIndicatorsAll from 'highcharts/indicators/indicators-all'\r\n// loadStock(Highcharts)\r\n// loadIndicatorsAll(Highcharts)\r\n// Vue.use(VueHighcharts, { Highcharts })\r\n\r\nimport Highcharts from \"highcharts\";\r\nimport Stock from \"highcharts/modules/stock\";\r\nimport HighchartsVue from \"highcharts-vue\";\r\nimport IndicatorsAll from 'highcharts/indicators/indicators-all'\r\nimport ExportingInit from 'highcharts/modules/exporting'\r\nimport ExportData from 'highcharts/modules/export-data'\r\nimport highchartsMoreInit from \"highcharts/highcharts-more\";\r\nimport solidGaugeInit from \"highcharts/modules/solid-gauge\";\r\nimport hcHeatmap from \"highcharts/modules/heatmap\";\r\n\r\nhcHeatmap(Highcharts);\r\nExportingInit(Highcharts);\r\nExportData(Highcharts);\r\nStock(Highcharts);\r\nIndicatorsAll(Highcharts);\r\nhighchartsMoreInit(Highcharts);\r\nsolidGaugeInit(Highcharts);\r\nVue.use(HighchartsVue);\r\n\r\nimport \"@/assets/scss/app.scss\";\r\n\r\nimport moment from 'moment'\r\nimport 'moment/min/locales'\r\n\r\nmoment.locale('en')\r\n\r\nimport VueAuthHref from 'vue-auth-href'\r\n\r\nconst options = {\r\n token: () => localStorage.getItem('access_token'), // Note that this MUST BE a function that returns the token.\r\n // other options here (full list of options described below)\r\n}\r\nVue.use(VueAuthHref, options)\r\n\r\nVue.prototype.moment = moment\r\nVue.config.productionTip = false\r\nVue.use(VueYoutube)\r\nVue.use(BootstrapVue)\r\nVue.use(vco)\r\nVue.use(Vuelidate)\r\nVue.use(VueSweetalert2);\r\nVue.use(VueMask)\r\nVue.use(require('vue-chartist'))\r\nVue.use(require('vue-moment'));\r\nVue.use(VueGoogleMaps, {\r\n load: {\r\n key: 'AIzaSyAbvyBxmMbFhrzP9Z8moyYr6dCr-pzjhBE',\r\n libraries: 'places',\r\n },\r\n installComponents: true\r\n})\r\nVue.component('apexchart', VueApexCharts)\r\n\r\nnew Vue({\r\n router,\r\n store,\r\n i18n,\r\n render: h => h(App)\r\n}).$mount('#app')\r\n","// Register each file as a corresponding Vuex module. Module nesting\n// will mirror [sub-]directory hierarchy and modules are namespaced\n// as the camelCase equivalent of their file name.\n\nimport camelCase from 'lodash/camelCase'\n\nconst modulesCache = {}\nconst storeData = { modules: {} }\n\n;(function updateModules() {\n // Allow us to dynamically require all Vuex module files.\n // https://webpack.js.org/guides/dependency-management/#require-context\n const requireModule = require.context(\n // Search for files in the current directory.\n '.',\n // Search for files in subdirectories.\n true,\n // Include any .js files that are not this file or a unit test.\n /^((?!index|\\.unit\\.).)*\\.js$/\n )\n\n // For every Vuex module...\n requireModule.keys().forEach((fileName) => {\n const moduleDefinition = requireModule(fileName)\n\n // Skip the module during hot reload if it refers to the\n // same module definition as the one we have cached.\n if (modulesCache[fileName] === moduleDefinition) return\n\n // Update the module cache, for efficient hot reloading.\n modulesCache[fileName] = moduleDefinition\n\n // Get the module path as an array.\n const modulePath = fileName\n // Remove the \"./\" from the beginning.\n .replace(/^\\.\\//, '')\n // Remove the file extension from the end.\n .replace(/\\.\\w+$/, '')\n // Split nested modules into an array path.\n .split(/\\//)\n // camelCase all module namespaces and names.\n .map(camelCase)\n\n // Get the modules object for the current path.\n const { modules } = getNamespace(storeData, modulePath)\n\n // Add the module to our modules object.\n modules[modulePath.pop()] = {\n // Modules are namespaced by default.\n namespaced: true,\n ...moduleDefinition,\n }\n })\n\n // If the environment supports hot reloading...\n if (module.hot) {\n // Whenever any Vuex module is updated...\n module.hot.accept(requireModule.id, () => {\n // Update `storeData.modules` with the latest definitions.\n updateModules()\n // Trigger a hot update in the store.\n require('../store').default.hotUpdate({ modules: storeData.modules })\n })\n }\n})()\n\n// Recursively get the namespace of a Vuex module, even if nested.\nfunction getNamespace(subtree, path) {\n if (path.length === 1) return subtree\n\n const namespace = path.shift()\n subtree.modules[namespace] = {\n modules: {},\n namespaced: true,\n ...subtree.modules[namespace],\n }\n return getNamespace(subtree.modules[namespace], path)\n}\n\nexport default storeData.modules\n","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\n\r\nimport modules from './modules'\r\n\r\nVue.use(Vuex)\r\n\r\nconst store = new Vuex.Store({\r\n modules,\r\n // Enable strict mode in development to get a warning\r\n // when mutating state outside of a mutation.\r\n // https://vuex.vuejs.org/guide/strict.html\r\n strict: process.env.NODE_ENV !== 'production',\r\n})\r\n\r\nexport default store\r\n\r\n","/*eslint no-mixed-spaces-and-tabs: \"off\"*/\r\n\r\nimport axios from 'axios';\r\n\r\nconst saveTokens = (access_token, refresh_token) => {\r\n localStorage.setItem('access_token', access_token);\r\n localStorage.setItem('refresh_token', refresh_token);\r\n};\r\n\r\nconst clearTokens = () => {\r\n localStorage.removeItem('access_token');\r\n localStorage.removeItem('refresh_token');\r\n};\r\n\r\nconst isAuth = () => {\r\n return localStorage.getItem('access_token') ? true : false;\r\n}\r\n\r\nconst createAxiosInstance = (config = {}) => {\r\n const axiosInstance = axios.create({\r\n baseURL: config.baseURL || '', \r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n } \r\n });\r\n \r\n const login = async (loginRequest) => {\r\n try {\r\n const response = await axios.post(`${axiosInstance.authBaseURL}/auth`, loginRequest);\r\n const access_token = response.data.Token.AccessToken;\r\n const refresh_token = response.data.Token.RefreshToken;\r\n saveTokens(access_token, refresh_token);\r\n return response;\r\n } catch (error) {\r\n clearTokens();\r\n throw error;\r\n }\r\n };\r\n\r\n axiosInstance.saveTokens = saveTokens;\r\n axiosInstance.clearTokens = clearTokens;\r\n axiosInstance.authBaseURL = config.authBaseURL || config.baseURL || '';\r\n axiosInstance.isAuth = isAuth;\r\n axiosInstance.login = login;\r\n \r\n const requestInterceptor = (config) => {\r\n const accessToken = localStorage.getItem('access_token');\r\n if (accessToken) {\r\n\t\t\tconfig.headers.Authorization = `Bearer ${accessToken}`;\r\n }\r\n return config;\r\n };\r\n \r\n const responseInterceptor = async (response) => {\r\n return response;\r\n };\r\n \r\n const responseErrorInterceptor = async (error) => {\r\n if (error.response && error.response.status === 401) {\r\n const refreshToken = localStorage.getItem('refresh_token');\r\n const accessToken = localStorage.getItem('access_token');\r\n\t\t\t\r\n if (refreshToken) {\r\n\t\t\t \r\n try {\r\n const response = await axios.post(`${axiosInstance.authBaseURL}/auth/refresh`, { refreshToken: refreshToken, accessToken: accessToken });\r\n\t\t\t\t\r\n if (response.status === 200) {\r\n \r\n localStorage.setItem('access_token', response.data.Token.AccessToken);\r\n error.config.headers.Authorization = `Bearer ${response.data.Token.AccessToken}`;\r\n return axios(error.config);\r\n } else {\r\n console.log('refresh token failed');\r\n clearTokens();\r\n window.location.reload();\r\n return Promise.reject(error);\r\n }\r\n \r\n } catch(e) {\r\n console.log('refresh token failed');\r\n console.error(e);\r\n clearTokens();\r\n window.location.reload();\r\n return Promise.reject(error);\r\n }\r\n \r\n }\r\n }\r\n return Promise.reject(error);\r\n };\r\n \r\n axiosInstance.interceptors.request.use(requestInterceptor);\r\n axiosInstance.interceptors.response.use(responseInterceptor, responseErrorInterceptor);\r\n \r\n return axiosInstance;\r\n };\r\n \r\n export default createAxiosInstance;","import store from '@/state/store'\r\n\r\nexport default [\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/pages/account/login'),\r\n meta: {\r\n beforeResolve(routeTo, routeFrom, next) {\r\n // If the user is already logged in\r\n if (localStorage.getItem('access_token')) {\r\n // Redirect to the home page instead\r\n next({ name: 'home' })\r\n } else {\r\n // Continue to the login page\r\n next()\r\n }\r\n },\r\n },\r\n },\r\n {\r\n path: '/logout',\r\n name: 'logout',\r\n meta: {\r\n authRequired: true,\r\n beforeResolve(routeTo, routeFrom, next) {\r\n store.dispatch('auth/logOut')\r\n const authRequiredOnPreviousRoute = routeFrom.matched.some(\r\n (route) => route.push('/login')\r\n )\r\n // Navigate back to previous page, or home as a fallback\r\n next(authRequiredOnPreviousRoute ? { name: 'home' } : { ...routeFrom })\r\n },\r\n },\r\n },\r\n \r\n {\r\n path: '/',\r\n name: 'home',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/indices/listv2')\r\n },\r\n {\r\n path: '/execution/active-indices',\r\n name: 'execution-active-indices',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/execution/active-indices')\r\n },\r\n {\r\n path: '/portfolio-questionnaire',\r\n name: 'portfolio-questionnaire',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/indices/portfolio-questionnaire')\r\n },\r\n {\r\n path: '/protfolio-solution-templates',\r\n name: 'protfolio-solution-templates',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/indices/solution-templates')\r\n },\r\n \r\n {\r\n path: '/performance-overview',\r\n name: 'performance-overview',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/dashboard/performance-overview')\r\n },\r\n {\r\n path: '/execution',\r\n name: 'execution',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/execution/index')\r\n },\r\n {\r\n path: '/execution/:id',\r\n name: 'execution-item',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/execution/item'),\r\n props: true\r\n },\r\n {\r\n path: '/demo-requests',\r\n name: 'demo-requests',\r\n meta: {\r\n role:['administrator'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/admin/demo-requests')\r\n },\r\n {\r\n path: '/news-subscription',\r\n name: 'news-subscription',\r\n meta: {\r\n role:['administrator'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/admin/news-subscription')\r\n },\r\n {\r\n path: '/visitor-messages',\r\n name: 'visitor-messages',\r\n meta: {\r\n role:['administrator'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/admin/visitor-messages')\r\n },\r\n {\r\n path: '/fx-hedge',\r\n name: 'fx-hedge',\r\n meta: {\r\n role:['fx_hedge'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/fx-hedge/index')\r\n },\r\n {\r\n path: '/fx-hedge/:target/:desc',\r\n name: 'fx-hedge-details',\r\n meta: {\r\n role:['fx_hedge'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/fx-hedge/details'),\r\n props: true\r\n },\r\n {\r\n path: '/users',\r\n name: 'users',\r\n meta: {\r\n role:['administrator'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/admin/users')\r\n },\r\n {\r\n path: '/audit',\r\n name: 'audit',\r\n meta: {\r\n role:['administrator'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/admin/audit')\r\n },\r\n {\r\n path: '/stocks',\r\n name: 'stocks',\r\n meta: {\r\n role:['administrator'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/instruments/stocks')\r\n },\r\n {\r\n path: '/options',\r\n name: 'options',\r\n meta: {\r\n role:['administrator'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/instruments/options')\r\n },\r\n {\r\n path: '/futures',\r\n name: 'futures',\r\n meta: {\r\n role:['administrator'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/instruments/futures')\r\n },\r\n {\r\n path: '/fx-rates',\r\n name: 'fx-rates',\r\n meta: {\r\n role:['administrator'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/instruments/fx-rates')\r\n },\r\n {\r\n path: '/products',\r\n name: 'products',\r\n meta: {\r\n role:['administrator'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/products/products')\r\n },\r\n {\r\n path: '/screening-history',\r\n name: 'screening-history',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/indices/screening-history')\r\n },\r\n {\r\n path: '/screening/:id',\r\n name: 'screening',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/indices/screening'),\r\n props: true\r\n },\r\n {\r\n path: '/indices',\r\n name: 'indices',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/indices/list')\r\n },\r\n \r\n {\r\n path: '/indices/:id/edit',\r\n name: 'index-edit',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/indices/edit'),\r\n props: route => Object.assign({}, route.query, route.params),\r\n },\r\n {\r\n path: '/indices/:id/view',\r\n name: 'index-view',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/indices/view'),\r\n props: true\r\n },\r\n {\r\n path: '/upload-index',\r\n name: 'upload-index',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/indices/upload'),\r\n props: true\r\n },\r\n {\r\n path: '/dictionaries',\r\n name: 'dictionaries',\r\n meta: {\r\n role:['administrator'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/dictionaries')\r\n },\r\n {\r\n path: '/tutorial',\r\n name: 'tutorial',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/tutorial')\r\n }\r\n]\r\n","import store from '@/state/store'\r\n\r\nexport default [\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/pages/account/login'),\r\n meta: {\r\n beforeResolve(routeTo, routeFrom, next) {\r\n // If the user is already logged in\r\n if (localStorage.getItem('access_token')) {\r\n // Redirect to the home page instead\r\n next({ name: 'home' })\r\n } else {\r\n // Continue to the login page\r\n next()\r\n }\r\n },\r\n },\r\n },\r\n {\r\n path: '/register',\r\n name: 'register',\r\n component: () => import('../views/pages/account/register'),\r\n meta: {\r\n beforeResolve(routeTo, routeFrom, next) {\r\n // If the user is already logged in\r\n if (localStorage.getItem('access_token')) {\r\n // Redirect to the home page instead\r\n next({ name: 'home' })\r\n } else {\r\n // Continue to the login page\r\n next()\r\n }\r\n },\r\n },\r\n },\r\n {\r\n path: '/logout',\r\n name: 'logout',\r\n meta: {\r\n authRequired: true,\r\n beforeResolve(routeTo, routeFrom, next) {\r\n store.dispatch('auth/logOut')\r\n const authRequiredOnPreviousRoute = routeFrom.matched.some(\r\n (route) => route.push('/login')\r\n )\r\n // Navigate back to previous page, or home as a fallback\r\n next(authRequiredOnPreviousRoute ? { name: 'home' } : { ...routeFrom })\r\n },\r\n },\r\n },\r\n {\r\n path: '/reset-password/:code',\r\n name: 'reset-password',\r\n component: () => import('../views/pages/account/reset-password'),\r\n meta: {\r\n // beforeResolve(routeTo, routeFrom, next) {\r\n // // If the user is already logged in\r\n // if (store.getters['auth/loggedIn']) {\r\n // // Redirect to the home page instead\r\n // next({ name: 'home' })\r\n // } else {\r\n // // Continue to the login page\r\n // next()\r\n // }\r\n // },\r\n },\r\n props: true\r\n },\r\n {\r\n path: '/',\r\n name: 'home',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/fx-hedge/index')\r\n },\r\n \r\n {\r\n path: '/knowledgehub',\r\n name: 'knowledgehub',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/knowledgehub')\r\n },\r\n {\r\n path: '/knowledgehub/:id',\r\n name: 'knowledgehub-article',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/knowledgehub-article'),\r\n props: true\r\n },\r\n {\r\n path: '/fx-hedge/:target/:desc',\r\n name: 'fx-hedge-details',\r\n meta: {\r\n // role:['fx_hedge'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/fx-hedge/details'),\r\n props: true\r\n },\r\n {\r\n path: '/users',\r\n name: 'users',\r\n meta: {\r\n role:['administrator'],\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/admin/users')\r\n }\r\n]\r\n","import Vue from 'vue'\r\nimport VueRouter from 'vue-router'\r\nimport VueMeta from 'vue-meta'\r\nimport store from '@/state/store'\r\nimport routes from './routes'\r\nimport hedgeRoutes from './hedge-routes'\r\n\r\nlet rList = routes;\r\n\r\nVue.use(VueRouter)\r\nVue.use(VueMeta, {\r\n // The component option name that vue-meta looks for meta info on.\r\n keyName: 'page',\r\n});\r\n\r\nif(process.env.VUE_APP_HEDGE === 'yes') {\r\n rList = hedgeRoutes;\r\n}\r\n\r\nconsole.log('routes', rList);\r\n\r\nconst router = new VueRouter({\r\n routes: rList,\r\n // Use the HTML5 history API (i.e. normal-looking routes)\r\n // instead of routes with hashes (e.g. example.com/#/about).\r\n // This may require some server configuration in production:\r\n // https://router.vuejs.org/en/essentials/history-mode.html#example-server-configurations\r\n mode: 'history',\r\n // Simulate native-like scroll behavior when navigating to a new\r\n // route and using back/forward buttons.\r\n scrollBehavior(to, from, savedPosition) {\r\n if (savedPosition) {\r\n return savedPosition\r\n } else {\r\n return { x: 0, y: 0 }\r\n }\r\n },\r\n})\r\n\r\nconst sendAudit = () => {\r\n //http.post('api/audit', { type: 'OpenPage', text: page});\r\n};\r\n\r\n// Before each route evaluates...\r\nrouter.beforeEach(async (routeTo, routeFrom, next) => {\r\n \r\n if (process.env.NODE_ENV === 'production' && location.protocol !== 'https:' && location.hostname !== 'localhost') {\r\n location.href = 'https:' + window.location.href.substring(window.location.protocol.length);\r\n } else {\r\n \r\n // Check if auth is required on this route\r\n // (including nested routes).\r\n const authRequired = routeTo.matched.some((route) => route.meta.authRequired)\r\n const role = routeTo.meta.role;\r\n\r\n // If auth isn't required for the route, just continue.\r\n if (!authRequired) {\r\n sendAudit(routeTo.fullPath);\r\n return next();\r\n }\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n // eslint-disable-next-line no-inner-declarations\r\n function redirectToLogin() {\r\n sendAudit('login');\r\n // Pass the original route to the login component\r\n next({ name: 'login', query: { redirectFrom: routeTo.fullPath } })\r\n }\r\n\r\n // If auth is required and the user is logged in...\r\n if (localStorage.getItem('access_token')) {\r\n \r\n if(role) {\r\n if(store.state.auth && store.state.auth.currentUser) {\r\n const roles = store.state.auth.currentUser.roles;\r\n if(roles.find(a => role.find(s => s === a))) {\r\n sendAudit(routeTo.fullPath);\r\n return next();\r\n }\r\n }\r\n localStorage.removeItem('access_token')\r\n store.dispatch('auth/logOut')\r\n redirectToLogin();\r\n }else{\r\n sendAudit(routeTo.fullPath);\r\n }\r\n \r\n return next();\r\n }\r\n\r\n // If auth is required and the user is NOT currently logged in,\r\n // redirect to login.\r\n redirectToLogin()\r\n }\r\n})\r\n\r\nrouter.beforeResolve(async (routeTo, routeFrom, next) => {\r\n \r\n // Create a `beforeResolve` hook, which fires whenever\r\n // `beforeRouteEnter` and `beforeRouteUpdate` would. This\r\n // allows us to ensure data is fetched even when params change,\r\n // but the resolved route does not. We put it in `meta` to\r\n // indicate that it's a hook we created, rather than part of\r\n // Vue Router (yet?).\r\n try {\r\n // For each matched route...\r\n for (const route of routeTo.matched) {\r\n await new Promise((resolve, reject) => {\r\n // If a `beforeResolve` hook is defined, call it with\r\n // the same arguments as the `beforeEnter` hook.\r\n if (route.meta && route.meta.beforeResolve) {\r\n route.meta.beforeResolve(routeTo, routeFrom, (...args) => {\r\n // If the user chose to redirect...\r\n if (args.length) {\r\n // If redirecting to the same route we're coming from...\r\n // Complete the redirect.\r\n next(...args)\r\n reject(new Error('Redirected'))\r\n } else {\r\n \r\n resolve()\r\n }\r\n })\r\n } else {\r\n \r\n // Otherwise, continue resolving the route.\r\n resolve()\r\n }\r\n })\r\n }\r\n // If a `beforeResolve` hook chose to redirect, just return.\r\n } catch (error) {\r\n console.error('beforeResolve error', error);\r\n return\r\n }\r\n \r\n // If we reach this point, continue resolving the route.\r\n next()\r\n})\r\n\r\nexport default router\r\n","export const state = {\r\n layoutType: 'vertical',\r\n layoutWidth: 'fluid',\r\n leftSidebarType: 'dark',\r\n topbar: 'dark',\r\n loader: false,\r\n fullScreen: false\r\n}\r\n\r\nexport const getters = {}\r\n\r\nexport const mutations = {\r\n CHANGE_LAYOUT(state, layoutType) {\r\n state.layoutType = layoutType;\r\n },\r\n CHANGE_LAYOUT_WIDTH(state, layoutWidth) {\r\n state.layoutWidth = layoutWidth;\r\n },\r\n CHANGE_LEFT_SIDEBAR_TYPE(state, leftSidebarType) {\r\n state.leftSidebarType = leftSidebarType;\r\n },\r\n CHANGE_TOPBAR(state, topbar) {\r\n state.topbar = topbar;\r\n },\r\n CHANGE_FULLSCREEN(state, fullScreen) {\r\n state.fullScreen = fullScreen;\r\n },\r\n LOADER(state, loader) {\r\n state.loader = loader\r\n }\r\n}\r\n\r\nexport const actions = {\r\n changeLayoutType({ commit }, { layoutType }) {\r\n commit('CHANGE_LAYOUT', layoutType);\r\n },\r\n\r\n changeLayoutWidth({ commit }, { layoutWidth }) {\r\n commit('CHANGE_LAYOUT_WIDTH', layoutWidth)\r\n },\r\n\r\n changeLeftSidebarType({ commit }, { leftSidebarType }) {\r\n commit('CHANGE_LEFT_SIDEBAR_TYPE', leftSidebarType)\r\n },\r\n\r\n changeTopbar({ commit }, { topbar }) {\r\n commit('CHANGE_TOPBAR', topbar)\r\n },\r\n\r\n changeLoaderValue({ commit }, { loader }) {\r\n commit('LOADER', loader)\r\n }\r\n}\r\n","var map = {\n\t\"./active-indices.js\": \"e928\",\n\t\"./auth.js\": \"11c0\",\n\t\"./execution-signalr.js\": \"34bc\",\n\t\"./execution.js\": \"5059\",\n\t\"./layout.js\": \"c21a\",\n\t\"./messages.js\": \"2f9c\",\n\t\"./notification.js\": \"2208\",\n\t\"./signalr.js\": \"03b5\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"cfa9\";","import axios from 'axios';\r\nimport router from './router/index'\r\nimport store from '@/state/store'\r\n\r\nconst httpClient = axios.create({\r\n baseURL: process.env.VUE_APP_BASE_EXECUTION_URL,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n // anything you want to add to the headers\r\n }\r\n});\r\n\r\nconst getAuthToken = () => 'Bearer ' + localStorage.getItem('access_token');\r\n\r\nconst authInterceptor = (config) => {\r\n config.headers['Authorization'] = getAuthToken();\r\n return config;\r\n}\r\n\r\nhttpClient.interceptors.request.use(authInterceptor);\r\n\r\n// interceptor to catch errors\r\nconst errorInterceptor = error => {\r\n \r\n // check if it's a server error\r\n if (!error.response) {\r\n //notify.warn('Network/Server error');\r\n return Promise.reject(error);\r\n }\r\n\r\n // all the other error responses\r\n switch(error.response.status) {\r\n case 400:\r\n console.error(error.response.status, error.message);\r\n // notify.warn('Nothing to display','Data Not Found');\r\n break;\r\n\r\n case 401: // authentication error, logout the user\r\n // debugger; // eslint-disable-line no-debugger\r\n //notify.warn( 'Please login again', 'Session Expired');\r\n localStorage.removeItem('access_token');\r\n store.dispatch('auth/logOut')\r\n router.push('/login');\r\n break;\r\n\r\n default:\r\n console.error(error.response.status, error.message);\r\n //notify.error('Server Error');\r\n\r\n }\r\n return Promise.reject(error);\r\n}\r\n\r\n// Interceptor for responses\r\nconst responseInterceptor = response => {\r\n switch(response.status) {\r\n case 200: \r\n // yay!\r\n break;\r\n // any other cases\r\n default:\r\n // default case\r\n }\r\n\r\n return response;\r\n}\r\n\r\nhttpClient.interceptors.response.use(responseInterceptor, errorInterceptor);\r\n\r\nexport default httpClient;","import http from '../../execution-http'\r\n\r\nexport const state = {\r\n items: [],\r\n loading: false\r\n}\r\n\r\nexport const mutations = {\r\n SET_LOADING(state, newValue) {\r\n state.loading = newValue\r\n },\r\n SET_ITEMS(state, newValue) {\r\n state.items = newValue\r\n }\r\n}\r\n\r\nexport const getters = {\r\n items(state) {\r\n return state.items;\r\n },\r\n loading(state) {\r\n return state.loading;\r\n },\r\n}\r\n\r\nexport const actions = {\r\n\r\n load({ commit }) {\r\n commit('SET_LOADING', true);\r\n return new Promise( (resolve, reject) => {\r\n commit('SET_LOADING', true);\r\n http.get('api/active-indices').then((response)=>{\r\n commit('SET_ITEMS', response.data);\r\n commit('SET_LOADING', false);\r\n resolve();\r\n }).catch((error) => {\r\n commit('SET_LOADING', false);\r\n reject(error);\r\n });\r\n });\r\n },\r\n}"],"sourceRoot":""}