(self.webpackChunktradingview=self.webpackChunktradingview||[]).push([[90334],{85953:e=>{e.exports={}},700502:e=>{e.exports={"common-tooltip":"common-tooltip-EJBD96zX","common-tooltip--hidden":"common-tooltip--hidden-EJBD96zX","common-tooltip--horizontal":"common-tooltip--horizontal-EJBD96zX","common-tooltip--farther":"common-tooltip--farther-EJBD96zX","common-tooltip--vertical":"common-tooltip--vertical-EJBD96zX","common-tooltip-farther":"common-tooltip-farther-EJBD96zX","common-tooltip--direction_normal":"common-tooltip--direction_normal-EJBD96zX","common-tooltip__body":"common-tooltip__body-EJBD96zX","common-tooltip__button-container":"common-tooltip__button-container-EJBD96zX","common-tooltip__body--no-buttons":"common-tooltip__body--no-buttons-EJBD96zX","common-tooltip__button":"common-tooltip__button-EJBD96zX","common-tooltip--direction_reversed":"common-tooltip--direction_reversed-EJBD96zX","common-tooltip__ear-holder":"common-tooltip__ear-holder-EJBD96zX","common-tooltip__ear-holder--below":"common-tooltip__ear-holder--below-EJBD96zX","common-tooltip__ear-holder--above":"common-tooltip__ear-holder--above-EJBD96zX","common-tooltip__ear-holder--before":"common-tooltip__ear-holder--before-EJBD96zX","common-tooltip__ear-holder--after":"common-tooltip__ear-holder--after-EJBD96zX","common-tooltip__body--with-hotkey":"common-tooltip__body--with-hotkey-EJBD96zX","common-tooltip__body--width_wide":"common-tooltip__body--width_wide-EJBD96zX","common-tooltip__body--width_narrow":"common-tooltip__body--width_narrow-EJBD96zX","common-tooltip__body--no-padding":"common-tooltip__body--no-padding-EJBD96zX","common-tooltip__hotkey-block":"common-tooltip__hotkey-block-EJBD96zX","common-tooltip__hotkey-block--divider":"common-tooltip__hotkey-block--divider-EJBD96zX","common-tooltip__hotkey-text":"common-tooltip__hotkey-text-EJBD96zX","common-tooltip__hotkey-button":"common-tooltip__hotkey-button-EJBD96zX","common-tooltip__plus-sign":"common-tooltip__plus-sign-EJBD96zX"}},359308:(e,t,s)=>{"use strict";s.d(t,{deepExtend:()=>_});const i=new Set(["__proto__","prototype","constructor"]);function _(e,...t){return e&&"object"==typeof e?(0===t.length||t.forEach((t=>{null!=t&&"object"==typeof t&&Object.keys(t).forEach((s=>{if(function(e){return i.has(e)}(s))return;const n=e[s],a=t[s];if(a===e)return;const r=Array.isArray(a);if(a&&(o(a)||r)){let t;t=r?n&&Array.isArray(n)?n:[]:n&&o(n)?n:{},e[s]=_(t,a)}else void 0!==a&&(e[s]=a)}))})),e):e}function o(e){if(!e||"[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);if(!t)return!0;const s=Object.hasOwnProperty.toString,i=t.hasOwnProperty("constructor")&&t.constructor;return"function"==typeof i&&s.call(i)===s.call(Object)}},336653:(e,t,s)=>{"use strict";s.d(t,{ActionGroup:()=>_});class i{constructor(e,t){this._group=e;const{hotkey:s,handler:i,desc:_,isDisabled:o,element:n=null,isRepeatAccepted:a=!1}=t;this.hotkey=s,this.handler=i,this.desc=_,this.element=n,this.isRepeatAccepted=a,this.isDisabled=o?"function"==typeof o?o:()=>!0:()=>!1}destroy(){ this._group&&(this._group.remove(this),this._group=null)}}class _{constructor(e,t){this._actions=new Map,this._manager=e,this.order=t?.order??0,this.modal=!(!t||!t.modal),t&&(this.desc=t.desc),t&&t.isDisabled?"function"==typeof t.isDisabled?this.isDisabled=t.isDisabled:this.isDisabled=()=>!0:this.isDisabled=()=>!1,this._manager.registerGroup(this)}add(e){let t=this._actions.get(e.hotkey);t||(t=[],this._actions.set(e.hotkey,t));const s=new i(this,e);return t.push(s),s}remove(e){const t=this._actions.get(e.hotkey);if(!t)return;const s=t.findIndex((t=>t===e));s>=0&&(1===t.length?this._actions.delete(e.hotkey):t.splice(s,1))}handleHotkey(e,t){const s=this._actions.get(e);if(!s)return!1;for(const i of s)if((!i.element||t.target&&i.element.contains(t.target))&&!i.isDisabled(t))return t.repeat&&!i.isRepeatAccepted||(i.handler(t),this._callMatchedHotkeyHandler(e)),t.preventDefault(),!0;return!1}promote(){this._manager.promoteGroup(this)}destroy(){for(const[,e]of this._actions)for(const t of e)t.destroy();this._actions.clear(),this._manager.unregisterGroup(this)}static setMatchedHotkeyHandler(e){_._matchedHotkeyHandler=e}_callMatchedHotkeyHandler(e){_._matchedHotkeyHandler&&_._matchedHotkeyHandler(e)}}},360002:(e,t,s)=>{"use strict";s.d(t,{ActionManager:()=>r});var i=s(654233),_=s(954231),o=s(252938);class n{constructor(e,t){this.modifiers=e,this.code=t}altOrOptionCode(){return"AltLeft"===this.code||"AltRight"===this.code}controlOrMetaCode(){return _.isMacKeyboard?"MetaLeft"===this.code||"MetaRight"===this.code||"OSLeft"===this.code||"OSRight"===this.code:"ControlLeft"===this.code||"ControlRight"===this.code}}class a extends i.WatchedValue{setValue(e,t){const s=this.value();(t||void 0===s||s.code!==e.code||s.modifiers!==e.modifiers)&&super.setValue(e)}}class r{constructor(){this._groups=[],this._pressedKeys=new i.WatchedValue(0),this._keyboardPressedKeysState=new a(new n(0)),this._keyDownListener=e=>{if(e.defaultPrevented)return;const t=(0,_.hashFromEvent)(e);if(this._pressedKeys.setValue(t),this._keyboardPressedKeysState.setValue(new n((0,_.modifiersFromEvent)(e),e.code)),!(0,o.isNativeUIInteraction)(t,e.target))for(let s=this._groups.length;s-- >0;){const i=this._groups[s];if(!i.isDisabled()){if(i.handleHotkey(t,e))return;if(i.modal)return}}},this._keyUpListener=e=>{const t=(0,_.hashFromEvent)(e);this._pressedKeys.setValue(t),this._keyboardPressedKeysState.setValue(new n((0,_.modifiersFromEvent)(e),""))},this._blurEvent=()=>{this._pressedKeys.setValue(0),this._keyboardPressedKeysState.setValue(new n(0,""))},this._mouseEvent=e=>{const t=(0,_.modifiersFromEvent)(e),s=255&(this._pressedKeys.value()??0);this._pressedKeys.setValue(t|s)}}listen(e){e.addEventListener("keydown",this._keyDownListener),e.addEventListener("keyup",this._keyUpListener),e.addEventListener("blur",this._blurEvent),e.addEventListener("mousemove",this._mouseEvent)}unlisten(e){e.removeEventListener("keydown",this._keyDownListener),e.removeEventListener("keyup",this._keyUpListener),e.removeEventListener("blur",this._blurEvent), e.removeEventListener("mousemove",this._mouseEvent)}registerGroup(e){this._groups.push(e),this.sortGroups()}unregisterGroup(e){for(let t=this._groups.length;t--;)this._groups[t]===e&&this._groups.splice(t,1)}promoteGroup(e){const t=this._getModalOrderEpoch(),s=l(e,t);let i=this._groups.findIndex((e=>l(e,t)===s)),_=0;for(;il(s,e)-l(t,e)))}_getMinOrder(){return this._groups.reduce(((e,t)=>Math.min(e,t.order)),0)}_getModalOrderEpoch(){return-2*(Math.abs(this._getMinOrder())-1)}}function l(e,t){return e.order+(e.modal?t:0)}},307866:(e,t,s)=>{"use strict";s.d(t,{QUOTE_FIELDS:()=>_,QUOTE_FIELDS_CACHE:()=>o});var i=s(185842) ;const _=new Set(["pro_name","base_name","logo","logoid","currency-logoid","base-currency-logoid","source-logoid","short_name","web_site_url","pro_perm","timezone","current_session","session_holidays","last_price","lp_time","subsessions","prev_close_price","open_price","high_price","low_price","price_52_week_high","price_52_week_low","ask","ask_size","bid","bid_size","rch","rchp","rtc","rtc_time","data_frequency","reference-last-period-start","business_description","web_site_url","figi","number_of_employees","float_shares_outstanding","earnings_release_next_calendar_date","root","description","exchange","listed_exchange","type","country_code","provider_id","sector","typespecs","visible-plots-set","industry","currency_id","last_price","fractional","minmov","minmove2","pricescale","variable_tick_size","change","change_percent","volume","average_volume","market_cap_basic","market_cap_calc","total_revenue","earnings_per_share_basic_ttm","price_earnings_ttm","beta_1_year","dps_common_stock_prim_issue_fy","dividends_yield","earnings_release_next_date","earnings_per_share_forecast_next_fq","earnings_publication_type_next_fq","earnings_release_date","earnings_per_share_fq","earnings_per_share_forecast_fq","forecast_raw","last_release_date","next_release_date","reference_last_period","fundamental_currency_code","number_of_employees","web_site_url","business_description","founded","ceo","float_shares_outstanding","total_shares_outstanding","dividend_payout_ratio_ttm","dividends_yield_current","dividend_ex_date_upcoming","dividend_amount_upcoming","dividend_amount_recent","dividend_ex_date_recent","dividend_amount_h","dividend_payment_date_upcoming","dividend_payment_date_recent","total_revenue_fq_h","total_revenue_fy_h","net_income_fy_h","net_income_fq_h","total_assets_fy_h","total_assets_fq_h","total_liabilities_fy_h","total_liabilities_fq_h","cash_f_operating_activities_fy_h","cash_f_operating_activities_fq_h","cash_f_investing_activities_fy_h","cash_f_investing_activities_fq_h","cash_f_financing_activities_fy_h","cash_f_financing_activities_fq_h","fiscal_period_fy_h","fiscal_period_fq_h","fiscal_period_fh_h","earnings_release_date_fq_h","earnings_release_next_date_fq","earnings_per_share_forecast_next_fq","earnings_per_share_forecast_fq_h","earnings_per_share_fq_h","earnings_fiscal_period_fq_h","next_earnings_fiscal_period_fq","is_next_earnings_release_date_estimated","symbol-primaryname","currency_code","rates_mc","rates_fy","rates_ttm","measure","value_unit_id","value-unit-id","update_mode","language","local_description","short_description","source","source2","format","recommendation_mark","last_report_frequency","price_target_estimates_num","price_target_average","update_mode_seconds","recommendation_total","recommendation_buy","recommendation_over","recommendation_hold","recommendation_under","recommendation_sell","recommendation_total","price_target_high","price_target_low","rates_pt","rates_pt","total_revenue_fy_h","total_revenue_fq_h","total_revenue_fh_h","net_income_fy_h","net_income_fq_h","net_income_fh_h","total_assets_fy_h","total_assets_fq_h","total_assets_fh_h","total_liabilities_fy_h","total_liabilities_fq_h","total_liabilities_fh_h","cash_f_operating_activities_fy_h","cash_f_operating_activities_fq_h","cash_f_operating_activities_fh_h","cash_f_investing_activities_fy_h","cash_f_investing_activities_fq_h","cash_f_investing_activities_fh_h","cash_f_financing_activities_fy_h","cash_f_financing_activities_fq_h","cash_f_financing_activities_fh_h","fiscal_period_fy","fiscal_period_fq","fiscal_period_fh","earnings_release_date_fq_h","earnings_release_date_fy_h","earnings_release_date_fh_h","earnings_release_next_date_fq","earnings_release_next_date_fy","earnings_release_next_date_fh","earnings_release_next_time","earnings_release_time","is_next_earnings_release_date_estimated","earnings_per_share_forecast_next_fq","earnings_per_share_forecast_next_fy","earnings_per_share_forecast_next_fh","earnings_per_share_forecast_fq_h","earnings_per_share_forecast_fy_h","earnings_per_share_forecast_fh_h","earnings_per_share_fq_h","earnings_per_share_fy_h","earnings_per_share_fh_h","earnings_fiscal_period_fq_h","earnings_fiscal_period_fy_h","earnings_fiscal_period_fh_h","next_earnings_fiscal_period_fq","next_earnings_fiscal_period_fy","next_earnings_fiscal_period_fh","revenue_fq_h","revenue_fy_h","revenue_fh_h","revenue_forecast_fq_h","revenue_forecast_fy_h","revenue_forecast_fh_h","revenue_forecast_next_fq","revenue_forecast_next_fy","revenue_forecast_next_fh","revenue_seg_by_business_h","revenue_seg_by_region_h","total_revenue_fy","total_revenue_fq","total_revenue_fh","gross_profit_fy","gross_profit_fq","gross_profit_fh","ebitda_fy","ebit_fy","net_income_fy","net_income_fq","net_income_fh","total_debt_fy_h","total_debt_fq_h","total_debt_fh_h","free_cash_flow_fy_h","free_cash_flow_fq_h","free_cash_flow_fh_h","cash_n_equivalents_fy_h","cash_n_equivalents_fq_h","cash_n_equivalents_fh_h","total_current_assets_fy","total_current_assets_fq","total_current_assets_fh","total_current_liabilities_fy","total_current_liabilities_fq","total_current_liabilities_fh","total_non_current_assets_fy","total_non_current_assets_fq","total_non_current_assets_fh","total_non_current_liabilities_fy","total_non_current_liabilities_fq","total_non_current_liabilities_fh","loans_net_fy","loans_net_fy_h","loans_net_fq_h","loans_net_fh_h","total_deposits_fy","total_deposits_fy_h","total_deposits_fq_h","total_deposits_fh_h","loan_loss_allowances_fy","loan_loss_allowances_fy_h","loan_loss_allowances_fq_h","loan_loss_allowances_fh_h","reserve_to_total_capital_fy_h","reserve_to_total_capital_fq_h","reserve_to_total_capital_fh_h","unearned_premium_to_total_capital_fy_h","unearned_premium_to_total_capital_fq_h","unearned_premium_to_total_capital_fh_h","insurance_reserves_fy_h","insurance_reserves_fq_h","insurance_reserves_fh_h","policy_claims_fy_h","policy_claims_fq_h","policy_claims_fh_h","premiums_earned_fy_h","premiums_earned_fq_h","premiums_earned_fh_h","price_earnings_fq_h","price_earnings_fy_h","price_earnings_fh_h","price_sales_fq_h","price_sales_fy_h","price_sales_fh_h","diluted_net_income_ttm","total_revenue_ttm","price_earnings_current","price_sales_current","isin-displayed","cusip","interest_income_fy_h","interest_income_fq_h","interest_income_fh_h","non_interest_income_fy_h","non_interest_income_fq_h","non_interest_income_fh_h","website","doc","explorer","sources","contracts","crypto_common_categories","crypto_asset","community","dividends_availability","earnings_availability","financials_availability","documents","etf_asset_type_exposure","etf_region_exposure","top_holdings","unit-id","options-info","interest_income_fy","interest_income_fq","interest_income_fh","non_interest_income_fy","non_interest_income_fq","non_interest_income_fh","interest_expense_fy","interest_expense_fq","interest_expense_fh","loan_loss_provision_fy","loan_loss_provision_fq","loan_loss_provision_fh","non_interest_expense_fy","non_interest_expense_fq","non_interest_expense_fh","non_oper_income_fy","non_oper_income_fq","non_oper_income_fh","unusual_expense_inc_fy","unusual_expense_inc_fq","unusual_expense_inc_fh","pretax_income_fy","pretax_income_fq","pretax_income_fh","income_tax_fy","income_tax_fq","income_tax_fh","after_tax_other_income_fy","after_tax_other_income_fq","after_tax_other_income_fh","total_non_oper_income_fy","total_non_oper_income_fq","total_non_oper_income_fh","oper_income_fy","oper_income_fq","oper_income_fh","operating_expenses_fy","operating_expenses_fq","operating_expenses_fh","cost_of_goods_fy","cost_of_goods_fq","cost_of_goods_fh","equity_in_earnings_fy","equity_in_earnings_fq","equity_in_earnings_fh","minority_interest_exp_fy","minority_interest_exp_fq","minority_interest_exp_fh","discontinued_operations_fy","discontinued_operations_fq","discontinued_operations_fh","front_contract","pointvalue","unit_id","expiration","aum","asset_class","focus","expense_ratio","launch_date","issuer","brand","homepage","index_tracked","actively_managed","fund_view_mode","fund_view_modes","common_equity_tier1_ratio_fy_h","common_equity_tier1_ratio_fq_h","common_equity_tier1_ratio_fh_h","tier1_capital_ratio_fy_h","tier1_capital_ratio_fq_h","tier1_capital_ratio_fh_h","total_capital_ratio_fy_h","total_capital_ratio_fq_h","total_capital_ratio_fh_h","preferred_stock_carrying_value_fh","preferred_stock_carrying_value_fq","total_debt_fq","minority_interest_fh","minority_interest_fq","cash_n_short_term_invest_fq","cash_n_due_f_banks_fh","cash_n_due_f_banks_fq","enterprise_value_current","etf_holdings_count","contract-description","reference-last-period","all_time_high","all_time_high_day","all_time_low","all_time_low_day","outstanding_amount","nominal_value","denom_min","current_coupon","coupon_type_general","coupon_frequency","yield_to_maturity","maturity-date","days_to_maturity","bond_issuer","issue_date","bond_issuer_stock_symbol","total_issued_amount","paid_amount","bond_snp_rating_lt_h","placement_type","duration_type","maturity_type","offer_type","redemption_type","conversion_option","sinking_fund","ownership_form","daily-summary-ast","issue_status","coupon_h","sinking_fund_next_date","sinking_fund_min_amount_next","call_next_date","redemptions_h","call_notice_days","put_next_date","put_notice_days_min","seniority_level","inflation_protection","pledge_status","bond_issuer_country_of_risk","bond_issuer_cr_parent","credit_enhancement_type","credit_enhancement_status","use_of_proceeds","bond_issuer_snp_rating_lt_h","bond_issuer_snp_rating_st_h","bond_agents_tr","first_bar_time_1d","financial-indicator-id","exchange-info","underlying-symbol","strike","lotsize","option-style","has_bonds","open_time","has_bonds","dex_buys_15m","dex_sells_15m","dex_buy_volume_15m","dex_sell_volume_15m","dex_buyers_15m","dex_sellers_15m","dex_buys_1h","dex_sells_1h","dex_buy_volume_1h","dex_sell_volume_1h","dex_buyers_1h","dex_sellers_1h","dex_buys_4h","dex_sells_4h","dex_buy_volume_4h","dex_sell_volume_4h","dex_buyers_4h","dex_sellers_4h","dex_buys_12h","dex_sells_12h","dex_buy_volume_12h","dex_sell_volume_12h","dex_buyers_12h","dex_sellers_12h","dex_buys_24h","dex_sells_24h","dex_buy_volume_24h","dex_sell_volume_24h","dex_buyers_24h","dex_sellers_24h","dex_converted_symbol","dex_trading_volume_24h","dex_created_time","dex_currency","dex_currency_logoid","blockchain_addresses_urls","blockchain_addresses","base_currency","ipo_offer_status","has_ipo_details_visible","ipo_price_range_usd_max","ipo_price_range_usd_min","ipo_offer_price_usd","ipo_offered_shares","ipo_deal_amount_usd","ipo_announcement_date","ipo_offer_date","available_data_range_begin_date","available_data_range_end_date","has_etf_ownership","symbol_primary_listing","metric_ytm"]),o=new class{ constructor(e){this._cache=new Map,this._times=new Map,this._fields=[...e.fields]}update(e,t,s){const _=(0,i.ensureDefined)(e.symbolname),o=Date.now();if(this._cache.has(_)||this._cache.set(_,{symbolname:_,status:e.status,values:{}}),this._times.has(_)||this._times.set(_,new Map),"error"===e.status)return;const n=(0,i.ensureDefined)(this._cache.get(_)),a=(0,i.ensureDefined)(this._times.get(_));n.status=e.status;for(const i of this._fields)t.has(i)&&(s||void 0!==e.values[i])&&(n.values[i]=e.values[i],a.set(i,o))}get(e){return this._cache.get(e)??null}getTimes(e){return this._times.get(e)??null}fields(){return this._fields}}({fields:_})},287984:(e,t,s)=>{"use strict";s.d(t,{QuoteSessionMultiplexer:()=>u});var i=s(389315),_=s(88434),o=s(622924),n=s(185842),a=s(992438),r=s(359308),l=s(584104),c=s(307866),d=s(323140);let h=!1;var m=s(809064);class u{constructor(e){this.onConnect=new a.Delegate,this.onDisconnect=new a.Delegate,this._connected=!1,this._subscriptions={},this._symbol_data={},this._delayUpdateFastSymbols=(0,_.default)(this._updateFastSymbols,250),this._throttledSymbolData={},this._extensions={},this.options={throttleTimeout:125,...e},this._session=new m.QuoteSession(e.api,["multiplexer",e.name,(0,l.randomHash)()].filter(Boolean).join("_")),this.options.extensions?.formatter&&(this._extensions.formatter=this.options.extensions.formatter(this)),this.options.extensions?.snapshot&&(this._extensions.snapshot=this.options.extensions.snapshot(this)),this.connect()}destroy(){this._session.destroy(),this._connected=!1,this.onDisconnect.fire()}internals(){return{session:()=>this._session,subscriptions:()=>this._subscriptions,data:()=>this._symbol_data}}connect(){this._session.connect(this.quoteHandler.bind(this))}quoteHandler(e){const{method:t,params:s}=e;switch(t){case"connected":this._connected||(this._connected=!0,this.onConnected());break;case"quote_list_fields":break;case"quote_symbol_data":this._connected&&this.onSymbolData(s[0]);break;case"quote_completed":this._connected&&this.onSymbolData({symbolname:s[0],complete:performance.now(),values:{}});break;case"disconnected":this._connected&&(this._connected=!1,this.onDisconnect.fire())}}onConnected(){this.setFields();const e=Object.keys(this._symbol_data);e.length&&(this._session.quoteAddSymbols(e),this._delayUpdateFastSymbols()),this.onConnect.fire()}setFields(){const{fields:e}=this.options;e&&e.length&&this._session.quoteSetFields(e)}onSymbolData(e){try{e.status&&c.QUOTE_FIELDS_CACHE.update(e,c.QUOTE_FIELDS,!1)}catch(e){}const t=e.symbolname;let s=this._throttledSymbolData[t];h&&(delete e.values.prev_close_price,void 0!==e.values.regular_close&&(e.values.prev_close_price=e.values.regular_close)),s||(s=this._throttledSymbolData[t]={fnDispatch:(0,i.default)(this.dispatchSymbolData.bind(this),this.options.throttleTimeout)}),s.cache?(0,r.deepExtend)(s.cache,e):s.cache=e,s.fnDispatch(t)}dispatchSymbolData(e){const t=this._symbol_data[e],s=this._throttledSymbolData[e].cache;if(delete this._throttledSymbolData[e].cache,this._symbol_data[e]){(0,r.deepExtend)(t,s), t.values&&this._parseUpdateMode(t.values);for(const i in this._subscriptions){const _=this._subscriptions[i];if(_.has(e)){[...(0,n.ensureDefined)(_.get(e))].forEach((e=>{e(t,s)}))}}}}subscribe(e,t,s){this._subscriptions[e]=this._subscriptions[e]||new Map;const i=this._subscriptions[e];t=Array.isArray(t)?[...t]:[t];const _=[];t.forEach((e=>{this._symbol_data[e]?i&&i.has(e)||this._symbol_data[e].subscribers_count++:(this._symbol_data[e]={subscribers_count:1},_.push(e)),i.has(e)||i.set(e,[]);const t=(0,n.ensureDefined)(i.get(e));t.push(s),t.fast=!0,this._symbol_data[e]&&this._symbol_data[e].values&&s(this._symbol_data[e],this._symbol_data[e])})),_.length&&this._connected&&(this._session.quoteAddSymbols(_),this._delayUpdateFastSymbols())}unsubscribe(e,t,s){t=Array.isArray(t)?[...t]:[t];const i=this._subscriptions[e],_=[];for(let o=0;o{"use strict";s.d(t,{QuoteSession:()=>_});var i=s(584104);class _{constructor(e,t=(0,i.randomHash)()){this._sessionstarted=!1,this._globalHandler=null,this._chartApi=e,this._sessionid="qs_"+t}destroy(){this._sessionstarted&&(this._chartApi.quoteDeleteSession(this._sessionid),this._sessionstarted=!1)}connected(){return this._chartApi.connected()}connect(e){this._globalHandler=e,this._chartApi.createSession(this._sessionid,this),this._chartApi.connect()}disconnect(){this._chartApi.disconnect()}quoteAddSymbols(e){this._chartApi.quoteAddSymbols(this._sessionid,e)}quoteRemoveSymbols(e){this._chartApi.quoteRemoveSymbols(this._sessionid,e)}quoteFastSymbols(e){this._chartApi.quoteFastSymbols(this._sessionid,e)}quoteSetFields(e){this._chartApi.quoteSetFields(this._sessionid,e)}onMessage(e){ switch(e.method){case"connected":this._sessionstarted||(this._chartApi.quoteCreateSession(this._sessionid),this._sessionstarted=!0);break;case"disconnected":this._sessionstarted=!1}this._globalHandler?.(e)}quoteHibernateAll(){this._chartApi.quoteHibernateAll(this._sessionid)}}},595398:(e,t,s)=>{"use strict";s.d(t,{getTooltipData:()=>_,setTooltipData:()=>o});const i=new WeakMap;function _(e,t){const s=i.get(e);return s instanceof Function?s(t):s&&s[t]}function o(e,t,s){if(s instanceof Function)return void i.set(e,s);const _=i.get(e),o=void 0===_||_ instanceof Function?{}:_;o[t]=s,i.set(e,o)}},424126:(e,t,s)=>{"use strict";s.d(t,{empty:()=>n,setTooltip:()=>a});const i="tooltip-root-element";let _;function o(){const e=document.getElementById(i);e?_=e:(_=document.createElement("div"),_.id=i,document.body.appendChild(_))}function n(){_&&(_.innerHTML="")}function a(e){n(),_||o(),_.appendChild(e)}"interactive"===document.readyState?o():document.addEventListener("DOMContentLoaded",o)},202989:(e,t,s)=>{"use strict";s.d(t,{clearSchedule:()=>n,scheduleHide:()=>r,scheduleRemove:()=>a,scheduleRender:()=>l});let i=0,_=0,o=0;function n(){clearTimeout(i),clearTimeout(_),clearTimeout(o)}function a(e,t){o=setTimeout(e,t)}function r(e,t){_=setTimeout(e,t)}function l(e,t){i=setTimeout(e,t)}},811096:(e,t,s)=>{"use strict";s.d(t,{setTooltipColorTheme:()=>o});const i={default:"",white:"theme-white",chart:"theme-chart",news:"theme-news","round-shadow":"theme-round-shadow"},_=Object.keys(i);function o(e,t){const s=_.includes(t)?i[t]:"";e.classList.remove(..._.map((e=>i[e])).filter((e=>!!e))),s&&!e.classList.contains(s)&&e.classList.add(s)}},648070:(e,t,s)=>{"use strict";s.d(t,{AbstractIndicator:()=>a});var i=s(77357),_=s(584104),o=s(124401);s(880847);const n=(0,i.getLogger)("GUI.Blocks.AbstractIndicator");class a{constructor(e){this._classSuffix="",this._quoteSessionPrefix="abstract-indicator",this._shortMode=!1,this._showTooltip=!0,this._subscribed=!1,this._tooltipType="custom",this._lastTooltipText="",this._quoteSession=e.quoteSession}getValue(){return this._value}getTooltipText(){return this._labelMap[this._value]||""}getLabel(){return this._labelMap[this._value]||""}getElement(){return this._el}update(e,t){this._updateValue(e,t),this._render()}setTooltipEnabled(e=!1){this._showTooltip!==e&&(this._showTooltip=e,this._renderTooltip())}enableShortMode(){!0!==this._shortMode&&(this._shortMode=!0,this._render())}disableShortMode(){!1!==this._shortMode&&(this._shortMode=!1,this._render())}isShortModeEnabled(){return this._shortMode}start(){!this._subscribed&&this._symbolName&&(this._quoteSession||(this._quoteSession=(0,o.getQuoteSessionInstance)("simple")),this._quoteSession.subscribe(this._getQuoteSessionId(),this._symbolName,this.update.bind(this)),this._subscribed=!0)}stop(){this._subscribed&&this._quoteSession&&this._symbolName&&(this._quoteSession.unsubscribe(this._getQuoteSessionId(),this._symbolName),this._subscribed=!1)}setSessionStatusIcon(e){this._sessionStatusIcon!==e&&(this._sessionStatusIcon=e,this._render())}_init(e){ this._el=e.el?e.el:document.createElement("span"),this._el.innerHTML="",this._classMap=e.classMap,this._iconClassMap=e.iconClassMap,this._labelMap=e.labelMap,this._showTooltip=e.showTooltip,this._classSuffix=e.classSuffix,this._symbolName=e.symbol,this._sessionStatusIcon=e.sessionStatusIcon,this._onValueChange=e.onValueChange,e.tooltipType&&(this._tooltipType=e.tooltipType),this._quoteSessionGUID=(0,_.guid)(),!0===e.short&&this.enableShortMode(),e.data&&this._updateValue(e.data)}_clearClasses(){Object.values(this._classMap).map((e=>{this._el.classList.remove(`${e}`),this._el.classList.remove(`${e}${this._classSuffix}`)}))}_render(){this._renderClasses(),this._renderTooltip(),this._renderLabel()}_renderLabel(){this._el.textContent=this.getLabel()}_updateValue(e,t){const s=this._getValueFromData(e);(t||s!==this._value)&&(this._value=s,this._onValueChange?.(this._value))}_renderClasses(){const e=this._el.classList;e.add(this._componentClass,this._componentClass+this._classSuffix);const t=this._classMap[this._value];for(const s in this._classMap){const i=this._classMap[s];i&&(i===t?(e.add(i,i+this._classSuffix),this._sessionStatusIcon&&e.add(i+"__withIcon")):(e.remove(i,i+this._classSuffix),this._sessionStatusIcon&&e.remove(i+"__withIcon")))}!t&&this._value&&n.logWarn(`no className for status ${this._value}`)}_renderTooltip(){const e=this._showTooltip?this.getTooltipText():"";e!==this._lastTooltipText&&(this._lastTooltipText=e,this._el.setAttribute("title",e),"custom"===this._tooltipType&&this._el.classList.toggle("apply-common-tooltip",this._showTooltip))}_getQuoteSessionId(){return`${this._quoteSessionPrefix}.${this._quoteSessionGUID}`}}},235292:(e,t,s)=>{"use strict";s.d(t,{DataModeIndicator:()=>r});var i=s(729193),_=(s(686923),s(85953),s(648070));const o={connecting:"tv-data-mode--connecting",delayed:"tv-data-mode--delayed",delayed_streaming:"tv-data-mode--delayed",endofday:"tv-data-mode--endofday",forbidden:"tv-data-mode--forbidden",realtime:"tv-data-mode--realtime",snapshot:"tv-data-mode--snapshot",loading:"tv-data-mode--loading",replay:"tv-data-mode--replay"};function n(){return{connecting:i.t(null,{context:"data_mode_connecting_letter"},s(859994)),delayed:i.t(null,{context:"data_mode_delayed_letter"},s(892363)),delayed_streaming:i.t(null,{context:"data_mode_delayed_streaming_letter"},s(394501)),endofday:i.t(null,{context:"data_mode_end_of_day_letter"},s(570939)),forbidden:i.t(null,{context:"data_mode_forbidden_letter"},s(394921)),realtime:i.t(null,{context:"data_mode_realtime_letter"},s(86644)),snapshot:i.t(null,{context:"data_mode_snapshot_letter"},s(257326)),loading:"",replay:i.t(null,{context:"data_mode_replay_letter"},s(756457))}}const a={streaming:"realtime"};class r extends _.AbstractIndicator{constructor(e){super(e),this._quoteSessionPrefix="data-mode-indicator",this._componentClass="tv-data-mode",this._init(e)}getLabel(){return!0===this._shortMode?this._shortLabelMap[this._value]||"":super.getLabel()}setMode(e,t){this.update({values:{update_mode:e,update_mode_seconds:t}})}hide(){ this._el.classList.add("i-hidden")}show(){this._el.classList.remove("i-hidden")}getTooltipText(){let e="";const t=this.getValue();if(""===t)return e;switch(t){case"delayed":e=i.t(null,void 0,s(790524));break;case"delayed_streaming":e=i.t(null,void 0,s(81461));break;default:e=this._labelMap[t]||e}return["delayed","delayed_streaming"].includes(t)&&(e=e.format({number:String(Math.round(this._modeInterval/60))})),e}_init(e={}){const t=Object.assign({},{classMap:o,classSuffix:"",data:{values:{update_mode:"connecting"}},labelMap:{connecting:i.t(null,void 0,s(194194)),delayed:i.t(null,void 0,s(229525)),delayed_streaming:i.t(null,void 0,s(229525)),endofday:i.t(null,void 0,s(601764)),forbidden:i.t(null,void 0,s(328313)),realtime:i.t(null,void 0,s(883928)),snapshot:i.t(null,void 0,s(562395)),loading:"",replay:i.t(null,void 0,s(97727))},modeInterval:600,short:!1,shortLabelMap:n(),showTooltip:!0,tooltipType:"custom"},e);this._modeInterval=t.modeInterval||600,this._shortLabelMap=t.shortLabelMap||n(),super._init(t),this._render()}_getValueFromData(e){let t;return t=void 0!==e.values&&void 0!==e.values.update_mode?e.values.update_mode:this.getValue(),a[t]||t}_updateValue(e,t){void 0!==e.values&&void 0!==e.values.update_mode_seconds&&(this._modeInterval=e.values.update_mode_seconds),super._updateValue(e,t)}}},254236:(e,t,s)=>{"use strict";s.d(t,{telemetry:()=>c});var i=s(875500),_=s(131890),o=s(376596),n=s(702203);s(574908);const a=(0,s(77357).getLogger)("Common.Telemetry"),r={default:15e3,site:3e5},l=["before_websocket_connection_time_frame","websocket_connection_time_frame","first_series_full_time_frame","page_full_load_time_frame","page_load_time_frame"];const c=new class{constructor(){this.reportSent=new i.Delegate,this.timeCounters={series:{marks:[]},study:{},pine:{}},this._timeoutIds={},this._commonAdditionalData={cluster:null,userId:"0"},this._reportStash={}}setSessionInfo(e){const t=this._parseCluster(e);null!==t&&(this._commonAdditionalData.cluster=t)}sendReport(e,t,s){if(!this._isAbleToSendReport(t))return;const i=this._getSubserviceType(e),_=this._getHost(e,i);if(null!==_){if(s=void 0===s?{count:1}:s,this._addReportToStash(s,t,_),!this._timeoutIds[e]){const t=r[e]??r.default;this._timeoutIds[e]=setTimeout(this._sendTelemetryToService.bind(this,e,_),t)}}else a.logError(`Unable to get host for counter: ${t}, metric type: ${e}, serivce type: ${i}`)}sendChartReport(e,t,s=!0){this._sendServiceSpecifiedReport("charts",e,t,s)}sendLineToolsStorageReport(e,t,s=!0){this._sendServiceSpecifiedReport("line_tools_storage",e,t,s)}_sendServiceSpecifiedReport(e,t,s,i=!0){this._updateUserInfo(),s=void 0===s?{count:1}:s,i&&(s=this._appendCommonAdditionalInfo(s,["cluster","userId"])),this.sendReport(e,t,s)}_updateUserInfo(){const e="user"in window&&"id"in window.user?window.user.id:"0";this._commonAdditionalData.userId=String(e)}_isAbleToSendReport(e){const t=window.TELEMETRY_HOSTS,s=l.includes(e),i=Boolean(window.TradingView?.onChartPage||(0,o.onWidget)());return t&&(!s||i)}_sendTelemetryToService(e,t){ if(this._reportStash.hasOwnProperty(t)){const e=this._cropParams(this._reportStash[t]),s=this._renameAllParams(e),i={event:"report_stash",params:this._cleanAllParams(s)};a.logDebug(`Report to host: ${t}; stash: ${JSON.stringify(this._reportStash[t])}`),this.reportSent.fire(this._reportStash[t]),delete this._reportStash[t],(0,_.fetch)(`${t}/report`,{method:"POST",body:JSON.stringify(i)})}this._timeoutIds[e]=null}_getHost(e,t){const s=window.TELEMETRY_HOSTS,i=s[e]&&s[e][t];return Boolean(i)?i:null}_getSubserviceType(e){if(!["charts","site"].includes(e))return"all";let t="free";const s=window.user.is_pro;return"charts"===e&&(0,n.isOnMobileAppPage)("old")?t=s?"ios_pro":"ios_free":"charts"===e&&(0,n.isOnMobileAppPage)("new")?t=s?"android_pro":"android_free":(0,o.onWidget)()?t="widget":s&&(t="pro"),t}_parseCluster(e){let t;try{t=JSON.parse(e).session_id}catch(e){return a.logError("Could not parse cluster id (session id)"),null}const s=/(.*@)(.*)/gi.exec(t);return null!==s&&s.length>=3?s[2]:null}_appendCommonAdditionalInfo(e,t){return t.forEach((t=>{t in this._commonAdditionalData&&(e.additional=e.additional||{},e.additional[t]=this._commonAdditionalData[t])})),e}_cropParams(e){for(const t in e)e.hasOwnProperty(t)&&e[t].length>1e3&&(e.too_much_metrics_frame=e.too_much_metrics_frame??[],e.too_much_metrics_frame.push({value:e[t].length,additional:{event:t}}),delete e[t]);return e}_renameAllParams(e){const t={};for(const s in e)e.hasOwnProperty(s)&&(t[s]=[],e[s].forEach((e=>{t[s].push(this._renameEntryParams(e))})));return t}_renameEntryParams(e){const t={count:"c",value:"v",text:"t",additional:"a"};return Object.keys(e).reduce(((s,i)=>(s[t[i]]=e[i],s)),{})}_cleanAllParams(e){const t={};for(const s in e)if(e.hasOwnProperty(s)){t[s]=[];const i={c:0};e[s].forEach((e=>{const _=this._cleanEntryParams(e),o=Object.keys(_).length;1===o&&void 0!==_.c?i.c+=_.c:o>0&&t[s].push(_)})),i.c>0&&t[s].push(i),0===t[s].length&&delete t[s]}return t}_cleanEntryParams(e){const t=Object.keys(e).reduce(((t,s)=>"c"!==s&&"t"!==s||e[s]?(t[s]=e[s],t):t),{});return"c"in t||"v"in t||"t"in t?t:{}}_addReportToStash(e,t,s){s in this._reportStash||(this._reportStash[s]={}),t in this._reportStash[s]||(this._reportStash[s][t]=[]),Object.keys(e).length>0&&this._reportStash[s][t].push(e)}}},65890:(e,t,s)=>{"use strict";function i(e){e.preventDefault()}s.d(t,{preventDefault:()=>i,preventDefaultForContextMenu:()=>o});const _=["input:not([type])",'input[type="text"]','input[type="email"]','input[type="password"]','input[type="search"]','input[type="number"]','input[type="url"]',"textarea","a[href]",'*[contenteditable="true"]',"[data-allow-context-menu]"];function o(e){const t=e.target;t&&!t.closest(_.join(", "))&&e.preventDefault()}},663750:e=>{"use strict";e.exports=JSON.parse('{"cme":{"INDICATORS_ON_CHART":{"limit":99999}},"bovespa":{"INDICATORS_ON_CHART":{"limit":99999}},"qecomqa":{"INDICATORS_ON_CHART":{"limit":99999}},"santandercomar":{"INDICATORS_ON_CHART":{"limit":99999}}}')},233938:e=>{"use strict" ;e.exports=JSON.parse('{"free":{"CHAT_ASSISTANT":{"limit":5,"disable_on_trial":true},"CHART_STORAGE":{"limit":1},"MULTIPLE_CHARTS":{"limit":1},"INDICATORS_ON_CHART":{"limit":2},"FUNDAMENTALS_ON_CHART":{"limit":1},"HISTORICAL_BARS":{"limit":5},"STUDY_ON_STUDY":{"limit":800,"child_limit":1},"SERVER_SIDE_ALERTS":{"overall_limit":50,"limit":3,"complex_limit":0,"primitive_limit":3},"SCREENER_INTERVALS":{"interval":["1D","1W","1M"]},"STUDY_TEMPLATES":{"limit":1},"SIMULTANEOUS_CONNECTIONS":{"limit":1},"BACKEND_CONNECTIONS":{"limit":2},"IDEA_SOCIAL_LINKS":{"socials":["Twitter","Youtube"]},"MULTICOLOR_FLAGGED_SYMBOLS":{"limit":1},"WATCHLIST_SYMBOLS":{"limit":30},"VIDEO_IDEAS_LENGTH":{"limit":20},"CREATE_MORE_PORTFOLIOS":{"limit":1},"PORTFOLIO_TRANSACTIONS":{"limit":2000},"PORTFOLIO_HOLDINGS":{"limit":20}},"pro":{"BACKTESTING_CHART_EXPAND":{},"CHAT_ASSISTANT":{"limit":5,"disable_on_trial":true},"PERSONAL_SUPPORT":{"disable_on_trial":true},"CHART_STORAGE":{"limit":5},"MULTIPLE_CHARTS":{"limit":2},"MARKET_DATA_LIMITS":{"limit":2,"primitive_limit":2},"CUSTOM_INTERVALS":{},"MULTIPLE_WATCHLISTS":{},"IMPORT_WATCHLISTS":{},"EXPORT_WATCHLISTS":{},"INDICATORS_ON_CHART":{"limit":5},"FUNDAMENTALS_ON_CHART":{"limit":4},"TV_PROSTUDIES":{"study_packages":["tv-chartpatterns"]},"HISTORICAL_BARS":{"limit":10},"TV_VOLUMEBYPRICE":{"study_packages":["tv-volumebyprice"]},"STUDY_ON_STUDY":{"limit":800,"child_limit":1},"TICK_BY_TICK_PUSH_DATA":{},"SERVER_SIDE_ALERTS":{"overall_limit":2000,"limit":20,"complex_limit":20,"primitive_limit":20},"SCREENER_AUTO_REFRESH":{},"SCREENER_NEW_AUTO_REFRESH":{},"SCREENER_EXPORT_DATA":{},"SCREENER_NEW_EXPORT_CSV_DATA":{},"SCREENER_NEW_SHOW_RESTRICTED_DATA":{},"SHOW_BONDS_RESTRICTED_DATA":{},"PORTFOLIO_DATA_LIMIT":{},"CREATE_MORE_PORTFOLIOS":{"limit":3},"PORTFOLIO_TRANSACTIONS":{"limit":5000},"PORTFOLIO_HOLDINGS":{"limit":50},"SCREENER_INTERVALS":{"interval":["1m","5m","15m","30m","1h","2h","4h","1D","1W","1M"]},"NO_SPONSORED_ADS":{"disable_on_lite_plan":"exclude_mobile"},"STUDY_TEMPLATES":{"limit":99999},"SIMULTANEOUS_CONNECTIONS":{"limit":1},"BACKEND_CONNECTIONS":{"limit":10},"IDC_AVAILABLE_DELAY":{},"STATUS":{"disable_on_trial":true},"BAR_REPLAY_INTRADAY":{"limit":1},"MULTIFLAGGED_SYMBOLS_LISTS":{},"SHOWS":{"disable_on_trial":true},"ALERTS_WEBHOOK":{},"DEEP_FUNDAMENTALS_HISTORY":{},"PUBLISH_PROTECTED_SCRIPTS":{"disable_on_trial":true},"IDEA_SOCIAL_LINKS":{"socials":["Twitter","Youtube"]},"EXTENDED_SOCIAL_LINKS":{"socials":["Facebook","Instagram"],"disable_on_trial":true},"MULTI_MONITOR":{},"MULTICOLOR_FLAGGED_SYMBOLS":{"limit":7},"INTRADAY_EXCHANGE":{},"VOLUME_PROFILE":{},"STREAMS_ACCESS":{"followers":10},"SMS_2FA_VERIFICATION":{"disable_on_trial":true},"SOCIAL_ACTIVITY":{"disable_on_trial":true},"WATCHLIST_SYMBOLS":{"limit":100},"FIELDS_PERMISSIONS":{"items":["refbonds"]},"CUSTOM_RANGE_BARS":{},"FASTEST_DATA_FLOW":{},"SESSION_VOLUME_PROFILE":{},"SHOW_ETF_HOLDINGS_DATA":{}},"pro_realtime":{"extends":"pro","CHART_STORAGE":{"limit":10},"MULTIPLE_CHARTS":{"limit":4},"MARKET_DATA_LIMITS":{"limit":4,"primitive_limit":4},"INDICATORS_ON_CHART":{"limit":10},"FUNDAMENTALS_ON_CHART":{"limit":7},"TV_PROSTUDIES":{"study_packages":["tv-prostudies","tv-chartpatterns"]},"STUDY_ON_STUDY":{"limit":800,"child_limit":9},"SERVER_SIDE_ALERTS":{"overall_limit":2000,"limit":100,"complex_limit":100,"primitive_limit":100},"ALERTS_MULTICONDITIONS":{"condition_limit":5},"CHAT_ASSISTANT":{"limit":5,"disable_on_trial":true},"CAN_EDIT_PUBLIC_CHATS":{"disable_on_trial":true},"BACKEND_CONNECTIONS":{"limit":20},"EXPORT_CHART_DATA":{},"CUSTOM_FORMULAS":{},"INTRADAY_EXOTIC_CHARTS":{},"KAGI_RENKO":{},"INTRADAY_SPREAD":{},"CUSTOM_CHATS":{},"BACKTESTING_EXPORT":{},"CREATE_MORE_PORTFOLIOS":{"limit":4},"PORTFOLIO_HOLDINGS":{"limit":75},"WATCHLIST_SYMBOLS":{"limit":250}},"pro_premium":{"extends":"pro_realtime","USE_BAR_MAGNIFIER":{},"CHART_STORAGE":{"limit":99999},"MULTIPLE_CHARTS":{"limit":8},"MARKET_DATA_LIMITS":{"limit":6,"primitive_limit":6},"INDICATORS_ON_CHART":{"limit":25},"FUNDAMENTALS_ON_CHART":{"limit":10},"FUNDAMENTAL_GRAPHS_LARGE_TIME_RANGE":{},"CHAT_ASSISTANT":{"limit":99999,"disable_on_trial":true},"CHART_PATTERNS":{"study_packages":["tv-chartpatterns","tv-chart_patterns"]},"HISTORICAL_BARS":{"limit":20},"STUDY_ON_STUDY":{"limit":800,"child_limit":24},"SERVER_SIDE_ALERTS":{"overall_limit":2000,"limit":400,"complex_limit":400,"primitive_limit":400,"watchlist_limit":2,"overall_watchlist_limit":5},"SIMULTANEOUS_CONNECTIONS":{"limit":2},"BACKEND_CONNECTIONS":{"limit":50},"IDEA_SIGNATURE":{"disable_on_trial":true},"PROFILE_WEBSITE_FIELD":{"disable_on_trial":true},"BAR_REPLAY_INTRADAY":{"limit":4},"BAR_REPLAY_1S":{},"ALERTS_NO_EXPIRATION":{},"PUBLISH_INVITE_ONLY_SCRIPTS":{"disable_on_trial":true},"EXPORT_CHART_DATA":{},"DEEP_HISTORY_BACKTEST":{},"ALERTS_ON_SECONDS":{},"PERMANENT_STREAM_RECORDS":{},"EXTENDED_SOCIAL_LINKS":{"socials":["Facebook","Instagram","Website"],"disable_on_trial":true},"SECONDS_INTERVALS":{},"TPO_PERIODIC":{"study_packages":["tv-volumebyprice"]},"TPO_CHART_STYLE":{},"VOLUME_CANDLES":{},"VIDEO_IDEAS_LENGTH":{"limit":60},"VOLUME_FOOTPRINT":{},"PINE_SCREENER":{},"CREATE_MORE_PORTFOLIOS":{"limit":5},"PORTFOLIO_HOLDINGS":{"limit":100},"SOCIAL_TRUSTED_USER":{"disable_on_trial":true},"WATCHLIST_SYMBOLS":{"limit":500}},"pro_expert":{"extends":"pro_premium","INDICATORS_ON_CHART":{"limit":30},"FUNDAMENTALS_ON_CHART":{"limit":15},"STUDY_ON_STUDY":{"limit":800,"child_limit":29},"MULTIPLE_CHARTS":{"limit":10},"MARKET_DATA_LIMITS":{"limit":12,"primitive_limit":12},"HISTORICAL_BARS":{"limit":25},"SERVER_SIDE_ALERTS":{"overall_limit":2000,"limit":600,"complex_limit":600,"primitive_limit":600,"watchlist_limit":10,"overall_watchlist_limit":20},"BACKEND_CONNECTIONS":{"limit":80},"BAR_REPLAY_INTRADAY":{"limit":6},"BAR_REPLAY_1S":{},"BAR_REPLAY_1T":{},"EXPORT_FINANCIALS_DATA":{},"TICK_INTERVALS":{},"FIRST_PRIORITY_SUPPORT":{},"BUY_PRO_DATA":{},"CREATE_MORE_PORTFOLIOS":{"limit":6},"PORTFOLIO_HOLDINGS":{"limit":125},"WATCHLIST_SYMBOLS":{"limit":1000}},"pro_premium_expert":{"extends":"pro_expert","INDICATORS_ON_CHART":{"limit":50},"FUNDAMENTALS_ON_CHART":{"limit":25},"STUDY_ON_STUDY":{"limit":800,"child_limit":49},"MULTIPLE_CHARTS":{"limit":16},"MARKET_DATA_LIMITS":{"limit":99999,"primitive_limit":25},"HISTORICAL_BARS":{"limit":40},"SERVER_SIDE_ALERTS":{"overall_limit":4000,"limit":1000,"complex_limit":1000,"primitive_limit":1000,"watchlist_limit":15,"overall_watchlist_limit":30},"BACKEND_CONNECTIONS":{"limit":200},"BAR_REPLAY_INTRADAY":{"limit":10},"CREATE_MORE_PORTFOLIOS":{"limit":7},"PORTFOLIO_HOLDINGS":{"limit":150}}}') }}]);