@betorigami/games 1.13.1 → 1.13.2

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/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames:gi}=Object;var ki=Object.prototype.hasOwnProperty;var v1=(a,i,e)=>{e=a!=null?vi(wi(a)):{};let r=i||!a||!a.__esModule?p6(e,"default",{value:a,enumerable:!0}):e;for(let l of gi(a))if(!ki.call(r,l))p6(r,l,{get:()=>a[l],enumerable:!0});return r};var D1=(a,i)=>()=>(i||a((i={exports:{}}).exports,i),i.exports);var d=function(a,i,e,r){var l=arguments.length,n=l<3?i:r===null?r=Object.getOwnPropertyDescriptor(i,e):r,t;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")n=Reflect.decorate(a,i,e,r);else for(var h=a.length-1;h>=0;h--)if(t=a[h])n=(l<3?t(n):l>3?t(i,e,n):t(i,e))||n;return l>3&&n&&Object.defineProperty(i,e,n),n};var L4=D1((Nn,Mi)=>{Mi.exports={accessibility:{sliderValue:"{value} من أصل {max}"},alerts:{autobetStarted:"تم بدء وضع المراهنة التلقائية",autobetStopped:"تم إيقاف وضع Autobet",betAmountAboveMaxBet:"الحد الأقصى للرهان هو {value}",betAmountBelowMinBet:"الحد الأدنى للرهان هو {value}",betLimitReached:"تم الوصول إلى حد الرهان",errorProcessingBet:"حدث خطأ أثناء معالجة رهانك. يرجى المحاولة مرة أخرى.",failedToLoadBetData:"فشل في تحميل بيانات الرهان",gameError:"حدث خطأ أثناء معالجة رهانك. يرجى المحاولة مرة أخرى.",insufficientBalance:"رصيد غير كاف",maxPayoutExceeded:"تم تجاوز الحد الأقصى للدفع",notEnoughBalance:"الرصيد غير كافٍ"},autobet:{configureAutobet:"تكوين Autobet",games:"الألعاب",games10:"10 ألعاب",games100:"100 ألعاب",games25:"25 ألعاب",games5:"٥ ألعاب",games50:"50 ألعاب",increase:"زيادة",infinite:"غير محدود",onLoss:"عند الخسارة",onWin:"عند الفوز",reset:"إعادة تعيين",startAutobet:"بدء التشغيل التلقائي",stopAutobet:"إيقاف التشغيل التلقائي",stopOnLoss:"توقف عند الخسارة",stopOnProfit:"التوقف عند الربح"},clipboard:{linkCopied:"تم نسخ الرابط إلى الحافظة!"},common:{auto:"تلقائي",back:"رجوع",balance:"الرصيد",bet:"مبلغ الرهان",betAmount:"مبلغ الرهان",cancel:"إلغاء",cashOut:"السحب النقدي",classic:"كلاسيك",confirm:"تأكيد",copied:"تم النسخ",currency:"العملة",deposit:"إيداع",disableHotkeys:"تعطيل مفاتيح الاختصار",disableMaxBet:"تعطيل الحد الأقصى للرهان",enableHotkeys:"تفعيل الاختصارات لوحة المفاتيح",enableMaxBet:"تفعيل الحد الأقصى للرهان",footerNavigation:"تذييل التنقل",gameInfo:"معلومات اللعبة",gameName:"اسم اللعبة",high:"مرتفع",history:"السجل",hotkeys:"مفاتيح الاختصار",id:"معرّف",instantBet:"رهان فوري",loading:"جارٍ التحميل...",loadMore:"تحميل المزيد",lobby:"العودة إلى الردهة",low:"منخفض",manual:"دليل",max:"الحد الأقصى",medium:"متوسط",multiplier:"المضاعف",payout:"الدفع",placeBet:"ضع رهان",profit:"الربح",profitOnWin:"الربح عند الفوز",provablyFair:"عادل يمكن إثباته",risk:"مخاطرة",roundId:"معرّف الجولة",saveChanges:"حفظ التغييرات",shareReplay:"مشاركة الإعادة",siteInformation:"معلومات اللعبة",space:"مسافة",support:"الدعم",targetMultiplier:"المضاعف",thisFieldIsRequired:"هذا الحقل مطلوب",timestamp:"الوقت",toggleHotkeys:"تبديل مفاتيح الاختصار",viewFairnessInformation:"عرض معلومات النزاهة",viewHistory:"عرض السجل",volume:"الحجم",winChance:"فرصة الفوز"},errors:{dice:{multiplierRange:"يجب أن يكون بين {min} و {max}",winChanceRange:"يجب أن يكون بين {min} و {max}"},noWheelData:"لا تتوفر بيانات العجلة",requestDropped:"تم إسقاط الطلب"},fairness:{activeClientSeed:"بذرة العميل النشطة",enterClientSeed:"أدخل clientSeed",enterProof:"أدخل الدليل",enterPublicKey:"أدخل المفتاح العام",enterRandomness:"أدخل العشوائية",enterRequest:"أدخل الطلب",info:{p1:"نتيجة كل جولة تأتي من عشوائية قابلة للتحقق، وليست من منطق خادم مخفي. نقوم بإنشاء بذرة حتمية من قيم فريدة لجولتك—gameId، tenantId، tenantUserId، nonce متزايد (واحد لكل جولة مكتملة)، بالإضافة إلى clientSeed الخاص بك. هذا يضمن أن كل جولة فريدة وقابلة لإعادة الإنتاج: نفس المدخلات → نفس سلسلة العشوائية → نفس النتيجة.",p2:"يتم تمرير تلك البذرة عبر دالة عشوائية قابلة للتحقق باستخدام المنحنى البيضاوي (ECVRF) وفقًا لمواصفات IETF المسودة draft-irtf-cfrg-vrf-15. يستخدم خادمنا مفتاحه الخاص لإنتاج قيمة عشوائية ودليل تشفير (proofString). يمكن لأي شخص يمتلك مفتاحنا العام التحقق بشكل مستقل من ذلك الدليل للمدخلات المعطاة—مما يؤكد أن العشوائية جاءت من البذرة ولم يتم التلاعب بها. الـ SDK مكتوب بلغة TypeScript، بينما يستخدم التشفير الأساسي مكتبة fastcrypto Rust عبر NAPI-RS من أجل الأداء والسلامة.",p3:"بمجرد التحقق، يقوم ناتج VRF بتوليد مُولّد عشوائي بايتات محدد (hashSequence). تقوم الألعاب بتحويل هذه البايتات إلى نتائج باستخدام منطق محدد وغير متحيز. وبما أن العملية محددة والـ nonce يتقدم مع كل جولة مكتملة، فإنك تحصل على تدقيقات قابلة لإعادة التشغيل (إعادة إنشاء نفس الجولة بالضبط) وعشوائية جديدة غير متكررة في كل مرة.",p4:"بعد انتهاء جولة، سيكون لديك المدخلات (بما في ذلك clientSeed وnonce الخاص بالجولة)، وVRF output، وproofString، ومفتاحنا العام. استخدم أي أداة تحقق ECVRF أو مكتباتنا من أجل: (1) التحقق من صحة الإثبات مقابل المدخلات والمفتاح العام، و(2) إعادة توليد نفس hashSequence والنتيجة. مفتاحنا الخاص لا يغادر الخوادم الآمنة أبدًا؛ المفتاح العام آمن للاستخدام على جانب العميل لإجراء التحقق المستقل.",step1Desc:"نحن نجمع بين gameId و tenantId و tenantUserId و nonce خاص بكل جولة و clientSeed الخاص بك. نفس المدخلات دائمًا تنتج نفس سلسلة الأرقام العشوائية ونفس النتيجة.",step1Title:"البذرة الحتمية",step2Title:"توليد العشوائية",step3Desc:"يمكن لأي شخص التحقق من proofString للمدخلات المعطاة باستخدام مفتاحنا العام. يؤكد هذا أن العشوائية تطابق البذرة ولم يتم التلاعب بها.",step3Title:"تحقق من الدليل",step4Title:"استنتاج النتائج",step5Title:"التكاثر"},invalidGame:"تم تقديم نوع لعبة غير صالح.",learnMore:"اعرف المزيد",newClientSeed:"بذرة عميل جديدة",noBettingHistory:"لا يوجد سجل للمراهنات",outcomeCalculationInfo:"يستخدم هذا اللعبة خوارزمية عادلة يمكن إثباتها تضمن أن النتيجة عادلة وشفافة.",outcomeNotVerified:"تعذر التحقق من نتيجة هذه اللعبة. يرجى التأكد من إدخال المعلومات الصحيحة والمحاولة مرة أخرى.",outcomeVerified:"تم التحقق من نتيجة هذه الجولة باستخدام مفتاحنا العام وهي عادلة بشكل يمكن إثباته.",proof:"دليل",publicKey:"المفتاح العام النشط",randomness:"العشوائية",request:"طلب",saveClientSeed:"حفظ clientSeed",verifyOutcome:"تحقق من النتيجة"},gameInfo:{advancedDice:{how1:"اختر وضع الرمي: داخل، خارج، أو بين.",how2:"اسحب المنزلقات لتحديد منطقة(مناطق) الفوز.",how3:"حدد مبلغ الرهان وضع رهانك.",how4:"يتم إنشاء رقم عشوائي بين 0 و 100.",how5:"اربح إذا وقعت النتيجة ضمن منطقتك المختارة.",overview:"يتيح لك النرد المتقدم تعيين مناطق فوز مخصصة. اختر داخل للفوز عندما تقع النتيجة ضمن نطاقك، خارج للفوز عندما تقع خارج نطاقك، أو بين للتقسيم إلى منطقتي فوز.",provablyFair:"يولد نظام العشوائية القابل للتحقق كل نتيجة في النرد المتقدم. بعد كل جولة، يمكنك عرض المدخلات والإثبات، والتحقق من النتيجة بمفتاحنا العام، وإعادة إنتاج نفس النتيجة.",strategyTip:"المناطق الأوسع تقدم فوزاً أكثر تكراراً لكن مضاعفات أصغر. المناطق الضيقة تخاطر أكثر لكن تدفع أكثر. وضع بين يتيح لك استهداف نطاقين لاستراتيجيات مرنة."},diamonds:{how1:"حدد مبلغ رهانك وضع رهانك.",how2:"يتم الكشف عن خمسة ماسات من مجموعة ثابتة من أنواع الجواهر.",how3:"يتم تقييم نتيجتك مثل يد البوكر: زوج، زوجان، ثلاثة من نفس النوع، بيت كامل، أربعة من نفس النوع، وخمسة من نفس النوع.",how4:"كل نوع يد له معامل مضاعفة خاص به؛ الأيادي ذات القيمة الأعلى تمنح معاملات مضاعفة أكبر، بينما اليد التي لا تحتوي على تركيبة لا تدفع سوى 0X.",how5:"دفع أرباحك هو رهانك مضروبًا في المضاعف المعروض لليد الناتجة.",overview:"Diamonds هي لعبة مطابقة بخمس بكرات. كل جولة تكشف عن خمسة ألماس من مجموعة من أنواع الأحجار الكريمة المختلفة. هدفك هو الحصول على مجموعات على طريقة البوكر - أزواج، ثلاثية من نفس النوع، بيت كامل، وهكذا.",provablyFair:"يختار نظام العشوائية القابلة للتحقق لدينا نتيجة كل ماسة. بعد كل جولة، يمكنك عرض القيم العشوائية الأساسية والدليل، والتحقق من النتيجة باستخدام مفتاحنا العام، وإعادة إنتاج نفس اليد.",strategyTip:"Diamonds هي لعبة ذات تقلبات عالية واحتمالات ثابتة حيث تبحث عن مجموعات قوية من أوراق اللعب بأسلوب البوكر. العامل الرئيسي لديك هو مدى رغبتك في المخاطرة. استخدم رهانات صغيرة وثابتة إذا كنت ترغب في تجاوز الفترات الجافة، أو قم أحيانًا بزيادة حجم رهانك عندما تسعى للحصول على مجموعات ممتازة."},dice:{how1:"اختر رمي أقل أو رمي أكثر.",how2:"حدد رقمك المستهدف.",how3:"حدد مبلغ رهانك وضع رهانك.",how4:"نحن نولد نتيجة عشوائية واحدة (تُعرض على مقياس من 0 إلى 99.99 داخل اللعبة).",how5:"تفوز إذا كانت النتيجة ضمن النطاق الذي اخترته.",how6:"دفعك هو الرهان مضروبًا في المضاعف المعروض، والذي يتغير أثناء تحريكك للمنزلق.",overview:"حدد رقم الهدف واختر ما إذا كانت النتيجة ستكون أقل أو أعلى منه. يؤدي تحريك شريط التمرير إلى تغيير فرصة الفوز والمضاعف—فرصة أعلى تقلل من المضاعف، وفرصة أقل تزيده. كل جولة هي رمية مستقلة واحدة على مقياس اللعبة.",provablyFair:"يقوم نظام العشوائية القابل للتحقق لدينا بتوليد كل رمية Dice. بعد كل جولة، يمكنك عرض المدخلات والدليل، والتحقق من النتيجة باستخدام مفتاحنا العام، وإعادة إنتاج نفس النتيجة.",strategyTip:"اختر تقلبك. فرصة الفوز الأقل تعطي مضاعفات أكبر لكن أرباحاً أقل حدوثاً. فرصة الفوز الأعلى تعطي مضاعفات أصغر لكن أرباحاً أكثر تكراراً. حدد حجم رهاناتك بما يتناسب مع رصيدك لتحقيق تقلبات أكثر استقراراً."},keno:{how1:"اختر من 1 إلى 10 مربعات على لوحة من 1 إلى 40.",how2:"حدد مبلغ رهانك وضع رهانك.",how3:"نقوم بسحب 10 أرقام فائزة؛ يتم تمييز الأرقام التي تطابق أرقامك.",how4:"تعتمد المدفوعات على عدد البلاطات التي اخترتها وعدد النجاحات التي حققتها—تحقق من جدول المدفوعات.",how5:"لا يمكنك أبدًا تحقيق أرقام أكثر مما اخترت، والحد الأقصى للاختيار هو 10.",overview:"اختر أرقامك المحظوظة وحاول مطابقة السحب. يمكنك اختيار من 1 إلى 10 أرقام من بين 1 إلى 40، ثم نقوم بسحب 10 أرقام. كلما زاد عدد الأرقام التي اخترتها وظهرت في السحب، زادت أرباحك.",provablyFair:"يولد نظام العشوائية القابل للتحقق لدينا كل سحب Keno. بعد كل جولة، يمكنك عرض المدخلات والدليل، والتحقق من النتيجة باستخدام مفتاحنا العام، وإعادة إنتاج نفس النتيجة.",strategyTip:"اختر مستوى التقلب الذي تفضله. اختيار عدد أقل من النقاط يعني تحقيق انتصارات أقل تكرارًا ولكن مع مضاعفات أكبر بكثير. المزيد من النقاط يمنح ضربات أكثر تكرارًا ولكن بعوائد متوسطة أصغر لكل ضربة. النطاق المتوسط يوازن بين معدل الضربات والجوائز. عدّل حجم رهانك ليتناسب مع تفضيلك للمخاطرة ورصيدك المالي."},limbo:{how1:"حدد المضاعف المستهدف.",how2:"حدد مبلغ رهانك وضع رهانك.",how3:"نحن نولد معامل نتيجة عشوائي واحد.",how4:"تفوز إذا كانت النتيجة أكبر من أو تساوي هدفك.",how5:"دفعك هو الرهان مضروبًا في معامل الهدف الخاص بك؛ وإلا، تخسر رهانك.",overview:"في Limbo، تقوم بتحديد قيمة العائد التي ترغب بها، ويقوم اللعبة بسحب معامل نتيجة عشوائي واحد. إذا كانت النتيجة مساوية لهدفك أو أعلى، تفوز. إذا كانت أقل، تخسر. كلما زادت فرصة الفوز، انخفض المعامل؛ وكلما قلت الفرصة، زاد المعامل.",provablyFair:"يولد نظام العشوائية القابل للتحقق لدينا كل نتيجة في Limbo. بعد كل جولة، يمكنك عرض المدخلات والدليل، والتحقق من النتيجة باستخدام مفتاحنا العام، وإعادة إنتاج نفس النتيجة.",strategyTip:"الأهداف المنخفضة تربح في كثير من الأحيان ولكن تدفع أقل، بينما الأهداف الأعلى نادراً ما تتحقق ولكن تدفع أكثر بكثير. فكر في تحديد هدف ثابت لكل جلسة أو مزج بعض المحاولات الطويلة أحياناً، وحافظ على حجم الرهانات بشكل متسق لإدارة التباين."},limitContent:"أعلى مضاعف يمكن تحقيقه في هذه اللعبة هو {multiplier}X. أعلى عائد يمكن تحقيقه هو {payout}",limitTitle:"الحدود",mines:{how1:"اختر عدد الألغام لهذه الجولة.",how2:"حدد مبلغ رهانك وضع رهانك.",how3:"انقر على البلاطات لكشفها: البلاطة الآمنة تزيد من المضاعف الخاص بك؛ اللغم ينهي الجولة.",how4:"يمكنك السحب في أي وقت لتثبيت المضاعف الحالي الخاص بك.",how5:"دفعك هو الرهان مضروبًا في المضاعف الحالي عند السحب.",how6:"تنتهي الجولة عندما تسحب أرباحك أو عندما يتم الكشف عن لغم.",overview:"تدور لعبة Mines حول اختيار البلاطات الآمنة وتحديد الوقت المناسب للسحب. قبل بدء الجولة، اختر عدد الألغام التي سيتم إخفاؤها على اللوحة. كل بلاطة آمنة تكشفها تزيد من معامل الربح الخاص بك. إذا أصبت لغماً، تنتهي الجولة بدون أرباح.",provablyFair:"يولد نظام العشوائية القابل للتحقق لدينا توزيع الألغام المخفية لكل لوحة. بعد كل جولة، يمكنك عرض المدخلات والدليل، والتحقق من النتيجة باستخدام مفتاحنا العام، وإعادة إنتاج نفس النتيجة.",strategyTip:"اختر مستوى التقلب. قلة الألغام تعني كشفات أكثر أمانًا ومضاعفات أصغر لكل خطوة. المزيد من الألغام يؤدي إلى كشفات أكثر خطورة مع مضاعفات أكبر. حدد هدفًا أو استخدم وقف الخسارة لإدارة التقلبات. الحفاظ على حجم رهان ثابت وسحب الأرباح بانضباط يساعد في إبقاء التذبذب تحت السيطرة."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"نسبة العائد إلى اللاعب (RTP) لهذه اللعبة هي {rtpValue}%.",rtpTitle:"نسبة العائد إلى اللاعب: {rtpValue}%",strategyTitle:"استراتيجية",tutorial:"برنامج تعليمي",wheel:{how1:"حدد مستوى المخاطرة وعدد الأقسام.",how2:"حدد مبلغ رهانك وضع رهانك.",how3:"تدور العجلة وتهبط على مقطع.",how4:"دفع أرباحك هو الرهان مضروبًا في المُضاعِف المعروض على الجزء الذي يتوقف عنده العجلة.",how5:"كل جزء له مضاعف مختلف بناءً على مستوى المخاطرة وعدد الأجزاء الذي قمت باختياره.",overview:"قم بتدوير العجلة وشاهد أين ستتوقف. اختر مستوى المخاطرة وعدد الأقسام قبل كل دورة - المخاطرة الأقل تمنحك انتصارات أكثر تكرارًا مع مضاعفات أصغر؛ بينما المخاطرة الأعلى تمنحك انتصارات نادرة مع مضاعفات أكبر.",provablyFair:"يولد نظام العشوائية القابل للتحقق لدينا نتيجة كل جولة في Wheel. بعد كل جولة، يمكنك عرض المدخلات والدليل، والتحقق من النتيجة باستخدام مفتاحنا العام، وإعادة إنتاج نفس النتيجة.",strategyTip:"المخاطرة المنخفضة تقدم أرباحاً ثابتة وصغيرة. المخاطرة المتوسطة توازن بين التكرار وقيمة الأرباح. المخاطرة العالية تستهدف مضاعفات نادرة ولكنها ضخمة. زيادة عدد الأقسام ترفع الإمكانيات القصوى لكنها تقلل من تكرار الفوز."},roulette:{how1:"انقر على الشبكة لوضع الرقائق على رهاناتك المختارة.",how2:"اضبط مبلغ الرهان لكل نقرة باستخدام أزرار 1/2 و 2X.",how3:"ضع رهانك لتدوير العجلة.",how4:"تهبط الكرة على رقم عشوائي من 0 إلى 36 (أو 00 للنسخة الأمريكية).",how5:"الرهانات الفائزة تدفع حسب احتمالاتها؛ وتخسر جميع الرقائق الأخرى.",overview:"ضع الرقائق على شبكة الرهان وقم بتدوير العجلة. راهن على أرقام فردية أو مجموعات أرقام أو ألوان أو فردي/زوجي. تهبط الكرة على جيب عشوائي، والرهانات المطابقة تدفع حسب احتمالاتها.",provablyFair:"نظام العشوائية القابل للتحقق لدينا يولد كل دورة روليت. بعد كل جولة، يمكنك عرض المدخلات والإثبات، والتحقق من النتيجة بمفتاحنا العام، وإعادة إنتاج نفس النتيجة.",strategyTip:"الرهانات الخارجية (أحمر/أسود، فردي/زوجي) توفر فرصة فوز تقارب 50% مع دفع 2X. الرهانات الداخلية على أرقام فردية تدفع حتى 36X لكنها نادرة. وزع رقائقك لموازنة المخاطر والمكافآت."}},games:{advancedDice:{between:"بين",boundsLower:"الحد الأدنى",boundsUpper:"الحد الأعلى",inside:"داخل",outside:"خارج",rollMode:"وضع الرمي",secondBoundsLower:"الحد الأدنى الثاني",secondBoundsUpper:"الحد الأعلى الثاني"},dice:{rollOver:"تدوير فوق",rollUnder:"ارم أقل"},keno:{autoPick:"اختيار تلقائي",clearTable:"مسح",kenoGameGrid:"شبكة لعبة كينو",kenoNumber:"رقم كينو {value}",selectAtLeastOneTile:"اختر مربعًا واحدًا على الأقل",selectTileToAutobet:"اختر مربعًا واحدًا على الأقل"},limbo:{multiplierError:"يجب أن يكون بين {min} و {max}",targetMultiplier:"المضاعف",winChanceError:"يجب أن يكون بين {min} و {max}"},mines:{cashout:"السحب النقدي",gem:"جوهرة",gems:"الأحجار الكريمة",mine:"منجم",mines:"الألغام",nextGem:"الجوهرة التالية",selectRandomTile:"اختر مربعا عشوائيا",selectTileToAutobet:"اختر مربعًا واحدًا على الأقل",tile:"بلاطة",unrevealed:"غير مكشوف"},wheel:{segments:"شرائح"},roulette:{chipValue:"قيمة الشريحة",totalBetAmount:"إجمالي مبلغ الرهان"}},hotkeys:{clearBets:"مسح الرهانات",doubleBet:"مضاعفة مبلغ الرهان",doubleChipValue:"مضاعفة قيمة الشريحة",doubleTotalBet:"مضاعفة إجمالي الرهان",halveBet:"نصف مبلغ الرهان",halveChipValue:"تنصيف قيمة الشريحة",halveTotalBet:"تنصيف إجمالي الرهان",higherTarget:"هدف أعلى",info:"عند تفعيل مفاتيح الاختصار، ستظل مفعلة لهذا اللعبة حتى يتم تعطيلها. على الرغم من أن بعض الألعاب تشترك في نفس اختصارات المفاتيح، يُنصح دائمًا بتأكيد مفاتيح الاختصار لكل لعبة.",lowerTarget:"الهدف الأدنى",makeBet:"ضع رهان",resetChipValue:"إعادة تعيين قيمة الشريحة",toggleWinCondition:"تبديل شرط الفوز",undo:"تراجع",zeroBet:"مبلغ رهان صفري"},modals:{betResult:"نتيجة الرهان",fairnessAndHistory:"النزاهة والسجل",gameArea:"منطقة اللعبة",gameControls:"عناصر التحكم في اللعبة",gameInfo:"معلومات اللعبة"}}});var q4=D1((Gn,ji)=>{ji.exports={accessibility:{sliderValue:"{value} von {max}"},alerts:{autobetStarted:"Autobet-Modus gestartet",autobetStopped:"Autobet-Modus gestoppt",betAmountAboveMaxBet:"Der maximale Einsatz beträgt {value}",betAmountBelowMinBet:"Der Mindesteinsatz beträgt {value}",betLimitReached:"Einsatzlimit erreicht",errorProcessingBet:"Bei der Verarbeitung Ihrer Wette ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.",failedToLoadBetData:"Fehler beim Laden der Wettdaten",gameError:"Bei der Verarbeitung Ihrer Wette ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.",insufficientBalance:"Unzureichendes Guthaben",maxPayoutExceeded:"Maximale Auszahlung überschritten",notEnoughBalance:"Nicht genug Guthaben"},autobet:{configureAutobet:"Autobet konfigurieren",games:"Spiele",games10:"10 Spiele",games100:"100 Spiele",games25:"25 Spiele",games5:"5 Spiele",games50:"50 Spiele",increase:"Erhöhen",infinite:"Unendlich",onLoss:"Bei Verlust",onWin:"Bei Gewinn",reset:"Zurücksetzen",startAutobet:"Autobet starten",stopAutobet:"Autobet stoppen",stopOnLoss:"Stopp bei Verlust",stopOnProfit:"Bei Gewinn stoppen"},clipboard:{linkCopied:"Link in die Zwischenablage kopiert!"},common:{auto:"Auto",back:"Zurück",balance:"Guthaben",bet:"Einsatzbetrag",betAmount:"Einsatzbetrag",cancel:"Abbrechen",cashOut:"Auszahlen",classic:"Klassisch",confirm:"Bestätigen",copied:"Kopiert",currency:"Währung",deposit:"Einzahlung",disableHotkeys:"Hotkeys deaktivieren",disableMaxBet:"Maximalen Einsatz deaktivieren",enableHotkeys:"Hotkeys aktivieren",enableMaxBet:"Maximalen Einsatz aktivieren",footerNavigation:"Fußzeilennavigation",gameInfo:"Spielinfo",gameName:"Spielname",high:"Hoch",history:"Verlauf",hotkeys:"Tastenkürzel",id:"ID",instantBet:"Sofortwette",loading:"Wird geladen...",loadMore:"Mehr laden",lobby:"Zurück zur Lobby",low:"Niedrig",manual:"Handbuch",max:"MAX",medium:"Mittel",multiplier:"Multiplikator",payout:"Auszahlung",placeBet:"Wette platzieren",profit:"Gewinn",profitOnWin:"Gewinn bei Gewinn",provablyFair:"Nachweislich fair",risk:"Risiko",roundId:"Runden-ID",saveChanges:"Änderungen speichern",shareReplay:"Replay teilen",siteInformation:"Spielinformationen",space:"SPACE",support:"Unterstützung",targetMultiplier:"Multiplikator",thisFieldIsRequired:"Dieses Feld ist erforderlich",timestamp:"Zeit",toggleHotkeys:"Hotkeys umschalten",viewFairnessInformation:"Fairness-Information anzeigen",viewHistory:"Verlauf anzeigen",volume:"Lautstärke",winChance:"Gewinnchance"},errors:{dice:{multiplierRange:"Muss zwischen {min} und {max} liegen",winChanceRange:"Muss zwischen {min} und {max} liegen"},noWheelData:"Keine Raddaten verfügbar",requestDropped:"Anfrage abgebrochen"},fairness:{activeClientSeed:"Aktiver Client Seed",enterClientSeed:"Client Seed eingeben",enterProof:"Beweis eingeben",enterPublicKey:"Öffentlichen Schlüssel eingeben",enterRandomness:"Zufälligkeit eingeben",enterRequest:"Anfrage eingeben",info:{p1:"Das Ergebnis jeder Runde stammt aus nachweislich zufälligen Zahlen, nicht aus verborgener Serverlogik. Wir erstellen einen deterministischen Seed aus Werten, die für deine Runde einzigartig sind – gameId, tenantId, tenantUserId, eine fortlaufende nonce (eine pro abgeschlossener Runde) sowie deinen clientSeed. Das garantiert, dass jede Runde einzigartig und reproduzierbar ist: gleiche Eingaben → gleicher Zufallsstrom → gleiches Ergebnis.",p2:"Dieser Seed wird gemäß dem IETF-Spezifikationsentwurf draft-irtf-cfrg-vrf-15 durch eine Elliptic Curve Verifiable Random Function (ECVRF) verarbeitet. Unser Server verwendet seinen privaten Schlüssel, um einen Zufallswert und einen kryptografischen Nachweis (proofString) zu erzeugen. Jeder, der über unseren öffentlichen Schlüssel verfügt, kann diesen Nachweis für die angegebenen Eingaben unabhängig überprüfen—und so bestätigen, dass die Zufälligkeit tatsächlich aus dem Seed stammt und nicht manipuliert wurde. Das SDK ist in TypeScript geschrieben, während die Kernkryptografie für Leistung und Sicherheit die fastcrypto Rust-Bibliothek über NAPI-RS verwendet.",p3:"Nach der Verifizierung dient die VRF-Ausgabe als Seed für einen deterministischen Zufalls-Byte-Generator (hashSequence). Die Spiele wandeln diese Bytes durch deterministische, unbeeinflusste Logik in Ergebnisse um. Da der Prozess deterministisch ist und sich der nonce nach jeder abgeschlossenen Runde erhöht, erhalten Sie sowohl wiederholbare Prüfungen (die gleiche Runde exakt rekonstruieren) als auch bei jedem Mal neue, sich nicht wiederholende Zufälligkeiten.",p4:"Nach einer Runde hast du die Eingaben (einschließlich deines clientSeed und des Nonce der Runde), die VRF-Ausgabe, den proofString und unseren öffentlichen Schlüssel. Verwende einen beliebigen ECVRF-Verifizierer oder unsere Bibliotheken, um: (1) den Nachweis anhand der Eingaben und des öffentlichen Schlüssels zu überprüfen und (2) die gleiche hashSequence und das gleiche Ergebnis erneut zu erzeugen. Unser privater Schlüssel verlässt niemals die sicheren Server; der öffentliche Schlüssel kann sicher clientseitig für unabhängige Überprüfungen verwendet werden.",step1Desc:"Wir kombinieren gameId, tenantId, tenantUserId, eine rundenbasierte nonce und deinen clientSeed. Gleiche Eingaben erzeugen immer denselben Zufallsstrom und dasselbe Ergebnis.",step1Title:"Deterministischer Seed",step2Title:"Zufälligkeit erzeugen",step3Desc:"Jeder kann die proofString für die angegebenen Eingaben mit unserem öffentlichen Schlüssel überprüfen. Dies bestätigt, dass die Zufälligkeit mit dem Seed übereinstimmt und nicht manipuliert wurde.",step3Title:"Beweis überprüfen",step4Title:"Ergebnisse ableiten",step5Title:"Fortpflanzung"},invalidGame:"Ungültiger Spieltyp angegeben.",learnMore:"Mehr erfahren",newClientSeed:"Neuer Client Seed",noBettingHistory:"Keine Wettverlauf",outcomeCalculationInfo:"Dieses Spiel verwendet einen nachweislich fairen Algorithmus, der ein faires und transparentes Ergebnis gewährleistet.",outcomeNotVerified:"Das Ergebnis dieses Spiels konnte nicht überprüft werden. Bitte überprüfen Sie Ihre Eingaben und versuchen Sie es erneut.",outcomeVerified:"Das Ergebnis dieser Runde wurde mit unserem öffentlichen Schlüssel verifiziert und ist nachweislich fair.",proof:"Nachweisen",publicKey:"Aktiver öffentlicher Schlüssel",randomness:"Zufälligkeit",request:"Anfrage",saveClientSeed:"Kundensamen speichern",verifyOutcome:"Ergebnis überprüfen"},gameInfo:{advancedDice:{how1:"Wähle deinen Würfelmodus: Innen, Außen oder Zwischen.",how2:"Ziehe die Regler, um deine Gewinnzone(n) festzulegen.",how3:"Lege deinen Einsatz fest und platziere deine Wette.",how4:"Eine Zufallszahl zwischen 0 und 100 wird generiert.",how5:"Gewinne, wenn das Ergebnis in deine gewählte(n) Zone(n) fällt.",overview:"Advanced Dice ermöglicht dir, eigene Gewinnzonen festzulegen. Wähle Innen, um zu gewinnen, wenn das Ergebnis in deinem Bereich landet, Außen, um zu gewinnen, wenn es außerhalb liegt, oder Zwischen für zwei Gewinnzonen.",provablyFair:"Unser verifizierbares Zufallssystem generiert jedes Advanced Dice Ergebnis. Nach jeder Runde kannst du die Eingaben und den Nachweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel verifizieren und dasselbe Ergebnis reproduzieren.",strategyTip:"Breitere Zonen bieten häufigere Gewinne, aber kleinere Multiplikatoren. Schmale Zonen sind riskanter, zahlen aber mehr. Der Zwischen-Modus ermöglicht flexible Strategien mit zwei Bereichen."},diamonds:{how1:"Legen Sie Ihren Einsatz fest und platzieren Sie Ihre Wette.",how2:"Aus einer festgelegten Auswahl an Edelsteinsorten werden fünf Diamanten enthüllt.",how3:"Ihr Ergebnis wird wie eine Pokerhand bewertet: Paare, zwei Paare, Drilling, Full House, Vierling und Fünfling.",how4:"Jeder Handtyp hat seinen eigenen Multiplikator; höherwertige Hände bringen höhere Multiplikatoren, während keine Hand den Wert 0x auszahlt.",how5:"Ihre Auszahlung entspricht Ihrem Einsatz multipliziert mit dem angezeigten Multiplikator für das resultierende Blatt.",overview:"Diamonds ist ein Kombinationsspiel mit fünf Walzen. In jeder Runde werden fünf Diamanten aus verschiedenen Edelsteinarten aufgedeckt. Ziel ist es, Kombinationen wie beim Poker zu erzielen – Paare, Drillinge, Full Houses usw.",provablyFair:"Unser System zur verifizierbaren Zufälligkeit wählt jedes Diamantergebnis aus. Nach jeder Runde können Sie die zugrunde liegenden Zufallswerte und den Nachweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel verifizieren und dieselbe Hand reproduzieren.",strategyTip:"Diamonds ist ein Spiel mit hoher Volatilität und festen Quoten, bei dem Sie nach großen, pokerähnlichen Händen suchen. Ihr Haupthebel ist Ihre Spielweise. Setzen Sie kleinere, konstante Beträge, um Durststrecken zu überbrücken, oder erhöhen Sie Ihre Einsätze gelegentlich, wenn Sie auf Premium-Hände aus sind."},dice:{how1:"Wähle zwischen Unterrollen und Überrollen.",how2:"Legen Sie Ihre Zielzahl fest.",how3:"Legen Sie Ihren Einsatz fest und platzieren Sie Ihre Wette.",how4:"Wir generieren ein zufälliges Ergebnis (das im Spiel auf einer Skala von 0 bis 99,99 angezeigt wird).",how5:"Sie gewinnen, wenn das Ergebnis in Ihrem gewählten Bereich liegt.",how6:"Ihre Auszahlung entspricht Ihrem Einsatz multipliziert mit dem angezeigten Multiplikator, der sich bei jeder Bewegung des Schiebereglers aktualisiert.",overview:"Lege eine Zielzahl fest und entscheide, ob der Wurf darunter oder darüber landen soll. Durch Verschieben des Schiebereglers veränderst du deine Gewinnchance und den Multiplikator – eine höhere Chance senkt den Multiplikator, eine niedrigere Chance erhöht ihn. Jede Runde ist ein unabhängiger Wurf auf der Spielskala.",provablyFair:"Unser verifizierbares Zufallssystem generiert jeden Würfelwurf. Nach jeder Runde können Sie die Eingaben und den Nachweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel verifizieren und dasselbe Ergebnis reproduzieren.",strategyTip:"Wähle deine Volatilität. Eine geringere Gewinnchance führt zu höheren Multiplikatoren, aber selteneren Treffern. Eine höhere Gewinnchance führt zu niedrigeren Multiplikatoren, aber häufigeren Gewinnen. Passe deine Einsätze an dein Budget an, um gleichmäßigere Gewinne zu erzielen."},keno:{how1:"Wähle 1–10 Spielsteine auf dem 1–40-Brett aus.",how2:"Legen Sie Ihren Einsatz fest und platzieren Sie Ihre Wette.",how3:"Wir ziehen 10 Gewinnzahlen; Ihre Treffer sind hervorgehoben.",how4:"Die Auszahlungen hängen davon ab, wie viele Spielsteine Sie ausgewählt haben und wie viele Treffer Sie erzielt haben – siehe Auszahlungstabelle.",how5:"Sie können nie mehr Zahlen treffen, als Sie ausgewählt haben, und die maximale Auswahl beträgt 10.",overview:"Wählen Sie Ihre Glückszahlen und versuchen Sie, die gezogenen Zahlen zu treffen. Sie können 1 bis 10 Zahlen zwischen 1 und 40 auswählen. Wir ziehen dann 10 Zahlen. Je mehr Ihrer Tipps stimmen, desto höher ist Ihr Gewinn.",provablyFair:"Unser verifizierbares Zufallssystem generiert jede Keno-Ziehung. Nach jeder Runde können Sie die Eingaben und den Nachweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel überprüfen und dasselbe Ergebnis reproduzieren.",strategyTip:"Wählen Sie Ihre Risikobereitschaft. Weniger Auswahlfelder bedeuten seltenere Gewinne, aber deutlich höhere Multiplikatoren. Mehr Auswahlfelder führen zu häufigeren Treffern, aber geringeren durchschnittlichen Gewinnen pro Treffer. Ein mittlerer Bereich bietet ein ausgewogenes Verhältnis zwischen Trefferquote und Auszahlung. Passen Sie Ihren Einsatz an Ihre Risikobereitschaft und Ihr Budget an."},limbo:{how1:"Legen Sie Ihren Zielmultiplikator fest.",how2:"Legen Sie Ihren Einsatz fest und platzieren Sie Ihre Wette.",how3:"Wir generieren einen zufälligen Ergebnismultiplikator.",how4:"Sie gewinnen, wenn das Ergebnis größer oder gleich Ihrem Zielwert ist.",how5:"Ihre Auszahlung entspricht Ihrem Einsatz multipliziert mit Ihrem Zielmultiplikator; andernfalls verlieren Sie Ihren Einsatz.",overview:"Bei Limbo legen Sie Ihre gewünschte Auszahlung fest, und das Spiel ermittelt einen zufälligen Multiplikator. Liegt das Ergebnis mindestens bei Ihrem Zielwert, gewinnen Sie. Liegt es darunter, verlieren Sie. Eine höhere Gewinnchance senkt den Multiplikator, eine niedrigere erhöht ihn.",provablyFair:"Unser verifizierbares Zufallssystem erzeugt jedes Limbo-Ergebnis. Nach jeder Runde können Sie die Eingaben und den Nachweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel verifizieren und dasselbe Ergebnis reproduzieren.",strategyTip:"Niedrigere Ziele führen häufiger zum Sieg, zahlen aber weniger aus, während höhere Ziele seltener treffen, aber deutlich höhere Gewinne bringen. Setzen Sie sich am besten ein festes Ziel pro Spielsitzung oder streuen Sie gelegentlich Wetten auf größere Ziele ein und achten Sie auf eine gleichbleibende Einsatzhöhe, um die Varianz zu kontrollieren."},limitContent:"Der maximal erreichbare Multiplikator in diesem Spiel ist {multiplier}X. Die maximal erreichbare Auszahlung beträgt {payout}.",limitTitle:"Grenzen",mines:{how1:"Wähle die Anzahl der Minen für diese Runde.",how2:"Legen Sie Ihren Einsatz fest und platzieren Sie Ihre Wette.",how3:"Klicke auf die Spielsteine, um sie aufzudecken: Ein sicheres Spielstein erhöht deinen Multiplikator; eine Mine beendet die Runde.",how4:"Sie können sich Ihren Gewinn jederzeit auszahlen lassen, um Ihren aktuellen Multiplikator zu sichern.",how5:"Ihre Auszahlung entspricht Ihrem Einsatz multipliziert mit dem aktuellen Multiplikator zum Zeitpunkt der Auszahlung.",how6:"Die Runde endet, wenn Sie Ihr Geld auszahlen lassen oder eine Mine aufgedeckt wird.",overview:"Bei Mines geht es darum, sichere Plättchen auszuwählen und zu entscheiden, wann man sich den Gewinn auszahlen lässt. Vor Rundenbeginn legt man fest, wie viele Minen auf dem Spielbrett versteckt sein sollen. Jedes aufgedeckte sichere Plättchen erhöht den Multiplikator. Trifft man auf eine Mine, endet die Runde ohne Auszahlung.",provablyFair:"Unser verifizierbares Zufallssystem generiert das Layout der versteckten Minen für jedes Spielbrett. Nach jeder Runde können Sie die Eingaben und den Nachweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel verifizieren und dasselbe Ergebnis reproduzieren.",strategyTip:"Wählen Sie Ihre Volatilität. Weniger Minen bedeuten sicherere Ergebnisse und kleinere Multiplikatoren pro Schritt. Mehr Minen führen zu riskanteren Ergebnissen mit höheren Multiplikatoren. Setzen Sie sich ein Kursziel oder verwenden Sie einen Stop-Loss, um Kursschwankungen zu begrenzen. Konstante Einsatzhöhen und disziplinierte Auszahlungen helfen, die Varianz zu kontrollieren."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Die Auszahlungsquote (RTP) für dieses Spiel beträgt {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Strategie",tutorial:"Tutorial",wheel:{how1:"Wählen Sie Ihr Risikoniveau und die Anzahl der Segmente.",how2:"Legen Sie Ihren Einsatz fest und platzieren Sie Ihre Wette.",how3:"Das Rad dreht sich und landet auf einem Segment.",how4:"Ihre Auszahlung beträgt Ihren Einsatz × den Multiplikator, der auf dem Segment angezeigt wird, in dem das Rad stehen bleibt.",how5:"Jedes Segment hat einen anderen Multiplikator, der auf Ihrem gewählten Risikoniveau und der Anzahl der Segmente basiert.",overview:"Drehe das Rad und schau, wo es stehen bleibt. Wähle vor jedem Dreh dein Risikoniveau und die Anzahl der Segmente – geringeres Risiko führt zu häufigeren Gewinnen mit kleineren Multiplikatoren; höheres Risiko zu seltenen Gewinnen mit größeren Multiplikatoren.",provablyFair:"Unser verifizierbares Zufallssystem generiert jedes Ergebnis des Glücksrads. Nach jeder Runde können Sie die Eingaben und den Nachweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel verifizieren und dasselbe Ergebnis reproduzieren.",strategyTip:"Niedriges Risiko bietet stetige, kleinere Gewinne. Mittleres Risiko bietet ein ausgewogenes Verhältnis zwischen Häufigkeit und Auszahlung. Hohes Risiko zielt auf seltene, aber extrem hohe Multiplikatoren ab. Mehr Segmente erhöhen das maximale Potenzial, verringern aber die Gewinnhäufigkeit."},roulette:{how1:"Klicken Sie auf das Raster, um Chips auf Ihre gewählten Wetten zu setzen.",how2:"Passen Sie Ihren Einsatz pro Klick mit den 1/2- und 2X-Tasten an.",how3:"Platzieren Sie Ihren Einsatz, um das Rad zu drehen.",how4:"Die Kugel landet auf einer zufälligen Zahl von 0–36 (oder 00 bei American).",how5:"Gewinnende Wetten werden nach ihren Quoten ausgezahlt; alle anderen Chips gehen verloren.",overview:"Setzen Sie Chips auf das Wettfeld und drehen Sie das Rad. Wetten Sie auf einzelne Zahlen, Zahlengruppen, Farben oder Gerade/Ungerade. Die Kugel landet in einem zufälligen Fach, und passende Wetten werden nach ihren Quoten ausgezahlt.",provablyFair:"Unser verifizierbares Zufallssystem generiert jeden Roulette-Dreh. Nach jeder Runde können Sie die Eingaben und den Beweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel verifizieren und dasselbe Ergebnis reproduzieren.",strategyTip:"Außenwetten (Rot/Schwarz, Gerade/Ungerade) bieten fast 50% Gewinnchance mit 2X-Auszahlung. Innenwetten auf einzelne Zahlen zahlen bis zu 36X, treffen aber selten. Verteilen Sie Ihre Chips, um Risiko und Gewinn auszugleichen."}},games:{advancedDice:{between:"Zwischen",boundsLower:"Untere Grenze",boundsUpper:"Obere Grenze",inside:"Innerhalb",outside:"Außerhalb",rollMode:"Würfelmodus",secondBoundsLower:"Zweite untere Grenze",secondBoundsUpper:"Zweite obere Grenze"},dice:{rollOver:"Sich umdrehen",rollUnder:"Roll Under"},keno:{autoPick:"Automatische Auswahl",clearTable:"Klar",kenoGameGrid:"Keno-Spielraster",kenoNumber:"Keno-Nummer {value}",selectAtLeastOneTile:"Wählen Sie mindestens eine Kachel aus.",selectTileToAutobet:"Wählen Sie mindestens eine Kachel aus."},limbo:{multiplierError:"Muss zwischen {min} und {max} liegen.",targetMultiplier:"Multiplikator",winChanceError:"Muss zwischen {min} und {max} liegen."},mines:{cashout:"Bargeldabhebung",gem:"Juwel",gems:"Edelsteine",mine:"Meins",mines:"Minen",nextGem:"Nächstes Juwel",selectRandomTile:"Wähle zufällige Kachel",selectTileToAutobet:"Wählen Sie mindestens eine Kachel aus.",tile:"Fliese",unrevealed:"Unenthüllt"},wheel:{segments:"Segmente"},roulette:{chipValue:"Chipwert",totalBetAmount:"Gesamteinsatz"}},hotkeys:{clearBets:"Einsätze Löschen",doubleBet:"Doppelter Einsatz",doubleChipValue:"Chipwert Verdoppeln",doubleTotalBet:"Gesamteinsatz Verdoppeln",halveBet:"Einsatz halbieren",halveChipValue:"Chipwert Halbieren",halveTotalBet:"Gesamteinsatz Halbieren",higherTarget:"Höheres Ziel",info:"Sind Hotkeys aktiviert, bleiben sie für dieses Spiel aktiv, bis sie deaktiviert werden. Obwohl einige Spiele ähnliche Tastenbelegungen verwenden, empfiehlt es sich, die Hotkeys für jedes Spiel einzeln zu überprüfen.",lowerTarget:"Unteres Ziel",makeBet:"Wette platzieren",resetChipValue:"Chipwert Zurücksetzen",toggleWinCondition:"Umschalt-Win-Bedingung",undo:"Rückgängig",zeroBet:"Einsatzbetrag Null"},modals:{betResult:"Wettergebnis",fairnessAndHistory:"Fairness und Geschichte",gameArea:"Spielbereich",gameControls:"Spielsteuerung",gameInfo:"Spielinformationen"}}});var T4=D1((Un,Ei)=>{Ei.exports={accessibility:{sliderValue:"{value} out of {max}"},alerts:{autobetStarted:"Started autobet mode",autobetStopped:"Stopped autobet mode",betAmountAboveMaxBet:"Maximum bet is {value}",betAmountBelowMinBet:"Minimum bet is {value}",betLimitReached:"Bet limit reached",errorProcessingBet:"There was an error processing your bet. Please try again.",failedToLoadBetData:"Failed to load bet data",gameError:"There was an error processing your bet. Please try again.",insufficientBalance:"Insufficient balance",notEnoughBalance:"Not enough balance",maxPayoutExceeded:"Max payout exceeded"},autobet:{configureAutobet:"Configure Autobet",games:"Games",games10:"10 Games",games100:"100 Games",games25:"25 Games",games5:"5 Games",games50:"50 Games",increase:"Increase",infinite:"Infinite",onLoss:"On Loss",onWin:"On Win",reset:"Reset",startAutobet:"Start Autobet",stopAutobet:"Stop Autobet",stopOnLoss:"Stop on Loss",stopOnProfit:"Stop On Profit"},clipboard:{linkCopied:"Link copied to clipboard!"},common:{auto:"Auto",back:"Back",balance:"Balance",bet:"Bet Amount",betAmount:"Bet Amount",cancel:"Cancel",cashOut:"Cash Out",classic:"Classic",confirm:"Confirm",copied:"Copied",currency:"Currency",deposit:"Deposit",disableHotkeys:"Disable Hotkeys",disableMaxBet:"Disable Max Bet",enableHotkeys:"Enable Hotkeys",enableMaxBet:"Enable Max Bet",footerNavigation:"Footer Navigation",gameInfo:"Game Info",gameName:"Game Name",high:"High",history:"History",hotkeys:"Hotkeys",id:"ID",instantBet:"Instant Bet",loading:"Loading...",loadMore:"Load More",lobby:"Back to Lobby",low:"Low",manual:"Manual",max:"MAX",medium:"Medium",multiplier:"Multiplier",payout:"Payout",placeBet:"Place Bet",profit:"Profit",profitOnWin:"Profit On Win",provablyFair:"Provably Fair",risk:"Risk",roundId:"Round ID",saveChanges:"Save Changes",shareReplay:"Share Replay",siteInformation:"Game Information",space:"SPACE",support:"Support",targetMultiplier:"Multiplier",thisFieldIsRequired:"This field is required",timestamp:"Time",toggleHotkeys:"Toggle Hotkeys",viewFairnessInformation:"View Fairness Information",viewHistory:"View History",volume:"Volume",winChance:"Win Chance"},errors:{dice:{multiplierRange:"Must be between {min} and {max}",winChanceRange:"Must be between {min} and {max}"},noWheelData:"No wheel data available",requestDropped:"Request dropped"},fairness:{activeClientSeed:"Active Client Seed",enterClientSeed:"Enter Client Seed",enterProof:"Enter Proof",enterPublicKey:"Enter Public Key",enterRandomness:"Enter Randomness",enterRequest:"Enter Request",info:{p1:"Every round’s result comes from verifiable randomness, not hidden server logic. We build a deterministic seed from values unique to your round—gameId, tenantId, tenantUserId, an incrementing nonce (one per completed round), plus your clientSeed. This guarantees each round is unique and reproducible: same inputs → same random stream → same outcome.",p2:"That seed is run through an Elliptic Curve Verifiable Random Function (ECVRF) per the IETF spec draft-irtf-cfrg-vrf-15. Our server uses its private key to produce a random value and a cryptographic proof (proofString). Anyone with our public key can independently verify that proof for the given inputs—confirming the randomness came from the seed and wasn’t tampered with. The SDK is TypeScript, while the core crypto uses the fastcrypto Rust library via NAPI-RS for performance and safety.",p3:"Once verified, the VRF output seeds a deterministic random byte generator (hashSequence). The games transform those bytes into outcomes using deterministic, unbiased logic. Because the process is deterministic and the nonce advances every completed round, you get both replayable audits (recreate the same round exactly) and fresh, non-repeating randomness each time.",p4:"After a round, you have the inputs (including your clientSeed and the round’s nonce), the VRF output, the proofString, and our public key. Use any ECVRF verifier or our libraries to: (1) verify the proof against the inputs and public key, and (2) regenerate the same hashSequence and outcome. Our private key never leaves secure servers; the public key is safe to use client-side for independent checks.",step1Desc:"We combine gameId, tenantId, tenantUserId, a per-round nonce, and your clientSeed. Same inputs always produce the same random stream and outcome.",step1Title:"Deterministic Seed",step2Title:"Generate Randomness",step3Desc:"Anyone can verify the proofString for the given inputs using our public key. This confirms the randomness matches the seed and was not tampered with.",step3Title:"Verify Proof",step4Title:"Derive Outcomes",step5Title:"Reproduction"},invalidGame:"Invalid game type provided.",learnMore:"Learn More",newClientSeed:"New Client Seed",noBettingHistory:"No betting history",outcomeCalculationInfo:"This game uses a provably fair algorithm that ensures the outcome is fair and transparent.",outcomeNotVerified:"The outcome of this game could not be verified. Double check you have entered the correct information and try again.",outcomeVerified:"The outcome of this round has been verified with our public key and is provably fair.",proof:"Proof",publicKey:"Active Public Key",randomness:"Randomness",request:"Request",saveClientSeed:"Save Client Seed",verifyOutcome:"Verify Outcome"},gameInfo:{advancedDice:{how1:"Select your roll mode: Inside, Outside, or Between.",how2:"Drag the sliders to define your winning zone(s).",how3:"Set your bet amount and place your bet.",how4:"A random number between 0 and 100 is generated.",how5:"Win if the result falls within your chosen zone(s).",overview:"Advanced Dice lets you set custom win zones. Choose Inside to win when the result lands within your range, Outside to win when it lands beyond your range, or Between to split into two winning zones.",provablyFair:"Our verifiable randomness system generates every Advanced Dice outcome. After every round, you can view the inputs and proof, verify the result with our public key, and reproduce the same result.",strategyTip:"Wider zones offer more frequent wins but smaller multipliers. Narrow zones risk more but pay bigger. Between mode lets you target two ranges for flexible strategies."},diamonds:{how1:"Set your bet amount and place your bet.",how2:"Five diamonds are revealed from a fixed set of gem types.",how3:"Your result is evaluated like a poker hand: pairs, two pairs, three-of-a-kind, full house, four-of-a-kind, and five-of-a-kind.",how4:"Each hand type has its own multiplier; higher-value hands award bigger multipliers, while no made hand pays 0X.",how5:"Your payout is your bet multiplied by the shown multiplier for the resulting hand.",overview:"Diamonds is a five-reel matching game. Each round reveals five diamonds from a set of different gem types. Your goal is to land poker-style combinations - pairs, three-of-a-kind, full houses, and so on.",provablyFair:"Our verifiable randomness system selects each diamond result. After every round, you can view the underlying random values and proof, verify the outcome with our public key, and reproduce the same hand.",strategyTip:"Diamonds is a high-volatility, fixed-odds game where you're hunting for big, poker-style hands. Your main lever is how aggressive you want to be. Use smaller, steady bets if you want to ride out dry streaks, or occasionally push your bet size when you're chasing premium hands."},dice:{how1:"Choose roll under or roll over.",how2:"Set your target number.",how3:"Set your bet amount and place your bet.",how4:"We generate one random result (displayed on the 0–99.99 scale in-game).",how5:"You win if the result is in your chosen range.",how6:"Your payout is bet x the shown multiplier, which updates as you move the slider.",overview:"Set a target number and choose whether the roll will land under or over it. Moving the slider changes your win chance and multiplier—a higher chance lowers the multiplier, a lower chance increases it. Each round is one independent roll on the game's scale.",provablyFair:"Our verifiable randomness system generates every Dice roll. After every round, you can view the inputs and proof, verify the result with our public key, and reproduce the same result.",strategyTip:"Pick your volatility. A lower win chance yields bigger multipliers but rarer hits. A higher win chance yields smaller multipliers but more frequent wins. Size your bets to your bankroll for steadier swings."},keno:{how1:"Pick 1–10 tiles on the 1–40 board.",how2:"Set your bet amount and place your bet.",how3:"We draw 10 winning numbers; your matches are highlighted.",how4:"Payouts depend on how many tiles you selected and how many hits you got—check the paytable.",how5:"You can never hit more numbers than you selected, and the maximum selection is 10.",overview:"Pick your lucky numbers and try to match the draw. You can choose 1–10 numbers from 1–40, and we then draw 10 numbers. The more of your picks that hit, the higher your payout.",provablyFair:"Our verifiable randomness system generates every Keno draw. After every round, you can view the inputs and proof, verify the result with our public key, and reproduce the same result.",strategyTip:"Choose your volatility. Picking fewer spots means rarer wins but much bigger multipliers. More spots give more frequent hits but smaller average returns per hit. A middle range balances hit rate and payout. Adjust your bet size to match your risk preference and bankroll."},limbo:{how1:"Set your target multiplier.",how2:"Set your bet amount and place your bet.",how3:"We generate one random outcome multiplier.",how4:"You win if the outcome is greater than or equal to your target.",how5:"Your payout is bet x your target multiplier; otherwise, you lose your bet.",overview:"In Limbo, you set your desired payout, and the game draws a single random outcome multiplier. If the outcome is at least your target, you win. If it's lower, you lose. A higher chance lowers the multiplier; a lower chance increases it.",provablyFair:"Our verifiable randomness system generates every Limbo outcome. After every round, you can view the inputs and proof, verify the result with our public key, and reproduce the same result.",strategyTip:"Lower targets win more often but pay less, while higher targets hit rarely but pay much more. Consider a fixed target per session or mix in occasional long shots, and size bets consistently to manage variance."},limitContent:"The maximum achievable multiplier for this game is {multiplier}X. The maximum achievable payout is {payout}",limitTitle:"Limits",mines:{how1:"Choose the number of mines for this round.",how2:"Set your bet amount and place your bet.",how3:"Click tiles to reveal them: a safe tile increases your multiplier; a mine ends the round.",how4:"You can cash out at any time to lock in your current multiplier.",how5:"Your payout is bet x the current multiplier when you cash out.",how6:"The round ends when you cash out or when a mine is revealed.",overview:"Mines is about picking safe tiles and deciding when to cash out. Before the round starts, choose how many mines will be hidden on the board. Each safe tile you reveal increases your multiplier. Hit a mine, and the round ends with no payout.",provablyFair:"Our verifiable randomness system generates each board's hidden mine layout. After every round, you can view the inputs and proof, verify the result with our public key, and reproduce the same result.",strategyTip:"Pick your volatility. Fewer mines mean safer reveals and smaller multipliers per step. More mines lead to riskier reveals with bigger multipliers. Set a target or use a stop-loss to manage swings. Consistent bet sizing and disciplined cash outs help keep variance in check."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"The Return-to-Player (RTP) percentage for this game is {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Strategy",tutorial:"Tutorial",wheel:{how1:"Select your risk level and number of segments.",how2:"Set your bet amount and place your bet.",how3:"The wheel spins and lands on a segment.",how4:"Your payout is bet × the multiplier shown on the segment where the wheel stops.",how5:"Each segment has a different multiplier based on your chosen risk level and segment count.",overview:"Spin the wheel and watch where it lands. Choose your risk level and number of segments before each spin - lower risk yields more frequent wins with smaller multipliers; higher risk yields rare wins with bigger multipliers.",provablyFair:"Our verifiable randomness system generates every Wheel outcome. After every round, you can view the inputs and proof, verify the result with our public key, and reproduce the same result.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive multipliers. More segments increase maximum potential but reduce win frequency."},roulette:{how1:"Click on the grid to place chips on your chosen bets.",how2:"Adjust your chip value with the 1/2 and 2X buttons.",how3:"Place your bet to spin the wheel.",how4:"The ball lands on a random number from 0–36 (or 00 for American).",how5:"Winning bets pay out based on their odds; all other chips are lost.",overview:"Place chips on the betting grid and spin the wheel. Bet on single numbers, groups of numbers, colors, or odd/even. The ball lands on a random pocket, and matching bets pay out based on their odds.",provablyFair:"Our verifiable randomness system generates every Roulette spin. After every round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Outside bets (red/black, odd/even) offer nearly 50% win chance with 2X payout. Inside bets on single numbers pay up to 36X but hit rarely. Spread your chips to balance risk and reward."}},games:{roulette:{chipValue:"Chip Value",totalBetAmount:"Total Bet Amount"},advancedDice:{between:"Between",boundsLower:"Bounds lower",boundsUpper:"Bounds upper",inside:"Inside",outside:"Outside",rollMode:"Roll Mode",secondBoundsLower:"Second bounds lower",secondBoundsUpper:"Second bounds upper"},dice:{rollOver:"Roll Over",rollUnder:"Roll Under"},keno:{autoPick:"Auto Pick",clearTable:"Clear",kenoGameGrid:"Keno Game Grid",kenoNumber:"Keno Number {value}",selectAtLeastOneTile:"Select at least one tile",selectTileToAutobet:"Select at least one tile"},limbo:{multiplierError:"Must be between {min} and {max}",targetMultiplier:"Multiplier",winChanceError:"Must be between {min} and {max}"},mines:{cashout:"Cash Out",gem:"Gem",gems:"Gems",mine:"Mine",mines:"Mines",nextGem:"Next Gem",selectRandomTile:"Select Random Tile",selectTileToAutobet:"Select at least one tile",tile:"Tile",unrevealed:"Unrevealed"},wheel:{segments:"Segments"}},hotkeys:{clearBets:"Clear Bets",doubleBet:"Double Bet Amount",doubleChipValue:"Double Chip Value",doubleTotalBet:"Double Total Bet",halveBet:"Halve Bet Amount",halveChipValue:"Halve Chip Value",halveTotalBet:"Halve Total Bet",higherTarget:"Higher Target",info:"When hotkeys are enabled, they will remain on for this game until disabled. Despite some games sharing similar key binds, it's always advised to confirm hotkeys for each game.",lowerTarget:"Lower Target",makeBet:"Place Bet",resetChipValue:"Reset Chip Value",toggleWinCondition:"Toggle Win Condition",undo:"Undo",zeroBet:"Zero Bet Amount"},modals:{betResult:"Bet Result",fairnessAndHistory:"Fairness and History",gameArea:"Game Area",gameControls:"Game Controls",gameInfo:"Game Info"}}});var J4=D1((Pn,Li)=>{Li.exports={accessibility:{sliderValue:"{value} de {max}"},alerts:{autobetStarted:"Modo autobet iniciado",autobetStopped:"Modo Autobet detenido",betAmountAboveMaxBet:"La apuesta máxima es {value}",betAmountBelowMinBet:"La apuesta mínima es {value}",betLimitReached:"Límite de apuesta alcanzado",errorProcessingBet:"Hubo un error al procesar tu apuesta. Por favor, inténtalo de nuevo.",failedToLoadBetData:"No se pudo cargar la información de la apuesta",gameError:"Hubo un error al procesar tu apuesta. Por favor, inténtalo de nuevo.",insufficientBalance:"Saldo insuficiente",maxPayoutExceeded:"Pago máximo excedido",notEnoughBalance:"Saldo insuficiente"},autobet:{configureAutobet:"Configurar Autobet",games:"Juegos",games10:"10 Juegos",games100:"100 Juegos",games25:"25 Juegos",games5:"5 Juegos",games50:"50 Juegos",increase:"Aumentar",infinite:"Infinito",onLoss:"En pérdida",onWin:"Al ganar",reset:"Restablecer",startAutobet:"Iniciar Autobet",stopAutobet:"Detener Autobet",stopOnLoss:"Detener en pérdida",stopOnProfit:"Detener en ganancia"},clipboard:{linkCopied:"¡Enlace copiado al portapapeles!"},common:{auto:"Auto",back:"Atrás",balance:"Saldo",bet:"Monto de la apuesta",betAmount:"Monto de la apuesta",cancel:"Cancelar",cashOut:"Retirar fondos",classic:"Clásico",confirm:"Confirmar",copied:"Copiado",currency:"Moneda",deposit:"Depósito",disableHotkeys:"Desactivar atajos de teclado",disableMaxBet:"Desactivar apuesta máxima",enableHotkeys:"Activar atajos de teclado",enableMaxBet:"Habilitar apuesta máxima",footerNavigation:"Navegación de pie de página",gameInfo:"Información del juego",gameName:"Nombre del juego",high:"Alto",history:"Historial",hotkeys:"Teclas rápidas",id:"ID",instantBet:"Apuesta instantánea",loading:"Cargando...",loadMore:"Cargar más",lobby:"Volver al Lobby",low:"Bajo",manual:"Manual",max:"MAX",medium:"Medio",multiplier:"Multiplicador",payout:"Pago",placeBet:"Realizar apuesta",profit:"Ganancia",profitOnWin:"Ganancia en victoria",provablyFair:"Demostrablemente Justo",risk:"Riesgo",roundId:"ID de ronda",saveChanges:"Guardar cambios",shareReplay:"Compartir repetición",siteInformation:"Información del juego",space:"ESPACIO",support:"Soporte",targetMultiplier:"Multiplicador",thisFieldIsRequired:"Este campo es obligatorio",timestamp:"Tiempo",toggleHotkeys:"Alternar teclas rápidas",viewFairnessInformation:"Ver información de imparcialidad",viewHistory:"Ver historial",volume:"Volumen",winChance:"Probabilidad de ganar"},errors:{dice:{multiplierRange:"Debe estar entre {min} y {max}",winChanceRange:"Debe estar entre {min} y {max}"},noWheelData:"No hay datos de la rueda disponibles",requestDropped:"Solicitud cancelada"},fairness:{activeClientSeed:"Semilla de cliente activa",enterClientSeed:"Ingresa clientSeed",enterProof:"Ingresar prueba",enterPublicKey:"Ingresar clave pública",enterRandomness:"Ingresar Aleatoriedad",enterRequest:"Ingresar solicitud",info:{p1:"El resultado de cada ronda proviene de aleatoriedad verificable, no de lógica oculta del servidor. Construimos una semilla determinista a partir de valores únicos de tu ronda: gameId, tenantId, tenantUserId, un nonce incremental (uno por cada ronda completada), además de tu clientSeed. Esto garantiza que cada ronda sea única y reproducible: mismos datos de entrada → misma secuencia aleatoria → mismo resultado.",p2:"Esa semilla se ejecuta a través de una Función Aleatoria Verificable de Curva Elíptica (ECVRF) según el borrador de la especificación IETF draft-irtf-cfrg-vrf-15. Nuestro servidor utiliza su clave privada para producir un valor aleatorio y una prueba criptográfica (proofString). Cualquier persona con nuestra clave pública puede verificar de forma independiente esa prueba para las entradas dadas, confirmando que la aleatoriedad proviene de la semilla y que no fue manipulada. El SDK es TypeScript, mientras que la criptografía principal utiliza la biblioteca fastcrypto de Rust a través de NAPI-RS para rendimiento y seguridad.",p3:"Una vez verificado, la salida del VRF alimenta un generador determinista de bytes aleatorios (hashSequence). Los juegos transforman esos bytes en resultados utilizando una lógica determinista e imparcial. Debido a que el proceso es determinista y el nonce avanza en cada ronda completada, obtienes tanto auditorías reproducibles (recrear exactamente la misma ronda) como aleatoriedad nueva y no repetitiva cada vez.",p4:"Después de una ronda, tienes las entradas (incluyendo tu clientSeed y el nonce de la ronda), la salida de VRF, el proofString y nuestra clave pública. Utiliza cualquier verificador ECVRF o nuestras bibliotecas para: (1) verificar la prueba con las entradas y la clave pública, y (2) regenerar la misma hashSequence y resultado. Nuestra clave privada nunca sale de los servidores seguros; la clave pública es segura para usar del lado del cliente en comprobaciones independientes.",step1Desc:"Combinamos gameId, tenantId, tenantUserId, un nonce por ronda y tu clientSeed. Los mismos datos de entrada siempre producen el mismo flujo aleatorio y resultado.",step1Title:"Semilla determinista",step2Title:"Generar aleatoriedad",step3Desc:"Cualquiera puede verificar el proofString para las entradas dadas usando nuestra clave pública. Esto confirma que la aleatoriedad coincide con la semilla y no fue manipulada.",step3Title:"Verificar prueba",step4Title:"Derivar Resultados",step5Title:"Reproducción"},invalidGame:"Tipo de juego proporcionado no válido.",learnMore:"Aprende más",newClientSeed:"Nueva clientSeed",noBettingHistory:"Sin historial de apuestas",outcomeCalculationInfo:"Este juego utiliza un algoritmo demostrablemente justo que garantiza que el resultado sea justo y transparente.",outcomeNotVerified:"No se pudo verificar el resultado de este juego. Verifica que hayas ingresado la información correcta e inténtalo de nuevo.",outcomeVerified:"El resultado de esta ronda ha sido verificado con nuestra clave pública y es demostrablemente justo.",proof:"Prueba",publicKey:"Clave pública activa",randomness:"Aleatoriedad",request:"Solicitud",saveClientSeed:"Guardar Client Seed",verifyOutcome:"Verificar resultado"},gameInfo:{advancedDice:{how1:"Selecciona tu modo de tirada: Dentro, Fuera o Entre.",how2:"Arrastra los controles para definir tu(s) zona(s) ganadora(s).",how3:"Establece tu cantidad de apuesta y realiza tu apuesta.",how4:"Se genera un número aleatorio entre 0 y 100.",how5:"Gana si el resultado cae dentro de tu(s) zona(s) elegida(s).",overview:"Advanced Dice te permite establecer zonas ganadoras personalizadas. Elige Dentro para ganar cuando el resultado caiga dentro de tu rango, Fuera para ganar cuando caiga más allá de tu rango, o Entre para dividir en dos zonas ganadoras.",provablyFair:"Nuestro sistema de aleatoriedad verificable genera cada resultado de Advanced Dice. Después de cada ronda, puedes ver las entradas y la prueba, verificar el resultado con nuestra clave pública y reproducir el mismo resultado.",strategyTip:"Las zonas más amplias ofrecen victorias más frecuentes pero multiplicadores más pequeños. Las zonas estrechas arriesgan más pero pagan más. El modo Entre te permite apuntar a dos rangos para estrategias flexibles."},diamonds:{how1:"Establece el monto de tu apuesta y realiza tu apuesta.",how2:"Cinco Diamonds se revelan de un conjunto fijo de tipos de gemas.",how3:"Tu resultado se evalúa como una mano de póker: pares, dos pares, trío, full house, póker y quintilla.",how4:"Cada tipo de mano tiene su propio multiplicador; las manos de mayor valor otorgan multiplicadores más altos, mientras que no formar ninguna mano paga 0X.",how5:"Tu pago es tu apuesta multiplicada por el multiplicador mostrado para la mano resultante.",overview:"Diamonds es un juego de emparejamiento de cinco carretes. Cada ronda revela cinco diamantes de un conjunto de diferentes tipos de gemas. Tu objetivo es obtener combinaciones al estilo póker: pares, tríos, fulles, y así sucesivamente.",provablyFair:"Nuestro sistema de aleatoriedad verificable selecciona cada resultado de Diamonds. Después de cada ronda, puedes ver los valores aleatorios subyacentes y la prueba, verificar el resultado con nuestra clave pública y reproducir la misma mano.",strategyTip:"Diamonds es un juego de alta volatilidad y cuotas fijas en el que buscas manos grandes al estilo del póker. Tu principal control es decidir qué tan agresivo quieres ser. Utiliza apuestas pequeñas y constantes si quieres superar rachas secas, o aumenta el tamaño de tu apuesta ocasionalmente cuando busques manos premium."},dice:{how1:"Elige tirar por debajo o tirar por encima.",how2:"Establece tu número objetivo.",how3:"Establece el monto de tu apuesta y realiza tu apuesta.",how4:"Generamos un resultado aleatorio (mostrado en el juego en la escala de 0 a 99.99).",how5:"Ganas si el resultado está en el rango que elegiste.",how6:"Tu pago es la apuesta x el multiplicador mostrado, que se actualiza a medida que mueves el control deslizante.",overview:"Establece un número objetivo y elige si la tirada caerá por debajo o por encima de ese número. Mover el control deslizante cambia tu probabilidad de ganar y el multiplicador: una probabilidad más alta reduce el multiplicador, una probabilidad más baja lo aumenta. Cada ronda es una tirada independiente en la escala del juego.",provablyFair:"Nuestro sistema de aleatoriedad verificable genera cada lanzamiento de Dice. Después de cada ronda, puedes ver las entradas y la prueba, verificar el resultado con nuestra clave pública y reproducir el mismo resultado.",strategyTip:"Elige tu volatilidad. Una menor probabilidad de ganar ofrece multiplicadores más altos pero premios más raros. Una mayor probabilidad de ganar ofrece multiplicadores más bajos pero premios más frecuentes. Ajusta el tamaño de tus apuestas a tu saldo para obtener oscilaciones más estables."},keno:{how1:"Elige de 1 a 10 casillas en el tablero de 1 a 40.",how2:"Establece el monto de tu apuesta y realiza tu apuesta.",how3:"Sorteamos 10 números ganadores; tus coincidencias están resaltadas.",how4:"Los pagos dependen de cuántas casillas seleccionaste y cuántos aciertos tuviste; consulta la tabla de pagos.",how5:"Nunca puedes acertar más números de los que seleccionaste, y la selección máxima es 10.",overview:"Elige tus números de la suerte e intenta acertar el sorteo. Puedes elegir de 1 a 10 números del 1 al 40, y luego sorteamos 10 números. Cuantos más de tus números aciertes, mayor será tu pago.",provablyFair:"Nuestro sistema de aleatoriedad verificable genera cada sorteo de Keno. Después de cada ronda, puedes ver las entradas y la prueba, verificar el resultado con nuestra clave pública y reproducir el mismo resultado.",strategyTip:"Elige tu volatilidad. Elegir menos casillas significa que las ganancias serán más raras pero con multiplicadores mucho mayores. Más casillas ofrecen aciertos más frecuentes pero con menores retornos promedio por acierto. Un rango intermedio equilibra la frecuencia de aciertos y el pago. Ajusta el tamaño de tu apuesta según tu preferencia de riesgo y tu saldo."},limbo:{how1:"Establece tu multiplicador objetivo.",how2:"Establece el monto de tu apuesta y realiza tu apuesta.",how3:"Generamos un multiplicador de resultado aleatorio.",how4:"Ganas si el resultado es mayor o igual a tu objetivo.",how5:"Tu pago es la apuesta multiplicada por tu multiplicador objetivo; de lo contrario, pierdes tu apuesta.",overview:"En Limbo, estableces tu pago deseado y el juego genera un único multiplicador de resultado aleatorio. Si el resultado es al menos tu objetivo, ganas. Si es menor, pierdes. Una mayor probabilidad reduce el multiplicador; una menor probabilidad lo aumenta.",provablyFair:"Nuestro sistema de aleatoriedad verificable genera cada resultado de Limbo. Después de cada ronda, puedes ver las entradas y la prueba, verificar el resultado con nuestra clave pública y reproducir el mismo resultado.",strategyTip:"Los objetivos más bajos ganan con más frecuencia pero pagan menos, mientras que los objetivos más altos aciertan raramente pero pagan mucho más. Considera un objetivo fijo por sesión o mezcla apuestas ocasionales de alto riesgo, y ajusta el tamaño de las apuestas de manera consistente para gestionar la varianza."},limitContent:"El multiplicador máximo alcanzable para este juego es {multiplier}X. El pago máximo alcanzable es {payout}",limitTitle:"Límites",mines:{how1:"Elige el número de minas para esta ronda.",how2:"Establece el monto de tu apuesta y realiza tu apuesta.",how3:"Haz clic en las casillas para revelarlas: una casilla segura aumenta tu multiplicador; una mina termina la ronda.",how4:"Puedes retirar en cualquier momento para asegurar tu multiplicador actual.",how5:"Tu pago es la apuesta multiplicada por el multiplicador actual cuando te retiras.",how6:"La ronda termina cuando cobras o cuando se revela una mina.",overview:"Mines consiste en elegir casillas seguras y decidir cuándo retirar tus ganancias. Antes de que comience la ronda, elige cuántas minas estarán ocultas en el tablero. Cada casilla segura que descubras aumenta tu multiplicador. Si pisas una mina, la ronda termina sin premio.",provablyFair:"Nuestro sistema de aleatoriedad verificable genera la disposición oculta de minas de cada tablero. Después de cada ronda, puedes ver las entradas y la prueba, verificar el resultado con nuestra clave pública y reproducir el mismo resultado.",strategyTip:"Elige tu volatilidad. Menos minas significan revelaciones más seguras y multiplicadores más pequeños por paso. Más minas llevan a revelaciones más arriesgadas con multiplicadores más grandes. Establece un objetivo o usa un stop-loss para controlar las variaciones. Mantener un tamaño de apuesta constante y retiros disciplinados ayuda a mantener la varianza bajo control."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"El porcentaje de Retorno al Jugador (RTP) para este juego es {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Estrategia",tutorial:"Tutorial",wheel:{how1:"Selecciona tu nivel de riesgo y el número de segmentos.",how2:"Establece el monto de tu apuesta y realiza tu apuesta.",how3:"La rueda gira y cae en un segmento.",how4:"Tu pago es la apuesta × el multiplicador que aparece en el segmento donde se detiene la rueda.",how5:"Cada segmento tiene un multiplicador diferente según el nivel de riesgo y la cantidad de segmentos que elijas.",overview:"Gira la rueda y observa dónde cae. Elige tu nivel de riesgo y el número de segmentos antes de cada giro: un menor riesgo te da más victorias frecuentes con multiplicadores más pequeños; un mayor riesgo te da victorias más raras con multiplicadores más grandes.",provablyFair:"Nuestro sistema de aleatoriedad verificable genera cada resultado de Wheel. Después de cada ronda, puedes ver las entradas y la prueba, verificar el resultado con nuestra clave pública y reproducir el mismo resultado.",strategyTip:"Bajo riesgo ofrece ganancias constantes y más pequeñas. Riesgo medio equilibra la frecuencia y el pago. Alto riesgo apunta a multiplicadores raros pero enormes. Más segmentos aumentan el potencial máximo pero reducen la frecuencia de las ganancias."},roulette:{how1:"Haz clic en la cuadrícula para colocar fichas en tus apuestas elegidas.",how2:"Ajusta tu cantidad de apuesta por clic con los botones 1/2 y 2X.",how3:"Realiza tu apuesta para girar la ruleta.",how4:"La bola cae en un número aleatorio del 0 al 36 (o 00 en la americana).",how5:"Las apuestas ganadoras pagan según sus probabilidades; todas las demás fichas se pierden.",overview:"Coloca fichas en la cuadrícula de apuestas y gira la ruleta. Apuesta a números individuales, grupos de números, colores o par/impar. La bola cae en una casilla aleatoria, y las apuestas acertadas pagan según sus probabilidades.",provablyFair:"Nuestro sistema de aleatoriedad verificable genera cada giro de ruleta. Después de cada ronda, puedes ver las entradas y la prueba, verificar el resultado con nuestra clave pública y reproducir el mismo resultado.",strategyTip:"Las apuestas externas (rojo/negro, par/impar) ofrecen casi 50% de probabilidad de ganar con pago de 2X. Las apuestas internas a números individuales pagan hasta 36X pero aciertan raramente. Distribuye tus fichas para equilibrar riesgo y recompensa."}},games:{advancedDice:{between:"Entre",boundsLower:"Límite inferior",boundsUpper:"Límite superior",inside:"Dentro",outside:"Fuera",rollMode:"Modo de tirada",secondBoundsLower:"Segundo límite inferior",secondBoundsUpper:"Segundo límite superior"},dice:{rollOver:"Lanzar sobre",rollUnder:"Tirar por debajo"},keno:{autoPick:"Selección automática",clearTable:"Borrar",kenoGameGrid:"Cuadrícula del juego Keno",kenoNumber:"Número de Keno {value}",selectAtLeastOneTile:"Selecciona al menos una casilla",selectTileToAutobet:"Selecciona al menos una casilla"},limbo:{multiplierError:"Debe estar entre {min} y {max}",targetMultiplier:"Multiplicador",winChanceError:"Debe estar entre {min} y {max}"},mines:{cashout:"Retirar fondos",gem:"Gema",gems:"Gemas",mine:"Mina",mines:"Minas",nextGem:"Gema siguiente",selectRandomTile:"Seleccionar casilla aleatoria",selectTileToAutobet:"Selecciona al menos una casilla",tile:"Azulejo",unrevealed:"No revelado"},wheel:{segments:"Segmentos"},roulette:{chipValue:"Valor De La Ficha",totalBetAmount:"Apuesta Total"}},hotkeys:{clearBets:"Limpiar Apuestas",doubleBet:"Duplicar monto de apuesta",doubleChipValue:"Duplicar Valor de Ficha",doubleTotalBet:"Duplicar Apuesta Total",halveBet:"Reducir a la mitad la cantidad de la apuesta",halveChipValue:"Reducir Valor de Ficha",halveTotalBet:"Reducir Apuesta Total",higherTarget:"Objetivo más alto",info:"Cuando las teclas rápidas están habilitadas, permanecerán activas para este juego hasta que se desactiven. Aunque algunos juegos comparten combinaciones de teclas similares, siempre se recomienda confirmar las teclas rápidas para cada juego.",lowerTarget:"Objetivo inferior",makeBet:"Realizar apuesta",resetChipValue:"Restablecer Valor de Ficha",toggleWinCondition:"Alternar condición de victoria",undo:"Deshacer",zeroBet:"Cantidad de apuesta cero"},modals:{betResult:"Resultado de la apuesta",fairnessAndHistory:"Transparencia e Historial",gameArea:"Área de Juego",gameControls:"Controles del juego",gameInfo:"Información del juego"}}});var D4=D1((Bn,qi)=>{qi.exports={accessibility:{sliderValue:"{value} / {max}"},alerts:{autobetStarted:"Autobet-tila käynnistetty",autobetStopped:"Autobet-tila pysäytetty",betAmountAboveMaxBet:"Suurin panos on {value}",betAmountBelowMinBet:"Minimipanos on {value}",betLimitReached:"Panosraja saavutettu",errorProcessingBet:"Vedon käsittelyssä tapahtui virhe. Yritä uudelleen.",failedToLoadBetData:"Vedon tietojen lataaminen epäonnistui",gameError:"Vedon käsittelyssä tapahtui virhe. Yritä uudelleen.",insufficientBalance:"Riittämätön saldo",maxPayoutExceeded:"Enimmäismaksu ylitetty",notEnoughBalance:"Ei tarpeeksi saldoa"},autobet:{configureAutobet:"Määritä Autobet",games:"Pelit",games10:"10 peliä",games100:"100 peliä",games25:"25 peliä",games5:"5 peliä",games50:"50 peliä",increase:"Lisää",infinite:"Ääretön",onLoss:"Tappion sattuessa",onWin:"Voitolla",reset:"Nollaa",startAutobet:"Aloita Autobet",stopAutobet:"Pysäytä Autobet",stopOnLoss:"Pysäytä tappiolla",stopOnProfit:"Pysähdy voittoon"},clipboard:{linkCopied:"Linkki kopioitu leikepöydälle!"},common:{auto:"Auto",back:"Takaisin",balance:"Saldo",bet:"Panostus",betAmount:"Panostus",cancel:"Peruuta",cashOut:"Lunasta voitot",classic:"Klassinen",confirm:"Vahvista",copied:"Kopioitu",currency:"Valuutta",deposit:"Talletus",disableHotkeys:"Poista pikanäppäimet käytöstä",disableMaxBet:"Poista maksimipanos käytöstä",enableHotkeys:"Ota pikanäppäimet käyttöön",enableMaxBet:"Ota suurin panos käyttöön",footerNavigation:"Alatunnisteen navigointi",gameInfo:"Pelitiedot",gameName:"Pelin nimi",high:"Korkea",history:"Historia",hotkeys:"Pikanäppäimet",id:"ID",instantBet:"Välitön veto",loading:"Ladataan...",loadMore:"Lataa lisää",lobby:"Takaisin aulaan",low:"Matala",manual:"Käsikirja",max:"MAX",medium:"Keskitaso",multiplier:"Kerroin",payout:"Voitto",placeBet:"Aseta panos",profit:"Voitto",profitOnWin:"Voitto voitosta",provablyFair:"Todistettavasti reilu",risk:"Riski",roundId:"Kierroksen ID",saveChanges:"Tallenna muutokset",shareReplay:"Jaa uudelleenpeluu",siteInformation:"Pelitiedot",space:"SPACE",support:"Tuki",targetMultiplier:"Kerroin",thisFieldIsRequired:"Tämä kenttä on pakollinen",timestamp:"Aika",toggleHotkeys:"Vaihda pikanäppäimiä",viewFairnessInformation:"Näytä reiluustiedot",viewHistory:"Näytä historia",volume:"Äänenvoimakkuus",winChance:"Voittomahdollisuus"},errors:{dice:{multiplierRange:"Täytyy olla välillä {min} ja {max}",winChanceRange:"Täytyy olla välillä {min} ja {max}"},noWheelData:"Pyörätietoja ei saatavilla",requestDropped:"Pyyntö hylättiin"},fairness:{activeClientSeed:"Aktiivinen clientSeed",enterClientSeed:"Syötä client seed",enterProof:"Syötä todiste",enterPublicKey:"Syötä julkinen avain",enterRandomness:"Syötä satunnaisuus",enterRequest:"Syötä pyyntö",info:{p1:"Jokaisen kierroksen tulos perustuu todennettavaan satunnaisuuteen, ei piilotettuun palvelinlogiikkaan. Rakennamme deterministisen siemenen arvoista, jotka ovat ainutlaatuisia kierroksellesi — gameId, tenantId, tenantUserId, kasvava nonce (yksi jokaista suoritettua kierrosta kohden) sekä clientSeed. Tämä takaa, että jokainen kierros on ainutlaatuinen ja toistettavissa: samat syötteet → sama satunnaisvirta → sama lopputulos.",p2:"Tuo siemen ajetaan Elliptisen Käyrän Todennettavan Satunnaisfunktion (ECVRF) läpi IETF:n luonnoksen draft-irtf-cfrg-vrf-15 mukaisesti. Palvelimemme käyttää yksityistä avaintaan tuottaakseen satunnaisarvon ja kryptografisen todisteen (proofString). Kuka tahansa julkisella avaimellamme voi itsenäisesti varmistaa todisteen annetuilla syötteillä—vahvistaen, että satunnaisuus tuli siemenestä eikä sitä ole peukaloitu. SDK on TypeScript, kun taas ydinsalaus käyttää fastcrypto Rust-kirjastoa NAPI-RS:n kautta suorituskyvyn ja turvallisuuden takaamiseksi.",p3:"Kun varmennus on suoritettu, VRF:n tuottama tulos siementää deterministisen satunnaisbytien generaattorin (hashSequence). Pelit muuttavat nämä bitit lopputuloksiksi käyttäen determinististä ja puolueetonta logiikkaa. Koska prosessi on deterministinen ja nonce etenee jokaisen suoritetun kierroksen jälkeen, saat sekä toistettavia auditointeja (luo sama kierros täsmälleen uudelleen) että uutta, toistumatonta satunnaisuutta joka kerta.",p4:"Kierroksen jälkeen sinulla on syötteet (mukaan lukien oma clientSeed ja kierroksen nonce), VRF-tulos, proofString ja meidän julkinen avain. Käytä mitä tahansa ECVRF-varmenninta tai meidän kirjastoja: (1) varmistaaksesi todisteen syötteitä ja julkista avainta vastaan, ja (2) luodaksesi uudelleen saman hashSequence:n ja lopputuloksen. Yksityinen avaimemme ei koskaan poistu turvallisilta palvelimilta; julkista avainta on turvallista käyttää asiakaspäässä itsenäisiin tarkistuksiin.",step1Desc:"Yhdistämme gameId:n, tenantId:n, tenantUserId:n, kierroskohtaisen nonce:n ja clientSeed:isi. Samat syötteet tuottavat aina saman satunnaisvirran ja lopputuloksen.",step1Title:"Deterministinen siemen",step2Title:"Luo satunnaisuutta",step3Desc:"Kuka tahansa voi tarkistaa proofStringin annetuilla syötteillä julkisella avaimellamme. Tämä varmistaa, että satunnaisuus vastaa siementä eikä siihen ole kajottu.",step3Title:"Vahvista todiste",step4Title:"Johda tulokset",step5Title:"Lisääntyminen"},invalidGame:"Virheellinen pelityyppi annettu.",learnMore:"Lisätietoja",newClientSeed:"Uusi asiakassiementä",noBettingHistory:"Ei vedonlyöntihistoriaa",outcomeCalculationInfo:"Tämä peli käyttää todistettavasti reilua algoritmia, joka varmistaa, että lopputulos on reilu ja läpinäkyvä.",outcomeNotVerified:"Tämän pelin tulosta ei voitu varmistaa. Tarkista, että olet syöttänyt oikeat tiedot, ja yritä uudelleen.",outcomeVerified:"Tämän kierroksen tulos on varmennettu julkisella avaimellamme ja se on todistettavasti reilu.",proof:"Todiste",publicKey:"Aktiivinen julkinen avain",randomness:"Satunnaisuus",request:"Pyyntö",saveClientSeed:"Tallenna asiakassiementen",verifyOutcome:"Vahvista tulos"},gameInfo:{advancedDice:{how1:"Valitse heittotila: Sisällä, Ulkona tai Välissä.",how2:"Vedä liukusäätimiä määrittääksesi voittoalueesi.",how3:"Aseta panoksesi ja lyö vetoa.",how4:"Satunnaisluku välillä 0-100 generoidaan.",how5:"Voitat, jos tulos osuu valitsemallesi alueelle.",overview:"Advanced Dice antaa sinun asettaa mukautettuja voittoalueita. Valitse Sisällä voittaaksesi, kun tulos osuu alueellesi, Ulkona voittaaksesi, kun se menee alueen ulkopuolelle, tai Välissä jakaaksesi kahdeksi voittoalueeksi.",provablyFair:"Todennettava satunnaisuusjärjestelmämme tuottaa jokaisen Advanced Dice -tuloksen. Jokaisen kierroksen jälkeen voit tarkastella syötteitä ja todistetta, vahvistaa tuloksen julkisella avaimellamme ja toistaa saman tuloksen.",strategyTip:"Laajemmat alueet tarjoavat useammin voittoja, mutta pienemmillä kertoimilla. Kapeat alueet ovat riskialttiimpia, mutta maksavat enemmän. Välissä-tila mahdollistaa joustavat strategiat kahdella alueella."},diamonds:{how1:"Aseta panoksesi määrä ja aseta panos.",how2:"Viisi timanttia paljastetaan kiinteästä jalokivityyppien joukosta.",how3:"Tuloksesi arvioidaan kuten pokerikäsi: pari, kaksi paria, kolmoset, täyskäsi, neloset ja viitoset.",how4:"Jokaisella kädentyypillä on oma kertoimensa; arvokkaammat kädet antavat suurempia kertoimia, kun taas ilman valmista kättä maksetaan 0X.",how5:"Voittosi on panoksesi kerrottuna näytetyllä kertoimella saadulle kädelle.",overview:"Diamonds on viisirullainen yhdistelypeli. Jokaisella kierroksella paljastetaan viisi timanttia eri jalokivityypeistä. Tavoitteesi on saada pokerityylisiä yhdistelmiä – pareja, kolmosia, täyskäsiä ja niin edelleen.",provablyFair:"Todennettavissa oleva satunnaisuusjärjestelmämme valitsee jokaisen Diamonds-tuloksen. Jokaisen kierroksen jälkeen voit tarkastella taustalla olevia satunnaisarvoja ja todistetta, varmistaa lopputuloksen julkisella avaimellamme sekä toistaa saman käden.",strategyTip:"Diamonds on korkean volatiliteetin kiinteäkertoiminen peli, jossa tavoitteena on saada suuria, pokerityylisiä käsiä. Tärkein valintasi on, kuinka aggressiivinen haluat olla. Käytä pienempiä, tasaisia panoksia, jos haluat kestää kuivempia jaksoja, tai nosta panosta silloin tällöin, kun tavoittelet huippukäsiä."},dice:{how1:"Valitse roll under tai roll over.",how2:"Aseta tavoitenumerosi.",how3:"Aseta panoksesi määrä ja aseta panos.",how4:"Luomme yhden satunnaisen tuloksen (näkyy pelissä asteikolla 0–99,99).",how5:"Voitat, jos tulos on valitsemallasi alueella.",how6:"Voittosi on panos kerrottuna näytetyllä kertoimella, joka päivittyy, kun liikutat liukusäädintä.",overview:"Aseta tavoitenumero ja valitse, osuuko heitto sen alle vai yli. Liukusäätimen siirtäminen muuttaa voittomahdollisuuttasi ja kerrointa—suurempi mahdollisuus pienentää kerrointa, pienempi mahdollisuus kasvattaa sitä. Jokainen kierros on itsenäinen heitto pelin asteikolla.",provablyFair:"Todennettavissa oleva satunnaisuusjärjestelmämme luo jokaisen Dice-heittosi. Jokaisen kierroksen jälkeen voit tarkastella syötteitä ja todistetta, varmistaa tuloksen julkisella avaimellamme ja toistaa saman tuloksen.",strategyTip:"Valitse volatiliteettisi. Pienempi voittotodennäköisyys antaa suurempia kertoimia, mutta voitot ovat harvinaisempia. Suurempi voittotodennäköisyys antaa pienempiä kertoimia, mutta voittoja tulee useammin. Sovita panoksesi pelikassaasi tasaisempien vaihteluiden saavuttamiseksi."},keno:{how1:"Valitse 1–10 ruutua 1–40 ruudun laudalta.",how2:"Aseta panoksesi määrä ja aseta panos.",how3:"Arvomme 10 voittavaa numeroa; osumasi on korostettu.",how4:"Voitot riippuvat siitä, kuinka monta ruutua valitsit ja kuinka monta osumaa sait—tarkista voittotaulukko.",how5:"Et voi koskaan osua useampaan numeroon kuin olet valinnut, ja maksimivalinta on 10.",overview:"Valitse onnennumerosi ja yritä osua arvontaan. Voit valita 1–10 numeroa väliltä 1–40, ja sen jälkeen arvomme 10 numeroa. Mitä useampi valintasi osuu, sitä suurempi voittosi on.",provablyFair:"Järjestelmämme tuottaa todennettavissa olevan satunnaisuuden jokaiselle Keno-arvonnalle. Jokaisen kierroksen jälkeen voit tarkastella syötteitä ja todistetta, varmistaa tuloksen julkisella avaimellamme ja tuottaa saman tuloksen uudelleen.",strategyTip:"Valitse volatiliteettisi. Vähemmän paikkoja tarkoittaa harvempia voittoja, mutta paljon suurempia kertoimia. Useammat paikat tuovat useammin osumia, mutta pienempiä keskimääräisiä tuottoja per osuma. Keskiväli tasapainottaa osumatahtia ja voittoja. Säädä panoksesi vastaamaan riskimieltymyksiäsi ja pelikassaasi."},limbo:{how1:"Aseta tavoitekerroin.",how2:"Aseta panoksesi määrä ja aseta panos.",how3:"Generoimme yhden satunnaisen tuloskertoimen.",how4:"Voitat, jos tulos on suurempi tai yhtä suuri kuin tavoitteesi.",how5:"Voittosi on panos kerrottuna tavoitekertoimellasi; muuten menetät panoksesi.",overview:"Limbo-pelissä asetat haluamasi voittokertoimen, ja peli arpoo yhden satunnaisen kertoimen. Jos tulos on vähintään tavoitteesi, voitat. Jos se on pienempi, häviät. Suurempi voittomahdollisuus laskee kerrointa; pienempi mahdollisuus nostaa sitä.",provablyFair:"Todennettavissa oleva satunnaisuusjärjestelmämme tuottaa jokaisen Limbo-tuloksen. Jokaisen kierroksen jälkeen voit tarkastella syötteitä ja todistetta, varmistaa tuloksen julkisella avaimellamme ja toistaa saman tuloksen.",strategyTip:"Alemmat kohteet voittavat useammin mutta maksavat vähemmän, kun taas korkeammat kohteet osuvat harvoin mutta maksavat huomattavasti enemmän. Harkitse kiinteän tavoitteen asettamista per istunto tai lisää silloin tällöin pitkäkestoisia vetoja, ja pidä panoskoot johdonmukaisina varianssin hallitsemiseksi."},limitContent:"Tämän pelin suurin mahdollinen kerroin on {multiplier}X. Suurin mahdollinen voittosumma on {payout}",limitTitle:"Rajat",mines:{how1:"Valitse tämän kierroksen miinojen määrä.",how2:"Aseta panoksesi määrä ja aseta panos.",how3:"Napsauta ruutuja paljastaaksesi ne: turvallinen ruutu kasvattaa kertoimesi; miina päättää kierroksen.",how4:"Voit kotiuttaa milloin tahansa lukitaksesi nykyisen kertoimesi.",how5:"Voittosi on panos kerrottuna nykyisellä kertoimella, kun nostat voitot.",how6:"Kierros päättyy, kun nostat voitot tai kun miina paljastuu.",overview:"Minesissa tavoitteena on valita turvallisia ruutuja ja päättää, milloin ottaa voitot ulos. Ennen kierroksen alkua valitse, montako miinaa laudalle piilotetaan. Jokainen paljastamasi turvallinen ruutu kasvattaa kerrointasi. Jos osut miinaan, kierros päättyy eikä voittoja makseta.",provablyFair:"Todennettavissa oleva satunnaisuusjärjestelmämme luo jokaisen pelilaudan piilotetun miinakentän. Jokaisen kierroksen jälkeen voit tarkastella syötteitä ja todistetta, varmistaa tuloksen julkisella avaimellamme ja toistaa saman lopputuloksen.",strategyTip:"Valitse volatiliteettisi. Vähemmän Mines-ruutuja tarkoittaa turvallisempia paljastuksia ja pienempiä kertoimia per askel. Enemmän Mines-ruutuja johtaa riskialttiimpiin paljastuksiin suuremmilla kertoimilla. Aseta tavoite tai käytä stop-lossia hallitaksesi vaihtelua. Johdonmukainen panostus ja kurinalainen kotiutus auttavat pitämään varianssin hallinnassa."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Tämän pelin palautusprosentti (RTP) on {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Strategia",tutorial:"Opas",wheel:{how1:"Valitse riskitasosi ja segmenttien määrä.",how2:"Aseta panoksesi määrä ja aseta panos.",how3:"Pyörä pyörii ja pysähtyy segmentille.",how4:"Voittosi on panos × kerroin, joka näkyy kohdassa, johon pyörä pysähtyy.",how5:"Jokaisella segmentillä on eri kerroin valitsemasi riskitason ja segmenttimäärän perusteella.",overview:"Pyöritä rulettia ja katso, mihin se pysähtyy. Valitse riskitasosi ja segmenttien määrä ennen jokaista pyöräytystä – matala riski tuottaa useammin voittoja pienemmillä kertoimilla; korkeampi riski tuo harvinaisempia voittoja suuremmilla kertoimilla.",provablyFair:"Todennettavissa oleva satunnaisuusjärjestelmämme tuottaa jokaisen Wheel-tuloksen. Jokaisen kierroksen jälkeen voit tarkastella syötteitä ja todistetta, varmistaa tuloksen julkisella avaimellamme sekä toistaa saman tuloksen.",strategyTip:"Matala riski tarjoaa tasaisia, pienempiä voittoja. Keskitasoinen riski tasapainottaa voittojen tiheyden ja maksun. Korkea riski tavoittelee harvinaisia mutta suuria kertoimia. Useammat segmentit kasvattavat maksimivoittopotentiaalia mutta pienentävät voittotaajuutta."},roulette:{how1:"Napsauta ruudukkoa asettaaksesi pelimerkkejä valitsemiisi vetoihin.",how2:"Säädä panoksesi määrää napsautusta kohden 1/2- ja 2X-painikkeilla.",how3:"Aseta panoksesi pyörittääksesi rulettia.",how4:"Pallo putoaa satunnaiseen numeroon 0–36 (tai 00 amerikkalaisessa).",how5:"Voittavat vedot maksetaan kertoimien mukaan; kaikki muut pelimerkit menetetään.",overview:"Aseta pelimerkkejä panosruudukkoon ja pyöritä rulettia. Veikkaa yksittäisiä numeroita, numeroryhmiä, värejä tai parillinen/pariton. Pallo putoaa satunnaiseen lokeroon, ja osuneet vedot maksetaan kertoimien mukaan.",provablyFair:"Todennettava satunnaisjärjestelmämme tuottaa jokaisen ruletin pyöräytyksen. Jokaisen kierroksen jälkeen voit tarkastella syötteitä ja todistetta, varmistaa tuloksen julkisella avaimellamme ja toistaa saman tuloksen.",strategyTip:"Ulkovedot (punainen/musta, parillinen/pariton) tarjoavat lähes 50% voittomahdollisuuden 2X-kertoimella. Sisävedot yksittäisiin numeroihin maksavat jopa 36X mutta osuvat harvoin. Hajota pelimerkkisi tasapainottaaksesi riskiä ja tuottoa."}},games:{advancedDice:{between:"Välillä",boundsLower:"Alaraja",boundsUpper:"Yläraja",inside:"Sisällä",outside:"Ulkopuolella",rollMode:"Heittotila",secondBoundsLower:"Toinen alaraja",secondBoundsUpper:"Toinen yläraja"},dice:{rollOver:"Heitä yli",rollUnder:"Heitä alle"},keno:{autoPick:"Automaattivalinta",clearTable:"Tyhjennä",kenoGameGrid:"Keno-peliruutu",kenoNumber:"Keno-numero {value}",selectAtLeastOneTile:"Valitse vähintään yksi laatta",selectTileToAutobet:"Valitse vähintään yksi laatta"},limbo:{multiplierError:"Täytyy olla välillä {min} ja {max}",targetMultiplier:"Kerroin",winChanceError:"Täytyy olla välillä {min} ja {max}"},mines:{cashout:"Lunasta voitot",gem:"Jalokivi",gems:"Jalokivet",mine:"Kaivos",mines:"Miinat",nextGem:"Seuraava jalokivi",selectRandomTile:"Valitse satunnainen ruutu",selectTileToAutobet:"Valitse vähintään yksi laatta",tile:"Laatta",unrevealed:"Paljastamaton"},wheel:{segments:"Segmentit"},roulette:{chipValue:"Pelimerkin Arvo",totalBetAmount:"Kokonaispanos"}},hotkeys:{clearBets:"Tyhjennä Panokset",doubleBet:"Tuplaa panos",doubleChipValue:"Tuplaa Pelimerkin Arvo",doubleTotalBet:"Tuplaa Kokonaispanos",halveBet:"Puolita panos",halveChipValue:"Puolita Pelimerkin Arvo",halveTotalBet:"Puolita Kokonaispanos",higherTarget:"Korkeampi tavoite",info:"Kun pikanäppäimet ovat käytössä, ne pysyvät päällä tässä pelissä, kunnes ne poistetaan käytöstä. Vaikka joissakin peleissä voi olla samanlaisia näppäinyhdistelmiä, on aina suositeltavaa tarkistaa pikanäppäimet jokaisessa pelissä erikseen.",lowerTarget:"Alempi tavoite",makeBet:"Aseta panos",resetChipValue:"Nollaa Pelimerkin Arvo",toggleWinCondition:"Vaihda voittotilaa",undo:"Kumoa",zeroBet:"Nolla panosumma"},modals:{betResult:"Vedon tulos",fairnessAndHistory:"Reiluus ja historia",gameArea:"Peliaula",gameControls:"Pelikontrollit",gameInfo:"Pelitiedot"}}});var C4=D1((_n,Ti)=>{Ti.exports={accessibility:{sliderValue:"{value} sur {max}"},alerts:{autobetStarted:"Mode autobet démarré",autobetStopped:"Mode Autobet arrêté",betAmountAboveMaxBet:"La mise maximale est de {value}",betAmountBelowMinBet:"La mise minimale est de {value}",betLimitReached:"Limite de mise atteinte",errorProcessingBet:"Une erreur s'est produite lors du traitement de votre mise. Veuillez réessayer.",failedToLoadBetData:"Échec du chargement des données de pari",gameError:"Une erreur s'est produite lors du traitement de votre mise. Veuillez réessayer.",insufficientBalance:"Solde insuffisant",maxPayoutExceeded:"Paiement maximum dépassé",notEnoughBalance:"Solde insuffisant"},autobet:{configureAutobet:"Configurer Autobet",games:"Jeux",games10:"10 Jeux",games100:"100 Jeux",games25:"25 Jeux",games5:"5 Jeux",games50:"50 Jeux",increase:"Augmenter",infinite:"Infini",onLoss:"En cas de perte",onWin:"En cas de gain",reset:"Réinitialiser",startAutobet:"Démarrer Autobet",stopAutobet:"Arrêter l'Autobet",stopOnLoss:"Arrêter en cas de perte",stopOnProfit:"Arrêter en cas de profit"},clipboard:{linkCopied:"Lien copié dans le presse-papiers !"},common:{auto:"Auto",back:"Retour",balance:"Solde",bet:"Montant de la mise",betAmount:"Montant de la mise",cancel:"Annuler",cashOut:"Encaisser",classic:"Classique",confirm:"Confirmer",copied:"Copié",currency:"Devise",deposit:"Dépôt",disableHotkeys:"Désactiver les raccourcis clavier",disableMaxBet:"Désactiver la mise maximale",enableHotkeys:"Activer les raccourcis clavier",enableMaxBet:"Activer la mise maximale",footerNavigation:"Navigation du pied de page",gameInfo:"Infos du jeu",gameName:"Nom du jeu",high:"Élevé",history:"Historique",hotkeys:"Raccourcis clavier",id:"ID",instantBet:"Pari instantané",loading:"Chargement...",loadMore:"Charger plus",lobby:"Retour au Lobby",low:"Faible",manual:"Manuel",max:"MAX",medium:"Moyen",multiplier:"Multiplicateur",payout:"Paiement",placeBet:"Placer un pari",profit:"Profit",profitOnWin:"Profit en cas de gain",provablyFair:"Prouvé équitable",risk:"Risque",roundId:"ID de round",saveChanges:"Enregistrer les modifications",shareReplay:"Partager la rediffusion",siteInformation:"Informations sur le jeu",space:"ESPACE",support:"Assistance",targetMultiplier:"Multiplicateur",thisFieldIsRequired:"Ce champ est requis",timestamp:"Temps",toggleHotkeys:"Activer les raccourcis clavier",viewFairnessInformation:"Afficher les informations sur l'équité",viewHistory:"Voir l’historique",volume:"Volume",winChance:"Chance de gagner"},errors:{dice:{multiplierRange:"Doit être compris entre {min} et {max}",winChanceRange:"Doit être compris entre {min} et {max}"},noWheelData:"Aucune donnée de roue disponible",requestDropped:"Requête abandonnée"},fairness:{activeClientSeed:"Graine cliente active",enterClientSeed:"Entrez la graine client",enterProof:"Entrer la preuve",enterPublicKey:"Entrer la clé publique",enterRandomness:"Entrer l'aléa",enterRequest:"Saisir la demande",info:{p1:"Le résultat de chaque manche provient d’un hasard vérifiable, et non d’une logique serveur cachée. Nous construisons une graine déterministe à partir de valeurs uniques à votre manche—gameId, tenantId, tenantUserId, un nonce incrémental (un par manche terminée), ainsi que votre clientSeed. Cela garantit que chaque manche est unique et reproductible : mêmes entrées → même flux aléatoire → même résultat.",p2:"Cette graine est traitée par une Fonction Aléatoire Vérifiable à Courbe Elliptique (ECVRF) selon le brouillon de spécification IETF draft-irtf-cfrg-vrf-15. Notre serveur utilise sa clé privée pour produire une valeur aléatoire et une preuve cryptographique (proofString). Toute personne disposant de notre clé publique peut vérifier indépendamment cette preuve pour les entrées données—confirmant que l’aléa provient bien de la graine et n’a pas été altéré. Le SDK est en TypeScript, tandis que la cryptographie principale utilise la bibliothèque Rust fastcrypto via NAPI-RS pour la performance et la sécurité.",p3:"Une fois vérifié, la sortie du VRF alimente un générateur déterministe d'octets aléatoires (hashSequence). Les jeux transforment ces octets en résultats à l'aide d'une logique déterministe et impartiale. Comme le processus est déterministe et que le nonce avance à chaque manche terminée, vous obtenez à la fois des audits rejouables (recréer exactement la même manche) et une nouvelle aléa non répétitive à chaque fois.",p4:"Après un tour, vous disposez des entrées (y compris votre clientSeed et le nonce du tour), de la sortie VRF, du proofString et de notre clé publique. Utilisez n'importe quel vérificateur ECVRF ou nos bibliothèques pour : (1) vérifier la preuve par rapport aux entrées et à la clé publique, et (2) régénérer la même hashSequence et le même résultat. Notre clé privée ne quitte jamais les serveurs sécurisés ; la clé publique peut être utilisée côté client pour des vérifications indépendantes.",step1Desc:"Nous combinons gameId, tenantId, tenantUserId, un nonce par tour et votre clientSeed. Les mêmes entrées produisent toujours le même flux aléatoire et le même résultat.",step1Title:"Graine déterministe",step2Title:"Générer de l’aléatoire",step3Desc:"N'importe qui peut vérifier le proofString pour les entrées données en utilisant notre clé publique. Cela confirme que l'aléa correspond à la seed et n'a pas été altéré.",step3Title:"Vérifier la preuve",step4Title:"Dériver les résultats",step5Title:"Reproduction"},invalidGame:"Type de jeu fourni invalide.",learnMore:"En savoir plus",newClientSeed:"Nouveau clientSeed",noBettingHistory:"Aucun historique de paris",outcomeCalculationInfo:"Ce jeu utilise un algorithme prouvablement équitable qui garantit que le résultat est juste et transparent.",outcomeNotVerified:"Le résultat de ce jeu n'a pas pu être vérifié. Vérifiez que vous avez saisi les bonnes informations et réessayez.",outcomeVerified:"Le résultat de ce tour a été vérifié avec notre clé publique et est prouvablement équitable.",proof:"Preuve",publicKey:"Clé publique active",randomness:"Aléatoire",request:"Demande",saveClientSeed:"Enregistrer la graine client",verifyOutcome:"Vérifier le résultat"},gameInfo:{advancedDice:{how1:"Sélectionnez votre mode de lancer : Intérieur, Extérieur ou Entre.",how2:"Faites glisser les curseurs pour définir vos zones gagnantes.",how3:"Définissez votre mise et placez votre pari.",how4:"Un nombre aléatoire entre 0 et 100 est généré.",how5:"Gagnez si le résultat tombe dans vos zones choisies.",overview:"Advanced Dice vous permet de définir des zones gagnantes personnalisées. Choisissez Intérieur pour gagner quand le résultat tombe dans votre plage, Extérieur pour gagner quand il tombe en dehors, ou Entre pour diviser en deux zones gagnantes.",provablyFair:"Notre système de hasard vérifiable génère chaque résultat d'Advanced Dice. Après chaque tour, vous pouvez consulter les entrées et la preuve, vérifier le résultat avec notre clé publique et reproduire le même résultat.",strategyTip:"Les zones plus larges offrent des gains plus fréquents mais des multiplicateurs plus petits. Les zones étroites risquent plus mais paient plus. Le mode Entre vous permet de cibler deux plages pour des stratégies flexibles."},diamonds:{how1:"Définissez le montant de votre mise et placez votre pari.",how2:"Cinq diamants sont révélés à partir d’un ensemble fixe de types de gemmes.",how3:"Votre résultat est évalué comme une main de poker : paire, deux paires, brelan, full, carré et quinte.",how4:"Chaque type de main a son propre multiplicateur ; les mains de plus grande valeur offrent des multiplicateurs plus élevés, tandis qu’aucune combinaison ne paie 0X.",how5:"Votre gain est votre mise multipliée par le multiplicateur affiché pour la main obtenue.",overview:"Diamonds est un jeu de correspondance à cinq rouleaux. À chaque tour, cinq diamants sont révélés parmi différents types de gemmes. Votre objectif est d’obtenir des combinaisons de type poker : paires, brelans, fulls, et ainsi de suite.",provablyFair:"Notre système de hasard vérifiable sélectionne chaque résultat de diamant. Après chaque manche, vous pouvez consulter les valeurs aléatoires sous-jacentes et la preuve, vérifier le résultat avec notre clé publique, et reproduire la même main.",strategyTip:"Diamonds est un jeu à forte volatilité et à cotes fixes où vous partez à la chasse aux grosses mains, façon poker. Votre principal levier est votre niveau d’agressivité. Utilisez des mises petites et régulières si vous voulez tenir lors des séries perdantes, ou augmentez occasionnellement la taille de vos mises lorsque vous recherchez des mains premium."},dice:{how1:"Choisissez roll under ou roll over.",how2:"Définissez votre numéro cible.",how3:"Définissez le montant de votre mise et placez votre pari.",how4:"Nous générons un résultat aléatoire (affiché sur l'échelle de 0 à 99,99 dans le jeu).",how5:"Vous gagnez si le résultat se trouve dans la plage que vous avez choisie.",how6:"Votre paiement correspond à la mise multipliée par le multiplicateur affiché, qui se met à jour lorsque vous déplacez le curseur.",overview:"Définissez un nombre cible et choisissez si le lancer tombera en dessous ou au-dessus de ce nombre. Déplacer le curseur modifie vos chances de gagner et le multiplicateur : une chance plus élevée réduit le multiplicateur, tandis qu'une chance plus faible l'augmente. Chaque manche correspond à un lancer indépendant sur l’échelle du jeu.",provablyFair:"Notre système d'aléa vérifiable génère chaque lancer de Dice. Après chaque manche, vous pouvez consulter les entrées et la preuve, vérifier le résultat avec notre clé publique et reproduire le même résultat.",strategyTip:"Choisissez votre volatilité. Une chance de gain plus faible offre de plus gros multiplicateurs mais des gains plus rares. Une chance de gain plus élevée offre de plus petits multiplicateurs mais des gains plus fréquents. Adaptez la taille de vos mises à votre capital pour des variations plus régulières."},keno:{how1:"Choisissez 1 à 10 cases sur le plateau de 1 à 40.",how2:"Définissez le montant de votre mise et placez votre pari.",how3:"Nous tirons 10 numéros gagnants ; vos correspondances sont mises en évidence.",how4:"Les gains dépendent du nombre de cases que vous avez sélectionnées et du nombre de succès que vous avez obtenus—consultez la table des paiements.",how5:"Vous ne pouvez jamais obtenir plus de numéros que vous n'en avez sélectionné, et la sélection maximale est de 10.",overview:"Choisissez vos numéros porte-bonheur et essayez de correspondre au tirage. Vous pouvez choisir de 1 à 10 numéros parmi 1 à 40, puis nous tirons 10 numéros. Plus vous avez de numéros gagnants, plus votre gain est élevé.",provablyFair:"Notre système de génération d’aléa vérifiable génère chaque tirage de Keno. Après chaque manche, vous pouvez consulter les entrées et la preuve, vérifier le résultat avec notre clé publique et reproduire le même résultat.",strategyTip:"Choisissez votre volatilité. Choisir moins de cases signifie des gains plus rares mais des multiplicateurs beaucoup plus élevés. Plus de cases offrent des gains plus fréquents mais des gains moyens plus faibles par victoire. Une plage intermédiaire équilibre la fréquence des gains et le paiement. Ajustez la taille de votre mise selon votre préférence de risque et votre capital."},limbo:{how1:"Définissez votre multiplicateur cible.",how2:"Définissez le montant de votre mise et placez votre pari.",how3:"Nous générons un multiplicateur de résultat aléatoire.",how4:"Vous gagnez si le résultat est supérieur ou égal à votre objectif.",how5:"Votre gain est la mise multipliée par votre multiplicateur cible ; sinon, vous perdez votre mise.",overview:"Dans Limbo, vous définissez votre gain souhaité, et le jeu tire un seul multiplicateur de résultat aléatoire. Si le résultat atteint au moins votre objectif, vous gagnez. S'il est inférieur, vous perdez. Une chance plus élevée diminue le multiplicateur ; une chance plus faible l’augmente.",provablyFair:"Notre système d'aléa vérifiable génère chaque résultat de Limbo. Après chaque manche, vous pouvez consulter les entrées et la preuve, vérifier le résultat avec notre clé publique et reproduire le même résultat.",strategyTip:"Des cibles plus basses gagnent plus souvent mais paient moins, tandis que des cibles plus élevées touchent rarement mais paient beaucoup plus. Envisagez une cible fixe par session ou ajoutez de temps en temps des paris à haut risque, et ajustez la taille des mises de façon cohérente pour gérer la variance."},limitContent:"Le multiplicateur maximal pouvant être atteint pour ce jeu est de {multiplier}X. Le gain maximal pouvant être atteint est de {payout}",limitTitle:"Limites",mines:{how1:"Choisissez le nombre de mines pour ce tour.",how2:"Définissez le montant de votre mise et placez votre pari.",how3:"Cliquez sur les cases pour les révéler : une case sûre augmente votre multiplicateur ; une mine termine la manche.",how4:"Vous pouvez encaisser à tout moment pour verrouiller votre multiplicateur actuel.",how5:"Votre gain est la mise multipliée par le multiplicateur actuel lorsque vous encaissez.",how6:"Le tour se termine lorsque vous encaissez ou lorsqu'une mine est révélée.",overview:"Mines consiste à choisir des cases sûres et à décider quand encaisser. Avant le début du tour, choisissez combien de mines seront cachées sur le plateau. Chaque case sûre que vous découvrez augmente votre multiplicateur. Si vous touchez une mine, le tour se termine sans gain.",provablyFair:"Notre système d’aléa vérifiable génère la disposition cachée des mines de chaque plateau. Après chaque manche, vous pouvez consulter les entrées et la preuve, vérifier le résultat avec notre clé publique et reproduire le même résultat.",strategyTip:"Choisissez votre volatilité. Moins de mines signifie des révélations plus sûres et des multiplicateurs plus petits à chaque étape. Plus de mines entraînent des révélations plus risquées avec de plus gros multiplicateurs. Fixez un objectif ou utilisez un stop-loss pour gérer les variations. Une taille de mise cohérente et des retraits disciplinés aident à maîtriser la variance."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Le pourcentage de retour au joueur (RTP) pour ce jeu est de {rtpValue}%.",rtpTitle:"RTP : {rtpValue}%",strategyTitle:"Stratégie",tutorial:"Tutoriel",wheel:{how1:"Sélectionnez votre niveau de risque et le nombre de segments.",how2:"Définissez le montant de votre mise et placez votre pari.",how3:"La roue tourne et s'arrête sur un segment.",how4:"Votre gain est la mise × le multiplicateur indiqué sur le segment où la roue s’arrête.",how5:"Chaque segment a un multiplicateur différent en fonction du niveau de risque choisi et du nombre de segments.",overview:"Faites tourner la roue et regardez où elle s’arrête. Choisissez votre niveau de risque et le nombre de segments avant chaque tour - un risque plus faible offre des gains plus fréquents avec des multiplicateurs plus petits ; un risque plus élevé offre des gains plus rares avec des multiplicateurs plus importants.",provablyFair:"Notre système d’aléa vérifiable génère chaque résultat de la Wheel. Après chaque manche, vous pouvez consulter les entrées et la preuve, vérifier le résultat avec notre clé publique et reproduire exactement le même résultat.",strategyTip:"Faible risque offre des gains réguliers et plus petits. Risque moyen équilibre fréquence et paiement. Risque élevé vise des multiplicateurs rares mais énormes. Plus de segments augmentent le potentiel maximal mais réduisent la fréquence des gains."},roulette:{how1:"Cliquez sur la grille pour placer des jetons sur vos paris choisis.",how2:"Ajustez votre mise par clic avec les boutons 1/2 et 2X.",how3:"Placez votre mise pour faire tourner la roue.",how4:"La bille atterrit sur un numéro aléatoire de 0 à 36 (ou 00 pour l'américaine).",how5:"Les paris gagnants sont payés selon leurs cotes ; tous les autres jetons sont perdus.",overview:"Placez des jetons sur la grille de paris et faites tourner la roue. Pariez sur des numéros simples, des groupes de numéros, des couleurs ou pair/impair. La bille atterrit dans une case aléatoire, et les paris correspondants sont payés selon leurs cotes.",provablyFair:"Notre système de hasard vérifiable génère chaque tour de roulette. Après chaque tour, vous pouvez consulter les entrées et la preuve, vérifier le résultat avec notre clé publique et reproduire le même résultat.",strategyTip:"Les paris extérieurs (rouge/noir, pair/impair) offrent près de 50% de chances de gain avec un paiement de 2X. Les paris intérieurs sur des numéros simples paient jusqu'à 36X mais touchent rarement. Répartissez vos jetons pour équilibrer risque et récompense."}},games:{advancedDice:{between:"Entre",boundsLower:"Limite inférieure",boundsUpper:"Limite supérieure",inside:"À l'intérieur",outside:"À l'extérieur",rollMode:"Mode de lancer",secondBoundsLower:"Deuxième limite inférieure",secondBoundsUpper:"Deuxième limite supérieure"},dice:{rollOver:"Lancer au-dessus",rollUnder:"Lancer en dessous"},keno:{autoPick:"Sélection automatique",clearTable:"Effacer",kenoGameGrid:"Grille de jeu Keno",kenoNumber:"Numéro Keno {value}",selectAtLeastOneTile:"Sélectionnez au moins une tuile",selectTileToAutobet:"Sélectionnez au moins une tuile"},limbo:{multiplierError:"Doit être compris entre {min} et {max}",targetMultiplier:"Multiplicateur",winChanceError:"Doit être compris entre {min} et {max}"},mines:{cashout:"Encaisser",gem:"Gemme",gems:"Gemmes",mine:"Mines",mines:"Mines",nextGem:"Prochaine Gemme",selectRandomTile:"Sélectionner une tuile aléatoire",selectTileToAutobet:"Sélectionnez au moins une tuile",tile:"Tuile",unrevealed:"Non révélé"},wheel:{segments:"Segments"},roulette:{chipValue:"Valeur Du Jeton",totalBetAmount:"Mise Totale"}},hotkeys:{clearBets:"Effacer les Mises",doubleBet:"Doubler le montant de la mise",doubleChipValue:"Doubler la Valeur du Jeton",doubleTotalBet:"Doubler la Mise Totale",halveBet:"Diviser le montant de la mise par deux",halveChipValue:"Réduire la Valeur du Jeton",halveTotalBet:"Réduire la Mise Totale",higherTarget:"Cible supérieure",info:"Lorsque les raccourcis clavier sont activés, ils resteront actifs pour ce jeu jusqu'à leur désactivation. Bien que certains jeux partagent des raccourcis similaires, il est toujours conseillé de vérifier les raccourcis clavier pour chaque jeu.",lowerTarget:"Cible inférieure",makeBet:"Placer un pari",resetChipValue:"Réinitialiser la Valeur du Jeton",toggleWinCondition:"Basculer la condition de gain",undo:"Annuler",zeroBet:"Montant de mise zéro"},modals:{betResult:"Résultat du pari",fairnessAndHistory:"Équité et historique",gameArea:"Zone de jeu",gameControls:"Contrôles du jeu",gameInfo:"Infos du jeu"}}});var $4=D1((at,Ji)=>{Ji.exports={accessibility:{sliderValue:"{value} में से {max}"},alerts:{autobetStarted:"ऑटोबेट मोड शुरू किया",autobetStopped:"ऑटोबेट मोड बंद किया गया",betAmountAboveMaxBet:"अधिकतम शर्त {value} है",betAmountBelowMinBet:"न्यूनतम शर्त {value} है",betLimitReached:"शर्त सीमा पहुँच गई",errorProcessingBet:"आपकी शर्त प्रक्रिया करते समय एक त्रुटि हुई। कृपया पुनः प्रयास करें।",failedToLoadBetData:"शर्त डेटा लोड करने में विफल",gameError:"आपकी शर्त प्रक्रिया करते समय एक त्रुटि हुई। कृपया पुनः प्रयास करें।",insufficientBalance:"अपर्याप्त शेष余额",maxPayoutExceeded:"अधिकतम भुगतान सीमा पार",notEnoughBalance:"पर्याप्त शेष नहीं है"},autobet:{configureAutobet:"Autobet कॉन्फ़िगर करें",games:"खेल",games10:"10 खेल",games100:"100 खेल",games25:"25 खेल",games5:"5 खेल",games50:"50 खेल",increase:"बढ़ाएँ",infinite:"अनंत",onLoss:"हानि पर",onWin:"जीत पर",reset:"रीसेट",startAutobet:"ऑटोबेट शुरू करें",stopAutobet:"ऑटोबेट बंद करें",stopOnLoss:"हानि होने पर रोकें",stopOnProfit:"मुनाफे पर रोकें"},clipboard:{linkCopied:"लिंक क्लिपबोर्ड पर कॉपी किया गया!"},common:{auto:"ऑटो",back:"वापस",balance:"शेष",bet:"शर्त राशि",betAmount:"शर्त राशि",cancel:"रद्द करें",cashOut:"कैश आउट",classic:"क्लासिक",confirm:"पुष्टि करें",copied:"कॉपी किया गया",currency:"मुद्रा",deposit:"जमा",disableHotkeys:"हॉटकीज़ अक्षम करें",disableMaxBet:"अधिकतम शर्त अक्षम करें",enableHotkeys:"हॉटकी सक्षम करें",enableMaxBet:"अधिकतम दांव सक्षम करें",footerNavigation:"फुटर नेविगेशन",gameInfo:"खेल जानकारी",gameName:"खेल का नाम",high:"उच्च",history:"इतिहास",hotkeys:"हॉटकीज़",id:"आईडी",instantBet:"तुरंत शर्त",loading:"लोड हो रहा है...",loadMore:"और लोड करें",lobby:"लॉबी पर वापस जाएँ",low:"कम",manual:"मैनुअल",max:"MAX",medium:"मध्यम",multiplier:"गुणक",payout:"भुगतान",placeBet:"दांव लगाएं",profit:"मुनाफा",profitOnWin:"जीत पर लाभ",provablyFair:"सिद्ध रूप से निष्पक्ष",risk:"जोखिम",roundId:"राउंड ID",saveChanges:"परिवर्तन सहेजें",shareReplay:"रीप्ले साझा करें",siteInformation:"खेल जानकारी",space:"SPACE",support:"सहायता",targetMultiplier:"गुणक",thisFieldIsRequired:"यह फ़ील्ड आवश्यक है",timestamp:"समय",toggleHotkeys:"हॉटकी टॉगल करें",viewFairnessInformation:"न्यायपूर्णता की जानकारी देखें",viewHistory:"इतिहास देखें",volume:"आवाज़",winChance:"विजय संभावना"},errors:{dice:{multiplierRange:"{min} और {max} के बीच होना चाहिए",winChanceRange:"{min} और {max} के बीच होना चाहिए"},noWheelData:"व्हील डेटा उपलब्ध नहीं है",requestDropped:"अनुरोध छोड़ दिया गया"},fairness:{activeClientSeed:"सक्रिय क्लाइंट सीड",enterClientSeed:"क्लाइंट सीड दर्ज करें",enterProof:"प्रमाण दर्ज करें",enterPublicKey:"सार्वजनिक कुंजी दर्ज करें",enterRandomness:"यादृच्छिकता दर्ज करें",enterRequest:"अनुरोध दर्ज करें",info:{p1:"हर राउंड का परिणाम सत्यापित यादृच्छिकता (verifiable randomness) से आता है, न कि छिपी हुई सर्वर लॉजिक से। हम आपके राउंड के लिए अद्वितीय मानों—gameId, tenantId, tenantUserId, एक बढ़ता हुआ nonce (हर पूरे हुए राउंड के लिए एक), और आपका clientSeed—से एक नियतात्मक बीज (deterministic seed) बनाते हैं। इससे यह गारंटी मिलती है कि हर राउंड अद्वितीय और पुनरुत्पादित करने योग्य है: वही इनपुट्स → वही यादृच्छिक स्ट्रीम → वही परिणाम।",p2:"उस seed को Elliptic Curve Verifiable Random Function (ECVRF) के माध्यम से IETF स्पेक draft-irtf-cfrg-vrf-15 के अनुसार चलाया जाता है। हमारा सर्वर अपनी private key का उपयोग करके एक random value और एक cryptographic proof (proofString) उत्पन्न करता है। हमारे public key के साथ कोई भी व्यक्ति दिए गए इनपुट्स के लिए उस proof को स्वतंत्र रूप से सत्यापित कर सकता है—यह पुष्टि करते हुए कि randomness seed से आई थी और उसमें कोई छेड़छाड़ नहीं हुई। SDK TypeScript है, जबकि कोर क्रिप्टो में प्रदर्शन और सुरक्षा के लिए NAPI-RS के माध्यम से fastcrypto Rust लाइब्रेरी का उपयोग किया गया है।",p3:"सत्यापित होने के बाद, VRF आउटपुट एक नियतात्मक रैंडम बाइट जेनरेटर (hashSequence) को सीड करता है। गेम्स उन बाइट्स को नियतात्मक, निष्पक्ष तर्क का उपयोग करके परिणामों में बदलते हैं। क्योंकि प्रक्रिया नियतात्मक है और nonce हर पूर्ण राउंड के बाद आगे बढ़ता है, आपको पुनः चलने योग्य ऑडिट (बिल्कुल वही राउंड दोबारा बनाना) और हर बार नई, न दोहराई जाने वाली रैंडमनेस दोनों मिलती हैं।",p4:"एक राउंड के बाद, आपके पास इनपुट्स (जिसमें आपका clientSeed और उस राउंड का nonce शामिल है), VRF आउटपुट, proofString और हमारी सार्वजनिक कुंजी होती है। किसी भी ECVRF verifier या हमारी लाइब्रेरीज़ का उपयोग करके: (1) इनपुट्स और सार्वजनिक कुंजी के खिलाफ proof को सत्यापित करें, और (2) वही hashSequence और परिणाम पुन: उत्पन्न करें। हमारी निजी कुंजी कभी भी सुरक्षित सर्वर से बाहर नहीं जाती; सार्वजनिक कुंजी स्वतंत्र जांच के लिए client-side पर उपयोग करने के लिए सुरक्षित है।",step1Desc:"हम gameId, tenantId, tenantUserId, प्रति-राउंड nonce, और आपका clientSeed को जोड़ते हैं। एक जैसी इनपुट हमेशा एक जैसी यादृच्छिक स्ट्रीम और परिणाम देती है।",step1Title:"निर्धारित सीड",step2Title:"यादृच्छिकता उत्पन्न करें",step3Desc:"कोई भी हमारे सार्वजनिक कुंजी का उपयोग करके दिए गए इनपुट के लिए proofString को सत्यापित कर सकता है। इससे यह पुष्टि होती है कि रैंडमनेस seed से मेल खाती है और इसमें कोई छेड़छाड़ नहीं की गई है।",step3Title:"प्रमाण सत्यापित करें",step4Title:"परिणाम निकालें",step5Title:"प्रजनन"},invalidGame:"अमान्य गेम प्रकार प्रदान किया गया।",learnMore:"और जानें",newClientSeed:"नया clientSeed",noBettingHistory:"कोई सट्टेबाजी इतिहास नहीं",outcomeCalculationInfo:"यह खेल एक प्रमाणित निष्पक्ष एल्गोरिदम का उपयोग करता है जो सुनिश्चित करता है कि परिणाम निष्पक्ष और पारदर्शी है।",outcomeNotVerified:"इस खेल का परिणाम सत्यापित नहीं किया जा सका। कृपया दोबारा जांचें कि आपने सही जानकारी दर्ज की है और पुनः प्रयास करें।",outcomeVerified:"इस राउंड का परिणाम हमारे सार्वजनिक कुंजी के साथ सत्यापित किया गया है और यह प्रमाणित रूप से निष्पक्ष है।",proof:"सабूत",publicKey:"सक्रिय सार्वजनिक कुंजी",randomness:"यादृच्छिकता",request:"अनुरोध",saveClientSeed:"क्लाइंट सीड सहेजें",verifyOutcome:"परिणाम सत्यापित करें"},gameInfo:{advancedDice:{how1:"अपना रोल मोड चुनें: अंदर, बाहर, या बीच में।",how2:"अपने जीतने वाले क्षेत्र को परिभाषित करने के लिए स्लाइडर खींचें।",how3:"अपनी दांव राशि सेट करें और दांव लगाएं।",how4:"0 और 100 के बीच एक यादृच्छिक संख्या उत्पन्न होती है।",how5:"जीतें यदि परिणाम आपके चुने हुए क्षेत्र में आता है।",overview:"एडवांस्ड डाइस आपको कस्टम विजेता क्षेत्र सेट करने देता है। अंदर चुनें जब परिणाम आपकी सीमा में आए तो जीतने के लिए, बाहर जब यह आपकी सीमा से परे हो, या बीच में दो विजेता क्षेत्रों में विभाजित करने के लिए।",provablyFair:"हमारी सत्यापन योग्य यादृच्छिकता प्रणाली हर एडवांस्ड डाइस परिणाम उत्पन्न करती है। हर राउंड के बाद, आप इनपुट और प्रमाण देख सकते हैं, हमारी सार्वजनिक कुंजी से परिणाम सत्यापित कर सकते हैं, और वही परिणाम पुन: उत्पन्न कर सकते हैं।",strategyTip:"चौड़े क्षेत्र अधिक बार जीत प्रदान करते हैं लेकिन छोटे गुणक के साथ। संकीर्ण क्षेत्र अधिक जोखिम लेते हैं लेकिन अधिक भुगतान करते हैं। बीच मोड आपको लचीली रणनीतियों के लिए दो श्रेणियों को लक्षित करने देता है।"},diamonds:{how1:"अपनी शर्त की राशि निर्धारित करें और अपनी शर्त लगाएं।",how2:"पांच हीरे रत्नों के एक निश्चित सेट से प्रकट होते हैं।",how3:"आपका परिणाम पोकर हाथ की तरह आंका जाता है: पेयर, दो पेयर, तीन का सेट, फुल हाउस, चार का सेट, और पांच का सेट.",how4:"प्रत्येक हाथ प्रकार का अपना गुणक होता है; उच्च मूल्य वाले हाथ बड़े गुणक प्रदान करते हैं, जबकि कोई भी बना हुआ हाथ 0X देता है।",how5:"आपका भुगतान आपके दांव को दिखाए गए गुणक से गुणा करने पर प्राप्त होने वाली राशि है।",overview:"Diamonds एक पाँच-रील मिलान खेल है। प्रत्येक राउंड में विभिन्न रत्न प्रकारों के सेट से पाँच हीरे प्रकट होते हैं। आपका लक्ष्य पोकर-शैली के संयोजन बनाना है - जोड़ी, तीन एक जैसे, फुल हाउस, आदि।",provablyFair:"हमारी सत्यापन योग्य रैन्डमनेस प्रणाली प्रत्येक हीरे के परिणाम का चयन करती है। हर राउंड के बाद, आप मूल रैन्डम मान और प्रमाण देख सकते हैं, हमारे सार्वजनिक कुंजी से परिणाम की पुष्टि कर सकते हैं, और वही हाथ दोबारा उत्पन्न कर सकते हैं।",strategyTip:"Diamonds एक उच्च-विचलन, निश्चित-अनुपात वाला खेल है जिसमें आप बड़े, पोकर-शैली के हाथों की तलाश कर रहे हैं। आपका मुख्य नियंत्रण यह है कि आप कितना आक्रामक खेलना चाहते हैं। अगर आप लगातार सूखे दौर से गुजरना चाहते हैं तो छोटे, स्थिर दांव लगाएं, या जब आप प्रीमियम हाथों का पीछा कर रहे हों तो कभी-कभी अपने दांव का आकार बढ़ाएं।"},dice:{how1:"रोल अंडर या रोल ओवर चुनें",how2:"अपना लक्ष्य संख्या निर्धारित करें",how3:"अपनी शर्त की राशि निर्धारित करें और अपनी शर्त लगाएं।",how4:"हम एक यादृच्छिक परिणाम उत्पन्न करते हैं (जो खेल में 0–99.99 के पैमाने पर प्रदर्शित होता है)।",how5:"यदि परिणाम आपके चुने हुए दायरे में है तो आप जीतते हैं",how6:"आपकी भुगतान राशि आपके दांव x दिखाए गए गुणक के बराबर है, जो जैसे-जैसे आप स्लाइडर को घुमाते हैं, अपडेट होता रहता है।",overview:"एक लक्ष्य संख्या निर्धारित करें और चुनें कि रोल उस पर या उसके ऊपर आएगा। स्लाइडर को मूव करने से आपकी जीतने की संभावना और मल्टीप्लायर बदलता है—अधिक संभावना मल्टीप्लायर को कम करती है, जबकि कम संभावना उसे बढ़ाती है। हर राउंड गेम के स्केल पर एक स्वतंत्र रोल होता है।",provablyFair:"हमारी सत्यापन योग्य रैंडमनेस प्रणाली हर Dice रोल उत्पन्न करती है। हर राउंड के बाद, आप इनपुट्स और प्रमाण देख सकते हैं, हमारे सार्वजनिक कुंजी से परिणाम सत्यापित कर सकते हैं, और वही परिणाम पुनः उत्पन्न कर सकते हैं।",strategyTip:"अपनी वोलैटिलिटी चुनें। कम जीतने की संभावना बड़े मल्टीप्लायर देती है लेकिन जीत कम बार मिलती है। ज्यादा जीतने की संभावना छोटे मल्टीप्लायर देती है लेकिन जीत अधिक बार मिलती है। अपने दांव को अपने बैंक रोल के अनुसार तय करें ताकि उतार-चढ़ाव स्थिर रहें।"},keno:{how1:"1-40 बोर्ड पर 1–10 टाइलें चुनें.",how2:"अपनी शर्त की राशि निर्धारित करें और अपनी शर्त लगाएं।",how3:"हम 10 विजेता नंबर निकालते हैं; आपके मेल किए गए नंबर हाइलाइट किए जाते हैं।",how4:"भुगतान इस बात पर निर्भर करता है कि आपने कितने टाइल चुने और आपको कितने हिट मिले—पेयटेबल देखें।",how5:"आप जितने नंबर चुनते हैं उससे अधिक नंबर कभी नहीं आ सकते, और अधिकतम चयन 10 है.",overview:"अपने भाग्यशाली नंबर चुनें और ड्रॉ से मेल खाने की कोशिश करें। आप 1–40 में से 1–10 नंबर चुन सकते हैं, और फिर हम 10 नंबर ड्रॉ करते हैं। जितने अधिक नंबर आपके चुने हुए नंबरों में से निकलते हैं, आपकी जीत उतनी ही अधिक होती है।",provablyFair:"हमारी सत्यापन योग्य रैंडमनेस प्रणाली हर Keno ड्रा उत्पन्न करती है। हर राउंड के बाद, आप इनपुट्स और प्रमाण देख सकते हैं, हमारे सार्वजनिक कुंजी से परिणाम सत्यापित कर सकते हैं, और वही परिणाम पुन: उत्पन्न कर सकते हैं।",strategyTip:"अपनी वोलैटिलिटी चुनें। कम स्पॉट चुनने का मतलब है कम बार जीतना लेकिन बहुत बड़े मल्टीप्लायर मिलना। ज्यादा स्पॉट का मतलब है ज्यादा बार जीतना लेकिन हर जीत पर औसतन कम रिटर्न। मध्य श्रेणी में हिट रेट और पेआउट का संतुलन रहता है। अपने जोखिम की पसंद और बैंक रोल के अनुसार अपनी शर्त की राशि समायोजित करें।"},limbo:{how1:"अपना लक्ष्य गुणक सेट करें",how2:"अपनी शर्त की राशि निर्धारित करें और अपनी शर्त लगाएं।",how3:"हम एक यादृच्छिक परिणाम गुणक उत्पन्न करते हैं।",how4:"यदि परिणाम आपके लक्ष्य से अधिक या उसके बराबर है तो आप जीतते हैं",how5:"आपकी भुगतान राशि आपकी शर्त x आपके लक्ष्य गुणक है; अन्यथा, आप अपनी शर्त हार जाते हैं.",overview:"Limbo में, आप अपनी इच्छित पayout सेट करते हैं, और खेल एक यादृच्छिक परिणाम गुणक निकालता है। यदि परिणाम कम से कम आपके लक्ष्य के बराबर है, तो आप जीतते हैं। यदि यह कम है, तो आप हार जाते हैं। अधिक मौका गुणक को कम करता है; कम मौका इसे बढ़ाता है।",provablyFair:"हमारी सत्यापनीय रैंडमनेस प्रणाली हर Limbo परिणाम उत्पन्न करती है। हर राउंड के बाद, आप इनपुट और प्रमाण देख सकते हैं, हमारे सार्वजनिक कुंजी से परिणाम सत्यापित कर सकते हैं, और वही परिणाम पुनः उत्पन्न कर सकते हैं।",strategyTip:"निचले लक्ष्य अधिक बार जीतते हैं लेकिन कम भुगतान करते हैं, जबकि ऊँचे लक्ष्य कम ही लगते हैं लेकिन बहुत अधिक भुगतान करते हैं। प्रत्येक सत्र के लिए एक निश्चित लक्ष्य पर विचार करें या कभी-कभी लंबी बाज़ियों को शामिल करें, और विविधता को प्रबंधित करने के लिए दांव का आकार लगातार रखें।"},limitContent:"इस खेल के लिए अधिकतम प्राप्त किया जा सकने वाला मल्टीप्लायर {multiplier}X है। अधिकतम प्राप्त किया जा सकने वाला भुगतान {payout} है",limitTitle:"सीमाएँ",mines:{how1:"इस राउंड के लिए माइन की संख्या चुनें.",how2:"अपनी शर्त की राशि निर्धारित करें और अपनी शर्त लगाएं।",how3:"टाइल्स पर क्लिक करके उन्हें प्रकट करें: एक सुरक्षित टाइल आपका मल्टीप्लायर बढ़ाती है; एक माइन राउंड समाप्त कर देती है।",how4:"आप किसी भी समय अपना वर्तमान मल्टीप्लायर लॉक करने के लिए कैशआउट कर सकते हैं।",how5:"जब आप कैश आउट करते हैं, तो आपकी पayout आपके bet को वर्तमान मल्टीप्लायर से गुणा करके होती है.",how6:"राउंड तब समाप्त होता है जब आप कैश आउट करते हैं या जब कोई माइन्स प्रकट होती है।",overview:"Mines सुरक्षित टाइल्स चुनने और कब कैशआउट करना है, इसका फैसला करने का खेल है। राउंड शुरू होने से पहले, चुनें कि बोर्ड पर कितनी mines छुपी होंगी। हर सुरक्षित टाइल जिसे आप खोलते हैं, आपका मल्टीप्लायर बढ़ जाता है। अगर आप किसी mine पर पहुंच जाते हैं, तो राउंड बिना किसी पेआउट के खत्म हो जाता है।",provablyFair:"हमारी सत्यापन योग्य रैंडमनेस प्रणाली प्रत्येक बोर्ड की छिपी हुई माइन लेआउट उत्पन्न करती है। हर राउंड के बाद, आप इनपुट और प्रमाण देख सकते हैं, हमारे सार्वजनिक कुंजी से परिणाम सत्यापित कर सकते हैं, और वही परिणाम पुन: उत्पन्न कर सकते हैं।",strategyTip:"अपनी वोलैटिलिटी चुनें। कम माइन का मतलब है सुरक्षित रिवील्स और प्रत्येक चरण पर छोटे मल्टीप्लायर। अधिक माइन का मतलब है जोखिम भरे रिवील्स और बड़े मल्टीप्लायर। स्विंग को मैनेज करने के लिए कोई टारगेट सेट करें या स्टॉप-लॉस का इस्तेमाल करें। लगातार एक जैसा दांव लगाना और अनुशासित कैश आउट्स वेरिएंस को नियंत्रण में रखने में मदद करते हैं।"},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"इस खेल के लिए रिटर्न-टू-प्लेयर (RTP) प्रतिशत {rtpValue}% है.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"रणनीति",tutorial:"ट्यूटोरियल",wheel:{how1:"अपना जोखिम स्तर और खंडों की संख्या चुनें.",how2:"अपनी शर्त की राशि निर्धारित करें और अपनी शर्त लगाएं।",how3:"पहिया घूमता है और एक खंड पर रुकता है.",how4:"आपका भुगतान उस हिस्से पर दिखाए गए गुणक के साथ दांव × होता है जहाँ पहिया रुकता है।",how5:"प्रत्येक खंड का गुणक आपके चुने गए जोखिम स्तर और खंडों की संख्या के आधार पर अलग होता है।",overview:"पहिया घुमाएँ और देखें यह कहाँ रुकता है। हर स्पिन से पहले अपना जोखिम स्तर और खंडों की संख्या चुनें - कम जोखिम पर छोटे गुणकों के साथ अधिक बार जीत मिलती है; अधिक जोखिम पर बड़े गुणकों के साथ जीत दुर्लभ होती है।",provablyFair:"हमारी सत्यापन योग्य रैंडमनेस प्रणाली हर Wheel परिणाम उत्पन्न करती है। हर राउंड के बाद, आप इनपुट और प्रमाण देख सकते हैं, हमारे सार्वजनिक कुंजी से परिणाम सत्यापित कर सकते हैं, और वही परिणाम पुन: उत्पन्न कर सकते हैं।",strategyTip:"कम जोखिम स्थिर, छोटे जीत प्रदान करता है। मध्यम जोखिम बारंबारता और भुगतान का संतुलन बनाता है। उच्च जोखिम दुर्लभ लेकिन भारी मल्टीप्लायर को लक्षित करता है। अधिक सेगमेंट अधिकतम संभावित लाभ बढ़ाते हैं लेकिन जीतने की आवृत्ति कम कर देते हैं।"},roulette:{how1:"अपने चुने हुए दांव पर चिप्स लगाने के लिए ग्रिड पर क्लिक करें।",how2:"1/2 और 2X बटन से प्रति क्लिक दांव राशि समायोजित करें।",how3:"पहिया घुमाने के लिए अपना दांव लगाएं।",how4:"गेंद 0-36 में से किसी भी नंबर पर गिरती है (अमेरिकन में 00 भी)।",how5:"जीतने वाले दांव अपने ऑड्स के अनुसार भुगतान करते हैं; अन्य सभी चिप्स खो जाती हैं।",overview:"बेटिंग ग्रिड पर चिप्स लगाएं और पहिया घुमाएं। एकल नंबर, नंबर समूह, रंग या सम/विषम पर दांव लगाएं। गेंद एक यादृच्छिक पॉकेट में गिरती है, और मिलान वाले दांव अपने ऑड्स के अनुसार भुगतान करते हैं।",provablyFair:"हमारी सत्यापन योग्य यादृच्छिकता प्रणाली हर रूलेट स्पिन उत्पन्न करती है। हर राउंड के बाद, आप इनपुट और प्रमाण देख सकते हैं, हमारी सार्वजनिक कुंजी से परिणाम सत्यापित कर सकते हैं, और वही परिणाम पुन: उत्पन्न कर सकते हैं।",strategyTip:"बाहरी दांव (लाल/काला, सम/विषम) 2X भुगतान के साथ लगभग 50% जीत का मौका देते हैं। एकल नंबर पर आंतरिक दांव 36X तक भुगतान करते हैं लेकिन शायद ही कभी लगते हैं। जोखिम और इनाम को संतुलित करने के लिए अपनी चिप्स फैलाएं।"}},games:{advancedDice:{between:"के बीच",boundsLower:"निचली सीमा",boundsUpper:"ऊपरी सीमा",inside:"अंदर",outside:"बाहर",rollMode:"रोल मोड",secondBoundsLower:"दूसरी निचली सीमा",secondBoundsUpper:"दूसरी ऊपरी सीमा"},dice:{rollOver:"रोल ओवर",rollUnder:"रोल अंडर"},keno:{autoPick:"ऑटो पिक",clearTable:"साफ",kenoGameGrid:"Keno खेल ग्रिड",kenoNumber:"Keno नंबर {value}",selectAtLeastOneTile:"कम से कम एक टाइल चुनें",selectTileToAutobet:"कम से कम एक टाइल चुनें"},limbo:{multiplierError:"{min} और {max} के बीच होना चाहिए",targetMultiplier:"गुणक",winChanceError:"{min} और {max} के बीच होना चाहिए"},mines:{cashout:"कैश आउट",gem:"रत्न",gems:"रत्न",mine:"माइन",mines:"माइन्स",nextGem:"अगला रत्न",selectRandomTile:"यादृच्छिक टाइल चुनें",selectTileToAutobet:"कम से कम एक टाइल चुनें",tile:"टाइल",unrevealed:"अप्रकट"},wheel:{segments:"सेगमेंट्स"},roulette:{chipValue:"चिप मूल्य",totalBetAmount:"कुल दांव राशि"}},hotkeys:{clearBets:"दांव साफ़ करें",doubleBet:"दांव राशि दोगुनी करें",doubleChipValue:"चिप मूल्य दोगुना करें",doubleTotalBet:"कुल दांव दोगुना करें",halveBet:"शर्त राशि आधी करें",halveChipValue:"चिप मूल्य आधा करें",halveTotalBet:"कुल दांव आधा करें",higherTarget:"ऊँचा लक्ष्य",info:"जब हॉटकीज़ सक्षम होती हैं, तो वे इस गेम के लिए तब तक चालू रहेंगी जब तक उन्हें अक्षम नहीं किया जाता। हालांकि कुछ गेम्स में समान की बाइंड्स हो सकती हैं, फिर भी प्रत्येक गेम के लिए हॉटकीज़ की पुष्टि करना हमेशा सलाह दी जाती है।",lowerTarget:"निम्न लक्ष्य",makeBet:"दांव लगाएं",resetChipValue:"चिप मूल्य रीसेट करें",toggleWinCondition:"विजय शर्त टॉगल करें",undo:"पूर्ववत करें",zeroBet:"शून्य दांव राशि"},modals:{betResult:"दांव परिणाम",fairnessAndHistory:"न्यायपूर्णता और इतिहास",gameArea:"गेम क्षेत्र",gameControls:"गेम नियंत्रण",gameInfo:"खेल जानकारी"}}});var W4=D1((it,Di)=>{Di.exports={accessibility:{sliderValue:"{value} dari {max}"},alerts:{autobetStarted:"Mode autobet dimulai",autobetStopped:"Mode autobet dihentikan",betAmountAboveMaxBet:"Taruhan maksimum adalah {value}",betAmountBelowMinBet:"Taruhan minimum adalah {value}",betLimitReached:"Batas taruhan tercapai",errorProcessingBet:"Terjadi kesalahan saat memproses taruhan Anda. Silakan coba lagi.",failedToLoadBetData:"Gagal memuat data taruhan",gameError:"Terjadi kesalahan saat memproses taruhan Anda. Silakan coba lagi.",insufficientBalance:"Saldo tidak cukup",maxPayoutExceeded:"Pembayaran maksimum terlampaui",notEnoughBalance:"Saldo tidak cukup"},autobet:{configureAutobet:"Konfigurasi Autobet",games:"Permainan",games10:"10 Permainan",games100:"100 Permainan",games25:"25 Permainan",games5:"5 Permainan",games50:"50 Permainan",increase:"Tingkatkan",infinite:"Tak terbatas",onLoss:"Saat Kalah",onWin:"Saat Menang",reset:"Atur Ulang",startAutobet:"Mulai Autobet",stopAutobet:"Hentikan Autobet",stopOnLoss:"Berhenti saat Kalah",stopOnProfit:"Berhenti Saat Untung"},clipboard:{linkCopied:"Tautan disalin ke papan klip!"},common:{auto:"Otomatis",back:"Kembali",balance:"Saldo",bet:"Jumlah Taruhan",betAmount:"Jumlah Taruhan",cancel:"Batalkan",cashOut:"Tarik Dana",classic:"Klasik",confirm:"Konfirmasi",copied:"Disalin",currency:"Mata uang",deposit:"Setor",disableHotkeys:"Nonaktifkan Tombol Pintas",disableMaxBet:"Nonaktifkan Taruhan Maksimum",enableHotkeys:"Aktifkan Tombol Pintas",enableMaxBet:"Aktifkan Taruhan Maksimum",footerNavigation:"Navigasi Footer",gameInfo:"Informasi Game",gameName:"Nama Game",high:"Tinggi",history:"Riwayat",hotkeys:"Tombol pintas",id:"ID",instantBet:"Taruhan Instan",loading:"Memuat...",loadMore:"Muat Lebih Banyak",lobby:"Kembali ke Lobi",low:"Rendah",manual:"Manual",max:"MAKS",medium:"Sedang",multiplier:"Pengganda",payout:"Pembayaran",placeBet:"Pasang Taruhan",profit:"Keuntungan",profitOnWin:"Keuntungan Saat Menang",provablyFair:"Terbukti Adil",risk:"Risiko",roundId:"ID Putaran",saveChanges:"Simpan Perubahan",shareReplay:"Bagikan Ulang",siteInformation:"Informasi Permainan",space:"SPACE",support:"Dukungan",targetMultiplier:"Pengganda",thisFieldIsRequired:"Kolom ini wajib diisi",timestamp:"Waktu",toggleHotkeys:"Alihkan Tombol Pintas",viewFairnessInformation:"Lihat Informasi Keadilan",viewHistory:"Lihat Riwayat",volume:"Volume",winChance:"Peluang Menang"},errors:{dice:{multiplierRange:"Harus antara {min} dan {max}",winChanceRange:"Harus antara {min} dan {max}"},noWheelData:"Data roda tidak tersedia",requestDropped:"Permintaan dibatalkan"},fairness:{activeClientSeed:"Client Seed Aktif",enterClientSeed:"Masukkan Client Seed",enterProof:"Masukkan Bukti",enterPublicKey:"Masukkan Kunci Publik",enterRandomness:"Masukkan Keberacakan",enterRequest:"Masukkan Permintaan",info:{p1:"Hasil setiap ronde berasal dari keacakan yang dapat diverifikasi, bukan logika server yang tersembunyi. Kami membangun seed deterministik dari nilai-nilai yang unik untuk ronde Anda—gameId, tenantId, tenantUserId, nonce yang bertambah (satu untuk setiap ronde yang diselesaikan), ditambah clientSeed Anda. Ini menjamin setiap ronde bersifat unik dan dapat direproduksi: input yang sama → aliran acak yang sama → hasil yang sama.",p2:"Seed tersebut dijalankan melalui Elliptic Curve Verifiable Random Function (ECVRF) sesuai dengan spesifikasi IETF draft-irtf-cfrg-vrf-15. Server kami menggunakan kunci privatnya untuk menghasilkan nilai acak dan bukti kriptografi (proofString). Siapa pun yang memiliki kunci publik kami dapat secara independen memverifikasi bukti tersebut untuk input yang diberikan—memastikan bahwa keacakan berasal dari seed dan tidak dimanipulasi. SDK menggunakan TypeScript, sementara inti kriptonya menggunakan pustaka fastcrypto Rust melalui NAPI-RS untuk performa dan keamanan.",p3:"Setelah diverifikasi, output VRF menjadi benih bagi generator byte acak deterministik (hashSequence). Permainan mengubah byte tersebut menjadi hasil menggunakan logika deterministik yang tidak bias. Karena prosesnya deterministik dan nonce bertambah setiap ronde selesai, Anda mendapatkan audit yang dapat diputar ulang (mengulangi ronde yang sama persis) dan keacakan baru yang tidak berulang setiap saat.",p4:"Setelah satu putaran, Anda memiliki input (termasuk clientSeed Anda dan nonce putaran), output VRF, proofString, dan kunci publik kami. Gunakan verifikator ECVRF mana pun atau pustaka kami untuk: (1) memverifikasi proof terhadap input dan kunci publik, dan (2) menghasilkan kembali hashSequence dan hasil yang sama. Kunci privat kami tidak pernah keluar dari server yang aman; kunci publik aman digunakan di sisi klien untuk pemeriksaan independen.",step1Desc:"Kami menggabungkan gameId, tenantId, tenantUserId, nonce per putaran, dan clientSeed Anda. Input yang sama akan selalu menghasilkan aliran acak dan hasil yang sama.",step1Title:"Benih Deterministik",step2Title:"Hasilkan Keacakan",step3Desc:"Siapa pun dapat memverifikasi proofString untuk input yang diberikan menggunakan public key kami. Ini memastikan bahwa keacakan sesuai dengan seed dan tidak dimanipulasi.",step3Title:"Verifikasi Bukti",step4Title:"Menurunkan Hasil",step5Title:"Reproduksi"},invalidGame:"Jenis permainan yang diberikan tidak valid.",learnMore:"Pelajari Lebih Lanjut",newClientSeed:"Client Seed Baru",noBettingHistory:"Tidak ada riwayat taruhan",outcomeCalculationInfo:"Game ini menggunakan algoritme provably fair yang memastikan hasilnya adil dan transparan.",outcomeNotVerified:"Hasil dari permainan ini tidak dapat diverifikasi. Periksa kembali apakah Anda telah memasukkan informasi yang benar dan coba lagi.",outcomeVerified:"Hasil dari putaran ini telah diverifikasi dengan kunci publik kami dan terbukti adil.",proof:"Bukti",publicKey:"Kunci Publik Aktif",randomness:"Keacakan",request:"Permintaan",saveClientSeed:"Simpan Client Seed",verifyOutcome:"Verifikasi Hasil"},gameInfo:{advancedDice:{how1:"Pilih mode lempar: Dalam, Luar, atau Antara.",how2:"Seret penggeser untuk menentukan zona kemenangan Anda.",how3:"Tetapkan jumlah taruhan dan pasang taruhan.",how4:"Angka acak antara 0 dan 100 dihasilkan.",how5:"Menang jika hasilnya jatuh dalam zona yang dipilih.",overview:"Advanced Dice memungkinkan Anda mengatur zona kemenangan khusus. Pilih Dalam untuk menang saat hasil jatuh dalam rentang Anda, Luar untuk menang saat jatuh di luar rentang, atau Antara untuk membagi menjadi dua zona kemenangan.",provablyFair:"Sistem keacakan terverifikasi kami menghasilkan setiap hasil Advanced Dice. Setelah setiap putaran, Anda dapat melihat input dan bukti, memverifikasi hasil dengan kunci publik kami, dan mereproduksi hasil yang sama.",strategyTip:"Zona lebih luas menawarkan kemenangan lebih sering tetapi pengganda lebih kecil. Zona sempit lebih berisiko tetapi membayar lebih besar. Mode Antara memungkinkan Anda menargetkan dua rentang untuk strategi fleksibel."},diamonds:{how1:"Atur jumlah taruhan Anda dan pasang taruhan Anda.",how2:"Lima berlian diungkapkan dari satu set jenis permata yang tetap.",how3:"Hasil Anda dievaluasi seperti tangan poker: pasangan, dua pasangan, three-of-a-kind, full house, four-of-a-kind, dan five-of-a-kind.",how4:"Setiap jenis tangan memiliki pengalinya sendiri; tangan dengan nilai lebih tinggi memberikan pengali yang lebih besar, sedangkan jika tidak ada kombinasi tangan yang terbentuk membayar 0X.",how5:"Pembayaran Anda adalah taruhan Anda dikalikan dengan pengali yang ditampilkan untuk hasil kartu tersebut.",overview:"Diamonds adalah permainan mencocokkan lima gulungan. Setiap putaran akan menampilkan lima berlian dari berbagai jenis permata. Tujuan Anda adalah mendapatkan kombinasi seperti poker - pasangan, tiga-of-a-kind, full house, dan seterusnya.",provablyFair:"Sistem keacakan terverifikasi kami memilih setiap hasil diamond. Setelah setiap putaran, Anda dapat melihat nilai acak dan bukti yang mendasarinya, memverifikasi hasil dengan kunci publik kami, dan mereproduksi tangan yang sama.",strategyTip:"Diamonds adalah permainan dengan volatilitas tinggi dan odds tetap di mana Anda berburu kombinasi besar seperti pada poker. Tuas utama Anda adalah seberapa agresif Anda ingin bermain. Gunakan taruhan kecil dan stabil jika Anda ingin bertahan di masa-masa kering, atau sesekali tingkatkan ukuran taruhan Anda saat Anda mengejar kombinasi premium."},dice:{how1:"Pilih roll bawah atau roll atas.",how2:"Atur angka target Anda.",how3:"Atur jumlah taruhan Anda dan pasang taruhan Anda.",how4:"Kami menghasilkan satu hasil acak (ditampilkan pada skala 0–99,99 di dalam game).",how5:"Anda menang jika hasilnya berada dalam rentang yang Anda pilih.",how6:"Pembayaran Anda adalah taruhan x pengali yang ditampilkan, yang akan diperbarui saat Anda menggeser slider.",overview:"Tetapkan angka target dan pilih apakah hasil roll akan berada di bawah atau di atas angka tersebut. Menggeser slider akan mengubah peluang menang dan pengganda Anda—peluang yang lebih tinggi menurunkan pengganda, sedangkan peluang yang lebih rendah meningkatkannya. Setiap ronde adalah satu roll independen pada skala permainan.",provablyFair:"Sistem keacakan terverifikasi kami menghasilkan setiap lemparan Dice. Setelah setiap putaran, Anda dapat melihat input dan bukti, memverifikasi hasilnya dengan kunci publik kami, dan mereproduksi hasil yang sama.",strategyTip:"Pilih volatilitas Anda. Peluang menang yang lebih rendah menghasilkan pengganda yang lebih besar tetapi kemenangan yang lebih jarang. Peluang menang yang lebih tinggi menghasilkan pengganda yang lebih kecil tetapi kemenangan yang lebih sering. Sesuaikan ukuran taruhan Anda dengan bankroll Anda untuk ayunan yang lebih stabil."},keno:{how1:"Pilih 1–10 ubin pada papan 1–40.",how2:"Atur jumlah taruhan Anda dan pasang taruhan Anda.",how3:"Kami menarik 10 nomor pemenang; kecocokan Anda disorot.",how4:"Pembayaran tergantung pada berapa banyak ubin yang Anda pilih dan berapa banyak yang berhasil Anda temukan—periksa tabel pembayaran.",how5:"Anda tidak pernah bisa mendapatkan lebih banyak angka daripada yang Anda pilih, dan pilihan maksimum adalah 10.",overview:"Pilih angka keberuntungan Anda dan coba cocokkan dengan hasil undian. Anda dapat memilih 1–10 angka dari 1–40, lalu kami akan mengundi 10 angka. Semakin banyak angka pilihan Anda yang cocok, semakin tinggi pembayaran Anda.",provablyFair:"Sistem acak terverifikasi kami menghasilkan setiap undian Keno. Setelah setiap ronde, Anda dapat melihat input dan bukti, memverifikasi hasil dengan kunci publik kami, dan mereproduksi hasil yang sama.",strategyTip:"Pilih volatilitas Anda. Memilih jumlah titik lebih sedikit berarti kemenangan lebih jarang tetapi pengali jauh lebih besar. Lebih banyak titik memberikan kemenangan lebih sering tetapi rata-rata pembayaran per kemenangan lebih kecil. Kisaran tengah menyeimbangkan antara tingkat kemenangan dan pembayaran. Sesuaikan ukuran taruhan Anda agar sesuai dengan preferensi risiko dan saldo Anda."},limbo:{how1:"Atur pengali target Anda.",how2:"Atur jumlah taruhan Anda dan pasang taruhan Anda.",how3:"Kami menghasilkan satu pengali hasil acak.",how4:"Anda menang jika hasilnya lebih besar atau sama dengan target Anda.",how5:"Pembayaran Anda adalah taruhan x pengali target Anda; jika tidak, Anda kehilangan taruhan Anda.",overview:"Di Limbo, Anda menetapkan pembayaran yang diinginkan, dan permainan akan menghasilkan satu pengali hasil acak. Jika hasilnya setidaknya mencapai target Anda, Anda menang. Jika lebih rendah, Anda kalah. Peluang yang lebih tinggi menurunkan pengali; peluang yang lebih rendah meningkatkannya.",provablyFair:"Sistem keacakan terverifikasi kami menghasilkan setiap hasil Limbo. Setelah setiap putaran, Anda dapat melihat input dan bukti, memverifikasi hasilnya dengan kunci publik kami, dan mereproduksi hasil yang sama.",strategyTip:"Target yang lebih rendah menang lebih sering tetapi membayar lebih sedikit, sedangkan target yang lebih tinggi jarang tercapai tetapi membayar jauh lebih banyak. Pertimbangkan target tetap per sesi atau sesekali mencoba target tinggi, dan atur ukuran taruhan secara konsisten untuk mengelola varians."},limitContent:"Pengganda maksimum yang dapat dicapai untuk permainan ini adalah {multiplier}X. Pembayaran maksimum yang dapat dicapai adalah {payout}",limitTitle:"Batas",mines:{how1:"Pilih jumlah ranjau untuk putaran ini.",how2:"Atur jumlah taruhan Anda dan pasang taruhan Anda.",how3:"Klik ubin untuk mengungkapkannya: ubin yang aman akan meningkatkan pengganda Anda; ranjau mengakhiri ronde.",how4:"Anda dapat melakukan cash out kapan saja untuk mengunci pengganda Anda saat ini.",how5:"Pembayaran Anda adalah taruhan x pengali saat ini ketika Anda melakukan cash out.",how6:"Putaran berakhir ketika Anda melakukan cash out atau ketika sebuah ranjau terungkap.",overview:"Mines adalah tentang memilih petak yang aman dan menentukan kapan harus melakukan cash out. Sebelum ronde dimulai, pilih berapa banyak mines yang akan disembunyikan di papan. Setiap petak aman yang kamu buka akan meningkatkan pengali kamu. Jika kamu mengenai mine, ronde berakhir tanpa pembayaran.",provablyFair:"Sistem keacakan terverifikasi kami menghasilkan tata letak ranjau tersembunyi pada setiap papan. Setelah setiap putaran, Anda dapat melihat input dan bukti, memverifikasi hasil dengan kunci publik kami, dan mereproduksi hasil yang sama.",strategyTip:"Pilih volatilitas Anda. Lebih sedikit Mines berarti pengungkapan yang lebih aman dan kelipatan yang lebih kecil pada setiap langkah. Lebih banyak Mines menghasilkan pengungkapan yang lebih berisiko dengan kelipatan yang lebih besar. Tetapkan target atau gunakan stop-loss untuk mengelola fluktuasi. Ukuran taruhan yang konsisten dan pencairan dana yang disiplin membantu menjaga varians tetap terkendali."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Persentase Return-to-Player (RTP) untuk permainan ini adalah {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Strategi",tutorial:"Tutorial",wheel:{how1:"Pilih tingkat risiko dan jumlah segmen Anda.",how2:"Atur jumlah taruhan Anda dan pasang taruhan Anda.",how3:"Roda berputar dan berhenti pada sebuah segmen.",how4:"Pembayaran Anda adalah taruhan × pengganda yang ditunjukkan pada segmen tempat roda berhenti.",how5:"Setiap segmen memiliki pengali yang berbeda berdasarkan tingkat risiko dan jumlah segmen yang Anda pilih.",overview:"Putar roda dan lihat di mana ia berhenti. Pilih tingkat risiko dan jumlah segmen sebelum setiap putaran - risiko lebih rendah memberikan kemenangan lebih sering dengan pengali yang lebih kecil; risiko lebih tinggi memberikan kemenangan yang jarang dengan pengali yang lebih besar.",provablyFair:"Sistem keacakan yang dapat diverifikasi kami menghasilkan setiap hasil Wheel. Setelah setiap putaran, Anda dapat melihat input dan bukti, memverifikasi hasilnya dengan kunci publik kami, dan mereproduksi hasil yang sama.",strategyTip:"Risiko rendah menawarkan kemenangan kecil yang stabil. Risiko sedang menyeimbangkan frekuensi dan pembayaran. Risiko tinggi menargetkan pengganda yang jarang tetapi besar. Lebih banyak segmen meningkatkan potensi maksimum tetapi mengurangi frekuensi kemenangan."},roulette:{how1:"Klik pada grid untuk menempatkan chip pada taruhan pilihan Anda.",how2:"Sesuaikan jumlah taruhan per klik dengan tombol 1/2 dan 2X.",how3:"Pasang taruhan Anda untuk memutar roda.",how4:"Bola mendarat di nomor acak dari 0–36 (atau 00 untuk American).",how5:"Taruhan yang menang dibayar sesuai peluangnya; semua chip lainnya hilang.",overview:"Tempatkan chip pada grid taruhan dan putar roda. Taruhan pada nomor tunggal, kelompok nomor, warna, atau ganjil/genap. Bola mendarat di kantong acak, dan taruhan yang cocok dibayar sesuai peluangnya.",provablyFair:"Sistem keacakan terverifikasi kami menghasilkan setiap putaran Roulette. Setelah setiap putaran, Anda dapat melihat input dan bukti, memverifikasi hasil dengan kunci publik kami, dan mereproduksi hasil yang sama.",strategyTip:"Taruhan luar (merah/hitam, ganjil/genap) menawarkan hampir 50% peluang menang dengan pembayaran 2X. Taruhan dalam pada nomor tunggal membayar hingga 36X tapi jarang menang. Sebar chip Anda untuk menyeimbangkan risiko dan hadiah."}},games:{advancedDice:{between:"Antara",boundsLower:"Batas bawah",boundsUpper:"Batas atas",inside:"Di dalam",outside:"Di luar",rollMode:"Mode Gulir",secondBoundsLower:"Batas bawah kedua",secondBoundsUpper:"Batas atas kedua"},dice:{rollOver:"Gulung Lebih Tinggi",rollUnder:"Gulung Di Bawah"},keno:{autoPick:"Pilih Otomatis",clearTable:"Bersihkan",kenoGameGrid:"Grid Permainan Keno",kenoNumber:"Nomor Keno {value}",selectAtLeastOneTile:"Pilih setidaknya satu ubin",selectTileToAutobet:"Pilih setidaknya satu ubin"},limbo:{multiplierError:"Harus antara {min} dan {max}",targetMultiplier:"Pengganda",winChanceError:"Harus antara {min} dan {max}"},mines:{cashout:"Tarik Dana",gem:"Permata",gems:"Permata",mine:"Tambang",mines:"Mines",nextGem:"Permata Berikutnya",selectRandomTile:"Pilih Ubin Acak",selectTileToAutobet:"Pilih setidaknya satu ubin",tile:"Ubin",unrevealed:"Belum Terungkap"},wheel:{segments:"Segmen"},roulette:{chipValue:"Nilai Chip",totalBetAmount:"Total Taruhan"}},hotkeys:{clearBets:"Hapus Taruhan",doubleBet:"Gandakan Jumlah Taruhan",doubleChipValue:"Gandakan Nilai Chip",doubleTotalBet:"Gandakan Total Taruhan",halveBet:"Setengah Jumlah Taruhan",halveChipValue:"Setengahkan Nilai Chip",halveTotalBet:"Setengahkan Total Taruhan",higherTarget:"Target Lebih Tinggi",info:"Saat hotkey diaktifkan, hotkey akan tetap menyala untuk permainan ini sampai dinonaktifkan. Meskipun beberapa permainan memiliki kombinasi tombol yang mirip, selalu disarankan untuk memastikan hotkey untuk setiap permainan.",lowerTarget:"Target Bawah",makeBet:"Pasang Taruhan",resetChipValue:"Atur Ulang Nilai Chip",toggleWinCondition:"Alihkan Kondisi Menang",undo:"Batalkan",zeroBet:"Jumlah Taruhan Nol"},modals:{betResult:"Hasil Taruhan",fairnessAndHistory:"Keadilan dan Riwayat",gameArea:"Area Permainan",gameControls:"Kontrol Permainan",gameInfo:"Informasi Game"}}});var A4=D1((et,Ci)=>{Ci.exports={accessibility:{sliderValue:"{value} / {max}"},alerts:{autobetStarted:"オートベットモードを開始しました",autobetStopped:"オートベットモードを停止しました",betAmountAboveMaxBet:"最大ベット額は{value}です",betAmountBelowMinBet:"最低ベット額は{value}です",betLimitReached:"ベット上限に達しました",errorProcessingBet:"ベットの処理中にエラーが発生しました。もう一度お試しください。",failedToLoadBetData:"ベットデータの読み込みに失敗しました",gameError:"ベットの処理中にエラーが発生しました。もう一度お試しください。",insufficientBalance:"残高が不足しています",maxPayoutExceeded:"最大配当額を超えました",notEnoughBalance:"残高が足りません"},autobet:{configureAutobet:"Autobetを設定",games:"ゲーム",games10:"10種類のゲーム",games100:"100ゲーム",games25:"25種類のゲーム",games5:"5つのゲーム",games50:"50ゲーム",increase:"増加",infinite:"無限",onLoss:"敗北時",onWin:"勝利時",reset:"リセット",startAutobet:"オートベットを開始",stopAutobet:"オートベットを停止",stopOnLoss:"損失で停止",stopOnProfit:"利益で停止"},clipboard:{linkCopied:"リンクがクリップボードにコピーされました!"},common:{auto:"オート",back:"戻る",balance:"残高",bet:"ベット額",betAmount:"ベット額",cancel:"キャンセル",cashOut:"キャッシュアウト",classic:"クラシック",confirm:"確認",copied:"コピー済み",currency:"通貨",deposit:"入金",disableHotkeys:"ホットキーを無効にする",disableMaxBet:"最大ベットを無効にする",enableHotkeys:"ホットキーを有効にする",enableMaxBet:"最大ベットを有効にする",footerNavigation:"フッターナビゲーション",gameInfo:"ゲーム情報",gameName:"ゲーム名",high:"ハイ",history:"履歴",hotkeys:"ホットキー",id:"ID",instantBet:"インスタントベット",loading:"読み込み中...",loadMore:"さらに表示",lobby:"ロビーに戻る",low:"低",manual:"マニュアル",max:"MAX",medium:"ミディアム",multiplier:"マルチプライヤー",payout:"配当",placeBet:"ベットする",profit:"利益",profitOnWin:"勝利時の利益",provablyFair:"証明可能な公正",risk:"リスク",roundId:"ラウンドID",saveChanges:"変更を保存",shareReplay:"リプレイを共有",siteInformation:"ゲーム情報",space:"SPACE",support:"サポート",targetMultiplier:"マルチプライヤー",thisFieldIsRequired:"この項目は必須です",timestamp:"時間",toggleHotkeys:"ホットキーの切り替え",viewFairnessInformation:"公正性情報を表示",viewHistory:"履歴を表示",volume:"ボリューム",winChance:"勝利確率"},errors:{dice:{multiplierRange:"{min}から{max}の間でなければなりません",winChanceRange:"{min}から{max}の間でなければなりません"},noWheelData:"ホイールデータがありません",requestDropped:"リクエストが中断されました"},fairness:{activeClientSeed:"有効なクライアントシード",enterClientSeed:"クライアントシードを入力",enterProof:"証明を入力",enterPublicKey:"公開鍵を入力",enterRandomness:"ランダム性を入力",enterRequest:"リクエストを入力",info:{p1:"すべてのラウンドの結果は、隠されたサーバーロジックではなく、検証可能なランダム性から生まれます。私たちは、そのラウンド固有の値—gameId、tenantId、tenantUserId、増分されるnonce(各完了したラウンドごとに1つ)、さらにあなたのclientSeed—から決定論的なシードを構築します。これにより、各ラウンドが一意で再現可能であることが保証されます:同じ入力 → 同じランダムストリーム → 同じ結果。",p2:"そのシードは、IETFの仕様書 draft-irtf-cfrg-vrf-15 に従って、楕円曲線検証可能疑似乱数関数(ECVRF)を通して実行されます。私たちのサーバーは秘密鍵を使ってランダム値と暗号学的証明(proofString)を生成します。私たちの公開鍵を持つ誰もが、指定された入力に対してその証明を独立して検証でき、ランダム性がシードから生成されたこと、改ざんされていないことを確認できます。SDKはTypeScriptであり、コアの暗号処理にはパフォーマンスと安全性のためにNAPI-RS経由でfastcrypto Rustライブラリを使用しています。",p3:"検証が完了すると、VRFの出力が決定論的なランダムバイトジェネレーター(hashSequence)のシードになります。ゲームはこれらのバイトを決定論的かつ偏りのないロジックで結果に変換します。このプロセスは決定論的であり、各ラウンドが完了するごとにnonceが進むため、同じラウンドを正確に再現できるリプレイ可能な監査と、毎回新しく繰り返しのないランダム性の両方が得られます。",p4:"ラウンド終了後、あなたは入力(clientSeedとそのラウンドのnonceを含む)、VRF出力、proofString、そして当社の公開鍵を持っています。任意のECVRF検証ツールまたは当社のライブラリを使用して、(1) 入力と公開鍵に対してproofを検証し、(2) 同じhashSequenceと結果を再生成してください。当社の秘密鍵は安全なサーバーから決して外部に出ることはなく、公開鍵はクライアント側で独立した検証に安全に使用できます。",step1Desc:"gameId、tenantId、tenantUserId、各ラウンドごとのnonce、そしてあなたのclientSeedを組み合わせます。同じ入力は常に同じランダムなストリームと結果を生み出します。",step1Title:"決定論的シード",step2Title:"ランダム性を生成",step3Desc:"誰でも、当社の公開鍵を使って指定された入力に対するproofStringを検証できます。これにより、乱数がseedと一致しており改ざんされていないことが確認できます。",step3Title:"証明を検証",step4Title:"結果を導き出す",step5Title:"再現"},invalidGame:"無効なゲームタイプが指定されています。",learnMore:"詳細はこちら",newClientSeed:"新しいクライアントシード",noBettingHistory:"ベット履歴がありません",outcomeCalculationInfo:"このゲームは、公正で透明な結果を保証する証明可能なフェアアルゴリズムを使用しています。",outcomeNotVerified:"このゲームの結果を検証できませんでした。正しい情報が入力されているか再確認し、もう一度お試しください。",outcomeVerified:"このラウンドの結果は当社の公開鍵で検証されており、証明可能な公正性が保証されています。",proof:"証明",publicKey:"アクティブ公開鍵",randomness:"ランダム性",request:"リクエスト",saveClientSeed:"クライアントシードを保存",verifyOutcome:"結果を検証"},gameInfo:{advancedDice:{how1:"ロールモードを選択:インサイド、アウトサイド、またはビトウィーン。",how2:"スライダーをドラッグして勝利ゾーンを定義します。",how3:"ベット額を設定してベットを行います。",how4:"0から100の間のランダムな数字が生成されます。",how5:"結果が選択したゾーン内に収まれば勝利です。",overview:"アドバンスドダイスでは、カスタム勝利ゾーンを設定できます。結果が範囲内に収まった場合に勝つインサイド、範囲外に出た場合に勝つアウトサイド、または2つの勝利ゾーンに分割するビトウィーンを選択できます。",provablyFair:"当社の検証可能なランダム性システムがすべてのアドバンスドダイスの結果を生成します。各ラウンド後、入力と証明を確認し、公開鍵で結果を検証し、同じ結果を再現できます。",strategyTip:"広いゾーンは頻繁な勝利を提供しますが、マルチプライヤーは小さくなります。狭いゾーンはリスクが高いですが、より大きな配当があります。ビトウィーンモードでは、柔軟な戦略のために2つの範囲をターゲットにできます。"},diamonds:{how1:"ベット金額を設定して、ベットを行ってください。",how2:"固定された種類の宝石から5つのダイヤモンドが公開されます。",how3:"あなたの結果はポーカーの手役のように評価されます:ワンペア、ツーペア、スリーカード、フルハウス、フォーカード、ファイブカード。",how4:"各ハンドタイプにはそれぞれ独自のマルチプライヤーがあり、高い価値のハンドほど大きなマルチプライヤーが与えられます。一方、成立していないハンドは0Xとなります。",how5:"あなたの配当は、出た手札に対して表示されたマルチプライヤーであなたのベットを掛けたものになります。",overview:"Diamondsは、5リールのマッチングゲームです。各ラウンドでは、さまざまな宝石タイプの中から5つのダイヤモンドが現れます。あなたの目標は、ペア、スリーカード、フルハウスなど、ポーカーのような組み合わせを揃えることです。",provablyFair:"私たちの検証可能なランダムネスシステムは、各ダイヤモンドの結果を選択します。各ラウンドの後、基礎となるランダム値と証明を確認でき、私たちの公開鍵で結果を検証し、同じハンドを再現できます。",strategyTip:"Diamondsは高ボラティリティかつ固定オッズのゲームで、大きなポーカー風の役を狙います。あなたの主な選択肢は、どれだけアグレッシブにプレイするかという点です。ドライな期間を乗り切りたい場合は小さく安定したベットを使いましょう。プレミアムハンドを狙うときは時折ベット額を上げてみてください。"},dice:{how1:"ロールアンダーかロールオーバーを選択してください。",how2:"目標数値を設定してください。",how3:"ベット金額を設定して、ベットを行ってください。",how4:"ゲーム内で0~99.99のスケールで表示されるランダムな結果を1つ生成します。",how5:"結果があなたの選んだ範囲内であれば勝ちです。",how6:"あなたの配当金は、ベット額に表示されているマルチプライヤーを掛けたものになり、スライダーを動かすたびに更新されます。",overview:"目標となる数字を設定し、ロールがその数字未満か超えるかを選択します。スライダーを動かすことで勝率とマルチプライヤーが変化します。勝率が高いほどマルチプライヤーは低くなり、勝率が低いほどマルチプライヤーは高くなります。各ラウンドはゲームのスケール上で独立した1回のロールです。",provablyFair:"私たちの検証可能なランダムネスシステムは、すべてのDiceのロールを生成します。各ラウンドの後、入力と証明を確認でき、公開鍵で結果を検証し、同じ結果を再現できます。",strategyTip:"ボラティリティを選択してください。勝率が低いほど、配当倍率は高くなりますが、当たりは稀になります。勝率が高いほど、配当倍率は低くなりますが、当たりは頻繁になります。安定した変動のために、ベット額を資金に合わせて調整しましょう。"},keno:{how1:"1〜40の盤上で1〜10枚のタイルを選んでください。",how2:"ベット金額を設定して、ベットを行ってください。",how3:"当選番号を10個抽選します。あなたの一致した番号がハイライトされます。",how4:"配当は、選択したタイルの数と当てた数によって決まります。ペイテーブルを確認してください。",how5:"選択した数より多くの数字を当てることはできません。最大選択数は10です。",overview:"ラッキーナンバーを選んで、抽選に当ててみましょう。1から40の中から1〜10個の数字を選ぶことができ、その後、私たちが10個の数字を抽選します。選んだ数字が多く当たるほど、配当が高くなります。",provablyFair:"私たちの検証可能なランダムネスシステムは、すべてのKeno抽選を生成します。各ラウンド後に、入力と証明を確認し、公開鍵で結果を検証し、同じ結果を再現することができます。",strategyTip:"ボラティリティを選択してください。少ないスポットを選ぶと当たりは稀になりますが、はるかに大きなマルチプライヤーが得られます。多くのスポットを選ぶと当たりは頻繁になりますが、1回あたりの平均リターンは小さくなります。中間の範囲はヒット率と配当のバランスが取れています。リスクの好みや資金に合わせてベット額を調整しましょう。"},limbo:{how1:"目標マルチプライヤーを設定してください。",how2:"ベット金額を設定して、ベットを行ってください。",how3:"私たちは1つのランダムな結果のマルチプライヤーを生成します。",how4:"結果があなたのターゲット以上であれば勝ちです。",how5:"あなたの配当金は、ベット額 × あなたの目標マルチプライヤーです。それ以外の場合は、ベットを失います。",overview:"Limboでは、希望するペイアウトを設定し、ゲームが1つのランダムな結果のマルチプライヤーを引きます。結果が目標以上であれば勝ち、低ければ負けとなります。勝つ確率が高いほどマルチプライヤーは低くなり、確率が低いほどマルチプライヤーは高くなります。",provablyFair:"私たちの検証可能なランダムネスシステムは、すべてのLimboの結果を生成します。各ラウンドの後、入力と証明を確認し、公開鍵で結果を検証し、同じ結果を再現することができます。",strategyTip:"低いターゲットは当たりやすいですが、配当は少なくなります。一方、高いターゲットは当たることはまれですが、配当ははるかに多くなります。セッションごとに固定のターゲットを選ぶか、時折ロングショットを混ぜることを検討し、ベット額を一貫して設定してバリアンスを管理しましょう。"},limitContent:"このゲームで達成可能な最大マルチプライヤーは{multiplier}Xです。最大獲得可能配当は{payout}です",limitTitle:"制限",mines:{how1:"このラウンドの地雷の数を選択してください。",how2:"ベット金額を設定して、ベットを行ってください。",how3:"タイルをクリックしてめくってください:安全なタイルはマルチプライヤーが増加します。地雷を踏むとラウンドが終了します。",how4:"現在のマルチプライヤーを確定するために、いつでもキャッシュアウトできます。",how5:"キャッシュアウト時の配当は、ベット額に現在のマルチプライヤーを掛けた金額です。",how6:"ラウンドはキャッシュアウトするか、マインが明らかになった時に終了します。",overview:"Minesは安全なタイルを選び、いつキャッシュアウトするかを決めるゲームです。ラウンド開始前に、ボード上に隠されるマインの数を選択します。安全なタイルをめくるごとにマルチプライヤーが増加します。マインを踏んでしまうと、そのラウンドは終了し、配当はありません。",provablyFair:"私たちの検証可能なランダムネスシステムは、各ボードの隠された地雷配置を生成します。各ラウンドの後に、入力と証明を表示し、公開鍵で結果を検証し、同じ結果を再現できます。",strategyTip:"ボラティリティを選択してください。マインが少ないほど、リスクが低く、1ステップごとのマルチプライヤーは小さくなります。マインが多いほど、リスクが高まり、大きなマルチプライヤーが得られます。目標を設定するか、ストップロスを使って変動を管理しましょう。一定のベットサイズと規律あるキャッシュアウトが、バリアンスのコントロールに役立ちます。"},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"このゲームのペイアウト率(RTP)は {rtpValue}% です。",rtpTitle:"RTP:{rtpValue}%",strategyTitle:"戦略",tutorial:"チュートリアル",wheel:{how1:"リスクレベルとセグメント数を選択してください",how2:"ベット金額を設定して、ベットを行ってください。",how3:"ホイールが回転して、セグメントに止まります。",how4:"あなたの配当は、ホイールが止まったセグメントに表示されているマルチプライヤーとベット額を掛けたものです。",how5:"各セグメントは、選択したリスクレベルとセグメント数に基づいて異なるマルチプライヤーが設定されています。",overview:"ホイールを回して、どこに止まるか見ましょう。各スピンの前にリスクレベルとセグメント数を選択してください。リスクが低いほど、小さなマルチプライヤーで当たりやすくなります。リスクが高いほど、大きなマルチプライヤーで当たりにくくなります。",provablyFair:"私たちの検証可能なランダムネスシステムは、すべてのWheelの結果を生成します。各ラウンドの後に、インプットと証明を確認でき、私たちの公開鍵で結果を検証し、同じ結果を再現することができます。",strategyTip:"低リスクは安定した小さな勝利をもたらします。中リスクは当選頻度と配当のバランスを取ります。高リスクは稀ですが大きなマルチプライヤーを狙います。セグメントが多いほど最大の可能性が高まりますが、当選頻度は下がります。"},roulette:{how1:"グリッドをクリックして、選んだベットにチップを置きます。",how2:"1/2と2Xボタンでクリックごとのベット額を調整します。",how3:"ベットを置いてホイールを回します。",how4:"ボールは0〜36のランダムな数字に落ちます(アメリカンは00も)。",how5:"当たったベットはオッズに応じて支払われ、他のチップはすべて失われます。",overview:"ベッティンググリッドにチップを置き、ホイールを回します。単一の数字、数字のグループ、色、または奇数/偶数に賭けます。ボールはランダムなポケットに落ち、当たったベットはオッズに応じて支払われます。",provablyFair:"検証可能な乱数システムがすべてのルーレットスピンを生成します。各ラウンド後、入力と証明を確認し、公開鍵で結果を検証し、同じ結果を再現できます。",strategyTip:"アウトサイドベット(赤/黒、奇数/偶数)は2倍の配当でほぼ50%の勝率を提供します。単一数字へのインサイドベットは最大36倍を支払いますが、めったに当たりません。リスクとリターンのバランスを取るためにチップを分散させましょう。"}},games:{advancedDice:{between:"間",boundsLower:"下限",boundsUpper:"上限",inside:"内側",outside:"外側",rollMode:"ロールモード",secondBoundsLower:"第2下限",secondBoundsUpper:"第2上限"},dice:{rollOver:"ロールオーバー",rollUnder:"ロールアンダー"},keno:{autoPick:"自動選択",clearTable:"クリア",kenoGameGrid:"ケノゲームグリッド",kenoNumber:"ケノナンバー {value}",selectAtLeastOneTile:"少なくとも1つのタイルを選択してください",selectTileToAutobet:"少なくとも1つのタイルを選択してください"},limbo:{multiplierError:"{min}から{max}の間でなければなりません",targetMultiplier:"マルチプライヤー",winChanceError:"{min}から{max}の間でなければなりません"},mines:{cashout:"キャッシュアウト",gem:"ジェム",gems:"ジェム",mine:"マイン",mines:"マイン",nextGem:"次のジェム",selectRandomTile:"ランダムなタイルを選択",selectTileToAutobet:"少なくとも1つのタイルを選択してください",tile:"タイル",unrevealed:"未公開"},wheel:{segments:"セグメント"},roulette:{chipValue:"チップの価値",totalBetAmount:"合計ベット額"}},hotkeys:{clearBets:"ベットをクリア",doubleBet:"ベット額を2倍にする",doubleChipValue:"チップ価値を2倍",doubleTotalBet:"総ベットを2倍",halveBet:"ベット額を半分にする",halveChipValue:"チップ価値を半分",halveTotalBet:"総ベットを半分",higherTarget:"より高いターゲット",info:"ホットキーが有効になっている場合、無効にするまでこのゲームで有効のままになります。いくつかのゲームで似たようなキー割り当てが共有されている場合でも、各ゲームごとにホットキーを確認することを常におすすめします。",lowerTarget:"下限ターゲット",makeBet:"ベットする",resetChipValue:"チップ価値をリセット",toggleWinCondition:"勝利条件を切り替える",undo:"元に戻す",zeroBet:"ベット額がゼロ"},modals:{betResult:"ベット結果",fairnessAndHistory:"公平性と履歴",gameArea:"ゲームエリア",gameControls:"ゲームコントロール",gameInfo:"ゲーム情報"}}});var V4=D1((rt,$i)=>{$i.exports={accessibility:{sliderValue:"{value} / {max} 중"},alerts:{autobetStarted:"오토벳 모드를 시작했습니다",autobetStopped:"자동 베팅 모드가 중지되었습니다",betAmountAboveMaxBet:"최대 베팅 한도는 {value}입니다",betAmountBelowMinBet:"최소 베팅 금액은 {value}입니다",betLimitReached:"베팅 한도에 도달했습니다",errorProcessingBet:"베팅을 처리하는 중 오류가 발생했습니다. 다시 시도해 주세요.",failedToLoadBetData:"베팅 데이터를 불러오지 못했습니다",gameError:"베팅을 처리하는 중 오류가 발생했습니다. 다시 시도해 주세요.",insufficientBalance:"잔액이 부족합니다",maxPayoutExceeded:"최대 지급액 초과",notEnoughBalance:"잔액이 부족합니다"},autobet:{configureAutobet:"Autobet 구성",games:"게임",games10:"10 게임",games100:"100 게임",games25:"25 게임",games5:"5개 게임",games50:"50 게임",increase:"증가",infinite:"무한",onLoss:"패배 시",onWin:"승리 시",reset:"초기화",startAutobet:"오토벳 시작",stopAutobet:"자동 베팅 중지",stopOnLoss:"손실 시 중지",stopOnProfit:"이익 실현 시 중지"},clipboard:{linkCopied:"링크가 클립보드에 복사되었습니다!"},common:{auto:"자동",back:"뒤로",balance:"잔액",bet:"베팅 금액",betAmount:"베팅 금액",cancel:"취소",cashOut:"현금 출금",classic:"클래식",confirm:"확인",copied:"복사됨",currency:"통화",deposit:"입금",disableHotkeys:"단축키 비활성화",disableMaxBet:"최대 베팅 비활성화",enableHotkeys:"단축키 활성화",enableMaxBet:"최대 베팅 활성화",footerNavigation:"푸터 내비게이션",gameInfo:"게임 정보",gameName:"게임 이름",high:"높음",history:"히스토리",hotkeys:"단축키",id:"ID",instantBet:"즉시 베팅",loading:"로딩 중...",loadMore:"더 보기",lobby:"로비로 돌아가기",low:"낮음",manual:"매뉴얼",max:"MAX",medium:"중간",multiplier:"배수",payout:"지급금",placeBet:"베팅하기",profit:"수익",profitOnWin:"승리 시 수익",provablyFair:"입증 가능하게 공정",risk:"위험",roundId:"라운드 ID",saveChanges:"변경사항 저장",shareReplay:"리플레이 공유",siteInformation:"게임 정보",space:"SPACE",support:"지원",targetMultiplier:"배수",thisFieldIsRequired:"이 필드는 필수입니다",timestamp:"시간",toggleHotkeys:"단축키 전환",viewFairnessInformation:"공정성 정보 보기",viewHistory:"히스토리 보기",volume:"볼륨",winChance:"승리 확률"},errors:{dice:{multiplierRange:"{min}에서 {max} 사이여야 합니다",winChanceRange:"{min}에서 {max} 사이여야 합니다"},noWheelData:"휠 데이터가 없습니다",requestDropped:"요청이 중단되었습니다"},fairness:{activeClientSeed:"활성 클라이언트 시드",enterClientSeed:"클라이언트 시드를 입력하세요",enterProof:"증명 입력",enterPublicKey:"공개 키 입력",enterRandomness:"무작위성 입력",enterRequest:"요청 입력",info:{p1:"모든 라운드의 결과는 숨겨진 서버 로직이 아니라 검증 가능한 무작위성에서 나옵니다. 우리는 gameId, tenantId, tenantUserId, 증가하는 nonce(완료된 라운드마다 하나씩), 그리고 당신의 clientSeed 등 라운드마다 고유한 값들로 결정적인 시드를 만듭니다. 이를 통해 각 라운드가 고유하며 재현 가능함이 보장됩니다: 동일한 입력값 → 동일한 무작위 스트림 → 동일한 결과.",p2:"그 시드는 IETF 사양 draft-irtf-cfrg-vrf-15에 따라 타원 곡선 검증 가능 난수 함수(ECVRF)를 통해 실행됩니다. 우리 서버는 자신의 개인 키를 사용하여 무작위 값과 암호학적 증명(proofString)을 생성합니다. 누구나 우리의 공개 키를 사용하면 주어진 입력값에 대해 그 증명을 독립적으로 검증할 수 있어, 무작위성이 시드에서 생성되었고 변조되지 않았음을 확인할 수 있습니다. SDK는 TypeScript로 작성되어 있으며, 핵심 암호화는 성능과 안전성을 위해 NAPI-RS를 통해 fastcrypto Rust 라이브러리를 사용합니다.",p3:"검증이 완료되면 VRF 출력이 결정론적 난수 바이트 생성기(hashSequence)에 시드로 사용됩니다. 게임들은 이러한 바이트를 결정론적이고 편향되지 않은 논리를 통해 결과로 변환합니다. 이 과정이 결정론적이고, nonce가 매 라운드가 끝날 때마다 증가하기 때문에, 재현 가능한 감사(동일한 라운드를 정확히 재현)와 매번 새롭고 반복되지 않는 무작위성을 모두 얻을 수 있습니다.",p4:"한 라운드가 끝난 후에는 입력값(여기에는 clientSeed와 해당 라운드의 nonce 포함), VRF 출력값, proofString, 그리고 저희의 공개키를 갖게 됩니다. 어떤 ECVRF 검증기나 저희 라이브러리를 사용하여 (1) 입력값과 공개키에 대해 proof를 검증하고, (2) 동일한 hashSequence와 결과를 다시 생성하십시오. 저희의 비공개 키는 보안 서버를 절대 벗어나지 않으며, 공개키는 클라이언트 측에서 독립적인 검증을 위해 안전하게 사용할 수 있습니다.",step1Desc:"우리는 gameId, tenantId, tenantUserId, 라운드별 nonce, 그리고 당신의 clientSeed를 결합합니다. 동일한 입력값은 항상 동일한 랜덤 스트림과 결과를 생성합니다.",step1Title:"결정적 시드",step2Title:"무작위성 생성",step3Desc:"누구나 우리의 공개 키를 사용하여 주어진 입력값에 대한 proofString을 검증할 수 있습니다. 이를 통해 무작위성이 시드와 일치하며 변조되지 않았음을 확인할 수 있습니다.",step3Title:"증명 확인",step4Title:"결과 도출",step5Title:"재현"},invalidGame:"잘못된 게임 유형이 제공되었습니다.",learnMore:"자세히 알아보기",newClientSeed:"새 클라이언트 시드",noBettingHistory:"베팅 내역이 없습니다",outcomeCalculationInfo:"이 게임은 결과가 공정하고 투명하게 이루어지도록 증명 가능하고 공정한 알고리즘을 사용합니다.",outcomeNotVerified:"이 게임의 결과를 확인할 수 없습니다. 입력한 정보가 올바른지 다시 확인하고 다시 시도해 주세요.",outcomeVerified:"이 라운드의 결과는 우리의 공개 키로 검증되었으며, 공정함이 입증되었습니다.",proof:"증명",publicKey:"활성 공개 키",randomness:"무작위성",request:"요청",saveClientSeed:"클라이언트 시드 저장",verifyOutcome:"결과 확인"},gameInfo:{advancedDice:{how1:"롤 모드를 선택하세요: 내부, 외부 또는 사이.",how2:"슬라이더를 드래그하여 승리 구역을 정의하세요.",how3:"베팅 금액을 설정하고 베팅하세요.",how4:"0과 100 사이의 무작위 숫자가 생성됩니다.",how5:"결과가 선택한 구역 내에 들어오면 승리합니다.",overview:"어드밴스드 다이스를 사용하면 사용자 정의 승리 구역을 설정할 수 있습니다. 결과가 범위 내에 들어올 때 승리하려면 내부를, 범위를 벗어날 때 승리하려면 외부를, 또는 두 개의 승리 구역으로 나누려면 사이를 선택하세요.",provablyFair:"저희의 검증 가능한 무작위 시스템이 모든 어드밴스드 다이스 결과를 생성합니다. 매 라운드 후 입력과 증명을 확인하고, 공개 키로 결과를 검증하며, 동일한 결과를 재현할 수 있습니다.",strategyTip:"더 넓은 구역은 더 빈번한 승리를 제공하지만 배수는 작습니다. 좁은 구역은 위험이 높지만 더 많이 지급합니다. 사이 모드를 사용하면 유연한 전략을 위해 두 범위를 목표로 할 수 있습니다."},diamonds:{how1:"베팅 금액을 설정하고 베팅을 하세요.",how2:"다섯 개의 Diamonds가 고정된 보석 종류 세트에서 공개됩니다.",how3:"당신의 결과는 포커 핸드처럼 평가됩니다: 원페어, 투페어, 트리플, 풀 하우스, 포카드, 그리고 파이브카드.",how4:"각 핸드 유형마다 고유의 배당률이 있으며, 높은 가치의 핸드는 더 큰 배당률을 제공합니다. 핸드를 완성하지 못한 경우에는 0X가 지급됩니다.",how5:"당신의 배당금은 결과 핸드에 표시된 배당률로 베팅 금액을 곱한 값입니다.",overview:"Diamonds는 5릴 매칭 게임입니다. 각 라운드마다 다양한 보석 종류 중에서 다섯 개의 다이아몬드가 공개됩니다. 목표는 포커 스타일의 조합, 즉 페어, 트리플, 풀하우스 등과 같은 조합을 만드는 것입니다.",provablyFair:"우리의 검증 가능한 무작위성 시스템이 각 Diamonds 결과를 선택합니다. 매 라운드가 끝난 후, 기본 무작위 값과 증명을 확인할 수 있으며, 우리의 공개 키로 결과를 검증하고 동일한 핸드를 재현할 수 있습니다.",strategyTip:"Diamonds는 높은 변동성과 고정 배당률을 가진 게임으로, 포커 스타일의 큰 핸드를 노리는 게임입니다. 주요 전략은 얼마나 공격적으로 플레이할지에 달려 있습니다. 건조한 구간을 버티고 싶다면 소액의 꾸준한 베팅을 사용하고, 프리미엄 핸드를 노릴 때는 가끔씩 베팅 금액을 올려보세요."},dice:{how1:"언더 롤 또는 오버 롤을 선택하세요.",how2:"목표 숫자를 설정하세요.",how3:"베팅 금액을 설정하고 베팅을 하세요.",how4:"우리는 하나의 무작위 결과를 생성합니다(게임 내에서 0–99.99 범위로 표시됨).",how5:"결과가 선택한 범위에 있으면 승리합니다.",how6:"당신의 당첨금은 베팅 금액에 표시된 배율을 곱한 값이며, 슬라이더를 이동할 때마다 배율이 업데이트됩니다.",overview:"목표 숫자를 설정하고 주사위가 해당 숫자보다 높거나 낮게 나올지 선택하세요. 슬라이더를 움직이면 승리 확률과 배당률이 변경됩니다. 확률이 높을수록 배당률이 낮아지고, 확률이 낮을수록 배당률이 높아집니다. 각 라운드는 게임의 스케일에서 독립적인 한 번의 주사위 굴림입니다.",provablyFair:"우리의 검증 가능한 무작위성 시스템은 모든 Dice 굴림을 생성합니다. 각 라운드가 끝난 후, 입력값과 증명을 확인할 수 있으며, 우리의 공개 키로 결과를 검증하고 동일한 결과를 재현할 수 있습니다.",strategyTip:"변동성을 선택하세요. 낮은 승리 확률은 더 큰 배당률을 제공하지만 당첨이 드뭅니다. 높은 승리 확률은 더 작은 배당률을 제공하지만 더 자주 이깁니다. 자금에 맞게 베팅 크기를 조절하여 더 안정적인 변동을 경험하세요."},keno:{how1:"1-40 보드에서 1–10개의 타일을 선택하세요.",how2:"베팅 금액을 설정하고 베팅을 하세요.",how3:"우리는 10개의 당첨 번호를 추첨하며, 사용자의 일치 번호가 강조 표시됩니다.",how4:"지급금은 선택한 타일의 수와 맞힌 개수에 따라 달라집니다—지급표를 확인하세요.",how5:"선택한 숫자보다 더 많이 맞출 수는 없으며, 최대 선택 가능 숫자는 10개입니다.",overview:"행운의 번호를 선택하고 추첨 결과와 맞춰보세요. 1에서 40까지 중에서 1~10개의 번호를 선택할 수 있으며, 저희가 10개의 번호를 추첨합니다. 선택한 번호가 많이 맞을수록 더 높은 배당금을 받게 됩니다.",provablyFair:"우리의 검증 가능한 랜덤 시스템은 모든 Keno 추첨을 생성합니다. 각 라운드가 끝난 후, 입력값과 증명을 확인하고, 공개 키로 결과를 검증하며, 동일한 결과를 재현할 수 있습니다.",strategyTip:"변동성을 선택하세요. 더 적은 지점을 선택하면 당첨은 드물지만 훨씬 더 큰 배당률을 얻을 수 있습니다. 더 많은 지점을 선택하면 더 자주 당첨되지만 한 번에 얻는 평균 수익은 작아집니다. 중간 범위는 적중률과 배당의 균형을 이룹니다. 자신의 위험 선호도와 자금에 맞게 베팅 금액을 조정하세요."},limbo:{how1:"목표 배당률을 설정하세요.",how2:"베팅 금액을 설정하고 베팅을 하세요.",how3:"우리는 하나의 무작위 결과 배수를 생성합니다.",how4:"결과가 목표값보다 크거나 같으면 승리합니다.",how5:"당신의 배당금은 배팅 금액에 목표 배수를 곱한 값입니다. 그렇지 않으면 베팅 금액을 잃게 됩니다.",overview:"Limbo에서는 원하는 배당을 설정하고, 게임이 단일 무작위 결과 배수를 추첨합니다. 결과가 목표 이상이면 승리하고, 더 낮으면 패배합니다. 확률이 높을수록 배수가 낮아지고, 확률이 낮을수록 배수가 높아집니다.",provablyFair:"우리의 검증 가능한 난수 생성 시스템은 모든 Limbo 결과를 생성합니다. 매 라운드가 끝난 후, 입력값과 증명을 확인할 수 있으며, 우리의 공개키로 결과를 검증하고 동일한 결과를 재현할 수 있습니다.",strategyTip:"낮은 목표는 더 자주 이기지만 지급액이 적고, 높은 목표는 드물게 성공하지만 훨씬 더 많은 보상을 제공합니다. 세션마다 고정된 목표를 선택하거나 가끔씩 큰 목표를 시도해 보고, 변동성을 관리하기 위해 베팅 금액을 일관되게 유지하세요."},limitContent:"이 게임에서 달성 가능한 최대 배수는 {multiplier}X입니다. 달성 가능한 최대 배당금은 {payout}입니다.",limitTitle:"한도",mines:{how1:"이번 라운드에 설치할 지뢰의 개수를 선택하세요.",how2:"베팅 금액을 설정하고 베팅을 하세요.",how3:"타일을 클릭하여 공개하세요: 안전한 타일은 배수를 증가시키고, 지뢰를 클릭하면 라운드가 종료됩니다.",how4:"언제든지 현금화를 통해 현재 배율을 고정할 수 있습니다.",how5:"현금화할 때 당첨금은 베팅 금액에 현재 배율을 곱한 값입니다.",how6:"라운드는 현금화하거나 지뢰가 드러날 때 종료됩니다.",overview:"Mines는 안전한 타일을 선택하고 언제 현금화할지 결정하는 게임입니다. 라운드가 시작되기 전에 보드에 숨겨질 지뢰의 개수를 선택하세요. 안전한 타일을 하나씩 공개할 때마다 배율이 증가합니다. 지뢰를 밟으면 라운드가 끝나고 보상을 받지 못합니다.",provablyFair:"우리의 검증 가능한 무작위성 시스템은 각 보드의 숨겨진 지뢰 배치를 생성합니다. 매 라운드가 끝난 후, 입력값과 증명을 확인할 수 있으며, 우리의 공개 키로 결과를 검증하고 동일한 결과를 재현할 수 있습니다.",strategyTip:"변동성을 선택하세요. 지뢰가 적을수록 더 안전하게 공개할 수 있고 단계별 배당률은 더 작아집니다. 지뢰가 많을수록 더 위험하게 공개되지만 더 높은 배당률을 얻을 수 있습니다. 목표를 설정하거나 손실 제한을 사용하여 변동성을 관리하세요. 일관된 베팅 금액과 규칙적인 출금은 변동성을 조절하는 데 도움이 됩니다."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"이 게임의 플레이어 환급률(RTP)은 {rtpValue}%입니다.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"전략",tutorial:"튜토리얼",wheel:{how1:"위험 수준과 구간 수를 선택하세요.",how2:"베팅 금액을 설정하고 베팅을 하세요.",how3:"바퀴가 돌고 구역에 멈춥니다.",how4:"당신의 당첨금은 휠이 멈춘 구간에 표시된 배수에 베팅 금액을 곱한 값입니다.",how5:"각 구간은 선택한 위험 수준과 구간 수에 따라 다른 배율이 적용됩니다.",overview:"휠을 돌리고 어디에 멈추는지 지켜보세요. 각 스핀 전에 위험 수준과 구간 수를 선택하세요. 낮은 위험은 더 자주 당첨되지만 배당이 낮고, 높은 위험은 당첨 확률이 낮지만 배당이 큽니다.",provablyFair:"우리의 검증 가능한 난수 생성 시스템은 모든 Wheel 결과를 생성합니다. 매 라운드가 끝난 후, 입력값과 증명값을 확인하고, 공개키로 결과를 검증하며, 동일한 결과를 재현할 수 있습니다.",strategyTip:"낮은 위험은 꾸준하고 작은 승리를 제공합니다. 중간 위험은 빈도와 배당의 균형을 맞춥니다. 높은 위험은 드물지만 거대한 배수를 노립니다. 세그먼트가 많아질수록 최대 잠재력은 증가하지만 승리 빈도는 감소합니다."},roulette:{how1:"그리드를 클릭하여 선택한 베팅에 칩을 놓으세요.",how2:"1/2 및 2X 버튼으로 클릭당 베팅 금액을 조정하세요.",how3:"베팅을 하여 휠을 돌리세요.",how4:"공은 0-36 사이의 무작위 숫자에 떨어집니다 (아메리칸은 00 포함).",how5:"당첨된 베팅은 배당률에 따라 지급되고, 다른 칩은 모두 잃게 됩니다.",overview:"베팅 그리드에 칩을 놓고 휠을 돌리세요. 단일 숫자, 숫자 그룹, 색상 또는 홀수/짝수에 베팅하세요. 공은 무작위 포켓에 떨어지고, 맞는 베팅은 배당률에 따라 지급됩니다.",provablyFair:"검증 가능한 무작위 시스템이 모든 룰렛 스핀을 생성합니다. 매 라운드 후 입력과 증명을 확인하고, 공개 키로 결과를 검증하며, 동일한 결과를 재현할 수 있습니다.",strategyTip:"아웃사이드 베팅(빨강/검정, 홀수/짝수)은 2배 배당으로 거의 50% 당첨 확률을 제공합니다. 단일 숫자에 대한 인사이드 베팅은 최대 36배를 지급하지만 거의 당첨되지 않습니다. 위험과 보상의 균형을 위해 칩을 분산시키세요."}},games:{advancedDice:{between:"사이",boundsLower:"하한",boundsUpper:"상한",inside:"내부",outside:"외부",rollMode:"롤 모드",secondBoundsLower:"두 번째 하한",secondBoundsUpper:"두 번째 상한"},dice:{rollOver:"오버에 베팅",rollUnder:"언더 롤"},keno:{autoPick:"자동 선택",clearTable:"지우기",kenoGameGrid:"키노 게임 그리드",kenoNumber:"케노 번호 {value}",selectAtLeastOneTile:"타일을 최소한 하나 선택하세요",selectTileToAutobet:"타일을 최소한 하나 선택하세요"},limbo:{multiplierError:"{min}에서 {max} 사이여야 합니다",targetMultiplier:"배수",winChanceError:"{min}에서 {max} 사이여야 합니다"},mines:{cashout:"현금 출금",gem:"보석",gems:"젬스",mine:"광산",mines:"마인즈",nextGem:"다음 젬",selectRandomTile:"랜 타일 선택",selectTileToAutobet:"타일을 최소한 하나 선택하세요",tile:"타일",unrevealed:"공개되지 않음"},wheel:{segments:"세그먼트"},roulette:{chipValue:"칩 가치",totalBetAmount:"총 베팅 금액"}},hotkeys:{clearBets:"베팅 지우기",doubleBet:"배팅 금액 두 배로",doubleChipValue:"칩 가치 두 배로",doubleTotalBet:"총 베팅 두 배로",halveBet:"베팅 금액 절반으로 줄이기",halveChipValue:"칩 가치 절반으로",halveTotalBet:"총 베팅 절반으로",higherTarget:"더 높은 목표",info:"단축키가 활성화되면 비활성화될 때까지 이 게임에서 계속 유지됩니다. 일부 게임이 유사한 키 바인드를 공유하더라도, 각 게임마다 단축키를 확인하는 것이 항상 권장됩니다.",lowerTarget:"하한 목표",makeBet:"베팅하기",resetChipValue:"칩 가치 초기화",toggleWinCondition:"승리 조건 전환",undo:"실행 취소",zeroBet:"제로 베팅 금액"},modals:{betResult:"베팅 결과",fairnessAndHistory:"공정성 및 기록",gameArea:"게임 영역",gameControls:"게임 컨트롤",gameInfo:"게임 정보"}}});var Q4=D1((lt,Wi)=>{Wi.exports={accessibility:{sliderValue:"{value} z {max}"},alerts:{autobetStarted:"Tryb autobet został uruchomiony",autobetStopped:"Tryb autobet zatrzymany",betAmountAboveMaxBet:"Maksymalny zakład to {value}",betAmountBelowMinBet:"Minimalny zakład to {value}",betLimitReached:"Osiągnięto limit zakładu",errorProcessingBet:"Wystąpił błąd podczas przetwarzania Twojego zakładu. Proszę spróbuj ponownie.",failedToLoadBetData:"Nie udało się załadować danych zakładu",gameError:"Wystąpił błąd podczas przetwarzania Twojego zakładu. Proszę spróbuj ponownie.",insufficientBalance:"Niewystarczające saldo",maxPayoutExceeded:"Przekroczono maksymalną wypłatę",notEnoughBalance:"Niewystarczające saldo"},autobet:{configureAutobet:"Skonfiguruj Autobet",games:"Gry",games10:"10 Gier",games100:"100 Gier",games25:"25 Gier",games5:"5 Gier",games50:"50 Gier",increase:"Zwiększ",infinite:"Nieskończony",onLoss:"Przy przegranej",onWin:"W przypadku wygranej",reset:"Resetuj",startAutobet:"Uruchom Autobet",stopAutobet:"Zatrzymaj Autobet",stopOnLoss:"Zatrzymaj przy przegranej",stopOnProfit:"Zatrzymaj przy zysku"},clipboard:{linkCopied:"Link skopiowany do schowka!"},common:{auto:"Auto",back:"Wstecz",balance:"Saldo",bet:"Kwota zakładu",betAmount:"Kwota zakładu",cancel:"Anuluj",cashOut:"Wypłać",classic:"Klasyczny",confirm:"Potwierdź",copied:"Skopiowano",currency:"Waluta",deposit:"Wpłata",disableHotkeys:"Wyłącz skróty klawiszowe",disableMaxBet:"Wyłącz maksymalny zakład",enableHotkeys:"Włącz skróty klawiaturowe",enableMaxBet:"Włącz Maksymalny Zakład",footerNavigation:"Nawigacja w stopce",gameInfo:"Informacje o grze",gameName:"Nazwa gry",high:"Wysoki",history:"Historia",hotkeys:"Skróty klawiszowe",id:"ID",instantBet:"Szybki zakład",loading:"Ładowanie...",loadMore:"Załaduj więcej",lobby:"Powrót do Lobby",low:"Niski",manual:"Instrukcja",max:"MAX",medium:"Średni",multiplier:"Mnożnik",payout:"Wypłata",placeBet:"Postaw zakład",profit:"Zysk",profitOnWin:"Zysk przy wygranej",provablyFair:"Niezaprzeczalnie uczciwe",risk:"Ryzyko",roundId:"ID Rundy",saveChanges:"Zapisz zmiany",shareReplay:"Udostępnij powtórkę",siteInformation:"Informacje o grze",space:"PRZESTRZEŃ",support:"Wsparcie",targetMultiplier:"Mnożnik",thisFieldIsRequired:"To pole jest wymagane",timestamp:"Czas",toggleHotkeys:"Przełącz skróty klawiszowe",viewFairnessInformation:"Wyświetl informacje o uczciwości",viewHistory:"Wyświetl historię",volume:"Głośność",winChance:"Szansa na wygraną"},errors:{dice:{multiplierRange:"Musi być pomiędzy {min} a {max}",winChanceRange:"Musi być pomiędzy {min} a {max}"},noWheelData:"Brak danych koła",requestDropped:"Żądanie porzucone"},fairness:{activeClientSeed:"Aktywny clientSeed",enterClientSeed:"Wprowadź Client Seed",enterProof:"Wprowadź dowód",enterPublicKey:"Wprowadź klucz publiczny",enterRandomness:"Wprowadź losowość",enterRequest:"Wprowadź żądanie",info:{p1:"Wynik każdej rundy pochodzi ze sprawdzalnej losowości, a nie z ukrytej logiki serwera. Tworzymy deterministyczny seed z wartości unikalnych dla twojej rundy—gameId, tenantId, tenantUserId, inkrementującego nonce (jeden na każdą ukończoną rundę), oraz twojego clientSeed. To gwarantuje, że każda runda jest unikalna i powtarzalna: te same dane wejściowe → ten sam strumień losowy → ten sam wynik.",p2:"Ten seed jest przetwarzany przez Elliptic Curve Verifiable Random Function (ECVRF) zgodnie ze specyfikacją IETF draft-irtf-cfrg-vrf-15. Nasz serwer używa swojego klucza prywatnego, aby wygenerować losową wartość oraz kryptograficzny dowód (proofString). Każdy posiadający nasz klucz publiczny może niezależnie zweryfikować ten dowód dla podanych danych wejściowych—potwierdzając, że losowość pochodzi z seed i nie została zmanipulowana. SDK jest napisane w TypeScript, natomiast główna kryptografia korzysta z biblioteki fastcrypto w Rust poprzez NAPI-RS zapewniając wydajność i bezpieczeństwo.",p3:"Po weryfikacji wynik VRF zasila deterministyczny generator losowych bajtów (hashSequence). Gry przekształcają te bajty w wyniki, używając deterministycznej, bezstronnej logiki. Ponieważ proces jest deterministyczny, a nonce zwiększa się po każdej zakończonej rundzie, otrzymujesz zarówno możliwość powtarzalnych audytów (odtworzenie tej samej rundy dokładnie), jak i nową, niepowtarzalną losowość za każdym razem.",p4:"Po rundzie masz dane wejściowe (w tym swój clientSeed i nonce rundy), wynik VRF, proofString oraz nasz klucz publiczny. Użyj dowolnego weryfikatora ECVRF lub naszych bibliotek, aby: (1) zweryfikować dowód względem danych wejściowych i klucza publicznego oraz (2) wygenerować tę samą hashSequence i wynik. Nasz klucz prywatny nigdy nie opuszcza bezpiecznych serwerów; klucz publiczny jest bezpieczny do użycia po stronie klienta do niezależnych weryfikacji.",step1Desc:"Łączymy gameId, tenantId, tenantUserId, unikalny nonce dla każdej rundy oraz Twój clientSeed. Te same dane wejściowe zawsze generują ten sam strumień losowy i wynik.",step1Title:"Deterministyczny seed",step2Title:"Generuj losowość",step3Desc:"Każdy może zweryfikować proofString dla podanych danych wejściowych, używając naszego klucza publicznego. To potwierdza, że losowość odpowiada zadanej sekwencji i nie została naruszona.",step3Title:"Zweryfikuj dowód",step4Title:"Wyprowadź wyniki",step5Title:"Reprodukcja"},invalidGame:"Podano nieprawidłowy typ gry.",learnMore:"Dowiedz się więcej",newClientSeed:"Nowe Seed Klienta",noBettingHistory:"Brak historii zakładów",outcomeCalculationInfo:"Ta gra wykorzystuje algorytm udowodnionej uczciwości, który zapewnia sprawiedliwy i przejrzysty wynik.",outcomeNotVerified:"Nie można było zweryfikować wyniku tej gry. Sprawdź, czy wprowadziłeś poprawne dane, i spróbuj ponownie.",outcomeVerified:"Wynik tej rundy został zweryfikowany za pomocą naszego klucza publicznego i jest weryfikowalnie uczciwy.",proof:"Dowód",publicKey:"Aktywny klucz publiczny",randomness:"Losowość",request:"Żądanie",saveClientSeed:"Zapisz Client Seed",verifyOutcome:"Zweryfikuj wynik"},gameInfo:{advancedDice:{how1:"Wybierz tryb rzutu: Wewnątrz, Na zewnątrz lub Pomiędzy.",how2:"Przeciągnij suwaki, aby zdefiniować strefę wygranej.",how3:"Ustaw kwotę zakładu i postaw zakład.",how4:"Generowana jest losowa liczba od 0 do 100.",how5:"Wygrywasz, jeśli wynik mieści się w wybranej strefie.",overview:"Advanced Dice pozwala ustawić niestandardowe strefy wygranej. Wybierz Wewnątrz, aby wygrać, gdy wynik mieści się w twoim zakresie, Na zewnątrz, aby wygrać, gdy wykracza poza zakres, lub Pomiędzy, aby podzielić na dwie strefy wygranej.",provablyFair:"Nasz weryfikowalny system losowości generuje każdy wynik Advanced Dice. Po każdej rundzie możesz zobaczyć dane wejściowe i dowód, zweryfikować wynik naszym kluczem publicznym i odtworzyć ten sam wynik.",strategyTip:"Szersze strefy oferują częstsze wygrane, ale mniejsze mnożniki. Wąskie strefy są bardziej ryzykowne, ale płacą więcej. Tryb Pomiędzy pozwala celować w dwa zakresy dla elastycznych strategii."},diamonds:{how1:"Ustaw kwotę zakładu i postaw zakład.",how2:"Pięć diamentów jest odsłanianych z ustalonego zestawu typów klejnotów.",how3:"Twój wynik jest oceniany jak układ w pokerze: para, dwie pary, trójka, full, kareta i poker pięciu kart.",how4:"Każdy typ układu ma swój własny mnożnik; układy o wyższej wartości przyznają większe mnożniki, podczas gdy brak układu wypłaca 0X.",how5:"Twoja wygrana to Twój zakład pomnożony przez pokazany mnożnik dla uzyskanej ręki.",overview:"Diamonds to pięciobębnowa gra typu matching. Każda runda odsłania pięć diamentów z zestawu różnych rodzajów klejnotów. Twoim celem jest trafianie pokerowych układów – par, trójek, fulli i tak dalej.",provablyFair:"Nasz system weryfikowalnej losowości wybiera wynik każdego diamentu. Po każdej rundzie możesz zobaczyć użyte losowe wartości i dowód, zweryfikować wynik za pomocą naszego klucza publicznego oraz odtworzyć tę samą rękę.",strategyTip:"Diamonds to gra o wysokiej zmienności i stałych kursach, w której polujesz na duże układy w stylu pokera. Twoim głównym narzędziem jest to, jak bardzo chcesz ryzykować. Używaj mniejszych, stałych stawek, jeśli chcesz przetrwać słabsze serie, lub od czasu do czasu zwiększaj rozmiar zakładu, gdy polujesz na premiowe układy."},dice:{how1:"Wybierz rzut poniżej lub rzut powyżej.",how2:"Ustaw swój docelowy numer.",how3:"Ustaw kwotę zakładu i postaw zakład.",how4:"Generujemy jeden losowy wynik (wyświetlany w grze w skali 0–99,99).",how5:"Wygrywasz, jeśli wynik znajduje się w wybranym przez Ciebie zakresie.",how6:"Twoja wypłata to zakład pomnożony przez pokazany mnożnik, który aktualizuje się, gdy przesuwasz suwak.",overview:"Ustaw liczbę docelową i wybierz, czy rzut wypadnie poniżej, czy powyżej tej liczby. Przesuwanie suwaka zmienia szansę na wygraną i mnożnik — wyższa szansa obniża mnożnik, niższa szansa go zwiększa. Każda runda to jeden niezależny rzut na skali gry.",provablyFair:"Nasz system weryfikowalnej losowości generuje każdy rzut Dice. Po każdej rundzie możesz zobaczyć użyte dane wejściowe i dowód, zweryfikować wynik za pomocą naszego klucza publicznego i odtworzyć ten sam rezultat.",strategyTip:"Wybierz swoją zmienność. Niższa szansa na wygraną daje większe mnożniki, ale wygrane pojawiają się rzadziej. Wyższa szansa na wygraną daje mniejsze mnożniki, ale wygrane trafiają się częściej. Dopasuj wysokość swoich zakładów do bankrolla, aby uzyskać bardziej stabilne wahania."},keno:{how1:"Wybierz od 1 do 10 pól na planszy 1–40.",how2:"Ustaw kwotę zakładu i postaw zakład.",how3:"Losujemy 10 zwycięskich numerów; Twoje trafienia są podświetlone.",how4:"Wypłaty zależą od tego, ile kafelków wybrałeś i ile trafień uzyskałeś — sprawdź tabelę wypłat.",how5:"Nigdy nie możesz trafić więcej liczb niż wybrałeś, a maksymalny wybór to 10.",overview:"Wybierz swoje szczęśliwe liczby i spróbuj trafić w losowanie. Możesz wybrać od 1 do 10 liczb z zakresu od 1 do 40, a następnie losujemy 10 liczb. Im więcej Twoich trafień, tym wyższa wygrana.",provablyFair:"Nasz system weryfikowalnej losowości generuje każdy losowanie Keno. Po każdej rundzie możesz zobaczyć dane wejściowe i dowód, zweryfikować wynik za pomocą naszego klucza publicznego oraz odtworzyć ten sam rezultat.",strategyTip:"Wybierz swój poziom zmienności. Wybierając mniej pól, wygrane są rzadsze, ale mnożniki znacznie większe. Więcej pól to częstsze trafienia, ale niższe średnie wygrane za każde trafienie. Środkowy zakres zapewnia równowagę między częstotliwością trafień a wypłatami. Dostosuj wysokość zakładu do swojego poziomu ryzyka i bankrolla."},limbo:{how1:"Ustaw swój docelowy mnożnik.",how2:"Ustaw kwotę zakładu i postaw zakład.",how3:"Generujemy jeden losowy mnożnik wyniku.",how4:"Wygrywasz, jeśli wynik jest większy lub równy Twojemu celowi.",how5:"Twoja wygrana to stawka pomnożona przez wybrany mnożnik; w przeciwnym razie tracisz swoją stawkę.",overview:"W Limbo ustawiasz pożądaną wypłatę, a gra losuje pojedynczy, losowy mnożnik wyniku. Jeśli wynik jest co najmniej równy Twojemu celowi, wygrywasz. Jeśli jest niższy, przegrywasz. Wyższa szansa obniża mnożnik; niższa szansa go zwiększa.",provablyFair:"Nasz system weryfikowalnej losowości generuje każdy wynik Limbo. Po każdej rundzie możesz zobaczyć dane wejściowe i dowód, zweryfikować wynik za pomocą naszego klucza publicznego oraz odtworzyć ten sam rezultat.",strategyTip:"Niższe cele wygrywają częściej, ale płacą mniej, podczas gdy wyższe cele trafiają rzadko, lecz wypłacają znacznie więcej. Rozważ ustalenie stałego celu na sesję lub dodanie okazjonalnych prób na wysokie wygrane, a także utrzymuj konsekwentną wielkość zakładów, aby zarządzać wariancją."},limitContent:"Maksymalny możliwy mnożnik w tej grze to {multiplier}X. Maksymalna możliwa wygrana to {payout}",limitTitle:"Limity",mines:{how1:"Wybierz liczbę min na tę rundę.",how2:"Ustaw kwotę zakładu i postaw zakład.",how3:"Kliknij płytki, aby je odsłonić: bezpieczna płytka zwiększa Twój mnożnik; mina kończy rundę.",how4:"Możesz wypłacić w dowolnym momencie, aby zablokować swój aktualny mnożnik.",how5:"Twoja wypłata to zakład pomnożony przez aktualny mnożnik w momencie wypłaty.",how6:"Runda kończy się, gdy wypłacisz wygraną lub gdy zostanie odkryta mina.",overview:"Mines polega na wybieraniu bezpiecznych pól i decydowaniu, kiedy wypłacić wygraną. Przed rozpoczęciem rundy wybierz, ile min zostanie ukrytych na planszy. Każde odkryte bezpieczne pole zwiększa Twój mnożnik. Trafienie na minę kończy rundę bez wypłaty.",provablyFair:"Nasz system weryfikowalnej losowości generuje układ ukrytych min na każdej planszy. Po każdej rundzie możesz zobaczyć wejścia i dowód, zweryfikować wynik za pomocą naszego klucza publicznego oraz odtworzyć ten sam rezultat.",strategyTip:"Wybierz swoją zmienność. Mniej Mines oznacza bezpieczniejsze odkrycia i mniejsze mnożniki na krok. Więcej Mines prowadzi do bardziej ryzykownych odkryć z większymi mnożnikami. Ustaw cel lub użyj stop-loss, aby zarządzać wahaniami. Stałe rozmiary zakładów i zdyscyplinowane wypłaty pomagają utrzymać wariancję pod kontrolą."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Procent zwrotu dla gracza (RTP) w tej grze wynosi {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Strategia",tutorial:"Samouczek",wheel:{how1:"Wybierz swój poziom ryzyka i liczbę segmentów.",how2:"Ustaw kwotę zakładu i postaw zakład.",how3:"Koło się kręci i zatrzymuje na segmencie.",how4:"Twoja wygrana to zakład × mnożnik pokazany na segmencie, na którym zatrzyma się koło.",how5:"Każdy segment ma inny mnożnik w zależności od wybranego poziomu ryzyka i liczby segmentów.",overview:"Zakręć kołem i zobacz, gdzie się zatrzyma. Wybierz poziom ryzyka i liczbę segmentów przed każdym zakręceniem – niższe ryzyko oznacza częstsze wygrane z mniejszymi mnożnikami; wyższe ryzyko to rzadsze wygrane z większymi mnożnikami.",provablyFair:"Nasz system weryfikowalnej losowości generuje każdy wynik Wheel. Po każdej rundzie możesz zobaczyć dane wejściowe i dowód, zweryfikować wynik za pomocą naszego klucza publicznego oraz odtworzyć ten sam rezultat.",strategyTip:"Niskie ryzyko oferuje stabilne, mniejsze wygrane. Średnie ryzyko równoważy częstotliwość i wysokość wypłat. Wysokie ryzyko celuje w rzadkie, ale ogromne mnożniki. Więcej segmentów zwiększa maksymalny potencjał, ale zmniejsza częstotliwość wygranych."},roulette:{how1:"Kliknij na siatkę, aby położyć żetony na wybranych zakładach.",how2:"Dostosuj kwotę zakładu na kliknięcie przyciskami 1/2 i 2X.",how3:"Postaw zakład, aby zakręcić kołem.",how4:"Kulka ląduje na losowej liczbie od 0 do 36 (lub 00 w amerykańskiej).",how5:"Wygrane zakłady wypłacają według kursów; wszystkie inne żetony przepadają.",overview:"Połóż żetony na siatce zakładów i zakręć kołem. Stawiaj na pojedyncze numery, grupy numerów, kolory lub parzyste/nieparzyste. Kulka ląduje w losowym polu, a trafione zakłady wypłacają według kursów.",provablyFair:"Nasz weryfikowalny system losowości generuje każdy obrót ruletki. Po każdej rundzie możesz zobaczyć dane wejściowe i dowód, zweryfikować wynik naszym kluczem publicznym i odtworzyć ten sam wynik.",strategyTip:"Zakłady zewnętrzne (czerwone/czarne, parzyste/nieparzyste) oferują prawie 50% szans na wygraną z wypłatą 2X. Zakłady wewnętrzne na pojedyncze numery płacą do 36X, ale trafiają rzadko. Rozłóż żetony, aby zrównoważyć ryzyko i nagrodę."}},games:{advancedDice:{between:"Pomiędzy",boundsLower:"Dolna granica",boundsUpper:"Górna granica",inside:"Wewnątrz",outside:"Na zewnątrz",rollMode:"Tryb rzutu",secondBoundsLower:"Druga dolna granica",secondBoundsUpper:"Druga górna granica"},dice:{rollOver:"Przetocz wyżej",rollUnder:"Rzuć poniżej"},keno:{autoPick:"Automatyczny wybór",clearTable:"Wyczyść",kenoGameGrid:"Siatka gry Keno",kenoNumber:"Numer Keno {value}",selectAtLeastOneTile:"Wybierz co najmniej jedno pole",selectTileToAutobet:"Wybierz co najmniej jedno pole"},limbo:{multiplierError:"Musi być pomiędzy {min} a {max}",targetMultiplier:"Mnożnik",winChanceError:"Musi być pomiędzy {min} a {max}"},mines:{cashout:"Wypłać",gem:"Klejnot",gems:"Klejnoty",mine:"Kopalnia",mines:"Miny",nextGem:"Następny klejnot",selectRandomTile:"Wybierz losową płytkę",selectTileToAutobet:"Wybierz co najmniej jedno pole",tile:"Płytka",unrevealed:"Nieujawnione"},wheel:{segments:"Segmenty"},roulette:{chipValue:"Wartość Żetonu",totalBetAmount:"Całkowity Zakład"}},hotkeys:{clearBets:"Wyczyść Zakłady",doubleBet:"Podwój stawkę zakładu",doubleChipValue:"Podwój Wartość Żetonu",doubleTotalBet:"Podwój Całkowity Zakład",halveBet:"Zmniejsz stawkę o połowę",halveChipValue:"Zmniejsz Wartość Żetonu",halveTotalBet:"Zmniejsz Całkowity Zakład",higherTarget:"Wyższy cel",info:"Gdy skróty klawiszowe są włączone, pozostaną aktywne dla tej gry, dopóki nie zostaną wyłączone. Pomimo że niektóre gry mają podobne skróty klawiszowe, zawsze zaleca się potwierdzenie skrótów dla każdej gry.",lowerTarget:"Niższy cel",makeBet:"Postaw zakład",resetChipValue:"Resetuj Wartość Żetonu",toggleWinCondition:"Przełącz warunek wygranej",undo:"Cofnij",zeroBet:"Zero Kwota Zakładu"},modals:{betResult:"Wynik zakładu",fairnessAndHistory:"Sprawiedliwość i historia",gameArea:"Obszar Gry",gameControls:"Sterowanie grą",gameInfo:"Informacje o grze"}}});var Y4=D1((nt,Ai)=>{Ai.exports={accessibility:{sliderValue:"{value} de {max}"},alerts:{autobetStarted:"Modo de autobet iniciado",autobetStopped:"Modo de autobet parado",betAmountAboveMaxBet:"A aposta máxima é {value}",betAmountBelowMinBet:"A aposta mínima é {value}",betLimitReached:"Limite de aposta atingido",errorProcessingBet:"Ocorreu um erro ao processar sua aposta. Por favor, tente novamente.",failedToLoadBetData:"Falha ao carregar dados da aposta",gameError:"Ocorreu um erro ao processar sua aposta. Por favor, tente novamente.",insufficientBalance:"Saldo insuficiente",maxPayoutExceeded:"Pagamento máximo excedido",notEnoughBalance:"Saldo insuficiente"},autobet:{configureAutobet:"Configurar Autobet",games:"Jogos",games10:"10 Jogos",games100:"100 Jogos",games25:"25 Jogos",games5:"5 Jogos",games50:"50 Jogos",increase:"Aumentar",infinite:"Infinito",onLoss:"Em caso de perda",onWin:"Na vitória",reset:"Redefinir",startAutobet:"Iniciar Autobet",stopAutobet:"Parar Autobet",stopOnLoss:"Parar em Perda",stopOnProfit:"Parar no Lucro"},clipboard:{linkCopied:"Link copiado para a área de transferência!"},common:{auto:"Auto",back:"Voltar",balance:"Saldo",bet:"Valor da Aposta",betAmount:"Valor da Aposta",cancel:"Cancelar",cashOut:"Sacar",classic:"Clássico",confirm:"Confirmar",copied:"Copiado",currency:"Moeda",deposit:"Depósito",disableHotkeys:"Desativar atalhos de teclado",disableMaxBet:"Desativar Aposta Máxima",enableHotkeys:"Ativar teclas de atalho",enableMaxBet:"Ativar Aposta Máxima",footerNavigation:"Navegação do Rodapé",gameInfo:"Informações do Jogo",gameName:"Nome do Jogo",high:"Alto",history:"Histórico",hotkeys:"Atalhos de teclado",id:"ID",instantBet:"Aposta Instantânea",loading:"Carregando...",loadMore:"Carregar mais",lobby:"Voltar para o Lobby",low:"Baixo",manual:"Manual",max:"MAX",medium:"Médio",multiplier:"Multiplicador",payout:"Pagamento",placeBet:"Fazer Aposta",profit:"Lucro",profitOnWin:"Lucro na Vitória",provablyFair:"Comprovadamente Justo",risk:"Risco",roundId:"ID da Rodada",saveChanges:"Salvar alterações",shareReplay:"Compartilhar Replay",siteInformation:"Informações do Jogo",space:"ESPAÇO",support:"Suporte",targetMultiplier:"Multiplicador",thisFieldIsRequired:"Este campo é obrigatório",timestamp:"Tempo",toggleHotkeys:"Alternar Teclas de Atalho",viewFairnessInformation:"Ver Informações de Justiça",viewHistory:"Ver Histórico",volume:"Volume",winChance:"Chance de Vitória"},errors:{dice:{multiplierRange:"Deve estar entre {min} e {max}",winChanceRange:"Deve estar entre {min} e {max}"},noWheelData:"Dados da roleta não disponíveis",requestDropped:"Solicitação cancelada"},fairness:{activeClientSeed:"Semente de Cliente Ativa",enterClientSeed:"Insira o Client Seed",enterProof:"Inserir Prova",enterPublicKey:"Insira a Chave Pública",enterRandomness:"Inserir Aleatoriedade",enterRequest:"Inserir Solicitação",info:{p1:"O resultado de cada rodada vem de uma aleatoriedade verificável, não de uma lógica de servidor oculta. Construímos uma semente determinística a partir de valores únicos da sua rodada—gameId, tenantId, tenantUserId, um nonce incremental (um por rodada concluída), além do seu clientSeed. Isso garante que cada rodada seja única e reprodutível: mesmas entradas → mesmo fluxo aleatório → mesmo resultado.",p2:"Essa seed é processada por uma Função Aleatória Verificável de Curva Elíptica (ECVRF) conforme o rascunho da especificação IETF draft-irtf-cfrg-vrf-15. Nosso servidor utiliza sua chave privada para produzir um valor aleatório e uma prova criptográfica (proofString). Qualquer pessoa com nossa chave pública pode verificar independentemente essa prova para os dados fornecidos—confirmando que a aleatoriedade veio da seed e não foi adulterada. O SDK é em TypeScript, enquanto o núcleo criptográfico utiliza a biblioteca fastcrypto em Rust via NAPI-RS para desempenho e segurança.",p3:"Uma vez verificado, a saída do VRF alimenta um gerador determinístico de bytes aleatórios (hashSequence). Os jogos transformam esses bytes em resultados usando uma lógica determinística e imparcial. Como o processo é determinístico e o nonce avança a cada rodada concluída, você obtém tanto auditorias reproduzíveis (recrie exatamente a mesma rodada) quanto uma aleatoriedade nova e não repetitiva a cada vez.",p4:"Após uma rodada, você tem as entradas (incluindo seu clientSeed e o nonce da rodada), a saída do VRF, o proofString e nossa chave pública. Use qualquer verificador ECVRF ou nossas bibliotecas para: (1) verificar o proof em relação às entradas e à chave pública e (2) regenerar o mesmo hashSequence e resultado. Nossa chave privada nunca sai dos servidores seguros; a chave pública é segura para uso pelo lado do cliente em verificações independentes.",step1Desc:"Combinamos gameId, tenantId, tenantUserId, um nonce por rodada e seu clientSeed. Os mesmos inputs sempre produzem o mesmo fluxo aleatório e resultado.",step1Title:"Semente Determinística",step2Title:"Gerar Aleatoriedade",step3Desc:"Qualquer pessoa pode verificar o proofString para os dados fornecidos usando nossa chave pública. Isso confirma que a aleatoriedade corresponde à seed e não foi adulterada.",step3Title:"Verificar Prova",step4Title:"Derivar Resultados",step5Title:"Reprodução"},invalidGame:"Tipo de jogo inválido fornecido.",learnMore:"Saiba Mais",newClientSeed:"Nova Client Seed",noBettingHistory:"Sem histórico de apostas",outcomeCalculationInfo:"Este jogo utiliza um algoritmo comprovadamente justo que garante que o resultado seja justo e transparente.",outcomeNotVerified:"O resultado deste jogo não pôde ser verificado. Verifique se você inseriu as informações corretas e tente novamente.",outcomeVerified:"O resultado desta rodada foi verificado com nossa chave pública e é comprovadamente justo.",proof:"Prova",publicKey:"Chave Pública Ativa",randomness:"Aleatoriedade",request:"Solicitação",saveClientSeed:"Salvar Client Seed",verifyOutcome:"Verificar Resultado"},gameInfo:{advancedDice:{how1:"Selecione seu modo de rolagem: Dentro, Fora ou Entre.",how2:"Arraste os controles para definir sua(s) zona(s) vencedora(s).",how3:"Defina o valor da aposta e faça sua aposta.",how4:"Um número aleatório entre 0 e 100 é gerado.",how5:"Ganhe se o resultado cair dentro da(s) sua(s) zona(s) escolhida(s).",overview:"O Dados Avançado permite definir zonas vencedoras personalizadas. Escolha Dentro para ganhar quando o resultado cair dentro do seu intervalo, Fora para ganhar quando cair além do seu intervalo, ou Entre para dividir em duas zonas vencedoras.",provablyFair:"Nosso sistema de aleatoriedade verificável gera cada resultado do Dados Avançado. Após cada rodada, você pode visualizar as entradas e a prova, verificar o resultado com nossa chave pública e reproduzir o mesmo resultado.",strategyTip:"Zonas mais amplas oferecem vitórias mais frequentes, mas multiplicadores menores. Zonas estreitas arriscam mais, mas pagam mais. O modo Entre permite direcionar dois intervalos para estratégias flexíveis."},diamonds:{how1:"Defina o valor da sua aposta e faça sua aposta.",how2:"Cinco Diamonds são revelados a partir de um conjunto fixo de tipos de gemas.",how3:"Seu resultado é avaliado como uma mão de pôquer: pares, dois pares, trinca, full house, quadra e quina.",how4:"Cada tipo de mão tem seu próprio multiplicador; mãos de maior valor concedem multiplicadores maiores, enquanto nenhuma mão formada paga 0X.",how5:"Seu pagamento é sua aposta multiplicada pelo multiplicador mostrado para a mão resultante.",overview:"Diamonds é um jogo de combinação de cinco rolos. Cada rodada revela cinco diamantes de um conjunto de diferentes tipos de gemas. O seu objetivo é formar combinações ao estilo do pôquer – pares, trincas, full houses, entre outros.",provablyFair:"Nosso sistema de aleatoriedade verificável seleciona cada resultado dos diamantes. Após cada rodada, você pode visualizar os valores aleatórios subjacentes e a prova, verificar o resultado com nossa chave pública e reproduzir a mesma mão.",strategyTip:"Diamonds é um jogo de alta volatilidade e probabilidades fixas onde você está em busca de grandes mãos no estilo pôquer. Seu principal controle é o quão agressivo você quer ser. Use apostas menores e constantes se quiser atravessar sequências de azar, ou aumente ocasionalmente o valor da aposta quando estiver buscando mãos premium."},dice:{how1:"Escolha rolar abaixo ou rolar acima.",how2:"Defina seu número alvo.",how3:"Defina o valor da sua aposta e faça sua aposta.",how4:"Geramos um resultado aleatório (exibido na escala de 0–99,99 no jogo).",how5:"Você ganha se o resultado estiver no intervalo escolhido.",how6:"Seu pagamento é a aposta multiplicada pelo multiplicador exibido, que é atualizado conforme você move o controle deslizante.",overview:"Defina um número alvo e escolha se o resultado será abaixo ou acima dele. Mover o controle deslizante altera sua chance de vitória e o multiplicador—uma chance maior reduz o multiplicador, enquanto uma chance menor o aumenta. Cada rodada é uma jogada independente na escala do jogo.",provablyFair:"Nosso sistema de aleatoriedade verificável gera cada lançamento de Dice. Após cada rodada, você pode visualizar as entradas e a prova, verificar o resultado com nossa chave pública e reproduzir o mesmo resultado.",strategyTip:"Escolha sua volatilidade. Uma chance de vitória menor gera multiplicadores maiores, mas acertos mais raros. Uma chance de vitória maior gera multiplicadores menores, mas vitórias mais frequentes. Ajuste o valor das suas apostas ao seu saldo para oscilações mais estáveis."},keno:{how1:"Escolha de 1 a 10 blocos no tabuleiro de 1 a 40.",how2:"Defina o valor da sua aposta e faça sua aposta.",how3:"Sorteamos 10 números vencedores; as suas correspondências estão destacadas.",how4:"Os pagamentos dependem de quantas casas você selecionou e quantos acertos obteve—consulte a tabela de pagamentos.",how5:"Você nunca pode acertar mais números do que selecionou, e a seleção máxima é 10.",overview:"Escolha seus números da sorte e tente acertar o sorteio. Você pode escolher de 1 a 10 números entre 1 e 40, e então sorteamos 10 números. Quanto mais acertos você tiver, maior será o seu prêmio.",provablyFair:"Nosso sistema de aleatoriedade verificável gera cada sorteio de Keno. Após cada rodada, você pode ver as entradas e a prova, verificar o resultado com nossa chave pública e reproduzir o mesmo resultado.",strategyTip:"Escolha sua volatilidade. Selecionar menos casas significa vitórias mais raras, mas multiplicadores muito maiores. Mais casas proporcionam acertos mais frequentes, porém com retornos médios menores por acerto. Uma faixa intermediária equilibra a taxa de acertos e o pagamento. Ajuste o valor da sua aposta para combinar com sua preferência de risco e saldo."},limbo:{how1:"Defina o seu multiplicador alvo.",how2:"Defina o valor da sua aposta e faça sua aposta.",how3:"Geramos um multiplicador de resultado aleatório.",how4:"Você vence se o resultado for maior ou igual ao seu alvo.",how5:"Seu pagamento é a aposta x o seu multiplicador alvo; caso contrário, você perde sua aposta.",overview:"No Limbo, você define o pagamento desejado e o jogo sorteia um único multiplicador de resultado aleatório. Se o resultado for pelo menos o seu alvo, você ganha. Se for menor, você perde. Uma chance maior reduz o multiplicador; uma chance menor o aumenta.",provablyFair:"Nosso sistema de aleatoriedade verificável gera cada resultado do Limbo. Após cada rodada, você pode visualizar as entradas e a prova, verificar o resultado com nossa chave pública e reproduzir o mesmo resultado.",strategyTip:"Alvos mais baixos ganham com mais frequência, mas pagam menos, enquanto alvos mais altos acertam raramente, mas pagam muito mais. Considere um alvo fixo por sessão ou misture algumas apostas de longo alcance ocasionalmente, e mantenha o valor das apostas consistente para gerenciar a variância."},limitContent:"O multiplicador máximo alcançável para este jogo é {multiplier}X. O pagamento máximo alcançável é {payout}",limitTitle:"Limites",mines:{how1:"Escolha o número de minas para esta rodada.",how2:"Defina o valor da sua aposta e faça sua aposta.",how3:"Clique nos blocos para revelá-los: um bloco seguro aumenta seu multiplicador; uma mina encerra a rodada.",how4:"Você pode sacar a qualquer momento para garantir o seu multiplicador atual.",how5:"Seu pagamento é a aposta multiplicada pelo multiplicador atual quando você faz o saque.",how6:"A rodada termina quando você faz o saque ou quando uma mina é revelada.",overview:"Mines é sobre escolher as casas seguras e decidir quando encerrar a aposta. Antes do início da rodada, escolha quantas minas serão escondidas no tabuleiro. Cada casa segura que você revela aumenta seu multiplicador. Se acertar uma mina, a rodada termina sem pagamento.",provablyFair:"O nosso sistema de aleatoriedade verificável gera o layout oculto das minas de cada tabuleiro. Após cada rodada, você pode visualizar as entradas e a prova, verificar o resultado com a nossa chave pública e reproduzir o mesmo resultado.",strategyTip:"Escolha sua volatilidade. Menos minas significam revelações mais seguras e multiplicadores menores por etapa. Mais minas levam a revelações mais arriscadas com multiplicadores maiores. Defina uma meta ou use um stop-loss para gerenciar as oscilações. Tamanhos de apostas consistentes e saques disciplinados ajudam a manter a variância sob controle."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"A porcentagem de Retorno ao Jogador (RTP) deste jogo é de {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Estratégia",tutorial:"Tutorial",wheel:{how1:"Selecione o seu nível de risco e o número de segmentos.",how2:"Defina o valor da sua aposta e faça sua aposta.",how3:"A roda gira e para em um segmento.",how4:"Seu pagamento é a aposta × o multiplicador mostrado no segmento onde a roda parar.",how5:"Cada segmento tem um multiplicador diferente com base no nível de risco escolhido e na quantidade de segmentos.",overview:"Gire a roda e veja onde ela para. Escolha seu nível de risco e o número de segmentos antes de cada giro – menor risco resulta em vitórias mais frequentes com multiplicadores menores; maior risco resulta em vitórias mais raras com multiplicadores maiores.",provablyFair:"Nosso sistema de aleatoriedade verificável gera todos os resultados da Wheel. Após cada rodada, você pode visualizar as entradas e a prova, verificar o resultado com nossa chave pública e reproduzir o mesmo resultado.",strategyTip:"Baixo risco oferece ganhos pequenos e constantes. Risco médio equilibra frequência e pagamento. Alto risco busca multiplicadores raros, porém massivos. Mais segmentos aumentam o potencial máximo, mas reduzem a frequência de vitórias."},roulette:{how1:"Clique na grade para colocar fichas nas suas apostas escolhidas.",how2:"Ajuste o valor da aposta por clique com os botões 1/2 e 2X.",how3:"Faça sua aposta para girar a roleta.",how4:"A bola cai em um número aleatório de 0 a 36 (ou 00 na americana).",how5:"Apostas vencedoras pagam de acordo com suas probabilidades; todas as outras fichas são perdidas.",overview:"Coloque fichas na grade de apostas e gire a roleta. Aposte em números únicos, grupos de números, cores ou par/ímpar. A bola cai em um compartimento aleatório, e apostas acertadas pagam de acordo com suas probabilidades.",provablyFair:"Nosso sistema de aleatoriedade verificável gera cada giro da Roleta. Após cada rodada, você pode ver as entradas e a prova, verificar o resultado com nossa chave pública e reproduzir o mesmo resultado.",strategyTip:"Apostas externas (vermelho/preto, par/ímpar) oferecem quase 50% de chance de ganhar com pagamento de 2X. Apostas internas em números únicos pagam até 36X, mas acertam raramente. Distribua suas fichas para equilibrar risco e recompensa."}},games:{advancedDice:{between:"Entre",boundsLower:"Limite inferior",boundsUpper:"Limite superior",inside:"Dentro",outside:"Fora",rollMode:"Modo de rolagem",secondBoundsLower:"Segundo limite inferior",secondBoundsUpper:"Segundo limite superior"},dice:{rollOver:"Rolar Acima",rollUnder:"Rolar Abaixo"},keno:{autoPick:"Escolha Automática",clearTable:"Limpar",kenoGameGrid:"Grade de Jogo Keno",kenoNumber:"Número Keno {value}",selectAtLeastOneTile:"Selecione pelo menos uma peça",selectTileToAutobet:"Selecione pelo menos uma peça"},limbo:{multiplierError:"Deve estar entre {min} e {max}",targetMultiplier:"Multiplicador",winChanceError:"Deve estar entre {min} e {max}"},mines:{cashout:"Sacar",gem:"Gema",gems:"Gemas",mine:"Mina",mines:"Minas",nextGem:"Próxima Joia",selectRandomTile:"Selecionar Azulejo Aleatório",selectTileToAutobet:"Selecione pelo menos uma peça",tile:"Azulejo",unrevealed:"Não revelado"},wheel:{segments:"Segmentos"},roulette:{chipValue:"Valor Da Ficha",totalBetAmount:"Aposta Total"}},hotkeys:{clearBets:"Limpar Apostas",doubleBet:"Dobrar valor da aposta",doubleChipValue:"Dobrar Valor da Ficha",doubleTotalBet:"Dobrar Aposta Total",halveBet:"Dividir valor da aposta pela metade",halveChipValue:"Reduzir Valor da Ficha",halveTotalBet:"Reduzir Aposta Total",higherTarget:"Alvo Mais Alto",info:"Quando as teclas de atalho estiverem ativadas, elas permanecerão ativas para este jogo até serem desativadas. Apesar de alguns jogos compartilharem teclas de atalho semelhantes, é sempre recomendável confirmar as teclas de atalho para cada jogo.",lowerTarget:"Alvo Inferior",makeBet:"Fazer Aposta",resetChipValue:"Redefinir Valor da Ficha",toggleWinCondition:"Alternar Condição de Vitória",undo:"Desfazer",zeroBet:"Valor da Aposta Zero"},modals:{betResult:"Resultado da Aposta",fairnessAndHistory:"Justiça e Histórico",gameArea:"Área do Jogo",gameControls:"Controles do Jogo",gameInfo:"Informações do Jogo"}}});var X4=D1((tt,Vi)=>{Vi.exports={accessibility:{sliderValue:"{value} из {max}"},alerts:{autobetStarted:"Автоматический режим ставок запущен",autobetStopped:"Автоматический режим ставок остановлен",betAmountAboveMaxBet:"Максимальная ставка — {value}",betAmountBelowMinBet:"Минимальная ставка — {value}",betLimitReached:"Достигнут лимит ставки",errorProcessingBet:"Произошла ошибка при обработке вашей ставки. Пожалуйста, попробуйте еще раз.",failedToLoadBetData:"Не удалось загрузить данные ставки",gameError:"Произошла ошибка при обработке вашей ставки. Пожалуйста, попробуйте еще раз.",insufficientBalance:"Недостаточно средств",maxPayoutExceeded:"Превышена максимальная выплата",notEnoughBalance:"Недостаточно средств"},autobet:{configureAutobet:"Настроить Autobet",games:"Игры",games10:"10 игр",games100:"100 игр",games25:"25 игр",games5:"5 игр",games50:"50 игр",increase:"Увеличить",infinite:"Бесконечный",onLoss:"При проигрыше",onWin:"При выигрыше",reset:"Сбросить",startAutobet:"Запустить Autobet",stopAutobet:"Остановить Autobet",stopOnLoss:"Остановить при проигрыше",stopOnProfit:"Остановить при получении прибыли"},clipboard:{linkCopied:"Ссылка скопирована в буфер обмена!"},common:{auto:"Авто",back:"Назад",balance:"Баланс",bet:"Сумма ставки",betAmount:"Сумма ставки",cancel:"Отмена",cashOut:"Вывести средства",classic:"Классика",confirm:"Подтвердить",copied:"Скопировано",currency:"Валюта",deposit:"Депозит",disableHotkeys:"Отключить горячие клавиши",disableMaxBet:"Отключить максимальную ставку",enableHotkeys:"Включить горячие клавиши",enableMaxBet:"Включить максимальную ставку",footerNavigation:"Навигация в нижнем колонтитуле",gameInfo:"Информация об игре",gameName:"Название игры",high:"Высоко",history:"История",hotkeys:"Горячие клавиши",id:"ID",instantBet:"Мгновенная ставка",loading:"Загрузка...",loadMore:"Загрузить еще",lobby:"Назад в лобби",low:"Низкий",manual:"Руководство",max:"MAX",medium:"Средний",multiplier:"Множитель",payout:"Выплата",placeBet:"Сделать ставку",profit:"Прибыль",profitOnWin:"Прибыль при выигрыше",provablyFair:"Доказуемо честно",risk:"Риск",roundId:"ID раунда",saveChanges:"Сохранить изменения",shareReplay:"Поделиться повтором",siteInformation:"Информация об игре",space:"ПРОСТРАНСТВО",support:"Поддержка",targetMultiplier:"Множитель",thisFieldIsRequired:"Это поле обязательно для заполнения",timestamp:"Время",toggleHotkeys:"Переключить горячие клавиши",viewFairnessInformation:"Просмотреть информацию о честности",viewHistory:"Просмотреть историю",volume:"Объем",winChance:"Шанс выигрыша"},errors:{dice:{multiplierRange:"Должно быть между {min} и {max}",winChanceRange:"Должно быть между {min} и {max}"},noWheelData:"Данные колеса недоступны",requestDropped:"Запрос отменён"},fairness:{activeClientSeed:"Активный clientSeed",enterClientSeed:"Введите клиентский сид",enterProof:"Введите доказательство",enterPublicKey:"Введите открытый ключ",enterRandomness:"Введите случайное значение",enterRequest:"Введите запрос",info:{p1:"Результат каждого раунда определяется проверяемой случайностью, а не скрытой логикой сервера. Мы формируем детерминированный seed из значений, уникальных для вашего раунда — gameId, tenantId, tenantUserId, инкрементируемого nonce (по одному на каждый завершённый раунд), а также вашего clientSeed. Это гарантирует уникальность и воспроизводимость каждого раунда: одни и те же входные данные → тот же поток случайных чисел → тот же результат.",p2:"Этот seed проходит через эллиптическую кривую с проверяемой функцией случайных чисел (ECVRF) согласно спецификации IETF draft-irtf-cfrg-vrf-15. Наш сервер использует свой приватный ключ для генерации случайного значения и криптографического доказательства (proofString). Любой, имея наш публичный ключ, может независимо проверить это доказательство для заданных входных данных — подтверждая, что случайность получена из seed и не была подделана. SDK написан на TypeScript, а основная криптография использует библиотеку fastcrypto на Rust через NAPI-RS для производительности и безопасности.",p3:"После подтверждения выход VRF используется для инициализации детерминированного генератора случайных байтов (hashSequence). Игры преобразуют эти байты в результаты с помощью детерминированной, непредвзятой логики. Поскольку процесс детерминированный и nonce увеличивается после каждого завершенного раунда, вы получаете как возможность повторного аудита (воспроизвести тот же раунд точно), так и новую, неповторяющуюся случайность каждый раз.",p4:"После раунда у вас есть входные данные (включая ваш clientSeed и nonce раунда), VRF-выход, proofString и наш открытый ключ. Используйте любой ECVRF-проверяющий инструмент или наши библиотеки, чтобы: (1) проверить доказательство по входным данным и открытому ключу, и (2) воссоздать ту же hashSequence и результат. Наш приватный ключ никогда не покидает защищённые серверы; открытый ключ безопасно использовать на стороне клиента для независимой проверки.",step1Desc:"Мы объединяем gameId, tenantId, tenantUserId, уникальный nonce для каждого раунда и ваш clientSeed. Одни и те же входные данные всегда дают один и тот же поток случайных чисел и результат.",step1Title:"Детерминированное зерно",step2Title:"Генерировать случайность",step3Desc:"Любой может проверить proofString для заданных входных данных с помощью нашего публичного ключа. Это подтверждает, что случайность соответствует seed и не была изменена.",step3Title:"Проверить доказательство",step4Title:"Получить результаты",step5Title:"Воспроизведение"},invalidGame:"Указан недопустимый тип игры.",learnMore:"Узнать больше",newClientSeed:"Новый клиентский сид",noBettingHistory:"Нет истории ставок",outcomeCalculationInfo:"Эта игра использует доказуемо честный алгоритм, который гарантирует справедливый и прозрачный результат.",outcomeNotVerified:"Результат этой игры не удалось проверить. Проверьте, что вы ввели правильную информацию, и попробуйте снова.",outcomeVerified:"Результат этого раунда был проверен с помощью нашего открытого ключа и является доказуемо честным.",proof:"Доказательство",publicKey:"Активный открытый ключ",randomness:"Случайность",request:"Запрос",saveClientSeed:"Сохранить клиентский сид",verifyOutcome:"Проверить результат"},gameInfo:{advancedDice:{how1:"Выберите режим броска: Внутри, Снаружи или Между.",how2:"Перетащите ползунки, чтобы определить зону выигрыша.",how3:"Установите сумму ставки и сделайте ставку.",how4:"Генерируется случайное число от 0 до 100.",how5:"Выигрыш, если результат попадает в выбранную зону.",overview:"Advanced Dice позволяет устанавливать пользовательские зоны выигрыша. Выберите Внутри, чтобы выиграть, когда результат попадает в ваш диапазон, Снаружи, чтобы выиграть, когда он выходит за пределы, или Между, чтобы разделить на две зоны выигрыша.",provablyFair:"Наша проверяемая система случайности генерирует каждый результат Advanced Dice. После каждого раунда вы можете просмотреть входные данные и доказательство, проверить результат с помощью нашего публичного ключа и воспроизвести тот же результат.",strategyTip:"Более широкие зоны предлагают более частые выигрыши, но меньшие множители. Узкие зоны более рискованны, но платят больше. Режим Между позволяет нацеливаться на два диапазона для гибких стратегий."},diamonds:{how1:"Установите сумму ставки и сделайте ставку.",how2:"Пять бриллиантов открываются из фиксированного набора типов драгоценных камней.",how3:"Ваш результат оценивается как покерная комбинация: пара, две пары, тройка, фул-хаус, каре и пятерка.",how4:"Каждый тип комбинации имеет свой собственный множитель; комбинации с более высокой ценностью приносят большие множители, а отсутствие комбинации выплачивает 0X.",how5:"Ваш выигрыш — это ваша ставка, умноженная на показанный множитель для получившейся комбинации.",overview:"Diamonds — это игра на совпадение с пятью барабанами. В каждом раунде открываются пять алмазов из набора разных видов драгоценных камней. Ваша цель — собирать комбинации в стиле покера: пары, тройки, фулл-хаусы и так далее.",provablyFair:"Наша система проверяемой случайности выбирает результат каждого бриллианта. После каждого раунда вы можете просмотреть исходные случайные значения и доказательство, проверить результат с помощью нашего открытого ключа и воспроизвести ту же самую раздачу.",strategyTip:"Diamonds — это игра с высокой волатильностью и фиксированными коэффициентами, в которой вы охотитесь за крупными, покерными комбинациями. Ваш главный инструмент — это степень вашей агрессивности. Делайте небольшие, стабильные ставки, если хотите переждать неудачные серии, или время от времени увеличивайте размер ставки, когда стремитесь поймать премиальные комбинации."},dice:{how1:"Выберите бросок ниже или бросок выше.",how2:"Установите ваше целевое число.",how3:"Установите сумму ставки и сделайте ставку.",how4:"Мы генерируем один случайный результат (отображаемый в игре на шкале от 0 до 99,99).",how5:"Вы выигрываете, если результат находится в выбранном вами диапазоне.",how6:"Ваш выигрыш — это ставка, умноженная на показанный множитель, который обновляется по мере перемещения ползунка.",overview:"Установите целевое число и выберите, выпадет ли результат ниже или выше него. Перемещение ползунка изменяет ваш шанс на выигрыш и множитель — более высокий шанс уменьшает множитель, а более низкий шанс увеличивает его. Каждый раунд — это независимый бросок на шкале игры.",provablyFair:"Наша система проверяемой случайности генерирует каждый бросок Dice. После каждого раунда вы можете просмотреть входные данные и доказательство, проверить результат с помощью нашего открытого ключа и воспроизвести тот же самый результат.",strategyTip:"Выберите свою волатильность. Более низкий шанс выигрыша дает большие множители, но выигрыши случаются реже. Более высокий шанс выигрыша дает меньшие множители, но выигрыши случаются чаще. Подбирайте размер ставок в соответствии с вашим банкроллом для более стабильных колебаний."},keno:{how1:"Выберите от 1 до 10 плиток на поле 1–40.",how2:"Установите сумму ставки и сделайте ставку.",how3:"Мы выбираем 10 выигрышных чисел; ваши совпадения выделены.",how4:"Выплаты зависят от того, сколько плиток вы выбрали и сколько совпадений получили — смотрите таблицу выплат.",how5:"Вы никогда не сможете угадать больше чисел, чем выбрали, а максимальный выбор — 10.",overview:"Выберите свои счастливые числа и попытайтесь угадать результаты розыгрыша. Вы можете выбрать от 1 до 10 чисел из диапазона от 1 до 40, после чего мы проведём розыгрыш 10 чисел. Чем больше выбранных вами чисел совпадёт с выпавшими, тем выше ваш выигрыш.",provablyFair:"Наша система проверяемой случайности генерирует каждый розыгрыш Keno. После каждого раунда вы можете просмотреть входные данные и доказательство, проверить результат с помощью нашего открытого ключа и воспроизвести тот же результат.",strategyTip:"Выберите свою волатильность. Меньшее количество выбранных позиций означает более редкие выигрыши, но гораздо большие множители. Большее количество позиций дает более частые выигрыши, но средний выигрыш за одно попадание будет меньше. Средний диапазон обеспечивает баланс между частотой выигрышей и выплатой. Отрегулируйте размер ставки в соответствии со своим уровнем риска и банкроллом."},limbo:{how1:"Установите ваш целевой множитель.",how2:"Установите сумму ставки и сделайте ставку.",how3:"Мы генерируем один случайный множитель результата.",how4:"Вы выигрываете, если результат больше или равен вашей цели.",how5:"Ваш выигрыш составляет ставку, умноженную на ваш целевой множитель; в противном случае вы теряете свою ставку.",overview:"В Limbo вы устанавливаете желаемый выигрыш, и игра выбирает один случайный множитель результата. Если результат как минимум равен вашей цели, вы выигрываете. Если он ниже, вы проигрываете. Более высокий шанс уменьшает множитель; более низкий шанс увеличивает его.",provablyFair:"Наша система проверяемой случайности генерирует каждый результат Limbo. После каждого раунда вы можете просмотреть входные данные и доказательство, проверить результат с помощью нашего публичного ключа и воспроизвести тот же результат.",strategyTip:"Низкие цели выигрывают чаще, но приносят меньшую выплату, в то время как высокие цели выпадают редко, но оплачиваются гораздо больше. Рассмотрите возможность установить фиксированную цель на сессию или периодически делать рискованные ставки, а также придерживайтесь стабильного размера ставок для управления дисперсией."},limitContent:"Максимальный возможный множитель для этой игры — {multiplier}X. Максимальный возможный выигрыш — {payout}",limitTitle:"Лимиты",mines:{how1:"Выберите количество мин для этого раунда.",how2:"Установите сумму ставки и сделайте ставку.",how3:"Нажимайте на плитки, чтобы открыть их: безопасная плитка увеличивает ваш множитель; мина завершает раунд.",how4:"Вы можете вывести средства в любой момент, чтобы зафиксировать текущий множитель.",how5:"Ваш выигрыш составляет ставку, умноженную на текущий множитель при выводе.",how6:"Раунд заканчивается, когда вы забираете выигрыш или когда обнаруживается мина.",overview:"Mines заключается в выборе безопасных плиток и принятии решения, когда забрать выигрыш. Перед началом раунда выберите, сколько мин будет скрыто на поле. Каждая открытая безопасная плитка увеличивает ваш множитель. Если вы попадёте на мину, раунд закончится без выплаты.",provablyFair:"Наша система проверяемой случайности генерирует скрытую расстановку мин для каждого поля. После каждого раунда вы можете просмотреть входные данные и доказательство, проверить результат с помощью нашего открытого ключа и воспроизвести тот же самый результат.",strategyTip:"Выберите свою волатильность. Меньшее количество мин означает более безопасные открытия и меньшие множители на каждом шаге. Больше мин приводит к более рискованным открытиям с большими множителями. Установите цель или используйте стоп-лосс для управления колебаниями. Постоянный размер ставок и дисциплинированные выводы помогают контролировать дисперсию."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Процент возврата игроку (RTP) для этой игры составляет {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Стратегия",tutorial:"Учебник",wheel:{how1:"Выберите свой уровень риска и количество сегментов.",how2:"Установите сумму ставки и сделайте ставку.",how3:"Колесо вращается и останавливается на сегменте.",how4:"Ваш выигрыш составляет ставку, умноженную на множитель, указанный на сегменте, где останавливается колесо.",how5:"Каждый сегмент имеет свой множитель в зависимости от выбранного уровня риска и количества сегментов.",overview:"Крутите колесо и смотрите, где оно остановится. Выберите уровень риска и количество сегментов перед каждым вращением — низкий риск дает более частые выигрыши с меньшими множителями, высокий риск — редкие выигрыши с большими множителями.",provablyFair:"Наша система проверяемой случайности генерирует каждый результат Wheel. После каждого раунда вы можете просмотреть входные данные и доказательство, проверить результат с помощью нашего открытого ключа и воспроизвести тот же самый результат.",strategyTip:"Низкий риск обеспечивает стабильные, небольшие выигрыши. Средний риск балансирует частоту и выплату. Высокий риск нацелен на редкие, но крупные множители. Большее количество сегментов увеличивает максимальный потенциал, но снижает частоту выигрышей."},roulette:{how1:"Нажмите на сетку, чтобы разместить фишки на выбранных ставках.",how2:"Настройте сумму ставки за клик кнопками 1/2 и 2X.",how3:"Сделайте ставку, чтобы запустить колесо.",how4:"Шарик падает на случайное число от 0 до 36 (или 00 в американской версии).",how5:"Выигрышные ставки выплачиваются по коэффициентам; все остальные фишки проигрываются.",overview:"Размещайте фишки на игровом поле и вращайте колесо. Ставьте на отдельные числа, группы чисел, цвета или чёт/нечет. Шарик падает в случайную ячейку, и совпавшие ставки выплачиваются по коэффициентам.",provablyFair:"Наша проверяемая система случайности генерирует каждое вращение рулетки. После каждого раунда вы можете просмотреть входные данные и доказательство, проверить результат с помощью нашего публичного ключа и воспроизвести тот же результат.",strategyTip:"Внешние ставки (красное/чёрное, чёт/нечет) дают почти 50% шанс выигрыша с выплатой 2X. Внутренние ставки на отдельные числа платят до 36X, но выпадают редко. Распределяйте фишки для баланса риска и награды."}},games:{advancedDice:{between:"Между",boundsLower:"Нижняя граница",boundsUpper:"Верхняя граница",inside:"Внутри",outside:"Снаружи",rollMode:"Режим броска",secondBoundsLower:"Вторая нижняя граница",secondBoundsUpper:"Вторая верхняя граница"},dice:{rollOver:"Бросить выше",rollUnder:"Бросить ниже"},keno:{autoPick:"Автовыбор",clearTable:"Очистить",kenoGameGrid:"Сетка игры Кено",kenoNumber:"Номер Keno {value}",selectAtLeastOneTile:"Выберите как минимум одну плитку",selectTileToAutobet:"Выберите как минимум одну плитку"},limbo:{multiplierError:"Должно быть между {min} и {max}",targetMultiplier:"Множитель",winChanceError:"Должно быть между {min} и {max}"},mines:{cashout:"Вывести средства",gem:"Драгоценный камень",gems:"Драгоценные камни",mine:"Мина",mines:"Мины",nextGem:"Следующая драгоценность",selectRandomTile:"Выбрать случайную плитку",selectTileToAutobet:"Выберите как минимум одну плитку",tile:"Плитка",unrevealed:"Не раскрыто"},wheel:{segments:"Сегменты"},roulette:{chipValue:"Значение Фишки",totalBetAmount:"Общая Ставка"}},hotkeys:{clearBets:"Очистить ставки",doubleBet:"Удвоить сумму ставки",doubleChipValue:"Удвоить значение фишки",doubleTotalBet:"Удвоить общую ставку",halveBet:"Уменьшить ставку вдвое",halveChipValue:"Уменьшить значение фишки вдвое",halveTotalBet:"Уменьшить общую ставку вдвое",higherTarget:"Более высокая цель",info:"Когда горячие клавиши включены, они будут оставаться активными для этой игры до тех пор, пока не будут отключены. Несмотря на то что некоторые игры используют схожие комбинации клавиш, всегда рекомендуется проверять горячие клавиши для каждой игры.",lowerTarget:"Нижняя цель",makeBet:"Сделать ставку",resetChipValue:"Сбросить значение фишки",toggleWinCondition:"Переключить условие выигрыша",undo:"Отменить",zeroBet:"Нулевая сумма ставки"},modals:{betResult:"Результат ставки",fairnessAndHistory:"Честность и история",gameArea:"Игровая зона",gameControls:"Управление игрой",gameInfo:"Информация об игре"}}});var N4=D1((ot,Qi)=>{Qi.exports={accessibility:{sliderValue:"{value} / {max}"},alerts:{autobetStarted:"Otomatik bahis modu başlatıldı",autobetStopped:"Otomatik bahis modu durduruldu",betAmountAboveMaxBet:"Azami bahis {value}",betAmountBelowMinBet:"Minimum bahis {value}",betLimitReached:"Bahis limiti aşıldı",errorProcessingBet:"Bahsiniz işlenirken bir hata oluştu. Lütfen tekrar deneyin.",failedToLoadBetData:"Bahis verileri yüklenemedi",gameError:"Bahsiniz işlenirken bir hata oluştu. Lütfen tekrar deneyin.",insufficientBalance:"Yetersiz bakiye",maxPayoutExceeded:"Maksimum ödeme aşıldı",notEnoughBalance:"Yetersiz bakiye"},autobet:{configureAutobet:"Autobet'i yapılandır",games:"Oyunlar",games10:"10 Oyun",games100:"100 Oyun",games25:"25 Oyun",games5:"5 Oyun",games50:"50 Oyun",increase:"Artır",infinite:"Sonsuz",onLoss:"Kaybedince",onWin:"Kazandığında",reset:"Sıfırla",startAutobet:"Otomatik Bahisi Başlat",stopAutobet:"Autobet'i Durdur",stopOnLoss:"Kayıpta Durdur",stopOnProfit:"Kârda Durdur"},clipboard:{linkCopied:"Bağlantı panoya kopyalandı!"},common:{auto:"Otomatik",back:"Geri",balance:"Bakiye",bet:"Bahis Tutarı",betAmount:"Bahis Tutarı",cancel:"İptal Et",cashOut:"Nakit Çek",classic:"Klasik",confirm:"Onayla",copied:"Kopyalandı",currency:"Para Birimi",deposit:"Yatırma",disableHotkeys:"Kısayol Tuşlarını Devre Dışı Bırak",disableMaxBet:"Maksimum Bahsi Devre Dışı Bırak",enableHotkeys:"Kısayol Tuşlarını Etkinleştir",enableMaxBet:"Maksimum Bahsi Etkinleştir",footerNavigation:"Alt Bilgi Gezinme",gameInfo:"Oyun Bilgisi",gameName:"Oyun Adı",high:"Yüksek",history:"Geçmiş",hotkeys:"Kısayol tuşları",id:"ID",instantBet:"Anında Bahis",loading:"Yükleniyor...",loadMore:"Daha Fazla Yükle",lobby:"Lobiye Dön",low:"Düşük",manual:"Kılavuz",max:"MAX",medium:"Orta",multiplier:"Çarpan",payout:"Ödeme",placeBet:"Bahis Yap",profit:"Kâr",profitOnWin:"Kazançta Kar",provablyFair:"Kanıtlanabilir Adil",risk:"Risk",roundId:"Tur Roundu ID",saveChanges:"Değişiklikleri Kaydet",shareReplay:"Yeniden Oynatımı Paylaş",siteInformation:"Oyun Bilgileri",space:"SPACE",support:"Destek",targetMultiplier:"Çarpan",thisFieldIsRequired:"Bu alan gereklidir",timestamp:"Zaman",toggleHotkeys:"Kısayol Tuşlarını Aç/Kapat",viewFairnessInformation:"Adililik Bilgilerini Görüntüle",viewHistory:"Geçmişi Görüntüle",volume:"Ses",winChance:"Kazanma Şansı"},errors:{dice:{multiplierRange:"{min} ile {max} arasında olmalı",winChanceRange:"{min} ile {max} arasında olmalı"},noWheelData:"Çark verileri mevcut değil",requestDropped:"İstek iptal edildi"},fairness:{activeClientSeed:"Aktif Client Seed",enterClientSeed:"Müşteri Tohumu Girin",enterProof:"Kanıtı Gir",enterPublicKey:"Genel Anahtar Girin",enterRandomness:"Rastgelelik Girin",enterRequest:"İstek Girin",info:{p1:"Her turun sonucu gizli sunucu mantığından değil, doğrulanabilir rastgelelikten gelir. Turunuza özgü değerlerden—gameId, tenantId, tenantUserId, artan bir nonce (her tamamlanan tur için bir tane), ayrıca clientSeed’inizden—belirleyici bir seed oluşturuyoruz. Bu, her turun benzersiz ve tekrarlanabilir olmasını garanti eder: aynı girdiler → aynı rastgele akış → aynı sonuç.",p2:"Bu seed, IETF taslak-irtf-cfrg-vrf-15 spesifikasyonuna göre bir Eliptik Eğri Doğrulanabilir Rastgele Fonksiyonu (ECVRF) üzerinden çalıştırılır. Sunucumuz, rastgele bir değer ve kriptografik bir kanıt (proofString) üretmek için özel anahtarını kullanır. Herkes, bizim açık anahtarımızla verilen girdiler için bu kanıtı bağımsız olarak doğrulayabilir—rastgeleliğin seed’den geldiğini ve üzerinde oynama yapılmadığını teyit eder. SDK TypeScript’tir, çekirdek kriptografi ise performans ve güvenlik için NAPI-RS aracılığıyla fastcrypto Rust kütüphanesini kullanır.",p3:"Doğrulandıktan sonra, VRF çıktısı deterministik bir rastgele bayt üreteci (hashSequence) için başlangıç değeri olarak kullanılır. Oyunlar bu baytları deterministik ve tarafsız bir mantıkla sonuçlara dönüştürür. Süreç deterministik olduğu ve nonce her tamamlanan turda ilerlediği için hem tekrar oynanabilir denetimler (aynı turu birebir yeniden oluşturma) hem de her seferinde taze, tekrarlanmayan rastgelelik elde edersiniz.",p4:"Bir turdan sonra, girişlere (clientSeed’iniz ve turun nonce’u dahil), VRF çıktısına, proofString’e ve bizim açık anahtarımıza sahip olursunuz. Herhangi bir ECVRF doğrulayıcıyı veya kütüphanelerimizi kullanarak: (1) kanıtı girişler ve açık anahtar ile doğrulayın ve (2) aynı hashSequence ve sonucu yeniden oluşturun. Özel anahtarımız asla güvenli sunuculardan ayrılmaz; açık anahtar bağımsız kontroller için istemci tarafında güvenle kullanılabilir.",step1Desc:"gameId, tenantId, tenantUserId, her tur için bir nonce ve clientSeed’inizi birleştiriyoruz. Aynı girdiler her zaman aynı rastgele akışı ve sonucu üretir.",step1Title:"Deterministik Tohum",step2Title:"Rastgelelik Oluştur",step3Desc:"Herkes, verilen girdiler için proofString'i genel anahtarımızı kullanarak doğrulayabilir. Bu, rastgeleliğin tohumla eşleştiğini ve üzerinde oynama yapılmadığını onaylar.",step3Title:"Kanıtı Doğrula",step4Title:"Sonuçları Türet",step5Title:"Üreme"},invalidGame:"Geçersiz oyun türü sağlandı.",learnMore:"Daha Fazla Bilgi Al",newClientSeed:"Yeni Client Seed",noBettingHistory:"Bahis geçmişi yok",outcomeCalculationInfo:"Bu oyun, sonucun adil ve şeffaf olmasını sağlayan kanıtlanabilir adil bir algoritma kullanır.",outcomeNotVerified:"Bu oyunun sonucu doğrulanamadı. Doğru bilgileri girdiğinizden emin olun ve tekrar deneyin.",outcomeVerified:"Bu turun sonucu, açık anahtarımızla doğrulanmıştır ve kesinlikle adildir.",proof:"Kanıt",publicKey:"Aktif Genel Anahtar",randomness:"Rastgelelik",request:"Talep",saveClientSeed:"İstemci Tohumunu Kaydet",verifyOutcome:"Sonucu Doğrula"},gameInfo:{advancedDice:{how1:"Atış modunu seçin: İçeride, Dışarıda veya Arasında.",how2:"Kazanma bölgenizi tanımlamak için kaydırıcıları sürükleyin.",how3:"Bahis miktarınızı ayarlayın ve bahsinizi koyun.",how4:"0 ile 100 arasında rastgele bir sayı üretilir.",how5:"Sonuç seçtiğiniz bölgeye düşerse kazanırsınız.",overview:"Advanced Dice, özel kazanma bölgeleri belirlemenize olanak tanır. Sonuç aralığınıza düştüğünde kazanmak için İçeride'yi, aralığınızın dışına çıktığında kazanmak için Dışarıda'yı veya iki kazanma bölgesine bölmek için Arasında'yı seçin.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz her Advanced Dice sonucunu üretir. Her turdan sonra, girdileri ve kanıtı görüntüleyebilir, sonucu genel anahtarımızla doğrulayabilir ve aynı sonucu yeniden üretebilirsiniz.",strategyTip:"Daha geniş bölgeler daha sık kazanç sağlar ancak daha küçük çarpanlarla. Dar bölgeler daha risklidir ancak daha fazla öder. Arasında modu, esnek stratejiler için iki aralığı hedeflemenize olanak tanır."},diamonds:{how1:"Bahis miktarını belirle ve bahsini yerleştir.",how2:"Beş elmas, sabit bir değerli taş türleri setinden ortaya çıkar.",how3:"Sonucunuz bir poker eli gibi değerlendirilir: çiftler, iki çift, üçlü, ful, dörtlü ve beşli.",how4:"Her el türünün kendi çarpanı vardır; daha yüksek değerli eller daha büyük çarpanlar kazandırırken, elde hiçbir kombinasyon yoksa 0X ödenir.",how5:"Kazancınız, elde edilen el için gösterilen çarpan ile çarpılan bahsinizdir.",overview:"Diamonds beş makaralı bir eşleştirme oyunudur. Her turda farklı mücevher türlerinden beş elmas ortaya çıkar. Amacınız, poker tarzı kombinasyonlar elde etmektir - çiftler, üçlüler, full house ve benzeri.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz her bir Diamonds sonucunu seçer. Her turdan sonra, temel rastgele değerleri ve kanıtı görüntüleyebilir, sonucu genel anahtarımızla doğrulayabilir ve aynı eli yeniden oluşturabilirsiniz.",strategyTip:"Diamonds, büyük, poker tarzı ellerin peşinde olduğunuz yüksek oynaklığa sahip, sabit oranlı bir oyundur. Ana kontrolünüz ne kadar agresif olmak istediğinizdir. Kurak serileri atlatmak istiyorsanız daha küçük ve istikrarlı bahisler kullanın veya nadiren de olsa yüksek değerli ellerin peşindeyken bahis miktarınızı artırın."},dice:{how1:"Roll altı veya roll üstü seçin.",how2:"Hedef numaranızı belirleyin.",how3:"Bahis miktarını belirle ve bahsini yerleştir.",how4:"Bir rastgele sonuç üretiyoruz (oyunda 0–99,99 ölçeğinde gösterilir).",how5:"Sonuç seçtiğiniz aralıkta ise kazanırsınız.",how6:"Kazancınız, bahis x gösterilen çarpan kadardır ve çarpan, kaydırıcıyı hareket ettirdikçe güncellenir.",overview:"Bir hedef sayı belirleyin ve zarın bu sayının altında mı yoksa üstünde mi duracağını seçin. Kaydırıcıyı hareket ettirmek, kazanma şansınızı ve çarpanınızı değiştirir—daha yüksek bir şans çarpanı düşürür, daha düşük bir şans ise çarpanı artırır. Her tur, oyunun ölçeğinde bağımsız bir zar atışıdır.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz her Dice atışını üretir. Her turun ardından, girdileri ve kanıtı görebilir, sonucu herkese açık anahtarımızla doğrulayabilir ve aynı sonucu yeniden üretebilirsiniz.",strategyTip:"Oynaklığını seç. Daha düşük kazanma şansı, daha büyük çarpanlar ama daha nadir kazançlar sağlar. Daha yüksek kazanma şansı, daha küçük çarpanlar ama daha sık kazançlar sağlar. Daha dengeli dalgalanmalar için bahislerini bakiyene göre ayarla."},keno:{how1:"1–40 tahtasında 1–10 karo seçin.",how2:"Bahis miktarını belirle ve bahsini yerleştir.",how3:"10 kazanan numara çekiyoruz; eşleşmeleriniz vurgulanır.",how4:"Ödemeler, seçtiğiniz karo sayısına ve kaç isabet aldığınıza bağlıdır—ödeme tablosunu kontrol edin.",how5:"Seçtiğinizden daha fazla sayıya asla ulaşamazsınız ve en fazla 10 seçim yapabilirsiniz.",overview:"Şanslı numaralarını seç ve çekilişle eşleştirmeye çalış. 1–40 arasından 1–10 numara seçebilirsin, ardından biz 10 numara çekeriz. Seçtiğin numaralardan ne kadar fazlası çıkarsa, ödemen o kadar yüksek olur.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz her Keno çekilişini üretir. Her turun ardından girdileri ve kanıtı görüntüleyebilir, sonucu ortak anahtarımızla doğrulayabilir ve aynı sonucu yeniden üretebilirsiniz.",strategyTip:"Volatilitenizi seçin. Daha az nokta seçmek, daha nadir kazançlar ancak çok daha büyük çarpanlar anlamına gelir. Daha fazla nokta, daha sık kazanç sağlar ancak her kazanç başına ortalama getiri daha küçüktür. Orta bir aralık, isabet oranı ile ödemeyi dengeler. Bahis miktarınızı, risk tercihinize ve bakiyenize göre ayarlayın."},limbo:{how1:"Hedef çarpanınızı ayarlayın.",how2:"Bahis miktarını belirle ve bahsini yerleştir.",how3:"Bir rastgele sonuç çarpanı oluşturuyoruz.",how4:"Sonuç hedefinize eşit veya ondan büyükse kazanırsınız.",how5:"Kazancınız, bahsiniz x hedef çarpanınızdır; aksi takdirde, bahsinizi kaybedersiniz.",overview:"Limbo'da istediğiniz ödemeyi belirlersiniz ve oyun tek bir rastgele sonuç çarpanı çeker. Sonuç hedefinize en az eşitse kazanırsınız. Daha düşükse kaybedersiniz. Daha yüksek bir kazanma şansı çarpanı düşürür; daha düşük bir şans ise çarpanı artırır.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz her Limbo sonucunu üretir. Her turdan sonra, girdileri ve kanıtı görebilir, sonucu genel anahtarımızla doğrulayabilir ve aynı sonucu yeniden üretebilirsiniz.",strategyTip:"Daha düşük hedefler daha sık kazanır ancak daha az öder, daha yüksek hedefler ise nadiren tutar fakat çok daha fazla öder. Her oturum için sabit bir hedef belirlemeyi ya da ara sıra uzun vadeli hedefler denemeyi düşünün ve varyansı yönetmek için bahis miktarınızı tutarlı bir şekilde ayarlayın."},limitContent:"Bu oyun için ulaşılabilir en yüksek çarpan {multiplier}X'tir. Ulaşılabilir en yüksek ödeme {payout}",limitTitle:"Limitler",mines:{how1:"Bu tur için mayın sayısını seçin.",how2:"Bahis miktarını belirle ve bahsini yerleştir.",how3:"Kareleri açmak için tıklayın: güvenli bir kare çarpanınızı artırır; bir mayın ise raundu bitirir.",how4:"Mevcut çarpanınızı sabitlemek için istediğiniz zaman nakit çıkışı yapabilirsiniz.",how5:"Nakit çıkışı yaptığınızda kazancınız, bahis x mevcut çarpan kadar olur.",how6:"Bir tur, nakit çıkışı yaptığınızda veya bir mayın açığa çıktığında sona erer.",overview:"Mines, güvenli kutucukları seçmek ve ne zaman nakit çıkışı yapacağınıza karar vermekle ilgilidir. Tur başlamadan önce, tahtada kaç tane mayın gizleneceğini seçin. Açtığınız her güvenli kutucuk çarpanınızı artırır. Bir mayına denk gelirseniz tur, ödeme olmadan sona erer.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz, her panonun gizli mayın düzenini oluşturur. Her turun ardından, girdileri ve kanıtı görüntüleyebilir, sonucu genel anahtarımızla doğrulayabilir ve aynı sonucu yeniden üretebilirsiniz.",strategyTip:"Oynaklığını seç. Daha az mayın, daha güvenli açılışlar ve adım başına daha küçük çarpanlar anlamına gelir. Daha fazla mayın ise daha riskli açılışlar ve daha büyük çarpanlar demektir. Dalgalanmaları yönetmek için bir hedef belirleyin veya zarar durdur kullanın. Tutarlı bahis miktarları ve disiplinli nakit çıkışları, varyansı kontrol altında tutmaya yardımcı olur."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Bu oyun için Oyuncuya Dönüş (RTP) yüzdesi {rtpValue}%'dir.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Strateji",tutorial:"Eğitim",wheel:{how1:"Risk seviyenizi ve segment sayısını seçin.",how2:"Bahis miktarını belirle ve bahsini yerleştir.",how3:"Çark döner ve bir bölüme iner.",how4:"Kazancınız, çarkın durduğu dilimde gösterilen çarpan ile bahisinizin çarpılmasıyla elde edilir.",how5:"Her bir bölüm, seçtiğiniz risk seviyesi ve bölüm sayısına göre farklı bir çarpana sahiptir.",overview:"Çarkı çevirin ve nerede durduğunu izleyin. Her dönüşten önce risk seviyenizi ve dilim sayısını seçin - düşük risk, daha sık ama daha küçük çarpanlarla kazanç sağlar; yüksek risk ise daha nadir ama daha büyük çarpanlarla kazanç sağlar.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz her Wheel sonucunu üretir. Her turun ardından, girdileri ve kanıtı görebilir, sonucu herkese açık anahtarımızla doğrulayabilir ve aynı sonucu yeniden üretebilirsiniz.",strategyTip:"Düşük risk istikrarlı, daha küçük kazançlar sunar. Orta risk, sıklık ve ödemeyi dengeler. Yüksek risk, nadir ama büyük çarpanları hedefler. Daha fazla segment, maksimum potansiyeli artırır ancak kazanma sıklığını azaltır."},roulette:{how1:"Seçtiğiniz bahislere çip koymak için ızgaraya tıklayın.",how2:"Tıklama başına bahis miktarınızı 1/2 ve 2X düğmeleriyle ayarlayın.",how3:"Çarkı döndürmek için bahsinizi koyun.",how4:"Top 0-36 arasında rastgele bir sayıya düşer (Amerikan için 00 dahil).",how5:"Kazanan bahisler oranlarına göre ödenir; diğer tüm çipler kaybedilir.",overview:"Bahis ızgarasına çip koyun ve çarkı döndürün. Tek sayılara, sayı gruplarına, renklere veya tek/çift'e bahis yapın. Top rastgele bir cebe düşer ve eşleşen bahisler oranlarına göre ödenir.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz her Rulet dönüşünü üretir. Her turdan sonra girdileri ve kanıtı görüntüleyebilir, sonucu genel anahtarımızla doğrulayabilir ve aynı sonucu yeniden üretebilirsiniz.",strategyTip:"Dış bahisler (kırmızı/siyah, tek/çift) 2X ödeme ile yaklaşık %50 kazanma şansı sunar. Tek sayılara iç bahisler 36X'e kadar öder ama nadiren tutturur. Risk ve ödülü dengelemek için çiplerinizi yayın."}},games:{advancedDice:{between:"Arasında",boundsLower:"Alt sınır",boundsUpper:"Üst sınır",inside:"İçinde",outside:"Dışında",rollMode:"Zar Modu",secondBoundsLower:"İkinci alt sınır",secondBoundsUpper:"İkinci üst sınır"},dice:{rollOver:"Üzerine Yuvarla",rollUnder:"Altında Zar At"},keno:{autoPick:"Otomatik Seç",clearTable:"Temizle",kenoGameGrid:"Keno Oyun Izgarası",kenoNumber:"Keno Numarası {value}",selectAtLeastOneTile:"En az bir karo seçin",selectTileToAutobet:"En az bir karo seçin"},limbo:{multiplierError:"{min} ile {max} arasında olmalı",targetMultiplier:"Çarpan",winChanceError:"{min} ile {max} arasında olmalı"},mines:{cashout:"Nakit Çek",gem:"Mücevher",gems:"Mücevherler",mine:"Mayın",mines:"Mayınlar",nextGem:"Sonraki Değerli Taş",selectRandomTile:"Rastgele Kare Seç",selectTileToAutobet:"En az bir karo seçin",tile:"Döşeme",unrevealed:"Açığa çıkarılmamış"},wheel:{segments:"Segmentler"},roulette:{chipValue:"Çip Değeri",totalBetAmount:"Toplam Bahis"}},hotkeys:{clearBets:"Bahisleri Temizle",doubleBet:"Bahis Miktarını İkiye Katla",doubleChipValue:"Çip Değerini İkiye Katla",doubleTotalBet:"Toplam Bahisi İkiye Katla",halveBet:"Bahis Miktarını Yarıya Düşür",halveChipValue:"Çip Değerini Yarıya Düşür",halveTotalBet:"Toplam Bahisi Yarıya Düşür",higherTarget:"Daha Yüksek Hedef",info:"Kısayol tuşları etkinleştirildiğinde, devre dışı bırakılana kadar bu oyun için açık kalacaktır. Bazı oyunlar benzer tuş atamalarını paylaşsa da, her oyun için kısayol tuşlarını doğrulamanız tavsiye edilir.",lowerTarget:"Alt Hedef",makeBet:"Bahis Yap",resetChipValue:"Çip Değerini Sıfırla",toggleWinCondition:"Kazanma Koşulunu Değiştir",undo:"Geri Al",zeroBet:"Sıfır Bahis Miktarı"},modals:{betResult:"Bahis Sonucu",fairnessAndHistory:"Adillik ve Geçmiş",gameArea:"Oyun Alanı",gameControls:"Oyun Kontrolleri",gameInfo:"Oyun Bilgisi"}}});var G4=D1((ht,Yi)=>{Yi.exports={accessibility:{sliderValue:"{value} trên tổng số {max}"},alerts:{autobetStarted:"Đã bắt đầu chế độ Autobet",autobetStopped:"Đã dừng chế độ Autobet",betAmountAboveMaxBet:"Mức cược tối đa là {value}",betAmountBelowMinBet:"Cược tối thiểu là {value}",betLimitReached:"Đã đạt giới hạn cược",errorProcessingBet:"Đã xảy ra lỗi khi xử lý cược của bạn. Vui lòng thử lại.",failedToLoadBetData:"Không tải được dữ liệu cược",gameError:"Đã xảy ra lỗi khi xử lý cược của bạn. Vui lòng thử lại.",insufficientBalance:"Số dư không đủ",maxPayoutExceeded:"Vượt quá mức thanh toán tối đa",notEnoughBalance:"Số dư không đủ"},autobet:{configureAutobet:"Cấu hình Autobet",games:"Trò chơi",games10:"10 Trò chơi",games100:"100 Trò chơi",games25:"25 Trò chơi",games5:"5 Trò chơi",games50:"50 Trò chơi",increase:"Tăng",infinite:"Vô hạn",onLoss:"Khi Thua",onWin:"Khi Thắng",reset:"Đặt lại",startAutobet:"Bắt đầu Autobet",stopAutobet:"Dừng Autobet",stopOnLoss:"Dừng khi thua",stopOnProfit:"Dừng Khi Có Lợi Nhuận"},clipboard:{linkCopied:"Đã sao chép liên kết vào clipboard!"},common:{auto:"Tự động",back:"Quay lại",balance:"Số dư",bet:"Số tiền cược",betAmount:"Số tiền cược",cancel:"Hủy",cashOut:"Rút Tiền",classic:"Cổ điển",confirm:"Xác nhận",copied:"Đã sao chép",currency:"Tiền tệ",deposit:"Nạp tiền",disableHotkeys:"Tắt phím tắt",disableMaxBet:"Tắt cược tối đa",enableHotkeys:"Bật phím tắt",enableMaxBet:"Bật Cược Tối Đa",footerNavigation:"Điều hướng chân trang",gameInfo:"Thông Tin Trò Chơi",gameName:"Tên trò chơi",high:"Cao",history:"Lịch sử",hotkeys:"Phím tắt",id:"ID",instantBet:"Cược Nhanh",loading:"Đang tải...",loadMore:"Tải Thêm",lobby:"Quay lại Sảnh",low:"Thấp",manual:"Hướng dẫn sử dụng",max:"MAX",medium:"Trung bình",multiplier:"Hệ số nhân",payout:"Tiền thưởng",placeBet:"Đặt cược",profit:"Lợi nhuận",profitOnWin:"Lợi nhuận khi thắng",provablyFair:"Công bằng có thể kiểm chứng",risk:"Rủi ro",roundId:"ID Vòng",saveChanges:"Lưu thay đổi",shareReplay:"Chia sẻ phát lại",siteInformation:"Thông tin trò chơi",space:"SPACE",support:"Hỗ trợ",targetMultiplier:"Hệ số nhân",thisFieldIsRequired:"Trường này là bắt buộc",timestamp:"Thời gian",toggleHotkeys:"Chuyển đổi phím tắt",viewFairnessInformation:"Xem thông tin công bằng",viewHistory:"Xem lịch sử",volume:"Âm lượng",winChance:"Cơ hội Thắng"},errors:{dice:{multiplierRange:"Phải nằm trong khoảng từ {min} đến {max}",winChanceRange:"Phải nằm trong khoảng từ {min} đến {max}"},noWheelData:"Không có dữ liệu vòng quay",requestDropped:"Yêu cầu đã bị hủy"},fairness:{activeClientSeed:"Client Seed đang hoạt động",enterClientSeed:"Nhập Client Seed",enterProof:"Nhập Bằng Chứng",enterPublicKey:"Nhập Khóa Công Khai",enterRandomness:"Nhập Ngẫu nhiên",enterRequest:"Nhập Yêu Cầu",info:{p1:"Kết quả của mỗi vòng đến từ tính ngẫu nhiên có thể xác minh được, không phải từ logic máy chủ ẩn. Chúng tôi tạo ra một seed xác định dựa trên các giá trị độc nhất cho vòng chơi của bạn—gameId, tenantId, tenantUserId, một nonce tăng dần (mỗi vòng hoàn thành một lần), cùng với clientSeed của bạn. Điều này đảm bảo mỗi vòng đều độc nhất và có thể tái tạo: cùng đầu vào → cùng chuỗi ngẫu nhiên → cùng kết quả.",p2:"Hạt giống đó được chạy qua một Hàm Ngẫu nhiên Có thể Xác minh Đường cong Elliptic (ECVRF) theo bản dự thảo tiêu chuẩn IETF draft-irtf-cfrg-vrf-15. Máy chủ của chúng tôi sử dụng khóa riêng của mình để tạo ra một giá trị ngẫu nhiên và một bằng chứng mật mã (proofString). Bất kỳ ai có khóa công khai của chúng tôi đều có thể tự xác minh bằng chứng đó cho các đầu vào đã cho—xác nhận rằng tính ngẫu nhiên xuất phát từ hạt giống và không bị can thiệp. SDK là TypeScript, trong khi phần lõi mã hóa sử dụng thư viện fastcrypto Rust thông qua NAPI-RS để đảm bảo hiệu suất và an toàn.",p3:"Khi đã được xác minh, đầu ra VRF sẽ cấp seed cho một bộ tạo byte ngẫu nhiên xác định (hashSequence). Các trò chơi chuyển đổi những byte này thành kết quả sử dụng logic xác định, không thiên vị. Vì quy trình là xác định và nonce tăng lên sau mỗi vòng hoàn thành, bạn sẽ có cả kiểm tra lại có thể phát lại (tái tạo chính xác cùng một vòng) và sự ngẫu nhiên mới, không lặp lại mỗi lần.",p4:"Sau một vòng, bạn có các dữ liệu đầu vào (bao gồm clientSeed của bạn và nonce của vòng đó), đầu ra VRF, proofString và khóa công khai của chúng tôi. Sử dụng bất kỳ trình xác minh ECVRF nào hoặc thư viện của chúng tôi để: (1) xác minh proof dựa trên các dữ liệu đầu vào và khóa công khai, và (2) tạo lại cùng một hashSequence và kết quả. Khóa riêng của chúng tôi không bao giờ rời khỏi máy chủ an toàn; khóa công khai an toàn để sử dụng phía khách hàng cho các kiểm tra độc lập.",step1Desc:"Chúng tôi kết hợp gameId, tenantId, tenantUserId, một nonce cho mỗi vòng và clientSeed của bạn. Các đầu vào giống nhau luôn tạo ra cùng một chuỗi ngẫu nhiên và kết quả.",step1Title:"Hạt giống xác định",step2Title:"Tạo Ngẫu nhiên",step3Desc:"Bất kỳ ai cũng có thể xác minh proofString cho các đầu vào đã cho bằng khóa công khai của chúng tôi. Điều này xác nhận rằng tính ngẫu nhiên phù hợp với seed và không bị can thiệp.",step3Title:"Xác minh Bằng chứng",step4Title:"Rút ra Kết quả",step5Title:"Sinh sản"},invalidGame:"Loại trò chơi không hợp lệ được cung cấp.",learnMore:"Tìm hiểu thêm",newClientSeed:"Client Seed Mới",noBettingHistory:"Không có lịch sử cược",outcomeCalculationInfo:"Trò chơi này sử dụng một thuật toán công bằng có thể kiểm chứng, đảm bảo kết quả công bằng và minh bạch.",outcomeNotVerified:"Kết quả của trò chơi này không thể được xác minh. Vui lòng kiểm tra lại bạn đã nhập đúng thông tin và thử lại.",outcomeVerified:"Kết quả của vòng này đã được xác minh bằng khóa công khai của chúng tôi và đảm bảo công bằng minh bạch.",proof:"Bằng chứng",publicKey:"Khóa công khai đang hoạt động",randomness:"Tính ngẫu nhiên",request:"Yêu cầu",saveClientSeed:"Lưu Client Seed",verifyOutcome:"Xác minh Kết quả"},gameInfo:{advancedDice:{how1:"Chọn chế độ tung: Bên trong, Bên ngoài hoặc Giữa.",how2:"Kéo thanh trượt để xác định vùng chiến thắng của bạn.",how3:"Đặt số tiền cược và đặt cược.",how4:"Một số ngẫu nhiên từ 0 đến 100 được tạo ra.",how5:"Thắng nếu kết quả rơi vào vùng đã chọn của bạn.",overview:"Advanced Dice cho phép bạn đặt các vùng chiến thắng tùy chỉnh. Chọn Bên trong để thắng khi kết quả nằm trong phạm vi của bạn, Bên ngoài để thắng khi nằm ngoài phạm vi, hoặc Giữa để chia thành hai vùng chiến thắng.",provablyFair:"Hệ thống ngẫu nhiên có thể xác minh của chúng tôi tạo ra mọi kết quả Advanced Dice. Sau mỗi vòng, bạn có thể xem đầu vào và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo cùng một kết quả.",strategyTip:"Các vùng rộng hơn mang lại chiến thắng thường xuyên hơn nhưng hệ số nhân nhỏ hơn. Các vùng hẹp rủi ro hơn nhưng trả nhiều hơn. Chế độ Giữa cho phép bạn nhắm mục tiêu hai phạm vi cho các chiến lược linh hoạt."},diamonds:{how1:"Đặt số tiền cược của bạn và tiến hành đặt cược.",how2:"Năm viên kim cương được tiết lộ từ một bộ loại đá quý cố định.",how3:"Kết quả của bạn được đánh giá giống như một ván bài poker: đôi, hai đôi, ba lá giống nhau, cù lũ, bốn lá giống nhau và năm lá giống nhau.",how4:"Mỗi loại bài đều có hệ số nhân riêng; các tay bài có giá trị cao hơn sẽ nhận được hệ số nhân lớn hơn, trong khi không có tay bài nào thì trả về 0X.",how5:"Tiền thưởng của bạn là số tiền cược của bạn nhân với hệ số được hiển thị cho bộ bài kết quả.",overview:"Diamonds là một trò chơi ghép năm cuộn. Mỗi vòng sẽ tiết lộ năm viên kim cương từ một bộ các loại đá quý khác nhau. Mục tiêu của bạn là tạo ra các tổ hợp kiểu poker - đôi, bộ ba, cù lũ và các tổ hợp khác.",provablyFair:"Hệ thống tạo số ngẫu nhiên có thể kiểm chứng của chúng tôi sẽ chọn kết quả từng viên kim cương. Sau mỗi vòng, bạn có thể xem các giá trị ngẫu nhiên cơ bản và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo lại ván chơi giống hệt.",strategyTip:"Diamonds là một trò chơi có độ biến động cao với tỷ lệ cược cố định, nơi bạn săn lùng những tay bài lớn theo phong cách poker. Đòn bẩy chính của bạn là mức độ mạo hiểm mà bạn muốn. Hãy sử dụng những cược nhỏ, ổn định nếu bạn muốn vượt qua những chuỗi thua, hoặc thỉnh thoảng tăng kích thước cược khi bạn đang theo đuổi những tay bài cao cấp."},dice:{how1:"Chọn tung dưới hoặc tung trên.",how2:"Đặt số mục tiêu của bạn.",how3:"Đặt số tiền cược của bạn và tiến hành đặt cược.",how4:"Chúng tôi tạo ra một kết quả ngẫu nhiên (hiển thị trên thang điểm 0–99,99 trong trò chơi).",how5:"Bạn thắng nếu kết quả nằm trong phạm vi bạn đã chọn.",how6:"Tiền thưởng của bạn là tiền cược nhân với hệ số được hiển thị, hệ số này sẽ cập nhật khi bạn di chuyển thanh trượt.",overview:"Đặt một số mục tiêu và chọn xem kết quả quay sẽ thấp hơn hay cao hơn số đó. Di chuyển thanh trượt sẽ thay đổi cơ hội thắng và hệ số nhân của bạn—cơ hội thắng cao hơn thì hệ số nhân sẽ thấp hơn, còn cơ hội thắng thấp hơn thì hệ số nhân sẽ cao hơn. Mỗi vòng là một lần quay độc lập trên thang đo của trò chơi.",provablyFair:"Hệ thống tạo số ngẫu nhiên có thể kiểm chứng của chúng tôi tạo ra mỗi lần tung Dice. Sau mỗi vòng, bạn có thể xem các đầu vào và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo cùng một kết quả.",strategyTip:"Chọn mức biến động của bạn. Cơ hội thắng thấp hơn mang lại hệ số nhân lớn hơn nhưng trúng thưởng hiếm hơn. Cơ hội thắng cao hơn mang lại hệ số nhân nhỏ hơn nhưng chiến thắng xảy ra thường xuyên hơn. Đặt cược phù hợp với số vốn của bạn để biến động ổn định hơn."},keno:{how1:"Chọn 1–10 ô trên bảng 1–40.",how2:"Đặt số tiền cược của bạn và tiến hành đặt cược.",how3:"Chúng tôi rút 10 số trúng thưởng; các số bạn trùng khớp sẽ được làm nổi bật.",how4:"Tiền thưởng phụ thuộc vào số ô bạn đã chọn và số lần trúng bạn đạt được—hãy kiểm tra bảng trả thưởng.",how5:"Bạn không bao giờ có thể trúng nhiều số hơn số bạn đã chọn, và số lựa chọn tối đa là 10.",overview:"Chọn những con số may mắn của bạn và cố gắng trùng với kết quả rút thăm. Bạn có thể chọn từ 1 đến 10 số trong khoảng từ 1 đến 40, sau đó chúng tôi sẽ rút 10 số. Càng nhiều số bạn chọn trùng với kết quả, tiền thưởng của bạn càng cao.",provablyFair:"Hệ thống tạo số ngẫu nhiên có thể xác minh của chúng tôi tạo ra mỗi lần quay Keno. Sau mỗi vòng, bạn có thể xem các đầu vào và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo cùng một kết quả.",strategyTip:"Chọn mức biến động của bạn. Chọn ít vị trí hơn nghĩa là chiến thắng sẽ hiếm hơn nhưng hệ số nhân sẽ lớn hơn nhiều. Nhiều vị trí hơn mang lại các lần trúng thưởng thường xuyên hơn nhưng lợi nhuận trung bình mỗi lần trúng sẽ nhỏ hơn. Một phạm vi trung bình sẽ cân bằng giữa tỷ lệ trúng và mức trả thưởng. Điều chỉnh kích thước cược của bạn để phù hợp với sở thích rủi ro và số dư vốn của bạn."},limbo:{how1:"Đặt hệ số mục tiêu của bạn.",how2:"Đặt số tiền cược của bạn và tiến hành đặt cược.",how3:"Chúng tôi tạo ra một hệ số kết quả ngẫu nhiên.",how4:"Bạn thắng nếu kết quả lớn hơn hoặc bằng mục tiêu của bạn.",how5:"Tiền thưởng của bạn là tiền cược x hệ số mục tiêu của bạn; nếu không, bạn sẽ mất tiền cược.",overview:"Trong Limbo, bạn đặt mức trả thưởng mong muốn, và trò chơi sẽ rút ra một hệ số kết quả ngẫu nhiên duy nhất. Nếu kết quả đạt ít nhất mục tiêu của bạn, bạn sẽ thắng. Nếu thấp hơn, bạn sẽ thua. Cơ hội thắng càng cao thì hệ số càng thấp; cơ hội thắng càng thấp thì hệ số càng cao.",provablyFair:"Hệ thống tạo số ngẫu nhiên có thể kiểm chứng của chúng tôi tạo ra mọi kết quả Limbo. Sau mỗi vòng chơi, bạn có thể xem các đầu vào và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo lại cùng một kết quả.",strategyTip:"Mục tiêu thấp thắng thường xuyên hơn nhưng trả thưởng ít hơn, trong khi mục tiêu cao hiếm khi trúng nhưng trả thưởng nhiều hơn. Hãy cân nhắc đặt một mục tiêu cố định cho mỗi phiên hoặc thỉnh thoảng thử vận may với các mục tiêu cao, và đặt cược với mức cược nhất quán để kiểm soát biến động."},limitContent:"Hệ số nhân tối đa có thể đạt được cho trò chơi này là {multiplier}X. Số tiền thưởng tối đa có thể nhận được là {payout}",limitTitle:"Giới hạn",mines:{how1:"Chọn số lượng mìn cho vòng này.",how2:"Đặt số tiền cược của bạn và tiến hành đặt cược.",how3:"Nhấp vào các ô để lật chúng: một ô an toàn sẽ tăng hệ số nhân của bạn; một ô chứa mìn sẽ kết thúc vòng chơi.",how4:"Bạn có thể rút tiền bất cứ lúc nào để khóa hệ số hiện tại của mình.",how5:"Tiền thưởng của bạn là số tiền cược nhân với hệ số hiện tại khi bạn rút tiền.",how6:"Vòng chơi kết thúc khi bạn rút tiền hoặc khi một quả mìn được lộ ra.",overview:"Mines là trò chơi về việc chọn những ô an toàn và quyết định khi nào rút tiền. Trước khi vòng chơi bắt đầu, hãy chọn số lượng mìn sẽ được giấu trên bàn chơi. Mỗi ô an toàn bạn lật ra sẽ tăng hệ số nhân của bạn. Nếu chạm phải mìn, vòng chơi kết thúc và bạn không nhận được tiền thưởng.",provablyFair:"Hệ thống tạo số ngẫu nhiên có thể kiểm chứng của chúng tôi tạo ra bố cục mìn ẩn cho mỗi bàn chơi. Sau mỗi vòng, bạn có thể xem các tham số đầu vào và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo lại kết quả giống hệt.",strategyTip:"Chọn mức biến động của bạn. Ít mìn hơn đồng nghĩa với việc lật mở an toàn hơn và hệ số nhân nhỏ hơn cho mỗi bước. Nhiều mìn hơn dẫn đến lật mở rủi ro hơn với hệ số nhân lớn hơn. Đặt mục tiêu hoặc sử dụng cắt lỗ để kiểm soát biến động. Giữ kích thước cược ổn định và rút tiền một cách kỷ luật giúp kiểm soát sự biến động."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Tỷ lệ hoàn trả cho người chơi (RTP) của trò chơi này là {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Chiến lược",tutorial:"Hướng dẫn",wheel:{how1:"Chọn mức độ rủi ro và số lượng phân đoạn của bạn.",how2:"Đặt số tiền cược của bạn và tiến hành đặt cược.",how3:"Bánh xe quay và dừng lại ở một ô.",how4:"Tiền thưởng của bạn là số tiền cược × với hệ số được hiển thị trên phân đoạn mà bánh xe dừng lại.",how5:"Mỗi phân đoạn có một hệ số nhân khác nhau dựa trên mức độ rủi ro và số lượng phân đoạn bạn đã chọn.",overview:"Quay bánh xe và xem nó dừng ở đâu. Chọn mức rủi ro và số lượng phân đoạn trước mỗi lần quay - rủi ro thấp mang lại chiến thắng thường xuyên hơn với hệ số nhân nhỏ hơn; rủi ro cao mang lại chiến thắng hiếm hơn với hệ số nhân lớn hơn.",provablyFair:"Hệ thống tạo số ngẫu nhiên có thể xác minh của chúng tôi tạo ra mọi kết quả của Wheel. Sau mỗi vòng chơi, bạn có thể xem các đầu vào và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo lại cùng một kết quả.",strategyTip:"Rủi ro thấp mang lại chiến thắng ổn định, nhỏ hơn. Rủi ro trung bình cân bằng giữa tần suất và tiền thưởng. Rủi ro cao nhắm đến các hệ số hiếm nhưng lớn. Thêm nhiều phân đoạn sẽ tăng tiềm năng tối đa nhưng giảm tần suất chiến thắng."},roulette:{how1:"Nhấp vào lưới để đặt chip lên các cược đã chọn.",how2:"Điều chỉnh số tiền cược mỗi lần nhấp bằng nút 1/2 và 2X.",how3:"Đặt cược để quay bánh xe.",how4:"Bóng rơi vào số ngẫu nhiên từ 0–36 (hoặc 00 cho kiểu Mỹ).",how5:"Cược thắng được trả theo tỷ lệ cược; tất cả chip khác bị mất.",overview:"Đặt chip lên lưới cược và quay bánh xe. Cược vào số đơn, nhóm số, màu sắc hoặc chẵn/lẻ. Bóng rơi vào ô ngẫu nhiên, và các cược trúng được trả theo tỷ lệ cược.",provablyFair:"Hệ thống ngẫu nhiên có thể xác minh của chúng tôi tạo ra mọi vòng quay Roulette. Sau mỗi vòng, bạn có thể xem đầu vào và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo cùng kết quả.",strategyTip:"Cược ngoài (đỏ/đen, chẵn/lẻ) có gần 50% cơ hội thắng với tỷ lệ trả 2X. Cược trong vào số đơn trả đến 36X nhưng hiếm khi trúng. Phân bổ chip để cân bằng rủi ro và phần thưởng."}},games:{advancedDice:{between:"Giữa",boundsLower:"Giới hạn dưới",boundsUpper:"Giới hạn trên",inside:"Bên trong",outside:"Bên ngoài",rollMode:"Chế độ quay",secondBoundsLower:"Giới hạn dưới thứ hai",secondBoundsUpper:"Giới hạn trên thứ hai"},dice:{rollOver:"Quay Lớn Hơn",rollUnder:"Quay Dưới"},keno:{autoPick:"Tự động chọn",clearTable:"Xóa",kenoGameGrid:"Lưới Trò Chơi Keno",kenoNumber:"Số Keno {value}",selectAtLeastOneTile:"Chọn ít nhất một ô",selectTileToAutobet:"Chọn ít nhất một ô"},limbo:{multiplierError:"Phải nằm trong khoảng từ {min} đến {max}",targetMultiplier:"Hệ số nhân",winChanceError:"Phải nằm trong khoảng từ {min} đến {max}"},mines:{cashout:"Rút Tiền",gem:"Đá quý",gems:"Ngọc",mine:"Mỏ",mines:"Mìn",nextGem:"Viên ngọc tiếp theo",selectRandomTile:"Chọn Ô Ngẫu Nhiên",selectTileToAutobet:"Chọn ít nhất một ô",tile:"Ô tile",unrevealed:"Chưa tiết lộ"},wheel:{segments:"Phân đoạn"},roulette:{chipValue:"Giá Trị Chip",totalBetAmount:"Tổng Tiền Cược"}},hotkeys:{clearBets:"Xóa Cược",doubleBet:"Gấp đôi số tiền cược",doubleChipValue:"Gấp Đôi Giá Trị Chip",doubleTotalBet:"Gấp Đôi Tổng Cược",halveBet:"Giảm một nửa số tiền cược",halveChipValue:"Giảm Nửa Giá Trị Chip",halveTotalBet:"Giảm Nửa Tổng Cược",higherTarget:"Mục tiêu cao hơn",info:"Khi phím tắt được bật, chúng sẽ duy trì hoạt động cho trò chơi này cho đến khi bị tắt. Mặc dù một số trò chơi có thể dùng chung phím tắt tương tự, nhưng luôn được khuyến khích xác nhận lại phím tắt cho từng trò chơi.",lowerTarget:"Mục tiêu thấp hơn",makeBet:"Đặt cược",resetChipValue:"Đặt Lại Giá Trị Chip",toggleWinCondition:"Chuyển đổi điều kiện thắng",undo:"Hoàn Tác",zeroBet:"Số tiền cược bằng không"},modals:{betResult:"Kết quả cược",fairnessAndHistory:"Công bằng và Lịch sử",gameArea:"Khu vực trò chơi",gameControls:"Điều khiển trò chơi",gameInfo:"Thông Tin Trò Chơi"}}});var U4=D1((st,Xi)=>{Xi.exports={accessibility:{sliderValue:"{value} / {max}"},alerts:{autobetStarted:"已启动自动投注模式",autobetStopped:"已停止自动投注模式",betAmountAboveMaxBet:"最高投注额为{value}",betAmountBelowMinBet:"最低下注为{value}",betLimitReached:"已达到投注限额",errorProcessingBet:"处理您的投注时出现错误。请重试。",failedToLoadBetData:"加载投注数据失败",gameError:"处理您的投注时出现错误。请重试。",insufficientBalance:"余额不足",maxPayoutExceeded:"超过最大赔付",notEnoughBalance:"余额不足"},autobet:{configureAutobet:"配置 Autobet",games:"游戏",games10:"10款游戏",games100:"100款游戏",games25:"25款游戏",games5:"5款游戏",games50:"50款游戏",increase:"增加",infinite:"无限",onLoss:"亏损时",onWin:"获胜时",reset:"重置",startAutobet:"开始自动投注",stopAutobet:"停止自动投注",stopOnLoss:"止损",stopOnProfit:"止盈"},clipboard:{linkCopied:"链接已复制到剪贴板!"},common:{auto:"自动",back:"返回",balance:"余额",bet:"投注金额",betAmount:"投注金额",cancel:"取消",cashOut:"提现",classic:"经典",confirm:"确认",copied:"已复制",currency:"货币",deposit:"存款",disableHotkeys:"禁用快捷键",disableMaxBet:"禁用最高投注",enableHotkeys:"启用快捷键",enableMaxBet:"启用最大投注",footerNavigation:"页脚导航",gameInfo:"游戏信息",gameName:"游戏名称",high:"高",history:"历史",hotkeys:"快捷键",id:"ID",instantBet:"即时投注",loading:"加载中…",loadMore:"加载更多",lobby:"返回大厅",low:"低",manual:"手册",max:"最大",medium:"中等",multiplier:"倍数",payout:"派彩",placeBet:"下注",profit:"利润",profitOnWin:"获胜利润",provablyFair:"可验证公平",risk:"风险",roundId:"回合ID",saveChanges:"保存更改",shareReplay:"分享回放",siteInformation:"游戏信息",space:"SPACE",support:"支持",targetMultiplier:"倍数",thisFieldIsRequired:"此字段为必填项",timestamp:"时间",toggleHotkeys:"切换快捷键",viewFairnessInformation:"查看公平性信息",viewHistory:"查看历史",volume:"音量",winChance:"获胜概率"},errors:{dice:{multiplierRange:"必须在{min}和{max}之间",winChanceRange:"必须在{min}和{max}之间"},noWheelData:"没有可用的轮盘数据",requestDropped:"请求已取消"},fairness:{activeClientSeed:"活跃客户端种子",enterClientSeed:"输入客户端种子",enterProof:"输入证明",enterPublicKey:"输入公钥",enterRandomness:"输入随机性",enterRequest:"输入请求",info:{p1:"每一局的结果都来源于可验证的随机性,而不是隐藏的服务器逻辑。我们通过使用您本局独有的数值——gameId、tenantId、tenantUserId、递增的nonce(每完成一局增加一次),以及您的clientSeed,来构建一个确定性的种子。这确保了每一局都是唯一且可复现的:相同的输入 → 相同的随机流 → 相同的结果。",p2:"该种子根据IETF规范 draft-irtf-cfrg-vrf-15 通过椭圆曲线可验证随机函数(ECVRF)运行。我们的服务器使用其私钥生成一个随机值和一个加密证明(proofString)。任何拥有我们公钥的人都可以独立验证该证明对于给定输入的有效性——从而确认随机性确实来源于该种子且未被篡改。SDK为TypeScript,而核心加密部分通过NAPI-RS使用fastcrypto Rust库,以提升性能和安全性。",p3:"一旦验证通过,VRF 输出将为确定性随机字节生成器(hashSequence)提供种子。游戏使用确定性且无偏的逻辑将这些字节转换为结果。由于该过程是确定性的,并且每完成一轮 nonce 都会递增,因此你既可以获得可重现的审计(精确重现同一轮),又可以每次获得全新且不重复的随机性。",p4:"在一局结束后,你拥有输入值(包括你的clientSeed和本局的nonce)、VRF输出、proofString以及我们的公钥。使用任何ECVRF验证器或我们的库来:(1)根据输入值和公钥验证proof;(2)重新生成相同的hashSequence和结果。我们的私钥始终保存在安全服务器上,公钥可以安全地在客户端用于独立校验。",step1Desc:"我们将 gameId、tenantId、tenantUserId、每轮的 nonce 和你的 clientSeed 组合在一起。相同的输入总是会产生相同的随机流和结果。",step1Title:"确定性种子",step2Title:"生成随机数",step3Desc:"任何人都可以使用我们的公钥验证给定输入的proofString。这可以确认随机性与种子相符且未被篡改。",step3Title:"验证证明",step4Title:"推导结果",step5Title:"复制"},invalidGame:"提供了无效的游戏类型。",learnMore:"了解更多",newClientSeed:"新客户端种子",noBettingHistory:"无投注记录",outcomeCalculationInfo:"该游戏采用可验证公平算法,确保结果公平透明。",outcomeNotVerified:"无法验证此游戏的结果。请再次确认您输入的信息是否正确,然后重试。",outcomeVerified:"本轮结果已通过我们的公钥验证,结果公正可证。",proof:"证明",publicKey:"活跃公钥",randomness:"随机性",request:"请求",saveClientSeed:"保存客户端种子",verifyOutcome:"验证结果"},gameInfo:{advancedDice:{how1:"选择你的投掷模式:内部、外部或介于两者之间。",how2:"拖动滑块来定义你的获胜区域。",how3:"设置你的投注金额并下注。",how4:"生成一个0到100之间的随机数。",how5:"如果结果落在你选择的区域内则获胜。",overview:"高级骰子让你设置自定义获胜区域。选择内部在结果落入你的范围内时获胜,外部在结果超出你的范围时获胜,或选择介于两者之间分成两个获胜区域。",provablyFair:"我们可验证的随机性系统生成每个高级骰子结果。每轮结束后,你可以查看输入和证明,用我们的公钥验证结果,并重现相同的结果。",strategyTip:"较宽的区域提供更频繁的获胜但乘数较小。较窄的区域风险更高但支付更多。介于两者之间模式让你可以针对两个范围制定灵活的策略。"},diamonds:{how1:"设置您的投注金额并下注。",how2:"从固定的宝石类型中揭示出五颗Diamonds。",how3:"您的结果将按照扑克手牌进行评估:对子、两对、三条、葫芦、四条和五条。",how4:"每种牌型都有其对应的倍数;高价值牌型奖励更高的倍数,而没有成型牌则支付0X。",how5:"您的奖金是您的投注额乘以所示倍数所得出的结果。",overview:"Diamonds 是一款五转轴连线游戏。每一轮会从不同类型的宝石中揭示五颗钻石。你的目标是获得类似扑克的组合——对子、三条、葫芦等。",provablyFair:"我们的可验证随机系统选择每个钻石的结果。每一轮结束后,您可以查看底层的随机值和证明,使用我们的公钥验证结果,并复现相同的牌局。",strategyTip:"Diamonds是一款高波动性、固定赔率的游戏,你将在其中追逐高额的扑克式牌型。你的主要操控方式是决定你的激进程度。如果你想挺过低迷期,可以使用较小且稳定的投注;如果你在追逐高价值牌型时,可以偶尔提高你的投注额度。"},dice:{how1:"选择掷骰低于还是高于。",how2:"设置你的目标数字。",how3:"设置您的投注金额并下注。",how4:"我们生成一个随机结果(在游戏中以0–99.99的刻度显示)。",how5:"如果结果在您选择的范围内,您就获胜。",how6:"您的奖金是投注额乘以显示的倍数,倍数会随着您移动滑块而更新。",overview:"设置一个目标数字,并选择掷骰结果是低于还是高于该数字。移动滑块会改变你的获胜几率和倍数——几率越高,倍数越低,几率越低,倍数越高。每一轮都是游戏刻度上的一次独立掷骰。",provablyFair:"我们的可验证随机系统生成每一次Dice掷骰结果。每轮结束后,您都可以查看输入和证明,使用我们的公钥验证结果,并复现相同的结果。",strategyTip:"选择你的波动性。较低的中奖概率带来更高的倍数,但中奖次数较少。较高的中奖概率带来较低的倍数,但中奖更为频繁。根据你的资金规模调整下注金额,以获得更平稳的波动。"},keno:{how1:"在1–40的棋盘上选择1–10个格子。",how2:"设置您的投注金额并下注。",how3:"我们抽取了10个中奖号码;您的匹配号码已被高亮显示。",how4:"奖金取决于你选择了多少格子以及命中了多少次——请查看赔率表。",how5:"你选择的数字数量不会超过你所选的数量,最多可以选择10个。",overview:"选取你的幸运数字并尝试匹配开奖结果。你可以从1到40中选择1到10个数字,然后我们会抽取10个数字。你选中的数字越多,奖金就越高。",provablyFair:"我们的可验证随机系统生成每一次Keno开奖。每一轮结束后,您都可以查看输入和证明,使用我们的公钥验证结果,并复现相同的结果。",strategyTip:"选择你的波动性。选择较少的点位意味着中奖更少但倍数更高。选择更多的点位则中奖更频繁但每次的平均回报较低。中间范围则在中奖率和奖金之间取得平衡。根据你的风险偏好和资金状况调整你的投注额度。"},limbo:{how1:"设置您的目标倍数。",how2:"设置您的投注金额并下注。",how3:"我们生成一个随机结果乘数。",how4:"如果结果大于或等于你的目标,你就获胜。",how5:"您的奖金为下注金额乘以您的目标倍数;否则,您将失去您的下注。",overview:"在Limbo中,你设置你想要的赔付,游戏会随机抽取一个结果倍率。如果结果至少达到你的目标,你就赢了。如果低于目标,你就输了。更高的获胜概率会降低倍率,更低的获胜概率会提高倍率。",provablyFair:"我们的可验证随机性系统生成每一个Limbo结果。每一轮结束后,您都可以查看输入和证明,使用我们的公钥验证结果,并复现相同的结果。",strategyTip:"较低的目标更容易获胜但支付较少,而较高的目标很少命中但支付更多。可以考虑每个会话设定一个固定目标,或者偶尔尝试高赔率目标,并且保持投注金额一致以管理波动。"},limitContent:"此游戏可获得的最大倍数为{multiplier}X。可获得的最高奖金为{payout}",limitTitle:"限制",mines:{how1:"选择本轮的地雷数量。",how2:"设置您的投注金额并下注。",how3:"点击方块揭示它们:安全方块会增加你的倍率;地雷会结束本轮。",how4:"您可以随时提现以锁定您当前的倍数。",how5:"当你提现时,你的奖金是投注额乘以当前的倍率。",how6:"当你提现或揭示地雷时,本轮结束。",overview:"Mines是一款关于选择安全方块并决定何时提现的游戏。在回合开始前,选择要在棋盘上隐藏多少个地雷。每揭开一个安全方块,你的倍率就会增加。踩到地雷,回合立即结束且没有奖金。",provablyFair:"我们的可验证随机系统会生成每个棋盘的隐藏地雷布局。每一轮结束后,你都可以查看输入和证明,使用我们的公钥验证结果,并复现相同的结果。",strategyTip:"选择你的波动性。更少的Mines意味着更安全的揭示和每步更小的倍数。更多的Mines则带来更高风险的揭示和更大的倍数。设定目标或使用止损来管理波动。保持一致的投注额度和有纪律的提现有助于控制方差。"},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"本游戏的返还率(RTP)为{rtpValue}%。",rtpTitle:"RTP:{rtpValue}%",strategyTitle:"策略",tutorial:"教程",wheel:{how1:"选择你的风险等级和分段数量。",how2:"设置您的投注金额并下注。",how3:"轮盘旋转并停在一个区域。",how4:"您的奖金是投注额乘以指针停留在转盘上的倍数。",how5:"每个区段都有不同的倍数,具体取决于你选择的风险等级和区段数量。",overview:"转动转盘,观察它停在哪里。在每次旋转前选择你的风险等级和分段数——较低的风险会带来更频繁但倍数较小的获胜;较高的风险则带来较少但倍数更大的获胜。",provablyFair:"我们的可验证随机系统生成每一次Wheel的结果。每轮结束后,您都可以查看输入和证明,使用我们的公钥验证结果,并复现相同的结果。",strategyTip:"低风险提供稳定且较小的胜利。中等风险在中奖频率和支付额之间取得平衡。高风险则瞄准罕见但巨大的倍数。更多分段提高最高潜力,但会降低中奖频率。"},roulette:{how1:"点击网格将筹码放置在您选择的投注上。",how2:"使用1/2和2X按钮调整每次点击的投注金额。",how3:"下注以旋转轮盘。",how4:"球落在0-36之间的随机数字上(美式还包括00)。",how5:"中奖的投注按赔率支付;其他所有筹码都会输掉。",overview:"在投注网格上放置筹码并旋转轮盘。投注单个数字、数字组、颜色或奇数/偶数。球落入随机格子,匹配的投注按赔率支付。",provablyFair:"我们的可验证随机系统生成每次轮盘旋转。每轮结束后,您可以查看输入和证明,用我们的公钥验证结果,并重现相同的结果。",strategyTip:"外围投注(红/黑、奇/偶)提供接近50%的中奖率,赔率为2倍。单个数字的内部投注最高可赔36倍,但很少中奖。分散您的筹码以平衡风险和回报。"}},games:{advancedDice:{between:"之间",boundsLower:"下限",boundsUpper:"上限",inside:"内部",outside:"外部",rollMode:"掷骰模式",secondBoundsLower:"第二下限",secondBoundsUpper:"第二上限"},dice:{rollOver:"大于",rollUnder:"掷出点数低于"},keno:{autoPick:"自动选择",clearTable:"清除",kenoGameGrid:"Keno游戏网格",kenoNumber:"Keno号码 {value}",selectAtLeastOneTile:"请选择至少一个方块",selectTileToAutobet:"请选择至少一个方块"},limbo:{multiplierError:"必须在{min}和{max}之间",targetMultiplier:"倍数",winChanceError:"必须在{min}和{max}之间"},mines:{cashout:"提现",gem:"宝石",gems:"宝石",mine:"挖矿",mines:"扫雷",nextGem:"下一个宝石",selectRandomTile:"选择随机方块",selectTileToAutobet:"请选择至少一个方块",tile:"瓷砖",unrevealed:"未揭示"},wheel:{segments:"分段"},roulette:{chipValue:"筹码价值",totalBetAmount:"总投注额"}},hotkeys:{clearBets:"清除投注",doubleBet:"加倍投注金额",doubleChipValue:"双倍筹码价值",doubleTotalBet:"双倍总投注",halveBet:"减半投注金额",halveChipValue:"减半筹码价值",halveTotalBet:"减半总投注",higherTarget:"更高目标",info:"当启用快捷键时,它们将在此游戏中保持开启,直到被禁用。尽管某些游戏可能有相似的按键绑定,仍然建议为每个游戏确认快捷键。",lowerTarget:"下限目标",makeBet:"下注",resetChipValue:"重置筹码价值",toggleWinCondition:"切换获胜条件",undo:"撤销",zeroBet:"零投注金额"},modals:{betResult:"投注结果",fairnessAndHistory:"公平性与历史",gameArea:"游戏区",gameControls:"游戏控制",gameInfo:"游戏信息"}}});var Q7=D1((v0,N0)=>{typeof document!=="undefined"&&typeof navigator!=="undefined"&&function(a,i){typeof v0==="object"&&typeof N0!=="undefined"?N0.exports=i():typeof define==="function"&&define.amd?define(i):(a=typeof globalThis!=="undefined"?globalThis:a||self,a.lottie=i())}(v0,function(){var svgNS="http://www.w3.org/2000/svg",locationHref="",_useWebWorker=!1,initialDefaultFrame=-999999,setWebWorker=function a(i){_useWebWorker=!!i},getWebWorker=function a(){return _useWebWorker},setLocationHref=function a(i){locationHref=i},getLocationHref=function a(){return locationHref};function createTag(a){return document.createElement(a)}function extendPrototype(a,i){var e,r=a.length,l;for(e=0;e<r;e+=1){l=a[e].prototype;for(var n in l)if(Object.prototype.hasOwnProperty.call(l,n))i.prototype[n]=l[n]}}function getDescriptor(a,i){return Object.getOwnPropertyDescriptor(a,i)}function createProxyFunction(a){function i(){}return i.prototype=a,i}var audioControllerFactory=function(){function a(i){this.audios=[],this.audioFactory=i,this._volume=1,this._isMuted=!1}return a.prototype={addAudio:function i(e){this.audios.push(e)},pause:function i(){var e,r=this.audios.length;for(e=0;e<r;e+=1)this.audios[e].pause()},resume:function i(){var e,r=this.audios.length;for(e=0;e<r;e+=1)this.audios[e].resume()},setRate:function i(e){var r,l=this.audios.length;for(r=0;r<l;r+=1)this.audios[r].setRate(e)},createAudio:function i(e){if(this.audioFactory)return this.audioFactory(e);if(window.Howl)return new window.Howl({src:[e]});return{isPlaying:!1,play:function r(){this.isPlaying=!0},seek:function r(){this.isPlaying=!1},playing:function r(){},rate:function r(){},setVolume:function r(){}}},setAudioFactory:function i(e){this.audioFactory=e},setVolume:function i(e){this._volume=e,this._updateVolume()},mute:function i(){this._isMuted=!0,this._updateVolume()},unmute:function i(){this._isMuted=!1,this._updateVolume()},getVolume:function i(){return this._volume},_updateVolume:function i(){var e,r=this.audios.length;for(e=0;e<r;e+=1)this.audios[e].volume(this._volume*(this._isMuted?0:1))}},function(){return new a}}(),createTypedArray=function(){function a(e,r){var l=0,n=[],t;switch(e){case"int16":case"uint8c":t=1;break;default:t=1.1;break}for(l=0;l<r;l+=1)n.push(t);return n}function i(e,r){if(e==="float32")return new Float32Array(r);if(e==="int16")return new Int16Array(r);if(e==="uint8c")return new Uint8ClampedArray(r);return a(e,r)}if(typeof Uint8ClampedArray==="function"&&typeof Float32Array==="function")return i;return a}();function createSizedArray(a){return Array.apply(null,{length:a})}function _typeof$6(a){return _typeof$6=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},_typeof$6(a)}var subframeEnabled=!0,expressionsPlugin=null,expressionsInterfaces=null,idPrefix$1="",isSafari=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),_shouldRoundValues=!1,bmPow=Math.pow,bmSqrt=Math.sqrt,bmFloor=Math.floor,bmMax=Math.max,bmMin=Math.min,BMMath={};(function(){var a=["abs","acos","acosh","asin","asinh","atan","atanh","atan2","ceil","cbrt","expm1","clz32","cos","cosh","exp","floor","fround","hypot","imul","log","log1p","log2","log10","max","min","pow","random","round","sign","sin","sinh","sqrt","tan","tanh","trunc","E","LN10","LN2","LOG10E","LOG2E","PI","SQRT1_2","SQRT2"],i,e=a.length;for(i=0;i<e;i+=1)BMMath[a[i]]=Math[a[i]]})();function ProjectInterface$1(){return{}}BMMath.random=Math.random,BMMath.abs=function(a){var i=_typeof$6(a);if(i==="object"&&a.length){var e=createSizedArray(a.length),r,l=a.length;for(r=0;r<l;r+=1)e[r]=Math.abs(a[r]);return e}return Math.abs(a)};var defaultCurveSegments=150,degToRads=Math.PI/180,roundCorner=0.5519;function roundValues(a){_shouldRoundValues=!!a}function bmRnd(a){if(_shouldRoundValues)return Math.round(a);return a}function styleDiv(a){a.style.position="absolute",a.style.top=0,a.style.left=0,a.style.display="block",a.style.transformOrigin="0 0",a.style.webkitTransformOrigin="0 0",a.style.backfaceVisibility="visible",a.style.webkitBackfaceVisibility="visible",a.style.transformStyle="preserve-3d",a.style.webkitTransformStyle="preserve-3d",a.style.mozTransformStyle="preserve-3d"}function BMEnterFrameEvent(a,i,e,r){this.type=a,this.currentTime=i,this.totalTime=e,this.direction=r<0?-1:1}function BMCompleteEvent(a,i){this.type=a,this.direction=i<0?-1:1}function BMCompleteLoopEvent(a,i,e,r){this.type=a,this.currentLoop=e,this.totalLoops=i,this.direction=r<0?-1:1}function BMSegmentStartEvent(a,i,e){this.type=a,this.firstFrame=i,this.totalFrames=e}function BMDestroyEvent(a,i){this.type=a,this.target=i}function BMRenderFrameErrorEvent(a,i){this.type="renderFrameError",this.nativeError=a,this.currentTime=i}function BMConfigErrorEvent(a){this.type="configError",this.nativeError=a}function BMAnimationConfigErrorEvent(a,i){this.type=a,this.nativeError=i}var createElementID=function(){var a=0;return function i(){return a+=1,idPrefix$1+"__lottie_element_"+a}}();function HSVtoRGB(a,i,e){var r,l,n,t,h,o,c,u;switch(t=Math.floor(a*6),h=a*6-t,o=e*(1-i),c=e*(1-h*i),u=e*(1-(1-h)*i),t%6){case 0:r=e,l=u,n=o;break;case 1:r=c,l=e,n=o;break;case 2:r=o,l=e,n=u;break;case 3:r=o,l=c,n=e;break;case 4:r=u,l=o,n=e;break;case 5:r=e,l=o,n=c;break;default:break}return[r,l,n]}function RGBtoHSV(a,i,e){var r=Math.max(a,i,e),l=Math.min(a,i,e),n=r-l,t,h=r===0?0:n/r,o=r/255;switch(r){case l:t=0;break;case a:t=i-e+n*(i<e?6:0),t/=6*n;break;case i:t=e-a+n*2,t/=6*n;break;case e:t=a-i+n*4,t/=6*n;break;default:break}return[t,h,o]}function addSaturationToRGB(a,i){var e=RGBtoHSV(a[0]*255,a[1]*255,a[2]*255);if(e[1]+=i,e[1]>1)e[1]=1;else if(e[1]<=0)e[1]=0;return HSVtoRGB(e[0],e[1],e[2])}function addBrightnessToRGB(a,i){var e=RGBtoHSV(a[0]*255,a[1]*255,a[2]*255);if(e[2]+=i,e[2]>1)e[2]=1;else if(e[2]<0)e[2]=0;return HSVtoRGB(e[0],e[1],e[2])}function addHueToRGB(a,i){var e=RGBtoHSV(a[0]*255,a[1]*255,a[2]*255);if(e[0]+=i/360,e[0]>1)e[0]-=1;else if(e[0]<0)e[0]+=1;return HSVtoRGB(e[0],e[1],e[2])}var rgbToHex=function(){var a=[],i,e;for(i=0;i<256;i+=1)e=i.toString(16),a[i]=e.length===1?"0"+e:e;return function(r,l,n){if(r<0)r=0;if(l<0)l=0;if(n<0)n=0;return"#"+a[r]+a[l]+a[n]}}(),setSubframeEnabled=function a(i){subframeEnabled=!!i},getSubframeEnabled=function a(){return subframeEnabled},setExpressionsPlugin=function a(i){expressionsPlugin=i},getExpressionsPlugin=function a(){return expressionsPlugin},setExpressionInterfaces=function a(i){expressionsInterfaces=i},getExpressionInterfaces=function a(){return expressionsInterfaces},setDefaultCurveSegments=function a(i){defaultCurveSegments=i},getDefaultCurveSegments=function a(){return defaultCurveSegments},setIdPrefix=function a(i){idPrefix$1=i},getIdPrefix=function a(){return idPrefix$1};function createNS(a){return document.createElementNS(svgNS,a)}function _typeof$5(a){return _typeof$5=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},_typeof$5(a)}var dataManager=function(){var a=1,i=[],e,r,l={onmessage:function s(){},postMessage:function s(f){e({data:f})}},n={postMessage:function s(f){l.onmessage({data:f})}};function t(s){if(window.Worker&&window.Blob&&getWebWorker()){var f=new Blob(["var _workerSelf = self; self.onmessage = ",s.toString()],{type:"text/javascript"}),k=URL.createObjectURL(f);return new Worker(k)}return e=s,l}function h(){if(!r)r=t(function s(f){function k(){function y(Q,M){var L,F,H=Q.length,$,T,B,a1;for(F=0;F<H;F+=1)if(L=Q[F],"ks"in L&&!L.completed){if(L.completed=!0,L.hasMask){var r1=L.masksProperties;T=r1.length;for($=0;$<T;$+=1)if(r1[$].pt.k.i)x(r1[$].pt.k);else{a1=r1[$].pt.k.length;for(B=0;B<a1;B+=1){if(r1[$].pt.k[B].s)x(r1[$].pt.k[B].s[0]);if(r1[$].pt.k[B].e)x(r1[$].pt.k[B].e[0])}}}if(L.ty===0)L.layers=v(L.refId,M),y(L.layers,M);else if(L.ty===4)p(L.shapes);else if(L.ty===5)N(L)}}function b(Q,M){if(Q){var L=0,F=Q.length;for(L=0;L<F;L+=1)if(Q[L].t===1)Q[L].data.layers=v(Q[L].data.refId,M),y(Q[L].data.layers,M)}}function g(Q,M){var L=0,F=M.length;while(L<F){if(M[L].id===Q)return M[L];L+=1}return null}function v(Q,M){var L=g(Q,M);if(L){if(!L.layers.__used)return L.layers.__used=!0,L.layers;return JSON.parse(JSON.stringify(L.layers))}return null}function p(Q){var M,L=Q.length,F,H;for(M=L-1;M>=0;M-=1)if(Q[M].ty==="sh")if(Q[M].ks.k.i)x(Q[M].ks.k);else{H=Q[M].ks.k.length;for(F=0;F<H;F+=1){if(Q[M].ks.k[F].s)x(Q[M].ks.k[F].s[0]);if(Q[M].ks.k[F].e)x(Q[M].ks.k[F].e[0])}}else if(Q[M].ty==="gr")p(Q[M].it)}function x(Q){var M,L=Q.i.length;for(M=0;M<L;M+=1)Q.i[M][0]+=Q.v[M][0],Q.i[M][1]+=Q.v[M][1],Q.o[M][0]+=Q.v[M][0],Q.o[M][1]+=Q.v[M][1]}function Z(Q,M){var L=M?M.split("."):[100,100,100];if(Q[0]>L[0])return!0;if(L[0]>Q[0])return!1;if(Q[1]>L[1])return!0;if(L[1]>Q[1])return!1;if(Q[2]>L[2])return!0;if(L[2]>Q[2])return!1;return null}var O=function(){var Q=[4,4,14];function M(F){var H=F.t.d;F.t.d={k:[{s:H,t:0}]}}function L(F){var H,$=F.length;for(H=0;H<$;H+=1)if(F[H].ty===5)M(F[H])}return function(F){if(Z(Q,F.v)){if(L(F.layers),F.assets){var H,$=F.assets.length;for(H=0;H<$;H+=1)if(F.assets[H].layers)L(F.assets[H].layers)}}}}(),R=function(){var Q=[4,7,99];return function(M){if(M.chars&&!Z(Q,M.v)){var L,F=M.chars.length;for(L=0;L<F;L+=1){var H=M.chars[L];if(H.data&&H.data.shapes){if(p(H.data.shapes),H.data.ip=0,H.data.op=99999,H.data.st=0,H.data.sr=1,H.data.ks={p:{k:[0,0],a:0},s:{k:[100,100],a:0},a:{k:[0,0],a:0},r:{k:0,a:0},o:{k:100,a:0}},!M.chars[L].t)H.data.shapes.push({ty:"no"}),H.data.shapes[0].it.push({p:{k:[0,0],a:0},s:{k:[100,100],a:0},a:{k:[0,0],a:0},r:{k:0,a:0},o:{k:100,a:0},sk:{k:0,a:0},sa:{k:0,a:0},ty:"tr"})}}}}}(),j=function(){var Q=[5,7,15];function M(F){var H=F.t.p;if(typeof H.a==="number")H.a={a:0,k:H.a};if(typeof H.p==="number")H.p={a:0,k:H.p};if(typeof H.r==="number")H.r={a:0,k:H.r}}function L(F){var H,$=F.length;for(H=0;H<$;H+=1)if(F[H].ty===5)M(F[H])}return function(F){if(Z(Q,F.v)){if(L(F.layers),F.assets){var H,$=F.assets.length;for(H=0;H<$;H+=1)if(F.assets[H].layers)L(F.assets[H].layers)}}}}(),q=function(){var Q=[4,1,9];function M(F){var H,$=F.length,T,B;for(H=0;H<$;H+=1)if(F[H].ty==="gr")M(F[H].it);else if(F[H].ty==="fl"||F[H].ty==="st")if(F[H].c.k&&F[H].c.k[0].i){B=F[H].c.k.length;for(T=0;T<B;T+=1){if(F[H].c.k[T].s)F[H].c.k[T].s[0]/=255,F[H].c.k[T].s[1]/=255,F[H].c.k[T].s[2]/=255,F[H].c.k[T].s[3]/=255;if(F[H].c.k[T].e)F[H].c.k[T].e[0]/=255,F[H].c.k[T].e[1]/=255,F[H].c.k[T].e[2]/=255,F[H].c.k[T].e[3]/=255}}else F[H].c.k[0]/=255,F[H].c.k[1]/=255,F[H].c.k[2]/=255,F[H].c.k[3]/=255}function L(F){var H,$=F.length;for(H=0;H<$;H+=1)if(F[H].ty===4)M(F[H].shapes)}return function(F){if(Z(Q,F.v)){if(L(F.layers),F.assets){var H,$=F.assets.length;for(H=0;H<$;H+=1)if(F.assets[H].layers)L(F.assets[H].layers)}}}}(),J=function(){var Q=[4,4,18];function M(F){var H,$=F.length,T,B;for(H=$-1;H>=0;H-=1)if(F[H].ty==="sh")if(F[H].ks.k.i)F[H].ks.k.c=F[H].closed;else{B=F[H].ks.k.length;for(T=0;T<B;T+=1){if(F[H].ks.k[T].s)F[H].ks.k[T].s[0].c=F[H].closed;if(F[H].ks.k[T].e)F[H].ks.k[T].e[0].c=F[H].closed}}else if(F[H].ty==="gr")M(F[H].it)}function L(F){var H,$,T=F.length,B,a1,r1,u1;for($=0;$<T;$+=1){if(H=F[$],H.hasMask){var m1=H.masksProperties;a1=m1.length;for(B=0;B<a1;B+=1)if(m1[B].pt.k.i)m1[B].pt.k.c=m1[B].cl;else{u1=m1[B].pt.k.length;for(r1=0;r1<u1;r1+=1){if(m1[B].pt.k[r1].s)m1[B].pt.k[r1].s[0].c=m1[B].cl;if(m1[B].pt.k[r1].e)m1[B].pt.k[r1].e[0].c=m1[B].cl}}}if(H.ty===4)M(H.shapes)}}return function(F){if(Z(Q,F.v)){if(L(F.layers),F.assets){var H,$=F.assets.length;for(H=0;H<$;H+=1)if(F.assets[H].layers)L(F.assets[H].layers)}}}}();function C(Q){if(Q.__complete)return;q(Q),O(Q),R(Q),j(Q),J(Q),y(Q.layers,Q.assets),b(Q.chars,Q.assets),Q.__complete=!0}function N(Q){if(Q.t.a.length===0&&!("m"in Q.t.p));}var G={};return G.completeData=C,G.checkColors=q,G.checkChars=R,G.checkPathProperties=j,G.checkShapes=J,G.completeLayers=y,G}if(!n.dataManager)n.dataManager=k();if(!n.assetLoader)n.assetLoader=function(){function y(g){var v=g.getResponseHeader("content-type");if(v&&g.responseType==="json"&&v.indexOf("json")!==-1)return g.response;if(g.response&&_typeof$5(g.response)==="object")return g.response;if(g.response&&typeof g.response==="string")return JSON.parse(g.response);if(g.responseText)return JSON.parse(g.responseText);return null}function b(g,v,p,x){var Z,O=new XMLHttpRequest;try{O.responseType="json"}catch(R){}O.onreadystatechange=function(){if(O.readyState===4)if(O.status===200)Z=y(O),p(Z);else try{Z=y(O),p(Z)}catch(R){if(x)x(R)}};try{O.open(["G","E","T"].join(""),g,!0)}catch(R){O.open(["G","E","T"].join(""),v+"/"+g,!0)}O.send()}return{load:b}}();if(f.data.type==="loadAnimation")n.assetLoader.load(f.data.path,f.data.fullPath,function(y){n.dataManager.completeData(y),n.postMessage({id:f.data.id,payload:y,status:"success"})},function(){n.postMessage({id:f.data.id,status:"error"})});else if(f.data.type==="complete"){var w=f.data.animation;n.dataManager.completeData(w),n.postMessage({id:f.data.id,payload:w,status:"success"})}else if(f.data.type==="loadData")n.assetLoader.load(f.data.path,f.data.fullPath,function(y){n.postMessage({id:f.data.id,payload:y,status:"success"})},function(){n.postMessage({id:f.data.id,status:"error"})})}),r.onmessage=function(s){var f=s.data,k=f.id,w=i[k];if(i[k]=null,f.status==="success")w.onComplete(f.payload);else if(w.onError)w.onError()}}function o(s,f){a+=1;var k="processId_"+a;return i[k]={onComplete:s,onError:f},k}function c(s,f,k){h();var w=o(f,k);r.postMessage({type:"loadAnimation",path:s,fullPath:window.location.origin+window.location.pathname,id:w})}function u(s,f,k){h();var w=o(f,k);r.postMessage({type:"loadData",path:s,fullPath:window.location.origin+window.location.pathname,id:w})}function m(s,f,k){h();var w=o(f,k);r.postMessage({type:"complete",animation:s,id:w})}return{loadAnimation:c,loadData:u,completeAnimation:m}}(),ImagePreloader=function(){var a=function(){var b=createTag("canvas");b.width=1,b.height=1;var g=b.getContext("2d");return g.fillStyle="rgba(0,0,0,0)",g.fillRect(0,0,1,1),b}();function i(){if(this.loadedAssets+=1,this.loadedAssets===this.totalImages&&this.loadedFootagesCount===this.totalFootages){if(this.imagesLoadedCb)this.imagesLoadedCb(null)}}function e(){if(this.loadedFootagesCount+=1,this.loadedAssets===this.totalImages&&this.loadedFootagesCount===this.totalFootages){if(this.imagesLoadedCb)this.imagesLoadedCb(null)}}function r(b,g,v){var p="";if(b.e)p=b.p;else if(g){var x=b.p;if(x.indexOf("images/")!==-1)x=x.split("/")[1];p=g+x}else p=v,p+=b.u?b.u:"",p+=b.p;return p}function l(b){var g=0,v=setInterval(function(){var p=b.getBBox();if(p.width||g>500)this._imageLoaded(),clearInterval(v);g+=1}.bind(this),50)}function n(b){var g=r(b,this.assetsPath,this.path),v=createNS("image");if(isSafari)this.testImageLoaded(v);else v.addEventListener("load",this._imageLoaded,!1);if(v.addEventListener("error",function(){p.img=a,this._imageLoaded()}.bind(this),!1),v.setAttributeNS("http://www.w3.org/1999/xlink","href",g),this._elementHelper.append)this._elementHelper.append(v);else this._elementHelper.appendChild(v);var p={img:v,assetData:b};return p}function t(b){var g=r(b,this.assetsPath,this.path),v=createTag("img");v.crossOrigin="anonymous",v.addEventListener("load",this._imageLoaded,!1),v.addEventListener("error",function(){p.img=a,this._imageLoaded()}.bind(this),!1),v.src=g;var p={img:v,assetData:b};return p}function h(b){var g={assetData:b},v=r(b,this.assetsPath,this.path);return dataManager.loadData(v,function(p){g.img=p,this._footageLoaded()}.bind(this),function(){g.img={},this._footageLoaded()}.bind(this)),g}function o(b,g){this.imagesLoadedCb=g;var v,p=b.length;for(v=0;v<p;v+=1)if(!b[v].layers){if(!b[v].t||b[v].t==="seq")this.totalImages+=1,this.images.push(this._createImageData(b[v]));else if(b[v].t===3)this.totalFootages+=1,this.images.push(this.createFootageData(b[v]))}}function c(b){this.path=b||""}function u(b){this.assetsPath=b||""}function m(b){var g=0,v=this.images.length;while(g<v){if(this.images[g].assetData===b)return this.images[g].img;g+=1}return null}function s(){this.imagesLoadedCb=null,this.images.length=0}function f(){return this.totalImages===this.loadedAssets}function k(){return this.totalFootages===this.loadedFootagesCount}function w(b,g){if(b==="svg")this._elementHelper=g,this._createImageData=this.createImageData.bind(this);else this._createImageData=this.createImgData.bind(this)}function y(){this._imageLoaded=i.bind(this),this._footageLoaded=e.bind(this),this.testImageLoaded=l.bind(this),this.createFootageData=h.bind(this),this.assetsPath="",this.path="",this.totalImages=0,this.totalFootages=0,this.loadedAssets=0,this.loadedFootagesCount=0,this.imagesLoadedCb=null,this.images=[]}return y.prototype={loadAssets:o,setAssetsPath:u,setPath:c,loadedImages:f,loadedFootages:k,destroy:s,getAsset:m,createImgData:t,createImageData:n,imageLoaded:i,footageLoaded:e,setCacheType:w},y}();function BaseEvent(){}BaseEvent.prototype={triggerEvent:function a(i,e){if(this._cbs[i]){var r=this._cbs[i];for(var l=0;l<r.length;l+=1)r[l](e)}},addEventListener:function a(i,e){if(!this._cbs[i])this._cbs[i]=[];return this._cbs[i].push(e),function(){this.removeEventListener(i,e)}.bind(this)},removeEventListener:function a(i,e){if(!e)this._cbs[i]=null;else if(this._cbs[i]){var r=0,l=this._cbs[i].length;while(r<l){if(this._cbs[i][r]===e)this._cbs[i].splice(r,1),r-=1,l-=1;r+=1}if(!this._cbs[i].length)this._cbs[i]=null}}};var markerParser=function(){function a(i){var e=i.split(`\r
1
+ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames:gi}=Object;var ki=Object.prototype.hasOwnProperty;var v1=(a,i,e)=>{e=a!=null?vi(wi(a)):{};let r=i||!a||!a.__esModule?p6(e,"default",{value:a,enumerable:!0}):e;for(let l of gi(a))if(!ki.call(r,l))p6(r,l,{get:()=>a[l],enumerable:!0});return r};var D1=(a,i)=>()=>(i||a((i={exports:{}}).exports,i),i.exports);var d=function(a,i,e,r){var l=arguments.length,n=l<3?i:r===null?r=Object.getOwnPropertyDescriptor(i,e):r,t;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")n=Reflect.decorate(a,i,e,r);else for(var h=a.length-1;h>=0;h--)if(t=a[h])n=(l<3?t(n):l>3?t(i,e,n):t(i,e))||n;return l>3&&n&&Object.defineProperty(i,e,n),n};var L4=D1((Gn,Mi)=>{Mi.exports={accessibility:{sliderValue:"{value} من أصل {max}"},alerts:{autobetStarted:"تم بدء وضع المراهنة التلقائية",autobetStopped:"تم إيقاف وضع Autobet",betAmountAboveMaxBet:"الحد الأقصى للرهان هو {value}",betAmountBelowMinBet:"الحد الأدنى للرهان هو {value}",betLimitReached:"تم الوصول إلى حد الرهان",errorProcessingBet:"حدث خطأ أثناء معالجة رهانك. يرجى المحاولة مرة أخرى.",failedToLoadBetData:"فشل في تحميل بيانات الرهان",gameError:"حدث خطأ أثناء معالجة رهانك. يرجى المحاولة مرة أخرى.",insufficientBalance:"رصيد غير كاف",maxPayoutExceeded:"تم تجاوز الحد الأقصى للدفع",notEnoughBalance:"الرصيد غير كافٍ"},autobet:{configureAutobet:"تكوين Autobet",games:"الألعاب",games10:"10 ألعاب",games100:"100 ألعاب",games25:"25 ألعاب",games5:"٥ ألعاب",games50:"50 ألعاب",increase:"زيادة",infinite:"غير محدود",onLoss:"عند الخسارة",onWin:"عند الفوز",reset:"إعادة تعيين",startAutobet:"بدء التشغيل التلقائي",stopAutobet:"إيقاف التشغيل التلقائي",stopOnLoss:"توقف عند الخسارة",stopOnProfit:"التوقف عند الربح"},clipboard:{linkCopied:"تم نسخ الرابط إلى الحافظة!"},common:{auto:"تلقائي",back:"رجوع",balance:"الرصيد",bet:"مبلغ الرهان",betAmount:"مبلغ الرهان",cancel:"إلغاء",cashOut:"السحب النقدي",classic:"كلاسيك",confirm:"تأكيد",copied:"تم النسخ",currency:"العملة",deposit:"إيداع",disableHotkeys:"تعطيل مفاتيح الاختصار",disableMaxBet:"تعطيل الحد الأقصى للرهان",enableHotkeys:"تفعيل الاختصارات لوحة المفاتيح",enableMaxBet:"تفعيل الحد الأقصى للرهان",footerNavigation:"تذييل التنقل",gameInfo:"معلومات اللعبة",gameName:"اسم اللعبة",high:"مرتفع",history:"السجل",hotkeys:"مفاتيح الاختصار",id:"معرّف",instantBet:"رهان فوري",loading:"جارٍ التحميل...",loadMore:"تحميل المزيد",lobby:"العودة إلى الردهة",low:"منخفض",manual:"دليل",max:"الحد الأقصى",medium:"متوسط",multiplier:"المضاعف",payout:"الدفع",placeBet:"ضع رهان",profit:"الربح",profitOnWin:"الربح عند الفوز",provablyFair:"عادل يمكن إثباته",risk:"مخاطرة",roundId:"معرّف الجولة",saveChanges:"حفظ التغييرات",shareReplay:"مشاركة الإعادة",siteInformation:"معلومات اللعبة",space:"مسافة",support:"الدعم",targetMultiplier:"المضاعف",thisFieldIsRequired:"هذا الحقل مطلوب",timestamp:"الوقت",toggleHotkeys:"تبديل مفاتيح الاختصار",viewFairnessInformation:"عرض معلومات النزاهة",viewHistory:"عرض السجل",volume:"الحجم",winChance:"فرصة الفوز"},errors:{dice:{multiplierRange:"يجب أن يكون بين {min} و {max}",winChanceRange:"يجب أن يكون بين {min} و {max}"},noWheelData:"لا تتوفر بيانات العجلة",requestDropped:"تم إسقاط الطلب"},fairness:{activeClientSeed:"بذرة العميل النشطة",enterClientSeed:"أدخل clientSeed",enterProof:"أدخل الدليل",enterPublicKey:"أدخل المفتاح العام",enterRandomness:"أدخل العشوائية",enterRequest:"أدخل الطلب",info:{p1:"نتيجة كل جولة تأتي من عشوائية قابلة للتحقق، وليست من منطق خادم مخفي. نقوم بإنشاء بذرة حتمية من قيم فريدة لجولتك—gameId، tenantId، tenantUserId، nonce متزايد (واحد لكل جولة مكتملة)، بالإضافة إلى clientSeed الخاص بك. هذا يضمن أن كل جولة فريدة وقابلة لإعادة الإنتاج: نفس المدخلات → نفس سلسلة العشوائية → نفس النتيجة.",p2:"يتم تمرير تلك البذرة عبر دالة عشوائية قابلة للتحقق باستخدام المنحنى البيضاوي (ECVRF) وفقًا لمواصفات IETF المسودة draft-irtf-cfrg-vrf-15. يستخدم خادمنا مفتاحه الخاص لإنتاج قيمة عشوائية ودليل تشفير (proofString). يمكن لأي شخص يمتلك مفتاحنا العام التحقق بشكل مستقل من ذلك الدليل للمدخلات المعطاة—مما يؤكد أن العشوائية جاءت من البذرة ولم يتم التلاعب بها. الـ SDK مكتوب بلغة TypeScript، بينما يستخدم التشفير الأساسي مكتبة fastcrypto Rust عبر NAPI-RS من أجل الأداء والسلامة.",p3:"بمجرد التحقق، يقوم ناتج VRF بتوليد مُولّد عشوائي بايتات محدد (hashSequence). تقوم الألعاب بتحويل هذه البايتات إلى نتائج باستخدام منطق محدد وغير متحيز. وبما أن العملية محددة والـ nonce يتقدم مع كل جولة مكتملة، فإنك تحصل على تدقيقات قابلة لإعادة التشغيل (إعادة إنشاء نفس الجولة بالضبط) وعشوائية جديدة غير متكررة في كل مرة.",p4:"بعد انتهاء جولة، سيكون لديك المدخلات (بما في ذلك clientSeed وnonce الخاص بالجولة)، وVRF output، وproofString، ومفتاحنا العام. استخدم أي أداة تحقق ECVRF أو مكتباتنا من أجل: (1) التحقق من صحة الإثبات مقابل المدخلات والمفتاح العام، و(2) إعادة توليد نفس hashSequence والنتيجة. مفتاحنا الخاص لا يغادر الخوادم الآمنة أبدًا؛ المفتاح العام آمن للاستخدام على جانب العميل لإجراء التحقق المستقل.",step1Desc:"نحن نجمع بين gameId و tenantId و tenantUserId و nonce خاص بكل جولة و clientSeed الخاص بك. نفس المدخلات دائمًا تنتج نفس سلسلة الأرقام العشوائية ونفس النتيجة.",step1Title:"البذرة الحتمية",step2Title:"توليد العشوائية",step3Desc:"يمكن لأي شخص التحقق من proofString للمدخلات المعطاة باستخدام مفتاحنا العام. يؤكد هذا أن العشوائية تطابق البذرة ولم يتم التلاعب بها.",step3Title:"تحقق من الدليل",step4Title:"استنتاج النتائج",step5Title:"التكاثر"},invalidGame:"تم تقديم نوع لعبة غير صالح.",learnMore:"اعرف المزيد",newClientSeed:"بذرة عميل جديدة",noBettingHistory:"لا يوجد سجل للمراهنات",outcomeCalculationInfo:"يستخدم هذا اللعبة خوارزمية عادلة يمكن إثباتها تضمن أن النتيجة عادلة وشفافة.",outcomeNotVerified:"تعذر التحقق من نتيجة هذه اللعبة. يرجى التأكد من إدخال المعلومات الصحيحة والمحاولة مرة أخرى.",outcomeVerified:"تم التحقق من نتيجة هذه الجولة باستخدام مفتاحنا العام وهي عادلة بشكل يمكن إثباته.",proof:"دليل",publicKey:"المفتاح العام النشط",randomness:"العشوائية",request:"طلب",saveClientSeed:"حفظ clientSeed",verifyOutcome:"تحقق من النتيجة"},gameInfo:{advancedDice:{how1:"اختر وضع الرمي: داخل، خارج، أو بين.",how2:"اسحب المنزلقات لتحديد منطقة(مناطق) الفوز.",how3:"حدد مبلغ الرهان وضع رهانك.",how4:"يتم إنشاء رقم عشوائي بين 0 و 100.",how5:"اربح إذا وقعت النتيجة ضمن منطقتك المختارة.",overview:"يتيح لك النرد المتقدم تعيين مناطق فوز مخصصة. اختر داخل للفوز عندما تقع النتيجة ضمن نطاقك، خارج للفوز عندما تقع خارج نطاقك، أو بين للتقسيم إلى منطقتي فوز.",provablyFair:"يولد نظام العشوائية القابل للتحقق كل نتيجة في النرد المتقدم. بعد كل جولة، يمكنك عرض المدخلات والإثبات، والتحقق من النتيجة بمفتاحنا العام، وإعادة إنتاج نفس النتيجة.",strategyTip:"المناطق الأوسع تقدم فوزاً أكثر تكراراً لكن مضاعفات أصغر. المناطق الضيقة تخاطر أكثر لكن تدفع أكثر. وضع بين يتيح لك استهداف نطاقين لاستراتيجيات مرنة."},diamonds:{how1:"حدد مبلغ رهانك وضع رهانك.",how2:"يتم الكشف عن خمسة ماسات من مجموعة ثابتة من أنواع الجواهر.",how3:"يتم تقييم نتيجتك مثل يد البوكر: زوج، زوجان، ثلاثة من نفس النوع، بيت كامل، أربعة من نفس النوع، وخمسة من نفس النوع.",how4:"كل نوع يد له معامل مضاعفة خاص به؛ الأيادي ذات القيمة الأعلى تمنح معاملات مضاعفة أكبر، بينما اليد التي لا تحتوي على تركيبة لا تدفع سوى 0X.",how5:"دفع أرباحك هو رهانك مضروبًا في المضاعف المعروض لليد الناتجة.",overview:"Diamonds هي لعبة مطابقة بخمس بكرات. كل جولة تكشف عن خمسة ألماس من مجموعة من أنواع الأحجار الكريمة المختلفة. هدفك هو الحصول على مجموعات على طريقة البوكر - أزواج، ثلاثية من نفس النوع، بيت كامل، وهكذا.",provablyFair:"يختار نظام العشوائية القابلة للتحقق لدينا نتيجة كل ماسة. بعد كل جولة، يمكنك عرض القيم العشوائية الأساسية والدليل، والتحقق من النتيجة باستخدام مفتاحنا العام، وإعادة إنتاج نفس اليد.",strategyTip:"Diamonds هي لعبة ذات تقلبات عالية واحتمالات ثابتة حيث تبحث عن مجموعات قوية من أوراق اللعب بأسلوب البوكر. العامل الرئيسي لديك هو مدى رغبتك في المخاطرة. استخدم رهانات صغيرة وثابتة إذا كنت ترغب في تجاوز الفترات الجافة، أو قم أحيانًا بزيادة حجم رهانك عندما تسعى للحصول على مجموعات ممتازة."},dice:{how1:"اختر رمي أقل أو رمي أكثر.",how2:"حدد رقمك المستهدف.",how3:"حدد مبلغ رهانك وضع رهانك.",how4:"نحن نولد نتيجة عشوائية واحدة (تُعرض على مقياس من 0 إلى 99.99 داخل اللعبة).",how5:"تفوز إذا كانت النتيجة ضمن النطاق الذي اخترته.",how6:"دفعك هو الرهان مضروبًا في المضاعف المعروض، والذي يتغير أثناء تحريكك للمنزلق.",overview:"حدد رقم الهدف واختر ما إذا كانت النتيجة ستكون أقل أو أعلى منه. يؤدي تحريك شريط التمرير إلى تغيير فرصة الفوز والمضاعف—فرصة أعلى تقلل من المضاعف، وفرصة أقل تزيده. كل جولة هي رمية مستقلة واحدة على مقياس اللعبة.",provablyFair:"يقوم نظام العشوائية القابل للتحقق لدينا بتوليد كل رمية Dice. بعد كل جولة، يمكنك عرض المدخلات والدليل، والتحقق من النتيجة باستخدام مفتاحنا العام، وإعادة إنتاج نفس النتيجة.",strategyTip:"اختر تقلبك. فرصة الفوز الأقل تعطي مضاعفات أكبر لكن أرباحاً أقل حدوثاً. فرصة الفوز الأعلى تعطي مضاعفات أصغر لكن أرباحاً أكثر تكراراً. حدد حجم رهاناتك بما يتناسب مع رصيدك لتحقيق تقلبات أكثر استقراراً."},keno:{how1:"اختر من 1 إلى 10 مربعات على لوحة من 1 إلى 40.",how2:"حدد مبلغ رهانك وضع رهانك.",how3:"نقوم بسحب 10 أرقام فائزة؛ يتم تمييز الأرقام التي تطابق أرقامك.",how4:"تعتمد المدفوعات على عدد البلاطات التي اخترتها وعدد النجاحات التي حققتها—تحقق من جدول المدفوعات.",how5:"لا يمكنك أبدًا تحقيق أرقام أكثر مما اخترت، والحد الأقصى للاختيار هو 10.",overview:"اختر أرقامك المحظوظة وحاول مطابقة السحب. يمكنك اختيار من 1 إلى 10 أرقام من بين 1 إلى 40، ثم نقوم بسحب 10 أرقام. كلما زاد عدد الأرقام التي اخترتها وظهرت في السحب، زادت أرباحك.",provablyFair:"يولد نظام العشوائية القابل للتحقق لدينا كل سحب Keno. بعد كل جولة، يمكنك عرض المدخلات والدليل، والتحقق من النتيجة باستخدام مفتاحنا العام، وإعادة إنتاج نفس النتيجة.",strategyTip:"اختر مستوى التقلب الذي تفضله. اختيار عدد أقل من النقاط يعني تحقيق انتصارات أقل تكرارًا ولكن مع مضاعفات أكبر بكثير. المزيد من النقاط يمنح ضربات أكثر تكرارًا ولكن بعوائد متوسطة أصغر لكل ضربة. النطاق المتوسط يوازن بين معدل الضربات والجوائز. عدّل حجم رهانك ليتناسب مع تفضيلك للمخاطرة ورصيدك المالي."},limbo:{how1:"حدد المضاعف المستهدف.",how2:"حدد مبلغ رهانك وضع رهانك.",how3:"نحن نولد معامل نتيجة عشوائي واحد.",how4:"تفوز إذا كانت النتيجة أكبر من أو تساوي هدفك.",how5:"دفعك هو الرهان مضروبًا في معامل الهدف الخاص بك؛ وإلا، تخسر رهانك.",overview:"في Limbo، تقوم بتحديد قيمة العائد التي ترغب بها، ويقوم اللعبة بسحب معامل نتيجة عشوائي واحد. إذا كانت النتيجة مساوية لهدفك أو أعلى، تفوز. إذا كانت أقل، تخسر. كلما زادت فرصة الفوز، انخفض المعامل؛ وكلما قلت الفرصة، زاد المعامل.",provablyFair:"يولد نظام العشوائية القابل للتحقق لدينا كل نتيجة في Limbo. بعد كل جولة، يمكنك عرض المدخلات والدليل، والتحقق من النتيجة باستخدام مفتاحنا العام، وإعادة إنتاج نفس النتيجة.",strategyTip:"الأهداف المنخفضة تربح في كثير من الأحيان ولكن تدفع أقل، بينما الأهداف الأعلى نادراً ما تتحقق ولكن تدفع أكثر بكثير. فكر في تحديد هدف ثابت لكل جلسة أو مزج بعض المحاولات الطويلة أحياناً، وحافظ على حجم الرهانات بشكل متسق لإدارة التباين."},limitContent:"أعلى مضاعف يمكن تحقيقه في هذه اللعبة هو {multiplier}X. أعلى عائد يمكن تحقيقه هو {payout}",limitTitle:"الحدود",mines:{how1:"اختر عدد الألغام لهذه الجولة.",how2:"حدد مبلغ رهانك وضع رهانك.",how3:"انقر على البلاطات لكشفها: البلاطة الآمنة تزيد من المضاعف الخاص بك؛ اللغم ينهي الجولة.",how4:"يمكنك السحب في أي وقت لتثبيت المضاعف الحالي الخاص بك.",how5:"دفعك هو الرهان مضروبًا في المضاعف الحالي عند السحب.",how6:"تنتهي الجولة عندما تسحب أرباحك أو عندما يتم الكشف عن لغم.",overview:"تدور لعبة Mines حول اختيار البلاطات الآمنة وتحديد الوقت المناسب للسحب. قبل بدء الجولة، اختر عدد الألغام التي سيتم إخفاؤها على اللوحة. كل بلاطة آمنة تكشفها تزيد من معامل الربح الخاص بك. إذا أصبت لغماً، تنتهي الجولة بدون أرباح.",provablyFair:"يولد نظام العشوائية القابل للتحقق لدينا توزيع الألغام المخفية لكل لوحة. بعد كل جولة، يمكنك عرض المدخلات والدليل، والتحقق من النتيجة باستخدام مفتاحنا العام، وإعادة إنتاج نفس النتيجة.",strategyTip:"اختر مستوى التقلب. قلة الألغام تعني كشفات أكثر أمانًا ومضاعفات أصغر لكل خطوة. المزيد من الألغام يؤدي إلى كشفات أكثر خطورة مع مضاعفات أكبر. حدد هدفًا أو استخدم وقف الخسارة لإدارة التقلبات. الحفاظ على حجم رهان ثابت وسحب الأرباح بانضباط يساعد في إبقاء التذبذب تحت السيطرة."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"نسبة العائد إلى اللاعب (RTP) لهذه اللعبة هي {rtpValue}%.",rtpTitle:"نسبة العائد إلى اللاعب: {rtpValue}%",strategyTitle:"استراتيجية",tutorial:"برنامج تعليمي",wheel:{how1:"حدد مستوى المخاطرة وعدد الأقسام.",how2:"حدد مبلغ رهانك وضع رهانك.",how3:"تدور العجلة وتهبط على مقطع.",how4:"دفع أرباحك هو الرهان مضروبًا في المُضاعِف المعروض على الجزء الذي يتوقف عنده العجلة.",how5:"كل جزء له مضاعف مختلف بناءً على مستوى المخاطرة وعدد الأجزاء الذي قمت باختياره.",overview:"قم بتدوير العجلة وشاهد أين ستتوقف. اختر مستوى المخاطرة وعدد الأقسام قبل كل دورة - المخاطرة الأقل تمنحك انتصارات أكثر تكرارًا مع مضاعفات أصغر؛ بينما المخاطرة الأعلى تمنحك انتصارات نادرة مع مضاعفات أكبر.",provablyFair:"يولد نظام العشوائية القابل للتحقق لدينا نتيجة كل جولة في Wheel. بعد كل جولة، يمكنك عرض المدخلات والدليل، والتحقق من النتيجة باستخدام مفتاحنا العام، وإعادة إنتاج نفس النتيجة.",strategyTip:"المخاطرة المنخفضة تقدم أرباحاً ثابتة وصغيرة. المخاطرة المتوسطة توازن بين التكرار وقيمة الأرباح. المخاطرة العالية تستهدف مضاعفات نادرة ولكنها ضخمة. زيادة عدد الأقسام ترفع الإمكانيات القصوى لكنها تقلل من تكرار الفوز."},roulette:{how1:"انقر على الشبكة لوضع الرقائق على رهاناتك المختارة.",how2:"اضبط مبلغ الرهان لكل نقرة باستخدام أزرار 1/2 و 2X.",how3:"ضع رهانك لتدوير العجلة.",how4:"تهبط الكرة على رقم عشوائي من 0 إلى 36 (أو 00 للنسخة الأمريكية).",how5:"الرهانات الفائزة تدفع حسب احتمالاتها؛ وتخسر جميع الرقائق الأخرى.",overview:"ضع الرقائق على شبكة الرهان وقم بتدوير العجلة. راهن على أرقام فردية أو مجموعات أرقام أو ألوان أو فردي/زوجي. تهبط الكرة على جيب عشوائي، والرهانات المطابقة تدفع حسب احتمالاتها.",provablyFair:"نظام العشوائية القابل للتحقق لدينا يولد كل دورة روليت. بعد كل جولة، يمكنك عرض المدخلات والإثبات، والتحقق من النتيجة بمفتاحنا العام، وإعادة إنتاج نفس النتيجة.",strategyTip:"الرهانات الخارجية (أحمر/أسود، فردي/زوجي) توفر فرصة فوز تقارب 50% مع دفع 2X. الرهانات الداخلية على أرقام فردية تدفع حتى 36X لكنها نادرة. وزع رقائقك لموازنة المخاطر والمكافآت."}},games:{advancedDice:{between:"بين",boundsLower:"الحد الأدنى",boundsUpper:"الحد الأعلى",inside:"داخل",outside:"خارج",rollMode:"وضع الرمي",secondBoundsLower:"الحد الأدنى الثاني",secondBoundsUpper:"الحد الأعلى الثاني"},dice:{rollOver:"تدوير فوق",rollUnder:"ارم أقل"},keno:{autoPick:"اختيار تلقائي",clearTable:"مسح",kenoGameGrid:"شبكة لعبة كينو",kenoNumber:"رقم كينو {value}",selectAtLeastOneTile:"اختر مربعًا واحدًا على الأقل",selectTileToAutobet:"اختر مربعًا واحدًا على الأقل"},limbo:{multiplierError:"يجب أن يكون بين {min} و {max}",targetMultiplier:"المضاعف",winChanceError:"يجب أن يكون بين {min} و {max}"},mines:{cashout:"السحب النقدي",gem:"جوهرة",gems:"الأحجار الكريمة",mine:"منجم",mines:"الألغام",nextGem:"الجوهرة التالية",selectRandomTile:"اختر مربعا عشوائيا",selectTileToAutobet:"اختر مربعًا واحدًا على الأقل",tile:"بلاطة",unrevealed:"غير مكشوف"},wheel:{segments:"شرائح"},roulette:{chipValue:"قيمة الشريحة",totalBetAmount:"إجمالي مبلغ الرهان"}},hotkeys:{clearBets:"مسح الرهانات",doubleBet:"مضاعفة مبلغ الرهان",doubleChipValue:"مضاعفة قيمة الشريحة",doubleTotalBet:"مضاعفة إجمالي الرهان",halveBet:"نصف مبلغ الرهان",halveChipValue:"تنصيف قيمة الشريحة",halveTotalBet:"تنصيف إجمالي الرهان",higherTarget:"هدف أعلى",info:"عند تفعيل مفاتيح الاختصار، ستظل مفعلة لهذا اللعبة حتى يتم تعطيلها. على الرغم من أن بعض الألعاب تشترك في نفس اختصارات المفاتيح، يُنصح دائمًا بتأكيد مفاتيح الاختصار لكل لعبة.",lowerTarget:"الهدف الأدنى",makeBet:"ضع رهان",resetChipValue:"إعادة تعيين قيمة الشريحة",toggleWinCondition:"تبديل شرط الفوز",undo:"تراجع",zeroBet:"مبلغ رهان صفري"},modals:{betResult:"نتيجة الرهان",fairnessAndHistory:"النزاهة والسجل",gameArea:"منطقة اللعبة",gameControls:"عناصر التحكم في اللعبة",gameInfo:"معلومات اللعبة"}}});var q4=D1((Un,ji)=>{ji.exports={accessibility:{sliderValue:"{value} von {max}"},alerts:{autobetStarted:"Autobet-Modus gestartet",autobetStopped:"Autobet-Modus gestoppt",betAmountAboveMaxBet:"Der maximale Einsatz beträgt {value}",betAmountBelowMinBet:"Der Mindesteinsatz beträgt {value}",betLimitReached:"Einsatzlimit erreicht",errorProcessingBet:"Bei der Verarbeitung Ihrer Wette ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.",failedToLoadBetData:"Fehler beim Laden der Wettdaten",gameError:"Bei der Verarbeitung Ihrer Wette ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.",insufficientBalance:"Unzureichendes Guthaben",maxPayoutExceeded:"Maximale Auszahlung überschritten",notEnoughBalance:"Nicht genug Guthaben"},autobet:{configureAutobet:"Autobet konfigurieren",games:"Spiele",games10:"10 Spiele",games100:"100 Spiele",games25:"25 Spiele",games5:"5 Spiele",games50:"50 Spiele",increase:"Erhöhen",infinite:"Unendlich",onLoss:"Bei Verlust",onWin:"Bei Gewinn",reset:"Zurücksetzen",startAutobet:"Autobet starten",stopAutobet:"Autobet stoppen",stopOnLoss:"Stopp bei Verlust",stopOnProfit:"Bei Gewinn stoppen"},clipboard:{linkCopied:"Link in die Zwischenablage kopiert!"},common:{auto:"Auto",back:"Zurück",balance:"Guthaben",bet:"Einsatzbetrag",betAmount:"Einsatzbetrag",cancel:"Abbrechen",cashOut:"Auszahlen",classic:"Klassisch",confirm:"Bestätigen",copied:"Kopiert",currency:"Währung",deposit:"Einzahlung",disableHotkeys:"Hotkeys deaktivieren",disableMaxBet:"Maximalen Einsatz deaktivieren",enableHotkeys:"Hotkeys aktivieren",enableMaxBet:"Maximalen Einsatz aktivieren",footerNavigation:"Fußzeilennavigation",gameInfo:"Spielinfo",gameName:"Spielname",high:"Hoch",history:"Verlauf",hotkeys:"Tastenkürzel",id:"ID",instantBet:"Sofortwette",loading:"Wird geladen...",loadMore:"Mehr laden",lobby:"Zurück zur Lobby",low:"Niedrig",manual:"Handbuch",max:"MAX",medium:"Mittel",multiplier:"Multiplikator",payout:"Auszahlung",placeBet:"Wette platzieren",profit:"Gewinn",profitOnWin:"Gewinn bei Gewinn",provablyFair:"Nachweislich fair",risk:"Risiko",roundId:"Runden-ID",saveChanges:"Änderungen speichern",shareReplay:"Replay teilen",siteInformation:"Spielinformationen",space:"SPACE",support:"Unterstützung",targetMultiplier:"Multiplikator",thisFieldIsRequired:"Dieses Feld ist erforderlich",timestamp:"Zeit",toggleHotkeys:"Hotkeys umschalten",viewFairnessInformation:"Fairness-Information anzeigen",viewHistory:"Verlauf anzeigen",volume:"Lautstärke",winChance:"Gewinnchance"},errors:{dice:{multiplierRange:"Muss zwischen {min} und {max} liegen",winChanceRange:"Muss zwischen {min} und {max} liegen"},noWheelData:"Keine Raddaten verfügbar",requestDropped:"Anfrage abgebrochen"},fairness:{activeClientSeed:"Aktiver Client Seed",enterClientSeed:"Client Seed eingeben",enterProof:"Beweis eingeben",enterPublicKey:"Öffentlichen Schlüssel eingeben",enterRandomness:"Zufälligkeit eingeben",enterRequest:"Anfrage eingeben",info:{p1:"Das Ergebnis jeder Runde stammt aus nachweislich zufälligen Zahlen, nicht aus verborgener Serverlogik. Wir erstellen einen deterministischen Seed aus Werten, die für deine Runde einzigartig sind – gameId, tenantId, tenantUserId, eine fortlaufende nonce (eine pro abgeschlossener Runde) sowie deinen clientSeed. Das garantiert, dass jede Runde einzigartig und reproduzierbar ist: gleiche Eingaben → gleicher Zufallsstrom → gleiches Ergebnis.",p2:"Dieser Seed wird gemäß dem IETF-Spezifikationsentwurf draft-irtf-cfrg-vrf-15 durch eine Elliptic Curve Verifiable Random Function (ECVRF) verarbeitet. Unser Server verwendet seinen privaten Schlüssel, um einen Zufallswert und einen kryptografischen Nachweis (proofString) zu erzeugen. Jeder, der über unseren öffentlichen Schlüssel verfügt, kann diesen Nachweis für die angegebenen Eingaben unabhängig überprüfen—und so bestätigen, dass die Zufälligkeit tatsächlich aus dem Seed stammt und nicht manipuliert wurde. Das SDK ist in TypeScript geschrieben, während die Kernkryptografie für Leistung und Sicherheit die fastcrypto Rust-Bibliothek über NAPI-RS verwendet.",p3:"Nach der Verifizierung dient die VRF-Ausgabe als Seed für einen deterministischen Zufalls-Byte-Generator (hashSequence). Die Spiele wandeln diese Bytes durch deterministische, unbeeinflusste Logik in Ergebnisse um. Da der Prozess deterministisch ist und sich der nonce nach jeder abgeschlossenen Runde erhöht, erhalten Sie sowohl wiederholbare Prüfungen (die gleiche Runde exakt rekonstruieren) als auch bei jedem Mal neue, sich nicht wiederholende Zufälligkeiten.",p4:"Nach einer Runde hast du die Eingaben (einschließlich deines clientSeed und des Nonce der Runde), die VRF-Ausgabe, den proofString und unseren öffentlichen Schlüssel. Verwende einen beliebigen ECVRF-Verifizierer oder unsere Bibliotheken, um: (1) den Nachweis anhand der Eingaben und des öffentlichen Schlüssels zu überprüfen und (2) die gleiche hashSequence und das gleiche Ergebnis erneut zu erzeugen. Unser privater Schlüssel verlässt niemals die sicheren Server; der öffentliche Schlüssel kann sicher clientseitig für unabhängige Überprüfungen verwendet werden.",step1Desc:"Wir kombinieren gameId, tenantId, tenantUserId, eine rundenbasierte nonce und deinen clientSeed. Gleiche Eingaben erzeugen immer denselben Zufallsstrom und dasselbe Ergebnis.",step1Title:"Deterministischer Seed",step2Title:"Zufälligkeit erzeugen",step3Desc:"Jeder kann die proofString für die angegebenen Eingaben mit unserem öffentlichen Schlüssel überprüfen. Dies bestätigt, dass die Zufälligkeit mit dem Seed übereinstimmt und nicht manipuliert wurde.",step3Title:"Beweis überprüfen",step4Title:"Ergebnisse ableiten",step5Title:"Fortpflanzung"},invalidGame:"Ungültiger Spieltyp angegeben.",learnMore:"Mehr erfahren",newClientSeed:"Neuer Client Seed",noBettingHistory:"Keine Wettverlauf",outcomeCalculationInfo:"Dieses Spiel verwendet einen nachweislich fairen Algorithmus, der ein faires und transparentes Ergebnis gewährleistet.",outcomeNotVerified:"Das Ergebnis dieses Spiels konnte nicht überprüft werden. Bitte überprüfen Sie Ihre Eingaben und versuchen Sie es erneut.",outcomeVerified:"Das Ergebnis dieser Runde wurde mit unserem öffentlichen Schlüssel verifiziert und ist nachweislich fair.",proof:"Nachweisen",publicKey:"Aktiver öffentlicher Schlüssel",randomness:"Zufälligkeit",request:"Anfrage",saveClientSeed:"Kundensamen speichern",verifyOutcome:"Ergebnis überprüfen"},gameInfo:{advancedDice:{how1:"Wähle deinen Würfelmodus: Innen, Außen oder Zwischen.",how2:"Ziehe die Regler, um deine Gewinnzone(n) festzulegen.",how3:"Lege deinen Einsatz fest und platziere deine Wette.",how4:"Eine Zufallszahl zwischen 0 und 100 wird generiert.",how5:"Gewinne, wenn das Ergebnis in deine gewählte(n) Zone(n) fällt.",overview:"Advanced Dice ermöglicht dir, eigene Gewinnzonen festzulegen. Wähle Innen, um zu gewinnen, wenn das Ergebnis in deinem Bereich landet, Außen, um zu gewinnen, wenn es außerhalb liegt, oder Zwischen für zwei Gewinnzonen.",provablyFair:"Unser verifizierbares Zufallssystem generiert jedes Advanced Dice Ergebnis. Nach jeder Runde kannst du die Eingaben und den Nachweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel verifizieren und dasselbe Ergebnis reproduzieren.",strategyTip:"Breitere Zonen bieten häufigere Gewinne, aber kleinere Multiplikatoren. Schmale Zonen sind riskanter, zahlen aber mehr. Der Zwischen-Modus ermöglicht flexible Strategien mit zwei Bereichen."},diamonds:{how1:"Legen Sie Ihren Einsatz fest und platzieren Sie Ihre Wette.",how2:"Aus einer festgelegten Auswahl an Edelsteinsorten werden fünf Diamanten enthüllt.",how3:"Ihr Ergebnis wird wie eine Pokerhand bewertet: Paare, zwei Paare, Drilling, Full House, Vierling und Fünfling.",how4:"Jeder Handtyp hat seinen eigenen Multiplikator; höherwertige Hände bringen höhere Multiplikatoren, während keine Hand den Wert 0x auszahlt.",how5:"Ihre Auszahlung entspricht Ihrem Einsatz multipliziert mit dem angezeigten Multiplikator für das resultierende Blatt.",overview:"Diamonds ist ein Kombinationsspiel mit fünf Walzen. In jeder Runde werden fünf Diamanten aus verschiedenen Edelsteinarten aufgedeckt. Ziel ist es, Kombinationen wie beim Poker zu erzielen – Paare, Drillinge, Full Houses usw.",provablyFair:"Unser System zur verifizierbaren Zufälligkeit wählt jedes Diamantergebnis aus. Nach jeder Runde können Sie die zugrunde liegenden Zufallswerte und den Nachweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel verifizieren und dieselbe Hand reproduzieren.",strategyTip:"Diamonds ist ein Spiel mit hoher Volatilität und festen Quoten, bei dem Sie nach großen, pokerähnlichen Händen suchen. Ihr Haupthebel ist Ihre Spielweise. Setzen Sie kleinere, konstante Beträge, um Durststrecken zu überbrücken, oder erhöhen Sie Ihre Einsätze gelegentlich, wenn Sie auf Premium-Hände aus sind."},dice:{how1:"Wähle zwischen Unterrollen und Überrollen.",how2:"Legen Sie Ihre Zielzahl fest.",how3:"Legen Sie Ihren Einsatz fest und platzieren Sie Ihre Wette.",how4:"Wir generieren ein zufälliges Ergebnis (das im Spiel auf einer Skala von 0 bis 99,99 angezeigt wird).",how5:"Sie gewinnen, wenn das Ergebnis in Ihrem gewählten Bereich liegt.",how6:"Ihre Auszahlung entspricht Ihrem Einsatz multipliziert mit dem angezeigten Multiplikator, der sich bei jeder Bewegung des Schiebereglers aktualisiert.",overview:"Lege eine Zielzahl fest und entscheide, ob der Wurf darunter oder darüber landen soll. Durch Verschieben des Schiebereglers veränderst du deine Gewinnchance und den Multiplikator – eine höhere Chance senkt den Multiplikator, eine niedrigere Chance erhöht ihn. Jede Runde ist ein unabhängiger Wurf auf der Spielskala.",provablyFair:"Unser verifizierbares Zufallssystem generiert jeden Würfelwurf. Nach jeder Runde können Sie die Eingaben und den Nachweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel verifizieren und dasselbe Ergebnis reproduzieren.",strategyTip:"Wähle deine Volatilität. Eine geringere Gewinnchance führt zu höheren Multiplikatoren, aber selteneren Treffern. Eine höhere Gewinnchance führt zu niedrigeren Multiplikatoren, aber häufigeren Gewinnen. Passe deine Einsätze an dein Budget an, um gleichmäßigere Gewinne zu erzielen."},keno:{how1:"Wähle 1–10 Spielsteine auf dem 1–40-Brett aus.",how2:"Legen Sie Ihren Einsatz fest und platzieren Sie Ihre Wette.",how3:"Wir ziehen 10 Gewinnzahlen; Ihre Treffer sind hervorgehoben.",how4:"Die Auszahlungen hängen davon ab, wie viele Spielsteine Sie ausgewählt haben und wie viele Treffer Sie erzielt haben – siehe Auszahlungstabelle.",how5:"Sie können nie mehr Zahlen treffen, als Sie ausgewählt haben, und die maximale Auswahl beträgt 10.",overview:"Wählen Sie Ihre Glückszahlen und versuchen Sie, die gezogenen Zahlen zu treffen. Sie können 1 bis 10 Zahlen zwischen 1 und 40 auswählen. Wir ziehen dann 10 Zahlen. Je mehr Ihrer Tipps stimmen, desto höher ist Ihr Gewinn.",provablyFair:"Unser verifizierbares Zufallssystem generiert jede Keno-Ziehung. Nach jeder Runde können Sie die Eingaben und den Nachweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel überprüfen und dasselbe Ergebnis reproduzieren.",strategyTip:"Wählen Sie Ihre Risikobereitschaft. Weniger Auswahlfelder bedeuten seltenere Gewinne, aber deutlich höhere Multiplikatoren. Mehr Auswahlfelder führen zu häufigeren Treffern, aber geringeren durchschnittlichen Gewinnen pro Treffer. Ein mittlerer Bereich bietet ein ausgewogenes Verhältnis zwischen Trefferquote und Auszahlung. Passen Sie Ihren Einsatz an Ihre Risikobereitschaft und Ihr Budget an."},limbo:{how1:"Legen Sie Ihren Zielmultiplikator fest.",how2:"Legen Sie Ihren Einsatz fest und platzieren Sie Ihre Wette.",how3:"Wir generieren einen zufälligen Ergebnismultiplikator.",how4:"Sie gewinnen, wenn das Ergebnis größer oder gleich Ihrem Zielwert ist.",how5:"Ihre Auszahlung entspricht Ihrem Einsatz multipliziert mit Ihrem Zielmultiplikator; andernfalls verlieren Sie Ihren Einsatz.",overview:"Bei Limbo legen Sie Ihre gewünschte Auszahlung fest, und das Spiel ermittelt einen zufälligen Multiplikator. Liegt das Ergebnis mindestens bei Ihrem Zielwert, gewinnen Sie. Liegt es darunter, verlieren Sie. Eine höhere Gewinnchance senkt den Multiplikator, eine niedrigere erhöht ihn.",provablyFair:"Unser verifizierbares Zufallssystem erzeugt jedes Limbo-Ergebnis. Nach jeder Runde können Sie die Eingaben und den Nachweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel verifizieren und dasselbe Ergebnis reproduzieren.",strategyTip:"Niedrigere Ziele führen häufiger zum Sieg, zahlen aber weniger aus, während höhere Ziele seltener treffen, aber deutlich höhere Gewinne bringen. Setzen Sie sich am besten ein festes Ziel pro Spielsitzung oder streuen Sie gelegentlich Wetten auf größere Ziele ein und achten Sie auf eine gleichbleibende Einsatzhöhe, um die Varianz zu kontrollieren."},limitContent:"Der maximal erreichbare Multiplikator in diesem Spiel ist {multiplier}X. Die maximal erreichbare Auszahlung beträgt {payout}.",limitTitle:"Grenzen",mines:{how1:"Wähle die Anzahl der Minen für diese Runde.",how2:"Legen Sie Ihren Einsatz fest und platzieren Sie Ihre Wette.",how3:"Klicke auf die Spielsteine, um sie aufzudecken: Ein sicheres Spielstein erhöht deinen Multiplikator; eine Mine beendet die Runde.",how4:"Sie können sich Ihren Gewinn jederzeit auszahlen lassen, um Ihren aktuellen Multiplikator zu sichern.",how5:"Ihre Auszahlung entspricht Ihrem Einsatz multipliziert mit dem aktuellen Multiplikator zum Zeitpunkt der Auszahlung.",how6:"Die Runde endet, wenn Sie Ihr Geld auszahlen lassen oder eine Mine aufgedeckt wird.",overview:"Bei Mines geht es darum, sichere Plättchen auszuwählen und zu entscheiden, wann man sich den Gewinn auszahlen lässt. Vor Rundenbeginn legt man fest, wie viele Minen auf dem Spielbrett versteckt sein sollen. Jedes aufgedeckte sichere Plättchen erhöht den Multiplikator. Trifft man auf eine Mine, endet die Runde ohne Auszahlung.",provablyFair:"Unser verifizierbares Zufallssystem generiert das Layout der versteckten Minen für jedes Spielbrett. Nach jeder Runde können Sie die Eingaben und den Nachweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel verifizieren und dasselbe Ergebnis reproduzieren.",strategyTip:"Wählen Sie Ihre Volatilität. Weniger Minen bedeuten sicherere Ergebnisse und kleinere Multiplikatoren pro Schritt. Mehr Minen führen zu riskanteren Ergebnissen mit höheren Multiplikatoren. Setzen Sie sich ein Kursziel oder verwenden Sie einen Stop-Loss, um Kursschwankungen zu begrenzen. Konstante Einsatzhöhen und disziplinierte Auszahlungen helfen, die Varianz zu kontrollieren."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Die Auszahlungsquote (RTP) für dieses Spiel beträgt {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Strategie",tutorial:"Tutorial",wheel:{how1:"Wählen Sie Ihr Risikoniveau und die Anzahl der Segmente.",how2:"Legen Sie Ihren Einsatz fest und platzieren Sie Ihre Wette.",how3:"Das Rad dreht sich und landet auf einem Segment.",how4:"Ihre Auszahlung beträgt Ihren Einsatz × den Multiplikator, der auf dem Segment angezeigt wird, in dem das Rad stehen bleibt.",how5:"Jedes Segment hat einen anderen Multiplikator, der auf Ihrem gewählten Risikoniveau und der Anzahl der Segmente basiert.",overview:"Drehe das Rad und schau, wo es stehen bleibt. Wähle vor jedem Dreh dein Risikoniveau und die Anzahl der Segmente – geringeres Risiko führt zu häufigeren Gewinnen mit kleineren Multiplikatoren; höheres Risiko zu seltenen Gewinnen mit größeren Multiplikatoren.",provablyFair:"Unser verifizierbares Zufallssystem generiert jedes Ergebnis des Glücksrads. Nach jeder Runde können Sie die Eingaben und den Nachweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel verifizieren und dasselbe Ergebnis reproduzieren.",strategyTip:"Niedriges Risiko bietet stetige, kleinere Gewinne. Mittleres Risiko bietet ein ausgewogenes Verhältnis zwischen Häufigkeit und Auszahlung. Hohes Risiko zielt auf seltene, aber extrem hohe Multiplikatoren ab. Mehr Segmente erhöhen das maximale Potenzial, verringern aber die Gewinnhäufigkeit."},roulette:{how1:"Klicken Sie auf das Raster, um Chips auf Ihre gewählten Wetten zu setzen.",how2:"Passen Sie Ihren Einsatz pro Klick mit den 1/2- und 2X-Tasten an.",how3:"Platzieren Sie Ihren Einsatz, um das Rad zu drehen.",how4:"Die Kugel landet auf einer zufälligen Zahl von 0–36 (oder 00 bei American).",how5:"Gewinnende Wetten werden nach ihren Quoten ausgezahlt; alle anderen Chips gehen verloren.",overview:"Setzen Sie Chips auf das Wettfeld und drehen Sie das Rad. Wetten Sie auf einzelne Zahlen, Zahlengruppen, Farben oder Gerade/Ungerade. Die Kugel landet in einem zufälligen Fach, und passende Wetten werden nach ihren Quoten ausgezahlt.",provablyFair:"Unser verifizierbares Zufallssystem generiert jeden Roulette-Dreh. Nach jeder Runde können Sie die Eingaben und den Beweis einsehen, das Ergebnis mit unserem öffentlichen Schlüssel verifizieren und dasselbe Ergebnis reproduzieren.",strategyTip:"Außenwetten (Rot/Schwarz, Gerade/Ungerade) bieten fast 50% Gewinnchance mit 2X-Auszahlung. Innenwetten auf einzelne Zahlen zahlen bis zu 36X, treffen aber selten. Verteilen Sie Ihre Chips, um Risiko und Gewinn auszugleichen."}},games:{advancedDice:{between:"Zwischen",boundsLower:"Untere Grenze",boundsUpper:"Obere Grenze",inside:"Innerhalb",outside:"Außerhalb",rollMode:"Würfelmodus",secondBoundsLower:"Zweite untere Grenze",secondBoundsUpper:"Zweite obere Grenze"},dice:{rollOver:"Sich umdrehen",rollUnder:"Roll Under"},keno:{autoPick:"Automatische Auswahl",clearTable:"Klar",kenoGameGrid:"Keno-Spielraster",kenoNumber:"Keno-Nummer {value}",selectAtLeastOneTile:"Wählen Sie mindestens eine Kachel aus.",selectTileToAutobet:"Wählen Sie mindestens eine Kachel aus."},limbo:{multiplierError:"Muss zwischen {min} und {max} liegen.",targetMultiplier:"Multiplikator",winChanceError:"Muss zwischen {min} und {max} liegen."},mines:{cashout:"Bargeldabhebung",gem:"Juwel",gems:"Edelsteine",mine:"Meins",mines:"Minen",nextGem:"Nächstes Juwel",selectRandomTile:"Wähle zufällige Kachel",selectTileToAutobet:"Wählen Sie mindestens eine Kachel aus.",tile:"Fliese",unrevealed:"Unenthüllt"},wheel:{segments:"Segmente"},roulette:{chipValue:"Chipwert",totalBetAmount:"Gesamteinsatz"}},hotkeys:{clearBets:"Einsätze Löschen",doubleBet:"Doppelter Einsatz",doubleChipValue:"Chipwert Verdoppeln",doubleTotalBet:"Gesamteinsatz Verdoppeln",halveBet:"Einsatz halbieren",halveChipValue:"Chipwert Halbieren",halveTotalBet:"Gesamteinsatz Halbieren",higherTarget:"Höheres Ziel",info:"Sind Hotkeys aktiviert, bleiben sie für dieses Spiel aktiv, bis sie deaktiviert werden. Obwohl einige Spiele ähnliche Tastenbelegungen verwenden, empfiehlt es sich, die Hotkeys für jedes Spiel einzeln zu überprüfen.",lowerTarget:"Unteres Ziel",makeBet:"Wette platzieren",resetChipValue:"Chipwert Zurücksetzen",toggleWinCondition:"Umschalt-Win-Bedingung",undo:"Rückgängig",zeroBet:"Einsatzbetrag Null"},modals:{betResult:"Wettergebnis",fairnessAndHistory:"Fairness und Geschichte",gameArea:"Spielbereich",gameControls:"Spielsteuerung",gameInfo:"Spielinformationen"}}});var T4=D1((Pn,Ei)=>{Ei.exports={accessibility:{sliderValue:"{value} out of {max}"},alerts:{autobetStarted:"Started autobet mode",autobetStopped:"Stopped autobet mode",betAmountAboveMaxBet:"Maximum bet is {value}",betAmountBelowMinBet:"Minimum bet is {value}",betLimitReached:"Bet limit reached",errorProcessingBet:"There was an error processing your bet. Please try again.",failedToLoadBetData:"Failed to load bet data",gameError:"There was an error processing your bet. Please try again.",insufficientBalance:"Insufficient balance",notEnoughBalance:"Not enough balance",maxPayoutExceeded:"Max payout exceeded"},autobet:{configureAutobet:"Configure Autobet",games:"Games",games10:"10 Games",games100:"100 Games",games25:"25 Games",games5:"5 Games",games50:"50 Games",increase:"Increase",infinite:"Infinite",onLoss:"On Loss",onWin:"On Win",reset:"Reset",startAutobet:"Start Autobet",stopAutobet:"Stop Autobet",stopOnLoss:"Stop on Loss",stopOnProfit:"Stop On Profit"},clipboard:{linkCopied:"Link copied to clipboard!"},common:{auto:"Auto",back:"Back",balance:"Balance",bet:"Bet Amount",betAmount:"Bet Amount",cancel:"Cancel",cashOut:"Cash Out",classic:"Classic",confirm:"Confirm",copied:"Copied",currency:"Currency",deposit:"Deposit",disableHotkeys:"Disable Hotkeys",disableMaxBet:"Disable Max Bet",enableHotkeys:"Enable Hotkeys",enableMaxBet:"Enable Max Bet",footerNavigation:"Footer Navigation",gameInfo:"Game Info",gameName:"Game Name",high:"High",history:"History",hotkeys:"Hotkeys",id:"ID",instantBet:"Instant Bet",loading:"Loading...",loadMore:"Load More",lobby:"Back to Lobby",low:"Low",manual:"Manual",max:"MAX",medium:"Medium",multiplier:"Multiplier",payout:"Payout",placeBet:"Place Bet",profit:"Profit",profitOnWin:"Profit On Win",provablyFair:"Provably Fair",risk:"Risk",roundId:"Round ID",saveChanges:"Save Changes",shareReplay:"Share Replay",siteInformation:"Game Information",space:"SPACE",support:"Support",targetMultiplier:"Multiplier",thisFieldIsRequired:"This field is required",timestamp:"Time",toggleHotkeys:"Toggle Hotkeys",viewFairnessInformation:"View Fairness Information",viewHistory:"View History",volume:"Volume",winChance:"Win Chance"},errors:{dice:{multiplierRange:"Must be between {min} and {max}",winChanceRange:"Must be between {min} and {max}"},noWheelData:"No wheel data available",requestDropped:"Request dropped"},fairness:{activeClientSeed:"Active Client Seed",enterClientSeed:"Enter Client Seed",enterProof:"Enter Proof",enterPublicKey:"Enter Public Key",enterRandomness:"Enter Randomness",enterRequest:"Enter Request",info:{p1:"Every round’s result comes from verifiable randomness, not hidden server logic. We build a deterministic seed from values unique to your round—gameId, tenantId, tenantUserId, an incrementing nonce (one per completed round), plus your clientSeed. This guarantees each round is unique and reproducible: same inputs → same random stream → same outcome.",p2:"That seed is run through an Elliptic Curve Verifiable Random Function (ECVRF) per the IETF spec draft-irtf-cfrg-vrf-15. Our server uses its private key to produce a random value and a cryptographic proof (proofString). Anyone with our public key can independently verify that proof for the given inputs—confirming the randomness came from the seed and wasn’t tampered with. The SDK is TypeScript, while the core crypto uses the fastcrypto Rust library via NAPI-RS for performance and safety.",p3:"Once verified, the VRF output seeds a deterministic random byte generator (hashSequence). The games transform those bytes into outcomes using deterministic, unbiased logic. Because the process is deterministic and the nonce advances every completed round, you get both replayable audits (recreate the same round exactly) and fresh, non-repeating randomness each time.",p4:"After a round, you have the inputs (including your clientSeed and the round’s nonce), the VRF output, the proofString, and our public key. Use any ECVRF verifier or our libraries to: (1) verify the proof against the inputs and public key, and (2) regenerate the same hashSequence and outcome. Our private key never leaves secure servers; the public key is safe to use client-side for independent checks.",step1Desc:"We combine gameId, tenantId, tenantUserId, a per-round nonce, and your clientSeed. Same inputs always produce the same random stream and outcome.",step1Title:"Deterministic Seed",step2Title:"Generate Randomness",step3Desc:"Anyone can verify the proofString for the given inputs using our public key. This confirms the randomness matches the seed and was not tampered with.",step3Title:"Verify Proof",step4Title:"Derive Outcomes",step5Title:"Reproduction"},invalidGame:"Invalid game type provided.",learnMore:"Learn More",newClientSeed:"New Client Seed",noBettingHistory:"No betting history",outcomeCalculationInfo:"This game uses a provably fair algorithm that ensures the outcome is fair and transparent.",outcomeNotVerified:"The outcome of this game could not be verified. Double check you have entered the correct information and try again.",outcomeVerified:"The outcome of this round has been verified with our public key and is provably fair.",proof:"Proof",publicKey:"Active Public Key",randomness:"Randomness",request:"Request",saveClientSeed:"Save Client Seed",verifyOutcome:"Verify Outcome"},gameInfo:{advancedDice:{how1:"Select your roll mode: Inside, Outside, or Between.",how2:"Drag the sliders to define your winning zone(s).",how3:"Set your bet amount and place your bet.",how4:"A random number between 0 and 100 is generated.",how5:"Win if the result falls within your chosen zone(s).",overview:"Advanced Dice lets you set custom win zones. Choose Inside to win when the result lands within your range, Outside to win when it lands beyond your range, or Between to split into two winning zones.",provablyFair:"Our verifiable randomness system generates every Advanced Dice outcome. After every round, you can view the inputs and proof, verify the result with our public key, and reproduce the same result.",strategyTip:"Wider zones offer more frequent wins but smaller multipliers. Narrow zones risk more but pay bigger. Between mode lets you target two ranges for flexible strategies."},diamonds:{how1:"Set your bet amount and place your bet.",how2:"Five diamonds are revealed from a fixed set of gem types.",how3:"Your result is evaluated like a poker hand: pairs, two pairs, three-of-a-kind, full house, four-of-a-kind, and five-of-a-kind.",how4:"Each hand type has its own multiplier; higher-value hands award bigger multipliers, while no made hand pays 0X.",how5:"Your payout is your bet multiplied by the shown multiplier for the resulting hand.",overview:"Diamonds is a five-reel matching game. Each round reveals five diamonds from a set of different gem types. Your goal is to land poker-style combinations - pairs, three-of-a-kind, full houses, and so on.",provablyFair:"Our verifiable randomness system selects each diamond result. After every round, you can view the underlying random values and proof, verify the outcome with our public key, and reproduce the same hand.",strategyTip:"Diamonds is a high-volatility, fixed-odds game where you're hunting for big, poker-style hands. Your main lever is how aggressive you want to be. Use smaller, steady bets if you want to ride out dry streaks, or occasionally push your bet size when you're chasing premium hands."},dice:{how1:"Choose roll under or roll over.",how2:"Set your target number.",how3:"Set your bet amount and place your bet.",how4:"We generate one random result (displayed on the 0–99.99 scale in-game).",how5:"You win if the result is in your chosen range.",how6:"Your payout is bet x the shown multiplier, which updates as you move the slider.",overview:"Set a target number and choose whether the roll will land under or over it. Moving the slider changes your win chance and multiplier—a higher chance lowers the multiplier, a lower chance increases it. Each round is one independent roll on the game's scale.",provablyFair:"Our verifiable randomness system generates every Dice roll. After every round, you can view the inputs and proof, verify the result with our public key, and reproduce the same result.",strategyTip:"Pick your volatility. A lower win chance yields bigger multipliers but rarer hits. A higher win chance yields smaller multipliers but more frequent wins. Size your bets to your bankroll for steadier swings."},keno:{how1:"Pick 1–10 tiles on the 1–40 board.",how2:"Set your bet amount and place your bet.",how3:"We draw 10 winning numbers; your matches are highlighted.",how4:"Payouts depend on how many tiles you selected and how many hits you got—check the paytable.",how5:"You can never hit more numbers than you selected, and the maximum selection is 10.",overview:"Pick your lucky numbers and try to match the draw. You can choose 1–10 numbers from 1–40, and we then draw 10 numbers. The more of your picks that hit, the higher your payout.",provablyFair:"Our verifiable randomness system generates every Keno draw. After every round, you can view the inputs and proof, verify the result with our public key, and reproduce the same result.",strategyTip:"Choose your volatility. Picking fewer spots means rarer wins but much bigger multipliers. More spots give more frequent hits but smaller average returns per hit. A middle range balances hit rate and payout. Adjust your bet size to match your risk preference and bankroll."},limbo:{how1:"Set your target multiplier.",how2:"Set your bet amount and place your bet.",how3:"We generate one random outcome multiplier.",how4:"You win if the outcome is greater than or equal to your target.",how5:"Your payout is bet x your target multiplier; otherwise, you lose your bet.",overview:"In Limbo, you set your desired payout, and the game draws a single random outcome multiplier. If the outcome is at least your target, you win. If it's lower, you lose. A higher chance lowers the multiplier; a lower chance increases it.",provablyFair:"Our verifiable randomness system generates every Limbo outcome. After every round, you can view the inputs and proof, verify the result with our public key, and reproduce the same result.",strategyTip:"Lower targets win more often but pay less, while higher targets hit rarely but pay much more. Consider a fixed target per session or mix in occasional long shots, and size bets consistently to manage variance."},limitContent:"The maximum achievable multiplier for this game is {multiplier}X. The maximum achievable payout is {payout}",limitTitle:"Limits",mines:{how1:"Choose the number of mines for this round.",how2:"Set your bet amount and place your bet.",how3:"Click tiles to reveal them: a safe tile increases your multiplier; a mine ends the round.",how4:"You can cash out at any time to lock in your current multiplier.",how5:"Your payout is bet x the current multiplier when you cash out.",how6:"The round ends when you cash out or when a mine is revealed.",overview:"Mines is about picking safe tiles and deciding when to cash out. Before the round starts, choose how many mines will be hidden on the board. Each safe tile you reveal increases your multiplier. Hit a mine, and the round ends with no payout.",provablyFair:"Our verifiable randomness system generates each board's hidden mine layout. After every round, you can view the inputs and proof, verify the result with our public key, and reproduce the same result.",strategyTip:"Pick your volatility. Fewer mines mean safer reveals and smaller multipliers per step. More mines lead to riskier reveals with bigger multipliers. Set a target or use a stop-loss to manage swings. Consistent bet sizing and disciplined cash outs help keep variance in check."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"The Return-to-Player (RTP) percentage for this game is {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Strategy",tutorial:"Tutorial",wheel:{how1:"Select your risk level and number of segments.",how2:"Set your bet amount and place your bet.",how3:"The wheel spins and lands on a segment.",how4:"Your payout is bet × the multiplier shown on the segment where the wheel stops.",how5:"Each segment has a different multiplier based on your chosen risk level and segment count.",overview:"Spin the wheel and watch where it lands. Choose your risk level and number of segments before each spin - lower risk yields more frequent wins with smaller multipliers; higher risk yields rare wins with bigger multipliers.",provablyFair:"Our verifiable randomness system generates every Wheel outcome. After every round, you can view the inputs and proof, verify the result with our public key, and reproduce the same result.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive multipliers. More segments increase maximum potential but reduce win frequency."},roulette:{how1:"Click on the grid to place chips on your chosen bets.",how2:"Adjust your chip value with the 1/2 and 2X buttons.",how3:"Place your bet to spin the wheel.",how4:"The ball lands on a random number from 0–36 (or 00 for American).",how5:"Winning bets pay out based on their odds; all other chips are lost.",overview:"Place chips on the betting grid and spin the wheel. Bet on single numbers, groups of numbers, colors, or odd/even. The ball lands on a random pocket, and matching bets pay out based on their odds.",provablyFair:"Our verifiable randomness system generates every Roulette spin. After every round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Outside bets (red/black, odd/even) offer nearly 50% win chance with 2X payout. Inside bets on single numbers pay up to 36X but hit rarely. Spread your chips to balance risk and reward."}},games:{roulette:{chipValue:"Chip Value",totalBetAmount:"Total Bet Amount"},advancedDice:{between:"Between",boundsLower:"Bounds lower",boundsUpper:"Bounds upper",inside:"Inside",outside:"Outside",rollMode:"Roll Mode",secondBoundsLower:"Second bounds lower",secondBoundsUpper:"Second bounds upper"},dice:{rollOver:"Roll Over",rollUnder:"Roll Under"},keno:{autoPick:"Auto Pick",clearTable:"Clear",kenoGameGrid:"Keno Game Grid",kenoNumber:"Keno Number {value}",selectAtLeastOneTile:"Select at least one tile",selectTileToAutobet:"Select at least one tile"},limbo:{multiplierError:"Must be between {min} and {max}",targetMultiplier:"Multiplier",winChanceError:"Must be between {min} and {max}"},mines:{cashout:"Cash Out",gem:"Gem",gems:"Gems",mine:"Mine",mines:"Mines",nextGem:"Next Gem",selectRandomTile:"Select Random Tile",selectTileToAutobet:"Select at least one tile",tile:"Tile",unrevealed:"Unrevealed"},wheel:{segments:"Segments"}},hotkeys:{clearBets:"Clear Bets",doubleBet:"Double Bet Amount",doubleChipValue:"Double Chip Value",doubleTotalBet:"Double Total Bet",halveBet:"Halve Bet Amount",halveChipValue:"Halve Chip Value",halveTotalBet:"Halve Total Bet",higherTarget:"Higher Target",info:"When hotkeys are enabled, they will remain on for this game until disabled. Despite some games sharing similar key binds, it's always advised to confirm hotkeys for each game.",lowerTarget:"Lower Target",makeBet:"Place Bet",resetChipValue:"Reset Chip Value",toggleWinCondition:"Toggle Win Condition",undo:"Undo",zeroBet:"Zero Bet Amount"},modals:{betResult:"Bet Result",fairnessAndHistory:"Fairness and History",gameArea:"Game Area",gameControls:"Game Controls",gameInfo:"Game Info"}}});var J4=D1((Bn,Li)=>{Li.exports={accessibility:{sliderValue:"{value} de {max}"},alerts:{autobetStarted:"Modo autobet iniciado",autobetStopped:"Modo Autobet detenido",betAmountAboveMaxBet:"La apuesta máxima es {value}",betAmountBelowMinBet:"La apuesta mínima es {value}",betLimitReached:"Límite de apuesta alcanzado",errorProcessingBet:"Hubo un error al procesar tu apuesta. Por favor, inténtalo de nuevo.",failedToLoadBetData:"No se pudo cargar la información de la apuesta",gameError:"Hubo un error al procesar tu apuesta. Por favor, inténtalo de nuevo.",insufficientBalance:"Saldo insuficiente",maxPayoutExceeded:"Pago máximo excedido",notEnoughBalance:"Saldo insuficiente"},autobet:{configureAutobet:"Configurar Autobet",games:"Juegos",games10:"10 Juegos",games100:"100 Juegos",games25:"25 Juegos",games5:"5 Juegos",games50:"50 Juegos",increase:"Aumentar",infinite:"Infinito",onLoss:"En pérdida",onWin:"Al ganar",reset:"Restablecer",startAutobet:"Iniciar Autobet",stopAutobet:"Detener Autobet",stopOnLoss:"Detener en pérdida",stopOnProfit:"Detener en ganancia"},clipboard:{linkCopied:"¡Enlace copiado al portapapeles!"},common:{auto:"Auto",back:"Atrás",balance:"Saldo",bet:"Monto de la apuesta",betAmount:"Monto de la apuesta",cancel:"Cancelar",cashOut:"Retirar fondos",classic:"Clásico",confirm:"Confirmar",copied:"Copiado",currency:"Moneda",deposit:"Depósito",disableHotkeys:"Desactivar atajos de teclado",disableMaxBet:"Desactivar apuesta máxima",enableHotkeys:"Activar atajos de teclado",enableMaxBet:"Habilitar apuesta máxima",footerNavigation:"Navegación de pie de página",gameInfo:"Información del juego",gameName:"Nombre del juego",high:"Alto",history:"Historial",hotkeys:"Teclas rápidas",id:"ID",instantBet:"Apuesta instantánea",loading:"Cargando...",loadMore:"Cargar más",lobby:"Volver al Lobby",low:"Bajo",manual:"Manual",max:"MAX",medium:"Medio",multiplier:"Multiplicador",payout:"Pago",placeBet:"Realizar apuesta",profit:"Ganancia",profitOnWin:"Ganancia en victoria",provablyFair:"Demostrablemente Justo",risk:"Riesgo",roundId:"ID de ronda",saveChanges:"Guardar cambios",shareReplay:"Compartir repetición",siteInformation:"Información del juego",space:"ESPACIO",support:"Soporte",targetMultiplier:"Multiplicador",thisFieldIsRequired:"Este campo es obligatorio",timestamp:"Tiempo",toggleHotkeys:"Alternar teclas rápidas",viewFairnessInformation:"Ver información de imparcialidad",viewHistory:"Ver historial",volume:"Volumen",winChance:"Probabilidad de ganar"},errors:{dice:{multiplierRange:"Debe estar entre {min} y {max}",winChanceRange:"Debe estar entre {min} y {max}"},noWheelData:"No hay datos de la rueda disponibles",requestDropped:"Solicitud cancelada"},fairness:{activeClientSeed:"Semilla de cliente activa",enterClientSeed:"Ingresa clientSeed",enterProof:"Ingresar prueba",enterPublicKey:"Ingresar clave pública",enterRandomness:"Ingresar Aleatoriedad",enterRequest:"Ingresar solicitud",info:{p1:"El resultado de cada ronda proviene de aleatoriedad verificable, no de lógica oculta del servidor. Construimos una semilla determinista a partir de valores únicos de tu ronda: gameId, tenantId, tenantUserId, un nonce incremental (uno por cada ronda completada), además de tu clientSeed. Esto garantiza que cada ronda sea única y reproducible: mismos datos de entrada → misma secuencia aleatoria → mismo resultado.",p2:"Esa semilla se ejecuta a través de una Función Aleatoria Verificable de Curva Elíptica (ECVRF) según el borrador de la especificación IETF draft-irtf-cfrg-vrf-15. Nuestro servidor utiliza su clave privada para producir un valor aleatorio y una prueba criptográfica (proofString). Cualquier persona con nuestra clave pública puede verificar de forma independiente esa prueba para las entradas dadas, confirmando que la aleatoriedad proviene de la semilla y que no fue manipulada. El SDK es TypeScript, mientras que la criptografía principal utiliza la biblioteca fastcrypto de Rust a través de NAPI-RS para rendimiento y seguridad.",p3:"Una vez verificado, la salida del VRF alimenta un generador determinista de bytes aleatorios (hashSequence). Los juegos transforman esos bytes en resultados utilizando una lógica determinista e imparcial. Debido a que el proceso es determinista y el nonce avanza en cada ronda completada, obtienes tanto auditorías reproducibles (recrear exactamente la misma ronda) como aleatoriedad nueva y no repetitiva cada vez.",p4:"Después de una ronda, tienes las entradas (incluyendo tu clientSeed y el nonce de la ronda), la salida de VRF, el proofString y nuestra clave pública. Utiliza cualquier verificador ECVRF o nuestras bibliotecas para: (1) verificar la prueba con las entradas y la clave pública, y (2) regenerar la misma hashSequence y resultado. Nuestra clave privada nunca sale de los servidores seguros; la clave pública es segura para usar del lado del cliente en comprobaciones independientes.",step1Desc:"Combinamos gameId, tenantId, tenantUserId, un nonce por ronda y tu clientSeed. Los mismos datos de entrada siempre producen el mismo flujo aleatorio y resultado.",step1Title:"Semilla determinista",step2Title:"Generar aleatoriedad",step3Desc:"Cualquiera puede verificar el proofString para las entradas dadas usando nuestra clave pública. Esto confirma que la aleatoriedad coincide con la semilla y no fue manipulada.",step3Title:"Verificar prueba",step4Title:"Derivar Resultados",step5Title:"Reproducción"},invalidGame:"Tipo de juego proporcionado no válido.",learnMore:"Aprende más",newClientSeed:"Nueva clientSeed",noBettingHistory:"Sin historial de apuestas",outcomeCalculationInfo:"Este juego utiliza un algoritmo demostrablemente justo que garantiza que el resultado sea justo y transparente.",outcomeNotVerified:"No se pudo verificar el resultado de este juego. Verifica que hayas ingresado la información correcta e inténtalo de nuevo.",outcomeVerified:"El resultado de esta ronda ha sido verificado con nuestra clave pública y es demostrablemente justo.",proof:"Prueba",publicKey:"Clave pública activa",randomness:"Aleatoriedad",request:"Solicitud",saveClientSeed:"Guardar Client Seed",verifyOutcome:"Verificar resultado"},gameInfo:{advancedDice:{how1:"Selecciona tu modo de tirada: Dentro, Fuera o Entre.",how2:"Arrastra los controles para definir tu(s) zona(s) ganadora(s).",how3:"Establece tu cantidad de apuesta y realiza tu apuesta.",how4:"Se genera un número aleatorio entre 0 y 100.",how5:"Gana si el resultado cae dentro de tu(s) zona(s) elegida(s).",overview:"Advanced Dice te permite establecer zonas ganadoras personalizadas. Elige Dentro para ganar cuando el resultado caiga dentro de tu rango, Fuera para ganar cuando caiga más allá de tu rango, o Entre para dividir en dos zonas ganadoras.",provablyFair:"Nuestro sistema de aleatoriedad verificable genera cada resultado de Advanced Dice. Después de cada ronda, puedes ver las entradas y la prueba, verificar el resultado con nuestra clave pública y reproducir el mismo resultado.",strategyTip:"Las zonas más amplias ofrecen victorias más frecuentes pero multiplicadores más pequeños. Las zonas estrechas arriesgan más pero pagan más. El modo Entre te permite apuntar a dos rangos para estrategias flexibles."},diamonds:{how1:"Establece el monto de tu apuesta y realiza tu apuesta.",how2:"Cinco Diamonds se revelan de un conjunto fijo de tipos de gemas.",how3:"Tu resultado se evalúa como una mano de póker: pares, dos pares, trío, full house, póker y quintilla.",how4:"Cada tipo de mano tiene su propio multiplicador; las manos de mayor valor otorgan multiplicadores más altos, mientras que no formar ninguna mano paga 0X.",how5:"Tu pago es tu apuesta multiplicada por el multiplicador mostrado para la mano resultante.",overview:"Diamonds es un juego de emparejamiento de cinco carretes. Cada ronda revela cinco diamantes de un conjunto de diferentes tipos de gemas. Tu objetivo es obtener combinaciones al estilo póker: pares, tríos, fulles, y así sucesivamente.",provablyFair:"Nuestro sistema de aleatoriedad verificable selecciona cada resultado de Diamonds. Después de cada ronda, puedes ver los valores aleatorios subyacentes y la prueba, verificar el resultado con nuestra clave pública y reproducir la misma mano.",strategyTip:"Diamonds es un juego de alta volatilidad y cuotas fijas en el que buscas manos grandes al estilo del póker. Tu principal control es decidir qué tan agresivo quieres ser. Utiliza apuestas pequeñas y constantes si quieres superar rachas secas, o aumenta el tamaño de tu apuesta ocasionalmente cuando busques manos premium."},dice:{how1:"Elige tirar por debajo o tirar por encima.",how2:"Establece tu número objetivo.",how3:"Establece el monto de tu apuesta y realiza tu apuesta.",how4:"Generamos un resultado aleatorio (mostrado en el juego en la escala de 0 a 99.99).",how5:"Ganas si el resultado está en el rango que elegiste.",how6:"Tu pago es la apuesta x el multiplicador mostrado, que se actualiza a medida que mueves el control deslizante.",overview:"Establece un número objetivo y elige si la tirada caerá por debajo o por encima de ese número. Mover el control deslizante cambia tu probabilidad de ganar y el multiplicador: una probabilidad más alta reduce el multiplicador, una probabilidad más baja lo aumenta. Cada ronda es una tirada independiente en la escala del juego.",provablyFair:"Nuestro sistema de aleatoriedad verificable genera cada lanzamiento de Dice. Después de cada ronda, puedes ver las entradas y la prueba, verificar el resultado con nuestra clave pública y reproducir el mismo resultado.",strategyTip:"Elige tu volatilidad. Una menor probabilidad de ganar ofrece multiplicadores más altos pero premios más raros. Una mayor probabilidad de ganar ofrece multiplicadores más bajos pero premios más frecuentes. Ajusta el tamaño de tus apuestas a tu saldo para obtener oscilaciones más estables."},keno:{how1:"Elige de 1 a 10 casillas en el tablero de 1 a 40.",how2:"Establece el monto de tu apuesta y realiza tu apuesta.",how3:"Sorteamos 10 números ganadores; tus coincidencias están resaltadas.",how4:"Los pagos dependen de cuántas casillas seleccionaste y cuántos aciertos tuviste; consulta la tabla de pagos.",how5:"Nunca puedes acertar más números de los que seleccionaste, y la selección máxima es 10.",overview:"Elige tus números de la suerte e intenta acertar el sorteo. Puedes elegir de 1 a 10 números del 1 al 40, y luego sorteamos 10 números. Cuantos más de tus números aciertes, mayor será tu pago.",provablyFair:"Nuestro sistema de aleatoriedad verificable genera cada sorteo de Keno. Después de cada ronda, puedes ver las entradas y la prueba, verificar el resultado con nuestra clave pública y reproducir el mismo resultado.",strategyTip:"Elige tu volatilidad. Elegir menos casillas significa que las ganancias serán más raras pero con multiplicadores mucho mayores. Más casillas ofrecen aciertos más frecuentes pero con menores retornos promedio por acierto. Un rango intermedio equilibra la frecuencia de aciertos y el pago. Ajusta el tamaño de tu apuesta según tu preferencia de riesgo y tu saldo."},limbo:{how1:"Establece tu multiplicador objetivo.",how2:"Establece el monto de tu apuesta y realiza tu apuesta.",how3:"Generamos un multiplicador de resultado aleatorio.",how4:"Ganas si el resultado es mayor o igual a tu objetivo.",how5:"Tu pago es la apuesta multiplicada por tu multiplicador objetivo; de lo contrario, pierdes tu apuesta.",overview:"En Limbo, estableces tu pago deseado y el juego genera un único multiplicador de resultado aleatorio. Si el resultado es al menos tu objetivo, ganas. Si es menor, pierdes. Una mayor probabilidad reduce el multiplicador; una menor probabilidad lo aumenta.",provablyFair:"Nuestro sistema de aleatoriedad verificable genera cada resultado de Limbo. Después de cada ronda, puedes ver las entradas y la prueba, verificar el resultado con nuestra clave pública y reproducir el mismo resultado.",strategyTip:"Los objetivos más bajos ganan con más frecuencia pero pagan menos, mientras que los objetivos más altos aciertan raramente pero pagan mucho más. Considera un objetivo fijo por sesión o mezcla apuestas ocasionales de alto riesgo, y ajusta el tamaño de las apuestas de manera consistente para gestionar la varianza."},limitContent:"El multiplicador máximo alcanzable para este juego es {multiplier}X. El pago máximo alcanzable es {payout}",limitTitle:"Límites",mines:{how1:"Elige el número de minas para esta ronda.",how2:"Establece el monto de tu apuesta y realiza tu apuesta.",how3:"Haz clic en las casillas para revelarlas: una casilla segura aumenta tu multiplicador; una mina termina la ronda.",how4:"Puedes retirar en cualquier momento para asegurar tu multiplicador actual.",how5:"Tu pago es la apuesta multiplicada por el multiplicador actual cuando te retiras.",how6:"La ronda termina cuando cobras o cuando se revela una mina.",overview:"Mines consiste en elegir casillas seguras y decidir cuándo retirar tus ganancias. Antes de que comience la ronda, elige cuántas minas estarán ocultas en el tablero. Cada casilla segura que descubras aumenta tu multiplicador. Si pisas una mina, la ronda termina sin premio.",provablyFair:"Nuestro sistema de aleatoriedad verificable genera la disposición oculta de minas de cada tablero. Después de cada ronda, puedes ver las entradas y la prueba, verificar el resultado con nuestra clave pública y reproducir el mismo resultado.",strategyTip:"Elige tu volatilidad. Menos minas significan revelaciones más seguras y multiplicadores más pequeños por paso. Más minas llevan a revelaciones más arriesgadas con multiplicadores más grandes. Establece un objetivo o usa un stop-loss para controlar las variaciones. Mantener un tamaño de apuesta constante y retiros disciplinados ayuda a mantener la varianza bajo control."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"El porcentaje de Retorno al Jugador (RTP) para este juego es {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Estrategia",tutorial:"Tutorial",wheel:{how1:"Selecciona tu nivel de riesgo y el número de segmentos.",how2:"Establece el monto de tu apuesta y realiza tu apuesta.",how3:"La rueda gira y cae en un segmento.",how4:"Tu pago es la apuesta × el multiplicador que aparece en el segmento donde se detiene la rueda.",how5:"Cada segmento tiene un multiplicador diferente según el nivel de riesgo y la cantidad de segmentos que elijas.",overview:"Gira la rueda y observa dónde cae. Elige tu nivel de riesgo y el número de segmentos antes de cada giro: un menor riesgo te da más victorias frecuentes con multiplicadores más pequeños; un mayor riesgo te da victorias más raras con multiplicadores más grandes.",provablyFair:"Nuestro sistema de aleatoriedad verificable genera cada resultado de Wheel. Después de cada ronda, puedes ver las entradas y la prueba, verificar el resultado con nuestra clave pública y reproducir el mismo resultado.",strategyTip:"Bajo riesgo ofrece ganancias constantes y más pequeñas. Riesgo medio equilibra la frecuencia y el pago. Alto riesgo apunta a multiplicadores raros pero enormes. Más segmentos aumentan el potencial máximo pero reducen la frecuencia de las ganancias."},roulette:{how1:"Haz clic en la cuadrícula para colocar fichas en tus apuestas elegidas.",how2:"Ajusta tu cantidad de apuesta por clic con los botones 1/2 y 2X.",how3:"Realiza tu apuesta para girar la ruleta.",how4:"La bola cae en un número aleatorio del 0 al 36 (o 00 en la americana).",how5:"Las apuestas ganadoras pagan según sus probabilidades; todas las demás fichas se pierden.",overview:"Coloca fichas en la cuadrícula de apuestas y gira la ruleta. Apuesta a números individuales, grupos de números, colores o par/impar. La bola cae en una casilla aleatoria, y las apuestas acertadas pagan según sus probabilidades.",provablyFair:"Nuestro sistema de aleatoriedad verificable genera cada giro de ruleta. Después de cada ronda, puedes ver las entradas y la prueba, verificar el resultado con nuestra clave pública y reproducir el mismo resultado.",strategyTip:"Las apuestas externas (rojo/negro, par/impar) ofrecen casi 50% de probabilidad de ganar con pago de 2X. Las apuestas internas a números individuales pagan hasta 36X pero aciertan raramente. Distribuye tus fichas para equilibrar riesgo y recompensa."}},games:{advancedDice:{between:"Entre",boundsLower:"Límite inferior",boundsUpper:"Límite superior",inside:"Dentro",outside:"Fuera",rollMode:"Modo de tirada",secondBoundsLower:"Segundo límite inferior",secondBoundsUpper:"Segundo límite superior"},dice:{rollOver:"Lanzar sobre",rollUnder:"Tirar por debajo"},keno:{autoPick:"Selección automática",clearTable:"Borrar",kenoGameGrid:"Cuadrícula del juego Keno",kenoNumber:"Número de Keno {value}",selectAtLeastOneTile:"Selecciona al menos una casilla",selectTileToAutobet:"Selecciona al menos una casilla"},limbo:{multiplierError:"Debe estar entre {min} y {max}",targetMultiplier:"Multiplicador",winChanceError:"Debe estar entre {min} y {max}"},mines:{cashout:"Retirar fondos",gem:"Gema",gems:"Gemas",mine:"Mina",mines:"Minas",nextGem:"Gema siguiente",selectRandomTile:"Seleccionar casilla aleatoria",selectTileToAutobet:"Selecciona al menos una casilla",tile:"Azulejo",unrevealed:"No revelado"},wheel:{segments:"Segmentos"},roulette:{chipValue:"Valor De La Ficha",totalBetAmount:"Apuesta Total"}},hotkeys:{clearBets:"Limpiar Apuestas",doubleBet:"Duplicar monto de apuesta",doubleChipValue:"Duplicar Valor de Ficha",doubleTotalBet:"Duplicar Apuesta Total",halveBet:"Reducir a la mitad la cantidad de la apuesta",halveChipValue:"Reducir Valor de Ficha",halveTotalBet:"Reducir Apuesta Total",higherTarget:"Objetivo más alto",info:"Cuando las teclas rápidas están habilitadas, permanecerán activas para este juego hasta que se desactiven. Aunque algunos juegos comparten combinaciones de teclas similares, siempre se recomienda confirmar las teclas rápidas para cada juego.",lowerTarget:"Objetivo inferior",makeBet:"Realizar apuesta",resetChipValue:"Restablecer Valor de Ficha",toggleWinCondition:"Alternar condición de victoria",undo:"Deshacer",zeroBet:"Cantidad de apuesta cero"},modals:{betResult:"Resultado de la apuesta",fairnessAndHistory:"Transparencia e Historial",gameArea:"Área de Juego",gameControls:"Controles del juego",gameInfo:"Información del juego"}}});var D4=D1((_n,qi)=>{qi.exports={accessibility:{sliderValue:"{value} / {max}"},alerts:{autobetStarted:"Autobet-tila käynnistetty",autobetStopped:"Autobet-tila pysäytetty",betAmountAboveMaxBet:"Suurin panos on {value}",betAmountBelowMinBet:"Minimipanos on {value}",betLimitReached:"Panosraja saavutettu",errorProcessingBet:"Vedon käsittelyssä tapahtui virhe. Yritä uudelleen.",failedToLoadBetData:"Vedon tietojen lataaminen epäonnistui",gameError:"Vedon käsittelyssä tapahtui virhe. Yritä uudelleen.",insufficientBalance:"Riittämätön saldo",maxPayoutExceeded:"Enimmäismaksu ylitetty",notEnoughBalance:"Ei tarpeeksi saldoa"},autobet:{configureAutobet:"Määritä Autobet",games:"Pelit",games10:"10 peliä",games100:"100 peliä",games25:"25 peliä",games5:"5 peliä",games50:"50 peliä",increase:"Lisää",infinite:"Ääretön",onLoss:"Tappion sattuessa",onWin:"Voitolla",reset:"Nollaa",startAutobet:"Aloita Autobet",stopAutobet:"Pysäytä Autobet",stopOnLoss:"Pysäytä tappiolla",stopOnProfit:"Pysähdy voittoon"},clipboard:{linkCopied:"Linkki kopioitu leikepöydälle!"},common:{auto:"Auto",back:"Takaisin",balance:"Saldo",bet:"Panostus",betAmount:"Panostus",cancel:"Peruuta",cashOut:"Lunasta voitot",classic:"Klassinen",confirm:"Vahvista",copied:"Kopioitu",currency:"Valuutta",deposit:"Talletus",disableHotkeys:"Poista pikanäppäimet käytöstä",disableMaxBet:"Poista maksimipanos käytöstä",enableHotkeys:"Ota pikanäppäimet käyttöön",enableMaxBet:"Ota suurin panos käyttöön",footerNavigation:"Alatunnisteen navigointi",gameInfo:"Pelitiedot",gameName:"Pelin nimi",high:"Korkea",history:"Historia",hotkeys:"Pikanäppäimet",id:"ID",instantBet:"Välitön veto",loading:"Ladataan...",loadMore:"Lataa lisää",lobby:"Takaisin aulaan",low:"Matala",manual:"Käsikirja",max:"MAX",medium:"Keskitaso",multiplier:"Kerroin",payout:"Voitto",placeBet:"Aseta panos",profit:"Voitto",profitOnWin:"Voitto voitosta",provablyFair:"Todistettavasti reilu",risk:"Riski",roundId:"Kierroksen ID",saveChanges:"Tallenna muutokset",shareReplay:"Jaa uudelleenpeluu",siteInformation:"Pelitiedot",space:"SPACE",support:"Tuki",targetMultiplier:"Kerroin",thisFieldIsRequired:"Tämä kenttä on pakollinen",timestamp:"Aika",toggleHotkeys:"Vaihda pikanäppäimiä",viewFairnessInformation:"Näytä reiluustiedot",viewHistory:"Näytä historia",volume:"Äänenvoimakkuus",winChance:"Voittomahdollisuus"},errors:{dice:{multiplierRange:"Täytyy olla välillä {min} ja {max}",winChanceRange:"Täytyy olla välillä {min} ja {max}"},noWheelData:"Pyörätietoja ei saatavilla",requestDropped:"Pyyntö hylättiin"},fairness:{activeClientSeed:"Aktiivinen clientSeed",enterClientSeed:"Syötä client seed",enterProof:"Syötä todiste",enterPublicKey:"Syötä julkinen avain",enterRandomness:"Syötä satunnaisuus",enterRequest:"Syötä pyyntö",info:{p1:"Jokaisen kierroksen tulos perustuu todennettavaan satunnaisuuteen, ei piilotettuun palvelinlogiikkaan. Rakennamme deterministisen siemenen arvoista, jotka ovat ainutlaatuisia kierroksellesi — gameId, tenantId, tenantUserId, kasvava nonce (yksi jokaista suoritettua kierrosta kohden) sekä clientSeed. Tämä takaa, että jokainen kierros on ainutlaatuinen ja toistettavissa: samat syötteet → sama satunnaisvirta → sama lopputulos.",p2:"Tuo siemen ajetaan Elliptisen Käyrän Todennettavan Satunnaisfunktion (ECVRF) läpi IETF:n luonnoksen draft-irtf-cfrg-vrf-15 mukaisesti. Palvelimemme käyttää yksityistä avaintaan tuottaakseen satunnaisarvon ja kryptografisen todisteen (proofString). Kuka tahansa julkisella avaimellamme voi itsenäisesti varmistaa todisteen annetuilla syötteillä—vahvistaen, että satunnaisuus tuli siemenestä eikä sitä ole peukaloitu. SDK on TypeScript, kun taas ydinsalaus käyttää fastcrypto Rust-kirjastoa NAPI-RS:n kautta suorituskyvyn ja turvallisuuden takaamiseksi.",p3:"Kun varmennus on suoritettu, VRF:n tuottama tulos siementää deterministisen satunnaisbytien generaattorin (hashSequence). Pelit muuttavat nämä bitit lopputuloksiksi käyttäen determinististä ja puolueetonta logiikkaa. Koska prosessi on deterministinen ja nonce etenee jokaisen suoritetun kierroksen jälkeen, saat sekä toistettavia auditointeja (luo sama kierros täsmälleen uudelleen) että uutta, toistumatonta satunnaisuutta joka kerta.",p4:"Kierroksen jälkeen sinulla on syötteet (mukaan lukien oma clientSeed ja kierroksen nonce), VRF-tulos, proofString ja meidän julkinen avain. Käytä mitä tahansa ECVRF-varmenninta tai meidän kirjastoja: (1) varmistaaksesi todisteen syötteitä ja julkista avainta vastaan, ja (2) luodaksesi uudelleen saman hashSequence:n ja lopputuloksen. Yksityinen avaimemme ei koskaan poistu turvallisilta palvelimilta; julkista avainta on turvallista käyttää asiakaspäässä itsenäisiin tarkistuksiin.",step1Desc:"Yhdistämme gameId:n, tenantId:n, tenantUserId:n, kierroskohtaisen nonce:n ja clientSeed:isi. Samat syötteet tuottavat aina saman satunnaisvirran ja lopputuloksen.",step1Title:"Deterministinen siemen",step2Title:"Luo satunnaisuutta",step3Desc:"Kuka tahansa voi tarkistaa proofStringin annetuilla syötteillä julkisella avaimellamme. Tämä varmistaa, että satunnaisuus vastaa siementä eikä siihen ole kajottu.",step3Title:"Vahvista todiste",step4Title:"Johda tulokset",step5Title:"Lisääntyminen"},invalidGame:"Virheellinen pelityyppi annettu.",learnMore:"Lisätietoja",newClientSeed:"Uusi asiakassiementä",noBettingHistory:"Ei vedonlyöntihistoriaa",outcomeCalculationInfo:"Tämä peli käyttää todistettavasti reilua algoritmia, joka varmistaa, että lopputulos on reilu ja läpinäkyvä.",outcomeNotVerified:"Tämän pelin tulosta ei voitu varmistaa. Tarkista, että olet syöttänyt oikeat tiedot, ja yritä uudelleen.",outcomeVerified:"Tämän kierroksen tulos on varmennettu julkisella avaimellamme ja se on todistettavasti reilu.",proof:"Todiste",publicKey:"Aktiivinen julkinen avain",randomness:"Satunnaisuus",request:"Pyyntö",saveClientSeed:"Tallenna asiakassiementen",verifyOutcome:"Vahvista tulos"},gameInfo:{advancedDice:{how1:"Valitse heittotila: Sisällä, Ulkona tai Välissä.",how2:"Vedä liukusäätimiä määrittääksesi voittoalueesi.",how3:"Aseta panoksesi ja lyö vetoa.",how4:"Satunnaisluku välillä 0-100 generoidaan.",how5:"Voitat, jos tulos osuu valitsemallesi alueelle.",overview:"Advanced Dice antaa sinun asettaa mukautettuja voittoalueita. Valitse Sisällä voittaaksesi, kun tulos osuu alueellesi, Ulkona voittaaksesi, kun se menee alueen ulkopuolelle, tai Välissä jakaaksesi kahdeksi voittoalueeksi.",provablyFair:"Todennettava satunnaisuusjärjestelmämme tuottaa jokaisen Advanced Dice -tuloksen. Jokaisen kierroksen jälkeen voit tarkastella syötteitä ja todistetta, vahvistaa tuloksen julkisella avaimellamme ja toistaa saman tuloksen.",strategyTip:"Laajemmat alueet tarjoavat useammin voittoja, mutta pienemmillä kertoimilla. Kapeat alueet ovat riskialttiimpia, mutta maksavat enemmän. Välissä-tila mahdollistaa joustavat strategiat kahdella alueella."},diamonds:{how1:"Aseta panoksesi määrä ja aseta panos.",how2:"Viisi timanttia paljastetaan kiinteästä jalokivityyppien joukosta.",how3:"Tuloksesi arvioidaan kuten pokerikäsi: pari, kaksi paria, kolmoset, täyskäsi, neloset ja viitoset.",how4:"Jokaisella kädentyypillä on oma kertoimensa; arvokkaammat kädet antavat suurempia kertoimia, kun taas ilman valmista kättä maksetaan 0X.",how5:"Voittosi on panoksesi kerrottuna näytetyllä kertoimella saadulle kädelle.",overview:"Diamonds on viisirullainen yhdistelypeli. Jokaisella kierroksella paljastetaan viisi timanttia eri jalokivityypeistä. Tavoitteesi on saada pokerityylisiä yhdistelmiä – pareja, kolmosia, täyskäsiä ja niin edelleen.",provablyFair:"Todennettavissa oleva satunnaisuusjärjestelmämme valitsee jokaisen Diamonds-tuloksen. Jokaisen kierroksen jälkeen voit tarkastella taustalla olevia satunnaisarvoja ja todistetta, varmistaa lopputuloksen julkisella avaimellamme sekä toistaa saman käden.",strategyTip:"Diamonds on korkean volatiliteetin kiinteäkertoiminen peli, jossa tavoitteena on saada suuria, pokerityylisiä käsiä. Tärkein valintasi on, kuinka aggressiivinen haluat olla. Käytä pienempiä, tasaisia panoksia, jos haluat kestää kuivempia jaksoja, tai nosta panosta silloin tällöin, kun tavoittelet huippukäsiä."},dice:{how1:"Valitse roll under tai roll over.",how2:"Aseta tavoitenumerosi.",how3:"Aseta panoksesi määrä ja aseta panos.",how4:"Luomme yhden satunnaisen tuloksen (näkyy pelissä asteikolla 0–99,99).",how5:"Voitat, jos tulos on valitsemallasi alueella.",how6:"Voittosi on panos kerrottuna näytetyllä kertoimella, joka päivittyy, kun liikutat liukusäädintä.",overview:"Aseta tavoitenumero ja valitse, osuuko heitto sen alle vai yli. Liukusäätimen siirtäminen muuttaa voittomahdollisuuttasi ja kerrointa—suurempi mahdollisuus pienentää kerrointa, pienempi mahdollisuus kasvattaa sitä. Jokainen kierros on itsenäinen heitto pelin asteikolla.",provablyFair:"Todennettavissa oleva satunnaisuusjärjestelmämme luo jokaisen Dice-heittosi. Jokaisen kierroksen jälkeen voit tarkastella syötteitä ja todistetta, varmistaa tuloksen julkisella avaimellamme ja toistaa saman tuloksen.",strategyTip:"Valitse volatiliteettisi. Pienempi voittotodennäköisyys antaa suurempia kertoimia, mutta voitot ovat harvinaisempia. Suurempi voittotodennäköisyys antaa pienempiä kertoimia, mutta voittoja tulee useammin. Sovita panoksesi pelikassaasi tasaisempien vaihteluiden saavuttamiseksi."},keno:{how1:"Valitse 1–10 ruutua 1–40 ruudun laudalta.",how2:"Aseta panoksesi määrä ja aseta panos.",how3:"Arvomme 10 voittavaa numeroa; osumasi on korostettu.",how4:"Voitot riippuvat siitä, kuinka monta ruutua valitsit ja kuinka monta osumaa sait—tarkista voittotaulukko.",how5:"Et voi koskaan osua useampaan numeroon kuin olet valinnut, ja maksimivalinta on 10.",overview:"Valitse onnennumerosi ja yritä osua arvontaan. Voit valita 1–10 numeroa väliltä 1–40, ja sen jälkeen arvomme 10 numeroa. Mitä useampi valintasi osuu, sitä suurempi voittosi on.",provablyFair:"Järjestelmämme tuottaa todennettavissa olevan satunnaisuuden jokaiselle Keno-arvonnalle. Jokaisen kierroksen jälkeen voit tarkastella syötteitä ja todistetta, varmistaa tuloksen julkisella avaimellamme ja tuottaa saman tuloksen uudelleen.",strategyTip:"Valitse volatiliteettisi. Vähemmän paikkoja tarkoittaa harvempia voittoja, mutta paljon suurempia kertoimia. Useammat paikat tuovat useammin osumia, mutta pienempiä keskimääräisiä tuottoja per osuma. Keskiväli tasapainottaa osumatahtia ja voittoja. Säädä panoksesi vastaamaan riskimieltymyksiäsi ja pelikassaasi."},limbo:{how1:"Aseta tavoitekerroin.",how2:"Aseta panoksesi määrä ja aseta panos.",how3:"Generoimme yhden satunnaisen tuloskertoimen.",how4:"Voitat, jos tulos on suurempi tai yhtä suuri kuin tavoitteesi.",how5:"Voittosi on panos kerrottuna tavoitekertoimellasi; muuten menetät panoksesi.",overview:"Limbo-pelissä asetat haluamasi voittokertoimen, ja peli arpoo yhden satunnaisen kertoimen. Jos tulos on vähintään tavoitteesi, voitat. Jos se on pienempi, häviät. Suurempi voittomahdollisuus laskee kerrointa; pienempi mahdollisuus nostaa sitä.",provablyFair:"Todennettavissa oleva satunnaisuusjärjestelmämme tuottaa jokaisen Limbo-tuloksen. Jokaisen kierroksen jälkeen voit tarkastella syötteitä ja todistetta, varmistaa tuloksen julkisella avaimellamme ja toistaa saman tuloksen.",strategyTip:"Alemmat kohteet voittavat useammin mutta maksavat vähemmän, kun taas korkeammat kohteet osuvat harvoin mutta maksavat huomattavasti enemmän. Harkitse kiinteän tavoitteen asettamista per istunto tai lisää silloin tällöin pitkäkestoisia vetoja, ja pidä panoskoot johdonmukaisina varianssin hallitsemiseksi."},limitContent:"Tämän pelin suurin mahdollinen kerroin on {multiplier}X. Suurin mahdollinen voittosumma on {payout}",limitTitle:"Rajat",mines:{how1:"Valitse tämän kierroksen miinojen määrä.",how2:"Aseta panoksesi määrä ja aseta panos.",how3:"Napsauta ruutuja paljastaaksesi ne: turvallinen ruutu kasvattaa kertoimesi; miina päättää kierroksen.",how4:"Voit kotiuttaa milloin tahansa lukitaksesi nykyisen kertoimesi.",how5:"Voittosi on panos kerrottuna nykyisellä kertoimella, kun nostat voitot.",how6:"Kierros päättyy, kun nostat voitot tai kun miina paljastuu.",overview:"Minesissa tavoitteena on valita turvallisia ruutuja ja päättää, milloin ottaa voitot ulos. Ennen kierroksen alkua valitse, montako miinaa laudalle piilotetaan. Jokainen paljastamasi turvallinen ruutu kasvattaa kerrointasi. Jos osut miinaan, kierros päättyy eikä voittoja makseta.",provablyFair:"Todennettavissa oleva satunnaisuusjärjestelmämme luo jokaisen pelilaudan piilotetun miinakentän. Jokaisen kierroksen jälkeen voit tarkastella syötteitä ja todistetta, varmistaa tuloksen julkisella avaimellamme ja toistaa saman lopputuloksen.",strategyTip:"Valitse volatiliteettisi. Vähemmän Mines-ruutuja tarkoittaa turvallisempia paljastuksia ja pienempiä kertoimia per askel. Enemmän Mines-ruutuja johtaa riskialttiimpiin paljastuksiin suuremmilla kertoimilla. Aseta tavoite tai käytä stop-lossia hallitaksesi vaihtelua. Johdonmukainen panostus ja kurinalainen kotiutus auttavat pitämään varianssin hallinnassa."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Tämän pelin palautusprosentti (RTP) on {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Strategia",tutorial:"Opas",wheel:{how1:"Valitse riskitasosi ja segmenttien määrä.",how2:"Aseta panoksesi määrä ja aseta panos.",how3:"Pyörä pyörii ja pysähtyy segmentille.",how4:"Voittosi on panos × kerroin, joka näkyy kohdassa, johon pyörä pysähtyy.",how5:"Jokaisella segmentillä on eri kerroin valitsemasi riskitason ja segmenttimäärän perusteella.",overview:"Pyöritä rulettia ja katso, mihin se pysähtyy. Valitse riskitasosi ja segmenttien määrä ennen jokaista pyöräytystä – matala riski tuottaa useammin voittoja pienemmillä kertoimilla; korkeampi riski tuo harvinaisempia voittoja suuremmilla kertoimilla.",provablyFair:"Todennettavissa oleva satunnaisuusjärjestelmämme tuottaa jokaisen Wheel-tuloksen. Jokaisen kierroksen jälkeen voit tarkastella syötteitä ja todistetta, varmistaa tuloksen julkisella avaimellamme sekä toistaa saman tuloksen.",strategyTip:"Matala riski tarjoaa tasaisia, pienempiä voittoja. Keskitasoinen riski tasapainottaa voittojen tiheyden ja maksun. Korkea riski tavoittelee harvinaisia mutta suuria kertoimia. Useammat segmentit kasvattavat maksimivoittopotentiaalia mutta pienentävät voittotaajuutta."},roulette:{how1:"Napsauta ruudukkoa asettaaksesi pelimerkkejä valitsemiisi vetoihin.",how2:"Säädä panoksesi määrää napsautusta kohden 1/2- ja 2X-painikkeilla.",how3:"Aseta panoksesi pyörittääksesi rulettia.",how4:"Pallo putoaa satunnaiseen numeroon 0–36 (tai 00 amerikkalaisessa).",how5:"Voittavat vedot maksetaan kertoimien mukaan; kaikki muut pelimerkit menetetään.",overview:"Aseta pelimerkkejä panosruudukkoon ja pyöritä rulettia. Veikkaa yksittäisiä numeroita, numeroryhmiä, värejä tai parillinen/pariton. Pallo putoaa satunnaiseen lokeroon, ja osuneet vedot maksetaan kertoimien mukaan.",provablyFair:"Todennettava satunnaisjärjestelmämme tuottaa jokaisen ruletin pyöräytyksen. Jokaisen kierroksen jälkeen voit tarkastella syötteitä ja todistetta, varmistaa tuloksen julkisella avaimellamme ja toistaa saman tuloksen.",strategyTip:"Ulkovedot (punainen/musta, parillinen/pariton) tarjoavat lähes 50% voittomahdollisuuden 2X-kertoimella. Sisävedot yksittäisiin numeroihin maksavat jopa 36X mutta osuvat harvoin. Hajota pelimerkkisi tasapainottaaksesi riskiä ja tuottoa."}},games:{advancedDice:{between:"Välillä",boundsLower:"Alaraja",boundsUpper:"Yläraja",inside:"Sisällä",outside:"Ulkopuolella",rollMode:"Heittotila",secondBoundsLower:"Toinen alaraja",secondBoundsUpper:"Toinen yläraja"},dice:{rollOver:"Heitä yli",rollUnder:"Heitä alle"},keno:{autoPick:"Automaattivalinta",clearTable:"Tyhjennä",kenoGameGrid:"Keno-peliruutu",kenoNumber:"Keno-numero {value}",selectAtLeastOneTile:"Valitse vähintään yksi laatta",selectTileToAutobet:"Valitse vähintään yksi laatta"},limbo:{multiplierError:"Täytyy olla välillä {min} ja {max}",targetMultiplier:"Kerroin",winChanceError:"Täytyy olla välillä {min} ja {max}"},mines:{cashout:"Lunasta voitot",gem:"Jalokivi",gems:"Jalokivet",mine:"Kaivos",mines:"Miinat",nextGem:"Seuraava jalokivi",selectRandomTile:"Valitse satunnainen ruutu",selectTileToAutobet:"Valitse vähintään yksi laatta",tile:"Laatta",unrevealed:"Paljastamaton"},wheel:{segments:"Segmentit"},roulette:{chipValue:"Pelimerkin Arvo",totalBetAmount:"Kokonaispanos"}},hotkeys:{clearBets:"Tyhjennä Panokset",doubleBet:"Tuplaa panos",doubleChipValue:"Tuplaa Pelimerkin Arvo",doubleTotalBet:"Tuplaa Kokonaispanos",halveBet:"Puolita panos",halveChipValue:"Puolita Pelimerkin Arvo",halveTotalBet:"Puolita Kokonaispanos",higherTarget:"Korkeampi tavoite",info:"Kun pikanäppäimet ovat käytössä, ne pysyvät päällä tässä pelissä, kunnes ne poistetaan käytöstä. Vaikka joissakin peleissä voi olla samanlaisia näppäinyhdistelmiä, on aina suositeltavaa tarkistaa pikanäppäimet jokaisessa pelissä erikseen.",lowerTarget:"Alempi tavoite",makeBet:"Aseta panos",resetChipValue:"Nollaa Pelimerkin Arvo",toggleWinCondition:"Vaihda voittotilaa",undo:"Kumoa",zeroBet:"Nolla panosumma"},modals:{betResult:"Vedon tulos",fairnessAndHistory:"Reiluus ja historia",gameArea:"Peliaula",gameControls:"Pelikontrollit",gameInfo:"Pelitiedot"}}});var C4=D1((at,Ti)=>{Ti.exports={accessibility:{sliderValue:"{value} sur {max}"},alerts:{autobetStarted:"Mode autobet démarré",autobetStopped:"Mode Autobet arrêté",betAmountAboveMaxBet:"La mise maximale est de {value}",betAmountBelowMinBet:"La mise minimale est de {value}",betLimitReached:"Limite de mise atteinte",errorProcessingBet:"Une erreur s'est produite lors du traitement de votre mise. Veuillez réessayer.",failedToLoadBetData:"Échec du chargement des données de pari",gameError:"Une erreur s'est produite lors du traitement de votre mise. Veuillez réessayer.",insufficientBalance:"Solde insuffisant",maxPayoutExceeded:"Paiement maximum dépassé",notEnoughBalance:"Solde insuffisant"},autobet:{configureAutobet:"Configurer Autobet",games:"Jeux",games10:"10 Jeux",games100:"100 Jeux",games25:"25 Jeux",games5:"5 Jeux",games50:"50 Jeux",increase:"Augmenter",infinite:"Infini",onLoss:"En cas de perte",onWin:"En cas de gain",reset:"Réinitialiser",startAutobet:"Démarrer Autobet",stopAutobet:"Arrêter l'Autobet",stopOnLoss:"Arrêter en cas de perte",stopOnProfit:"Arrêter en cas de profit"},clipboard:{linkCopied:"Lien copié dans le presse-papiers !"},common:{auto:"Auto",back:"Retour",balance:"Solde",bet:"Montant de la mise",betAmount:"Montant de la mise",cancel:"Annuler",cashOut:"Encaisser",classic:"Classique",confirm:"Confirmer",copied:"Copié",currency:"Devise",deposit:"Dépôt",disableHotkeys:"Désactiver les raccourcis clavier",disableMaxBet:"Désactiver la mise maximale",enableHotkeys:"Activer les raccourcis clavier",enableMaxBet:"Activer la mise maximale",footerNavigation:"Navigation du pied de page",gameInfo:"Infos du jeu",gameName:"Nom du jeu",high:"Élevé",history:"Historique",hotkeys:"Raccourcis clavier",id:"ID",instantBet:"Pari instantané",loading:"Chargement...",loadMore:"Charger plus",lobby:"Retour au Lobby",low:"Faible",manual:"Manuel",max:"MAX",medium:"Moyen",multiplier:"Multiplicateur",payout:"Paiement",placeBet:"Placer un pari",profit:"Profit",profitOnWin:"Profit en cas de gain",provablyFair:"Prouvé équitable",risk:"Risque",roundId:"ID de round",saveChanges:"Enregistrer les modifications",shareReplay:"Partager la rediffusion",siteInformation:"Informations sur le jeu",space:"ESPACE",support:"Assistance",targetMultiplier:"Multiplicateur",thisFieldIsRequired:"Ce champ est requis",timestamp:"Temps",toggleHotkeys:"Activer les raccourcis clavier",viewFairnessInformation:"Afficher les informations sur l'équité",viewHistory:"Voir l’historique",volume:"Volume",winChance:"Chance de gagner"},errors:{dice:{multiplierRange:"Doit être compris entre {min} et {max}",winChanceRange:"Doit être compris entre {min} et {max}"},noWheelData:"Aucune donnée de roue disponible",requestDropped:"Requête abandonnée"},fairness:{activeClientSeed:"Graine cliente active",enterClientSeed:"Entrez la graine client",enterProof:"Entrer la preuve",enterPublicKey:"Entrer la clé publique",enterRandomness:"Entrer l'aléa",enterRequest:"Saisir la demande",info:{p1:"Le résultat de chaque manche provient d’un hasard vérifiable, et non d’une logique serveur cachée. Nous construisons une graine déterministe à partir de valeurs uniques à votre manche—gameId, tenantId, tenantUserId, un nonce incrémental (un par manche terminée), ainsi que votre clientSeed. Cela garantit que chaque manche est unique et reproductible : mêmes entrées → même flux aléatoire → même résultat.",p2:"Cette graine est traitée par une Fonction Aléatoire Vérifiable à Courbe Elliptique (ECVRF) selon le brouillon de spécification IETF draft-irtf-cfrg-vrf-15. Notre serveur utilise sa clé privée pour produire une valeur aléatoire et une preuve cryptographique (proofString). Toute personne disposant de notre clé publique peut vérifier indépendamment cette preuve pour les entrées données—confirmant que l’aléa provient bien de la graine et n’a pas été altéré. Le SDK est en TypeScript, tandis que la cryptographie principale utilise la bibliothèque Rust fastcrypto via NAPI-RS pour la performance et la sécurité.",p3:"Une fois vérifié, la sortie du VRF alimente un générateur déterministe d'octets aléatoires (hashSequence). Les jeux transforment ces octets en résultats à l'aide d'une logique déterministe et impartiale. Comme le processus est déterministe et que le nonce avance à chaque manche terminée, vous obtenez à la fois des audits rejouables (recréer exactement la même manche) et une nouvelle aléa non répétitive à chaque fois.",p4:"Après un tour, vous disposez des entrées (y compris votre clientSeed et le nonce du tour), de la sortie VRF, du proofString et de notre clé publique. Utilisez n'importe quel vérificateur ECVRF ou nos bibliothèques pour : (1) vérifier la preuve par rapport aux entrées et à la clé publique, et (2) régénérer la même hashSequence et le même résultat. Notre clé privée ne quitte jamais les serveurs sécurisés ; la clé publique peut être utilisée côté client pour des vérifications indépendantes.",step1Desc:"Nous combinons gameId, tenantId, tenantUserId, un nonce par tour et votre clientSeed. Les mêmes entrées produisent toujours le même flux aléatoire et le même résultat.",step1Title:"Graine déterministe",step2Title:"Générer de l’aléatoire",step3Desc:"N'importe qui peut vérifier le proofString pour les entrées données en utilisant notre clé publique. Cela confirme que l'aléa correspond à la seed et n'a pas été altéré.",step3Title:"Vérifier la preuve",step4Title:"Dériver les résultats",step5Title:"Reproduction"},invalidGame:"Type de jeu fourni invalide.",learnMore:"En savoir plus",newClientSeed:"Nouveau clientSeed",noBettingHistory:"Aucun historique de paris",outcomeCalculationInfo:"Ce jeu utilise un algorithme prouvablement équitable qui garantit que le résultat est juste et transparent.",outcomeNotVerified:"Le résultat de ce jeu n'a pas pu être vérifié. Vérifiez que vous avez saisi les bonnes informations et réessayez.",outcomeVerified:"Le résultat de ce tour a été vérifié avec notre clé publique et est prouvablement équitable.",proof:"Preuve",publicKey:"Clé publique active",randomness:"Aléatoire",request:"Demande",saveClientSeed:"Enregistrer la graine client",verifyOutcome:"Vérifier le résultat"},gameInfo:{advancedDice:{how1:"Sélectionnez votre mode de lancer : Intérieur, Extérieur ou Entre.",how2:"Faites glisser les curseurs pour définir vos zones gagnantes.",how3:"Définissez votre mise et placez votre pari.",how4:"Un nombre aléatoire entre 0 et 100 est généré.",how5:"Gagnez si le résultat tombe dans vos zones choisies.",overview:"Advanced Dice vous permet de définir des zones gagnantes personnalisées. Choisissez Intérieur pour gagner quand le résultat tombe dans votre plage, Extérieur pour gagner quand il tombe en dehors, ou Entre pour diviser en deux zones gagnantes.",provablyFair:"Notre système de hasard vérifiable génère chaque résultat d'Advanced Dice. Après chaque tour, vous pouvez consulter les entrées et la preuve, vérifier le résultat avec notre clé publique et reproduire le même résultat.",strategyTip:"Les zones plus larges offrent des gains plus fréquents mais des multiplicateurs plus petits. Les zones étroites risquent plus mais paient plus. Le mode Entre vous permet de cibler deux plages pour des stratégies flexibles."},diamonds:{how1:"Définissez le montant de votre mise et placez votre pari.",how2:"Cinq diamants sont révélés à partir d’un ensemble fixe de types de gemmes.",how3:"Votre résultat est évalué comme une main de poker : paire, deux paires, brelan, full, carré et quinte.",how4:"Chaque type de main a son propre multiplicateur ; les mains de plus grande valeur offrent des multiplicateurs plus élevés, tandis qu’aucune combinaison ne paie 0X.",how5:"Votre gain est votre mise multipliée par le multiplicateur affiché pour la main obtenue.",overview:"Diamonds est un jeu de correspondance à cinq rouleaux. À chaque tour, cinq diamants sont révélés parmi différents types de gemmes. Votre objectif est d’obtenir des combinaisons de type poker : paires, brelans, fulls, et ainsi de suite.",provablyFair:"Notre système de hasard vérifiable sélectionne chaque résultat de diamant. Après chaque manche, vous pouvez consulter les valeurs aléatoires sous-jacentes et la preuve, vérifier le résultat avec notre clé publique, et reproduire la même main.",strategyTip:"Diamonds est un jeu à forte volatilité et à cotes fixes où vous partez à la chasse aux grosses mains, façon poker. Votre principal levier est votre niveau d’agressivité. Utilisez des mises petites et régulières si vous voulez tenir lors des séries perdantes, ou augmentez occasionnellement la taille de vos mises lorsque vous recherchez des mains premium."},dice:{how1:"Choisissez roll under ou roll over.",how2:"Définissez votre numéro cible.",how3:"Définissez le montant de votre mise et placez votre pari.",how4:"Nous générons un résultat aléatoire (affiché sur l'échelle de 0 à 99,99 dans le jeu).",how5:"Vous gagnez si le résultat se trouve dans la plage que vous avez choisie.",how6:"Votre paiement correspond à la mise multipliée par le multiplicateur affiché, qui se met à jour lorsque vous déplacez le curseur.",overview:"Définissez un nombre cible et choisissez si le lancer tombera en dessous ou au-dessus de ce nombre. Déplacer le curseur modifie vos chances de gagner et le multiplicateur : une chance plus élevée réduit le multiplicateur, tandis qu'une chance plus faible l'augmente. Chaque manche correspond à un lancer indépendant sur l’échelle du jeu.",provablyFair:"Notre système d'aléa vérifiable génère chaque lancer de Dice. Après chaque manche, vous pouvez consulter les entrées et la preuve, vérifier le résultat avec notre clé publique et reproduire le même résultat.",strategyTip:"Choisissez votre volatilité. Une chance de gain plus faible offre de plus gros multiplicateurs mais des gains plus rares. Une chance de gain plus élevée offre de plus petits multiplicateurs mais des gains plus fréquents. Adaptez la taille de vos mises à votre capital pour des variations plus régulières."},keno:{how1:"Choisissez 1 à 10 cases sur le plateau de 1 à 40.",how2:"Définissez le montant de votre mise et placez votre pari.",how3:"Nous tirons 10 numéros gagnants ; vos correspondances sont mises en évidence.",how4:"Les gains dépendent du nombre de cases que vous avez sélectionnées et du nombre de succès que vous avez obtenus—consultez la table des paiements.",how5:"Vous ne pouvez jamais obtenir plus de numéros que vous n'en avez sélectionné, et la sélection maximale est de 10.",overview:"Choisissez vos numéros porte-bonheur et essayez de correspondre au tirage. Vous pouvez choisir de 1 à 10 numéros parmi 1 à 40, puis nous tirons 10 numéros. Plus vous avez de numéros gagnants, plus votre gain est élevé.",provablyFair:"Notre système de génération d’aléa vérifiable génère chaque tirage de Keno. Après chaque manche, vous pouvez consulter les entrées et la preuve, vérifier le résultat avec notre clé publique et reproduire le même résultat.",strategyTip:"Choisissez votre volatilité. Choisir moins de cases signifie des gains plus rares mais des multiplicateurs beaucoup plus élevés. Plus de cases offrent des gains plus fréquents mais des gains moyens plus faibles par victoire. Une plage intermédiaire équilibre la fréquence des gains et le paiement. Ajustez la taille de votre mise selon votre préférence de risque et votre capital."},limbo:{how1:"Définissez votre multiplicateur cible.",how2:"Définissez le montant de votre mise et placez votre pari.",how3:"Nous générons un multiplicateur de résultat aléatoire.",how4:"Vous gagnez si le résultat est supérieur ou égal à votre objectif.",how5:"Votre gain est la mise multipliée par votre multiplicateur cible ; sinon, vous perdez votre mise.",overview:"Dans Limbo, vous définissez votre gain souhaité, et le jeu tire un seul multiplicateur de résultat aléatoire. Si le résultat atteint au moins votre objectif, vous gagnez. S'il est inférieur, vous perdez. Une chance plus élevée diminue le multiplicateur ; une chance plus faible l’augmente.",provablyFair:"Notre système d'aléa vérifiable génère chaque résultat de Limbo. Après chaque manche, vous pouvez consulter les entrées et la preuve, vérifier le résultat avec notre clé publique et reproduire le même résultat.",strategyTip:"Des cibles plus basses gagnent plus souvent mais paient moins, tandis que des cibles plus élevées touchent rarement mais paient beaucoup plus. Envisagez une cible fixe par session ou ajoutez de temps en temps des paris à haut risque, et ajustez la taille des mises de façon cohérente pour gérer la variance."},limitContent:"Le multiplicateur maximal pouvant être atteint pour ce jeu est de {multiplier}X. Le gain maximal pouvant être atteint est de {payout}",limitTitle:"Limites",mines:{how1:"Choisissez le nombre de mines pour ce tour.",how2:"Définissez le montant de votre mise et placez votre pari.",how3:"Cliquez sur les cases pour les révéler : une case sûre augmente votre multiplicateur ; une mine termine la manche.",how4:"Vous pouvez encaisser à tout moment pour verrouiller votre multiplicateur actuel.",how5:"Votre gain est la mise multipliée par le multiplicateur actuel lorsque vous encaissez.",how6:"Le tour se termine lorsque vous encaissez ou lorsqu'une mine est révélée.",overview:"Mines consiste à choisir des cases sûres et à décider quand encaisser. Avant le début du tour, choisissez combien de mines seront cachées sur le plateau. Chaque case sûre que vous découvrez augmente votre multiplicateur. Si vous touchez une mine, le tour se termine sans gain.",provablyFair:"Notre système d’aléa vérifiable génère la disposition cachée des mines de chaque plateau. Après chaque manche, vous pouvez consulter les entrées et la preuve, vérifier le résultat avec notre clé publique et reproduire le même résultat.",strategyTip:"Choisissez votre volatilité. Moins de mines signifie des révélations plus sûres et des multiplicateurs plus petits à chaque étape. Plus de mines entraînent des révélations plus risquées avec de plus gros multiplicateurs. Fixez un objectif ou utilisez un stop-loss pour gérer les variations. Une taille de mise cohérente et des retraits disciplinés aident à maîtriser la variance."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Le pourcentage de retour au joueur (RTP) pour ce jeu est de {rtpValue}%.",rtpTitle:"RTP : {rtpValue}%",strategyTitle:"Stratégie",tutorial:"Tutoriel",wheel:{how1:"Sélectionnez votre niveau de risque et le nombre de segments.",how2:"Définissez le montant de votre mise et placez votre pari.",how3:"La roue tourne et s'arrête sur un segment.",how4:"Votre gain est la mise × le multiplicateur indiqué sur le segment où la roue s’arrête.",how5:"Chaque segment a un multiplicateur différent en fonction du niveau de risque choisi et du nombre de segments.",overview:"Faites tourner la roue et regardez où elle s’arrête. Choisissez votre niveau de risque et le nombre de segments avant chaque tour - un risque plus faible offre des gains plus fréquents avec des multiplicateurs plus petits ; un risque plus élevé offre des gains plus rares avec des multiplicateurs plus importants.",provablyFair:"Notre système d’aléa vérifiable génère chaque résultat de la Wheel. Après chaque manche, vous pouvez consulter les entrées et la preuve, vérifier le résultat avec notre clé publique et reproduire exactement le même résultat.",strategyTip:"Faible risque offre des gains réguliers et plus petits. Risque moyen équilibre fréquence et paiement. Risque élevé vise des multiplicateurs rares mais énormes. Plus de segments augmentent le potentiel maximal mais réduisent la fréquence des gains."},roulette:{how1:"Cliquez sur la grille pour placer des jetons sur vos paris choisis.",how2:"Ajustez votre mise par clic avec les boutons 1/2 et 2X.",how3:"Placez votre mise pour faire tourner la roue.",how4:"La bille atterrit sur un numéro aléatoire de 0 à 36 (ou 00 pour l'américaine).",how5:"Les paris gagnants sont payés selon leurs cotes ; tous les autres jetons sont perdus.",overview:"Placez des jetons sur la grille de paris et faites tourner la roue. Pariez sur des numéros simples, des groupes de numéros, des couleurs ou pair/impair. La bille atterrit dans une case aléatoire, et les paris correspondants sont payés selon leurs cotes.",provablyFair:"Notre système de hasard vérifiable génère chaque tour de roulette. Après chaque tour, vous pouvez consulter les entrées et la preuve, vérifier le résultat avec notre clé publique et reproduire le même résultat.",strategyTip:"Les paris extérieurs (rouge/noir, pair/impair) offrent près de 50% de chances de gain avec un paiement de 2X. Les paris intérieurs sur des numéros simples paient jusqu'à 36X mais touchent rarement. Répartissez vos jetons pour équilibrer risque et récompense."}},games:{advancedDice:{between:"Entre",boundsLower:"Limite inférieure",boundsUpper:"Limite supérieure",inside:"À l'intérieur",outside:"À l'extérieur",rollMode:"Mode de lancer",secondBoundsLower:"Deuxième limite inférieure",secondBoundsUpper:"Deuxième limite supérieure"},dice:{rollOver:"Lancer au-dessus",rollUnder:"Lancer en dessous"},keno:{autoPick:"Sélection automatique",clearTable:"Effacer",kenoGameGrid:"Grille de jeu Keno",kenoNumber:"Numéro Keno {value}",selectAtLeastOneTile:"Sélectionnez au moins une tuile",selectTileToAutobet:"Sélectionnez au moins une tuile"},limbo:{multiplierError:"Doit être compris entre {min} et {max}",targetMultiplier:"Multiplicateur",winChanceError:"Doit être compris entre {min} et {max}"},mines:{cashout:"Encaisser",gem:"Gemme",gems:"Gemmes",mine:"Mines",mines:"Mines",nextGem:"Prochaine Gemme",selectRandomTile:"Sélectionner une tuile aléatoire",selectTileToAutobet:"Sélectionnez au moins une tuile",tile:"Tuile",unrevealed:"Non révélé"},wheel:{segments:"Segments"},roulette:{chipValue:"Valeur Du Jeton",totalBetAmount:"Mise Totale"}},hotkeys:{clearBets:"Effacer les Mises",doubleBet:"Doubler le montant de la mise",doubleChipValue:"Doubler la Valeur du Jeton",doubleTotalBet:"Doubler la Mise Totale",halveBet:"Diviser le montant de la mise par deux",halveChipValue:"Réduire la Valeur du Jeton",halveTotalBet:"Réduire la Mise Totale",higherTarget:"Cible supérieure",info:"Lorsque les raccourcis clavier sont activés, ils resteront actifs pour ce jeu jusqu'à leur désactivation. Bien que certains jeux partagent des raccourcis similaires, il est toujours conseillé de vérifier les raccourcis clavier pour chaque jeu.",lowerTarget:"Cible inférieure",makeBet:"Placer un pari",resetChipValue:"Réinitialiser la Valeur du Jeton",toggleWinCondition:"Basculer la condition de gain",undo:"Annuler",zeroBet:"Montant de mise zéro"},modals:{betResult:"Résultat du pari",fairnessAndHistory:"Équité et historique",gameArea:"Zone de jeu",gameControls:"Contrôles du jeu",gameInfo:"Infos du jeu"}}});var $4=D1((it,Ji)=>{Ji.exports={accessibility:{sliderValue:"{value} में से {max}"},alerts:{autobetStarted:"ऑटोबेट मोड शुरू किया",autobetStopped:"ऑटोबेट मोड बंद किया गया",betAmountAboveMaxBet:"अधिकतम शर्त {value} है",betAmountBelowMinBet:"न्यूनतम शर्त {value} है",betLimitReached:"शर्त सीमा पहुँच गई",errorProcessingBet:"आपकी शर्त प्रक्रिया करते समय एक त्रुटि हुई। कृपया पुनः प्रयास करें।",failedToLoadBetData:"शर्त डेटा लोड करने में विफल",gameError:"आपकी शर्त प्रक्रिया करते समय एक त्रुटि हुई। कृपया पुनः प्रयास करें।",insufficientBalance:"अपर्याप्त शेष余额",maxPayoutExceeded:"अधिकतम भुगतान सीमा पार",notEnoughBalance:"पर्याप्त शेष नहीं है"},autobet:{configureAutobet:"Autobet कॉन्फ़िगर करें",games:"खेल",games10:"10 खेल",games100:"100 खेल",games25:"25 खेल",games5:"5 खेल",games50:"50 खेल",increase:"बढ़ाएँ",infinite:"अनंत",onLoss:"हानि पर",onWin:"जीत पर",reset:"रीसेट",startAutobet:"ऑटोबेट शुरू करें",stopAutobet:"ऑटोबेट बंद करें",stopOnLoss:"हानि होने पर रोकें",stopOnProfit:"मुनाफे पर रोकें"},clipboard:{linkCopied:"लिंक क्लिपबोर्ड पर कॉपी किया गया!"},common:{auto:"ऑटो",back:"वापस",balance:"शेष",bet:"शर्त राशि",betAmount:"शर्त राशि",cancel:"रद्द करें",cashOut:"कैश आउट",classic:"क्लासिक",confirm:"पुष्टि करें",copied:"कॉपी किया गया",currency:"मुद्रा",deposit:"जमा",disableHotkeys:"हॉटकीज़ अक्षम करें",disableMaxBet:"अधिकतम शर्त अक्षम करें",enableHotkeys:"हॉटकी सक्षम करें",enableMaxBet:"अधिकतम दांव सक्षम करें",footerNavigation:"फुटर नेविगेशन",gameInfo:"खेल जानकारी",gameName:"खेल का नाम",high:"उच्च",history:"इतिहास",hotkeys:"हॉटकीज़",id:"आईडी",instantBet:"तुरंत शर्त",loading:"लोड हो रहा है...",loadMore:"और लोड करें",lobby:"लॉबी पर वापस जाएँ",low:"कम",manual:"मैनुअल",max:"MAX",medium:"मध्यम",multiplier:"गुणक",payout:"भुगतान",placeBet:"दांव लगाएं",profit:"मुनाफा",profitOnWin:"जीत पर लाभ",provablyFair:"सिद्ध रूप से निष्पक्ष",risk:"जोखिम",roundId:"राउंड ID",saveChanges:"परिवर्तन सहेजें",shareReplay:"रीप्ले साझा करें",siteInformation:"खेल जानकारी",space:"SPACE",support:"सहायता",targetMultiplier:"गुणक",thisFieldIsRequired:"यह फ़ील्ड आवश्यक है",timestamp:"समय",toggleHotkeys:"हॉटकी टॉगल करें",viewFairnessInformation:"न्यायपूर्णता की जानकारी देखें",viewHistory:"इतिहास देखें",volume:"आवाज़",winChance:"विजय संभावना"},errors:{dice:{multiplierRange:"{min} और {max} के बीच होना चाहिए",winChanceRange:"{min} और {max} के बीच होना चाहिए"},noWheelData:"व्हील डेटा उपलब्ध नहीं है",requestDropped:"अनुरोध छोड़ दिया गया"},fairness:{activeClientSeed:"सक्रिय क्लाइंट सीड",enterClientSeed:"क्लाइंट सीड दर्ज करें",enterProof:"प्रमाण दर्ज करें",enterPublicKey:"सार्वजनिक कुंजी दर्ज करें",enterRandomness:"यादृच्छिकता दर्ज करें",enterRequest:"अनुरोध दर्ज करें",info:{p1:"हर राउंड का परिणाम सत्यापित यादृच्छिकता (verifiable randomness) से आता है, न कि छिपी हुई सर्वर लॉजिक से। हम आपके राउंड के लिए अद्वितीय मानों—gameId, tenantId, tenantUserId, एक बढ़ता हुआ nonce (हर पूरे हुए राउंड के लिए एक), और आपका clientSeed—से एक नियतात्मक बीज (deterministic seed) बनाते हैं। इससे यह गारंटी मिलती है कि हर राउंड अद्वितीय और पुनरुत्पादित करने योग्य है: वही इनपुट्स → वही यादृच्छिक स्ट्रीम → वही परिणाम।",p2:"उस seed को Elliptic Curve Verifiable Random Function (ECVRF) के माध्यम से IETF स्पेक draft-irtf-cfrg-vrf-15 के अनुसार चलाया जाता है। हमारा सर्वर अपनी private key का उपयोग करके एक random value और एक cryptographic proof (proofString) उत्पन्न करता है। हमारे public key के साथ कोई भी व्यक्ति दिए गए इनपुट्स के लिए उस proof को स्वतंत्र रूप से सत्यापित कर सकता है—यह पुष्टि करते हुए कि randomness seed से आई थी और उसमें कोई छेड़छाड़ नहीं हुई। SDK TypeScript है, जबकि कोर क्रिप्टो में प्रदर्शन और सुरक्षा के लिए NAPI-RS के माध्यम से fastcrypto Rust लाइब्रेरी का उपयोग किया गया है।",p3:"सत्यापित होने के बाद, VRF आउटपुट एक नियतात्मक रैंडम बाइट जेनरेटर (hashSequence) को सीड करता है। गेम्स उन बाइट्स को नियतात्मक, निष्पक्ष तर्क का उपयोग करके परिणामों में बदलते हैं। क्योंकि प्रक्रिया नियतात्मक है और nonce हर पूर्ण राउंड के बाद आगे बढ़ता है, आपको पुनः चलने योग्य ऑडिट (बिल्कुल वही राउंड दोबारा बनाना) और हर बार नई, न दोहराई जाने वाली रैंडमनेस दोनों मिलती हैं।",p4:"एक राउंड के बाद, आपके पास इनपुट्स (जिसमें आपका clientSeed और उस राउंड का nonce शामिल है), VRF आउटपुट, proofString और हमारी सार्वजनिक कुंजी होती है। किसी भी ECVRF verifier या हमारी लाइब्रेरीज़ का उपयोग करके: (1) इनपुट्स और सार्वजनिक कुंजी के खिलाफ proof को सत्यापित करें, और (2) वही hashSequence और परिणाम पुन: उत्पन्न करें। हमारी निजी कुंजी कभी भी सुरक्षित सर्वर से बाहर नहीं जाती; सार्वजनिक कुंजी स्वतंत्र जांच के लिए client-side पर उपयोग करने के लिए सुरक्षित है।",step1Desc:"हम gameId, tenantId, tenantUserId, प्रति-राउंड nonce, और आपका clientSeed को जोड़ते हैं। एक जैसी इनपुट हमेशा एक जैसी यादृच्छिक स्ट्रीम और परिणाम देती है।",step1Title:"निर्धारित सीड",step2Title:"यादृच्छिकता उत्पन्न करें",step3Desc:"कोई भी हमारे सार्वजनिक कुंजी का उपयोग करके दिए गए इनपुट के लिए proofString को सत्यापित कर सकता है। इससे यह पुष्टि होती है कि रैंडमनेस seed से मेल खाती है और इसमें कोई छेड़छाड़ नहीं की गई है।",step3Title:"प्रमाण सत्यापित करें",step4Title:"परिणाम निकालें",step5Title:"प्रजनन"},invalidGame:"अमान्य गेम प्रकार प्रदान किया गया।",learnMore:"और जानें",newClientSeed:"नया clientSeed",noBettingHistory:"कोई सट्टेबाजी इतिहास नहीं",outcomeCalculationInfo:"यह खेल एक प्रमाणित निष्पक्ष एल्गोरिदम का उपयोग करता है जो सुनिश्चित करता है कि परिणाम निष्पक्ष और पारदर्शी है।",outcomeNotVerified:"इस खेल का परिणाम सत्यापित नहीं किया जा सका। कृपया दोबारा जांचें कि आपने सही जानकारी दर्ज की है और पुनः प्रयास करें।",outcomeVerified:"इस राउंड का परिणाम हमारे सार्वजनिक कुंजी के साथ सत्यापित किया गया है और यह प्रमाणित रूप से निष्पक्ष है।",proof:"सабूत",publicKey:"सक्रिय सार्वजनिक कुंजी",randomness:"यादृच्छिकता",request:"अनुरोध",saveClientSeed:"क्लाइंट सीड सहेजें",verifyOutcome:"परिणाम सत्यापित करें"},gameInfo:{advancedDice:{how1:"अपना रोल मोड चुनें: अंदर, बाहर, या बीच में।",how2:"अपने जीतने वाले क्षेत्र को परिभाषित करने के लिए स्लाइडर खींचें।",how3:"अपनी दांव राशि सेट करें और दांव लगाएं।",how4:"0 और 100 के बीच एक यादृच्छिक संख्या उत्पन्न होती है।",how5:"जीतें यदि परिणाम आपके चुने हुए क्षेत्र में आता है।",overview:"एडवांस्ड डाइस आपको कस्टम विजेता क्षेत्र सेट करने देता है। अंदर चुनें जब परिणाम आपकी सीमा में आए तो जीतने के लिए, बाहर जब यह आपकी सीमा से परे हो, या बीच में दो विजेता क्षेत्रों में विभाजित करने के लिए।",provablyFair:"हमारी सत्यापन योग्य यादृच्छिकता प्रणाली हर एडवांस्ड डाइस परिणाम उत्पन्न करती है। हर राउंड के बाद, आप इनपुट और प्रमाण देख सकते हैं, हमारी सार्वजनिक कुंजी से परिणाम सत्यापित कर सकते हैं, और वही परिणाम पुन: उत्पन्न कर सकते हैं।",strategyTip:"चौड़े क्षेत्र अधिक बार जीत प्रदान करते हैं लेकिन छोटे गुणक के साथ। संकीर्ण क्षेत्र अधिक जोखिम लेते हैं लेकिन अधिक भुगतान करते हैं। बीच मोड आपको लचीली रणनीतियों के लिए दो श्रेणियों को लक्षित करने देता है।"},diamonds:{how1:"अपनी शर्त की राशि निर्धारित करें और अपनी शर्त लगाएं।",how2:"पांच हीरे रत्नों के एक निश्चित सेट से प्रकट होते हैं।",how3:"आपका परिणाम पोकर हाथ की तरह आंका जाता है: पेयर, दो पेयर, तीन का सेट, फुल हाउस, चार का सेट, और पांच का सेट.",how4:"प्रत्येक हाथ प्रकार का अपना गुणक होता है; उच्च मूल्य वाले हाथ बड़े गुणक प्रदान करते हैं, जबकि कोई भी बना हुआ हाथ 0X देता है।",how5:"आपका भुगतान आपके दांव को दिखाए गए गुणक से गुणा करने पर प्राप्त होने वाली राशि है।",overview:"Diamonds एक पाँच-रील मिलान खेल है। प्रत्येक राउंड में विभिन्न रत्न प्रकारों के सेट से पाँच हीरे प्रकट होते हैं। आपका लक्ष्य पोकर-शैली के संयोजन बनाना है - जोड़ी, तीन एक जैसे, फुल हाउस, आदि।",provablyFair:"हमारी सत्यापन योग्य रैन्डमनेस प्रणाली प्रत्येक हीरे के परिणाम का चयन करती है। हर राउंड के बाद, आप मूल रैन्डम मान और प्रमाण देख सकते हैं, हमारे सार्वजनिक कुंजी से परिणाम की पुष्टि कर सकते हैं, और वही हाथ दोबारा उत्पन्न कर सकते हैं।",strategyTip:"Diamonds एक उच्च-विचलन, निश्चित-अनुपात वाला खेल है जिसमें आप बड़े, पोकर-शैली के हाथों की तलाश कर रहे हैं। आपका मुख्य नियंत्रण यह है कि आप कितना आक्रामक खेलना चाहते हैं। अगर आप लगातार सूखे दौर से गुजरना चाहते हैं तो छोटे, स्थिर दांव लगाएं, या जब आप प्रीमियम हाथों का पीछा कर रहे हों तो कभी-कभी अपने दांव का आकार बढ़ाएं।"},dice:{how1:"रोल अंडर या रोल ओवर चुनें",how2:"अपना लक्ष्य संख्या निर्धारित करें",how3:"अपनी शर्त की राशि निर्धारित करें और अपनी शर्त लगाएं।",how4:"हम एक यादृच्छिक परिणाम उत्पन्न करते हैं (जो खेल में 0–99.99 के पैमाने पर प्रदर्शित होता है)।",how5:"यदि परिणाम आपके चुने हुए दायरे में है तो आप जीतते हैं",how6:"आपकी भुगतान राशि आपके दांव x दिखाए गए गुणक के बराबर है, जो जैसे-जैसे आप स्लाइडर को घुमाते हैं, अपडेट होता रहता है।",overview:"एक लक्ष्य संख्या निर्धारित करें और चुनें कि रोल उस पर या उसके ऊपर आएगा। स्लाइडर को मूव करने से आपकी जीतने की संभावना और मल्टीप्लायर बदलता है—अधिक संभावना मल्टीप्लायर को कम करती है, जबकि कम संभावना उसे बढ़ाती है। हर राउंड गेम के स्केल पर एक स्वतंत्र रोल होता है।",provablyFair:"हमारी सत्यापन योग्य रैंडमनेस प्रणाली हर Dice रोल उत्पन्न करती है। हर राउंड के बाद, आप इनपुट्स और प्रमाण देख सकते हैं, हमारे सार्वजनिक कुंजी से परिणाम सत्यापित कर सकते हैं, और वही परिणाम पुनः उत्पन्न कर सकते हैं।",strategyTip:"अपनी वोलैटिलिटी चुनें। कम जीतने की संभावना बड़े मल्टीप्लायर देती है लेकिन जीत कम बार मिलती है। ज्यादा जीतने की संभावना छोटे मल्टीप्लायर देती है लेकिन जीत अधिक बार मिलती है। अपने दांव को अपने बैंक रोल के अनुसार तय करें ताकि उतार-चढ़ाव स्थिर रहें।"},keno:{how1:"1-40 बोर्ड पर 1–10 टाइलें चुनें.",how2:"अपनी शर्त की राशि निर्धारित करें और अपनी शर्त लगाएं।",how3:"हम 10 विजेता नंबर निकालते हैं; आपके मेल किए गए नंबर हाइलाइट किए जाते हैं।",how4:"भुगतान इस बात पर निर्भर करता है कि आपने कितने टाइल चुने और आपको कितने हिट मिले—पेयटेबल देखें।",how5:"आप जितने नंबर चुनते हैं उससे अधिक नंबर कभी नहीं आ सकते, और अधिकतम चयन 10 है.",overview:"अपने भाग्यशाली नंबर चुनें और ड्रॉ से मेल खाने की कोशिश करें। आप 1–40 में से 1–10 नंबर चुन सकते हैं, और फिर हम 10 नंबर ड्रॉ करते हैं। जितने अधिक नंबर आपके चुने हुए नंबरों में से निकलते हैं, आपकी जीत उतनी ही अधिक होती है।",provablyFair:"हमारी सत्यापन योग्य रैंडमनेस प्रणाली हर Keno ड्रा उत्पन्न करती है। हर राउंड के बाद, आप इनपुट्स और प्रमाण देख सकते हैं, हमारे सार्वजनिक कुंजी से परिणाम सत्यापित कर सकते हैं, और वही परिणाम पुन: उत्पन्न कर सकते हैं।",strategyTip:"अपनी वोलैटिलिटी चुनें। कम स्पॉट चुनने का मतलब है कम बार जीतना लेकिन बहुत बड़े मल्टीप्लायर मिलना। ज्यादा स्पॉट का मतलब है ज्यादा बार जीतना लेकिन हर जीत पर औसतन कम रिटर्न। मध्य श्रेणी में हिट रेट और पेआउट का संतुलन रहता है। अपने जोखिम की पसंद और बैंक रोल के अनुसार अपनी शर्त की राशि समायोजित करें।"},limbo:{how1:"अपना लक्ष्य गुणक सेट करें",how2:"अपनी शर्त की राशि निर्धारित करें और अपनी शर्त लगाएं।",how3:"हम एक यादृच्छिक परिणाम गुणक उत्पन्न करते हैं।",how4:"यदि परिणाम आपके लक्ष्य से अधिक या उसके बराबर है तो आप जीतते हैं",how5:"आपकी भुगतान राशि आपकी शर्त x आपके लक्ष्य गुणक है; अन्यथा, आप अपनी शर्त हार जाते हैं.",overview:"Limbo में, आप अपनी इच्छित पayout सेट करते हैं, और खेल एक यादृच्छिक परिणाम गुणक निकालता है। यदि परिणाम कम से कम आपके लक्ष्य के बराबर है, तो आप जीतते हैं। यदि यह कम है, तो आप हार जाते हैं। अधिक मौका गुणक को कम करता है; कम मौका इसे बढ़ाता है।",provablyFair:"हमारी सत्यापनीय रैंडमनेस प्रणाली हर Limbo परिणाम उत्पन्न करती है। हर राउंड के बाद, आप इनपुट और प्रमाण देख सकते हैं, हमारे सार्वजनिक कुंजी से परिणाम सत्यापित कर सकते हैं, और वही परिणाम पुनः उत्पन्न कर सकते हैं।",strategyTip:"निचले लक्ष्य अधिक बार जीतते हैं लेकिन कम भुगतान करते हैं, जबकि ऊँचे लक्ष्य कम ही लगते हैं लेकिन बहुत अधिक भुगतान करते हैं। प्रत्येक सत्र के लिए एक निश्चित लक्ष्य पर विचार करें या कभी-कभी लंबी बाज़ियों को शामिल करें, और विविधता को प्रबंधित करने के लिए दांव का आकार लगातार रखें।"},limitContent:"इस खेल के लिए अधिकतम प्राप्त किया जा सकने वाला मल्टीप्लायर {multiplier}X है। अधिकतम प्राप्त किया जा सकने वाला भुगतान {payout} है",limitTitle:"सीमाएँ",mines:{how1:"इस राउंड के लिए माइन की संख्या चुनें.",how2:"अपनी शर्त की राशि निर्धारित करें और अपनी शर्त लगाएं।",how3:"टाइल्स पर क्लिक करके उन्हें प्रकट करें: एक सुरक्षित टाइल आपका मल्टीप्लायर बढ़ाती है; एक माइन राउंड समाप्त कर देती है।",how4:"आप किसी भी समय अपना वर्तमान मल्टीप्लायर लॉक करने के लिए कैशआउट कर सकते हैं।",how5:"जब आप कैश आउट करते हैं, तो आपकी पayout आपके bet को वर्तमान मल्टीप्लायर से गुणा करके होती है.",how6:"राउंड तब समाप्त होता है जब आप कैश आउट करते हैं या जब कोई माइन्स प्रकट होती है।",overview:"Mines सुरक्षित टाइल्स चुनने और कब कैशआउट करना है, इसका फैसला करने का खेल है। राउंड शुरू होने से पहले, चुनें कि बोर्ड पर कितनी mines छुपी होंगी। हर सुरक्षित टाइल जिसे आप खोलते हैं, आपका मल्टीप्लायर बढ़ जाता है। अगर आप किसी mine पर पहुंच जाते हैं, तो राउंड बिना किसी पेआउट के खत्म हो जाता है।",provablyFair:"हमारी सत्यापन योग्य रैंडमनेस प्रणाली प्रत्येक बोर्ड की छिपी हुई माइन लेआउट उत्पन्न करती है। हर राउंड के बाद, आप इनपुट और प्रमाण देख सकते हैं, हमारे सार्वजनिक कुंजी से परिणाम सत्यापित कर सकते हैं, और वही परिणाम पुन: उत्पन्न कर सकते हैं।",strategyTip:"अपनी वोलैटिलिटी चुनें। कम माइन का मतलब है सुरक्षित रिवील्स और प्रत्येक चरण पर छोटे मल्टीप्लायर। अधिक माइन का मतलब है जोखिम भरे रिवील्स और बड़े मल्टीप्लायर। स्विंग को मैनेज करने के लिए कोई टारगेट सेट करें या स्टॉप-लॉस का इस्तेमाल करें। लगातार एक जैसा दांव लगाना और अनुशासित कैश आउट्स वेरिएंस को नियंत्रण में रखने में मदद करते हैं।"},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"इस खेल के लिए रिटर्न-टू-प्लेयर (RTP) प्रतिशत {rtpValue}% है.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"रणनीति",tutorial:"ट्यूटोरियल",wheel:{how1:"अपना जोखिम स्तर और खंडों की संख्या चुनें.",how2:"अपनी शर्त की राशि निर्धारित करें और अपनी शर्त लगाएं।",how3:"पहिया घूमता है और एक खंड पर रुकता है.",how4:"आपका भुगतान उस हिस्से पर दिखाए गए गुणक के साथ दांव × होता है जहाँ पहिया रुकता है।",how5:"प्रत्येक खंड का गुणक आपके चुने गए जोखिम स्तर और खंडों की संख्या के आधार पर अलग होता है।",overview:"पहिया घुमाएँ और देखें यह कहाँ रुकता है। हर स्पिन से पहले अपना जोखिम स्तर और खंडों की संख्या चुनें - कम जोखिम पर छोटे गुणकों के साथ अधिक बार जीत मिलती है; अधिक जोखिम पर बड़े गुणकों के साथ जीत दुर्लभ होती है।",provablyFair:"हमारी सत्यापन योग्य रैंडमनेस प्रणाली हर Wheel परिणाम उत्पन्न करती है। हर राउंड के बाद, आप इनपुट और प्रमाण देख सकते हैं, हमारे सार्वजनिक कुंजी से परिणाम सत्यापित कर सकते हैं, और वही परिणाम पुन: उत्पन्न कर सकते हैं।",strategyTip:"कम जोखिम स्थिर, छोटे जीत प्रदान करता है। मध्यम जोखिम बारंबारता और भुगतान का संतुलन बनाता है। उच्च जोखिम दुर्लभ लेकिन भारी मल्टीप्लायर को लक्षित करता है। अधिक सेगमेंट अधिकतम संभावित लाभ बढ़ाते हैं लेकिन जीतने की आवृत्ति कम कर देते हैं।"},roulette:{how1:"अपने चुने हुए दांव पर चिप्स लगाने के लिए ग्रिड पर क्लिक करें।",how2:"1/2 और 2X बटन से प्रति क्लिक दांव राशि समायोजित करें।",how3:"पहिया घुमाने के लिए अपना दांव लगाएं।",how4:"गेंद 0-36 में से किसी भी नंबर पर गिरती है (अमेरिकन में 00 भी)।",how5:"जीतने वाले दांव अपने ऑड्स के अनुसार भुगतान करते हैं; अन्य सभी चिप्स खो जाती हैं।",overview:"बेटिंग ग्रिड पर चिप्स लगाएं और पहिया घुमाएं। एकल नंबर, नंबर समूह, रंग या सम/विषम पर दांव लगाएं। गेंद एक यादृच्छिक पॉकेट में गिरती है, और मिलान वाले दांव अपने ऑड्स के अनुसार भुगतान करते हैं।",provablyFair:"हमारी सत्यापन योग्य यादृच्छिकता प्रणाली हर रूलेट स्पिन उत्पन्न करती है। हर राउंड के बाद, आप इनपुट और प्रमाण देख सकते हैं, हमारी सार्वजनिक कुंजी से परिणाम सत्यापित कर सकते हैं, और वही परिणाम पुन: उत्पन्न कर सकते हैं।",strategyTip:"बाहरी दांव (लाल/काला, सम/विषम) 2X भुगतान के साथ लगभग 50% जीत का मौका देते हैं। एकल नंबर पर आंतरिक दांव 36X तक भुगतान करते हैं लेकिन शायद ही कभी लगते हैं। जोखिम और इनाम को संतुलित करने के लिए अपनी चिप्स फैलाएं।"}},games:{advancedDice:{between:"के बीच",boundsLower:"निचली सीमा",boundsUpper:"ऊपरी सीमा",inside:"अंदर",outside:"बाहर",rollMode:"रोल मोड",secondBoundsLower:"दूसरी निचली सीमा",secondBoundsUpper:"दूसरी ऊपरी सीमा"},dice:{rollOver:"रोल ओवर",rollUnder:"रोल अंडर"},keno:{autoPick:"ऑटो पिक",clearTable:"साफ",kenoGameGrid:"Keno खेल ग्रिड",kenoNumber:"Keno नंबर {value}",selectAtLeastOneTile:"कम से कम एक टाइल चुनें",selectTileToAutobet:"कम से कम एक टाइल चुनें"},limbo:{multiplierError:"{min} और {max} के बीच होना चाहिए",targetMultiplier:"गुणक",winChanceError:"{min} और {max} के बीच होना चाहिए"},mines:{cashout:"कैश आउट",gem:"रत्न",gems:"रत्न",mine:"माइन",mines:"माइन्स",nextGem:"अगला रत्न",selectRandomTile:"यादृच्छिक टाइल चुनें",selectTileToAutobet:"कम से कम एक टाइल चुनें",tile:"टाइल",unrevealed:"अप्रकट"},wheel:{segments:"सेगमेंट्स"},roulette:{chipValue:"चिप मूल्य",totalBetAmount:"कुल दांव राशि"}},hotkeys:{clearBets:"दांव साफ़ करें",doubleBet:"दांव राशि दोगुनी करें",doubleChipValue:"चिप मूल्य दोगुना करें",doubleTotalBet:"कुल दांव दोगुना करें",halveBet:"शर्त राशि आधी करें",halveChipValue:"चिप मूल्य आधा करें",halveTotalBet:"कुल दांव आधा करें",higherTarget:"ऊँचा लक्ष्य",info:"जब हॉटकीज़ सक्षम होती हैं, तो वे इस गेम के लिए तब तक चालू रहेंगी जब तक उन्हें अक्षम नहीं किया जाता। हालांकि कुछ गेम्स में समान की बाइंड्स हो सकती हैं, फिर भी प्रत्येक गेम के लिए हॉटकीज़ की पुष्टि करना हमेशा सलाह दी जाती है।",lowerTarget:"निम्न लक्ष्य",makeBet:"दांव लगाएं",resetChipValue:"चिप मूल्य रीसेट करें",toggleWinCondition:"विजय शर्त टॉगल करें",undo:"पूर्ववत करें",zeroBet:"शून्य दांव राशि"},modals:{betResult:"दांव परिणाम",fairnessAndHistory:"न्यायपूर्णता और इतिहास",gameArea:"गेम क्षेत्र",gameControls:"गेम नियंत्रण",gameInfo:"खेल जानकारी"}}});var W4=D1((et,Di)=>{Di.exports={accessibility:{sliderValue:"{value} dari {max}"},alerts:{autobetStarted:"Mode autobet dimulai",autobetStopped:"Mode autobet dihentikan",betAmountAboveMaxBet:"Taruhan maksimum adalah {value}",betAmountBelowMinBet:"Taruhan minimum adalah {value}",betLimitReached:"Batas taruhan tercapai",errorProcessingBet:"Terjadi kesalahan saat memproses taruhan Anda. Silakan coba lagi.",failedToLoadBetData:"Gagal memuat data taruhan",gameError:"Terjadi kesalahan saat memproses taruhan Anda. Silakan coba lagi.",insufficientBalance:"Saldo tidak cukup",maxPayoutExceeded:"Pembayaran maksimum terlampaui",notEnoughBalance:"Saldo tidak cukup"},autobet:{configureAutobet:"Konfigurasi Autobet",games:"Permainan",games10:"10 Permainan",games100:"100 Permainan",games25:"25 Permainan",games5:"5 Permainan",games50:"50 Permainan",increase:"Tingkatkan",infinite:"Tak terbatas",onLoss:"Saat Kalah",onWin:"Saat Menang",reset:"Atur Ulang",startAutobet:"Mulai Autobet",stopAutobet:"Hentikan Autobet",stopOnLoss:"Berhenti saat Kalah",stopOnProfit:"Berhenti Saat Untung"},clipboard:{linkCopied:"Tautan disalin ke papan klip!"},common:{auto:"Otomatis",back:"Kembali",balance:"Saldo",bet:"Jumlah Taruhan",betAmount:"Jumlah Taruhan",cancel:"Batalkan",cashOut:"Tarik Dana",classic:"Klasik",confirm:"Konfirmasi",copied:"Disalin",currency:"Mata uang",deposit:"Setor",disableHotkeys:"Nonaktifkan Tombol Pintas",disableMaxBet:"Nonaktifkan Taruhan Maksimum",enableHotkeys:"Aktifkan Tombol Pintas",enableMaxBet:"Aktifkan Taruhan Maksimum",footerNavigation:"Navigasi Footer",gameInfo:"Informasi Game",gameName:"Nama Game",high:"Tinggi",history:"Riwayat",hotkeys:"Tombol pintas",id:"ID",instantBet:"Taruhan Instan",loading:"Memuat...",loadMore:"Muat Lebih Banyak",lobby:"Kembali ke Lobi",low:"Rendah",manual:"Manual",max:"MAKS",medium:"Sedang",multiplier:"Pengganda",payout:"Pembayaran",placeBet:"Pasang Taruhan",profit:"Keuntungan",profitOnWin:"Keuntungan Saat Menang",provablyFair:"Terbukti Adil",risk:"Risiko",roundId:"ID Putaran",saveChanges:"Simpan Perubahan",shareReplay:"Bagikan Ulang",siteInformation:"Informasi Permainan",space:"SPACE",support:"Dukungan",targetMultiplier:"Pengganda",thisFieldIsRequired:"Kolom ini wajib diisi",timestamp:"Waktu",toggleHotkeys:"Alihkan Tombol Pintas",viewFairnessInformation:"Lihat Informasi Keadilan",viewHistory:"Lihat Riwayat",volume:"Volume",winChance:"Peluang Menang"},errors:{dice:{multiplierRange:"Harus antara {min} dan {max}",winChanceRange:"Harus antara {min} dan {max}"},noWheelData:"Data roda tidak tersedia",requestDropped:"Permintaan dibatalkan"},fairness:{activeClientSeed:"Client Seed Aktif",enterClientSeed:"Masukkan Client Seed",enterProof:"Masukkan Bukti",enterPublicKey:"Masukkan Kunci Publik",enterRandomness:"Masukkan Keberacakan",enterRequest:"Masukkan Permintaan",info:{p1:"Hasil setiap ronde berasal dari keacakan yang dapat diverifikasi, bukan logika server yang tersembunyi. Kami membangun seed deterministik dari nilai-nilai yang unik untuk ronde Anda—gameId, tenantId, tenantUserId, nonce yang bertambah (satu untuk setiap ronde yang diselesaikan), ditambah clientSeed Anda. Ini menjamin setiap ronde bersifat unik dan dapat direproduksi: input yang sama → aliran acak yang sama → hasil yang sama.",p2:"Seed tersebut dijalankan melalui Elliptic Curve Verifiable Random Function (ECVRF) sesuai dengan spesifikasi IETF draft-irtf-cfrg-vrf-15. Server kami menggunakan kunci privatnya untuk menghasilkan nilai acak dan bukti kriptografi (proofString). Siapa pun yang memiliki kunci publik kami dapat secara independen memverifikasi bukti tersebut untuk input yang diberikan—memastikan bahwa keacakan berasal dari seed dan tidak dimanipulasi. SDK menggunakan TypeScript, sementara inti kriptonya menggunakan pustaka fastcrypto Rust melalui NAPI-RS untuk performa dan keamanan.",p3:"Setelah diverifikasi, output VRF menjadi benih bagi generator byte acak deterministik (hashSequence). Permainan mengubah byte tersebut menjadi hasil menggunakan logika deterministik yang tidak bias. Karena prosesnya deterministik dan nonce bertambah setiap ronde selesai, Anda mendapatkan audit yang dapat diputar ulang (mengulangi ronde yang sama persis) dan keacakan baru yang tidak berulang setiap saat.",p4:"Setelah satu putaran, Anda memiliki input (termasuk clientSeed Anda dan nonce putaran), output VRF, proofString, dan kunci publik kami. Gunakan verifikator ECVRF mana pun atau pustaka kami untuk: (1) memverifikasi proof terhadap input dan kunci publik, dan (2) menghasilkan kembali hashSequence dan hasil yang sama. Kunci privat kami tidak pernah keluar dari server yang aman; kunci publik aman digunakan di sisi klien untuk pemeriksaan independen.",step1Desc:"Kami menggabungkan gameId, tenantId, tenantUserId, nonce per putaran, dan clientSeed Anda. Input yang sama akan selalu menghasilkan aliran acak dan hasil yang sama.",step1Title:"Benih Deterministik",step2Title:"Hasilkan Keacakan",step3Desc:"Siapa pun dapat memverifikasi proofString untuk input yang diberikan menggunakan public key kami. Ini memastikan bahwa keacakan sesuai dengan seed dan tidak dimanipulasi.",step3Title:"Verifikasi Bukti",step4Title:"Menurunkan Hasil",step5Title:"Reproduksi"},invalidGame:"Jenis permainan yang diberikan tidak valid.",learnMore:"Pelajari Lebih Lanjut",newClientSeed:"Client Seed Baru",noBettingHistory:"Tidak ada riwayat taruhan",outcomeCalculationInfo:"Game ini menggunakan algoritme provably fair yang memastikan hasilnya adil dan transparan.",outcomeNotVerified:"Hasil dari permainan ini tidak dapat diverifikasi. Periksa kembali apakah Anda telah memasukkan informasi yang benar dan coba lagi.",outcomeVerified:"Hasil dari putaran ini telah diverifikasi dengan kunci publik kami dan terbukti adil.",proof:"Bukti",publicKey:"Kunci Publik Aktif",randomness:"Keacakan",request:"Permintaan",saveClientSeed:"Simpan Client Seed",verifyOutcome:"Verifikasi Hasil"},gameInfo:{advancedDice:{how1:"Pilih mode lempar: Dalam, Luar, atau Antara.",how2:"Seret penggeser untuk menentukan zona kemenangan Anda.",how3:"Tetapkan jumlah taruhan dan pasang taruhan.",how4:"Angka acak antara 0 dan 100 dihasilkan.",how5:"Menang jika hasilnya jatuh dalam zona yang dipilih.",overview:"Advanced Dice memungkinkan Anda mengatur zona kemenangan khusus. Pilih Dalam untuk menang saat hasil jatuh dalam rentang Anda, Luar untuk menang saat jatuh di luar rentang, atau Antara untuk membagi menjadi dua zona kemenangan.",provablyFair:"Sistem keacakan terverifikasi kami menghasilkan setiap hasil Advanced Dice. Setelah setiap putaran, Anda dapat melihat input dan bukti, memverifikasi hasil dengan kunci publik kami, dan mereproduksi hasil yang sama.",strategyTip:"Zona lebih luas menawarkan kemenangan lebih sering tetapi pengganda lebih kecil. Zona sempit lebih berisiko tetapi membayar lebih besar. Mode Antara memungkinkan Anda menargetkan dua rentang untuk strategi fleksibel."},diamonds:{how1:"Atur jumlah taruhan Anda dan pasang taruhan Anda.",how2:"Lima berlian diungkapkan dari satu set jenis permata yang tetap.",how3:"Hasil Anda dievaluasi seperti tangan poker: pasangan, dua pasangan, three-of-a-kind, full house, four-of-a-kind, dan five-of-a-kind.",how4:"Setiap jenis tangan memiliki pengalinya sendiri; tangan dengan nilai lebih tinggi memberikan pengali yang lebih besar, sedangkan jika tidak ada kombinasi tangan yang terbentuk membayar 0X.",how5:"Pembayaran Anda adalah taruhan Anda dikalikan dengan pengali yang ditampilkan untuk hasil kartu tersebut.",overview:"Diamonds adalah permainan mencocokkan lima gulungan. Setiap putaran akan menampilkan lima berlian dari berbagai jenis permata. Tujuan Anda adalah mendapatkan kombinasi seperti poker - pasangan, tiga-of-a-kind, full house, dan seterusnya.",provablyFair:"Sistem keacakan terverifikasi kami memilih setiap hasil diamond. Setelah setiap putaran, Anda dapat melihat nilai acak dan bukti yang mendasarinya, memverifikasi hasil dengan kunci publik kami, dan mereproduksi tangan yang sama.",strategyTip:"Diamonds adalah permainan dengan volatilitas tinggi dan odds tetap di mana Anda berburu kombinasi besar seperti pada poker. Tuas utama Anda adalah seberapa agresif Anda ingin bermain. Gunakan taruhan kecil dan stabil jika Anda ingin bertahan di masa-masa kering, atau sesekali tingkatkan ukuran taruhan Anda saat Anda mengejar kombinasi premium."},dice:{how1:"Pilih roll bawah atau roll atas.",how2:"Atur angka target Anda.",how3:"Atur jumlah taruhan Anda dan pasang taruhan Anda.",how4:"Kami menghasilkan satu hasil acak (ditampilkan pada skala 0–99,99 di dalam game).",how5:"Anda menang jika hasilnya berada dalam rentang yang Anda pilih.",how6:"Pembayaran Anda adalah taruhan x pengali yang ditampilkan, yang akan diperbarui saat Anda menggeser slider.",overview:"Tetapkan angka target dan pilih apakah hasil roll akan berada di bawah atau di atas angka tersebut. Menggeser slider akan mengubah peluang menang dan pengganda Anda—peluang yang lebih tinggi menurunkan pengganda, sedangkan peluang yang lebih rendah meningkatkannya. Setiap ronde adalah satu roll independen pada skala permainan.",provablyFair:"Sistem keacakan terverifikasi kami menghasilkan setiap lemparan Dice. Setelah setiap putaran, Anda dapat melihat input dan bukti, memverifikasi hasilnya dengan kunci publik kami, dan mereproduksi hasil yang sama.",strategyTip:"Pilih volatilitas Anda. Peluang menang yang lebih rendah menghasilkan pengganda yang lebih besar tetapi kemenangan yang lebih jarang. Peluang menang yang lebih tinggi menghasilkan pengganda yang lebih kecil tetapi kemenangan yang lebih sering. Sesuaikan ukuran taruhan Anda dengan bankroll Anda untuk ayunan yang lebih stabil."},keno:{how1:"Pilih 1–10 ubin pada papan 1–40.",how2:"Atur jumlah taruhan Anda dan pasang taruhan Anda.",how3:"Kami menarik 10 nomor pemenang; kecocokan Anda disorot.",how4:"Pembayaran tergantung pada berapa banyak ubin yang Anda pilih dan berapa banyak yang berhasil Anda temukan—periksa tabel pembayaran.",how5:"Anda tidak pernah bisa mendapatkan lebih banyak angka daripada yang Anda pilih, dan pilihan maksimum adalah 10.",overview:"Pilih angka keberuntungan Anda dan coba cocokkan dengan hasil undian. Anda dapat memilih 1–10 angka dari 1–40, lalu kami akan mengundi 10 angka. Semakin banyak angka pilihan Anda yang cocok, semakin tinggi pembayaran Anda.",provablyFair:"Sistem acak terverifikasi kami menghasilkan setiap undian Keno. Setelah setiap ronde, Anda dapat melihat input dan bukti, memverifikasi hasil dengan kunci publik kami, dan mereproduksi hasil yang sama.",strategyTip:"Pilih volatilitas Anda. Memilih jumlah titik lebih sedikit berarti kemenangan lebih jarang tetapi pengali jauh lebih besar. Lebih banyak titik memberikan kemenangan lebih sering tetapi rata-rata pembayaran per kemenangan lebih kecil. Kisaran tengah menyeimbangkan antara tingkat kemenangan dan pembayaran. Sesuaikan ukuran taruhan Anda agar sesuai dengan preferensi risiko dan saldo Anda."},limbo:{how1:"Atur pengali target Anda.",how2:"Atur jumlah taruhan Anda dan pasang taruhan Anda.",how3:"Kami menghasilkan satu pengali hasil acak.",how4:"Anda menang jika hasilnya lebih besar atau sama dengan target Anda.",how5:"Pembayaran Anda adalah taruhan x pengali target Anda; jika tidak, Anda kehilangan taruhan Anda.",overview:"Di Limbo, Anda menetapkan pembayaran yang diinginkan, dan permainan akan menghasilkan satu pengali hasil acak. Jika hasilnya setidaknya mencapai target Anda, Anda menang. Jika lebih rendah, Anda kalah. Peluang yang lebih tinggi menurunkan pengali; peluang yang lebih rendah meningkatkannya.",provablyFair:"Sistem keacakan terverifikasi kami menghasilkan setiap hasil Limbo. Setelah setiap putaran, Anda dapat melihat input dan bukti, memverifikasi hasilnya dengan kunci publik kami, dan mereproduksi hasil yang sama.",strategyTip:"Target yang lebih rendah menang lebih sering tetapi membayar lebih sedikit, sedangkan target yang lebih tinggi jarang tercapai tetapi membayar jauh lebih banyak. Pertimbangkan target tetap per sesi atau sesekali mencoba target tinggi, dan atur ukuran taruhan secara konsisten untuk mengelola varians."},limitContent:"Pengganda maksimum yang dapat dicapai untuk permainan ini adalah {multiplier}X. Pembayaran maksimum yang dapat dicapai adalah {payout}",limitTitle:"Batas",mines:{how1:"Pilih jumlah ranjau untuk putaran ini.",how2:"Atur jumlah taruhan Anda dan pasang taruhan Anda.",how3:"Klik ubin untuk mengungkapkannya: ubin yang aman akan meningkatkan pengganda Anda; ranjau mengakhiri ronde.",how4:"Anda dapat melakukan cash out kapan saja untuk mengunci pengganda Anda saat ini.",how5:"Pembayaran Anda adalah taruhan x pengali saat ini ketika Anda melakukan cash out.",how6:"Putaran berakhir ketika Anda melakukan cash out atau ketika sebuah ranjau terungkap.",overview:"Mines adalah tentang memilih petak yang aman dan menentukan kapan harus melakukan cash out. Sebelum ronde dimulai, pilih berapa banyak mines yang akan disembunyikan di papan. Setiap petak aman yang kamu buka akan meningkatkan pengali kamu. Jika kamu mengenai mine, ronde berakhir tanpa pembayaran.",provablyFair:"Sistem keacakan terverifikasi kami menghasilkan tata letak ranjau tersembunyi pada setiap papan. Setelah setiap putaran, Anda dapat melihat input dan bukti, memverifikasi hasil dengan kunci publik kami, dan mereproduksi hasil yang sama.",strategyTip:"Pilih volatilitas Anda. Lebih sedikit Mines berarti pengungkapan yang lebih aman dan kelipatan yang lebih kecil pada setiap langkah. Lebih banyak Mines menghasilkan pengungkapan yang lebih berisiko dengan kelipatan yang lebih besar. Tetapkan target atau gunakan stop-loss untuk mengelola fluktuasi. Ukuran taruhan yang konsisten dan pencairan dana yang disiplin membantu menjaga varians tetap terkendali."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Persentase Return-to-Player (RTP) untuk permainan ini adalah {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Strategi",tutorial:"Tutorial",wheel:{how1:"Pilih tingkat risiko dan jumlah segmen Anda.",how2:"Atur jumlah taruhan Anda dan pasang taruhan Anda.",how3:"Roda berputar dan berhenti pada sebuah segmen.",how4:"Pembayaran Anda adalah taruhan × pengganda yang ditunjukkan pada segmen tempat roda berhenti.",how5:"Setiap segmen memiliki pengali yang berbeda berdasarkan tingkat risiko dan jumlah segmen yang Anda pilih.",overview:"Putar roda dan lihat di mana ia berhenti. Pilih tingkat risiko dan jumlah segmen sebelum setiap putaran - risiko lebih rendah memberikan kemenangan lebih sering dengan pengali yang lebih kecil; risiko lebih tinggi memberikan kemenangan yang jarang dengan pengali yang lebih besar.",provablyFair:"Sistem keacakan yang dapat diverifikasi kami menghasilkan setiap hasil Wheel. Setelah setiap putaran, Anda dapat melihat input dan bukti, memverifikasi hasilnya dengan kunci publik kami, dan mereproduksi hasil yang sama.",strategyTip:"Risiko rendah menawarkan kemenangan kecil yang stabil. Risiko sedang menyeimbangkan frekuensi dan pembayaran. Risiko tinggi menargetkan pengganda yang jarang tetapi besar. Lebih banyak segmen meningkatkan potensi maksimum tetapi mengurangi frekuensi kemenangan."},roulette:{how1:"Klik pada grid untuk menempatkan chip pada taruhan pilihan Anda.",how2:"Sesuaikan jumlah taruhan per klik dengan tombol 1/2 dan 2X.",how3:"Pasang taruhan Anda untuk memutar roda.",how4:"Bola mendarat di nomor acak dari 0–36 (atau 00 untuk American).",how5:"Taruhan yang menang dibayar sesuai peluangnya; semua chip lainnya hilang.",overview:"Tempatkan chip pada grid taruhan dan putar roda. Taruhan pada nomor tunggal, kelompok nomor, warna, atau ganjil/genap. Bola mendarat di kantong acak, dan taruhan yang cocok dibayar sesuai peluangnya.",provablyFair:"Sistem keacakan terverifikasi kami menghasilkan setiap putaran Roulette. Setelah setiap putaran, Anda dapat melihat input dan bukti, memverifikasi hasil dengan kunci publik kami, dan mereproduksi hasil yang sama.",strategyTip:"Taruhan luar (merah/hitam, ganjil/genap) menawarkan hampir 50% peluang menang dengan pembayaran 2X. Taruhan dalam pada nomor tunggal membayar hingga 36X tapi jarang menang. Sebar chip Anda untuk menyeimbangkan risiko dan hadiah."}},games:{advancedDice:{between:"Antara",boundsLower:"Batas bawah",boundsUpper:"Batas atas",inside:"Di dalam",outside:"Di luar",rollMode:"Mode Gulir",secondBoundsLower:"Batas bawah kedua",secondBoundsUpper:"Batas atas kedua"},dice:{rollOver:"Gulung Lebih Tinggi",rollUnder:"Gulung Di Bawah"},keno:{autoPick:"Pilih Otomatis",clearTable:"Bersihkan",kenoGameGrid:"Grid Permainan Keno",kenoNumber:"Nomor Keno {value}",selectAtLeastOneTile:"Pilih setidaknya satu ubin",selectTileToAutobet:"Pilih setidaknya satu ubin"},limbo:{multiplierError:"Harus antara {min} dan {max}",targetMultiplier:"Pengganda",winChanceError:"Harus antara {min} dan {max}"},mines:{cashout:"Tarik Dana",gem:"Permata",gems:"Permata",mine:"Tambang",mines:"Mines",nextGem:"Permata Berikutnya",selectRandomTile:"Pilih Ubin Acak",selectTileToAutobet:"Pilih setidaknya satu ubin",tile:"Ubin",unrevealed:"Belum Terungkap"},wheel:{segments:"Segmen"},roulette:{chipValue:"Nilai Chip",totalBetAmount:"Total Taruhan"}},hotkeys:{clearBets:"Hapus Taruhan",doubleBet:"Gandakan Jumlah Taruhan",doubleChipValue:"Gandakan Nilai Chip",doubleTotalBet:"Gandakan Total Taruhan",halveBet:"Setengah Jumlah Taruhan",halveChipValue:"Setengahkan Nilai Chip",halveTotalBet:"Setengahkan Total Taruhan",higherTarget:"Target Lebih Tinggi",info:"Saat hotkey diaktifkan, hotkey akan tetap menyala untuk permainan ini sampai dinonaktifkan. Meskipun beberapa permainan memiliki kombinasi tombol yang mirip, selalu disarankan untuk memastikan hotkey untuk setiap permainan.",lowerTarget:"Target Bawah",makeBet:"Pasang Taruhan",resetChipValue:"Atur Ulang Nilai Chip",toggleWinCondition:"Alihkan Kondisi Menang",undo:"Batalkan",zeroBet:"Jumlah Taruhan Nol"},modals:{betResult:"Hasil Taruhan",fairnessAndHistory:"Keadilan dan Riwayat",gameArea:"Area Permainan",gameControls:"Kontrol Permainan",gameInfo:"Informasi Game"}}});var A4=D1((rt,Ci)=>{Ci.exports={accessibility:{sliderValue:"{value} / {max}"},alerts:{autobetStarted:"オートベットモードを開始しました",autobetStopped:"オートベットモードを停止しました",betAmountAboveMaxBet:"最大ベット額は{value}です",betAmountBelowMinBet:"最低ベット額は{value}です",betLimitReached:"ベット上限に達しました",errorProcessingBet:"ベットの処理中にエラーが発生しました。もう一度お試しください。",failedToLoadBetData:"ベットデータの読み込みに失敗しました",gameError:"ベットの処理中にエラーが発生しました。もう一度お試しください。",insufficientBalance:"残高が不足しています",maxPayoutExceeded:"最大配当額を超えました",notEnoughBalance:"残高が足りません"},autobet:{configureAutobet:"Autobetを設定",games:"ゲーム",games10:"10種類のゲーム",games100:"100ゲーム",games25:"25種類のゲーム",games5:"5つのゲーム",games50:"50ゲーム",increase:"増加",infinite:"無限",onLoss:"敗北時",onWin:"勝利時",reset:"リセット",startAutobet:"オートベットを開始",stopAutobet:"オートベットを停止",stopOnLoss:"損失で停止",stopOnProfit:"利益で停止"},clipboard:{linkCopied:"リンクがクリップボードにコピーされました!"},common:{auto:"オート",back:"戻る",balance:"残高",bet:"ベット額",betAmount:"ベット額",cancel:"キャンセル",cashOut:"キャッシュアウト",classic:"クラシック",confirm:"確認",copied:"コピー済み",currency:"通貨",deposit:"入金",disableHotkeys:"ホットキーを無効にする",disableMaxBet:"最大ベットを無効にする",enableHotkeys:"ホットキーを有効にする",enableMaxBet:"最大ベットを有効にする",footerNavigation:"フッターナビゲーション",gameInfo:"ゲーム情報",gameName:"ゲーム名",high:"ハイ",history:"履歴",hotkeys:"ホットキー",id:"ID",instantBet:"インスタントベット",loading:"読み込み中...",loadMore:"さらに表示",lobby:"ロビーに戻る",low:"低",manual:"マニュアル",max:"MAX",medium:"ミディアム",multiplier:"マルチプライヤー",payout:"配当",placeBet:"ベットする",profit:"利益",profitOnWin:"勝利時の利益",provablyFair:"証明可能な公正",risk:"リスク",roundId:"ラウンドID",saveChanges:"変更を保存",shareReplay:"リプレイを共有",siteInformation:"ゲーム情報",space:"SPACE",support:"サポート",targetMultiplier:"マルチプライヤー",thisFieldIsRequired:"この項目は必須です",timestamp:"時間",toggleHotkeys:"ホットキーの切り替え",viewFairnessInformation:"公正性情報を表示",viewHistory:"履歴を表示",volume:"ボリューム",winChance:"勝利確率"},errors:{dice:{multiplierRange:"{min}から{max}の間でなければなりません",winChanceRange:"{min}から{max}の間でなければなりません"},noWheelData:"ホイールデータがありません",requestDropped:"リクエストが中断されました"},fairness:{activeClientSeed:"有効なクライアントシード",enterClientSeed:"クライアントシードを入力",enterProof:"証明を入力",enterPublicKey:"公開鍵を入力",enterRandomness:"ランダム性を入力",enterRequest:"リクエストを入力",info:{p1:"すべてのラウンドの結果は、隠されたサーバーロジックではなく、検証可能なランダム性から生まれます。私たちは、そのラウンド固有の値—gameId、tenantId、tenantUserId、増分されるnonce(各完了したラウンドごとに1つ)、さらにあなたのclientSeed—から決定論的なシードを構築します。これにより、各ラウンドが一意で再現可能であることが保証されます:同じ入力 → 同じランダムストリーム → 同じ結果。",p2:"そのシードは、IETFの仕様書 draft-irtf-cfrg-vrf-15 に従って、楕円曲線検証可能疑似乱数関数(ECVRF)を通して実行されます。私たちのサーバーは秘密鍵を使ってランダム値と暗号学的証明(proofString)を生成します。私たちの公開鍵を持つ誰もが、指定された入力に対してその証明を独立して検証でき、ランダム性がシードから生成されたこと、改ざんされていないことを確認できます。SDKはTypeScriptであり、コアの暗号処理にはパフォーマンスと安全性のためにNAPI-RS経由でfastcrypto Rustライブラリを使用しています。",p3:"検証が完了すると、VRFの出力が決定論的なランダムバイトジェネレーター(hashSequence)のシードになります。ゲームはこれらのバイトを決定論的かつ偏りのないロジックで結果に変換します。このプロセスは決定論的であり、各ラウンドが完了するごとにnonceが進むため、同じラウンドを正確に再現できるリプレイ可能な監査と、毎回新しく繰り返しのないランダム性の両方が得られます。",p4:"ラウンド終了後、あなたは入力(clientSeedとそのラウンドのnonceを含む)、VRF出力、proofString、そして当社の公開鍵を持っています。任意のECVRF検証ツールまたは当社のライブラリを使用して、(1) 入力と公開鍵に対してproofを検証し、(2) 同じhashSequenceと結果を再生成してください。当社の秘密鍵は安全なサーバーから決して外部に出ることはなく、公開鍵はクライアント側で独立した検証に安全に使用できます。",step1Desc:"gameId、tenantId、tenantUserId、各ラウンドごとのnonce、そしてあなたのclientSeedを組み合わせます。同じ入力は常に同じランダムなストリームと結果を生み出します。",step1Title:"決定論的シード",step2Title:"ランダム性を生成",step3Desc:"誰でも、当社の公開鍵を使って指定された入力に対するproofStringを検証できます。これにより、乱数がseedと一致しており改ざんされていないことが確認できます。",step3Title:"証明を検証",step4Title:"結果を導き出す",step5Title:"再現"},invalidGame:"無効なゲームタイプが指定されています。",learnMore:"詳細はこちら",newClientSeed:"新しいクライアントシード",noBettingHistory:"ベット履歴がありません",outcomeCalculationInfo:"このゲームは、公正で透明な結果を保証する証明可能なフェアアルゴリズムを使用しています。",outcomeNotVerified:"このゲームの結果を検証できませんでした。正しい情報が入力されているか再確認し、もう一度お試しください。",outcomeVerified:"このラウンドの結果は当社の公開鍵で検証されており、証明可能な公正性が保証されています。",proof:"証明",publicKey:"アクティブ公開鍵",randomness:"ランダム性",request:"リクエスト",saveClientSeed:"クライアントシードを保存",verifyOutcome:"結果を検証"},gameInfo:{advancedDice:{how1:"ロールモードを選択:インサイド、アウトサイド、またはビトウィーン。",how2:"スライダーをドラッグして勝利ゾーンを定義します。",how3:"ベット額を設定してベットを行います。",how4:"0から100の間のランダムな数字が生成されます。",how5:"結果が選択したゾーン内に収まれば勝利です。",overview:"アドバンスドダイスでは、カスタム勝利ゾーンを設定できます。結果が範囲内に収まった場合に勝つインサイド、範囲外に出た場合に勝つアウトサイド、または2つの勝利ゾーンに分割するビトウィーンを選択できます。",provablyFair:"当社の検証可能なランダム性システムがすべてのアドバンスドダイスの結果を生成します。各ラウンド後、入力と証明を確認し、公開鍵で結果を検証し、同じ結果を再現できます。",strategyTip:"広いゾーンは頻繁な勝利を提供しますが、マルチプライヤーは小さくなります。狭いゾーンはリスクが高いですが、より大きな配当があります。ビトウィーンモードでは、柔軟な戦略のために2つの範囲をターゲットにできます。"},diamonds:{how1:"ベット金額を設定して、ベットを行ってください。",how2:"固定された種類の宝石から5つのダイヤモンドが公開されます。",how3:"あなたの結果はポーカーの手役のように評価されます:ワンペア、ツーペア、スリーカード、フルハウス、フォーカード、ファイブカード。",how4:"各ハンドタイプにはそれぞれ独自のマルチプライヤーがあり、高い価値のハンドほど大きなマルチプライヤーが与えられます。一方、成立していないハンドは0Xとなります。",how5:"あなたの配当は、出た手札に対して表示されたマルチプライヤーであなたのベットを掛けたものになります。",overview:"Diamondsは、5リールのマッチングゲームです。各ラウンドでは、さまざまな宝石タイプの中から5つのダイヤモンドが現れます。あなたの目標は、ペア、スリーカード、フルハウスなど、ポーカーのような組み合わせを揃えることです。",provablyFair:"私たちの検証可能なランダムネスシステムは、各ダイヤモンドの結果を選択します。各ラウンドの後、基礎となるランダム値と証明を確認でき、私たちの公開鍵で結果を検証し、同じハンドを再現できます。",strategyTip:"Diamondsは高ボラティリティかつ固定オッズのゲームで、大きなポーカー風の役を狙います。あなたの主な選択肢は、どれだけアグレッシブにプレイするかという点です。ドライな期間を乗り切りたい場合は小さく安定したベットを使いましょう。プレミアムハンドを狙うときは時折ベット額を上げてみてください。"},dice:{how1:"ロールアンダーかロールオーバーを選択してください。",how2:"目標数値を設定してください。",how3:"ベット金額を設定して、ベットを行ってください。",how4:"ゲーム内で0~99.99のスケールで表示されるランダムな結果を1つ生成します。",how5:"結果があなたの選んだ範囲内であれば勝ちです。",how6:"あなたの配当金は、ベット額に表示されているマルチプライヤーを掛けたものになり、スライダーを動かすたびに更新されます。",overview:"目標となる数字を設定し、ロールがその数字未満か超えるかを選択します。スライダーを動かすことで勝率とマルチプライヤーが変化します。勝率が高いほどマルチプライヤーは低くなり、勝率が低いほどマルチプライヤーは高くなります。各ラウンドはゲームのスケール上で独立した1回のロールです。",provablyFair:"私たちの検証可能なランダムネスシステムは、すべてのDiceのロールを生成します。各ラウンドの後、入力と証明を確認でき、公開鍵で結果を検証し、同じ結果を再現できます。",strategyTip:"ボラティリティを選択してください。勝率が低いほど、配当倍率は高くなりますが、当たりは稀になります。勝率が高いほど、配当倍率は低くなりますが、当たりは頻繁になります。安定した変動のために、ベット額を資金に合わせて調整しましょう。"},keno:{how1:"1〜40の盤上で1〜10枚のタイルを選んでください。",how2:"ベット金額を設定して、ベットを行ってください。",how3:"当選番号を10個抽選します。あなたの一致した番号がハイライトされます。",how4:"配当は、選択したタイルの数と当てた数によって決まります。ペイテーブルを確認してください。",how5:"選択した数より多くの数字を当てることはできません。最大選択数は10です。",overview:"ラッキーナンバーを選んで、抽選に当ててみましょう。1から40の中から1〜10個の数字を選ぶことができ、その後、私たちが10個の数字を抽選します。選んだ数字が多く当たるほど、配当が高くなります。",provablyFair:"私たちの検証可能なランダムネスシステムは、すべてのKeno抽選を生成します。各ラウンド後に、入力と証明を確認し、公開鍵で結果を検証し、同じ結果を再現することができます。",strategyTip:"ボラティリティを選択してください。少ないスポットを選ぶと当たりは稀になりますが、はるかに大きなマルチプライヤーが得られます。多くのスポットを選ぶと当たりは頻繁になりますが、1回あたりの平均リターンは小さくなります。中間の範囲はヒット率と配当のバランスが取れています。リスクの好みや資金に合わせてベット額を調整しましょう。"},limbo:{how1:"目標マルチプライヤーを設定してください。",how2:"ベット金額を設定して、ベットを行ってください。",how3:"私たちは1つのランダムな結果のマルチプライヤーを生成します。",how4:"結果があなたのターゲット以上であれば勝ちです。",how5:"あなたの配当金は、ベット額 × あなたの目標マルチプライヤーです。それ以外の場合は、ベットを失います。",overview:"Limboでは、希望するペイアウトを設定し、ゲームが1つのランダムな結果のマルチプライヤーを引きます。結果が目標以上であれば勝ち、低ければ負けとなります。勝つ確率が高いほどマルチプライヤーは低くなり、確率が低いほどマルチプライヤーは高くなります。",provablyFair:"私たちの検証可能なランダムネスシステムは、すべてのLimboの結果を生成します。各ラウンドの後、入力と証明を確認し、公開鍵で結果を検証し、同じ結果を再現することができます。",strategyTip:"低いターゲットは当たりやすいですが、配当は少なくなります。一方、高いターゲットは当たることはまれですが、配当ははるかに多くなります。セッションごとに固定のターゲットを選ぶか、時折ロングショットを混ぜることを検討し、ベット額を一貫して設定してバリアンスを管理しましょう。"},limitContent:"このゲームで達成可能な最大マルチプライヤーは{multiplier}Xです。最大獲得可能配当は{payout}です",limitTitle:"制限",mines:{how1:"このラウンドの地雷の数を選択してください。",how2:"ベット金額を設定して、ベットを行ってください。",how3:"タイルをクリックしてめくってください:安全なタイルはマルチプライヤーが増加します。地雷を踏むとラウンドが終了します。",how4:"現在のマルチプライヤーを確定するために、いつでもキャッシュアウトできます。",how5:"キャッシュアウト時の配当は、ベット額に現在のマルチプライヤーを掛けた金額です。",how6:"ラウンドはキャッシュアウトするか、マインが明らかになった時に終了します。",overview:"Minesは安全なタイルを選び、いつキャッシュアウトするかを決めるゲームです。ラウンド開始前に、ボード上に隠されるマインの数を選択します。安全なタイルをめくるごとにマルチプライヤーが増加します。マインを踏んでしまうと、そのラウンドは終了し、配当はありません。",provablyFair:"私たちの検証可能なランダムネスシステムは、各ボードの隠された地雷配置を生成します。各ラウンドの後に、入力と証明を表示し、公開鍵で結果を検証し、同じ結果を再現できます。",strategyTip:"ボラティリティを選択してください。マインが少ないほど、リスクが低く、1ステップごとのマルチプライヤーは小さくなります。マインが多いほど、リスクが高まり、大きなマルチプライヤーが得られます。目標を設定するか、ストップロスを使って変動を管理しましょう。一定のベットサイズと規律あるキャッシュアウトが、バリアンスのコントロールに役立ちます。"},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"このゲームのペイアウト率(RTP)は {rtpValue}% です。",rtpTitle:"RTP:{rtpValue}%",strategyTitle:"戦略",tutorial:"チュートリアル",wheel:{how1:"リスクレベルとセグメント数を選択してください",how2:"ベット金額を設定して、ベットを行ってください。",how3:"ホイールが回転して、セグメントに止まります。",how4:"あなたの配当は、ホイールが止まったセグメントに表示されているマルチプライヤーとベット額を掛けたものです。",how5:"各セグメントは、選択したリスクレベルとセグメント数に基づいて異なるマルチプライヤーが設定されています。",overview:"ホイールを回して、どこに止まるか見ましょう。各スピンの前にリスクレベルとセグメント数を選択してください。リスクが低いほど、小さなマルチプライヤーで当たりやすくなります。リスクが高いほど、大きなマルチプライヤーで当たりにくくなります。",provablyFair:"私たちの検証可能なランダムネスシステムは、すべてのWheelの結果を生成します。各ラウンドの後に、インプットと証明を確認でき、私たちの公開鍵で結果を検証し、同じ結果を再現することができます。",strategyTip:"低リスクは安定した小さな勝利をもたらします。中リスクは当選頻度と配当のバランスを取ります。高リスクは稀ですが大きなマルチプライヤーを狙います。セグメントが多いほど最大の可能性が高まりますが、当選頻度は下がります。"},roulette:{how1:"グリッドをクリックして、選んだベットにチップを置きます。",how2:"1/2と2Xボタンでクリックごとのベット額を調整します。",how3:"ベットを置いてホイールを回します。",how4:"ボールは0〜36のランダムな数字に落ちます(アメリカンは00も)。",how5:"当たったベットはオッズに応じて支払われ、他のチップはすべて失われます。",overview:"ベッティンググリッドにチップを置き、ホイールを回します。単一の数字、数字のグループ、色、または奇数/偶数に賭けます。ボールはランダムなポケットに落ち、当たったベットはオッズに応じて支払われます。",provablyFair:"検証可能な乱数システムがすべてのルーレットスピンを生成します。各ラウンド後、入力と証明を確認し、公開鍵で結果を検証し、同じ結果を再現できます。",strategyTip:"アウトサイドベット(赤/黒、奇数/偶数)は2倍の配当でほぼ50%の勝率を提供します。単一数字へのインサイドベットは最大36倍を支払いますが、めったに当たりません。リスクとリターンのバランスを取るためにチップを分散させましょう。"}},games:{advancedDice:{between:"間",boundsLower:"下限",boundsUpper:"上限",inside:"内側",outside:"外側",rollMode:"ロールモード",secondBoundsLower:"第2下限",secondBoundsUpper:"第2上限"},dice:{rollOver:"ロールオーバー",rollUnder:"ロールアンダー"},keno:{autoPick:"自動選択",clearTable:"クリア",kenoGameGrid:"ケノゲームグリッド",kenoNumber:"ケノナンバー {value}",selectAtLeastOneTile:"少なくとも1つのタイルを選択してください",selectTileToAutobet:"少なくとも1つのタイルを選択してください"},limbo:{multiplierError:"{min}から{max}の間でなければなりません",targetMultiplier:"マルチプライヤー",winChanceError:"{min}から{max}の間でなければなりません"},mines:{cashout:"キャッシュアウト",gem:"ジェム",gems:"ジェム",mine:"マイン",mines:"マイン",nextGem:"次のジェム",selectRandomTile:"ランダムなタイルを選択",selectTileToAutobet:"少なくとも1つのタイルを選択してください",tile:"タイル",unrevealed:"未公開"},wheel:{segments:"セグメント"},roulette:{chipValue:"チップの価値",totalBetAmount:"合計ベット額"}},hotkeys:{clearBets:"ベットをクリア",doubleBet:"ベット額を2倍にする",doubleChipValue:"チップ価値を2倍",doubleTotalBet:"総ベットを2倍",halveBet:"ベット額を半分にする",halveChipValue:"チップ価値を半分",halveTotalBet:"総ベットを半分",higherTarget:"より高いターゲット",info:"ホットキーが有効になっている場合、無効にするまでこのゲームで有効のままになります。いくつかのゲームで似たようなキー割り当てが共有されている場合でも、各ゲームごとにホットキーを確認することを常におすすめします。",lowerTarget:"下限ターゲット",makeBet:"ベットする",resetChipValue:"チップ価値をリセット",toggleWinCondition:"勝利条件を切り替える",undo:"元に戻す",zeroBet:"ベット額がゼロ"},modals:{betResult:"ベット結果",fairnessAndHistory:"公平性と履歴",gameArea:"ゲームエリア",gameControls:"ゲームコントロール",gameInfo:"ゲーム情報"}}});var V4=D1((lt,$i)=>{$i.exports={accessibility:{sliderValue:"{value} / {max} 중"},alerts:{autobetStarted:"오토벳 모드를 시작했습니다",autobetStopped:"자동 베팅 모드가 중지되었습니다",betAmountAboveMaxBet:"최대 베팅 한도는 {value}입니다",betAmountBelowMinBet:"최소 베팅 금액은 {value}입니다",betLimitReached:"베팅 한도에 도달했습니다",errorProcessingBet:"베팅을 처리하는 중 오류가 발생했습니다. 다시 시도해 주세요.",failedToLoadBetData:"베팅 데이터를 불러오지 못했습니다",gameError:"베팅을 처리하는 중 오류가 발생했습니다. 다시 시도해 주세요.",insufficientBalance:"잔액이 부족합니다",maxPayoutExceeded:"최대 지급액 초과",notEnoughBalance:"잔액이 부족합니다"},autobet:{configureAutobet:"Autobet 구성",games:"게임",games10:"10 게임",games100:"100 게임",games25:"25 게임",games5:"5개 게임",games50:"50 게임",increase:"증가",infinite:"무한",onLoss:"패배 시",onWin:"승리 시",reset:"초기화",startAutobet:"오토벳 시작",stopAutobet:"자동 베팅 중지",stopOnLoss:"손실 시 중지",stopOnProfit:"이익 실현 시 중지"},clipboard:{linkCopied:"링크가 클립보드에 복사되었습니다!"},common:{auto:"자동",back:"뒤로",balance:"잔액",bet:"베팅 금액",betAmount:"베팅 금액",cancel:"취소",cashOut:"현금 출금",classic:"클래식",confirm:"확인",copied:"복사됨",currency:"통화",deposit:"입금",disableHotkeys:"단축키 비활성화",disableMaxBet:"최대 베팅 비활성화",enableHotkeys:"단축키 활성화",enableMaxBet:"최대 베팅 활성화",footerNavigation:"푸터 내비게이션",gameInfo:"게임 정보",gameName:"게임 이름",high:"높음",history:"히스토리",hotkeys:"단축키",id:"ID",instantBet:"즉시 베팅",loading:"로딩 중...",loadMore:"더 보기",lobby:"로비로 돌아가기",low:"낮음",manual:"매뉴얼",max:"MAX",medium:"중간",multiplier:"배수",payout:"지급금",placeBet:"베팅하기",profit:"수익",profitOnWin:"승리 시 수익",provablyFair:"입증 가능하게 공정",risk:"위험",roundId:"라운드 ID",saveChanges:"변경사항 저장",shareReplay:"리플레이 공유",siteInformation:"게임 정보",space:"SPACE",support:"지원",targetMultiplier:"배수",thisFieldIsRequired:"이 필드는 필수입니다",timestamp:"시간",toggleHotkeys:"단축키 전환",viewFairnessInformation:"공정성 정보 보기",viewHistory:"히스토리 보기",volume:"볼륨",winChance:"승리 확률"},errors:{dice:{multiplierRange:"{min}에서 {max} 사이여야 합니다",winChanceRange:"{min}에서 {max} 사이여야 합니다"},noWheelData:"휠 데이터가 없습니다",requestDropped:"요청이 중단되었습니다"},fairness:{activeClientSeed:"활성 클라이언트 시드",enterClientSeed:"클라이언트 시드를 입력하세요",enterProof:"증명 입력",enterPublicKey:"공개 키 입력",enterRandomness:"무작위성 입력",enterRequest:"요청 입력",info:{p1:"모든 라운드의 결과는 숨겨진 서버 로직이 아니라 검증 가능한 무작위성에서 나옵니다. 우리는 gameId, tenantId, tenantUserId, 증가하는 nonce(완료된 라운드마다 하나씩), 그리고 당신의 clientSeed 등 라운드마다 고유한 값들로 결정적인 시드를 만듭니다. 이를 통해 각 라운드가 고유하며 재현 가능함이 보장됩니다: 동일한 입력값 → 동일한 무작위 스트림 → 동일한 결과.",p2:"그 시드는 IETF 사양 draft-irtf-cfrg-vrf-15에 따라 타원 곡선 검증 가능 난수 함수(ECVRF)를 통해 실행됩니다. 우리 서버는 자신의 개인 키를 사용하여 무작위 값과 암호학적 증명(proofString)을 생성합니다. 누구나 우리의 공개 키를 사용하면 주어진 입력값에 대해 그 증명을 독립적으로 검증할 수 있어, 무작위성이 시드에서 생성되었고 변조되지 않았음을 확인할 수 있습니다. SDK는 TypeScript로 작성되어 있으며, 핵심 암호화는 성능과 안전성을 위해 NAPI-RS를 통해 fastcrypto Rust 라이브러리를 사용합니다.",p3:"검증이 완료되면 VRF 출력이 결정론적 난수 바이트 생성기(hashSequence)에 시드로 사용됩니다. 게임들은 이러한 바이트를 결정론적이고 편향되지 않은 논리를 통해 결과로 변환합니다. 이 과정이 결정론적이고, nonce가 매 라운드가 끝날 때마다 증가하기 때문에, 재현 가능한 감사(동일한 라운드를 정확히 재현)와 매번 새롭고 반복되지 않는 무작위성을 모두 얻을 수 있습니다.",p4:"한 라운드가 끝난 후에는 입력값(여기에는 clientSeed와 해당 라운드의 nonce 포함), VRF 출력값, proofString, 그리고 저희의 공개키를 갖게 됩니다. 어떤 ECVRF 검증기나 저희 라이브러리를 사용하여 (1) 입력값과 공개키에 대해 proof를 검증하고, (2) 동일한 hashSequence와 결과를 다시 생성하십시오. 저희의 비공개 키는 보안 서버를 절대 벗어나지 않으며, 공개키는 클라이언트 측에서 독립적인 검증을 위해 안전하게 사용할 수 있습니다.",step1Desc:"우리는 gameId, tenantId, tenantUserId, 라운드별 nonce, 그리고 당신의 clientSeed를 결합합니다. 동일한 입력값은 항상 동일한 랜덤 스트림과 결과를 생성합니다.",step1Title:"결정적 시드",step2Title:"무작위성 생성",step3Desc:"누구나 우리의 공개 키를 사용하여 주어진 입력값에 대한 proofString을 검증할 수 있습니다. 이를 통해 무작위성이 시드와 일치하며 변조되지 않았음을 확인할 수 있습니다.",step3Title:"증명 확인",step4Title:"결과 도출",step5Title:"재현"},invalidGame:"잘못된 게임 유형이 제공되었습니다.",learnMore:"자세히 알아보기",newClientSeed:"새 클라이언트 시드",noBettingHistory:"베팅 내역이 없습니다",outcomeCalculationInfo:"이 게임은 결과가 공정하고 투명하게 이루어지도록 증명 가능하고 공정한 알고리즘을 사용합니다.",outcomeNotVerified:"이 게임의 결과를 확인할 수 없습니다. 입력한 정보가 올바른지 다시 확인하고 다시 시도해 주세요.",outcomeVerified:"이 라운드의 결과는 우리의 공개 키로 검증되었으며, 공정함이 입증되었습니다.",proof:"증명",publicKey:"활성 공개 키",randomness:"무작위성",request:"요청",saveClientSeed:"클라이언트 시드 저장",verifyOutcome:"결과 확인"},gameInfo:{advancedDice:{how1:"롤 모드를 선택하세요: 내부, 외부 또는 사이.",how2:"슬라이더를 드래그하여 승리 구역을 정의하세요.",how3:"베팅 금액을 설정하고 베팅하세요.",how4:"0과 100 사이의 무작위 숫자가 생성됩니다.",how5:"결과가 선택한 구역 내에 들어오면 승리합니다.",overview:"어드밴스드 다이스를 사용하면 사용자 정의 승리 구역을 설정할 수 있습니다. 결과가 범위 내에 들어올 때 승리하려면 내부를, 범위를 벗어날 때 승리하려면 외부를, 또는 두 개의 승리 구역으로 나누려면 사이를 선택하세요.",provablyFair:"저희의 검증 가능한 무작위 시스템이 모든 어드밴스드 다이스 결과를 생성합니다. 매 라운드 후 입력과 증명을 확인하고, 공개 키로 결과를 검증하며, 동일한 결과를 재현할 수 있습니다.",strategyTip:"더 넓은 구역은 더 빈번한 승리를 제공하지만 배수는 작습니다. 좁은 구역은 위험이 높지만 더 많이 지급합니다. 사이 모드를 사용하면 유연한 전략을 위해 두 범위를 목표로 할 수 있습니다."},diamonds:{how1:"베팅 금액을 설정하고 베팅을 하세요.",how2:"다섯 개의 Diamonds가 고정된 보석 종류 세트에서 공개됩니다.",how3:"당신의 결과는 포커 핸드처럼 평가됩니다: 원페어, 투페어, 트리플, 풀 하우스, 포카드, 그리고 파이브카드.",how4:"각 핸드 유형마다 고유의 배당률이 있으며, 높은 가치의 핸드는 더 큰 배당률을 제공합니다. 핸드를 완성하지 못한 경우에는 0X가 지급됩니다.",how5:"당신의 배당금은 결과 핸드에 표시된 배당률로 베팅 금액을 곱한 값입니다.",overview:"Diamonds는 5릴 매칭 게임입니다. 각 라운드마다 다양한 보석 종류 중에서 다섯 개의 다이아몬드가 공개됩니다. 목표는 포커 스타일의 조합, 즉 페어, 트리플, 풀하우스 등과 같은 조합을 만드는 것입니다.",provablyFair:"우리의 검증 가능한 무작위성 시스템이 각 Diamonds 결과를 선택합니다. 매 라운드가 끝난 후, 기본 무작위 값과 증명을 확인할 수 있으며, 우리의 공개 키로 결과를 검증하고 동일한 핸드를 재현할 수 있습니다.",strategyTip:"Diamonds는 높은 변동성과 고정 배당률을 가진 게임으로, 포커 스타일의 큰 핸드를 노리는 게임입니다. 주요 전략은 얼마나 공격적으로 플레이할지에 달려 있습니다. 건조한 구간을 버티고 싶다면 소액의 꾸준한 베팅을 사용하고, 프리미엄 핸드를 노릴 때는 가끔씩 베팅 금액을 올려보세요."},dice:{how1:"언더 롤 또는 오버 롤을 선택하세요.",how2:"목표 숫자를 설정하세요.",how3:"베팅 금액을 설정하고 베팅을 하세요.",how4:"우리는 하나의 무작위 결과를 생성합니다(게임 내에서 0–99.99 범위로 표시됨).",how5:"결과가 선택한 범위에 있으면 승리합니다.",how6:"당신의 당첨금은 베팅 금액에 표시된 배율을 곱한 값이며, 슬라이더를 이동할 때마다 배율이 업데이트됩니다.",overview:"목표 숫자를 설정하고 주사위가 해당 숫자보다 높거나 낮게 나올지 선택하세요. 슬라이더를 움직이면 승리 확률과 배당률이 변경됩니다. 확률이 높을수록 배당률이 낮아지고, 확률이 낮을수록 배당률이 높아집니다. 각 라운드는 게임의 스케일에서 독립적인 한 번의 주사위 굴림입니다.",provablyFair:"우리의 검증 가능한 무작위성 시스템은 모든 Dice 굴림을 생성합니다. 각 라운드가 끝난 후, 입력값과 증명을 확인할 수 있으며, 우리의 공개 키로 결과를 검증하고 동일한 결과를 재현할 수 있습니다.",strategyTip:"변동성을 선택하세요. 낮은 승리 확률은 더 큰 배당률을 제공하지만 당첨이 드뭅니다. 높은 승리 확률은 더 작은 배당률을 제공하지만 더 자주 이깁니다. 자금에 맞게 베팅 크기를 조절하여 더 안정적인 변동을 경험하세요."},keno:{how1:"1-40 보드에서 1–10개의 타일을 선택하세요.",how2:"베팅 금액을 설정하고 베팅을 하세요.",how3:"우리는 10개의 당첨 번호를 추첨하며, 사용자의 일치 번호가 강조 표시됩니다.",how4:"지급금은 선택한 타일의 수와 맞힌 개수에 따라 달라집니다—지급표를 확인하세요.",how5:"선택한 숫자보다 더 많이 맞출 수는 없으며, 최대 선택 가능 숫자는 10개입니다.",overview:"행운의 번호를 선택하고 추첨 결과와 맞춰보세요. 1에서 40까지 중에서 1~10개의 번호를 선택할 수 있으며, 저희가 10개의 번호를 추첨합니다. 선택한 번호가 많이 맞을수록 더 높은 배당금을 받게 됩니다.",provablyFair:"우리의 검증 가능한 랜덤 시스템은 모든 Keno 추첨을 생성합니다. 각 라운드가 끝난 후, 입력값과 증명을 확인하고, 공개 키로 결과를 검증하며, 동일한 결과를 재현할 수 있습니다.",strategyTip:"변동성을 선택하세요. 더 적은 지점을 선택하면 당첨은 드물지만 훨씬 더 큰 배당률을 얻을 수 있습니다. 더 많은 지점을 선택하면 더 자주 당첨되지만 한 번에 얻는 평균 수익은 작아집니다. 중간 범위는 적중률과 배당의 균형을 이룹니다. 자신의 위험 선호도와 자금에 맞게 베팅 금액을 조정하세요."},limbo:{how1:"목표 배당률을 설정하세요.",how2:"베팅 금액을 설정하고 베팅을 하세요.",how3:"우리는 하나의 무작위 결과 배수를 생성합니다.",how4:"결과가 목표값보다 크거나 같으면 승리합니다.",how5:"당신의 배당금은 배팅 금액에 목표 배수를 곱한 값입니다. 그렇지 않으면 베팅 금액을 잃게 됩니다.",overview:"Limbo에서는 원하는 배당을 설정하고, 게임이 단일 무작위 결과 배수를 추첨합니다. 결과가 목표 이상이면 승리하고, 더 낮으면 패배합니다. 확률이 높을수록 배수가 낮아지고, 확률이 낮을수록 배수가 높아집니다.",provablyFair:"우리의 검증 가능한 난수 생성 시스템은 모든 Limbo 결과를 생성합니다. 매 라운드가 끝난 후, 입력값과 증명을 확인할 수 있으며, 우리의 공개키로 결과를 검증하고 동일한 결과를 재현할 수 있습니다.",strategyTip:"낮은 목표는 더 자주 이기지만 지급액이 적고, 높은 목표는 드물게 성공하지만 훨씬 더 많은 보상을 제공합니다. 세션마다 고정된 목표를 선택하거나 가끔씩 큰 목표를 시도해 보고, 변동성을 관리하기 위해 베팅 금액을 일관되게 유지하세요."},limitContent:"이 게임에서 달성 가능한 최대 배수는 {multiplier}X입니다. 달성 가능한 최대 배당금은 {payout}입니다.",limitTitle:"한도",mines:{how1:"이번 라운드에 설치할 지뢰의 개수를 선택하세요.",how2:"베팅 금액을 설정하고 베팅을 하세요.",how3:"타일을 클릭하여 공개하세요: 안전한 타일은 배수를 증가시키고, 지뢰를 클릭하면 라운드가 종료됩니다.",how4:"언제든지 현금화를 통해 현재 배율을 고정할 수 있습니다.",how5:"현금화할 때 당첨금은 베팅 금액에 현재 배율을 곱한 값입니다.",how6:"라운드는 현금화하거나 지뢰가 드러날 때 종료됩니다.",overview:"Mines는 안전한 타일을 선택하고 언제 현금화할지 결정하는 게임입니다. 라운드가 시작되기 전에 보드에 숨겨질 지뢰의 개수를 선택하세요. 안전한 타일을 하나씩 공개할 때마다 배율이 증가합니다. 지뢰를 밟으면 라운드가 끝나고 보상을 받지 못합니다.",provablyFair:"우리의 검증 가능한 무작위성 시스템은 각 보드의 숨겨진 지뢰 배치를 생성합니다. 매 라운드가 끝난 후, 입력값과 증명을 확인할 수 있으며, 우리의 공개 키로 결과를 검증하고 동일한 결과를 재현할 수 있습니다.",strategyTip:"변동성을 선택하세요. 지뢰가 적을수록 더 안전하게 공개할 수 있고 단계별 배당률은 더 작아집니다. 지뢰가 많을수록 더 위험하게 공개되지만 더 높은 배당률을 얻을 수 있습니다. 목표를 설정하거나 손실 제한을 사용하여 변동성을 관리하세요. 일관된 베팅 금액과 규칙적인 출금은 변동성을 조절하는 데 도움이 됩니다."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"이 게임의 플레이어 환급률(RTP)은 {rtpValue}%입니다.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"전략",tutorial:"튜토리얼",wheel:{how1:"위험 수준과 구간 수를 선택하세요.",how2:"베팅 금액을 설정하고 베팅을 하세요.",how3:"바퀴가 돌고 구역에 멈춥니다.",how4:"당신의 당첨금은 휠이 멈춘 구간에 표시된 배수에 베팅 금액을 곱한 값입니다.",how5:"각 구간은 선택한 위험 수준과 구간 수에 따라 다른 배율이 적용됩니다.",overview:"휠을 돌리고 어디에 멈추는지 지켜보세요. 각 스핀 전에 위험 수준과 구간 수를 선택하세요. 낮은 위험은 더 자주 당첨되지만 배당이 낮고, 높은 위험은 당첨 확률이 낮지만 배당이 큽니다.",provablyFair:"우리의 검증 가능한 난수 생성 시스템은 모든 Wheel 결과를 생성합니다. 매 라운드가 끝난 후, 입력값과 증명값을 확인하고, 공개키로 결과를 검증하며, 동일한 결과를 재현할 수 있습니다.",strategyTip:"낮은 위험은 꾸준하고 작은 승리를 제공합니다. 중간 위험은 빈도와 배당의 균형을 맞춥니다. 높은 위험은 드물지만 거대한 배수를 노립니다. 세그먼트가 많아질수록 최대 잠재력은 증가하지만 승리 빈도는 감소합니다."},roulette:{how1:"그리드를 클릭하여 선택한 베팅에 칩을 놓으세요.",how2:"1/2 및 2X 버튼으로 클릭당 베팅 금액을 조정하세요.",how3:"베팅을 하여 휠을 돌리세요.",how4:"공은 0-36 사이의 무작위 숫자에 떨어집니다 (아메리칸은 00 포함).",how5:"당첨된 베팅은 배당률에 따라 지급되고, 다른 칩은 모두 잃게 됩니다.",overview:"베팅 그리드에 칩을 놓고 휠을 돌리세요. 단일 숫자, 숫자 그룹, 색상 또는 홀수/짝수에 베팅하세요. 공은 무작위 포켓에 떨어지고, 맞는 베팅은 배당률에 따라 지급됩니다.",provablyFair:"검증 가능한 무작위 시스템이 모든 룰렛 스핀을 생성합니다. 매 라운드 후 입력과 증명을 확인하고, 공개 키로 결과를 검증하며, 동일한 결과를 재현할 수 있습니다.",strategyTip:"아웃사이드 베팅(빨강/검정, 홀수/짝수)은 2배 배당으로 거의 50% 당첨 확률을 제공합니다. 단일 숫자에 대한 인사이드 베팅은 최대 36배를 지급하지만 거의 당첨되지 않습니다. 위험과 보상의 균형을 위해 칩을 분산시키세요."}},games:{advancedDice:{between:"사이",boundsLower:"하한",boundsUpper:"상한",inside:"내부",outside:"외부",rollMode:"롤 모드",secondBoundsLower:"두 번째 하한",secondBoundsUpper:"두 번째 상한"},dice:{rollOver:"오버에 베팅",rollUnder:"언더 롤"},keno:{autoPick:"자동 선택",clearTable:"지우기",kenoGameGrid:"키노 게임 그리드",kenoNumber:"케노 번호 {value}",selectAtLeastOneTile:"타일을 최소한 하나 선택하세요",selectTileToAutobet:"타일을 최소한 하나 선택하세요"},limbo:{multiplierError:"{min}에서 {max} 사이여야 합니다",targetMultiplier:"배수",winChanceError:"{min}에서 {max} 사이여야 합니다"},mines:{cashout:"현금 출금",gem:"보석",gems:"젬스",mine:"광산",mines:"마인즈",nextGem:"다음 젬",selectRandomTile:"랜 타일 선택",selectTileToAutobet:"타일을 최소한 하나 선택하세요",tile:"타일",unrevealed:"공개되지 않음"},wheel:{segments:"세그먼트"},roulette:{chipValue:"칩 가치",totalBetAmount:"총 베팅 금액"}},hotkeys:{clearBets:"베팅 지우기",doubleBet:"배팅 금액 두 배로",doubleChipValue:"칩 가치 두 배로",doubleTotalBet:"총 베팅 두 배로",halveBet:"베팅 금액 절반으로 줄이기",halveChipValue:"칩 가치 절반으로",halveTotalBet:"총 베팅 절반으로",higherTarget:"더 높은 목표",info:"단축키가 활성화되면 비활성화될 때까지 이 게임에서 계속 유지됩니다. 일부 게임이 유사한 키 바인드를 공유하더라도, 각 게임마다 단축키를 확인하는 것이 항상 권장됩니다.",lowerTarget:"하한 목표",makeBet:"베팅하기",resetChipValue:"칩 가치 초기화",toggleWinCondition:"승리 조건 전환",undo:"실행 취소",zeroBet:"제로 베팅 금액"},modals:{betResult:"베팅 결과",fairnessAndHistory:"공정성 및 기록",gameArea:"게임 영역",gameControls:"게임 컨트롤",gameInfo:"게임 정보"}}});var Q4=D1((nt,Wi)=>{Wi.exports={accessibility:{sliderValue:"{value} z {max}"},alerts:{autobetStarted:"Tryb autobet został uruchomiony",autobetStopped:"Tryb autobet zatrzymany",betAmountAboveMaxBet:"Maksymalny zakład to {value}",betAmountBelowMinBet:"Minimalny zakład to {value}",betLimitReached:"Osiągnięto limit zakładu",errorProcessingBet:"Wystąpił błąd podczas przetwarzania Twojego zakładu. Proszę spróbuj ponownie.",failedToLoadBetData:"Nie udało się załadować danych zakładu",gameError:"Wystąpił błąd podczas przetwarzania Twojego zakładu. Proszę spróbuj ponownie.",insufficientBalance:"Niewystarczające saldo",maxPayoutExceeded:"Przekroczono maksymalną wypłatę",notEnoughBalance:"Niewystarczające saldo"},autobet:{configureAutobet:"Skonfiguruj Autobet",games:"Gry",games10:"10 Gier",games100:"100 Gier",games25:"25 Gier",games5:"5 Gier",games50:"50 Gier",increase:"Zwiększ",infinite:"Nieskończony",onLoss:"Przy przegranej",onWin:"W przypadku wygranej",reset:"Resetuj",startAutobet:"Uruchom Autobet",stopAutobet:"Zatrzymaj Autobet",stopOnLoss:"Zatrzymaj przy przegranej",stopOnProfit:"Zatrzymaj przy zysku"},clipboard:{linkCopied:"Link skopiowany do schowka!"},common:{auto:"Auto",back:"Wstecz",balance:"Saldo",bet:"Kwota zakładu",betAmount:"Kwota zakładu",cancel:"Anuluj",cashOut:"Wypłać",classic:"Klasyczny",confirm:"Potwierdź",copied:"Skopiowano",currency:"Waluta",deposit:"Wpłata",disableHotkeys:"Wyłącz skróty klawiszowe",disableMaxBet:"Wyłącz maksymalny zakład",enableHotkeys:"Włącz skróty klawiaturowe",enableMaxBet:"Włącz Maksymalny Zakład",footerNavigation:"Nawigacja w stopce",gameInfo:"Informacje o grze",gameName:"Nazwa gry",high:"Wysoki",history:"Historia",hotkeys:"Skróty klawiszowe",id:"ID",instantBet:"Szybki zakład",loading:"Ładowanie...",loadMore:"Załaduj więcej",lobby:"Powrót do Lobby",low:"Niski",manual:"Instrukcja",max:"MAX",medium:"Średni",multiplier:"Mnożnik",payout:"Wypłata",placeBet:"Postaw zakład",profit:"Zysk",profitOnWin:"Zysk przy wygranej",provablyFair:"Niezaprzeczalnie uczciwe",risk:"Ryzyko",roundId:"ID Rundy",saveChanges:"Zapisz zmiany",shareReplay:"Udostępnij powtórkę",siteInformation:"Informacje o grze",space:"PRZESTRZEŃ",support:"Wsparcie",targetMultiplier:"Mnożnik",thisFieldIsRequired:"To pole jest wymagane",timestamp:"Czas",toggleHotkeys:"Przełącz skróty klawiszowe",viewFairnessInformation:"Wyświetl informacje o uczciwości",viewHistory:"Wyświetl historię",volume:"Głośność",winChance:"Szansa na wygraną"},errors:{dice:{multiplierRange:"Musi być pomiędzy {min} a {max}",winChanceRange:"Musi być pomiędzy {min} a {max}"},noWheelData:"Brak danych koła",requestDropped:"Żądanie porzucone"},fairness:{activeClientSeed:"Aktywny clientSeed",enterClientSeed:"Wprowadź Client Seed",enterProof:"Wprowadź dowód",enterPublicKey:"Wprowadź klucz publiczny",enterRandomness:"Wprowadź losowość",enterRequest:"Wprowadź żądanie",info:{p1:"Wynik każdej rundy pochodzi ze sprawdzalnej losowości, a nie z ukrytej logiki serwera. Tworzymy deterministyczny seed z wartości unikalnych dla twojej rundy—gameId, tenantId, tenantUserId, inkrementującego nonce (jeden na każdą ukończoną rundę), oraz twojego clientSeed. To gwarantuje, że każda runda jest unikalna i powtarzalna: te same dane wejściowe → ten sam strumień losowy → ten sam wynik.",p2:"Ten seed jest przetwarzany przez Elliptic Curve Verifiable Random Function (ECVRF) zgodnie ze specyfikacją IETF draft-irtf-cfrg-vrf-15. Nasz serwer używa swojego klucza prywatnego, aby wygenerować losową wartość oraz kryptograficzny dowód (proofString). Każdy posiadający nasz klucz publiczny może niezależnie zweryfikować ten dowód dla podanych danych wejściowych—potwierdzając, że losowość pochodzi z seed i nie została zmanipulowana. SDK jest napisane w TypeScript, natomiast główna kryptografia korzysta z biblioteki fastcrypto w Rust poprzez NAPI-RS zapewniając wydajność i bezpieczeństwo.",p3:"Po weryfikacji wynik VRF zasila deterministyczny generator losowych bajtów (hashSequence). Gry przekształcają te bajty w wyniki, używając deterministycznej, bezstronnej logiki. Ponieważ proces jest deterministyczny, a nonce zwiększa się po każdej zakończonej rundzie, otrzymujesz zarówno możliwość powtarzalnych audytów (odtworzenie tej samej rundy dokładnie), jak i nową, niepowtarzalną losowość za każdym razem.",p4:"Po rundzie masz dane wejściowe (w tym swój clientSeed i nonce rundy), wynik VRF, proofString oraz nasz klucz publiczny. Użyj dowolnego weryfikatora ECVRF lub naszych bibliotek, aby: (1) zweryfikować dowód względem danych wejściowych i klucza publicznego oraz (2) wygenerować tę samą hashSequence i wynik. Nasz klucz prywatny nigdy nie opuszcza bezpiecznych serwerów; klucz publiczny jest bezpieczny do użycia po stronie klienta do niezależnych weryfikacji.",step1Desc:"Łączymy gameId, tenantId, tenantUserId, unikalny nonce dla każdej rundy oraz Twój clientSeed. Te same dane wejściowe zawsze generują ten sam strumień losowy i wynik.",step1Title:"Deterministyczny seed",step2Title:"Generuj losowość",step3Desc:"Każdy może zweryfikować proofString dla podanych danych wejściowych, używając naszego klucza publicznego. To potwierdza, że losowość odpowiada zadanej sekwencji i nie została naruszona.",step3Title:"Zweryfikuj dowód",step4Title:"Wyprowadź wyniki",step5Title:"Reprodukcja"},invalidGame:"Podano nieprawidłowy typ gry.",learnMore:"Dowiedz się więcej",newClientSeed:"Nowe Seed Klienta",noBettingHistory:"Brak historii zakładów",outcomeCalculationInfo:"Ta gra wykorzystuje algorytm udowodnionej uczciwości, który zapewnia sprawiedliwy i przejrzysty wynik.",outcomeNotVerified:"Nie można było zweryfikować wyniku tej gry. Sprawdź, czy wprowadziłeś poprawne dane, i spróbuj ponownie.",outcomeVerified:"Wynik tej rundy został zweryfikowany za pomocą naszego klucza publicznego i jest weryfikowalnie uczciwy.",proof:"Dowód",publicKey:"Aktywny klucz publiczny",randomness:"Losowość",request:"Żądanie",saveClientSeed:"Zapisz Client Seed",verifyOutcome:"Zweryfikuj wynik"},gameInfo:{advancedDice:{how1:"Wybierz tryb rzutu: Wewnątrz, Na zewnątrz lub Pomiędzy.",how2:"Przeciągnij suwaki, aby zdefiniować strefę wygranej.",how3:"Ustaw kwotę zakładu i postaw zakład.",how4:"Generowana jest losowa liczba od 0 do 100.",how5:"Wygrywasz, jeśli wynik mieści się w wybranej strefie.",overview:"Advanced Dice pozwala ustawić niestandardowe strefy wygranej. Wybierz Wewnątrz, aby wygrać, gdy wynik mieści się w twoim zakresie, Na zewnątrz, aby wygrać, gdy wykracza poza zakres, lub Pomiędzy, aby podzielić na dwie strefy wygranej.",provablyFair:"Nasz weryfikowalny system losowości generuje każdy wynik Advanced Dice. Po każdej rundzie możesz zobaczyć dane wejściowe i dowód, zweryfikować wynik naszym kluczem publicznym i odtworzyć ten sam wynik.",strategyTip:"Szersze strefy oferują częstsze wygrane, ale mniejsze mnożniki. Wąskie strefy są bardziej ryzykowne, ale płacą więcej. Tryb Pomiędzy pozwala celować w dwa zakresy dla elastycznych strategii."},diamonds:{how1:"Ustaw kwotę zakładu i postaw zakład.",how2:"Pięć diamentów jest odsłanianych z ustalonego zestawu typów klejnotów.",how3:"Twój wynik jest oceniany jak układ w pokerze: para, dwie pary, trójka, full, kareta i poker pięciu kart.",how4:"Każdy typ układu ma swój własny mnożnik; układy o wyższej wartości przyznają większe mnożniki, podczas gdy brak układu wypłaca 0X.",how5:"Twoja wygrana to Twój zakład pomnożony przez pokazany mnożnik dla uzyskanej ręki.",overview:"Diamonds to pięciobębnowa gra typu matching. Każda runda odsłania pięć diamentów z zestawu różnych rodzajów klejnotów. Twoim celem jest trafianie pokerowych układów – par, trójek, fulli i tak dalej.",provablyFair:"Nasz system weryfikowalnej losowości wybiera wynik każdego diamentu. Po każdej rundzie możesz zobaczyć użyte losowe wartości i dowód, zweryfikować wynik za pomocą naszego klucza publicznego oraz odtworzyć tę samą rękę.",strategyTip:"Diamonds to gra o wysokiej zmienności i stałych kursach, w której polujesz na duże układy w stylu pokera. Twoim głównym narzędziem jest to, jak bardzo chcesz ryzykować. Używaj mniejszych, stałych stawek, jeśli chcesz przetrwać słabsze serie, lub od czasu do czasu zwiększaj rozmiar zakładu, gdy polujesz na premiowe układy."},dice:{how1:"Wybierz rzut poniżej lub rzut powyżej.",how2:"Ustaw swój docelowy numer.",how3:"Ustaw kwotę zakładu i postaw zakład.",how4:"Generujemy jeden losowy wynik (wyświetlany w grze w skali 0–99,99).",how5:"Wygrywasz, jeśli wynik znajduje się w wybranym przez Ciebie zakresie.",how6:"Twoja wypłata to zakład pomnożony przez pokazany mnożnik, który aktualizuje się, gdy przesuwasz suwak.",overview:"Ustaw liczbę docelową i wybierz, czy rzut wypadnie poniżej, czy powyżej tej liczby. Przesuwanie suwaka zmienia szansę na wygraną i mnożnik — wyższa szansa obniża mnożnik, niższa szansa go zwiększa. Każda runda to jeden niezależny rzut na skali gry.",provablyFair:"Nasz system weryfikowalnej losowości generuje każdy rzut Dice. Po każdej rundzie możesz zobaczyć użyte dane wejściowe i dowód, zweryfikować wynik za pomocą naszego klucza publicznego i odtworzyć ten sam rezultat.",strategyTip:"Wybierz swoją zmienność. Niższa szansa na wygraną daje większe mnożniki, ale wygrane pojawiają się rzadziej. Wyższa szansa na wygraną daje mniejsze mnożniki, ale wygrane trafiają się częściej. Dopasuj wysokość swoich zakładów do bankrolla, aby uzyskać bardziej stabilne wahania."},keno:{how1:"Wybierz od 1 do 10 pól na planszy 1–40.",how2:"Ustaw kwotę zakładu i postaw zakład.",how3:"Losujemy 10 zwycięskich numerów; Twoje trafienia są podświetlone.",how4:"Wypłaty zależą od tego, ile kafelków wybrałeś i ile trafień uzyskałeś — sprawdź tabelę wypłat.",how5:"Nigdy nie możesz trafić więcej liczb niż wybrałeś, a maksymalny wybór to 10.",overview:"Wybierz swoje szczęśliwe liczby i spróbuj trafić w losowanie. Możesz wybrać od 1 do 10 liczb z zakresu od 1 do 40, a następnie losujemy 10 liczb. Im więcej Twoich trafień, tym wyższa wygrana.",provablyFair:"Nasz system weryfikowalnej losowości generuje każdy losowanie Keno. Po każdej rundzie możesz zobaczyć dane wejściowe i dowód, zweryfikować wynik za pomocą naszego klucza publicznego oraz odtworzyć ten sam rezultat.",strategyTip:"Wybierz swój poziom zmienności. Wybierając mniej pól, wygrane są rzadsze, ale mnożniki znacznie większe. Więcej pól to częstsze trafienia, ale niższe średnie wygrane za każde trafienie. Środkowy zakres zapewnia równowagę między częstotliwością trafień a wypłatami. Dostosuj wysokość zakładu do swojego poziomu ryzyka i bankrolla."},limbo:{how1:"Ustaw swój docelowy mnożnik.",how2:"Ustaw kwotę zakładu i postaw zakład.",how3:"Generujemy jeden losowy mnożnik wyniku.",how4:"Wygrywasz, jeśli wynik jest większy lub równy Twojemu celowi.",how5:"Twoja wygrana to stawka pomnożona przez wybrany mnożnik; w przeciwnym razie tracisz swoją stawkę.",overview:"W Limbo ustawiasz pożądaną wypłatę, a gra losuje pojedynczy, losowy mnożnik wyniku. Jeśli wynik jest co najmniej równy Twojemu celowi, wygrywasz. Jeśli jest niższy, przegrywasz. Wyższa szansa obniża mnożnik; niższa szansa go zwiększa.",provablyFair:"Nasz system weryfikowalnej losowości generuje każdy wynik Limbo. Po każdej rundzie możesz zobaczyć dane wejściowe i dowód, zweryfikować wynik za pomocą naszego klucza publicznego oraz odtworzyć ten sam rezultat.",strategyTip:"Niższe cele wygrywają częściej, ale płacą mniej, podczas gdy wyższe cele trafiają rzadko, lecz wypłacają znacznie więcej. Rozważ ustalenie stałego celu na sesję lub dodanie okazjonalnych prób na wysokie wygrane, a także utrzymuj konsekwentną wielkość zakładów, aby zarządzać wariancją."},limitContent:"Maksymalny możliwy mnożnik w tej grze to {multiplier}X. Maksymalna możliwa wygrana to {payout}",limitTitle:"Limity",mines:{how1:"Wybierz liczbę min na tę rundę.",how2:"Ustaw kwotę zakładu i postaw zakład.",how3:"Kliknij płytki, aby je odsłonić: bezpieczna płytka zwiększa Twój mnożnik; mina kończy rundę.",how4:"Możesz wypłacić w dowolnym momencie, aby zablokować swój aktualny mnożnik.",how5:"Twoja wypłata to zakład pomnożony przez aktualny mnożnik w momencie wypłaty.",how6:"Runda kończy się, gdy wypłacisz wygraną lub gdy zostanie odkryta mina.",overview:"Mines polega na wybieraniu bezpiecznych pól i decydowaniu, kiedy wypłacić wygraną. Przed rozpoczęciem rundy wybierz, ile min zostanie ukrytych na planszy. Każde odkryte bezpieczne pole zwiększa Twój mnożnik. Trafienie na minę kończy rundę bez wypłaty.",provablyFair:"Nasz system weryfikowalnej losowości generuje układ ukrytych min na każdej planszy. Po każdej rundzie możesz zobaczyć wejścia i dowód, zweryfikować wynik za pomocą naszego klucza publicznego oraz odtworzyć ten sam rezultat.",strategyTip:"Wybierz swoją zmienność. Mniej Mines oznacza bezpieczniejsze odkrycia i mniejsze mnożniki na krok. Więcej Mines prowadzi do bardziej ryzykownych odkryć z większymi mnożnikami. Ustaw cel lub użyj stop-loss, aby zarządzać wahaniami. Stałe rozmiary zakładów i zdyscyplinowane wypłaty pomagają utrzymać wariancję pod kontrolą."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Procent zwrotu dla gracza (RTP) w tej grze wynosi {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Strategia",tutorial:"Samouczek",wheel:{how1:"Wybierz swój poziom ryzyka i liczbę segmentów.",how2:"Ustaw kwotę zakładu i postaw zakład.",how3:"Koło się kręci i zatrzymuje na segmencie.",how4:"Twoja wygrana to zakład × mnożnik pokazany na segmencie, na którym zatrzyma się koło.",how5:"Każdy segment ma inny mnożnik w zależności od wybranego poziomu ryzyka i liczby segmentów.",overview:"Zakręć kołem i zobacz, gdzie się zatrzyma. Wybierz poziom ryzyka i liczbę segmentów przed każdym zakręceniem – niższe ryzyko oznacza częstsze wygrane z mniejszymi mnożnikami; wyższe ryzyko to rzadsze wygrane z większymi mnożnikami.",provablyFair:"Nasz system weryfikowalnej losowości generuje każdy wynik Wheel. Po każdej rundzie możesz zobaczyć dane wejściowe i dowód, zweryfikować wynik za pomocą naszego klucza publicznego oraz odtworzyć ten sam rezultat.",strategyTip:"Niskie ryzyko oferuje stabilne, mniejsze wygrane. Średnie ryzyko równoważy częstotliwość i wysokość wypłat. Wysokie ryzyko celuje w rzadkie, ale ogromne mnożniki. Więcej segmentów zwiększa maksymalny potencjał, ale zmniejsza częstotliwość wygranych."},roulette:{how1:"Kliknij na siatkę, aby położyć żetony na wybranych zakładach.",how2:"Dostosuj kwotę zakładu na kliknięcie przyciskami 1/2 i 2X.",how3:"Postaw zakład, aby zakręcić kołem.",how4:"Kulka ląduje na losowej liczbie od 0 do 36 (lub 00 w amerykańskiej).",how5:"Wygrane zakłady wypłacają według kursów; wszystkie inne żetony przepadają.",overview:"Połóż żetony na siatce zakładów i zakręć kołem. Stawiaj na pojedyncze numery, grupy numerów, kolory lub parzyste/nieparzyste. Kulka ląduje w losowym polu, a trafione zakłady wypłacają według kursów.",provablyFair:"Nasz weryfikowalny system losowości generuje każdy obrót ruletki. Po każdej rundzie możesz zobaczyć dane wejściowe i dowód, zweryfikować wynik naszym kluczem publicznym i odtworzyć ten sam wynik.",strategyTip:"Zakłady zewnętrzne (czerwone/czarne, parzyste/nieparzyste) oferują prawie 50% szans na wygraną z wypłatą 2X. Zakłady wewnętrzne na pojedyncze numery płacą do 36X, ale trafiają rzadko. Rozłóż żetony, aby zrównoważyć ryzyko i nagrodę."}},games:{advancedDice:{between:"Pomiędzy",boundsLower:"Dolna granica",boundsUpper:"Górna granica",inside:"Wewnątrz",outside:"Na zewnątrz",rollMode:"Tryb rzutu",secondBoundsLower:"Druga dolna granica",secondBoundsUpper:"Druga górna granica"},dice:{rollOver:"Przetocz wyżej",rollUnder:"Rzuć poniżej"},keno:{autoPick:"Automatyczny wybór",clearTable:"Wyczyść",kenoGameGrid:"Siatka gry Keno",kenoNumber:"Numer Keno {value}",selectAtLeastOneTile:"Wybierz co najmniej jedno pole",selectTileToAutobet:"Wybierz co najmniej jedno pole"},limbo:{multiplierError:"Musi być pomiędzy {min} a {max}",targetMultiplier:"Mnożnik",winChanceError:"Musi być pomiędzy {min} a {max}"},mines:{cashout:"Wypłać",gem:"Klejnot",gems:"Klejnoty",mine:"Kopalnia",mines:"Miny",nextGem:"Następny klejnot",selectRandomTile:"Wybierz losową płytkę",selectTileToAutobet:"Wybierz co najmniej jedno pole",tile:"Płytka",unrevealed:"Nieujawnione"},wheel:{segments:"Segmenty"},roulette:{chipValue:"Wartość Żetonu",totalBetAmount:"Całkowity Zakład"}},hotkeys:{clearBets:"Wyczyść Zakłady",doubleBet:"Podwój stawkę zakładu",doubleChipValue:"Podwój Wartość Żetonu",doubleTotalBet:"Podwój Całkowity Zakład",halveBet:"Zmniejsz stawkę o połowę",halveChipValue:"Zmniejsz Wartość Żetonu",halveTotalBet:"Zmniejsz Całkowity Zakład",higherTarget:"Wyższy cel",info:"Gdy skróty klawiszowe są włączone, pozostaną aktywne dla tej gry, dopóki nie zostaną wyłączone. Pomimo że niektóre gry mają podobne skróty klawiszowe, zawsze zaleca się potwierdzenie skrótów dla każdej gry.",lowerTarget:"Niższy cel",makeBet:"Postaw zakład",resetChipValue:"Resetuj Wartość Żetonu",toggleWinCondition:"Przełącz warunek wygranej",undo:"Cofnij",zeroBet:"Zero Kwota Zakładu"},modals:{betResult:"Wynik zakładu",fairnessAndHistory:"Sprawiedliwość i historia",gameArea:"Obszar Gry",gameControls:"Sterowanie grą",gameInfo:"Informacje o grze"}}});var Y4=D1((tt,Ai)=>{Ai.exports={accessibility:{sliderValue:"{value} de {max}"},alerts:{autobetStarted:"Modo de autobet iniciado",autobetStopped:"Modo de autobet parado",betAmountAboveMaxBet:"A aposta máxima é {value}",betAmountBelowMinBet:"A aposta mínima é {value}",betLimitReached:"Limite de aposta atingido",errorProcessingBet:"Ocorreu um erro ao processar sua aposta. Por favor, tente novamente.",failedToLoadBetData:"Falha ao carregar dados da aposta",gameError:"Ocorreu um erro ao processar sua aposta. Por favor, tente novamente.",insufficientBalance:"Saldo insuficiente",maxPayoutExceeded:"Pagamento máximo excedido",notEnoughBalance:"Saldo insuficiente"},autobet:{configureAutobet:"Configurar Autobet",games:"Jogos",games10:"10 Jogos",games100:"100 Jogos",games25:"25 Jogos",games5:"5 Jogos",games50:"50 Jogos",increase:"Aumentar",infinite:"Infinito",onLoss:"Em caso de perda",onWin:"Na vitória",reset:"Redefinir",startAutobet:"Iniciar Autobet",stopAutobet:"Parar Autobet",stopOnLoss:"Parar em Perda",stopOnProfit:"Parar no Lucro"},clipboard:{linkCopied:"Link copiado para a área de transferência!"},common:{auto:"Auto",back:"Voltar",balance:"Saldo",bet:"Valor da Aposta",betAmount:"Valor da Aposta",cancel:"Cancelar",cashOut:"Sacar",classic:"Clássico",confirm:"Confirmar",copied:"Copiado",currency:"Moeda",deposit:"Depósito",disableHotkeys:"Desativar atalhos de teclado",disableMaxBet:"Desativar Aposta Máxima",enableHotkeys:"Ativar teclas de atalho",enableMaxBet:"Ativar Aposta Máxima",footerNavigation:"Navegação do Rodapé",gameInfo:"Informações do Jogo",gameName:"Nome do Jogo",high:"Alto",history:"Histórico",hotkeys:"Atalhos de teclado",id:"ID",instantBet:"Aposta Instantânea",loading:"Carregando...",loadMore:"Carregar mais",lobby:"Voltar para o Lobby",low:"Baixo",manual:"Manual",max:"MAX",medium:"Médio",multiplier:"Multiplicador",payout:"Pagamento",placeBet:"Fazer Aposta",profit:"Lucro",profitOnWin:"Lucro na Vitória",provablyFair:"Comprovadamente Justo",risk:"Risco",roundId:"ID da Rodada",saveChanges:"Salvar alterações",shareReplay:"Compartilhar Replay",siteInformation:"Informações do Jogo",space:"ESPAÇO",support:"Suporte",targetMultiplier:"Multiplicador",thisFieldIsRequired:"Este campo é obrigatório",timestamp:"Tempo",toggleHotkeys:"Alternar Teclas de Atalho",viewFairnessInformation:"Ver Informações de Justiça",viewHistory:"Ver Histórico",volume:"Volume",winChance:"Chance de Vitória"},errors:{dice:{multiplierRange:"Deve estar entre {min} e {max}",winChanceRange:"Deve estar entre {min} e {max}"},noWheelData:"Dados da roleta não disponíveis",requestDropped:"Solicitação cancelada"},fairness:{activeClientSeed:"Semente de Cliente Ativa",enterClientSeed:"Insira o Client Seed",enterProof:"Inserir Prova",enterPublicKey:"Insira a Chave Pública",enterRandomness:"Inserir Aleatoriedade",enterRequest:"Inserir Solicitação",info:{p1:"O resultado de cada rodada vem de uma aleatoriedade verificável, não de uma lógica de servidor oculta. Construímos uma semente determinística a partir de valores únicos da sua rodada—gameId, tenantId, tenantUserId, um nonce incremental (um por rodada concluída), além do seu clientSeed. Isso garante que cada rodada seja única e reprodutível: mesmas entradas → mesmo fluxo aleatório → mesmo resultado.",p2:"Essa seed é processada por uma Função Aleatória Verificável de Curva Elíptica (ECVRF) conforme o rascunho da especificação IETF draft-irtf-cfrg-vrf-15. Nosso servidor utiliza sua chave privada para produzir um valor aleatório e uma prova criptográfica (proofString). Qualquer pessoa com nossa chave pública pode verificar independentemente essa prova para os dados fornecidos—confirmando que a aleatoriedade veio da seed e não foi adulterada. O SDK é em TypeScript, enquanto o núcleo criptográfico utiliza a biblioteca fastcrypto em Rust via NAPI-RS para desempenho e segurança.",p3:"Uma vez verificado, a saída do VRF alimenta um gerador determinístico de bytes aleatórios (hashSequence). Os jogos transformam esses bytes em resultados usando uma lógica determinística e imparcial. Como o processo é determinístico e o nonce avança a cada rodada concluída, você obtém tanto auditorias reproduzíveis (recrie exatamente a mesma rodada) quanto uma aleatoriedade nova e não repetitiva a cada vez.",p4:"Após uma rodada, você tem as entradas (incluindo seu clientSeed e o nonce da rodada), a saída do VRF, o proofString e nossa chave pública. Use qualquer verificador ECVRF ou nossas bibliotecas para: (1) verificar o proof em relação às entradas e à chave pública e (2) regenerar o mesmo hashSequence e resultado. Nossa chave privada nunca sai dos servidores seguros; a chave pública é segura para uso pelo lado do cliente em verificações independentes.",step1Desc:"Combinamos gameId, tenantId, tenantUserId, um nonce por rodada e seu clientSeed. Os mesmos inputs sempre produzem o mesmo fluxo aleatório e resultado.",step1Title:"Semente Determinística",step2Title:"Gerar Aleatoriedade",step3Desc:"Qualquer pessoa pode verificar o proofString para os dados fornecidos usando nossa chave pública. Isso confirma que a aleatoriedade corresponde à seed e não foi adulterada.",step3Title:"Verificar Prova",step4Title:"Derivar Resultados",step5Title:"Reprodução"},invalidGame:"Tipo de jogo inválido fornecido.",learnMore:"Saiba Mais",newClientSeed:"Nova Client Seed",noBettingHistory:"Sem histórico de apostas",outcomeCalculationInfo:"Este jogo utiliza um algoritmo comprovadamente justo que garante que o resultado seja justo e transparente.",outcomeNotVerified:"O resultado deste jogo não pôde ser verificado. Verifique se você inseriu as informações corretas e tente novamente.",outcomeVerified:"O resultado desta rodada foi verificado com nossa chave pública e é comprovadamente justo.",proof:"Prova",publicKey:"Chave Pública Ativa",randomness:"Aleatoriedade",request:"Solicitação",saveClientSeed:"Salvar Client Seed",verifyOutcome:"Verificar Resultado"},gameInfo:{advancedDice:{how1:"Selecione seu modo de rolagem: Dentro, Fora ou Entre.",how2:"Arraste os controles para definir sua(s) zona(s) vencedora(s).",how3:"Defina o valor da aposta e faça sua aposta.",how4:"Um número aleatório entre 0 e 100 é gerado.",how5:"Ganhe se o resultado cair dentro da(s) sua(s) zona(s) escolhida(s).",overview:"O Dados Avançado permite definir zonas vencedoras personalizadas. Escolha Dentro para ganhar quando o resultado cair dentro do seu intervalo, Fora para ganhar quando cair além do seu intervalo, ou Entre para dividir em duas zonas vencedoras.",provablyFair:"Nosso sistema de aleatoriedade verificável gera cada resultado do Dados Avançado. Após cada rodada, você pode visualizar as entradas e a prova, verificar o resultado com nossa chave pública e reproduzir o mesmo resultado.",strategyTip:"Zonas mais amplas oferecem vitórias mais frequentes, mas multiplicadores menores. Zonas estreitas arriscam mais, mas pagam mais. O modo Entre permite direcionar dois intervalos para estratégias flexíveis."},diamonds:{how1:"Defina o valor da sua aposta e faça sua aposta.",how2:"Cinco Diamonds são revelados a partir de um conjunto fixo de tipos de gemas.",how3:"Seu resultado é avaliado como uma mão de pôquer: pares, dois pares, trinca, full house, quadra e quina.",how4:"Cada tipo de mão tem seu próprio multiplicador; mãos de maior valor concedem multiplicadores maiores, enquanto nenhuma mão formada paga 0X.",how5:"Seu pagamento é sua aposta multiplicada pelo multiplicador mostrado para a mão resultante.",overview:"Diamonds é um jogo de combinação de cinco rolos. Cada rodada revela cinco diamantes de um conjunto de diferentes tipos de gemas. O seu objetivo é formar combinações ao estilo do pôquer – pares, trincas, full houses, entre outros.",provablyFair:"Nosso sistema de aleatoriedade verificável seleciona cada resultado dos diamantes. Após cada rodada, você pode visualizar os valores aleatórios subjacentes e a prova, verificar o resultado com nossa chave pública e reproduzir a mesma mão.",strategyTip:"Diamonds é um jogo de alta volatilidade e probabilidades fixas onde você está em busca de grandes mãos no estilo pôquer. Seu principal controle é o quão agressivo você quer ser. Use apostas menores e constantes se quiser atravessar sequências de azar, ou aumente ocasionalmente o valor da aposta quando estiver buscando mãos premium."},dice:{how1:"Escolha rolar abaixo ou rolar acima.",how2:"Defina seu número alvo.",how3:"Defina o valor da sua aposta e faça sua aposta.",how4:"Geramos um resultado aleatório (exibido na escala de 0–99,99 no jogo).",how5:"Você ganha se o resultado estiver no intervalo escolhido.",how6:"Seu pagamento é a aposta multiplicada pelo multiplicador exibido, que é atualizado conforme você move o controle deslizante.",overview:"Defina um número alvo e escolha se o resultado será abaixo ou acima dele. Mover o controle deslizante altera sua chance de vitória e o multiplicador—uma chance maior reduz o multiplicador, enquanto uma chance menor o aumenta. Cada rodada é uma jogada independente na escala do jogo.",provablyFair:"Nosso sistema de aleatoriedade verificável gera cada lançamento de Dice. Após cada rodada, você pode visualizar as entradas e a prova, verificar o resultado com nossa chave pública e reproduzir o mesmo resultado.",strategyTip:"Escolha sua volatilidade. Uma chance de vitória menor gera multiplicadores maiores, mas acertos mais raros. Uma chance de vitória maior gera multiplicadores menores, mas vitórias mais frequentes. Ajuste o valor das suas apostas ao seu saldo para oscilações mais estáveis."},keno:{how1:"Escolha de 1 a 10 blocos no tabuleiro de 1 a 40.",how2:"Defina o valor da sua aposta e faça sua aposta.",how3:"Sorteamos 10 números vencedores; as suas correspondências estão destacadas.",how4:"Os pagamentos dependem de quantas casas você selecionou e quantos acertos obteve—consulte a tabela de pagamentos.",how5:"Você nunca pode acertar mais números do que selecionou, e a seleção máxima é 10.",overview:"Escolha seus números da sorte e tente acertar o sorteio. Você pode escolher de 1 a 10 números entre 1 e 40, e então sorteamos 10 números. Quanto mais acertos você tiver, maior será o seu prêmio.",provablyFair:"Nosso sistema de aleatoriedade verificável gera cada sorteio de Keno. Após cada rodada, você pode ver as entradas e a prova, verificar o resultado com nossa chave pública e reproduzir o mesmo resultado.",strategyTip:"Escolha sua volatilidade. Selecionar menos casas significa vitórias mais raras, mas multiplicadores muito maiores. Mais casas proporcionam acertos mais frequentes, porém com retornos médios menores por acerto. Uma faixa intermediária equilibra a taxa de acertos e o pagamento. Ajuste o valor da sua aposta para combinar com sua preferência de risco e saldo."},limbo:{how1:"Defina o seu multiplicador alvo.",how2:"Defina o valor da sua aposta e faça sua aposta.",how3:"Geramos um multiplicador de resultado aleatório.",how4:"Você vence se o resultado for maior ou igual ao seu alvo.",how5:"Seu pagamento é a aposta x o seu multiplicador alvo; caso contrário, você perde sua aposta.",overview:"No Limbo, você define o pagamento desejado e o jogo sorteia um único multiplicador de resultado aleatório. Se o resultado for pelo menos o seu alvo, você ganha. Se for menor, você perde. Uma chance maior reduz o multiplicador; uma chance menor o aumenta.",provablyFair:"Nosso sistema de aleatoriedade verificável gera cada resultado do Limbo. Após cada rodada, você pode visualizar as entradas e a prova, verificar o resultado com nossa chave pública e reproduzir o mesmo resultado.",strategyTip:"Alvos mais baixos ganham com mais frequência, mas pagam menos, enquanto alvos mais altos acertam raramente, mas pagam muito mais. Considere um alvo fixo por sessão ou misture algumas apostas de longo alcance ocasionalmente, e mantenha o valor das apostas consistente para gerenciar a variância."},limitContent:"O multiplicador máximo alcançável para este jogo é {multiplier}X. O pagamento máximo alcançável é {payout}",limitTitle:"Limites",mines:{how1:"Escolha o número de minas para esta rodada.",how2:"Defina o valor da sua aposta e faça sua aposta.",how3:"Clique nos blocos para revelá-los: um bloco seguro aumenta seu multiplicador; uma mina encerra a rodada.",how4:"Você pode sacar a qualquer momento para garantir o seu multiplicador atual.",how5:"Seu pagamento é a aposta multiplicada pelo multiplicador atual quando você faz o saque.",how6:"A rodada termina quando você faz o saque ou quando uma mina é revelada.",overview:"Mines é sobre escolher as casas seguras e decidir quando encerrar a aposta. Antes do início da rodada, escolha quantas minas serão escondidas no tabuleiro. Cada casa segura que você revela aumenta seu multiplicador. Se acertar uma mina, a rodada termina sem pagamento.",provablyFair:"O nosso sistema de aleatoriedade verificável gera o layout oculto das minas de cada tabuleiro. Após cada rodada, você pode visualizar as entradas e a prova, verificar o resultado com a nossa chave pública e reproduzir o mesmo resultado.",strategyTip:"Escolha sua volatilidade. Menos minas significam revelações mais seguras e multiplicadores menores por etapa. Mais minas levam a revelações mais arriscadas com multiplicadores maiores. Defina uma meta ou use um stop-loss para gerenciar as oscilações. Tamanhos de apostas consistentes e saques disciplinados ajudam a manter a variância sob controle."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"A porcentagem de Retorno ao Jogador (RTP) deste jogo é de {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Estratégia",tutorial:"Tutorial",wheel:{how1:"Selecione o seu nível de risco e o número de segmentos.",how2:"Defina o valor da sua aposta e faça sua aposta.",how3:"A roda gira e para em um segmento.",how4:"Seu pagamento é a aposta × o multiplicador mostrado no segmento onde a roda parar.",how5:"Cada segmento tem um multiplicador diferente com base no nível de risco escolhido e na quantidade de segmentos.",overview:"Gire a roda e veja onde ela para. Escolha seu nível de risco e o número de segmentos antes de cada giro – menor risco resulta em vitórias mais frequentes com multiplicadores menores; maior risco resulta em vitórias mais raras com multiplicadores maiores.",provablyFair:"Nosso sistema de aleatoriedade verificável gera todos os resultados da Wheel. Após cada rodada, você pode visualizar as entradas e a prova, verificar o resultado com nossa chave pública e reproduzir o mesmo resultado.",strategyTip:"Baixo risco oferece ganhos pequenos e constantes. Risco médio equilibra frequência e pagamento. Alto risco busca multiplicadores raros, porém massivos. Mais segmentos aumentam o potencial máximo, mas reduzem a frequência de vitórias."},roulette:{how1:"Clique na grade para colocar fichas nas suas apostas escolhidas.",how2:"Ajuste o valor da aposta por clique com os botões 1/2 e 2X.",how3:"Faça sua aposta para girar a roleta.",how4:"A bola cai em um número aleatório de 0 a 36 (ou 00 na americana).",how5:"Apostas vencedoras pagam de acordo com suas probabilidades; todas as outras fichas são perdidas.",overview:"Coloque fichas na grade de apostas e gire a roleta. Aposte em números únicos, grupos de números, cores ou par/ímpar. A bola cai em um compartimento aleatório, e apostas acertadas pagam de acordo com suas probabilidades.",provablyFair:"Nosso sistema de aleatoriedade verificável gera cada giro da Roleta. Após cada rodada, você pode ver as entradas e a prova, verificar o resultado com nossa chave pública e reproduzir o mesmo resultado.",strategyTip:"Apostas externas (vermelho/preto, par/ímpar) oferecem quase 50% de chance de ganhar com pagamento de 2X. Apostas internas em números únicos pagam até 36X, mas acertam raramente. Distribua suas fichas para equilibrar risco e recompensa."}},games:{advancedDice:{between:"Entre",boundsLower:"Limite inferior",boundsUpper:"Limite superior",inside:"Dentro",outside:"Fora",rollMode:"Modo de rolagem",secondBoundsLower:"Segundo limite inferior",secondBoundsUpper:"Segundo limite superior"},dice:{rollOver:"Rolar Acima",rollUnder:"Rolar Abaixo"},keno:{autoPick:"Escolha Automática",clearTable:"Limpar",kenoGameGrid:"Grade de Jogo Keno",kenoNumber:"Número Keno {value}",selectAtLeastOneTile:"Selecione pelo menos uma peça",selectTileToAutobet:"Selecione pelo menos uma peça"},limbo:{multiplierError:"Deve estar entre {min} e {max}",targetMultiplier:"Multiplicador",winChanceError:"Deve estar entre {min} e {max}"},mines:{cashout:"Sacar",gem:"Gema",gems:"Gemas",mine:"Mina",mines:"Minas",nextGem:"Próxima Joia",selectRandomTile:"Selecionar Azulejo Aleatório",selectTileToAutobet:"Selecione pelo menos uma peça",tile:"Azulejo",unrevealed:"Não revelado"},wheel:{segments:"Segmentos"},roulette:{chipValue:"Valor Da Ficha",totalBetAmount:"Aposta Total"}},hotkeys:{clearBets:"Limpar Apostas",doubleBet:"Dobrar valor da aposta",doubleChipValue:"Dobrar Valor da Ficha",doubleTotalBet:"Dobrar Aposta Total",halveBet:"Dividir valor da aposta pela metade",halveChipValue:"Reduzir Valor da Ficha",halveTotalBet:"Reduzir Aposta Total",higherTarget:"Alvo Mais Alto",info:"Quando as teclas de atalho estiverem ativadas, elas permanecerão ativas para este jogo até serem desativadas. Apesar de alguns jogos compartilharem teclas de atalho semelhantes, é sempre recomendável confirmar as teclas de atalho para cada jogo.",lowerTarget:"Alvo Inferior",makeBet:"Fazer Aposta",resetChipValue:"Redefinir Valor da Ficha",toggleWinCondition:"Alternar Condição de Vitória",undo:"Desfazer",zeroBet:"Valor da Aposta Zero"},modals:{betResult:"Resultado da Aposta",fairnessAndHistory:"Justiça e Histórico",gameArea:"Área do Jogo",gameControls:"Controles do Jogo",gameInfo:"Informações do Jogo"}}});var X4=D1((ot,Vi)=>{Vi.exports={accessibility:{sliderValue:"{value} из {max}"},alerts:{autobetStarted:"Автоматический режим ставок запущен",autobetStopped:"Автоматический режим ставок остановлен",betAmountAboveMaxBet:"Максимальная ставка — {value}",betAmountBelowMinBet:"Минимальная ставка — {value}",betLimitReached:"Достигнут лимит ставки",errorProcessingBet:"Произошла ошибка при обработке вашей ставки. Пожалуйста, попробуйте еще раз.",failedToLoadBetData:"Не удалось загрузить данные ставки",gameError:"Произошла ошибка при обработке вашей ставки. Пожалуйста, попробуйте еще раз.",insufficientBalance:"Недостаточно средств",maxPayoutExceeded:"Превышена максимальная выплата",notEnoughBalance:"Недостаточно средств"},autobet:{configureAutobet:"Настроить Autobet",games:"Игры",games10:"10 игр",games100:"100 игр",games25:"25 игр",games5:"5 игр",games50:"50 игр",increase:"Увеличить",infinite:"Бесконечный",onLoss:"При проигрыше",onWin:"При выигрыше",reset:"Сбросить",startAutobet:"Запустить Autobet",stopAutobet:"Остановить Autobet",stopOnLoss:"Остановить при проигрыше",stopOnProfit:"Остановить при получении прибыли"},clipboard:{linkCopied:"Ссылка скопирована в буфер обмена!"},common:{auto:"Авто",back:"Назад",balance:"Баланс",bet:"Сумма ставки",betAmount:"Сумма ставки",cancel:"Отмена",cashOut:"Вывести средства",classic:"Классика",confirm:"Подтвердить",copied:"Скопировано",currency:"Валюта",deposit:"Депозит",disableHotkeys:"Отключить горячие клавиши",disableMaxBet:"Отключить максимальную ставку",enableHotkeys:"Включить горячие клавиши",enableMaxBet:"Включить максимальную ставку",footerNavigation:"Навигация в нижнем колонтитуле",gameInfo:"Информация об игре",gameName:"Название игры",high:"Высоко",history:"История",hotkeys:"Горячие клавиши",id:"ID",instantBet:"Мгновенная ставка",loading:"Загрузка...",loadMore:"Загрузить еще",lobby:"Назад в лобби",low:"Низкий",manual:"Руководство",max:"MAX",medium:"Средний",multiplier:"Множитель",payout:"Выплата",placeBet:"Сделать ставку",profit:"Прибыль",profitOnWin:"Прибыль при выигрыше",provablyFair:"Доказуемо честно",risk:"Риск",roundId:"ID раунда",saveChanges:"Сохранить изменения",shareReplay:"Поделиться повтором",siteInformation:"Информация об игре",space:"ПРОСТРАНСТВО",support:"Поддержка",targetMultiplier:"Множитель",thisFieldIsRequired:"Это поле обязательно для заполнения",timestamp:"Время",toggleHotkeys:"Переключить горячие клавиши",viewFairnessInformation:"Просмотреть информацию о честности",viewHistory:"Просмотреть историю",volume:"Объем",winChance:"Шанс выигрыша"},errors:{dice:{multiplierRange:"Должно быть между {min} и {max}",winChanceRange:"Должно быть между {min} и {max}"},noWheelData:"Данные колеса недоступны",requestDropped:"Запрос отменён"},fairness:{activeClientSeed:"Активный clientSeed",enterClientSeed:"Введите клиентский сид",enterProof:"Введите доказательство",enterPublicKey:"Введите открытый ключ",enterRandomness:"Введите случайное значение",enterRequest:"Введите запрос",info:{p1:"Результат каждого раунда определяется проверяемой случайностью, а не скрытой логикой сервера. Мы формируем детерминированный seed из значений, уникальных для вашего раунда — gameId, tenantId, tenantUserId, инкрементируемого nonce (по одному на каждый завершённый раунд), а также вашего clientSeed. Это гарантирует уникальность и воспроизводимость каждого раунда: одни и те же входные данные → тот же поток случайных чисел → тот же результат.",p2:"Этот seed проходит через эллиптическую кривую с проверяемой функцией случайных чисел (ECVRF) согласно спецификации IETF draft-irtf-cfrg-vrf-15. Наш сервер использует свой приватный ключ для генерации случайного значения и криптографического доказательства (proofString). Любой, имея наш публичный ключ, может независимо проверить это доказательство для заданных входных данных — подтверждая, что случайность получена из seed и не была подделана. SDK написан на TypeScript, а основная криптография использует библиотеку fastcrypto на Rust через NAPI-RS для производительности и безопасности.",p3:"После подтверждения выход VRF используется для инициализации детерминированного генератора случайных байтов (hashSequence). Игры преобразуют эти байты в результаты с помощью детерминированной, непредвзятой логики. Поскольку процесс детерминированный и nonce увеличивается после каждого завершенного раунда, вы получаете как возможность повторного аудита (воспроизвести тот же раунд точно), так и новую, неповторяющуюся случайность каждый раз.",p4:"После раунда у вас есть входные данные (включая ваш clientSeed и nonce раунда), VRF-выход, proofString и наш открытый ключ. Используйте любой ECVRF-проверяющий инструмент или наши библиотеки, чтобы: (1) проверить доказательство по входным данным и открытому ключу, и (2) воссоздать ту же hashSequence и результат. Наш приватный ключ никогда не покидает защищённые серверы; открытый ключ безопасно использовать на стороне клиента для независимой проверки.",step1Desc:"Мы объединяем gameId, tenantId, tenantUserId, уникальный nonce для каждого раунда и ваш clientSeed. Одни и те же входные данные всегда дают один и тот же поток случайных чисел и результат.",step1Title:"Детерминированное зерно",step2Title:"Генерировать случайность",step3Desc:"Любой может проверить proofString для заданных входных данных с помощью нашего публичного ключа. Это подтверждает, что случайность соответствует seed и не была изменена.",step3Title:"Проверить доказательство",step4Title:"Получить результаты",step5Title:"Воспроизведение"},invalidGame:"Указан недопустимый тип игры.",learnMore:"Узнать больше",newClientSeed:"Новый клиентский сид",noBettingHistory:"Нет истории ставок",outcomeCalculationInfo:"Эта игра использует доказуемо честный алгоритм, который гарантирует справедливый и прозрачный результат.",outcomeNotVerified:"Результат этой игры не удалось проверить. Проверьте, что вы ввели правильную информацию, и попробуйте снова.",outcomeVerified:"Результат этого раунда был проверен с помощью нашего открытого ключа и является доказуемо честным.",proof:"Доказательство",publicKey:"Активный открытый ключ",randomness:"Случайность",request:"Запрос",saveClientSeed:"Сохранить клиентский сид",verifyOutcome:"Проверить результат"},gameInfo:{advancedDice:{how1:"Выберите режим броска: Внутри, Снаружи или Между.",how2:"Перетащите ползунки, чтобы определить зону выигрыша.",how3:"Установите сумму ставки и сделайте ставку.",how4:"Генерируется случайное число от 0 до 100.",how5:"Выигрыш, если результат попадает в выбранную зону.",overview:"Advanced Dice позволяет устанавливать пользовательские зоны выигрыша. Выберите Внутри, чтобы выиграть, когда результат попадает в ваш диапазон, Снаружи, чтобы выиграть, когда он выходит за пределы, или Между, чтобы разделить на две зоны выигрыша.",provablyFair:"Наша проверяемая система случайности генерирует каждый результат Advanced Dice. После каждого раунда вы можете просмотреть входные данные и доказательство, проверить результат с помощью нашего публичного ключа и воспроизвести тот же результат.",strategyTip:"Более широкие зоны предлагают более частые выигрыши, но меньшие множители. Узкие зоны более рискованны, но платят больше. Режим Между позволяет нацеливаться на два диапазона для гибких стратегий."},diamonds:{how1:"Установите сумму ставки и сделайте ставку.",how2:"Пять бриллиантов открываются из фиксированного набора типов драгоценных камней.",how3:"Ваш результат оценивается как покерная комбинация: пара, две пары, тройка, фул-хаус, каре и пятерка.",how4:"Каждый тип комбинации имеет свой собственный множитель; комбинации с более высокой ценностью приносят большие множители, а отсутствие комбинации выплачивает 0X.",how5:"Ваш выигрыш — это ваша ставка, умноженная на показанный множитель для получившейся комбинации.",overview:"Diamonds — это игра на совпадение с пятью барабанами. В каждом раунде открываются пять алмазов из набора разных видов драгоценных камней. Ваша цель — собирать комбинации в стиле покера: пары, тройки, фулл-хаусы и так далее.",provablyFair:"Наша система проверяемой случайности выбирает результат каждого бриллианта. После каждого раунда вы можете просмотреть исходные случайные значения и доказательство, проверить результат с помощью нашего открытого ключа и воспроизвести ту же самую раздачу.",strategyTip:"Diamonds — это игра с высокой волатильностью и фиксированными коэффициентами, в которой вы охотитесь за крупными, покерными комбинациями. Ваш главный инструмент — это степень вашей агрессивности. Делайте небольшие, стабильные ставки, если хотите переждать неудачные серии, или время от времени увеличивайте размер ставки, когда стремитесь поймать премиальные комбинации."},dice:{how1:"Выберите бросок ниже или бросок выше.",how2:"Установите ваше целевое число.",how3:"Установите сумму ставки и сделайте ставку.",how4:"Мы генерируем один случайный результат (отображаемый в игре на шкале от 0 до 99,99).",how5:"Вы выигрываете, если результат находится в выбранном вами диапазоне.",how6:"Ваш выигрыш — это ставка, умноженная на показанный множитель, который обновляется по мере перемещения ползунка.",overview:"Установите целевое число и выберите, выпадет ли результат ниже или выше него. Перемещение ползунка изменяет ваш шанс на выигрыш и множитель — более высокий шанс уменьшает множитель, а более низкий шанс увеличивает его. Каждый раунд — это независимый бросок на шкале игры.",provablyFair:"Наша система проверяемой случайности генерирует каждый бросок Dice. После каждого раунда вы можете просмотреть входные данные и доказательство, проверить результат с помощью нашего открытого ключа и воспроизвести тот же самый результат.",strategyTip:"Выберите свою волатильность. Более низкий шанс выигрыша дает большие множители, но выигрыши случаются реже. Более высокий шанс выигрыша дает меньшие множители, но выигрыши случаются чаще. Подбирайте размер ставок в соответствии с вашим банкроллом для более стабильных колебаний."},keno:{how1:"Выберите от 1 до 10 плиток на поле 1–40.",how2:"Установите сумму ставки и сделайте ставку.",how3:"Мы выбираем 10 выигрышных чисел; ваши совпадения выделены.",how4:"Выплаты зависят от того, сколько плиток вы выбрали и сколько совпадений получили — смотрите таблицу выплат.",how5:"Вы никогда не сможете угадать больше чисел, чем выбрали, а максимальный выбор — 10.",overview:"Выберите свои счастливые числа и попытайтесь угадать результаты розыгрыша. Вы можете выбрать от 1 до 10 чисел из диапазона от 1 до 40, после чего мы проведём розыгрыш 10 чисел. Чем больше выбранных вами чисел совпадёт с выпавшими, тем выше ваш выигрыш.",provablyFair:"Наша система проверяемой случайности генерирует каждый розыгрыш Keno. После каждого раунда вы можете просмотреть входные данные и доказательство, проверить результат с помощью нашего открытого ключа и воспроизвести тот же результат.",strategyTip:"Выберите свою волатильность. Меньшее количество выбранных позиций означает более редкие выигрыши, но гораздо большие множители. Большее количество позиций дает более частые выигрыши, но средний выигрыш за одно попадание будет меньше. Средний диапазон обеспечивает баланс между частотой выигрышей и выплатой. Отрегулируйте размер ставки в соответствии со своим уровнем риска и банкроллом."},limbo:{how1:"Установите ваш целевой множитель.",how2:"Установите сумму ставки и сделайте ставку.",how3:"Мы генерируем один случайный множитель результата.",how4:"Вы выигрываете, если результат больше или равен вашей цели.",how5:"Ваш выигрыш составляет ставку, умноженную на ваш целевой множитель; в противном случае вы теряете свою ставку.",overview:"В Limbo вы устанавливаете желаемый выигрыш, и игра выбирает один случайный множитель результата. Если результат как минимум равен вашей цели, вы выигрываете. Если он ниже, вы проигрываете. Более высокий шанс уменьшает множитель; более низкий шанс увеличивает его.",provablyFair:"Наша система проверяемой случайности генерирует каждый результат Limbo. После каждого раунда вы можете просмотреть входные данные и доказательство, проверить результат с помощью нашего публичного ключа и воспроизвести тот же результат.",strategyTip:"Низкие цели выигрывают чаще, но приносят меньшую выплату, в то время как высокие цели выпадают редко, но оплачиваются гораздо больше. Рассмотрите возможность установить фиксированную цель на сессию или периодически делать рискованные ставки, а также придерживайтесь стабильного размера ставок для управления дисперсией."},limitContent:"Максимальный возможный множитель для этой игры — {multiplier}X. Максимальный возможный выигрыш — {payout}",limitTitle:"Лимиты",mines:{how1:"Выберите количество мин для этого раунда.",how2:"Установите сумму ставки и сделайте ставку.",how3:"Нажимайте на плитки, чтобы открыть их: безопасная плитка увеличивает ваш множитель; мина завершает раунд.",how4:"Вы можете вывести средства в любой момент, чтобы зафиксировать текущий множитель.",how5:"Ваш выигрыш составляет ставку, умноженную на текущий множитель при выводе.",how6:"Раунд заканчивается, когда вы забираете выигрыш или когда обнаруживается мина.",overview:"Mines заключается в выборе безопасных плиток и принятии решения, когда забрать выигрыш. Перед началом раунда выберите, сколько мин будет скрыто на поле. Каждая открытая безопасная плитка увеличивает ваш множитель. Если вы попадёте на мину, раунд закончится без выплаты.",provablyFair:"Наша система проверяемой случайности генерирует скрытую расстановку мин для каждого поля. После каждого раунда вы можете просмотреть входные данные и доказательство, проверить результат с помощью нашего открытого ключа и воспроизвести тот же самый результат.",strategyTip:"Выберите свою волатильность. Меньшее количество мин означает более безопасные открытия и меньшие множители на каждом шаге. Больше мин приводит к более рискованным открытиям с большими множителями. Установите цель или используйте стоп-лосс для управления колебаниями. Постоянный размер ставок и дисциплинированные выводы помогают контролировать дисперсию."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Процент возврата игроку (RTP) для этой игры составляет {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Стратегия",tutorial:"Учебник",wheel:{how1:"Выберите свой уровень риска и количество сегментов.",how2:"Установите сумму ставки и сделайте ставку.",how3:"Колесо вращается и останавливается на сегменте.",how4:"Ваш выигрыш составляет ставку, умноженную на множитель, указанный на сегменте, где останавливается колесо.",how5:"Каждый сегмент имеет свой множитель в зависимости от выбранного уровня риска и количества сегментов.",overview:"Крутите колесо и смотрите, где оно остановится. Выберите уровень риска и количество сегментов перед каждым вращением — низкий риск дает более частые выигрыши с меньшими множителями, высокий риск — редкие выигрыши с большими множителями.",provablyFair:"Наша система проверяемой случайности генерирует каждый результат Wheel. После каждого раунда вы можете просмотреть входные данные и доказательство, проверить результат с помощью нашего открытого ключа и воспроизвести тот же самый результат.",strategyTip:"Низкий риск обеспечивает стабильные, небольшие выигрыши. Средний риск балансирует частоту и выплату. Высокий риск нацелен на редкие, но крупные множители. Большее количество сегментов увеличивает максимальный потенциал, но снижает частоту выигрышей."},roulette:{how1:"Нажмите на сетку, чтобы разместить фишки на выбранных ставках.",how2:"Настройте сумму ставки за клик кнопками 1/2 и 2X.",how3:"Сделайте ставку, чтобы запустить колесо.",how4:"Шарик падает на случайное число от 0 до 36 (или 00 в американской версии).",how5:"Выигрышные ставки выплачиваются по коэффициентам; все остальные фишки проигрываются.",overview:"Размещайте фишки на игровом поле и вращайте колесо. Ставьте на отдельные числа, группы чисел, цвета или чёт/нечет. Шарик падает в случайную ячейку, и совпавшие ставки выплачиваются по коэффициентам.",provablyFair:"Наша проверяемая система случайности генерирует каждое вращение рулетки. После каждого раунда вы можете просмотреть входные данные и доказательство, проверить результат с помощью нашего публичного ключа и воспроизвести тот же результат.",strategyTip:"Внешние ставки (красное/чёрное, чёт/нечет) дают почти 50% шанс выигрыша с выплатой 2X. Внутренние ставки на отдельные числа платят до 36X, но выпадают редко. Распределяйте фишки для баланса риска и награды."}},games:{advancedDice:{between:"Между",boundsLower:"Нижняя граница",boundsUpper:"Верхняя граница",inside:"Внутри",outside:"Снаружи",rollMode:"Режим броска",secondBoundsLower:"Вторая нижняя граница",secondBoundsUpper:"Вторая верхняя граница"},dice:{rollOver:"Бросить выше",rollUnder:"Бросить ниже"},keno:{autoPick:"Автовыбор",clearTable:"Очистить",kenoGameGrid:"Сетка игры Кено",kenoNumber:"Номер Keno {value}",selectAtLeastOneTile:"Выберите как минимум одну плитку",selectTileToAutobet:"Выберите как минимум одну плитку"},limbo:{multiplierError:"Должно быть между {min} и {max}",targetMultiplier:"Множитель",winChanceError:"Должно быть между {min} и {max}"},mines:{cashout:"Вывести средства",gem:"Драгоценный камень",gems:"Драгоценные камни",mine:"Мина",mines:"Мины",nextGem:"Следующая драгоценность",selectRandomTile:"Выбрать случайную плитку",selectTileToAutobet:"Выберите как минимум одну плитку",tile:"Плитка",unrevealed:"Не раскрыто"},wheel:{segments:"Сегменты"},roulette:{chipValue:"Значение Фишки",totalBetAmount:"Общая Ставка"}},hotkeys:{clearBets:"Очистить ставки",doubleBet:"Удвоить сумму ставки",doubleChipValue:"Удвоить значение фишки",doubleTotalBet:"Удвоить общую ставку",halveBet:"Уменьшить ставку вдвое",halveChipValue:"Уменьшить значение фишки вдвое",halveTotalBet:"Уменьшить общую ставку вдвое",higherTarget:"Более высокая цель",info:"Когда горячие клавиши включены, они будут оставаться активными для этой игры до тех пор, пока не будут отключены. Несмотря на то что некоторые игры используют схожие комбинации клавиш, всегда рекомендуется проверять горячие клавиши для каждой игры.",lowerTarget:"Нижняя цель",makeBet:"Сделать ставку",resetChipValue:"Сбросить значение фишки",toggleWinCondition:"Переключить условие выигрыша",undo:"Отменить",zeroBet:"Нулевая сумма ставки"},modals:{betResult:"Результат ставки",fairnessAndHistory:"Честность и история",gameArea:"Игровая зона",gameControls:"Управление игрой",gameInfo:"Информация об игре"}}});var N4=D1((ht,Qi)=>{Qi.exports={accessibility:{sliderValue:"{value} / {max}"},alerts:{autobetStarted:"Otomatik bahis modu başlatıldı",autobetStopped:"Otomatik bahis modu durduruldu",betAmountAboveMaxBet:"Azami bahis {value}",betAmountBelowMinBet:"Minimum bahis {value}",betLimitReached:"Bahis limiti aşıldı",errorProcessingBet:"Bahsiniz işlenirken bir hata oluştu. Lütfen tekrar deneyin.",failedToLoadBetData:"Bahis verileri yüklenemedi",gameError:"Bahsiniz işlenirken bir hata oluştu. Lütfen tekrar deneyin.",insufficientBalance:"Yetersiz bakiye",maxPayoutExceeded:"Maksimum ödeme aşıldı",notEnoughBalance:"Yetersiz bakiye"},autobet:{configureAutobet:"Autobet'i yapılandır",games:"Oyunlar",games10:"10 Oyun",games100:"100 Oyun",games25:"25 Oyun",games5:"5 Oyun",games50:"50 Oyun",increase:"Artır",infinite:"Sonsuz",onLoss:"Kaybedince",onWin:"Kazandığında",reset:"Sıfırla",startAutobet:"Otomatik Bahisi Başlat",stopAutobet:"Autobet'i Durdur",stopOnLoss:"Kayıpta Durdur",stopOnProfit:"Kârda Durdur"},clipboard:{linkCopied:"Bağlantı panoya kopyalandı!"},common:{auto:"Otomatik",back:"Geri",balance:"Bakiye",bet:"Bahis Tutarı",betAmount:"Bahis Tutarı",cancel:"İptal Et",cashOut:"Nakit Çek",classic:"Klasik",confirm:"Onayla",copied:"Kopyalandı",currency:"Para Birimi",deposit:"Yatırma",disableHotkeys:"Kısayol Tuşlarını Devre Dışı Bırak",disableMaxBet:"Maksimum Bahsi Devre Dışı Bırak",enableHotkeys:"Kısayol Tuşlarını Etkinleştir",enableMaxBet:"Maksimum Bahsi Etkinleştir",footerNavigation:"Alt Bilgi Gezinme",gameInfo:"Oyun Bilgisi",gameName:"Oyun Adı",high:"Yüksek",history:"Geçmiş",hotkeys:"Kısayol tuşları",id:"ID",instantBet:"Anında Bahis",loading:"Yükleniyor...",loadMore:"Daha Fazla Yükle",lobby:"Lobiye Dön",low:"Düşük",manual:"Kılavuz",max:"MAX",medium:"Orta",multiplier:"Çarpan",payout:"Ödeme",placeBet:"Bahis Yap",profit:"Kâr",profitOnWin:"Kazançta Kar",provablyFair:"Kanıtlanabilir Adil",risk:"Risk",roundId:"Tur Roundu ID",saveChanges:"Değişiklikleri Kaydet",shareReplay:"Yeniden Oynatımı Paylaş",siteInformation:"Oyun Bilgileri",space:"SPACE",support:"Destek",targetMultiplier:"Çarpan",thisFieldIsRequired:"Bu alan gereklidir",timestamp:"Zaman",toggleHotkeys:"Kısayol Tuşlarını Aç/Kapat",viewFairnessInformation:"Adililik Bilgilerini Görüntüle",viewHistory:"Geçmişi Görüntüle",volume:"Ses",winChance:"Kazanma Şansı"},errors:{dice:{multiplierRange:"{min} ile {max} arasında olmalı",winChanceRange:"{min} ile {max} arasında olmalı"},noWheelData:"Çark verileri mevcut değil",requestDropped:"İstek iptal edildi"},fairness:{activeClientSeed:"Aktif Client Seed",enterClientSeed:"Müşteri Tohumu Girin",enterProof:"Kanıtı Gir",enterPublicKey:"Genel Anahtar Girin",enterRandomness:"Rastgelelik Girin",enterRequest:"İstek Girin",info:{p1:"Her turun sonucu gizli sunucu mantığından değil, doğrulanabilir rastgelelikten gelir. Turunuza özgü değerlerden—gameId, tenantId, tenantUserId, artan bir nonce (her tamamlanan tur için bir tane), ayrıca clientSeed’inizden—belirleyici bir seed oluşturuyoruz. Bu, her turun benzersiz ve tekrarlanabilir olmasını garanti eder: aynı girdiler → aynı rastgele akış → aynı sonuç.",p2:"Bu seed, IETF taslak-irtf-cfrg-vrf-15 spesifikasyonuna göre bir Eliptik Eğri Doğrulanabilir Rastgele Fonksiyonu (ECVRF) üzerinden çalıştırılır. Sunucumuz, rastgele bir değer ve kriptografik bir kanıt (proofString) üretmek için özel anahtarını kullanır. Herkes, bizim açık anahtarımızla verilen girdiler için bu kanıtı bağımsız olarak doğrulayabilir—rastgeleliğin seed’den geldiğini ve üzerinde oynama yapılmadığını teyit eder. SDK TypeScript’tir, çekirdek kriptografi ise performans ve güvenlik için NAPI-RS aracılığıyla fastcrypto Rust kütüphanesini kullanır.",p3:"Doğrulandıktan sonra, VRF çıktısı deterministik bir rastgele bayt üreteci (hashSequence) için başlangıç değeri olarak kullanılır. Oyunlar bu baytları deterministik ve tarafsız bir mantıkla sonuçlara dönüştürür. Süreç deterministik olduğu ve nonce her tamamlanan turda ilerlediği için hem tekrar oynanabilir denetimler (aynı turu birebir yeniden oluşturma) hem de her seferinde taze, tekrarlanmayan rastgelelik elde edersiniz.",p4:"Bir turdan sonra, girişlere (clientSeed’iniz ve turun nonce’u dahil), VRF çıktısına, proofString’e ve bizim açık anahtarımıza sahip olursunuz. Herhangi bir ECVRF doğrulayıcıyı veya kütüphanelerimizi kullanarak: (1) kanıtı girişler ve açık anahtar ile doğrulayın ve (2) aynı hashSequence ve sonucu yeniden oluşturun. Özel anahtarımız asla güvenli sunuculardan ayrılmaz; açık anahtar bağımsız kontroller için istemci tarafında güvenle kullanılabilir.",step1Desc:"gameId, tenantId, tenantUserId, her tur için bir nonce ve clientSeed’inizi birleştiriyoruz. Aynı girdiler her zaman aynı rastgele akışı ve sonucu üretir.",step1Title:"Deterministik Tohum",step2Title:"Rastgelelik Oluştur",step3Desc:"Herkes, verilen girdiler için proofString'i genel anahtarımızı kullanarak doğrulayabilir. Bu, rastgeleliğin tohumla eşleştiğini ve üzerinde oynama yapılmadığını onaylar.",step3Title:"Kanıtı Doğrula",step4Title:"Sonuçları Türet",step5Title:"Üreme"},invalidGame:"Geçersiz oyun türü sağlandı.",learnMore:"Daha Fazla Bilgi Al",newClientSeed:"Yeni Client Seed",noBettingHistory:"Bahis geçmişi yok",outcomeCalculationInfo:"Bu oyun, sonucun adil ve şeffaf olmasını sağlayan kanıtlanabilir adil bir algoritma kullanır.",outcomeNotVerified:"Bu oyunun sonucu doğrulanamadı. Doğru bilgileri girdiğinizden emin olun ve tekrar deneyin.",outcomeVerified:"Bu turun sonucu, açık anahtarımızla doğrulanmıştır ve kesinlikle adildir.",proof:"Kanıt",publicKey:"Aktif Genel Anahtar",randomness:"Rastgelelik",request:"Talep",saveClientSeed:"İstemci Tohumunu Kaydet",verifyOutcome:"Sonucu Doğrula"},gameInfo:{advancedDice:{how1:"Atış modunu seçin: İçeride, Dışarıda veya Arasında.",how2:"Kazanma bölgenizi tanımlamak için kaydırıcıları sürükleyin.",how3:"Bahis miktarınızı ayarlayın ve bahsinizi koyun.",how4:"0 ile 100 arasında rastgele bir sayı üretilir.",how5:"Sonuç seçtiğiniz bölgeye düşerse kazanırsınız.",overview:"Advanced Dice, özel kazanma bölgeleri belirlemenize olanak tanır. Sonuç aralığınıza düştüğünde kazanmak için İçeride'yi, aralığınızın dışına çıktığında kazanmak için Dışarıda'yı veya iki kazanma bölgesine bölmek için Arasında'yı seçin.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz her Advanced Dice sonucunu üretir. Her turdan sonra, girdileri ve kanıtı görüntüleyebilir, sonucu genel anahtarımızla doğrulayabilir ve aynı sonucu yeniden üretebilirsiniz.",strategyTip:"Daha geniş bölgeler daha sık kazanç sağlar ancak daha küçük çarpanlarla. Dar bölgeler daha risklidir ancak daha fazla öder. Arasında modu, esnek stratejiler için iki aralığı hedeflemenize olanak tanır."},diamonds:{how1:"Bahis miktarını belirle ve bahsini yerleştir.",how2:"Beş elmas, sabit bir değerli taş türleri setinden ortaya çıkar.",how3:"Sonucunuz bir poker eli gibi değerlendirilir: çiftler, iki çift, üçlü, ful, dörtlü ve beşli.",how4:"Her el türünün kendi çarpanı vardır; daha yüksek değerli eller daha büyük çarpanlar kazandırırken, elde hiçbir kombinasyon yoksa 0X ödenir.",how5:"Kazancınız, elde edilen el için gösterilen çarpan ile çarpılan bahsinizdir.",overview:"Diamonds beş makaralı bir eşleştirme oyunudur. Her turda farklı mücevher türlerinden beş elmas ortaya çıkar. Amacınız, poker tarzı kombinasyonlar elde etmektir - çiftler, üçlüler, full house ve benzeri.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz her bir Diamonds sonucunu seçer. Her turdan sonra, temel rastgele değerleri ve kanıtı görüntüleyebilir, sonucu genel anahtarımızla doğrulayabilir ve aynı eli yeniden oluşturabilirsiniz.",strategyTip:"Diamonds, büyük, poker tarzı ellerin peşinde olduğunuz yüksek oynaklığa sahip, sabit oranlı bir oyundur. Ana kontrolünüz ne kadar agresif olmak istediğinizdir. Kurak serileri atlatmak istiyorsanız daha küçük ve istikrarlı bahisler kullanın veya nadiren de olsa yüksek değerli ellerin peşindeyken bahis miktarınızı artırın."},dice:{how1:"Roll altı veya roll üstü seçin.",how2:"Hedef numaranızı belirleyin.",how3:"Bahis miktarını belirle ve bahsini yerleştir.",how4:"Bir rastgele sonuç üretiyoruz (oyunda 0–99,99 ölçeğinde gösterilir).",how5:"Sonuç seçtiğiniz aralıkta ise kazanırsınız.",how6:"Kazancınız, bahis x gösterilen çarpan kadardır ve çarpan, kaydırıcıyı hareket ettirdikçe güncellenir.",overview:"Bir hedef sayı belirleyin ve zarın bu sayının altında mı yoksa üstünde mi duracağını seçin. Kaydırıcıyı hareket ettirmek, kazanma şansınızı ve çarpanınızı değiştirir—daha yüksek bir şans çarpanı düşürür, daha düşük bir şans ise çarpanı artırır. Her tur, oyunun ölçeğinde bağımsız bir zar atışıdır.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz her Dice atışını üretir. Her turun ardından, girdileri ve kanıtı görebilir, sonucu herkese açık anahtarımızla doğrulayabilir ve aynı sonucu yeniden üretebilirsiniz.",strategyTip:"Oynaklığını seç. Daha düşük kazanma şansı, daha büyük çarpanlar ama daha nadir kazançlar sağlar. Daha yüksek kazanma şansı, daha küçük çarpanlar ama daha sık kazançlar sağlar. Daha dengeli dalgalanmalar için bahislerini bakiyene göre ayarla."},keno:{how1:"1–40 tahtasında 1–10 karo seçin.",how2:"Bahis miktarını belirle ve bahsini yerleştir.",how3:"10 kazanan numara çekiyoruz; eşleşmeleriniz vurgulanır.",how4:"Ödemeler, seçtiğiniz karo sayısına ve kaç isabet aldığınıza bağlıdır—ödeme tablosunu kontrol edin.",how5:"Seçtiğinizden daha fazla sayıya asla ulaşamazsınız ve en fazla 10 seçim yapabilirsiniz.",overview:"Şanslı numaralarını seç ve çekilişle eşleştirmeye çalış. 1–40 arasından 1–10 numara seçebilirsin, ardından biz 10 numara çekeriz. Seçtiğin numaralardan ne kadar fazlası çıkarsa, ödemen o kadar yüksek olur.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz her Keno çekilişini üretir. Her turun ardından girdileri ve kanıtı görüntüleyebilir, sonucu ortak anahtarımızla doğrulayabilir ve aynı sonucu yeniden üretebilirsiniz.",strategyTip:"Volatilitenizi seçin. Daha az nokta seçmek, daha nadir kazançlar ancak çok daha büyük çarpanlar anlamına gelir. Daha fazla nokta, daha sık kazanç sağlar ancak her kazanç başına ortalama getiri daha küçüktür. Orta bir aralık, isabet oranı ile ödemeyi dengeler. Bahis miktarınızı, risk tercihinize ve bakiyenize göre ayarlayın."},limbo:{how1:"Hedef çarpanınızı ayarlayın.",how2:"Bahis miktarını belirle ve bahsini yerleştir.",how3:"Bir rastgele sonuç çarpanı oluşturuyoruz.",how4:"Sonuç hedefinize eşit veya ondan büyükse kazanırsınız.",how5:"Kazancınız, bahsiniz x hedef çarpanınızdır; aksi takdirde, bahsinizi kaybedersiniz.",overview:"Limbo'da istediğiniz ödemeyi belirlersiniz ve oyun tek bir rastgele sonuç çarpanı çeker. Sonuç hedefinize en az eşitse kazanırsınız. Daha düşükse kaybedersiniz. Daha yüksek bir kazanma şansı çarpanı düşürür; daha düşük bir şans ise çarpanı artırır.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz her Limbo sonucunu üretir. Her turdan sonra, girdileri ve kanıtı görebilir, sonucu genel anahtarımızla doğrulayabilir ve aynı sonucu yeniden üretebilirsiniz.",strategyTip:"Daha düşük hedefler daha sık kazanır ancak daha az öder, daha yüksek hedefler ise nadiren tutar fakat çok daha fazla öder. Her oturum için sabit bir hedef belirlemeyi ya da ara sıra uzun vadeli hedefler denemeyi düşünün ve varyansı yönetmek için bahis miktarınızı tutarlı bir şekilde ayarlayın."},limitContent:"Bu oyun için ulaşılabilir en yüksek çarpan {multiplier}X'tir. Ulaşılabilir en yüksek ödeme {payout}",limitTitle:"Limitler",mines:{how1:"Bu tur için mayın sayısını seçin.",how2:"Bahis miktarını belirle ve bahsini yerleştir.",how3:"Kareleri açmak için tıklayın: güvenli bir kare çarpanınızı artırır; bir mayın ise raundu bitirir.",how4:"Mevcut çarpanınızı sabitlemek için istediğiniz zaman nakit çıkışı yapabilirsiniz.",how5:"Nakit çıkışı yaptığınızda kazancınız, bahis x mevcut çarpan kadar olur.",how6:"Bir tur, nakit çıkışı yaptığınızda veya bir mayın açığa çıktığında sona erer.",overview:"Mines, güvenli kutucukları seçmek ve ne zaman nakit çıkışı yapacağınıza karar vermekle ilgilidir. Tur başlamadan önce, tahtada kaç tane mayın gizleneceğini seçin. Açtığınız her güvenli kutucuk çarpanınızı artırır. Bir mayına denk gelirseniz tur, ödeme olmadan sona erer.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz, her panonun gizli mayın düzenini oluşturur. Her turun ardından, girdileri ve kanıtı görüntüleyebilir, sonucu genel anahtarımızla doğrulayabilir ve aynı sonucu yeniden üretebilirsiniz.",strategyTip:"Oynaklığını seç. Daha az mayın, daha güvenli açılışlar ve adım başına daha küçük çarpanlar anlamına gelir. Daha fazla mayın ise daha riskli açılışlar ve daha büyük çarpanlar demektir. Dalgalanmaları yönetmek için bir hedef belirleyin veya zarar durdur kullanın. Tutarlı bahis miktarları ve disiplinli nakit çıkışları, varyansı kontrol altında tutmaya yardımcı olur."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Bu oyun için Oyuncuya Dönüş (RTP) yüzdesi {rtpValue}%'dir.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Strateji",tutorial:"Eğitim",wheel:{how1:"Risk seviyenizi ve segment sayısını seçin.",how2:"Bahis miktarını belirle ve bahsini yerleştir.",how3:"Çark döner ve bir bölüme iner.",how4:"Kazancınız, çarkın durduğu dilimde gösterilen çarpan ile bahisinizin çarpılmasıyla elde edilir.",how5:"Her bir bölüm, seçtiğiniz risk seviyesi ve bölüm sayısına göre farklı bir çarpana sahiptir.",overview:"Çarkı çevirin ve nerede durduğunu izleyin. Her dönüşten önce risk seviyenizi ve dilim sayısını seçin - düşük risk, daha sık ama daha küçük çarpanlarla kazanç sağlar; yüksek risk ise daha nadir ama daha büyük çarpanlarla kazanç sağlar.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz her Wheel sonucunu üretir. Her turun ardından, girdileri ve kanıtı görebilir, sonucu herkese açık anahtarımızla doğrulayabilir ve aynı sonucu yeniden üretebilirsiniz.",strategyTip:"Düşük risk istikrarlı, daha küçük kazançlar sunar. Orta risk, sıklık ve ödemeyi dengeler. Yüksek risk, nadir ama büyük çarpanları hedefler. Daha fazla segment, maksimum potansiyeli artırır ancak kazanma sıklığını azaltır."},roulette:{how1:"Seçtiğiniz bahislere çip koymak için ızgaraya tıklayın.",how2:"Tıklama başına bahis miktarınızı 1/2 ve 2X düğmeleriyle ayarlayın.",how3:"Çarkı döndürmek için bahsinizi koyun.",how4:"Top 0-36 arasında rastgele bir sayıya düşer (Amerikan için 00 dahil).",how5:"Kazanan bahisler oranlarına göre ödenir; diğer tüm çipler kaybedilir.",overview:"Bahis ızgarasına çip koyun ve çarkı döndürün. Tek sayılara, sayı gruplarına, renklere veya tek/çift'e bahis yapın. Top rastgele bir cebe düşer ve eşleşen bahisler oranlarına göre ödenir.",provablyFair:"Doğrulanabilir rastgelelik sistemimiz her Rulet dönüşünü üretir. Her turdan sonra girdileri ve kanıtı görüntüleyebilir, sonucu genel anahtarımızla doğrulayabilir ve aynı sonucu yeniden üretebilirsiniz.",strategyTip:"Dış bahisler (kırmızı/siyah, tek/çift) 2X ödeme ile yaklaşık %50 kazanma şansı sunar. Tek sayılara iç bahisler 36X'e kadar öder ama nadiren tutturur. Risk ve ödülü dengelemek için çiplerinizi yayın."}},games:{advancedDice:{between:"Arasında",boundsLower:"Alt sınır",boundsUpper:"Üst sınır",inside:"İçinde",outside:"Dışında",rollMode:"Zar Modu",secondBoundsLower:"İkinci alt sınır",secondBoundsUpper:"İkinci üst sınır"},dice:{rollOver:"Üzerine Yuvarla",rollUnder:"Altında Zar At"},keno:{autoPick:"Otomatik Seç",clearTable:"Temizle",kenoGameGrid:"Keno Oyun Izgarası",kenoNumber:"Keno Numarası {value}",selectAtLeastOneTile:"En az bir karo seçin",selectTileToAutobet:"En az bir karo seçin"},limbo:{multiplierError:"{min} ile {max} arasında olmalı",targetMultiplier:"Çarpan",winChanceError:"{min} ile {max} arasında olmalı"},mines:{cashout:"Nakit Çek",gem:"Mücevher",gems:"Mücevherler",mine:"Mayın",mines:"Mayınlar",nextGem:"Sonraki Değerli Taş",selectRandomTile:"Rastgele Kare Seç",selectTileToAutobet:"En az bir karo seçin",tile:"Döşeme",unrevealed:"Açığa çıkarılmamış"},wheel:{segments:"Segmentler"},roulette:{chipValue:"Çip Değeri",totalBetAmount:"Toplam Bahis"}},hotkeys:{clearBets:"Bahisleri Temizle",doubleBet:"Bahis Miktarını İkiye Katla",doubleChipValue:"Çip Değerini İkiye Katla",doubleTotalBet:"Toplam Bahisi İkiye Katla",halveBet:"Bahis Miktarını Yarıya Düşür",halveChipValue:"Çip Değerini Yarıya Düşür",halveTotalBet:"Toplam Bahisi Yarıya Düşür",higherTarget:"Daha Yüksek Hedef",info:"Kısayol tuşları etkinleştirildiğinde, devre dışı bırakılana kadar bu oyun için açık kalacaktır. Bazı oyunlar benzer tuş atamalarını paylaşsa da, her oyun için kısayol tuşlarını doğrulamanız tavsiye edilir.",lowerTarget:"Alt Hedef",makeBet:"Bahis Yap",resetChipValue:"Çip Değerini Sıfırla",toggleWinCondition:"Kazanma Koşulunu Değiştir",undo:"Geri Al",zeroBet:"Sıfır Bahis Miktarı"},modals:{betResult:"Bahis Sonucu",fairnessAndHistory:"Adillik ve Geçmiş",gameArea:"Oyun Alanı",gameControls:"Oyun Kontrolleri",gameInfo:"Oyun Bilgisi"}}});var G4=D1((st,Yi)=>{Yi.exports={accessibility:{sliderValue:"{value} trên tổng số {max}"},alerts:{autobetStarted:"Đã bắt đầu chế độ Autobet",autobetStopped:"Đã dừng chế độ Autobet",betAmountAboveMaxBet:"Mức cược tối đa là {value}",betAmountBelowMinBet:"Cược tối thiểu là {value}",betLimitReached:"Đã đạt giới hạn cược",errorProcessingBet:"Đã xảy ra lỗi khi xử lý cược của bạn. Vui lòng thử lại.",failedToLoadBetData:"Không tải được dữ liệu cược",gameError:"Đã xảy ra lỗi khi xử lý cược của bạn. Vui lòng thử lại.",insufficientBalance:"Số dư không đủ",maxPayoutExceeded:"Vượt quá mức thanh toán tối đa",notEnoughBalance:"Số dư không đủ"},autobet:{configureAutobet:"Cấu hình Autobet",games:"Trò chơi",games10:"10 Trò chơi",games100:"100 Trò chơi",games25:"25 Trò chơi",games5:"5 Trò chơi",games50:"50 Trò chơi",increase:"Tăng",infinite:"Vô hạn",onLoss:"Khi Thua",onWin:"Khi Thắng",reset:"Đặt lại",startAutobet:"Bắt đầu Autobet",stopAutobet:"Dừng Autobet",stopOnLoss:"Dừng khi thua",stopOnProfit:"Dừng Khi Có Lợi Nhuận"},clipboard:{linkCopied:"Đã sao chép liên kết vào clipboard!"},common:{auto:"Tự động",back:"Quay lại",balance:"Số dư",bet:"Số tiền cược",betAmount:"Số tiền cược",cancel:"Hủy",cashOut:"Rút Tiền",classic:"Cổ điển",confirm:"Xác nhận",copied:"Đã sao chép",currency:"Tiền tệ",deposit:"Nạp tiền",disableHotkeys:"Tắt phím tắt",disableMaxBet:"Tắt cược tối đa",enableHotkeys:"Bật phím tắt",enableMaxBet:"Bật Cược Tối Đa",footerNavigation:"Điều hướng chân trang",gameInfo:"Thông Tin Trò Chơi",gameName:"Tên trò chơi",high:"Cao",history:"Lịch sử",hotkeys:"Phím tắt",id:"ID",instantBet:"Cược Nhanh",loading:"Đang tải...",loadMore:"Tải Thêm",lobby:"Quay lại Sảnh",low:"Thấp",manual:"Hướng dẫn sử dụng",max:"MAX",medium:"Trung bình",multiplier:"Hệ số nhân",payout:"Tiền thưởng",placeBet:"Đặt cược",profit:"Lợi nhuận",profitOnWin:"Lợi nhuận khi thắng",provablyFair:"Công bằng có thể kiểm chứng",risk:"Rủi ro",roundId:"ID Vòng",saveChanges:"Lưu thay đổi",shareReplay:"Chia sẻ phát lại",siteInformation:"Thông tin trò chơi",space:"SPACE",support:"Hỗ trợ",targetMultiplier:"Hệ số nhân",thisFieldIsRequired:"Trường này là bắt buộc",timestamp:"Thời gian",toggleHotkeys:"Chuyển đổi phím tắt",viewFairnessInformation:"Xem thông tin công bằng",viewHistory:"Xem lịch sử",volume:"Âm lượng",winChance:"Cơ hội Thắng"},errors:{dice:{multiplierRange:"Phải nằm trong khoảng từ {min} đến {max}",winChanceRange:"Phải nằm trong khoảng từ {min} đến {max}"},noWheelData:"Không có dữ liệu vòng quay",requestDropped:"Yêu cầu đã bị hủy"},fairness:{activeClientSeed:"Client Seed đang hoạt động",enterClientSeed:"Nhập Client Seed",enterProof:"Nhập Bằng Chứng",enterPublicKey:"Nhập Khóa Công Khai",enterRandomness:"Nhập Ngẫu nhiên",enterRequest:"Nhập Yêu Cầu",info:{p1:"Kết quả của mỗi vòng đến từ tính ngẫu nhiên có thể xác minh được, không phải từ logic máy chủ ẩn. Chúng tôi tạo ra một seed xác định dựa trên các giá trị độc nhất cho vòng chơi của bạn—gameId, tenantId, tenantUserId, một nonce tăng dần (mỗi vòng hoàn thành một lần), cùng với clientSeed của bạn. Điều này đảm bảo mỗi vòng đều độc nhất và có thể tái tạo: cùng đầu vào → cùng chuỗi ngẫu nhiên → cùng kết quả.",p2:"Hạt giống đó được chạy qua một Hàm Ngẫu nhiên Có thể Xác minh Đường cong Elliptic (ECVRF) theo bản dự thảo tiêu chuẩn IETF draft-irtf-cfrg-vrf-15. Máy chủ của chúng tôi sử dụng khóa riêng của mình để tạo ra một giá trị ngẫu nhiên và một bằng chứng mật mã (proofString). Bất kỳ ai có khóa công khai của chúng tôi đều có thể tự xác minh bằng chứng đó cho các đầu vào đã cho—xác nhận rằng tính ngẫu nhiên xuất phát từ hạt giống và không bị can thiệp. SDK là TypeScript, trong khi phần lõi mã hóa sử dụng thư viện fastcrypto Rust thông qua NAPI-RS để đảm bảo hiệu suất và an toàn.",p3:"Khi đã được xác minh, đầu ra VRF sẽ cấp seed cho một bộ tạo byte ngẫu nhiên xác định (hashSequence). Các trò chơi chuyển đổi những byte này thành kết quả sử dụng logic xác định, không thiên vị. Vì quy trình là xác định và nonce tăng lên sau mỗi vòng hoàn thành, bạn sẽ có cả kiểm tra lại có thể phát lại (tái tạo chính xác cùng một vòng) và sự ngẫu nhiên mới, không lặp lại mỗi lần.",p4:"Sau một vòng, bạn có các dữ liệu đầu vào (bao gồm clientSeed của bạn và nonce của vòng đó), đầu ra VRF, proofString và khóa công khai của chúng tôi. Sử dụng bất kỳ trình xác minh ECVRF nào hoặc thư viện của chúng tôi để: (1) xác minh proof dựa trên các dữ liệu đầu vào và khóa công khai, và (2) tạo lại cùng một hashSequence và kết quả. Khóa riêng của chúng tôi không bao giờ rời khỏi máy chủ an toàn; khóa công khai an toàn để sử dụng phía khách hàng cho các kiểm tra độc lập.",step1Desc:"Chúng tôi kết hợp gameId, tenantId, tenantUserId, một nonce cho mỗi vòng và clientSeed của bạn. Các đầu vào giống nhau luôn tạo ra cùng một chuỗi ngẫu nhiên và kết quả.",step1Title:"Hạt giống xác định",step2Title:"Tạo Ngẫu nhiên",step3Desc:"Bất kỳ ai cũng có thể xác minh proofString cho các đầu vào đã cho bằng khóa công khai của chúng tôi. Điều này xác nhận rằng tính ngẫu nhiên phù hợp với seed và không bị can thiệp.",step3Title:"Xác minh Bằng chứng",step4Title:"Rút ra Kết quả",step5Title:"Sinh sản"},invalidGame:"Loại trò chơi không hợp lệ được cung cấp.",learnMore:"Tìm hiểu thêm",newClientSeed:"Client Seed Mới",noBettingHistory:"Không có lịch sử cược",outcomeCalculationInfo:"Trò chơi này sử dụng một thuật toán công bằng có thể kiểm chứng, đảm bảo kết quả công bằng và minh bạch.",outcomeNotVerified:"Kết quả của trò chơi này không thể được xác minh. Vui lòng kiểm tra lại bạn đã nhập đúng thông tin và thử lại.",outcomeVerified:"Kết quả của vòng này đã được xác minh bằng khóa công khai của chúng tôi và đảm bảo công bằng minh bạch.",proof:"Bằng chứng",publicKey:"Khóa công khai đang hoạt động",randomness:"Tính ngẫu nhiên",request:"Yêu cầu",saveClientSeed:"Lưu Client Seed",verifyOutcome:"Xác minh Kết quả"},gameInfo:{advancedDice:{how1:"Chọn chế độ tung: Bên trong, Bên ngoài hoặc Giữa.",how2:"Kéo thanh trượt để xác định vùng chiến thắng của bạn.",how3:"Đặt số tiền cược và đặt cược.",how4:"Một số ngẫu nhiên từ 0 đến 100 được tạo ra.",how5:"Thắng nếu kết quả rơi vào vùng đã chọn của bạn.",overview:"Advanced Dice cho phép bạn đặt các vùng chiến thắng tùy chỉnh. Chọn Bên trong để thắng khi kết quả nằm trong phạm vi của bạn, Bên ngoài để thắng khi nằm ngoài phạm vi, hoặc Giữa để chia thành hai vùng chiến thắng.",provablyFair:"Hệ thống ngẫu nhiên có thể xác minh của chúng tôi tạo ra mọi kết quả Advanced Dice. Sau mỗi vòng, bạn có thể xem đầu vào và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo cùng một kết quả.",strategyTip:"Các vùng rộng hơn mang lại chiến thắng thường xuyên hơn nhưng hệ số nhân nhỏ hơn. Các vùng hẹp rủi ro hơn nhưng trả nhiều hơn. Chế độ Giữa cho phép bạn nhắm mục tiêu hai phạm vi cho các chiến lược linh hoạt."},diamonds:{how1:"Đặt số tiền cược của bạn và tiến hành đặt cược.",how2:"Năm viên kim cương được tiết lộ từ một bộ loại đá quý cố định.",how3:"Kết quả của bạn được đánh giá giống như một ván bài poker: đôi, hai đôi, ba lá giống nhau, cù lũ, bốn lá giống nhau và năm lá giống nhau.",how4:"Mỗi loại bài đều có hệ số nhân riêng; các tay bài có giá trị cao hơn sẽ nhận được hệ số nhân lớn hơn, trong khi không có tay bài nào thì trả về 0X.",how5:"Tiền thưởng của bạn là số tiền cược của bạn nhân với hệ số được hiển thị cho bộ bài kết quả.",overview:"Diamonds là một trò chơi ghép năm cuộn. Mỗi vòng sẽ tiết lộ năm viên kim cương từ một bộ các loại đá quý khác nhau. Mục tiêu của bạn là tạo ra các tổ hợp kiểu poker - đôi, bộ ba, cù lũ và các tổ hợp khác.",provablyFair:"Hệ thống tạo số ngẫu nhiên có thể kiểm chứng của chúng tôi sẽ chọn kết quả từng viên kim cương. Sau mỗi vòng, bạn có thể xem các giá trị ngẫu nhiên cơ bản và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo lại ván chơi giống hệt.",strategyTip:"Diamonds là một trò chơi có độ biến động cao với tỷ lệ cược cố định, nơi bạn săn lùng những tay bài lớn theo phong cách poker. Đòn bẩy chính của bạn là mức độ mạo hiểm mà bạn muốn. Hãy sử dụng những cược nhỏ, ổn định nếu bạn muốn vượt qua những chuỗi thua, hoặc thỉnh thoảng tăng kích thước cược khi bạn đang theo đuổi những tay bài cao cấp."},dice:{how1:"Chọn tung dưới hoặc tung trên.",how2:"Đặt số mục tiêu của bạn.",how3:"Đặt số tiền cược của bạn và tiến hành đặt cược.",how4:"Chúng tôi tạo ra một kết quả ngẫu nhiên (hiển thị trên thang điểm 0–99,99 trong trò chơi).",how5:"Bạn thắng nếu kết quả nằm trong phạm vi bạn đã chọn.",how6:"Tiền thưởng của bạn là tiền cược nhân với hệ số được hiển thị, hệ số này sẽ cập nhật khi bạn di chuyển thanh trượt.",overview:"Đặt một số mục tiêu và chọn xem kết quả quay sẽ thấp hơn hay cao hơn số đó. Di chuyển thanh trượt sẽ thay đổi cơ hội thắng và hệ số nhân của bạn—cơ hội thắng cao hơn thì hệ số nhân sẽ thấp hơn, còn cơ hội thắng thấp hơn thì hệ số nhân sẽ cao hơn. Mỗi vòng là một lần quay độc lập trên thang đo của trò chơi.",provablyFair:"Hệ thống tạo số ngẫu nhiên có thể kiểm chứng của chúng tôi tạo ra mỗi lần tung Dice. Sau mỗi vòng, bạn có thể xem các đầu vào và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo cùng một kết quả.",strategyTip:"Chọn mức biến động của bạn. Cơ hội thắng thấp hơn mang lại hệ số nhân lớn hơn nhưng trúng thưởng hiếm hơn. Cơ hội thắng cao hơn mang lại hệ số nhân nhỏ hơn nhưng chiến thắng xảy ra thường xuyên hơn. Đặt cược phù hợp với số vốn của bạn để biến động ổn định hơn."},keno:{how1:"Chọn 1–10 ô trên bảng 1–40.",how2:"Đặt số tiền cược của bạn và tiến hành đặt cược.",how3:"Chúng tôi rút 10 số trúng thưởng; các số bạn trùng khớp sẽ được làm nổi bật.",how4:"Tiền thưởng phụ thuộc vào số ô bạn đã chọn và số lần trúng bạn đạt được—hãy kiểm tra bảng trả thưởng.",how5:"Bạn không bao giờ có thể trúng nhiều số hơn số bạn đã chọn, và số lựa chọn tối đa là 10.",overview:"Chọn những con số may mắn của bạn và cố gắng trùng với kết quả rút thăm. Bạn có thể chọn từ 1 đến 10 số trong khoảng từ 1 đến 40, sau đó chúng tôi sẽ rút 10 số. Càng nhiều số bạn chọn trùng với kết quả, tiền thưởng của bạn càng cao.",provablyFair:"Hệ thống tạo số ngẫu nhiên có thể xác minh của chúng tôi tạo ra mỗi lần quay Keno. Sau mỗi vòng, bạn có thể xem các đầu vào và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo cùng một kết quả.",strategyTip:"Chọn mức biến động của bạn. Chọn ít vị trí hơn nghĩa là chiến thắng sẽ hiếm hơn nhưng hệ số nhân sẽ lớn hơn nhiều. Nhiều vị trí hơn mang lại các lần trúng thưởng thường xuyên hơn nhưng lợi nhuận trung bình mỗi lần trúng sẽ nhỏ hơn. Một phạm vi trung bình sẽ cân bằng giữa tỷ lệ trúng và mức trả thưởng. Điều chỉnh kích thước cược của bạn để phù hợp với sở thích rủi ro và số dư vốn của bạn."},limbo:{how1:"Đặt hệ số mục tiêu của bạn.",how2:"Đặt số tiền cược của bạn và tiến hành đặt cược.",how3:"Chúng tôi tạo ra một hệ số kết quả ngẫu nhiên.",how4:"Bạn thắng nếu kết quả lớn hơn hoặc bằng mục tiêu của bạn.",how5:"Tiền thưởng của bạn là tiền cược x hệ số mục tiêu của bạn; nếu không, bạn sẽ mất tiền cược.",overview:"Trong Limbo, bạn đặt mức trả thưởng mong muốn, và trò chơi sẽ rút ra một hệ số kết quả ngẫu nhiên duy nhất. Nếu kết quả đạt ít nhất mục tiêu của bạn, bạn sẽ thắng. Nếu thấp hơn, bạn sẽ thua. Cơ hội thắng càng cao thì hệ số càng thấp; cơ hội thắng càng thấp thì hệ số càng cao.",provablyFair:"Hệ thống tạo số ngẫu nhiên có thể kiểm chứng của chúng tôi tạo ra mọi kết quả Limbo. Sau mỗi vòng chơi, bạn có thể xem các đầu vào và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo lại cùng một kết quả.",strategyTip:"Mục tiêu thấp thắng thường xuyên hơn nhưng trả thưởng ít hơn, trong khi mục tiêu cao hiếm khi trúng nhưng trả thưởng nhiều hơn. Hãy cân nhắc đặt một mục tiêu cố định cho mỗi phiên hoặc thỉnh thoảng thử vận may với các mục tiêu cao, và đặt cược với mức cược nhất quán để kiểm soát biến động."},limitContent:"Hệ số nhân tối đa có thể đạt được cho trò chơi này là {multiplier}X. Số tiền thưởng tối đa có thể nhận được là {payout}",limitTitle:"Giới hạn",mines:{how1:"Chọn số lượng mìn cho vòng này.",how2:"Đặt số tiền cược của bạn và tiến hành đặt cược.",how3:"Nhấp vào các ô để lật chúng: một ô an toàn sẽ tăng hệ số nhân của bạn; một ô chứa mìn sẽ kết thúc vòng chơi.",how4:"Bạn có thể rút tiền bất cứ lúc nào để khóa hệ số hiện tại của mình.",how5:"Tiền thưởng của bạn là số tiền cược nhân với hệ số hiện tại khi bạn rút tiền.",how6:"Vòng chơi kết thúc khi bạn rút tiền hoặc khi một quả mìn được lộ ra.",overview:"Mines là trò chơi về việc chọn những ô an toàn và quyết định khi nào rút tiền. Trước khi vòng chơi bắt đầu, hãy chọn số lượng mìn sẽ được giấu trên bàn chơi. Mỗi ô an toàn bạn lật ra sẽ tăng hệ số nhân của bạn. Nếu chạm phải mìn, vòng chơi kết thúc và bạn không nhận được tiền thưởng.",provablyFair:"Hệ thống tạo số ngẫu nhiên có thể kiểm chứng của chúng tôi tạo ra bố cục mìn ẩn cho mỗi bàn chơi. Sau mỗi vòng, bạn có thể xem các tham số đầu vào và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo lại kết quả giống hệt.",strategyTip:"Chọn mức biến động của bạn. Ít mìn hơn đồng nghĩa với việc lật mở an toàn hơn và hệ số nhân nhỏ hơn cho mỗi bước. Nhiều mìn hơn dẫn đến lật mở rủi ro hơn với hệ số nhân lớn hơn. Đặt mục tiêu hoặc sử dụng cắt lỗ để kiểm soát biến động. Giữ kích thước cược ổn định và rút tiền một cách kỷ luật giúp kiểm soát sự biến động."},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"Tỷ lệ hoàn trả cho người chơi (RTP) của trò chơi này là {rtpValue}%.",rtpTitle:"RTP: {rtpValue}%",strategyTitle:"Chiến lược",tutorial:"Hướng dẫn",wheel:{how1:"Chọn mức độ rủi ro và số lượng phân đoạn của bạn.",how2:"Đặt số tiền cược của bạn và tiến hành đặt cược.",how3:"Bánh xe quay và dừng lại ở một ô.",how4:"Tiền thưởng của bạn là số tiền cược × với hệ số được hiển thị trên phân đoạn mà bánh xe dừng lại.",how5:"Mỗi phân đoạn có một hệ số nhân khác nhau dựa trên mức độ rủi ro và số lượng phân đoạn bạn đã chọn.",overview:"Quay bánh xe và xem nó dừng ở đâu. Chọn mức rủi ro và số lượng phân đoạn trước mỗi lần quay - rủi ro thấp mang lại chiến thắng thường xuyên hơn với hệ số nhân nhỏ hơn; rủi ro cao mang lại chiến thắng hiếm hơn với hệ số nhân lớn hơn.",provablyFair:"Hệ thống tạo số ngẫu nhiên có thể xác minh của chúng tôi tạo ra mọi kết quả của Wheel. Sau mỗi vòng chơi, bạn có thể xem các đầu vào và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo lại cùng một kết quả.",strategyTip:"Rủi ro thấp mang lại chiến thắng ổn định, nhỏ hơn. Rủi ro trung bình cân bằng giữa tần suất và tiền thưởng. Rủi ro cao nhắm đến các hệ số hiếm nhưng lớn. Thêm nhiều phân đoạn sẽ tăng tiềm năng tối đa nhưng giảm tần suất chiến thắng."},roulette:{how1:"Nhấp vào lưới để đặt chip lên các cược đã chọn.",how2:"Điều chỉnh số tiền cược mỗi lần nhấp bằng nút 1/2 và 2X.",how3:"Đặt cược để quay bánh xe.",how4:"Bóng rơi vào số ngẫu nhiên từ 0–36 (hoặc 00 cho kiểu Mỹ).",how5:"Cược thắng được trả theo tỷ lệ cược; tất cả chip khác bị mất.",overview:"Đặt chip lên lưới cược và quay bánh xe. Cược vào số đơn, nhóm số, màu sắc hoặc chẵn/lẻ. Bóng rơi vào ô ngẫu nhiên, và các cược trúng được trả theo tỷ lệ cược.",provablyFair:"Hệ thống ngẫu nhiên có thể xác minh của chúng tôi tạo ra mọi vòng quay Roulette. Sau mỗi vòng, bạn có thể xem đầu vào và bằng chứng, xác minh kết quả bằng khóa công khai của chúng tôi và tái tạo cùng kết quả.",strategyTip:"Cược ngoài (đỏ/đen, chẵn/lẻ) có gần 50% cơ hội thắng với tỷ lệ trả 2X. Cược trong vào số đơn trả đến 36X nhưng hiếm khi trúng. Phân bổ chip để cân bằng rủi ro và phần thưởng."}},games:{advancedDice:{between:"Giữa",boundsLower:"Giới hạn dưới",boundsUpper:"Giới hạn trên",inside:"Bên trong",outside:"Bên ngoài",rollMode:"Chế độ quay",secondBoundsLower:"Giới hạn dưới thứ hai",secondBoundsUpper:"Giới hạn trên thứ hai"},dice:{rollOver:"Quay Lớn Hơn",rollUnder:"Quay Dưới"},keno:{autoPick:"Tự động chọn",clearTable:"Xóa",kenoGameGrid:"Lưới Trò Chơi Keno",kenoNumber:"Số Keno {value}",selectAtLeastOneTile:"Chọn ít nhất một ô",selectTileToAutobet:"Chọn ít nhất một ô"},limbo:{multiplierError:"Phải nằm trong khoảng từ {min} đến {max}",targetMultiplier:"Hệ số nhân",winChanceError:"Phải nằm trong khoảng từ {min} đến {max}"},mines:{cashout:"Rút Tiền",gem:"Đá quý",gems:"Ngọc",mine:"Mỏ",mines:"Mìn",nextGem:"Viên ngọc tiếp theo",selectRandomTile:"Chọn Ô Ngẫu Nhiên",selectTileToAutobet:"Chọn ít nhất một ô",tile:"Ô tile",unrevealed:"Chưa tiết lộ"},wheel:{segments:"Phân đoạn"},roulette:{chipValue:"Giá Trị Chip",totalBetAmount:"Tổng Tiền Cược"}},hotkeys:{clearBets:"Xóa Cược",doubleBet:"Gấp đôi số tiền cược",doubleChipValue:"Gấp Đôi Giá Trị Chip",doubleTotalBet:"Gấp Đôi Tổng Cược",halveBet:"Giảm một nửa số tiền cược",halveChipValue:"Giảm Nửa Giá Trị Chip",halveTotalBet:"Giảm Nửa Tổng Cược",higherTarget:"Mục tiêu cao hơn",info:"Khi phím tắt được bật, chúng sẽ duy trì hoạt động cho trò chơi này cho đến khi bị tắt. Mặc dù một số trò chơi có thể dùng chung phím tắt tương tự, nhưng luôn được khuyến khích xác nhận lại phím tắt cho từng trò chơi.",lowerTarget:"Mục tiêu thấp hơn",makeBet:"Đặt cược",resetChipValue:"Đặt Lại Giá Trị Chip",toggleWinCondition:"Chuyển đổi điều kiện thắng",undo:"Hoàn Tác",zeroBet:"Số tiền cược bằng không"},modals:{betResult:"Kết quả cược",fairnessAndHistory:"Công bằng và Lịch sử",gameArea:"Khu vực trò chơi",gameControls:"Điều khiển trò chơi",gameInfo:"Thông Tin Trò Chơi"}}});var U4=D1((ut,Xi)=>{Xi.exports={accessibility:{sliderValue:"{value} / {max}"},alerts:{autobetStarted:"已启动自动投注模式",autobetStopped:"已停止自动投注模式",betAmountAboveMaxBet:"最高投注额为{value}",betAmountBelowMinBet:"最低下注为{value}",betLimitReached:"已达到投注限额",errorProcessingBet:"处理您的投注时出现错误。请重试。",failedToLoadBetData:"加载投注数据失败",gameError:"处理您的投注时出现错误。请重试。",insufficientBalance:"余额不足",maxPayoutExceeded:"超过最大赔付",notEnoughBalance:"余额不足"},autobet:{configureAutobet:"配置 Autobet",games:"游戏",games10:"10款游戏",games100:"100款游戏",games25:"25款游戏",games5:"5款游戏",games50:"50款游戏",increase:"增加",infinite:"无限",onLoss:"亏损时",onWin:"获胜时",reset:"重置",startAutobet:"开始自动投注",stopAutobet:"停止自动投注",stopOnLoss:"止损",stopOnProfit:"止盈"},clipboard:{linkCopied:"链接已复制到剪贴板!"},common:{auto:"自动",back:"返回",balance:"余额",bet:"投注金额",betAmount:"投注金额",cancel:"取消",cashOut:"提现",classic:"经典",confirm:"确认",copied:"已复制",currency:"货币",deposit:"存款",disableHotkeys:"禁用快捷键",disableMaxBet:"禁用最高投注",enableHotkeys:"启用快捷键",enableMaxBet:"启用最大投注",footerNavigation:"页脚导航",gameInfo:"游戏信息",gameName:"游戏名称",high:"高",history:"历史",hotkeys:"快捷键",id:"ID",instantBet:"即时投注",loading:"加载中…",loadMore:"加载更多",lobby:"返回大厅",low:"低",manual:"手册",max:"最大",medium:"中等",multiplier:"倍数",payout:"派彩",placeBet:"下注",profit:"利润",profitOnWin:"获胜利润",provablyFair:"可验证公平",risk:"风险",roundId:"回合ID",saveChanges:"保存更改",shareReplay:"分享回放",siteInformation:"游戏信息",space:"SPACE",support:"支持",targetMultiplier:"倍数",thisFieldIsRequired:"此字段为必填项",timestamp:"时间",toggleHotkeys:"切换快捷键",viewFairnessInformation:"查看公平性信息",viewHistory:"查看历史",volume:"音量",winChance:"获胜概率"},errors:{dice:{multiplierRange:"必须在{min}和{max}之间",winChanceRange:"必须在{min}和{max}之间"},noWheelData:"没有可用的轮盘数据",requestDropped:"请求已取消"},fairness:{activeClientSeed:"活跃客户端种子",enterClientSeed:"输入客户端种子",enterProof:"输入证明",enterPublicKey:"输入公钥",enterRandomness:"输入随机性",enterRequest:"输入请求",info:{p1:"每一局的结果都来源于可验证的随机性,而不是隐藏的服务器逻辑。我们通过使用您本局独有的数值——gameId、tenantId、tenantUserId、递增的nonce(每完成一局增加一次),以及您的clientSeed,来构建一个确定性的种子。这确保了每一局都是唯一且可复现的:相同的输入 → 相同的随机流 → 相同的结果。",p2:"该种子根据IETF规范 draft-irtf-cfrg-vrf-15 通过椭圆曲线可验证随机函数(ECVRF)运行。我们的服务器使用其私钥生成一个随机值和一个加密证明(proofString)。任何拥有我们公钥的人都可以独立验证该证明对于给定输入的有效性——从而确认随机性确实来源于该种子且未被篡改。SDK为TypeScript,而核心加密部分通过NAPI-RS使用fastcrypto Rust库,以提升性能和安全性。",p3:"一旦验证通过,VRF 输出将为确定性随机字节生成器(hashSequence)提供种子。游戏使用确定性且无偏的逻辑将这些字节转换为结果。由于该过程是确定性的,并且每完成一轮 nonce 都会递增,因此你既可以获得可重现的审计(精确重现同一轮),又可以每次获得全新且不重复的随机性。",p4:"在一局结束后,你拥有输入值(包括你的clientSeed和本局的nonce)、VRF输出、proofString以及我们的公钥。使用任何ECVRF验证器或我们的库来:(1)根据输入值和公钥验证proof;(2)重新生成相同的hashSequence和结果。我们的私钥始终保存在安全服务器上,公钥可以安全地在客户端用于独立校验。",step1Desc:"我们将 gameId、tenantId、tenantUserId、每轮的 nonce 和你的 clientSeed 组合在一起。相同的输入总是会产生相同的随机流和结果。",step1Title:"确定性种子",step2Title:"生成随机数",step3Desc:"任何人都可以使用我们的公钥验证给定输入的proofString。这可以确认随机性与种子相符且未被篡改。",step3Title:"验证证明",step4Title:"推导结果",step5Title:"复制"},invalidGame:"提供了无效的游戏类型。",learnMore:"了解更多",newClientSeed:"新客户端种子",noBettingHistory:"无投注记录",outcomeCalculationInfo:"该游戏采用可验证公平算法,确保结果公平透明。",outcomeNotVerified:"无法验证此游戏的结果。请再次确认您输入的信息是否正确,然后重试。",outcomeVerified:"本轮结果已通过我们的公钥验证,结果公正可证。",proof:"证明",publicKey:"活跃公钥",randomness:"随机性",request:"请求",saveClientSeed:"保存客户端种子",verifyOutcome:"验证结果"},gameInfo:{advancedDice:{how1:"选择你的投掷模式:内部、外部或介于两者之间。",how2:"拖动滑块来定义你的获胜区域。",how3:"设置你的投注金额并下注。",how4:"生成一个0到100之间的随机数。",how5:"如果结果落在你选择的区域内则获胜。",overview:"高级骰子让你设置自定义获胜区域。选择内部在结果落入你的范围内时获胜,外部在结果超出你的范围时获胜,或选择介于两者之间分成两个获胜区域。",provablyFair:"我们可验证的随机性系统生成每个高级骰子结果。每轮结束后,你可以查看输入和证明,用我们的公钥验证结果,并重现相同的结果。",strategyTip:"较宽的区域提供更频繁的获胜但乘数较小。较窄的区域风险更高但支付更多。介于两者之间模式让你可以针对两个范围制定灵活的策略。"},diamonds:{how1:"设置您的投注金额并下注。",how2:"从固定的宝石类型中揭示出五颗Diamonds。",how3:"您的结果将按照扑克手牌进行评估:对子、两对、三条、葫芦、四条和五条。",how4:"每种牌型都有其对应的倍数;高价值牌型奖励更高的倍数,而没有成型牌则支付0X。",how5:"您的奖金是您的投注额乘以所示倍数所得出的结果。",overview:"Diamonds 是一款五转轴连线游戏。每一轮会从不同类型的宝石中揭示五颗钻石。你的目标是获得类似扑克的组合——对子、三条、葫芦等。",provablyFair:"我们的可验证随机系统选择每个钻石的结果。每一轮结束后,您可以查看底层的随机值和证明,使用我们的公钥验证结果,并复现相同的牌局。",strategyTip:"Diamonds是一款高波动性、固定赔率的游戏,你将在其中追逐高额的扑克式牌型。你的主要操控方式是决定你的激进程度。如果你想挺过低迷期,可以使用较小且稳定的投注;如果你在追逐高价值牌型时,可以偶尔提高你的投注额度。"},dice:{how1:"选择掷骰低于还是高于。",how2:"设置你的目标数字。",how3:"设置您的投注金额并下注。",how4:"我们生成一个随机结果(在游戏中以0–99.99的刻度显示)。",how5:"如果结果在您选择的范围内,您就获胜。",how6:"您的奖金是投注额乘以显示的倍数,倍数会随着您移动滑块而更新。",overview:"设置一个目标数字,并选择掷骰结果是低于还是高于该数字。移动滑块会改变你的获胜几率和倍数——几率越高,倍数越低,几率越低,倍数越高。每一轮都是游戏刻度上的一次独立掷骰。",provablyFair:"我们的可验证随机系统生成每一次Dice掷骰结果。每轮结束后,您都可以查看输入和证明,使用我们的公钥验证结果,并复现相同的结果。",strategyTip:"选择你的波动性。较低的中奖概率带来更高的倍数,但中奖次数较少。较高的中奖概率带来较低的倍数,但中奖更为频繁。根据你的资金规模调整下注金额,以获得更平稳的波动。"},keno:{how1:"在1–40的棋盘上选择1–10个格子。",how2:"设置您的投注金额并下注。",how3:"我们抽取了10个中奖号码;您的匹配号码已被高亮显示。",how4:"奖金取决于你选择了多少格子以及命中了多少次——请查看赔率表。",how5:"你选择的数字数量不会超过你所选的数量,最多可以选择10个。",overview:"选取你的幸运数字并尝试匹配开奖结果。你可以从1到40中选择1到10个数字,然后我们会抽取10个数字。你选中的数字越多,奖金就越高。",provablyFair:"我们的可验证随机系统生成每一次Keno开奖。每一轮结束后,您都可以查看输入和证明,使用我们的公钥验证结果,并复现相同的结果。",strategyTip:"选择你的波动性。选择较少的点位意味着中奖更少但倍数更高。选择更多的点位则中奖更频繁但每次的平均回报较低。中间范围则在中奖率和奖金之间取得平衡。根据你的风险偏好和资金状况调整你的投注额度。"},limbo:{how1:"设置您的目标倍数。",how2:"设置您的投注金额并下注。",how3:"我们生成一个随机结果乘数。",how4:"如果结果大于或等于你的目标,你就获胜。",how5:"您的奖金为下注金额乘以您的目标倍数;否则,您将失去您的下注。",overview:"在Limbo中,你设置你想要的赔付,游戏会随机抽取一个结果倍率。如果结果至少达到你的目标,你就赢了。如果低于目标,你就输了。更高的获胜概率会降低倍率,更低的获胜概率会提高倍率。",provablyFair:"我们的可验证随机性系统生成每一个Limbo结果。每一轮结束后,您都可以查看输入和证明,使用我们的公钥验证结果,并复现相同的结果。",strategyTip:"较低的目标更容易获胜但支付较少,而较高的目标很少命中但支付更多。可以考虑每个会话设定一个固定目标,或者偶尔尝试高赔率目标,并且保持投注金额一致以管理波动。"},limitContent:"此游戏可获得的最大倍数为{multiplier}X。可获得的最高奖金为{payout}",limitTitle:"限制",mines:{how1:"选择本轮的地雷数量。",how2:"设置您的投注金额并下注。",how3:"点击方块揭示它们:安全方块会增加你的倍率;地雷会结束本轮。",how4:"您可以随时提现以锁定您当前的倍数。",how5:"当你提现时,你的奖金是投注额乘以当前的倍率。",how6:"当你提现或揭示地雷时,本轮结束。",overview:"Mines是一款关于选择安全方块并决定何时提现的游戏。在回合开始前,选择要在棋盘上隐藏多少个地雷。每揭开一个安全方块,你的倍率就会增加。踩到地雷,回合立即结束且没有奖金。",provablyFair:"我们的可验证随机系统会生成每个棋盘的隐藏地雷布局。每一轮结束后,你都可以查看输入和证明,使用我们的公钥验证结果,并复现相同的结果。",strategyTip:"选择你的波动性。更少的Mines意味着更安全的揭示和每步更小的倍数。更多的Mines则带来更高风险的揭示和更大的倍数。设定目标或使用止损来管理波动。保持一致的投注额度和有纪律的提现有助于控制方差。"},plinko:{how1:"Select your risk level and number of rows.",how2:"Set your bet amount and place your bet.",how3:"The ball drops and bounces through the pegs.",how4:"Your payout is bet × the multiplier of the bin where the ball lands.",how5:"Center bins pay less; edge bins pay more based on your chosen risk level and row count.",overview:"Drop a ball and watch it bounce down through a field of pegs. Choose your risk level and number of rows before each drop—higher risk and more rows unlock bigger edge multipliers but make them harder to hit.",provablyFair:"Our verifiable randomness system generates every Plinko drop. After each round, you can view the inputs and proof, verify the result with our public key, and reproduce the same outcome.",strategyTip:"Low risk offers steady, smaller wins. Medium risk balances frequency and payout. High risk targets rare but massive edge multipliers. More rows spread the multipliers across more bins, increasing maximum potential but reducing the chance of hitting the edges."},rtpContent:"本游戏的返还率(RTP)为{rtpValue}%。",rtpTitle:"RTP:{rtpValue}%",strategyTitle:"策略",tutorial:"教程",wheel:{how1:"选择你的风险等级和分段数量。",how2:"设置您的投注金额并下注。",how3:"轮盘旋转并停在一个区域。",how4:"您的奖金是投注额乘以指针停留在转盘上的倍数。",how5:"每个区段都有不同的倍数,具体取决于你选择的风险等级和区段数量。",overview:"转动转盘,观察它停在哪里。在每次旋转前选择你的风险等级和分段数——较低的风险会带来更频繁但倍数较小的获胜;较高的风险则带来较少但倍数更大的获胜。",provablyFair:"我们的可验证随机系统生成每一次Wheel的结果。每轮结束后,您都可以查看输入和证明,使用我们的公钥验证结果,并复现相同的结果。",strategyTip:"低风险提供稳定且较小的胜利。中等风险在中奖频率和支付额之间取得平衡。高风险则瞄准罕见但巨大的倍数。更多分段提高最高潜力,但会降低中奖频率。"},roulette:{how1:"点击网格将筹码放置在您选择的投注上。",how2:"使用1/2和2X按钮调整每次点击的投注金额。",how3:"下注以旋转轮盘。",how4:"球落在0-36之间的随机数字上(美式还包括00)。",how5:"中奖的投注按赔率支付;其他所有筹码都会输掉。",overview:"在投注网格上放置筹码并旋转轮盘。投注单个数字、数字组、颜色或奇数/偶数。球落入随机格子,匹配的投注按赔率支付。",provablyFair:"我们的可验证随机系统生成每次轮盘旋转。每轮结束后,您可以查看输入和证明,用我们的公钥验证结果,并重现相同的结果。",strategyTip:"外围投注(红/黑、奇/偶)提供接近50%的中奖率,赔率为2倍。单个数字的内部投注最高可赔36倍,但很少中奖。分散您的筹码以平衡风险和回报。"}},games:{advancedDice:{between:"之间",boundsLower:"下限",boundsUpper:"上限",inside:"内部",outside:"外部",rollMode:"掷骰模式",secondBoundsLower:"第二下限",secondBoundsUpper:"第二上限"},dice:{rollOver:"大于",rollUnder:"掷出点数低于"},keno:{autoPick:"自动选择",clearTable:"清除",kenoGameGrid:"Keno游戏网格",kenoNumber:"Keno号码 {value}",selectAtLeastOneTile:"请选择至少一个方块",selectTileToAutobet:"请选择至少一个方块"},limbo:{multiplierError:"必须在{min}和{max}之间",targetMultiplier:"倍数",winChanceError:"必须在{min}和{max}之间"},mines:{cashout:"提现",gem:"宝石",gems:"宝石",mine:"挖矿",mines:"扫雷",nextGem:"下一个宝石",selectRandomTile:"选择随机方块",selectTileToAutobet:"请选择至少一个方块",tile:"瓷砖",unrevealed:"未揭示"},wheel:{segments:"分段"},roulette:{chipValue:"筹码价值",totalBetAmount:"总投注额"}},hotkeys:{clearBets:"清除投注",doubleBet:"加倍投注金额",doubleChipValue:"双倍筹码价值",doubleTotalBet:"双倍总投注",halveBet:"减半投注金额",halveChipValue:"减半筹码价值",halveTotalBet:"减半总投注",higherTarget:"更高目标",info:"当启用快捷键时,它们将在此游戏中保持开启,直到被禁用。尽管某些游戏可能有相似的按键绑定,仍然建议为每个游戏确认快捷键。",lowerTarget:"下限目标",makeBet:"下注",resetChipValue:"重置筹码价值",toggleWinCondition:"切换获胜条件",undo:"撤销",zeroBet:"零投注金额"},modals:{betResult:"投注结果",fairnessAndHistory:"公平性与历史",gameArea:"游戏区",gameControls:"游戏控制",gameInfo:"游戏信息"}}});var Q7=D1((v0,N0)=>{typeof document!=="undefined"&&typeof navigator!=="undefined"&&function(a,i){typeof v0==="object"&&typeof N0!=="undefined"?N0.exports=i():typeof define==="function"&&define.amd?define(i):(a=typeof globalThis!=="undefined"?globalThis:a||self,a.lottie=i())}(v0,function(){var svgNS="http://www.w3.org/2000/svg",locationHref="",_useWebWorker=!1,initialDefaultFrame=-999999,setWebWorker=function a(i){_useWebWorker=!!i},getWebWorker=function a(){return _useWebWorker},setLocationHref=function a(i){locationHref=i},getLocationHref=function a(){return locationHref};function createTag(a){return document.createElement(a)}function extendPrototype(a,i){var e,r=a.length,l;for(e=0;e<r;e+=1){l=a[e].prototype;for(var n in l)if(Object.prototype.hasOwnProperty.call(l,n))i.prototype[n]=l[n]}}function getDescriptor(a,i){return Object.getOwnPropertyDescriptor(a,i)}function createProxyFunction(a){function i(){}return i.prototype=a,i}var audioControllerFactory=function(){function a(i){this.audios=[],this.audioFactory=i,this._volume=1,this._isMuted=!1}return a.prototype={addAudio:function i(e){this.audios.push(e)},pause:function i(){var e,r=this.audios.length;for(e=0;e<r;e+=1)this.audios[e].pause()},resume:function i(){var e,r=this.audios.length;for(e=0;e<r;e+=1)this.audios[e].resume()},setRate:function i(e){var r,l=this.audios.length;for(r=0;r<l;r+=1)this.audios[r].setRate(e)},createAudio:function i(e){if(this.audioFactory)return this.audioFactory(e);if(window.Howl)return new window.Howl({src:[e]});return{isPlaying:!1,play:function r(){this.isPlaying=!0},seek:function r(){this.isPlaying=!1},playing:function r(){},rate:function r(){},setVolume:function r(){}}},setAudioFactory:function i(e){this.audioFactory=e},setVolume:function i(e){this._volume=e,this._updateVolume()},mute:function i(){this._isMuted=!0,this._updateVolume()},unmute:function i(){this._isMuted=!1,this._updateVolume()},getVolume:function i(){return this._volume},_updateVolume:function i(){var e,r=this.audios.length;for(e=0;e<r;e+=1)this.audios[e].volume(this._volume*(this._isMuted?0:1))}},function(){return new a}}(),createTypedArray=function(){function a(e,r){var l=0,n=[],t;switch(e){case"int16":case"uint8c":t=1;break;default:t=1.1;break}for(l=0;l<r;l+=1)n.push(t);return n}function i(e,r){if(e==="float32")return new Float32Array(r);if(e==="int16")return new Int16Array(r);if(e==="uint8c")return new Uint8ClampedArray(r);return a(e,r)}if(typeof Uint8ClampedArray==="function"&&typeof Float32Array==="function")return i;return a}();function createSizedArray(a){return Array.apply(null,{length:a})}function _typeof$6(a){return _typeof$6=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},_typeof$6(a)}var subframeEnabled=!0,expressionsPlugin=null,expressionsInterfaces=null,idPrefix$1="",isSafari=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),_shouldRoundValues=!1,bmPow=Math.pow,bmSqrt=Math.sqrt,bmFloor=Math.floor,bmMax=Math.max,bmMin=Math.min,BMMath={};(function(){var a=["abs","acos","acosh","asin","asinh","atan","atanh","atan2","ceil","cbrt","expm1","clz32","cos","cosh","exp","floor","fround","hypot","imul","log","log1p","log2","log10","max","min","pow","random","round","sign","sin","sinh","sqrt","tan","tanh","trunc","E","LN10","LN2","LOG10E","LOG2E","PI","SQRT1_2","SQRT2"],i,e=a.length;for(i=0;i<e;i+=1)BMMath[a[i]]=Math[a[i]]})();function ProjectInterface$1(){return{}}BMMath.random=Math.random,BMMath.abs=function(a){var i=_typeof$6(a);if(i==="object"&&a.length){var e=createSizedArray(a.length),r,l=a.length;for(r=0;r<l;r+=1)e[r]=Math.abs(a[r]);return e}return Math.abs(a)};var defaultCurveSegments=150,degToRads=Math.PI/180,roundCorner=0.5519;function roundValues(a){_shouldRoundValues=!!a}function bmRnd(a){if(_shouldRoundValues)return Math.round(a);return a}function styleDiv(a){a.style.position="absolute",a.style.top=0,a.style.left=0,a.style.display="block",a.style.transformOrigin="0 0",a.style.webkitTransformOrigin="0 0",a.style.backfaceVisibility="visible",a.style.webkitBackfaceVisibility="visible",a.style.transformStyle="preserve-3d",a.style.webkitTransformStyle="preserve-3d",a.style.mozTransformStyle="preserve-3d"}function BMEnterFrameEvent(a,i,e,r){this.type=a,this.currentTime=i,this.totalTime=e,this.direction=r<0?-1:1}function BMCompleteEvent(a,i){this.type=a,this.direction=i<0?-1:1}function BMCompleteLoopEvent(a,i,e,r){this.type=a,this.currentLoop=e,this.totalLoops=i,this.direction=r<0?-1:1}function BMSegmentStartEvent(a,i,e){this.type=a,this.firstFrame=i,this.totalFrames=e}function BMDestroyEvent(a,i){this.type=a,this.target=i}function BMRenderFrameErrorEvent(a,i){this.type="renderFrameError",this.nativeError=a,this.currentTime=i}function BMConfigErrorEvent(a){this.type="configError",this.nativeError=a}function BMAnimationConfigErrorEvent(a,i){this.type=a,this.nativeError=i}var createElementID=function(){var a=0;return function i(){return a+=1,idPrefix$1+"__lottie_element_"+a}}();function HSVtoRGB(a,i,e){var r,l,n,t,h,o,c,u;switch(t=Math.floor(a*6),h=a*6-t,o=e*(1-i),c=e*(1-h*i),u=e*(1-(1-h)*i),t%6){case 0:r=e,l=u,n=o;break;case 1:r=c,l=e,n=o;break;case 2:r=o,l=e,n=u;break;case 3:r=o,l=c,n=e;break;case 4:r=u,l=o,n=e;break;case 5:r=e,l=o,n=c;break;default:break}return[r,l,n]}function RGBtoHSV(a,i,e){var r=Math.max(a,i,e),l=Math.min(a,i,e),n=r-l,t,h=r===0?0:n/r,o=r/255;switch(r){case l:t=0;break;case a:t=i-e+n*(i<e?6:0),t/=6*n;break;case i:t=e-a+n*2,t/=6*n;break;case e:t=a-i+n*4,t/=6*n;break;default:break}return[t,h,o]}function addSaturationToRGB(a,i){var e=RGBtoHSV(a[0]*255,a[1]*255,a[2]*255);if(e[1]+=i,e[1]>1)e[1]=1;else if(e[1]<=0)e[1]=0;return HSVtoRGB(e[0],e[1],e[2])}function addBrightnessToRGB(a,i){var e=RGBtoHSV(a[0]*255,a[1]*255,a[2]*255);if(e[2]+=i,e[2]>1)e[2]=1;else if(e[2]<0)e[2]=0;return HSVtoRGB(e[0],e[1],e[2])}function addHueToRGB(a,i){var e=RGBtoHSV(a[0]*255,a[1]*255,a[2]*255);if(e[0]+=i/360,e[0]>1)e[0]-=1;else if(e[0]<0)e[0]+=1;return HSVtoRGB(e[0],e[1],e[2])}var rgbToHex=function(){var a=[],i,e;for(i=0;i<256;i+=1)e=i.toString(16),a[i]=e.length===1?"0"+e:e;return function(r,l,n){if(r<0)r=0;if(l<0)l=0;if(n<0)n=0;return"#"+a[r]+a[l]+a[n]}}(),setSubframeEnabled=function a(i){subframeEnabled=!!i},getSubframeEnabled=function a(){return subframeEnabled},setExpressionsPlugin=function a(i){expressionsPlugin=i},getExpressionsPlugin=function a(){return expressionsPlugin},setExpressionInterfaces=function a(i){expressionsInterfaces=i},getExpressionInterfaces=function a(){return expressionsInterfaces},setDefaultCurveSegments=function a(i){defaultCurveSegments=i},getDefaultCurveSegments=function a(){return defaultCurveSegments},setIdPrefix=function a(i){idPrefix$1=i},getIdPrefix=function a(){return idPrefix$1};function createNS(a){return document.createElementNS(svgNS,a)}function _typeof$5(a){return _typeof$5=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},_typeof$5(a)}var dataManager=function(){var a=1,i=[],e,r,l={onmessage:function s(){},postMessage:function s(f){e({data:f})}},n={postMessage:function s(f){l.onmessage({data:f})}};function t(s){if(window.Worker&&window.Blob&&getWebWorker()){var f=new Blob(["var _workerSelf = self; self.onmessage = ",s.toString()],{type:"text/javascript"}),k=URL.createObjectURL(f);return new Worker(k)}return e=s,l}function h(){if(!r)r=t(function s(f){function k(){function y(Q,M){var L,F,H=Q.length,$,T,B,a1;for(F=0;F<H;F+=1)if(L=Q[F],"ks"in L&&!L.completed){if(L.completed=!0,L.hasMask){var r1=L.masksProperties;T=r1.length;for($=0;$<T;$+=1)if(r1[$].pt.k.i)x(r1[$].pt.k);else{a1=r1[$].pt.k.length;for(B=0;B<a1;B+=1){if(r1[$].pt.k[B].s)x(r1[$].pt.k[B].s[0]);if(r1[$].pt.k[B].e)x(r1[$].pt.k[B].e[0])}}}if(L.ty===0)L.layers=v(L.refId,M),y(L.layers,M);else if(L.ty===4)p(L.shapes);else if(L.ty===5)N(L)}}function b(Q,M){if(Q){var L=0,F=Q.length;for(L=0;L<F;L+=1)if(Q[L].t===1)Q[L].data.layers=v(Q[L].data.refId,M),y(Q[L].data.layers,M)}}function g(Q,M){var L=0,F=M.length;while(L<F){if(M[L].id===Q)return M[L];L+=1}return null}function v(Q,M){var L=g(Q,M);if(L){if(!L.layers.__used)return L.layers.__used=!0,L.layers;return JSON.parse(JSON.stringify(L.layers))}return null}function p(Q){var M,L=Q.length,F,H;for(M=L-1;M>=0;M-=1)if(Q[M].ty==="sh")if(Q[M].ks.k.i)x(Q[M].ks.k);else{H=Q[M].ks.k.length;for(F=0;F<H;F+=1){if(Q[M].ks.k[F].s)x(Q[M].ks.k[F].s[0]);if(Q[M].ks.k[F].e)x(Q[M].ks.k[F].e[0])}}else if(Q[M].ty==="gr")p(Q[M].it)}function x(Q){var M,L=Q.i.length;for(M=0;M<L;M+=1)Q.i[M][0]+=Q.v[M][0],Q.i[M][1]+=Q.v[M][1],Q.o[M][0]+=Q.v[M][0],Q.o[M][1]+=Q.v[M][1]}function Z(Q,M){var L=M?M.split("."):[100,100,100];if(Q[0]>L[0])return!0;if(L[0]>Q[0])return!1;if(Q[1]>L[1])return!0;if(L[1]>Q[1])return!1;if(Q[2]>L[2])return!0;if(L[2]>Q[2])return!1;return null}var O=function(){var Q=[4,4,14];function M(F){var H=F.t.d;F.t.d={k:[{s:H,t:0}]}}function L(F){var H,$=F.length;for(H=0;H<$;H+=1)if(F[H].ty===5)M(F[H])}return function(F){if(Z(Q,F.v)){if(L(F.layers),F.assets){var H,$=F.assets.length;for(H=0;H<$;H+=1)if(F.assets[H].layers)L(F.assets[H].layers)}}}}(),R=function(){var Q=[4,7,99];return function(M){if(M.chars&&!Z(Q,M.v)){var L,F=M.chars.length;for(L=0;L<F;L+=1){var H=M.chars[L];if(H.data&&H.data.shapes){if(p(H.data.shapes),H.data.ip=0,H.data.op=99999,H.data.st=0,H.data.sr=1,H.data.ks={p:{k:[0,0],a:0},s:{k:[100,100],a:0},a:{k:[0,0],a:0},r:{k:0,a:0},o:{k:100,a:0}},!M.chars[L].t)H.data.shapes.push({ty:"no"}),H.data.shapes[0].it.push({p:{k:[0,0],a:0},s:{k:[100,100],a:0},a:{k:[0,0],a:0},r:{k:0,a:0},o:{k:100,a:0},sk:{k:0,a:0},sa:{k:0,a:0},ty:"tr"})}}}}}(),j=function(){var Q=[5,7,15];function M(F){var H=F.t.p;if(typeof H.a==="number")H.a={a:0,k:H.a};if(typeof H.p==="number")H.p={a:0,k:H.p};if(typeof H.r==="number")H.r={a:0,k:H.r}}function L(F){var H,$=F.length;for(H=0;H<$;H+=1)if(F[H].ty===5)M(F[H])}return function(F){if(Z(Q,F.v)){if(L(F.layers),F.assets){var H,$=F.assets.length;for(H=0;H<$;H+=1)if(F.assets[H].layers)L(F.assets[H].layers)}}}}(),q=function(){var Q=[4,1,9];function M(F){var H,$=F.length,T,B;for(H=0;H<$;H+=1)if(F[H].ty==="gr")M(F[H].it);else if(F[H].ty==="fl"||F[H].ty==="st")if(F[H].c.k&&F[H].c.k[0].i){B=F[H].c.k.length;for(T=0;T<B;T+=1){if(F[H].c.k[T].s)F[H].c.k[T].s[0]/=255,F[H].c.k[T].s[1]/=255,F[H].c.k[T].s[2]/=255,F[H].c.k[T].s[3]/=255;if(F[H].c.k[T].e)F[H].c.k[T].e[0]/=255,F[H].c.k[T].e[1]/=255,F[H].c.k[T].e[2]/=255,F[H].c.k[T].e[3]/=255}}else F[H].c.k[0]/=255,F[H].c.k[1]/=255,F[H].c.k[2]/=255,F[H].c.k[3]/=255}function L(F){var H,$=F.length;for(H=0;H<$;H+=1)if(F[H].ty===4)M(F[H].shapes)}return function(F){if(Z(Q,F.v)){if(L(F.layers),F.assets){var H,$=F.assets.length;for(H=0;H<$;H+=1)if(F.assets[H].layers)L(F.assets[H].layers)}}}}(),J=function(){var Q=[4,4,18];function M(F){var H,$=F.length,T,B;for(H=$-1;H>=0;H-=1)if(F[H].ty==="sh")if(F[H].ks.k.i)F[H].ks.k.c=F[H].closed;else{B=F[H].ks.k.length;for(T=0;T<B;T+=1){if(F[H].ks.k[T].s)F[H].ks.k[T].s[0].c=F[H].closed;if(F[H].ks.k[T].e)F[H].ks.k[T].e[0].c=F[H].closed}}else if(F[H].ty==="gr")M(F[H].it)}function L(F){var H,$,T=F.length,B,a1,r1,u1;for($=0;$<T;$+=1){if(H=F[$],H.hasMask){var m1=H.masksProperties;a1=m1.length;for(B=0;B<a1;B+=1)if(m1[B].pt.k.i)m1[B].pt.k.c=m1[B].cl;else{u1=m1[B].pt.k.length;for(r1=0;r1<u1;r1+=1){if(m1[B].pt.k[r1].s)m1[B].pt.k[r1].s[0].c=m1[B].cl;if(m1[B].pt.k[r1].e)m1[B].pt.k[r1].e[0].c=m1[B].cl}}}if(H.ty===4)M(H.shapes)}}return function(F){if(Z(Q,F.v)){if(L(F.layers),F.assets){var H,$=F.assets.length;for(H=0;H<$;H+=1)if(F.assets[H].layers)L(F.assets[H].layers)}}}}();function C(Q){if(Q.__complete)return;q(Q),O(Q),R(Q),j(Q),J(Q),y(Q.layers,Q.assets),b(Q.chars,Q.assets),Q.__complete=!0}function N(Q){if(Q.t.a.length===0&&!("m"in Q.t.p));}var G={};return G.completeData=C,G.checkColors=q,G.checkChars=R,G.checkPathProperties=j,G.checkShapes=J,G.completeLayers=y,G}if(!n.dataManager)n.dataManager=k();if(!n.assetLoader)n.assetLoader=function(){function y(g){var v=g.getResponseHeader("content-type");if(v&&g.responseType==="json"&&v.indexOf("json")!==-1)return g.response;if(g.response&&_typeof$5(g.response)==="object")return g.response;if(g.response&&typeof g.response==="string")return JSON.parse(g.response);if(g.responseText)return JSON.parse(g.responseText);return null}function b(g,v,p,x){var Z,O=new XMLHttpRequest;try{O.responseType="json"}catch(R){}O.onreadystatechange=function(){if(O.readyState===4)if(O.status===200)Z=y(O),p(Z);else try{Z=y(O),p(Z)}catch(R){if(x)x(R)}};try{O.open(["G","E","T"].join(""),g,!0)}catch(R){O.open(["G","E","T"].join(""),v+"/"+g,!0)}O.send()}return{load:b}}();if(f.data.type==="loadAnimation")n.assetLoader.load(f.data.path,f.data.fullPath,function(y){n.dataManager.completeData(y),n.postMessage({id:f.data.id,payload:y,status:"success"})},function(){n.postMessage({id:f.data.id,status:"error"})});else if(f.data.type==="complete"){var w=f.data.animation;n.dataManager.completeData(w),n.postMessage({id:f.data.id,payload:w,status:"success"})}else if(f.data.type==="loadData")n.assetLoader.load(f.data.path,f.data.fullPath,function(y){n.postMessage({id:f.data.id,payload:y,status:"success"})},function(){n.postMessage({id:f.data.id,status:"error"})})}),r.onmessage=function(s){var f=s.data,k=f.id,w=i[k];if(i[k]=null,f.status==="success")w.onComplete(f.payload);else if(w.onError)w.onError()}}function o(s,f){a+=1;var k="processId_"+a;return i[k]={onComplete:s,onError:f},k}function c(s,f,k){h();var w=o(f,k);r.postMessage({type:"loadAnimation",path:s,fullPath:window.location.origin+window.location.pathname,id:w})}function u(s,f,k){h();var w=o(f,k);r.postMessage({type:"loadData",path:s,fullPath:window.location.origin+window.location.pathname,id:w})}function m(s,f,k){h();var w=o(f,k);r.postMessage({type:"complete",animation:s,id:w})}return{loadAnimation:c,loadData:u,completeAnimation:m}}(),ImagePreloader=function(){var a=function(){var b=createTag("canvas");b.width=1,b.height=1;var g=b.getContext("2d");return g.fillStyle="rgba(0,0,0,0)",g.fillRect(0,0,1,1),b}();function i(){if(this.loadedAssets+=1,this.loadedAssets===this.totalImages&&this.loadedFootagesCount===this.totalFootages){if(this.imagesLoadedCb)this.imagesLoadedCb(null)}}function e(){if(this.loadedFootagesCount+=1,this.loadedAssets===this.totalImages&&this.loadedFootagesCount===this.totalFootages){if(this.imagesLoadedCb)this.imagesLoadedCb(null)}}function r(b,g,v){var p="";if(b.e)p=b.p;else if(g){var x=b.p;if(x.indexOf("images/")!==-1)x=x.split("/")[1];p=g+x}else p=v,p+=b.u?b.u:"",p+=b.p;return p}function l(b){var g=0,v=setInterval(function(){var p=b.getBBox();if(p.width||g>500)this._imageLoaded(),clearInterval(v);g+=1}.bind(this),50)}function n(b){var g=r(b,this.assetsPath,this.path),v=createNS("image");if(isSafari)this.testImageLoaded(v);else v.addEventListener("load",this._imageLoaded,!1);if(v.addEventListener("error",function(){p.img=a,this._imageLoaded()}.bind(this),!1),v.setAttributeNS("http://www.w3.org/1999/xlink","href",g),this._elementHelper.append)this._elementHelper.append(v);else this._elementHelper.appendChild(v);var p={img:v,assetData:b};return p}function t(b){var g=r(b,this.assetsPath,this.path),v=createTag("img");v.crossOrigin="anonymous",v.addEventListener("load",this._imageLoaded,!1),v.addEventListener("error",function(){p.img=a,this._imageLoaded()}.bind(this),!1),v.src=g;var p={img:v,assetData:b};return p}function h(b){var g={assetData:b},v=r(b,this.assetsPath,this.path);return dataManager.loadData(v,function(p){g.img=p,this._footageLoaded()}.bind(this),function(){g.img={},this._footageLoaded()}.bind(this)),g}function o(b,g){this.imagesLoadedCb=g;var v,p=b.length;for(v=0;v<p;v+=1)if(!b[v].layers){if(!b[v].t||b[v].t==="seq")this.totalImages+=1,this.images.push(this._createImageData(b[v]));else if(b[v].t===3)this.totalFootages+=1,this.images.push(this.createFootageData(b[v]))}}function c(b){this.path=b||""}function u(b){this.assetsPath=b||""}function m(b){var g=0,v=this.images.length;while(g<v){if(this.images[g].assetData===b)return this.images[g].img;g+=1}return null}function s(){this.imagesLoadedCb=null,this.images.length=0}function f(){return this.totalImages===this.loadedAssets}function k(){return this.totalFootages===this.loadedFootagesCount}function w(b,g){if(b==="svg")this._elementHelper=g,this._createImageData=this.createImageData.bind(this);else this._createImageData=this.createImgData.bind(this)}function y(){this._imageLoaded=i.bind(this),this._footageLoaded=e.bind(this),this.testImageLoaded=l.bind(this),this.createFootageData=h.bind(this),this.assetsPath="",this.path="",this.totalImages=0,this.totalFootages=0,this.loadedAssets=0,this.loadedFootagesCount=0,this.imagesLoadedCb=null,this.images=[]}return y.prototype={loadAssets:o,setAssetsPath:u,setPath:c,loadedImages:f,loadedFootages:k,destroy:s,getAsset:m,createImgData:t,createImageData:n,imageLoaded:i,footageLoaded:e,setCacheType:w},y}();function BaseEvent(){}BaseEvent.prototype={triggerEvent:function a(i,e){if(this._cbs[i]){var r=this._cbs[i];for(var l=0;l<r.length;l+=1)r[l](e)}},addEventListener:function a(i,e){if(!this._cbs[i])this._cbs[i]=[];return this._cbs[i].push(e),function(){this.removeEventListener(i,e)}.bind(this)},removeEventListener:function a(i,e){if(!e)this._cbs[i]=null;else if(this._cbs[i]){var r=0,l=this._cbs[i].length;while(r<l){if(this._cbs[i][r]===e)this._cbs[i].splice(r,1),r-=1,l-=1;r+=1}if(!this._cbs[i].length)this._cbs[i]=null}}};var markerParser=function(){function a(i){var e=i.split(`\r
2
2
  `),r={},l,n=0;for(var t=0;t<e.length;t+=1)if(l=e[t].split(":"),l.length===2)r[l[0]]=l[1].trim(),n+=1;if(n===0)throw new Error;return r}return function(i){var e=[];for(var r=0;r<i.length;r+=1){var l=i[r],n={time:l.tm,duration:l.dr};try{n.payload=JSON.parse(i[r].cm)}catch(t){try{n.payload=a(i[r].cm)}catch(h){n.payload={name:i[r].cm}}}e.push(n)}return e}}(),ProjectInterface=function(){function a(i){this.compositions.push(i)}return function(){function i(e){var r=0,l=this.compositions.length;while(r<l){if(this.compositions[r].data&&this.compositions[r].data.nm===e){if(this.compositions[r].prepareFrame&&this.compositions[r].data.xt)this.compositions[r].prepareFrame(this.currentFrame);return this.compositions[r].compInterface}r+=1}return null}return i.compositions=[],i.currentFrame=0,i.registerComposition=a,i}}(),renderers={},registerRenderer=function a(i,e){renderers[i]=e};function getRenderer(a){return renderers[a]}function getRegisteredRenderer(){if(renderers.canvas)return"canvas";for(var a in renderers)if(renderers[a])return a;return""}function _typeof$4(a){return _typeof$4=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},_typeof$4(a)}var AnimationItem=function a(){this._cbs=[],this.name="",this.path="",this.isLoaded=!1,this.currentFrame=0,this.currentRawFrame=0,this.firstFrame=0,this.totalFrames=0,this.frameRate=0,this.frameMult=0,this.playSpeed=1,this.playDirection=1,this.playCount=0,this.animationData={},this.assets=[],this.isPaused=!0,this.autoplay=!1,this.loop=!0,this.renderer=null,this.animationID=createElementID(),this.assetsPath="",this.timeCompleted=0,this.segmentPos=0,this.isSubframeEnabled=getSubframeEnabled(),this.segments=[],this._idle=!0,this._completedLoop=!1,this.projectInterface=ProjectInterface(),this.imagePreloader=new ImagePreloader,this.audioController=audioControllerFactory(),this.markers=[],this.configAnimation=this.configAnimation.bind(this),this.onSetupError=this.onSetupError.bind(this),this.onSegmentComplete=this.onSegmentComplete.bind(this),this.drawnFrameEvent=new BMEnterFrameEvent("drawnFrame",0,0,0),this.expressionsPlugin=getExpressionsPlugin()};extendPrototype([BaseEvent],AnimationItem),AnimationItem.prototype.setParams=function(a){if(a.wrapper||a.container)this.wrapper=a.wrapper||a.container;var i="svg";if(a.animType)i=a.animType;else if(a.renderer)i=a.renderer;var e=getRenderer(i);if(this.renderer=new e(this,a.rendererSettings),this.imagePreloader.setCacheType(i,this.renderer.globalData.defs),this.renderer.setProjectInterface(this.projectInterface),this.animType=i,a.loop===""||a.loop===null||a.loop===void 0||a.loop===!0)this.loop=!0;else if(a.loop===!1)this.loop=!1;else this.loop=parseInt(a.loop,10);if(this.autoplay="autoplay"in a?a.autoplay:!0,this.name=a.name?a.name:"",this.autoloadSegments=Object.prototype.hasOwnProperty.call(a,"autoloadSegments")?a.autoloadSegments:!0,this.assetsPath=a.assetsPath,this.initialSegment=a.initialSegment,a.audioFactory)this.audioController.setAudioFactory(a.audioFactory);if(a.animationData)this.setupAnimation(a.animationData);else if(a.path){if(a.path.lastIndexOf("\\")!==-1)this.path=a.path.substr(0,a.path.lastIndexOf("\\")+1);else this.path=a.path.substr(0,a.path.lastIndexOf("/")+1);this.fileName=a.path.substr(a.path.lastIndexOf("/")+1),this.fileName=this.fileName.substr(0,this.fileName.lastIndexOf(".json")),dataManager.loadAnimation(a.path,this.configAnimation,this.onSetupError)}},AnimationItem.prototype.onSetupError=function(){this.trigger("data_failed")},AnimationItem.prototype.setupAnimation=function(a){dataManager.completeAnimation(a,this.configAnimation)},AnimationItem.prototype.setData=function(a,i){if(i){if(_typeof$4(i)!=="object")i=JSON.parse(i)}var e={wrapper:a,animationData:i},r=a.attributes;e.path=r.getNamedItem("data-animation-path")?r.getNamedItem("data-animation-path").value:r.getNamedItem("data-bm-path")?r.getNamedItem("data-bm-path").value:r.getNamedItem("bm-path")?r.getNamedItem("bm-path").value:"",e.animType=r.getNamedItem("data-anim-type")?r.getNamedItem("data-anim-type").value:r.getNamedItem("data-bm-type")?r.getNamedItem("data-bm-type").value:r.getNamedItem("bm-type")?r.getNamedItem("bm-type").value:r.getNamedItem("data-bm-renderer")?r.getNamedItem("data-bm-renderer").value:r.getNamedItem("bm-renderer")?r.getNamedItem("bm-renderer").value:getRegisteredRenderer()||"canvas";var l=r.getNamedItem("data-anim-loop")?r.getNamedItem("data-anim-loop").value:r.getNamedItem("data-bm-loop")?r.getNamedItem("data-bm-loop").value:r.getNamedItem("bm-loop")?r.getNamedItem("bm-loop").value:"";if(l==="false")e.loop=!1;else if(l==="true")e.loop=!0;else if(l!=="")e.loop=parseInt(l,10);var n=r.getNamedItem("data-anim-autoplay")?r.getNamedItem("data-anim-autoplay").value:r.getNamedItem("data-bm-autoplay")?r.getNamedItem("data-bm-autoplay").value:r.getNamedItem("bm-autoplay")?r.getNamedItem("bm-autoplay").value:!0;e.autoplay=n!=="false",e.name=r.getNamedItem("data-name")?r.getNamedItem("data-name").value:r.getNamedItem("data-bm-name")?r.getNamedItem("data-bm-name").value:r.getNamedItem("bm-name")?r.getNamedItem("bm-name").value:"";var t=r.getNamedItem("data-anim-prerender")?r.getNamedItem("data-anim-prerender").value:r.getNamedItem("data-bm-prerender")?r.getNamedItem("data-bm-prerender").value:r.getNamedItem("bm-prerender")?r.getNamedItem("bm-prerender").value:"";if(t==="false")e.prerender=!1;if(!e.path)this.trigger("destroy");else this.setParams(e)},AnimationItem.prototype.includeLayers=function(a){if(a.op>this.animationData.op)this.animationData.op=a.op,this.totalFrames=Math.floor(a.op-this.animationData.ip);var i=this.animationData.layers,e,r=i.length,l=a.layers,n,t=l.length;for(n=0;n<t;n+=1){e=0;while(e<r){if(i[e].id===l[n].id){i[e]=l[n];break}e+=1}}if(a.chars||a.fonts)this.renderer.globalData.fontManager.addChars(a.chars),this.renderer.globalData.fontManager.addFonts(a.fonts,this.renderer.globalData.defs);if(a.assets){r=a.assets.length;for(e=0;e<r;e+=1)this.animationData.assets.push(a.assets[e])}this.animationData.__complete=!1,dataManager.completeAnimation(this.animationData,this.onSegmentComplete)},AnimationItem.prototype.onSegmentComplete=function(a){this.animationData=a;var i=getExpressionsPlugin();if(i)i.initExpressions(this);this.loadNextSegment()},AnimationItem.prototype.loadNextSegment=function(){var a=this.animationData.segments;if(!a||a.length===0||!this.autoloadSegments){this.trigger("data_ready"),this.timeCompleted=this.totalFrames;return}var i=a.shift();this.timeCompleted=i.time*this.frameRate;var e=this.path+this.fileName+"_"+this.segmentPos+".json";this.segmentPos+=1,dataManager.loadData(e,this.includeLayers.bind(this),function(){this.trigger("data_failed")}.bind(this))},AnimationItem.prototype.loadSegments=function(){var a=this.animationData.segments;if(!a)this.timeCompleted=this.totalFrames;this.loadNextSegment()},AnimationItem.prototype.imagesLoaded=function(){this.trigger("loaded_images"),this.checkLoaded()},AnimationItem.prototype.preloadImages=function(){this.imagePreloader.setAssetsPath(this.assetsPath),this.imagePreloader.setPath(this.path),this.imagePreloader.loadAssets(this.animationData.assets,this.imagesLoaded.bind(this))},AnimationItem.prototype.configAnimation=function(a){if(!this.renderer)return;try{if(this.animationData=a,this.initialSegment)this.totalFrames=Math.floor(this.initialSegment[1]-this.initialSegment[0]),this.firstFrame=Math.round(this.initialSegment[0]);else this.totalFrames=Math.floor(this.animationData.op-this.animationData.ip),this.firstFrame=Math.round(this.animationData.ip);if(this.renderer.configAnimation(a),!a.assets)a.assets=[];if(this.assets=this.animationData.assets,this.frameRate=this.animationData.fr,this.frameMult=this.animationData.fr/1000,this.renderer.searchExtraCompositions(a.assets),this.markers=markerParser(a.markers||[]),this.trigger("config_ready"),this.preloadImages(),this.loadSegments(),this.updaFrameModifier(),this.waitForFontsLoaded(),this.isPaused)this.audioController.pause()}catch(i){this.triggerConfigError(i)}},AnimationItem.prototype.waitForFontsLoaded=function(){if(!this.renderer)return;if(this.renderer.globalData.fontManager.isLoaded)this.checkLoaded();else setTimeout(this.waitForFontsLoaded.bind(this),20)},AnimationItem.prototype.checkLoaded=function(){if(!this.isLoaded&&this.renderer.globalData.fontManager.isLoaded&&(this.imagePreloader.loadedImages()||this.renderer.rendererType!=="canvas")&&this.imagePreloader.loadedFootages()){this.isLoaded=!0;var a=getExpressionsPlugin();if(a)a.initExpressions(this);if(this.renderer.initItems(),setTimeout(function(){this.trigger("DOMLoaded")}.bind(this),0),this.gotoFrame(),this.autoplay)this.play()}},AnimationItem.prototype.resize=function(a,i){var e=typeof a==="number"?a:void 0,r=typeof i==="number"?i:void 0;this.renderer.updateContainerSize(e,r)},AnimationItem.prototype.setSubframe=function(a){this.isSubframeEnabled=!!a},AnimationItem.prototype.gotoFrame=function(){if(this.currentFrame=this.isSubframeEnabled?this.currentRawFrame:~~this.currentRawFrame,this.timeCompleted!==this.totalFrames&&this.currentFrame>this.timeCompleted)this.currentFrame=this.timeCompleted;this.trigger("enterFrame"),this.renderFrame(),this.trigger("drawnFrame")},AnimationItem.prototype.renderFrame=function(){if(this.isLoaded===!1||!this.renderer)return;try{if(this.expressionsPlugin)this.expressionsPlugin.resetFrame();this.renderer.renderFrame(this.currentFrame+this.firstFrame)}catch(a){this.triggerRenderFrameError(a)}},AnimationItem.prototype.play=function(a){if(a&&this.name!==a)return;if(this.isPaused===!0){if(this.isPaused=!1,this.trigger("_play"),this.audioController.resume(),this._idle)this._idle=!1,this.trigger("_active")}},AnimationItem.prototype.pause=function(a){if(a&&this.name!==a)return;if(this.isPaused===!1)this.isPaused=!0,this.trigger("_pause"),this._idle=!0,this.trigger("_idle"),this.audioController.pause()},AnimationItem.prototype.togglePause=function(a){if(a&&this.name!==a)return;if(this.isPaused===!0)this.play();else this.pause()},AnimationItem.prototype.stop=function(a){if(a&&this.name!==a)return;this.pause(),this.playCount=0,this._completedLoop=!1,this.setCurrentRawFrameValue(0)},AnimationItem.prototype.getMarkerData=function(a){var i;for(var e=0;e<this.markers.length;e+=1)if(i=this.markers[e],i.payload&&i.payload.name===a)return i;return null},AnimationItem.prototype.goToAndStop=function(a,i,e){if(e&&this.name!==e)return;var r=Number(a);if(isNaN(r)){var l=this.getMarkerData(a);if(l)this.goToAndStop(l.time,!0)}else if(i)this.setCurrentRawFrameValue(a);else this.setCurrentRawFrameValue(a*this.frameModifier);this.pause()},AnimationItem.prototype.goToAndPlay=function(a,i,e){if(e&&this.name!==e)return;var r=Number(a);if(isNaN(r)){var l=this.getMarkerData(a);if(l)if(!l.duration)this.goToAndStop(l.time,!0);else this.playSegments([l.time,l.time+l.duration],!0)}else this.goToAndStop(r,i,e);this.play()},AnimationItem.prototype.advanceTime=function(a){if(this.isPaused===!0||this.isLoaded===!1)return;var i=this.currentRawFrame+a*this.frameModifier,e=!1;if(i>=this.totalFrames-1&&this.frameModifier>0)if(!this.loop||this.playCount===this.loop){if(!this.checkSegments(i>this.totalFrames?i%this.totalFrames:0))e=!0,i=this.totalFrames-1}else if(i>=this.totalFrames){if(this.playCount+=1,!this.checkSegments(i%this.totalFrames))this.setCurrentRawFrameValue(i%this.totalFrames),this._completedLoop=!0,this.trigger("loopComplete")}else this.setCurrentRawFrameValue(i);else if(i<0){if(!this.checkSegments(i%this.totalFrames))if(this.loop&&!(this.playCount--<=0&&this.loop!==!0))if(this.setCurrentRawFrameValue(this.totalFrames+i%this.totalFrames),!this._completedLoop)this._completedLoop=!0;else this.trigger("loopComplete");else e=!0,i=0}else this.setCurrentRawFrameValue(i);if(e)this.setCurrentRawFrameValue(i),this.pause(),this.trigger("complete")},AnimationItem.prototype.adjustSegment=function(a,i){if(this.playCount=0,a[1]<a[0]){if(this.frameModifier>0)if(this.playSpeed<0)this.setSpeed(-this.playSpeed);else this.setDirection(-1);this.totalFrames=a[0]-a[1],this.timeCompleted=this.totalFrames,this.firstFrame=a[1],this.setCurrentRawFrameValue(this.totalFrames-0.001-i)}else if(a[1]>a[0]){if(this.frameModifier<0)if(this.playSpeed<0)this.setSpeed(-this.playSpeed);else this.setDirection(1);this.totalFrames=a[1]-a[0],this.timeCompleted=this.totalFrames,this.firstFrame=a[0],this.setCurrentRawFrameValue(0.001+i)}this.trigger("segmentStart")},AnimationItem.prototype.setSegment=function(a,i){var e=-1;if(this.isPaused){if(this.currentRawFrame+this.firstFrame<a)e=a;else if(this.currentRawFrame+this.firstFrame>i)e=i-a}if(this.firstFrame=a,this.totalFrames=i-a,this.timeCompleted=this.totalFrames,e!==-1)this.goToAndStop(e,!0)},AnimationItem.prototype.playSegments=function(a,i){if(i)this.segments.length=0;if(_typeof$4(a[0])==="object"){var e,r=a.length;for(e=0;e<r;e+=1)this.segments.push(a[e])}else this.segments.push(a);if(this.segments.length&&i)this.adjustSegment(this.segments.shift(),0);if(this.isPaused)this.play()},AnimationItem.prototype.resetSegments=function(a){if(this.segments.length=0,this.segments.push([this.animationData.ip,this.animationData.op]),a)this.checkSegments(0)},AnimationItem.prototype.checkSegments=function(a){if(this.segments.length)return this.adjustSegment(this.segments.shift(),a),!0;return!1},AnimationItem.prototype.destroy=function(a){if(a&&this.name!==a||!this.renderer)return;this.renderer.destroy(),this.imagePreloader.destroy(),this.trigger("destroy"),this._cbs=null,this.onEnterFrame=null,this.onLoopComplete=null,this.onComplete=null,this.onSegmentStart=null,this.onDestroy=null,this.renderer=null,this.expressionsPlugin=null,this.imagePreloader=null,this.projectInterface=null},AnimationItem.prototype.setCurrentRawFrameValue=function(a){this.currentRawFrame=a,this.gotoFrame()},AnimationItem.prototype.setSpeed=function(a){this.playSpeed=a,this.updaFrameModifier()},AnimationItem.prototype.setDirection=function(a){this.playDirection=a<0?-1:1,this.updaFrameModifier()},AnimationItem.prototype.setLoop=function(a){this.loop=a},AnimationItem.prototype.setVolume=function(a,i){if(i&&this.name!==i)return;this.audioController.setVolume(a)},AnimationItem.prototype.getVolume=function(){return this.audioController.getVolume()},AnimationItem.prototype.mute=function(a){if(a&&this.name!==a)return;this.audioController.mute()},AnimationItem.prototype.unmute=function(a){if(a&&this.name!==a)return;this.audioController.unmute()},AnimationItem.prototype.updaFrameModifier=function(){this.frameModifier=this.frameMult*this.playSpeed*this.playDirection,this.audioController.setRate(this.playSpeed*this.playDirection)},AnimationItem.prototype.getPath=function(){return this.path},AnimationItem.prototype.getAssetsPath=function(a){var i="";if(a.e)i=a.p;else if(this.assetsPath){var e=a.p;if(e.indexOf("images/")!==-1)e=e.split("/")[1];i=this.assetsPath+e}else i=this.path,i+=a.u?a.u:"",i+=a.p;return i},AnimationItem.prototype.getAssetData=function(a){var i=0,e=this.assets.length;while(i<e){if(a===this.assets[i].id)return this.assets[i];i+=1}return null},AnimationItem.prototype.hide=function(){this.renderer.hide()},AnimationItem.prototype.show=function(){this.renderer.show()},AnimationItem.prototype.getDuration=function(a){return a?this.totalFrames:this.totalFrames/this.frameRate},AnimationItem.prototype.updateDocumentData=function(a,i,e){try{var r=this.renderer.getElementByPath(a);r.updateDocumentData(i,e)}catch(l){}},AnimationItem.prototype.trigger=function(a){if(this._cbs&&this._cbs[a])switch(a){case"enterFrame":this.triggerEvent(a,new BMEnterFrameEvent(a,this.currentFrame,this.totalFrames,this.frameModifier));break;case"drawnFrame":this.drawnFrameEvent.currentTime=this.currentFrame,this.drawnFrameEvent.totalTime=this.totalFrames,this.drawnFrameEvent.direction=this.frameModifier,this.triggerEvent(a,this.drawnFrameEvent);break;case"loopComplete":this.triggerEvent(a,new BMCompleteLoopEvent(a,this.loop,this.playCount,this.frameMult));break;case"complete":this.triggerEvent(a,new BMCompleteEvent(a,this.frameMult));break;case"segmentStart":this.triggerEvent(a,new BMSegmentStartEvent(a,this.firstFrame,this.totalFrames));break;case"destroy":this.triggerEvent(a,new BMDestroyEvent(a,this));break;default:this.triggerEvent(a)}if(a==="enterFrame"&&this.onEnterFrame)this.onEnterFrame.call(this,new BMEnterFrameEvent(a,this.currentFrame,this.totalFrames,this.frameMult));if(a==="loopComplete"&&this.onLoopComplete)this.onLoopComplete.call(this,new BMCompleteLoopEvent(a,this.loop,this.playCount,this.frameMult));if(a==="complete"&&this.onComplete)this.onComplete.call(this,new BMCompleteEvent(a,this.frameMult));if(a==="segmentStart"&&this.onSegmentStart)this.onSegmentStart.call(this,new BMSegmentStartEvent(a,this.firstFrame,this.totalFrames));if(a==="destroy"&&this.onDestroy)this.onDestroy.call(this,new BMDestroyEvent(a,this))},AnimationItem.prototype.triggerRenderFrameError=function(a){var i=new BMRenderFrameErrorEvent(a,this.currentFrame);if(this.triggerEvent("error",i),this.onError)this.onError.call(this,i)},AnimationItem.prototype.triggerConfigError=function(a){var i=new BMConfigErrorEvent(a,this.currentFrame);if(this.triggerEvent("error",i),this.onError)this.onError.call(this,i)};var animationManager=function(){var a={},i=[],e=0,r=0,l=0,n=!0,t=!1;function h(M){var L=0,F=M.target;while(L<r){if(i[L].animation===F){if(i.splice(L,1),L-=1,r-=1,!F.isPaused)m()}L+=1}}function o(M,L){if(!M)return null;var F=0;while(F<r){if(i[F].elem===M&&i[F].elem!==null)return i[F].animation;F+=1}var H=new AnimationItem;return s(H,M),H.setData(M,L),H}function c(){var M,L=i.length,F=[];for(M=0;M<L;M+=1)F.push(i[M].animation);return F}function u(){l+=1,q()}function m(){l-=1}function s(M,L){M.addEventListener("destroy",h),M.addEventListener("_active",u),M.addEventListener("_idle",m),i.push({elem:L,animation:M}),r+=1}function f(M){var L=new AnimationItem;return s(L,null),L.setParams(M),L}function k(M,L){var F;for(F=0;F<r;F+=1)i[F].animation.setSpeed(M,L)}function w(M,L){var F;for(F=0;F<r;F+=1)i[F].animation.setDirection(M,L)}function y(M){var L;for(L=0;L<r;L+=1)i[L].animation.play(M)}function b(M){var L=M-e,F;for(F=0;F<r;F+=1)i[F].animation.advanceTime(L);if(e=M,l&&!t)window.requestAnimationFrame(b);else n=!0}function g(M){e=M,window.requestAnimationFrame(b)}function v(M){var L;for(L=0;L<r;L+=1)i[L].animation.pause(M)}function p(M,L,F){var H;for(H=0;H<r;H+=1)i[H].animation.goToAndStop(M,L,F)}function x(M){var L;for(L=0;L<r;L+=1)i[L].animation.stop(M)}function Z(M){var L;for(L=0;L<r;L+=1)i[L].animation.togglePause(M)}function O(M){var L;for(L=r-1;L>=0;L-=1)i[L].animation.destroy(M)}function R(M,L,F){var H=[].concat([].slice.call(document.getElementsByClassName("lottie")),[].slice.call(document.getElementsByClassName("bodymovin"))),$,T=H.length;for($=0;$<T;$+=1){if(F)H[$].setAttribute("data-bm-type",F);o(H[$],M)}if(L&&T===0){if(!F)F="svg";var B=document.getElementsByTagName("body")[0];B.innerText="";var a1=createTag("div");a1.style.width="100%",a1.style.height="100%",a1.setAttribute("data-bm-type",F),B.appendChild(a1),o(a1,M)}}function j(){var M;for(M=0;M<r;M+=1)i[M].animation.resize()}function q(){if(!t&&l){if(n)window.requestAnimationFrame(g),n=!1}}function J(){t=!0}function C(){t=!1,q()}function N(M,L){var F;for(F=0;F<r;F+=1)i[F].animation.setVolume(M,L)}function G(M){var L;for(L=0;L<r;L+=1)i[L].animation.mute(M)}function Q(M){var L;for(L=0;L<r;L+=1)i[L].animation.unmute(M)}return a.registerAnimation=o,a.loadAnimation=f,a.setSpeed=k,a.setDirection=w,a.play=y,a.pause=v,a.stop=x,a.togglePause=Z,a.searchAnimations=R,a.resize=j,a.goToAndStop=p,a.destroy=O,a.freeze=J,a.unfreeze=C,a.setVolume=N,a.mute=G,a.unmute=Q,a.getRegisteredAnimations=c,a}(),BezierFactory=function(){var a={};a.getBezierEasing=e;var i={};function e(g,v,p,x,Z){var O=Z||("bez_"+g+"_"+v+"_"+p+"_"+x).replace(/\./g,"p");if(i[O])return i[O];var R=new b([g,v,p,x]);return i[O]=R,R}var r=4,l=0.001,n=0.0000001,t=10,h=11,o=1/(h-1),c=typeof Float32Array==="function";function u(g,v){return 1-3*v+3*g}function m(g,v){return 3*v-6*g}function s(g){return 3*g}function f(g,v,p){return((u(v,p)*g+m(v,p))*g+s(v))*g}function k(g,v,p){return 3*u(v,p)*g*g+2*m(v,p)*g+s(v)}function w(g,v,p,x,Z){var O,R,j=0;do if(R=v+(p-v)/2,O=f(R,x,Z)-g,O>0)p=R;else v=R;while(Math.abs(O)>n&&++j<t);return R}function y(g,v,p,x){for(var Z=0;Z<r;++Z){var O=k(v,p,x);if(O===0)return v;var R=f(v,p,x)-g;v-=R/O}return v}function b(g){this._p=g,this._mSampleValues=c?new Float32Array(h):new Array(h),this._precomputed=!1,this.get=this.get.bind(this)}return b.prototype={get:function g(v){var p=this._p[0],x=this._p[1],Z=this._p[2],O=this._p[3];if(!this._precomputed)this._precompute();if(p===x&&Z===O)return v;if(v===0)return 0;if(v===1)return 1;return f(this._getTForX(v),x,O)},_precompute:function g(){var v=this._p[0],p=this._p[1],x=this._p[2],Z=this._p[3];if(this._precomputed=!0,v!==p||x!==Z)this._calcSampleValues()},_calcSampleValues:function g(){var v=this._p[0],p=this._p[2];for(var x=0;x<h;++x)this._mSampleValues[x]=f(x*o,v,p)},_getTForX:function g(v){var p=this._p[0],x=this._p[2],Z=this._mSampleValues,O=0,R=1,j=h-1;for(;R!==j&&Z[R]<=v;++R)O+=o;--R;var q=(v-Z[R])/(Z[R+1]-Z[R]),J=O+q*o,C=k(J,p,x);if(C>=l)return y(v,J,p,x);if(C===0)return J;return w(v,O,O+o,p,x)}},a}(),pooling=function(){function a(i){return i.concat(createSizedArray(i.length))}return{double:a}}(),poolFactory=function(){return function(a,i,e){var r=0,l=a,n=createSizedArray(l),t={newElement:h,release:o};function h(){var c;if(r)r-=1,c=n[r];else c=i();return c}function o(c){if(r===l)n=pooling.double(n),l*=2;if(e)e(c);n[r]=c,r+=1}return t}}(),bezierLengthPool=function(){function a(){return{addedLength:0,percents:createTypedArray("float32",getDefaultCurveSegments()),lengths:createTypedArray("float32",getDefaultCurveSegments())}}return poolFactory(8,a)}(),segmentsLengthPool=function(){function a(){return{lengths:[],totalLength:0}}function i(e){var r,l=e.lengths.length;for(r=0;r<l;r+=1)bezierLengthPool.release(e.lengths[r]);e.lengths.length=0}return poolFactory(8,a,i)}();function bezFunction(){var a=Math;function i(s,f,k,w,y,b){var g=s*w+f*y+k*b-y*w-b*s-k*f;return g>-0.001&&g<0.001}function e(s,f,k,w,y,b,g,v,p){if(k===0&&b===0&&p===0)return i(s,f,w,y,g,v);var x=a.sqrt(a.pow(w-s,2)+a.pow(y-f,2)+a.pow(b-k,2)),Z=a.sqrt(a.pow(g-s,2)+a.pow(v-f,2)+a.pow(p-k,2)),O=a.sqrt(a.pow(g-w,2)+a.pow(v-y,2)+a.pow(p-b,2)),R;if(x>Z)if(x>O)R=x-Z-O;else R=O-Z-x;else if(O>Z)R=O-Z-x;else R=Z-x-O;return R>-0.0001&&R<0.0001}var r=function(){return function(s,f,k,w){var y=getDefaultCurveSegments(),b,g,v,p,x,Z=0,O,R=[],j=[],q=bezierLengthPool.newElement();v=k.length;for(b=0;b<y;b+=1){x=b/(y-1),O=0;for(g=0;g<v;g+=1){if(p=bmPow(1-x,3)*s[g]+3*bmPow(1-x,2)*x*k[g]+3*(1-x)*bmPow(x,2)*w[g]+bmPow(x,3)*f[g],R[g]=p,j[g]!==null)O+=bmPow(R[g]-j[g],2);j[g]=R[g]}if(O)O=bmSqrt(O),Z+=O;q.percents[b]=x,q.lengths[b]=Z}return q.addedLength=Z,q}}();function l(s){var f=segmentsLengthPool.newElement(),k=s.c,w=s.v,y=s.o,b=s.i,g,v=s._length,p=f.lengths,x=0;for(g=0;g<v-1;g+=1)p[g]=r(w[g],w[g+1],y[g],b[g+1]),x+=p[g].addedLength;if(k&&v)p[g]=r(w[g],w[0],y[g],b[0]),x+=p[g].addedLength;return f.totalLength=x,f}function n(s){this.segmentLength=0,this.points=new Array(s)}function t(s,f){this.partialLength=s,this.point=f}var h=function(){var s={};return function(f,k,w,y){var b=(f[0]+"_"+f[1]+"_"+k[0]+"_"+k[1]+"_"+w[0]+"_"+w[1]+"_"+y[0]+"_"+y[1]).replace(/\./g,"p");if(!s[b]){var g=getDefaultCurveSegments(),v,p,x,Z,O,R=0,j,q,J=null;if(f.length===2&&(f[0]!==k[0]||f[1]!==k[1])&&i(f[0],f[1],k[0],k[1],f[0]+w[0],f[1]+w[1])&&i(f[0],f[1],k[0],k[1],k[0]+y[0],k[1]+y[1]))g=2;var C=new n(g);x=w.length;for(v=0;v<g;v+=1){q=createSizedArray(x),O=v/(g-1),j=0;for(p=0;p<x;p+=1)if(Z=bmPow(1-O,3)*f[p]+3*bmPow(1-O,2)*O*(f[p]+w[p])+3*(1-O)*bmPow(O,2)*(k[p]+y[p])+bmPow(O,3)*k[p],q[p]=Z,J!==null)j+=bmPow(q[p]-J[p],2);j=bmSqrt(j),R+=j,C.points[v]=new t(j,q),J=q}C.segmentLength=R,s[b]=C}return s[b]}}();function o(s,f){var{percents:k,lengths:w}=f,y=k.length,b=bmFloor((y-1)*s),g=s*f.addedLength,v=0;if(b===y-1||b===0||g===w[b])return k[b];var p=w[b]>g?-1:1,x=!0;while(x){if(w[b]<=g&&w[b+1]>g)v=(g-w[b])/(w[b+1]-w[b]),x=!1;else b+=p;if(b<0||b>=y-1){if(b===y-1)return k[b];x=!1}}return k[b]+(k[b+1]-k[b])*v}function c(s,f,k,w,y,b){var g=o(y,b),v=1-g,p=a.round((v*v*v*s[0]+(g*v*v+v*g*v+v*v*g)*k[0]+(g*g*v+v*g*g+g*v*g)*w[0]+g*g*g*f[0])*1000)/1000,x=a.round((v*v*v*s[1]+(g*v*v+v*g*v+v*v*g)*k[1]+(g*g*v+v*g*g+g*v*g)*w[1]+g*g*g*f[1])*1000)/1000;return[p,x]}var u=createTypedArray("float32",8);function m(s,f,k,w,y,b,g){if(y<0)y=0;else if(y>1)y=1;var v=o(y,g);b=b>1?1:b;var p=o(b,g),x,Z=s.length,O=1-v,R=1-p,j=O*O*O,q=v*O*O*3,J=v*v*O*3,C=v*v*v,N=O*O*R,G=v*O*R+O*v*R+O*O*p,Q=v*v*R+O*v*p+v*O*p,M=v*v*p,L=O*R*R,F=v*R*R+O*p*R+O*R*p,H=v*p*R+O*p*p+v*R*p,$=v*p*p,T=R*R*R,B=p*R*R+R*p*R+R*R*p,a1=p*p*R+R*p*p+p*R*p,r1=p*p*p;for(x=0;x<Z;x+=1)u[x*4]=a.round((j*s[x]+q*k[x]+J*w[x]+C*f[x])*1000)/1000,u[x*4+1]=a.round((N*s[x]+G*k[x]+Q*w[x]+M*f[x])*1000)/1000,u[x*4+2]=a.round((L*s[x]+F*k[x]+H*w[x]+$*f[x])*1000)/1000,u[x*4+3]=a.round((T*s[x]+B*k[x]+a1*w[x]+r1*f[x])*1000)/1000;return u}return{getSegmentsLength:l,getNewSegment:m,getPointInSegment:c,buildBezierData:h,pointOnLine2D:i,pointOnLine3D:e}}var bez=bezFunction(),initFrame=initialDefaultFrame,mathAbs=Math.abs;function interpolateValue(a,i){var e=this.offsetTime,r;if(this.propType==="multidimensional")r=createTypedArray("float32",this.pv.length);var l=i.lastIndex,n=l,t=this.keyframes.length-1,h=!0,o,c,u;while(h){if(o=this.keyframes[n],c=this.keyframes[n+1],n===t-1&&a>=c.t-e){if(o.h)o=c;l=0;break}if(c.t-e>a){l=n;break}if(n<t-1)n+=1;else l=0,h=!1}u=this.keyframesMetadata[n]||{};var m,s,f,k,w,y,b=c.t-e,g=o.t-e,v;if(o.to){if(!u.bezierData)u.bezierData=bez.buildBezierData(o.s,c.s||o.e,o.to,o.ti);var p=u.bezierData;if(a>=b||a<g){var x=a>=b?p.points.length-1:0;s=p.points[x].point.length;for(m=0;m<s;m+=1)r[m]=p.points[x].point[m]}else{if(u.__fnct)y=u.__fnct;else y=BezierFactory.getBezierEasing(o.o.x,o.o.y,o.i.x,o.i.y,o.n).get,u.__fnct=y;f=y((a-g)/(b-g));var Z=p.segmentLength*f,O,R=i.lastFrame<a&&i._lastKeyframeIndex===n?i._lastAddedLength:0;w=i.lastFrame<a&&i._lastKeyframeIndex===n?i._lastPoint:0,h=!0,k=p.points.length;while(h){if(R+=p.points[w].partialLength,Z===0||f===0||w===p.points.length-1){s=p.points[w].point.length;for(m=0;m<s;m+=1)r[m]=p.points[w].point[m];break}else if(Z>=R&&Z<R+p.points[w+1].partialLength){O=(Z-R)/p.points[w+1].partialLength,s=p.points[w].point.length;for(m=0;m<s;m+=1)r[m]=p.points[w].point[m]+(p.points[w+1].point[m]-p.points[w].point[m])*O;break}if(w<k-1)w+=1;else h=!1}i._lastPoint=w,i._lastAddedLength=R-p.points[w].partialLength,i._lastKeyframeIndex=n}}else{var j,q,J,C,N;if(t=o.s.length,v=c.s||o.e,this.sh&&o.h!==1)if(a>=b)r[0]=v[0],r[1]=v[1],r[2]=v[2];else if(a<=g)r[0]=o.s[0],r[1]=o.s[1],r[2]=o.s[2];else{var G=createQuaternion(o.s),Q=createQuaternion(v),M=(a-g)/(b-g);quaternionToEuler(r,slerp(G,Q,M))}else for(n=0;n<t;n+=1){if(o.h!==1)if(a>=b)f=1;else if(a<g)f=0;else{if(o.o.x.constructor===Array){if(!u.__fnct)u.__fnct=[];if(!u.__fnct[n])j=o.o.x[n]===void 0?o.o.x[0]:o.o.x[n],q=o.o.y[n]===void 0?o.o.y[0]:o.o.y[n],J=o.i.x[n]===void 0?o.i.x[0]:o.i.x[n],C=o.i.y[n]===void 0?o.i.y[0]:o.i.y[n],y=BezierFactory.getBezierEasing(j,q,J,C).get,u.__fnct[n]=y;else y=u.__fnct[n]}else if(!u.__fnct)j=o.o.x,q=o.o.y,J=o.i.x,C=o.i.y,y=BezierFactory.getBezierEasing(j,q,J,C).get,o.keyframeMetadata=y;else y=u.__fnct;f=y((a-g)/(b-g))}if(v=c.s||o.e,N=o.h===1?o.s[n]:o.s[n]+(v[n]-o.s[n])*f,this.propType==="multidimensional")r[n]=N;else r=N}}return i.lastIndex=l,r}function slerp(a,i,e){var r=[],l=a[0],n=a[1],t=a[2],h=a[3],o=i[0],c=i[1],u=i[2],m=i[3],s,f,k,w,y;if(f=l*o+n*c+t*u+h*m,f<0)f=-f,o=-o,c=-c,u=-u,m=-m;if(1-f>0.000001)s=Math.acos(f),k=Math.sin(s),w=Math.sin((1-e)*s)/k,y=Math.sin(e*s)/k;else w=1-e,y=e;return r[0]=w*l+y*o,r[1]=w*n+y*c,r[2]=w*t+y*u,r[3]=w*h+y*m,r}function quaternionToEuler(a,i){var e=i[0],r=i[1],l=i[2],n=i[3],t=Math.atan2(2*r*n-2*e*l,1-2*r*r-2*l*l),h=Math.asin(2*e*r+2*l*n),o=Math.atan2(2*e*n-2*r*l,1-2*e*e-2*l*l);a[0]=t/degToRads,a[1]=h/degToRads,a[2]=o/degToRads}function createQuaternion(a){var i=a[0]*degToRads,e=a[1]*degToRads,r=a[2]*degToRads,l=Math.cos(i/2),n=Math.cos(e/2),t=Math.cos(r/2),h=Math.sin(i/2),o=Math.sin(e/2),c=Math.sin(r/2),u=l*n*t-h*o*c,m=h*o*t+l*n*c,s=h*n*t+l*o*c,f=l*o*t-h*n*c;return[m,s,f,u]}function getValueAtCurrentTime(){var a=this.comp.renderedFrame-this.offsetTime,i=this.keyframes[0].t-this.offsetTime,e=this.keyframes[this.keyframes.length-1].t-this.offsetTime;if(!(a===this._caching.lastFrame||this._caching.lastFrame!==initFrame&&(this._caching.lastFrame>=e&&a>=e||this._caching.lastFrame<i&&a<i))){if(this._caching.lastFrame>=a)this._caching._lastKeyframeIndex=-1,this._caching.lastIndex=0;var r=this.interpolateValue(a,this._caching);this.pv=r}return this._caching.lastFrame=a,this.pv}function setVValue(a){var i;if(this.propType==="unidimensional"){if(i=a*this.mult,mathAbs(this.v-i)>0.00001)this.v=i,this._mdf=!0}else{var e=0,r=this.v.length;while(e<r){if(i=a[e]*this.mult,mathAbs(this.v[e]-i)>0.00001)this.v[e]=i,this._mdf=!0;e+=1}}}function processEffectsSequence(){if(this.elem.globalData.frameId===this.frameId||!this.effectsSequence.length)return;if(this.lock){this.setVValue(this.pv);return}this.lock=!0,this._mdf=this._isFirstFrame;var a,i=this.effectsSequence.length,e=this.kf?this.pv:this.data.k;for(a=0;a<i;a+=1)e=this.effectsSequence[a](e);this.setVValue(e),this._isFirstFrame=!1,this.lock=!1,this.frameId=this.elem.globalData.frameId}function addEffect(a){this.effectsSequence.push(a),this.container.addDynamicProperty(this)}function ValueProperty(a,i,e,r){this.propType="unidimensional",this.mult=e||1,this.data=i,this.v=e?i.k*e:i.k,this.pv=i.k,this._mdf=!1,this.elem=a,this.container=r,this.comp=a.comp,this.k=!1,this.kf=!1,this.vel=0,this.effectsSequence=[],this._isFirstFrame=!0,this.getValue=processEffectsSequence,this.setVValue=setVValue,this.addEffect=addEffect}function MultiDimensionalProperty(a,i,e,r){this.propType="multidimensional",this.mult=e||1,this.data=i,this._mdf=!1,this.elem=a,this.container=r,this.comp=a.comp,this.k=!1,this.kf=!1,this.frameId=-1;var l,n=i.k.length;this.v=createTypedArray("float32",n),this.pv=createTypedArray("float32",n),this.vel=createTypedArray("float32",n);for(l=0;l<n;l+=1)this.v[l]=i.k[l]*this.mult,this.pv[l]=i.k[l];this._isFirstFrame=!0,this.effectsSequence=[],this.getValue=processEffectsSequence,this.setVValue=setVValue,this.addEffect=addEffect}function KeyframedValueProperty(a,i,e,r){this.propType="unidimensional",this.keyframes=i.k,this.keyframesMetadata=[],this.offsetTime=a.data.st,this.frameId=-1,this._caching={lastFrame:initFrame,lastIndex:0,value:0,_lastKeyframeIndex:-1},this.k=!0,this.kf=!0,this.data=i,this.mult=e||1,this.elem=a,this.container=r,this.comp=a.comp,this.v=initFrame,this.pv=initFrame,this._isFirstFrame=!0,this.getValue=processEffectsSequence,this.setVValue=setVValue,this.interpolateValue=interpolateValue,this.effectsSequence=[getValueAtCurrentTime.bind(this)],this.addEffect=addEffect}function KeyframedMultidimensionalProperty(a,i,e,r){this.propType="multidimensional";var l,n=i.k.length,t,h,o,c;for(l=0;l<n-1;l+=1)if(i.k[l].to&&i.k[l].s&&i.k[l+1]&&i.k[l+1].s){if(t=i.k[l].s,h=i.k[l+1].s,o=i.k[l].to,c=i.k[l].ti,t.length===2&&!(t[0]===h[0]&&t[1]===h[1])&&bez.pointOnLine2D(t[0],t[1],h[0],h[1],t[0]+o[0],t[1]+o[1])&&bez.pointOnLine2D(t[0],t[1],h[0],h[1],h[0]+c[0],h[1]+c[1])||t.length===3&&!(t[0]===h[0]&&t[1]===h[1]&&t[2]===h[2])&&bez.pointOnLine3D(t[0],t[1],t[2],h[0],h[1],h[2],t[0]+o[0],t[1]+o[1],t[2]+o[2])&&bez.pointOnLine3D(t[0],t[1],t[2],h[0],h[1],h[2],h[0]+c[0],h[1]+c[1],h[2]+c[2]))i.k[l].to=null,i.k[l].ti=null;if(t[0]===h[0]&&t[1]===h[1]&&o[0]===0&&o[1]===0&&c[0]===0&&c[1]===0){if(t.length===2||t[2]===h[2]&&o[2]===0&&c[2]===0)i.k[l].to=null,i.k[l].ti=null}}this.effectsSequence=[getValueAtCurrentTime.bind(this)],this.data=i,this.keyframes=i.k,this.keyframesMetadata=[],this.offsetTime=a.data.st,this.k=!0,this.kf=!0,this._isFirstFrame=!0,this.mult=e||1,this.elem=a,this.container=r,this.comp=a.comp,this.getValue=processEffectsSequence,this.setVValue=setVValue,this.interpolateValue=interpolateValue,this.frameId=-1;var u=i.k[0].s.length;this.v=createTypedArray("float32",u),this.pv=createTypedArray("float32",u);for(l=0;l<u;l+=1)this.v[l]=initFrame,this.pv[l]=initFrame;this._caching={lastFrame:initFrame,lastIndex:0,value:createTypedArray("float32",u)},this.addEffect=addEffect}var PropertyFactory=function(){function a(e,r,l,n,t){if(r.sid)r=e.globalData.slotManager.getProp(r);var h;if(!r.k.length)h=new ValueProperty(e,r,n,t);else if(typeof r.k[0]==="number")h=new MultiDimensionalProperty(e,r,n,t);else switch(l){case 0:h=new KeyframedValueProperty(e,r,n,t);break;case 1:h=new KeyframedMultidimensionalProperty(e,r,n,t);break;default:break}if(h.effectsSequence.length)t.addDynamicProperty(h);return h}var i={getProp:a};return i}();function DynamicPropertyContainer(){}DynamicPropertyContainer.prototype={addDynamicProperty:function a(i){if(this.dynamicProperties.indexOf(i)===-1)this.dynamicProperties.push(i),this.container.addDynamicProperty(this),this._isAnimated=!0},iterateDynamicProperties:function a(){this._mdf=!1;var i,e=this.dynamicProperties.length;for(i=0;i<e;i+=1)if(this.dynamicProperties[i].getValue(),this.dynamicProperties[i]._mdf)this._mdf=!0},initDynamicPropertyContainer:function a(i){this.container=i,this.dynamicProperties=[],this._mdf=!1,this._isAnimated=!1}};var pointPool=function(){function a(){return createTypedArray("float32",2)}return poolFactory(8,a)}();function ShapePath(){this.c=!1,this._length=0,this._maxLength=8,this.v=createSizedArray(this._maxLength),this.o=createSizedArray(this._maxLength),this.i=createSizedArray(this._maxLength)}ShapePath.prototype.setPathData=function(a,i){this.c=a,this.setLength(i);var e=0;while(e<i)this.v[e]=pointPool.newElement(),this.o[e]=pointPool.newElement(),this.i[e]=pointPool.newElement(),e+=1},ShapePath.prototype.setLength=function(a){while(this._maxLength<a)this.doubleArrayLength();this._length=a},ShapePath.prototype.doubleArrayLength=function(){this.v=this.v.concat(createSizedArray(this._maxLength)),this.i=this.i.concat(createSizedArray(this._maxLength)),this.o=this.o.concat(createSizedArray(this._maxLength)),this._maxLength*=2},ShapePath.prototype.setXYAt=function(a,i,e,r,l){var n;if(this._length=Math.max(this._length,r+1),this._length>=this._maxLength)this.doubleArrayLength();switch(e){case"v":n=this.v;break;case"i":n=this.i;break;case"o":n=this.o;break;default:n=[];break}if(!n[r]||n[r]&&!l)n[r]=pointPool.newElement();n[r][0]=a,n[r][1]=i},ShapePath.prototype.setTripleAt=function(a,i,e,r,l,n,t,h){this.setXYAt(a,i,"v",t,h),this.setXYAt(e,r,"o",t,h),this.setXYAt(l,n,"i",t,h)},ShapePath.prototype.reverse=function(){var a=new ShapePath;a.setPathData(this.c,this._length);var i=this.v,e=this.o,r=this.i,l=0;if(this.c)a.setTripleAt(i[0][0],i[0][1],r[0][0],r[0][1],e[0][0],e[0][1],0,!1),l=1;var n=this._length-1,t=this._length,h;for(h=l;h<t;h+=1)a.setTripleAt(i[n][0],i[n][1],r[n][0],r[n][1],e[n][0],e[n][1],h,!1),n-=1;return a},ShapePath.prototype.length=function(){return this._length};var shapePool=function(){function a(){return new ShapePath}function i(l){var n=l._length,t;for(t=0;t<n;t+=1)pointPool.release(l.v[t]),pointPool.release(l.i[t]),pointPool.release(l.o[t]),l.v[t]=null,l.i[t]=null,l.o[t]=null;l._length=0,l.c=!1}function e(l){var n=r.newElement(),t,h=l._length===void 0?l.v.length:l._length;n.setLength(h),n.c=l.c;for(t=0;t<h;t+=1)n.setTripleAt(l.v[t][0],l.v[t][1],l.o[t][0],l.o[t][1],l.i[t][0],l.i[t][1],t);return n}var r=poolFactory(4,a,i);return r.clone=e,r}();function ShapeCollection(){this._length=0,this._maxLength=4,this.shapes=createSizedArray(this._maxLength)}ShapeCollection.prototype.addShape=function(a){if(this._length===this._maxLength)this.shapes=this.shapes.concat(createSizedArray(this._maxLength)),this._maxLength*=2;this.shapes[this._length]=a,this._length+=1},ShapeCollection.prototype.releaseShapes=function(){var a;for(a=0;a<this._length;a+=1)shapePool.release(this.shapes[a]);this._length=0};var shapeCollectionPool=function(){var a={newShapeCollection:l,release:n},i=0,e=4,r=createSizedArray(e);function l(){var t;if(i)i-=1,t=r[i];else t=new ShapeCollection;return t}function n(t){var h,o=t._length;for(h=0;h<o;h+=1)shapePool.release(t.shapes[h]);if(t._length=0,i===e)r=pooling.double(r),e*=2;r[i]=t,i+=1}return a}(),ShapePropertyFactory=function(){var a=-999999;function i(b,g,v){var p=v.lastIndex,x,Z,O,R,j,q,J,C,N,G=this.keyframes;if(b<G[0].t-this.offsetTime)x=G[0].s[0],O=!0,p=0;else if(b>=G[G.length-1].t-this.offsetTime)x=G[G.length-1].s?G[G.length-1].s[0]:G[G.length-2].e[0],O=!0;else{var Q=p,M=G.length-1,L=!0,F,H,$;while(L){if(F=G[Q],H=G[Q+1],H.t-this.offsetTime>b)break;if(Q<M-1)Q+=1;else L=!1}if($=this.keyframesMetadata[Q]||{},O=F.h===1,p=Q,!O){if(b>=H.t-this.offsetTime)C=1;else if(b<F.t-this.offsetTime)C=0;else{var T;if($.__fnct)T=$.__fnct;else T=BezierFactory.getBezierEasing(F.o.x,F.o.y,F.i.x,F.i.y).get,$.__fnct=T;C=T((b-(F.t-this.offsetTime))/(H.t-this.offsetTime-(F.t-this.offsetTime)))}Z=H.s?H.s[0]:F.e[0]}x=F.s[0]}q=g._length,J=x.i[0].length,v.lastIndex=p;for(R=0;R<q;R+=1)for(j=0;j<J;j+=1)N=O?x.i[R][j]:x.i[R][j]+(Z.i[R][j]-x.i[R][j])*C,g.i[R][j]=N,N=O?x.o[R][j]:x.o[R][j]+(Z.o[R][j]-x.o[R][j])*C,g.o[R][j]=N,N=O?x.v[R][j]:x.v[R][j]+(Z.v[R][j]-x.v[R][j])*C,g.v[R][j]=N}function e(){var b=this.comp.renderedFrame-this.offsetTime,g=this.keyframes[0].t-this.offsetTime,v=this.keyframes[this.keyframes.length-1].t-this.offsetTime,p=this._caching.lastFrame;if(!(p!==a&&(p<g&&b<g||p>v&&b>v)))this._caching.lastIndex=p<b?this._caching.lastIndex:0,this.interpolateShape(b,this.pv,this._caching);return this._caching.lastFrame=b,this.pv}function r(){this.paths=this.localShapeCollection}function l(b,g){if(b._length!==g._length||b.c!==g.c)return!1;var v,p=b._length;for(v=0;v<p;v+=1)if(b.v[v][0]!==g.v[v][0]||b.v[v][1]!==g.v[v][1]||b.o[v][0]!==g.o[v][0]||b.o[v][1]!==g.o[v][1]||b.i[v][0]!==g.i[v][0]||b.i[v][1]!==g.i[v][1])return!1;return!0}function n(b){if(!l(this.v,b))this.v=shapePool.clone(b),this.localShapeCollection.releaseShapes(),this.localShapeCollection.addShape(this.v),this._mdf=!0,this.paths=this.localShapeCollection}function t(){if(this.elem.globalData.frameId===this.frameId)return;if(!this.effectsSequence.length){this._mdf=!1;return}if(this.lock){this.setVValue(this.pv);return}this.lock=!0,this._mdf=!1;var b;if(this.kf)b=this.pv;else if(this.data.ks)b=this.data.ks.k;else b=this.data.pt.k;var g,v=this.effectsSequence.length;for(g=0;g<v;g+=1)b=this.effectsSequence[g](b);this.setVValue(b),this.lock=!1,this.frameId=this.elem.globalData.frameId}function h(b,g,v){this.propType="shape",this.comp=b.comp,this.container=b,this.elem=b,this.data=g,this.k=!1,this.kf=!1,this._mdf=!1;var p=v===3?g.pt.k:g.ks.k;this.v=shapePool.clone(p),this.pv=shapePool.clone(this.v),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.paths=this.localShapeCollection,this.paths.addShape(this.v),this.reset=r,this.effectsSequence=[]}function o(b){this.effectsSequence.push(b),this.container.addDynamicProperty(this)}h.prototype.interpolateShape=i,h.prototype.getValue=t,h.prototype.setVValue=n,h.prototype.addEffect=o;function c(b,g,v){this.propType="shape",this.comp=b.comp,this.elem=b,this.container=b,this.offsetTime=b.data.st,this.keyframes=v===3?g.pt.k:g.ks.k,this.keyframesMetadata=[],this.k=!0,this.kf=!0;var p=this.keyframes[0].s[0].i.length;this.v=shapePool.newElement(),this.v.setPathData(this.keyframes[0].s[0].c,p),this.pv=shapePool.clone(this.v),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.paths=this.localShapeCollection,this.paths.addShape(this.v),this.lastFrame=a,this.reset=r,this._caching={lastFrame:a,lastIndex:0},this.effectsSequence=[e.bind(this)]}c.prototype.getValue=t,c.prototype.interpolateShape=i,c.prototype.setVValue=n,c.prototype.addEffect=o;var u=function(){var b=roundCorner;function g(v,p){if(this.v=shapePool.newElement(),this.v.setPathData(!0,4),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.paths=this.localShapeCollection,this.localShapeCollection.addShape(this.v),this.d=p.d,this.elem=v,this.comp=v.comp,this.frameId=-1,this.initDynamicPropertyContainer(v),this.p=PropertyFactory.getProp(v,p.p,1,0,this),this.s=PropertyFactory.getProp(v,p.s,1,0,this),this.dynamicProperties.length)this.k=!0;else this.k=!1,this.convertEllToPath()}return g.prototype={reset:r,getValue:function v(){if(this.elem.globalData.frameId===this.frameId)return;if(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf)this.convertEllToPath()},convertEllToPath:function v(){var p=this.p.v[0],x=this.p.v[1],Z=this.s.v[0]/2,O=this.s.v[1]/2,R=this.d!==3,j=this.v;j.v[0][0]=p,j.v[0][1]=x-O,j.v[1][0]=R?p+Z:p-Z,j.v[1][1]=x,j.v[2][0]=p,j.v[2][1]=x+O,j.v[3][0]=R?p-Z:p+Z,j.v[3][1]=x,j.i[0][0]=R?p-Z*b:p+Z*b,j.i[0][1]=x-O,j.i[1][0]=R?p+Z:p-Z,j.i[1][1]=x-O*b,j.i[2][0]=R?p+Z*b:p-Z*b,j.i[2][1]=x+O,j.i[3][0]=R?p-Z:p+Z,j.i[3][1]=x+O*b,j.o[0][0]=R?p+Z*b:p-Z*b,j.o[0][1]=x-O,j.o[1][0]=R?p+Z:p-Z,j.o[1][1]=x+O*b,j.o[2][0]=R?p-Z*b:p+Z*b,j.o[2][1]=x+O,j.o[3][0]=R?p-Z:p+Z,j.o[3][1]=x-O*b}},extendPrototype([DynamicPropertyContainer],g),g}(),m=function(){function b(g,v){if(this.v=shapePool.newElement(),this.v.setPathData(!0,0),this.elem=g,this.comp=g.comp,this.data=v,this.frameId=-1,this.d=v.d,this.initDynamicPropertyContainer(g),v.sy===1)this.ir=PropertyFactory.getProp(g,v.ir,0,0,this),this.is=PropertyFactory.getProp(g,v.is,0,0.01,this),this.convertToPath=this.convertStarToPath;else this.convertToPath=this.convertPolygonToPath;if(this.pt=PropertyFactory.getProp(g,v.pt,0,0,this),this.p=PropertyFactory.getProp(g,v.p,1,0,this),this.r=PropertyFactory.getProp(g,v.r,0,degToRads,this),this.or=PropertyFactory.getProp(g,v.or,0,0,this),this.os=PropertyFactory.getProp(g,v.os,0,0.01,this),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.localShapeCollection.addShape(this.v),this.paths=this.localShapeCollection,this.dynamicProperties.length)this.k=!0;else this.k=!1,this.convertToPath()}return b.prototype={reset:r,getValue:function g(){if(this.elem.globalData.frameId===this.frameId)return;if(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf)this.convertToPath()},convertStarToPath:function g(){var v=Math.floor(this.pt.v)*2,p=Math.PI*2/v,x=!0,Z=this.or.v,O=this.ir.v,R=this.os.v,j=this.is.v,q=2*Math.PI*Z/(v*2),J=2*Math.PI*O/(v*2),C,N,G,Q,M=-Math.PI/2;M+=this.r.v;var L=this.data.d===3?-1:1;this.v._length=0;for(C=0;C<v;C+=1){N=x?Z:O,G=x?R:j,Q=x?q:J;var F=N*Math.cos(M),H=N*Math.sin(M),$=F===0&&H===0?0:H/Math.sqrt(F*F+H*H),T=F===0&&H===0?0:-F/Math.sqrt(F*F+H*H);F+=+this.p.v[0],H+=+this.p.v[1],this.v.setTripleAt(F,H,F-$*Q*G*L,H-T*Q*G*L,F+$*Q*G*L,H+T*Q*G*L,C,!0),x=!x,M+=p*L}},convertPolygonToPath:function g(){var v=Math.floor(this.pt.v),p=Math.PI*2/v,x=this.or.v,Z=this.os.v,O=2*Math.PI*x/(v*4),R,j=-Math.PI*0.5,q=this.data.d===3?-1:1;j+=this.r.v,this.v._length=0;for(R=0;R<v;R+=1){var J=x*Math.cos(j),C=x*Math.sin(j),N=J===0&&C===0?0:C/Math.sqrt(J*J+C*C),G=J===0&&C===0?0:-J/Math.sqrt(J*J+C*C);J+=+this.p.v[0],C+=+this.p.v[1],this.v.setTripleAt(J,C,J-N*O*Z*q,C-G*O*Z*q,J+N*O*Z*q,C+G*O*Z*q,R,!0),j+=p*q}this.paths.length=0,this.paths[0]=this.v}},extendPrototype([DynamicPropertyContainer],b),b}(),s=function(){function b(g,v){if(this.v=shapePool.newElement(),this.v.c=!0,this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.localShapeCollection.addShape(this.v),this.paths=this.localShapeCollection,this.elem=g,this.comp=g.comp,this.frameId=-1,this.d=v.d,this.initDynamicPropertyContainer(g),this.p=PropertyFactory.getProp(g,v.p,1,0,this),this.s=PropertyFactory.getProp(g,v.s,1,0,this),this.r=PropertyFactory.getProp(g,v.r,0,0,this),this.dynamicProperties.length)this.k=!0;else this.k=!1,this.convertRectToPath()}return b.prototype={convertRectToPath:function g(){var v=this.p.v[0],p=this.p.v[1],x=this.s.v[0]/2,Z=this.s.v[1]/2,O=bmMin(x,Z,this.r.v),R=O*(1-roundCorner);if(this.v._length=0,this.d===2||this.d===1)if(this.v.setTripleAt(v+x,p-Z+O,v+x,p-Z+O,v+x,p-Z+R,0,!0),this.v.setTripleAt(v+x,p+Z-O,v+x,p+Z-R,v+x,p+Z-O,1,!0),O!==0)this.v.setTripleAt(v+x-O,p+Z,v+x-O,p+Z,v+x-R,p+Z,2,!0),this.v.setTripleAt(v-x+O,p+Z,v-x+R,p+Z,v-x+O,p+Z,3,!0),this.v.setTripleAt(v-x,p+Z-O,v-x,p+Z-O,v-x,p+Z-R,4,!0),this.v.setTripleAt(v-x,p-Z+O,v-x,p-Z+R,v-x,p-Z+O,5,!0),this.v.setTripleAt(v-x+O,p-Z,v-x+O,p-Z,v-x+R,p-Z,6,!0),this.v.setTripleAt(v+x-O,p-Z,v+x-R,p-Z,v+x-O,p-Z,7,!0);else this.v.setTripleAt(v-x,p+Z,v-x+R,p+Z,v-x,p+Z,2),this.v.setTripleAt(v-x,p-Z,v-x,p-Z+R,v-x,p-Z,3);else if(this.v.setTripleAt(v+x,p-Z+O,v+x,p-Z+R,v+x,p-Z+O,0,!0),O!==0)this.v.setTripleAt(v+x-O,p-Z,v+x-O,p-Z,v+x-R,p-Z,1,!0),this.v.setTripleAt(v-x+O,p-Z,v-x+R,p-Z,v-x+O,p-Z,2,!0),this.v.setTripleAt(v-x,p-Z+O,v-x,p-Z+O,v-x,p-Z+R,3,!0),this.v.setTripleAt(v-x,p+Z-O,v-x,p+Z-R,v-x,p+Z-O,4,!0),this.v.setTripleAt(v-x+O,p+Z,v-x+O,p+Z,v-x+R,p+Z,5,!0),this.v.setTripleAt(v+x-O,p+Z,v+x-R,p+Z,v+x-O,p+Z,6,!0),this.v.setTripleAt(v+x,p+Z-O,v+x,p+Z-O,v+x,p+Z-R,7,!0);else this.v.setTripleAt(v-x,p-Z,v-x+R,p-Z,v-x,p-Z,1,!0),this.v.setTripleAt(v-x,p+Z,v-x,p+Z-R,v-x,p+Z,2,!0),this.v.setTripleAt(v+x,p+Z,v+x-R,p+Z,v+x,p+Z,3,!0)},getValue:function g(){if(this.elem.globalData.frameId===this.frameId)return;if(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf)this.convertRectToPath()},reset:r},extendPrototype([DynamicPropertyContainer],b),b}();function f(b,g,v){var p;if(v===3||v===4){var x=v===3?g.pt:g.ks,Z=x.k;if(Z.length)p=new c(b,g,v);else p=new h(b,g,v)}else if(v===5)p=new s(b,g);else if(v===6)p=new u(b,g);else if(v===7)p=new m(b,g);if(p.k)b.addDynamicProperty(p);return p}function k(){return h}function w(){return c}var y={};return y.getShapeProp=f,y.getConstructorFunction=k,y.getKeyframedConstructorFunction=w,y}();/*!
3
3
  Transformation Matrix v2.0
4
4
  (c) Epistemex 2014-2015
@@ -36,7 +36,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
36
36
  \f\r](?:([^\\s"'>=/]+)([
37
37
  \f\r]*=[
38
38
  \f\r]*(?:[^
39
- \f\r"'\`<>=]|("|')|))|$)`,"g"),O6=/'/g,H6=/"/g,j6=/^(?:script|style|textarea|title)$/i,I4=(a)=>(i,...e)=>({_$litType$:a,strings:i,values:e}),I=I4(1),l1=I4(2),Bl=I4(3),C1=Symbol.for("lit-noChange"),V=Symbol.for("lit-nothing"),K6=new WeakMap,X2=N2.createTreeWalker(N2,129);function E6(a,i){if(!Z4(a)||!a.hasOwnProperty("raw"))throw Error("invalid template strings array");return F6!==void 0?F6.createHTML(i):i}var L6=(a,i)=>{let e=a.length-1,r=[],l,n=i===2?"<svg>":i===3?"<math>":"",t=$0;for(let h=0;h<e;h++){let o=a[h],c,u,m=-1,s=0;for(;s<o.length&&(t.lastIndex=s,u=t.exec(o),u!==null);)s=t.lastIndex,t===$0?u[1]==="!--"?t=R6:u[1]!==void 0?t=S6:u[2]!==void 0?(j6.test(u[2])&&(l=RegExp("</"+u[2],"g")),t=Y2):u[3]!==void 0&&(t=Y2):t===Y2?u[0]===">"?(t=l??$0,m=-1):u[1]===void 0?m=-2:(m=t.lastIndex-u[2].length,c=u[1],t=u[3]===void 0?Y2:u[3]==='"'?H6:O6):t===H6||t===O6?t=Y2:t===R6||t===S6?t=$0:(t=Y2,l=void 0);let f=t===Y2&&a[h+1].startsWith("/>")?" ":"";n+=t===$0?o+Ri:m>=0?(r.push(c),o.slice(0,m)+"$lit$"+o.slice(m)+Z2+f):o+Z2+(m===-2?h:f)}return[E6(a,n+(a[e]||"<?>")+(i===2?"</svg>":i===3?"</math>":"")),r]};class V0{constructor({strings:a,_$litType$:i},e){let r;this.parts=[];let l=0,n=0,t=a.length-1,h=this.parts,[o,c]=L6(a,i);if(this.el=V0.createElement(o,e),X2.currentNode=this.el.content,i===2||i===3){let u=this.el.content.firstChild;u.replaceWith(...u.childNodes)}for(;(r=X2.nextNode())!==null&&h.length<t;){if(r.nodeType===1){if(r.hasAttributes())for(let u of r.getAttributeNames())if(u.endsWith("$lit$")){let m=c[n++],s=r.getAttribute(u).split(Z2),f=/([.?@])?(.*)/.exec(m);h.push({type:1,index:l,name:f[2],strings:s,ctor:f[1]==="."?R4:f[1]==="?"?S4:f[1]==="@"?O4:d0}),r.removeAttribute(u)}else u.startsWith(Z2)&&(h.push({type:6,index:l}),r.removeAttribute(u));if(j6.test(r.tagName)){let u=r.textContent.split(Z2),m=u.length-1;if(m>0){r.textContent=b3?b3.emptyScript:"";for(let s=0;s<m;s++)r.append(u[s],W0()),X2.nextNode(),h.push({type:2,index:++l});r.append(u[m],W0())}}}else if(r.nodeType===8)if(r.data===y4)h.push({type:2,index:l});else{let u=-1;for(;(u=r.data.indexOf(Z2,u+1))!==-1;)h.push({type:7,index:l}),u+=Z2.length-1}l++}}static createElement(a,i){let e=N2.createElement("template");return e.innerHTML=a,e}}function G2(a,i,e=a,r){if(i===C1)return i;let l=r!==void 0?e._$Co?.[r]:e._$Cl,n=A0(i)?void 0:i._$litDirective$;return l?.constructor!==n&&(l?._$AO?.(!1),n===void 0?l=void 0:(l=new n(a),l._$AT(a,e,r)),r!==void 0?(e._$Co??=[])[r]=l:e._$Cl=l),l!==void 0&&(i=G2(a,l._$AS(a,i.values),l,r)),i}class F4{constructor(a,i){this._$AV=[],this._$AN=void 0,this._$AD=a,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(a){let{el:{content:i},parts:e}=this._$AD,r=(a?.creationScope??N2).importNode(i,!0);X2.currentNode=r;let l=X2.nextNode(),n=0,t=0,h=e[0];for(;h!==void 0;){if(n===h.index){let o;h.type===2?o=new c0(l,l.nextSibling,this,a):h.type===1?o=new h.ctor(l,h.name,h.strings,this,a):h.type===6&&(o=new H4(l,this,a)),this._$AV.push(o),h=e[++t]}n!==h?.index&&(l=X2.nextNode(),n++)}return X2.currentNode=N2,r}p(a){let i=0;for(let e of this._$AV)e!==void 0&&(e.strings!==void 0?(e._$AI(a,e,i),i+=e.strings.length-2):e._$AI(a[i])),i++}}class c0{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(a,i,e,r){this.type=2,this._$AH=V,this._$AN=void 0,this._$AA=a,this._$AB=i,this._$AM=e,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let a=this._$AA.parentNode,i=this._$AM;return i!==void 0&&a?.nodeType===11&&(a=i.parentNode),a}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(a,i=this){a=G2(this,a,i),A0(a)?a===V||a==null||a===""?(this._$AH!==V&&this._$AR(),this._$AH=V):a!==this._$AH&&a!==C1&&this._(a):a._$litType$!==void 0?this.$(a):a.nodeType!==void 0?this.T(a):M6(a)?this.k(a):this._(a)}O(a){return this._$AA.parentNode.insertBefore(a,this._$AB)}T(a){this._$AH!==a&&(this._$AR(),this._$AH=this.O(a))}_(a){this._$AH!==V&&A0(this._$AH)?this._$AA.nextSibling.data=a:this.T(N2.createTextNode(a)),this._$AH=a}$(a){let{values:i,_$litType$:e}=a,r=typeof e=="number"?this._$AC(a):(e.el===void 0&&(e.el=V0.createElement(E6(e.h,e.h[0]),this.options)),e);if(this._$AH?._$AD===r)this._$AH.p(i);else{let l=new F4(r,this),n=l.u(this.options);l.p(i),this.T(n),this._$AH=l}}_$AC(a){let i=K6.get(a.strings);return i===void 0&&K6.set(a.strings,i=new V0(a)),i}k(a){Z4(this._$AH)||(this._$AH=[],this._$AR());let i=this._$AH,e,r=0;for(let l of a)r===i.length?i.push(e=new c0(this.O(W0()),this.O(W0()),this,this.options)):e=i[r],e._$AI(l),r++;r<i.length&&(this._$AR(e&&e._$AB.nextSibling,r),i.length=r)}_$AR(a=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);a&&a!==this._$AB;){let e=a.nextSibling;a.remove(),a=e}}setConnected(a){this._$AM===void 0&&(this._$Cv=a,this._$AP?.(a))}}class d0{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(a,i,e,r,l){this.type=1,this._$AH=V,this._$AN=void 0,this.element=a,this.name=i,this._$AM=r,this.options=l,e.length>2||e[0]!==""||e[1]!==""?(this._$AH=Array(e.length-1).fill(new String),this.strings=e):this._$AH=V}_$AI(a,i=this,e,r){let l=this.strings,n=!1;if(l===void 0)a=G2(this,a,i,0),n=!A0(a)||a!==this._$AH&&a!==C1,n&&(this._$AH=a);else{let t=a,h,o;for(a=l[0],h=0;h<l.length-1;h++)o=G2(this,t[e+h],i,h),o===C1&&(o=this._$AH[h]),n||=!A0(o)||o!==this._$AH[h],o===V?a=V:a!==V&&(a+=(o??"")+l[h+1]),this._$AH[h]=o}n&&!r&&this.j(a)}j(a){a===V?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,a??"")}}class R4 extends d0{constructor(){super(...arguments),this.type=3}j(a){this.element[this.name]=a===V?void 0:a}}class S4 extends d0{constructor(){super(...arguments),this.type=4}j(a){this.element.toggleAttribute(this.name,!!a&&a!==V)}}class O4 extends d0{constructor(a,i,e,r,l){super(a,i,e,r,l),this.type=5}_$AI(a,i=this){if((a=G2(this,a,i,0)??V)===C1)return;let e=this._$AH,r=a===V&&e!==V||a.capture!==e.capture||a.once!==e.once||a.passive!==e.passive,l=a!==V&&(e===V||r);r&&this.element.removeEventListener(this.name,this,e),l&&this.element.addEventListener(this.name,this,a),this._$AH=a}handleEvent(a){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,a):this._$AH.handleEvent(a)}}class H4{constructor(a,i,e){this.element=a,this.type=6,this._$AN=void 0,this._$AM=i,this.options=e}get _$AU(){return this._$AM._$AU}_$AI(a){G2(this,a)}}var q6={M:"$lit$",P:Z2,A:y4,C:1,L:L6,R:F4,D:M6,V:G2,I:c0,H:d0,N:S4,U:O4,B:R4,F:H4},Si=x4.litHtmlPolyfillSupport;Si?.(V0,c0),(x4.litHtmlVersions??=[]).push("3.3.0");var T6=(a,i,e)=>{let r=e?.renderBefore??i,l=r._$litPart$;if(l===void 0){let n=e?.renderBefore??null;r._$litPart$=l=new c0(i.insertBefore(W0(),n),n,void 0,e??{})}return l._$AI(a),l};var K4=globalThis;class M1 extends L2{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let a=super.createRenderRoot();return this.renderOptions.renderBefore??=a.firstChild,a}update(a){let i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(a),this._$Do=T6(i,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return C1}}M1._$litElement$=!0,M1.finalized=!0,K4.litElementHydrateSupport?.({LitElement:M1});var Oi=K4.litElementPolyfillSupport;Oi?.({LitElement:M1});(K4.litElementVersions??=[]).push("4.2.0");var D=(a)=>(i,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(a,i)}):customElements.define(a,i)};var Hi={attribute:!0,type:String,converter:C0,reflect:!1,hasChanged:p3},Ki=(a=Hi,i,e)=>{let{kind:r,metadata:l}=e,n=globalThis.litPropertyMetadata.get(l);if(n===void 0&&globalThis.litPropertyMetadata.set(l,n=new Map),r==="setter"&&((a=Object.create(a)).wrapped=!0),n.set(e.name,a),r==="accessor"){let{name:t}=e;return{set(h){let o=i.get.call(this);i.set.call(this,h),this.requestUpdate(t,o,a)},init(h){return h!==void 0&&this.C(t,void 0,a,h),h}}}if(r==="setter"){let{name:t}=e;return function(h){let o=this[t];i.call(this,h),this.requestUpdate(t,o,a)}}throw Error("Unsupported decorator location: "+r)};function z(a){return(i,e)=>typeof e=="object"?Ki(a,i,e):((r,l,n)=>{let t=l.hasOwnProperty(n);return l.constructor.createProperty(n,r),t?Object.getOwnPropertyDescriptor(l,n):void 0})(a,i,e)}function E(a){return z({...a,state:!0,attribute:!1})}var U2=(a,i,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof i!="object"&&Object.defineProperty(a,i,e),e);function n1(a,i){return(e,r,l)=>{let n=(t)=>t.renderRoot?.querySelector(a)??null;if(i){let{get:t,set:h}=typeof r=="object"?e:l??(()=>{let o=Symbol();return{get(){return this[o]},set(c){this[o]=c}}})();return U2(e,r,{get(){let o=t.call(this);return o===void 0&&(o=n(this),(o!==null||this.hasUpdated)&&h.call(this,o)),o}})}return U2(e,r,{get(){return n(this)}})}}class M4{canVibrate;constructor(a){a.addController(this),this.canVibrate="vibrate"in navigator}trigger(a=10){if(!this.canVibrate)return;try{navigator.vibrate(a)}catch{}}click(){this.trigger(50)}lightClick(){this.trigger(35)}}function J6(a){let i=a.replace(/-/g,"").substring(0,12),e=parseInt(i,16);return new Date(e)}function D6(a){return a.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0})}class j4 extends EventTarget{host;_historyData=[];_hasData=null;_isInitialized=!1;_hasNextPage=!1;_initialLoadSize=20;_hasLoadedMore=!1;_clientSeed=null;_hasLoadedClientSeed=!1;constructor(a){super();this.host=a,a.addController(this),setTimeout(()=>{this.preloadHistory(),this.loadClientSeed()},100)}get historyData(){return this._historyData}get hasData(){return this._hasData}get isInitialized(){return this._isInitialized}get hasNextPage(){return this._hasNextPage}get clientSeed(){return this._clientSeed}get hasLoadedClientSeed(){return this._hasLoadedClientSeed}notifyDataChanged(){this.dispatchEvent(new CustomEvent("history-data-changed",{detail:{historyData:this._historyData,hasNextPage:this._hasNextPage,hasData:this._hasData}}))}notifyClientSeedChanged(){this.dispatchEvent(new CustomEvent("client-seed-changed",{detail:{clientSeed:this._clientSeed}}))}async preloadHistory(){if(!this.host.gameData?.baseUrl||!this.host.gameData?.authToken)return;try{let{historyData:a,hasNextPage:i}=await this.fetchHistory(void 0,this._initialLoadSize);this._historyData=a,this._hasData=a.length>0,this._hasNextPage=i,this._isInitialized=!0,this._hasLoadedMore=!1,this.notifyDataChanged()}catch(a){console.error("Failed to preload history:",a),this._isInitialized=!0,this._hasData=null}}async fetchHistory(a,i=5){if(!this.host.gameData?.baseUrl||!this.host.gameData?.authToken)return{historyData:[],hasNextPage:!1};let e=new URL(`${this.host.gameData.baseUrl}/bet/my-bets`);if(e.searchParams.append("limit",i.toString()),a)e.searchParams.append("beforeId",a);let r=await fetch(e.toString(),{headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.host.gameData.authToken}`}});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);let l=await r.json();return{historyData:l.results.map((t)=>({id:`${t.id.slice(0,3)}...${t.id.slice(-3)}`,fullId:t.id,timestamp:D6(J6(t.id)),currency:t.currency,bet:Number(t.amount),win:Number(t.payout)})),hasNextPage:!!l.nextCursor}}async refreshHistory(a=!1){try{let i=a&&this._hasLoadedMore?this._historyData.length:this._initialLoadSize,{historyData:e,hasNextPage:r}=await this.fetchHistory(void 0,i);if(this._historyData=e,this._hasData=e.length>0,this._hasNextPage=r,!a)this._hasLoadedMore=!1;this.notifyDataChanged()}catch(i){console.error("Failed to refresh history:",i)}}async loadMore(){if(!this._hasNextPage||this._historyData.length===0)return{historyData:[],hasNextPage:!1};let a=this._historyData[this._historyData.length-1],{historyData:i,hasNextPage:e}=await this.fetchHistory(a.fullId,this._initialLoadSize);return this._historyData=[...this._historyData,...i],this._hasNextPage=e,this._hasLoadedMore=!0,this.notifyDataChanged(),this.dispatchEvent(new CustomEvent("history-loaded-more")),{historyData:i,hasNextPage:e}}addNewBet(a){if(this._historyData.some((e)=>e.fullId===a.id))return;let i={id:`${a.id.slice(0,3)}...${a.id.slice(-3)}`,fullId:a.id,timestamp:D6(J6(a.id)),currency:a.currency,bet:Number(a.amount),win:Number(a.payout)};if(!this._hasLoadedMore&&this._historyData.length>=this._initialLoadSize)this._historyData=[i,...this._historyData.slice(0,this._initialLoadSize-1)],this._hasNextPage=!0;else this._historyData=[i,...this._historyData];this._hasData=!0,this.notifyDataChanged()}async loadClientSeed(){if(!this.host.gameData?.baseUrl||!this.host.gameData?.authToken||this._hasLoadedClientSeed)return;try{let a=await fetch(`${this.host.gameData.baseUrl}/provably-fair/my-info`,{method:"GET",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.host.gameData.authToken}`}});if(!a.ok)throw new Error(`HTTP error! status: ${a.status}`);let i=await a.json();this._clientSeed=i.clientSeed,this._hasLoadedClientSeed=!0,this.notifyClientSeedChanged()}catch(a){console.error("Failed to load client seed:",a)}}updateClientSeed(a){this._clientSeed=a,this.notifyClientSeedChanged()}}var C6="v4";class E4{host;muted=!1;audioCtx;buffer;spriteMap=null;constructor(a){this.host=a,a.addController(this);let i=window.AudioContext||window.webkitAudioContext;this.audioCtx=new i,fetch(`https://assets.betorigami.com/sounds/${C6}/sounds.mp3`).then((e)=>{return e.arrayBuffer().then((r)=>{this.audioCtx.decodeAudioData(r,(l)=>{this.buffer=l})}).catch((r)=>{})}).catch(),fetch(`https://assets.betorigami.com/sounds/${C6}/sounds.json`).then((e)=>e.json()).catch().then((e)=>{this.spriteMap=e.spritemap}).catch(),window.onclick=()=>{this.play("bet",!0),window.onclick=null}}async play(a,i,e=1,r,l=()=>{},n=!1){if(!this.buffer||!this.spriteMap)return;let t=this.audioCtx.createBufferSource();t.buffer=this.buffer;let h=this.spriteMap[a];try{if(this.audioCtx&&t){let o=this.audioCtx.createGain(),c=r??(this.host.gameData?.volume??100)/100,u=i??this.muted;if(o.gain.value=u?0:Math.min(c,1),o.connect(this.audioCtx.destination),t.connect(o),t.playbackRate.value=e,n)t.loop=!0,t.loopStart=h.start,t.loopEnd=h.end,t.start(0,h.start);else t.start(0,h.start),setTimeout(()=>{t?.stop(),l()},1000*(h.end-h.start));return t}}catch(o){console.error("Error playing sound",o)}}}var s1="USD";var $6=[1,2,3,4,8];var $1=2,W6=["ROULETTE"];class Y extends M1{static componentStyles=[];emit(a,i){let e=new CustomEvent(a,{bubbles:!0,cancelable:!1,composed:!0,detail:{},...i});return this.dispatchEvent(e),e}}var Yn=y2("language"),W="en";var Ni={ar:()=>Promise.resolve().then(() => v1(L4(),1)),de:()=>Promise.resolve().then(() => v1(q4(),1)),en:()=>Promise.resolve().then(() => v1(T4(),1)),es:()=>Promise.resolve().then(() => v1(J4(),1)),fi:()=>Promise.resolve().then(() => v1(D4(),1)),fr:()=>Promise.resolve().then(() => v1(C4(),1)),hi:()=>Promise.resolve().then(() => v1($4(),1)),id:()=>Promise.resolve().then(() => v1(W4(),1)),ja:()=>Promise.resolve().then(() => v1(A4(),1)),ko:()=>Promise.resolve().then(() => v1(V4(),1)),pl:()=>Promise.resolve().then(() => v1(Q4(),1)),pt:()=>Promise.resolve().then(() => v1(Y4(),1)),ru:()=>Promise.resolve().then(() => v1(X4(),1)),tr:()=>Promise.resolve().then(() => v1(N4(),1)),vi:()=>Promise.resolve().then(() => v1(G4(),1)),zh:()=>Promise.resolve().then(() => v1(U4(),1))};class A6{loadedLanguages=new Set;loadingPromises=new Map;loadedTranslations=new Map;async loadLanguage(a){if(this.loadedLanguages.has(a))return;if(this.loadingPromises.has(a))return this.loadingPromises.get(a);let i=this.loadLanguageModule(a);this.loadingPromises.set(a,i);try{await i,this.loadedLanguages.add(a)}finally{this.loadingPromises.delete(a)}}getTranslationData(a){return this.loadedTranslations.get(a)||null}isLanguageLoaded(a){return this.loadedLanguages.has(a)}getLoadedLanguages(){return Array.from(this.loadedLanguages)}async preloadLanguages(a){let i=a.map((e)=>this.loadLanguage(e).catch(()=>{}));await Promise.all(i)}clearAll(){this.loadedLanguages.clear(),this.loadingPromises.clear(),this.loadedTranslations.clear(),P4()}async loadLanguageModule(a){try{let i=await Ni[a]();this.loadedTranslations.set(a,i.default),P4()}catch(i){throw i}}}var Q0=new A6;Q0.loadLanguage(W).catch(()=>{});var Q6=v1(L4(),1),Y6=v1(q4(),1),X6=v1(T4(),1),N6=v1(J4(),1),G6=v1(D4(),1),U6=v1(C4(),1),P6=v1($4(),1),B6=v1(W4(),1),_6=v1(A4(),1),a7=v1(V4(),1),i7=v1(Q4(),1),e7=v1(Y4(),1),r7=v1(X4(),1),l7=v1(N4(),1),n7=v1(G4(),1),t7=v1(U4(),1);var B4={ar:Q6.default,de:Y6.default,en:X6.default,es:N6.default,fi:G6.default,fr:U6.default,hi:P6.default,id:B6.default,ja:_6.default,ko:a7.default,pl:i7.default,pt:e7.default,ru:r7.default,tr:l7.default,vi:n7.default,zh:t7.default};function Gi(a){let i=Q0.getTranslationData(a);if(i)return i;return B4[a]||B4[W]}var kt=y2(Symbol("translation"));class o7{cache=new Map;maxSize=1000;get(a){return this.cache.get(a)}set(a,i){if(this.cache.size>=this.maxSize)this.cache.clear();this.cache.set(a,i)}clear(){this.cache.clear()}size(){return this.cache.size}}var _4=new o7,V6=new Map;function Ui(a){let i=V6.get(a);if(!i)i=a.split("."),V6.set(a,i);return i}function h7(a,i,e){let r=Gi(i);try{let l=Ui(a),n=r;for(let t of l)if(n=n?.[t],n===void 0)break;if(typeof n==="string")return n;if(i!==W)return h7(a,W,e);return e||a}catch{return e||a}}function S(a,i=W,e){let r=e?`${a}:${i}:${e}`:`${a}:${i}`,l=_4.get(r);if(l!==void 0)return l;let n=h7(a,i,e);return _4.set(r,n),n}function P4(){_4.clear()}var F1={betAmount:"0.00",scale:1,updateBetAmount:()=>{},updateBalance:()=>{},currency:s1,currencyDecimals:2,showCurrencyAsText:!1,balance:0,baseUrl:"",authToken:"",publicKey:"",hotkeysOpenEnabled:!1,showMaxBetButton:!1,volume:100,instantBetEnabled:!1,mainWidth:0,updateMainWidth:()=>{},updateHotkeysOpenEnabled:()=>{},updateShowMaxBetButton:()=>{},updateVolume:()=>{},updateInstantBetEnabled:()=>{},language:W,seasonTheme:"DEFAULT",autobetNumberOfBets:0,updateAutobetNumberOfBets:()=>{},soundController:void 0,historyController:void 0,hapticController:void 0,lobbyUrl:"https://betorigami.com",depositUrl:void 0,hasLoadedBalance:!1,maxPayout:null,minBet:null,maxBet:null,edge:2,footerPosition:"BELOW",logoUrl:null,customMinesGemSvgUrl:null},U=y2(Symbol("game"));var Pi=20,Bi=1,P2=1e6,s7=1e6,_i=-7,ae=21,ie=!1,Y0="[big.js] ",B2=Y0+"Invalid ",z3=B2+"decimal places",ee=B2+"rounding mode",u7=Y0+"Division by zero",x1={},p2=void 0,re=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function c7(){function a(i){var e=this;if(!(e instanceof a))return i===p2&&arguments.length===0?c7():new a(i);if(i instanceof a)e.s=i.s,e.e=i.e,e.c=i.c.slice();else{if(typeof i!=="string"){if(a.strict===!0&&typeof i!=="bigint")throw TypeError(B2+"value");i=i===0&&1/i<0?"-0":String(i)}le(e,i)}e.constructor=a}return a.prototype=x1,a.DP=Pi,a.RM=Bi,a.NE=_i,a.PE=ae,a.strict=ie,a.roundDown=0,a.roundHalfUp=1,a.roundHalfEven=2,a.roundUp=3,a}function le(a,i){var e,r,l;if(!re.test(i))throw Error(B2+"number");if(a.s=i.charAt(0)=="-"?(i=i.slice(1),-1):1,(e=i.indexOf("."))>-1)i=i.replace(".","");if((r=i.search(/e/i))>0){if(e<0)e=r;e+=+i.slice(r+1),i=i.substring(0,r)}else if(e<0)e=i.length;l=i.length;for(r=0;r<l&&i.charAt(r)=="0";)++r;if(r==l)a.c=[a.e=0];else{for(;l>0&&i.charAt(--l)=="0";);a.e=e-r-1,a.c=[];for(e=0;r<=l;)a.c[e++]=+i.charAt(r++)}return a}function _2(a,i,e,r){var l=a.c;if(e===p2)e=a.constructor.RM;if(e!==0&&e!==1&&e!==2&&e!==3)throw Error(ee);if(i<1)if(r=e===3&&(r||!!l[0])||i===0&&(e===1&&l[0]>=5||e===2&&(l[0]>5||l[0]===5&&(r||l[1]!==p2))),l.length=1,r)a.e=a.e-i+1,l[0]=1;else l[0]=a.e=0;else if(i<l.length){if(r=e===1&&l[i]>=5||e===2&&(l[i]>5||l[i]===5&&(r||l[i+1]!==p2||l[i-1]&1))||e===3&&(r||!!l[0]),l.length=i,r){for(;++l[--i]>9;)if(l[i]=0,i===0){++a.e,l.unshift(1);break}}for(i=l.length;!l[--i];)l.pop()}return a}function a0(a,i,e){var r=a.e,l=a.c.join(""),n=l.length;if(i)l=l.charAt(0)+(n>1?"."+l.slice(1):"")+(r<0?"e":"e+")+r;else if(r<0){for(;++r;)l="0"+l;l="0."+l}else if(r>0){if(++r>n)for(r-=n;r--;)l+="0";else if(r<n)l=l.slice(0,r)+"."+l.slice(r)}else if(n>1)l=l.charAt(0)+"."+l.slice(1);return a.s<0&&e?"-"+l:l}x1.abs=function(){var a=new this.constructor(this);return a.s=1,a};x1.cmp=function(a){var i,e=this,r=e.c,l=(a=new e.constructor(a)).c,n=e.s,t=a.s,h=e.e,o=a.e;if(!r[0]||!l[0])return!r[0]?!l[0]?0:-t:n;if(n!=t)return n;if(i=n<0,h!=o)return h>o^i?1:-1;t=(h=r.length)<(o=l.length)?h:o;for(n=-1;++n<t;)if(r[n]!=l[n])return r[n]>l[n]^i?1:-1;return h==o?0:h>o^i?1:-1};x1.div=function(a){var i=this,e=i.constructor,r=i.c,l=(a=new e(a)).c,n=i.s==a.s?1:-1,t=e.DP;if(t!==~~t||t<0||t>P2)throw Error(z3);if(!l[0])throw Error(u7);if(!r[0])return a.s=n,a.c=[a.e=0],a;var h,o,c,u,m,s=l.slice(),f=h=l.length,k=r.length,w=r.slice(0,h),y=w.length,b=a,g=b.c=[],v=0,p=t+(b.e=i.e-a.e)+1;b.s=n,n=p<0?0:p,s.unshift(0);for(;y++<h;)w.push(0);do{for(c=0;c<10;c++){if(h!=(y=w.length))u=h>y?1:-1;else for(m=-1,u=0;++m<h;)if(l[m]!=w[m]){u=l[m]>w[m]?1:-1;break}if(u<0){for(o=y==h?l:s;y;){if(w[--y]<o[y]){m=y;for(;m&&!w[--m];)w[m]=9;--w[m],w[y]+=10}w[y]-=o[y]}for(;!w[0];)w.shift()}else break}if(g[v++]=u?c:++c,w[0]&&u)w[y]=r[f]||0;else w=[r[f]]}while((f++<k||w[0]!==p2)&&n--);if(!g[0]&&v!=1)g.shift(),b.e--,p--;if(v>p)_2(b,p,e.RM,w[0]!==p2);return b};x1.eq=function(a){return this.cmp(a)===0};x1.gt=function(a){return this.cmp(a)>0};x1.gte=function(a){return this.cmp(a)>-1};x1.lt=function(a){return this.cmp(a)<0};x1.lte=function(a){return this.cmp(a)<1};x1.minus=x1.sub=function(a){var i,e,r,l,n=this,t=n.constructor,h=n.s,o=(a=new t(a)).s;if(h!=o)return a.s=-o,n.plus(a);var c=n.c.slice(),u=n.e,m=a.c,s=a.e;if(!c[0]||!m[0]){if(m[0])a.s=-o;else if(c[0])a=new t(n);else a.s=1;return a}if(h=u-s){if(l=h<0)h=-h,r=c;else s=u,r=m;r.reverse();for(o=h;o--;)r.push(0);r.reverse()}else{e=((l=c.length<m.length)?c:m).length;for(h=o=0;o<e;o++)if(c[o]!=m[o]){l=c[o]<m[o];break}}if(l)r=c,c=m,m=r,a.s=-a.s;if((o=(e=m.length)-(i=c.length))>0)for(;o--;)c[i++]=0;for(o=i;e>h;){if(c[--e]<m[e]){for(i=e;i&&!c[--i];)c[i]=9;--c[i],c[e]+=10}c[e]-=m[e]}for(;c[--o]===0;)c.pop();for(;c[0]===0;)c.shift(),--s;if(!c[0])a.s=1,c=[s=0];return a.c=c,a.e=s,a};x1.mod=function(a){var i,e=this,r=e.constructor,l=e.s,n=(a=new r(a)).s;if(!a.c[0])throw Error(u7);if(e.s=a.s=1,i=a.cmp(e)==1,e.s=l,a.s=n,i)return new r(e);return l=r.DP,n=r.RM,r.DP=r.RM=0,e=e.div(a),r.DP=l,r.RM=n,this.minus(e.times(a))};x1.neg=function(){var a=new this.constructor(this);return a.s=-a.s,a};x1.plus=x1.add=function(a){var i,e,r,l=this,n=l.constructor;if(a=new n(a),l.s!=a.s)return a.s=-a.s,l.minus(a);var{e:t,c:h}=l,o=a.e,c=a.c;if(!h[0]||!c[0]){if(!c[0])if(h[0])a=new n(l);else a.s=l.s;return a}if(h=h.slice(),i=t-o){if(i>0)o=t,r=c;else i=-i,r=h;r.reverse();for(;i--;)r.push(0);r.reverse()}if(h.length-c.length<0)r=c,c=h,h=r;i=c.length;for(e=0;i;h[i]%=10)e=(h[--i]=h[i]+c[i]+e)/10|0;if(e)h.unshift(e),++o;for(i=h.length;h[--i]===0;)h.pop();return a.c=h,a.e=o,a};x1.pow=function(a){var i=this,e=new i.constructor("1"),r=e,l=a<0;if(a!==~~a||a<-s7||a>s7)throw Error(B2+"exponent");if(l)a=-a;for(;;){if(a&1)r=r.times(i);if(a>>=1,!a)break;i=i.times(i)}return l?e.div(r):r};x1.prec=function(a,i){if(a!==~~a||a<1||a>P2)throw Error(B2+"precision");return _2(new this.constructor(this),a,i)};x1.round=function(a,i){if(a===p2)a=0;else if(a!==~~a||a<-P2||a>P2)throw Error(z3);return _2(new this.constructor(this),a+this.e+1,i)};x1.sqrt=function(){var a,i,e,r=this,l=r.constructor,n=r.s,t=r.e,h=new l("0.5");if(!r.c[0])return new l(r);if(n<0)throw Error(Y0+"No square root");if(n=Math.sqrt(+a0(r,!0,!0)),n===0||n===1/0){if(i=r.c.join(""),!(i.length+t&1))i+="0";n=Math.sqrt(i),t=((t+1)/2|0)-(t<0||t&1),a=new l((n==1/0?"5e":(n=n.toExponential()).slice(0,n.indexOf("e")+1))+t)}else a=new l(n+"");t=a.e+(l.DP+=4);do e=a,a=h.times(e.plus(r.div(e)));while(e.c.slice(0,t).join("")!==a.c.slice(0,t).join(""));return _2(a,(l.DP-=4)+a.e+1,l.RM)};x1.times=x1.mul=function(a){var i,e=this,r=e.constructor,l=e.c,n=(a=new r(a)).c,t=l.length,h=n.length,o=e.e,c=a.e;if(a.s=e.s==a.s?1:-1,!l[0]||!n[0])return a.c=[a.e=0],a;if(a.e=o+c,t<h)i=l,l=n,n=i,c=t,t=h,h=c;for(i=new Array(c=t+h);c--;)i[c]=0;for(o=h;o--;){h=0;for(c=t+o;c>o;)h=i[c]+n[o]*l[c-o-1]+h,i[c--]=h%10,h=h/10|0;i[c]=h}if(h)++a.e;else i.shift();for(o=i.length;!i[--o];)i.pop();return a.c=i,a};x1.toExponential=function(a,i){var e=this,r=e.c[0];if(a!==p2){if(a!==~~a||a<0||a>P2)throw Error(z3);e=_2(new e.constructor(e),++a,i);for(;e.c.length<a;)e.c.push(0)}return a0(e,!0,!!r)};x1.toFixed=function(a,i){var e=this,r=e.c[0];if(a!==p2){if(a!==~~a||a<0||a>P2)throw Error(z3);e=_2(new e.constructor(e),a+e.e+1,i);for(a=a+e.e+1;e.c.length<a;)e.c.push(0)}return a0(e,!1,!!r)};x1.toJSON=x1.toString=function(){var a=this,i=a.constructor;return a0(a,a.e<=i.NE||a.e>=i.PE,!!a.c[0])};if(typeof Symbol!=="undefined")x1[Symbol.for("nodejs.util.inspect.custom")]=x1.toJSON;x1.toNumber=function(){var a=+a0(this,!0,!0);if(this.constructor.strict===!0&&!this.eq(a.toString()))throw Error(Y0+"Imprecise conversion");return a};x1.toPrecision=function(a,i){var e=this,r=e.constructor,l=e.c[0];if(a!==p2){if(a!==~~a||a<1||a>P2)throw Error(B2+"precision");e=_2(new r(e),a,i);for(;e.c.length<a;)e.c.push(0)}return a0(e,a<=e.e||e.e<=r.NE||e.e>=r.PE,!!l)};x1.valueOf=function(){var a=this,i=a.constructor;if(i.strict===!0)throw Error(Y0+"valueOf disallowed");return a0(a,a.e<=i.NE||a.e>=i.PE,!0)};var I2=c7(),K=I2;class x3 extends Y{constructor(){super(...arguments);this.currency=s1;this.balance=F1.balance;this.currencyDecimals=F1.currencyDecimals;this.baseUrl=F1.baseUrl;this.authToken=F1.authToken;this.origamiGame="DICE";this.lobbyUrl=F1.lobbyUrl;this.depositUrl=F1.depositUrl;this.maxPayout=F1.maxPayout;this.minBet=F1.minBet;this.maxBet=F1.maxBet;this.edge=F1.edge;this.customMinesGemSvgUrl=F1.customMinesGemSvgUrl;this.showCurrencyAsText=!1;this.footerPosition=F1.footerPosition;this.logoUrl=null;this.seasonTheme="DEFAULT";this.betAmount=F1.betAmount;this.autobetNumberOfBets=F1.autobetNumberOfBets;this.hotkeysOpenEnabled=!1;this.showMaxBetButton=F1.showMaxBetButton;this.volume=F1.volume;this.instantBetEnabled=F1.instantBetEnabled;this.mainWidth=F1.mainWidth;this.publicKey=F1.publicKey;this.scale=1;this.language=F1.language}_soundController=new E4(this);_historyController=new j4(this);_hapticController=new M4(this);_resizeObserver=null;hasLoadedBalance=!1;_gameProvider=new Q2(this,{context:U,initialValue:this.createGameContextValue()});connectedCallback(){super.connectedCallback(),this.updateProviderValue(),this.fetchBalance(),this.fetchPublicKey(),this.setupResizeObserver(),this.calculateScale(),this.updateMainWidth(document.documentElement.clientWidth)}async firstUpdated(a){if(super.firstUpdated(a),await this.updateComplete,!W6.includes(this.origamiGame))this.updateBetAmount(K(this.minBet??0))}disconnectedCallback(){super.disconnectedCallback(),this.cleanupResizeObserver()}updated(a){if(super.updated(a),a.has("currency")||a.has("balance")||a.has("baseUrl")||a.has("showCurrencyAsText")||a.has("authToken")||a.has("hotkeysOpenEnabled")||a.has("volume")||a.has("instantBetEnabled")||a.has("showMaxBetButton")||a.has("mainWidth")||a.has("footerPosition")||a.has("logoUrl")||a.has("scale")||a.has("seasonTheme")||a.has("customMinesGemSvgUrl")||a.has("edge")||a.has("language")||a.has("maxPayout")||a.has("minBet")||a.has("maxBet")||a.has("depositUrl")||a.has("currencyDecimals")||a.has("lobbyUrl"))this.updateProviderValue()}get gameData(){return this._gameProvider.value}createGameContextValue(){return{betAmount:this.betAmount,updateBetAmount:this.updateBetAmount.bind(this),updateBalance:this.updateBalance.bind(this),currency:this.currency,showCurrencyAsText:this.showCurrencyAsText,currencyDecimals:this.currencyDecimals,lobbyUrl:this.lobbyUrl,depositUrl:this.depositUrl,maxPayout:this.maxPayout,minBet:this.minBet,maxBet:this.maxBet,edge:this.edge,balance:this.balance,hasLoadedBalance:this.hasLoadedBalance,baseUrl:this.baseUrl,authToken:this.authToken,publicKey:this.publicKey,autobetNumberOfBets:this.autobetNumberOfBets,hotkeysOpenEnabled:this.hotkeysOpenEnabled,showMaxBetButton:this.showMaxBetButton,volume:this.volume,instantBetEnabled:this.instantBetEnabled,soundController:this._soundController,historyController:this._historyController,hapticController:this._hapticController,updateHotkeysOpenEnabled:this.updateHotkeysOpenEnabled.bind(this),updateShowMaxBetButton:this.updateShowMaxBetButton.bind(this),updateVolume:this.updateVolume.bind(this),updateInstantBetEnabled:this.updateInstantBetEnabled.bind(this),updateAutobetNumberOfBets:this.updateAutobetNumberOfBets.bind(this),mainWidth:this.mainWidth,updateMainWidth:this.updateMainWidth.bind(this),language:this.language,footerPosition:this.footerPosition,logoUrl:this.logoUrl,scale:this.scale,seasonTheme:this.seasonTheme,customMinesGemSvgUrl:this.customMinesGemSvgUrl}}updateProviderValue(){this._gameProvider.setValue(this.createGameContextValue())}fetchBalance=async()=>{if(!this.authToken||!this.baseUrl){this.balance=1000,this.hasLoadedBalance=!0,this.updateProviderValue();return}try{let a=await fetch(`${this.baseUrl}/users/balance?currency=${this.currency}&origamiGame=${this.origamiGame}`,{headers:{Authorization:`Bearer ${this.authToken}`,"Content-Type":"application/json"}});if(!a.ok){console.error("Failed to fetch balance:",a.statusText);return}let i=await a.json();this.balance=K(i.balance).toNumber(),this.hasLoadedBalance=!0,this.updateProviderValue()}catch(a){console.error("Error fetching balance:",a)}};fetchPublicKey=async()=>{if(!this.authToken||!this.baseUrl)return;let a=await fetch(`${this.baseUrl}/provably-fair/public-key`);if(!a.ok){console.error("Failed to fetch public key:",a.statusText);return}let i=await a.json();this.publicKey=i.publicKey};updateHotkeysOpenEnabled(a){this.hotkeysOpenEnabled=a,this.updateProviderValue()}updateShowMaxBetButton(a){this.showMaxBetButton=a,this.updateProviderValue()}updateVolume(a){this.volume=a,this.updateProviderValue()}updateInstantBetEnabled(a){this.instantBetEnabled=a,this.updateProviderValue()}updateAutobetNumberOfBets(a){this.autobetNumberOfBets=a,this.updateProviderValue()}updateMainWidth(a){this.mainWidth=a,this.updateProviderValue()}updateBetAmount(a){if(a.lt(0)){this.betAmount="0";return}let i=a.toFixed(this.currencyDecimals);this.betAmount=i,this.updateProviderValue()}updateBalance(a){if(a.lt(0)){this.balance=0;return}this.balance=a.toNumber(),this.updateProviderValue()}_boundCalculateScale=this.calculateScale.bind(this);setupResizeObserver(){if(typeof ResizeObserver!=="undefined")this._resizeObserver=new ResizeObserver(()=>{this.calculateScale(),this.gameData.updateMainWidth(document.documentElement.clientWidth)}),this._resizeObserver.observe(document.body);else window.addEventListener("resize",this._boundCalculateScale)}cleanupResizeObserver(){if(this._resizeObserver)this._resizeObserver.disconnect(),this._resizeObserver=null;else window.removeEventListener("resize",this._boundCalculateScale)}calculateScale(){let a=document.documentElement.clientWidth,i=document.documentElement.clientHeight,e=1200,r=675;if(a/i>1.7777777777777777){let n=i/675;this.scale=n}else{let n=a/1200;this.scale=n}this.requestUpdate()}render(){let a=(()=>{switch(this.origamiGame){case"DICE":return I`<origami-dice-game></origami-dice-game>`;case"KENO":return I`<origami-keno-game></origami-keno-game>`;case"MINES":return I`<origami-mines-game></origami-mines-game>`;case"LIMBO":return I`<origami-limbo-game></origami-limbo-game>`;case"ADVANCED_DICE":return I`<origami-advanced-dice-game></origami-advanced-dice-game>`;case"PLINKO":return I`<origami-plinko-game></origami-plinko-game>`;case"DIAMONDS":return I`<origami-diamonds-game></origami-diamonds-game>`;case"WHEEL":return I`<origami-wheel-game></origami-wheel-game>`;case"ROULETTE":return I`<origami-roulette-game></origami-roulette-game>`;default:this.origamiGame}})(),i=`
39
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),O6=/'/g,H6=/"/g,j6=/^(?:script|style|textarea|title)$/i,I4=(a)=>(i,...e)=>({_$litType$:a,strings:i,values:e}),I=I4(1),l1=I4(2),_l=I4(3),C1=Symbol.for("lit-noChange"),V=Symbol.for("lit-nothing"),K6=new WeakMap,X2=N2.createTreeWalker(N2,129);function E6(a,i){if(!Z4(a)||!a.hasOwnProperty("raw"))throw Error("invalid template strings array");return F6!==void 0?F6.createHTML(i):i}var L6=(a,i)=>{let e=a.length-1,r=[],l,n=i===2?"<svg>":i===3?"<math>":"",t=$0;for(let h=0;h<e;h++){let o=a[h],c,u,m=-1,s=0;for(;s<o.length&&(t.lastIndex=s,u=t.exec(o),u!==null);)s=t.lastIndex,t===$0?u[1]==="!--"?t=R6:u[1]!==void 0?t=S6:u[2]!==void 0?(j6.test(u[2])&&(l=RegExp("</"+u[2],"g")),t=Y2):u[3]!==void 0&&(t=Y2):t===Y2?u[0]===">"?(t=l??$0,m=-1):u[1]===void 0?m=-2:(m=t.lastIndex-u[2].length,c=u[1],t=u[3]===void 0?Y2:u[3]==='"'?H6:O6):t===H6||t===O6?t=Y2:t===R6||t===S6?t=$0:(t=Y2,l=void 0);let f=t===Y2&&a[h+1].startsWith("/>")?" ":"";n+=t===$0?o+Ri:m>=0?(r.push(c),o.slice(0,m)+"$lit$"+o.slice(m)+Z2+f):o+Z2+(m===-2?h:f)}return[E6(a,n+(a[e]||"<?>")+(i===2?"</svg>":i===3?"</math>":"")),r]};class V0{constructor({strings:a,_$litType$:i},e){let r;this.parts=[];let l=0,n=0,t=a.length-1,h=this.parts,[o,c]=L6(a,i);if(this.el=V0.createElement(o,e),X2.currentNode=this.el.content,i===2||i===3){let u=this.el.content.firstChild;u.replaceWith(...u.childNodes)}for(;(r=X2.nextNode())!==null&&h.length<t;){if(r.nodeType===1){if(r.hasAttributes())for(let u of r.getAttributeNames())if(u.endsWith("$lit$")){let m=c[n++],s=r.getAttribute(u).split(Z2),f=/([.?@])?(.*)/.exec(m);h.push({type:1,index:l,name:f[2],strings:s,ctor:f[1]==="."?R4:f[1]==="?"?S4:f[1]==="@"?O4:d0}),r.removeAttribute(u)}else u.startsWith(Z2)&&(h.push({type:6,index:l}),r.removeAttribute(u));if(j6.test(r.tagName)){let u=r.textContent.split(Z2),m=u.length-1;if(m>0){r.textContent=b3?b3.emptyScript:"";for(let s=0;s<m;s++)r.append(u[s],W0()),X2.nextNode(),h.push({type:2,index:++l});r.append(u[m],W0())}}}else if(r.nodeType===8)if(r.data===y4)h.push({type:2,index:l});else{let u=-1;for(;(u=r.data.indexOf(Z2,u+1))!==-1;)h.push({type:7,index:l}),u+=Z2.length-1}l++}}static createElement(a,i){let e=N2.createElement("template");return e.innerHTML=a,e}}function G2(a,i,e=a,r){if(i===C1)return i;let l=r!==void 0?e._$Co?.[r]:e._$Cl,n=A0(i)?void 0:i._$litDirective$;return l?.constructor!==n&&(l?._$AO?.(!1),n===void 0?l=void 0:(l=new n(a),l._$AT(a,e,r)),r!==void 0?(e._$Co??=[])[r]=l:e._$Cl=l),l!==void 0&&(i=G2(a,l._$AS(a,i.values),l,r)),i}class F4{constructor(a,i){this._$AV=[],this._$AN=void 0,this._$AD=a,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(a){let{el:{content:i},parts:e}=this._$AD,r=(a?.creationScope??N2).importNode(i,!0);X2.currentNode=r;let l=X2.nextNode(),n=0,t=0,h=e[0];for(;h!==void 0;){if(n===h.index){let o;h.type===2?o=new c0(l,l.nextSibling,this,a):h.type===1?o=new h.ctor(l,h.name,h.strings,this,a):h.type===6&&(o=new H4(l,this,a)),this._$AV.push(o),h=e[++t]}n!==h?.index&&(l=X2.nextNode(),n++)}return X2.currentNode=N2,r}p(a){let i=0;for(let e of this._$AV)e!==void 0&&(e.strings!==void 0?(e._$AI(a,e,i),i+=e.strings.length-2):e._$AI(a[i])),i++}}class c0{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(a,i,e,r){this.type=2,this._$AH=V,this._$AN=void 0,this._$AA=a,this._$AB=i,this._$AM=e,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let a=this._$AA.parentNode,i=this._$AM;return i!==void 0&&a?.nodeType===11&&(a=i.parentNode),a}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(a,i=this){a=G2(this,a,i),A0(a)?a===V||a==null||a===""?(this._$AH!==V&&this._$AR(),this._$AH=V):a!==this._$AH&&a!==C1&&this._(a):a._$litType$!==void 0?this.$(a):a.nodeType!==void 0?this.T(a):M6(a)?this.k(a):this._(a)}O(a){return this._$AA.parentNode.insertBefore(a,this._$AB)}T(a){this._$AH!==a&&(this._$AR(),this._$AH=this.O(a))}_(a){this._$AH!==V&&A0(this._$AH)?this._$AA.nextSibling.data=a:this.T(N2.createTextNode(a)),this._$AH=a}$(a){let{values:i,_$litType$:e}=a,r=typeof e=="number"?this._$AC(a):(e.el===void 0&&(e.el=V0.createElement(E6(e.h,e.h[0]),this.options)),e);if(this._$AH?._$AD===r)this._$AH.p(i);else{let l=new F4(r,this),n=l.u(this.options);l.p(i),this.T(n),this._$AH=l}}_$AC(a){let i=K6.get(a.strings);return i===void 0&&K6.set(a.strings,i=new V0(a)),i}k(a){Z4(this._$AH)||(this._$AH=[],this._$AR());let i=this._$AH,e,r=0;for(let l of a)r===i.length?i.push(e=new c0(this.O(W0()),this.O(W0()),this,this.options)):e=i[r],e._$AI(l),r++;r<i.length&&(this._$AR(e&&e._$AB.nextSibling,r),i.length=r)}_$AR(a=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);a&&a!==this._$AB;){let e=a.nextSibling;a.remove(),a=e}}setConnected(a){this._$AM===void 0&&(this._$Cv=a,this._$AP?.(a))}}class d0{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(a,i,e,r,l){this.type=1,this._$AH=V,this._$AN=void 0,this.element=a,this.name=i,this._$AM=r,this.options=l,e.length>2||e[0]!==""||e[1]!==""?(this._$AH=Array(e.length-1).fill(new String),this.strings=e):this._$AH=V}_$AI(a,i=this,e,r){let l=this.strings,n=!1;if(l===void 0)a=G2(this,a,i,0),n=!A0(a)||a!==this._$AH&&a!==C1,n&&(this._$AH=a);else{let t=a,h,o;for(a=l[0],h=0;h<l.length-1;h++)o=G2(this,t[e+h],i,h),o===C1&&(o=this._$AH[h]),n||=!A0(o)||o!==this._$AH[h],o===V?a=V:a!==V&&(a+=(o??"")+l[h+1]),this._$AH[h]=o}n&&!r&&this.j(a)}j(a){a===V?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,a??"")}}class R4 extends d0{constructor(){super(...arguments),this.type=3}j(a){this.element[this.name]=a===V?void 0:a}}class S4 extends d0{constructor(){super(...arguments),this.type=4}j(a){this.element.toggleAttribute(this.name,!!a&&a!==V)}}class O4 extends d0{constructor(a,i,e,r,l){super(a,i,e,r,l),this.type=5}_$AI(a,i=this){if((a=G2(this,a,i,0)??V)===C1)return;let e=this._$AH,r=a===V&&e!==V||a.capture!==e.capture||a.once!==e.once||a.passive!==e.passive,l=a!==V&&(e===V||r);r&&this.element.removeEventListener(this.name,this,e),l&&this.element.addEventListener(this.name,this,a),this._$AH=a}handleEvent(a){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,a):this._$AH.handleEvent(a)}}class H4{constructor(a,i,e){this.element=a,this.type=6,this._$AN=void 0,this._$AM=i,this.options=e}get _$AU(){return this._$AM._$AU}_$AI(a){G2(this,a)}}var q6={M:"$lit$",P:Z2,A:y4,C:1,L:L6,R:F4,D:M6,V:G2,I:c0,H:d0,N:S4,U:O4,B:R4,F:H4},Si=x4.litHtmlPolyfillSupport;Si?.(V0,c0),(x4.litHtmlVersions??=[]).push("3.3.0");var T6=(a,i,e)=>{let r=e?.renderBefore??i,l=r._$litPart$;if(l===void 0){let n=e?.renderBefore??null;r._$litPart$=l=new c0(i.insertBefore(W0(),n),n,void 0,e??{})}return l._$AI(a),l};var K4=globalThis;class M1 extends L2{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let a=super.createRenderRoot();return this.renderOptions.renderBefore??=a.firstChild,a}update(a){let i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(a),this._$Do=T6(i,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return C1}}M1._$litElement$=!0,M1.finalized=!0,K4.litElementHydrateSupport?.({LitElement:M1});var Oi=K4.litElementPolyfillSupport;Oi?.({LitElement:M1});(K4.litElementVersions??=[]).push("4.2.0");var D=(a)=>(i,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(a,i)}):customElements.define(a,i)};var Hi={attribute:!0,type:String,converter:C0,reflect:!1,hasChanged:p3},Ki=(a=Hi,i,e)=>{let{kind:r,metadata:l}=e,n=globalThis.litPropertyMetadata.get(l);if(n===void 0&&globalThis.litPropertyMetadata.set(l,n=new Map),r==="setter"&&((a=Object.create(a)).wrapped=!0),n.set(e.name,a),r==="accessor"){let{name:t}=e;return{set(h){let o=i.get.call(this);i.set.call(this,h),this.requestUpdate(t,o,a)},init(h){return h!==void 0&&this.C(t,void 0,a,h),h}}}if(r==="setter"){let{name:t}=e;return function(h){let o=this[t];i.call(this,h),this.requestUpdate(t,o,a)}}throw Error("Unsupported decorator location: "+r)};function z(a){return(i,e)=>typeof e=="object"?Ki(a,i,e):((r,l,n)=>{let t=l.hasOwnProperty(n);return l.constructor.createProperty(n,r),t?Object.getOwnPropertyDescriptor(l,n):void 0})(a,i,e)}function E(a){return z({...a,state:!0,attribute:!1})}var U2=(a,i,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof i!="object"&&Object.defineProperty(a,i,e),e);function n1(a,i){return(e,r,l)=>{let n=(t)=>t.renderRoot?.querySelector(a)??null;if(i){let{get:t,set:h}=typeof r=="object"?e:l??(()=>{let o=Symbol();return{get(){return this[o]},set(c){this[o]=c}}})();return U2(e,r,{get(){let o=t.call(this);return o===void 0&&(o=n(this),(o!==null||this.hasUpdated)&&h.call(this,o)),o}})}return U2(e,r,{get(){return n(this)}})}}class M4{canVibrate;constructor(a){a.addController(this),this.canVibrate="vibrate"in navigator}trigger(a=10){if(!this.canVibrate)return;try{navigator.vibrate(a)}catch{}}click(){this.trigger(50)}lightClick(){this.trigger(35)}}function J6(a){let i=a.replace(/-/g,"").substring(0,12),e=parseInt(i,16);return new Date(e)}function D6(a){return a.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0})}class j4 extends EventTarget{host;_historyData=[];_hasData=null;_isInitialized=!1;_hasNextPage=!1;_initialLoadSize=20;_hasLoadedMore=!1;_clientSeed=null;_hasLoadedClientSeed=!1;constructor(a){super();this.host=a,a.addController(this),setTimeout(()=>{this.preloadHistory(),this.loadClientSeed()},100)}get historyData(){return this._historyData}get hasData(){return this._hasData}get isInitialized(){return this._isInitialized}get hasNextPage(){return this._hasNextPage}get clientSeed(){return this._clientSeed}get hasLoadedClientSeed(){return this._hasLoadedClientSeed}notifyDataChanged(){this.dispatchEvent(new CustomEvent("history-data-changed",{detail:{historyData:this._historyData,hasNextPage:this._hasNextPage,hasData:this._hasData}}))}notifyClientSeedChanged(){this.dispatchEvent(new CustomEvent("client-seed-changed",{detail:{clientSeed:this._clientSeed}}))}async preloadHistory(){if(!this.host.gameData?.baseUrl||!this.host.gameData?.authToken)return;try{let{historyData:a,hasNextPage:i}=await this.fetchHistory(void 0,this._initialLoadSize);this._historyData=a,this._hasData=a.length>0,this._hasNextPage=i,this._isInitialized=!0,this._hasLoadedMore=!1,this.notifyDataChanged()}catch(a){console.error("Failed to preload history:",a),this._isInitialized=!0,this._hasData=null}}async fetchHistory(a,i=5){if(!this.host.gameData?.baseUrl||!this.host.gameData?.authToken)return{historyData:[],hasNextPage:!1};let e=new URL(`${this.host.gameData.baseUrl}/bet/my-bets`);if(e.searchParams.append("limit",i.toString()),a)e.searchParams.append("beforeId",a);let r=await fetch(e.toString(),{headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.host.gameData.authToken}`}});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);let l=await r.json();return{historyData:l.results.map((t)=>({id:`${t.id.slice(0,3)}...${t.id.slice(-3)}`,fullId:t.id,timestamp:D6(J6(t.id)),currency:t.currency,bet:Number(t.amount),win:Number(t.payout)})),hasNextPage:!!l.nextCursor}}async refreshHistory(a=!1){try{let i=a&&this._hasLoadedMore?this._historyData.length:this._initialLoadSize,{historyData:e,hasNextPage:r}=await this.fetchHistory(void 0,i);if(this._historyData=e,this._hasData=e.length>0,this._hasNextPage=r,!a)this._hasLoadedMore=!1;this.notifyDataChanged()}catch(i){console.error("Failed to refresh history:",i)}}async loadMore(){if(!this._hasNextPage||this._historyData.length===0)return{historyData:[],hasNextPage:!1};let a=this._historyData[this._historyData.length-1],{historyData:i,hasNextPage:e}=await this.fetchHistory(a.fullId,this._initialLoadSize);return this._historyData=[...this._historyData,...i],this._hasNextPage=e,this._hasLoadedMore=!0,this.notifyDataChanged(),this.dispatchEvent(new CustomEvent("history-loaded-more")),{historyData:i,hasNextPage:e}}addNewBet(a){if(this._historyData.some((e)=>e.fullId===a.id))return;let i={id:`${a.id.slice(0,3)}...${a.id.slice(-3)}`,fullId:a.id,timestamp:D6(J6(a.id)),currency:a.currency,bet:Number(a.amount),win:Number(a.payout)};if(!this._hasLoadedMore&&this._historyData.length>=this._initialLoadSize)this._historyData=[i,...this._historyData.slice(0,this._initialLoadSize-1)],this._hasNextPage=!0;else this._historyData=[i,...this._historyData];this._hasData=!0,this.notifyDataChanged()}async loadClientSeed(){if(!this.host.gameData?.baseUrl||!this.host.gameData?.authToken||this._hasLoadedClientSeed)return;try{let a=await fetch(`${this.host.gameData.baseUrl}/provably-fair/my-info`,{method:"GET",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.host.gameData.authToken}`}});if(!a.ok)throw new Error(`HTTP error! status: ${a.status}`);let i=await a.json();this._clientSeed=i.clientSeed,this._hasLoadedClientSeed=!0,this.notifyClientSeedChanged()}catch(a){console.error("Failed to load client seed:",a)}}updateClientSeed(a){this._clientSeed=a,this.notifyClientSeedChanged()}}var C6="v4";class E4{host;muted=!1;audioCtx;buffer;spriteMap=null;constructor(a){this.host=a,a.addController(this);let i=window.AudioContext||window.webkitAudioContext;this.audioCtx=new i,fetch(`https://assets.betorigami.com/sounds/${C6}/sounds.mp3`).then((e)=>{return e.arrayBuffer().then((r)=>{this.audioCtx.decodeAudioData(r,(l)=>{this.buffer=l})}).catch((r)=>{})}).catch(),fetch(`https://assets.betorigami.com/sounds/${C6}/sounds.json`).then((e)=>e.json()).catch().then((e)=>{this.spriteMap=e.spritemap}).catch(),window.onclick=()=>{this.play("bet",!0),window.onclick=null}}async play(a,i,e=1,r,l=()=>{},n=!1){if(!this.buffer||!this.spriteMap)return;let t=this.audioCtx.createBufferSource();t.buffer=this.buffer;let h=this.spriteMap[a];try{if(this.audioCtx&&t){let o=this.audioCtx.createGain(),c=r??(this.host.gameData?.volume??100)/100,u=i??this.muted;if(o.gain.value=u?0:Math.min(c,1),o.connect(this.audioCtx.destination),t.connect(o),t.playbackRate.value=e,n)t.loop=!0,t.loopStart=h.start,t.loopEnd=h.end,t.start(0,h.start);else t.start(0,h.start),setTimeout(()=>{t?.stop(),l()},1000*(h.end-h.start));return t}}catch(o){console.error("Error playing sound",o)}}}var s1="USD";var $6=[1,2,3,4,8];var $1=2,W6=["ROULETTE"];class Y extends M1{static componentStyles=[];emit(a,i){let e=new CustomEvent(a,{bubbles:!0,cancelable:!1,composed:!0,detail:{},...i});return this.dispatchEvent(e),e}}var Xn=y2("language"),W="en";var Ni={ar:()=>Promise.resolve().then(() => v1(L4(),1)),de:()=>Promise.resolve().then(() => v1(q4(),1)),en:()=>Promise.resolve().then(() => v1(T4(),1)),es:()=>Promise.resolve().then(() => v1(J4(),1)),fi:()=>Promise.resolve().then(() => v1(D4(),1)),fr:()=>Promise.resolve().then(() => v1(C4(),1)),hi:()=>Promise.resolve().then(() => v1($4(),1)),id:()=>Promise.resolve().then(() => v1(W4(),1)),ja:()=>Promise.resolve().then(() => v1(A4(),1)),ko:()=>Promise.resolve().then(() => v1(V4(),1)),pl:()=>Promise.resolve().then(() => v1(Q4(),1)),pt:()=>Promise.resolve().then(() => v1(Y4(),1)),ru:()=>Promise.resolve().then(() => v1(X4(),1)),tr:()=>Promise.resolve().then(() => v1(N4(),1)),vi:()=>Promise.resolve().then(() => v1(G4(),1)),zh:()=>Promise.resolve().then(() => v1(U4(),1))};class A6{loadedLanguages=new Set;loadingPromises=new Map;loadedTranslations=new Map;async loadLanguage(a){if(this.loadedLanguages.has(a))return;if(this.loadingPromises.has(a))return this.loadingPromises.get(a);let i=this.loadLanguageModule(a);this.loadingPromises.set(a,i);try{await i,this.loadedLanguages.add(a)}finally{this.loadingPromises.delete(a)}}getTranslationData(a){return this.loadedTranslations.get(a)||null}isLanguageLoaded(a){return this.loadedLanguages.has(a)}getLoadedLanguages(){return Array.from(this.loadedLanguages)}async preloadLanguages(a){let i=a.map((e)=>this.loadLanguage(e).catch(()=>{}));await Promise.all(i)}clearAll(){this.loadedLanguages.clear(),this.loadingPromises.clear(),this.loadedTranslations.clear(),P4()}async loadLanguageModule(a){try{let i=await Ni[a]();this.loadedTranslations.set(a,i.default),P4()}catch(i){throw i}}}var Q0=new A6;Q0.loadLanguage(W).catch(()=>{});var Q6=v1(L4(),1),Y6=v1(q4(),1),X6=v1(T4(),1),N6=v1(J4(),1),G6=v1(D4(),1),U6=v1(C4(),1),P6=v1($4(),1),B6=v1(W4(),1),_6=v1(A4(),1),a7=v1(V4(),1),i7=v1(Q4(),1),e7=v1(Y4(),1),r7=v1(X4(),1),l7=v1(N4(),1),n7=v1(G4(),1),t7=v1(U4(),1);var B4={ar:Q6.default,de:Y6.default,en:X6.default,es:N6.default,fi:G6.default,fr:U6.default,hi:P6.default,id:B6.default,ja:_6.default,ko:a7.default,pl:i7.default,pt:e7.default,ru:r7.default,tr:l7.default,vi:n7.default,zh:t7.default};function Gi(a){let i=Q0.getTranslationData(a);if(i)return i;return B4[a]||B4[W]}var pt=y2(Symbol("translation"));class o7{cache=new Map;maxSize=1000;get(a){return this.cache.get(a)}set(a,i){if(this.cache.size>=this.maxSize)this.cache.clear();this.cache.set(a,i)}clear(){this.cache.clear()}size(){return this.cache.size}}var _4=new o7,V6=new Map;function Ui(a){let i=V6.get(a);if(!i)i=a.split("."),V6.set(a,i);return i}function h7(a,i,e){let r=Gi(i);try{let l=Ui(a),n=r;for(let t of l)if(n=n?.[t],n===void 0)break;if(typeof n==="string")return n;if(i!==W)return h7(a,W,e);return e||a}catch{return e||a}}function S(a,i=W,e){let r=e?`${a}:${i}:${e}`:`${a}:${i}`,l=_4.get(r);if(l!==void 0)return l;let n=h7(a,i,e);return _4.set(r,n),n}function P4(){_4.clear()}var F1={betAmount:"0.00",scale:1,updateBetAmount:()=>{},updateBalance:()=>{},currency:s1,currencyDecimals:2,showCurrencyAsText:!1,balance:0,baseUrl:"",authToken:"",publicKey:"",hotkeysOpenEnabled:!1,showMaxBetButton:!1,volume:100,instantBetEnabled:!1,mainWidth:0,updateMainWidth:()=>{},updateHotkeysOpenEnabled:()=>{},updateShowMaxBetButton:()=>{},updateVolume:()=>{},updateInstantBetEnabled:()=>{},language:W,seasonTheme:"DEFAULT",autobetNumberOfBets:0,updateAutobetNumberOfBets:()=>{},soundController:void 0,historyController:void 0,hapticController:void 0,lobbyUrl:"https://betorigami.com",depositUrl:void 0,hasLoadedBalance:!1,maxPayout:null,minBet:null,maxBet:null,edge:2,footerPosition:"BELOW",logoUrl:null,customMinesGemSvgUrl:null},U=y2(Symbol("game"));var Pi=20,Bi=1,P2=1e6,s7=1e6,_i=-7,ae=21,ie=!1,Y0="[big.js] ",B2=Y0+"Invalid ",z3=B2+"decimal places",ee=B2+"rounding mode",u7=Y0+"Division by zero",x1={},p2=void 0,re=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function c7(){function a(i){var e=this;if(!(e instanceof a))return i===p2&&arguments.length===0?c7():new a(i);if(i instanceof a)e.s=i.s,e.e=i.e,e.c=i.c.slice();else{if(typeof i!=="string"){if(a.strict===!0&&typeof i!=="bigint")throw TypeError(B2+"value");i=i===0&&1/i<0?"-0":String(i)}le(e,i)}e.constructor=a}return a.prototype=x1,a.DP=Pi,a.RM=Bi,a.NE=_i,a.PE=ae,a.strict=ie,a.roundDown=0,a.roundHalfUp=1,a.roundHalfEven=2,a.roundUp=3,a}function le(a,i){var e,r,l;if(!re.test(i))throw Error(B2+"number");if(a.s=i.charAt(0)=="-"?(i=i.slice(1),-1):1,(e=i.indexOf("."))>-1)i=i.replace(".","");if((r=i.search(/e/i))>0){if(e<0)e=r;e+=+i.slice(r+1),i=i.substring(0,r)}else if(e<0)e=i.length;l=i.length;for(r=0;r<l&&i.charAt(r)=="0";)++r;if(r==l)a.c=[a.e=0];else{for(;l>0&&i.charAt(--l)=="0";);a.e=e-r-1,a.c=[];for(e=0;r<=l;)a.c[e++]=+i.charAt(r++)}return a}function _2(a,i,e,r){var l=a.c;if(e===p2)e=a.constructor.RM;if(e!==0&&e!==1&&e!==2&&e!==3)throw Error(ee);if(i<1)if(r=e===3&&(r||!!l[0])||i===0&&(e===1&&l[0]>=5||e===2&&(l[0]>5||l[0]===5&&(r||l[1]!==p2))),l.length=1,r)a.e=a.e-i+1,l[0]=1;else l[0]=a.e=0;else if(i<l.length){if(r=e===1&&l[i]>=5||e===2&&(l[i]>5||l[i]===5&&(r||l[i+1]!==p2||l[i-1]&1))||e===3&&(r||!!l[0]),l.length=i,r){for(;++l[--i]>9;)if(l[i]=0,i===0){++a.e,l.unshift(1);break}}for(i=l.length;!l[--i];)l.pop()}return a}function a0(a,i,e){var r=a.e,l=a.c.join(""),n=l.length;if(i)l=l.charAt(0)+(n>1?"."+l.slice(1):"")+(r<0?"e":"e+")+r;else if(r<0){for(;++r;)l="0"+l;l="0."+l}else if(r>0){if(++r>n)for(r-=n;r--;)l+="0";else if(r<n)l=l.slice(0,r)+"."+l.slice(r)}else if(n>1)l=l.charAt(0)+"."+l.slice(1);return a.s<0&&e?"-"+l:l}x1.abs=function(){var a=new this.constructor(this);return a.s=1,a};x1.cmp=function(a){var i,e=this,r=e.c,l=(a=new e.constructor(a)).c,n=e.s,t=a.s,h=e.e,o=a.e;if(!r[0]||!l[0])return!r[0]?!l[0]?0:-t:n;if(n!=t)return n;if(i=n<0,h!=o)return h>o^i?1:-1;t=(h=r.length)<(o=l.length)?h:o;for(n=-1;++n<t;)if(r[n]!=l[n])return r[n]>l[n]^i?1:-1;return h==o?0:h>o^i?1:-1};x1.div=function(a){var i=this,e=i.constructor,r=i.c,l=(a=new e(a)).c,n=i.s==a.s?1:-1,t=e.DP;if(t!==~~t||t<0||t>P2)throw Error(z3);if(!l[0])throw Error(u7);if(!r[0])return a.s=n,a.c=[a.e=0],a;var h,o,c,u,m,s=l.slice(),f=h=l.length,k=r.length,w=r.slice(0,h),y=w.length,b=a,g=b.c=[],v=0,p=t+(b.e=i.e-a.e)+1;b.s=n,n=p<0?0:p,s.unshift(0);for(;y++<h;)w.push(0);do{for(c=0;c<10;c++){if(h!=(y=w.length))u=h>y?1:-1;else for(m=-1,u=0;++m<h;)if(l[m]!=w[m]){u=l[m]>w[m]?1:-1;break}if(u<0){for(o=y==h?l:s;y;){if(w[--y]<o[y]){m=y;for(;m&&!w[--m];)w[m]=9;--w[m],w[y]+=10}w[y]-=o[y]}for(;!w[0];)w.shift()}else break}if(g[v++]=u?c:++c,w[0]&&u)w[y]=r[f]||0;else w=[r[f]]}while((f++<k||w[0]!==p2)&&n--);if(!g[0]&&v!=1)g.shift(),b.e--,p--;if(v>p)_2(b,p,e.RM,w[0]!==p2);return b};x1.eq=function(a){return this.cmp(a)===0};x1.gt=function(a){return this.cmp(a)>0};x1.gte=function(a){return this.cmp(a)>-1};x1.lt=function(a){return this.cmp(a)<0};x1.lte=function(a){return this.cmp(a)<1};x1.minus=x1.sub=function(a){var i,e,r,l,n=this,t=n.constructor,h=n.s,o=(a=new t(a)).s;if(h!=o)return a.s=-o,n.plus(a);var c=n.c.slice(),u=n.e,m=a.c,s=a.e;if(!c[0]||!m[0]){if(m[0])a.s=-o;else if(c[0])a=new t(n);else a.s=1;return a}if(h=u-s){if(l=h<0)h=-h,r=c;else s=u,r=m;r.reverse();for(o=h;o--;)r.push(0);r.reverse()}else{e=((l=c.length<m.length)?c:m).length;for(h=o=0;o<e;o++)if(c[o]!=m[o]){l=c[o]<m[o];break}}if(l)r=c,c=m,m=r,a.s=-a.s;if((o=(e=m.length)-(i=c.length))>0)for(;o--;)c[i++]=0;for(o=i;e>h;){if(c[--e]<m[e]){for(i=e;i&&!c[--i];)c[i]=9;--c[i],c[e]+=10}c[e]-=m[e]}for(;c[--o]===0;)c.pop();for(;c[0]===0;)c.shift(),--s;if(!c[0])a.s=1,c=[s=0];return a.c=c,a.e=s,a};x1.mod=function(a){var i,e=this,r=e.constructor,l=e.s,n=(a=new r(a)).s;if(!a.c[0])throw Error(u7);if(e.s=a.s=1,i=a.cmp(e)==1,e.s=l,a.s=n,i)return new r(e);return l=r.DP,n=r.RM,r.DP=r.RM=0,e=e.div(a),r.DP=l,r.RM=n,this.minus(e.times(a))};x1.neg=function(){var a=new this.constructor(this);return a.s=-a.s,a};x1.plus=x1.add=function(a){var i,e,r,l=this,n=l.constructor;if(a=new n(a),l.s!=a.s)return a.s=-a.s,l.minus(a);var{e:t,c:h}=l,o=a.e,c=a.c;if(!h[0]||!c[0]){if(!c[0])if(h[0])a=new n(l);else a.s=l.s;return a}if(h=h.slice(),i=t-o){if(i>0)o=t,r=c;else i=-i,r=h;r.reverse();for(;i--;)r.push(0);r.reverse()}if(h.length-c.length<0)r=c,c=h,h=r;i=c.length;for(e=0;i;h[i]%=10)e=(h[--i]=h[i]+c[i]+e)/10|0;if(e)h.unshift(e),++o;for(i=h.length;h[--i]===0;)h.pop();return a.c=h,a.e=o,a};x1.pow=function(a){var i=this,e=new i.constructor("1"),r=e,l=a<0;if(a!==~~a||a<-s7||a>s7)throw Error(B2+"exponent");if(l)a=-a;for(;;){if(a&1)r=r.times(i);if(a>>=1,!a)break;i=i.times(i)}return l?e.div(r):r};x1.prec=function(a,i){if(a!==~~a||a<1||a>P2)throw Error(B2+"precision");return _2(new this.constructor(this),a,i)};x1.round=function(a,i){if(a===p2)a=0;else if(a!==~~a||a<-P2||a>P2)throw Error(z3);return _2(new this.constructor(this),a+this.e+1,i)};x1.sqrt=function(){var a,i,e,r=this,l=r.constructor,n=r.s,t=r.e,h=new l("0.5");if(!r.c[0])return new l(r);if(n<0)throw Error(Y0+"No square root");if(n=Math.sqrt(+a0(r,!0,!0)),n===0||n===1/0){if(i=r.c.join(""),!(i.length+t&1))i+="0";n=Math.sqrt(i),t=((t+1)/2|0)-(t<0||t&1),a=new l((n==1/0?"5e":(n=n.toExponential()).slice(0,n.indexOf("e")+1))+t)}else a=new l(n+"");t=a.e+(l.DP+=4);do e=a,a=h.times(e.plus(r.div(e)));while(e.c.slice(0,t).join("")!==a.c.slice(0,t).join(""));return _2(a,(l.DP-=4)+a.e+1,l.RM)};x1.times=x1.mul=function(a){var i,e=this,r=e.constructor,l=e.c,n=(a=new r(a)).c,t=l.length,h=n.length,o=e.e,c=a.e;if(a.s=e.s==a.s?1:-1,!l[0]||!n[0])return a.c=[a.e=0],a;if(a.e=o+c,t<h)i=l,l=n,n=i,c=t,t=h,h=c;for(i=new Array(c=t+h);c--;)i[c]=0;for(o=h;o--;){h=0;for(c=t+o;c>o;)h=i[c]+n[o]*l[c-o-1]+h,i[c--]=h%10,h=h/10|0;i[c]=h}if(h)++a.e;else i.shift();for(o=i.length;!i[--o];)i.pop();return a.c=i,a};x1.toExponential=function(a,i){var e=this,r=e.c[0];if(a!==p2){if(a!==~~a||a<0||a>P2)throw Error(z3);e=_2(new e.constructor(e),++a,i);for(;e.c.length<a;)e.c.push(0)}return a0(e,!0,!!r)};x1.toFixed=function(a,i){var e=this,r=e.c[0];if(a!==p2){if(a!==~~a||a<0||a>P2)throw Error(z3);e=_2(new e.constructor(e),a+e.e+1,i);for(a=a+e.e+1;e.c.length<a;)e.c.push(0)}return a0(e,!1,!!r)};x1.toJSON=x1.toString=function(){var a=this,i=a.constructor;return a0(a,a.e<=i.NE||a.e>=i.PE,!!a.c[0])};if(typeof Symbol!=="undefined")x1[Symbol.for("nodejs.util.inspect.custom")]=x1.toJSON;x1.toNumber=function(){var a=+a0(this,!0,!0);if(this.constructor.strict===!0&&!this.eq(a.toString()))throw Error(Y0+"Imprecise conversion");return a};x1.toPrecision=function(a,i){var e=this,r=e.constructor,l=e.c[0];if(a!==p2){if(a!==~~a||a<1||a>P2)throw Error(B2+"precision");e=_2(new r(e),a,i);for(;e.c.length<a;)e.c.push(0)}return a0(e,a<=e.e||e.e<=r.NE||e.e>=r.PE,!!l)};x1.valueOf=function(){var a=this,i=a.constructor;if(i.strict===!0)throw Error(Y0+"valueOf disallowed");return a0(a,a.e<=i.NE||a.e>=i.PE,!0)};var I2=c7(),K=I2;class x3 extends Y{constructor(){super(...arguments);this.currency=s1;this.balance=F1.balance;this.currencyDecimals=F1.currencyDecimals;this.baseUrl=F1.baseUrl;this.authToken=F1.authToken;this.origamiGame="DICE";this.lobbyUrl=F1.lobbyUrl;this.depositUrl=F1.depositUrl;this.maxPayout=F1.maxPayout;this.minBet=F1.minBet;this.maxBet=F1.maxBet;this.edge=F1.edge;this.customMinesGemSvgUrl=F1.customMinesGemSvgUrl;this.showCurrencyAsText=!1;this.footerPosition=F1.footerPosition;this.logoUrl=null;this.seasonTheme="DEFAULT";this.betAmount=F1.betAmount;this.autobetNumberOfBets=F1.autobetNumberOfBets;this.hotkeysOpenEnabled=!1;this.showMaxBetButton=F1.showMaxBetButton;this.volume=F1.volume;this.instantBetEnabled=F1.instantBetEnabled;this.mainWidth=F1.mainWidth;this.publicKey=F1.publicKey;this.scale=1;this.language=F1.language}_soundController=new E4(this);_historyController=new j4(this);_hapticController=new M4(this);_resizeObserver=null;hasLoadedBalance=!1;_gameProvider=new Q2(this,{context:U,initialValue:this.createGameContextValue()});connectedCallback(){super.connectedCallback(),this.updateProviderValue(),this.fetchBalance(),this.fetchPublicKey(),this.setupResizeObserver(),this.calculateScale(),this.updateMainWidth(document.documentElement.clientWidth)}async firstUpdated(a){if(super.firstUpdated(a),await this.updateComplete,!W6.includes(this.origamiGame))this.updateBetAmount(K(this.minBet??0))}disconnectedCallback(){super.disconnectedCallback(),this.cleanupResizeObserver()}updated(a){if(super.updated(a),a.has("currency")||a.has("balance")||a.has("baseUrl")||a.has("showCurrencyAsText")||a.has("authToken")||a.has("hotkeysOpenEnabled")||a.has("volume")||a.has("instantBetEnabled")||a.has("showMaxBetButton")||a.has("mainWidth")||a.has("footerPosition")||a.has("logoUrl")||a.has("scale")||a.has("seasonTheme")||a.has("customMinesGemSvgUrl")||a.has("edge")||a.has("language")||a.has("maxPayout")||a.has("minBet")||a.has("maxBet")||a.has("depositUrl")||a.has("currencyDecimals")||a.has("lobbyUrl"))this.updateProviderValue()}get gameData(){return this._gameProvider.value}createGameContextValue(){return{betAmount:this.betAmount,updateBetAmount:this.updateBetAmount.bind(this),updateBalance:this.updateBalance.bind(this),currency:this.currency,showCurrencyAsText:this.showCurrencyAsText,currencyDecimals:this.currencyDecimals,lobbyUrl:this.lobbyUrl,depositUrl:this.depositUrl,maxPayout:this.maxPayout,minBet:this.minBet,maxBet:this.maxBet,edge:this.edge,balance:this.balance,hasLoadedBalance:this.hasLoadedBalance,baseUrl:this.baseUrl,authToken:this.authToken,publicKey:this.publicKey,autobetNumberOfBets:this.autobetNumberOfBets,hotkeysOpenEnabled:this.hotkeysOpenEnabled,showMaxBetButton:this.showMaxBetButton,volume:this.volume,instantBetEnabled:this.instantBetEnabled,soundController:this._soundController,historyController:this._historyController,hapticController:this._hapticController,updateHotkeysOpenEnabled:this.updateHotkeysOpenEnabled.bind(this),updateShowMaxBetButton:this.updateShowMaxBetButton.bind(this),updateVolume:this.updateVolume.bind(this),updateInstantBetEnabled:this.updateInstantBetEnabled.bind(this),updateAutobetNumberOfBets:this.updateAutobetNumberOfBets.bind(this),mainWidth:this.mainWidth,updateMainWidth:this.updateMainWidth.bind(this),language:this.language,footerPosition:this.footerPosition,logoUrl:this.logoUrl,scale:this.scale,seasonTheme:this.seasonTheme,customMinesGemSvgUrl:this.customMinesGemSvgUrl}}updateProviderValue(){this._gameProvider.setValue(this.createGameContextValue())}fetchBalance=async()=>{if(!this.authToken||!this.baseUrl){this.balance=1000,this.hasLoadedBalance=!0,this.updateProviderValue();return}try{let a=await fetch(`${this.baseUrl}/users/balance?currency=${this.currency}&origamiGame=${this.origamiGame}`,{headers:{Authorization:`Bearer ${this.authToken}`,"Content-Type":"application/json"}});if(!a.ok){console.error("Failed to fetch balance:",a.statusText);return}let i=await a.json();this.balance=K(i.balance).toNumber(),this.hasLoadedBalance=!0,this.updateProviderValue()}catch(a){console.error("Error fetching balance:",a)}};fetchPublicKey=async()=>{if(!this.authToken||!this.baseUrl)return;let a=await fetch(`${this.baseUrl}/provably-fair/public-key`);if(!a.ok){console.error("Failed to fetch public key:",a.statusText);return}let i=await a.json();this.publicKey=i.publicKey};updateHotkeysOpenEnabled(a){this.hotkeysOpenEnabled=a,this.updateProviderValue()}updateShowMaxBetButton(a){this.showMaxBetButton=a,this.updateProviderValue()}updateVolume(a){this.volume=a,this.updateProviderValue()}updateInstantBetEnabled(a){this.instantBetEnabled=a,this.updateProviderValue()}updateAutobetNumberOfBets(a){this.autobetNumberOfBets=a,this.updateProviderValue()}updateMainWidth(a){this.mainWidth=a,this.updateProviderValue()}updateBetAmount(a){if(a.lt(0)){this.betAmount="0";return}let i=a.toFixed(this.currencyDecimals);this.betAmount=i,this.updateProviderValue()}updateBalance(a){if(a.lt(0)){this.balance=0;return}this.balance=a.toNumber(),this.updateProviderValue()}_boundCalculateScale=this.calculateScale.bind(this);setupResizeObserver(){if(typeof ResizeObserver!=="undefined")this._resizeObserver=new ResizeObserver(()=>{this.calculateScale(),this.gameData.updateMainWidth(document.documentElement.clientWidth)}),this._resizeObserver.observe(document.body);else window.addEventListener("resize",this._boundCalculateScale)}cleanupResizeObserver(){if(this._resizeObserver)this._resizeObserver.disconnect(),this._resizeObserver=null;else window.removeEventListener("resize",this._boundCalculateScale)}calculateScale(){let a=document.documentElement.clientWidth,i=document.documentElement.clientHeight,e=1200,r=675;if(a/i>1.7777777777777777){let n=i/675;this.scale=n}else{let n=a/1200;this.scale=n}this.requestUpdate()}render(){let a=(()=>{switch(this.origamiGame){case"DICE":return I`<origami-dice-game></origami-dice-game>`;case"KENO":return I`<origami-keno-game></origami-keno-game>`;case"MINES":return I`<origami-mines-game></origami-mines-game>`;case"LIMBO":return I`<origami-limbo-game></origami-limbo-game>`;case"ADVANCED_DICE":return I`<origami-advanced-dice-game></origami-advanced-dice-game>`;case"PLINKO":return I`<origami-plinko-game></origami-plinko-game>`;case"DIAMONDS":return I`<origami-diamonds-game></origami-diamonds-game>`;case"WHEEL":return I`<origami-wheel-game></origami-wheel-game>`;case"ROULETTE":return I`<origami-roulette-game></origami-roulette-game>`;default:this.origamiGame}})(),i=`
40
40
  position: absolute;
41
41
  top: 0%;
42
42
  left: 0%;
@@ -7002,7 +7002,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
7002
7002
  >
7003
7003
  ${a}
7004
7004
  </div>
7005
- `}}d([z({type:Number})],Ua.prototype,"multiplier",void 0),d([z({type:Number})],Ua.prototype,"bounceCount",void 0),d([z({type:String})],Ua.prototype,"backgroundColor",void 0),d([z({type:String})],Ua.prototype,"shadowColor",void 0),d([n1(".bin")],Ua.prototype,"binEl",void 0),Ua=d([D("origami-plinko-bin")],Ua);var _e;((a)=>{a.DICE="DICE",a.MINES="MINES",a.KENO="KENO",a.LIMBO="LIMBO",a.ADVANCED_DICE="ADVANCED_DICE",a.BACCARAT="BACCARAT",a.DIAMONDS="DIAMONDS",a.PLINKO="PLINKO",a.ROULETTE="ROULETTE",a.WHEEL="WHEEL"})(_e||={});class P8{gameId;constructor(a){this.gameId=a}getGameResult(a){return this.determineGameResult(a)}}var ar;((a)=>a.INPUT_VALIDATION_ERROR="INPUT_VALIDATION_ERROR")(ar||={});class Z1 extends Error{static createValidationError(a){return new Z1("INPUT_VALIDATION_ERROR",a)}static isGameError(a){return a instanceof Z1}errorCode;constructor(a,i){super(i);this.errorCode=a}}var ir;((a)=>{a.ROLL_BETWEEN="ROLL_BETWEEN",a.ROLL_OUTSIDE="ROLL_OUTSIDE",a.ROLL_BETWEEN_TWO="ROLL_BETWEEN_TWO"})(ir||={});var er;((a)=>{a.PLAYER_WIN="PLAYER_WIN",a.TIE="TIE",a.BANKER_WIN="BANKER_WIN"})(er||={});var rr;((a)=>{a.PLAYER="PLAYER",a.TIE="TIE",a.BANKER="BANKER"})(rr||={});class i3{multipliers;constructor(a){this.multipliers=a}getMultipliers(a){let i=this.multipliers.get(a);if(i===void 0)throw new Error(`Multipliers for ${a} not found`);return i}getAllMultipliers(){return Array.from(this.multipliers.entries()).map(([a,i])=>({edge:a,multipliers:i}))}}var lr;((a)=>{a.PAIR="PAIR",a.TWO_PAIR="TWO_PAIR",a.THREE_OF_A_KIND="THREE_OF_A_KIND",a.FULL_HOUSE="FULL_HOUSE",a.FOUR_OF_A_KIND="FOUR_OF_A_KIND",a.FIVE_OF_A_KIND="FIVE_OF_A_KIND"})(lr||={});var nr={PAIR:0.1,TWO_PAIR:2,THREE_OF_A_KIND:3,FULL_HOUSE:4.3,FOUR_OF_A_KIND:5,FIVE_OF_A_KIND:50},tr={PAIR:0.1,TWO_PAIR:2,THREE_OF_A_KIND:3,FULL_HOUSE:4,FOUR_OF_A_KIND:4.8,FIVE_OF_A_KIND:50},or={PAIR:0.1,TWO_PAIR:2,THREE_OF_A_KIND:3,FULL_HOUSE:3.7,FOUR_OF_A_KIND:4.6,FIVE_OF_A_KIND:50},hr={PAIR:0.1,TWO_PAIR:2,THREE_OF_A_KIND:3,FULL_HOUSE:3.4,FOUR_OF_A_KIND:4.4,FIVE_OF_A_KIND:50},sr={PAIR:0.1,TWO_PAIR:2,THREE_OF_A_KIND:2.8,FULL_HOUSE:3.2,FOUR_OF_A_KIND:3.6,FIVE_OF_A_KIND:50},qb=new i3(new Map([[1,nr],[2,tr],[3,or],[4,hr],[8,sr]]));var ur;((a)=>{a.ABOVE="ABOVE",a.BELOW="BELOW"})(ur||={});var cr;((a)=>{a.CLASSIC="CLASSIC",a.LOW_RISK="LOW_RISK",a.MEDIUM_RISK="MEDIUM_RISK",a.HIGH_RISK="HIGH_RISK"})(cr||={});var dr={[1]:{CLASSIC:[0,3.96],LOW_RISK:[0.7,1.85],MEDIUM_RISK:[0.4,2.75],HIGH_RISK:[0,3.96]},[2]:{CLASSIC:[0,1.9,4.5],LOW_RISK:[0,2,3.8],MEDIUM_RISK:[0,1.8,5.1],HIGH_RISK:[0,0,17.1]},[3]:{CLASSIC:[0,1,3.1,10.4],LOW_RISK:[0,1.1,1.38,26],MEDIUM_RISK:[0,0,2.8,50],HIGH_RISK:[0,0,0,81.5]},[4]:{CLASSIC:[0,0.8,1.8,5,22.5],LOW_RISK:[0,0,2.2,7.9,90],MEDIUM_RISK:[0,0,1.7,10,100],HIGH_RISK:[0,0,0,10,259]},[5]:{CLASSIC:[0,0.25,1.4,4.1,16.5,36],LOW_RISK:[0,0,1.5,4.2,13,300],MEDIUM_RISK:[0,0,1.4,4,14,390],HIGH_RISK:[0,0,0,4.5,48,450]},[6]:{CLASSIC:[0,0,1,3.68,7,16.5,40],LOW_RISK:[0,0,1.1,2,6.2,100,700],MEDIUM_RISK:[0,0,0,3,9,180,710],HIGH_RISK:[0,0,0,0,11,350,710]},[7]:{CLASSIC:[0,0,0.47,3,4.5,14,31,60],LOW_RISK:[0,0,1.1,1.6,3.5,15,225,700],MEDIUM_RISK:[0,0,0,2,7,30,400,800],HIGH_RISK:[0,0,0,0,7,90,400,800]},[8]:{CLASSIC:[0,0,0,2.2,4,13,22,55,70],LOW_RISK:[0,0,1.1,1.5,2,5.5,39,100,800],MEDIUM_RISK:[0,0,0,2,4,11,67,400,900],HIGH_RISK:[0,0,0,0,5,20,270,600,900]},[9]:{CLASSIC:[0,0,0,1.55,3,8,15,44,60,85],LOW_RISK:[0,0,1.1,1.3,1.7,2.5,7.5,50,250,1000],MEDIUM_RISK:[0,0,0,2,2.5,5,15,100,500,1000],HIGH_RISK:[0,0,0,0,4,11,56,500,800,1000]},[10]:{CLASSIC:[0,0,0,1.4,2.25,4.5,8,17,50,80,100],LOW_RISK:[0,0,1.1,1.2,1.3,1.8,3.5,13,50,250,1000],MEDIUM_RISK:[0,0,0,1.6,2,4,7,26,100,500,1000],HIGH_RISK:[0,0,0,0,3.5,8,13,63,500,800,1000]}},fr={[1]:{CLASSIC:[0,3.92],LOW_RISK:[0.7,1.82],MEDIUM_RISK:[0.4,2.72],HIGH_RISK:[0,3.92]},[2]:{CLASSIC:[0,1.9,4.32],LOW_RISK:[0,2,3.65],MEDIUM_RISK:[0,1.8,5],HIGH_RISK:[0,0,17]},[3]:{CLASSIC:[0,1,3,10.7],LOW_RISK:[0,1.1,1.3,26.2],MEDIUM_RISK:[0,0,2.7,50.3],HIGH_RISK:[0,0,0,80.7]},[4]:{CLASSIC:[0,0.8,1.8,4.75,22.5],LOW_RISK:[0,0,2.2,7.65,90],MEDIUM_RISK:[0,0,1.7,9.8,100],HIGH_RISK:[0,0,0,9.75,259]},[5]:{CLASSIC:[0,0.2,1.4,4.25,16.4,36],LOW_RISK:[0,0,1.5,4.1,12.9,300],MEDIUM_RISK:[0,0,1.4,3.9,13.9,390],HIGH_RISK:[0,0,0,4.5,47,450]},[6]:{CLASSIC:[0,0,1,3.6,7,17,40],LOW_RISK:[0,0,1.1,2,5.8,100,700],MEDIUM_RISK:[0,0,0,3,8.6,180,710],HIGH_RISK:[0,0,0,0,10.6,350,710]},[7]:{CLASSIC:[0,0,0.5,3,4.1,13.7,31,60],LOW_RISK:[0,0,1.1,1.6,3.5,13.5,225,700],MEDIUM_RISK:[0,0,0,2,6.9,29.2,400,800],HIGH_RISK:[0,0,0,0,6.9,89.1,400,800]},[8]:{CLASSIC:[0,0,0,2.2,4,12.2,22,55,70],LOW_RISK:[0,0,1.1,1.5,2,4.8,38,100,800],MEDIUM_RISK:[0,0,0,2,4,10.4,66,400,900],HIGH_RISK:[0,0,0,0,4.9,19.8,270,600,900]},[9]:{CLASSIC:[0,0,0,1.5,3,8.1,15,45,60,85],LOW_RISK:[0,0,1.1,1.3,1.7,2.1,7.4,50,250,1000],MEDIUM_RISK:[0,0,0,2,2.5,4.6,15.2,100,500,1000],HIGH_RISK:[0,0,0,0,4,10.7,55.4,500,800,1000]},[10]:{CLASSIC:[0,0,0,1.4,2.2,4.5,7.6,16,50,80,100],LOW_RISK:[0,0,1.1,1.2,1.3,1.6,3.7,13,50,250,1000],MEDIUM_RISK:[0,0,0,1.6,2,3.8,6.8,26,100,500,1000],HIGH_RISK:[0,0,0,0,3.5,7.8,12.8,63,500,800,1000]}},mr={[1]:{CLASSIC:[0,3.88],LOW_RISK:[0.7,1.78],MEDIUM_RISK:[0.4,2.68],HIGH_RISK:[0,3.88]},[2]:{CLASSIC:[0,1.85,4.48],LOW_RISK:[0,2,3.48],MEDIUM_RISK:[0,1.8,4.8],HIGH_RISK:[0,0,16.8]},[3]:{CLASSIC:[0,1,3,9.9],LOW_RISK:[0,1.1,1.2,26.5],MEDIUM_RISK:[0,0,2.65,50],HIGH_RISK:[0,0,0,79.9]},[4]:{CLASSIC:[0,0.8,1.7,5,23],LOW_RISK:[0,0,2.1,7.95,90],MEDIUM_RISK:[0,0,1.7,9.55,100],HIGH_RISK:[0,0,0,9.5,259]},[5]:{CLASSIC:[0,0.2,1.4,4.1,16.6,36],LOW_RISK:[0,0,1.5,4,12.7,300],MEDIUM_RISK:[0,0,1.4,3.8,13.7,390],HIGH_RISK:[0,0,0,4.4,46.9,450]},[6]:{CLASSIC:[0,0,1,3.6,6.6,16.5,40],LOW_RISK:[0,0,1.1,1.9,5.9,100,700],MEDIUM_RISK:[0,0,0,2.9,8.7,180,710],HIGH_RISK:[0,0,0,0,10.8,342,710]},[7]:{CLASSIC:[0,0,0.5,2.9,4.3,13.5,30.4,60],LOW_RISK:[0,0,1.1,1.6,3.1,14.8,225,700],MEDIUM_RISK:[0,0,0,2,6.7,29,400,800],HIGH_RISK:[0,0,0,0,6.8,88.2,400,800]},[8]:{CLASSIC:[0,0,0,2.2,3.8,12.7,21,54,70],LOW_RISK:[0,0,1.1,1.5,1.8,5.2,38,100,800],MEDIUM_RISK:[0,0,0,2,3.8,10.8,66,400,900],HIGH_RISK:[0,0,0,0,4.9,19.5,265,600,900]},[9]:{CLASSIC:[0,0,0,1.5,2.9,8.2,15,43,60,85],LOW_RISK:[0,0,1.1,1.3,1.6,2.1,7.7,49,250,1000],MEDIUM_RISK:[0,0,0,2,2.4,4.7,15,98,500,1000],HIGH_RISK:[0,0,0,0,3.9,10.8,55,500,800,1000]},[10]:{CLASSIC:[0,0,0,1.4,2.2,4.2,8,16.7,50,80,100],LOW_RISK:[0,0,1.1,1.2,1.3,1.5,2.9,12,50,250,1000],MEDIUM_RISK:[0,0,0,1.6,2,3.6,6.6,26,100,500,1000],HIGH_RISK:[0,0,0,0,3.4,7.9,12.9,62,500,800,1000]}},vr={[1]:{CLASSIC:[0,3.88],LOW_RISK:[0.68,1.84],MEDIUM_RISK:[0.38,2.74],HIGH_RISK:[0,3.88]},[2]:{CLASSIC:[0,1.85,4.48],LOW_RISK:[0,1.96,3.75],MEDIUM_RISK:[0,1.77,5],HIGH_RISK:[0,0,16.82]},[3]:{CLASSIC:[0,1,3.05,9.35],LOW_RISK:[0,1.07,1.37,25.7],MEDIUM_RISK:[0,0,2.74,49],HIGH_RISK:[0,0,0,79.9]},[4]:{CLASSIC:[0,0.8,1.72,4.95,22.3],LOW_RISK:[0,0,2.15,7.86,87],MEDIUM_RISK:[0,0,1.67,9.7,100],HIGH_RISK:[0,0,0,9.7,256]},[5]:{CLASSIC:[0,0.24,1.38,4,16.3,35.5],LOW_RISK:[0,0,1.48,4.1,12.43,300],MEDIUM_RISK:[0,0,1.35,3.96,13.8,389],HIGH_RISK:[0,0,0,4.4,47,444]},[6]:{CLASSIC:[0,0,1,3.57,6.8,16.2,37],LOW_RISK:[0,0,1.06,1.96,6.16,99,700],MEDIUM_RISK:[0,0,0,2.9,8.9,178,709],HIGH_RISK:[0,0,0,0,10.4,347,709]},[7]:{CLASSIC:[0,0,0.45,2.95,4.44,13.85,30,60],LOW_RISK:[0,0,1.07,1.57,3.47,14.57,225,700],MEDIUM_RISK:[0,0,0,1.95,6.8,29.8,400,800],HIGH_RISK:[0,0,0,0,6.8,88.2,400,800]},[8]:{CLASSIC:[0,0,0,2.15,3.9,12.9,21.9,55,70],LOW_RISK:[0,0,1.08,1.45,1.98,5.48,38.8,100,800],MEDIUM_RISK:[0,0,0,1.95,3.96,10.6,66.9,396,896],HIGH_RISK:[0,0,0,0,4.9,19.2,269,599,896]},[9]:{CLASSIC:[0,0,0,1.5,2.95,7.96,14.96,44,60,85],LOW_RISK:[0,0,1.05,1.29,1.69,2.49,7.49,49,250,1000],MEDIUM_RISK:[0,0,0,1.95,2.47,4.9,14.9,99,500,1000],HIGH_RISK:[0,0,0,0,3.96,10.5,55,500,800,1000]},[10]:{CLASSIC:[0,0,0,1.37,2.2,4.45,7.7,16.7,50,80,100],LOW_RISK:[0,0,1.08,1.18,1.28,1.76,3.4,12.9,50,250,1000],MEDIUM_RISK:[0,0,0,1.57,1.95,3.96,6.9,25.5,100,500,1000],HIGH_RISK:[0,0,0,0,3.43,7.9,12.5,60,500,800,1000]}},wr={[1]:{CLASSIC:[0,3.68],LOW_RISK:[0.7,1.58],MEDIUM_RISK:[0.4,2.48],HIGH_RISK:[0,3.68]},[2]:{CLASSIC:[0,1.72,4.48],LOW_RISK:[0,1.9,3.28],MEDIUM_RISK:[0,1.7,4.62],HIGH_RISK:[0,0,15.95]},[3]:{CLASSIC:[0,0.9,2.95,9.9],LOW_RISK:[0,1,1.2,26],MEDIUM_RISK:[0,0,2.29,50],HIGH_RISK:[0,0,0,75.7]},[4]:{CLASSIC:[0,0.8,1.6,4.4,21],LOW_RISK:[0,0,2,7.5,86],MEDIUM_RISK:[0,0,1.5,9.5,98],HIGH_RISK:[0,0,0,9,246]},[5]:{CLASSIC:[0,0.2,1.2,4.2,16.3,37],LOW_RISK:[0,0,1.4,3.8,12,300],MEDIUM_RISK:[0,0,1.3,3.5,14,385],HIGH_RISK:[0,0,0,4,45,450]},[6]:{CLASSIC:[0,0,1,3.3,6.2,15,40],LOW_RISK:[0,0,1.1,1.7,4.9,99,700],MEDIUM_RISK:[0,0,0,2.6,8.5,177,705],HIGH_RISK:[0,0,0,0,10,327,710]},[7]:{CLASSIC:[0,0,0.4,2.8,4.2,14.5,30,60],LOW_RISK:[0,0,1.1,1.4,3,14,210,700],MEDIUM_RISK:[0,0,0,1.8,6.4,29,400,800],HIGH_RISK:[0,0,0,0,6.1,85,400,800]},[8]:{CLASSIC:[0,0,0,2,3.7,13,20,50,70],LOW_RISK:[0,0,1.1,1.4,1.6,4.6,35,90,800],MEDIUM_RISK:[0,0,0,1.9,3.5,10.5,65,400,900],HIGH_RISK:[0,0,0,0,4.5,18,265,600,900]},[9]:{CLASSIC:[0,0,0,1.4,2.6,9,11.5,40,60,85],LOW_RISK:[0,0,1,1.3,1.5,2,7,45,250,1000],MEDIUM_RISK:[0,0,0,2,2.1,4,15,98,500,1000],HIGH_RISK:[0,0,0,0,3.5,10.5,55,500,800,1000]},[10]:{CLASSIC:[0,0,0,1.3,2,4.4,8,16.7,50,80,100],LOW_RISK:[0,0,1,1.2,1.25,1.4,2,10,50,250,1000],MEDIUM_RISK:[0,0,0,1.5,1.9,3.5,6.2,26,100,500,1000],HIGH_RISK:[0,0,0,0,3,8,14,57,500,800,1000]}},Cb=new i3(new Map([[1,dr],[2,fr],[3,mr],[4,vr],[8,wr]]));var gr;((a)=>{a.LOW_RISK="LOW_RISK",a.MEDIUM_RISK="MEDIUM_RISK",a.HIGH_RISK="HIGH_RISK"})(gr||={});var kr={LOW_RISK:{8:[6,2.1,1.1,1,0.5,1,1.1,2.1,6],9:[6,2,1.6,1,0.7,0.7,1,1.6,2,6],10:[9,3,1.4,1.1,1,0.5,1,1.1,1.4,3,9],11:[8,3,1.9,1.3,1,0.7,0.7,1,1.3,1.9,3,8],12:[10,3,1.6,1.4,1.1,1,0.5,1,1.1,1.4,1.6,3,10],13:[8,4,3,1.9,1.2,0.9,0.7,0.7,0.9,1.2,1.9,3,4,8],14:[7,4,1.9,1.4,1.3,1.1,1,0.5,1,1.1,1.3,1.4,1.9,4,7],15:[15,8,3,2,1.5,1.1,1,0.7,0.7,1,1.1,1.5,2,3,8,15],16:[16,9,2,1.4,1.4,1.2,1.1,1,0.5,1,1.1,1.2,1.4,1.4,2,9,16]},MEDIUM_RISK:{8:[13,3,1.3,0.7,0.4,0.7,1.3,3,13],9:[18,4,1.7,0.9,0.5,0.5,0.9,1.7,4,18],10:[22,5,2,1.4,0.6,0.4,0.6,1.4,2,5,22],11:[24,6,3,1.8,0.7,0.5,0.5,0.7,1.8,3,6,24],12:[33,11,4,2,1.1,0.6,0.3,0.6,1.1,2,4,11,33],13:[43,13,6,3,1.3,0.7,0.4,0.4,0.7,1.3,3,6,13,43],14:[58,15,7,4,1.9,1,0.5,0.2,0.5,1,1.9,4,7,15,58],15:[88,18,11,5,3,1.3,0.5,0.3,0.3,0.5,1.3,3,5,11,18,88],16:[110,41.1,10,5,3,1.5,1,0.5,0.3,0.5,1,1.5,3,5,10,41.1,110]},HIGH_RISK:{8:[29,4,1.5,0.3,0.2,0.3,1.5,4,29],9:[43,7,2,0.6,0.2,0.2,0.6,2,7,43],10:[76,10,3,0.9,0.3,0.2,0.3,0.9,3,10,76],11:[120,13.9,5.2,1.4,0.4,0.2,0.2,0.4,1.4,5.2,13.9,120],12:[170,23.8,8.1,2,0.7,0.2,0.2,0.2,0.7,2,8.1,23.8,170],13:[260,36.7,11,4,1,0.2,0.2,0.2,0.2,1,4,11,36.7,260],14:[420,56.1,18,5,1.9,0.3,0.2,0.2,0.2,0.3,1.9,5,18,56.1,420],15:[620,82.8,27,8,3,0.5,0.2,0.2,0.2,0.2,0.5,3,8,27,82.8,620],16:[1000,129.9,26.1,9,4,2,0.2,0.2,0.2,0.2,0.2,2,4,9,26.1,129.9,1000]}},pr={LOW_RISK:{8:[6,1.9,1.1,1,0.5,1,1.1,1.9,6],9:[6,1.7,1.6,1,0.7,0.7,1,1.6,1.7,6],10:[9,2.5,1.4,1.1,1,0.5,1,1.1,1.4,2.5,9],11:[9,2.5,1.8,1.3,1,0.7,0.7,1,1.3,1.8,2.5,9],12:[10,3.2,1.6,1.3,1.1,1,0.5,1,1.1,1.3,1.6,3.2,10],13:[8,3.7,2.9,1.8,1.2,0.9,0.7,0.7,0.9,1.2,1.8,2.9,3.7,8],14:[7,4,1.8,1.2,1.3,1.1,1,0.5,1,1.1,1.3,1.2,1.8,4,7],15:[15,7.6,2.8,2,1.4,1.1,1,0.7,0.7,1,1.1,1.4,2,2.8,7.6,15],16:[16,9,1.7,1.2,1.3,1.2,1.1,1,0.5,1,1.1,1.2,1.3,1.2,1.7,9,16]},MEDIUM_RISK:{8:[13,3.2,1.4,0.6,0.4,0.6,1.4,3.2,13],9:[18,3.7,1.7,0.9,0.5,0.5,0.9,1.7,3.7,18],10:[22,5,1.9,1.4,0.6,0.4,0.6,1.4,1.9,5,22],11:[24,6,2.8,1.8,0.7,0.5,0.5,0.7,1.8,2.8,6,24],12:[33,11.1,4,1.9,1.1,0.6,0.3,0.6,1.1,1.9,4,11.1,33],13:[43,13.7,6.1,2.8,1.3,0.7,0.4,0.4,0.7,1.3,2.8,6.1,13.7,43],14:[58,13.7,6.7,3.9,1.9,1,0.5,0.2,0.5,1,1.9,3.9,6.7,13.7,58],15:[88,17.7,10.8,5,2.9,1.3,0.5,0.3,0.3,0.5,1.3,2.9,5,10.8,17.7,88],16:[110,40.5,9.8,4.8,2.9,1.5,1,0.5,0.3,0.5,1,1.5,2.9,4.8,9.8,40.5,110]},HIGH_RISK:{8:[29,3.8,1.5,0.3,0.2,0.3,1.5,3.8,29],9:[43,7.1,1.9,0.6,0.2,0.2,0.6,1.9,7.1,43],10:[76,9.9,2.9,0.9,0.3,0.2,0.3,0.9,2.9,9.9,76],11:[120,13.4,5.1,1.4,0.4,0.2,0.2,0.4,1.4,5.1,13.4,120],12:[170,23.2,7.9,2,0.7,0.2,0.2,0.2,0.7,2,7.9,23.2,170],13:[260,36.6,10.5,4,1,0.2,0.2,0.2,0.2,1,4,10.5,36.6,260],14:[420,55.5,17.6,4.9,1.9,0.3,0.2,0.2,0.2,0.3,1.9,4.9,17.6,55.5,420],15:[620,82.3,26.8,7.7,3,0.5,0.2,0.2,0.2,0.2,0.5,3,7.7,26.8,82.3,620],16:[1000,129.8,25.2,8.6,4,2,0.2,0.2,0.2,0.2,0.2,2,4,8.6,25.2,129.8,1000]}},br={LOW_RISK:{8:[6,2.2,1.1,1,0.4,1,1.1,2.2,6],9:[6,1.8,1.5,1,0.7,0.7,1,1.5,1.8,6],10:[9,2.4,1.3,1.1,1,0.5,1,1.1,1.3,2.4,9],11:[8,2.7,1.9,1.2,1,0.7,0.7,1,1.2,1.9,2.7,8],12:[10,3.3,1.6,1.2,1.1,1,0.5,1,1.1,1.2,1.6,3.3,10],13:[8,3.8,2.9,1.9,1.1,0.9,0.7,0.7,0.9,1.1,1.9,2.9,3.8,8],14:[7,3.9,2,1.4,1.3,1.1,1,0.4,1,1.1,1.3,1.4,2,3.9,7],15:[15,7.9,2.5,2,1.3,1.1,1,0.7,0.7,1,1.1,1.3,2,2.5,7.9,15],16:[16,8.9,1.9,1.4,1.4,1.2,1.1,1,0.4,1,1.1,1.2,1.4,1.4,1.9,8.9,16]},MEDIUM_RISK:{8:[13,3.5,1.2,0.7,0.3,0.7,1.2,3.5,13],9:[18,3.8,1.6,0.9,0.5,0.5,0.9,1.6,3.8,18],10:[22,5.2,2,1.3,0.6,0.4,0.6,1.3,2,5.2,22],11:[24,5.6,2.7,1.8,0.7,0.5,0.5,0.7,1.8,2.7,5.6,24],12:[33,11.3,4,1.8,1.1,0.6,0.3,0.6,1.1,1.8,4,11.3,33],13:[43,12.9,5.7,2.8,1.3,0.7,0.4,0.4,0.7,1.3,2.8,5.7,12.9,43],14:[58,13.7,6.9,3.9,1.8,1,0.5,0.2,0.5,1,1.8,3.9,6.9,13.7,58],15:[88,18,10.9,4.9,2.8,1.3,0.5,0.3,0.3,0.5,1.3,2.8,4.9,10.9,18,88],16:[110,39.9,9.9,5,2.9,1.4,1,0.5,0.3,0.5,1,1.4,2.9,5,9.9,39.9,110]},HIGH_RISK:{8:[29,4,1.4,0.3,0.2,0.3,1.4,4,29],9:[43,7.3,2,0.5,0.2,0.2,0.5,2,7.3,43],10:[76,9.8,2.8,0.9,0.3,0.2,0.3,0.9,2.8,9.8,76],11:[120,13.5,4.9,1.4,0.4,0.2,0.2,0.4,1.4,4.9,13.5,120],12:[170,23.3,7.9,1.9,0.7,0.2,0.2,0.2,0.7,1.9,7.9,23.3,170],13:[260,36.2,10.4,3.9,1,0.2,0.2,0.2,0.2,1,3.9,10.4,36.2,260],14:[420,54.8,17.9,4.9,1.8,0.3,0.2,0.2,0.2,0.3,1.8,4.9,17.9,54.8,420],15:[620,81.9,26.6,7.7,2.9,0.5,0.2,0.2,0.2,0.2,0.5,2.9,7.7,26.6,81.9,620],16:[1000,130,24.9,8.4,3.9,2,0.2,0.2,0.2,0.2,0.2,2,3.9,8.4,24.9,130,1000]}},zr={LOW_RISK:{8:[6,2,1.1,1,0.4,1,1.1,2,6],9:[6,1.9,1.4,1,0.7,0.7,1,1.4,1.9,6],10:[9,2.8,1.1,1.1,1,0.5,1,1.1,1.1,2.8,9],11:[8,2.7,1.7,1.2,1,0.7,0.7,1,1.2,1.7,2.7,8],12:[10,2.7,1.4,1.2,1.1,1,0.5,1,1.1,1.2,1.4,2.7,10],13:[8,3.5,2.8,1.9,1.3,0.9,0.6,0.6,0.9,1.3,1.9,2.8,3.5,8],14:[7,3.3,1.6,1.3,1.3,1.1,1,0.4,1,1.1,1.3,1.3,1.6,3.3,7],15:[15,8,2.9,2,1.4,1.2,1,0.6,0.6,1,1.2,1.4,2,2.9,8,15],16:[16,9.1,2.2,1.4,1.2,1.2,1.1,1,0.4,1,1.1,1.2,1.2,1.4,2.2,9.1,16]},MEDIUM_RISK:{8:[13,2.9,1.2,0.7,0.4,0.7,1.2,2.9,13],9:[18,3.5,1.6,0.9,0.5,0.5,0.9,1.6,3.5,18],10:[22,4.7,2,1.3,0.6,0.4,0.6,1.3,2,4.7,22],11:[24,5.7,2.5,1.8,0.7,0.5,0.5,0.7,1.8,2.5,5.7,24],12:[33,10.7,3.8,1.8,1.1,0.6,0.3,0.6,1.1,1.8,3.8,10.7,33],13:[43,12.6,5.6,2.7,1.3,0.7,0.4,0.4,0.7,1.3,2.7,5.6,12.6,43],14:[58,13.7,6.4,3.8,1.8,1,0.5,0.2,0.5,1,1.8,3.8,6.4,13.7,58],15:[88,17.7,10.7,4.9,2.7,1.3,0.5,0.3,0.3,0.5,1.3,2.7,4.9,10.7,17.7,88],16:[110,39.7,9.6,4.8,2.8,1.4,1,0.5,0.3,0.5,1,1.4,2.8,4.8,9.6,39.7,110]},HIGH_RISK:{8:[29,3.9,1.4,0.3,0.2,0.3,1.4,3.9,29],9:[43,6.9,1.8,0.6,0.2,0.2,0.6,1.8,6.9,43],10:[76,9.8,2.7,0.9,0.3,0.2,0.3,0.9,2.7,9.8,76],11:[120,13.1,5.1,1.3,0.4,0.2,0.2,0.4,1.3,5.1,13.1,120],12:[170,22.7,7.7,1.9,0.7,0.2,0.2,0.2,0.7,1.9,7.7,22.7,170],13:[260,35.9,10.3,3.8,1,0.2,0.2,0.2,0.2,1,3.8,10.3,35.9,260],14:[420,54.2,17.5,4.8,1.8,0.3,0.2,0.2,0.2,0.3,1.8,4.8,17.5,54.2,420],15:[620,80.6,26.1,7.8,2.8,0.5,0.2,0.2,0.2,0.2,0.5,2.8,7.8,26.1,80.6,620],16:[1000,129.7,24.7,8.2,3.8,2,0.2,0.2,0.2,0.2,0.2,2,3.8,8.2,24.7,129.7,1000]}},xr={LOW_RISK:{8:[5,1.8,1,1,0.4,1,1,1.8,5],9:[5,1.7,1.2,1,0.7,0.7,1,1.2,1.7,5],10:[9,2.8,1.2,1,1,0.4,1,1,1.2,2.8,9],11:[8,2.5,1.6,1,1,0.7,0.7,1,1,1.6,2.5,8],12:[10,2.5,1.3,1.3,1,1,0.4,1,1,1.3,1.3,2.5,10],13:[8,4.1,2.8,1.8,1.1,0.9,0.6,0.6,0.9,1.1,1.8,2.8,4.1,8],14:[7,3.3,1.7,1.2,1.2,1,1,0.4,1,1,1.2,1.2,1.7,3.3,7],15:[15,7.3,2.9,1.9,1.4,1,1,0.6,0.6,1,1,1.4,1.9,2.9,7.3,15],16:[16,8.7,2,1.5,1.3,1,1.1,1,0.3,1,1.1,1,1.3,1.5,2,8.7,16]},MEDIUM_RISK:{8:[13,2.6,1.1,0.7,0.4,0.7,1.1,2.6,13],9:[17,3.3,1.4,0.9,0.5,0.5,0.9,1.4,3.3,17],10:[21,4.1,1.7,1.3,0.6,0.4,0.6,1.3,1.7,4.1,21],11:[23,5.6,2.4,1.6,0.7,0.5,0.5,0.7,1.6,2.4,5.6,23],12:[32,10.2,3.7,1.7,1.1,0.6,0.2,0.6,1.1,1.7,3.7,10.2,32],13:[42,11.7,5.3,2.5,1.2,0.7,0.4,0.4,0.7,1.2,2.5,5.3,11.7,42],14:[56,13.2,5.9,3.6,1.6,1,0.5,0.2,0.5,1,1.6,3.6,5.9,13.2,56],15:[86,17.3,10,4.6,2.6,1.2,0.5,0.3,0.3,0.5,1.2,2.6,4.6,10,17.3,86],16:[107,39,9.9,4.5,2.4,1.3,1,0.5,0.3,0.5,1,1.3,2.4,4.5,9.9,39,107]},HIGH_RISK:{8:[28,3.3,1.4,0.3,0.2,0.3,1.4,3.3,28],9:[42,6.7,1.6,0.6,0.2,0.2,0.6,1.6,6.7,42],10:[74,9.6,2.6,0.9,0.3,0.1,0.3,0.9,2.6,9.6,74],11:[116,12.7,4.8,1.2,0.4,0.2,0.2,0.4,1.2,4.8,12.7,116],12:[165,20.9,7.2,1.8,0.7,0.2,0.2,0.2,0.7,1.8,7.2,20.9,165],13:[252,33.9,10.1,3.4,1,0.2,0.2,0.2,0.2,1,3.4,10.1,33.9,252],14:[407,51.9,16.3,4.6,1.7,0.3,0.2,0.2,0.2,0.3,1.7,4.6,16.3,51.9,407],15:[600,76.9,24.9,7.4,2.6,0.5,0.2,0.2,0.2,0.2,0.5,2.6,7.4,24.9,76.9,600],16:[1000,122,24.5,8,3.7,1.8,0.2,0.2,0.2,0.2,0.2,1.8,3.7,8,24.5,122,1000]}},Vb=new i3(new Map([[1,kr],[2,pr],[3,br],[4,zr],[8,xr]]));var B8=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],yr=[37,...B8],S0=[[0,1],[0,2],[0,3],[1,2],[1,4],[2,3],[2,5],[3,6],[4,5],[4,7],[5,6],[5,8],[6,9],[7,8],[7,10],[8,9],[8,11],[9,12],[10,11],[10,13],[11,12],[11,14],[12,15],[13,14],[13,16],[14,15],[14,17],[15,18],[16,17],[16,19],[17,18],[17,20],[18,21],[19,20],[19,22],[20,21],[20,23],[21,24],[22,23],[22,25],[23,24],[23,26],[24,27],[25,26],[25,28],[26,27],[26,29],[27,30],[28,29],[28,31],[29,30],[29,32],[30,33],[31,32],[31,34],[32,33],[32,35],[33,36],[34,35],[35,36]],O0=[[0,1],[0,37],[3,37],[1,2],[1,4],[2,3],[2,5],[3,6],[4,5],[4,7],[5,6],[5,8],[6,9],[7,8],[7,10],[8,9],[8,11],[9,12],[10,11],[10,13],[11,12],[11,14],[12,15],[13,14],[13,16],[14,15],[14,17],[15,18],[16,17],[16,19],[17,18],[17,20],[18,21],[19,20],[19,22],[20,21],[20,23],[21,24],[22,23],[22,25],[23,24],[23,26],[24,27],[25,26],[25,28],[26,27],[26,29],[27,30],[28,29],[28,31],[29,30],[29,32],[30,33],[31,32],[31,34],[32,33],[32,35],[33,36],[34,35],[35,36]],H0=[[0,1,2],[0,2,3],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18],[19,20,21],[22,23,24],[25,26,27],[28,29,30],[31,32,33],[34,35,36]],K0=[[0,1,2],[0,2,37],[1,2,3],[2,3,37],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18],[19,20,21],[22,23,24],[25,26,27],[28,29,30],[31,32,33],[34,35,36]],M0=[[0,1,2,3],[1,2,4,5],[2,3,5,6],[4,5,7,8],[5,6,8,9],[7,8,10,11],[8,9,11,12],[10,11,13,14],[11,12,14,15],[13,14,16,17],[14,15,17,18],[16,17,19,20],[17,18,20,21],[19,20,22,23],[20,21,23,24],[22,23,25,26],[23,24,26,27],[25,26,28,29],[26,27,29,30],[28,29,31,32],[29,30,32,33],[31,32,34,35],[32,33,35,36]],j0=[[1,2,4,5],[2,3,5,6],[4,5,7,8],[5,6,8,9],[7,8,10,11],[8,9,11,12],[10,11,13,14],[11,12,14,15],[13,14,16,17],[14,15,17,18],[16,17,19,20],[17,18,20,21],[19,20,22,23],[20,21,23,24],[22,23,25,26],[23,24,26,27],[25,26,28,29],[26,27,29,30],[28,29,31,32],[29,30,32,33],[31,32,34,35],[32,33,35,36]],Zr=[0,1,2,3,37],Y3=[[1,2,3,4,5,6],[4,5,6,7,8,9],[7,8,9,10,11,12],[10,11,12,13,14,15],[13,14,15,16,17,18],[16,17,18,19,20,21],[19,20,21,22,23,24],[22,23,24,25,26,27],[25,26,27,28,29,30],[28,29,30,31,32,33],[31,32,33,34,35,36]],X3=[[1,2,3,4,5,6],[4,5,6,7,8,9],[7,8,9,10,11,12],[10,11,12,13,14,15],[13,14,15,16,17,18],[16,17,18,19,20,21],[19,20,21,22,23,24],[22,23,24,25,26,27],[25,26,27,28,29,30],[28,29,30,31,32,33],[31,32,33,34,35,36]],E0;((a)=>{a.EVEN="EVEN",a.ODD="ODD"})(E0||={});var L0;((a)=>{a.RED="RED",a.BLACK="BLACK"})(L0||={});var q0;((a)=>{a.LOW="LOW",a.HIGH="HIGH"})(q0||={});var T0;((a)=>{a.TOP="TOP",a.MIDDLE="MIDDLE",a.BOTTOM="BOTTOM"})(T0||={});var J0;((a)=>{a.FIRST="FIRST",a.SECOND="SECOND",a.THIRD="THIRD"})(J0||={});var t1;((a)=>{a.AMERICAN="AMERICAN",a.EUROPEAN="EUROPEAN"})(t1||={});var Ir=(a)=>{if(a.straightBets.length===0&&a.splitBets.length===0&&a.streetBets.length===0&&a.cornerBets.length===0&&a.doubleStreetBets.length===0&&a.parityBets.length===0&&a.colorBets.length===0&&a.halfBets.length===0&&a.columnBets.length===0&&a.dozenBets.length===0)throw Z1.createValidationError("Must place at least a single bet.");if(!a.straightBets.every((i)=>i.amount.gte(0)&&e3(i.value)))throw Z1.createValidationError("Invalid straight bet.");if(!a.splitBets.every((i)=>i.amount.gte(0)&&Fr(i.values)))throw Z1.createValidationError("Invalid split bet.");if(!a.streetBets.every((i)=>i.amount.gte(0)&&Rr(i.values)))throw Z1.createValidationError("Invalid street bet.");if(!a.cornerBets.every((i)=>i.amount.gte(0)&&Sr(i.values)))throw Z1.createValidationError("Invalid corner bet.");if(!a.doubleStreetBets.every((i)=>i.amount.gte(0)&&Or(i.values)))throw Z1.createValidationError("Invalid double street bet.");if(!a.parityBets.every((i)=>i.amount.gte(0)&&Object.values(E0).includes(i.parity)))throw Z1.createValidationError("Invalid parity bet.");if(!a.colorBets.every((i)=>i.amount.gte(0)&&Object.values(L0).includes(i.color)))throw Z1.createValidationError("Invalid color bet.");if(!a.halfBets.every((i)=>i.amount.gte(0)&&Object.values(q0).includes(i.half)))throw Z1.createValidationError("Invalid half bet.");if(!a.columnBets.every((i)=>i.amount.gte(0)&&Object.values(T0).includes(i.column)))throw Z1.createValidationError("Invalid column bet.");if(!a.dozenBets.every((i)=>i.amount.gte(0)&&Object.values(J0).includes(i.dozen)))throw Z1.createValidationError("Invalid dozen bet.")},e3=(a)=>{return B8.includes(a)},Fr=(a)=>{if(a.length!==2)return!1;if(!a.every(e3))return!1;return S0.some(([i,e])=>i===a[0]&&e===a[1])},Rr=(a)=>{if(a.length!==3)return!1;if(!a.every(e3))return!1;return H0.some(([i,e,r])=>i===a[0]&&e===a[1]&&r===a[2])},Sr=(a)=>{if(a.length!==4)return!1;if(!a.every(e3))return!1;return M0.some(([i,e,r,l])=>i===a[0]&&e===a[1]&&r===a[2]&&l===a[3])},Or=(a)=>{if(a.length!==6)return!1;if(!a.every(e3))return!1;return Y3.some(([i,e,r,l,n,t])=>i===a[0]&&e===a[1]&&r===a[2]&&l===a[3]&&n===a[4]&&t===a[5])},Hr=(a)=>{if(a.straightBets.length===0&&a.splitBets.length===0&&a.streetBets.length===0&&a.cornerBets.length===0&&a.basketBets.length===0&&a.doubleStreetBets.length===0&&a.parityBets.length===0&&a.colorBets.length===0&&a.halfBets.length===0&&a.columnBets.length===0&&a.dozenBets.length===0)throw Z1.createValidationError("Must place at least a single bet.");if(!a.straightBets.every((i)=>i.amount.gte(0)&&r3(i.value)))throw Z1.createValidationError("Invalid straight bet.");if(!a.splitBets.every((i)=>i.amount.gte(0)&&Kr(i.values)))throw Z1.createValidationError("Invalid split bet.");if(!a.streetBets.every((i)=>i.amount.gte(0)&&Mr(i.values)))throw Z1.createValidationError("Invalid street bet.");if(!a.cornerBets.every((i)=>i.amount.gte(0)&&jr(i.values)))throw Z1.createValidationError("Invalid corner bet.");if(!a.basketBets.every((i)=>i.amount.gte(0)))throw Z1.createValidationError("Invalid basket bet.");if(!a.doubleStreetBets.every((i)=>i.amount.gte(0)&&Er(i.values)))throw Z1.createValidationError("Invalid double street bet.");if(!a.parityBets.every((i)=>i.amount.gte(0)&&Object.values(E0).includes(i.parity)))throw Z1.createValidationError("Invalid parity bet.");if(!a.colorBets.every((i)=>i.amount.gte(0)&&Object.values(L0).includes(i.color)))throw Z1.createValidationError("Invalid color bet.");if(!a.halfBets.every((i)=>i.amount.gte(0)&&Object.values(q0).includes(i.half)))throw Z1.createValidationError("Invalid half bet.");if(!a.columnBets.every((i)=>i.amount.gte(0)&&Object.values(T0).includes(i.column)))throw Z1.createValidationError("Invalid column bet.");if(!a.dozenBets.every((i)=>i.amount.gte(0)&&Object.values(J0).includes(i.dozen)))throw Z1.createValidationError("Invalid dozen bet.")},r3=(a)=>{return yr.includes(a)};function Kr(a){if(a.length!==2)return!1;if(!a.every(r3))return!1;return O0.some(([i,e])=>i===a[0]&&e===a[1])}var Mr=(a)=>{if(a.length!==3)return!1;if(!a.every(r3))return!1;return K0.some(([i,e,r])=>i===a[0]&&e===a[1]&&r===a[2])},jr=(a)=>{if(a.length!==4)return!1;if(!a.every(r3))return!1;return j0.some(([i,e,r,l])=>i===a[0]&&e===a[1]&&r===a[2]&&l===a[3])},Er=(a)=>{if(a.length!==6)return!1;if(!a.every(r3))return!1;return X3.some(([i,e,r,l,n,t])=>i===a[0]&&e===a[1]&&r===a[2]&&l===a[3]&&n===a[4]&&t===a[5])},Lr={straightBets:36,splitBets:18,streetBets:12,cornerBets:9,basketBets:7,doubleStreetBets:6,parityBets:2,colorBets:2,halfBets:2,columnBets:3,dozenBets:3},qr=[3,6,9,12,15,18,21,24,27,30,33,36],Tr=[2,5,8,11,14,17,20,23,26,29,32,35],Jr=[1,4,7,10,13,16,19,22,25,28,31,34],Dr=[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36],Cr=[2,4,6,8,10,11,13,15,17,20,22,24,26,28,29,31,33,35];class Pa extends P8{constructor(){super("ROULETTE")}determineGameResult({generator:a,gameInputs:i}){this.validateInputs(i);let e=a.getRandomInt({min:0,max:this.maxNumber}),r=e.value,l=this.determineBetOutcomes(i,r),{payoutMultiplier:n}=this.getPayoutDetails(i,r);return{outputs:{betOutcomes:l,result:e.values},payoutMultiplier:n,isFinished:!0,randomValues:e}}getBetAmount(a){return this.calculateTotalBetAmount(this.getBetTotals(a))}getPayoutDetails(a,i){let e=this.determineBetOutcomes(a,i),r=this.getBetTotals(a),l=this.getBetTotals(e.winningBets),n=this.calculateTotalBetAmount(r),t=this.calculateTotalPayout(l);return{payoutMultiplier:n.gt(0)?t.div(n):new I2(0),payoutAmount:t}}determineBetOutcomes(a,i){let e={},r={};for(let l of Object.keys(a)){let n=a[l],t=this.betPredicates[l],{winning:h,losing:o}=this.partitionBets(n,t,i);e[l]=h,r[l]=o}return{winningBets:e,losingBets:r}}calculateTotalAmount(a){return a.reduce((i,e)=>i.plus(e.amount),new I2(0))}isWinningStraightBet(a,i){return a.value===i}isWinningSplitBet(a,i){return a.values.some((e)=>e===i)}isWinningStreetBet(a,i){return a.values.some((e)=>e===i)}isWinningCornerBet(a,i){return a.values.some((e)=>e===i)}isWinningDoubleStreetBet(a,i){return a.values.some((e)=>e===i)}isWinningColorBet(a,i){let e=a;return Dr.includes(i)&&e.color==="RED"||Cr.includes(i)&&e.color==="BLACK"}isWinningHalfBet(a,i){let e=a;if(i>0&&i<=18&&e.half==="LOW")return!0;if(i>18&&i<=36&&e.half==="HIGH")return!0;return!1}isWinningColumnBet(a,i){let e=a;return qr.includes(i)&&e.column==="TOP"||Tr.includes(i)&&e.column==="MIDDLE"||Jr.includes(i)&&e.column==="BOTTOM"}isWinningDozenBet(a,i){let e=a;if(i>0&&i<=12&&e.dozen==="FIRST")return!0;if(i>12&&i<=24&&e.dozen==="SECOND")return!0;if(i>24&&i<=36&&e.dozen==="THIRD")return!0;return!1}isWinningParityBet(a,i){let e=a;if(i===0||i===37)return!1;let r=i%2===0?"EVEN":"ODD";return e.parity===r}getBetTotals(a){let i={};for(let e of Object.keys(a))i[e]=this.calculateTotalAmount(a[e]);return i}calculateTotalBetAmount(a){return Object.values(a).reduce((i,e)=>i.plus(e),new I2(0))}partitionBets(a,i,e){return{winning:a.filter((r)=>i(r,e)),losing:a.filter((r)=>!i(r,e))}}calculateTotalPayout(a){return Object.entries(a).reduce((i,[e,r])=>{let l=Lr[e];return i.plus(r.mul(l||0))},new I2(0))}}class Ba extends Pa{maxNumber=36;betPredicates={straightBets:this.isWinningStraightBet,splitBets:this.isWinningSplitBet,streetBets:this.isWinningStreetBet,cornerBets:this.isWinningCornerBet,doubleStreetBets:this.isWinningDoubleStreetBet,parityBets:this.isWinningParityBet,colorBets:this.isWinningColorBet,halfBets:this.isWinningHalfBet,columnBets:this.isWinningColumnBet,dozenBets:this.isWinningDozenBet};validateInputs(a){Ir(a)}}class _a extends Pa{maxNumber=37;betPredicates={straightBets:this.isWinningStraightBet,splitBets:this.isWinningSplitBet,streetBets:this.isWinningStreetBet,cornerBets:this.isWinningCornerBet,basketBets:this.isWinningBasketBet,doubleStreetBets:this.isWinningDoubleStreetBet,parityBets:this.isWinningParityBet,colorBets:this.isWinningColorBet,halfBets:this.isWinningHalfBet,columnBets:this.isWinningColumnBet,dozenBets:this.isWinningDozenBet};validateInputs(a){Hr(a)}isWinningBasketBet(a,i){return Zr.some((e)=>e===i)}}var $r;((a)=>{a.LOW_RISK="LOW_RISK",a.MEDIUM_RISK="MEDIUM_RISK",a.HIGH_RISK="HIGH_RISK"})($r||={});var Wr;((a)=>{a[a.TEN=10]="TEN",a[a.TWENTY=20]="TWENTY",a[a.THIRTY=30]="THIRTY",a[a.FORTY=40]="FORTY",a[a.FIFTY=50]="FIFTY"})(Wr||={});var Ar={LOW_RISK:{10:{ZERO:0,A:1.2,B:1.5},20:{ZERO:0,A:1.2,B:1.5},30:{ZERO:0,A:1.2,B:1.5},40:{ZERO:0,A:1.2,B:1.5},50:{ZERO:0,A:1.2,B:1.5}},MEDIUM_RISK:{10:{ZERO:0,A:1.5,B:1.9,C:2,D:3},20:{ZERO:0,A:1.5,B:1.8,C:2,D:3},30:{ZERO:0,A:1.5,B:1.7,C:2,D:3,E:4},40:{ZERO:0,A:1.5,B:1.6,C:2,D:3},50:{ZERO:0,A:1.5,B:2,C:3,D:5}},HIGH_RISK:{10:{ZERO:0,A:9.9},20:{ZERO:0,A:19.8},30:{ZERO:0,A:29.7},40:{ZERO:0,A:39.6},50:{ZERO:0,A:49.5}}},Vr={LOW_RISK:{10:{ZERO:0,A:1.2,B:1.4},20:{ZERO:0,A:1.2,B:1.4},30:{ZERO:0,A:1.2,B:1.4},40:{ZERO:0,A:1.2,B:1.4},50:{ZERO:0,A:1.2,B:1.4}},MEDIUM_RISK:{10:{ZERO:0,A:1.4,B:1.9,C:2,D:3.1},20:{ZERO:0,A:1.5,B:1.8,C:1.9,D:3.4},30:{ZERO:0,A:1.5,B:1.7,C:1.9,D:3,E:4.3},40:{ZERO:0,A:1.5,B:1.6,C:2,D:2.9},50:{ZERO:0,A:1.5,B:2,C:3,D:4.5}},HIGH_RISK:{10:{ZERO:0,A:9.8},20:{ZERO:0,A:19.6},30:{ZERO:0,A:29.4},40:{ZERO:0,A:39.2},50:{ZERO:0,A:49}}},Qr={LOW_RISK:{10:{ZERO:0,A:1.15,B:1.65},20:{ZERO:0,A:1.15,B:1.65},30:{ZERO:0,A:1.15,B:1.65},40:{ZERO:0,A:1.15,B:1.65},50:{ZERO:0,A:1.15,B:1.65}},MEDIUM_RISK:{10:{ZERO:0,A:1.4,B:1.9,C:2,D:3},20:{ZERO:0,A:1.4,B:1.6,C:2,D:3},30:{ZERO:0,A:1.4,B:1.7,C:2,D:3,E:4},40:{ZERO:0,A:1.5,B:1.6,C:2,D:2.8},50:{ZERO:0,A:1.5,B:2,C:2.7,D:4.9}},HIGH_RISK:{10:{ZERO:0,A:9.7},20:{ZERO:0,A:19.4},30:{ZERO:0,A:29.1},40:{ZERO:0,A:38.8},50:{ZERO:0,A:48.5}}},Yr={LOW_RISK:{10:{ZERO:0,A:1.15,B:1.55},20:{ZERO:0,A:1.15,B:1.55},30:{ZERO:0,A:1.15,B:1.55},40:{ZERO:0,A:1.15,B:1.55},50:{ZERO:0,A:1.15,B:1.55}},MEDIUM_RISK:{10:{ZERO:0,A:1.4,B:1.8,C:2,D:3},20:{ZERO:0,A:1.3,B:1.5,C:2,D:3},30:{ZERO:0,A:1.4,B:1.6,C:2,D:2.9,E:4},40:{ZERO:0,A:1.5,B:1.6,C:2,D:2.7},50:{ZERO:0,A:1.5,B:2,C:2.6,D:4.8}},HIGH_RISK:{10:{ZERO:0,A:9.6},20:{ZERO:0,A:19.2},30:{ZERO:0,A:28.8},40:{ZERO:0,A:38.4},50:{ZERO:0,A:48}}},Xr={LOW_RISK:{10:{ZERO:0,A:1.1,B:1.5},20:{ZERO:0,A:1.1,B:1.5},30:{ZERO:0,A:1.1,B:1.45},40:{ZERO:0,A:1.1,B:1.45},50:{ZERO:0,A:1.1,B:1.45}},MEDIUM_RISK:{10:{ZERO:0,A:1.3,B:1.7,C:1.9,D:3},20:{ZERO:0,A:1.3,B:1.4,C:1.9,D:3},30:{ZERO:0,A:1.3,B:1.7,C:1.9,D:2.8,E:3.8},40:{ZERO:0,A:1.4,B:1.8,C:1.9,D:2.6},50:{ZERO:0,A:1.4,B:1.9,C:2.6,D:4.6}},HIGH_RISK:{10:{ZERO:0,A:9.2},20:{ZERO:0,A:18.4},30:{ZERO:0,A:27.6},40:{ZERO:0,A:36.8},50:{ZERO:0,A:46}}},Xb=new i3(new Map([[1,Ar],[2,Vr],[3,Qr],[4,Yr],[8,Xr]])),Nb={LOW_RISK:{10:["B","A","A","A","ZERO","A","A","A","A","ZERO"],20:["B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO"],30:["B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO"],40:["B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO"],50:["B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO"]},MEDIUM_RISK:{10:["ZERO","B","ZERO","A","ZERO","C","ZERO","A","ZERO","D"],20:["A","ZERO","C","ZERO","B","ZERO","C","ZERO","C","ZERO","A","ZERO","C","ZERO","C","ZERO","D","ZERO","C","ZERO"],30:["A","ZERO","C","ZERO","A","ZERO","C","ZERO","D","ZERO","B","ZERO","A","ZERO","C","ZERO","A","ZERO","C","ZERO","A","ZERO","C","ZERO","E","ZERO","A","ZERO","C","ZERO"],40:["C","ZERO","A","ZERO","D","ZERO","C","ZERO","A","ZERO","C","ZERO","A","ZERO","D","ZERO","C","ZERO","A","ZERO","B","ZERO","A","ZERO","D","ZERO","C","ZERO","A","ZERO","C","ZERO","A","ZERO","D","ZERO","C","ZERO","A","ZERO"],50:["A","ZERO","B","ZERO","A","ZERO","C","ZERO","A","ZERO","B","ZERO","A","ZERO","B","ZERO","A","ZERO","C","ZERO","A","ZERO","B","ZERO","A","ZERO","B","ZERO","A","ZERO","C","ZERO","A","ZERO","B","ZERO","A","ZERO","B","ZERO","A","ZERO","D","ZERO","A","ZERO","B","ZERO","A","ZERO"]},HIGH_RISK:{10:[...Array(9).fill("ZERO"),"A"],20:[...Array(19).fill("ZERO"),"A"],30:[...Array(29).fill("ZERO"),"A"],40:[...Array(39).fill("ZERO"),"A"],50:[...Array(49).fill("ZERO"),"A"]}};var H2=100,N3=[{config:{label:"1K",theme:"red"},baseValue:1000*H2},{config:{label:"100",theme:"purple"},baseValue:100*H2},{config:{label:"10",theme:"blue"},baseValue:10*H2},{config:{label:"1",theme:"green"},baseValue:1*H2},{config:{label:"0.1",theme:"cyan"},baseValue:0.1*H2},{config:{label:"0.01",theme:"gold"},baseValue:0.01*H2}],a5=2;class o2{static parseChipLabel(a){let i=a.trim(),e=i.match(/^(\d+(?:\.\d+)?)([kKmM])?$/);if(!e)return Number(i)||0;let r=parseFloat(e[1]),l=e[2]?.toUpperCase();if(l==="K")return r*1000;if(l==="M")return r*1e6;return r}static formatChipLabel(a,i=2){if(a>=1e6&&Number.isInteger(a)&&a%1e6===0)return`${a/1e6}M`;if(a>=1000&&Number.isInteger(a)&&a%1000===0)return`${a/1000}K`;if(Number.isInteger(a))return`${a}`;return a.toFixed(i).replace(/\.0+$/,"").replace(/(\.\d*[1-9])0+$/,"$1")}static formatStackLabel(a){let e=o2.formatChipLabel(a);if(e.length<=3)return{label:e,truncated:!1};if(a>=1e6)return{label:`${Math.floor(a/1e6)}M`,truncated:!0};if(a>=1000)return{label:`${Math.floor(a/1000)}K`,truncated:!0};if(a>=1){let l=`${Math.floor(a)}`;if(l.length<=3)return{label:l,truncated:!0}}if(a>0)return{label:o2.formatChipLabel(a),truncated:!1};return{label:"0",truncated:!1}}static getStackDisplayLabel(a,i,e){if(i===1)return e;let{label:r,truncated:l}=o2.formatStackLabel(a);return l?`${r}+`:r}static toBaseUnits(a){return Math.round(a*H2)}static fromBaseUnits(a){return a/H2}static buildChipsFromBaseUnits(a){let i=[],e=a;for(let r of N3){if(e<=0)break;let l=Math.floor(e/r.baseValue);for(let n=0;n<Math.min(l,10);n++)i.push({...r.config});e-=l*r.baseValue}return i}static amountToVisualChips(a){let i=o2.toBaseUnits(a),e=o2.buildChipsFromBaseUnits(i),r=e[0]??N3[N3.length-1].config,l=o2.getStackDisplayLabel(a,e.length,r.label);return{chips:e,topLabel:l,highestChip:r}}static undoEvent(a){if(a.length===0)return a;return a.slice(0,-1)}static deriveState(a,i){let e=new Map;for(let l of a){let n=l.type;switch(n){case"add":{let h=(e.get(l.position)??K(0)).plus(l.amount);if(h.lte(0))e.delete(l.position);else e.set(l.position,h);break}case"multiplier-change":{let t=l.multiplier;if(t===1)break;if(t>1){for(let[o,c]of e)e.set(o,K(c.times(t).toFixed(a5,K.roundDown)));let h=K(0);for(let o of e.values())h=h.plus(o);if(h.gt(i)){let o=K(i).div(h);for(let[c,u]of e)e.set(c,K(u.times(o).toFixed(a5,K.roundDown)))}break}for(let[h,o]of e){let c=o.times(t);if(c.gte(0.01))e.set(h,K(c.toFixed(a5,K.roundDown)));else e.delete(h)}break}default:}}let r=new Map;for(let[l,n]of e)r.set(l,Number(n.toFixed(2)));return r}}var _8=40,a9=8,i9=0.75,G3=12;var l3=new Set([1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36]),e9=[0,32,15,19,4,21,2,25,17,34,6,27,13,36,11,30,8,23,10,5,24,16,33,1,20,14,31,9,22,18,29,7,28,12,35,3,26],r9=[0,28,9,26,30,11,7,20,32,17,5,22,34,15,3,24,36,13,1,37,27,10,25,29,12,8,19,31,18,6,21,33,16,4,23,35,14,2],U3=128,i5=5,P3=Math.PI*1.5,e5=5,l9=187,n9=5,Nr=[{x:260,y:128.8888888888889},{x:250,y:128.0555555555556},{x:240,y:126.94444444444451},{x:230,y:125.55555555555566},{x:220,y:123.88888888888903},{x:210,y:121.94444444444463},{x:200,y:119.72222222222246},{x:190,y:117.22222222222251},{x:180,y:114.4444444444448},{x:170,y:111.38888888888931},{x:160,y:108.05555555555605},{x:150,y:104.44444444444503},{x:140,y:100.55555555555623},{x:130,y:96.38888888888965},{x:120,y:91.94444444444531},{x:110,y:87.2222222222232},{x:100,y:83.94999827222222},{bounceCount:1},{x:91.92723877109552,y:88.06750950353444},{x:83.85447754219103,y:91.90724295706889},{x:75.78171631328655,y:95.46919863282557},{x:67.70895508438207,y:98.75337653080447},{x:59.636193855477586,y:101.75977665100561},{x:51.5634326265731,y:104.48839899342897},{x:43.49067139766862,y:106.93924355807457},{x:35.41791016876414,y:109.11231034494239},{x:27.345148939859655,y:111.00759935403244},{x:19.272387710955172,y:112.62511058534471},{x:11.19962648205069,y:113.96484403887922},{x:3.1268652531462067,y:115.02679971463596},{x:-4.945895975758276,y:115.81097761261492},{x:-13.018657204662759,y:116.31737773281611},{x:-21.09141843356724,y:116.54600007523953},{x:-29.164179662471724,y:116.49684463988518},{x:-37.23694089137621,y:116.16991142675306},{x:-45.30970212028069,y:115.56520043584317},{x:-53.38246334918517,y:114.6827116671555},{x:-61.455224578089656,y:113.52244512069007},{x:-69.52798580699414,y:112.08440079644686},{x:-77.60074703589862,y:110.36857869442588},{x:-85.6735082648031,y:108.37497881462713},{x:-93.74626949370759,y:106.1036011570506},{x:-101.81903072261207,y:103.55444572169631},{x:-109.89179195151655,y:100.72751250856425},{x:-117.96455318042103,y:97.62280151765441},{x:-126.03731440932552,y:94.2403127489668},{x:-134.11007563823,y:90.58004620250142},{x:-142.18283686713448,y:86.64200187825827},{x:-150.25559809603897,y:83.7840989631938},{bounceCount:2},{x:-156.37102114986237,y:87.32692354458038},{x:-162.48644420368578,y:90.5919703481892},{x:-168.60186725750918,y:93.57923937402023},{x:-174.7172903113326,y:96.2887306220735},{x:-180.832713365156,y:98.720444092349},{x:-186.9481364189794,y:100.87437978484672},{x:-193.0635594728028,y:102.75053769956668},{x:-199.1789825266262,y:104.34891783650886},{x:-205.29440558044962,y:105.66952019567327},{x:-211.40982863427303,y:106.71234477705991},{x:-217.52525168809643,y:107.47739158066878},{x:-223.64067474191984,y:107.96466060649988},{x:-229.75609779574324,y:108.1741518545532},{x:-235.87152084956665,y:108.10586532482876},{x:-241.98694390339006,y:107.75980101732654},{x:-248.10236695721346,y:107.13595893204655},{x:-254.21779001103687,y:106.23433906898879},{x:-260.3332130648603,y:105.05494142815326},{x:-266.4486361186837,y:103.59776600953995},{x:-272.5640591725071,y:101.86281281314888},{x:-278.6794822263305,y:99.85008183898003},{x:-284.7949052801539,y:97.55957308703341},{x:-290.9103283339773,y:94.99128655730902},{x:-297.0257513878007,y:92.14522224980686},{x:-303.1411744416241,y:89.02138016452693},{x:-309.2565974954475,y:85.61976030146923},{x:-315.3720205492709,y:83.80664866023704},{bounceCount:3},{x:-319.53056837648023,y:86.88414839816954},{x:-323.68911620368954,y:89.68387035832427},{x:-327.84766403089884,y:92.20581454070123},{x:-332.00621185810814,y:94.44998094530041},{x:-336.16475968531745,y:96.41636957212182},{x:-340.32330751252675,y:98.10498042116546},{x:-344.48185533973606,y:99.51581349243133},{x:-348.64040316694536,y:100.64886878591943},{x:-352.79895099415467,y:101.50414630162976},{x:-356.95749882136397,y:102.08164603956232},{x:-361.1160466485733,y:102.3813679997171},{x:-365.2745944757826,y:102.40331218209411},{x:-369.4331423029919,y:102.14747858669335},{x:-373.5916901302012,y:101.61386721351482},{x:-377.7502379574105,y:100.80247806255852},{x:-381.9087857846198,y:99.71331113382445},{x:-386.0673336118291,y:98.3463664273126},{x:-390.2258814390384,y:96.70164394302299},{x:-394.3844292662477,y:94.7791436809556},{x:-398.542977093457,y:92.57886564111044},{x:-402.7015249206663,y:90.10080982348751},{x:-406.8600727478756,y:87.34497622808681},{x:-411.0186205750849,y:84.31136485490833},{bounceCount:4},{x:-415.1771684022942,y:83.75529806659927},{x:-417.4869098517198,y:86.48546885866637},{x:-419.7966513011454,y:88.9378618729557},{x:-422.106392750571,y:91.11247710946725},{x:-424.4161341999966,y:93.00931456820103},{x:-426.72587564942216,y:94.62837424915705},{x:-429.03561709884775,y:95.96965615233529},{x:-431.34535854827334,y:97.03316027773576},{x:-433.6550999976989,y:97.81888662535846},{x:-435.9648414471245,y:98.32683519520339},{x:-438.2745828965501,y:98.55700598727054},{x:-440.5843243459757,y:98.50939900155993},{x:-442.8940657954013,y:98.18401423807154},{x:-445.20380724482686,y:97.58085169680538},{x:-447.51354869425245,y:96.69991137776145},{x:-449.82329014367804,y:95.54119328093975},{x:-452.1330315931036,y:94.10469740634028},{x:-454.4427730425292,y:92.39042375396303},{x:-456.7525144919548,y:90.39837232380802},{x:-459.0622559413804,y:88.12854311587523},{x:-461.371997390806,y:85.58093613016467},{bounceCount:5},{x:-463.68173884023156,y:83.94120374701237},{x:-465.70528195049405,y:86.56420005607708},{x:-467.72882506075655,y:88.90941858736403},{x:-469.75236817101904,y:90.9768593408732},{x:-471.77591128128154,y:92.76652231660461},{x:-473.79945439154403,y:94.27840751455824},{x:-475.8229975018065,y:95.5125149347341},{x:-477.846540612069,y:96.46884457713219},{x:-479.8700837223315,y:97.1473964417525},{x:-481.893626832594,y:97.54817052859505},{x:-483.9171699428565,y:97.67116683765983},{x:-485.940713053119,y:97.51638536894683},{x:-487.9642561633815,y:97.08382612245606},{x:-489.987799273644,y:96.37348909818752},{x:-492.0113423839065,y:95.38537429614121},{x:-494.034885494169,y:94.11948171631713},{x:-496.05842860443147,y:92.57581135871527},{x:-498.08197171469396,y:90.75436322333564},{x:-500.10551482495646,y:88.65513731017825},{x:-502.12905793521895,y:86.27813361924308},{bounceCount:6},{x:-504.15260104548145,y:83.83750960549332},{x:-505.15602161683216,y:85.89336903069062},{x:-506.1594421881829,y:87.67145067811015},{x:-507.1628627595336,y:89.1717545477519},{x:-508.1662833308843,y:90.39428063961589},{x:-509.169703902235,y:91.3390289537021}],Gr=[{x:260,y:128.8888888888889},{x:250,y:128.0555555555556},{x:240,y:126.94444444444451},{x:230,y:125.55555555555566},{x:220,y:123.88888888888903},{x:210,y:121.94444444444463},{x:200,y:119.72222222222246},{x:190,y:117.22222222222251},{x:180,y:114.4444444444448},{x:170,y:111.38888888888931},{x:160,y:108.05555555555605},{x:150,y:104.44444444444503},{x:140,y:100.55555555555623},{x:130,y:96.38888888888965},{x:120,y:91.94444444444531},{x:110,y:87.2222222222232},{x:100,y:83.94999827222222},{bounceCount:1},{x:91.92723877109552,y:87.633880780038},{x:83.85447754219103,y:91.03998551007601},{x:75.78171631328655,y:94.16831246233625},{x:67.70895508438207,y:97.01886163681871},{x:59.636193855477586,y:99.59163303352341},{x:51.5634326265731,y:101.88662665245033},{x:43.49067139766862,y:103.90384249359948},{x:35.41791016876414,y:105.64328055697086},{x:27.345148939859655,y:107.10494084256447},{x:19.272387710955172,y:108.28882335038031},{x:11.19962648205069,y:109.19492808041838},{x:3.1268652531462067,y:109.82325503267867},{x:-4.945895975758276,y:110.1738042071612},{x:-13.018657204662759,y:110.24657560386595},{x:-21.09141843356724,y:110.04156922279293},{x:-29.164179662471724,y:109.55878506394214},{x:-37.23694089137621,y:108.79822312731358},{x:-45.30970212028069,y:107.75988341290724},{x:-53.38246334918517,y:106.44376592072314},{x:-61.455224578089656,y:104.84987065076126},{x:-69.52798580699414,y:102.97819760302161},{x:-77.60074703589862,y:100.8287467775042},{x:-85.6735082648031,y:98.401518174209},{x:-93.74626949370759,y:95.69651179313604},{x:-101.81903072261207,y:92.7137276342853},{x:-109.89179195151655,y:89.4531656976568},{x:-117.96455318042103,y:85.91482598325052},{x:-126.03731440932552,y:83.94956456484863},{bounceCount:2},{x:-132.18102229535384,y:86.61429644597087},{x:-138.32473018138217,y:89.00125054931533},{x:-144.4684380674105,y:91.11042687488202},{x:-150.6121459534388,y:92.94182542267095},{x:-156.75585383946714,y:94.4954461926821},{x:-162.89956172549546,y:95.77128918491547},{x:-169.04326961152378,y:96.76935439937108},{x:-175.1869774975521,y:97.48964183604892},{x:-181.33068538358043,y:97.93215149494898},{x:-187.47439326960875,y:98.09688337607128},{x:-193.61810115563708,y:97.9838374794158},{x:-199.7618090416654,y:97.59301380498255},{x:-205.90551692769372,y:96.92441235277153},{x:-212.04922481372205,y:95.97803312278273},{x:-218.19293269975037,y:94.75387611501617},{x:-224.3366405857787,y:93.25194132947183},{x:-230.48034847180702,y:91.47222876614973},{x:-236.62405635783534,y:89.41473842504985},{x:-242.76776424386367,y:87.0794703061722},{x:-248.911472129892,y:84.46642440951678},{bounceCount:3},{x:-255.0551800159203,y:83.82456182183898},{x:-259.2426187606561,y:85.89507577233672},{x:-263.4300575053919,y:87.6878119450567},{x:-267.6174962501277,y:89.20277033999889},{x:-271.8049349948635,y:90.43995095716332},{x:-275.9923737395993,y:91.39935379654997},{x:-280.1798124843351,y:92.08097885815886},{x:-284.3672512290709,y:92.48482614198997},{x:-288.5546899738067,y:92.61089564804331},{x:-292.7421287185425,y:92.45918737631888},{x:-296.9295674632783,y:92.02970132681668}],Ur=[{x:260,y:128.8888888888889},{x:250,y:128.0555555555556},{x:240,y:126.94444444444451},{x:230,y:125.55555555555566},{x:220,y:123.88888888888903},{x:210,y:121.94444444444463},{x:200,y:119.72222222222246},{x:190,y:117.22222222222251},{x:180,y:114.4444444444448},{x:170,y:111.38888888888931},{x:160,y:108.05555555555605},{x:150,y:104.44444444444503},{x:140,y:100.55555555555623},{x:130,y:96.38888888888965},{x:120,y:91.94444444444531},{x:110,y:87.2222222222232},{x:100,y:83.94999827222222},{bounceCount:1},{x:91.92723877109552,y:87.73024271859276},{x:83.85447754219103,y:91.23270938718554},{x:75.78171631328655,y:94.45739827800054},{x:67.70895508438207,y:97.40430939103777},{x:59.636193855477586,y:100.07344272629723},{x:51.5634326265731,y:102.46479828377892},{x:43.49067139766862,y:104.57837606348284},{x:35.41791016876414,y:106.41417606540898},{x:27.345148939859655,y:107.97219828955735},{x:19.272387710955172,y:109.25244273592796},{x:11.19962648205069,y:110.25490940452079},{x:3.1268652531462067,y:110.97959829533585},{x:-4.945895975758276,y:111.42650940837314},{x:-13.018657204662759,y:111.59564274363265},{x:-21.09141843356724,y:111.4869983011144},{x:-29.164179662471724,y:111.10057608081837},{x:-37.23694089137621,y:110.43637608274457},{x:-45.30970212028069,y:109.494398306893},{x:-53.38246334918517,y:108.27464275326366},{x:-61.455224578089656,y:106.77710942185655},{x:-69.52798580699414,y:105.00179831267167},{x:-77.60074703589862,y:102.94870942570901},{x:-85.6735082648031,y:100.61784276096859},{x:-93.74626949370759,y:98.00919831845039},{x:-101.81903072261207,y:95.12277609815442},{x:-109.89179195151655,y:91.95857610008068},{x:-117.96455318042103,y:88.51659832422916},{x:-126.03731440932552,y:84.79684277059988},{x:-134.11007563823,y:83.93714001160077},{bounceCount:2},{x:-140.24248787383567,y:87.02442244310811},{x:-146.37490010944134,y:89.83392709683767},{x:-152.507312345047,y:92.36565397278946},{x:-158.63972458065268,y:94.61960307096348},{x:-164.77213681625835,y:96.59577439135973},{x:-170.90454905186402,y:98.2941679339782},{x:-177.0369612874697,y:99.7147836988189},{x:-183.16937352307536,y:100.85762168588184},{x:-189.30178575868104,y:101.722681895167},{x:-195.4341979942867,y:102.30996432667439},{x:-201.56661022989238,y:102.61946898040401},{x:-207.69902246549805,y:102.65119585635586},{x:-213.83143470110372,y:102.40514495452993},{x:-219.9638469367094,y:101.88131627492623},{x:-226.09625917231506,y:101.07970981754477},{x:-232.22867140792073,y:100.00032558238553},{x:-238.3610836435264,y:98.64316356944852},{x:-244.49349587913207,y:97.00822377873374},{x:-250.62590811473774,y:95.09550621024118},{x:-256.7583203503434,y:92.90501086397086},{x:-262.8907325859491,y:90.43673773992276},{x:-269.02314482155475,y:87.6906868380969},{bounceCount:3},{x:-275.1555570571604,y:84.66685815849326},{x:-281.2879692927661,y:83.77451871525722},{x:-285.46293443573677,y:86.2868541409619},{x:-289.63789957870745,y:88.52141178888883},{x:-293.8128647216781,y:90.47819165903798},{x:-297.9878298646488,y:92.15719375140935},{x:-302.1627950076195,y:93.55841806600296},{x:-306.33776015059016,y:94.68186460281879},{x:-310.51272529356083,y:95.52753336185685},{x:-314.6876904365315,y:96.09542434311714},{x:-318.8626555795022,y:96.38553754659966},{x:-323.03762072247287,y:96.39787297230441},{x:-327.21258586544354,y:96.13243062023139},{x:-331.3875510084142,y:95.5892104903806},{x:-335.5625161513849,y:94.76821258275203},{x:-339.7374812943556,y:93.66943689734569},{x:-343.91244643732625,y:92.29288343416158},{x:-348.08741158029693,y:90.6385521931997},{x:-352.2623767232676,y:88.70644317446005},{x:-356.4373418662383,y:86.49655637794262},{bounceCount:4},{x:-360.61230700920896,y:84.00889180364743},{x:-364.78727215217964,y:83.93296749758815},{x:-367.62671783526935,y:86.29244841066702},{x:-370.46616351835905,y:88.37415154596812},{x:-373.30560920144876,y:90.17807690349144},{x:-376.14505488453847,y:91.704224483237},{x:-378.9845005676282,y:92.95259428520478},{x:-381.8239462507179,y:93.9231863093948},{x:-384.6633919338076,y:94.61600055580703},{x:-387.5028376168973,y:95.0310370244415},{x:-390.342283299987,y:95.1682957152982},{x:-393.1817289830767,y:95.02777662837713},{x:-396.0211746661664,y:94.60947976367828},{x:-398.8606203492561,y:93.91340512120166},{x:-401.70006603234583,y:92.93955270094727},{x:-404.53951171543554,y:91.68792250291511}],r5=[Nr,Gr,Ur];var B3=(a)=>[...a].sort((i,e)=>i-e),e1={straight:(a)=>`STRAIGHT_${a}`,split:(a,i)=>{let[e,r]=B3([a,i]);return`SPLIT_${e}_${r}`},street:(a,i,e)=>{let[r,l,n]=B3([a,i,e]);return`STREET_${r}_${l}_${n}`},corner:(a,i,e,r)=>{let[l,n,t,h]=B3([a,i,e,r]);return`CORNER_${l}_${n}_${t}_${h}`},line:(a,i,e,r,l,n)=>{let t=B3([a,i,e,r,l,n]);return`LINE_${t[0]}_${t[1]}_${t[2]}_${t[3]}_${t[4]}_${t[5]}`},dozen:(a)=>`DOZEN_${a}`,half:(a)=>`HALF_${a}`,parity:(a)=>`PARITY_${a}`,color:(a)=>`COLOR_${a}`,column:(a)=>`COLUMN_${a}`,basket:()=>"BASKET"};function l5(a){let i=a.match(/^STRAIGHT_(\d+)$/);if(i)return{type:"straight",value:Number(i[1])};let e=a.match(/^SPLIT_(\d+)_(\d+)$/);if(e)return{type:"split",values:[Number(e[1]),Number(e[2])]};let r=a.match(/^STREET_(\d+)_(\d+)_(\d+)$/);if(r)return{type:"street",values:[Number(r[1]),Number(r[2]),Number(r[3])]};let l=a.match(/^CORNER_(\d+)_(\d+)_(\d+)_(\d+)$/);if(l)return{type:"corner",values:[Number(l[1]),Number(l[2]),Number(l[3]),Number(l[4])]};let n=a.match(/^LINE_(\d+)_(\d+)_(\d+)_(\d+)_(\d+)_(\d+)$/);if(n)return{type:"line",values:[Number(n[1]),Number(n[2]),Number(n[3]),Number(n[4]),Number(n[5]),Number(n[6])]};if(a==="DOZEN_FIRST")return{type:"dozen",dozen:"FIRST"};if(a==="DOZEN_SECOND")return{type:"dozen",dozen:"SECOND"};if(a==="DOZEN_THIRD")return{type:"dozen",dozen:"THIRD"};if(a==="HALF_LOW")return{type:"half",half:"LOW"};if(a==="HALF_HIGH")return{type:"half",half:"HIGH"};if(a==="PARITY_EVEN")return{type:"parity",parity:"EVEN"};if(a==="PARITY_ODD")return{type:"parity",parity:"ODD"};if(a==="COLOR_RED")return{type:"color",color:"RED"};if(a==="COLOR_BLACK")return{type:"color",color:"BLACK"};if(a==="COLUMN_TOP")return{type:"column",column:"TOP"};if(a==="COLUMN_MIDDLE")return{type:"column",column:"MIDDLE"};if(a==="COLUMN_BOTTOM")return{type:"column",column:"BOTTOM"};if(a==="BASKET")return{type:"basket"};return null}function t9(a){let i=new Set,e=a===t1.AMERICAN?37:36;for(let h=0;h<=e;h++)i.add(e1.straight(h));let r=a===t1.EUROPEAN?S0:O0;for(let[h,o]of r)i.add(e1.split(h,o));let l=a===t1.EUROPEAN?H0:K0;for(let[h,o,c]of l)i.add(e1.street(h,o,c));let n=a===t1.EUROPEAN?M0:j0;for(let[h,o,c,u]of n)i.add(e1.corner(h,o,c,u));let t=a===t1.EUROPEAN?Y3:X3;for(let[h,o,c,u,m,s]of t)i.add(e1.line(h,o,c,u,m,s));if(i.add(e1.dozen("FIRST")),i.add(e1.dozen("SECOND")),i.add(e1.dozen("THIRD")),i.add(e1.half("LOW")),i.add(e1.half("HIGH")),i.add(e1.parity("EVEN")),i.add(e1.parity("ODD")),i.add(e1.color("RED")),i.add(e1.color("BLACK")),i.add(e1.column("TOP")),i.add(e1.column("MIDDLE")),i.add(e1.column("BOTTOM")),a===t1.AMERICAN)i.add(e1.basket());return i}var Pr=t9(t1.EUROPEAN),Br=t9(t1.AMERICAN);function o9(a,i){return(i===t1.EUROPEAN?Pr:Br).has(a)}function h9(a){let i=a%3;if(i===0)return 0;if(i===2)return 1;return 2}function s9(a){let i=new Map,e=new Map,r=new Map,l=new Map,n=new Map,t=a===t1.EUROPEAN?S0:O0;for(let[u,m]of t){let s=e1.split(u,m);if(u===0){if(m<=3)e.set(m,s);continue}if(m===37){if(u===3)e.set(3,s);continue}if(m-u===1)i.set(u,s);else e.set(m,s)}let h=a===t1.EUROPEAN?M0:j0;for(let[u,m,s,f]of h){let k=e1.corner(u,m,s,f);if(u===0)r.set(3,k);else r.set(s,k)}let o=a===t1.EUROPEAN?H0:K0;for(let[u,m,s]of o){let f=e1.street(u,m,s);if(u===0||s===37){if(u===0&&m===1)r.set(1,f);else if(u===0&&m===2&&s===3)r.set(2,f);else if(u===0&&m===2&&s===37)e.set(2,f);else if(u===2&&s===37)r.set(2,f)}else l.set(Math.max(u,m,s),f)}let c=a===t1.EUROPEAN?Y3:X3;for(let[u,m,s,f,k,w]of c){let y=e1.line(u,m,s,f,k,w),b=Math.max(u,m,s,f,k,w);n.set(b,y)}return{verticalSplit:i,horizontalSplit:e,corner:r,street:l,doubleStreet:n}}var _r=s9(t1.EUROPEAN),al=s9(t1.AMERICAN);function n3(a){return a===t1.EUROPEAN?_r:al}function u9(a,i){return n3(i).verticalSplit.get(a)??null}function c9(a,i){return n3(i).horizontalSplit.get(a)??null}function d9(a,i){return n3(i).corner.get(a)??null}function f9(a,i){return n3(i).doubleStreet.get(a)??null}function m9(a,i){return n3(i).street.get(a)??null}function n5(a){let i=l5(a);if(!i)return[];switch(i.type){case"straight":return[i.value];case"split":case"street":case"corner":case"line":return[...i.values];case"dozen":return Array.from({length:12},(e,r)=>r+1+(i.dozen==="FIRST"?0:i.dozen==="SECOND"?12:24));case"half":return Array.from({length:18},(e,r)=>r+(i.half==="LOW"?1:19));case"parity":return Array.from({length:18},(e,r)=>i.parity==="EVEN"?(r+1)*2:r*2+1);case"color":return i.color==="RED"?[...l3]:Array.from({length:36},(e,r)=>r+1).filter((e)=>!l3.has(e));case"column":return Array.from({length:12},(e,r)=>r*3+(i.column==="TOP"?3:i.column==="MIDDLE"?2:1));case"basket":return[0,37,1,2,3]}}function _3(a,i=t1.EUROPEAN){let e=[],r=[],l=[],n=[],t=[],h=[],o=[],c=[],u=[],m=[],s=[];for(let[k,w]of a.entries()){if(!o9(k,i))continue;let y=K(w).toFixed(4),b=l5(k);if(!b)continue;switch(b.type){case"straight":e.push({amount:y,value:b.value});break;case"split":r.push({amount:y,values:b.values});break;case"street":l.push({amount:y,values:b.values});break;case"corner":n.push({amount:y,values:b.values});break;case"line":t.push({amount:y,values:b.values});break;case"dozen":m.push({amount:y,dozen:J0[b.dozen]});break;case"half":c.push({amount:y,half:q0[b.half]});break;case"parity":h.push({amount:y,parity:E0[b.parity]});break;case"color":o.push({amount:y,color:L0[b.color]});break;case"column":u.push({amount:y,column:T0[b.column]});break;case"basket":s.push({amount:y});break}}let f={straightBets:e,splitBets:r,streetBets:l,cornerBets:n,doubleStreetBets:t,parityBets:h,colorBets:o,halfBets:c,columnBets:u,dozenBets:m};if(i===t1.AMERICAN){let k={...f,basketBets:s};return{type:t1.AMERICAN,inputs:k}}return{type:t1.EUROPEAN,inputs:f}}function v9(a){let i=K(0);for(let e of a.values())i=i.plus(e);return Number(i.toFixed(4))}class E1{static getNumberColor(a){if(a===0||a===37)return"green";return l3.has(a)?"red":"black"}static getValidSplits(a){return a===t1.EUROPEAN?S0:O0}static getValidStreets(a){return a===t1.EUROPEAN?H0:K0}static getValidCorners(a){return a===t1.EUROPEAN?M0:j0}static findValidSplit(a,i=t1.EUROPEAN){let e=[...a].sort((l,n)=>l-n),r=this.getValidSplits(i);for(let l of r)if(l[0]===e[0]&&l[1]===e[1])return l;return null}static findValidStreet(a,i=t1.EUROPEAN){let e=[...a].sort((l,n)=>l-n),r=this.getValidStreets(i);for(let l of r)if(l[0]===e[0]&&l[1]===e[1]&&l[2]===e[2])return l;return null}static findValidCorner(a,i=t1.EUROPEAN){let e=[...a].sort((l,n)=>l-n),r=this.getValidCorners(i);for(let l of r)if(l[0]===e[0]&&l[1]===e[1]&&l[2]===e[2]&&l[3]===e[3])return l;return null}static getWheelSequence(a){return a===t1.EUROPEAN?e9:r9}static calculateBallTargetAngle(a,i=t1.EUROPEAN){let e=this.getWheelSequence(i),r=e.indexOf(a);if(r===-1)return 0;let l=e.indexOf(6),n=360/e.length;return((r-l)%e.length+e.length)%e.length*n%360}static getRandomAnimationArray(){let a=Math.floor(Math.random()*r5.length);return[...r5[a]]}static transformAnimationPosition(a,i){if("bounceCount"in a)return a;let e=i.find((u)=>!("bounceCount"in u)),l=[...i].reverse().find((u)=>!("bounceCount"in u)).x-e.x,t=(a.x-e.x)/l,h=P3*t,o=Math.cos(h)*a.y,c=Math.sin(h)*a.y;return{x:o,y:c,angle:h*180/Math.PI,length:Math.abs(a.y)}}static preprocessAnimationArray(a){return a.map((i)=>this.transformAnimationPosition(i,a))}static getBallOffset(a){return a===t1.EUROPEAN?l9:n9}static convertBetsToLibraryFormat(a){return a.map((i)=>({...i,amount:K(i.amount)}))}static preparePayoutInputs(a,i){let e=_3(a,i);if(i===t1.AMERICAN){let r=new _a,l=e.inputs,n={straightBets:this.convertBetsToLibraryFormat(l.straightBets),splitBets:this.convertBetsToLibraryFormat(l.splitBets),streetBets:this.convertBetsToLibraryFormat(l.streetBets),cornerBets:this.convertBetsToLibraryFormat(l.cornerBets),doubleStreetBets:this.convertBetsToLibraryFormat(l.doubleStreetBets),parityBets:this.convertBetsToLibraryFormat(l.parityBets),colorBets:this.convertBetsToLibraryFormat(l.colorBets),halfBets:this.convertBetsToLibraryFormat(l.halfBets),columnBets:this.convertBetsToLibraryFormat(l.columnBets),dozenBets:this.convertBetsToLibraryFormat(l.dozenBets),basketBets:this.convertBetsToLibraryFormat(l.basketBets)};return{calculator:r,inputs:n,maxTile:37,type:t1.AMERICAN}}else{let r=new Ba,l=e.inputs,n={straightBets:this.convertBetsToLibraryFormat(l.straightBets),splitBets:this.convertBetsToLibraryFormat(l.splitBets),streetBets:this.convertBetsToLibraryFormat(l.streetBets),cornerBets:this.convertBetsToLibraryFormat(l.cornerBets),doubleStreetBets:this.convertBetsToLibraryFormat(l.doubleStreetBets),parityBets:this.convertBetsToLibraryFormat(l.parityBets),colorBets:this.convertBetsToLibraryFormat(l.colorBets),halfBets:this.convertBetsToLibraryFormat(l.halfBets),columnBets:this.convertBetsToLibraryFormat(l.columnBets),dozenBets:this.convertBetsToLibraryFormat(l.dozenBets)};return{calculator:r,inputs:n,maxTile:36,type:t1.EUROPEAN}}}static findMaxPayoutTile(a,i){let{calculator:e,inputs:r,maxTile:l}=this.preparePayoutInputs(a,i),n=K(0),t=0;for(let h=0;h<=l;h++){let{payoutAmount:o}=e.getPayoutDetails(r,h);if(o.gt(n))n=o,t=h}return{maxPayout:n.toNumber(),positionOfMaxMultiplier:t}}}class t5 extends M1{constructor(){super(...arguments);this.gameType="MINES";this.inBetResultModal=!1;this.enableAnimation=!1;this.persistResult=!1;this.animatedLimboMultiplier=null;this.animatedDiceResult=null;this.animatedAdvancedDiceResult=null;this.animatedKenoResults=[];this.animatedMinesState=null;this.animatedDiamondAppeared=[]}static styles=[X,h8];gameConsumer=new I1(this,{context:U});connectedCallback(){super.connectedCallback(),requestAnimationFrame(()=>{if(!this.isConnected)return;if(this.enableAnimation&&this.gameType==="LIMBO"&&this.limboData)this.animatedLimboMultiplier=null,setTimeout(()=>{if(this.isConnected)this.animatedLimboMultiplier=this.limboData?.resultMultiplier??null},100);if(this.enableAnimation&&this.gameType==="DICE"&&this.diceData)this.animatedDiceResult=null,setTimeout(()=>{if(this.isConnected)this.animatedDiceResult=this.diceData?.resultValue??null},100);if(this.enableAnimation&&this.gameType==="ADVANCED_DICE"&&this.advancedDiceData)this.animatedAdvancedDiceResult=null,setTimeout(()=>{if(this.isConnected)this.animatedAdvancedDiceResult=this.advancedDiceData?.resultValue??null},100);if(this.enableAnimation&&this.gameType==="KENO"&&this.kenoData)this.animatedKenoResults=[],this.kenoData.resultTiles?.forEach((a,i)=>{setTimeout(()=>{if(this.isConnected)this.animatedKenoResults=[...this.animatedKenoResults,a]},100+i*150)});if(this.enableAnimation&&this.gameType==="MINES"&&this.minesData){this.animatedMinesState={selectedTiles:[],mineLocations:this.minesData.mineLocations||[],state:"GAME_IN_PROGRESS"};let a=this.minesData.selectedTiles||[];setTimeout(()=>{if(!this.isConnected)return;a.forEach((e,r)=>{setTimeout(()=>{if(this.isConnected)this.animatedMinesState={...this.animatedMinesState,selectedTiles:[...this.animatedMinesState?.selectedTiles||[],e],state:"GAME_IN_PROGRESS"}},r*200)});let i=a.length*200+300;setTimeout(()=>{if(this.isConnected)this.animatedMinesState={...this.animatedMinesState,state:"VIEWING_RESULTS"}},i)},50)}})}updated(a){if(super.updated(a),a.has("enableAnimation")&&this.enableAnimation)requestAnimationFrame(()=>{if(!this.isConnected)return;if(this.gameType==="LIMBO"&&this.limboData)this.animatedLimboMultiplier=null,setTimeout(()=>{if(this.isConnected)this.animatedLimboMultiplier=this.limboData?.resultMultiplier??null},100);if(this.gameType==="DICE"&&this.diceData)this.animatedDiceResult=null,setTimeout(()=>{if(this.isConnected)this.animatedDiceResult=this.diceData?.resultValue??null},100);if(this.gameType==="ADVANCED_DICE"&&this.advancedDiceData)this.animatedAdvancedDiceResult=null,setTimeout(()=>{if(this.isConnected)this.animatedAdvancedDiceResult=this.advancedDiceData?.resultValue??null},100);if(this.gameType==="KENO"&&this.kenoData)this.animateKenoResults();if(this.gameType==="DIAMONDS"&&this.diamondsData)this.animateDiamondColors()});if(a.has("diamondsData")&&this.enableAnimation&&this.gameType==="DIAMONDS")this.animateDiamondColors()}async animateKenoResults(){if(!this.kenoData||!this.isConnected)return;requestAnimationFrame(()=>{if(this.isConnected)this.animatedKenoResults=[]});let a=this.kenoData.resultTiles||[];await new Promise((i)=>setTimeout(i,100));for(let i of a){if(!this.isConnected)break;requestAnimationFrame(()=>{if(this.isConnected)this.animatedKenoResults=[...this.animatedKenoResults,i]}),await new Promise((e)=>setTimeout(e,150))}}animateDiamondColors(){if(!this.diamondsData||!this.isConnected)return;let a=this.diamondsData.result?.length??5;this.animatedDiamondAppeared=Array(a).fill(!1);for(let i=0;i<a;i++)setTimeout(()=>{if(!this.isConnected)return;let e=[...this.animatedDiamondAppeared];e[i]=!0,this.animatedDiamondAppeared=e},i*P0)}render(){switch(this.gameType){case"MINES":let a=this.minesData?.selectedTiles||[],i=this.minesData?.mineLocations||[],e=a.some((l)=>i.includes(l)),r=a.length>0&&!e;return I`
7005
+ `}}d([z({type:Number})],Ua.prototype,"multiplier",void 0),d([z({type:Number})],Ua.prototype,"bounceCount",void 0),d([z({type:String})],Ua.prototype,"backgroundColor",void 0),d([z({type:String})],Ua.prototype,"shadowColor",void 0),d([n1(".bin")],Ua.prototype,"binEl",void 0),Ua=d([D("origami-plinko-bin")],Ua);var _e;((a)=>{a.DICE="DICE",a.MINES="MINES",a.KENO="KENO",a.LIMBO="LIMBO",a.ADVANCED_DICE="ADVANCED_DICE",a.BACCARAT="BACCARAT",a.DIAMONDS="DIAMONDS",a.PLINKO="PLINKO",a.ROULETTE="ROULETTE",a.WHEEL="WHEEL"})(_e||={});class P8{gameId;constructor(a){this.gameId=a}getGameResult(a){return this.determineGameResult(a)}}var ar;((a)=>a.INPUT_VALIDATION_ERROR="INPUT_VALIDATION_ERROR")(ar||={});class Z1 extends Error{static createValidationError(a){return new Z1("INPUT_VALIDATION_ERROR",a)}static isGameError(a){return a instanceof Z1}errorCode;constructor(a,i){super(i);this.errorCode=a}}var ir;((a)=>{a.ROLL_BETWEEN="ROLL_BETWEEN",a.ROLL_OUTSIDE="ROLL_OUTSIDE",a.ROLL_BETWEEN_TWO="ROLL_BETWEEN_TWO"})(ir||={});var er;((a)=>{a.PLAYER_WIN="PLAYER_WIN",a.TIE="TIE",a.BANKER_WIN="BANKER_WIN"})(er||={});var rr;((a)=>{a.PLAYER="PLAYER",a.TIE="TIE",a.BANKER="BANKER"})(rr||={});class i3{multipliers;constructor(a){this.multipliers=a}getMultipliers(a){let i=this.multipliers.get(a);if(i===void 0)throw new Error(`Multipliers for ${a} not found`);return i}getAllMultipliers(){return Array.from(this.multipliers.entries()).map(([a,i])=>({edge:a,multipliers:i}))}}var lr;((a)=>{a.PAIR="PAIR",a.TWO_PAIR="TWO_PAIR",a.THREE_OF_A_KIND="THREE_OF_A_KIND",a.FULL_HOUSE="FULL_HOUSE",a.FOUR_OF_A_KIND="FOUR_OF_A_KIND",a.FIVE_OF_A_KIND="FIVE_OF_A_KIND"})(lr||={});var nr={PAIR:0.1,TWO_PAIR:2,THREE_OF_A_KIND:3,FULL_HOUSE:4.3,FOUR_OF_A_KIND:5,FIVE_OF_A_KIND:50},tr={PAIR:0.1,TWO_PAIR:2,THREE_OF_A_KIND:3,FULL_HOUSE:4,FOUR_OF_A_KIND:4.8,FIVE_OF_A_KIND:50},or={PAIR:0.1,TWO_PAIR:2,THREE_OF_A_KIND:3,FULL_HOUSE:3.7,FOUR_OF_A_KIND:4.6,FIVE_OF_A_KIND:50},hr={PAIR:0.1,TWO_PAIR:2,THREE_OF_A_KIND:3,FULL_HOUSE:3.4,FOUR_OF_A_KIND:4.4,FIVE_OF_A_KIND:50},sr={PAIR:0.1,TWO_PAIR:2,THREE_OF_A_KIND:2.8,FULL_HOUSE:3.2,FOUR_OF_A_KIND:3.6,FIVE_OF_A_KIND:50},Tb=new i3(new Map([[1,nr],[2,tr],[3,or],[4,hr],[8,sr]]));var ur;((a)=>{a.ABOVE="ABOVE",a.BELOW="BELOW"})(ur||={});var cr;((a)=>{a.CLASSIC="CLASSIC",a.LOW_RISK="LOW_RISK",a.MEDIUM_RISK="MEDIUM_RISK",a.HIGH_RISK="HIGH_RISK"})(cr||={});var dr={[1]:{CLASSIC:[0,3.96],LOW_RISK:[0.7,1.85],MEDIUM_RISK:[0.4,2.75],HIGH_RISK:[0,3.96]},[2]:{CLASSIC:[0,1.9,4.5],LOW_RISK:[0,2,3.8],MEDIUM_RISK:[0,1.8,5.1],HIGH_RISK:[0,0,17.1]},[3]:{CLASSIC:[0,1,3.1,10.4],LOW_RISK:[0,1.1,1.38,26],MEDIUM_RISK:[0,0,2.8,50],HIGH_RISK:[0,0,0,81.5]},[4]:{CLASSIC:[0,0.8,1.8,5,22.5],LOW_RISK:[0,0,2.2,7.9,90],MEDIUM_RISK:[0,0,1.7,10,100],HIGH_RISK:[0,0,0,10,259]},[5]:{CLASSIC:[0,0.25,1.4,4.1,16.5,36],LOW_RISK:[0,0,1.5,4.2,13,300],MEDIUM_RISK:[0,0,1.4,4,14,390],HIGH_RISK:[0,0,0,4.5,48,450]},[6]:{CLASSIC:[0,0,1,3.68,7,16.5,40],LOW_RISK:[0,0,1.1,2,6.2,100,700],MEDIUM_RISK:[0,0,0,3,9,180,710],HIGH_RISK:[0,0,0,0,11,350,710]},[7]:{CLASSIC:[0,0,0.47,3,4.5,14,31,60],LOW_RISK:[0,0,1.1,1.6,3.5,15,225,700],MEDIUM_RISK:[0,0,0,2,7,30,400,800],HIGH_RISK:[0,0,0,0,7,90,400,800]},[8]:{CLASSIC:[0,0,0,2.2,4,13,22,55,70],LOW_RISK:[0,0,1.1,1.5,2,5.5,39,100,800],MEDIUM_RISK:[0,0,0,2,4,11,67,400,900],HIGH_RISK:[0,0,0,0,5,20,270,600,900]},[9]:{CLASSIC:[0,0,0,1.55,3,8,15,44,60,85],LOW_RISK:[0,0,1.1,1.3,1.7,2.5,7.5,50,250,1000],MEDIUM_RISK:[0,0,0,2,2.5,5,15,100,500,1000],HIGH_RISK:[0,0,0,0,4,11,56,500,800,1000]},[10]:{CLASSIC:[0,0,0,1.4,2.25,4.5,8,17,50,80,100],LOW_RISK:[0,0,1.1,1.2,1.3,1.8,3.5,13,50,250,1000],MEDIUM_RISK:[0,0,0,1.6,2,4,7,26,100,500,1000],HIGH_RISK:[0,0,0,0,3.5,8,13,63,500,800,1000]}},fr={[1]:{CLASSIC:[0,3.92],LOW_RISK:[0.7,1.82],MEDIUM_RISK:[0.4,2.72],HIGH_RISK:[0,3.92]},[2]:{CLASSIC:[0,1.9,4.32],LOW_RISK:[0,2,3.65],MEDIUM_RISK:[0,1.8,5],HIGH_RISK:[0,0,17]},[3]:{CLASSIC:[0,1,3,10.7],LOW_RISK:[0,1.1,1.3,26.2],MEDIUM_RISK:[0,0,2.7,50.3],HIGH_RISK:[0,0,0,80.7]},[4]:{CLASSIC:[0,0.8,1.8,4.75,22.5],LOW_RISK:[0,0,2.2,7.65,90],MEDIUM_RISK:[0,0,1.7,9.8,100],HIGH_RISK:[0,0,0,9.75,259]},[5]:{CLASSIC:[0,0.2,1.4,4.25,16.4,36],LOW_RISK:[0,0,1.5,4.1,12.9,300],MEDIUM_RISK:[0,0,1.4,3.9,13.9,390],HIGH_RISK:[0,0,0,4.5,47,450]},[6]:{CLASSIC:[0,0,1,3.6,7,17,40],LOW_RISK:[0,0,1.1,2,5.8,100,700],MEDIUM_RISK:[0,0,0,3,8.6,180,710],HIGH_RISK:[0,0,0,0,10.6,350,710]},[7]:{CLASSIC:[0,0,0.5,3,4.1,13.7,31,60],LOW_RISK:[0,0,1.1,1.6,3.5,13.5,225,700],MEDIUM_RISK:[0,0,0,2,6.9,29.2,400,800],HIGH_RISK:[0,0,0,0,6.9,89.1,400,800]},[8]:{CLASSIC:[0,0,0,2.2,4,12.2,22,55,70],LOW_RISK:[0,0,1.1,1.5,2,4.8,38,100,800],MEDIUM_RISK:[0,0,0,2,4,10.4,66,400,900],HIGH_RISK:[0,0,0,0,4.9,19.8,270,600,900]},[9]:{CLASSIC:[0,0,0,1.5,3,8.1,15,45,60,85],LOW_RISK:[0,0,1.1,1.3,1.7,2.1,7.4,50,250,1000],MEDIUM_RISK:[0,0,0,2,2.5,4.6,15.2,100,500,1000],HIGH_RISK:[0,0,0,0,4,10.7,55.4,500,800,1000]},[10]:{CLASSIC:[0,0,0,1.4,2.2,4.5,7.6,16,50,80,100],LOW_RISK:[0,0,1.1,1.2,1.3,1.6,3.7,13,50,250,1000],MEDIUM_RISK:[0,0,0,1.6,2,3.8,6.8,26,100,500,1000],HIGH_RISK:[0,0,0,0,3.5,7.8,12.8,63,500,800,1000]}},mr={[1]:{CLASSIC:[0,3.88],LOW_RISK:[0.7,1.78],MEDIUM_RISK:[0.4,2.68],HIGH_RISK:[0,3.88]},[2]:{CLASSIC:[0,1.85,4.48],LOW_RISK:[0,2,3.48],MEDIUM_RISK:[0,1.8,4.8],HIGH_RISK:[0,0,16.8]},[3]:{CLASSIC:[0,1,3,9.9],LOW_RISK:[0,1.1,1.2,26.5],MEDIUM_RISK:[0,0,2.65,50],HIGH_RISK:[0,0,0,79.9]},[4]:{CLASSIC:[0,0.8,1.7,5,23],LOW_RISK:[0,0,2.1,7.95,90],MEDIUM_RISK:[0,0,1.7,9.55,100],HIGH_RISK:[0,0,0,9.5,259]},[5]:{CLASSIC:[0,0.2,1.4,4.1,16.6,36],LOW_RISK:[0,0,1.5,4,12.7,300],MEDIUM_RISK:[0,0,1.4,3.8,13.7,390],HIGH_RISK:[0,0,0,4.4,46.9,450]},[6]:{CLASSIC:[0,0,1,3.6,6.6,16.5,40],LOW_RISK:[0,0,1.1,1.9,5.9,100,700],MEDIUM_RISK:[0,0,0,2.9,8.7,180,710],HIGH_RISK:[0,0,0,0,10.8,342,710]},[7]:{CLASSIC:[0,0,0.5,2.9,4.3,13.5,30.4,60],LOW_RISK:[0,0,1.1,1.6,3.1,14.8,225,700],MEDIUM_RISK:[0,0,0,2,6.7,29,400,800],HIGH_RISK:[0,0,0,0,6.8,88.2,400,800]},[8]:{CLASSIC:[0,0,0,2.2,3.8,12.7,21,54,70],LOW_RISK:[0,0,1.1,1.5,1.8,5.2,38,100,800],MEDIUM_RISK:[0,0,0,2,3.8,10.8,66,400,900],HIGH_RISK:[0,0,0,0,4.9,19.5,265,600,900]},[9]:{CLASSIC:[0,0,0,1.5,2.9,8.2,15,43,60,85],LOW_RISK:[0,0,1.1,1.3,1.6,2.1,7.7,49,250,1000],MEDIUM_RISK:[0,0,0,2,2.4,4.7,15,98,500,1000],HIGH_RISK:[0,0,0,0,3.9,10.8,55,500,800,1000]},[10]:{CLASSIC:[0,0,0,1.4,2.2,4.2,8,16.7,50,80,100],LOW_RISK:[0,0,1.1,1.2,1.3,1.5,2.9,12,50,250,1000],MEDIUM_RISK:[0,0,0,1.6,2,3.6,6.6,26,100,500,1000],HIGH_RISK:[0,0,0,0,3.4,7.9,12.9,62,500,800,1000]}},vr={[1]:{CLASSIC:[0,3.88],LOW_RISK:[0.68,1.84],MEDIUM_RISK:[0.38,2.74],HIGH_RISK:[0,3.88]},[2]:{CLASSIC:[0,1.85,4.48],LOW_RISK:[0,1.96,3.75],MEDIUM_RISK:[0,1.77,5],HIGH_RISK:[0,0,16.82]},[3]:{CLASSIC:[0,1,3.05,9.35],LOW_RISK:[0,1.07,1.37,25.7],MEDIUM_RISK:[0,0,2.74,49],HIGH_RISK:[0,0,0,79.9]},[4]:{CLASSIC:[0,0.8,1.72,4.95,22.3],LOW_RISK:[0,0,2.15,7.86,87],MEDIUM_RISK:[0,0,1.67,9.7,100],HIGH_RISK:[0,0,0,9.7,256]},[5]:{CLASSIC:[0,0.24,1.38,4,16.3,35.5],LOW_RISK:[0,0,1.48,4.1,12.43,300],MEDIUM_RISK:[0,0,1.35,3.96,13.8,389],HIGH_RISK:[0,0,0,4.4,47,444]},[6]:{CLASSIC:[0,0,1,3.57,6.8,16.2,37],LOW_RISK:[0,0,1.06,1.96,6.16,99,700],MEDIUM_RISK:[0,0,0,2.9,8.9,178,709],HIGH_RISK:[0,0,0,0,10.4,347,709]},[7]:{CLASSIC:[0,0,0.45,2.95,4.44,13.85,30,60],LOW_RISK:[0,0,1.07,1.57,3.47,14.57,225,700],MEDIUM_RISK:[0,0,0,1.95,6.8,29.8,400,800],HIGH_RISK:[0,0,0,0,6.8,88.2,400,800]},[8]:{CLASSIC:[0,0,0,2.15,3.9,12.9,21.9,55,70],LOW_RISK:[0,0,1.08,1.45,1.98,5.48,38.8,100,800],MEDIUM_RISK:[0,0,0,1.95,3.96,10.6,66.9,396,896],HIGH_RISK:[0,0,0,0,4.9,19.2,269,599,896]},[9]:{CLASSIC:[0,0,0,1.5,2.95,7.96,14.96,44,60,85],LOW_RISK:[0,0,1.05,1.29,1.69,2.49,7.49,49,250,1000],MEDIUM_RISK:[0,0,0,1.95,2.47,4.9,14.9,99,500,1000],HIGH_RISK:[0,0,0,0,3.96,10.5,55,500,800,1000]},[10]:{CLASSIC:[0,0,0,1.37,2.2,4.45,7.7,16.7,50,80,100],LOW_RISK:[0,0,1.08,1.18,1.28,1.76,3.4,12.9,50,250,1000],MEDIUM_RISK:[0,0,0,1.57,1.95,3.96,6.9,25.5,100,500,1000],HIGH_RISK:[0,0,0,0,3.43,7.9,12.5,60,500,800,1000]}},wr={[1]:{CLASSIC:[0,3.68],LOW_RISK:[0.7,1.58],MEDIUM_RISK:[0.4,2.48],HIGH_RISK:[0,3.68]},[2]:{CLASSIC:[0,1.72,4.48],LOW_RISK:[0,1.9,3.28],MEDIUM_RISK:[0,1.7,4.62],HIGH_RISK:[0,0,15.95]},[3]:{CLASSIC:[0,0.9,2.95,9.9],LOW_RISK:[0,1,1.2,26],MEDIUM_RISK:[0,0,2.29,50],HIGH_RISK:[0,0,0,75.7]},[4]:{CLASSIC:[0,0.8,1.6,4.4,21],LOW_RISK:[0,0,2,7.5,86],MEDIUM_RISK:[0,0,1.5,9.5,98],HIGH_RISK:[0,0,0,9,246]},[5]:{CLASSIC:[0,0.2,1.2,4.2,16.3,37],LOW_RISK:[0,0,1.4,3.8,12,300],MEDIUM_RISK:[0,0,1.3,3.5,14,385],HIGH_RISK:[0,0,0,4,45,450]},[6]:{CLASSIC:[0,0,1,3.3,6.2,15,40],LOW_RISK:[0,0,1.1,1.7,4.9,99,700],MEDIUM_RISK:[0,0,0,2.6,8.5,177,705],HIGH_RISK:[0,0,0,0,10,327,710]},[7]:{CLASSIC:[0,0,0.4,2.8,4.2,14.5,30,60],LOW_RISK:[0,0,1.1,1.4,3,14,210,700],MEDIUM_RISK:[0,0,0,1.8,6.4,29,400,800],HIGH_RISK:[0,0,0,0,6.1,85,400,800]},[8]:{CLASSIC:[0,0,0,2,3.7,13,20,50,70],LOW_RISK:[0,0,1.1,1.4,1.6,4.6,35,90,800],MEDIUM_RISK:[0,0,0,1.9,3.5,10.5,65,400,900],HIGH_RISK:[0,0,0,0,4.5,18,265,600,900]},[9]:{CLASSIC:[0,0,0,1.4,2.6,9,11.5,40,60,85],LOW_RISK:[0,0,1,1.3,1.5,2,7,45,250,1000],MEDIUM_RISK:[0,0,0,2,2.1,4,15,98,500,1000],HIGH_RISK:[0,0,0,0,3.5,10.5,55,500,800,1000]},[10]:{CLASSIC:[0,0,0,1.3,2,4.4,8,16.7,50,80,100],LOW_RISK:[0,0,1,1.2,1.25,1.4,2,10,50,250,1000],MEDIUM_RISK:[0,0,0,1.5,1.9,3.5,6.2,26,100,500,1000],HIGH_RISK:[0,0,0,0,3,8,14,57,500,800,1000]}},$b=new i3(new Map([[1,dr],[2,fr],[3,mr],[4,vr],[8,wr]]));var gr;((a)=>{a.LOW_RISK="LOW_RISK",a.MEDIUM_RISK="MEDIUM_RISK",a.HIGH_RISK="HIGH_RISK"})(gr||={});var kr={LOW_RISK:{8:[6,2.1,1.1,1,0.5,1,1.1,2.1,6],9:[6,2,1.6,1,0.7,0.7,1,1.6,2,6],10:[9,3,1.4,1.1,1,0.5,1,1.1,1.4,3,9],11:[8,3,1.9,1.3,1,0.7,0.7,1,1.3,1.9,3,8],12:[10,3,1.6,1.4,1.1,1,0.5,1,1.1,1.4,1.6,3,10],13:[8,4,3,1.9,1.2,0.9,0.7,0.7,0.9,1.2,1.9,3,4,8],14:[7,4,1.9,1.4,1.3,1.1,1,0.5,1,1.1,1.3,1.4,1.9,4,7],15:[15,8,3,2,1.5,1.1,1,0.7,0.7,1,1.1,1.5,2,3,8,15],16:[16,9,2,1.4,1.4,1.2,1.1,1,0.5,1,1.1,1.2,1.4,1.4,2,9,16]},MEDIUM_RISK:{8:[13,3,1.3,0.7,0.4,0.7,1.3,3,13],9:[18,4,1.7,0.9,0.5,0.5,0.9,1.7,4,18],10:[22,5,2,1.4,0.6,0.4,0.6,1.4,2,5,22],11:[24,6,3,1.8,0.7,0.5,0.5,0.7,1.8,3,6,24],12:[33,11,4,2,1.1,0.6,0.3,0.6,1.1,2,4,11,33],13:[43,13,6,3,1.3,0.7,0.4,0.4,0.7,1.3,3,6,13,43],14:[58,15,7,4,1.9,1,0.5,0.2,0.5,1,1.9,4,7,15,58],15:[88,18,11,5,3,1.3,0.5,0.3,0.3,0.5,1.3,3,5,11,18,88],16:[110,41.1,10,5,3,1.5,1,0.5,0.3,0.5,1,1.5,3,5,10,41.1,110]},HIGH_RISK:{8:[29,4,1.5,0.3,0.2,0.3,1.5,4,29],9:[43,7,2,0.6,0.2,0.2,0.6,2,7,43],10:[76,10,3,0.9,0.3,0.2,0.3,0.9,3,10,76],11:[120,13.9,5.2,1.4,0.4,0.2,0.2,0.4,1.4,5.2,13.9,120],12:[170,23.8,8.1,2,0.7,0.2,0.2,0.2,0.7,2,8.1,23.8,170],13:[260,36.7,11,4,1,0.2,0.2,0.2,0.2,1,4,11,36.7,260],14:[420,56.1,18,5,1.9,0.3,0.2,0.2,0.2,0.3,1.9,5,18,56.1,420],15:[620,82.8,27,8,3,0.5,0.2,0.2,0.2,0.2,0.5,3,8,27,82.8,620],16:[1000,129.9,26.1,9,4,2,0.2,0.2,0.2,0.2,0.2,2,4,9,26.1,129.9,1000]}},pr={LOW_RISK:{8:[6,1.9,1.1,1,0.5,1,1.1,1.9,6],9:[6,1.7,1.6,1,0.7,0.7,1,1.6,1.7,6],10:[9,2.5,1.4,1.1,1,0.5,1,1.1,1.4,2.5,9],11:[9,2.5,1.8,1.3,1,0.7,0.7,1,1.3,1.8,2.5,9],12:[10,3.2,1.6,1.3,1.1,1,0.5,1,1.1,1.3,1.6,3.2,10],13:[8,3.7,2.9,1.8,1.2,0.9,0.7,0.7,0.9,1.2,1.8,2.9,3.7,8],14:[7,4,1.8,1.2,1.3,1.1,1,0.5,1,1.1,1.3,1.2,1.8,4,7],15:[15,7.6,2.8,2,1.4,1.1,1,0.7,0.7,1,1.1,1.4,2,2.8,7.6,15],16:[16,9,1.7,1.2,1.3,1.2,1.1,1,0.5,1,1.1,1.2,1.3,1.2,1.7,9,16]},MEDIUM_RISK:{8:[13,3.2,1.4,0.6,0.4,0.6,1.4,3.2,13],9:[18,3.7,1.7,0.9,0.5,0.5,0.9,1.7,3.7,18],10:[22,5,1.9,1.4,0.6,0.4,0.6,1.4,1.9,5,22],11:[24,6,2.8,1.8,0.7,0.5,0.5,0.7,1.8,2.8,6,24],12:[33,11.1,4,1.9,1.1,0.6,0.3,0.6,1.1,1.9,4,11.1,33],13:[43,13.7,6.1,2.8,1.3,0.7,0.4,0.4,0.7,1.3,2.8,6.1,13.7,43],14:[58,13.7,6.7,3.9,1.9,1,0.5,0.2,0.5,1,1.9,3.9,6.7,13.7,58],15:[88,17.7,10.8,5,2.9,1.3,0.5,0.3,0.3,0.5,1.3,2.9,5,10.8,17.7,88],16:[110,40.5,9.8,4.8,2.9,1.5,1,0.5,0.3,0.5,1,1.5,2.9,4.8,9.8,40.5,110]},HIGH_RISK:{8:[29,3.8,1.5,0.3,0.2,0.3,1.5,3.8,29],9:[43,7.1,1.9,0.6,0.2,0.2,0.6,1.9,7.1,43],10:[76,9.9,2.9,0.9,0.3,0.2,0.3,0.9,2.9,9.9,76],11:[120,13.4,5.1,1.4,0.4,0.2,0.2,0.4,1.4,5.1,13.4,120],12:[170,23.2,7.9,2,0.7,0.2,0.2,0.2,0.7,2,7.9,23.2,170],13:[260,36.6,10.5,4,1,0.2,0.2,0.2,0.2,1,4,10.5,36.6,260],14:[420,55.5,17.6,4.9,1.9,0.3,0.2,0.2,0.2,0.3,1.9,4.9,17.6,55.5,420],15:[620,82.3,26.8,7.7,3,0.5,0.2,0.2,0.2,0.2,0.5,3,7.7,26.8,82.3,620],16:[1000,129.8,25.2,8.6,4,2,0.2,0.2,0.2,0.2,0.2,2,4,8.6,25.2,129.8,1000]}},br={LOW_RISK:{8:[6,2.2,1.1,1,0.4,1,1.1,2.2,6],9:[6,1.8,1.5,1,0.7,0.7,1,1.5,1.8,6],10:[9,2.4,1.3,1.1,1,0.5,1,1.1,1.3,2.4,9],11:[8,2.7,1.9,1.2,1,0.7,0.7,1,1.2,1.9,2.7,8],12:[10,3.3,1.6,1.2,1.1,1,0.5,1,1.1,1.2,1.6,3.3,10],13:[8,3.8,2.9,1.9,1.1,0.9,0.7,0.7,0.9,1.1,1.9,2.9,3.8,8],14:[7,3.9,2,1.4,1.3,1.1,1,0.4,1,1.1,1.3,1.4,2,3.9,7],15:[15,7.9,2.5,2,1.3,1.1,1,0.7,0.7,1,1.1,1.3,2,2.5,7.9,15],16:[16,8.9,1.9,1.4,1.4,1.2,1.1,1,0.4,1,1.1,1.2,1.4,1.4,1.9,8.9,16]},MEDIUM_RISK:{8:[13,3.5,1.2,0.7,0.3,0.7,1.2,3.5,13],9:[18,3.8,1.6,0.9,0.5,0.5,0.9,1.6,3.8,18],10:[22,5.2,2,1.3,0.6,0.4,0.6,1.3,2,5.2,22],11:[24,5.6,2.7,1.8,0.7,0.5,0.5,0.7,1.8,2.7,5.6,24],12:[33,11.3,4,1.8,1.1,0.6,0.3,0.6,1.1,1.8,4,11.3,33],13:[43,12.9,5.7,2.8,1.3,0.7,0.4,0.4,0.7,1.3,2.8,5.7,12.9,43],14:[58,13.7,6.9,3.9,1.8,1,0.5,0.2,0.5,1,1.8,3.9,6.9,13.7,58],15:[88,18,10.9,4.9,2.8,1.3,0.5,0.3,0.3,0.5,1.3,2.8,4.9,10.9,18,88],16:[110,39.9,9.9,5,2.9,1.4,1,0.5,0.3,0.5,1,1.4,2.9,5,9.9,39.9,110]},HIGH_RISK:{8:[29,4,1.4,0.3,0.2,0.3,1.4,4,29],9:[43,7.3,2,0.5,0.2,0.2,0.5,2,7.3,43],10:[76,9.8,2.8,0.9,0.3,0.2,0.3,0.9,2.8,9.8,76],11:[120,13.5,4.9,1.4,0.4,0.2,0.2,0.4,1.4,4.9,13.5,120],12:[170,23.3,7.9,1.9,0.7,0.2,0.2,0.2,0.7,1.9,7.9,23.3,170],13:[260,36.2,10.4,3.9,1,0.2,0.2,0.2,0.2,1,3.9,10.4,36.2,260],14:[420,54.8,17.9,4.9,1.8,0.3,0.2,0.2,0.2,0.3,1.8,4.9,17.9,54.8,420],15:[620,81.9,26.6,7.7,2.9,0.5,0.2,0.2,0.2,0.2,0.5,2.9,7.7,26.6,81.9,620],16:[1000,130,24.9,8.4,3.9,2,0.2,0.2,0.2,0.2,0.2,2,3.9,8.4,24.9,130,1000]}},zr={LOW_RISK:{8:[6,2,1.1,1,0.4,1,1.1,2,6],9:[6,1.9,1.4,1,0.7,0.7,1,1.4,1.9,6],10:[9,2.8,1.1,1.1,1,0.5,1,1.1,1.1,2.8,9],11:[8,2.7,1.7,1.2,1,0.7,0.7,1,1.2,1.7,2.7,8],12:[10,2.7,1.4,1.2,1.1,1,0.5,1,1.1,1.2,1.4,2.7,10],13:[8,3.5,2.8,1.9,1.3,0.9,0.6,0.6,0.9,1.3,1.9,2.8,3.5,8],14:[7,3.3,1.6,1.3,1.3,1.1,1,0.4,1,1.1,1.3,1.3,1.6,3.3,7],15:[15,8,2.9,2,1.4,1.2,1,0.6,0.6,1,1.2,1.4,2,2.9,8,15],16:[16,9.1,2.2,1.4,1.2,1.2,1.1,1,0.4,1,1.1,1.2,1.2,1.4,2.2,9.1,16]},MEDIUM_RISK:{8:[13,2.9,1.2,0.7,0.4,0.7,1.2,2.9,13],9:[18,3.5,1.6,0.9,0.5,0.5,0.9,1.6,3.5,18],10:[22,4.7,2,1.3,0.6,0.4,0.6,1.3,2,4.7,22],11:[24,5.7,2.5,1.8,0.7,0.5,0.5,0.7,1.8,2.5,5.7,24],12:[33,10.7,3.8,1.8,1.1,0.6,0.3,0.6,1.1,1.8,3.8,10.7,33],13:[43,12.6,5.6,2.7,1.3,0.7,0.4,0.4,0.7,1.3,2.7,5.6,12.6,43],14:[58,13.7,6.4,3.8,1.8,1,0.5,0.2,0.5,1,1.8,3.8,6.4,13.7,58],15:[88,17.7,10.7,4.9,2.7,1.3,0.5,0.3,0.3,0.5,1.3,2.7,4.9,10.7,17.7,88],16:[110,39.7,9.6,4.8,2.8,1.4,1,0.5,0.3,0.5,1,1.4,2.8,4.8,9.6,39.7,110]},HIGH_RISK:{8:[29,3.9,1.4,0.3,0.2,0.3,1.4,3.9,29],9:[43,6.9,1.8,0.6,0.2,0.2,0.6,1.8,6.9,43],10:[76,9.8,2.7,0.9,0.3,0.2,0.3,0.9,2.7,9.8,76],11:[120,13.1,5.1,1.3,0.4,0.2,0.2,0.4,1.3,5.1,13.1,120],12:[170,22.7,7.7,1.9,0.7,0.2,0.2,0.2,0.7,1.9,7.7,22.7,170],13:[260,35.9,10.3,3.8,1,0.2,0.2,0.2,0.2,1,3.8,10.3,35.9,260],14:[420,54.2,17.5,4.8,1.8,0.3,0.2,0.2,0.2,0.3,1.8,4.8,17.5,54.2,420],15:[620,80.6,26.1,7.8,2.8,0.5,0.2,0.2,0.2,0.2,0.5,2.8,7.8,26.1,80.6,620],16:[1000,129.7,24.7,8.2,3.8,2,0.2,0.2,0.2,0.2,0.2,2,3.8,8.2,24.7,129.7,1000]}},xr={LOW_RISK:{8:[5,1.8,1,1,0.4,1,1,1.8,5],9:[5,1.7,1.2,1,0.7,0.7,1,1.2,1.7,5],10:[9,2.8,1.2,1,1,0.4,1,1,1.2,2.8,9],11:[8,2.5,1.6,1,1,0.7,0.7,1,1,1.6,2.5,8],12:[10,2.5,1.3,1.3,1,1,0.4,1,1,1.3,1.3,2.5,10],13:[8,4.1,2.8,1.8,1.1,0.9,0.6,0.6,0.9,1.1,1.8,2.8,4.1,8],14:[7,3.3,1.7,1.2,1.2,1,1,0.4,1,1,1.2,1.2,1.7,3.3,7],15:[15,7.3,2.9,1.9,1.4,1,1,0.6,0.6,1,1,1.4,1.9,2.9,7.3,15],16:[16,8.7,2,1.5,1.3,1,1.1,1,0.3,1,1.1,1,1.3,1.5,2,8.7,16]},MEDIUM_RISK:{8:[13,2.6,1.1,0.7,0.4,0.7,1.1,2.6,13],9:[17,3.3,1.4,0.9,0.5,0.5,0.9,1.4,3.3,17],10:[21,4.1,1.7,1.3,0.6,0.4,0.6,1.3,1.7,4.1,21],11:[23,5.6,2.4,1.6,0.7,0.5,0.5,0.7,1.6,2.4,5.6,23],12:[32,10.2,3.7,1.7,1.1,0.6,0.2,0.6,1.1,1.7,3.7,10.2,32],13:[42,11.7,5.3,2.5,1.2,0.7,0.4,0.4,0.7,1.2,2.5,5.3,11.7,42],14:[56,13.2,5.9,3.6,1.6,1,0.5,0.2,0.5,1,1.6,3.6,5.9,13.2,56],15:[86,17.3,10,4.6,2.6,1.2,0.5,0.3,0.3,0.5,1.2,2.6,4.6,10,17.3,86],16:[107,39,9.9,4.5,2.4,1.3,1,0.5,0.3,0.5,1,1.3,2.4,4.5,9.9,39,107]},HIGH_RISK:{8:[28,3.3,1.4,0.3,0.2,0.3,1.4,3.3,28],9:[42,6.7,1.6,0.6,0.2,0.2,0.6,1.6,6.7,42],10:[74,9.6,2.6,0.9,0.3,0.1,0.3,0.9,2.6,9.6,74],11:[116,12.7,4.8,1.2,0.4,0.2,0.2,0.4,1.2,4.8,12.7,116],12:[165,20.9,7.2,1.8,0.7,0.2,0.2,0.2,0.7,1.8,7.2,20.9,165],13:[252,33.9,10.1,3.4,1,0.2,0.2,0.2,0.2,1,3.4,10.1,33.9,252],14:[407,51.9,16.3,4.6,1.7,0.3,0.2,0.2,0.2,0.3,1.7,4.6,16.3,51.9,407],15:[600,76.9,24.9,7.4,2.6,0.5,0.2,0.2,0.2,0.2,0.5,2.6,7.4,24.9,76.9,600],16:[1000,122,24.5,8,3.7,1.8,0.2,0.2,0.2,0.2,0.2,1.8,3.7,8,24.5,122,1000]}},Qb=new i3(new Map([[1,kr],[2,pr],[3,br],[4,zr],[8,xr]]));var B8=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],yr=[37,...B8],S0=[[0,1],[0,2],[0,3],[1,2],[1,4],[2,3],[2,5],[3,6],[4,5],[4,7],[5,6],[5,8],[6,9],[7,8],[7,10],[8,9],[8,11],[9,12],[10,11],[10,13],[11,12],[11,14],[12,15],[13,14],[13,16],[14,15],[14,17],[15,18],[16,17],[16,19],[17,18],[17,20],[18,21],[19,20],[19,22],[20,21],[20,23],[21,24],[22,23],[22,25],[23,24],[23,26],[24,27],[25,26],[25,28],[26,27],[26,29],[27,30],[28,29],[28,31],[29,30],[29,32],[30,33],[31,32],[31,34],[32,33],[32,35],[33,36],[34,35],[35,36]],O0=[[0,1],[0,37],[3,37],[1,2],[1,4],[2,3],[2,5],[3,6],[4,5],[4,7],[5,6],[5,8],[6,9],[7,8],[7,10],[8,9],[8,11],[9,12],[10,11],[10,13],[11,12],[11,14],[12,15],[13,14],[13,16],[14,15],[14,17],[15,18],[16,17],[16,19],[17,18],[17,20],[18,21],[19,20],[19,22],[20,21],[20,23],[21,24],[22,23],[22,25],[23,24],[23,26],[24,27],[25,26],[25,28],[26,27],[26,29],[27,30],[28,29],[28,31],[29,30],[29,32],[30,33],[31,32],[31,34],[32,33],[32,35],[33,36],[34,35],[35,36]],H0=[[0,1,2],[0,2,3],[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18],[19,20,21],[22,23,24],[25,26,27],[28,29,30],[31,32,33],[34,35,36]],K0=[[0,1,2],[0,2,37],[1,2,3],[2,3,37],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18],[19,20,21],[22,23,24],[25,26,27],[28,29,30],[31,32,33],[34,35,36]],M0=[[0,1,2,3],[1,2,4,5],[2,3,5,6],[4,5,7,8],[5,6,8,9],[7,8,10,11],[8,9,11,12],[10,11,13,14],[11,12,14,15],[13,14,16,17],[14,15,17,18],[16,17,19,20],[17,18,20,21],[19,20,22,23],[20,21,23,24],[22,23,25,26],[23,24,26,27],[25,26,28,29],[26,27,29,30],[28,29,31,32],[29,30,32,33],[31,32,34,35],[32,33,35,36]],j0=[[1,2,4,5],[2,3,5,6],[4,5,7,8],[5,6,8,9],[7,8,10,11],[8,9,11,12],[10,11,13,14],[11,12,14,15],[13,14,16,17],[14,15,17,18],[16,17,19,20],[17,18,20,21],[19,20,22,23],[20,21,23,24],[22,23,25,26],[23,24,26,27],[25,26,28,29],[26,27,29,30],[28,29,31,32],[29,30,32,33],[31,32,34,35],[32,33,35,36]],Zr=[0,1,2,3,37],Y3=[[1,2,3,4,5,6],[4,5,6,7,8,9],[7,8,9,10,11,12],[10,11,12,13,14,15],[13,14,15,16,17,18],[16,17,18,19,20,21],[19,20,21,22,23,24],[22,23,24,25,26,27],[25,26,27,28,29,30],[28,29,30,31,32,33],[31,32,33,34,35,36]],X3=[[1,2,3,4,5,6],[4,5,6,7,8,9],[7,8,9,10,11,12],[10,11,12,13,14,15],[13,14,15,16,17,18],[16,17,18,19,20,21],[19,20,21,22,23,24],[22,23,24,25,26,27],[25,26,27,28,29,30],[28,29,30,31,32,33],[31,32,33,34,35,36]],E0;((a)=>{a.EVEN="EVEN",a.ODD="ODD"})(E0||={});var L0;((a)=>{a.RED="RED",a.BLACK="BLACK"})(L0||={});var q0;((a)=>{a.LOW="LOW",a.HIGH="HIGH"})(q0||={});var T0;((a)=>{a.TOP="TOP",a.MIDDLE="MIDDLE",a.BOTTOM="BOTTOM"})(T0||={});var J0;((a)=>{a.FIRST="FIRST",a.SECOND="SECOND",a.THIRD="THIRD"})(J0||={});var t1;((a)=>{a.AMERICAN="AMERICAN",a.EUROPEAN="EUROPEAN"})(t1||={});var Ir=(a)=>{if(a.straightBets.length===0&&a.splitBets.length===0&&a.streetBets.length===0&&a.cornerBets.length===0&&a.doubleStreetBets.length===0&&a.parityBets.length===0&&a.colorBets.length===0&&a.halfBets.length===0&&a.columnBets.length===0&&a.dozenBets.length===0)throw Z1.createValidationError("Must place at least a single bet.");if(!a.straightBets.every((i)=>i.amount.gte(0)&&e3(i.value)))throw Z1.createValidationError("Invalid straight bet.");if(!a.splitBets.every((i)=>i.amount.gte(0)&&Fr(i.values)))throw Z1.createValidationError("Invalid split bet.");if(!a.streetBets.every((i)=>i.amount.gte(0)&&Rr(i.values)))throw Z1.createValidationError("Invalid street bet.");if(!a.cornerBets.every((i)=>i.amount.gte(0)&&Sr(i.values)))throw Z1.createValidationError("Invalid corner bet.");if(!a.doubleStreetBets.every((i)=>i.amount.gte(0)&&Or(i.values)))throw Z1.createValidationError("Invalid double street bet.");if(!a.parityBets.every((i)=>i.amount.gte(0)&&Object.values(E0).includes(i.parity)))throw Z1.createValidationError("Invalid parity bet.");if(!a.colorBets.every((i)=>i.amount.gte(0)&&Object.values(L0).includes(i.color)))throw Z1.createValidationError("Invalid color bet.");if(!a.halfBets.every((i)=>i.amount.gte(0)&&Object.values(q0).includes(i.half)))throw Z1.createValidationError("Invalid half bet.");if(!a.columnBets.every((i)=>i.amount.gte(0)&&Object.values(T0).includes(i.column)))throw Z1.createValidationError("Invalid column bet.");if(!a.dozenBets.every((i)=>i.amount.gte(0)&&Object.values(J0).includes(i.dozen)))throw Z1.createValidationError("Invalid dozen bet.")},e3=(a)=>{return B8.includes(a)},Fr=(a)=>{if(a.length!==2)return!1;if(!a.every(e3))return!1;return S0.some(([i,e])=>i===a[0]&&e===a[1])},Rr=(a)=>{if(a.length!==3)return!1;if(!a.every(e3))return!1;return H0.some(([i,e,r])=>i===a[0]&&e===a[1]&&r===a[2])},Sr=(a)=>{if(a.length!==4)return!1;if(!a.every(e3))return!1;return M0.some(([i,e,r,l])=>i===a[0]&&e===a[1]&&r===a[2]&&l===a[3])},Or=(a)=>{if(a.length!==6)return!1;if(!a.every(e3))return!1;return Y3.some(([i,e,r,l,n,t])=>i===a[0]&&e===a[1]&&r===a[2]&&l===a[3]&&n===a[4]&&t===a[5])},Hr=(a)=>{if(a.straightBets.length===0&&a.splitBets.length===0&&a.streetBets.length===0&&a.cornerBets.length===0&&a.basketBets.length===0&&a.doubleStreetBets.length===0&&a.parityBets.length===0&&a.colorBets.length===0&&a.halfBets.length===0&&a.columnBets.length===0&&a.dozenBets.length===0)throw Z1.createValidationError("Must place at least a single bet.");if(!a.straightBets.every((i)=>i.amount.gte(0)&&r3(i.value)))throw Z1.createValidationError("Invalid straight bet.");if(!a.splitBets.every((i)=>i.amount.gte(0)&&Kr(i.values)))throw Z1.createValidationError("Invalid split bet.");if(!a.streetBets.every((i)=>i.amount.gte(0)&&Mr(i.values)))throw Z1.createValidationError("Invalid street bet.");if(!a.cornerBets.every((i)=>i.amount.gte(0)&&jr(i.values)))throw Z1.createValidationError("Invalid corner bet.");if(!a.basketBets.every((i)=>i.amount.gte(0)))throw Z1.createValidationError("Invalid basket bet.");if(!a.doubleStreetBets.every((i)=>i.amount.gte(0)&&Er(i.values)))throw Z1.createValidationError("Invalid double street bet.");if(!a.parityBets.every((i)=>i.amount.gte(0)&&Object.values(E0).includes(i.parity)))throw Z1.createValidationError("Invalid parity bet.");if(!a.colorBets.every((i)=>i.amount.gte(0)&&Object.values(L0).includes(i.color)))throw Z1.createValidationError("Invalid color bet.");if(!a.halfBets.every((i)=>i.amount.gte(0)&&Object.values(q0).includes(i.half)))throw Z1.createValidationError("Invalid half bet.");if(!a.columnBets.every((i)=>i.amount.gte(0)&&Object.values(T0).includes(i.column)))throw Z1.createValidationError("Invalid column bet.");if(!a.dozenBets.every((i)=>i.amount.gte(0)&&Object.values(J0).includes(i.dozen)))throw Z1.createValidationError("Invalid dozen bet.")},r3=(a)=>{return yr.includes(a)};function Kr(a){if(a.length!==2)return!1;if(!a.every(r3))return!1;return O0.some(([i,e])=>i===a[0]&&e===a[1])}var Mr=(a)=>{if(a.length!==3)return!1;if(!a.every(r3))return!1;return K0.some(([i,e,r])=>i===a[0]&&e===a[1]&&r===a[2])},jr=(a)=>{if(a.length!==4)return!1;if(!a.every(r3))return!1;return j0.some(([i,e,r,l])=>i===a[0]&&e===a[1]&&r===a[2]&&l===a[3])},Er=(a)=>{if(a.length!==6)return!1;if(!a.every(r3))return!1;return X3.some(([i,e,r,l,n,t])=>i===a[0]&&e===a[1]&&r===a[2]&&l===a[3]&&n===a[4]&&t===a[5])},Lr={straightBets:36,splitBets:18,streetBets:12,cornerBets:9,basketBets:7,doubleStreetBets:6,parityBets:2,colorBets:2,halfBets:2,columnBets:3,dozenBets:3},qr=[3,6,9,12,15,18,21,24,27,30,33,36],Tr=[2,5,8,11,14,17,20,23,26,29,32,35],Jr=[1,4,7,10,13,16,19,22,25,28,31,34],Dr=[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36],Cr=[2,4,6,8,10,11,13,15,17,20,22,24,26,28,29,31,33,35];class Pa extends P8{constructor(){super("ROULETTE")}determineGameResult({generator:a,gameInputs:i}){this.validateInputs(i);let e=a.getRandomInt({min:0,max:this.maxNumber}),r=e.value,l=this.determineBetOutcomes(i,r),{payoutMultiplier:n}=this.getPayoutDetails(i,r);return{outputs:{betOutcomes:l,result:e.values},payoutMultiplier:n,isFinished:!0,randomValues:e}}getBetAmount(a){return this.calculateTotalBetAmount(this.getBetTotals(a))}getPayoutDetails(a,i){let e=this.determineBetOutcomes(a,i),r=this.getBetTotals(a),l=this.getBetTotals(e.winningBets),n=this.calculateTotalBetAmount(r),t=this.calculateTotalPayout(l);return{payoutMultiplier:n.gt(0)?t.div(n):new I2(0),payoutAmount:t}}determineBetOutcomes(a,i){let e={},r={};for(let l of Object.keys(a)){let n=a[l],t=this.betPredicates[l],{winning:h,losing:o}=this.partitionBets(n,t,i);e[l]=h,r[l]=o}return{winningBets:e,losingBets:r}}calculateTotalAmount(a){return a.reduce((i,e)=>i.plus(e.amount),new I2(0))}isWinningStraightBet(a,i){return a.value===i}isWinningSplitBet(a,i){return a.values.some((e)=>e===i)}isWinningStreetBet(a,i){return a.values.some((e)=>e===i)}isWinningCornerBet(a,i){return a.values.some((e)=>e===i)}isWinningDoubleStreetBet(a,i){return a.values.some((e)=>e===i)}isWinningColorBet(a,i){let e=a;return Dr.includes(i)&&e.color==="RED"||Cr.includes(i)&&e.color==="BLACK"}isWinningHalfBet(a,i){let e=a;if(i>0&&i<=18&&e.half==="LOW")return!0;if(i>18&&i<=36&&e.half==="HIGH")return!0;return!1}isWinningColumnBet(a,i){let e=a;return qr.includes(i)&&e.column==="TOP"||Tr.includes(i)&&e.column==="MIDDLE"||Jr.includes(i)&&e.column==="BOTTOM"}isWinningDozenBet(a,i){let e=a;if(i>0&&i<=12&&e.dozen==="FIRST")return!0;if(i>12&&i<=24&&e.dozen==="SECOND")return!0;if(i>24&&i<=36&&e.dozen==="THIRD")return!0;return!1}isWinningParityBet(a,i){let e=a;if(i===0||i===37)return!1;let r=i%2===0?"EVEN":"ODD";return e.parity===r}getBetTotals(a){let i={};for(let e of Object.keys(a))i[e]=this.calculateTotalAmount(a[e]);return i}calculateTotalBetAmount(a){return Object.values(a).reduce((i,e)=>i.plus(e),new I2(0))}partitionBets(a,i,e){return{winning:a.filter((r)=>i(r,e)),losing:a.filter((r)=>!i(r,e))}}calculateTotalPayout(a){return Object.entries(a).reduce((i,[e,r])=>{let l=Lr[e];return i.plus(r.mul(l||0))},new I2(0))}}class Ba extends Pa{maxNumber=36;betPredicates={straightBets:this.isWinningStraightBet,splitBets:this.isWinningSplitBet,streetBets:this.isWinningStreetBet,cornerBets:this.isWinningCornerBet,doubleStreetBets:this.isWinningDoubleStreetBet,parityBets:this.isWinningParityBet,colorBets:this.isWinningColorBet,halfBets:this.isWinningHalfBet,columnBets:this.isWinningColumnBet,dozenBets:this.isWinningDozenBet};validateInputs(a){Ir(a)}}class _a extends Pa{maxNumber=37;betPredicates={straightBets:this.isWinningStraightBet,splitBets:this.isWinningSplitBet,streetBets:this.isWinningStreetBet,cornerBets:this.isWinningCornerBet,basketBets:this.isWinningBasketBet,doubleStreetBets:this.isWinningDoubleStreetBet,parityBets:this.isWinningParityBet,colorBets:this.isWinningColorBet,halfBets:this.isWinningHalfBet,columnBets:this.isWinningColumnBet,dozenBets:this.isWinningDozenBet};validateInputs(a){Hr(a)}isWinningBasketBet(a,i){return Zr.some((e)=>e===i)}}var $r;((a)=>{a.LOW_RISK="LOW_RISK",a.MEDIUM_RISK="MEDIUM_RISK",a.HIGH_RISK="HIGH_RISK"})($r||={});var Wr;((a)=>{a[a.TEN=10]="TEN",a[a.TWENTY=20]="TWENTY",a[a.THIRTY=30]="THIRTY",a[a.FORTY=40]="FORTY",a[a.FIFTY=50]="FIFTY"})(Wr||={});var Ar={LOW_RISK:{10:{ZERO:0,A:1.2,B:1.5},20:{ZERO:0,A:1.2,B:1.5},30:{ZERO:0,A:1.2,B:1.5},40:{ZERO:0,A:1.2,B:1.5},50:{ZERO:0,A:1.2,B:1.5}},MEDIUM_RISK:{10:{ZERO:0,A:1.5,B:1.9,C:2,D:3},20:{ZERO:0,A:1.5,B:1.8,C:2,D:3},30:{ZERO:0,A:1.5,B:1.7,C:2,D:3,E:4},40:{ZERO:0,A:1.5,B:1.6,C:2,D:3},50:{ZERO:0,A:1.5,B:2,C:3,D:5}},HIGH_RISK:{10:{ZERO:0,A:9.9},20:{ZERO:0,A:19.8},30:{ZERO:0,A:29.7},40:{ZERO:0,A:39.6},50:{ZERO:0,A:49.5}}},Vr={LOW_RISK:{10:{ZERO:0,A:1.2,B:1.4},20:{ZERO:0,A:1.2,B:1.4},30:{ZERO:0,A:1.2,B:1.4},40:{ZERO:0,A:1.2,B:1.4},50:{ZERO:0,A:1.2,B:1.4}},MEDIUM_RISK:{10:{ZERO:0,A:1.4,B:1.9,C:2,D:3.1},20:{ZERO:0,A:1.5,B:1.8,C:1.9,D:3.4},30:{ZERO:0,A:1.5,B:1.7,C:1.9,D:3,E:4.3},40:{ZERO:0,A:1.5,B:1.6,C:2,D:2.9},50:{ZERO:0,A:1.5,B:2,C:3,D:4.5}},HIGH_RISK:{10:{ZERO:0,A:9.8},20:{ZERO:0,A:19.6},30:{ZERO:0,A:29.4},40:{ZERO:0,A:39.2},50:{ZERO:0,A:49}}},Qr={LOW_RISK:{10:{ZERO:0,A:1.15,B:1.65},20:{ZERO:0,A:1.15,B:1.65},30:{ZERO:0,A:1.15,B:1.65},40:{ZERO:0,A:1.15,B:1.65},50:{ZERO:0,A:1.15,B:1.65}},MEDIUM_RISK:{10:{ZERO:0,A:1.4,B:1.9,C:2,D:3},20:{ZERO:0,A:1.4,B:1.6,C:2,D:3},30:{ZERO:0,A:1.4,B:1.7,C:2,D:3,E:4},40:{ZERO:0,A:1.5,B:1.6,C:2,D:2.8},50:{ZERO:0,A:1.5,B:2,C:2.7,D:4.9}},HIGH_RISK:{10:{ZERO:0,A:9.7},20:{ZERO:0,A:19.4},30:{ZERO:0,A:29.1},40:{ZERO:0,A:38.8},50:{ZERO:0,A:48.5}}},Yr={LOW_RISK:{10:{ZERO:0,A:1.15,B:1.55},20:{ZERO:0,A:1.15,B:1.55},30:{ZERO:0,A:1.15,B:1.55},40:{ZERO:0,A:1.15,B:1.55},50:{ZERO:0,A:1.15,B:1.55}},MEDIUM_RISK:{10:{ZERO:0,A:1.4,B:1.8,C:2,D:3},20:{ZERO:0,A:1.3,B:1.5,C:2,D:3},30:{ZERO:0,A:1.4,B:1.6,C:2,D:2.9,E:4},40:{ZERO:0,A:1.5,B:1.6,C:2,D:2.7},50:{ZERO:0,A:1.5,B:2,C:2.6,D:4.8}},HIGH_RISK:{10:{ZERO:0,A:9.6},20:{ZERO:0,A:19.2},30:{ZERO:0,A:28.8},40:{ZERO:0,A:38.4},50:{ZERO:0,A:48}}},Xr={LOW_RISK:{10:{ZERO:0,A:1.1,B:1.5},20:{ZERO:0,A:1.1,B:1.5},30:{ZERO:0,A:1.1,B:1.45},40:{ZERO:0,A:1.1,B:1.45},50:{ZERO:0,A:1.1,B:1.45}},MEDIUM_RISK:{10:{ZERO:0,A:1.3,B:1.7,C:1.9,D:3},20:{ZERO:0,A:1.3,B:1.4,C:1.9,D:3},30:{ZERO:0,A:1.3,B:1.7,C:1.9,D:2.8,E:3.8},40:{ZERO:0,A:1.4,B:1.8,C:1.9,D:2.6},50:{ZERO:0,A:1.4,B:1.9,C:2.6,D:4.6}},HIGH_RISK:{10:{ZERO:0,A:9.2},20:{ZERO:0,A:18.4},30:{ZERO:0,A:27.6},40:{ZERO:0,A:36.8},50:{ZERO:0,A:46}}},Nb=new i3(new Map([[1,Ar],[2,Vr],[3,Qr],[4,Yr],[8,Xr]])),Gb={LOW_RISK:{10:["B","A","A","A","ZERO","A","A","A","A","ZERO"],20:["B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO"],30:["B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO"],40:["B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO"],50:["B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO","B","A","A","A","ZERO","A","A","A","A","ZERO"]},MEDIUM_RISK:{10:["ZERO","B","ZERO","A","ZERO","C","ZERO","A","ZERO","D"],20:["A","ZERO","C","ZERO","B","ZERO","C","ZERO","C","ZERO","A","ZERO","C","ZERO","C","ZERO","D","ZERO","C","ZERO"],30:["A","ZERO","C","ZERO","A","ZERO","C","ZERO","D","ZERO","B","ZERO","A","ZERO","C","ZERO","A","ZERO","C","ZERO","A","ZERO","C","ZERO","E","ZERO","A","ZERO","C","ZERO"],40:["C","ZERO","A","ZERO","D","ZERO","C","ZERO","A","ZERO","C","ZERO","A","ZERO","D","ZERO","C","ZERO","A","ZERO","B","ZERO","A","ZERO","D","ZERO","C","ZERO","A","ZERO","C","ZERO","A","ZERO","D","ZERO","C","ZERO","A","ZERO"],50:["A","ZERO","B","ZERO","A","ZERO","C","ZERO","A","ZERO","B","ZERO","A","ZERO","B","ZERO","A","ZERO","C","ZERO","A","ZERO","B","ZERO","A","ZERO","B","ZERO","A","ZERO","C","ZERO","A","ZERO","B","ZERO","A","ZERO","B","ZERO","A","ZERO","D","ZERO","A","ZERO","B","ZERO","A","ZERO"]},HIGH_RISK:{10:[...Array(9).fill("ZERO"),"A"],20:[...Array(19).fill("ZERO"),"A"],30:[...Array(29).fill("ZERO"),"A"],40:[...Array(39).fill("ZERO"),"A"],50:[...Array(49).fill("ZERO"),"A"]}};var H2=100,N3=[{config:{label:"1K",theme:"red"},baseValue:1000*H2},{config:{label:"100",theme:"purple"},baseValue:100*H2},{config:{label:"10",theme:"blue"},baseValue:10*H2},{config:{label:"1",theme:"green"},baseValue:1*H2},{config:{label:"0.1",theme:"cyan"},baseValue:0.1*H2},{config:{label:"0.01",theme:"gold"},baseValue:0.01*H2}],a5=2;class o2{static parseChipLabel(a){let i=a.trim(),e=i.match(/^(\d+(?:\.\d+)?)([kKmM])?$/);if(!e)return Number(i)||0;let r=parseFloat(e[1]),l=e[2]?.toUpperCase();if(l==="K")return r*1000;if(l==="M")return r*1e6;return r}static formatChipLabel(a,i=2){if(a>=1e6&&Number.isInteger(a)&&a%1e6===0)return`${a/1e6}M`;if(a>=1000&&Number.isInteger(a)&&a%1000===0)return`${a/1000}K`;if(Number.isInteger(a))return`${a}`;return a.toFixed(i).replace(/\.0+$/,"").replace(/(\.\d*[1-9])0+$/,"$1")}static formatStackLabel(a){let e=o2.formatChipLabel(a);if(e.length<=3)return{label:e,truncated:!1};if(a>=1e6)return{label:`${Math.floor(a/1e6)}M`,truncated:!0};if(a>=1000)return{label:`${Math.floor(a/1000)}K`,truncated:!0};if(a>=1){let l=`${Math.floor(a)}`;if(l.length<=3)return{label:l,truncated:!0}}if(a>0)return{label:o2.formatChipLabel(a),truncated:!1};return{label:"0",truncated:!1}}static getStackDisplayLabel(a,i,e){if(i===1)return e;let{label:r,truncated:l}=o2.formatStackLabel(a);return l?`${r}+`:r}static toBaseUnits(a){return Math.round(a*H2)}static fromBaseUnits(a){return a/H2}static buildChipsFromBaseUnits(a){let i=[],e=a;for(let r of N3){if(e<=0)break;let l=Math.floor(e/r.baseValue);for(let n=0;n<Math.min(l,10);n++)i.push({...r.config});e-=l*r.baseValue}return i}static amountToVisualChips(a){let i=o2.toBaseUnits(a),e=o2.buildChipsFromBaseUnits(i),r=e[0]??N3[N3.length-1].config,l=o2.getStackDisplayLabel(a,e.length,r.label);return{chips:e,topLabel:l,highestChip:r}}static undoEvent(a){if(a.length===0)return a;return a.slice(0,-1)}static deriveState(a,i){let e=new Map;for(let l of a){let n=l.type;switch(n){case"add":{let h=(e.get(l.position)??K(0)).plus(l.amount);if(h.lte(0))e.delete(l.position);else e.set(l.position,h);break}case"multiplier-change":{let t=l.multiplier;if(t===1)break;if(t>1){for(let[o,c]of e)e.set(o,K(c.times(t).toFixed(a5,K.roundDown)));let h=K(0);for(let o of e.values())h=h.plus(o);if(h.gt(i)){let o=K(i).div(h);for(let[c,u]of e)e.set(c,K(u.times(o).toFixed(a5,K.roundDown)))}break}for(let[h,o]of e){let c=o.times(t);if(c.gte(0.01))e.set(h,K(c.toFixed(a5,K.roundDown)));else e.delete(h)}break}default:}}let r=new Map;for(let[l,n]of e)r.set(l,Number(n.toFixed(2)));return r}}var _8=40,a9=8,i9=0.75,G3=12;var l3=new Set([1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36]),e9=[0,32,15,19,4,21,2,25,17,34,6,27,13,36,11,30,8,23,10,5,24,16,33,1,20,14,31,9,22,18,29,7,28,12,35,3,26],r9=[0,28,9,26,30,11,7,20,32,17,5,22,34,15,3,24,36,13,1,37,27,10,25,29,12,8,19,31,18,6,21,33,16,4,23,35,14,2],U3=128,i5=5,P3=Math.PI*1.5,e5=5,l9=187,n9=5,Nr=[{x:260,y:128.8888888888889},{x:250,y:128.0555555555556},{x:240,y:126.94444444444451},{x:230,y:125.55555555555566},{x:220,y:123.88888888888903},{x:210,y:121.94444444444463},{x:200,y:119.72222222222246},{x:190,y:117.22222222222251},{x:180,y:114.4444444444448},{x:170,y:111.38888888888931},{x:160,y:108.05555555555605},{x:150,y:104.44444444444503},{x:140,y:100.55555555555623},{x:130,y:96.38888888888965},{x:120,y:91.94444444444531},{x:110,y:87.2222222222232},{x:100,y:83.94999827222222},{bounceCount:1},{x:91.92723877109552,y:88.06750950353444},{x:83.85447754219103,y:91.90724295706889},{x:75.78171631328655,y:95.46919863282557},{x:67.70895508438207,y:98.75337653080447},{x:59.636193855477586,y:101.75977665100561},{x:51.5634326265731,y:104.48839899342897},{x:43.49067139766862,y:106.93924355807457},{x:35.41791016876414,y:109.11231034494239},{x:27.345148939859655,y:111.00759935403244},{x:19.272387710955172,y:112.62511058534471},{x:11.19962648205069,y:113.96484403887922},{x:3.1268652531462067,y:115.02679971463596},{x:-4.945895975758276,y:115.81097761261492},{x:-13.018657204662759,y:116.31737773281611},{x:-21.09141843356724,y:116.54600007523953},{x:-29.164179662471724,y:116.49684463988518},{x:-37.23694089137621,y:116.16991142675306},{x:-45.30970212028069,y:115.56520043584317},{x:-53.38246334918517,y:114.6827116671555},{x:-61.455224578089656,y:113.52244512069007},{x:-69.52798580699414,y:112.08440079644686},{x:-77.60074703589862,y:110.36857869442588},{x:-85.6735082648031,y:108.37497881462713},{x:-93.74626949370759,y:106.1036011570506},{x:-101.81903072261207,y:103.55444572169631},{x:-109.89179195151655,y:100.72751250856425},{x:-117.96455318042103,y:97.62280151765441},{x:-126.03731440932552,y:94.2403127489668},{x:-134.11007563823,y:90.58004620250142},{x:-142.18283686713448,y:86.64200187825827},{x:-150.25559809603897,y:83.7840989631938},{bounceCount:2},{x:-156.37102114986237,y:87.32692354458038},{x:-162.48644420368578,y:90.5919703481892},{x:-168.60186725750918,y:93.57923937402023},{x:-174.7172903113326,y:96.2887306220735},{x:-180.832713365156,y:98.720444092349},{x:-186.9481364189794,y:100.87437978484672},{x:-193.0635594728028,y:102.75053769956668},{x:-199.1789825266262,y:104.34891783650886},{x:-205.29440558044962,y:105.66952019567327},{x:-211.40982863427303,y:106.71234477705991},{x:-217.52525168809643,y:107.47739158066878},{x:-223.64067474191984,y:107.96466060649988},{x:-229.75609779574324,y:108.1741518545532},{x:-235.87152084956665,y:108.10586532482876},{x:-241.98694390339006,y:107.75980101732654},{x:-248.10236695721346,y:107.13595893204655},{x:-254.21779001103687,y:106.23433906898879},{x:-260.3332130648603,y:105.05494142815326},{x:-266.4486361186837,y:103.59776600953995},{x:-272.5640591725071,y:101.86281281314888},{x:-278.6794822263305,y:99.85008183898003},{x:-284.7949052801539,y:97.55957308703341},{x:-290.9103283339773,y:94.99128655730902},{x:-297.0257513878007,y:92.14522224980686},{x:-303.1411744416241,y:89.02138016452693},{x:-309.2565974954475,y:85.61976030146923},{x:-315.3720205492709,y:83.80664866023704},{bounceCount:3},{x:-319.53056837648023,y:86.88414839816954},{x:-323.68911620368954,y:89.68387035832427},{x:-327.84766403089884,y:92.20581454070123},{x:-332.00621185810814,y:94.44998094530041},{x:-336.16475968531745,y:96.41636957212182},{x:-340.32330751252675,y:98.10498042116546},{x:-344.48185533973606,y:99.51581349243133},{x:-348.64040316694536,y:100.64886878591943},{x:-352.79895099415467,y:101.50414630162976},{x:-356.95749882136397,y:102.08164603956232},{x:-361.1160466485733,y:102.3813679997171},{x:-365.2745944757826,y:102.40331218209411},{x:-369.4331423029919,y:102.14747858669335},{x:-373.5916901302012,y:101.61386721351482},{x:-377.7502379574105,y:100.80247806255852},{x:-381.9087857846198,y:99.71331113382445},{x:-386.0673336118291,y:98.3463664273126},{x:-390.2258814390384,y:96.70164394302299},{x:-394.3844292662477,y:94.7791436809556},{x:-398.542977093457,y:92.57886564111044},{x:-402.7015249206663,y:90.10080982348751},{x:-406.8600727478756,y:87.34497622808681},{x:-411.0186205750849,y:84.31136485490833},{bounceCount:4},{x:-415.1771684022942,y:83.75529806659927},{x:-417.4869098517198,y:86.48546885866637},{x:-419.7966513011454,y:88.9378618729557},{x:-422.106392750571,y:91.11247710946725},{x:-424.4161341999966,y:93.00931456820103},{x:-426.72587564942216,y:94.62837424915705},{x:-429.03561709884775,y:95.96965615233529},{x:-431.34535854827334,y:97.03316027773576},{x:-433.6550999976989,y:97.81888662535846},{x:-435.9648414471245,y:98.32683519520339},{x:-438.2745828965501,y:98.55700598727054},{x:-440.5843243459757,y:98.50939900155993},{x:-442.8940657954013,y:98.18401423807154},{x:-445.20380724482686,y:97.58085169680538},{x:-447.51354869425245,y:96.69991137776145},{x:-449.82329014367804,y:95.54119328093975},{x:-452.1330315931036,y:94.10469740634028},{x:-454.4427730425292,y:92.39042375396303},{x:-456.7525144919548,y:90.39837232380802},{x:-459.0622559413804,y:88.12854311587523},{x:-461.371997390806,y:85.58093613016467},{bounceCount:5},{x:-463.68173884023156,y:83.94120374701237},{x:-465.70528195049405,y:86.56420005607708},{x:-467.72882506075655,y:88.90941858736403},{x:-469.75236817101904,y:90.9768593408732},{x:-471.77591128128154,y:92.76652231660461},{x:-473.79945439154403,y:94.27840751455824},{x:-475.8229975018065,y:95.5125149347341},{x:-477.846540612069,y:96.46884457713219},{x:-479.8700837223315,y:97.1473964417525},{x:-481.893626832594,y:97.54817052859505},{x:-483.9171699428565,y:97.67116683765983},{x:-485.940713053119,y:97.51638536894683},{x:-487.9642561633815,y:97.08382612245606},{x:-489.987799273644,y:96.37348909818752},{x:-492.0113423839065,y:95.38537429614121},{x:-494.034885494169,y:94.11948171631713},{x:-496.05842860443147,y:92.57581135871527},{x:-498.08197171469396,y:90.75436322333564},{x:-500.10551482495646,y:88.65513731017825},{x:-502.12905793521895,y:86.27813361924308},{bounceCount:6},{x:-504.15260104548145,y:83.83750960549332},{x:-505.15602161683216,y:85.89336903069062},{x:-506.1594421881829,y:87.67145067811015},{x:-507.1628627595336,y:89.1717545477519},{x:-508.1662833308843,y:90.39428063961589},{x:-509.169703902235,y:91.3390289537021}],Gr=[{x:260,y:128.8888888888889},{x:250,y:128.0555555555556},{x:240,y:126.94444444444451},{x:230,y:125.55555555555566},{x:220,y:123.88888888888903},{x:210,y:121.94444444444463},{x:200,y:119.72222222222246},{x:190,y:117.22222222222251},{x:180,y:114.4444444444448},{x:170,y:111.38888888888931},{x:160,y:108.05555555555605},{x:150,y:104.44444444444503},{x:140,y:100.55555555555623},{x:130,y:96.38888888888965},{x:120,y:91.94444444444531},{x:110,y:87.2222222222232},{x:100,y:83.94999827222222},{bounceCount:1},{x:91.92723877109552,y:87.633880780038},{x:83.85447754219103,y:91.03998551007601},{x:75.78171631328655,y:94.16831246233625},{x:67.70895508438207,y:97.01886163681871},{x:59.636193855477586,y:99.59163303352341},{x:51.5634326265731,y:101.88662665245033},{x:43.49067139766862,y:103.90384249359948},{x:35.41791016876414,y:105.64328055697086},{x:27.345148939859655,y:107.10494084256447},{x:19.272387710955172,y:108.28882335038031},{x:11.19962648205069,y:109.19492808041838},{x:3.1268652531462067,y:109.82325503267867},{x:-4.945895975758276,y:110.1738042071612},{x:-13.018657204662759,y:110.24657560386595},{x:-21.09141843356724,y:110.04156922279293},{x:-29.164179662471724,y:109.55878506394214},{x:-37.23694089137621,y:108.79822312731358},{x:-45.30970212028069,y:107.75988341290724},{x:-53.38246334918517,y:106.44376592072314},{x:-61.455224578089656,y:104.84987065076126},{x:-69.52798580699414,y:102.97819760302161},{x:-77.60074703589862,y:100.8287467775042},{x:-85.6735082648031,y:98.401518174209},{x:-93.74626949370759,y:95.69651179313604},{x:-101.81903072261207,y:92.7137276342853},{x:-109.89179195151655,y:89.4531656976568},{x:-117.96455318042103,y:85.91482598325052},{x:-126.03731440932552,y:83.94956456484863},{bounceCount:2},{x:-132.18102229535384,y:86.61429644597087},{x:-138.32473018138217,y:89.00125054931533},{x:-144.4684380674105,y:91.11042687488202},{x:-150.6121459534388,y:92.94182542267095},{x:-156.75585383946714,y:94.4954461926821},{x:-162.89956172549546,y:95.77128918491547},{x:-169.04326961152378,y:96.76935439937108},{x:-175.1869774975521,y:97.48964183604892},{x:-181.33068538358043,y:97.93215149494898},{x:-187.47439326960875,y:98.09688337607128},{x:-193.61810115563708,y:97.9838374794158},{x:-199.7618090416654,y:97.59301380498255},{x:-205.90551692769372,y:96.92441235277153},{x:-212.04922481372205,y:95.97803312278273},{x:-218.19293269975037,y:94.75387611501617},{x:-224.3366405857787,y:93.25194132947183},{x:-230.48034847180702,y:91.47222876614973},{x:-236.62405635783534,y:89.41473842504985},{x:-242.76776424386367,y:87.0794703061722},{x:-248.911472129892,y:84.46642440951678},{bounceCount:3},{x:-255.0551800159203,y:83.82456182183898},{x:-259.2426187606561,y:85.89507577233672},{x:-263.4300575053919,y:87.6878119450567},{x:-267.6174962501277,y:89.20277033999889},{x:-271.8049349948635,y:90.43995095716332},{x:-275.9923737395993,y:91.39935379654997},{x:-280.1798124843351,y:92.08097885815886},{x:-284.3672512290709,y:92.48482614198997},{x:-288.5546899738067,y:92.61089564804331},{x:-292.7421287185425,y:92.45918737631888},{x:-296.9295674632783,y:92.02970132681668}],Ur=[{x:260,y:128.8888888888889},{x:250,y:128.0555555555556},{x:240,y:126.94444444444451},{x:230,y:125.55555555555566},{x:220,y:123.88888888888903},{x:210,y:121.94444444444463},{x:200,y:119.72222222222246},{x:190,y:117.22222222222251},{x:180,y:114.4444444444448},{x:170,y:111.38888888888931},{x:160,y:108.05555555555605},{x:150,y:104.44444444444503},{x:140,y:100.55555555555623},{x:130,y:96.38888888888965},{x:120,y:91.94444444444531},{x:110,y:87.2222222222232},{x:100,y:83.94999827222222},{bounceCount:1},{x:91.92723877109552,y:87.73024271859276},{x:83.85447754219103,y:91.23270938718554},{x:75.78171631328655,y:94.45739827800054},{x:67.70895508438207,y:97.40430939103777},{x:59.636193855477586,y:100.07344272629723},{x:51.5634326265731,y:102.46479828377892},{x:43.49067139766862,y:104.57837606348284},{x:35.41791016876414,y:106.41417606540898},{x:27.345148939859655,y:107.97219828955735},{x:19.272387710955172,y:109.25244273592796},{x:11.19962648205069,y:110.25490940452079},{x:3.1268652531462067,y:110.97959829533585},{x:-4.945895975758276,y:111.42650940837314},{x:-13.018657204662759,y:111.59564274363265},{x:-21.09141843356724,y:111.4869983011144},{x:-29.164179662471724,y:111.10057608081837},{x:-37.23694089137621,y:110.43637608274457},{x:-45.30970212028069,y:109.494398306893},{x:-53.38246334918517,y:108.27464275326366},{x:-61.455224578089656,y:106.77710942185655},{x:-69.52798580699414,y:105.00179831267167},{x:-77.60074703589862,y:102.94870942570901},{x:-85.6735082648031,y:100.61784276096859},{x:-93.74626949370759,y:98.00919831845039},{x:-101.81903072261207,y:95.12277609815442},{x:-109.89179195151655,y:91.95857610008068},{x:-117.96455318042103,y:88.51659832422916},{x:-126.03731440932552,y:84.79684277059988},{x:-134.11007563823,y:83.93714001160077},{bounceCount:2},{x:-140.24248787383567,y:87.02442244310811},{x:-146.37490010944134,y:89.83392709683767},{x:-152.507312345047,y:92.36565397278946},{x:-158.63972458065268,y:94.61960307096348},{x:-164.77213681625835,y:96.59577439135973},{x:-170.90454905186402,y:98.2941679339782},{x:-177.0369612874697,y:99.7147836988189},{x:-183.16937352307536,y:100.85762168588184},{x:-189.30178575868104,y:101.722681895167},{x:-195.4341979942867,y:102.30996432667439},{x:-201.56661022989238,y:102.61946898040401},{x:-207.69902246549805,y:102.65119585635586},{x:-213.83143470110372,y:102.40514495452993},{x:-219.9638469367094,y:101.88131627492623},{x:-226.09625917231506,y:101.07970981754477},{x:-232.22867140792073,y:100.00032558238553},{x:-238.3610836435264,y:98.64316356944852},{x:-244.49349587913207,y:97.00822377873374},{x:-250.62590811473774,y:95.09550621024118},{x:-256.7583203503434,y:92.90501086397086},{x:-262.8907325859491,y:90.43673773992276},{x:-269.02314482155475,y:87.6906868380969},{bounceCount:3},{x:-275.1555570571604,y:84.66685815849326},{x:-281.2879692927661,y:83.77451871525722},{x:-285.46293443573677,y:86.2868541409619},{x:-289.63789957870745,y:88.52141178888883},{x:-293.8128647216781,y:90.47819165903798},{x:-297.9878298646488,y:92.15719375140935},{x:-302.1627950076195,y:93.55841806600296},{x:-306.33776015059016,y:94.68186460281879},{x:-310.51272529356083,y:95.52753336185685},{x:-314.6876904365315,y:96.09542434311714},{x:-318.8626555795022,y:96.38553754659966},{x:-323.03762072247287,y:96.39787297230441},{x:-327.21258586544354,y:96.13243062023139},{x:-331.3875510084142,y:95.5892104903806},{x:-335.5625161513849,y:94.76821258275203},{x:-339.7374812943556,y:93.66943689734569},{x:-343.91244643732625,y:92.29288343416158},{x:-348.08741158029693,y:90.6385521931997},{x:-352.2623767232676,y:88.70644317446005},{x:-356.4373418662383,y:86.49655637794262},{bounceCount:4},{x:-360.61230700920896,y:84.00889180364743},{x:-364.78727215217964,y:83.93296749758815},{x:-367.62671783526935,y:86.29244841066702},{x:-370.46616351835905,y:88.37415154596812},{x:-373.30560920144876,y:90.17807690349144},{x:-376.14505488453847,y:91.704224483237},{x:-378.9845005676282,y:92.95259428520478},{x:-381.8239462507179,y:93.9231863093948},{x:-384.6633919338076,y:94.61600055580703},{x:-387.5028376168973,y:95.0310370244415},{x:-390.342283299987,y:95.1682957152982},{x:-393.1817289830767,y:95.02777662837713},{x:-396.0211746661664,y:94.60947976367828},{x:-398.8606203492561,y:93.91340512120166},{x:-401.70006603234583,y:92.93955270094727},{x:-404.53951171543554,y:91.68792250291511}],r5=[Nr,Gr,Ur];var B3=(a)=>[...a].sort((i,e)=>i-e),e1={straight:(a)=>`STRAIGHT_${a}`,split:(a,i)=>{let[e,r]=B3([a,i]);return`SPLIT_${e}_${r}`},street:(a,i,e)=>{let[r,l,n]=B3([a,i,e]);return`STREET_${r}_${l}_${n}`},corner:(a,i,e,r)=>{let[l,n,t,h]=B3([a,i,e,r]);return`CORNER_${l}_${n}_${t}_${h}`},line:(a,i,e,r,l,n)=>{let t=B3([a,i,e,r,l,n]);return`LINE_${t[0]}_${t[1]}_${t[2]}_${t[3]}_${t[4]}_${t[5]}`},dozen:(a)=>`DOZEN_${a}`,half:(a)=>`HALF_${a}`,parity:(a)=>`PARITY_${a}`,color:(a)=>`COLOR_${a}`,column:(a)=>`COLUMN_${a}`,basket:()=>"BASKET"};function l5(a){let i=a.match(/^STRAIGHT_(\d+)$/);if(i)return{type:"straight",value:Number(i[1])};let e=a.match(/^SPLIT_(\d+)_(\d+)$/);if(e)return{type:"split",values:[Number(e[1]),Number(e[2])]};let r=a.match(/^STREET_(\d+)_(\d+)_(\d+)$/);if(r)return{type:"street",values:[Number(r[1]),Number(r[2]),Number(r[3])]};let l=a.match(/^CORNER_(\d+)_(\d+)_(\d+)_(\d+)$/);if(l)return{type:"corner",values:[Number(l[1]),Number(l[2]),Number(l[3]),Number(l[4])]};let n=a.match(/^LINE_(\d+)_(\d+)_(\d+)_(\d+)_(\d+)_(\d+)$/);if(n)return{type:"line",values:[Number(n[1]),Number(n[2]),Number(n[3]),Number(n[4]),Number(n[5]),Number(n[6])]};if(a==="DOZEN_FIRST")return{type:"dozen",dozen:"FIRST"};if(a==="DOZEN_SECOND")return{type:"dozen",dozen:"SECOND"};if(a==="DOZEN_THIRD")return{type:"dozen",dozen:"THIRD"};if(a==="HALF_LOW")return{type:"half",half:"LOW"};if(a==="HALF_HIGH")return{type:"half",half:"HIGH"};if(a==="PARITY_EVEN")return{type:"parity",parity:"EVEN"};if(a==="PARITY_ODD")return{type:"parity",parity:"ODD"};if(a==="COLOR_RED")return{type:"color",color:"RED"};if(a==="COLOR_BLACK")return{type:"color",color:"BLACK"};if(a==="COLUMN_TOP")return{type:"column",column:"TOP"};if(a==="COLUMN_MIDDLE")return{type:"column",column:"MIDDLE"};if(a==="COLUMN_BOTTOM")return{type:"column",column:"BOTTOM"};if(a==="BASKET")return{type:"basket"};return null}function t9(a){let i=new Set,e=a===t1.AMERICAN?37:36;for(let h=0;h<=e;h++)i.add(e1.straight(h));let r=a===t1.EUROPEAN?S0:O0;for(let[h,o]of r)i.add(e1.split(h,o));let l=a===t1.EUROPEAN?H0:K0;for(let[h,o,c]of l)i.add(e1.street(h,o,c));let n=a===t1.EUROPEAN?M0:j0;for(let[h,o,c,u]of n)i.add(e1.corner(h,o,c,u));let t=a===t1.EUROPEAN?Y3:X3;for(let[h,o,c,u,m,s]of t)i.add(e1.line(h,o,c,u,m,s));if(i.add(e1.dozen("FIRST")),i.add(e1.dozen("SECOND")),i.add(e1.dozen("THIRD")),i.add(e1.half("LOW")),i.add(e1.half("HIGH")),i.add(e1.parity("EVEN")),i.add(e1.parity("ODD")),i.add(e1.color("RED")),i.add(e1.color("BLACK")),i.add(e1.column("TOP")),i.add(e1.column("MIDDLE")),i.add(e1.column("BOTTOM")),a===t1.AMERICAN)i.add(e1.basket());return i}var Pr=t9(t1.EUROPEAN),Br=t9(t1.AMERICAN);function o9(a,i){return(i===t1.EUROPEAN?Pr:Br).has(a)}function h9(a){let i=a%3;if(i===0)return 0;if(i===2)return 1;return 2}function s9(a){let i=new Map,e=new Map,r=new Map,l=new Map,n=new Map,t=a===t1.EUROPEAN?S0:O0;for(let[u,m]of t){let s=e1.split(u,m);if(u===0){if(m<=3)e.set(m,s);continue}if(m===37){if(u===3)e.set(3,s);continue}if(m-u===1)i.set(u,s);else e.set(m,s)}let h=a===t1.EUROPEAN?M0:j0;for(let[u,m,s,f]of h){let k=e1.corner(u,m,s,f);if(u===0)r.set(3,k);else r.set(s,k)}let o=a===t1.EUROPEAN?H0:K0;for(let[u,m,s]of o){let f=e1.street(u,m,s);if(u===0||s===37){if(u===0&&m===1)r.set(1,f);else if(u===0&&m===2&&s===3)r.set(2,f);else if(u===0&&m===2&&s===37)e.set(2,f);else if(u===2&&s===37)r.set(2,f)}else l.set(Math.max(u,m,s),f)}let c=a===t1.EUROPEAN?Y3:X3;for(let[u,m,s,f,k,w]of c){let y=e1.line(u,m,s,f,k,w),b=Math.max(u,m,s,f,k,w);n.set(b,y)}return{verticalSplit:i,horizontalSplit:e,corner:r,street:l,doubleStreet:n}}var _r=s9(t1.EUROPEAN),al=s9(t1.AMERICAN);function n3(a){return a===t1.EUROPEAN?_r:al}function u9(a,i){return n3(i).verticalSplit.get(a)??null}function c9(a,i){return n3(i).horizontalSplit.get(a)??null}function d9(a,i){return n3(i).corner.get(a)??null}function f9(a,i){return n3(i).doubleStreet.get(a)??null}function m9(a,i){return n3(i).street.get(a)??null}function n5(a){let i=l5(a);if(!i)return[];switch(i.type){case"straight":return[i.value];case"split":case"street":case"corner":case"line":return[...i.values];case"dozen":return Array.from({length:12},(e,r)=>r+1+(i.dozen==="FIRST"?0:i.dozen==="SECOND"?12:24));case"half":return Array.from({length:18},(e,r)=>r+(i.half==="LOW"?1:19));case"parity":return Array.from({length:18},(e,r)=>i.parity==="EVEN"?(r+1)*2:r*2+1);case"color":return i.color==="RED"?[...l3]:Array.from({length:36},(e,r)=>r+1).filter((e)=>!l3.has(e));case"column":return Array.from({length:12},(e,r)=>r*3+(i.column==="TOP"?3:i.column==="MIDDLE"?2:1));case"basket":return[0,37,1,2,3]}}function _3(a,i=t1.EUROPEAN){let e=[],r=[],l=[],n=[],t=[],h=[],o=[],c=[],u=[],m=[],s=[];for(let[k,w]of a.entries()){if(!o9(k,i))continue;let y=K(w).toFixed(4),b=l5(k);if(!b)continue;switch(b.type){case"straight":e.push({amount:y,value:b.value});break;case"split":r.push({amount:y,values:b.values});break;case"street":l.push({amount:y,values:b.values});break;case"corner":n.push({amount:y,values:b.values});break;case"line":t.push({amount:y,values:b.values});break;case"dozen":m.push({amount:y,dozen:J0[b.dozen]});break;case"half":c.push({amount:y,half:q0[b.half]});break;case"parity":h.push({amount:y,parity:E0[b.parity]});break;case"color":o.push({amount:y,color:L0[b.color]});break;case"column":u.push({amount:y,column:T0[b.column]});break;case"basket":s.push({amount:y});break}}let f={straightBets:e,splitBets:r,streetBets:l,cornerBets:n,doubleStreetBets:t,parityBets:h,colorBets:o,halfBets:c,columnBets:u,dozenBets:m};if(i===t1.AMERICAN){let k={...f,basketBets:s};return{type:t1.AMERICAN,inputs:k}}return{type:t1.EUROPEAN,inputs:f}}function v9(a){let i=K(0);for(let e of a.values())i=i.plus(e);return Number(i.toFixed(4))}class E1{static getNumberColor(a){if(a===0||a===37)return"green";return l3.has(a)?"red":"black"}static getValidSplits(a){return a===t1.EUROPEAN?S0:O0}static getValidStreets(a){return a===t1.EUROPEAN?H0:K0}static getValidCorners(a){return a===t1.EUROPEAN?M0:j0}static findValidSplit(a,i=t1.EUROPEAN){let e=[...a].sort((l,n)=>l-n),r=this.getValidSplits(i);for(let l of r)if(l[0]===e[0]&&l[1]===e[1])return l;return null}static findValidStreet(a,i=t1.EUROPEAN){let e=[...a].sort((l,n)=>l-n),r=this.getValidStreets(i);for(let l of r)if(l[0]===e[0]&&l[1]===e[1]&&l[2]===e[2])return l;return null}static findValidCorner(a,i=t1.EUROPEAN){let e=[...a].sort((l,n)=>l-n),r=this.getValidCorners(i);for(let l of r)if(l[0]===e[0]&&l[1]===e[1]&&l[2]===e[2]&&l[3]===e[3])return l;return null}static getWheelSequence(a){return a===t1.EUROPEAN?e9:r9}static calculateBallTargetAngle(a,i=t1.EUROPEAN){let e=this.getWheelSequence(i),r=e.indexOf(a);if(r===-1)return 0;let l=e.indexOf(6),n=360/e.length;return((r-l)%e.length+e.length)%e.length*n%360}static getRandomAnimationArray(){let a=Math.floor(Math.random()*r5.length);return[...r5[a]]}static transformAnimationPosition(a,i){if("bounceCount"in a)return a;let e=i.find((u)=>!("bounceCount"in u)),l=[...i].reverse().find((u)=>!("bounceCount"in u)).x-e.x,t=(a.x-e.x)/l,h=P3*t,o=Math.cos(h)*a.y,c=Math.sin(h)*a.y;return{x:o,y:c,angle:h*180/Math.PI,length:Math.abs(a.y)}}static preprocessAnimationArray(a){return a.map((i)=>this.transformAnimationPosition(i,a))}static getBallOffset(a){return a===t1.EUROPEAN?l9:n9}static convertBetsToLibraryFormat(a){return a.map((i)=>({...i,amount:K(i.amount)}))}static preparePayoutInputs(a,i){let e=_3(a,i);if(i===t1.AMERICAN){let r=new _a,l=e.inputs,n={straightBets:this.convertBetsToLibraryFormat(l.straightBets),splitBets:this.convertBetsToLibraryFormat(l.splitBets),streetBets:this.convertBetsToLibraryFormat(l.streetBets),cornerBets:this.convertBetsToLibraryFormat(l.cornerBets),doubleStreetBets:this.convertBetsToLibraryFormat(l.doubleStreetBets),parityBets:this.convertBetsToLibraryFormat(l.parityBets),colorBets:this.convertBetsToLibraryFormat(l.colorBets),halfBets:this.convertBetsToLibraryFormat(l.halfBets),columnBets:this.convertBetsToLibraryFormat(l.columnBets),dozenBets:this.convertBetsToLibraryFormat(l.dozenBets),basketBets:this.convertBetsToLibraryFormat(l.basketBets)};return{calculator:r,inputs:n,maxTile:37,type:t1.AMERICAN}}else{let r=new Ba,l=e.inputs,n={straightBets:this.convertBetsToLibraryFormat(l.straightBets),splitBets:this.convertBetsToLibraryFormat(l.splitBets),streetBets:this.convertBetsToLibraryFormat(l.streetBets),cornerBets:this.convertBetsToLibraryFormat(l.cornerBets),doubleStreetBets:this.convertBetsToLibraryFormat(l.doubleStreetBets),parityBets:this.convertBetsToLibraryFormat(l.parityBets),colorBets:this.convertBetsToLibraryFormat(l.colorBets),halfBets:this.convertBetsToLibraryFormat(l.halfBets),columnBets:this.convertBetsToLibraryFormat(l.columnBets),dozenBets:this.convertBetsToLibraryFormat(l.dozenBets)};return{calculator:r,inputs:n,maxTile:36,type:t1.EUROPEAN}}}static findMaxPayoutTile(a,i){let{calculator:e,inputs:r,maxTile:l}=this.preparePayoutInputs(a,i),n=K(0),t=0;for(let h=0;h<=l;h++){let{payoutAmount:o}=e.getPayoutDetails(r,h);if(o.gt(n))n=o,t=h}return{maxPayout:n.toNumber(),positionOfMaxMultiplier:t}}}class t5 extends M1{constructor(){super(...arguments);this.gameType="MINES";this.inBetResultModal=!1;this.enableAnimation=!1;this.persistResult=!1;this.animatedLimboMultiplier=null;this.animatedDiceResult=null;this.animatedAdvancedDiceResult=null;this.animatedKenoResults=[];this.animatedMinesState=null;this.animatedDiamondAppeared=[]}static styles=[X,h8];gameConsumer=new I1(this,{context:U});connectedCallback(){super.connectedCallback(),requestAnimationFrame(()=>{if(!this.isConnected)return;if(this.enableAnimation&&this.gameType==="LIMBO"&&this.limboData)this.animatedLimboMultiplier=null,setTimeout(()=>{if(this.isConnected)this.animatedLimboMultiplier=this.limboData?.resultMultiplier??null},100);if(this.enableAnimation&&this.gameType==="DICE"&&this.diceData)this.animatedDiceResult=null,setTimeout(()=>{if(this.isConnected)this.animatedDiceResult=this.diceData?.resultValue??null},100);if(this.enableAnimation&&this.gameType==="ADVANCED_DICE"&&this.advancedDiceData)this.animatedAdvancedDiceResult=null,setTimeout(()=>{if(this.isConnected)this.animatedAdvancedDiceResult=this.advancedDiceData?.resultValue??null},100);if(this.enableAnimation&&this.gameType==="KENO"&&this.kenoData)this.animatedKenoResults=[],this.kenoData.resultTiles?.forEach((a,i)=>{setTimeout(()=>{if(this.isConnected)this.animatedKenoResults=[...this.animatedKenoResults,a]},100+i*150)});if(this.enableAnimation&&this.gameType==="MINES"&&this.minesData){this.animatedMinesState={selectedTiles:[],mineLocations:this.minesData.mineLocations||[],state:"GAME_IN_PROGRESS"};let a=this.minesData.selectedTiles||[];setTimeout(()=>{if(!this.isConnected)return;a.forEach((e,r)=>{setTimeout(()=>{if(this.isConnected)this.animatedMinesState={...this.animatedMinesState,selectedTiles:[...this.animatedMinesState?.selectedTiles||[],e],state:"GAME_IN_PROGRESS"}},r*200)});let i=a.length*200+300;setTimeout(()=>{if(this.isConnected)this.animatedMinesState={...this.animatedMinesState,state:"VIEWING_RESULTS"}},i)},50)}})}updated(a){if(super.updated(a),a.has("enableAnimation")&&this.enableAnimation)requestAnimationFrame(()=>{if(!this.isConnected)return;if(this.gameType==="LIMBO"&&this.limboData)this.animatedLimboMultiplier=null,setTimeout(()=>{if(this.isConnected)this.animatedLimboMultiplier=this.limboData?.resultMultiplier??null},100);if(this.gameType==="DICE"&&this.diceData)this.animatedDiceResult=null,setTimeout(()=>{if(this.isConnected)this.animatedDiceResult=this.diceData?.resultValue??null},100);if(this.gameType==="ADVANCED_DICE"&&this.advancedDiceData)this.animatedAdvancedDiceResult=null,setTimeout(()=>{if(this.isConnected)this.animatedAdvancedDiceResult=this.advancedDiceData?.resultValue??null},100);if(this.gameType==="KENO"&&this.kenoData)this.animateKenoResults();if(this.gameType==="DIAMONDS"&&this.diamondsData)this.animateDiamondColors()});if(a.has("diamondsData")&&this.enableAnimation&&this.gameType==="DIAMONDS")this.animateDiamondColors()}async animateKenoResults(){if(!this.kenoData||!this.isConnected)return;requestAnimationFrame(()=>{if(this.isConnected)this.animatedKenoResults=[]});let a=this.kenoData.resultTiles||[];await new Promise((i)=>setTimeout(i,100));for(let i of a){if(!this.isConnected)break;requestAnimationFrame(()=>{if(this.isConnected)this.animatedKenoResults=[...this.animatedKenoResults,i]}),await new Promise((e)=>setTimeout(e,150))}}animateDiamondColors(){if(!this.diamondsData||!this.isConnected)return;let a=this.diamondsData.result?.length??5;this.animatedDiamondAppeared=Array(a).fill(!1);for(let i=0;i<a;i++)setTimeout(()=>{if(!this.isConnected)return;let e=[...this.animatedDiamondAppeared];e[i]=!0,this.animatedDiamondAppeared=e},i*P0)}render(){switch(this.gameType){case"MINES":let a=this.minesData?.selectedTiles||[],i=this.minesData?.mineLocations||[],e=a.some((l)=>i.includes(l)),r=a.length>0&&!e;return I`
7006
7006
  <origami-mines-grid
7007
7007
  .minesState=${this.enableAnimation&&this.animatedMinesState?this.animatedMinesState:{selectedTiles:this.minesData?.selectedTiles||[1,12,13],state:"VIEWING_RESULTS",mineLocations:this.minesData?.mineLocations||[7,17,22,15,23]}}
7008
7008
  ?hasWon=${r}
@@ -8246,7 +8246,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
8246
8246
  .copy-icon-container .icon-layer.visible {
8247
8247
  opacity: 1;
8248
8248
  }
8249
- `;class h1{authToken;baseUrl;static totalDiceValue=1e4;static minWinChance=0.01;static inputValuePrecision=4;static getMaxWinChance(a){return 99-a}constructor(a,i){this.authToken=a,this.baseUrl=i+"/games/dice"}async startBet(a){let i=await fetch(`${this.baseUrl}/play`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Origami-Trace":K1()},body:JSON.stringify(a)}),e=await i.json();if(i.ok)return{success:!0,data:e};let r="alerts.gameError";switch(e.errorCode){case"INSUFFICIENT_BALANCE":r="alerts.insufficientBalance";break;case"LIMIT_REACHED":r="alerts.betLimitReached";break}return{success:!1,error:S(r,a.language)}}static getMultiplier(a,i,e){let r=h1.getWinChance(i,e);if(K(r).eq(0))return"0";return K(100-a).div(r).toFixed(h1.inputValuePrecision)}static getWinChance(a,i){let e=i==="ABOVE"?h1.totalDiceValue-a:a;return K(e).div(h1.totalDiceValue).mul(100).toFixed(h1.inputValuePrecision)}static getSelectedValueFromMultiplier(a,i,e){if(K(i).eq(0))return 0;let r=K(100-a).div(i);return h1.getSelectedValueFromWinChance(r.toString(),e)}static getSelectedValueFromWinChance(a,i){let e=K(a).div(100).mul(h1.totalDiceValue);if(i==="ABOVE")return Number(K(h1.totalDiceValue).minus(e).toFixed(0));return Number(K(e).toFixed(0))}static getSelectedValueFromRollOver(a){return h1.totalDiceValue-a}static getWinChanceFromSelectedValue(a,i){let e=i==="ABOVE"?h1.totalDiceValue-a:a;return K(e).div(h1.totalDiceValue).mul(100).toFixed(h1.inputValuePrecision)}static getMinMultiplier(a){return K(100-a).div(K(h1.getMaxWinChance(a))).toFixed(h1.inputValuePrecision)}static getMaxMultiplier(a){return K(100-a).div(K(h1.minWinChance)).toFixed(h1.inputValuePrecision)}static isValidMultiplier(a,i){if(!g1(i))return!1;return K(i).gte(h1.getMinMultiplier(a))&&K(i).lte(h1.getMaxMultiplier(a))}static isValidWinChance(a,i){if(!g1(a))return!1;try{let e=K(a),r=K(h1.minWinChance),l=K(h1.getMaxWinChance(i));return e.gte(r)&&e.lte(l)}catch{return!1}}}class f5{betData;minesDisplayData;limboDisplayData;diceDisplayData;kenoDisplayData;diamondsDisplayData;wheelDisplayData;diceRawData;advancedDiceRawData;advancedDiceDisplayData;rouletteDisplayData;constructor(a){this.betData=a;let i=this._computeDiceRawData();this.diceRawData=i;let e=this._computeAdvancedDiceRawData();this.advancedDiceRawData=e,this.minesDisplayData=this._computeMinesDisplayData(),this.limboDisplayData=this._computeLimboDisplayData(),this.diceDisplayData=this._computeDiceDisplayData(i),this.kenoDisplayData=this._computeKenoDisplayData(),this.diamondsDisplayData=this._computeDiamondsDisplayData(),this.wheelDisplayData=this._computeWheelDisplayData(),this.advancedDiceDisplayData=this._computeAdvancedDiceDisplayData(e),this.rouletteDisplayData=this._computeRouletteDisplayData()}_computeDiceRawData(){if(!this.betData.betActions||this.betData.betActions.length===0)return{resultValue:50,userValue:50,isRollLower:!1,winChance:"50.0000",isDiceWin:!1};let a=this.betData.betActions[0]?.data.DICE,i=this.betData.betActions[this.betData.betActions.length-1]?.data.DICE;if(!i||!a)return{resultValue:50,userValue:50,isRollLower:!1,winChance:"50.0000",isDiceWin:!1};let e=a.direction==="BELOW",r=i.result[0],l=a.selectedValue,n=a.direction==="ABOVE"?r>l:r<l,t=h1.getWinChance(a.selectedValue,a.direction);return{resultValue:r,userValue:l,isRollLower:e,winChance:t,isDiceWin:n}}_computeMinesDisplayData(){if(!this.betData.betActions||this.betData.betActions.length===0)return{mineLocations:[],selectedTiles:[]};return{mineLocations:G1.deriveMineLocations(this.betData.betActions),selectedTiles:G1.deriveSelectedTiles(this.betData.betActions)}}_computeKenoDisplayData(){if(!this.betData.betActions||this.betData.betActions.length===0)return{selectedTiles:[],resultTiles:[],isPlaying:!1,gameOver:!0,popupShowing:!1};let a=this.betData.betActions[0]?.data.KENO,i=this.betData.betActions[this.betData.betActions.length-1]?.data.KENO;if(!i||!a)return{selectedTiles:[],resultTiles:[],isPlaying:!1,gameOver:!0,popupShowing:!1};return{selectedTiles:a.selectedNumbers,resultTiles:i.result,isPlaying:!1,gameOver:!0,popupShowing:!1}}_computeLimboDisplayData(){if(!this.betData.betActions||this.betData.betActions.length===0)return{isWin:!1,betId:this.betData.id||"123",resultMultiplier:0,betTargetMultiplier:0};let a=this.betData.betActions[0]?.data.LIMBO,i=this.betData.betActions[this.betData.betActions.length-1]?.data.LIMBO;if(!i||!a)return{isWin:!1,betId:this.betData.id||"123",resultMultiplier:0,betTargetMultiplier:0};return{isWin:Number(i.randomMultiplier)>=Number(a.targetMultiplier),betId:this.betData.id||"123",resultMultiplier:Number(i.randomMultiplier),betTargetMultiplier:Number(a.targetMultiplier)}}_computeDiamondsDisplayData(){if(!this.betData.betActions||this.betData.betActions.length===0)return{result:[0,0,0,0,0]};let a=this.betData.betActions[this.betData.betActions.length-1]?.data.DIAMONDS;if(!a||!a.result)return{result:[0,0,0,0,0]};return{result:a.result}}_computeDiceDisplayData(a){return{value:a.userValue/100,min:2,max:98,step:1,showDice:!0,disabled:!0,resultValue:a.resultValue/100,isWin:a.isDiceWin,isRollLower:a.isRollLower}}_computeWheelDisplayData(){let a=this.betData.betActions[0]?.data.WHEEL,i=this.betData.betActions[this.betData.betActions.length-1]?.data.WHEEL;if(!i||!a)return{risk:"MEDIUM_RISK",segments:10,resultSegment:0,betId:this.betData.id||"123"};return{risk:a.riskLevel,segments:a.segments,resultSegment:i.result[0],betId:this.betData.id}}_computeAdvancedDiceRawData(){let a={lower:2500,upper:7500},i={resultValue:5000,rollType:"ROLL_BETWEEN",bounds:a,winChance:"50.0000",isWin:!1};if(!this.betData.betActions||this.betData.betActions.length===0)return i;let e=this.betData.betActions[0]?.data.ADVANCED_DICE,r=this.betData.betActions[this.betData.betActions.length-1]?.data.ADVANCED_DICE;if(!r||!e)return i;let l=r.result[0],n=e.mode,t,h;if(n==="ROLL_BETWEEN_TWO")t=e.firstBounds,h=e.secondBounds;else t=e.bounds;let o=t2.getStrategy(n),{winChancePercent:c,isWin:u}=o.evaluateOutcome(t,h,l);return{resultValue:l,rollType:n,bounds:t,secondBounds:h,winChance:c.toFixed(4),isWin:u}}_computeAdvancedDiceDisplayData(a){return{resultValue:a.resultValue/100,rollType:a.rollType,firstBoundsLower:a.bounds.lower/100,firstBoundsUpper:a.bounds.upper/100,secondBoundsLower:a.secondBounds?a.secondBounds.lower/100:void 0,secondBoundsUpper:a.secondBounds?a.secondBounds.upper/100:void 0,isWin:a.isWin}}getMinesDisplayData(){return this.minesDisplayData}getLimboDisplayData(){return this.limboDisplayData}getDiceDisplayData(){return this.diceDisplayData}getKenoDisplayData(){return this.kenoDisplayData}getDiamondsDisplayData(){return this.diamondsDisplayData}getWheelDisplayData(){return this.wheelDisplayData}getDiceData(){return this.diceRawData}getAdvancedDiceDisplayData(){return this.advancedDiceDisplayData}getAdvancedDiceRawData(){return this.advancedDiceRawData}getPlinkoDisplayData(){let a=this.betData.betActions[0]?.data?.PLINKO,i=this.betData.betActions[this.betData.betActions.length-1]?.data?.PLINKO;if(!i||!a)return{multiplier:0,rowCount:16,index:0};let e=i.result;return{multiplier:Number(this.betData.multiplier),rowCount:a.numberOfRows,index:e.reduce((r,l)=>r+l,0)}}_computeRouletteDisplayData(){if(!this.betData.betActions||this.betData.betActions.length===0)return{hitNumber:0};let a=this.betData.betActions[this.betData.betActions.length-1]?.data?.ROULETTE;if(!a||!a.result)return{hitNumber:0};return{hitNumber:a.result[0]}}getRouletteDisplayData(){return this.rouletteDisplayData}}var il=l1`
8249
+ `;class o1{authToken;baseUrl;static totalDiceValue=1e4;static minWinChance=0.01;static inputValuePrecision=4;static getMaxWinChance(a){return 99-a}constructor(a,i){this.authToken=a,this.baseUrl=i+"/games/dice"}async startBet(a){let i=await fetch(`${this.baseUrl}/play`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Origami-Trace":K1()},body:JSON.stringify(a)}),e=await i.json();if(i.ok)return{success:!0,data:e};let r="alerts.gameError";switch(e.errorCode){case"INSUFFICIENT_BALANCE":r="alerts.insufficientBalance";break;case"LIMIT_REACHED":r="alerts.betLimitReached";break}return{success:!1,error:S(r,a.language)}}static getMultiplier(a,i,e){let r=o1.getWinChance(i,e);if(K(r).eq(0))return"0";return K(100-a).div(r).toFixed(o1.inputValuePrecision)}static getWinChance(a,i){let e=i==="ABOVE"?o1.totalDiceValue-a:a;return K(e).div(o1.totalDiceValue).mul(100).toFixed(o1.inputValuePrecision)}static getSelectedValueFromMultiplier(a,i,e){if(K(i).eq(0))return 0;let r=K(100-a).div(i);return o1.getSelectedValueFromWinChance(r.toString(),e)}static getSelectedValueFromWinChance(a,i){let e=K(a).div(100).mul(o1.totalDiceValue);if(i==="ABOVE")return Number(K(o1.totalDiceValue).minus(e).toFixed(0));return Number(K(e).toFixed(0))}static getSelectedValueFromRollOver(a){return o1.totalDiceValue-a}static getWinChanceFromSelectedValue(a,i){let e=i==="ABOVE"?o1.totalDiceValue-a:a;return K(e).div(o1.totalDiceValue).mul(100).toFixed(o1.inputValuePrecision)}static getMinMultiplier(a){return K(100-a).div(K(o1.getMaxWinChance(a))).toFixed(o1.inputValuePrecision)}static getMaxMultiplier(a){return K(100-a).div(K(o1.minWinChance)).toFixed(o1.inputValuePrecision)}static isValidMultiplier(a,i){if(!g1(i))return!1;return K(i).gte(o1.getMinMultiplier(a))&&K(i).lte(o1.getMaxMultiplier(a))}static isValidWinChance(a,i){if(!g1(a))return!1;try{let e=K(a),r=K(o1.minWinChance),l=K(o1.getMaxWinChance(i));return e.gte(r)&&e.lte(l)}catch{return!1}}}class f5{betData;minesDisplayData;limboDisplayData;diceDisplayData;kenoDisplayData;diamondsDisplayData;wheelDisplayData;diceRawData;advancedDiceRawData;advancedDiceDisplayData;rouletteDisplayData;constructor(a){this.betData=a;let i=this._computeDiceRawData();this.diceRawData=i;let e=this._computeAdvancedDiceRawData();this.advancedDiceRawData=e,this.minesDisplayData=this._computeMinesDisplayData(),this.limboDisplayData=this._computeLimboDisplayData(),this.diceDisplayData=this._computeDiceDisplayData(i),this.kenoDisplayData=this._computeKenoDisplayData(),this.diamondsDisplayData=this._computeDiamondsDisplayData(),this.wheelDisplayData=this._computeWheelDisplayData(),this.advancedDiceDisplayData=this._computeAdvancedDiceDisplayData(e),this.rouletteDisplayData=this._computeRouletteDisplayData()}_computeDiceRawData(){if(!this.betData.betActions||this.betData.betActions.length===0)return{resultValue:50,userValue:50,isRollLower:!1,winChance:"50.0000",isDiceWin:!1};let a=this.betData.betActions[0]?.data.DICE,i=this.betData.betActions[this.betData.betActions.length-1]?.data.DICE;if(!i||!a)return{resultValue:50,userValue:50,isRollLower:!1,winChance:"50.0000",isDiceWin:!1};let e=a.direction==="BELOW",r=i.result[0],l=a.selectedValue,n=a.direction==="ABOVE"?r>l:r<l,t=o1.getWinChance(a.selectedValue,a.direction);return{resultValue:r,userValue:l,isRollLower:e,winChance:t,isDiceWin:n}}_computeMinesDisplayData(){if(!this.betData.betActions||this.betData.betActions.length===0)return{mineLocations:[],selectedTiles:[]};return{mineLocations:G1.deriveMineLocations(this.betData.betActions),selectedTiles:G1.deriveSelectedTiles(this.betData.betActions)}}_computeKenoDisplayData(){if(!this.betData.betActions||this.betData.betActions.length===0)return{selectedTiles:[],resultTiles:[],isPlaying:!1,gameOver:!0,popupShowing:!1};let a=this.betData.betActions[0]?.data.KENO,i=this.betData.betActions[this.betData.betActions.length-1]?.data.KENO;if(!i||!a)return{selectedTiles:[],resultTiles:[],isPlaying:!1,gameOver:!0,popupShowing:!1};return{selectedTiles:a.selectedNumbers,resultTiles:i.result,isPlaying:!1,gameOver:!0,popupShowing:!1}}_computeLimboDisplayData(){if(!this.betData.betActions||this.betData.betActions.length===0)return{isWin:!1,betId:this.betData.id||"123",resultMultiplier:0,betTargetMultiplier:0};let a=this.betData.betActions[0]?.data.LIMBO,i=this.betData.betActions[this.betData.betActions.length-1]?.data.LIMBO;if(!i||!a)return{isWin:!1,betId:this.betData.id||"123",resultMultiplier:0,betTargetMultiplier:0};return{isWin:Number(i.randomMultiplier)>=Number(a.targetMultiplier),betId:this.betData.id||"123",resultMultiplier:Number(i.randomMultiplier),betTargetMultiplier:Number(a.targetMultiplier)}}_computeDiamondsDisplayData(){if(!this.betData.betActions||this.betData.betActions.length===0)return{result:[0,0,0,0,0]};let a=this.betData.betActions[this.betData.betActions.length-1]?.data.DIAMONDS;if(!a||!a.result)return{result:[0,0,0,0,0]};return{result:a.result}}_computeDiceDisplayData(a){return{value:a.userValue/100,min:2,max:98,step:1,showDice:!0,disabled:!0,resultValue:a.resultValue/100,isWin:a.isDiceWin,isRollLower:a.isRollLower}}_computeWheelDisplayData(){let a=this.betData.betActions[0]?.data.WHEEL,i=this.betData.betActions[this.betData.betActions.length-1]?.data.WHEEL;if(!i||!a)return{risk:"MEDIUM_RISK",segments:10,resultSegment:0,betId:this.betData.id||"123"};return{risk:a.riskLevel,segments:a.segments,resultSegment:i.result[0],betId:this.betData.id}}_computeAdvancedDiceRawData(){let a={lower:2500,upper:7500},i={resultValue:5000,rollType:"ROLL_BETWEEN",bounds:a,winChance:"50.0000",isWin:!1};if(!this.betData.betActions||this.betData.betActions.length===0)return i;let e=this.betData.betActions[0]?.data.ADVANCED_DICE,r=this.betData.betActions[this.betData.betActions.length-1]?.data.ADVANCED_DICE;if(!r||!e)return i;let l=r.result[0],n=e.mode,t,h;if(n==="ROLL_BETWEEN_TWO")t=e.firstBounds,h=e.secondBounds;else t=e.bounds;let o=t2.getStrategy(n),{winChancePercent:c,isWin:u}=o.evaluateOutcome(t,h,l);return{resultValue:l,rollType:n,bounds:t,secondBounds:h,winChance:c.toFixed(4),isWin:u}}_computeAdvancedDiceDisplayData(a){return{resultValue:a.resultValue/100,rollType:a.rollType,firstBoundsLower:a.bounds.lower/100,firstBoundsUpper:a.bounds.upper/100,secondBoundsLower:a.secondBounds?a.secondBounds.lower/100:void 0,secondBoundsUpper:a.secondBounds?a.secondBounds.upper/100:void 0,isWin:a.isWin}}getMinesDisplayData(){return this.minesDisplayData}getLimboDisplayData(){return this.limboDisplayData}getDiceDisplayData(){return this.diceDisplayData}getKenoDisplayData(){return this.kenoDisplayData}getDiamondsDisplayData(){return this.diamondsDisplayData}getWheelDisplayData(){return this.wheelDisplayData}getDiceData(){return this.diceRawData}getAdvancedDiceDisplayData(){return this.advancedDiceDisplayData}getAdvancedDiceRawData(){return this.advancedDiceRawData}getPlinkoDisplayData(){let a=this.betData.betActions[0]?.data?.PLINKO,i=this.betData.betActions[this.betData.betActions.length-1]?.data?.PLINKO;if(!i||!a)return{multiplier:0,rowCount:16,index:0};let e=i.result;return{multiplier:Number(this.betData.multiplier),rowCount:a.numberOfRows,index:e.reduce((r,l)=>r+l,0)}}_computeRouletteDisplayData(){if(!this.betData.betActions||this.betData.betActions.length===0)return{hitNumber:0};let a=this.betData.betActions[this.betData.betActions.length-1]?.data?.ROULETTE;if(!a||!a.result)return{hitNumber:0};return{hitNumber:a.result[0]}}getRouletteDisplayData(){return this.rouletteDisplayData}}var il=l1`
8250
8250
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
8251
8251
  <path fill-rule="evenodd" clip-rule="evenodd" d="M10.6666 1.33325H5.33329V2.66659H2.66663V14.6666H13.3333V2.66659H10.6666V1.33325ZM9.33329 2.66659H6.66663V3.99992H9.33329V2.66659Z" fill="currentColor"/>
8252
8252
  </svg>`,el=l1`
@@ -9177,14 +9177,14 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
9177
9177
  .stat-input[disabled] .hotkey-hint {
9178
9178
  opacity: 0.5;
9179
9179
  }
9180
- `;class p5 extends Y{constructor(){super(...arguments);this.selectedValue=50;this.diceDirection="ABOVE";this.disabled=!1;this._winChanceInputValue="";this._multiplierInputValue="";this._winChanceFocused=!1;this._multiplierFocused=!1;this._previousMultiplierInputValue="";this._previousWinChanceInputValue=""}static styles=[X,S9];get edge(){return this.gameData?.edge??$1}set winChanceInputValue(a){this._previousWinChanceInputValue=this._winChanceInputValue,this._winChanceInputValue=a}set multiplierInputValue(a){this._previousMultiplierInputValue=this._multiplierInputValue,this._multiplierInputValue=a}setWinChanceValue(a){if(this.winChanceInputValue=a,this.emit("dice-win-chance-input-change",{detail:{winChance:a}}),this._winChanceInputValue==="")this.multiplierInputValue="";else if(g1(this._winChanceInputValue)&&this._winChanceFocused){let i=h1.getSelectedValueFromWinChance(this._winChanceInputValue,this.diceDirection);if(this.emit("dice-selected-value-change",{detail:{selectedValue:i}}),this._previousWinChanceInputValue==="")this.selectedValueChangeHandler()}}setMultiplierValue(a){if(this.multiplierInputValue=a,this.emit("dice-multiplier-input-change",{detail:{multiplier:a}}),this._multiplierInputValue==="")this.winChanceInputValue="";else if(g1(this._multiplierInputValue)&&this._multiplierFocused){let i=h1.getSelectedValueFromMultiplier(this.edge,this._multiplierInputValue,this.diceDirection);if(this.emit("dice-selected-value-change",{detail:{selectedValue:i}}),this._previousMultiplierInputValue==="")this.selectedValueChangeHandler()}}selectedValueChangeHandler(){if(!this._multiplierFocused)this.setMultiplierValue(h1.getMultiplier(this.edge,this.selectedValue,this.diceDirection));if(!this._winChanceFocused)this.setWinChanceValue(h1.getWinChance(this.selectedValue,this.diceDirection))}render(){let a=this.gameData?.language||W,i=!h1.isValidMultiplier(this.edge,this._multiplierInputValue),e=!h1.isValidWinChance(this._winChanceInputValue,this.edge),r=i?N1("errors.dice.multiplierRange",a,{min:h1.getMinMultiplier(this.edge),max:h1.getMaxMultiplier(this.edge)}):"",l=e?N1("errors.dice.winChanceRange",a,{min:h1.minWinChance,max:h1.getMaxWinChance(this.edge)}):"";return I`
9180
+ `;class p5 extends Y{constructor(){super(...arguments);this.selectedValue=50;this.diceDirection="ABOVE";this.disabled=!1;this._winChanceInputValue="";this._multiplierInputValue="";this._winChanceFocused=!1;this._multiplierFocused=!1;this._previousMultiplierInputValue="";this._previousWinChanceInputValue=""}static styles=[X,S9];get edge(){return this.gameData?.edge??$1}set winChanceInputValue(a){this._previousWinChanceInputValue=this._winChanceInputValue,this._winChanceInputValue=a}set multiplierInputValue(a){this._previousMultiplierInputValue=this._multiplierInputValue,this._multiplierInputValue=a}setWinChanceValue(a){if(this.winChanceInputValue=a,this.emit("dice-win-chance-input-change",{detail:{winChance:a}}),this._winChanceInputValue==="")this.multiplierInputValue="";else if(g1(this._winChanceInputValue)&&this._winChanceFocused){let i=o1.getSelectedValueFromWinChance(this._winChanceInputValue,this.diceDirection);if(this.emit("dice-selected-value-change",{detail:{selectedValue:i}}),this._previousWinChanceInputValue==="")this.selectedValueChangeHandler()}}setMultiplierValue(a){if(this.multiplierInputValue=a,this.emit("dice-multiplier-input-change",{detail:{multiplier:a}}),this._multiplierInputValue==="")this.winChanceInputValue="";else if(g1(this._multiplierInputValue)&&this._multiplierFocused){let i=o1.getSelectedValueFromMultiplier(this.edge,this._multiplierInputValue,this.diceDirection);if(this.emit("dice-selected-value-change",{detail:{selectedValue:i}}),this._previousMultiplierInputValue==="")this.selectedValueChangeHandler()}}selectedValueChangeHandler(){if(!this._multiplierFocused)this.setMultiplierValue(o1.getMultiplier(this.edge,this.selectedValue,this.diceDirection));if(!this._winChanceFocused)this.setWinChanceValue(o1.getWinChance(this.selectedValue,this.diceDirection))}render(){let a=this.gameData?.language||W,i=!o1.isValidMultiplier(this.edge,this._multiplierInputValue),e=!o1.isValidWinChance(this._winChanceInputValue,this.edge),r=i?N1("errors.dice.multiplierRange",a,{min:o1.getMinMultiplier(this.edge),max:o1.getMaxMultiplier(this.edge)}):"",l=e?N1("errors.dice.winChanceRange",a,{min:o1.minWinChance,max:o1.getMaxWinChance(this.edge)}):"";return I`
9181
9181
  <origami-input
9182
9182
  tooltipOffset=${0}
9183
9183
  class="stat-input multiplier"
9184
9184
  .label=${S("common.targetMultiplier",a)}
9185
9185
  type="number"
9186
9186
  ?disabled=${this.disabled}
9187
- @input-blur=${()=>{if(this._multiplierFocused=!1,this._multiplierInputValue==="")this.winChanceInputValue="";else try{this.setMultiplierValue(K(this._multiplierInputValue).toFixed(h1.inputValuePrecision))}catch(n){this.setMultiplierValue(Number(0).toFixed(h1.inputValuePrecision))}}}
9187
+ @input-blur=${()=>{if(this._multiplierFocused=!1,this._multiplierInputValue==="")this.winChanceInputValue="";else try{this.setMultiplierValue(K(this._multiplierInputValue).toFixed(o1.inputValuePrecision))}catch(n){this.setMultiplierValue(Number(0).toFixed(o1.inputValuePrecision))}}}
9188
9188
  @input-focus=${()=>{this._multiplierFocused=!0}}
9189
9189
  @keydown=${q1}
9190
9190
  .value=${this._multiplierInputValue}
@@ -9235,7 +9235,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
9235
9235
  type="number"
9236
9236
  ?disabled=${this.disabled}
9237
9237
  @input-focus=${()=>{this._winChanceFocused=!0}}
9238
- @input-blur=${()=>{if(this._winChanceFocused=!1,this._winChanceInputValue==="")this.multiplierInputValue="";else try{this.setWinChanceValue(K(this._winChanceInputValue).toFixed(h1.inputValuePrecision))}catch(n){this.setWinChanceValue(Number(0).toFixed(h1.inputValuePrecision))}}}
9238
+ @input-blur=${()=>{if(this._winChanceFocused=!1,this._winChanceInputValue==="")this.multiplierInputValue="";else try{this.setWinChanceValue(K(this._winChanceInputValue).toFixed(o1.inputValuePrecision))}catch(n){this.setWinChanceValue(Number(0).toFixed(o1.inputValuePrecision))}}}
9239
9239
  ?tooltipFullWidth=${!0}
9240
9240
  @keydown=${q1}
9241
9241
  .value=${this._winChanceInputValue}
@@ -9470,7 +9470,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
9470
9470
  </div>
9471
9471
  `}render(){return I`
9472
9472
  ${i4(this.history,(a)=>a.id,(a)=>this.renderHistoryPill(a))}
9473
- `}}d([z({type:Array})],x5.prototype,"history",void 0),d([z({type:String})],x5.prototype,"gameType",void 0),d([z({type:Boolean})],x5.prototype,"showMultiplierSuffix",void 0),d([E()],x5.prototype,"animatingInIds",void 0),x5=d([D("origami-history-pills")],x5);class y5 extends Y{constructor(){super(...arguments);this.selectedValue=50;this.diceDirection="ABOVE";this.isPlaying=!1;this.showDice=!0;this.isWin=!0;this.edge=2;this.resultValue=null;this.history=[];this.isDesktop=!1}static styles=[X,H9];render(){let a=h1.getMaxWinChance(this.edge);if(this.isDesktop)return I`
9473
+ `}}d([z({type:Array})],x5.prototype,"history",void 0),d([z({type:String})],x5.prototype,"gameType",void 0),d([z({type:Boolean})],x5.prototype,"showMultiplierSuffix",void 0),d([E()],x5.prototype,"animatingInIds",void 0),x5=d([D("origami-history-pills")],x5);class y5 extends Y{constructor(){super(...arguments);this.selectedValue=50;this.diceDirection="ABOVE";this.isPlaying=!1;this.showDice=!0;this.isWin=!0;this.edge=2;this.resultValue=null;this.history=[];this.isDesktop=!1}static styles=[X,H9];render(){let a=o1.getMaxWinChance(this.edge);if(this.isDesktop)return I`
9474
9474
  <origami-history-pills
9475
9475
  data-is-desktop=${this.isDesktop}
9476
9476
  .gameType=${"DICE"}
@@ -9521,7 +9521,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
9521
9521
  .isRollLower=${this.diceDirection==="BELOW"}
9522
9522
  ></origami-dice-slider>
9523
9523
  </div>
9524
- `}}d([z({type:Number})],y5.prototype,"selectedValue",void 0),d([z({type:String})],y5.prototype,"diceDirection",void 0),d([z({type:Boolean})],y5.prototype,"isPlaying",void 0),d([z({type:Boolean})],y5.prototype,"showDice",void 0),d([z({type:Boolean})],y5.prototype,"isWin",void 0),d([z({type:Number})],y5.prototype,"edge",void 0),d([z({type:Number})],y5.prototype,"resultValue",void 0),d([z({type:Array})],y5.prototype,"history",void 0),d([z({type:Boolean})],y5.prototype,"isDesktop",void 0),y5=d([D("origami-dice-content")],y5);function V1(a){let i=document.documentElement.clientWidth,e=document.documentElement.clientHeight,l=!(i/e>1.7777777777777777)?`height: ${e/a.scale}px;`:`width: ${i/a.scale}px;`;if(a.mainWidth<768)l="";return l}var Q1=(a)=>{if(a===1)return"Draw";if(a>1)return"Win";return"Loss"};function o1(a){return new Promise((i)=>setTimeout(i,a))}var u3=(a,i,e,r,l)=>{let n=a==="HORRORGAMI"?e:a==="JOLLYGAMI"?r:null;if(!n||Math.random()>=l)return i;return n};class y1 extends Y{constructor(){super(...arguments);this.manualOrAuto="Manual";this.hasPendingBet=!1;this.autobetInProgress=!1;this.autobetStopping=!1}static soundsToPreload=[];static styles=[X];onBetAmountChange=(a,i)=>{};gameConsumer=new I1(this,{context:U,subscribe:!0});get gameData(){return this.gameConsumer.value??F1}get isDemoMode(){return!this.gameData.authToken||!this.gameData.baseUrl}get isToggleDisabled(){return this.autobetInProgress||this.hasPendingBet}get areInputsDisabled(){return this.autobetInProgress||this.hasPendingBet}getDelay(a){return this.gameData.instantBetEnabled?Math.min(a/10,20):a}getAutobetDelay(){return 300}async forceUIUpdate(){this.requestUpdate(),await this.updateComplete}async executeInstantOrAnimated(a,i){if(this.gameData.instantBetEnabled){let e=await a();return await this.forceUIUpdate(),e}else return await i()}async ensureMinimumDisplayTime(a=!1,i=500,e=500){if(!this.gameData.instantBetEnabled)await this.forceUIUpdate(),await o1(a?i:e)}disconnectedCallback(){if(super.disconnectedCallback(),this.autobetInProgress)this.autobetStopping=!0,this.autobetInProgress=!1,this.hasPendingBet=!1}async toggleAutobet(a){if(this.autobetInProgress){this.autobetStopping=!0,this.gameData.soundController?.play("bet").catch((n)=>console.error(n));return}let i=a.detail;this.autobetStopping=!1,this.autobetInProgress=!0;let e=this.gameData.betAmount??"0",r=K(0),l=e;try{this.hasPendingBet=!0;let n=!0;while(n&&!this.autobetStopping){let t=await this.executeAutobet(i,l);if(t.hasError){if(t.errorMessage)this.emit("show-alert",{detail:{type:"error",message:t.errorMessage}});else this.emit("show-alert",{detail:{type:"error",message:S("alerts.gameError",this.gameData.language)}});n=!1;continue}r=r.plus(t.pnl);let h=l;l=this.adjustBetAmount(i,t.gameOutcome,e,l);let o=!K(l).eq(h);if(this.gameData.updateBetAmount(K(l)),!this.isPnLWithinLimits(i,r)){n=!1;continue}if(n&&o)this.onBetAmountChange(h,l);if(this.gameData.autobetNumberOfBets===0){n=!0;continue}this.gameData.updateAutobetNumberOfBets(this.gameData.autobetNumberOfBets-1),n=g1(this.gameData.autobetNumberOfBets)&&this.gameData.autobetNumberOfBets>0}}catch(n){console.error("Error occurred in toggle autobet",n),this.emit("show-alert",{detail:{type:"error",message:S("alerts.gameError",this.gameData.language)}})}finally{this.autobetInProgress=!1,this.hasPendingBet=!1,this.autobetStopping=!1}}adjustBetAmount(a,i,e,r){if(i==="Draw")return r;if(a.onWinStrategy==="Reset"&&i==="Win"||a.onLossStrategy==="Reset"&&i==="Loss")return e;let l=i==="Win"?a.onWinPercentage:a.onLossPercentage,n=K(l).div(100).plus(1);return K(r).mul(n).toFixed(2)}isPnLWithinLimits(a,i){let e=!K(a.stopOnLoss).eq(0)&&K(i).neg().gte(a.stopOnLoss),r=!K(a.stopOnProfit).eq(0)&&i.gte(a.stopOnProfit);return!e&&!r}updateHistoryWithBet(a){let i=this.gameData?.historyController;if(i&&a)i.addNewBet(a)}showError(a){let i=new CustomEvent("show-alert",{detail:{type:"error",message:a},bubbles:!1,composed:!0});this.renderRoot.querySelector("origami-game-layout")?.dispatchEvent(i)}playSeasonalWin(){let a=u3(this.gameData?.seasonTheme??"DEFAULT","win","horrorgami-win","christmas-win",0.1);this.gameData.soundController?.play(a)}}d([E()],y1.prototype,"manualOrAuto",void 0),d([E()],y1.prototype,"hasPendingBet",void 0),d([E()],y1.prototype,"autobetInProgress",void 0),d([E()],y1.prototype,"autobetStopping",void 0);var M9=A`
9524
+ `}}d([z({type:Number})],y5.prototype,"selectedValue",void 0),d([z({type:String})],y5.prototype,"diceDirection",void 0),d([z({type:Boolean})],y5.prototype,"isPlaying",void 0),d([z({type:Boolean})],y5.prototype,"showDice",void 0),d([z({type:Boolean})],y5.prototype,"isWin",void 0),d([z({type:Number})],y5.prototype,"edge",void 0),d([z({type:Number})],y5.prototype,"resultValue",void 0),d([z({type:Array})],y5.prototype,"history",void 0),d([z({type:Boolean})],y5.prototype,"isDesktop",void 0),y5=d([D("origami-dice-content")],y5);function V1(a){let i=document.documentElement.clientWidth,e=document.documentElement.clientHeight,l=!(i/e>1.7777777777777777)?`height: ${e/a.scale}px;`:`width: ${i/a.scale}px;`;if(a.mainWidth<768)l="";return l}var Q1=(a)=>{if(a===1)return"Draw";if(a>1)return"Win";return"Loss"};function h1(a){return new Promise((i)=>setTimeout(i,a))}var u3=(a,i,e,r,l)=>{let n=a==="HORRORGAMI"?e:a==="JOLLYGAMI"?r:null;if(!n||Math.random()>=l)return i;return n};class y1 extends Y{constructor(){super(...arguments);this.manualOrAuto="Manual";this.hasPendingBet=!1;this.autobetInProgress=!1;this.autobetStopping=!1}static soundsToPreload=[];static styles=[X];onBetAmountChange=(a,i)=>{};gameConsumer=new I1(this,{context:U,subscribe:!0});get gameData(){return this.gameConsumer.value??F1}get isDemoMode(){return!this.gameData.authToken||!this.gameData.baseUrl}get isToggleDisabled(){return this.autobetInProgress||this.hasPendingBet}get areInputsDisabled(){return this.autobetInProgress||this.hasPendingBet}getDelay(a){return this.gameData.instantBetEnabled?Math.min(a/10,20):a}getAutobetDelay(){return 300}async forceUIUpdate(){this.requestUpdate(),await this.updateComplete}async executeInstantOrAnimated(a,i){if(this.gameData.instantBetEnabled){let e=await a();return await this.forceUIUpdate(),e}else return await i()}async ensureMinimumDisplayTime(a=!1,i=500,e=500){if(!this.gameData.instantBetEnabled)await this.forceUIUpdate(),await h1(a?i:e)}disconnectedCallback(){if(super.disconnectedCallback(),this.autobetInProgress)this.autobetStopping=!0,this.autobetInProgress=!1,this.hasPendingBet=!1}async toggleAutobet(a){if(this.autobetInProgress){this.autobetStopping=!0,this.gameData.soundController?.play("bet").catch((n)=>console.error(n));return}let i=a.detail;this.autobetStopping=!1,this.autobetInProgress=!0;let e=this.gameData.betAmount??"0",r=K(0),l=e;try{this.hasPendingBet=!0;let n=!0;while(n&&!this.autobetStopping){let t=await this.executeAutobet(i,l);if(t.hasError){if(t.errorMessage)this.emit("show-alert",{detail:{type:"error",message:t.errorMessage}});else this.emit("show-alert",{detail:{type:"error",message:S("alerts.gameError",this.gameData.language)}});n=!1;continue}r=r.plus(t.pnl);let h=l;l=this.adjustBetAmount(i,t.gameOutcome,e,l);let o=!K(l).eq(h);if(this.gameData.updateBetAmount(K(l)),!this.isPnLWithinLimits(i,r)){n=!1;continue}if(n&&o)this.onBetAmountChange(h,l);if(this.gameData.autobetNumberOfBets===0){n=!0;continue}this.gameData.updateAutobetNumberOfBets(this.gameData.autobetNumberOfBets-1),n=g1(this.gameData.autobetNumberOfBets)&&this.gameData.autobetNumberOfBets>0}}catch(n){console.error("Error occurred in toggle autobet",n),this.emit("show-alert",{detail:{type:"error",message:S("alerts.gameError",this.gameData.language)}})}finally{this.autobetInProgress=!1,this.hasPendingBet=!1,this.autobetStopping=!1}}adjustBetAmount(a,i,e,r){if(i==="Draw")return r;if(a.onWinStrategy==="Reset"&&i==="Win"||a.onLossStrategy==="Reset"&&i==="Loss")return e;let l=i==="Win"?a.onWinPercentage:a.onLossPercentage,n=K(l).div(100).plus(1);return K(r).mul(n).toFixed(2)}isPnLWithinLimits(a,i){let e=!K(a.stopOnLoss).eq(0)&&K(i).neg().gte(a.stopOnLoss),r=!K(a.stopOnProfit).eq(0)&&i.gte(a.stopOnProfit);return!e&&!r}updateHistoryWithBet(a){let i=this.gameData?.historyController;if(i&&a)i.addNewBet(a)}showError(a){let i=new CustomEvent("show-alert",{detail:{type:"error",message:a},bubbles:!1,composed:!0});this.renderRoot.querySelector("origami-game-layout")?.dispatchEvent(i)}playSeasonalWin(){let a=u3(this.gameData?.seasonTheme??"DEFAULT","win","horrorgami-win","christmas-win",0.1);this.gameData.soundController?.play(a)}}d([E()],y1.prototype,"manualOrAuto",void 0),d([E()],y1.prototype,"hasPendingBet",void 0),d([E()],y1.prototype,"autobetInProgress",void 0),d([E()],y1.prototype,"autobetStopping",void 0);var M9=A`
9525
9525
  :host {
9526
9526
  height: 100%;
9527
9527
  }
@@ -9531,11 +9531,11 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
9531
9531
  grid-template-columns: 1fr 1fr 1fr;
9532
9532
  gap: 8px;
9533
9533
  }
9534
- `;class e4{edge;constructor(a){this.edge=a}async startBet(a){let{amount:i,direction:e,selectedValue:r}=a,l=e4.getRandomValueInRange(0,1e4),n=0;if(l>r)if(e==="ABOVE")n=K(h1.getMultiplier(this.edge,r,e)).toNumber();else n=0;else if(e==="BELOW")n=K(h1.getMultiplier(this.edge,r,e)).toNumber();else n=0;let t=K(i).mul(n).toString(),h={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",gameId:"dice",currency:s1,amount:i,payout:t,afterBalance:"1000",multiplier:n.toString(),tenantUserId:"mock-user",clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{DICE:{direction:e,selectedValue:r}},type:"START_BET",actionIndex:0,betAmount:i,payoutAmount:"0"},{id:crypto.randomUUID(),data:{DICE:{result:[l]}},type:"END_BET",actionIndex:1,betAmount:"0",payoutAmount:t}]};return await o1(250),{success:!0,data:h}}static getRandomValueInRange(a,i){return Math.floor(Math.random()*(i-a+1))+a}}class r4 extends y1{static styles=[...y1.styles,M9];get isToggleDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get areInputsDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}getManualButton(){return this._diceManualEl?.shadowRoot?.querySelector("origami-button")??null}getAutobetButton(){return this._diceAutoEl?.shadowRoot?.querySelector("origami-generic-autobet")?.shadowRoot?.querySelector(".bet-btn")??null}isSpacebarDisabled=()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;if(this.manualOrAuto==="Manual")return this.getManualButton()?.disabled??!0;return this.getAutobetButton()?.disabled??!0};handleSpacebar=()=>{if(this.isSpacebarDisabled())return;if(this.manualOrAuto==="Manual")this.dicePlay();else this.getAutobetButton()?.click()};diceRollOverToggle=()=>{this.diceDirection=this.diceDirection==="ABOVE"?"BELOW":"ABOVE",this.selectedValue=h1.getSelectedValueFromRollOver(this.selectedValue)};constructor(){super();this.diceDirection="ABOVE";this.selectedValue=5000;this.isManualPlaying=!1;this.showDice=!1;this.isWin=!0;this.resultValue=null;this.history=[];this._multiplierInputValid=!0;this._winChanceInputValid=!0;new j1(this,[{key:" ",callback:this.handleSpacebar.bind(this),options:{repeat:!0,repeatInterval:200,disabled:this.isSpacebarDisabled}},{key:"q",callback:this.diceRollOverToggle.bind(this),options:{disabled:()=>this.isManualPlaying||this.autobetInProgress||this.autobetStopping||!this.gameData?.hotkeysOpenEnabled}},{key:"w",callback:this.decreaseSlider.bind(this),options:{repeat:!0,repeatInterval:200,disabled:()=>this.isManualPlaying||this.autobetInProgress||this.autobetStopping||!this.gameData?.hotkeysOpenEnabled}},{key:"e",callback:this.increaseSlider.bind(this),options:{repeat:!0,repeatInterval:200,disabled:()=>this.isManualPlaying||this.autobetInProgress||this.autobetStopping||!this.gameData?.hotkeysOpenEnabled}}])}decreaseSlider(){let a=Math.max(5,this.selectedValue-100);if(a!==this.selectedValue)this.selectedValue=a,this.gameData?.soundController?.play("dice-tick"),this.gameData?.hapticController?.lightClick()}increaseSlider(){let a=Math.min(9995,this.selectedValue+100);if(a!==this.selectedValue)this.selectedValue=a,this.gameData?.soundController?.play("dice-tick"),this.gameData?.hapticController?.lightClick()}get diceApi(){return this.isDemoMode?new e4(this.gameData.edge):new h1(this.gameData.authToken,this.gameData.baseUrl??"")}async dicePlay(){this.isManualPlaying=!0,this.showDice=!1,this.gameData?.soundController?.play("bet").catch((a)=>console.error(a));try{let a=await this.handleBetExecution(this.gameData.betAmount);if(!a.success)console.error(a.error)}catch(a){console.error("Error in dicePlay:",a)}finally{this.isManualPlaying=!1}}async handleBetExecution(a){if(!this.gameData.currency)throw new Error(S("alerts.gameError",this.gameData?.language||W));let i={language:this.gameData.language,amount:a,currency:this.gameData.currency,direction:this.diceDirection,selectedValue:this.selectedValue},e;if(this.isDemoMode&&K(this.gameData.balance).lt(i.amount))e={success:!1,error:S("alerts.insufficientBalance",this.gameData?.language||"en")};else e=await this.diceApi.startBet(i);if(e.success){if(!this.gameData.instantBetEnabled)this.gameData.soundController?.play("dice-roll").catch((o)=>{console.error("Failed to play sound:",o)});let r=this.isDemoMode?K(this.gameData.balance).minus(e.data.amount??0).plus(e.data.payout??0):K(e.data.afterBalance??0);this.gameData.updateBalance(r),this.showDice=!0;let{betActions:l}=e.data,n=l[l.length-1];if(!n)throw new Error("No action data received");let{result:t}=n.data.DICE,h=t[0];if(this.resultValue=h,!this.gameData.instantBetEnabled)this.gameData?.hapticController?.trigger([10,20,30,40,30,20,10]);if(this.isWin=this.diceDirection==="ABOVE"?h>this.selectedValue:h<this.selectedValue,this.isWin)setTimeout(()=>{this.playSeasonalWin()},300);this.addToHistory(h/100,this.isWin,e.data.id??""),this.updateHistoryWithBet(e.data)}else this.showError(e.error);return e}addToHistory(a,i,e){this.history=[...this.history,{multiplier:a,won:i,id:e}]}async executeAutobet(a,i){try{let e=await this.handleBetExecution(i);if(!e.success)return{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:e.error||S("alerts.gameError",this.gameData?.language||W)};let r=e.data;this.updateHistoryWithBet(r);let l=K(r.payout??0).minus(r.amount??0),n=Q1(Number(r.multiplier)),t=this.isWin;return await this.ensureMinimumDisplayTime(t,300,300),await o1(this.getAutobetDelay()),{pnl:l,gameOutcome:n,hasError:!1}}catch(e){return console.error("Error in executeAutobet:",e),{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:S("alerts.gameError",this.gameData?.language||W)}}}render(){let a=K(h1.getMultiplier(this.gameData.edge,this.selectedValue,this.diceDirection)).mul(this.gameData.betAmount).minus(this.gameData.betAmount).toFixed(4),i=h1.getMultiplier(this.gameData.edge,this.selectedValue,this.diceDirection),e=!this._multiplierInputValid||!this._winChanceInputValid||!h1.isValidMultiplier(this.gameData.edge,i.toString()),r=this.gameData.mainWidth>=768,l=V1(this.gameData);return I`
9534
+ `;class e4{edge;constructor(a){this.edge=a}async startBet(a){let{amount:i,direction:e,selectedValue:r}=a,l=e4.getRandomValueInRange(0,1e4),n=0;if(l>r)if(e==="ABOVE")n=K(o1.getMultiplier(this.edge,r,e)).toNumber();else n=0;else if(e==="BELOW")n=K(o1.getMultiplier(this.edge,r,e)).toNumber();else n=0;let t=K(i).mul(n).toString(),h={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",gameId:"dice",currency:s1,amount:i,payout:t,afterBalance:"1000",multiplier:n.toString(),tenantUserId:"mock-user",clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{DICE:{direction:e,selectedValue:r}},type:"START_BET",actionIndex:0,betAmount:i,payoutAmount:"0"},{id:crypto.randomUUID(),data:{DICE:{result:[l]}},type:"END_BET",actionIndex:1,betAmount:"0",payoutAmount:t}]};return await h1(250),{success:!0,data:h}}static getRandomValueInRange(a,i){return Math.floor(Math.random()*(i-a+1))+a}}class r4 extends y1{static styles=[...y1.styles,M9];get isToggleDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get areInputsDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}getManualButton(){return this._diceManualEl?.shadowRoot?.querySelector("origami-button")??null}getAutobetButton(){return this._diceAutoEl?.shadowRoot?.querySelector("origami-generic-autobet")?.shadowRoot?.querySelector(".bet-btn")??null}isSpacebarDisabled=()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;if(this.manualOrAuto==="Manual")return this.getManualButton()?.disabled??!0;return this.getAutobetButton()?.disabled??!0};handleSpacebar=()=>{if(this.isSpacebarDisabled())return;if(this.manualOrAuto==="Manual")this.dicePlay();else this.getAutobetButton()?.click()};diceRollOverToggle=()=>{this.diceDirection=this.diceDirection==="ABOVE"?"BELOW":"ABOVE",this.selectedValue=o1.getSelectedValueFromRollOver(this.selectedValue)};constructor(){super();this.diceDirection="ABOVE";this.selectedValue=5000;this.isManualPlaying=!1;this.showDice=!1;this.isWin=!0;this.resultValue=null;this.history=[];this._multiplierInputValid=!0;this._winChanceInputValid=!0;new j1(this,[{key:" ",callback:this.handleSpacebar.bind(this),options:{repeat:!0,repeatInterval:200,disabled:this.isSpacebarDisabled}},{key:"q",callback:this.diceRollOverToggle.bind(this),options:{disabled:()=>this.isManualPlaying||this.autobetInProgress||this.autobetStopping||!this.gameData?.hotkeysOpenEnabled}},{key:"w",callback:this.decreaseSlider.bind(this),options:{repeat:!0,repeatInterval:200,disabled:()=>this.isManualPlaying||this.autobetInProgress||this.autobetStopping||!this.gameData?.hotkeysOpenEnabled}},{key:"e",callback:this.increaseSlider.bind(this),options:{repeat:!0,repeatInterval:200,disabled:()=>this.isManualPlaying||this.autobetInProgress||this.autobetStopping||!this.gameData?.hotkeysOpenEnabled}}])}decreaseSlider(){let a=Math.max(5,this.selectedValue-100);if(a!==this.selectedValue)this.selectedValue=a,this.gameData?.soundController?.play("dice-tick"),this.gameData?.hapticController?.lightClick()}increaseSlider(){let a=Math.min(9995,this.selectedValue+100);if(a!==this.selectedValue)this.selectedValue=a,this.gameData?.soundController?.play("dice-tick"),this.gameData?.hapticController?.lightClick()}get diceApi(){return this.isDemoMode?new e4(this.gameData.edge):new o1(this.gameData.authToken,this.gameData.baseUrl??"")}async dicePlay(){this.isManualPlaying=!0,this.showDice=!1,this.gameData?.soundController?.play("bet").catch((a)=>console.error(a));try{let a=await this.handleBetExecution(this.gameData.betAmount);if(!a.success)console.error(a.error)}catch(a){console.error("Error in dicePlay:",a)}finally{this.isManualPlaying=!1}}async handleBetExecution(a){if(!this.gameData.currency)throw new Error(S("alerts.gameError",this.gameData?.language||W));let i={language:this.gameData.language,amount:a,currency:this.gameData.currency,direction:this.diceDirection,selectedValue:this.selectedValue},e;if(this.isDemoMode&&K(this.gameData.balance).lt(i.amount))e={success:!1,error:S("alerts.insufficientBalance",this.gameData?.language||"en")};else e=await this.diceApi.startBet(i);if(e.success){if(!this.gameData.instantBetEnabled)this.gameData.soundController?.play("dice-roll").catch((o)=>{console.error("Failed to play sound:",o)});let r=this.isDemoMode?K(this.gameData.balance).minus(e.data.amount??0).plus(e.data.payout??0):K(e.data.afterBalance??0);this.gameData.updateBalance(r),this.showDice=!0;let{betActions:l}=e.data,n=l[l.length-1];if(!n)throw new Error("No action data received");let{result:t}=n.data.DICE,h=t[0];if(this.resultValue=h,!this.gameData.instantBetEnabled)this.gameData?.hapticController?.trigger([10,20,30,40,30,20,10]);if(this.isWin=this.diceDirection==="ABOVE"?h>this.selectedValue:h<this.selectedValue,this.isWin)setTimeout(()=>{this.playSeasonalWin()},300);this.addToHistory(h/100,this.isWin,e.data.id??""),this.updateHistoryWithBet(e.data)}else this.showError(e.error);return e}addToHistory(a,i,e){this.history=[...this.history,{multiplier:a,won:i,id:e}]}async executeAutobet(a,i){try{let e=await this.handleBetExecution(i);if(!e.success)return{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:e.error||S("alerts.gameError",this.gameData?.language||W)};let r=e.data;this.updateHistoryWithBet(r);let l=K(r.payout??0).minus(r.amount??0),n=Q1(Number(r.multiplier)),t=this.isWin;return await this.ensureMinimumDisplayTime(t,300,300),await h1(this.getAutobetDelay()),{pnl:l,gameOutcome:n,hasError:!1}}catch(e){return console.error("Error in executeAutobet:",e),{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:S("alerts.gameError",this.gameData?.language||W)}}}render(){let a=K(o1.getMultiplier(this.gameData.edge,this.selectedValue,this.diceDirection)).mul(this.gameData.betAmount).minus(this.gameData.betAmount).toFixed(4),i=o1.getMultiplier(this.gameData.edge,this.selectedValue,this.diceDirection),e=!this._multiplierInputValid||!this._winChanceInputValid||!o1.isValidMultiplier(this.gameData.edge,i.toString()),r=this.gameData.mainWidth>=768,l=V1(this.gameData);return I`
9535
9535
  <origami-game-layout style=${l} .gameType=${"DICE"} data-is-desktop=${r}
9536
9536
  @dice-selected-value-change=${(n)=>{this.selectedValue=n.detail.selectedValue}}
9537
- @dice-multiplier-input-change=${(n)=>{this._multiplierInputValid=h1.isValidMultiplier(this.gameData.edge,n.detail.multiplier)}}
9538
- @dice-win-chance-input-change=${(n)=>{this._winChanceInputValid=h1.isValidWinChance(n.detail.winChance,this.gameData.edge)}}
9537
+ @dice-multiplier-input-change=${(n)=>{this._multiplierInputValid=o1.isValidMultiplier(this.gameData.edge,n.detail.multiplier)}}
9538
+ @dice-win-chance-input-change=${(n)=>{this._winChanceInputValid=o1.isValidWinChance(n.detail.winChance,this.gameData.edge)}}
9539
9539
  >
9540
9540
  <origami-game-sidebar
9541
9541
  data-is-desktop=${r}
@@ -10191,11 +10191,11 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
10191
10191
  .multipliersForSelectedTiles=${this.multipliersForSelectedTiles}
10192
10192
  ></origami-keno-content-bottom>
10193
10193
  </div>
10194
- `}}d([z({type:Array})],S5.prototype,"selectedTiles",void 0),d([z({type:Array})],S5.prototype,"resultTiles",void 0),d([z({type:Boolean})],S5.prototype,"isPlaying",void 0),d([z({type:Boolean})],S5.prototype,"gameOver",void 0),d([z({type:Number})],S5.prototype,"multipliersForSelectedTiles",void 0),d([z({type:Object})],S5.prototype,"payout",void 0),d([z({type:Boolean})],S5.prototype,"gameWinPopupShowing",void 0),d([z({type:Number})],S5.prototype,"multiplier",void 0),d([z({type:String})],S5.prototype,"risk",void 0),d([z({type:String})],S5.prototype,"betAmount",void 0),d([z({type:String})],S5.prototype,"betId",void 0),d([z({type:Boolean})],S5.prototype,"autoselectRunning",void 0),d([z({type:Boolean})],S5.prototype,"isDesktop",void 0),S5=d([D("origami-keno-content")],S5);var c3=10,q9=40;class O5{authToken;baseUrl;constructor(a,i){this.authToken=a,this.baseUrl=i+"/games/keno"}async startBet(a){let i=await fetch(`${this.baseUrl}/play`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Origami-Trace":K1()},body:JSON.stringify(a)}),e=await i.json();if(i.ok)return{success:!0,data:e};let r="alerts.gameError";switch(e.errorCode){case"INSUFFICIENT_BALANCE":r="alerts.insufficientBalance";break;case"LIMIT_REACHED":r="alerts.betLimitReached";break}return{success:!1,error:S(r,a.language)}}}var dl=10;class n4{edge;constructor(a){this.edge=a}async startBet(a){let{amount:i,riskLevel:e,selectedNumbers:r}=a,l=n4.generateRandomTiles(dl),n=this.calculateMultiplier(r,l,e),t=K(i).mul(n).toFixed(4),o={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",gameId:"KENO",currency:a.currency,amount:i,payout:t,afterBalance:"1000",multiplier:n.toString(),tenantUserId:"mock-user",clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{KENO:{selectedNumbers:r,riskLevel:e}},type:"START_BET",actionIndex:0,betAmount:i,payoutAmount:null},{id:crypto.randomUUID(),data:{KENO:{result:l}},type:"END_BET",actionIndex:1,betAmount:null,payoutAmount:t}]};return await o1(250),{success:!0,data:o}}static generateRandomTiles(a,i=[]){let e=Array.from({length:q9},(r,l)=>l).filter((r)=>!i.includes(r));return[...e].sort(()=>0.5-Math.random()).slice(0,Math.min(a,e.length))}calculateMultiplier(a,i,e){let r=a.filter((h)=>i.includes(h)).length,l=a.length,n=h2.configs(this.edge)[l-1].payout;if(!n)return 0;let t=n[e];if(!t||r>=t.length)return 0;return t[r]||0}}var T9=A`
10194
+ `}}d([z({type:Array})],S5.prototype,"selectedTiles",void 0),d([z({type:Array})],S5.prototype,"resultTiles",void 0),d([z({type:Boolean})],S5.prototype,"isPlaying",void 0),d([z({type:Boolean})],S5.prototype,"gameOver",void 0),d([z({type:Number})],S5.prototype,"multipliersForSelectedTiles",void 0),d([z({type:Object})],S5.prototype,"payout",void 0),d([z({type:Boolean})],S5.prototype,"gameWinPopupShowing",void 0),d([z({type:Number})],S5.prototype,"multiplier",void 0),d([z({type:String})],S5.prototype,"risk",void 0),d([z({type:String})],S5.prototype,"betAmount",void 0),d([z({type:String})],S5.prototype,"betId",void 0),d([z({type:Boolean})],S5.prototype,"autoselectRunning",void 0),d([z({type:Boolean})],S5.prototype,"isDesktop",void 0),S5=d([D("origami-keno-content")],S5);var c3=10,q9=40;class O5{authToken;baseUrl;constructor(a,i){this.authToken=a,this.baseUrl=i+"/games/keno"}async startBet(a){let i=await fetch(`${this.baseUrl}/play`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Origami-Trace":K1()},body:JSON.stringify(a)}),e=await i.json();if(i.ok)return{success:!0,data:e};let r="alerts.gameError";switch(e.errorCode){case"INSUFFICIENT_BALANCE":r="alerts.insufficientBalance";break;case"LIMIT_REACHED":r="alerts.betLimitReached";break}return{success:!1,error:S(r,a.language)}}}var dl=10;class n4{edge;constructor(a){this.edge=a}async startBet(a){let{amount:i,riskLevel:e,selectedNumbers:r}=a,l=n4.generateRandomTiles(dl),n=this.calculateMultiplier(r,l,e),t=K(i).mul(n).toFixed(4),o={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",gameId:"KENO",currency:a.currency,amount:i,payout:t,afterBalance:"1000",multiplier:n.toString(),tenantUserId:"mock-user",clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{KENO:{selectedNumbers:r,riskLevel:e}},type:"START_BET",actionIndex:0,betAmount:i,payoutAmount:null},{id:crypto.randomUUID(),data:{KENO:{result:l}},type:"END_BET",actionIndex:1,betAmount:null,payoutAmount:t}]};return await h1(250),{success:!0,data:o}}static generateRandomTiles(a,i=[]){let e=Array.from({length:q9},(r,l)=>l).filter((r)=>!i.includes(r));return[...e].sort(()=>0.5-Math.random()).slice(0,Math.min(a,e.length))}calculateMultiplier(a,i,e){let r=a.filter((h)=>i.includes(h)).length,l=a.length,n=h2.configs(this.edge)[l-1].payout;if(!n)return 0;let t=n[e];if(!t||r>=t.length)return 0;return t[r]||0}}var T9=A`
10195
10195
  :host {
10196
10196
  height: 100%;
10197
10197
  }
10198
- `;class t4 extends y1{static styles=[...y1.styles,T9];getDisplayMultiplier(a,i,e){let r=h2.validEdges.includes(this.gameData.edge)?this.gameData.edge:$1;return K(a).eq(0)?h2.calculateMultiplier(this.kenoRisk,this.selectedTiles,e,r).toNumber():i}get isToggleDisabled(){return this.autobetInProgress||this.isManualPlaying||this.autoselectRunning}get areInputsDisabled(){return this.autobetInProgress||this.isManualPlaying||this.autoselectRunning}get kenoApi(){return this.isDemoMode?new n4(this.gameData.edge):new O5(this.gameData.authToken,this.gameData.baseUrl)}_getGemPitchFromHits(a){let i=a/c3;if(i>=0.75)return 1.25;if(i>=0.5)return 1.16;if(i>=0.25)return 1.08;return 1}async kenoPlay(){if(this.gameWinPopupShowing=!1,this.selectedTiles.length===0){alert(S("games.keno.selectAtLeastOneTile",this.gameData.language));return}this.gameData.soundController?.play("bet").catch((a)=>console.error(a)),this.isManualPlaying=!0,this.resultTiles=[],this.gameOver=!1;try{let a=await this.handleBetExecution(this.gameData.betAmount,this.getDelay(150));if(!a.success){this.showError(a.error);return}this.betId=a.data.id}catch(a){console.error("Error in kenoPlay:",a)}finally{this.isManualPlaying=!1,this.gameOver=!0}}async handleBetExecution(a,i){if(!this.gameData.currency)throw new Error("Currency is not set");let e={language:this.gameData.language,amount:a,currency:this.gameData.currency,riskLevel:this.kenoRisk,selectedNumbers:this.selectedTiles},r;if(this.isDemoMode&&K(this.gameData.balance).lt(e.amount))r={success:!1,error:S("alerts.insufficientBalance",this.gameData?.language||"en")};else r=await this.kenoApi.startBet(e);if(r.success){let{betActions:l}=r.data,n=l[l.length-1]?.data.KENO;if(!n)throw new Error("No keno data found");if(this.multiplier=this.getDisplayMultiplier(this.gameData.betAmount,Number(r.data.multiplier),n.result),await this.executeInstantOrAnimated(async()=>{let h=n.result.some((c)=>this.selectedTiles.includes(c));if(!(this.multiplier>0))if(h){let c=n.result.filter((m)=>this.selectedTiles.includes(m)).length,u=this._getGemPitchFromHits(c);this.gameData.soundController?.play("keno-gem",void 0,u).catch((m)=>console.error(m))}else this.gameData.soundController?.play("secondary").catch((c)=>console.error(c));this.resultTiles=[...n.result]},async()=>{for(let h of n.result){if(this.selectedTiles.includes(h)){let o=[...this.resultTiles,h].filter((u)=>this.selectedTiles.includes(u)).length,c=this._getGemPitchFromHits(o);this.gameData.soundController?.play("keno-gem",void 0,c).catch((u)=>console.error(u))}else this.gameData.soundController?.play("secondary").catch((o)=>console.error(o));this.resultTiles=[...this.resultTiles,h],await o1(i)}}),this.gameWinPopupShowing=this.multiplier>0,this.gameWinPopupShowing)this.playSeasonalWin();this.payout=K(r.data.payout??0),this.addToHistory(K(r.data.multiplier??0).toNumber(),this.gameWinPopupShowing,r.data.id??""),this.updateHistoryWithBet(r.data);let t=this.isDemoMode?K(this.gameData.balance).minus(r.data.amount??0).plus(r.data.payout??0):K(r.data.afterBalance??0);this.gameData.updateBalance(t)}return r}addToHistory(a,i,e){let r=[...this.history,{multiplier:a,won:i,id:e}];this.history=r.slice(-5)}async executeAutobet(a,i){try{if(!this.gameData.currency)throw new Error("Currency is not set");if(this.resultTiles=[],this.gameOver=!1,this.gameWinPopupShowing=!1,this.gameData.instantBetEnabled)await this.forceUIUpdate();if(this.selectedTiles.length===0)return{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:S("games.keno.selectTileToAutobet",this.gameData.language||W)};let e={language:this.gameData.language,amount:i,currency:this.gameData.currency,riskLevel:this.kenoRisk,selectedNumbers:this.selectedTiles},r=await this.kenoApi.startBet(e);if(!r.success)return this.showError(r.error),{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:r.error||S("alerts.errorProcessingBet",this.gameData.language||W)};let l=r.data,n=K(l.payout??0).minus(l.amount??0),t=Q1(Number(l.multiplier)),h=l.betActions,o=h[h.length-1]?.data.KENO;if(!o)throw new Error("No keno data found");let{result:c}=o;if(this.multiplier=this.getDisplayMultiplier(i,Number(l.multiplier),c),await this.executeInstantOrAnimated(async()=>{let m=c.some((f)=>this.selectedTiles.includes(f));if(!(this.multiplier>0))if(m){let f=c.filter((w)=>this.selectedTiles.includes(w)).length,k=this._getGemPitchFromHits(f);this.gameData.soundController?.play("keno-gem",void 0,k).catch((w)=>console.error(w))}else this.gameData.soundController?.play("secondary").catch((f)=>console.error(f));this.resultTiles=[...c]},async()=>{for(let m of c){if(this.selectedTiles.includes(m)){let s=[...this.resultTiles,m].filter((k)=>this.selectedTiles.includes(k)).length,f=this._getGemPitchFromHits(s);this.gameData.soundController?.play("keno-gem",void 0,f).catch((k)=>console.error(k))}else this.gameData.soundController?.play("secondary").catch((s)=>console.error(s));this.resultTiles=[...this.resultTiles,m],await o1(this.getDelay(150))}}),this.gameWinPopupShowing=this.multiplier>0,this.gameWinPopupShowing)this.playSeasonalWin();this.payout=K(l.payout??0),this.addToHistory(Number(l.multiplier??0),this.gameWinPopupShowing,l.id??""),this.updateHistoryWithBet(l),await this.ensureMinimumDisplayTime(this.gameWinPopupShowing,300,300),await o1(this.getAutobetDelay()),this.gameWinPopupShowing=!1;let u=this.isDemoMode?K(this.gameData.balance).minus(r.data.amount??0).plus(r.data.payout??0):K(r.data.afterBalance??0);return this.gameData.updateBalance(u),{pnl:n,gameOutcome:t,hasError:!1}}catch(e){return console.error("Error in executeAutobet:",e),{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:S("alerts.gameError",this.gameData.language||W)}}finally{this.gameOver=!0}}handleTileClick=(a)=>{if(this.gameOver)this.newGame();if(this.autoselectRunning)return;if(this.gameData.soundController?.play("click").catch((e)=>console.error(e)),this.selectedTiles.includes(a.detail.tile))this.selectedTiles=this.selectedTiles.filter((e)=>e!==a.detail.tile);else if(this.selectedTiles.length<c3)this.selectedTiles=[...this.selectedTiles,a.detail.tile]};handleRiskChange=(a)=>{this.kenoRisk=a.detail.value};autoPick=async()=>{if(this.isManualPlaying||this.autoselectRunning)return;if(this.autoselectRunning=!0,this.hadTilesBeforeAutopick=this.selectedTiles.length>0,this.resultTiles=[],this.gameWinPopupShowing=!1,this.selectedTiles.length>=c3)this.selectedTiles=[];let a=c3-this.selectedTiles.length;if(a<=0)return;let e=Array.from({length:40},(n,t)=>t).filter((n)=>!this.selectedTiles.includes(n));if(e.length===0)return;let l=[...e].sort(()=>0.5-Math.random()).slice(0,a);for(let n of l)this.gameData.soundController?.play("click").catch((t)=>console.error(t)),this.gameData.hapticController?.lightClick(),this.selectedTiles=[...this.selectedTiles,n],await o1(150);this.autoselectRunning=!1,this.hadTilesBeforeAutopick=!1};clearTable=()=>{if(this.isManualPlaying||this.autoselectRunning)return;this.gameData.soundController?.play("keno-clear").catch((a)=>console.error(a)),this.gameWinPopupShowing=!1,this.selectedTiles=[],this.resultTiles=[],this.payout=null};newGame=()=>{this.gameWinPopupShowing=!1,this.resultTiles=[],this.payout=null};render(){let a=this.autoselectRunning?10:this.selectedTiles.length,i=this.selectedTiles.length>0||this.autoselectRunning,e=this.gameData.mainWidth>=768,r=h2.validEdges.includes(this.gameData.edge)?this.gameData.edge:$1,l=h2.configs(r).find((t)=>t.tiles===this.selectedTiles.length)?.payout[this.kenoRisk][this.selectedTiles.length]??1,n=V1(this.gameData);return I`
10198
+ `;class t4 extends y1{static styles=[...y1.styles,T9];getDisplayMultiplier(a,i,e){let r=h2.validEdges.includes(this.gameData.edge)?this.gameData.edge:$1;return K(a).eq(0)?h2.calculateMultiplier(this.kenoRisk,this.selectedTiles,e,r).toNumber():i}get isToggleDisabled(){return this.autobetInProgress||this.isManualPlaying||this.autoselectRunning}get areInputsDisabled(){return this.autobetInProgress||this.isManualPlaying||this.autoselectRunning}get kenoApi(){return this.isDemoMode?new n4(this.gameData.edge):new O5(this.gameData.authToken,this.gameData.baseUrl)}_getGemPitchFromHits(a){let i=a/c3;if(i>=0.75)return 1.25;if(i>=0.5)return 1.16;if(i>=0.25)return 1.08;return 1}async kenoPlay(){if(this.gameWinPopupShowing=!1,this.selectedTiles.length===0){alert(S("games.keno.selectAtLeastOneTile",this.gameData.language));return}this.gameData.soundController?.play("bet").catch((a)=>console.error(a)),this.isManualPlaying=!0,this.resultTiles=[],this.gameOver=!1;try{let a=await this.handleBetExecution(this.gameData.betAmount,this.getDelay(150));if(!a.success){this.showError(a.error);return}this.betId=a.data.id}catch(a){console.error("Error in kenoPlay:",a)}finally{this.isManualPlaying=!1,this.gameOver=!0}}async handleBetExecution(a,i){if(!this.gameData.currency)throw new Error("Currency is not set");let e={language:this.gameData.language,amount:a,currency:this.gameData.currency,riskLevel:this.kenoRisk,selectedNumbers:this.selectedTiles},r;if(this.isDemoMode&&K(this.gameData.balance).lt(e.amount))r={success:!1,error:S("alerts.insufficientBalance",this.gameData?.language||"en")};else r=await this.kenoApi.startBet(e);if(r.success){let{betActions:l}=r.data,n=l[l.length-1]?.data.KENO;if(!n)throw new Error("No keno data found");if(this.multiplier=this.getDisplayMultiplier(this.gameData.betAmount,Number(r.data.multiplier),n.result),await this.executeInstantOrAnimated(async()=>{let h=n.result.some((c)=>this.selectedTiles.includes(c));if(!(this.multiplier>0))if(h){let c=n.result.filter((m)=>this.selectedTiles.includes(m)).length,u=this._getGemPitchFromHits(c);this.gameData.soundController?.play("keno-gem",void 0,u).catch((m)=>console.error(m))}else this.gameData.soundController?.play("secondary").catch((c)=>console.error(c));this.resultTiles=[...n.result]},async()=>{for(let h of n.result){if(this.selectedTiles.includes(h)){let o=[...this.resultTiles,h].filter((u)=>this.selectedTiles.includes(u)).length,c=this._getGemPitchFromHits(o);this.gameData.soundController?.play("keno-gem",void 0,c).catch((u)=>console.error(u))}else this.gameData.soundController?.play("secondary").catch((o)=>console.error(o));this.resultTiles=[...this.resultTiles,h],await h1(i)}}),this.gameWinPopupShowing=this.multiplier>0,this.gameWinPopupShowing)this.playSeasonalWin();this.payout=K(r.data.payout??0),this.addToHistory(K(r.data.multiplier??0).toNumber(),this.gameWinPopupShowing,r.data.id??""),this.updateHistoryWithBet(r.data);let t=this.isDemoMode?K(this.gameData.balance).minus(r.data.amount??0).plus(r.data.payout??0):K(r.data.afterBalance??0);this.gameData.updateBalance(t)}return r}addToHistory(a,i,e){let r=[...this.history,{multiplier:a,won:i,id:e}];this.history=r.slice(-5)}async executeAutobet(a,i){try{if(!this.gameData.currency)throw new Error("Currency is not set");if(this.resultTiles=[],this.gameOver=!1,this.gameWinPopupShowing=!1,this.gameData.instantBetEnabled)await this.forceUIUpdate();if(this.selectedTiles.length===0)return{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:S("games.keno.selectTileToAutobet",this.gameData.language||W)};let e={language:this.gameData.language,amount:i,currency:this.gameData.currency,riskLevel:this.kenoRisk,selectedNumbers:this.selectedTiles},r=await this.kenoApi.startBet(e);if(!r.success)return this.showError(r.error),{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:r.error||S("alerts.errorProcessingBet",this.gameData.language||W)};let l=r.data,n=K(l.payout??0).minus(l.amount??0),t=Q1(Number(l.multiplier)),h=l.betActions,o=h[h.length-1]?.data.KENO;if(!o)throw new Error("No keno data found");let{result:c}=o;if(this.multiplier=this.getDisplayMultiplier(i,Number(l.multiplier),c),await this.executeInstantOrAnimated(async()=>{let m=c.some((f)=>this.selectedTiles.includes(f));if(!(this.multiplier>0))if(m){let f=c.filter((w)=>this.selectedTiles.includes(w)).length,k=this._getGemPitchFromHits(f);this.gameData.soundController?.play("keno-gem",void 0,k).catch((w)=>console.error(w))}else this.gameData.soundController?.play("secondary").catch((f)=>console.error(f));this.resultTiles=[...c]},async()=>{for(let m of c){if(this.selectedTiles.includes(m)){let s=[...this.resultTiles,m].filter((k)=>this.selectedTiles.includes(k)).length,f=this._getGemPitchFromHits(s);this.gameData.soundController?.play("keno-gem",void 0,f).catch((k)=>console.error(k))}else this.gameData.soundController?.play("secondary").catch((s)=>console.error(s));this.resultTiles=[...this.resultTiles,m],await h1(this.getDelay(150))}}),this.gameWinPopupShowing=this.multiplier>0,this.gameWinPopupShowing)this.playSeasonalWin();this.payout=K(l.payout??0),this.addToHistory(Number(l.multiplier??0),this.gameWinPopupShowing,l.id??""),this.updateHistoryWithBet(l),await this.ensureMinimumDisplayTime(this.gameWinPopupShowing,300,300),await h1(this.getAutobetDelay()),this.gameWinPopupShowing=!1;let u=this.isDemoMode?K(this.gameData.balance).minus(r.data.amount??0).plus(r.data.payout??0):K(r.data.afterBalance??0);return this.gameData.updateBalance(u),{pnl:n,gameOutcome:t,hasError:!1}}catch(e){return console.error("Error in executeAutobet:",e),{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:S("alerts.gameError",this.gameData.language||W)}}finally{this.gameOver=!0}}handleTileClick=(a)=>{if(this.gameOver)this.newGame();if(this.autoselectRunning)return;if(this.gameData.soundController?.play("click").catch((e)=>console.error(e)),this.selectedTiles.includes(a.detail.tile))this.selectedTiles=this.selectedTiles.filter((e)=>e!==a.detail.tile);else if(this.selectedTiles.length<c3)this.selectedTiles=[...this.selectedTiles,a.detail.tile]};handleRiskChange=(a)=>{this.kenoRisk=a.detail.value};autoPick=async()=>{if(this.isManualPlaying||this.autoselectRunning)return;if(this.autoselectRunning=!0,this.hadTilesBeforeAutopick=this.selectedTiles.length>0,this.resultTiles=[],this.gameWinPopupShowing=!1,this.selectedTiles.length>=c3)this.selectedTiles=[];let a=c3-this.selectedTiles.length;if(a<=0)return;let e=Array.from({length:40},(n,t)=>t).filter((n)=>!this.selectedTiles.includes(n));if(e.length===0)return;let l=[...e].sort(()=>0.5-Math.random()).slice(0,a);for(let n of l)this.gameData.soundController?.play("click").catch((t)=>console.error(t)),this.gameData.hapticController?.lightClick(),this.selectedTiles=[...this.selectedTiles,n],await h1(150);this.autoselectRunning=!1,this.hadTilesBeforeAutopick=!1};clearTable=()=>{if(this.isManualPlaying||this.autoselectRunning)return;this.gameData.soundController?.play("keno-clear").catch((a)=>console.error(a)),this.gameWinPopupShowing=!1,this.selectedTiles=[],this.resultTiles=[],this.payout=null};newGame=()=>{this.gameWinPopupShowing=!1,this.resultTiles=[],this.payout=null};render(){let a=this.autoselectRunning?10:this.selectedTiles.length,i=this.selectedTiles.length>0||this.autoselectRunning,e=this.gameData.mainWidth>=768,r=h2.validEdges.includes(this.gameData.edge)?this.gameData.edge:$1,l=h2.configs(r).find((t)=>t.tiles===this.selectedTiles.length)?.payout[this.kenoRisk][this.selectedTiles.length]??1,n=V1(this.gameData);return I`
10199
10199
  <origami-game-layout .gameType=${"KENO"} style=${n} data-is-desktop=${e}>
10200
10200
  <origami-game-sidebar
10201
10201
  data-is-desktop=${e}
@@ -10502,7 +10502,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
10502
10502
  style=${this._multiplierBgStyle}
10503
10503
  ></origami-limbo-multiplier>
10504
10504
  </div>
10505
- `}}d([z({type:Number})],j5.prototype,"targetMultiplier",void 0),d([z({type:Number})],j5.prototype,"betTargetMultiplier",void 0),d([z({type:Array})],j5.prototype,"history",void 0),d([z({type:Number})],j5.prototype,"resultMultiplier",void 0),d([z({type:Boolean})],j5.prototype,"isWin",void 0),d([z({type:String})],j5.prototype,"betId",void 0),d([z({type:Boolean})],j5.prototype,"isPlaying",void 0),d([z({type:Boolean})],j5.prototype,"isDesktop",void 0),d([z({type:Boolean})],j5.prototype,"disableSound",void 0),d([P({context:U,subscribe:!0})],j5.prototype,"gameData",void 0),j5=d([D("origami-limbo-content")],j5);class E5{edge;constructor(a){this.edge=a}async startBet(a){let{amount:i,targetMultiplier:e}=a,r=this.getRandomMultiplier(),l=e/100,n=K(r).gte(l),t=n?K(i).mul(l).toString():"0",h={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",gameId:"limbo",currency:s1,amount:i,payout:t,afterBalance:"1000",multiplier:n?e.toString():"0",tenantUserId:"mock-user",clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{LIMBO:{targetMultiplier:e,result:[K(r).toNumber()],randomMultiplier:r}},type:"END_BET",actionIndex:0,betAmount:i,payoutAmount:"0"},{id:crypto.randomUUID(),data:{LIMBO:{result:[K(r).toNumber()],randomMultiplier:r}},type:"END_BET",actionIndex:1,betAmount:"0",payoutAmount:t}]};return await o1(250),{success:!0,data:h}}getRandomMultiplier(){return K(Math.max(1,Math.min(+((1-this.edge/100)/Math.random()),1e6)).toFixed(2)).toString()}}var $9=A`
10505
+ `}}d([z({type:Number})],j5.prototype,"targetMultiplier",void 0),d([z({type:Number})],j5.prototype,"betTargetMultiplier",void 0),d([z({type:Array})],j5.prototype,"history",void 0),d([z({type:Number})],j5.prototype,"resultMultiplier",void 0),d([z({type:Boolean})],j5.prototype,"isWin",void 0),d([z({type:String})],j5.prototype,"betId",void 0),d([z({type:Boolean})],j5.prototype,"isPlaying",void 0),d([z({type:Boolean})],j5.prototype,"isDesktop",void 0),d([z({type:Boolean})],j5.prototype,"disableSound",void 0),d([P({context:U,subscribe:!0})],j5.prototype,"gameData",void 0),j5=d([D("origami-limbo-content")],j5);class E5{edge;constructor(a){this.edge=a}async startBet(a){let{amount:i,targetMultiplier:e}=a,r=this.getRandomMultiplier(),l=e/100,n=K(r).gte(l),t=n?K(i).mul(l).toString():"0",h={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",gameId:"limbo",currency:s1,amount:i,payout:t,afterBalance:"1000",multiplier:n?e.toString():"0",tenantUserId:"mock-user",clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{LIMBO:{targetMultiplier:e,result:[K(r).toNumber()],randomMultiplier:r}},type:"END_BET",actionIndex:0,betAmount:i,payoutAmount:"0"},{id:crypto.randomUUID(),data:{LIMBO:{result:[K(r).toNumber()],randomMultiplier:r}},type:"END_BET",actionIndex:1,betAmount:"0",payoutAmount:t}]};return await h1(250),{success:!0,data:h}}getRandomMultiplier(){return K(Math.max(1,Math.min(+((1-this.edge/100)/Math.random()),1e6)).toFixed(2)).toString()}}var $9=A`
10506
10506
  :host {
10507
10507
  height: 100%;
10508
10508
  }
@@ -10512,7 +10512,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
10512
10512
  grid-template-columns: 1fr 1fr;
10513
10513
  gap: 8px;
10514
10514
  }
10515
- `;var fl=100;class o4 extends y1{static styles=[...y1.styles,$9];get isToggleDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get areInputsDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get limboApi(){return this.isDemoMode?new E5(this.gameData.edge):new f1(this.gameData.authToken,this.gameData.baseUrl)}async limboPlay(){this.isManualPlaying=!0,this.gameData?.soundController?.play("bet");try{let a=await this.handleBetExecution(this.gameData?.betAmount??"0");if(!a.success){this.showError(a.error);return}let i=a.data.id;await new Promise((r)=>{let l=(n)=>{if(n.detail.betId===i)this.removeEventListener("limbo-multiplier-animation-end",l),r()};this.addEventListener("limbo-multiplier-animation-end",l)})}catch(a){console.error("Error in limboPlay:",a)}finally{this.isManualPlaying=!1}}async handleBetExecution(a){if(this.resultMultiplier=null,!this.gameData?.currency)throw new Error("Currency is not set");let i={language:this.gameData.language,amount:a,currency:this.gameData.currency,targetMultiplier:Number(K(this.targetMultiplier).mul(fl).toFixed(0))},e;if(this.isDemoMode&&K(this.gameData.balance).lt(i.amount))e={success:!1,error:S("alerts.insufficientBalance",this.gameData?.language||"en")};else e=await this.limboApi.startBet(i);if(e.success){let r=this.isDemoMode?K(this.gameData.balance).minus(e.data.amount??0).plus(e.data.payout??0):K(e.data.afterBalance??0);this.gameData.updateBalance(r);let{betActions:l,id:n}=e.data,t=l[l.length-1];if(!t)throw new Error("No action data received");let{randomMultiplier:h}=t.data.LIMBO;this.resultMultiplier=Number(h),this.betTargetMultiplier=this.targetMultiplier,this.isWin=this.targetMultiplier<=Number(h),this.betId=n,this.updateHistoryWithBet(e.data)}return e}isSpacebarDisabled=()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;if(this.manualOrAuto==="Manual")return this._limboManualEl?.shadowRoot?.querySelector("origami-button")?.disabled??!0;else return this._limboAutoEl?.shadowRoot?.querySelector("origami-generic-autobet")?.shadowRoot?.querySelector(".bet-btn")?.disabled??!0};handleSpacebar=()=>{if(this.isSpacebarDisabled())return;if(this.manualOrAuto==="Manual")this.limboPlay();else{let i=this._limboAutoEl?.shadowRoot?.querySelector("origami-generic-autobet")?.shadowRoot?.querySelector(".bet-btn");if(i instanceof HTMLElement)i.click()}};constructor(){super();this.targetMultiplier=2;this.resultMultiplier=null;this.isManualPlaying=!1;this.isWin=!1;this.history=[];this.betTargetMultiplier=2;this.betId="";this._multiplierInputValid=!0;this._winChanceInputValid=!0;new j1(this,[{key:" ",callback:this.handleSpacebar.bind(this),options:{repeat:!0,repeatInterval:200,disabled:this.isSpacebarDisabled}}])}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("limbo-multiplier-animation-end",null)}async executeAutobet(a,i){try{let e=await this.handleBetExecution(i);if(!e.success)return this.showError(e.error),{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:e.error||S("alerts.errorProcessingBet",this.gameData?.language||W)};let r=e.data.id;await new Promise((c)=>{let u=(m)=>{if(m.detail.betId===r)this.removeEventListener("limbo-multiplier-animation-end",u),c()};this.addEventListener("limbo-multiplier-animation-end",u)});let n=e.data,t=K(n.payout??0).minus(n.amount??0),h=Q1(Number(n.multiplier??0)),o=K(n.multiplier??0).gt(0);return await this.ensureMinimumDisplayTime(o,300,300),await o1(this.getAutobetDelay()),{pnl:t,gameOutcome:h,hasError:!1}}catch(e){return console.error("Error in executeAutobet:",e),{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:S("alerts.gameError",this.gameData?.language||W)}}}multiplierChange=(a)=>{let i=a.detail.multiplier;this.targetMultiplier=Number(K(i).toFixed(f1.multiplierPrecision))};calculateProfitOnWin(){return K(this.gameData.betAmount).mul(this.targetMultiplier).minus(this.gameData.betAmount).toFixed(4)}winChanceChange=(a)=>{let i=+a.detail.winChance;if(f1.isValidWinChance(a.detail.winChance,this.gameData.edge))this.targetMultiplier=+f1.calculateMultiplier(i,this.gameData.edge)};addToHistory(a,i,e){this.history=[...this.history.filter((r)=>r.id!==e),{multiplier:a,won:i,id:e}]}multiplierAnimationEnd=(a)=>{let{resultMultiplier:i,isWin:e,betId:r}=a.detail;if(e)this.playSeasonalWin();this.addToHistory(i,e,r),this.dispatchEvent(new CustomEvent("limbo-multiplier-animation-end",{detail:a.detail,bubbles:!0,composed:!0}))};render(){let a=this.calculateProfitOnWin(),i=!this._multiplierInputValid||!this._winChanceInputValid||!f1.isValidMultiplier(this.targetMultiplier.toString()),e=this.gameData?.mainWidth>=768,r=V1(this.gameData);return I`
10515
+ `;var fl=100;class o4 extends y1{static styles=[...y1.styles,$9];get isToggleDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get areInputsDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get limboApi(){return this.isDemoMode?new E5(this.gameData.edge):new f1(this.gameData.authToken,this.gameData.baseUrl)}async limboPlay(){this.isManualPlaying=!0,this.gameData?.soundController?.play("bet");try{let a=await this.handleBetExecution(this.gameData?.betAmount??"0");if(!a.success){this.showError(a.error);return}let i=a.data.id;await new Promise((r)=>{let l=(n)=>{if(n.detail.betId===i)this.removeEventListener("limbo-multiplier-animation-end",l),r()};this.addEventListener("limbo-multiplier-animation-end",l)})}catch(a){console.error("Error in limboPlay:",a)}finally{this.isManualPlaying=!1}}async handleBetExecution(a){if(this.resultMultiplier=null,!this.gameData?.currency)throw new Error("Currency is not set");let i={language:this.gameData.language,amount:a,currency:this.gameData.currency,targetMultiplier:Number(K(this.targetMultiplier).mul(fl).toFixed(0))},e;if(this.isDemoMode&&K(this.gameData.balance).lt(i.amount))e={success:!1,error:S("alerts.insufficientBalance",this.gameData?.language||"en")};else e=await this.limboApi.startBet(i);if(e.success){let r=this.isDemoMode?K(this.gameData.balance).minus(e.data.amount??0).plus(e.data.payout??0):K(e.data.afterBalance??0);this.gameData.updateBalance(r);let{betActions:l,id:n}=e.data,t=l[l.length-1];if(!t)throw new Error("No action data received");let{randomMultiplier:h}=t.data.LIMBO;this.resultMultiplier=Number(h),this.betTargetMultiplier=this.targetMultiplier,this.isWin=this.targetMultiplier<=Number(h),this.betId=n,this.updateHistoryWithBet(e.data)}return e}isSpacebarDisabled=()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;if(this.manualOrAuto==="Manual")return this._limboManualEl?.shadowRoot?.querySelector("origami-button")?.disabled??!0;else return this._limboAutoEl?.shadowRoot?.querySelector("origami-generic-autobet")?.shadowRoot?.querySelector(".bet-btn")?.disabled??!0};handleSpacebar=()=>{if(this.isSpacebarDisabled())return;if(this.manualOrAuto==="Manual")this.limboPlay();else{let i=this._limboAutoEl?.shadowRoot?.querySelector("origami-generic-autobet")?.shadowRoot?.querySelector(".bet-btn");if(i instanceof HTMLElement)i.click()}};constructor(){super();this.targetMultiplier=2;this.resultMultiplier=null;this.isManualPlaying=!1;this.isWin=!1;this.history=[];this.betTargetMultiplier=2;this.betId="";this._multiplierInputValid=!0;this._winChanceInputValid=!0;new j1(this,[{key:" ",callback:this.handleSpacebar.bind(this),options:{repeat:!0,repeatInterval:200,disabled:this.isSpacebarDisabled}}])}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("limbo-multiplier-animation-end",null)}async executeAutobet(a,i){try{let e=await this.handleBetExecution(i);if(!e.success)return this.showError(e.error),{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:e.error||S("alerts.errorProcessingBet",this.gameData?.language||W)};let r=e.data.id;await new Promise((c)=>{let u=(m)=>{if(m.detail.betId===r)this.removeEventListener("limbo-multiplier-animation-end",u),c()};this.addEventListener("limbo-multiplier-animation-end",u)});let n=e.data,t=K(n.payout??0).minus(n.amount??0),h=Q1(Number(n.multiplier??0)),o=K(n.multiplier??0).gt(0);return await this.ensureMinimumDisplayTime(o,300,300),await h1(this.getAutobetDelay()),{pnl:t,gameOutcome:h,hasError:!1}}catch(e){return console.error("Error in executeAutobet:",e),{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:S("alerts.gameError",this.gameData?.language||W)}}}multiplierChange=(a)=>{let i=a.detail.multiplier;this.targetMultiplier=Number(K(i).toFixed(f1.multiplierPrecision))};calculateProfitOnWin(){return K(this.gameData.betAmount).mul(this.targetMultiplier).minus(this.gameData.betAmount).toFixed(4)}winChanceChange=(a)=>{let i=+a.detail.winChance;if(f1.isValidWinChance(a.detail.winChance,this.gameData.edge))this.targetMultiplier=+f1.calculateMultiplier(i,this.gameData.edge)};addToHistory(a,i,e){this.history=[...this.history.filter((r)=>r.id!==e),{multiplier:a,won:i,id:e}]}multiplierAnimationEnd=(a)=>{let{resultMultiplier:i,isWin:e,betId:r}=a.detail;if(e)this.playSeasonalWin();this.addToHistory(i,e,r),this.dispatchEvent(new CustomEvent("limbo-multiplier-animation-end",{detail:a.detail,bubbles:!0,composed:!0}))};render(){let a=this.calculateProfitOnWin(),i=!this._multiplierInputValid||!this._winChanceInputValid||!f1.isValidMultiplier(this.targetMultiplier.toString()),e=this.gameData?.mainWidth>=768,r=V1(this.gameData);return I`
10516
10516
  <origami-game-layout style=${r} .gameType=${"LIMBO"} data-is-desktop=${e}
10517
10517
  @limbo-multiplier-change=${this.multiplierChange}
10518
10518
  @limbo-multiplier-input-change=${(l)=>{this._multiplierInputValid=f1.isValidMultiplier(l.detail.multiplier)}}
@@ -10571,7 +10571,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
10571
10571
  @limbo-multiplier-animation-end=${this.multiplierAnimationEnd}
10572
10572
  ></origami-limbo-content>
10573
10573
  </origami-game-layout>
10574
- `}}d([E()],o4.prototype,"targetMultiplier",void 0),d([E()],o4.prototype,"resultMultiplier",void 0),d([E()],o4.prototype,"isManualPlaying",void 0),d([E()],o4.prototype,"isWin",void 0),d([E()],o4.prototype,"history",void 0),d([E()],o4.prototype,"betTargetMultiplier",void 0),d([E()],o4.prototype,"betId",void 0),d([E()],o4.prototype,"_multiplierInputValid",void 0),d([E()],o4.prototype,"_winChanceInputValid",void 0),d([n1("origami-limbo-manual")],o4.prototype,"_limboManualEl",void 0),d([n1("origami-limbo-auto")],o4.prototype,"_limboAutoEl",void 0),o4=d([D("origami-limbo-game")],o4);class p1{edge;static activeBet=null;static minePositions=[];constructor(a){this.edge=a}async startManualBet(a){let i=crypto.randomUUID();p1.minePositions=p1.generateMinePositions(a.minesCount);let e=this.createMockBetResult(i,a.amount,a.minesCount,[],!1);return p1.activeBet=e,await o1(250),{success:!0,data:e}}async getActiveBet(){if(!p1.activeBet)return{success:!1,error:"No active bet"};return await o1(250),{success:!0,data:p1.activeBet}}async selectTile(a){if(!p1.activeBet)return{success:!1,error:"No active bet"};let i=p1.activeBet,r=[...G1.deriveSelectedTiles(i.betActions),...a.selectedTiles],n=i.betActions.find((o)=>o.type==="START_BET")?.data.MINES?.minesCount??0,t=a.selectedTiles.some((o)=>p1.minePositions.includes(o)),h=this.createMockBetResult(i.id,i.amount,n,r,!1,"INTERMEDIATE_NON_BET_ACTION");return p1.activeBet=t?null:h,await o1(250),{success:!0,data:h}}async cashout(){if(!p1.activeBet)return{success:!1,error:"No active bet"};let a=p1.activeBet,i=G1.deriveSelectedTiles(a.betActions),r=a.betActions.find((t)=>t.type==="START_BET")?.data.MINES?.minesCount??0,l=this.createMockBetResult(a.id,a.amount,r,i,!0),n=l.betActions[l.betActions.length-1];if(n&&n.type==="END_BET")n.payoutAmount=l.payout;return p1.activeBet=null,await o1(250),{success:!0,data:l}}async autobetPlay(a){let i=crypto.randomUUID(),e=a.minesCount??w0;p1.minePositions=p1.generateMinePositions(e);let r=a.selectedTiles.some((u)=>p1.minePositions.includes(u)),l=a.selectedTiles.filter((u)=>!p1.minePositions.includes(u)).length,n=K(0);if(l>0&&!r)if(e===0)n=K(0);else if(l===0)n=K(1);else{let u=Math.min(l2-l,e);n=T2.calculateMultiplierBN(l,u,this.edge)}let t=r?"0":K(a.amount).mul(n).toFixed(8),h=r?"0":n.toString(),o=[p1.createBetAction("START_BET",{minesCount:e,selectedTiles:a.selectedTiles,hasCashedOut:!0},0,a.amount,null),p1.createBetAction("END_BET",{result:p1.minePositions},1,null,t)],c={id:i,tenantId:"origami-casino",userId:"mock-user",tenantUserId:"mock-tenant-user",gameId:"MINES",currency:a.currency,amount:a.amount,payout:t,afterBalance:K(1000).plus(t).minus(a.amount).toFixed(8),multiplier:h,clientSeed:"mock-seed",randomValue:"bccc6bac05bf21a1de35b850f80abfd11407025b973e361f2d9c6ec7d51be44693dd4df4a04c201ebdbfb791d03d65e9414263dcca54772071ba0509fdfe82d0",proof:"4a24bc6e6e8194857d3e4f759781cea89827daf8bca1dd0eb8cfb887dc818b4c6527687647b9c5c89c4e72c8f587777bd9ae3fb6cbce88d3e3da726f95375bb8a6e3ed03194fbc4d1f22af95f1f7820a",nonce:Math.floor(Math.random()*1000),betActions:o};return await o1(250),{success:!0,data:c}}static getRandomValueInRange(a,i){return Math.floor(Math.random()*(i-a+1))+a}static generateMinePositions(a){let i=[];while(i.length<a){let e=p1.getRandomValueInRange(0,l2-1);if(!i.includes(e))i.push(e)}return i}static createBetAction(a,i,e,r=null,l=null){return{id:crypto.randomUUID(),data:{MINES:i},type:a,actionIndex:e,betAmount:r,payoutAmount:l}}createMockBetResult(a,i,e,r=[],l=!1,n){let t=p1.activeBet,h=t?.betActions||[],o=r.some((g)=>p1.minePositions.includes(g)),c=r.filter((g)=>!p1.minePositions.includes(g)).length,u=[...h],m=t?.nonce||Math.floor(Math.random()*1000),s=t?.randomValue||null,f=t?.proof||null;if(!t)u=[p1.createBetAction("START_BET",{minesCount:e,selectedTiles:[],hasCashedOut:!1},0,i,null)];else if(n==="INTERMEDIATE_NON_BET_ACTION"){if(u.push(p1.createBetAction("INTERMEDIATE_NON_BET_ACTION",{minesCount:e,selectedTiles:r,hasCashedOut:!1},u.length,null,null)),o)u.push(p1.createBetAction("END_BET",{result:p1.minePositions},u.length,null,"0"))}else if(l&&!o)u.push(p1.createBetAction("END_BET",{result:p1.minePositions},u.length,null,null));if(l||o)s="b90c047b9c51db60bcd82590c7e754f50c6f626e0a594f12535d7f345422f90063a8511ed7aec0e5a67d3f399229d64e2381624ee6994c7a2fc0532f4274f7a3",f="d026116a800d0e90d6f9b2c189de0e9c8f9afe292200c5d9392ff5fa0ce14e387bfe171dc8c755d75bdf01a37771b27eec056e69527d369e444c665b2264d6c1477612786302cfc48bee709733d65d0e";let k=K(0);if(c>0&&!o)if(e===0)k=K(0);else if(c===0)k=K(1);else{let g=Math.min(l2-c,e);k=T2.calculateMultiplierBN(c,g,this.edge)}let w=null,y=null,b=null;if(l||o)if(!o&&c>0)w=K(i).mul(k).toFixed(8),b=k.toString(),y=K(1000).plus(w).minus(i).toFixed(8);else w="0",b="0",y=K(1000).minus(i).toFixed(8);else if(!t)y=K(1000).minus(i).toFixed(8);return{id:a,tenantId:"origami-casino",userId:"mock-user",tenantUserId:"mock-tenant-user",gameId:"MINES",currency:s1,amount:i,payout:w,afterBalance:y,multiplier:b,clientSeed:"mock-seed",randomValue:s,proof:f,nonce:m,betActions:u}}}class L5 extends Y{constructor(){super(...arguments);this.isAuto=!1;this.autobetSelectedTiles=[];this.autobetInProgress=!1;this.minesState=null;this.showWinPopup=!1;this.hitBomb=!1;this.loadingTiles=[];this.isDesktop=!1}static styles=[X,A`
10574
+ `}}d([E()],o4.prototype,"targetMultiplier",void 0),d([E()],o4.prototype,"resultMultiplier",void 0),d([E()],o4.prototype,"isManualPlaying",void 0),d([E()],o4.prototype,"isWin",void 0),d([E()],o4.prototype,"history",void 0),d([E()],o4.prototype,"betTargetMultiplier",void 0),d([E()],o4.prototype,"betId",void 0),d([E()],o4.prototype,"_multiplierInputValid",void 0),d([E()],o4.prototype,"_winChanceInputValid",void 0),d([n1("origami-limbo-manual")],o4.prototype,"_limboManualEl",void 0),d([n1("origami-limbo-auto")],o4.prototype,"_limboAutoEl",void 0),o4=d([D("origami-limbo-game")],o4);class p1{edge;static activeBet=null;static minePositions=[];constructor(a){this.edge=a}async startManualBet(a){let i=crypto.randomUUID();p1.minePositions=p1.generateMinePositions(a.minesCount);let e=this.createMockBetResult(i,a.amount,a.minesCount,[],!1);return p1.activeBet=e,await h1(250),{success:!0,data:e}}async getActiveBet(){if(!p1.activeBet)return{success:!1,error:"No active bet"};return await h1(250),{success:!0,data:p1.activeBet}}async selectTile(a){if(!p1.activeBet)return{success:!1,error:"No active bet"};let i=p1.activeBet,r=[...G1.deriveSelectedTiles(i.betActions),...a.selectedTiles],n=i.betActions.find((o)=>o.type==="START_BET")?.data.MINES?.minesCount??0,t=a.selectedTiles.some((o)=>p1.minePositions.includes(o)),h=this.createMockBetResult(i.id,i.amount,n,r,!1,"INTERMEDIATE_NON_BET_ACTION");return p1.activeBet=t?null:h,await h1(250),{success:!0,data:h}}async cashout(){if(!p1.activeBet)return{success:!1,error:"No active bet"};let a=p1.activeBet,i=G1.deriveSelectedTiles(a.betActions),r=a.betActions.find((t)=>t.type==="START_BET")?.data.MINES?.minesCount??0,l=this.createMockBetResult(a.id,a.amount,r,i,!0),n=l.betActions[l.betActions.length-1];if(n&&n.type==="END_BET")n.payoutAmount=l.payout;return p1.activeBet=null,await h1(250),{success:!0,data:l}}async autobetPlay(a){let i=crypto.randomUUID(),e=a.minesCount??w0;p1.minePositions=p1.generateMinePositions(e);let r=a.selectedTiles.some((u)=>p1.minePositions.includes(u)),l=a.selectedTiles.filter((u)=>!p1.minePositions.includes(u)).length,n=K(0);if(l>0&&!r)if(e===0)n=K(0);else if(l===0)n=K(1);else{let u=Math.min(l2-l,e);n=T2.calculateMultiplierBN(l,u,this.edge)}let t=r?"0":K(a.amount).mul(n).toFixed(8),h=r?"0":n.toString(),o=[p1.createBetAction("START_BET",{minesCount:e,selectedTiles:a.selectedTiles,hasCashedOut:!0},0,a.amount,null),p1.createBetAction("END_BET",{result:p1.minePositions},1,null,t)],c={id:i,tenantId:"origami-casino",userId:"mock-user",tenantUserId:"mock-tenant-user",gameId:"MINES",currency:a.currency,amount:a.amount,payout:t,afterBalance:K(1000).plus(t).minus(a.amount).toFixed(8),multiplier:h,clientSeed:"mock-seed",randomValue:"bccc6bac05bf21a1de35b850f80abfd11407025b973e361f2d9c6ec7d51be44693dd4df4a04c201ebdbfb791d03d65e9414263dcca54772071ba0509fdfe82d0",proof:"4a24bc6e6e8194857d3e4f759781cea89827daf8bca1dd0eb8cfb887dc818b4c6527687647b9c5c89c4e72c8f587777bd9ae3fb6cbce88d3e3da726f95375bb8a6e3ed03194fbc4d1f22af95f1f7820a",nonce:Math.floor(Math.random()*1000),betActions:o};return await h1(250),{success:!0,data:c}}static getRandomValueInRange(a,i){return Math.floor(Math.random()*(i-a+1))+a}static generateMinePositions(a){let i=[];while(i.length<a){let e=p1.getRandomValueInRange(0,l2-1);if(!i.includes(e))i.push(e)}return i}static createBetAction(a,i,e,r=null,l=null){return{id:crypto.randomUUID(),data:{MINES:i},type:a,actionIndex:e,betAmount:r,payoutAmount:l}}createMockBetResult(a,i,e,r=[],l=!1,n){let t=p1.activeBet,h=t?.betActions||[],o=r.some((g)=>p1.minePositions.includes(g)),c=r.filter((g)=>!p1.minePositions.includes(g)).length,u=[...h],m=t?.nonce||Math.floor(Math.random()*1000),s=t?.randomValue||null,f=t?.proof||null;if(!t)u=[p1.createBetAction("START_BET",{minesCount:e,selectedTiles:[],hasCashedOut:!1},0,i,null)];else if(n==="INTERMEDIATE_NON_BET_ACTION"){if(u.push(p1.createBetAction("INTERMEDIATE_NON_BET_ACTION",{minesCount:e,selectedTiles:r,hasCashedOut:!1},u.length,null,null)),o)u.push(p1.createBetAction("END_BET",{result:p1.minePositions},u.length,null,"0"))}else if(l&&!o)u.push(p1.createBetAction("END_BET",{result:p1.minePositions},u.length,null,null));if(l||o)s="b90c047b9c51db60bcd82590c7e754f50c6f626e0a594f12535d7f345422f90063a8511ed7aec0e5a67d3f399229d64e2381624ee6994c7a2fc0532f4274f7a3",f="d026116a800d0e90d6f9b2c189de0e9c8f9afe292200c5d9392ff5fa0ce14e387bfe171dc8c755d75bdf01a37771b27eec056e69527d369e444c665b2264d6c1477612786302cfc48bee709733d65d0e";let k=K(0);if(c>0&&!o)if(e===0)k=K(0);else if(c===0)k=K(1);else{let g=Math.min(l2-c,e);k=T2.calculateMultiplierBN(c,g,this.edge)}let w=null,y=null,b=null;if(l||o)if(!o&&c>0)w=K(i).mul(k).toFixed(8),b=k.toString(),y=K(1000).plus(w).minus(i).toFixed(8);else w="0",b="0",y=K(1000).minus(i).toFixed(8);else if(!t)y=K(1000).minus(i).toFixed(8);return{id:a,tenantId:"origami-casino",userId:"mock-user",tenantUserId:"mock-tenant-user",gameId:"MINES",currency:s1,amount:i,payout:w,afterBalance:y,multiplier:b,clientSeed:"mock-seed",randomValue:s,proof:f,nonce:m,betActions:u}}}class L5 extends Y{constructor(){super(...arguments);this.isAuto=!1;this.autobetSelectedTiles=[];this.autobetInProgress=!1;this.minesState=null;this.showWinPopup=!1;this.hitBomb=!1;this.loadingTiles=[];this.isDesktop=!1}static styles=[X,A`
10575
10575
  :host {
10576
10576
  height: 100%;
10577
10577
  }
@@ -10591,7 +10591,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
10591
10591
  :host {
10592
10592
  height: 100%;
10593
10593
  }
10594
- `;class A9{previousValues=[];callback;constructor(a){this.callback=a}check(a){if(a.length!==this.previousValues.length||a.some((e,r)=>e!==this.previousValues[r]))this.callback([...a],[...this.previousValues]),this.previousValues=[...a]}}class h4 extends y1{static styles=[...y1.styles,W9];_playSound(a,i){let e={click:"click",bet:"bet",win:"win",bomb:"mines-bomb",gem:"mines-gem"};this.gameData?.soundController?.play(e[a],void 0,i).catch((r)=>console.error(r))}_getGemPitchFromHits(a,i){let e=a/i;if(e>=0.75)return 1.25;if(e>=0.5)return 1.16;if(e>=0.25)return 1.08;return 1}_playHorrorgamiGem(a,i){let e=u3(this.gameData?.seasonTheme??"DEFAULT","mines-gem","horrorgami-mines-tile-click","mines-gem",1),r=this._getGemPitchFromHits(a,i);this.gameData.soundController?.play(e,void 0,r)}_playBomb(){let a=u3(this.gameData?.seasonTheme??"DEFAULT","mines-bomb","horrorgami-mines-bomb","mines-bomb",0.1);this.gameData.soundController?.play(a)}authTokenWatcher=new A9(([a],[i])=>{if(a&&a!==i)this.isCheckingForSession=!0,this.getMinesActiveBet()});get isToggleDisabled(){let a=this.getMinesState;return this.autobetInProgress||a?.state==="GAME_IN_PROGRESS"||this.isCheckingForSession||this.isLoading}get areInputsDisabled(){let a=this.getMinesState;return this.autobetInProgress||a?.state==="GAME_IN_PROGRESS"||this.isCheckingForSession||this.isLoading}get isGameActive(){return this.getMinesState?.state==="GAME_IN_PROGRESS"}get minesApi(){return this.isDemoMode?new p1(this.gameData.edge):new G1(this.gameData.authToken,this.gameData.baseUrl??"")}addToHistory(a,i,e){if(!e)return;let r=[...this.history,{multiplier:a,won:i,id:e}];this.history=r}async getMinesActiveBet(){try{let a=await this.minesApi.getActiveBet();if(!a.success){this.emit("show-alert",{detail:{type:"error",message:a.error}});return}if(a.data){if(this.gameData?.updateBetAmount(K(a.data.amount)),this.minesData=a.data,this.manualOrAuto!=="Manual")this.manualOrAuto="Manual"}}finally{this.isCheckingForSession=!1}}async firstUpdated(a){super.firstUpdated(a),await this.getMinesActiveBet()}updated(a){super.updated(a),this.authTokenWatcher.check([this.gameData?.authToken])}get getMinesState(){if(!this.minesData)return null;return G1.getState(this.minesData)}async executeAutobet(a,i){if(this.minesData=null,this.autobetSelectedTiles.length===0)return{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:S("games.mines.selectTileToAutobet",this.gameData.language||W)};try{if(!this.gameData?.currency)throw new Error("Currency is not set");let e={language:this.gameData.language,amount:i,currency:this.gameData.currency,minesCount:this.minesCount,selectedTiles:this.autobetSelectedTiles},r;if(this.isDemoMode&&K(this.gameData.balance).lt(e.amount))r={success:!1,error:S("alerts.insufficientBalance",this.gameData?.language||"en")};else r=await this.minesApi.autobetPlay(e);if(!r.success)return this.showError(r.error),{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:r.error||S("alerts.errorProcessingBet",this.gameData?.language||W)};this.minesData=r.data;let l=this.isDemoMode?K(this.gameData.balance).minus(r.data.amount??0).plus(r.data.payout??0):K(r.data.afterBalance??0);this.gameData.updateBalance(l);let n=r.data,{multiplier:t,id:h}=n,o=K(t||"0").gt(0);if(o)this.playSeasonalWin();this.addToHistory(Number(t),o,h),this.updateHistoryWithBet(n);let c=K(n.payout||"0").minus(n.amount),u=Q1(Number(n.multiplier));return await this.waitForAnimationsComplete(o),{pnl:c,gameOutcome:u,hasError:!1}}catch(e){return console.error("Error in executeAutobet:",e),{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:S("alerts.gameError",this.gameData?.language||W)}}}async toggleAutobet(a){if(this.autobetSelectedTiles.length===0){this.emit("show-alert",{detail:{type:"error",message:S("games.mines.selectTileToAutobet",this.gameData?.language||W)}});return}if(!this.autobetInProgress)this.emit("show-alert",{detail:{id:"autobet-started",type:"info",message:S("autobet.startAutobet",this.gameData?.language||W),autoCloseDelay:5000}});await super.toggleAutobet(a)}minesClickHandler=async(a)=>{if(this._playSound("click"),this.manualOrAuto==="Auto"){if(this.autobetSelectedTiles.includes(a.detail.tile))this.autobetSelectedTiles=this.autobetSelectedTiles.filter((e)=>e!==a.detail.tile);else if(this.autobetSelectedTiles.length<25-this.minesCount)this.autobetSelectedTiles=[...this.autobetSelectedTiles,a.detail.tile];this.minesData=null;return}let i=a.detail.tile;await this.minesNext(i)};async minesManualStart(){if(this.isLoading=!0,this.minesData=null,this._playSound("bet"),!this.gameData?.currency)throw new Error("Currency is not set");let a={language:this.gameData.language,amount:this.gameData?.betAmount??"0",currency:this.gameData.currency,minesCount:this.minesCount},i=await this.minesApi.startManualBet(a);if(!i.success){this.showError(i.error),this.isLoading=!1;return}let e=this.isDemoMode?K(this.gameData.balance).minus(i.data.amount??0).plus(i.data.payout??0):K(i.data.afterBalance??0);this.gameData.updateBalance(e),this.minesData=i.data,this.isLoading=!1}async minesChooseRandomTile(){this.isSelectingRandomTile=!0,this._playSound("click");let i=this.getMinesState?.selectedTiles??[],e=Array.from({length:l2},(l,n)=>n+1).filter((l)=>!i.includes(l)),r=e[Math.floor(Math.random()*e.length)];if(r!==void 0)await this.minesNext(r);this.isSelectingRandomTile=!1}async minesNext(a){if(this.loadingTiles.includes(a))return;this.loadingTiles=[...this.loadingTiles,a];try{let i=await this.minesApi.selectTile({betId:this.minesData?.id??"",selectedTiles:[a]});if(!i.success){this.emit("show-alert",{detail:{type:"error",message:i.error}});return}let e=i.data.betActions.find((t)=>t.type==="END_BET")?.data.MINES;if(!!e&&e.result.includes(a))this._playBomb();else{let t=this.getMinesState,h=l2-this.minesCount,c=(t?.numGemsFound??0)+1;this._playHorrorgamiGem(c,h)}let l=new Set((this.minesData?.betActions??[]).map((t)=>t.id)),n=i.data.betActions.filter((t)=>!l.has(t.id));if(this.minesData={...i.data,betActions:[...this.minesData?.betActions??[],...n]},e){let t=i.data?.afterBalance,h=i.data?.currency;if(t&&h){let o=this.isDemoMode?K(this.gameData.balance).plus(i.data.payout??0):K(i.data.afterBalance??0);this.gameData.updateBalance(o)}if(this.isLoading=!1,this.minesData){let{multiplier:o,id:c}=this.minesData,u=K(o||"0").gt(0);if(u)this.playSeasonalWin();this.addToHistory(Number(o),u,c),this.updateHistoryWithBet(this.minesData)}}}finally{this.loadingTiles=this.loadingTiles.filter((i)=>i!==a)}}async minesCashout(){this.isLoading=!0,this._playSound("bet");let a=await this.minesApi.cashout();if(!a.success){this.emit("show-alert",{detail:{type:"error",message:a.error}}),this.isLoading=!1;return}let i=a.data?.afterBalance,e=a.data?.currency;if(i&&e){let r=this.isDemoMode?K(this.gameData.balance).plus(a.data.payout??0):K(a.data.afterBalance??0);this.gameData.updateBalance(r)}if(this.isLoading=!1,this.minesData=a.data,this.minesData){let{multiplier:r,id:l}=this.minesData,n=K(r||"0").gt(0);if(n)this.playSeasonalWin();this.addToHistory(Number(r),n,l),this.updateHistoryWithBet(this.minesData)}}onManualOrAutoChange(){this.minesData=null,this.autobetSelectedTiles=[]}onMinesCountChange(){if(this.manualOrAuto==="Auto"&&this.autobetSelectedTiles.length>25-this.minesCount)this.autobetSelectedTiles=[]}onAutobetChange(){if(!this.autobetInProgress)this.minesData=null}isSpacebarDisabled=()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;if(this.manualOrAuto==="Manual"){let a=this._minesManualEl?.shadowRoot?.querySelector("origami-button");if(this.getMinesState?.state==="GAME_IN_PROGRESS")return!0;return a?.disabled??!0}else return this._minesAutoEl?.shadowRoot?.querySelector("origami-generic-autobet")?.shadowRoot?.querySelector(".bet-btn")?.disabled??!0};handleSpacebar=()=>{if(this.isSpacebarDisabled())return;if(this.manualOrAuto==="Manual")if(this.isGameActive)this.minesCashout();else this.minesManualStart();else{let i=this._minesAutoEl?.shadowRoot?.querySelector("origami-generic-autobet")?.shadowRoot?.querySelector(".bet-btn");if(i instanceof HTMLElement)i.click()}};pickRandomTile=()=>{if(!this.isGameActive)return;this.minesChooseRandomTile()};async waitForAnimationsComplete(a){if(this.gameData?.instantBetEnabled);else{if(await o1(200),a)await o1(150);await this.ensureMinimumDisplayTime(a,300,300)}await o1(this.getAutobetDelay())}constructor(){super();this.minesCount=3;this.autobetSelectedTiles=[];this.minesData=null;this.isLoading=!1;this.isSelectingRandomTile=!1;this.history=[];this.isCheckingForSession=!0;this.loadingTiles=[];new j1(this,[{key:" ",callback:this.handleSpacebar.bind(this),options:{disabled:this.isSpacebarDisabled}},{key:"q",callback:this.pickRandomTile.bind(this),options:{repeat:!0,repeatInterval:200,disabled:()=>!this.isGameActive||this.autobetInProgress&&!this.autobetStopping||!this.gameData?.hotkeysOpenEnabled}},{key:"w",callback:this.minesCashout.bind(this),options:{disabled:()=>!this.isGameActive||(this.getMinesState?.selectedTiles.length??0)===0||!this.gameData?.hotkeysOpenEnabled||this.isLoading}}])}render(){let a=this.getMinesState,i=this.minesData?.multiplier,e=a?.state==="VIEWING_RESULTS"&&a?.outcome==="WIN",r=this.minesData?.payout,l=this.gameData?.currency??s1,n=a?.mineLocations?.some((o)=>a?.selectedTiles?.includes(o))??!1,t=this.gameData?.mainWidth>=768,h=V1(this.gameData);return I`
10594
+ `;class A9{previousValues=[];callback;constructor(a){this.callback=a}check(a){if(a.length!==this.previousValues.length||a.some((e,r)=>e!==this.previousValues[r]))this.callback([...a],[...this.previousValues]),this.previousValues=[...a]}}class h4 extends y1{static styles=[...y1.styles,W9];_playSound(a,i){let e={click:"click",bet:"bet",win:"win",bomb:"mines-bomb",gem:"mines-gem"};this.gameData?.soundController?.play(e[a],void 0,i).catch((r)=>console.error(r))}_getGemPitchFromHits(a,i){let e=a/i;if(e>=0.75)return 1.25;if(e>=0.5)return 1.16;if(e>=0.25)return 1.08;return 1}_playHorrorgamiGem(a,i){let e=u3(this.gameData?.seasonTheme??"DEFAULT","mines-gem","horrorgami-mines-tile-click","mines-gem",1),r=this._getGemPitchFromHits(a,i);this.gameData.soundController?.play(e,void 0,r)}_playBomb(){let a=u3(this.gameData?.seasonTheme??"DEFAULT","mines-bomb","horrorgami-mines-bomb","mines-bomb",0.1);this.gameData.soundController?.play(a)}authTokenWatcher=new A9(([a],[i])=>{if(a&&a!==i)this.isCheckingForSession=!0,this.getMinesActiveBet()});get isToggleDisabled(){let a=this.getMinesState;return this.autobetInProgress||a?.state==="GAME_IN_PROGRESS"||this.isCheckingForSession||this.isLoading}get areInputsDisabled(){let a=this.getMinesState;return this.autobetInProgress||a?.state==="GAME_IN_PROGRESS"||this.isCheckingForSession||this.isLoading}get isGameActive(){return this.getMinesState?.state==="GAME_IN_PROGRESS"}get minesApi(){return this.isDemoMode?new p1(this.gameData.edge):new G1(this.gameData.authToken,this.gameData.baseUrl??"")}addToHistory(a,i,e){if(!e)return;let r=[...this.history,{multiplier:a,won:i,id:e}];this.history=r}async getMinesActiveBet(){try{let a=await this.minesApi.getActiveBet();if(!a.success){this.emit("show-alert",{detail:{type:"error",message:a.error}});return}if(a.data){if(this.gameData?.updateBetAmount(K(a.data.amount)),this.minesData=a.data,this.manualOrAuto!=="Manual")this.manualOrAuto="Manual"}}finally{this.isCheckingForSession=!1}}async firstUpdated(a){super.firstUpdated(a),await this.getMinesActiveBet()}updated(a){super.updated(a),this.authTokenWatcher.check([this.gameData?.authToken])}get getMinesState(){if(!this.minesData)return null;return G1.getState(this.minesData)}async executeAutobet(a,i){if(this.minesData=null,this.autobetSelectedTiles.length===0)return{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:S("games.mines.selectTileToAutobet",this.gameData.language||W)};try{if(!this.gameData?.currency)throw new Error("Currency is not set");let e={language:this.gameData.language,amount:i,currency:this.gameData.currency,minesCount:this.minesCount,selectedTiles:this.autobetSelectedTiles},r;if(this.isDemoMode&&K(this.gameData.balance).lt(e.amount))r={success:!1,error:S("alerts.insufficientBalance",this.gameData?.language||"en")};else r=await this.minesApi.autobetPlay(e);if(!r.success)return this.showError(r.error),{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:r.error||S("alerts.errorProcessingBet",this.gameData?.language||W)};this.minesData=r.data;let l=this.isDemoMode?K(this.gameData.balance).minus(r.data.amount??0).plus(r.data.payout??0):K(r.data.afterBalance??0);this.gameData.updateBalance(l);let n=r.data,{multiplier:t,id:h}=n,o=K(t||"0").gt(0);if(o)this.playSeasonalWin();this.addToHistory(Number(t),o,h),this.updateHistoryWithBet(n);let c=K(n.payout||"0").minus(n.amount),u=Q1(Number(n.multiplier));return await this.waitForAnimationsComplete(o),{pnl:c,gameOutcome:u,hasError:!1}}catch(e){return console.error("Error in executeAutobet:",e),{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:S("alerts.gameError",this.gameData?.language||W)}}}async toggleAutobet(a){if(this.autobetSelectedTiles.length===0){this.emit("show-alert",{detail:{type:"error",message:S("games.mines.selectTileToAutobet",this.gameData?.language||W)}});return}if(!this.autobetInProgress)this.emit("show-alert",{detail:{id:"autobet-started",type:"info",message:S("autobet.startAutobet",this.gameData?.language||W),autoCloseDelay:5000}});await super.toggleAutobet(a)}minesClickHandler=async(a)=>{if(this._playSound("click"),this.manualOrAuto==="Auto"){if(this.autobetSelectedTiles.includes(a.detail.tile))this.autobetSelectedTiles=this.autobetSelectedTiles.filter((e)=>e!==a.detail.tile);else if(this.autobetSelectedTiles.length<25-this.minesCount)this.autobetSelectedTiles=[...this.autobetSelectedTiles,a.detail.tile];this.minesData=null;return}let i=a.detail.tile;await this.minesNext(i)};async minesManualStart(){if(this.isLoading=!0,this.minesData=null,this._playSound("bet"),!this.gameData?.currency)throw new Error("Currency is not set");let a={language:this.gameData.language,amount:this.gameData?.betAmount??"0",currency:this.gameData.currency,minesCount:this.minesCount},i=await this.minesApi.startManualBet(a);if(!i.success){this.showError(i.error),this.isLoading=!1;return}let e=this.isDemoMode?K(this.gameData.balance).minus(i.data.amount??0).plus(i.data.payout??0):K(i.data.afterBalance??0);this.gameData.updateBalance(e),this.minesData=i.data,this.isLoading=!1}async minesChooseRandomTile(){this.isSelectingRandomTile=!0,this._playSound("click");let i=this.getMinesState?.selectedTiles??[],e=Array.from({length:l2},(l,n)=>n+1).filter((l)=>!i.includes(l)),r=e[Math.floor(Math.random()*e.length)];if(r!==void 0)await this.minesNext(r);this.isSelectingRandomTile=!1}async minesNext(a){if(this.loadingTiles.includes(a))return;this.loadingTiles=[...this.loadingTiles,a];try{let i=await this.minesApi.selectTile({betId:this.minesData?.id??"",selectedTiles:[a]});if(!i.success){this.emit("show-alert",{detail:{type:"error",message:i.error}});return}let e=i.data.betActions.find((t)=>t.type==="END_BET")?.data.MINES;if(!!e&&e.result.includes(a))this._playBomb();else{let t=this.getMinesState,h=l2-this.minesCount,c=(t?.numGemsFound??0)+1;this._playHorrorgamiGem(c,h)}let l=new Set((this.minesData?.betActions??[]).map((t)=>t.id)),n=i.data.betActions.filter((t)=>!l.has(t.id));if(this.minesData={...i.data,betActions:[...this.minesData?.betActions??[],...n]},e){let t=i.data?.afterBalance,h=i.data?.currency;if(t&&h){let o=this.isDemoMode?K(this.gameData.balance).plus(i.data.payout??0):K(i.data.afterBalance??0);this.gameData.updateBalance(o)}if(this.isLoading=!1,this.minesData){let{multiplier:o,id:c}=this.minesData,u=K(o||"0").gt(0);if(u)this.playSeasonalWin();this.addToHistory(Number(o),u,c),this.updateHistoryWithBet(this.minesData)}}}finally{this.loadingTiles=this.loadingTiles.filter((i)=>i!==a)}}async minesCashout(){this.isLoading=!0,this._playSound("bet");let a=await this.minesApi.cashout();if(!a.success){this.emit("show-alert",{detail:{type:"error",message:a.error}}),this.isLoading=!1;return}let i=a.data?.afterBalance,e=a.data?.currency;if(i&&e){let r=this.isDemoMode?K(this.gameData.balance).plus(a.data.payout??0):K(a.data.afterBalance??0);this.gameData.updateBalance(r)}if(this.isLoading=!1,this.minesData=a.data,this.minesData){let{multiplier:r,id:l}=this.minesData,n=K(r||"0").gt(0);if(n)this.playSeasonalWin();this.addToHistory(Number(r),n,l),this.updateHistoryWithBet(this.minesData)}}onManualOrAutoChange(){this.minesData=null,this.autobetSelectedTiles=[]}onMinesCountChange(){if(this.manualOrAuto==="Auto"&&this.autobetSelectedTiles.length>25-this.minesCount)this.autobetSelectedTiles=[]}onAutobetChange(){if(!this.autobetInProgress)this.minesData=null}isSpacebarDisabled=()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;if(this.manualOrAuto==="Manual"){let a=this._minesManualEl?.shadowRoot?.querySelector("origami-button");if(this.getMinesState?.state==="GAME_IN_PROGRESS")return!0;return a?.disabled??!0}else return this._minesAutoEl?.shadowRoot?.querySelector("origami-generic-autobet")?.shadowRoot?.querySelector(".bet-btn")?.disabled??!0};handleSpacebar=()=>{if(this.isSpacebarDisabled())return;if(this.manualOrAuto==="Manual")if(this.isGameActive)this.minesCashout();else this.minesManualStart();else{let i=this._minesAutoEl?.shadowRoot?.querySelector("origami-generic-autobet")?.shadowRoot?.querySelector(".bet-btn");if(i instanceof HTMLElement)i.click()}};pickRandomTile=()=>{if(!this.isGameActive)return;this.minesChooseRandomTile()};async waitForAnimationsComplete(a){if(this.gameData?.instantBetEnabled);else{if(await h1(200),a)await h1(150);await this.ensureMinimumDisplayTime(a,300,300)}await h1(this.getAutobetDelay())}constructor(){super();this.minesCount=3;this.autobetSelectedTiles=[];this.minesData=null;this.isLoading=!1;this.isSelectingRandomTile=!1;this.history=[];this.isCheckingForSession=!0;this.loadingTiles=[];new j1(this,[{key:" ",callback:this.handleSpacebar.bind(this),options:{disabled:this.isSpacebarDisabled}},{key:"q",callback:this.pickRandomTile.bind(this),options:{repeat:!0,repeatInterval:200,disabled:()=>!this.isGameActive||this.autobetInProgress&&!this.autobetStopping||!this.gameData?.hotkeysOpenEnabled}},{key:"w",callback:this.minesCashout.bind(this),options:{disabled:()=>!this.isGameActive||(this.getMinesState?.selectedTiles.length??0)===0||!this.gameData?.hotkeysOpenEnabled||this.isLoading}}])}render(){let a=this.getMinesState,i=this.minesData?.multiplier,e=a?.state==="VIEWING_RESULTS"&&a?.outcome==="WIN",r=this.minesData?.payout,l=this.gameData?.currency??s1,n=a?.mineLocations?.some((o)=>a?.selectedTiles?.includes(o))??!1,t=this.gameData?.mainWidth>=768,h=V1(this.gameData);return I`
10595
10595
  <origami-game-layout style=${h} .gameType=${"MINES"} data-is-desktop=${t}>
10596
10596
  <origami-game-sidebar
10597
10597
  data-is-desktop=${t}
@@ -10654,7 +10654,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
10654
10654
  inModal
10655
10655
  ></origami-game-win-popup>`:V}
10656
10656
  </origami-game-layout>
10657
- `}}d([E()],h4.prototype,"minesCount",void 0),d([E()],h4.prototype,"autobetSelectedTiles",void 0),d([E()],h4.prototype,"minesData",void 0),d([E()],h4.prototype,"isLoading",void 0),d([E()],h4.prototype,"isSelectingRandomTile",void 0),d([E()],h4.prototype,"history",void 0),d([E()],h4.prototype,"isCheckingForSession",void 0),d([E()],h4.prototype,"loadingTiles",void 0),d([n1("origami-mines-manual")],h4.prototype,"_minesManualEl",void 0),d([n1("origami-mines-auto")],h4.prototype,"_minesAutoEl",void 0),d([c1("manualOrAuto")],h4.prototype,"onManualOrAutoChange",null),d([c1("minesCount")],h4.prototype,"onMinesCountChange",null),d([c1("autobetInProgress")],h4.prototype,"onAutobetChange",null),h4=d([D("origami-mines-game")],h4);class q5{authToken;baseUrl;constructor(a,i){this.authToken=a,this.baseUrl=i+"/games/diamonds"}async startBet(a){try{let i=await fetch(`${this.baseUrl}/play`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Origami-Trace":K1()},body:JSON.stringify({currency:a.currency,amount:a.amount,gameInputs:{}})}),e=await i.json();if(i.ok&&!!e.id)return{success:!0,data:e};let r="alerts.gameError";switch(e?.errorCode){case"INSUFFICIENT_BALANCE":r="alerts.insufficientBalance";break;case"LIMIT_REACHED":r="alerts.betLimitReached";break}return{success:!1,error:S(r,a.language)}}catch(i){return{success:!1,error:S("alerts.gameError",a.language)}}}}class T5{edge;constructor(a){this.edge=a}async startBet(a){let{amount:i}=a,e=7,r=Array.from({length:5},()=>Math.floor(Math.random()*7)),l=y8(this.edge,r),n=K(i).mul(l).toString(),t={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",tenantUserId:"mock-user",gameId:"diamonds",currency:a.currency,amount:i,payout:n,afterBalance:"1000",multiplier:l.toString(),clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{DIAMONDS:{}},type:"START_BET",actionIndex:0,betAmount:i,payoutAmount:null},{id:crypto.randomUUID(),data:{DIAMONDS:{result:r}},type:"END_BET",actionIndex:1,betAmount:null,payoutAmount:n}]};return await o1(250),{success:!0,data:t}}}var V9=A`
10657
+ `}}d([E()],h4.prototype,"minesCount",void 0),d([E()],h4.prototype,"autobetSelectedTiles",void 0),d([E()],h4.prototype,"minesData",void 0),d([E()],h4.prototype,"isLoading",void 0),d([E()],h4.prototype,"isSelectingRandomTile",void 0),d([E()],h4.prototype,"history",void 0),d([E()],h4.prototype,"isCheckingForSession",void 0),d([E()],h4.prototype,"loadingTiles",void 0),d([n1("origami-mines-manual")],h4.prototype,"_minesManualEl",void 0),d([n1("origami-mines-auto")],h4.prototype,"_minesAutoEl",void 0),d([c1("manualOrAuto")],h4.prototype,"onManualOrAutoChange",null),d([c1("minesCount")],h4.prototype,"onMinesCountChange",null),d([c1("autobetInProgress")],h4.prototype,"onAutobetChange",null),h4=d([D("origami-mines-game")],h4);class q5{authToken;baseUrl;constructor(a,i){this.authToken=a,this.baseUrl=i+"/games/diamonds"}async startBet(a){try{let i=await fetch(`${this.baseUrl}/play`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Origami-Trace":K1()},body:JSON.stringify({currency:a.currency,amount:a.amount,gameInputs:{}})}),e=await i.json();if(i.ok&&!!e.id)return{success:!0,data:e};let r="alerts.gameError";switch(e?.errorCode){case"INSUFFICIENT_BALANCE":r="alerts.insufficientBalance";break;case"LIMIT_REACHED":r="alerts.betLimitReached";break}return{success:!1,error:S(r,a.language)}}catch(i){return{success:!1,error:S("alerts.gameError",a.language)}}}}class T5{edge;constructor(a){this.edge=a}async startBet(a){let{amount:i}=a,e=7,r=Array.from({length:5},()=>Math.floor(Math.random()*7)),l=y8(this.edge,r),n=K(i).mul(l).toString(),t={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",tenantUserId:"mock-user",gameId:"diamonds",currency:a.currency,amount:i,payout:n,afterBalance:"1000",multiplier:l.toString(),clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{DIAMONDS:{}},type:"START_BET",actionIndex:0,betAmount:i,payoutAmount:null},{id:crypto.randomUUID(),data:{DIAMONDS:{result:r}},type:"END_BET",actionIndex:1,betAmount:null,payoutAmount:n}]};return await h1(250),{success:!0,data:t}}}var V9=A`
10658
10658
  :host {
10659
10659
  width: 100%;
10660
10660
  height: 100%;
@@ -10954,7 +10954,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
10954
10954
  :host {
10955
10955
  height: 100%;
10956
10956
  }
10957
- `;class B1{static MANUAL_BUTTON_PATH=["#manual-bet-button"];static AUTOBET_BUTTON_PATH=["origami-generic-autobet","#autobet-bet-button"];static findElementThroughShadowDOM(a,i){if(!a?.shadowRoot||i.length===0)return null;let e=a.shadowRoot;for(let r=0;r<i.length;r++){let l=i[r],n=e?.querySelector(l)??null;if(!n)return null;if(r===i.length-1)return n;if(!n.shadowRoot)return null;e=n.shadowRoot}return null}static isManualButtonDisabled(a){return this.findElementThroughShadowDOM(a,this.MANUAL_BUTTON_PATH)?.disabled??!0}static isAutobetButtonDisabled(a){return this.findElementThroughShadowDOM(a,this.AUTOBET_BUTTON_PATH)?.disabled??!0}static clickManualButton(a){let i=this.findElementThroughShadowDOM(a,this.MANUAL_BUTTON_PATH);if(i)i.dispatchEvent(new CustomEvent("button-click",{detail:{originalEvent:new MouseEvent("click")},bubbles:!1,composed:!1}))}static clickAutobetButton(a){this.findElementThroughShadowDOM(a,this.AUTOBET_BUTTON_PATH)?.click()}static isBetButtonDisabled(a,i,e){return a==="Manual"?this.isManualButtonDisabled(i):this.isAutobetButtonDisabled(e)}static clickBetButton(a,i,e){if(a==="Manual")this.clickManualButton(i);else this.clickAutobetButton(e)}}class u4 extends y1{static styles=[...y1.styles,X9];constructor(){super();this.isManualPlaying=!1;this.resultGems=null;new j1(this,[{key:" ",callback:()=>B1.clickBetButton(this.manualOrAuto,this._diamondsManualEl,this._diamondsAutoEl),options:{repeat:!0,repeatInterval:200,disabled:()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;return B1.isBetButtonDisabled(this.manualOrAuto,this._diamondsManualEl,this._diamondsAutoEl)}}}])}get isToggleDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get diamondsApi(){return this.isDemoMode?new T5(this.gameData.edge):new q5(this.gameData.authToken,this.gameData.baseUrl)}animationCompletedPromise(){return new Promise((a)=>{let i=()=>{this.removeEventListener("diamonds-reveal-complete",i),a()};this.addEventListener("diamonds-reveal-complete",i)})}async handleBetExecution(a){if(this.resultGems=null,!this.gameData?.currency)return{success:!1,error:S("alerts.gameError",this.gameData?.language||W)};let i=K(this.gameData.balance);try{this.gameData.updateBalance(i.minus(a));let e;if(this.isDemoMode&&i.lt(a))e={success:!1,error:S("alerts.insufficientBalance",this.gameData?.language||W)};else e=await this.diamondsApi.startBet({amount:a,currency:this.gameData.currency,language:this.gameData.language});if(e.success){let{data:r}=e,l=this.animationCompletedPromise(),n=Number(r.multiplier??0),{betActions:t}=r,h=t[t.length-1];if(h?.data?.DIAMONDS){let{result:c}=h.data.DIAMONDS;this.resultGems=c}this.updateHistoryWithBet(r);let o=this.isDemoMode?K(this.gameData.balance).minus(r.amount??0).plus(r.payout??0):K(r.afterBalance??0);if(await l,this.gameData.updateBalance(o),K(n).gt(1))this.playSeasonalWin();return e}else throw new Error(e.error)}catch(e){this.gameData.updateBalance(i);let r=e instanceof Error?e.message:S("alerts.gameError",this.gameData?.language||W);return this.showError(r),{success:!1,error:r}}}async diamondsManualPlay(){this.isManualPlaying=!0,this.gameData?.soundController?.play("bet"),await this.handleBetExecution(this.gameData?.betAmount??"0"),this.isManualPlaying=!1}async executeAutobet(a,i){let e=await this.handleBetExecution(i);if(!e.success)return{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:e.error||S("alerts.errorProcessingBet",this.gameData?.language||W)};let r=e.data,l=K(r.payout??0).minus(r.amount??0),n=Number(r.multiplier),t=Q1(n);return await o1(600),{pnl:l,gameOutcome:t,hasError:!1}}render(){let a=this.gameData?.mainWidth>=768,i=Z8(this.gameData.edge),e=V1(this.gameData);return I`
10957
+ `;class B1{static MANUAL_BUTTON_PATH=["#manual-bet-button"];static AUTOBET_BUTTON_PATH=["origami-generic-autobet","#autobet-bet-button"];static findElementThroughShadowDOM(a,i){if(!a?.shadowRoot||i.length===0)return null;let e=a.shadowRoot;for(let r=0;r<i.length;r++){let l=i[r],n=e?.querySelector(l)??null;if(!n)return null;if(r===i.length-1)return n;if(!n.shadowRoot)return null;e=n.shadowRoot}return null}static isManualButtonDisabled(a){return this.findElementThroughShadowDOM(a,this.MANUAL_BUTTON_PATH)?.disabled??!0}static isAutobetButtonDisabled(a){return this.findElementThroughShadowDOM(a,this.AUTOBET_BUTTON_PATH)?.disabled??!0}static clickManualButton(a){let i=this.findElementThroughShadowDOM(a,this.MANUAL_BUTTON_PATH);if(i)i.dispatchEvent(new CustomEvent("button-click",{detail:{originalEvent:new MouseEvent("click")},bubbles:!1,composed:!1}))}static clickAutobetButton(a){this.findElementThroughShadowDOM(a,this.AUTOBET_BUTTON_PATH)?.click()}static isBetButtonDisabled(a,i,e){return a==="Manual"?this.isManualButtonDisabled(i):this.isAutobetButtonDisabled(e)}static clickBetButton(a,i,e){if(a==="Manual")this.clickManualButton(i);else this.clickAutobetButton(e)}}class u4 extends y1{static styles=[...y1.styles,X9];constructor(){super();this.isManualPlaying=!1;this.resultGems=null;new j1(this,[{key:" ",callback:()=>B1.clickBetButton(this.manualOrAuto,this._diamondsManualEl,this._diamondsAutoEl),options:{repeat:!0,repeatInterval:200,disabled:()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;return B1.isBetButtonDisabled(this.manualOrAuto,this._diamondsManualEl,this._diamondsAutoEl)}}}])}get isToggleDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get diamondsApi(){return this.isDemoMode?new T5(this.gameData.edge):new q5(this.gameData.authToken,this.gameData.baseUrl)}animationCompletedPromise(){return new Promise((a)=>{let i=()=>{this.removeEventListener("diamonds-reveal-complete",i),a()};this.addEventListener("diamonds-reveal-complete",i)})}async handleBetExecution(a){if(this.resultGems=null,!this.gameData?.currency)return{success:!1,error:S("alerts.gameError",this.gameData?.language||W)};let i=K(this.gameData.balance);try{this.gameData.updateBalance(i.minus(a));let e;if(this.isDemoMode&&i.lt(a))e={success:!1,error:S("alerts.insufficientBalance",this.gameData?.language||W)};else e=await this.diamondsApi.startBet({amount:a,currency:this.gameData.currency,language:this.gameData.language});if(e.success){let{data:r}=e,l=this.animationCompletedPromise(),n=Number(r.multiplier??0),{betActions:t}=r,h=t[t.length-1];if(h?.data?.DIAMONDS){let{result:c}=h.data.DIAMONDS;this.resultGems=c}this.updateHistoryWithBet(r);let o=this.isDemoMode?K(this.gameData.balance).minus(r.amount??0).plus(r.payout??0):K(r.afterBalance??0);if(await l,this.gameData.updateBalance(o),K(n).gt(1))this.playSeasonalWin();return e}else throw new Error(e.error)}catch(e){this.gameData.updateBalance(i);let r=e instanceof Error?e.message:S("alerts.gameError",this.gameData?.language||W);return this.showError(r),{success:!1,error:r}}}async diamondsManualPlay(){this.isManualPlaying=!0,this.gameData?.soundController?.play("bet"),await this.handleBetExecution(this.gameData?.betAmount??"0"),this.isManualPlaying=!1}async executeAutobet(a,i){let e=await this.handleBetExecution(i);if(!e.success)return{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:e.error||S("alerts.errorProcessingBet",this.gameData?.language||W)};let r=e.data,l=K(r.payout??0).minus(r.amount??0),n=Number(r.multiplier),t=Q1(n);return await h1(600),{pnl:l,gameOutcome:t,hasError:!1}}render(){let a=this.gameData?.mainWidth>=768,i=Z8(this.gameData.edge),e=V1(this.gameData);return I`
10958
10958
  <origami-game-layout style=${e} .gameType=${"DIAMONDS"} data-is-desktop=${a}>
10959
10959
  <origami-game-sidebar
10960
10960
  slot="control-panel"
@@ -10993,7 +10993,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
10993
10993
  .instantReveal=${this.gameData?.instantBetEnabled}
10994
10994
  ></origami-diamonds-content>
10995
10995
  </origami-game-layout>
10996
- `}}d([E()],u4.prototype,"isManualPlaying",void 0),d([E()],u4.prototype,"resultGems",void 0),d([n1("origami-diamonds-manual")],u4.prototype,"_diamondsManualEl",void 0),d([n1("origami-diamonds-auto")],u4.prototype,"_diamondsAutoEl",void 0),u4=d([D("origami-diamonds-game")],u4);class A5{authToken;baseUrl;constructor(a,i){this.authToken=a,this.baseUrl=i+"/games/wheel"}async startBet(a){try{let i=await fetch(`${this.baseUrl}/play`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Origami-Trace":K1()},body:JSON.stringify({currency:a.currency,amount:a.amount,gameInputs:{riskLevel:a.riskLevel,segments:a.segments}})}),e=await i.json();if(i.ok&&!!e.id)return{success:!0,data:e};let r="alerts.gameError";switch(e?.errorCode){case"INSUFFICIENT_BALANCE":r="alerts.insufficientBalance";break;case"LIMIT_REACHED":r="alerts.betLimitReached";break}return{success:!1,error:S(r,a.language)}}catch(i){return{success:!1,error:S("alerts.gameError",a.language)}}}}class V5{edge;constructor(a){this.edge=a}async startBet(a){let{amount:i,riskLevel:e,segments:r}=a,n=z0(this.edge)[e][r];if(!n)throw new Error(`No multiplier configuration found for ${r} segments at edge ${this.edge}`);let t=Math.floor(Math.random()*r),o=W2(r,e)[t],c=n[o],u=K(c??0),m=K(i).mul(u).toString(),s={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",tenantUserId:"mock-user",gameId:"wheel",currency:a.currency,amount:i,payout:m,afterBalance:"1000",multiplier:u.toString(),clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{WHEEL:{riskLevel:a.riskLevel,segments:a.segments}},type:"START_BET",actionIndex:0,betAmount:i,payoutAmount:null},{id:crypto.randomUUID(),data:{WHEEL:{result:[t]}},type:"END_BET",actionIndex:1,betAmount:null,payoutAmount:m}]};return await o1(250),{success:!0,data:s}}}var N9=A`
10996
+ `}}d([E()],u4.prototype,"isManualPlaying",void 0),d([E()],u4.prototype,"resultGems",void 0),d([n1("origami-diamonds-manual")],u4.prototype,"_diamondsManualEl",void 0),d([n1("origami-diamonds-auto")],u4.prototype,"_diamondsAutoEl",void 0),u4=d([D("origami-diamonds-game")],u4);class A5{authToken;baseUrl;constructor(a,i){this.authToken=a,this.baseUrl=i+"/games/wheel"}async startBet(a){try{let i=await fetch(`${this.baseUrl}/play`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Origami-Trace":K1()},body:JSON.stringify({currency:a.currency,amount:a.amount,gameInputs:{riskLevel:a.riskLevel,segments:a.segments}})}),e=await i.json();if(i.ok&&!!e.id)return{success:!0,data:e};let r="alerts.gameError";switch(e?.errorCode){case"INSUFFICIENT_BALANCE":r="alerts.insufficientBalance";break;case"LIMIT_REACHED":r="alerts.betLimitReached";break}return{success:!1,error:S(r,a.language)}}catch(i){return{success:!1,error:S("alerts.gameError",a.language)}}}}class V5{edge;constructor(a){this.edge=a}async startBet(a){let{amount:i,riskLevel:e,segments:r}=a,n=z0(this.edge)[e][r];if(!n)throw new Error(`No multiplier configuration found for ${r} segments at edge ${this.edge}`);let t=Math.floor(Math.random()*r),o=W2(r,e)[t],c=n[o],u=K(c??0),m=K(i).mul(u).toString(),s={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",tenantUserId:"mock-user",gameId:"wheel",currency:a.currency,amount:i,payout:m,afterBalance:"1000",multiplier:u.toString(),clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{WHEEL:{riskLevel:a.riskLevel,segments:a.segments}},type:"START_BET",actionIndex:0,betAmount:i,payoutAmount:null},{id:crypto.randomUUID(),data:{WHEEL:{result:[t]}},type:"END_BET",actionIndex:1,betAmount:null,payoutAmount:m}]};return await h1(250),{success:!0,data:s}}}var N9=A`
10997
10997
  :host {
10998
10998
  width: 100%;
10999
10999
  height: 100%;
@@ -11340,7 +11340,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
11340
11340
  origami-wheel-content-bottom[slot="content-bottom"] {
11341
11341
  display: block;
11342
11342
  }
11343
- `;class d4 extends y1{static styles=[...y1.styles,U9];constructor(){super();this.isManualPlaying=!1;this.history=[];this.wheelRisk="MEDIUM_RISK";this.numberOfSegments=10;this.targetAngle=null;this.resultSegment=null;this.isWheelSpinning=!1;new j1(this,[{key:" ",callback:()=>B1.clickBetButton(this.manualOrAuto,this._wheelManualEl,this._wheelAutoEl),options:{repeat:!0,repeatInterval:200,disabled:()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;return B1.isBetButtonDisabled(this.manualOrAuto,this._wheelManualEl,this._wheelAutoEl)}}}])}handleWheelRiskChange(a){this.wheelRisk=a.detail.value,this.resultSegment=null}handleWheelSegmentsChange(a){this.numberOfSegments=a.detail.value,this.resultSegment=null}get wheelApi(){return this.isDemoMode?new V5(this.gameData.edge):new A5(this.gameData.authToken,this.gameData.baseUrl)}get isToggleDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get areInputsDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}wheelSpinCompletedPromise(){return new Promise((a)=>{let i=()=>{this.removeEventListener("wheel-spin-complete",i),a()};this.addEventListener("wheel-spin-complete",i)})}async handleBetExecution(a){if(this.targetAngle=null,this.resultSegment=null,!this.gameData?.currency)return{success:!1,error:S("alerts.gameError",this.gameData?.language||W)};let i=K(this.gameData.balance);try{if(this.isDemoMode&&i.lt(a))throw new Error(S("alerts.insufficientBalance",this.gameData?.language||W));if(this.gameData.updateBalance(i.minus(a)),!this.gameData.instantBetEnabled)this.isWheelSpinning=!0;let e=await this.wheelApi.startBet({amount:a,currency:this.gameData.currency,language:this.gameData.language,riskLevel:this.wheelRisk,segments:this.numberOfSegments});if(e.success){let{data:r}=e,l=Number(r.multiplier??0),{betActions:n}=r,t=n[n.length-1];if(t?.data?.WHEEL){let{result:c}=t.data.WHEEL;this.resultSegment=c[0]??0,this.targetAngle=$2.calculateTargetAngle(this.resultSegment,this.numberOfSegments,r.id)}if(!this.gameData.instantBetEnabled)await this.wheelSpinCompletedPromise();this.isWheelSpinning=!1;let h=K(l).gt(0);this.history=[...this.history,{multiplier:l,won:h,id:r.id}],this.updateHistoryWithBet(r);let o=this.isDemoMode?i.minus(r.amount??0).plus(r.payout??0):K(r.afterBalance??0);if(this.gameData.updateBalance(o),K(l).gt(1))this.playSeasonalWin();return e}else throw new Error(e.error)}catch(e){this.gameData.updateBalance(i),this.isWheelSpinning=!1;let r=e instanceof Error?e.message:S("alerts.gameError",this.gameData?.language||W);return this.showError(r),{success:!1,error:r}}}async wheelPlay(){this.isManualPlaying=!0,this.gameData?.soundController?.play("bet"),await this.handleBetExecution(this.gameData?.betAmount??"0"),this.isManualPlaying=!1}async executeAutobet(a,i){let e=await this.handleBetExecution(i);if(!e.success)return{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:e.error||S("alerts.errorProcessingBet",this.gameData?.language||W)};let r=e.data,l=K(r.payout??0).minus(r.amount??0),n=Number(r.multiplier),t=Q1(n);return await this.ensureMinimumDisplayTime(K(n).gt(0),300,300),await o1(this.getAutobetDelay()),{pnl:l,gameOutcome:t,hasError:!1}}render(){let a=this.gameData?.mainWidth>=768,i=!1,e=V1(this.gameData);return I`
11343
+ `;class d4 extends y1{static styles=[...y1.styles,U9];constructor(){super();this.isManualPlaying=!1;this.history=[];this.wheelRisk="MEDIUM_RISK";this.numberOfSegments=10;this.targetAngle=null;this.resultSegment=null;this.isWheelSpinning=!1;new j1(this,[{key:" ",callback:()=>B1.clickBetButton(this.manualOrAuto,this._wheelManualEl,this._wheelAutoEl),options:{repeat:!0,repeatInterval:200,disabled:()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;return B1.isBetButtonDisabled(this.manualOrAuto,this._wheelManualEl,this._wheelAutoEl)}}}])}handleWheelRiskChange(a){this.wheelRisk=a.detail.value,this.resultSegment=null}handleWheelSegmentsChange(a){this.numberOfSegments=a.detail.value,this.resultSegment=null}get wheelApi(){return this.isDemoMode?new V5(this.gameData.edge):new A5(this.gameData.authToken,this.gameData.baseUrl)}get isToggleDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get areInputsDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}wheelSpinCompletedPromise(){return new Promise((a)=>{let i=()=>{this.removeEventListener("wheel-spin-complete",i),a()};this.addEventListener("wheel-spin-complete",i)})}async handleBetExecution(a){if(this.targetAngle=null,this.resultSegment=null,!this.gameData?.currency)return{success:!1,error:S("alerts.gameError",this.gameData?.language||W)};let i=K(this.gameData.balance);try{if(this.isDemoMode&&i.lt(a))throw new Error(S("alerts.insufficientBalance",this.gameData?.language||W));if(this.gameData.updateBalance(i.minus(a)),!this.gameData.instantBetEnabled)this.isWheelSpinning=!0;let e=await this.wheelApi.startBet({amount:a,currency:this.gameData.currency,language:this.gameData.language,riskLevel:this.wheelRisk,segments:this.numberOfSegments});if(e.success){let{data:r}=e,l=Number(r.multiplier??0),{betActions:n}=r,t=n[n.length-1];if(t?.data?.WHEEL){let{result:c}=t.data.WHEEL;this.resultSegment=c[0]??0,this.targetAngle=$2.calculateTargetAngle(this.resultSegment,this.numberOfSegments,r.id)}if(!this.gameData.instantBetEnabled)await this.wheelSpinCompletedPromise();this.isWheelSpinning=!1;let h=K(l).gt(0);this.history=[...this.history,{multiplier:l,won:h,id:r.id}],this.updateHistoryWithBet(r);let o=this.isDemoMode?i.minus(r.amount??0).plus(r.payout??0):K(r.afterBalance??0);if(this.gameData.updateBalance(o),K(l).gt(1))this.playSeasonalWin();return e}else throw new Error(e.error)}catch(e){this.gameData.updateBalance(i),this.isWheelSpinning=!1;let r=e instanceof Error?e.message:S("alerts.gameError",this.gameData?.language||W);return this.showError(r),{success:!1,error:r}}}async wheelPlay(){this.isManualPlaying=!0,this.gameData?.soundController?.play("bet"),await this.handleBetExecution(this.gameData?.betAmount??"0"),this.isManualPlaying=!1}async executeAutobet(a,i){let e=await this.handleBetExecution(i);if(!e.success)return{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:e.error||S("alerts.errorProcessingBet",this.gameData?.language||W)};let r=e.data,l=K(r.payout??0).minus(r.amount??0),n=Number(r.multiplier),t=Q1(n);return await this.ensureMinimumDisplayTime(K(n).gt(0),300,300),await h1(this.getAutobetDelay()),{pnl:l,gameOutcome:t,hasError:!1}}render(){let a=this.gameData?.mainWidth>=768,i=!1,e=V1(this.gameData);return I`
11344
11344
  <origami-game-layout style=${e} .gameType=${"WHEEL"} data-is-desktop=${a}>
11345
11345
  <origami-game-sidebar
11346
11346
  slot="control-panel"
@@ -11397,7 +11397,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
11397
11397
  .resultSegment=${this.resultSegment}
11398
11398
  ></origami-wheel-layout>
11399
11399
  </origami-game-layout>
11400
- `}}d([E()],d4.prototype,"isManualPlaying",void 0),d([E()],d4.prototype,"history",void 0),d([E()],d4.prototype,"wheelRisk",void 0),d([E()],d4.prototype,"numberOfSegments",void 0),d([E()],d4.prototype,"targetAngle",void 0),d([E()],d4.prototype,"resultSegment",void 0),d([E()],d4.prototype,"isWheelSpinning",void 0),d([n1("origami-wheel-manual")],d4.prototype,"_wheelManualEl",void 0),d([n1("origami-wheel-auto")],d4.prototype,"_wheelAutoEl",void 0),d4=d([D("origami-wheel-game")],d4);class G5{authToken;baseUrl;constructor(a,i){this.authToken=a,this.baseUrl=i+"/games/plinko"}async startBet(a){try{let i=await fetch(`${this.baseUrl}/play`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Origami-Trace":K1()},body:JSON.stringify({currency:a.currency,amount:a.amount,gameInputs:{riskLevel:a.riskLevel,numberOfRows:a.rowCount}})}),e=await i.json();if(i.ok&&!!e.id)return{success:!0,data:e};let r="alerts.gameError";switch(e?.errorCode){case"INSUFFICIENT_BALANCE":r="alerts.insufficientBalance";break;case"LIMIT_REACHED":r="alerts.betLimitReached";break}return{success:!1,error:S(r,a.language)}}catch(i){return{success:!1,error:S("alerts.gameError",a.language)}}}}class U5{edge;constructor(a){this.edge=a}async startBet(a){let{amount:i,currency:e,riskLevel:r,rowCount:l}=a,n=Na[this.edge][r][l],t=Array.from({length:l},()=>Math.random()<0.5?0:1),h=t.reduce((m,s)=>m+s,0),o=n[h]??0,c=K(i).mul(o).toString(),u={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",tenantUserId:"mock-user",gameId:"PLINKO",currency:e,amount:i,payout:c,afterBalance:"1000",multiplier:o.toString(),clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{PLINKO:{riskLevel:r,numberOfRows:l}},type:"START_BET",actionIndex:0,betAmount:i,payoutAmount:null},{id:crypto.randomUUID(),data:{PLINKO:{result:t}},type:"END_BET",actionIndex:1,betAmount:null,payoutAmount:c}]};return await o1(250),{success:!0,data:u}}}var P9=A`
11400
+ `}}d([E()],d4.prototype,"isManualPlaying",void 0),d([E()],d4.prototype,"history",void 0),d([E()],d4.prototype,"wheelRisk",void 0),d([E()],d4.prototype,"numberOfSegments",void 0),d([E()],d4.prototype,"targetAngle",void 0),d([E()],d4.prototype,"resultSegment",void 0),d([E()],d4.prototype,"isWheelSpinning",void 0),d([n1("origami-wheel-manual")],d4.prototype,"_wheelManualEl",void 0),d([n1("origami-wheel-auto")],d4.prototype,"_wheelAutoEl",void 0),d4=d([D("origami-wheel-game")],d4);class G5{authToken;baseUrl;constructor(a,i){this.authToken=a,this.baseUrl=i+"/games/plinko"}async startBet(a){try{let i=await fetch(`${this.baseUrl}/play`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Origami-Trace":K1()},body:JSON.stringify({currency:a.currency,amount:a.amount,gameInputs:{riskLevel:a.riskLevel,numberOfRows:a.rowCount}})}),e=await i.json();if(i.ok&&!!e.id)return{success:!0,data:e};let r="alerts.gameError";switch(e?.errorCode){case"INSUFFICIENT_BALANCE":r="alerts.insufficientBalance";break;case"LIMIT_REACHED":r="alerts.betLimitReached";break}return{success:!1,error:S(r,a.language)}}catch(i){return{success:!1,error:S("alerts.gameError",a.language)}}}}class U5{edge;constructor(a){this.edge=a}async startBet(a){let{amount:i,currency:e,riskLevel:r,rowCount:l}=a,n=Na[this.edge][r][l],t=Array.from({length:l},()=>Math.random()<0.5?0:1),h=t.reduce((m,s)=>m+s,0),o=n[h]??0,c=K(i).mul(o).toString(),u={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",tenantUserId:"mock-user",gameId:"PLINKO",currency:e,amount:i,payout:c,afterBalance:"1000",multiplier:o.toString(),clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{PLINKO:{riskLevel:r,numberOfRows:l}},type:"START_BET",actionIndex:0,betAmount:i,payoutAmount:null},{id:crypto.randomUUID(),data:{PLINKO:{result:t}},type:"END_BET",actionIndex:1,betAmount:null,payoutAmount:c}]};return await h1(250),{success:!0,data:u}}}var P9=A`
11401
11401
  :host {
11402
11402
  width: 100%;
11403
11403
  height: 100%;
@@ -11669,7 +11669,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
11669
11669
  :host {
11670
11670
  height: 100%;
11671
11671
  }
11672
- `;class r6{queue=[];inflight=0;maxQueueSize;maxConcurrent;executor;constructor(a,i={}){this.executor=a,this.maxQueueSize=i.maxQueueSize??30,this.maxConcurrent=i.maxConcurrent??5}enqueue(a){if(this.queue.length>=this.maxQueueSize)return Promise.reject(new Error("Queue is full. Please slow down."));return new Promise((i,e)=>{this.queue.push({input:a,resolve:i,reject:e}),this.processQueue()})}async processQueue(){if(this.inflight>=this.maxConcurrent)return;let a=this.queue.shift();if(!a)return;this.inflight++;try{let i=await this.executor(a.input);a.resolve(i)}catch(i){a.reject(i instanceof Error?i:new Error(String(i)))}finally{this.inflight--,this.processQueue()}}get pendingCount(){return this.queue.length}get inflightCount(){return this.inflight}get totalCount(){return this.queue.length+this.inflight}get isIdle(){return this.queue.length===0&&this.inflight===0}clear(a="Request cancelled"){while(this.queue.length>0)this.queue.shift()?.reject(new Error(a))}}class v4 extends y1{static styles=[...y1.styles,ii];pendingResultsByBetId=new Map;betQueue=new r6((a)=>this.handleBetExecution(a),{maxQueueSize:3,maxConcurrent:5});get isGameInProgress(){return this.autobetInProgress||this.autobetStopping||this.ballsInFlight>0}get plinkoApi(){return this.isDemoMode?new U5(this.gameData.edge):new G5(this.gameData.authToken,this.gameData.baseUrl)}triggerBinHaptic(a){let i=Math.max(...this.binMultipliers),e=1,r=Math.max(0.000001,i-1),l=Math.max(0,Math.min(1,(a-1)/r)),n=Math.round(40+l*140);this.gameData?.hapticController?.trigger(n)}constructor(){super();this.history=[];this.riskLevel="MEDIUM_RISK";this.rowCount=12;this.ballsInFlight=0;new j1(this,[{key:" ",callback:()=>B1.clickBetButton(this.manualOrAuto,this._plinkoManualEl,this._plinkoAutoEl),options:{repeat:!0,repeatInterval:200,disabled:()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;return B1.isBetButtonDisabled(this.manualOrAuto,this._plinkoManualEl,this._plinkoAutoEl)}}}])}get binMultipliers(){return R0(this.gameData.edge,this.riskLevel,this.rowCount)}async handleBetExecution(a){if(!this.gameData?.currency)return{success:!1,error:S("alerts.gameError",this.gameData?.language||W)};let i=K(this.gameData.balance);try{if(this.isDemoMode&&i.lt(a))throw new Error(S("alerts.insufficientBalance",this.gameData?.language||W));this.gameData.updateBalance(i.minus(a));let e=await this.plinkoApi.startBet({language:this.gameData.language,currency:this.gameData.currency,amount:a,riskLevel:this.riskLevel,rowCount:this.rowCount});if(e.success){let{data:r}=e,l=Number(r.multiplier),t=r.betActions.filter((c)=>c.data?.PLINKO)[1]?.data?.PLINKO,o=(t&&"result"in t?t.result:[]).reduce((c,u)=>c+u,0);if(r.id)this.pendingResultsByBetId.set(r.id,{multiplier:l,payout:r.payout?K(r.payout):K(0)});if(this.updateHistoryWithBet(r),this.gameData.instantBetEnabled)this._plinkoContentEl?.triggerInstantResult?.(this.gameData.edge,l,r.id);else this._plinkoContentEl?.dropBallForResult(o,r.id);return e}else throw new Error(e.error)}catch(e){this.gameData.updateBalance(i);let r=e instanceof Error?e.message:S("alerts.gameError",this.gameData?.language||W);return this.showError(r),{success:!1,error:r}}}async queuedBetExecution(a){try{return await this.betQueue.enqueue(a)}catch(i){return{success:!1,error:i instanceof Error?i.message:S("errors.requestDropped",this.gameData?.language||W)}}}async plinkoPlay(){this.gameData?.soundController?.play("bet"),await this.queuedBetExecution(this.gameData?.betAmount??"0")}async executeAutobet(a,i){let e=await this.handleBetExecution(i);if(!e.success)return{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:e.error||S("alerts.errorProcessingBet",this.gameData?.language||W)};let{data:r}=e,l=K(r.payout??0).minus(r.amount??0),n=Q1(Number(r.multiplier));if(this.gameData.instantBetEnabled)await o1(75);else await o1(150);return{pnl:l,gameOutcome:n,hasError:!1}}resolveMultiplierAndWin(a){let i=a.detail.id;if(this.pendingResultsByBetId.has(i)){let e=this.pendingResultsByBetId.get(i),r=e.multiplier,l=e.payout;this.pendingResultsByBetId.delete(i);let n=K(r).gt(1),t=n?F0[this.rowCount].background[f4(this.gameData.edge,r,this.rowCount,this.riskLevel)]:void 0;return this.history=[...this.history,{multiplier:r,won:n,id:i,payout:l.toString(),color:t}],{multiplier:r,hasWon:n,betId:i,payout:l}}return console.error(`No pending result found for betId: ${i}`),{multiplier:1,hasWon:!1,betId:i,payout:K(0)}}_getPitchFromMultiplier(a){let i=Math.min(...this.binMultipliers),e=Math.max(...this.binMultipliers);return 1+(a-i)/(e-i||1)*0.5}playResultSound(a){let i=this._getPitchFromMultiplier(a);this.gameData?.soundController?.play("plinko-drop",void 0,i)}handleBinHit(a){let{multiplier:i,payout:e}=this.resolveMultiplierAndWin(a);this.gameData?.updateBalance(K(this.gameData.balance).plus(e)),this.triggerBinHaptic(i),this.playResultSound(i)}render(){let a=this.gameData?.mainWidth>=768,i=Math.max(...this.binMultipliers)||1,e=V1(this.gameData);return I`
11672
+ `;class r6{queue=[];inflight=0;maxQueueSize;maxConcurrent;executor;constructor(a,i={}){this.executor=a,this.maxQueueSize=i.maxQueueSize??30,this.maxConcurrent=i.maxConcurrent??5}enqueue(a){if(this.queue.length>=this.maxQueueSize)return Promise.reject(new Error("Queue is full. Please slow down."));return new Promise((i,e)=>{this.queue.push({input:a,resolve:i,reject:e}),this.processQueue()})}async processQueue(){if(this.inflight>=this.maxConcurrent)return;let a=this.queue.shift();if(!a)return;this.inflight++;try{let i=await this.executor(a.input);a.resolve(i)}catch(i){a.reject(i instanceof Error?i:new Error(String(i)))}finally{this.inflight--,this.processQueue()}}get pendingCount(){return this.queue.length}get inflightCount(){return this.inflight}get totalCount(){return this.queue.length+this.inflight}get isIdle(){return this.queue.length===0&&this.inflight===0}clear(a="Request cancelled"){while(this.queue.length>0)this.queue.shift()?.reject(new Error(a))}}class v4 extends y1{static styles=[...y1.styles,ii];pendingResultsByBetId=new Map;betQueue=new r6((a)=>this.handleBetExecution(a),{maxQueueSize:3,maxConcurrent:5});get isGameInProgress(){return this.autobetInProgress||this.autobetStopping||this.ballsInFlight>0}get plinkoApi(){return this.isDemoMode?new U5(this.gameData.edge):new G5(this.gameData.authToken,this.gameData.baseUrl)}triggerBinHaptic(a){let i=Math.max(...this.binMultipliers),e=1,r=Math.max(0.000001,i-1),l=Math.max(0,Math.min(1,(a-1)/r)),n=Math.round(40+l*140);this.gameData?.hapticController?.trigger(n)}constructor(){super();this.history=[];this.riskLevel="MEDIUM_RISK";this.rowCount=12;this.ballsInFlight=0;new j1(this,[{key:" ",callback:()=>B1.clickBetButton(this.manualOrAuto,this._plinkoManualEl,this._plinkoAutoEl),options:{repeat:!0,repeatInterval:200,disabled:()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;return B1.isBetButtonDisabled(this.manualOrAuto,this._plinkoManualEl,this._plinkoAutoEl)}}}])}get binMultipliers(){return R0(this.gameData.edge,this.riskLevel,this.rowCount)}async handleBetExecution(a){if(!this.gameData?.currency)return{success:!1,error:S("alerts.gameError",this.gameData?.language||W)};let i=K(this.gameData.balance);try{if(this.isDemoMode&&i.lt(a))throw new Error(S("alerts.insufficientBalance",this.gameData?.language||W));this.gameData.updateBalance(i.minus(a));let e=await this.plinkoApi.startBet({language:this.gameData.language,currency:this.gameData.currency,amount:a,riskLevel:this.riskLevel,rowCount:this.rowCount});if(e.success){let{data:r}=e,l=Number(r.multiplier),t=r.betActions.filter((c)=>c.data?.PLINKO)[1]?.data?.PLINKO,o=(t&&"result"in t?t.result:[]).reduce((c,u)=>c+u,0);if(r.id)this.pendingResultsByBetId.set(r.id,{multiplier:l,payout:r.payout?K(r.payout):K(0)});if(this.updateHistoryWithBet(r),this.gameData.instantBetEnabled)this._plinkoContentEl?.triggerInstantResult?.(this.gameData.edge,l,r.id);else this._plinkoContentEl?.dropBallForResult(o,r.id);return e}else throw new Error(e.error)}catch(e){this.gameData.updateBalance(i);let r=e instanceof Error?e.message:S("alerts.gameError",this.gameData?.language||W);return this.showError(r),{success:!1,error:r}}}async queuedBetExecution(a){try{return await this.betQueue.enqueue(a)}catch(i){return{success:!1,error:i instanceof Error?i.message:S("errors.requestDropped",this.gameData?.language||W)}}}async plinkoPlay(){this.gameData?.soundController?.play("bet"),await this.queuedBetExecution(this.gameData?.betAmount??"0")}async executeAutobet(a,i){let e=await this.handleBetExecution(i);if(!e.success)return{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:e.error||S("alerts.errorProcessingBet",this.gameData?.language||W)};let{data:r}=e,l=K(r.payout??0).minus(r.amount??0),n=Q1(Number(r.multiplier));if(this.gameData.instantBetEnabled)await h1(75);else await h1(150);return{pnl:l,gameOutcome:n,hasError:!1}}resolveMultiplierAndWin(a){let i=a.detail.id;if(this.pendingResultsByBetId.has(i)){let e=this.pendingResultsByBetId.get(i),r=e.multiplier,l=e.payout;this.pendingResultsByBetId.delete(i);let n=K(r).gt(1),t=n?F0[this.rowCount].background[f4(this.gameData.edge,r,this.rowCount,this.riskLevel)]:void 0;return this.history=[...this.history,{multiplier:r,won:n,id:i,payout:l.toString(),color:t}],{multiplier:r,hasWon:n,betId:i,payout:l}}return console.error(`No pending result found for betId: ${i}`),{multiplier:1,hasWon:!1,betId:i,payout:K(0)}}_getPitchFromMultiplier(a){let i=Math.min(...this.binMultipliers),e=Math.max(...this.binMultipliers);return 1+(a-i)/(e-i||1)*0.5}playResultSound(a){let i=this._getPitchFromMultiplier(a);this.gameData?.soundController?.play("plinko-drop",void 0,i)}handleBinHit(a){let{multiplier:i,payout:e}=this.resolveMultiplierAndWin(a);this.gameData?.updateBalance(K(this.gameData.balance).plus(e)),this.triggerBinHaptic(i),this.playResultSound(i)}render(){let a=this.gameData?.mainWidth>=768,i=Math.max(...this.binMultipliers)||1,e=V1(this.gameData);return I`
11673
11673
  <origami-game-layout style=${e} .gameType=${"PLINKO"} data-is-desktop=${a}>
11674
11674
  <origami-game-sidebar
11675
11675
  slot="control-panel"
@@ -12205,7 +12205,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
12205
12205
  grid-template-columns: 1fr 1fr;
12206
12206
  gap: 8px;
12207
12207
  }
12208
- `;var ml=(a,i)=>{return Math.floor(Math.random()*(i-a+1))+a};class h6{edge;constructor(a){this.edge=a}async startBet(a){let{amount:i,gameInputs:e}=a,r=ml(y0,k1),l=t2.getStrategy(e.mode),n,t;if(e.mode==="ROLL_BETWEEN_TWO")n=e.firstBounds,t=e.secondBounds;else n=e.bounds;let{winChancePercent:h,isWin:o}=l.evaluateOutcome(n,t,r),c=K(h).eq(0)?K(0):K(100-this.edge).div(h).round(4),u=o?c:K(0),m=K(i).mul(u).toString(),s={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",gameId:"ADVANCED_DICE",currency:a.currency??s1,amount:i,payout:m,afterBalance:"1000",multiplier:u.toString(),tenantUserId:"mock-user",clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{ADVANCED_DICE:e},type:"START_BET",actionIndex:0,betAmount:i,payoutAmount:null},{id:crypto.randomUUID(),data:{ADVANCED_DICE:{result:[r]}},type:"END_BET",actionIndex:1,betAmount:null,payoutAmount:m}]};return await o1(250),{success:!0,data:s}}}class s6{authToken;baseUrl;constructor(a,i){this.authToken=a,this.baseUrl=i+"/games/advanced-dice"}async startBet(a){try{let i=await fetch(`${this.baseUrl}/play`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Origami-Trace":K1()},body:JSON.stringify({currency:a.currency,amount:a.amount,gameInputs:a.gameInputs})}),e=await i.json();if(i.ok&&!!e.id)return{success:!0,data:e};let r="alerts.gameError";switch(e?.errorCode){case"INSUFFICIENT_BALANCE":r="alerts.insufficientBalance";break;case"LIMIT_REACHED":r="alerts.betLimitReached";break}return{success:!1,error:S(r,a.language)}}catch(i){return{success:!1,error:S("alerts.gameError",a.language)}}}}class u0 extends y1{static styles=[...y1.styles,li];get isToggleDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get areInputsDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}static ROLL_TYPE_ORDER=["ROLL_BETWEEN","ROLL_OUTSIDE","ROLL_BETWEEN_TWO"];constructor(){super();this.isManualPlaying=!1;this.showDice=!1;this.isWin=!0;this.resultValue=null;this.history=[];this.rollType="ROLL_BETWEEN";this.bounds={lower:2500,upper:7500};this.secondBounds={lower:6250,upper:8750};this._multiplierInputValid=!0;this._winChanceInputValid=!0;this._boundsInputValid=!0;new j1(this,[{key:" ",callback:()=>B1.clickBetButton(this.manualOrAuto,this._diceManualEl,this._diceAutoEl),options:{repeat:!0,repeatInterval:200,disabled:()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;return B1.isBetButtonDisabled(this.manualOrAuto,this._diceManualEl,this._diceAutoEl)}}},{key:"q",callback:this.cycleRollType.bind(this),options:{disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled}}])}cycleRollType(){let i=(u0.ROLL_TYPE_ORDER.indexOf(this.rollType)+1)%u0.ROLL_TYPE_ORDER.length;this.handleRollTypeChange(u0.ROLL_TYPE_ORDER[i])}get advancedDiceApi(){return this.isDemoMode?new h6(this.gameData.edge):new s6(this.gameData.authToken,this.gameData.baseUrl)}buildGameInputs(){switch(this.rollType){case"ROLL_BETWEEN":return{mode:"ROLL_BETWEEN",bounds:this.bounds};case"ROLL_OUTSIDE":return{mode:"ROLL_OUTSIDE",bounds:this.bounds};case"ROLL_BETWEEN_TWO":return{mode:"ROLL_BETWEEN_TWO",firstBounds:this.bounds,secondBounds:this.secondBounds}}}calculateWinChance(){return t2.getStrategy(this.rollType).calculateWinChance(this.bounds,this.secondBounds)}calculateMultiplier(){let a=this.calculateWinChance();return d1.calculateMultiplier(a,this.gameData.edge)}isValidWinChance(){let a=this.calculateWinChance(),i=d1.getMaxWinChance(this.gameData.edge);return a>=P1&&a<=i}async dicePlay(){this.isManualPlaying=!0,this.showDice=!1,this.gameData?.soundController?.play("bet"),await this.handleBetExecution(this.gameData.betAmount),this.isManualPlaying=!1}async handleBetExecution(a){if(!this.gameData.currency)throw new Error(S("alerts.gameError",this.gameData?.language||W));let i=this.buildGameInputs(),e={language:this.gameData.language,amount:a,currency:this.gameData.currency,gameInputs:i},r;if(this.isDemoMode&&K(this.gameData.balance).lt(e.amount))r={success:!1,error:S("alerts.insufficientBalance",this.gameData?.language||"en")};else r=await this.advancedDiceApi.startBet(e);if(r.success){if(!this.gameData.instantBetEnabled)this.gameData.soundController?.play("dice-roll").catch((c)=>{console.error("Failed to play sound:",c)});let l=this.isDemoMode?K(this.gameData.balance).minus(r.data.amount??0).plus(r.data.payout??0):K(r.data.afterBalance??0);this.gameData.updateBalance(l),this.showDice=!0;let{betActions:n}=r.data,t=n[n.length-1];if(!t)throw new Error("No action data received");let{result:h}=t.data.ADVANCED_DICE,o=h[0];if(this.resultValue=o,!this.gameData.instantBetEnabled)this.gameData?.hapticController?.trigger([10,20,30,40,30,20,10]);if(this.isWin=K(r.data.multiplier??0).gt(1),this.isWin)setTimeout(()=>{this.gameData.soundController?.play("win")},300);this.addToHistory(o/100,this.isWin,r.data.id??""),this.updateHistoryWithBet(r.data)}else this.showError(r.error);return r}addToHistory(a,i,e){this.history=[...this.history,{multiplier:a,won:i,id:e}]}async executeAutobet(a,i){let e=await this.handleBetExecution(i);if(!e.success)return{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:e.error||S("alerts.gameError",this.gameData?.language||W)};let r=e.data;this.updateHistoryWithBet(r);let l=K(r.payout??0).minus(r.amount??0),n=Q1(Number(r.multiplier));return await o1(300),await o1(this.getAutobetDelay()),{pnl:l,gameOutcome:n,hasError:!1}}handleRollTypeChange(a){this.rollType=a;let i=D8[a];if(i.bounds)this.bounds={...i.bounds};if(i.firstBounds)this.bounds={...i.firstBounds};if(i.secondBounds)this.secondBounds={...i.secondBounds}}handleBoundsChange(a){if(this.bounds=a.detail.bounds,a.detail.secondBounds)this.secondBounds=a.detail.secondBounds}handleMultiplierInputChange(a){this._multiplierInputValid=d1.isValidMultiplier(a.detail.multiplier,this.gameData.edge)}handleWinChanceInputChange(a){this._winChanceInputValid=d1.isValidWinChance(a.detail.winChance,this.gameData.edge)}handleBoundsInputValidityChange(a){this._boundsInputValid=a.detail.isValid}render(){let a=this.calculateMultiplier(),i=K(a).mul(this.gameData.betAmount).minus(this.gameData.betAmount).toFixed(4),e=!this._multiplierInputValid||!this._winChanceInputValid||!this._boundsInputValid||!this.isValidWinChance(),r=V1(this.gameData),l=this.gameData.mainWidth>=768;return I`
12208
+ `;var ml=(a,i)=>{return Math.floor(Math.random()*(i-a+1))+a};class h6{edge;constructor(a){this.edge=a}async startBet(a){let{amount:i,gameInputs:e}=a,r=ml(y0,k1),l=t2.getStrategy(e.mode),n,t;if(e.mode==="ROLL_BETWEEN_TWO")n=e.firstBounds,t=e.secondBounds;else n=e.bounds;let{winChancePercent:h,isWin:o}=l.evaluateOutcome(n,t,r),c=K(h).eq(0)?K(0):K(100-this.edge).div(h).round(4),u=o?c:K(0),m=K(i).mul(u).toString(),s={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",gameId:"ADVANCED_DICE",currency:a.currency??s1,amount:i,payout:m,afterBalance:"1000",multiplier:u.toString(),tenantUserId:"mock-user",clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{ADVANCED_DICE:e},type:"START_BET",actionIndex:0,betAmount:i,payoutAmount:null},{id:crypto.randomUUID(),data:{ADVANCED_DICE:{result:[r]}},type:"END_BET",actionIndex:1,betAmount:null,payoutAmount:m}]};return await h1(250),{success:!0,data:s}}}class s6{authToken;baseUrl;constructor(a,i){this.authToken=a,this.baseUrl=i+"/games/advanced-dice"}async startBet(a){try{let i=await fetch(`${this.baseUrl}/play`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Origami-Trace":K1()},body:JSON.stringify({currency:a.currency,amount:a.amount,gameInputs:a.gameInputs})}),e=await i.json();if(i.ok&&!!e.id)return{success:!0,data:e};let r="alerts.gameError";switch(e?.errorCode){case"INSUFFICIENT_BALANCE":r="alerts.insufficientBalance";break;case"LIMIT_REACHED":r="alerts.betLimitReached";break}return{success:!1,error:S(r,a.language)}}catch(i){return{success:!1,error:S("alerts.gameError",a.language)}}}}class u0 extends y1{static styles=[...y1.styles,li];get isToggleDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get areInputsDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}static ROLL_TYPE_ORDER=["ROLL_BETWEEN","ROLL_OUTSIDE","ROLL_BETWEEN_TWO"];constructor(){super();this.isManualPlaying=!1;this.showDice=!1;this.isWin=!0;this.resultValue=null;this.history=[];this.rollType="ROLL_BETWEEN";this.bounds={lower:2500,upper:7500};this.secondBounds={lower:6250,upper:8750};this._multiplierInputValid=!0;this._winChanceInputValid=!0;this._boundsInputValid=!0;new j1(this,[{key:" ",callback:()=>B1.clickBetButton(this.manualOrAuto,this._diceManualEl,this._diceAutoEl),options:{repeat:!0,repeatInterval:200,disabled:()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;return B1.isBetButtonDisabled(this.manualOrAuto,this._diceManualEl,this._diceAutoEl)}}},{key:"q",callback:this.cycleRollType.bind(this),options:{disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled}}])}cycleRollType(){let i=(u0.ROLL_TYPE_ORDER.indexOf(this.rollType)+1)%u0.ROLL_TYPE_ORDER.length;this.handleRollTypeChange(u0.ROLL_TYPE_ORDER[i])}get advancedDiceApi(){return this.isDemoMode?new h6(this.gameData.edge):new s6(this.gameData.authToken,this.gameData.baseUrl)}buildGameInputs(){switch(this.rollType){case"ROLL_BETWEEN":return{mode:"ROLL_BETWEEN",bounds:this.bounds};case"ROLL_OUTSIDE":return{mode:"ROLL_OUTSIDE",bounds:this.bounds};case"ROLL_BETWEEN_TWO":return{mode:"ROLL_BETWEEN_TWO",firstBounds:this.bounds,secondBounds:this.secondBounds}}}calculateWinChance(){return t2.getStrategy(this.rollType).calculateWinChance(this.bounds,this.secondBounds)}calculateMultiplier(){let a=this.calculateWinChance();return d1.calculateMultiplier(a,this.gameData.edge)}isValidWinChance(){let a=this.calculateWinChance(),i=d1.getMaxWinChance(this.gameData.edge);return a>=P1&&a<=i}async dicePlay(){this.isManualPlaying=!0,this.showDice=!1,this.gameData?.soundController?.play("bet"),await this.handleBetExecution(this.gameData.betAmount),this.isManualPlaying=!1}async handleBetExecution(a){if(!this.gameData.currency)throw new Error(S("alerts.gameError",this.gameData?.language||W));let i=this.buildGameInputs(),e={language:this.gameData.language,amount:a,currency:this.gameData.currency,gameInputs:i},r;if(this.isDemoMode&&K(this.gameData.balance).lt(e.amount))r={success:!1,error:S("alerts.insufficientBalance",this.gameData?.language||"en")};else r=await this.advancedDiceApi.startBet(e);if(r.success){if(!this.gameData.instantBetEnabled)this.gameData.soundController?.play("dice-roll").catch((c)=>{console.error("Failed to play sound:",c)});let l=this.isDemoMode?K(this.gameData.balance).minus(r.data.amount??0).plus(r.data.payout??0):K(r.data.afterBalance??0);this.gameData.updateBalance(l),this.showDice=!0;let{betActions:n}=r.data,t=n[n.length-1];if(!t)throw new Error("No action data received");let{result:h}=t.data.ADVANCED_DICE,o=h[0];if(this.resultValue=o,!this.gameData.instantBetEnabled)this.gameData?.hapticController?.trigger([10,20,30,40,30,20,10]);if(this.isWin=K(r.data.multiplier??0).gt(1),this.isWin)setTimeout(()=>{this.gameData.soundController?.play("win")},300);this.addToHistory(o/100,this.isWin,r.data.id??""),this.updateHistoryWithBet(r.data)}else this.showError(r.error);return r}addToHistory(a,i,e){this.history=[...this.history,{multiplier:a,won:i,id:e}]}async executeAutobet(a,i){let e=await this.handleBetExecution(i);if(!e.success)return{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:e.error||S("alerts.gameError",this.gameData?.language||W)};let r=e.data;this.updateHistoryWithBet(r);let l=K(r.payout??0).minus(r.amount??0),n=Q1(Number(r.multiplier));return await h1(300),await h1(this.getAutobetDelay()),{pnl:l,gameOutcome:n,hasError:!1}}handleRollTypeChange(a){this.rollType=a;let i=D8[a];if(i.bounds)this.bounds={...i.bounds};if(i.firstBounds)this.bounds={...i.firstBounds};if(i.secondBounds)this.secondBounds={...i.secondBounds}}handleBoundsChange(a){if(this.bounds=a.detail.bounds,a.detail.secondBounds)this.secondBounds=a.detail.secondBounds}handleMultiplierInputChange(a){this._multiplierInputValid=d1.isValidMultiplier(a.detail.multiplier,this.gameData.edge)}handleWinChanceInputChange(a){this._winChanceInputValid=d1.isValidWinChance(a.detail.winChance,this.gameData.edge)}handleBoundsInputValidityChange(a){this._boundsInputValid=a.detail.isValid}render(){let a=this.calculateMultiplier(),i=K(a).mul(this.gameData.betAmount).minus(this.gameData.betAmount).toFixed(4),e=!this._multiplierInputValid||!this._winChanceInputValid||!this._boundsInputValid||!this.isValidWinChance(),r=V1(this.gameData),l=this.gameData.mainWidth>=768;return I`
12209
12209
  <origami-game-layout style=${r} .gameType=${"ADVANCED_DICE"} data-is-desktop=${l}>
12210
12210
  <origami-game-sidebar
12211
12211
  data-is-desktop=${l}
@@ -12274,7 +12274,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
12274
12274
  @advanced-dice-bounds-input-validity-change=${this.handleBoundsInputValidityChange}
12275
12275
  ></origami-advanced-dice-content>
12276
12276
  </origami-game-layout>
12277
- `}}d([E()],u0.prototype,"isManualPlaying",void 0),d([E()],u0.prototype,"showDice",void 0),d([E()],u0.prototype,"isWin",void 0),d([E()],u0.prototype,"resultValue",void 0),d([E()],u0.prototype,"history",void 0),d([E()],u0.prototype,"rollType",void 0),d([E()],u0.prototype,"bounds",void 0),d([E()],u0.prototype,"secondBounds",void 0),d([E()],u0.prototype,"_multiplierInputValid",void 0),d([E()],u0.prototype,"_winChanceInputValid",void 0),d([E()],u0.prototype,"_boundsInputValid",void 0),d([n1("origami-advanced-dice-manual")],u0.prototype,"_diceManualEl",void 0),d([n1("origami-advanced-dice-auto")],u0.prototype,"_diceAutoEl",void 0),u0=d([D("origami-advanced-dice-game")],u0);class u6{authToken;baseUrl;constructor(a,i){this.authToken=a,this.baseUrl=i+"/games/roulette"}async startBet(a){try{let i=await fetch(`${this.baseUrl}/play`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Origami-Trace":K1()},body:JSON.stringify({currency:a.currency,gameInputs:a.gameInputs})}),e=await i.json();if(i.ok&&!!e.id)return{success:!0,data:e};let r="alerts.gameError";switch(e?.errorCode){case"INSUFFICIENT_BALANCE":r="alerts.insufficientBalance";break;case"LIMIT_REACHED":r="alerts.betLimitReached";break}return{success:!1,error:S(r,a.language)}}catch(i){return{success:!1,error:S("alerts.gameError",a.language)}}}}var vl=[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36],wl=[3,6,9,12,15,18,21,24,27,30,33,36],gl=[2,5,8,11,14,17,20,23,26,29,32,35],kl=[1,4,7,10,13,16,19,22,25,28,31,34],pl=[0,1,2,3,37],ni={straightBets:[],splitBets:[],streetBets:[],cornerBets:[],doubleStreetBets:[],parityBets:[],colorBets:[],halfBets:[],columnBets:[],dozenBets:[]};function bl(a,i,e){let r=K(0);for(let l of i.straightBets)if(l.value===a)r=r.plus(K(l.amount).times(36));for(let l of i.splitBets)if(l.values.includes(a))r=r.plus(K(l.amount).times(18));for(let l of i.streetBets)if(l.values.includes(a))r=r.plus(K(l.amount).times(12));for(let l of i.cornerBets)if(l.values.includes(a))r=r.plus(K(l.amount).times(9));for(let l of i.doubleStreetBets)if(l.values.includes(a))r=r.plus(K(l.amount).times(6));if(e&&"basketBets"in i){for(let l of i.basketBets)if(pl.includes(a))r=r.plus(K(l.amount).times(7))}if(a>=1&&a<=36){for(let l of i.parityBets){let n=a%2===0;if(l.parity==="EVEN"&&n||l.parity==="ODD"&&!n)r=r.plus(K(l.amount).times(2))}for(let l of i.colorBets){let n=vl.includes(a);if(l.color==="RED"&&n||l.color==="BLACK"&&!n)r=r.plus(K(l.amount).times(2))}for(let l of i.halfBets)if(l.half==="LOW"&&a<=18||l.half==="HIGH"&&a>18)r=r.plus(K(l.amount).times(2));for(let l of i.columnBets)if(l.column==="TOP"&&wl.includes(a)||l.column==="MIDDLE"&&gl.includes(a)||l.column==="BOTTOM"&&kl.includes(a))r=r.plus(K(l.amount).times(3));for(let l of i.dozenBets){let n=a>=1&&a<=12,t=a>=13&&a<=24,h=a>=25&&a<=36;if(l.dozen==="FIRST"&&n||l.dozen==="SECOND"&&t||l.dozen==="THIRD"&&h)r=r.plus(K(l.amount).times(3))}}return r}function zl(a,i){let e=K(0);for(let r of a.straightBets)e=e.plus(r.amount);for(let r of a.splitBets)e=e.plus(r.amount);for(let r of a.streetBets)e=e.plus(r.amount);for(let r of a.cornerBets)e=e.plus(r.amount);for(let r of a.doubleStreetBets)e=e.plus(r.amount);for(let r of a.parityBets)e=e.plus(r.amount);for(let r of a.colorBets)e=e.plus(r.amount);for(let r of a.halfBets)e=e.plus(r.amount);for(let r of a.columnBets)e=e.plus(r.amount);for(let r of a.dozenBets)e=e.plus(r.amount);if(i&&"basketBets"in a)for(let r of a.basketBets)e=e.plus(r.amount);return e}class c6{async startBet(a){let{gameInputs:i,currency:e}=a,r=i.type===t1.AMERICAN,l=r?37:36,n=Math.floor(Math.random()*(l+1)),t=i.inputs,h=zl(t,r),o=bl(n,t,r),c=h.gt(0)?o.div(h):K(0),u={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",tenantUserId:"mock-user",gameId:"ROULETTE",currency:e??s1,amount:h.toString(),payout:o.toString(),afterBalance:"1000",multiplier:c.toString(),clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{ROULETTE:i},type:"START_BET",actionIndex:0,betAmount:h.toString(),payoutAmount:null},{id:crypto.randomUUID(),data:{ROULETTE:{type:r?"american":"european",betOutcomes:{winningBets:ni,losingBets:ni},result:[n]}},type:"END_BET",actionIndex:1,betAmount:null,payoutAmount:o.toString()}]};return await o1(250),{success:!0,data:u}}}var ti=A`
12277
+ `}}d([E()],u0.prototype,"isManualPlaying",void 0),d([E()],u0.prototype,"showDice",void 0),d([E()],u0.prototype,"isWin",void 0),d([E()],u0.prototype,"resultValue",void 0),d([E()],u0.prototype,"history",void 0),d([E()],u0.prototype,"rollType",void 0),d([E()],u0.prototype,"bounds",void 0),d([E()],u0.prototype,"secondBounds",void 0),d([E()],u0.prototype,"_multiplierInputValid",void 0),d([E()],u0.prototype,"_winChanceInputValid",void 0),d([E()],u0.prototype,"_boundsInputValid",void 0),d([n1("origami-advanced-dice-manual")],u0.prototype,"_diceManualEl",void 0),d([n1("origami-advanced-dice-auto")],u0.prototype,"_diceAutoEl",void 0),u0=d([D("origami-advanced-dice-game")],u0);class u6{authToken;baseUrl;constructor(a,i){this.authToken=a,this.baseUrl=i+"/games/roulette"}async startBet(a){try{let i=await fetch(`${this.baseUrl}/play`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Origami-Trace":K1()},body:JSON.stringify({currency:a.currency,gameInputs:a.gameInputs})}),e=await i.json();if(i.ok&&!!e.id)return{success:!0,data:e};let r="alerts.gameError";switch(e?.errorCode){case"INSUFFICIENT_BALANCE":r="alerts.insufficientBalance";break;case"LIMIT_REACHED":r="alerts.betLimitReached";break}return{success:!1,error:S(r,a.language)}}catch(i){return{success:!1,error:S("alerts.gameError",a.language)}}}}var vl=[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36],wl=[3,6,9,12,15,18,21,24,27,30,33,36],gl=[2,5,8,11,14,17,20,23,26,29,32,35],kl=[1,4,7,10,13,16,19,22,25,28,31,34],pl=[0,1,2,3,37],ni={straightBets:[],splitBets:[],streetBets:[],cornerBets:[],doubleStreetBets:[],parityBets:[],colorBets:[],halfBets:[],columnBets:[],dozenBets:[]};function bl(a,i,e){let r=K(0);for(let l of i.straightBets)if(l.value===a)r=r.plus(K(l.amount).times(36));for(let l of i.splitBets)if(l.values.includes(a))r=r.plus(K(l.amount).times(18));for(let l of i.streetBets)if(l.values.includes(a))r=r.plus(K(l.amount).times(12));for(let l of i.cornerBets)if(l.values.includes(a))r=r.plus(K(l.amount).times(9));for(let l of i.doubleStreetBets)if(l.values.includes(a))r=r.plus(K(l.amount).times(6));if(e&&"basketBets"in i){for(let l of i.basketBets)if(pl.includes(a))r=r.plus(K(l.amount).times(7))}if(a>=1&&a<=36){for(let l of i.parityBets){let n=a%2===0;if(l.parity==="EVEN"&&n||l.parity==="ODD"&&!n)r=r.plus(K(l.amount).times(2))}for(let l of i.colorBets){let n=vl.includes(a);if(l.color==="RED"&&n||l.color==="BLACK"&&!n)r=r.plus(K(l.amount).times(2))}for(let l of i.halfBets)if(l.half==="LOW"&&a<=18||l.half==="HIGH"&&a>18)r=r.plus(K(l.amount).times(2));for(let l of i.columnBets)if(l.column==="TOP"&&wl.includes(a)||l.column==="MIDDLE"&&gl.includes(a)||l.column==="BOTTOM"&&kl.includes(a))r=r.plus(K(l.amount).times(3));for(let l of i.dozenBets){let n=a>=1&&a<=12,t=a>=13&&a<=24,h=a>=25&&a<=36;if(l.dozen==="FIRST"&&n||l.dozen==="SECOND"&&t||l.dozen==="THIRD"&&h)r=r.plus(K(l.amount).times(3))}}return r}function zl(a,i){let e=K(0);for(let r of a.straightBets)e=e.plus(r.amount);for(let r of a.splitBets)e=e.plus(r.amount);for(let r of a.streetBets)e=e.plus(r.amount);for(let r of a.cornerBets)e=e.plus(r.amount);for(let r of a.doubleStreetBets)e=e.plus(r.amount);for(let r of a.parityBets)e=e.plus(r.amount);for(let r of a.colorBets)e=e.plus(r.amount);for(let r of a.halfBets)e=e.plus(r.amount);for(let r of a.columnBets)e=e.plus(r.amount);for(let r of a.dozenBets)e=e.plus(r.amount);if(i&&"basketBets"in a)for(let r of a.basketBets)e=e.plus(r.amount);return e}class c6{async startBet(a){let{gameInputs:i,currency:e}=a,r=i.type===t1.AMERICAN,l=r?37:36,n=Math.floor(Math.random()*(l+1)),t=i.inputs,h=zl(t,r),o=bl(n,t,r),c=h.gt(0)?o.div(h):K(0),u={id:crypto.randomUUID(),tenantId:"origami-casino",userId:"mock-user",tenantUserId:"mock-user",gameId:"ROULETTE",currency:e??s1,amount:h.toString(),payout:o.toString(),afterBalance:"1000",multiplier:c.toString(),clientSeed:"mock-seed",randomValue:"mock-random",proof:"mock-proof",nonce:1,betActions:[{id:crypto.randomUUID(),data:{ROULETTE:i},type:"START_BET",actionIndex:0,betAmount:h.toString(),payoutAmount:null},{id:crypto.randomUUID(),data:{ROULETTE:{type:r?"american":"european",betOutcomes:{winningBets:ni,losingBets:ni},result:[n]}},type:"END_BET",actionIndex:1,betAmount:null,payoutAmount:o.toString()}]};return await h1(250),{success:!0,data:u}}}var ti=A`
12278
12278
  :host {
12279
12279
  display: block;
12280
12280
  width: 100%;
@@ -13965,7 +13965,7 @@ var vi=Object.create;var{getPrototypeOf:wi,defineProperty:p6,getOwnPropertyNames
13965
13965
  :host {
13966
13966
  height: 100%;
13967
13967
  }
13968
- `;class k4 extends y1{static styles=[...y1.styles,mi];newBalance=null;ballLandResolver=null;constructor(){super();this.isManualPlaying=!1;this.betResult=null;this.history=[];this.perClickAmount="1";this.hitNumber=null;this.showMobileOverlay=!1;this.displayedHitNumber=null;this.lastResultNumber=null;this.showWinPopup=!1;this.chipEvents=[];new j1(this,[{key:" ",callback:()=>B1.clickBetButton(this.manualOrAuto,this._manualEl,this._autoEl),options:{repeat:!0,repeatInterval:200,disabled:()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;return B1.isBetButtonDisabled(this.manualOrAuto,this._manualEl,this._autoEl)}}},{key:"q",callback:()=>this.adjustPerClickAmount("double"),options:{repeat:!0,repeatInterval:200,disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled}},{key:"r",callback:()=>this.adjustPerClickAmount("half"),options:{repeat:!0,repeatInterval:200,disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled}},{key:"e",callback:()=>this.adjustPerClickAmount("reset"),options:{disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled}},{key:"w",callback:()=>this.handleClear(),options:{disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled||this.derivedChips.size===0}},{key:"a",callback:()=>this.handleAdjustTotalBet("half"),options:{repeat:!0,repeatInterval:200,disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled||this.derivedChips.size===0}},{key:"s",callback:()=>this.handleAdjustTotalBet("double"),options:{repeat:!0,repeatInterval:200,disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled||this.derivedChips.size===0||this.isDoubleDisabled}},{key:"d",callback:()=>this.handleClear(),options:{disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled||this.derivedChips.size===0}},{key:"z",callback:()=>this.handleUndo(),options:{repeat:!0,repeatInterval:200,disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled||!this.canUndo}}])}get rouletteType(){let a=this.gameData?.edge;if(a===2.7)return t1.EUROPEAN;else if(a===5.3)return t1.AMERICAN;else throw new Error(`Unsupported roulette edge: ${a}`)}get maxPerClickAmount(){let a=K(this.gameData?.maxBet??0),i=K(this.gameData?.balance??0).minus(this.totalBetAmount),e=F2(a,i);return e.lt(0)?"0":e.toString()}adjustPerClickAmount(a){let i=K(this.perClickAmount||"0"),e=this.gameData?.currencyDecimals??2,r=K(this.gameData?.minBet??0),l=K(this.maxPerClickAmount),n;if(a==="reset")n=r;else if(a==="half"){if(i.lte(0))return;n=m0(r,F2(i.div(2),l))}else if(i.eq(0))n=r.gt(0)?r:K(1).div(10**e);else n=m0(r,F2(i.mul(2),l));this.perClickAmount=n.toFixed(e),this.gameData?.soundController?.play("half-double")}get derivedChips(){return o2.deriveState(this.chipEvents,K(this.gameData?.maxBet??0))}get rouletteApi(){return this.isDemoMode?new c6:new u6(this.gameData.authToken,this.gameData.baseUrl)}get isToggleDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get areInputsDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get canUndo(){return this.chipEvents.length>0}get canClear(){return this.derivedChips.size>0}get totalBetAmount(){return v9(this.derivedChips)}get maxAllowedAmount(){return 0}onBetAmountChange=(a,i)=>{if(K(a).eq(0))return;let e=K(i).div(K(a));this.chipEvents=[...this.chipEvents,{type:"multiplier-change",multiplier:e.toNumber()}]};get isDoubleDisabled(){return K(this.totalBetAmount).times(2).gt(this.gameData?.balance??0)}get maxPossiblePayout(){return E1.findMaxPayoutTile(this.derivedChips,this.rouletteType).maxPayout}watchDerivedChips(){if(!this.gameData?.updateBetAmount)return;let a=Array.from(this.derivedChips.values()).reduce((r,l)=>{return r.plus(l)},K(0)),i=this.gameData.currencyDecimals??0,e=a.toFixed(i);this.gameData.updateBetAmount(K(e))}addChip(a,i){let e=parseFloat(i)||0;if(e<=0)return;this.chipEvents=[...this.chipEvents,{type:"add",position:a,amount:e}],this.gameData?.soundController?.play("half-double")}handlePerClickAmountChange=(a)=>{this.perClickAmount=a.detail.amount};isMaxPayoutExceeded(a){let{maxPayout:i}=E1.findMaxPayoutTile(o2.deriveState(a,K(this.gameData?.maxBet??0)),this.rouletteType);return K(i).gt(this.gameData?.maxPayout??0)}handleGridClick=(a)=>{let{position:i,remove:e}=a.detail,r=parseFloat(this.perClickAmount)||0;if(r<=0)return;if(e){if(!this.derivedChips.has(i))return;this.chipEvents=[...this.chipEvents,{type:"add",position:i,amount:-r}],this.gameData?.soundController?.play("half-double");return}if(K(r).gt(this.maxPerClickAmount))return;if(this.isMaxPayoutExceeded([...this.chipEvents,{type:"add",position:i,amount:r}])){this.showError(S("alerts.maxPayoutExceeded",this.gameData?.language||W));return}if(K(this.totalBetAmount).plus(r).gt(this.gameData?.balance??0))return;this.addChip(i,this.perClickAmount)};handleUndo=()=>{this.chipEvents=o2.undoEvent(this.chipEvents)};handleClear=()=>{this.gameData?.soundController?.play("keno-clear"),this.chipEvents=[]};handleAdjustTotalBet=(a)=>{if(this.derivedChips.size===0)return;let i=[...this.chipEvents,{type:"multiplier-change",multiplier:a==="half"?0.5:2}];if(this.isMaxPayoutExceeded(i)){this.showError(S("alerts.maxPayoutExceeded",this.gameData?.language||W));return}if(this.chipEvents=i,this.totalBetAmount===0)this.chipEvents=[]};addToHistory(a,i,e,r){this.history=[...this.history,{multiplier:a,won:i,id:e,hitNumber:r}]}extractHitNumberFromActions(a){for(let i=a.length-1;i>=0;i--){let r=a[i]?.data?.ROULETTE?.result?.[0];if(typeof r==="number")return r}return null}applyBetResult(a){this.betResult=a;let i=this.extractHitNumberFromActions(a.betActions);if(i!==null)this.hitNumber=i;let e=Number(a.multiplier??0),r=e>=1;if(this.addToHistory(e,r,a.id??"",i??0),this.updateHistoryWithBet(a),this.showWinPopup=r,e>1)this.playSeasonalWin();this.displayedHitNumber=this.hitNumber??i,this.lastResultNumber=this.displayedHitNumber}async waitForAutobetDisplay(a){if(!this.gameData?.instantBetEnabled){if(await o1(200),a)await o1(150);await o1(300)}await o1(this.getAutobetDelay())}async handleBetExecution(){if(!this.gameData?.currency)return{success:!1,error:S("alerts.gameError",this.gameData?.language||W)};let a=this.derivedChips;if(a.size===0)return{success:!1,error:S("alerts.gameError",this.gameData?.language||W)};let i=_3(a,this.rouletteType),e=K(this.gameData.balance);try{if(this.isDemoMode&&e.lt(this.totalBetAmount))throw new Error(S("alerts.insufficientBalance",this.gameData?.language||W));if(this.gameData.updateBalance(e.minus(this.totalBetAmount)),this.isMaxPayoutExceeded(this.chipEvents))throw new Error(S("alerts.maxPayoutExceeded",this.gameData?.language||W));let r=await this.rouletteApi.startBet({currency:this.gameData.currency,language:this.gameData.language,gameInputs:i});if(r.success){let{data:l}=r;return this.betResult=l,this.hitNumber=this.extractHitNumberFromActions(l.betActions),this.newBalance=this.isDemoMode?e.minus(l.amount??0).plus(l.payout??0):K(l.afterBalance??0),r}else throw new Error(r.error)}catch(r){this.gameData.updateBalance(e);let l=r instanceof Error?r.message:S("alerts.gameError",this.gameData?.language||W);return this.showError(l),{success:!1,error:l}}}handleBallLand=()=>{if(this.ballLandResolver)this.ballLandResolver(),this.ballLandResolver=null;if(this.betResult)this.applyBetResult(this.betResult);let a=(this.gameData?.mainWidth??0)<768,i=this.gameData?.instantBetEnabled??!1;if(a&&!i)setTimeout(()=>{this.isManualPlaying=!1,this.showMobileOverlay=!1},500);else this.isManualPlaying=!1,this.showMobileOverlay=!1;if(this.newBalance)this.gameData.updateBalance(this.newBalance),this.newBalance=null};async roulettePlay(){this.isManualPlaying=!0,this.hitNumber=null,this.showWinPopup=!1,this.gameData?.soundController?.play("bet");let a=this.gameData?.instantBetEnabled??!1;if(!a)this.showMobileOverlay=!0;if(!(await this.handleBetExecution()).success){this.isManualPlaying=!1,this.showMobileOverlay=!1;return}if(a)this.handleBallLand()}async executeAutobet(a,i){this.hitNumber=null,this.showWinPopup=!1;let e=this.gameData?.instantBetEnabled??!1,r=null;if(!e)r=new Promise((m)=>{this.ballLandResolver=m}),this.showMobileOverlay=!0;let l=await this.handleBetExecution();if(!l.success)return this.ballLandResolver=null,this.showMobileOverlay=!1,{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:l.error||S("alerts.errorProcessingBet",this.gameData?.language||W)};let n=l.data,t=K(n.payout??0).minus(n.amount??0),h=Number(n.multiplier),o=Q1(h),c=h>=1,u=this.extractHitNumberFromActions(n.betActions);if(u!==null)this.hitNumber=u;if(this.betResult=n,await this.executeInstantOrAnimated(async()=>{this.applyBetResult(n),this.showMobileOverlay=!1},async()=>{if(r)await r}),this.newBalance)this.gameData.updateBalance(this.newBalance),this.newBalance=null;return await this.waitForAutobetDisplay(c),this.showWinPopup=!1,{pnl:t,gameOutcome:o,hasError:!1}}render(){let a=this.gameData?.mainWidth>=768,i=this.totalBetAmount===0,e=V1(this.gameData);return I`
13968
+ `;var yl=500;class k4 extends y1{static styles=[...y1.styles,mi];newBalance=null;ballLandResolver=null;constructor(){super();this.isManualPlaying=!1;this.betResult=null;this.history=[];this.perClickAmount="1";this.hitNumber=null;this.showMobileOverlay=!1;this.displayedHitNumber=null;this.lastResultNumber=null;this.showWinPopup=!1;this.chipEvents=[];new j1(this,[{key:" ",callback:()=>B1.clickBetButton(this.manualOrAuto,this._manualEl,this._autoEl),options:{repeat:!0,repeatInterval:200,disabled:()=>{if(!this.gameData?.hotkeysOpenEnabled)return!0;return B1.isBetButtonDisabled(this.manualOrAuto,this._manualEl,this._autoEl)}}},{key:"q",callback:()=>this.adjustPerClickAmount("double"),options:{repeat:!0,repeatInterval:200,disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled}},{key:"r",callback:()=>this.adjustPerClickAmount("half"),options:{repeat:!0,repeatInterval:200,disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled}},{key:"e",callback:()=>this.adjustPerClickAmount("reset"),options:{disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled}},{key:"w",callback:()=>this.handleClear(),options:{disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled||this.derivedChips.size===0}},{key:"a",callback:()=>this.handleAdjustTotalBet("half"),options:{repeat:!0,repeatInterval:200,disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled||this.derivedChips.size===0}},{key:"s",callback:()=>this.handleAdjustTotalBet("double"),options:{repeat:!0,repeatInterval:200,disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled||this.derivedChips.size===0||this.isDoubleDisabled}},{key:"d",callback:()=>this.handleClear(),options:{disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled||this.derivedChips.size===0}},{key:"z",callback:()=>this.handleUndo(),options:{repeat:!0,repeatInterval:200,disabled:()=>this.areInputsDisabled||!this.gameData?.hotkeysOpenEnabled||!this.canUndo}}])}get rouletteType(){let a=this.gameData?.edge;if(a===2.7)return t1.EUROPEAN;else if(a===5.3)return t1.AMERICAN;else throw new Error(`Unsupported roulette edge: ${a}`)}get maxPerClickAmount(){let a=K(this.gameData?.maxBet??0),i=K(this.gameData?.balance??0).minus(this.totalBetAmount),e=F2(a,i);return e.lt(0)?"0":e.toString()}adjustPerClickAmount(a){let i=K(this.perClickAmount||"0"),e=this.gameData?.currencyDecimals??2,r=K(this.gameData?.minBet??0),l=K(this.maxPerClickAmount),n;if(a==="reset")n=r;else if(a==="half"){if(i.lte(0))return;n=m0(r,F2(i.div(2),l))}else if(i.eq(0))n=r.gt(0)?r:K(1).div(10**e);else n=m0(r,F2(i.mul(2),l));this.perClickAmount=n.toFixed(e),this.gameData?.soundController?.play("half-double")}get derivedChips(){return o2.deriveState(this.chipEvents,K(this.gameData?.maxBet??0))}get rouletteApi(){return this.isDemoMode?new c6:new u6(this.gameData.authToken,this.gameData.baseUrl)}get isToggleDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get areInputsDisabled(){return this.isManualPlaying||this.autobetInProgress||this.autobetStopping}get canUndo(){return this.chipEvents.length>0}get canClear(){return this.derivedChips.size>0}get totalBetAmount(){return v9(this.derivedChips)}onBetAmountChange=(a,i)=>{if(K(a).eq(0))return;let e=K(i).div(K(a));this.chipEvents=[...this.chipEvents,{type:"multiplier-change",multiplier:e.toNumber()}]};get isDoubleDisabled(){return K(this.totalBetAmount).times(2).gt(this.gameData?.balance??0)}get maxPossiblePayout(){return E1.findMaxPayoutTile(this.derivedChips,this.rouletteType).maxPayout}watchDerivedChips(){if(!this.gameData?.updateBetAmount)return;let a=Array.from(this.derivedChips.values()).reduce((r,l)=>{return r.plus(l)},K(0)),i=this.gameData.currencyDecimals??0,e=a.toFixed(i);this.gameData.updateBetAmount(K(e))}addChip(a,i){let e=parseFloat(i)||0;if(e<=0)return;this.chipEvents=[...this.chipEvents,{type:"add",position:a,amount:e}],this.gameData?.soundController?.play("half-double")}handlePerClickAmountChange=(a)=>{this.perClickAmount=a.detail.amount};isMaxPayoutExceeded(a){let{maxPayout:i}=E1.findMaxPayoutTile(o2.deriveState(a,K(this.gameData?.maxBet??0)),this.rouletteType);return K(i).gt(this.gameData?.maxPayout??0)}handleGridClick=(a)=>{let{position:i,remove:e}=a.detail,r=parseFloat(this.perClickAmount)||0;if(r<=0)return;if(e){if(!this.derivedChips.has(i))return;this.chipEvents=[...this.chipEvents,{type:"add",position:i,amount:-r}],this.gameData?.soundController?.play("half-double");return}if(K(r).gt(this.maxPerClickAmount))return;if(this.isMaxPayoutExceeded([...this.chipEvents,{type:"add",position:i,amount:r}])){this.showError(S("alerts.maxPayoutExceeded",this.gameData?.language||W));return}if(K(this.totalBetAmount).plus(r).gt(this.gameData?.balance??0))return;this.addChip(i,this.perClickAmount)};handleUndo=()=>{this.chipEvents=o2.undoEvent(this.chipEvents)};handleClear=()=>{this.gameData?.soundController?.play("keno-clear"),this.chipEvents=[]};handleAdjustTotalBet=(a)=>{if(this.derivedChips.size===0)return;let i=[...this.chipEvents,{type:"multiplier-change",multiplier:a==="half"?0.5:2}];if(this.isMaxPayoutExceeded(i)){this.showError(S("alerts.maxPayoutExceeded",this.gameData?.language||W));return}if(this.chipEvents=i,this.totalBetAmount===0)this.chipEvents=[]};addToHistory(a,i,e,r){this.history=[...this.history.filter((l)=>l.id!==e),{multiplier:a,won:i,id:e,hitNumber:r}]}extractHitNumberFromActions(a){for(let i=a.length-1;i>=0;i--){let r=a[i]?.data?.ROULETTE?.result?.[0];if(typeof r==="number")return r}return null}applyBetResult(a){this.betResult=a;let i=this.extractHitNumberFromActions(a.betActions);if(i!==null)this.hitNumber=i;let e=Number(a.multiplier??0),r=e>=1;if(this.addToHistory(e,r,a.id??"",i??0),this.updateHistoryWithBet(a),this.showWinPopup=r,e>1)this.playSeasonalWin();this.displayedHitNumber=this.hitNumber??i,this.lastResultNumber=this.displayedHitNumber}async waitForAutobetDisplay(a){await this.ensureMinimumDisplayTime(a,500,350),await h1(this.getAutobetDelay())}async handleBetExecution(){if(!this.gameData?.currency)return{success:!1,error:S("alerts.gameError",this.gameData?.language||W)};let a=this.derivedChips;if(a.size===0)return{success:!1,error:S("alerts.gameError",this.gameData?.language||W)};let i=_3(a,this.rouletteType),e=K(this.gameData.balance);try{if(this.isDemoMode&&e.lt(this.totalBetAmount))throw new Error(S("alerts.insufficientBalance",this.gameData?.language||W));if(this.isMaxPayoutExceeded(this.chipEvents))throw new Error(S("alerts.maxPayoutExceeded",this.gameData?.language||W));let r=await this.rouletteApi.startBet({currency:this.gameData.currency,language:this.gameData.language,gameInputs:i});if(r.success){let{data:l}=r;return this.betResult=l,this.hitNumber=this.extractHitNumberFromActions(l.betActions),this.newBalance=this.isDemoMode?e.minus(l.amount??0).plus(l.payout??0):K(l.afterBalance??0),r}else throw new Error(r.error)}catch(r){let l=r instanceof Error?r.message:S("alerts.gameError",this.gameData?.language||W);return this.showError(l),{success:!1,error:l}}}handleBallLand=()=>{if(this.ballLandResolver)this.ballLandResolver(),this.ballLandResolver=null;if(this.betResult)this.applyBetResult(this.betResult),this.gameData?.hapticController?.trigger([10,20,30,40,30,20,10]);let a=(this.gameData?.mainWidth??0)<768,i=this.gameData?.instantBetEnabled??!1;if(a&&!i)setTimeout(()=>{this.isManualPlaying=!1,this.showMobileOverlay=!1},yl);else this.isManualPlaying=!1,this.showMobileOverlay=!1;if(this.newBalance)this.gameData.updateBalance(this.newBalance),this.newBalance=null};async roulettePlay(){this.isManualPlaying=!0,this.hitNumber=null,this.betResult=null,this.showWinPopup=!1,this.gameData?.soundController?.play("bet"),this.gameData?.hapticController?.lightClick();let a=this.gameData?.instantBetEnabled??!1;if(!a)this.showMobileOverlay=!0;if(!(await this.handleBetExecution()).success){this.isManualPlaying=!1,this.showMobileOverlay=!1;return}if(a)this.handleBallLand()}async executeAutobet(a,i){try{this.hitNumber=null,this.betResult=null,this.showWinPopup=!1;let e=this.gameData?.instantBetEnabled??!1;if(e)await this.forceUIUpdate();let r=null;if(!e)r=new Promise((m)=>{this.ballLandResolver=m}),this.showMobileOverlay=!0;let l=await this.handleBetExecution();if(!l.success)return this.ballLandResolver=null,this.showMobileOverlay=!1,{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:l.error||S("alerts.errorProcessingBet",this.gameData?.language||W)};let n=l.data,t=K(n.payout??0).minus(n.amount??0),h=Number(n.multiplier),o=Q1(h),c=h>=1,u=this.extractHitNumberFromActions(n.betActions);if(u!==null)this.hitNumber=u;if(this.betResult=n,await this.executeInstantOrAnimated(async()=>{this.applyBetResult(n),this.showMobileOverlay=!1},async()=>{if(r)await r}),this.newBalance)this.gameData.updateBalance(this.newBalance),this.newBalance=null;return await this.waitForAutobetDisplay(c),this.showWinPopup=!1,{pnl:t,gameOutcome:o,hasError:!1}}catch(e){return console.error("Error in executeAutobet:",e),this.ballLandResolver=null,this.showMobileOverlay=!1,{pnl:K(0),gameOutcome:"Draw",hasError:!0,errorMessage:S("alerts.gameError",this.gameData?.language||W)}}}render(){let a=this.gameData?.mainWidth>=768,i=this.totalBetAmount===0,e=V1(this.gameData);return I`
13969
13969
  <origami-game-layout
13970
13970
  footer-position="below"
13971
13971
  style=${e}