overtime-live-trading-utils 0.0.129 → 0.0.131

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.ts CHANGED
@@ -13,4 +13,3 @@ export * from './src/constants/common';
13
13
  export * from './src/constants/sports';
14
14
 
15
15
  export * from './src/enums/sports';
16
- export * from './src/enums/statuses';
package/main.js CHANGED
@@ -1 +1 @@
1
- !function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.thalesUtils=r():e.thalesUtils=r()}(this,(()=>(()=>{"use strict";var e={d:(r,a)=>{for(var E in a)e.o(a,E)&&!e.o(r,E)&&Object.defineProperty(r,E,{enumerable:!0,get:a[E]})},o:(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},r={};e.r(r),e.d(r,{AMERICAN_LEAGUES:()=>U,DRAW:()=>k,LEAGUES_NO_FORMAL_HOME_AWAY:()=>M,LEAGUES_NO_LIVE_CONSTRAINTS:()=>C,LIVE_TYPE_ID_BASE:()=>K,League:()=>S,LeagueIdMapEnetpulse:()=>G,LeagueIdMapOpticOdds:()=>y,LeagueIdMapRundown:()=>m,LeagueMap:()=>c,MIN_ODDS_FOR_DIFF_CHECKING:()=>Q,MULTIPLIER_100:()=>z,MatchResolveType:()=>T,MoneylineTypes:()=>t,PeriodType:()=>N,Provider:()=>I,ScoringType:()=>s,Sport:()=>L,SpreadTypes:()=>p,TAG_CHILD_SPREAD:()=>X,TAG_CHILD_TOTALS:()=>j,TotalTypes:()=>l,UFC_LEAGUE_IDS:()=>u,ZERO:()=>W,adjustSpreadOnOdds:()=>x,allowGameSportWithPeriodConstraint:()=>se,allowGameSportWithResultConstraint:()=>Ne,allowSoccerGame:()=>Te,calculateImpliedOddsDifference:()=>P,checkGameContraints:()=>le,checkOddsFromBookmakers:()=>R,createSpreadChildMarkets:()=>te,createTotalChildMarkets:()=>pe,fetchResultInCurrentSet:()=>Ie,filterOddsByMarketNameBookmaker:()=>ae,filterOddsByMarketNameTeamNameBookmaker:()=>ee,formatSpreadOdds:()=>Ee,gamesDatesMatching:()=>Y,getBetTypesForLeague:()=>V,getBookmakersArray:()=>d,getLeagueIsDrawAvailable:()=>b,getLeagueLabel:()=>D,getLeagueOpticOddsName:()=>h,getLeaguePeriodType:()=>B,getLeagueProvider:()=>g,getLeagueSport:()=>v,getLeagueSpreadTypes:()=>f,getLeagueTotalTypes:()=>w,getLiveSupportedLeagues:()=>F,getParentOdds:()=>re,getSpreadData:()=>J,groupAndFormatSpreadOdds:()=>ie,groupOddsBySelectionAndPoints:()=>Ae,processMarket:()=>Le,processTotalOdds:()=>oe,statusCodes:()=>Z,teamNamesMatching:()=>H}),"function"!=typeof Object.assign&&(Object.assign=function(e,r){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var a=Object(e),E=1;E<arguments.length;E++){var i=arguments[E];if(null!=i)for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(a[o]=i[o])}return a});var a=function(e){return parseFloat(e.toPrecision(12))};function E(e,r,a){return void 0===a||0==+a?Math[e](r):(r=+r,a=+a,isNaN(r)||"number"!=typeof a||a%1!=0?NaN:r<0?-E(e,-r,a):(r=r.toString().split("e"),+((r=(r=Math[e](+(r[0]+"e"+(r[1]?+r[1]-a:-a)))).toString().split("e"))[0]+"e"+(r[1]?+r[1]+a:a))))}var i,o,A={decimal:{from:function(e){if((e=parseFloat(e))<=1)throw new Error("Outside valid range.");return e},to:function(){return this.decimalValue}},moneyline:{from:function(e){return(e=parseFloat(e))>=0?e/100+1:100/-e+1},to:function(){return this.decimalValue>=2?a(100*(this.decimalValue-1)):a(-100/(this.decimalValue-1))}},hongKong:{from:function(e){if((e=parseFloat(e))<0)throw new Error("Outside valid range.");return e+1},to:function(){return a(this.decimalValue-1)}},impliedProbability:{from:function(e){if((e="string"==typeof e&&"%"==e.slice(-1)?parseFloat(e)/100:parseFloat(e))<=0||e>=1)throw new Error("Outside valid range");return 1/e},to:function(e){if(e.percentage){var r=a(100/this.decimalValue);return null!==e.precision&&(r=E("round",r,-e.precision)),r.toString()+"%"}return a(1/this.decimalValue)}},fractional:{from:function(e){var r,a=e.toString().split("/");if(e=parseFloat(a[0]),2===a.length)r=parseFloat(a[1]);else{if(1!==a.length)throw new Error("Invalid fraction");r=1}if(0===e||0===r||e/r<=0)throw new Error("Outside valid range");return 1+e/r},to:function(e){return function(e,r){for(var a,E=[0,1],i=[1,0],o=function(e){var r=null,a=e.toString().indexOf("E");-1==a&&(a=e.toString().indexOf("e"));var E=null,i=(r=-1==a?e.toString():e.toString().substring(0,a)).toString().indexOf(".");-1==i?E=r:0===i?E=r.substring(1,r.length):i<r.length&&(E=r.substring(0,i)+r.substring(i+1,r.length));var o=E,A=o.toString().length,_=e,L=_.toString().length;0===_&&(L=0);var S,t=A-L;for(S=t;S>0&&o%2==0;S--)o/=2;for(S=t;S>0&&o%5==0;S--)o/=5;return o}(e),A=e,_=Math.pow(10,-r)/2,L=2;L<1e3;L++){var S=Math.floor(A);if(E[L]=S*E[L-1]+E[L-2],Math.abs(E[L])>o)return;if(i[L]=S*i[L-1]+i[L-2],a=E[L]/i[L],Math.abs(a-e)<_||NaN==a)return E[L].toString()+"/"+i[L].toString();A=1/(A-S)}}(this.decimalValue-1,e.precision||12)}},malay:{from:function(e){if((e=parseFloat(e))<=-1||e>1)throw new Error("Outside valid range.");return e<0&&(e=-1/e),e+1},to:function(){return this.decimalValue<=2?a(this.decimalValue-1):a(-1/(this.decimalValue-1))}},indonesian:{from:function(e){if(0===(e=parseFloat(e)))throw new Error("Outside valid range.");return e>=1?e+1:-1/e+1},to:function(){return this.decimalValue<2?a(-1/(this.decimalValue-1)):a(this.decimalValue-1)}}},_=((o=function(e){if("number"!=typeof e||isNaN(e))throw new Error("Invalid odds");this.decimalValue=a(e)}).prototype=(i=function(){throw new Error("This constructor is private, please use the from* functions")}).prototype,i.from=function(e,r){if(!A.hasOwnProperty(e))throw new Error("Unknown format "+e+".");var a=A[e].from(r);return new o(a)},i);_.prototype.to=function(e,r){if(!A.hasOwnProperty(e))throw new Error("Unknown format "+e+".");r=Object.assign({precision:null,percentage:!1},r);var a=A[e].to.call(this,r);return"number"==typeof a&&null!==r.precision&&(a=E("round",a,-r.precision)),a};var L,S,t,p,l,s,T,N,I,n,O=_.from,d=function(e,r,a){var E=e.find((function(e){return Number(e.sportId)===Number(r)}));if(E){if(""==E.primaryBookmaker)return a;var i=[];return E.primaryBookmaker&&i.push(E.primaryBookmaker),E.secondaryBookmaker&&i.push(E.secondaryBookmaker),E.tertiaryBookmaker&&i.push(E.tertiaryBookmaker),i}return a},R=function(e,r,a,E,i){var o=e.get(r[0]);if(!o)return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds cause no matching bookmakers have been found"};var A=o.homeOdds,_=o.awayOdds,L=a?0:o.drawOdds;if(r.some((function(r){var E=e.get(r);return!!E&&(0===E.homeOdds||0===E.awayOdds||!a&&0===E.drawOdds||1===E.homeOdds||1===E.awayOdds||!a&&1===E.drawOdds)})))return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds cause bookmakers have 0 or 1 odds"};if(1==r.length)return{homeOdds:A,awayOdds:_,drawOdds:a?0:L};if(r.slice(1).some((function(r){var o=e[r];if(o){var S=o.homeOdds,t=o.awayOdds,p=o.drawOdds,l=O("decimal",A).to("impliedProbability"),s=O("decimal",_).to("impliedProbability"),T=a?0:O("decimal",L).to("impliedProbability"),N=O("decimal",S).to("impliedProbability"),I=O("decimal",t).to("impliedProbability"),n=a?0:O("decimal",p).to("impliedProbability"),d=P(l,N),R=P(s,I),c=a?0:P(T,n);if(d>E&&l>i&&N>i||R>E&&s>i&&I>i||!a&&c>E&&T>i&&n>i)return!0}return!1})))return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds due to percentage difference between bookmakers"};var S=[];return r.forEach((function(r){return S.push(e.get(r))})),{homeOdds:A,awayOdds:_,drawOdds:a?0:L}},P=function(e,r){var a=Math.abs(e-r)/e*100;return console.log("% diff: "+a),a};!function(e){e.SOCCER="Soccer",e.FOOTBALL="Football",e.BASKETBALL="Basketball",e.BASEBALL="Baseball",e.HOCKEY="Hockey",e.FIGHTING="Fighting",e.TENNIS="Tennis",e.ESPORTS="eSports",e.RUGBY="Rugby",e.VOLLEYBALL="Volleyball",e.HANDBALL="Handball",e.WATERPOLO="Waterpolo",e.CRICKET="Cricket",e.MOTOSPORT="Motosport",e.GOLF="Golf",e.TABLE_TENNIS="TableTennis",e.POLITICS="Politics",e.EMPTY=""}(L||(L={})),function(e){e[e.NCAAF=1]="NCAAF",e[e.NFL=2]="NFL",e[e.MLB=3]="MLB",e[e.NBA=4]="NBA",e[e.NCAAB=5]="NCAAB",e[e.NHL=6]="NHL",e[e.UFC=7]="UFC",e[e.WNBA=8]="WNBA",e[e.MLS=10]="MLS",e[e.EPL=11]="EPL",e[e.LIGUE_ONE=12]="LIGUE_ONE",e[e.BUNDESLIGA=13]="BUNDESLIGA",e[e.LA_LIGA=14]="LA_LIGA",e[e.SERIE_A=15]="SERIE_A",e[e.UEFA_CL=16]="UEFA_CL",e[e.UEFA_EL=17]="UEFA_EL",e[e.FIFA_WC=18]="FIFA_WC",e[e.J1_LEAGUE=19]="J1_LEAGUE",e[e.IPL=20]="IPL",e[e.T20_BLAST=21]="T20_BLAST",e[e.IIHF_WORLD_CHAMPIONSHIP=33]="IIHF_WORLD_CHAMPIONSHIP",e[e.COPA_AMERICA=44]="COPA_AMERICA",e[e.COPA_LIBERTADORES=45]="COPA_LIBERTADORES",e[e.UEFA_EURO=50]="UEFA_EURO",e[e.EREDIVISIE=57]="EREDIVISIE",e[e.PRIMEIRA_LIGA=61]="PRIMEIRA_LIGA",e[e.SUMMER_OLYMPICS_SOCCER_WOMEN=65]="SUMMER_OLYMPICS_SOCCER_WOMEN",e[e.SUMMER_OLYMPICS_SOCCER=66]="SUMMER_OLYMPICS_SOCCER",e[e.FIFA_WC_WOMEN=76]="FIFA_WC_WOMEN",e[e.ENGLAND_CUP=132]="ENGLAND_CUP",e[e.FRANCE_CUP=134]="FRANCE_CUP",e[e.SPAIN_CUP=138]="SPAIN_CUP",e[e.ITALY_CUP=141]="ITALY_CUP",e[e.TENNIS_WTA=152]="TENNIS_WTA",e[e.TENNIS_GS=153]="TENNIS_GS",e[e.TENNIS_MASTERS=156]="TENNIS_MASTERS",e[e.SUMMER_OLYMPICS_TENNIS=158]="SUMMER_OLYMPICS_TENNIS",e[e.GERMANY_CUP=209]="GERMANY_CUP",e[e.LIGA_MX=230]="LIGA_MX",e[e.BRAZIL_1=268]="BRAZIL_1",e[e.UEFA_EURO_U21=288]="UEFA_EURO_U21",e[e.FIFA_WORLD_CUP_U20=296]="FIFA_WORLD_CUP_U20",e[e.SUMMER_OLYMPICS_HANDBALL_WOMEN=380]="SUMMER_OLYMPICS_HANDBALL_WOMEN",e[e.SUMMER_OLYMPICS_HANDBALL=381]="SUMMER_OLYMPICS_HANDBALL",e[e.EUROLEAGUE=399]="EUROLEAGUE",e[e.SUMMER_OLYMPICS_BASKETBALL=406]="SUMMER_OLYMPICS_BASKETBALL",e[e.SUMMER_OLYMPICS_BASKETBALL_WOMEN=407]="SUMMER_OLYMPICS_BASKETBALL_WOMEN",e[e.FIBA_WORLD_CUP=409]="FIBA_WORLD_CUP",e[e.FORMULA1=445]="FORMULA1",e[e.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN=453]="SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN",e[e.SUMMER_OLYMPICS_BEACH_VOLEYBALL=454]="SUMMER_OLYMPICS_BEACH_VOLEYBALL",e[e.MOTOGP=497]="MOTOGP",e[e.SAUDI_PROFESSIONAL_LEAGUE=536]="SAUDI_PROFESSIONAL_LEAGUE",e[e.SUMMER_OLYMPICS_WATERPOLO=8881]="SUMMER_OLYMPICS_WATERPOLO",e[e.SUMMER_OLYMPICS_VOLEYBALL_WOMEN=8893]="SUMMER_OLYMPICS_VOLEYBALL_WOMEN",e[e.SUMMER_OLYMPICS_VOLEYBALL=8894]="SUMMER_OLYMPICS_VOLEYBALL",e[e.SUMMER_OLYMPICS_TABLE_TENNIS=8910]="SUMMER_OLYMPICS_TABLE_TENNIS",e[e.BOXING=9196]="BOXING",e[e.SUMMER_OLYMPICS_RUGBY=9578]="SUMMER_OLYMPICS_RUGBY",e[e.SUMMER_OLYMPICS_RUGBY_WOMEN=9588]="SUMMER_OLYMPICS_RUGBY_WOMEN",e[e.SUMMER_OLYMPICS_HOCKEY_WOMEN=9698]="SUMMER_OLYMPICS_HOCKEY_WOMEN",e[e.SUMMER_OLYMPICS_HOCKEY=9699]="SUMMER_OLYMPICS_HOCKEY",e[e.UEFA_NATIONS_LEAGUE=9806]="UEFA_NATIONS_LEAGUE",e[e.CONCACAF_NATIONS_LEAGUE=9821]="CONCACAF_NATIONS_LEAGUE",e[e.CSGO=9977]="CSGO",e[e.DOTA2=9983]="DOTA2",e[e.SUMMER_OLYMPICS_BASKETBALL_3X3=10071]="SUMMER_OLYMPICS_BASKETBALL_3X3",e[e.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN=10072]="SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN",e[e.SUMMER_OLYMPICS_QUALIFICATION=10502]="SUMMER_OLYMPICS_QUALIFICATION",e[e.LOL=10138]="LOL",e[e.CONMEBOL_WC_QUALIFICATIONS=10199]="CONMEBOL_WC_QUALIFICATIONS",e[e.UEFA_CONFERENCE_LEAGUE=10216]="UEFA_CONFERENCE_LEAGUE",e[e.NON_TITLE_BOXING=10595]="NON_TITLE_BOXING",e[e.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION=10611]="UEFA_CHAMPIONS_LEAGUE_QUALIFICATION",e[e.UEFA_EUROPA_LEAGUE_QUALIFICATION=10613]="UEFA_EUROPA_LEAGUE_QUALIFICATION",e[e.UEFA_CONFERENCE_LEAGUE_QUALIFICATION=10615]="UEFA_CONFERENCE_LEAGUE_QUALIFICATION",e[e.US_ELECTION=2e4]="US_ELECTION",e[e.UEFA_SUPER_CUP=20001]="UEFA_SUPER_CUP",e[e.BRAZIL_CUP=20002]="BRAZIL_CUP",e[e.ENGLAND_CHAMPIONSHIP=20011]="ENGLAND_CHAMPIONSHIP",e[e.SCOTLAND_PREMIERSHIP=20101]="SCOTLAND_PREMIERSHIP",e[e.BELGIUM_LEAGUE=20102]="BELGIUM_LEAGUE",e[e.CZECH_LEAGUE=20103]="CZECH_LEAGUE",e[e.CHILE_PRIMERA=20104]="CHILE_PRIMERA",e[e.FINLAND_LEAGUE=20105]="FINLAND_LEAGUE",e[e.ARGENTINA_PRIMERA=20106]="ARGENTINA_PRIMERA",e[e.RUSSIA_PREMIER=20107]="RUSSIA_PREMIER",e[e.TURKEY_SUPER_LEAGUE=20108]="TURKEY_SUPER_LEAGUE",e[e.SERBIA_SUPER_LEAGUE=20109]="SERBIA_SUPER_LEAGUE",e[e.GREECE_SUPER_LEAGUE=20110]="GREECE_SUPER_LEAGUE",e[e.INDIA_PREMIER=20111]="INDIA_PREMIER",e[e.CHINA_SUPER_LEAGUE=20112]="CHINA_SUPER_LEAGUE",e[e.AUSTRALIA_A_LEAGUE=20113]="AUSTRALIA_A_LEAGUE",e[e.SWITZERLAND_SUPER_LEAGUE=20114]="SWITZERLAND_SUPER_LEAGUE",e[e.BUNDESLIGA_2=20115]="BUNDESLIGA_2",e[e.LA_LIGA_2=20116]="LA_LIGA_2",e[e.SERIE_B=20117]="SERIE_B",e[e.INDIA_SUPER_LEAGUE=20118]="INDIA_SUPER_LEAGUE",e[e.LIGUE_2=20119]="LIGUE_2",e[e.AUSTRIA_BUNDESLIGA=20120]="AUSTRIA_BUNDESLIGA",e[e.DENMARK_SUPER_LEAGUE=20121]="DENMARK_SUPER_LEAGUE",e[e.POLAND_LEAGUE=20122]="POLAND_LEAGUE",e[e.SWEDEN_LEAGUE=20123]="SWEDEN_LEAGUE",e[e.COLOMBIA_PRIMERA_A=20124]="COLOMBIA_PRIMERA_A",e[e.ENGLAND_EFL_CUP=20125]="ENGLAND_EFL_CUP",e[e.ENGLAND_LEGAUE_1=20126]="ENGLAND_LEGAUE_1",e[e.URUGUAY_PRIMERA_DIVISION=20127]="URUGUAY_PRIMERA_DIVISION",e[e.EUROCUP=20200]="EUROCUP",e[e.GOLF_H2H=100021]="GOLF_H2H",e[e.GOLF_WINNER=100121]="GOLF_WINNER",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1=15312]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2=15313]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3=15314]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4=15315]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5=15316]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6=15317]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7=15318]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_1=15622]="TENNIS_MASTERS_LIVE_MAPPING_V2_1",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_2=15623]="TENNIS_MASTERS_LIVE_MAPPING_V2_2",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_3=15624]="TENNIS_MASTERS_LIVE_MAPPING_V2_3",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_4=15625]="TENNIS_MASTERS_LIVE_MAPPING_V2_4",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_5=15626]="TENNIS_MASTERS_LIVE_MAPPING_V2_5",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_6=15627]="TENNIS_MASTERS_LIVE_MAPPING_V2_6",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_7=15628]="TENNIS_MASTERS_LIVE_MAPPING_V2_7",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_8=15632]="TENNIS_MASTERS_LIVE_MAPPING_V2_8",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_9=15633]="TENNIS_MASTERS_LIVE_MAPPING_V2_9",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_10=15634]="TENNIS_MASTERS_LIVE_MAPPING_V2_10",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_11=15635]="TENNIS_MASTERS_LIVE_MAPPING_V2_11",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_12=15636]="TENNIS_MASTERS_LIVE_MAPPING_V2_12",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_13=15637]="TENNIS_MASTERS_LIVE_MAPPING_V2_13",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_14=15638]="TENNIS_MASTERS_LIVE_MAPPING_V2_14",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_15=15641]="TENNIS_MASTERS_LIVE_MAPPING_V2_15",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_16=15642]="TENNIS_MASTERS_LIVE_MAPPING_V2_16",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_17=15643]="TENNIS_MASTERS_LIVE_MAPPING_V2_17",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_18=15644]="TENNIS_MASTERS_LIVE_MAPPING_V2_18",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_19=15645]="TENNIS_MASTERS_LIVE_MAPPING_V2_19",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_20=15646]="TENNIS_MASTERS_LIVE_MAPPING_V2_20",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_21=15647]="TENNIS_MASTERS_LIVE_MAPPING_V2_21",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_22=15648]="TENNIS_MASTERS_LIVE_MAPPING_V2_22",e[e.TENNIS_WTA_LIVE_MAPPING_V2_1=15322]="TENNIS_WTA_LIVE_MAPPING_V2_1",e[e.TENNIS_WTA_LIVE_MAPPING_V2_2=15323]="TENNIS_WTA_LIVE_MAPPING_V2_2",e[e.TENNIS_WTA_LIVE_MAPPING_V2_3=15324]="TENNIS_WTA_LIVE_MAPPING_V2_3",e[e.TENNIS_WTA_LIVE_MAPPING_V2_4=15325]="TENNIS_WTA_LIVE_MAPPING_V2_4",e[e.TENNIS_WTA_LIVE_MAPPING_V2_5=15326]="TENNIS_WTA_LIVE_MAPPING_V2_5",e[e.TENNIS_WTA_LIVE_MAPPING_V2_6=15327]="TENNIS_WTA_LIVE_MAPPING_V2_6",e[e.TENNIS_WTA_LIVE_MAPPING_V2_7=15328]="TENNIS_WTA_LIVE_MAPPING_V2_7"}(S||(S={})),function(e){e.MONEYLINE="Moneyline"}(t||(t={})),function(e){e.ASIAN_HANDICAP="Asian Handicap",e.GAME_SPREAD="Game Spread",e.POINT_SPREAD="Point Spread",e.RUN_LINE="Run Line",e.PUCK_LINE="Puck Line"}(p||(p={})),function(e){e.TOTAL_GAMES="Total Games",e.TOTAL_GOALS="Total Goals",e.TOTAL_POINTS="Total Points",e.TOTAL_RUNS="Total Runs"}(l||(l={})),function(e){e.POINTS="points",e.GOALS="goals",e.ROUNDS="rounds",e.SETS="sets",e.EMPTY=""}(s||(s={})),function(e){e.OVERTIME="overtime",e.REGULAR="regular",e.EMPTY=""}(T||(T={})),function(e){e.QUARTER="quarter",e.HALF="half",e.PERIOD="period",e.ROUND="round",e.INNING="inning",e.SET="set",e.EMPTY=""}(N||(N={})),function(e){e.RUNDOWN="rundown",e.ENETPULSE="enetpulse",e.JSONODDS="jsonOdds",e.OPTICODDS="opticOdds",e.EMPTY=""}(I||(I={}));var c=((n={})[S.NCAAF]={sport:L.FOOTBALL,id:S.NCAAF,label:"NCAA Football",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.NFL]={sport:L.FOOTBALL,id:S.NFL,label:"NFL",opticOddsName:"NFL",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.MLB]={sport:L.BASEBALL,id:S.MLB,label:"MLB",opticOddsName:"MLB",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.INNING,isDrawAvailable:!1},n[S.NBA]={sport:L.BASKETBALL,id:S.NBA,label:"NBA",opticOddsName:"NBA",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.NCAAB]={sport:L.BASKETBALL,id:S.NCAAB,label:"NCAA Basketball",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.NHL]={sport:L.HOCKEY,id:S.NHL,label:"NHL",opticOddsName:"NHL",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.OVERTIME,periodType:N.PERIOD,isDrawAvailable:!1},n[S.UFC]={sport:L.FIGHTING,id:S.UFC,label:"UFC",provider:I.OPTICODDS,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[S.WNBA]={sport:L.BASKETBALL,id:S.WNBA,label:"WNBA",opticOddsName:"WNBA",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.MLS]={sport:L.SOCCER,id:S.MLS,label:"MLS",opticOddsName:"USA - Major League Soccer",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.EPL]={sport:L.SOCCER,id:S.EPL,label:"EPL",opticOddsName:"England - Premier League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.LIGUE_ONE]={sport:L.SOCCER,id:S.LIGUE_ONE,label:"Ligue 1",opticOddsName:"France - Ligue 1",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.BUNDESLIGA]={sport:L.SOCCER,id:S.BUNDESLIGA,label:"Bundesliga",opticOddsName:"Germany - Bundesliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.LA_LIGA]={sport:L.SOCCER,id:S.LA_LIGA,label:"La Liga",opticOddsName:"Spain - La Liga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SERIE_A]={sport:L.SOCCER,id:S.SERIE_A,label:"Serie A",opticOddsName:"Italy - Serie A",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.UEFA_CL]={sport:L.SOCCER,id:S.UEFA_CL,label:"UEFA Champions League",opticOddsName:"UEFA - Champions League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.UEFA_EL]={sport:L.SOCCER,id:S.UEFA_EL,label:"UEFA Europa League",opticOddsName:"UEFA - Europa League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.FIFA_WC]={sport:L.SOCCER,id:S.FIFA_WC,label:"FIFA World Cup Qualifiers",provider:I.OPTICODDS,opticOddsName:"FIFA - World Cup Qualifiers",scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.J1_LEAGUE]={sport:L.SOCCER,id:S.J1_LEAGUE,label:"J1 League",opticOddsName:"Japan - J1 League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.IPL]={sport:L.CRICKET,id:S.IPL,label:"Indian Premier League",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:T.EMPTY,periodType:N.INNING,isDrawAvailable:!1},n[S.T20_BLAST]={sport:L.CRICKET,id:S.T20_BLAST,label:"T20 Blast",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:T.EMPTY,periodType:N.INNING,isDrawAvailable:!1},n[S.IIHF_WORLD_CHAMPIONSHIP]={sport:L.HOCKEY,id:S.IIHF_WORLD_CHAMPIONSHIP,label:"IIHF World Championship",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},n[S.COPA_AMERICA]={sport:L.SOCCER,id:S.COPA_AMERICA,label:"Copa America",opticOddsName:"CONMEBOL - Copa America",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.COPA_LIBERTADORES]={sport:L.SOCCER,id:S.COPA_LIBERTADORES,label:"Copa Libertadores",opticOddsName:"CONMEBOL - Copa Libertadores",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.UEFA_EURO]={sport:L.SOCCER,id:S.UEFA_EURO,label:"UEFA EURO 2024",opticOddsName:"UEFA - European Championship",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.EREDIVISIE]={sport:L.SOCCER,id:S.EREDIVISIE,label:"Eredivisie",opticOddsName:"Netherlands - Eredivisie",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.PRIMEIRA_LIGA]={sport:L.SOCCER,id:S.PRIMEIRA_LIGA,label:"Primeira Liga",opticOddsName:"Portugal - Primeira Liga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SUMMER_OLYMPICS_SOCCER_WOMEN]={sport:L.SOCCER,id:S.SUMMER_OLYMPICS_SOCCER_WOMEN,label:"Olympic Games Soccer Women",opticOddsName:"Olympics Soccer Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SUMMER_OLYMPICS_SOCCER]={sport:L.SOCCER,id:S.SUMMER_OLYMPICS_SOCCER,label:"Olympic Games Soccer",opticOddsName:"Olympics Soccer Men",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.FIFA_WC_WOMEN]={sport:L.SOCCER,id:S.FIFA_WC_WOMEN,label:"FIFA World Cup Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.ENGLAND_CUP]={sport:L.SOCCER,id:S.ENGLAND_CUP,label:"FA Cup",opticOddsName:"England - FA Cup",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.FRANCE_CUP]={sport:L.SOCCER,id:S.FRANCE_CUP,label:"Coupe de France",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SPAIN_CUP]={sport:L.SOCCER,id:S.SPAIN_CUP,label:"Copa del Rey",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.ITALY_CUP]={sport:L.SOCCER,id:S.ITALY_CUP,label:"Coppa Italia",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.TENNIS_WTA]={sport:L.TENNIS,id:S.TENNIS_WTA,label:"WTA Events",opticOddsName:"WTA",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.TENNIS_GS]={sport:L.TENNIS,id:S.TENNIS_GS,label:"Grand Slam",opticOddsName:"ATP,WTA",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.TENNIS_MASTERS]={sport:L.TENNIS,id:S.TENNIS_MASTERS,label:"ATP Events",opticOddsName:"ATP",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_TENNIS]={sport:L.TENNIS,id:S.SUMMER_OLYMPICS_TENNIS,label:"Olympic Games Tennis",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.GERMANY_CUP]={sport:L.SOCCER,id:S.GERMANY_CUP,label:"DFB Pokal",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.LIGA_MX]={sport:L.SOCCER,id:S.LIGA_MX,label:"Liga MX",opticOddsName:"Mexico - Liga MX",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.BRAZIL_1]={sport:L.SOCCER,id:S.BRAZIL_1,label:"Serie A",opticOddsName:"Brazil - Serie A",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.UEFA_EURO_U21]={sport:L.SOCCER,id:S.UEFA_EURO_U21,label:"UEFA EURO U21",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.FIFA_WORLD_CUP_U20]={sport:L.SOCCER,id:S.FIFA_WORLD_CUP_U20,label:"FIFA World Cup U20",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SUMMER_OLYMPICS_HANDBALL_WOMEN]={sport:L.HANDBALL,id:S.SUMMER_OLYMPICS_HANDBALL_WOMEN,label:"Olympic Games Handball Women",opticOddsName:"Olympics Handball Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SUMMER_OLYMPICS_HANDBALL]={sport:L.HANDBALL,id:S.SUMMER_OLYMPICS_HANDBALL,label:"Olympic Games Handball",opticOddsName:"Olympics Handball Men",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.EUROLEAGUE]={sport:L.BASKETBALL,id:S.EUROLEAGUE,label:"Euroleague",opticOddsName:"Euroleague",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_BASKETBALL]={sport:L.BASKETBALL,id:S.SUMMER_OLYMPICS_BASKETBALL,label:"Olympic Games Basketball",opticOddsName:"Olympics Basketball Men",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_BASKETBALL_WOMEN]={sport:L.BASKETBALL,id:S.SUMMER_OLYMPICS_BASKETBALL_WOMEN,label:"Olympic Games Basketball Women",opticOddsName:"Olympics Basketball Women",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.FIBA_WORLD_CUP]={sport:L.BASKETBALL,id:S.FIBA_WORLD_CUP,label:"FIBA World Cup",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.FORMULA1]={sport:L.MOTOSPORT,id:S.FORMULA1,label:"Formula 1",provider:I.ENETPULSE,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN]={sport:L.VOLLEYBALL,id:S.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN,label:"Olympic Games Beach Voleyball Women",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_BEACH_VOLEYBALL]={sport:L.VOLLEYBALL,id:S.SUMMER_OLYMPICS_BEACH_VOLEYBALL,label:"Olympic Games Beach Voleyball",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_TABLE_TENNIS]={sport:L.TABLE_TENNIS,id:S.SUMMER_OLYMPICS_TABLE_TENNIS,label:"Olympic Games Table Tennis",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.MOTOGP]={sport:L.MOTOSPORT,id:S.MOTOGP,label:"MotoGP",provider:I.ENETPULSE,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[S.SAUDI_PROFESSIONAL_LEAGUE]={sport:L.SOCCER,id:S.SAUDI_PROFESSIONAL_LEAGUE,label:"Saudi Professional League",opticOddsName:"Saudi Arabia - Saudi League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SUMMER_OLYMPICS_WATERPOLO]={sport:L.WATERPOLO,id:S.SUMMER_OLYMPICS_WATERPOLO,label:"Olympic Games Water Polo",opticOddsName:"Olympics Water Polo",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.QUARTER,isDrawAvailable:!0},n[S.SUMMER_OLYMPICS_VOLEYBALL_WOMEN]={sport:L.VOLLEYBALL,id:S.SUMMER_OLYMPICS_VOLEYBALL_WOMEN,label:"Olympic Games Volleyball Women",opticOddsName:"Olympics Volleyball Women",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_VOLEYBALL]={sport:L.VOLLEYBALL,id:S.SUMMER_OLYMPICS_VOLEYBALL,label:"Olympic Games Volleyball",opticOddsName:"Olympics Volleyball Men",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:T.REGULAR,periodType:N.SET,isDrawAvailable:!1},n[S.BOXING]={sport:L.FIGHTING,id:S.BOXING,label:"Boxing",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_RUGBY]={sport:L.RUGBY,id:S.SUMMER_OLYMPICS_RUGBY,label:"Olympic Games Rugby",opticOddsName:"Olympics Rugby 7s Men",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SUMMER_OLYMPICS_RUGBY_WOMEN]={sport:L.RUGBY,id:S.SUMMER_OLYMPICS_RUGBY_WOMEN,label:"Olympic Games Rugby Women",opticOddsName:"Olympics Rugby 7s Women",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SUMMER_OLYMPICS_HOCKEY_WOMEN]={sport:L.HOCKEY,id:S.SUMMER_OLYMPICS_HOCKEY_WOMEN,label:"Olympic Games Hockey Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},n[S.SUMMER_OLYMPICS_HOCKEY]={sport:L.HOCKEY,id:S.SUMMER_OLYMPICS_HOCKEY,label:"Olympic Games Hockey",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.PERIOD,isDrawAvailable:!0},n[S.UEFA_NATIONS_LEAGUE]={sport:L.SOCCER,id:S.UEFA_NATIONS_LEAGUE,label:"UEFA Nations League",provider:I.OPTICODDS,opticOddsName:"UEFA - Nations League",scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.CONCACAF_NATIONS_LEAGUE]={sport:L.SOCCER,id:S.CONCACAF_NATIONS_LEAGUE,label:"CONCACAF Nations League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.CSGO]={sport:L.ESPORTS,id:S.CSGO,label:"CS GO",opticOddsName:"CS2",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[S.DOTA2]={sport:L.ESPORTS,id:S.DOTA2,label:"DOTA 2",opticOddsName:"Dota 2",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_BASKETBALL_3X3]={sport:L.BASKETBALL,id:S.SUMMER_OLYMPICS_BASKETBALL_3X3,label:"Olympic Games Basketball 3x3",opticOddsName:"Olympics Basketball 3x3 Men",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN]={sport:L.BASKETBALL,id:S.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN,label:"Olympic Games Basketball 3x3 Women",opticOddsName:"Olympics Basketball 3x3 Women",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.SUMMER_OLYMPICS_QUALIFICATION]={sport:L.BASKETBALL,id:S.SUMMER_OLYMPICS_QUALIFICATION,label:"Summer Olympics Basketball Qualification",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.LOL]={sport:L.ESPORTS,id:S.LOL,label:"LOL",opticOddsName:"League of Legends",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[S.CONMEBOL_WC_QUALIFICATIONS]={sport:L.SOCCER,id:S.CONMEBOL_WC_QUALIFICATIONS,label:"CONMEBOL WC Qualification",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.UEFA_CONFERENCE_LEAGUE]={sport:L.SOCCER,id:S.UEFA_CONFERENCE_LEAGUE,label:"UEFA Conference League",opticOddsName:"UEFA - Europa Conference League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.NON_TITLE_BOXING]={sport:L.FIGHTING,id:S.NON_TITLE_BOXING,label:"Boxing",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:T.EMPTY,periodType:N.ROUND,isDrawAvailable:!1},n[S.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:S.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION,label:"UEFA Champions League Qualification",opticOddsName:"UEFA - Champions League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.UEFA_EUROPA_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:S.UEFA_EUROPA_LEAGUE_QUALIFICATION,label:"UEFA Europa League Qualification",opticOddsName:"UEFA - Europa League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.UEFA_CONFERENCE_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:S.UEFA_CONFERENCE_LEAGUE_QUALIFICATION,label:"UEFA Conference League Qualification",opticOddsName:"UEFA - Europa Conference League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.US_ELECTION]={sport:L.POLITICS,id:S.US_ELECTION,label:"US Election 2024",provider:I.EMPTY,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[S.UEFA_SUPER_CUP]={sport:L.SOCCER,id:S.UEFA_SUPER_CUP,label:"UEFA Super Cup",opticOddsName:"UEFA - Super Cup",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.BRAZIL_CUP]={sport:L.SOCCER,id:S.BRAZIL_CUP,label:"Copa do Brasil",opticOddsName:"Brazil - Copa do Brasil",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.ENGLAND_CHAMPIONSHIP]={sport:L.SOCCER,id:S.ENGLAND_CHAMPIONSHIP,label:"EFL Championship",opticOddsName:"England - Championship",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SCOTLAND_PREMIERSHIP]={sport:L.SOCCER,id:S.SCOTLAND_PREMIERSHIP,label:"Scotland Premiership",opticOddsName:"Scotland - Premiership",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.BELGIUM_LEAGUE]={sport:L.SOCCER,id:S.BELGIUM_LEAGUE,label:"Belgium Jupiler Pro League",opticOddsName:"Belgium - Jupiler Pro League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.CZECH_LEAGUE]={sport:L.SOCCER,id:S.CZECH_LEAGUE,label:"Czech Republic FNL",opticOddsName:"Czech Republic - FNL",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.CHILE_PRIMERA]={sport:L.SOCCER,id:S.CHILE_PRIMERA,label:"Chile Primera Division",opticOddsName:"Chile - Primera Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.FINLAND_LEAGUE]={sport:L.SOCCER,id:S.FINLAND_LEAGUE,label:"Finland Veikkausliiga",opticOddsName:"Finland - Veikkausliiga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.ARGENTINA_PRIMERA]={sport:L.SOCCER,id:S.ARGENTINA_PRIMERA,label:"Argentina Primera Division",opticOddsName:"Argentina - Primera Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.RUSSIA_PREMIER]={sport:L.SOCCER,id:S.RUSSIA_PREMIER,label:"Russia Premier League",opticOddsName:"Russia - Premier League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.TURKEY_SUPER_LEAGUE]={sport:L.SOCCER,id:S.TURKEY_SUPER_LEAGUE,label:"Turkey Super Lig",opticOddsName:"Turkey - Super Lig",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SERBIA_SUPER_LEAGUE]={sport:L.SOCCER,id:S.SERBIA_SUPER_LEAGUE,label:"Serbia Super Liga",opticOddsName:"Serbia - Super Liga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.GREECE_SUPER_LEAGUE]={sport:L.SOCCER,id:S.GREECE_SUPER_LEAGUE,label:"Greece Super League",opticOddsName:"Greece - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.INDIA_PREMIER]={sport:L.SOCCER,id:S.INDIA_PREMIER,label:"India Calcutta Premier Division",opticOddsName:"India - Calcutta Premier Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.CHINA_SUPER_LEAGUE]={sport:L.SOCCER,id:S.CHINA_SUPER_LEAGUE,label:"China Super League",opticOddsName:"China - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.AUSTRALIA_A_LEAGUE]={sport:L.SOCCER,id:S.AUSTRALIA_A_LEAGUE,label:"Australia A-League",opticOddsName:"Australia - A-League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SWITZERLAND_SUPER_LEAGUE]={sport:L.SOCCER,id:S.SWITZERLAND_SUPER_LEAGUE,label:"Switzerland Super League",opticOddsName:"Switzerland - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.BUNDESLIGA_2]={sport:L.SOCCER,id:S.BUNDESLIGA_2,label:"Bundesliga 2",opticOddsName:"Germany - Bundesliga 2",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.LA_LIGA_2]={sport:L.SOCCER,id:S.LA_LIGA_2,label:"La Liga 2",opticOddsName:"Spain - La Liga 2",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SERIE_B]={sport:L.SOCCER,id:S.SERIE_B,label:"Serie B",opticOddsName:"Italy - Serie B",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.INDIA_SUPER_LEAGUE]={sport:L.SOCCER,id:S.INDIA_SUPER_LEAGUE,label:"India Super League",opticOddsName:"India - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.LIGUE_2]={sport:L.SOCCER,id:S.LIGUE_2,label:"Ligue 2",opticOddsName:"France - Ligue 2",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.AUSTRIA_BUNDESLIGA]={sport:L.SOCCER,id:S.AUSTRIA_BUNDESLIGA,label:"Austria Bundesliga",opticOddsName:"Austria - Bundesliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.DENMARK_SUPER_LEAGUE]={sport:L.SOCCER,id:S.DENMARK_SUPER_LEAGUE,label:"Denmark Superliga",opticOddsName:"Denmark - Superliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.POLAND_LEAGUE]={sport:L.SOCCER,id:S.POLAND_LEAGUE,label:"Poland Ekstraklasa",opticOddsName:"Poland - Ekstraklasa",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.SWEDEN_LEAGUE]={sport:L.SOCCER,id:S.SWEDEN_LEAGUE,label:"Sweden Allsvenskan",opticOddsName:"Sweden - Allsvenskan",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.COLOMBIA_PRIMERA_A]={sport:L.SOCCER,id:S.COLOMBIA_PRIMERA_A,label:"Colombia Primera A",opticOddsName:"Colombia - Primera A",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.ENGLAND_EFL_CUP]={sport:L.SOCCER,id:S.ENGLAND_EFL_CUP,label:"England EFL Cup",opticOddsName:"England - EFL Cup",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.ENGLAND_LEGAUE_1]={sport:L.SOCCER,id:S.ENGLAND_LEGAUE_1,label:"England League 1",opticOddsName:"England - League 1",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.URUGUAY_PRIMERA_DIVISION]={sport:L.SOCCER,id:S.URUGUAY_PRIMERA_DIVISION,label:"Uruguay Primera Division",opticOddsName:"Uruguay - Primera Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:T.REGULAR,periodType:N.HALF,isDrawAvailable:!0},n[S.EUROCUP]={sport:L.BASKETBALL,id:S.EUROCUP,label:"Eurocup",opticOddsName:"Eurocup",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:T.OVERTIME,periodType:N.QUARTER,isDrawAvailable:!1},n[S.GOLF_H2H]={sport:L.GOLF,id:S.GOLF_H2H,label:"Golf head-to-head",provider:I.JSONODDS,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n[S.GOLF_WINNER]={sport:L.GOLF,id:S.GOLF_WINNER,label:"Golf Tournament Winner",provider:I.JSONODDS,scoringType:s.EMPTY,matchResolveType:T.EMPTY,periodType:N.EMPTY,isDrawAvailable:!1},n),M=[S.CSGO,S.DOTA2,S.LOL,S.TENNIS_GS,S.TENNIS_MASTERS,S.SUMMER_OLYMPICS_TENNIS,S.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1,S.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2,S.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3,S.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4,S.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5,S.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6,S.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7,S.TENNIS_MASTERS_LIVE_MAPPING_V2_1,S.TENNIS_MASTERS_LIVE_MAPPING_V2_2,S.TENNIS_MASTERS_LIVE_MAPPING_V2_3,S.TENNIS_MASTERS_LIVE_MAPPING_V2_4,S.TENNIS_MASTERS_LIVE_MAPPING_V2_5,S.TENNIS_MASTERS_LIVE_MAPPING_V2_6,S.TENNIS_MASTERS_LIVE_MAPPING_V2_7,S.TENNIS_MASTERS_LIVE_MAPPING_V2_8,S.TENNIS_MASTERS_LIVE_MAPPING_V2_9,S.TENNIS_MASTERS_LIVE_MAPPING_V2_10,S.TENNIS_MASTERS_LIVE_MAPPING_V2_11,S.TENNIS_MASTERS_LIVE_MAPPING_V2_12,S.TENNIS_MASTERS_LIVE_MAPPING_V2_13,S.TENNIS_MASTERS_LIVE_MAPPING_V2_14,S.TENNIS_MASTERS_LIVE_MAPPING_V2_15,S.TENNIS_MASTERS_LIVE_MAPPING_V2_16,S.TENNIS_MASTERS_LIVE_MAPPING_V2_17,S.TENNIS_MASTERS_LIVE_MAPPING_V2_18,S.TENNIS_MASTERS_LIVE_MAPPING_V2_19,S.TENNIS_MASTERS_LIVE_MAPPING_V2_20,S.TENNIS_MASTERS_LIVE_MAPPING_V2_21,S.TENNIS_MASTERS_LIVE_MAPPING_V2_22,S.TENNIS_WTA_LIVE_MAPPING_V2_1,S.TENNIS_WTA_LIVE_MAPPING_V2_2,S.TENNIS_WTA_LIVE_MAPPING_V2_3,S.TENNIS_WTA_LIVE_MAPPING_V2_4,S.TENNIS_WTA_LIVE_MAPPING_V2_5,S.TENNIS_WTA_LIVE_MAPPING_V2_6,S.TENNIS_WTA_LIVE_MAPPING_V2_7],C=[S.SUMMER_OLYMPICS_RUGBY,S.SUMMER_OLYMPICS_RUGBY_WOMEN],U=[S.NCAAF,S.NFL,S.MLB,S.NBA,S.NCAAB,S.NHL,S.WNBA,S.MLS,S.IPL,S.T20_BLAST],u=[701,702,703,704],m={1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21},G={320:18,6:24,33:33,16:42,44:44,45:45,11:47,50:50,12:53,13:54,15:55,57:57,61:61,65:65,66:66,17:73,76:76,14:87,152:152,153:153,156:156,158:158,132:132,134:134,138:138,141:141,209:209,230:230,268:268,288:288,296:296,310:310,319:319,322:322,327:327,380:380,381:381,399:399,406:406,407:407,409:409,445:445,453:453,454:454,497:497,536:536,8881:8881,8893:8893,8894:8894,8910:8910,9196:9196,9578:9578,9588:9588,9698:9698,9699:9699,9806:9806,9821:9821,9977:9977,9983:9983,10071:10071,10072:10072,10502:10502,10138:10138,10199:10199,10216:10216,10595:10595,10611:10611,10613:10613,10615:10615},y={1:"NCAAF",2:"NFL",3:"MLB",6:"NHL",7:"UFC",8:"WNBA",10:"USA - Major League Soccer",11:"England - Premier League",12:"France - Ligue 1",13:"Germany - Bundesliga",14:"Spain - La Liga",15:"Italy - Serie A",16:"UEFA - Champions League",17:"UEFA - Europa League",18:"FIFA - World Cup Qualifiers",19:"Japan - J1 League",45:"CONMEBOL - Copa Libertadores",57:"Netherlands - Eredivisie",61:"Portugal - Primeira Liga",230:"Mexico - Liga MX",268:"Brazil - Serie A",399:"Euroleague",536:"Saudi Arabia - Saudi League",9806:"UEFA - Nations League",9977:"CS2",9983:"Dota 2",10138:"League of Legends",10216:"UEFA - Europa Conference League",20001:"UEFA - Super Cup",20002:"Brazil - Copa do Brasil",20011:"England - Championship",20101:"Scotland - Premiership",20102:"Belgium - Jupiler Pro League",20103:"Czech Republic - FNL",20104:"Chile - Primera Division",20105:"Finland - Veikkausliiga",20106:"Argentina - Primera Division",20107:"Russia - Premier League",20108:"Turkey - Super Lig",20109:"Serbia - Super Liga",20110:"Greece - Super League",20111:"India - Calcutta Premier Division",20112:"China - Super League",20113:"Australia - A-League",20114:"Switzerland - Super League",20115:"Germany - Bundesliga 2",20116:"Spain - La Liga 2",20117:"Italy - Serie B",20118:"India - Super League",20119:"France - Ligue 2",20120:"Austria - Bundesliga",20121:"Denmark - Superliga",20122:"Poland - Ekstraklasa",20123:"Sweden - Allsvenskan",20124:"Colombia - Primera A",20125:"England - EFL Cup",20126:"England - League 1",20127:"Uruguay - Primera Division",20200:"Eurocup"},v=function(e){var r=c[e];return r?r.sport:L.EMPTY},D=function(e){var r=c[e];return r?r.label:""},g=function(e){var r=c[e];return r?r.provider:""},b=function(e){var r=c[e];return!!r&&r.isDrawAvailable},F=function(e){return e.filter((function(e){return"true"===e.enabled})).map((function(e){return Number(e.sportId)}))},V=function(e,r){return r.filter((function(r){return Number(r.sportId)===e&&"true"===r.enabled})).map((function(e){return e.marketName}))},h=function(e){var r=c[e];return r?r.opticOddsName:void 0},B=function(e){var r=c[e];return r?r.periodType:""},f=function(e,r){return r.filter((function(r){return Number(r.sportId)===e&&"Spread"===r.type&&"true"===r.enabled})).map((function(e){return e.marketName.toLowerCase()}))},w=function(e,r){return r.filter((function(r){return Number(r.sportId)===e&&"Total"===r.type&&"true"===r.enabled})).map((function(e){return e.marketName.toLowerCase()}))},H=function(e,r,a,E,i,o){var A,_;if(M.includes(e)?(A=E.toLowerCase()==r.toLowerCase()||E.toLowerCase()==a.toLowerCase(),_=i.toLowerCase()==r.toLowerCase()||i.toLowerCase()==a.toLowerCase()):(A=E.toLowerCase()==r.toLowerCase(),_=i.toLowerCase()==a.toLowerCase()),!0!==A){var L=o.get(E.toLowerCase()),S=o.get(r.toLowerCase()),t=o.get(a.toLowerCase());if([L,S].some((function(e){return null==e})))return!1;A=M.includes(e)?L==S||L==t:L==S}if(!0!==_){var p=o.get(i.toLowerCase());if(S=o.get(r.toLowerCase()),[p,t=o.get(a.toLowerCase())].some((function(e){return null==e})))return!1;_=M.includes(e)&&p==S||p==t}return A&&_},Y=function(e,r,a,E){var i;if(v(a)==L.TENNIS){var o=r.getTime(),A=e.getTime();i=Math.abs(A-o)<=Number(60*E*1e3)}else i=r.toUTCString()==e.toUTCString();return i},W=0,k="Draw",K=1e5,Q=.2,X=10001,j=10002,z=100,Z={OPEN:0,PAUSED:1,IN_PROGRESS:3,FINISHED:8,RESOLVED:10,CANCELED:255},x=function(e,r,a){if(e.some((function(e){return 0===e})))return e;var E=e.reduce((function(e,r){return e+r}),0);if(E<=1)return Array(e.length).fill(0);if(0===a){if(!(r>100*(E-1)))return e;a=r}var i=1+a/100,o=i/E,A=e.map((function(e){return e*o}));if(A.some((function(e){return e>=1})))return Array(e.length).fill(0);var _=A.reduce((function(e,r){return e+r}),0);if(_<1)return Array(e.length).fill(0);var L=i/_;return A.map((function(e){return e*L}))},J=function(e,r,a,E){var i=e.find((function(e){return Number(e.typeId)===Number(a)&&Number(e.sportId)===Number(r)}));return i?{minSpread:i.minSpread?Number(i.minSpread):E,targetSpread:i.targetSpread?Number(i.targetSpread):0}:{minSpread:E,targetSpread:0}},q=function(e){return e===W?0:$("decimal","impliedProbability",e)},$=function(e,r,a){try{return O(e,a).to(r)}catch(e){return 0}},ee=function(e,r,a,E,i){var o=new Map;return a.forEach((function(a){var A=0,_=e.filter((function(e){return e&&e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===E.homeTeam.toLowerCase()}));0!==_.length&&(A=_[0].price);var L=0,S=e.filter((function(e){return e&&e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===E.awayTeam.toLowerCase()}));0!==S.length&&(L=S[0].price);var t=0;if(!i){var p=e.filter((function(e){return e&&e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===k.toLowerCase()}));0!==p.length&&(t=p[0].price)}o.set(a.toLowerCase(),{homeOdds:A,awayOdds:L,drawOdds:t})})),o},re=function(e,r,a,E,i,o,A){var _={homeTeam:E.home_team,awayTeam:E.away_team},L=ee(E.odds,t.MONEYLINE,a,_,e),S=R(L,a,e,A,Q);if(S.errorMessage)return{odds:e?[0,0]:[0,0,0],errorMessage:S.errorMessage};var p=(e?[S.homeOdds,S.awayOdds]:[S.homeOdds,S.awayOdds,S.drawOdds]).map((function(e){return q(e)})),l=J(r,i,K,o);return{odds:p=null!==l?x(p,l.minSpread,l.targetSpread):x(p,o,0)}},ae=function(e,r,a){return e.filter((function(e){return r.includes(e.market_name.toLowerCase())&&e.sports_book_name.toLowerCase()==a.toLowerCase()}))},Ee=function(e,r,a,E,i,o){var A=[],_=e.filter((function(e){return e&&.5===Math.abs(e.selection_points%1)}));return ie(_,r).forEach((function(e){var r=e.line,_=e.odds,L=q(_[0])||W,S=q(_[1])||W,t=L===W||S===W;if(!t){var p,l=J(E,a,i,o);null!==l?(p=x([L,S],l.minSpread,l.targetSpread)).some((function(e){return e===W}))?t=!0:(L=p[0],S=p[1]):(p=x([L,S],o,0)).some((function(e){return e===W}))?t=!0:(L=p[0],S=p[1])}var s=process.env.MIN_ODDS_FOR_CHILD_MARKETS_FOR_LIVE,T=process.env.MAX_ODDS_FOR_CHILD_MARKETS_FOR_LIVE;s&&T&&(L>=s||L<=T||S>=s||S<=T)||A.push({leagueId:a,typeId:i,type:"spread",results:[],status:t?Z.PAUSED:Z.OPEN,line:r,odds:[L,S]})})),A},ie=function(e,r){var a=e.reduce((function(e,a){var E=a.selection_points,i=a.price,o=a.selection===r.homeTeam,A=o?E:-E;return e[A]||(e[A]={home:null,away:null}),o?e[A].home=i:e[A].away=i,e}),{}),E=Object.entries(a).reduce((function(e,r){var a=r[0],E=r[1],i=parseFloat(a);return null!==E.home&&null!==E.away&&e.push({line:i,odds:[E.home,E.away]}),e}),[]);return E},oe=function(e,r,a,E,i){var o=[],A=e.filter((function(e){return e&&.5===Math.abs(e.selection_points%1)})),_=Ae(A);return Object.entries(_).forEach((function(e){var A=e[0],_=e[1],L=_.over,S=_.under,t=A.split("_"),p=(t[0],t[1]),l=q(L)||W,s=q(S)||W,T=l===W||s===W;if(!T){var N,I=J(a,r,E,i);null!==I?(N=x([l,s],I.minSpread,I.targetSpread)).some((function(e){return e===W}))?T=!0:(l=N[0],s=N[1]):(N=x([l,s],i,0)).some((function(e){return e===W}))?T=!0:(l=N[0],s=N[1])}var n=process.env.MIN_ODDS_FOR_CHILD_MARKETS_FOR_LIVE,O=process.env.MAX_ODDS_FOR_CHILD_MARKETS_FOR_LIVE,d={leagueId:r,typeId:E,type:"total",results:[],status:T?Z.PAUSED:Z.OPEN,line:parseFloat(p),odds:[l,s]};n&&O&&(l>=n||l<=O||s>=n||s<=O)||o.push(d)})),o},Ae=function(e){return e.reduce((function(e,r){if(r){var a="".concat(r.selection,"_").concat(r.selection_points);e[a]||(e[a]={over:null,under:null}),"over"===r.selection_line?e[a].over=r.price:"under"===r.selection_line&&(e[a].under=r.price)}return e}),{})},_e=function(){return _e=Object.assign||function(e){for(var r,a=1,E=arguments.length;a<E;a++)for(var i in r=arguments[a])Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i]);return e},_e.apply(this,arguments)},Le=function(e,r,a,E,i,o,A,_){var L=E.filter((function(r){return r.sportId===String(e.leagueId)})),S=re(!i,L,a,r,e.leagueId,o,A);S.errorMessage?(e.odds=e.odds.map((function(){return{american:0,decimal:0,normalizedImplied:0}})),e.errorMessage=S.errorMessage):e.odds=S.odds.filter((function(e){return 0!=e})).map((function(e){return{american:O("impliedProbability",e).to("moneyline"),decimal:O("impliedProbability",e).to("decimal"),normalizedImplied:e}}));var t=Se(e.leagueId,L,r,a,o,_).map((function(r){var a=_e(_e({},e),r);return a.odds.length>0&&(a.odds=a.odds.map((function(e){return 0==e?{american:0,decimal:0,normalizedImplied:0}:{american:O("impliedProbability",e).to("moneyline"),decimal:O("impliedProbability",e).to("decimal"),normalizedImplied:e}}))),a}));return e.childMarkets=t,e},Se=function(e,r,a,E,i,o){var A=[];return(A=A.concat(te(a,e,r,E,i,o))).concat(pe(a,e,r,E,i,o))},te=function(e,r,a,E,i,o){var A=[],_=f(r,o),L={homeTeam:e.home_team,awayTeam:e.away_team};if(_.length>0){var S=ae(e.odds,_,E[0]);if(S.length>0){var t=Ee(S,L,r,a,X,i);A.push.apply(A,t)}}else console.warn("Spread type for sport ID ".concat(r," not found."));return A},pe=function(e,r,a,E,i,o){var A=[],_=w(r,o);if(_.length>0){var L=ae(e.odds,_,E[0]);L.length>0&&A.push.apply(A,oe(L,r,a,j,i))}else console.warn("Configuration (totals) for sport ID ".concat(r," not found."));return A},le=function(e,r,a){var E=e.score_home_total,i=e.score_away_total,o=e.clock,A=e.period,_=e.status,S=e.home_team,t=e.away_team,p=parseInt(A),l=v(r);return"completed"==_.toLowerCase()?{allow:!1,message:"Blocking game ".concat(S," - ").concat(t," because it is no longer live.")}:l===L.BASKETBALL?se(S,t,p,a.get(L.BASKETBALL)):l===L.HOCKEY?se(S,t,p,a.get(L.HOCKEY)):l===L.BASEBALL?se(S,t,p,a.get(L.BASEBALL)):l===L.SOCCER?Te(S,t,o,A,a.get(L.SOCCER)):l===L.TENNIS?Ne(e,S,t,A,E,i,r,l):l===L.VOLLEYBALL?Ne(e,S,t,p,E,i,r,l):{allow:!0,message:"The sport ".concat(r," does not have constraint")}},se=function(e,r,a,E){return!Number.isNaN(a)&&a>=E?{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to period: ").concat(a,". period")}:{allow:!0,message:""}},Te=function(e,r,a,E,i){var o=Number(a);return!Number.isNaN(o)&&o>=i||Number.isNaN(o)&&"HALF"!=E?{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to clock: ").concat(a,"min")}:{allow:!0,message:""}},Ne=function(e,r,a,E,i,o,A,_){var t=Number(E),p=Ie(t,e),l="atp"==e.league.toLowerCase(),s={home:i,away:o};return _==L.VOLLEYBALL?ne(r,a,p,s,Oe,5==t?Re:de):A.toString().startsWith(S.TENNIS_GS)&&l?ne(r,a,p,s,Pe,Me):A.toString().startsWith(S.TENNIS_GS)&&!l||A.toString().startsWith(S.TENNIS_MASTERS)||A.toString().startsWith(S.SUMMER_OLYMPICS_TENNIS)||A.toString().startsWith(S.TENNIS_WTA)?ne(r,a,p,s,ce,Me):{allow:!0,message:"The sport ".concat(A," does not have result constraint")}},Ie=function(e,r){var a=0,E=0;switch(e){case 1:a=Number(r.score_home_period_1),E=Number(r.score_away_period_1);break;case 2:a=Number(r.score_home_period_2),E=Number(r.score_away_period_2);break;case 3:a=Number(r.score_home_period_3),E=Number(r.score_away_period_3);break;case 4:a=Number(r.score_home_period_4),E=Number(r.score_away_period_4);break;case 5:a=Number(r.score_home_period_5),E=Number(r.score_away_period_5)}return{home:a,away:E}},ne=function(e,r,a,E,i,o){return Number(E.home)!=i&&Number(E.away)!=i||!(Number(E.home)==i&&a.home>=o||Number(E.away)==i&&a.away>=o)?{allow:!0,message:"",currentHomeGameScore:a.home,currentAwayGameScore:a.away}:{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to current result: ").concat(E.home," - ").concat(E.away," (").concat(a.home," - ").concat(a.away,")")}},Oe=2,de=20,Re=10,Pe=2,ce=1,Me=5;return r})()));
1
+ !function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.thalesUtils=r():e.thalesUtils=r()}(this,(()=>(()=>{"use strict";var e={d:(r,a)=>{for(var E in a)e.o(a,E)&&!e.o(r,E)&&Object.defineProperty(r,E,{enumerable:!0,get:a[E]})},o:(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},r={};e.r(r),e.d(r,{AMERICAN_LEAGUES:()=>U,DRAW:()=>K,LEAGUES_NO_FORMAL_HOME_AWAY:()=>M,LEAGUES_NO_LIVE_CONSTRAINTS:()=>C,LIVE_TYPE_ID_BASE:()=>Q,League:()=>t,LeagueIdMapEnetpulse:()=>G,LeagueIdMapOpticOdds:()=>y,LeagueIdMapRundown:()=>m,LeagueMap:()=>P,MIN_ODDS_FOR_DIFF_CHECKING:()=>j,MULTIPLIER_100:()=>Z,MatchResolveType:()=>N,MoneylineTypes:()=>S,PeriodType:()=>T,Provider:()=>I,ScoringType:()=>s,Sport:()=>L,SpreadTypes:()=>p,TAG_CHILD_SPREAD:()=>X,TAG_CHILD_TOTALS:()=>z,TotalTypes:()=>l,UFC_LEAGUE_IDS:()=>u,ZERO:()=>k,adjustSpreadOnChildOdds:()=>Le,adjustSpreadOnOdds:()=>x,allowGameSportWithPeriodConstraint:()=>le,allowGameSportWithResultConstraint:()=>Ne,allowSoccerGame:()=>se,calculateImpliedOddsDifference:()=>c,checkGameContraints:()=>pe,checkOddsFromBookmakers:()=>R,createChildMarkets:()=>ie,fetchResultInCurrentSet:()=>Te,filterOddsByMarketNameBookmaker:()=>oe,filterOddsByMarketNameTeamNameBookmaker:()=>ae,gamesDatesMatching:()=>W,getBetTypesForLeague:()=>h,getBookmakersArray:()=>O,getLeagueInfo:()=>V,getLeagueIsDrawAvailable:()=>b,getLeagueLabel:()=>D,getLeagueOpticOddsName:()=>B,getLeaguePeriodType:()=>w,getLeagueProvider:()=>g,getLeagueSport:()=>v,getLeagueSpreadTypes:()=>f,getLeagueTotalTypes:()=>Y,getLiveSupportedLeagues:()=>F,getParentOdds:()=>Ee,getSpreadData:()=>J,groupAndFormatSpreadOdds:()=>Ae,groupOddsBySelectionAndPoints:()=>_e,processMarket:()=>Se,teamNamesMatching:()=>H}),"function"!=typeof Object.assign&&(Object.assign=function(e,r){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var a=Object(e),E=1;E<arguments.length;E++){var i=arguments[E];if(null!=i)for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(a[o]=i[o])}return a});var a=function(e){return parseFloat(e.toPrecision(12))};function E(e,r,a){return void 0===a||0==+a?Math[e](r):(r=+r,a=+a,isNaN(r)||"number"!=typeof a||a%1!=0?NaN:r<0?-E(e,-r,a):(r=r.toString().split("e"),+((r=(r=Math[e](+(r[0]+"e"+(r[1]?+r[1]-a:-a)))).toString().split("e"))[0]+"e"+(r[1]?+r[1]+a:a))))}var i,o,A={decimal:{from:function(e){if((e=parseFloat(e))<=1)throw new Error("Outside valid range.");return e},to:function(){return this.decimalValue}},moneyline:{from:function(e){return(e=parseFloat(e))>=0?e/100+1:100/-e+1},to:function(){return this.decimalValue>=2?a(100*(this.decimalValue-1)):a(-100/(this.decimalValue-1))}},hongKong:{from:function(e){if((e=parseFloat(e))<0)throw new Error("Outside valid range.");return e+1},to:function(){return a(this.decimalValue-1)}},impliedProbability:{from:function(e){if((e="string"==typeof e&&"%"==e.slice(-1)?parseFloat(e)/100:parseFloat(e))<=0||e>=1)throw new Error("Outside valid range");return 1/e},to:function(e){if(e.percentage){var r=a(100/this.decimalValue);return null!==e.precision&&(r=E("round",r,-e.precision)),r.toString()+"%"}return a(1/this.decimalValue)}},fractional:{from:function(e){var r,a=e.toString().split("/");if(e=parseFloat(a[0]),2===a.length)r=parseFloat(a[1]);else{if(1!==a.length)throw new Error("Invalid fraction");r=1}if(0===e||0===r||e/r<=0)throw new Error("Outside valid range");return 1+e/r},to:function(e){return function(e,r){for(var a,E=[0,1],i=[1,0],o=function(e){var r=null,a=e.toString().indexOf("E");-1==a&&(a=e.toString().indexOf("e"));var E=null,i=(r=-1==a?e.toString():e.toString().substring(0,a)).toString().indexOf(".");-1==i?E=r:0===i?E=r.substring(1,r.length):i<r.length&&(E=r.substring(0,i)+r.substring(i+1,r.length));var o=E,A=o.toString().length,_=e,L=_.toString().length;0===_&&(L=0);var t,S=A-L;for(t=S;t>0&&o%2==0;t--)o/=2;for(t=S;t>0&&o%5==0;t--)o/=5;return o}(e),A=e,_=Math.pow(10,-r)/2,L=2;L<1e3;L++){var t=Math.floor(A);if(E[L]=t*E[L-1]+E[L-2],Math.abs(E[L])>o)return;if(i[L]=t*i[L-1]+i[L-2],a=E[L]/i[L],Math.abs(a-e)<_||NaN==a)return E[L].toString()+"/"+i[L].toString();A=1/(A-t)}}(this.decimalValue-1,e.precision||12)}},malay:{from:function(e){if((e=parseFloat(e))<=-1||e>1)throw new Error("Outside valid range.");return e<0&&(e=-1/e),e+1},to:function(){return this.decimalValue<=2?a(this.decimalValue-1):a(-1/(this.decimalValue-1))}},indonesian:{from:function(e){if(0===(e=parseFloat(e)))throw new Error("Outside valid range.");return e>=1?e+1:-1/e+1},to:function(){return this.decimalValue<2?a(-1/(this.decimalValue-1)):a(this.decimalValue-1)}}},_=((o=function(e){if("number"!=typeof e||isNaN(e))throw new Error("Invalid odds");this.decimalValue=a(e)}).prototype=(i=function(){throw new Error("This constructor is private, please use the from* functions")}).prototype,i.from=function(e,r){if(!A.hasOwnProperty(e))throw new Error("Unknown format "+e+".");var a=A[e].from(r);return new o(a)},i);_.prototype.to=function(e,r){if(!A.hasOwnProperty(e))throw new Error("Unknown format "+e+".");r=Object.assign({precision:null,percentage:!1},r);var a=A[e].to.call(this,r);return"number"==typeof a&&null!==r.precision&&(a=E("round",a,-r.precision)),a};var L,t,S,p,l,s,N,T,I,n,d=_.from,O=function(e,r,a){var E=e.find((function(e){return Number(e.sportId)===Number(r)}));if(E){if(""==E.primaryBookmaker)return a;var i=[];return E.primaryBookmaker&&i.push(E.primaryBookmaker),E.secondaryBookmaker&&i.push(E.secondaryBookmaker),E.tertiaryBookmaker&&i.push(E.tertiaryBookmaker),i}return a},R=function(e,r,a,E,i){var o=e.get(r[0]);if(!o)return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds cause no matching bookmakers have been found"};var A=o.homeOdds,_=o.awayOdds,L=a?0:o.drawOdds;if(r.some((function(r){var E=e.get(r);return!!E&&(0===E.homeOdds||0===E.awayOdds||!a&&0===E.drawOdds||1===E.homeOdds||1===E.awayOdds||!a&&1===E.drawOdds)})))return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds cause bookmakers have 0 or 1 odds"};if(1==r.length)return{homeOdds:A,awayOdds:_,drawOdds:a?0:L};if(r.slice(1).some((function(r){var o=e[r];if(o){var t=o.homeOdds,S=o.awayOdds,p=o.drawOdds,l=d("decimal",A).to("impliedProbability"),s=d("decimal",_).to("impliedProbability"),N=a?0:d("decimal",L).to("impliedProbability"),T=d("decimal",t).to("impliedProbability"),I=d("decimal",S).to("impliedProbability"),n=a?0:d("decimal",p).to("impliedProbability"),O=c(l,T),R=c(s,I),P=a?0:c(N,n);if(O>E&&l>i&&T>i||R>E&&s>i&&I>i||!a&&P>E&&N>i&&n>i)return!0}return!1})))return{homeOdds:0,awayOdds:0,drawOdds:0,errorMessage:"Returning zero odds due to percentage difference between bookmakers"};var t=[];return r.forEach((function(r){return t.push(e.get(r))})),{homeOdds:A,awayOdds:_,drawOdds:a?0:L}},c=function(e,r){var a=Math.abs(e-r)/e*100;return console.log("% diff: "+a),a};!function(e){e.SOCCER="Soccer",e.FOOTBALL="Football",e.BASKETBALL="Basketball",e.BASEBALL="Baseball",e.HOCKEY="Hockey",e.FIGHTING="Fighting",e.TENNIS="Tennis",e.ESPORTS="eSports",e.RUGBY="Rugby",e.VOLLEYBALL="Volleyball",e.HANDBALL="Handball",e.WATERPOLO="Waterpolo",e.CRICKET="Cricket",e.MOTOSPORT="Motosport",e.GOLF="Golf",e.TABLE_TENNIS="TableTennis",e.POLITICS="Politics",e.EMPTY=""}(L||(L={})),function(e){e[e.NCAAF=1]="NCAAF",e[e.NFL=2]="NFL",e[e.MLB=3]="MLB",e[e.NBA=4]="NBA",e[e.NCAAB=5]="NCAAB",e[e.NHL=6]="NHL",e[e.UFC=7]="UFC",e[e.WNBA=8]="WNBA",e[e.MLS=10]="MLS",e[e.EPL=11]="EPL",e[e.LIGUE_ONE=12]="LIGUE_ONE",e[e.BUNDESLIGA=13]="BUNDESLIGA",e[e.LA_LIGA=14]="LA_LIGA",e[e.SERIE_A=15]="SERIE_A",e[e.UEFA_CL=16]="UEFA_CL",e[e.UEFA_EL=17]="UEFA_EL",e[e.FIFA_WC=18]="FIFA_WC",e[e.J1_LEAGUE=19]="J1_LEAGUE",e[e.IPL=20]="IPL",e[e.T20_BLAST=21]="T20_BLAST",e[e.IIHF_WORLD_CHAMPIONSHIP=33]="IIHF_WORLD_CHAMPIONSHIP",e[e.COPA_AMERICA=44]="COPA_AMERICA",e[e.COPA_LIBERTADORES=45]="COPA_LIBERTADORES",e[e.UEFA_EURO=50]="UEFA_EURO",e[e.EREDIVISIE=57]="EREDIVISIE",e[e.PRIMEIRA_LIGA=61]="PRIMEIRA_LIGA",e[e.SUMMER_OLYMPICS_SOCCER_WOMEN=65]="SUMMER_OLYMPICS_SOCCER_WOMEN",e[e.SUMMER_OLYMPICS_SOCCER=66]="SUMMER_OLYMPICS_SOCCER",e[e.FIFA_WC_WOMEN=76]="FIFA_WC_WOMEN",e[e.ENGLAND_CUP=132]="ENGLAND_CUP",e[e.FRANCE_CUP=134]="FRANCE_CUP",e[e.SPAIN_CUP=138]="SPAIN_CUP",e[e.ITALY_CUP=141]="ITALY_CUP",e[e.TENNIS_WTA=152]="TENNIS_WTA",e[e.TENNIS_GS=153]="TENNIS_GS",e[e.TENNIS_MASTERS=156]="TENNIS_MASTERS",e[e.SUMMER_OLYMPICS_TENNIS=158]="SUMMER_OLYMPICS_TENNIS",e[e.GERMANY_CUP=209]="GERMANY_CUP",e[e.LIGA_MX=230]="LIGA_MX",e[e.BRAZIL_1=268]="BRAZIL_1",e[e.UEFA_EURO_U21=288]="UEFA_EURO_U21",e[e.FIFA_WORLD_CUP_U20=296]="FIFA_WORLD_CUP_U20",e[e.SUMMER_OLYMPICS_HANDBALL_WOMEN=380]="SUMMER_OLYMPICS_HANDBALL_WOMEN",e[e.SUMMER_OLYMPICS_HANDBALL=381]="SUMMER_OLYMPICS_HANDBALL",e[e.EUROLEAGUE=399]="EUROLEAGUE",e[e.SUMMER_OLYMPICS_BASKETBALL=406]="SUMMER_OLYMPICS_BASKETBALL",e[e.SUMMER_OLYMPICS_BASKETBALL_WOMEN=407]="SUMMER_OLYMPICS_BASKETBALL_WOMEN",e[e.FIBA_WORLD_CUP=409]="FIBA_WORLD_CUP",e[e.FORMULA1=445]="FORMULA1",e[e.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN=453]="SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN",e[e.SUMMER_OLYMPICS_BEACH_VOLEYBALL=454]="SUMMER_OLYMPICS_BEACH_VOLEYBALL",e[e.MOTOGP=497]="MOTOGP",e[e.SAUDI_PROFESSIONAL_LEAGUE=536]="SAUDI_PROFESSIONAL_LEAGUE",e[e.SUMMER_OLYMPICS_WATERPOLO=8881]="SUMMER_OLYMPICS_WATERPOLO",e[e.SUMMER_OLYMPICS_VOLEYBALL_WOMEN=8893]="SUMMER_OLYMPICS_VOLEYBALL_WOMEN",e[e.SUMMER_OLYMPICS_VOLEYBALL=8894]="SUMMER_OLYMPICS_VOLEYBALL",e[e.SUMMER_OLYMPICS_TABLE_TENNIS=8910]="SUMMER_OLYMPICS_TABLE_TENNIS",e[e.BOXING=9196]="BOXING",e[e.SUMMER_OLYMPICS_RUGBY=9578]="SUMMER_OLYMPICS_RUGBY",e[e.SUMMER_OLYMPICS_RUGBY_WOMEN=9588]="SUMMER_OLYMPICS_RUGBY_WOMEN",e[e.SUMMER_OLYMPICS_HOCKEY_WOMEN=9698]="SUMMER_OLYMPICS_HOCKEY_WOMEN",e[e.SUMMER_OLYMPICS_HOCKEY=9699]="SUMMER_OLYMPICS_HOCKEY",e[e.UEFA_NATIONS_LEAGUE=9806]="UEFA_NATIONS_LEAGUE",e[e.CONCACAF_NATIONS_LEAGUE=9821]="CONCACAF_NATIONS_LEAGUE",e[e.CSGO=9977]="CSGO",e[e.DOTA2=9983]="DOTA2",e[e.SUMMER_OLYMPICS_BASKETBALL_3X3=10071]="SUMMER_OLYMPICS_BASKETBALL_3X3",e[e.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN=10072]="SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN",e[e.SUMMER_OLYMPICS_QUALIFICATION=10502]="SUMMER_OLYMPICS_QUALIFICATION",e[e.LOL=10138]="LOL",e[e.CONMEBOL_WC_QUALIFICATIONS=10199]="CONMEBOL_WC_QUALIFICATIONS",e[e.UEFA_CONFERENCE_LEAGUE=10216]="UEFA_CONFERENCE_LEAGUE",e[e.NON_TITLE_BOXING=10595]="NON_TITLE_BOXING",e[e.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION=10611]="UEFA_CHAMPIONS_LEAGUE_QUALIFICATION",e[e.UEFA_EUROPA_LEAGUE_QUALIFICATION=10613]="UEFA_EUROPA_LEAGUE_QUALIFICATION",e[e.UEFA_CONFERENCE_LEAGUE_QUALIFICATION=10615]="UEFA_CONFERENCE_LEAGUE_QUALIFICATION",e[e.US_ELECTION=2e4]="US_ELECTION",e[e.UEFA_SUPER_CUP=20001]="UEFA_SUPER_CUP",e[e.BRAZIL_CUP=20002]="BRAZIL_CUP",e[e.ENGLAND_CHAMPIONSHIP=20011]="ENGLAND_CHAMPIONSHIP",e[e.SCOTLAND_PREMIERSHIP=20101]="SCOTLAND_PREMIERSHIP",e[e.BELGIUM_LEAGUE=20102]="BELGIUM_LEAGUE",e[e.CZECH_LEAGUE=20103]="CZECH_LEAGUE",e[e.CHILE_PRIMERA=20104]="CHILE_PRIMERA",e[e.FINLAND_LEAGUE=20105]="FINLAND_LEAGUE",e[e.ARGENTINA_PRIMERA=20106]="ARGENTINA_PRIMERA",e[e.RUSSIA_PREMIER=20107]="RUSSIA_PREMIER",e[e.TURKEY_SUPER_LEAGUE=20108]="TURKEY_SUPER_LEAGUE",e[e.SERBIA_SUPER_LEAGUE=20109]="SERBIA_SUPER_LEAGUE",e[e.GREECE_SUPER_LEAGUE=20110]="GREECE_SUPER_LEAGUE",e[e.INDIA_PREMIER=20111]="INDIA_PREMIER",e[e.CHINA_SUPER_LEAGUE=20112]="CHINA_SUPER_LEAGUE",e[e.AUSTRALIA_A_LEAGUE=20113]="AUSTRALIA_A_LEAGUE",e[e.SWITZERLAND_SUPER_LEAGUE=20114]="SWITZERLAND_SUPER_LEAGUE",e[e.BUNDESLIGA_2=20115]="BUNDESLIGA_2",e[e.LA_LIGA_2=20116]="LA_LIGA_2",e[e.SERIE_B=20117]="SERIE_B",e[e.INDIA_SUPER_LEAGUE=20118]="INDIA_SUPER_LEAGUE",e[e.LIGUE_2=20119]="LIGUE_2",e[e.AUSTRIA_BUNDESLIGA=20120]="AUSTRIA_BUNDESLIGA",e[e.DENMARK_SUPER_LEAGUE=20121]="DENMARK_SUPER_LEAGUE",e[e.POLAND_LEAGUE=20122]="POLAND_LEAGUE",e[e.SWEDEN_LEAGUE=20123]="SWEDEN_LEAGUE",e[e.COLOMBIA_PRIMERA_A=20124]="COLOMBIA_PRIMERA_A",e[e.ENGLAND_EFL_CUP=20125]="ENGLAND_EFL_CUP",e[e.ENGLAND_LEGAUE_1=20126]="ENGLAND_LEGAUE_1",e[e.URUGUAY_PRIMERA_DIVISION=20127]="URUGUAY_PRIMERA_DIVISION",e[e.EUROCUP=20200]="EUROCUP",e[e.GOLF_H2H=100021]="GOLF_H2H",e[e.GOLF_WINNER=100121]="GOLF_WINNER",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1=15312]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2=15313]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3=15314]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4=15315]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5=15316]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6=15317]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6",e[e.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7=15318]="TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_1=15622]="TENNIS_MASTERS_LIVE_MAPPING_V2_1",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_2=15623]="TENNIS_MASTERS_LIVE_MAPPING_V2_2",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_3=15624]="TENNIS_MASTERS_LIVE_MAPPING_V2_3",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_4=15625]="TENNIS_MASTERS_LIVE_MAPPING_V2_4",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_5=15626]="TENNIS_MASTERS_LIVE_MAPPING_V2_5",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_6=15627]="TENNIS_MASTERS_LIVE_MAPPING_V2_6",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_7=15628]="TENNIS_MASTERS_LIVE_MAPPING_V2_7",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_8=15632]="TENNIS_MASTERS_LIVE_MAPPING_V2_8",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_9=15633]="TENNIS_MASTERS_LIVE_MAPPING_V2_9",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_10=15634]="TENNIS_MASTERS_LIVE_MAPPING_V2_10",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_11=15635]="TENNIS_MASTERS_LIVE_MAPPING_V2_11",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_12=15636]="TENNIS_MASTERS_LIVE_MAPPING_V2_12",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_13=15637]="TENNIS_MASTERS_LIVE_MAPPING_V2_13",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_14=15638]="TENNIS_MASTERS_LIVE_MAPPING_V2_14",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_15=15641]="TENNIS_MASTERS_LIVE_MAPPING_V2_15",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_16=15642]="TENNIS_MASTERS_LIVE_MAPPING_V2_16",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_17=15643]="TENNIS_MASTERS_LIVE_MAPPING_V2_17",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_18=15644]="TENNIS_MASTERS_LIVE_MAPPING_V2_18",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_19=15645]="TENNIS_MASTERS_LIVE_MAPPING_V2_19",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_20=15646]="TENNIS_MASTERS_LIVE_MAPPING_V2_20",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_21=15647]="TENNIS_MASTERS_LIVE_MAPPING_V2_21",e[e.TENNIS_MASTERS_LIVE_MAPPING_V2_22=15648]="TENNIS_MASTERS_LIVE_MAPPING_V2_22",e[e.TENNIS_WTA_LIVE_MAPPING_V2_1=15322]="TENNIS_WTA_LIVE_MAPPING_V2_1",e[e.TENNIS_WTA_LIVE_MAPPING_V2_2=15323]="TENNIS_WTA_LIVE_MAPPING_V2_2",e[e.TENNIS_WTA_LIVE_MAPPING_V2_3=15324]="TENNIS_WTA_LIVE_MAPPING_V2_3",e[e.TENNIS_WTA_LIVE_MAPPING_V2_4=15325]="TENNIS_WTA_LIVE_MAPPING_V2_4",e[e.TENNIS_WTA_LIVE_MAPPING_V2_5=15326]="TENNIS_WTA_LIVE_MAPPING_V2_5",e[e.TENNIS_WTA_LIVE_MAPPING_V2_6=15327]="TENNIS_WTA_LIVE_MAPPING_V2_6",e[e.TENNIS_WTA_LIVE_MAPPING_V2_7=15328]="TENNIS_WTA_LIVE_MAPPING_V2_7"}(t||(t={})),function(e){e.MONEYLINE="Moneyline"}(S||(S={})),function(e){e.ASIAN_HANDICAP="Asian Handicap",e.GAME_SPREAD="Game Spread",e.POINT_SPREAD="Point Spread",e.RUN_LINE="Run Line",e.PUCK_LINE="Puck Line"}(p||(p={})),function(e){e.TOTAL_GAMES="Total Games",e.TOTAL_GOALS="Total Goals",e.TOTAL_POINTS="Total Points",e.TOTAL_RUNS="Total Runs"}(l||(l={})),function(e){e.POINTS="points",e.GOALS="goals",e.ROUNDS="rounds",e.SETS="sets",e.EMPTY=""}(s||(s={})),function(e){e.OVERTIME="overtime",e.REGULAR="regular",e.EMPTY=""}(N||(N={})),function(e){e.QUARTER="quarter",e.HALF="half",e.PERIOD="period",e.ROUND="round",e.INNING="inning",e.SET="set",e.EMPTY=""}(T||(T={})),function(e){e.RUNDOWN="rundown",e.ENETPULSE="enetpulse",e.JSONODDS="jsonOdds",e.OPTICODDS="opticOdds",e.EMPTY=""}(I||(I={}));var P=((n={})[t.NCAAF]={sport:L.FOOTBALL,id:t.NCAAF,label:"NCAA Football",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.NFL]={sport:L.FOOTBALL,id:t.NFL,label:"NFL",opticOddsName:"NFL",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.MLB]={sport:L.BASEBALL,id:t.MLB,label:"MLB",opticOddsName:"MLB",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.INNING,isDrawAvailable:!1},n[t.NBA]={sport:L.BASKETBALL,id:t.NBA,label:"NBA",opticOddsName:"NBA",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.NCAAB]={sport:L.BASKETBALL,id:t.NCAAB,label:"NCAA Basketball",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.NHL]={sport:L.HOCKEY,id:t.NHL,label:"NHL",opticOddsName:"NHL",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.OVERTIME,periodType:T.PERIOD,isDrawAvailable:!1},n[t.UFC]={sport:L.FIGHTING,id:t.UFC,label:"UFC",provider:I.OPTICODDS,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.ROUND,isDrawAvailable:!1},n[t.WNBA]={sport:L.BASKETBALL,id:t.WNBA,label:"WNBA",opticOddsName:"WNBA",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.MLS]={sport:L.SOCCER,id:t.MLS,label:"MLS",opticOddsName:"USA - Major League Soccer",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.EPL]={sport:L.SOCCER,id:t.EPL,label:"EPL",opticOddsName:"England - Premier League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.LIGUE_ONE]={sport:L.SOCCER,id:t.LIGUE_ONE,label:"Ligue 1",opticOddsName:"France - Ligue 1",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.BUNDESLIGA]={sport:L.SOCCER,id:t.BUNDESLIGA,label:"Bundesliga",opticOddsName:"Germany - Bundesliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.LA_LIGA]={sport:L.SOCCER,id:t.LA_LIGA,label:"La Liga",opticOddsName:"Spain - La Liga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SERIE_A]={sport:L.SOCCER,id:t.SERIE_A,label:"Serie A",opticOddsName:"Italy - Serie A",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.UEFA_CL]={sport:L.SOCCER,id:t.UEFA_CL,label:"UEFA Champions League",opticOddsName:"UEFA - Champions League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.UEFA_EL]={sport:L.SOCCER,id:t.UEFA_EL,label:"UEFA Europa League",opticOddsName:"UEFA - Europa League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.FIFA_WC]={sport:L.SOCCER,id:t.FIFA_WC,label:"FIFA World Cup Qualifiers",provider:I.OPTICODDS,opticOddsName:"FIFA - World Cup Qualifiers",scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.J1_LEAGUE]={sport:L.SOCCER,id:t.J1_LEAGUE,label:"J1 League",opticOddsName:"Japan - J1 League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.IPL]={sport:L.CRICKET,id:t.IPL,label:"Indian Premier League",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:N.EMPTY,periodType:T.INNING,isDrawAvailable:!1},n[t.T20_BLAST]={sport:L.CRICKET,id:t.T20_BLAST,label:"T20 Blast",provider:I.RUNDOWN,scoringType:s.POINTS,matchResolveType:N.EMPTY,periodType:T.INNING,isDrawAvailable:!1},n[t.IIHF_WORLD_CHAMPIONSHIP]={sport:L.HOCKEY,id:t.IIHF_WORLD_CHAMPIONSHIP,label:"IIHF World Championship",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.PERIOD,isDrawAvailable:!0},n[t.COPA_AMERICA]={sport:L.SOCCER,id:t.COPA_AMERICA,label:"Copa America",opticOddsName:"CONMEBOL - Copa America",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.COPA_LIBERTADORES]={sport:L.SOCCER,id:t.COPA_LIBERTADORES,label:"Copa Libertadores",opticOddsName:"CONMEBOL - Copa Libertadores",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.UEFA_EURO]={sport:L.SOCCER,id:t.UEFA_EURO,label:"UEFA EURO 2024",opticOddsName:"UEFA - European Championship",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.EREDIVISIE]={sport:L.SOCCER,id:t.EREDIVISIE,label:"Eredivisie",opticOddsName:"Netherlands - Eredivisie",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.PRIMEIRA_LIGA]={sport:L.SOCCER,id:t.PRIMEIRA_LIGA,label:"Primeira Liga",opticOddsName:"Portugal - Primeira Liga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_SOCCER_WOMEN]={sport:L.SOCCER,id:t.SUMMER_OLYMPICS_SOCCER_WOMEN,label:"Olympic Games Soccer Women",opticOddsName:"Olympics Soccer Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_SOCCER]={sport:L.SOCCER,id:t.SUMMER_OLYMPICS_SOCCER,label:"Olympic Games Soccer",opticOddsName:"Olympics Soccer Men",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.FIFA_WC_WOMEN]={sport:L.SOCCER,id:t.FIFA_WC_WOMEN,label:"FIFA World Cup Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.ENGLAND_CUP]={sport:L.SOCCER,id:t.ENGLAND_CUP,label:"FA Cup",opticOddsName:"England - FA Cup",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.FRANCE_CUP]={sport:L.SOCCER,id:t.FRANCE_CUP,label:"Coupe de France",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SPAIN_CUP]={sport:L.SOCCER,id:t.SPAIN_CUP,label:"Copa del Rey",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.ITALY_CUP]={sport:L.SOCCER,id:t.ITALY_CUP,label:"Coppa Italia",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.TENNIS_WTA]={sport:L.TENNIS,id:t.TENNIS_WTA,label:"WTA Events",opticOddsName:"WTA",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.TENNIS_GS]={sport:L.TENNIS,id:t.TENNIS_GS,label:"Grand Slam",opticOddsName:"ATP,WTA",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.TENNIS_MASTERS]={sport:L.TENNIS,id:t.TENNIS_MASTERS,label:"ATP Events",opticOddsName:"ATP",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_TENNIS]={sport:L.TENNIS,id:t.SUMMER_OLYMPICS_TENNIS,label:"Olympic Games Tennis",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.GERMANY_CUP]={sport:L.SOCCER,id:t.GERMANY_CUP,label:"DFB Pokal",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.LIGA_MX]={sport:L.SOCCER,id:t.LIGA_MX,label:"Liga MX",opticOddsName:"Mexico - Liga MX",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.BRAZIL_1]={sport:L.SOCCER,id:t.BRAZIL_1,label:"Serie A",opticOddsName:"Brazil - Serie A",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.UEFA_EURO_U21]={sport:L.SOCCER,id:t.UEFA_EURO_U21,label:"UEFA EURO U21",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.FIFA_WORLD_CUP_U20]={sport:L.SOCCER,id:t.FIFA_WORLD_CUP_U20,label:"FIFA World Cup U20",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_HANDBALL_WOMEN]={sport:L.HANDBALL,id:t.SUMMER_OLYMPICS_HANDBALL_WOMEN,label:"Olympic Games Handball Women",opticOddsName:"Olympics Handball Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_HANDBALL]={sport:L.HANDBALL,id:t.SUMMER_OLYMPICS_HANDBALL,label:"Olympic Games Handball",opticOddsName:"Olympics Handball Men",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.EUROLEAGUE]={sport:L.BASKETBALL,id:t.EUROLEAGUE,label:"Euroleague",opticOddsName:"Euroleague",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BASKETBALL]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_BASKETBALL,label:"Olympic Games Basketball",opticOddsName:"Olympics Basketball Men",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BASKETBALL_WOMEN]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_BASKETBALL_WOMEN,label:"Olympic Games Basketball Women",opticOddsName:"Olympics Basketball Women",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.FIBA_WORLD_CUP]={sport:L.BASKETBALL,id:t.FIBA_WORLD_CUP,label:"FIBA World Cup",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.FORMULA1]={sport:L.MOTOSPORT,id:t.FORMULA1,label:"Formula 1",provider:I.ENETPULSE,scoringType:s.EMPTY,matchResolveType:N.EMPTY,periodType:T.EMPTY,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN]={sport:L.VOLLEYBALL,id:t.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN,label:"Olympic Games Beach Voleyball Women",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BEACH_VOLEYBALL]={sport:L.VOLLEYBALL,id:t.SUMMER_OLYMPICS_BEACH_VOLEYBALL,label:"Olympic Games Beach Voleyball",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_TABLE_TENNIS]={sport:L.TABLE_TENNIS,id:t.SUMMER_OLYMPICS_TABLE_TENNIS,label:"Olympic Games Table Tennis",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.MOTOGP]={sport:L.MOTOSPORT,id:t.MOTOGP,label:"MotoGP",provider:I.ENETPULSE,scoringType:s.EMPTY,matchResolveType:N.EMPTY,periodType:T.EMPTY,isDrawAvailable:!1},n[t.SAUDI_PROFESSIONAL_LEAGUE]={sport:L.SOCCER,id:t.SAUDI_PROFESSIONAL_LEAGUE,label:"Saudi Professional League",opticOddsName:"Saudi Arabia - Saudi League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_WATERPOLO]={sport:L.WATERPOLO,id:t.SUMMER_OLYMPICS_WATERPOLO,label:"Olympic Games Water Polo",opticOddsName:"Olympics Water Polo",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.QUARTER,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_VOLEYBALL_WOMEN]={sport:L.VOLLEYBALL,id:t.SUMMER_OLYMPICS_VOLEYBALL_WOMEN,label:"Olympic Games Volleyball Women",opticOddsName:"Olympics Volleyball Women",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_VOLEYBALL]={sport:L.VOLLEYBALL,id:t.SUMMER_OLYMPICS_VOLEYBALL,label:"Olympic Games Volleyball",opticOddsName:"Olympics Volleyball Men",provider:I.ENETPULSE,scoringType:s.SETS,matchResolveType:N.REGULAR,periodType:T.SET,isDrawAvailable:!1},n[t.BOXING]={sport:L.FIGHTING,id:t.BOXING,label:"Boxing",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.ROUND,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_RUGBY]={sport:L.RUGBY,id:t.SUMMER_OLYMPICS_RUGBY,label:"Olympic Games Rugby",opticOddsName:"Olympics Rugby 7s Men",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_RUGBY_WOMEN]={sport:L.RUGBY,id:t.SUMMER_OLYMPICS_RUGBY_WOMEN,label:"Olympic Games Rugby Women",opticOddsName:"Olympics Rugby 7s Women",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_HOCKEY_WOMEN]={sport:L.HOCKEY,id:t.SUMMER_OLYMPICS_HOCKEY_WOMEN,label:"Olympic Games Hockey Women",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.PERIOD,isDrawAvailable:!0},n[t.SUMMER_OLYMPICS_HOCKEY]={sport:L.HOCKEY,id:t.SUMMER_OLYMPICS_HOCKEY,label:"Olympic Games Hockey",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.PERIOD,isDrawAvailable:!0},n[t.UEFA_NATIONS_LEAGUE]={sport:L.SOCCER,id:t.UEFA_NATIONS_LEAGUE,label:"UEFA Nations League",provider:I.OPTICODDS,opticOddsName:"UEFA - Nations League",scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.CONCACAF_NATIONS_LEAGUE]={sport:L.SOCCER,id:t.CONCACAF_NATIONS_LEAGUE,label:"CONCACAF Nations League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.CSGO]={sport:L.ESPORTS,id:t.CSGO,label:"CS GO",opticOddsName:"CS2",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.ROUND,isDrawAvailable:!1},n[t.DOTA2]={sport:L.ESPORTS,id:t.DOTA2,label:"DOTA 2",opticOddsName:"Dota 2",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.ROUND,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BASKETBALL_3X3]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_BASKETBALL_3X3,label:"Olympic Games Basketball 3x3",opticOddsName:"Olympics Basketball 3x3 Men",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN,label:"Olympic Games Basketball 3x3 Women",opticOddsName:"Olympics Basketball 3x3 Women",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.SUMMER_OLYMPICS_QUALIFICATION]={sport:L.BASKETBALL,id:t.SUMMER_OLYMPICS_QUALIFICATION,label:"Summer Olympics Basketball Qualification",provider:I.ENETPULSE,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.LOL]={sport:L.ESPORTS,id:t.LOL,label:"LOL",opticOddsName:"League of Legends",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.ROUND,isDrawAvailable:!1},n[t.CONMEBOL_WC_QUALIFICATIONS]={sport:L.SOCCER,id:t.CONMEBOL_WC_QUALIFICATIONS,label:"CONMEBOL WC Qualification",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.UEFA_CONFERENCE_LEAGUE]={sport:L.SOCCER,id:t.UEFA_CONFERENCE_LEAGUE,label:"UEFA Conference League",opticOddsName:"UEFA - Europa Conference League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.NON_TITLE_BOXING]={sport:L.FIGHTING,id:t.NON_TITLE_BOXING,label:"Boxing",provider:I.ENETPULSE,scoringType:s.ROUNDS,matchResolveType:N.EMPTY,periodType:T.ROUND,isDrawAvailable:!1},n[t.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:t.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION,label:"UEFA Champions League Qualification",opticOddsName:"UEFA - Champions League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.UEFA_EUROPA_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:t.UEFA_EUROPA_LEAGUE_QUALIFICATION,label:"UEFA Europa League Qualification",opticOddsName:"UEFA - Europa League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.UEFA_CONFERENCE_LEAGUE_QUALIFICATION]={sport:L.SOCCER,id:t.UEFA_CONFERENCE_LEAGUE_QUALIFICATION,label:"UEFA Conference League Qualification",opticOddsName:"UEFA - Europa Conference League",provider:I.ENETPULSE,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.US_ELECTION]={sport:L.POLITICS,id:t.US_ELECTION,label:"US Election 2024",provider:I.EMPTY,scoringType:s.EMPTY,matchResolveType:N.EMPTY,periodType:T.EMPTY,isDrawAvailable:!1},n[t.UEFA_SUPER_CUP]={sport:L.SOCCER,id:t.UEFA_SUPER_CUP,label:"UEFA Super Cup",opticOddsName:"UEFA - Super Cup",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.BRAZIL_CUP]={sport:L.SOCCER,id:t.BRAZIL_CUP,label:"Copa do Brasil",opticOddsName:"Brazil - Copa do Brasil",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.ENGLAND_CHAMPIONSHIP]={sport:L.SOCCER,id:t.ENGLAND_CHAMPIONSHIP,label:"EFL Championship",opticOddsName:"England - Championship",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SCOTLAND_PREMIERSHIP]={sport:L.SOCCER,id:t.SCOTLAND_PREMIERSHIP,label:"Scotland Premiership",opticOddsName:"Scotland - Premiership",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.BELGIUM_LEAGUE]={sport:L.SOCCER,id:t.BELGIUM_LEAGUE,label:"Belgium Jupiler Pro League",opticOddsName:"Belgium - Jupiler Pro League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.CZECH_LEAGUE]={sport:L.SOCCER,id:t.CZECH_LEAGUE,label:"Czech Republic FNL",opticOddsName:"Czech Republic - FNL",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.CHILE_PRIMERA]={sport:L.SOCCER,id:t.CHILE_PRIMERA,label:"Chile Primera Division",opticOddsName:"Chile - Primera Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.FINLAND_LEAGUE]={sport:L.SOCCER,id:t.FINLAND_LEAGUE,label:"Finland Veikkausliiga",opticOddsName:"Finland - Veikkausliiga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.ARGENTINA_PRIMERA]={sport:L.SOCCER,id:t.ARGENTINA_PRIMERA,label:"Argentina Primera Division",opticOddsName:"Argentina - Primera Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.RUSSIA_PREMIER]={sport:L.SOCCER,id:t.RUSSIA_PREMIER,label:"Russia Premier League",opticOddsName:"Russia - Premier League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.TURKEY_SUPER_LEAGUE]={sport:L.SOCCER,id:t.TURKEY_SUPER_LEAGUE,label:"Turkey Super Lig",opticOddsName:"Turkey - Super Lig",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SERBIA_SUPER_LEAGUE]={sport:L.SOCCER,id:t.SERBIA_SUPER_LEAGUE,label:"Serbia Super Liga",opticOddsName:"Serbia - Super Liga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.GREECE_SUPER_LEAGUE]={sport:L.SOCCER,id:t.GREECE_SUPER_LEAGUE,label:"Greece Super League",opticOddsName:"Greece - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.INDIA_PREMIER]={sport:L.SOCCER,id:t.INDIA_PREMIER,label:"India Calcutta Premier Division",opticOddsName:"India - Calcutta Premier Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.CHINA_SUPER_LEAGUE]={sport:L.SOCCER,id:t.CHINA_SUPER_LEAGUE,label:"China Super League",opticOddsName:"China - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.AUSTRALIA_A_LEAGUE]={sport:L.SOCCER,id:t.AUSTRALIA_A_LEAGUE,label:"Australia A-League",opticOddsName:"Australia - A-League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SWITZERLAND_SUPER_LEAGUE]={sport:L.SOCCER,id:t.SWITZERLAND_SUPER_LEAGUE,label:"Switzerland Super League",opticOddsName:"Switzerland - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.BUNDESLIGA_2]={sport:L.SOCCER,id:t.BUNDESLIGA_2,label:"Bundesliga 2",opticOddsName:"Germany - Bundesliga 2",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.LA_LIGA_2]={sport:L.SOCCER,id:t.LA_LIGA_2,label:"La Liga 2",opticOddsName:"Spain - La Liga 2",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SERIE_B]={sport:L.SOCCER,id:t.SERIE_B,label:"Serie B",opticOddsName:"Italy - Serie B",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.INDIA_SUPER_LEAGUE]={sport:L.SOCCER,id:t.INDIA_SUPER_LEAGUE,label:"India Super League",opticOddsName:"India - Super League",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.LIGUE_2]={sport:L.SOCCER,id:t.LIGUE_2,label:"Ligue 2",opticOddsName:"France - Ligue 2",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.AUSTRIA_BUNDESLIGA]={sport:L.SOCCER,id:t.AUSTRIA_BUNDESLIGA,label:"Austria Bundesliga",opticOddsName:"Austria - Bundesliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.DENMARK_SUPER_LEAGUE]={sport:L.SOCCER,id:t.DENMARK_SUPER_LEAGUE,label:"Denmark Superliga",opticOddsName:"Denmark - Superliga",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.POLAND_LEAGUE]={sport:L.SOCCER,id:t.POLAND_LEAGUE,label:"Poland Ekstraklasa",opticOddsName:"Poland - Ekstraklasa",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.SWEDEN_LEAGUE]={sport:L.SOCCER,id:t.SWEDEN_LEAGUE,label:"Sweden Allsvenskan",opticOddsName:"Sweden - Allsvenskan",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.COLOMBIA_PRIMERA_A]={sport:L.SOCCER,id:t.COLOMBIA_PRIMERA_A,label:"Colombia Primera A",opticOddsName:"Colombia - Primera A",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.ENGLAND_EFL_CUP]={sport:L.SOCCER,id:t.ENGLAND_EFL_CUP,label:"England EFL Cup",opticOddsName:"England - EFL Cup",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.ENGLAND_LEGAUE_1]={sport:L.SOCCER,id:t.ENGLAND_LEGAUE_1,label:"England League 1",opticOddsName:"England - League 1",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.URUGUAY_PRIMERA_DIVISION]={sport:L.SOCCER,id:t.URUGUAY_PRIMERA_DIVISION,label:"Uruguay Primera Division",opticOddsName:"Uruguay - Primera Division",provider:I.OPTICODDS,scoringType:s.GOALS,matchResolveType:N.REGULAR,periodType:T.HALF,isDrawAvailable:!0},n[t.EUROCUP]={sport:L.BASKETBALL,id:t.EUROCUP,label:"Eurocup",opticOddsName:"Eurocup",provider:I.OPTICODDS,scoringType:s.POINTS,matchResolveType:N.OVERTIME,periodType:T.QUARTER,isDrawAvailable:!1},n[t.GOLF_H2H]={sport:L.GOLF,id:t.GOLF_H2H,label:"Golf head-to-head",provider:I.JSONODDS,scoringType:s.EMPTY,matchResolveType:N.EMPTY,periodType:T.EMPTY,isDrawAvailable:!1},n[t.GOLF_WINNER]={sport:L.GOLF,id:t.GOLF_WINNER,label:"Golf Tournament Winner",provider:I.JSONODDS,scoringType:s.EMPTY,matchResolveType:N.EMPTY,periodType:T.EMPTY,isDrawAvailable:!1},n),M=[t.CSGO,t.DOTA2,t.LOL,t.TENNIS_GS,t.TENNIS_MASTERS,t.SUMMER_OLYMPICS_TENNIS,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6,t.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7,t.TENNIS_MASTERS_LIVE_MAPPING_V2_1,t.TENNIS_MASTERS_LIVE_MAPPING_V2_2,t.TENNIS_MASTERS_LIVE_MAPPING_V2_3,t.TENNIS_MASTERS_LIVE_MAPPING_V2_4,t.TENNIS_MASTERS_LIVE_MAPPING_V2_5,t.TENNIS_MASTERS_LIVE_MAPPING_V2_6,t.TENNIS_MASTERS_LIVE_MAPPING_V2_7,t.TENNIS_MASTERS_LIVE_MAPPING_V2_8,t.TENNIS_MASTERS_LIVE_MAPPING_V2_9,t.TENNIS_MASTERS_LIVE_MAPPING_V2_10,t.TENNIS_MASTERS_LIVE_MAPPING_V2_11,t.TENNIS_MASTERS_LIVE_MAPPING_V2_12,t.TENNIS_MASTERS_LIVE_MAPPING_V2_13,t.TENNIS_MASTERS_LIVE_MAPPING_V2_14,t.TENNIS_MASTERS_LIVE_MAPPING_V2_15,t.TENNIS_MASTERS_LIVE_MAPPING_V2_16,t.TENNIS_MASTERS_LIVE_MAPPING_V2_17,t.TENNIS_MASTERS_LIVE_MAPPING_V2_18,t.TENNIS_MASTERS_LIVE_MAPPING_V2_19,t.TENNIS_MASTERS_LIVE_MAPPING_V2_20,t.TENNIS_MASTERS_LIVE_MAPPING_V2_21,t.TENNIS_MASTERS_LIVE_MAPPING_V2_22,t.TENNIS_WTA_LIVE_MAPPING_V2_1,t.TENNIS_WTA_LIVE_MAPPING_V2_2,t.TENNIS_WTA_LIVE_MAPPING_V2_3,t.TENNIS_WTA_LIVE_MAPPING_V2_4,t.TENNIS_WTA_LIVE_MAPPING_V2_5,t.TENNIS_WTA_LIVE_MAPPING_V2_6,t.TENNIS_WTA_LIVE_MAPPING_V2_7],C=[t.SUMMER_OLYMPICS_RUGBY,t.SUMMER_OLYMPICS_RUGBY_WOMEN],U=[t.NCAAF,t.NFL,t.MLB,t.NBA,t.NCAAB,t.NHL,t.WNBA,t.MLS,t.IPL,t.T20_BLAST],u=[701,702,703,704],m={1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21},G={320:18,6:24,33:33,16:42,44:44,45:45,11:47,50:50,12:53,13:54,15:55,57:57,61:61,65:65,66:66,17:73,76:76,14:87,152:152,153:153,156:156,158:158,132:132,134:134,138:138,141:141,209:209,230:230,268:268,288:288,296:296,310:310,319:319,322:322,327:327,380:380,381:381,399:399,406:406,407:407,409:409,445:445,453:453,454:454,497:497,536:536,8881:8881,8893:8893,8894:8894,8910:8910,9196:9196,9578:9578,9588:9588,9698:9698,9699:9699,9806:9806,9821:9821,9977:9977,9983:9983,10071:10071,10072:10072,10502:10502,10138:10138,10199:10199,10216:10216,10595:10595,10611:10611,10613:10613,10615:10615},y={1:"NCAAF",2:"NFL",3:"MLB",6:"NHL",7:"UFC",8:"WNBA",10:"USA - Major League Soccer",11:"England - Premier League",12:"France - Ligue 1",13:"Germany - Bundesliga",14:"Spain - La Liga",15:"Italy - Serie A",16:"UEFA - Champions League",17:"UEFA - Europa League",18:"FIFA - World Cup Qualifiers",19:"Japan - J1 League",45:"CONMEBOL - Copa Libertadores",57:"Netherlands - Eredivisie",61:"Portugal - Primeira Liga",230:"Mexico - Liga MX",268:"Brazil - Serie A",399:"Euroleague",536:"Saudi Arabia - Saudi League",9806:"UEFA - Nations League",9977:"CS2",9983:"Dota 2",10138:"League of Legends",10216:"UEFA - Europa Conference League",20001:"UEFA - Super Cup",20002:"Brazil - Copa do Brasil",20011:"England - Championship",20101:"Scotland - Premiership",20102:"Belgium - Jupiler Pro League",20103:"Czech Republic - FNL",20104:"Chile - Primera Division",20105:"Finland - Veikkausliiga",20106:"Argentina - Primera Division",20107:"Russia - Premier League",20108:"Turkey - Super Lig",20109:"Serbia - Super Liga",20110:"Greece - Super League",20111:"India - Calcutta Premier Division",20112:"China - Super League",20113:"Australia - A-League",20114:"Switzerland - Super League",20115:"Germany - Bundesliga 2",20116:"Spain - La Liga 2",20117:"Italy - Serie B",20118:"India - Super League",20119:"France - Ligue 2",20120:"Austria - Bundesliga",20121:"Denmark - Superliga",20122:"Poland - Ekstraklasa",20123:"Sweden - Allsvenskan",20124:"Colombia - Primera A",20125:"England - EFL Cup",20126:"England - League 1",20127:"Uruguay - Primera Division",20200:"Eurocup"},v=function(e){var r=P[e];return r?r.sport:L.EMPTY},D=function(e){var r=P[e];return r?r.label:""},g=function(e){var r=P[e];return r?r.provider:""},b=function(e){var r=P[e];return!!r&&r.isDrawAvailable},F=function(e){return e.filter((function(e){return"true"===e.enabled})).map((function(e){return Number(e.sportId)}))},h=function(e,r){return r.filter((function(r){return Number(r.sportId)===e&&"true"===r.enabled})).map((function(e){return e.marketName}))},V=function(e,r){return r.filter((function(r){return Number(r.sportId)===e}))},B=function(e){var r=P[e];return r?r.opticOddsName:void 0},w=function(e){var r=P[e];return r?r.periodType:""},f=function(e,r){return r.filter((function(r){return Number(r.sportId)===e&&"Spread"===r.type&&"true"===r.enabled})).map((function(e){return e.marketName.toLowerCase()}))},Y=function(e,r){return r.filter((function(r){return Number(r.sportId)===e&&"Total"===r.type&&"true"===r.enabled})).map((function(e){return e.marketName.toLowerCase()}))},H=function(e,r,a,E,i,o){var A,_;if(M.includes(e)?(A=E.toLowerCase()==r.toLowerCase()||E.toLowerCase()==a.toLowerCase(),_=i.toLowerCase()==r.toLowerCase()||i.toLowerCase()==a.toLowerCase()):(A=E.toLowerCase()==r.toLowerCase(),_=i.toLowerCase()==a.toLowerCase()),!0!==A){var L=o.get(E.toLowerCase()),t=o.get(r.toLowerCase()),S=o.get(a.toLowerCase());if([L,t].some((function(e){return null==e})))return!1;A=M.includes(e)?L==t||L==S:L==t}if(!0!==_){var p=o.get(i.toLowerCase());if(t=o.get(r.toLowerCase()),[p,S=o.get(a.toLowerCase())].some((function(e){return null==e})))return!1;_=M.includes(e)&&p==t||p==S}return A&&_},W=function(e,r,a,E){var i;if(v(a)==L.TENNIS){var o=r.getTime(),A=e.getTime();i=Math.abs(A-o)<=Number(60*E*1e3)}else i=r.toUTCString()==e.toUTCString();return i},k=0,K="Draw",Q=1e5,j=.2,X=10001,z=10002,Z=100,x=function(e,r,a){if(e.some((function(e){return 0===e})))return e;var E=e.reduce((function(e,r){return e+r}),0);if(E<=1)return Array(e.length).fill(0);if(0===a){if(!(r>100*(E-1)))return e;a=r}var i=1+a/100,o=i/E,A=e.map((function(e){return e*o}));if(A.some((function(e){return e>=1})))return Array(e.length).fill(0);var _=A.reduce((function(e,r){return e+r}),0);if(_<1)return Array(e.length).fill(0);var L=i/_;return A.map((function(e){return e*L}))},J=function(e,r,a,E){var i=e.find((function(e){return Number(e.typeId)===Number(a)&&Number(e.sportId)===Number(r)}));return i?{minSpread:i.minSpread?Number(i.minSpread):E,targetSpread:i.targetSpread?Number(i.targetSpread):0}:{minSpread:E,targetSpread:0}},q=function(){return q=Object.assign||function(e){for(var r,a=1,E=arguments.length;a<E;a++)for(var i in r=arguments[a])Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i]);return e},q.apply(this,arguments)},$=function(e,r,a){if(a||2===arguments.length)for(var E,i=0,o=r.length;i<o;i++)!E&&i in r||(E||(E=Array.prototype.slice.call(r,0,i)),E[i]=r[i]);return e.concat(E||Array.prototype.slice.call(r))},ee=function(e){return e===k?0:re("decimal","impliedProbability",e)},re=function(e,r,a){try{return d(e,a).to(r)}catch(e){return 0}},ae=function(e,r,a,E,i){var o=new Map;return a.forEach((function(a){var A=0,_=e.filter((function(e){return e&&e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===E.homeTeam.toLowerCase()}));0!==_.length&&(A=_[0].price);var L=0,t=e.filter((function(e){return e&&e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===E.awayTeam.toLowerCase()}));0!==t.length&&(L=t[0].price);var S=0;if(!i){var p=e.filter((function(e){return e&&e.market_name.toLowerCase()===r.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()&&e.selection.toLowerCase()===K.toLowerCase()}));0!==p.length&&(S=p[0].price)}o.set(a.toLowerCase(),{homeOdds:A,awayOdds:L,drawOdds:S})})),o},Ee=function(e,r,a,E,i,o,A){var _={homeTeam:E.home_team,awayTeam:E.away_team},L=ae(E.odds,S.MONEYLINE,a,_,e),t=R(L,a,e,A,j);if(t.errorMessage)return{odds:e?[0,0]:[0,0,0],errorMessage:t.errorMessage};var p=(e?[t.homeOdds,t.awayOdds]:[t.homeOdds,t.awayOdds,t.drawOdds]).map((function(e){return ee(e)})),l=J(r,i,Q,o);return{odds:p=null!==l?x(p,l.minSpread,l.targetSpread):x(p,o,0)}},ie=function(e,r,a,E,i,o){var A=[[],[],[]],_=A[0],L=A[1],t=A[2],S=V(r,o),p={homeTeam:e.home_team,awayTeam:e.away_team};if(S.length>0){oe(e.odds,S,E[0]).filter((function(e){return e&&.5===Math.abs(e.selection_points%1)})).forEach((function(e){e&&.5===Math.abs(e.selection_points%1)&&("Total"===e.type?L.push(e):"Spread"===e.type&&_.push(e))}));var l=$($([],Ae(_,p),!0),_e(L),!0),s=Le(l,a,i),N=process.env.MIN_ODDS_FOR_CHILD_MARKETS_FOR_LIVE,T=process.env.MAX_ODDS_FOR_CHILD_MARKETS_FOR_LIVE;s.forEach((function(e){var r={leagueId:e.sportId,typeId:e.typeId,type:e.type,line:e.line,odds:e.odds};N&&T&&(e.odds[0]>=N||e.odds[0]<=T||e.odds[1]>=N||e.odds[1]<=T)||t.push(r)}))}else console.warn("No child markets for leagueID: ".concat(r));return t},oe=function(e,r,a){var E=r.map((function(e){return e.marketName}));return e.filter((function(e){return E.includes(e.market_name.toLowerCase())&&e.market_name.toLowerCase()!==S.MONEYLINE.toLowerCase()&&e.sports_book_name.toLowerCase()==a.toLowerCase()})).map((function(e){return q(q({},e),r.find((function(r){return r.marketName===e.market_name})))}))},Ae=function(e,r){var a=e.reduce((function(e,a){var E=a.selection_points,i=a.price,o=a.selection,A=a.typeId,_=a.sportId,L=a.type,t=o===r.homeTeam,S=t?E:-E;return e[S]||(e[S]={home:null,away:null,typeId:null,sportId:null}),t?e[S].home=i:e[S].away=i,e[S].typeId=A,e[S].type=L,e[S].sportId=_,e}),{}),E=Object.entries(a).reduce((function(e,r){var a=r[0],E=r[1],i=parseFloat(a);return null!==E.home&&null!==E.away&&e.push({line:i,odds:[E.home,E.away],typeId:E.typeId,sportId:E.sportId,type:E.type}),e}),[]);return E},_e=function(e){var r=e.reduce((function(e,r){if(r){var a="".concat(r.selection,"_").concat(r.selection_points);e[a]||(e[a]={over:null,under:null}),"over"===r.selection_line?e[a].over=r.price:"under"===r.selection_line&&(e[a].under=r.price),e[a].typeId=r.typeId,e[a].type=r.type,e[a].sportId=r.sportId}return e}),{}),a=Object.entries(r).reduce((function(e,r){var a=r[0],E=r[1],i=parseFloat(a);return null!==E.over&&null!==E.under&&e.push({line:i,odds:[E.over,E.under],typeId:E.typeId,sportId:E.sportId,type:E.type}),e}),[]);return a},Le=function(e,r,a){var E=[];return e.forEach((function(e){var i=ee(e.odds[0])||k,o=ee(e.odds[1])||k;if(i!==k&&o!==k){var A,_=J(r,e.sportId,e.typeId,a);i=(A=null!==_?x([i,o],_.minSpread,_.targetSpread):x([i,o],a,0))[0],o=A[1],E.push(q(q({},e),{odds:A}))}})),E},te=function(){return te=Object.assign||function(e){for(var r,a=1,E=arguments.length;a<E;a++)for(var i in r=arguments[a])Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i]);return e},te.apply(this,arguments)},Se=function(e,r,a,E,i,o,A,_){var L=E.filter((function(r){return r.sportId===String(e.leagueId)})),t=Ee(!i,L,a,r,e.leagueId,o,A);t.errorMessage?(e.odds=e.odds.map((function(){return{american:0,decimal:0,normalizedImplied:0}})),e.errorMessage=t.errorMessage):e.odds=t.odds.filter((function(e){return 0!=e})).map((function(e){return{american:d("impliedProbability",e).to("moneyline"),decimal:d("impliedProbability",e).to("decimal"),normalizedImplied:e}}));var S=ie(e.leagueId,L,r,a,o,_).map((function(r){var a=te(te({},e),r);return a.odds.length>0&&(a.odds=a.odds.map((function(e){return 0==e?{american:0,decimal:0,normalizedImplied:0}:{american:d("impliedProbability",e).to("moneyline"),decimal:d("impliedProbability",e).to("decimal"),normalizedImplied:e}}))),a}));return e.childMarkets=S,e},pe=function(e,r,a){var E=e.score_home_total,i=e.score_away_total,o=e.clock,A=e.period,_=e.status,t=e.home_team,S=e.away_team,p=parseInt(A),l=v(r);return"completed"==_.toLowerCase()?{allow:!1,message:"Blocking game ".concat(t," - ").concat(S," because it is no longer live.")}:l===L.BASKETBALL?le(t,S,p,a.get(L.BASKETBALL)):l===L.HOCKEY?le(t,S,p,a.get(L.HOCKEY)):l===L.BASEBALL?le(t,S,p,a.get(L.BASEBALL)):l===L.SOCCER?se(t,S,o,A,a.get(L.SOCCER)):l===L.TENNIS?Ne(e,t,S,A,E,i,r,l):l===L.VOLLEYBALL?Ne(e,t,S,p,E,i,r,l):{allow:!0,message:"The sport ".concat(r," does not have constraint")}},le=function(e,r,a,E){return!Number.isNaN(a)&&a>=E?{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to period: ").concat(a,". period")}:{allow:!0,message:""}},se=function(e,r,a,E,i){var o=Number(a);return!Number.isNaN(o)&&o>=i||Number.isNaN(o)&&"HALF"!=E?{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to clock: ").concat(a,"min")}:{allow:!0,message:""}},Ne=function(e,r,a,E,i,o,A,_){var S=Number(E),p=Te(S,e),l="atp"==e.league.toLowerCase(),s={home:i,away:o};return _==L.VOLLEYBALL?Ie(r,a,p,s,ne,5==S?Oe:de):A.toString().startsWith(t.TENNIS_GS)&&l?Ie(r,a,p,s,Re,Pe):A.toString().startsWith(t.TENNIS_GS)&&!l||A.toString().startsWith(t.TENNIS_MASTERS)||A.toString().startsWith(t.SUMMER_OLYMPICS_TENNIS)||A.toString().startsWith(t.TENNIS_WTA)?Ie(r,a,p,s,ce,Pe):{allow:!0,message:"The sport ".concat(A," does not have result constraint")}},Te=function(e,r){var a=0,E=0;switch(e){case 1:a=Number(r.score_home_period_1),E=Number(r.score_away_period_1);break;case 2:a=Number(r.score_home_period_2),E=Number(r.score_away_period_2);break;case 3:a=Number(r.score_home_period_3),E=Number(r.score_away_period_3);break;case 4:a=Number(r.score_home_period_4),E=Number(r.score_away_period_4);break;case 5:a=Number(r.score_home_period_5),E=Number(r.score_away_period_5)}return{home:a,away:E}},Ie=function(e,r,a,E,i,o){return Number(E.home)!=i&&Number(E.away)!=i||!(Number(E.home)==i&&a.home>=o||Number(E.away)==i&&a.away>=o)?{allow:!0,message:"",currentHomeGameScore:a.home,currentAwayGameScore:a.away}:{allow:!1,message:"Blocking game ".concat(e," - ").concat(r," due to current result: ").concat(E.home," - ").concat(E.away," (").concat(a.home," - ").concat(a.away,")")}},ne=2,de=20,Oe=10,Re=2,ce=1,Pe=5;return r})()));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overtime-live-trading-utils",
3
- "version": "0.0.129",
3
+ "version": "0.0.131",
4
4
  "description": "",
5
5
  "main": "main.js",
6
6
  "scripts": {
@@ -1,7 +1,5 @@
1
1
  import * as oddslib from 'oddslib';
2
- import { TAG_CHILD_SPREAD, TAG_CHILD_TOTALS } from '../constants/common';
3
- import { filterOddsByMarketNameBookmaker, formatSpreadOdds, getParentOdds, processTotalOdds } from './odds';
4
- import { getLeagueSpreadTypes, getLeagueTotalTypes } from './sports';
2
+ import { createChildMarkets, getParentOdds } from './odds';
5
3
  /**
6
4
  * Processes a single sports event. This function maps event data to a specific format,
7
5
  * filters invalid events, and optionally fetches player properties if the sport supports it.
@@ -62,7 +60,7 @@ export const processMarket = (
62
60
  });
63
61
  }
64
62
 
65
- const childMarkets = getChildMarkets(
63
+ const childMarkets = createChildMarkets(
66
64
  market.leagueId,
67
65
  sportSpreadData,
68
66
  apiResponseWithOdds,
@@ -96,144 +94,3 @@ export const processMarket = (
96
94
 
97
95
  return market;
98
96
  };
99
-
100
- /**
101
- * Retrieves the child markets for the given event.
102
- *
103
- * @param {Object} market - The market object from the API
104
- * @param {Array} spreadDataForSport - Spread data for sport.
105
- * @param {Object} apiResponseWithOdds - API response from the provider
106
- * @param {Number} defaultSpreadForLiveMarkets - Default spread for live markets
107
- * @param {Boolean} isTestnet - Flag showing should we process for testnet or mainnet
108
- * @returns {Array} The child markets for the event.
109
- */
110
- const getChildMarkets = (
111
- leagueId,
112
- spreadDataForSport,
113
- apiResponseWithOdds,
114
- liveOddsProviders,
115
- defaultSpreadForLiveMarkets,
116
- leagueMap
117
- ) => {
118
- let childMarkets = [];
119
-
120
- // Create Spread Child Markets
121
- childMarkets = childMarkets.concat(
122
- createSpreadChildMarkets(
123
- apiResponseWithOdds,
124
- leagueId,
125
- spreadDataForSport,
126
- liveOddsProviders,
127
- defaultSpreadForLiveMarkets,
128
- leagueMap
129
- )
130
- );
131
-
132
- // Create Total Child Markets
133
- childMarkets = childMarkets.concat(
134
- createTotalChildMarkets(
135
- apiResponseWithOdds,
136
- leagueId,
137
- spreadDataForSport,
138
- liveOddsProviders,
139
- defaultSpreadForLiveMarkets,
140
- leagueMap
141
- )
142
- );
143
-
144
- return childMarkets;
145
- };
146
-
147
- /**
148
- * Creates spread child markets based on the given parameters.
149
- *
150
- * @param {Object} market - The market object from the API
151
- * @param {Array} spreadDataForSport - Spread data for sport.
152
- * @param {Object} apiResponseWithOdds - API response from the provider
153
- * @param {Array} liveOddsProviders - Odds providers for live odds
154
- * @param {Number} defaultSpreadForLiveMarkets - Default spread for live markets
155
- * @param {Boolean} isTestnet - Flag showing should we process for testnet or mainnet
156
- * @returns {Array} The spread child markets.
157
- */
158
- export const createSpreadChildMarkets = (
159
- apiResponseWithOdds,
160
- leagueId,
161
- spreadDataForSport,
162
- liveOddsProviders,
163
- defaultSpreadForLiveMarkets,
164
- leagueMap
165
- ) => {
166
- const childMarkets = [] as any;
167
- const spreadTypes = getLeagueSpreadTypes(leagueId, leagueMap);
168
- const commonData = {
169
- homeTeam: apiResponseWithOdds.home_team,
170
- awayTeam: apiResponseWithOdds.away_team,
171
- };
172
- if (spreadTypes.length > 0) {
173
- // TODO ADD ODDS COMPARISON BETWEEN BOOKMAKERS
174
- const allSpreadOdds = filterOddsByMarketNameBookmaker(
175
- apiResponseWithOdds.odds,
176
- spreadTypes,
177
- liveOddsProviders[0]
178
- );
179
-
180
- if (allSpreadOdds.length > 0) {
181
- const formattedSpreadOdds = formatSpreadOdds(
182
- allSpreadOdds,
183
- commonData,
184
- leagueId,
185
- spreadDataForSport,
186
- TAG_CHILD_SPREAD,
187
- defaultSpreadForLiveMarkets
188
- );
189
-
190
- childMarkets.push(...formattedSpreadOdds);
191
- }
192
- } else {
193
- console.warn(`Spread type for sport ID ${leagueId} not found.`);
194
- }
195
- return childMarkets;
196
- };
197
-
198
- /**
199
- * Creates total child markets based on the given parameters.
200
- *
201
- * @param {Object} market - The market object from the API
202
- * @param {Array} spreadDataForSport - Spread data for sport.
203
- * @param {Object} apiResponseWithOdds - API response from the provider
204
- * @param {Array} liveOddsProviders - Odds providers for live odds
205
- * @param {Number} defaultSpreadForLiveMarkets - Default spread for live markets
206
- * @param {Boolean} isTestnet - Flag showing should we process for testnet or mainnet
207
- * @returns {Array} The total child markets.
208
- */
209
- export const createTotalChildMarkets = (
210
- apiResponseWithOdds,
211
- leagueId,
212
- spreadDataForSport,
213
- liveOddsProviders,
214
- defaultSpreadForLiveMarkets,
215
- leagueMap
216
- ) => {
217
- const childMarkets = [] as any;
218
- const totalTypes = getLeagueTotalTypes(leagueId, leagueMap);
219
-
220
- if (totalTypes.length > 0) {
221
- // TODO ADD ODDS COMPARISON BETWEEN BOOKMAKERS
222
- const totalOdds = filterOddsByMarketNameBookmaker(apiResponseWithOdds.odds, totalTypes, liveOddsProviders[0]);
223
-
224
- if (totalOdds.length > 0) {
225
- childMarkets.push(
226
- ...processTotalOdds(
227
- totalOdds,
228
- leagueId,
229
- spreadDataForSport,
230
- TAG_CHILD_TOTALS,
231
- defaultSpreadForLiveMarkets
232
- )
233
- );
234
- }
235
- } else {
236
- console.warn(`Configuration (totals) for sport ID ${leagueId} not found.`);
237
- }
238
- return childMarkets;
239
- };
package/src/utils/odds.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import * as oddslib from 'oddslib';
2
2
  import { DRAW, LIVE_TYPE_ID_BASE, MIN_ODDS_FOR_DIFF_CHECKING, ZERO } from '../constants/common';
3
- import { statusCodes } from '../enums/statuses';
4
3
  import { checkOddsFromBookmakers } from './bookmakers';
5
4
  import { adjustSpreadOnOdds, getSpreadData } from './spread';
6
5
  import { MoneylineTypes } from '../enums/sports';
6
+ import { LeagueInfo } from '../types/sports';
7
+ import { getLeagueInfo } from './sports';
7
8
 
8
9
  /**
9
10
  * Converts a given odds value from one format to another.
@@ -164,100 +165,116 @@ export const getParentOdds = (
164
165
  };
165
166
 
166
167
  /**
167
- * Filters the odds array to find entries matching the specified market name.
168
- *
169
- * @param {Array} oddsArray - The array of odds objects.
170
- * @param {string} marketNames - The market names to filter by.
171
- * @param {string} oddsProvider - The main odds provider to filter by.
172
- * @returns {Array} The filtered odds array.
173
- */
174
- export const filterOddsByMarketNameBookmaker = (oddsArray, marketNames, oddsProvider) => {
175
- return oddsArray.filter(
176
- (odd) =>
177
- marketNames.includes(odd.market_name.toLowerCase()) &&
178
- odd.sports_book_name.toLowerCase() == oddsProvider.toLowerCase()
179
- );
180
- };
181
-
182
- // TODO: Unify the same code from formatSpreadOdds method and from processTotalOdds method
183
- /**
184
- * Formats the spread odds and creates market objects.
168
+ * Creates child markets based on the given parameters.
185
169
  *
186
- * @param {Array} spreadOdds - The spread odds array.
187
- * @param {Object} commonData - The common data object.
188
- * @param {Object} market - The sport ID from the API.
189
- * @param {Array} spreadDataForSport - Spread data for the sport.
190
- * @param {Number} typeId - typeID
191
- * @param {Number} defaultSpreadForLiveMarkets - Default spread for live markets,
192
- * @returns {Array} The formatted spread markets.
170
+ * @param {Object} leagueId - leagueId AKA sportId
171
+ * @param {Array} spreadDataForSport - Spread data for sport.
172
+ * @param {Object} apiResponseWithOdds - API response from the provider
173
+ * @param {Array} liveOddsProviders - Odds providers for live odds
174
+ * @param {Number} defaultSpreadForLiveMarkets - Default spread for live markets
175
+ * @param {Boolean} leagueMap - League Map info
176
+ * @returns {Array} The child markets.
193
177
  */
194
- export const formatSpreadOdds = (
195
- spreadOdds,
196
- commonData,
178
+ export const createChildMarkets = (
179
+ apiResponseWithOdds,
197
180
  leagueId,
198
181
  spreadDataForSport,
199
- typeId,
200
- defaultSpreadForLiveMarkets
182
+ liveOddsProviders,
183
+ defaultSpreadForLiveMarkets,
184
+ leagueMap
201
185
  ) => {
202
- const childMarkets = [] as any;
203
- const validSpreadOdds = spreadOdds.filter((odd) => odd && Math.abs(odd.selection_points % 1) === 0.5) as any;
204
- const formattedSpreadOdds = groupAndFormatSpreadOdds(validSpreadOdds, commonData);
186
+ const [spreadOdds, totalOdds, childMarkets] = [[], [], []]; // placeholders for
187
+ const leagueInfo = getLeagueInfo(leagueId, leagueMap);
188
+ const commonData = {
189
+ homeTeam: apiResponseWithOdds.home_team,
190
+ awayTeam: apiResponseWithOdds.away_team,
191
+ };
192
+ if (leagueInfo.length > 0) {
193
+ // TODO ADD ODDS COMPARISON BETWEEN BOOKMAKERS
194
+ const allChildOdds = filterOddsByMarketNameBookmaker(
195
+ apiResponseWithOdds.odds,
196
+ leagueInfo,
197
+ liveOddsProviders[0]
198
+ );
205
199
 
206
- formattedSpreadOdds.forEach(({ line, odds }) => {
207
- let homeTeamOdds = convertOddsToImpl(odds[0]) || ZERO;
208
- let awayTeamOdds = convertOddsToImpl(odds[1]) || ZERO;
209
- let isZeroOddsChild = homeTeamOdds === ZERO || awayTeamOdds === ZERO;
200
+ const allValidOdds = allChildOdds.filter((odd) => odd && Math.abs(odd.selection_points % 1) === 0.5) as any;
210
201
 
211
- if (!isZeroOddsChild) {
212
- const spreadData = getSpreadData(spreadDataForSport, leagueId, typeId, defaultSpreadForLiveMarkets);
213
- if (spreadData !== null) {
214
- let adjustedOdds = adjustSpreadOnOdds(
215
- [homeTeamOdds, awayTeamOdds],
216
- spreadData.minSpread,
217
- spreadData.targetSpread
218
- );
219
- if (adjustedOdds.some((prob) => prob === ZERO)) {
220
- isZeroOddsChild = true;
221
- } else {
222
- [homeTeamOdds, awayTeamOdds] = adjustedOdds;
223
- }
224
- } else {
225
- let adjustedOdds = adjustSpreadOnOdds([homeTeamOdds, awayTeamOdds], defaultSpreadForLiveMarkets, 0);
226
- if (adjustedOdds.some((prob) => prob === ZERO)) {
227
- isZeroOddsChild = true;
228
- } else {
229
- [homeTeamOdds, awayTeamOdds] = adjustedOdds;
202
+ allValidOdds.forEach((odd) => {
203
+ if (odd && Math.abs(odd.selection_points % 1) === 0.5) {
204
+ if (odd.type === 'Total') {
205
+ totalOdds.push(odd);
206
+ } else if (odd.type === 'Spread') {
207
+ spreadOdds.push(odd);
230
208
  }
231
209
  }
232
- }
210
+ });
211
+
212
+ const formattedOdds = [
213
+ ...groupAndFormatSpreadOdds(spreadOdds, commonData),
214
+ ...groupOddsBySelectionAndPoints(totalOdds),
215
+ ];
216
+
217
+ const oddsWithSpreadAdjusted = adjustSpreadOnChildOdds(
218
+ formattedOdds,
219
+ spreadDataForSport,
220
+ defaultSpreadForLiveMarkets
221
+ );
233
222
 
234
223
  const minOdds = process.env.MIN_ODDS_FOR_CHILD_MARKETS_FOR_LIVE;
235
224
  const maxOdds = process.env.MAX_ODDS_FOR_CHILD_MARKETS_FOR_LIVE;
236
-
237
- if (
238
- !(
239
- minOdds &&
240
- maxOdds &&
241
- (homeTeamOdds >= minOdds ||
242
- homeTeamOdds <= maxOdds ||
243
- awayTeamOdds >= minOdds ||
244
- awayTeamOdds <= maxOdds)
245
- )
246
- ) {
247
- childMarkets.push({
248
- leagueId,
249
- typeId: typeId,
250
- type: 'spread',
251
- results: [],
252
- status: isZeroOddsChild ? statusCodes.PAUSED : statusCodes.OPEN,
253
- line: line,
254
- odds: [homeTeamOdds, awayTeamOdds],
255
- });
256
- }
257
- });
225
+ oddsWithSpreadAdjusted.forEach((data) => {
226
+ const childMarket = {
227
+ leagueId: data.sportId,
228
+ typeId: data.typeId,
229
+ type: data.type,
230
+ line: data.line,
231
+ odds: data.odds,
232
+ };
233
+
234
+ if (
235
+ !(
236
+ minOdds &&
237
+ maxOdds &&
238
+ (data.odds[0] >= minOdds ||
239
+ data.odds[0] <= maxOdds ||
240
+ data.odds[1] >= minOdds ||
241
+ data.odds[1] <= maxOdds)
242
+ )
243
+ ) {
244
+ childMarkets.push(childMarket);
245
+ }
246
+ });
247
+ } else {
248
+ console.warn(`No child markets for leagueID: ${leagueId}`);
249
+ }
258
250
  return childMarkets;
259
251
  };
260
252
 
253
+ /**
254
+ * Filters the odds array to find entries matching the specified market name.
255
+ *
256
+ * @param {Array} oddsArray - The array of odds objects.
257
+ * @param {string} leagueInfos - The market names to filter by.
258
+ * @param {string} oddsProvider - The main odds provider to filter by.
259
+ * @returns {Array} The filtered odds array.
260
+ */
261
+ export const filterOddsByMarketNameBookmaker = (oddsArray, leagueInfos: LeagueInfo[], oddsProvider) => {
262
+ const allChildMarketsTypes = leagueInfos.map((leagueInfo) => leagueInfo.marketName);
263
+ return oddsArray
264
+ .filter(
265
+ (odd) =>
266
+ allChildMarketsTypes.includes(odd.market_name.toLowerCase()) &&
267
+ odd.market_name.toLowerCase() !== MoneylineTypes.MONEYLINE.toLowerCase() &&
268
+ odd.sports_book_name.toLowerCase() == oddsProvider.toLowerCase()
269
+ )
270
+ .map((odd) => {
271
+ return {
272
+ ...odd,
273
+ ...leagueInfos.find((leagueInfo) => leagueInfo.marketName === odd.market_name),
274
+ };
275
+ });
276
+ };
277
+
261
278
  /**
262
279
  * Groups spread odds by their lines and formats the result.
263
280
  *
@@ -268,13 +285,13 @@ export const formatSpreadOdds = (
268
285
  export const groupAndFormatSpreadOdds = (oddsArray, commonData) => {
269
286
  // Group odds by their selection points and selection
270
287
  const groupedOdds = oddsArray.reduce((acc: any, odd: any) => {
271
- const { selection_points, price, selection } = odd;
288
+ const { selection_points, price, selection, typeId, sportId, type } = odd;
272
289
  const isHomeTeam = selection === commonData.homeTeam;
273
290
 
274
291
  const key = isHomeTeam ? selection_points : -selection_points;
275
292
 
276
293
  if (!acc[key]) {
277
- acc[key] = { home: null, away: null };
294
+ acc[key] = { home: null, away: null, typeId: null, sportId: null };
278
295
  }
279
296
 
280
297
  if (isHomeTeam) {
@@ -283,6 +300,10 @@ export const groupAndFormatSpreadOdds = (oddsArray, commonData) => {
283
300
  acc[key].away = price;
284
301
  }
285
302
 
303
+ acc[key].typeId = typeId;
304
+ acc[key].type = type;
305
+ acc[key].sportId = sportId;
306
+
286
307
  return acc;
287
308
  }, {}) as any;
288
309
  // Format the grouped odds into the desired output
@@ -292,6 +313,9 @@ export const groupAndFormatSpreadOdds = (oddsArray, commonData) => {
292
313
  acc.push({
293
314
  line: line as any,
294
315
  odds: [(value as any).home, (value as any).away],
316
+ typeId: value.typeId,
317
+ sportId: value.sportId,
318
+ type: value.type,
295
319
  });
296
320
  }
297
321
  return acc;
@@ -300,81 +324,6 @@ export const groupAndFormatSpreadOdds = (oddsArray, commonData) => {
300
324
  return formattedOdds;
301
325
  };
302
326
 
303
- /**
304
- * Processes total odds to create market objects.
305
- *
306
- * @param {Array} totalOdds - The total odds array.
307
- * @param {Object} commonData - The common data object.
308
- * @param {Object} market - The sport ID from the API.
309
- * @param {Array} spreadDataForSport - Spread data for the sport.
310
- * @param {Number} typeId - typeID
311
- * @param {Number} defaultSpreadForLiveMarkets - Default spread for live markets,
312
- * @returns {Array} The processed total odds market objects.
313
- */
314
- export const processTotalOdds = (totalOdds, leagueId, spreadDataForSport, typeId, defaultSpreadForLiveMarkets) => {
315
- const childMarkets = [] as any;
316
- const validTotalOdds = totalOdds.filter((odd) => odd && Math.abs(odd.selection_points % 1) === 0.5);
317
- const groupedOdds = groupOddsBySelectionAndPoints(validTotalOdds);
318
- const iterableGroupedOdds = Object.entries(groupedOdds) as any;
319
-
320
- iterableGroupedOdds.forEach(([key, { over, under }]) => {
321
- const [_, selection_points] = key.split('_');
322
-
323
- let overOdds = convertOddsToImpl(over) || ZERO;
324
- let underOdds = convertOddsToImpl(under) || ZERO;
325
- let isZeroOddsChild = overOdds === ZERO || underOdds === ZERO;
326
-
327
- if (!isZeroOddsChild) {
328
- const spreadData = getSpreadData(spreadDataForSport, leagueId, typeId, defaultSpreadForLiveMarkets);
329
- if (spreadData !== null) {
330
- let adjustedOdds = adjustSpreadOnOdds(
331
- [overOdds, underOdds],
332
- spreadData.minSpread,
333
- spreadData.targetSpread
334
- );
335
- if (adjustedOdds.some((prob) => prob === ZERO)) {
336
- isZeroOddsChild = true;
337
- } else {
338
- [overOdds, underOdds] = adjustedOdds;
339
- }
340
- } else {
341
- // Use min spread by sport if available, otherwise use default min spread
342
- let adjustedOdds = adjustSpreadOnOdds([overOdds, underOdds], defaultSpreadForLiveMarkets, 0);
343
- if (adjustedOdds.some((prob) => prob === ZERO)) {
344
- isZeroOddsChild = true;
345
- } else {
346
- [overOdds, underOdds] = adjustedOdds;
347
- }
348
- }
349
- }
350
-
351
- const minOdds = process.env.MIN_ODDS_FOR_CHILD_MARKETS_FOR_LIVE;
352
- const maxOdds = process.env.MAX_ODDS_FOR_CHILD_MARKETS_FOR_LIVE;
353
-
354
- const childMarket = {
355
- leagueId,
356
- typeId: typeId,
357
- type: 'total',
358
- results: [],
359
- status: isZeroOddsChild ? statusCodes.PAUSED : statusCodes.OPEN,
360
- line: parseFloat(selection_points),
361
- odds: [overOdds, underOdds],
362
- };
363
-
364
- if (
365
- !(
366
- minOdds &&
367
- maxOdds &&
368
- (overOdds >= minOdds || overOdds <= maxOdds || underOdds >= minOdds || underOdds <= maxOdds)
369
- )
370
- ) {
371
- childMarkets.push(childMarket);
372
- }
373
- });
374
-
375
- return childMarkets;
376
- };
377
-
378
327
  /**
379
328
  * Groups odds by selection and points over/under.
380
329
  *
@@ -382,7 +331,8 @@ export const processTotalOdds = (totalOdds, leagueId, spreadDataForSport, typeId
382
331
  * @returns {Object} The grouped odds.
383
332
  */
384
333
  export const groupOddsBySelectionAndPoints = (oddsArray) => {
385
- return oddsArray.reduce((acc, odd) => {
334
+ // Group odds by their selection points and selection
335
+ const groupedOdds = oddsArray.reduce((acc, odd) => {
386
336
  if (odd) {
387
337
  const key = `${odd.selection}_${odd.selection_points}`;
388
338
  if (!acc[key]) {
@@ -393,8 +343,62 @@ export const groupOddsBySelectionAndPoints = (oddsArray) => {
393
343
  } else if (odd.selection_line === 'under') {
394
344
  acc[key].under = odd.price;
395
345
  }
346
+
347
+ acc[key].typeId = odd.typeId;
348
+ acc[key].type = odd.type;
349
+ acc[key].sportId = odd.sportId;
396
350
  }
397
351
 
398
352
  return acc;
399
353
  }, {});
354
+
355
+ // Format the grouped odds into the desired output
356
+ const formattedOdds = (Object.entries(groupedOdds as any) as any).reduce((acc, [key, value]) => {
357
+ const line = parseFloat(key);
358
+ if ((value as any).over !== null && (value as any).under !== null) {
359
+ acc.push({
360
+ line: line as any,
361
+ odds: [(value as any).over, (value as any).under],
362
+ typeId: value.typeId,
363
+ sportId: value.sportId,
364
+ type: value.type,
365
+ });
366
+ }
367
+ return acc;
368
+ }, []);
369
+
370
+ return formattedOdds;
371
+ };
372
+
373
+ export const adjustSpreadOnChildOdds = (iterableGroupedOdds, spreadDataForSport, defaultSpreadForLiveMarkets) => {
374
+ const result = [];
375
+ iterableGroupedOdds.forEach((data) => {
376
+ let homeTeamOdds = convertOddsToImpl(data.odds[0]) || ZERO;
377
+ let awayTeamOdds = convertOddsToImpl(data.odds[1]) || ZERO;
378
+ let isZeroOddsChild = homeTeamOdds === ZERO || awayTeamOdds === ZERO;
379
+ if (!isZeroOddsChild) {
380
+ const spreadData = getSpreadData(
381
+ spreadDataForSport,
382
+ data.sportId,
383
+ data.typeId,
384
+ defaultSpreadForLiveMarkets
385
+ );
386
+ let adjustedOdds;
387
+ if (spreadData !== null) {
388
+ adjustedOdds = adjustSpreadOnOdds(
389
+ [homeTeamOdds, awayTeamOdds],
390
+ spreadData.minSpread,
391
+ spreadData.targetSpread
392
+ );
393
+ } else {
394
+ adjustedOdds = adjustSpreadOnOdds([homeTeamOdds, awayTeamOdds], defaultSpreadForLiveMarkets, 0);
395
+ }
396
+ [homeTeamOdds, awayTeamOdds] = adjustedOdds;
397
+ result.push({
398
+ ...data,
399
+ odds: adjustedOdds,
400
+ });
401
+ }
402
+ });
403
+ return result;
400
404
  };
@@ -33,6 +33,11 @@ export const getBetTypesForLeague = (league: League, leagueMap: LeagueInfo[]) =>
33
33
  return betTypes;
34
34
  };
35
35
 
36
+ export const getLeagueInfo = (league: League, leagueMap: LeagueInfo[]) => {
37
+ const leagueInfos = leagueMap.filter((leagueInfo) => Number(leagueInfo.sportId) === league);
38
+ return leagueInfos;
39
+ };
40
+
36
41
  export const getLeagueOpticOddsName = (league: League) => {
37
42
  const leagueInfo = LeagueMap[league];
38
43
  return leagueInfo ? leagueInfo.opticOddsName : undefined;
@@ -1,21 +0,0 @@
1
- /**
2
- * Enum for task status codes.
3
- * @readonly
4
- * @enum {number}
5
- */
6
- export const statusCodes = {
7
- /** Game is open and has not started. */
8
- OPEN: 0,
9
- /** Game has been temporarily halted. */
10
- PAUSED: 1,
11
- /** Game is currently underway. */
12
- IN_PROGRESS: 3,
13
- /** Game has been finished successfully. */
14
- FINISHED: 8,
15
- /** Game has been resolved successfully. */
16
- RESOLVED: 10,
17
- /** Game has been canceled and will not be finished. */
18
- CANCELED: 255,
19
- };
20
-
21
- // TODO: Check if this file can be deleted