<!DOCTYPE html>
<html id="feProdAWS03" lang="id">
<head>
	<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>TITAN777 – Platform Game Daring Modern Sistem Akses Cepat OK</title>
<meta name="description" content="Mainkan game favoritmu TITAN777, platform game daring modern dengan sistem akses cepat dan aman. Daftar sekarang untuk pengalaman bermain tak terlupakan OK">
<meta name="keywords" content="titan777, titan777 login, titan777 daftar, titan777 link alternatif">
<link rel="preconnect" href="https://widget.robotaset.com">
<link rel="preconnect" href="https://lb.robotaset.com">
<link rel="preconnect" href="https://cdn.robotaset.com" crossorigin>
<link rel="dns-prefetch" href="//cdn.robotaset.com">
<link rel="preload" href="https://cdn.robotaset.com/assets/thirdparty/font-awesome/webfonts/fa-solid-900.woff2" as="font" type="font/woff2" crossorigin>
<link rel="icon" type="image/x-icon" href="https://cdn.robotaset.com/assets/tpl/a2697c19ad/images/favicon.ico">
<link href="https://cdn.robotaset.com/assets/css/fonts.google.ubuntu.min.css" media="print" onload="this.media='all'" rel="stylesheet">
<link href="https://cdn.robotaset.com/assets/thirdparty/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.robotaset.com/assets/thirdparty/font-awesome/css/brands.min.css" media="print" onload="this.media='all'" rel="stylesheet">
<link href="https://cdn.robotaset.com/assets/thirdparty/font-awesome/css/solid.min.css" media="print" onload="this.media='all'" rel="stylesheet">
<link href="https://cdn.robotaset.com/assets/thirdparty/font-awesome/css/fontawesome.min.css" media="print" onload="this.media='all'" rel="stylesheet">
<link href="https://cdn.robotaset.com/assets/thirdparty/owl-carousel/css/owl.carousel.min.css" rel="stylesheet">
	<link href="https://cdn.robotaset.com/assets/thirdparty/owl-carousel/css/owl.theme.default.min.css" rel="stylesheet">
<link href="https://cdn.robotaset.com/assets/css/main-style.min.css?v=2" rel="stylesheet">
<style>
.datepicker table tr td.active, .datepicker table tr td.active:active, .datepicker table tr td.active:hover, .datepicker table tr td.active:hover.active, .datepicker table tr td.active:hover:active, .datepicker table tr td.active:hover:hover {
    background: #0d6efd;
    color: #fff;
}
</style>
<link href="https://cdn.robotaset.com/assets/tpl/a2697c19ad/css/style.css" media="print" onload="this.media='all'" rel="stylesheet">
<style>
/* Temporary override Pragmatic Play Pop */
.futuristic .slot .ftp .game-front {
	background-image: url(https://cdn.robotaset.com/assets/images/provider/pp-pop-slot.webp);
	background-position: left;
	background-size: 60%;
}
.futuristic .gameNav .ftp a {
	background-image: url(https://cdn.robotaset.com/assets/images/provider/all/pp-pop.webp);
	background-position: top;
	background-size: 60%;
}
#ProviderList .ftp {
  background: url(https://cdn.robotaset.com/assets/images/provider/all/white/pop.webp) no-repeat;
  background-size: cover;
  background-position: center;
  width: 80px;
  height: 50px;
}
#ProviderList .ftp:hover {
  background-image: url(https://cdn.robotaset.com/assets/images/provider/all/pop.webp);
}
.bonus-provider-list .ftp {
  background: url(https://cdn.robotaset.com/assets/images/provider/all/pop.webp) no-repeat;
  background-position: center -10px;
  background-size: contain !important;
  filter: drop-shadow(0px 1px 2px white);
}
.bonus-pv-icon.ftp {
  background: url(https://cdn.robotaset.com/assets/images/provider/all/pop.webp) no-repeat;
  background-position: center;
}
.favorite-heading .title.ftp {
  background: url(https://cdn.robotaset.com/assets/images/provider/all/pop.webp) no-repeat;
  background-size: 80%;
  background-position: 0;
  filter: unset;
}
.avatar-provider > .icon.ftp {
  background: url(https://cdn.robotaset.com/assets/images/provider/all/pop.webp) no-repeat;
  background-size: 90%;
}
</style>

<style>
/* Home Slider */
.home-slider{max-height:unset}
.home-slider-wrapper{width:100%;overflow:hidden;position:relative}
.home-slider.owl-carousel .item{width:100%;overflow:hidden}
.home-slider.owl-carousel img{max-height:unset;width:100%}
/* Pool Results */
.pool-result-wrapper{padding:1rem 0 1rem;min-height:165px}
/* Widget */
.widget-tab{min-height:270px}
.myback-img{display:flex;justify-content:center;height:180px;overflow:hidden;object-fit:cover;background-size:cover;background-position:center;border-radius:.5rem}.game-title{text-align:unset;position:unset;top:0;margin-bottom:0}.figure-text{position:relative}[data-mobile="false"] .widget-carousel .card .figure-text>p{line-height:35px;display:block;margin:0;background-color:rgb(0 0 0 / 65%);position:absolute;bottom:0;padding:0 .5rem;font-size:.85rem}
/* Leaderboard*/
.card-leaderboard{color:#fff;min-height:250px}.card-leaderboard,.card-leaderboard .card-header{background:#333}.card-leaderboard .card-header{display:flex;align-items:center;justify-content:space-between}.card-leaderboard .card-body{min-height:200px;max-height:200px;overflow-y:auto;padding:.75rem 1.25rem}.card-leaderboard .card-body::-webkit-scrollbar{width:8px}.card-leaderboard .card-body{scrollbar-width:thin;scrollbar-color:#888 #fff0}.card-leaderboard .table{margin-bottom:0}.leaderboard-title{display:flex;margin-bottom:0;align-items:center}.leaderboard-title>.h5{margin-bottom:0}.leaderboard-title>i{color:gold;margin-right:.5rem}.leaderboard-empty-row{height:145px;vertical-align:middle!important;text-align:center}#seeMoreLeaderboard[disabled]{cursor:not-allowed}#leaderBoardTableOnModal .pvname{text-transform:capitalize}#leaderboardModal .modal-body{max-height:80vh;overflow-y:auto}#leaderboardModal .modal-body::-webkit-scrollbar{width:8px}#leaderboardModal .modal-body::-webkit-scrollbar-thumb{background-color:#888;border-radius:10px}#leaderboardModal .modal-body::-webkit-scrollbar-thumb:hover{background-color:#555}#leaderboardModal .modal-body{scrollbar-width:thin;scrollbar-color:#888 #fff0}
</style>
<style>
.provider-event-ptc {
  position: absolute;
  top: -10px;
  left: -10px;
  z-index: 10;
}
.provider-event-ptc .btn-game {
  padding: 0;
  min-width: 70px;
  height: 70px;
  max-width: 70px;
  cursor: pointer;
}
.provider-event-ptc .event-avatar {
  width: 70px;
  position: absolute;
  top: 0;
  left: 0;
}
</style>
<script>
	var validationMsg = {"alpha":"%s hanya boleh menggunakan abjad","alpha_dash":"%s hanya boleh menggunakan karakter abjad, angka, tanda garis bawah dan penghubung","alpha_numeric":"%s hanya boleh menggunakan abjad dan angka","alpha_numeric_spaces":"%s hanya boleh menggunakan abjad, angka dan spasi","alpha_quote_spaces":"%s hanya boleh menggunakan abjad, tanda petik satu dan spasi","alpha_spaces":"%s hanya boleh menggunakan abjad dan spasi","decimal":"%s harus menggunakan angka desimal","digit":"%s hanya boleh menggunakan digit","digit_no_zero":"%s hanya boleh menggunakan angka dan harus lebih besar dari nol","exact_length":"Panjang %s harus sama %d","greater_than":"%s harus lebih besar dari %d","greater_than_equal_to":"%s harus lebih besar atau sama dengan %d","integer":"%s harus menggunakan angka bulat","less_than":"%s harus kurang dari %d","less_than_equal_to":"%s harus kurang atau sama dengan %d","matches":"%s tidak cocok dengan %s","max_length":"Panjang %s tidak boleh melebihi %d karakter","min_length":"Panjang %s minimal harus %d karakter","is_numeric":"%s hanya boleh menggunakan angka","required":"%s wajib diisi","valid_captcha":"Kode captcha tidak valid","valid_email":"%s harus berisi alamat email yang valid","valid_referral":"Kode referral tidak valid"};
	var alertMsg = {"login_first":"Harap login terlebih dahulu!","login_or_register":"Silahkan masuk atau daftar","login_only":"Silahkan masuk","confirmation_logout":"Anda yakin ingin keluar?","confirmation_calibrate":"Anda yakin ingin menarik saldo dari game?","confirmation_activate_bonus":"Anda yakin ingin mengaktifkan bonus ini?","confirmation_claim_bonus":"Anda yakin ingin mengklaim bonus ini?","session_expired":"Sesi login Anda telah berakhir. Harap masuk kembali!","start_end_date_empty":"Tanggal awal dan tanggal akhir tidak boleh kosong!","start_date_is_greater":"Tanggal awal lebih besar dari tanggal akhir","commission_amount":"Komisi harus lebih dari atau sama dengan Rp 10.000","request_failed":"Permintaan gagal, silahkan coba kembali","retry":"Coba lagi","copy_success":"Berhasil menyalin","loading":"Memuat...","varq_confirm_success":"Maaf, tagihan Anda masih menunggu untuk dibayarkan.","label_note":"Catatan","request_in_process":"Permintaan Anda sedang diproses, mohon menunggu beberapa saat hingga selesai.","refno":"No. Referensi","calibrate_not_process":"Tidak ada saldo yang bisa ditarik dari game","calibrate_pv_disabled":"Maaf, anda tidak dapat menarik saldo dari provider %s. Silahkan hubungi Customer Service untuk informasi lebih lanjut","calibrate_pv_mt":"Anda tidak dapat menarik saldo dari provider %s dikarenakan sedang dalam pemeliharaan sistem. Silahkan coba kembali secara berkala.","pv_locked":"Terkunci","varq_confirm_failed":null};
</script>
<script src="https://cdn.robotaset.com/assets/js/common/jquery-3.6.0.min.js"></script>
<!-- Core & Device Settings -->
<meta name="google-site-verification" content="jFR0IT7lBYItupZQ-t_fI29uYlx0Ew6vKeGdw0QCVSs" />
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.3.1/css/all.min.css">
<!-- Google Verification -->
<meta name="google-site-verification" content="IObVG1Q31qm_w04ThCiPZNgtSjmEg3wyCN-3ShtM_Sc" />

<!-- SEO & General Meta -->
<meta name="robots" content="index, follow">
<meta name="author" content="Titan777" />
<meta name="language" content="id-ID" />
<meta name="categories" content="website, Titan777" />
<meta name="distribution" content="global" />

<!-- Geo & Location -->
<meta name="geo.region" content="ID-JK" />
<meta name="geo.placename" content="Jakarta, Indonesia" />
<meta name="geo.country" content="ID" />

<!-- Open Graph (Facebook/Social) -->
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<meta property="og:title" content="TITAN777 – Platform Game Online Modern dengan Sistem Akses Cepat dan Stabil" />
<meta property="og:description" content="Mainkan game favoritmu TITAN777, platform game daring modern dengan sistem akses cepat dan aman. Daftar sekarang untuk pengalaman bermain tak terlupakan OK" />
<meta property="og:url" content="https://titan777gg.com/" />
<meta property="og:site_name" content="Titan777" />
<meta property="og:image" content="https://image.aksesgrup988.cfd/TITAN777/WhatsApp%20Image%202026-06-28%20at%2011.32.58.jpeg" />

<!-- Twitter Cards -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:label1" content="Est. reading time" />
<meta name="twitter:data1" content="5 minutes" />

<!-- Links -->
<link rel="canonical" href="https://titan777gg.com/" />
<link rel="amphtml" href="https://maju.aksesemas.live" />

<!--Alternate-->
<link rel="alternate" hreflang="id-id" href="https://titan777gg.com/"/>
<link rel="alternate" href="https://titan777gg.com/"/>
<link rel="alternate" hreflang="id" href="https://titan777gg.com/"/>
<link rel="alternate" hreflang="en" href="https://titan777gg.com/"/>

<!-- google.com -->
<meta name="page google.com" content="https://www.google.com/search?q=titan+777">
<meta name="page google.co.id" content="https://www.google.co.id/search?q=titan+777">
<meta name="page google.com" content="https://www.google.com/search?q=titan777">
<meta name="page google.co.id" content="https://www.google.co.id/search?q=titan777"><script>
    $(document).ready(function(){
        $('.bsi').closest('.bank').remove();
    });
</script>
<style>
        .bank .bsi{background:none;height:auto;width:auto}
    </style>
</head>

<body class="index-body" data-mobile="false">
	<div id="dialog-mask" class="page-loader" role="alert" aria-live="assertive" style="display:none">
	<div id="loader" class="page-loader-body">
		<i class="fa fa-spinner fa-pulse fa-fw" aria-hidden="true"></i>
		<span class="">Memuat...</span>
	</div>
</div>
<header class="header">
	<div class="container">
		<div class="row">
			<div class="col-sm left-col">
				<a href="/"><img src="https://cdn.robotaset.com/assets/tpl/a2697c19ad/images/logo.png" class="logo" alt="Titan777"></a>
				</div>
			<div class="col-sm right-col">
				<div class="top-nav">
					<div class="nav-wrapper">
						<div class="newsInfo" id="newsInfo">
							<i class="fas fa-bullhorn"></i>
							<marquee class="marquee">
								 TITAN777 – Platform Game Daring Modern Sistem Akses Cepat OK</marquee>
						</div>
						<div class="help-bar">
						    <a href="/contact-us">Butuh bantuan?</a>
						    <div class="dropdown">
								<button class="dropbtn btn" type="button" data-toggle="dropdown" aria-expanded="false" aria-label="Ganti bahasa" title="Ganti bahasa" onclick="select_language();">
									<img src="https://cdn.robotaset.com/assets/images/common/icon-id.png" alt="">
								</button>
								<ul class="language-list dropdown-menu" role="menu" aria-label='Pilih bahasa'>
								    <li role="menu">
								        <a class="dropdown-item id" data-id="id" title='Bahasa Indonesia' role="menuitem" href="#">
								            <img loading="lazy" alt='Ubah ke Bahasa Indonesia' src="https://cdn.robotaset.com/assets/images/common/icon-id.png"/>
								        </a>
								    </li>
								    <li role="menu">
								        <a class="dropdown-item en" data-id="en" title='English' role="menuitem" href="#">
								            <img loading="lazy" alt='Ubah ke Bahasa Inggris' src="https://cdn.robotaset.com/assets/images/common/icon-en.png"/>
								        </a>
								    </li>
								    <li role="menu">
								        <a class="dropdown-item zh" data-id="zh" title='中文' role="menuitem" href="#">
								            <img loading="lazy" alt='Ubah ke Bahasa Mandarin' src="https://cdn.robotaset.com/assets/images/common/icon-zh.png"/>
								        </a>
								    </li>
								</ul>
						    </div>
						</div>
					</div>
					<script>
						$(".language-list .dropdown-item").on("click", function(e) {
							e.preventDefault();

							var _this = $(this);
							var lang = _this.data("id");
							var data = {"lang": lang};
							callApi('/api/client/setLanguage', data, function(response) {
								if( response.success == true ) {
									redirectPage();
								} else {
									alert(alertMsg.request_failed);
								}
							});
						});
					</script>
				</div>
				<div class="float-right login-box">
					<form id="HeaderLoginForm" action="/login" method="POST">
							<div>
							    <input class="login-form" name="username" id="HL_Username" type="text" minlength="5" maxlength="16" placeholder='Nama Pengguna' required="required" autocomplete="off">
							    <input class="login-form" name="password" id="HL_Password" type="password" minlength="6" maxlength="16" placeholder='Kata Sandi' required="required" autocomplete="off">
							    <input type="hidden" name="lang" value="id">
							    <input type="hidden" id="token" name="token" value="1599ba2cc8677fbc1cab892e7e31801032ca79b1ddba75da0a4bc21280f1e282">
							</div>
							<div class="d-flex align-items-center pull-right">
								<button class="bttn-login margin-left-5px" id="ButtonLogin" type="submit">Masuk</button>
								<a class="bttn-register margin-left-5px text-center" type="button" href="/account/register" title="Register">Daftar</a>
								
</div>
						</form>
					</div>
			</div>
		</div>
	</div>
</header>










<nav class="navbar futuristic">
	<div class="container">
		<ul id="gameListMenu">
			<li class="home">
                <a href="/">
                    <i class="icon_home"></i>
                    <strong class="nav_name">Beranda</strong>
                </a>
            </li>
			
				
					
					
					
					
					
	
					<li class="sports">
					    <a href="/game-group/sports">
					    	<i class="icon_sports"></i>
					        <strong class="nav_name ">Sports</strong>
					    </a>
					    <div class="subnavbar" data-item="ckGame">
					        <div class="main_width container">
					            <ul class="gameNav clearfix">
									
										
											
											
											

											
											
											
												
												
													
														
													
													
												
											

							                <li class="game  sbo">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/sbo/1?portofolio=sbosb" class="game-front-type" data-url="/game/sbo/1?portofolio=sbosb" data-provider="sbo">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											

							                <li class="game  cmd">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/play/cmd" class="game-front-type" data-url="/play/cmd" data-provider="cmd">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											

							                <li class="game  sba">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/play/sba" class="game-front-type" data-url="/play/sba" data-provider="sba">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											

							                <li class="game  sng">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/play/sng" class="game-front-type" data-url="/play/sng" data-provider="sng">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
					            </ul>
					        </div>
					    </div>
					</li>
					
				
			
				
					
					
					
					
					
	
					<li class="casino">
					    <a href="/game-group/casino">
					    	<i class="icon_casino"></i>
					        <strong class="nav_name ">Casino</strong>
					    </a>
					    <div class="subnavbar" data-item="ckGame">
					        <div class="main_width container">
					            <ul class="gameNav clearfix">
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub pgr">
								                
								                	<span class="label-new">Promo</span>
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/pgr/2" class="game-front-type" data-url="/game/pgr/2" data-provider="pgr">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ggs">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                	<span class="label-new label-new-top-right blink">Baru</span>
									                
									                
									                
									                	<img loading="lazy" src="https://cdn.robotaset.com/assets/images/provider/new-tag.png" alt="new-tag.png" class="lobby-icon game-front-tag">
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ggs/2" class="game-front-type" data-url="/game/ggs/2" data-provider="ggs">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ptc">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ptc/2" class="game-front-type" data-url="/game/ptc/2" data-provider="ptc">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub wm">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/wm/2" class="game-front-type" data-url="/game/wm/2" data-provider="wm">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub sbc">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/sbc/2" class="game-front-type" data-url="/game/sbc/2" data-provider="sbc">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub mcg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/mcg/2" class="game-front-type" data-url="/game/mcg/2" data-provider="mcg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub gpi">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/gpi/2" class="game-front-type" data-url="/game/gpi/2" data-provider="gpi">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub prt">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/prt/2" class="game-front-type" data-url="/game/prt/2" data-provider="prt">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub plk">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/plk/2" class="game-front-type" data-url="/game/plk/2" data-provider="plk">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub bgg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/bgg/2" class="game-front-type" data-url="/game/bgg/2" data-provider="bgg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ttg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ttg/2" class="game-front-type" data-url="/game/ttg/2" data-provider="ttg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub bpt">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/bpt/2" class="game-front-type" data-url="/game/bpt/2" data-provider="bpt">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub jli">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/jli/2" class="game-front-type" data-url="/game/jli/2" data-provider="jli">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub sag">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/sag/2" class="game-front-type" data-url="/game/sag/2" data-provider="sag">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ori">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ori/2" class="game-front-type" data-url="/game/ori/2" data-provider="ori">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub mrb">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/mrb/2" class="game-front-type" data-url="/game/mrb/2" data-provider="mrb">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub eai">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/eai/2" class="game-front-type" data-url="/game/eai/2" data-provider="eai">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
					            </ul>
					        </div>
					    </div>
					</li>
					
					    
					        
					        
					        
					
					        <li class="btn-game" data-url="/play/ftp/vs10swtbnz" style="position:relative;">
					            <img src="https://cdn.robotaset.com/assets/images/common/tag/promo.gif" style="position:absolute;z-index:1;left:0;width:35px;top:5;">
					            
					            <a href="#" aria-label='Main Sekarang - Sweet Bonanza POP' title='Main Sekarang - Sweet Bonanza POP'>
					                <i class="icon_scatter" aria-hidden="true"></i>
					                <strong class="nav_name">Sweet Bonanza POP</strong>
					            </a>
					            <script>
					                if( $('.icon_scatter').length == 1 ) {
					                    $('.icon_scatter').css({
					                        'background-position': 'center 15px',
					                        'background-image': 'url(https://cdn.robotaset.com/assets/images/provider/pp-pop-slot2.gif?d=1)',
					                        'background-repeat': 'no-repeat',
					                        'background-size': '90%'
					                    });
					
					                    // For !important, you need to use plain JavaScript since jQuery's .css() doesn't support !important
					                    $('.icon_scatter').each(function() {
					                        this.style.setProperty('background-image', 'url(https://cdn.robotaset.com/assets/images/provider/pp-pop-slot2.gif?d=1)', 'important');
					                        this.setAttribute('role', 'img');
					                        this.setAttribute('aria-label', 'Sweet Bonanza POP');
					                    });
					
					                    $('.navbar > .container').css({'max-width':'1400px'});
					                }
					            </script>
					        </li>
					    
					
				
			
				
					
					
					
					
					
	
					<li class="slot">
					    <a href="/game-group/slot">
					    	<i class="icon_slot"></i>
					        <strong class="nav_name ">Slot</strong>
					    </a>
					    <div class="subnavbar" data-item="ckGame">
					        <div class="main_width container">
					            <ul class="gameNav clearfix">
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub pgr">
								                
								                	<span class="label-new">Promo</span>
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                	<img loading="lazy" src="https://cdn.robotaset.com/assets/images/provider/pgr-no1.png" alt="pgr-no1.png" class="lobby-icon game-front-tag">
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/pgr/3" class="game-front-type" data-url="/game/pgr/3" data-provider="pgr">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ggs">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                	<span class="label-new label-new-top-right blink">Baru</span>
									                
									                
									                
									                	<img loading="lazy" src="https://cdn.robotaset.com/assets/images/provider/new-tag.png" alt="new-tag.png" class="lobby-icon game-front-tag">
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ggs/3" class="game-front-type" data-url="/game/ggs/3" data-provider="ggs">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub pgs">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                	<img loading="lazy" src="https://cdn.robotaset.com/assets/images/provider/best-tag.png" alt="best-tag.png" class="lobby-icon game-front-tag">
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/pgs/3" class="game-front-type" data-url="/game/pgs/3" data-provider="pgs">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ftp">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ftp/3" class="game-front-type" data-url="/game/ftp/3" data-provider="ftp">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub aag">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/aag/3" class="game-front-type" data-url="/game/aag/3" data-provider="aag">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ptc">
								                
							                	<div class="icon-menu-wrapper">
													
													
													    
													    
													    

													    <div class="provider-event-ptc">
													    	<span class="btn-game" data-id="gpas_gtr10k_pop" data-url="/play/ptc/gpas_gtr10k_pop">
														        <img class="event-avatar" src="https://cdn.robotaset.com/assets/images/provider/ptc-event.webp" alt="Gold Trio 10000">
													    	</span>
													    </div>
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ptc/3" class="game-front-type" data-url="/game/ptc/3" data-provider="ptc">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ptg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ptg/3" class="game-front-type" data-url="/game/ptg/3" data-provider="ptg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub fvg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/fvg/3" class="game-front-type" data-url="/game/fvg/3" data-provider="fvg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub mcg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/mcg/3" class="game-front-type" data-url="/game/mcg/3" data-provider="mcg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub jli">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/jli/3" class="game-front-type" data-url="/game/jli/3" data-provider="jli">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub adv">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/adv/3" class="game-front-type" data-url="/game/adv/3" data-provider="adv">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ttg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ttg/3" class="game-front-type" data-url="/game/ttg/3" data-provider="ttg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub spd">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/spd/3" class="game-front-type" data-url="/game/spd/3" data-provider="spd">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub hb">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/hb/3" class="game-front-type" data-url="/game/hb/3" data-provider="hb">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub jkr">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/jkr/3" class="game-front-type" data-url="/game/jkr/3" data-provider="jkr">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub pst">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/pst/3" class="game-front-type" data-url="/game/pst/3" data-provider="pst">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub cqn">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/cqn/3" class="game-front-type" data-url="/game/cqn/3" data-provider="cqn">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub bng">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/bng/3" class="game-front-type" data-url="/game/bng/3" data-provider="bng">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub sll">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/sll/3" class="game-front-type" data-url="/game/sll/3" data-provider="sll">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub mmg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/mmg/3" class="game-front-type" data-url="/game/mmg/3" data-provider="mmg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub fch">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/fch/3" class="game-front-type" data-url="/game/fch/3" data-provider="fch">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub evo">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/evo/3" class="game-front-type" data-url="/game/evo/3" data-provider="evo">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub bpt">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/bpt/3" class="game-front-type" data-url="/game/bpt/3" data-provider="bpt">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ygg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ygg/3" class="game-front-type" data-url="/game/ygg/3" data-provider="ygg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub dgs">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/dgs/3" class="game-front-type" data-url="/game/dgs/3" data-provider="dgs">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub hsg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/hsg/3" class="game-front-type" data-url="/game/hsg/3" data-provider="hsg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub mll">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/mll/3" class="game-front-type" data-url="/game/mll/3" data-provider="mll">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub plk">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/plk/3" class="game-front-type" data-url="/game/plk/3" data-provider="plk">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ygr">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ygr/3" class="game-front-type" data-url="/game/ygr/3" data-provider="ygr">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
					            </ul>
					        </div>
					    </div>
					</li>
					
				
			
				
					
					
					
					
					
	
					<li class="lottery">
					    <a href="/game-group/lottery">
					    	<i class="icon_lottery"></i>
					        <strong class="nav_name blink">Togel</strong>
					    </a>
					    <div class="subnavbar" data-item="ckGame">
					        <div class="main_width container">
					            <ul class="gameNav clearfix">
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ifd">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ifd/5" class="game-front-type" data-url="/game/ifd/5" data-provider="ifd">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub pgr">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/pgr/5" class="game-front-type" data-url="/game/pgr/5" data-provider="pgr">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub eai">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/eai/5" class="game-front-type" data-url="/game/eai/5" data-provider="eai">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
					            </ul>
					        </div>
					    </div>
					</li>
					
				
			
				
			
				
			
				
					
					
					
					
					
	
					<li class="cock_fighting">
					    <a href="/game-group/cock_fighting">
					    	<i class="icon_cock_fighting"></i>
					        <strong class="nav_name ">Sabung Ayam</strong>
					    </a>
					    <div class="subnavbar" data-item="ckGame">
					        <div class="main_width container">
					            <ul class="gameNav clearfix">
									
										
											
											
											

											
											
											

							                <li class="game  wsl">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/play/wsl" class="game-front-type" data-url="/play/wsl" data-provider="wsl">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											

							                <li class="game  awc">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/play/awc" class="game-front-type" data-url="/play/awc" data-provider="awc">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
					            </ul>
					        </div>
					    </div>
					</li>
					
				
			
				
					
					
					
					
					
	
					<li class="games">
					    <a href="/game-group/games">
					    	<i class="icon_games"></i>
					        <strong class="nav_name ">Games</strong>
					    </a>
					    <div class="subnavbar" data-item="ckGame">
					        <div class="main_width container">
					            <ul class="gameNav clearfix">
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub pgr">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/pgr/8" class="game-front-type" data-url="/game/pgr/8" data-provider="pgr">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ggs">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                	<span class="label-new label-new-top-right blink">Baru</span>
									                
									                
									                
									                	<img loading="lazy" src="https://cdn.robotaset.com/assets/images/provider/new-tag.png" alt="new-tag.png" class="lobby-icon game-front-tag">
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ggs/8" class="game-front-type" data-url="/game/ggs/8" data-provider="ggs">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ttg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ttg/8" class="game-front-type" data-url="/game/ttg/8" data-provider="ttg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
													
													
												
											

							                <li class="game sub sbo">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/sbo/8?portofolio=sbovg" class="game-front-type" data-url="/game/sbo/8?portofolio=sbovg" data-provider="sbo">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub plk">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/plk/8" class="game-front-type" data-url="/game/plk/8" data-provider="plk">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub jkr">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/jkr/8" class="game-front-type" data-url="/game/jkr/8" data-provider="jkr">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub dgs">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/dgs/8" class="game-front-type" data-url="/game/dgs/8" data-provider="dgs">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub mll">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/mll/8" class="game-front-type" data-url="/game/mll/8" data-provider="mll">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub hsg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/hsg/8" class="game-front-type" data-url="/game/hsg/8" data-provider="hsg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub fch">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/fch/8" class="game-front-type" data-url="/game/fch/8" data-provider="fch">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub jli">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/jli/8" class="game-front-type" data-url="/game/jli/8" data-provider="jli">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub mmg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/mmg/8" class="game-front-type" data-url="/game/mmg/8" data-provider="mmg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
					            </ul>
					        </div>
					    </div>
					</li>
					
				
			
				
					
					
					
					
					
	
					<li class="tembak_ikan">
					    <a href="/game-group/tembak_ikan">
					    	<i class="icon_tembak_ikan"></i>
					        <strong class="nav_name ">Tembak Ikan</strong>
					    </a>
					    <div class="subnavbar" data-item="ckGame">
					        <div class="main_width container">
					            <ul class="gameNav clearfix">
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub spd">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/spd/4" class="game-front-type" data-url="/game/spd/4" data-provider="spd">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub jkr">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/jkr/4" class="game-front-type" data-url="/game/jkr/4" data-provider="jkr">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub ygr">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/ygr/4" class="game-front-type" data-url="/game/ygr/4" data-provider="ygr">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub mcg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/mcg/4" class="game-front-type" data-url="/game/mcg/4" data-provider="mcg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub jli">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/jli/4" class="game-front-type" data-url="/game/jli/4" data-provider="jli">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub dgs">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/dgs/4" class="game-front-type" data-url="/game/dgs/4" data-provider="dgs">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub hsg">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/hsg/4" class="game-front-type" data-url="/game/hsg/4" data-provider="hsg">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
										
											
											
											

											
											
											
												
												
											

							                <li class="game sub fch">
								                
							                	<div class="icon-menu-wrapper">
													
													
									                
									                
									                
									                
									                
							                		<div class="game-front"></div>
								                    <a data-href="/game/fch/4" class="game-front-type" data-url="/game/fch/4" data-provider="fch">
								                    	<span>Main Sekarang</span>
								                    </a>
							                	</div>
							                </li>
										
									
					            </ul>
					        </div>
					    </div>
					</li>
					
				
			
			<li>
                <a href="/promotion">
                    <i class="icon_promo"></i>
                    <strong class="nav_name">Promosi</strong>
                </a>
            </li>
			<li class="referral">
			    <a href="/referral">
			        <i class="icon_referral" aria-hidden="true"></i>
			        <strong class="nav_name">Referral</strong>
			    </a>
			</li>
			
		</ul>
	</div>
</nav>
<div class="home-slider-wrapper">
        <div class="home-slider owl-carousel owl-theme">
                <div class="item">
                        <img fetchpriority="high" decoding="async" src="https://image.aksesgrup988.cfd/TITAN777/BONUS%20ROLINGAN%20TITAN.png" alt="BONUS ROLINGAN HARIAN ">
                        </div>
                <div class="item">
                        <img decoding="async" class="owl-lazy" data-src="https://image.aksesgrup988.cfd/TITAN777/BANER%20QRIS.png" alt="DEPOSIT QRIS">
                        </div>
                <div class="item">
                        <img decoding="async" class="owl-lazy" data-src="https://image.aksesgrup988.cfd/TITAN777/BONUS%20DEPO%20HARIAN.png" alt="BONUS HARIAN">
                        </div>
                <div class="item">
                        <img decoding="async" class="owl-lazy" data-src="https://image.aksesgrup988.cfd/TITAN777/BONUS%20DUO%20BOLA.png" alt="BONUS DUO BOLA">
                        </div>
                <div class="item">
                        <img decoding="async" class="owl-lazy" data-src="https://image.aksesgrup988.cfd/TITAN777/BONUS%20REFFERAL.png" alt="BONUS REFERAL">
                        </div>
                </div>
    </div>
    <script>
        $(document).ready(function() {
            var owl = $('.home-slider');
            owl.owlCarousel({
                items: 1,
                lazyLoad: true,
                nav: true,
                loop: true,
                margin: 10,
                autoplay: true,
                autoplayTimeout: 8000,
                autoHeight: true
            });
            owl.find('.owl-dot').each(function (index) {
                const slideNumber = index + 1;
                $(this).attr('aria-label', 'Ke slide ' + slideNumber);
                // Optional: Tambahkan aria-current ke tombol aktif
                if ($(this).hasClass('active')) {
                    $(this).attr('aria-current', 'true');
                }
            });
        })
    </script>
<section id="poolnumberresult" class="py-xxl-4 pool-result-wrapper">
    <div class="container">
        <div class="pool-list-results owl-carousel owl-theme" id="latestPool"></div>
    </div>

    <div class="modal fade" id="poolHistoryModal" tabindex="-1" role="dialog" aria-hidden="true" style="display:none">
        <div class="modal-dialog modal-lg" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title">Hasil Keluaran</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    <section class="bg-dark-transparent">
                        <div class="container">
                            <div class="rounded py-1">
                                <div>
                                    <span class="text-warning text-uppercase" id="mdlPoolCode"></span>
                                </div>
                                <table class="table table-dark" id="mdlPoolHistory">
                                    <thead>
                                        <tr>
                                            <th scope="col" style="text-transform: capitalize;">Hari</th>
                                            <th scope="col">Tanggal</th>
                                            <th scope="col">Periode</th>
                                            <th scope="col">Hasil</th>
                                        </tr>
                                    </thead>
                                    <tbody></tbody>
                                </table>
                            </div>
                        </div>
                    </section>
                </div>
            </div>
        </div>
    </div>
	
	<script>
		var POOL_DATA = [];
		function poolLatestNumber(data) {
		    $.each(data, function (i, row) {
		        var $latestPool = $(document).find("#latestPool");
		        var poolName = row.label === "sg" ? "Singapore" : row.label;
		        $latestPool.append(
		            '<div class="item"><div class="px-xxl-1">' +
		                '<a class="box-pull" href="#" data-toggle="modal" data-target="#poolHistoryModal" data-poolcd="' +
		                row.label +
		                '">' +
		                '<div class="text-center">' +
		                '<div class="pull-head pt-1 text-uppercase">' +
		                "<span>" +
		                poolName +
		                "</span>" +
		                "</div>" +
		                '<div class="pull-body d-flex align-items-center justify-content-center"><span class="blink">' +
		                row.number +
		                "</span></div>" +
		                '<div class="pull-foot text-dark px-1">' +
		                row.day +
		                ", " +
		                row.humanDate +
		                "</div>" +
		                "</div>" +
		                "</a>" +
		                "</div></div>"
		        );
		    });
		}
		
		function poolHistoryNumber(data) {
		    var $tbody = $(document).find("#mdlPoolHistory tbody");
		    $.each(data, function (i, row) {
		        $tbody.append("<tr>" + "<td>" + row.day + "</td>" + "<td>" + row.humanDate + "</td>" + "<td>" + row.shift + "</td>" + "<td>" + row.number + "</td>" + "</tr>");
		    });
		}
		
		$(function () {
		    var lang = "id";
		    var poolApi = "https://widget.robotaset.com";
		    var agentCode = "nlzkapoIwUJbC9wxbXSV2A==";
		
		    $.ajax({
		        async: true,
 		        url: poolApi + "/pool/latest?lang=" + lang + "&code="+agentCode,
		        type: "GET",
		        contentType: "json",
		    }).then(function (data) {
		    	POOL_DATA = data;
		        poolLatestNumber(data);
		        renderCarousel();
		        //$('.pool-list-results').find('.owl-nav').removeClass('disabled');
		    });

			// modal
		    $("#poolHistoryModal").on("show.bs.modal", function (event) {
		        var button = $(event.relatedTarget);
		        var poolCode = button.data("poolcd");
		        var poolText = poolCode == 'sg' ? 'Singapore' : poolCode;
		        var modal = $(this);
		        modal.find("#mdlPoolCode").text(poolText);
		        var $tbody = $(document).find("#mdlPoolHistory tbody");
		        $tbody.empty();
		
		        $.ajax({
		            async: true,
		            url: poolApi + "/pool/history?pool=" + poolCode + "&lang=" + lang,
		        }).then(function (data) {
		            poolHistoryNumber(data);
		        });

		        
		    })

		    

			// carousel
			function renderCarousel() {
				var poolRes = $(".pool-list-results");
				var activeItem = $('#poolnumberresult').find('.owl-item.active').length;
				var responsiveConfig = {
					200: {items: 2, loop: POOL_DATA.length > 2 ? true : false},
					300: {items: 2, loop: POOL_DATA.length > 2 ? true : false},
					400: {items: 3, loop: POOL_DATA.length > 3 ? true : false},
					500: {items: 3, loop: POOL_DATA.length > 3 ? true : false},
					600: {items: 4, loop: POOL_DATA.length > 4 ? true : false},
					700: {items: 5, loop: POOL_DATA.length > 5 ? true : false},
					800: {items: 6, loop: POOL_DATA.length > 6 ? true : false},
					900: {items: 7, loop: POOL_DATA.length > 7 ? true : false},
					1000: {items: 7, loop: POOL_DATA.length > 7 ? true : false}
				};
				poolRes.owlCarousel({
					nav: false,
					lazyLoad: true,
					dots: true,
					margin: 8,
					items: 7,
					autoplay: true,
					autoplayTimeout: 10000,
					responsiveClass: true,
					responsive: responsiveConfig
				});
			}
		});
	</script>
</section><main class="middle middle-index">
    <div class="container">
        <div class="progressive-jackpot">
            <p class="h2">Progressive Jackpot</p>
            <div class="jackpot-wrapper">
                <img loading="lazy" fetchpriority="high" src="https://cdn.robotaset.com/assets/tpl/a2697c19ad/images/progressive-jackpot.gif" alt="Progressive Jackpot">
                <span id="jackpot" data-value="17925152955.88">17.925.152.955,88</span>
            </div>
        </div>

        <div class="mini-banner owl-carousel owl-theme">
            <div class="item box-middle">
                            <img loading="lazy" src="https://cdn.robotaset.com/assets/images/index/minibanner/lc.jpg" alt="left banner mini"></div>
                <div class="item box-middle">
                            <img loading="lazy" src="https://cdn.robotaset.com/assets/images/index/minibanner/cf.jpg" alt="Right banner mini"></div>
                <div class="item box-middle">
                            <img loading="lazy" src="https://cdn.robotaset.com/assets/images/index/minibanner/sl.jpg" alt="center banner mini"></div>
                </div>
        <script>
            $(document).ready(function () {
                var owl = $('.mini-banner');
                owl.owlCarousel({
                    items: 3,
                    lazyLoad: true,
                    nav: false,
                    loop: false,
                    mouseDrag: false
                });
            })
        </script>
        <div class="row">
            <div id="SupportedBank">
                <div class="col-2 bank" role="img" aria-label="">
                    <div class="qris"></div>
                </div>
                <div class="col-2 bank">
                        <div class="bca"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="mandiri"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="cimb"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="bni"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="bri"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="danamon"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="permata"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="ovo"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="gopay"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="dana"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="panin"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="linkaja"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="sakuku"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="bsi"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="jenius"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="neo"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="jago"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="sinarmas"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="allo"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="blu"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="seabank"><span class="indicator on"></span></div>
                    </div>
                <div class="col-2 bank">
                        <div class="ocbc"><span class="indicator on"></span></div>
                    </div>
                </div>
        </div>
    </div>
</main>
<footer class="footer">
	<div class="container">
		<div class="custom-page">
				<ul class="page-item">
					<li><a href="/page/kontak-resmi" title="KONTAK RESMI" aria-label="KONTAK RESMI">KONTAK RESMI</a></li>
					<li><a href="/page/peraturan" title="PERATURAN" aria-label="PERATURAN">PERATURAN</a></li>
					<li><a href="/page/syarat-ketentuan" title="SYARAT KETENTUAN" aria-label="SYARAT KETENTUAN">SYARAT KETENTUAN</a></li>
					<li><a href="/page/tentang-kami" title="TENTANG KAMI" aria-label="TENTANG KAMI">TENTANG KAMI</a></li>
					</ul>
			</div>
		<div class="wrap-provider-list">
			<ul id="ProviderList"></ul>
			<script>
				var a = [{"idgmfr":1,"gmfrnm":"Sports","gmfricon":"sports","pvls":[{"id":16,"pvnm":"SBO","pvst":1,"pvsub":1,"pvicon":"sbo","pvcode":"SBO","pvmtfrom":"20-07-2020 07:45:00","pvmtto":"31-07-2026 12:50:00","ism":1,"portofolio":"sbosb"},{"id":21,"pvnm":"Cmd","pvst":1,"pvsub":0,"pvicon":"cmd","pvcode":"CMD","pvmtfrom":"20-08-2021 12:15:00","pvmtto":"20-08-2021 15:00:00","ism":1,"portofolio":"cmd"},{"id":175,"pvnm":"Saba sports","pvst":1,"pvsub":0,"pvicon":"sba","pvcode":"SBA","pvmtfrom":"20-08-2020 10:00:00","pvmtto":"13-08-2026 19:00:00","ism":1,"portofolio":"sba"},{"id":446,"pvnm":"3sing sport","pvst":1,"pvsub":0,"pvicon":"sng","pvcode":"SNG","pvmtfrom":"13-08-2026 12:00:00","pvmtto":"13-08-2026 15:00:00","ism":1,"portofolio":"sngsport"}],"hideFromMobile":false,"gameGroupDisabled":false,"ordering":3},{"idgmfr":2,"gmfrnm":"Casino","gmfricon":"casino","pvls":[{"id":4,"pvnm":"Pragmatic Play","pvst":1,"pvsub":1,"pvicon":"pgr","pvcode":"PGR","pvmtfrom":"20-07-2020 23:00:00","pvmtto":"20-05-2001 09:00:00","ism":1,"portofolio":"lvc"},{"id":1075,"pvnm":"GG Soft","pvst":1,"pvsub":1,"pvicon":"ggs","pvcode":"GGS","pvmtfrom":"20-07-2010 04:00:00","pvmtto":"20-07-2010 04:55:00","ism":1,"portofolio":"ggscasino"},{"id":710,"pvnm":"Playtech","pvst":1,"pvsub":1,"pvicon":"ptc","pvcode":"PTC","pvmtfrom":"22-01-2026 13:30:00","pvmtto":"07-06-2026 02:00:00","ism":1,"portofolio":"ptclc"},{"id":10,"pvnm":"Wanmei","pvst":1,"pvsub":1,"pvicon":"wm","pvcode":"WM","pvmtfrom":"10-08-2026 09:00:00","pvmtto":"10-08-2026 12:30:00","ism":1,"portofolio":"livecasino"},{"id":27,"pvnm":"Sexy baccarat","pvst":1,"pvsub":1,"pvicon":"sbc","pvcode":"SBC","pvmtfrom":"12-08-2026 08:00:00","pvmtto":"19-08-2026 08:00:00","ism":1,"portofolio":"sbc"},{"id":137,"pvnm":"Micro gaming","pvst":1,"pvsub":1,"pvicon":"mcg","pvcode":"MCG","pvmtfrom":"20-08-2026 10:50:00","pvmtto":"20-08-2026 12:00:00","ism":1,"portofolio":"mcgnlc"},{"id":6,"pvnm":"Gameplay","pvst":1,"pvsub":1,"pvicon":"gpi","pvcode":"GPI","pvmtfrom":"20-07-2020 04:00:00","pvmtto":"20-07-2022 23:00:00","ism":1,"portofolio":"lc"},{"id":171,"pvnm":"Pretty gaming","pvst":1,"pvsub":1,"pvicon":"prt","pvcode":"PRT","pvmtfrom":"26-02-2024 23:00:00","pvmtto":"27-03-2025 22:00:00","ism":1,"portofolio":"prtlive"},{"id":743,"pvnm":"Mini.game","pvst":1,"pvsub":1,"pvicon":"plk","pvcode":"PLK","pvmtfrom":"20-07-2026 09:00:00","pvmtto":"20-07-2026 11:00:00","ism":1,"portofolio":"plkgm"},{"id":103,"pvnm":"Big gaming","pvst":1,"pvsub":1,"pvicon":"bgg","pvcode":"BGG","pvmtfrom":"18-08-2026 03:00:00","pvmtto":"18-08-2026 04:00:00","ism":1,"portofolio":"bgglive"},{"id":97,"pvnm":"Top trend game","pvst":1,"pvsub":1,"pvicon":"ttg","pvcode":"TTG","pvmtfrom":"20-10-2020 18:00:00","pvmtto":"11-11-2028 23:00:00","ism":1,"portofolio":"swinttlivettg"},{"id":380,"pvnm":"Bigpot gaming ","pvst":1,"pvsub":1,"pvicon":"bpt","pvcode":"BPT","pvmtfrom":"20-07-2020 05:00:00","pvmtto":"20-07-2019 03:00:00","ism":1,"portofolio":"bptlc"},{"id":314,"pvnm":"Jili gaming","pvst":1,"pvsub":1,"pvicon":"jli","pvcode":"JLI","pvmtfrom":"11-11-2025 11:30:00","pvmtto":"12-08-2026 11:25:00","ism":1,"portofolio":"jlilc"},{"id":1042,"pvnm":"SA Gaming","pvst":1,"pvsub":1,"pvicon":"sag","pvcode":"SAG","pvmtfrom":"27-05-2026 19:00:00","pvmtto":"27-05-2026 20:30:00","ism":1,"portofolio":"saglc"},{"id":62,"pvnm":"Oriental gaming","pvst":1,"pvsub":1,"pvicon":"ori","pvcode":"ORI","pvmtfrom":"11-08-2026 12:00:00","pvmtto":"11-08-2026 15:00:00","ism":1,"portofolio":"neworilc"},{"id":1108,"pvnm":"MarbleX","pvst":1,"pvsub":1,"pvicon":"mrb","pvcode":"MRB","pvmtfrom":"11-08-2025 20:00:00","pvmtto":"26-08-2026 13:50:00","ism":1,"portofolio":"mrbslot"},{"id":1141,"pvnm":"EEAI","pvst":1,"pvsub":1,"pvicon":"EAI","pvcode":"EAI","pvmtfrom":"-","pvmtto":"-","ism":1,"portofolio":"eairoul"}],"hideFromMobile":false,"gameGroupDisabled":false,"ordering":2},{"idgmfr":3,"gmfrnm":"Slot","gmfricon":"slot","pvls":[{"id":4,"pvnm":"Pragmatic Play","pvst":1,"pvsub":1,"pvicon":"pgr","pvcode":"PGR","pvmtfrom":"20-07-2020 23:00:00","pvmtto":"20-05-2001 09:00:00","ism":1,"portofolio":"vs"},{"id":1075,"pvnm":"GG Soft","pvst":1,"pvsub":1,"pvicon":"ggs","pvcode":"GGS","pvmtfrom":"20-07-2010 04:00:00","pvmtto":"20-07-2010 04:55:00","ism":1,"portofolio":"ggsslot"},{"id":26,"pvnm":"Pg soft","pvst":1,"pvsub":1,"pvicon":"pgs","pvcode":"PGS","pvmtfrom":"20-03-2020 00:00:00","pvmtto":"11-08-2026 14:10:00","ism":1,"portofolio":"pgs"},{"id":842,"pvnm":"Pragmatic Play POP","pvst":1,"pvsub":1,"pvicon":"ftp","pvcode":"FTP","pvmtfrom":"-","pvmtto":"09-09-2025 08:00:00","ism":1,"portofolio":"ftpslot"},{"id":1174,"pvnm":"AA Gaming","pvst":1,"pvsub":1,"pvicon":"AAG","pvcode":"AAG","pvmtfrom":"-","pvmtto":"-","ism":1,"portofolio":"aagslot"},{"id":710,"pvnm":"Playtech","pvst":1,"pvsub":1,"pvicon":"ptc","pvcode":"PTC","pvmtfrom":"22-01-2026 13:30:00","pvmtto":"07-06-2026 02:00:00","ism":1,"portofolio":"ptcslot"},{"id":545,"pvnm":"Pt games","pvst":1,"pvsub":1,"pvicon":"ptg","pvcode":"PTG","pvmtfrom":"20-11-2001 00:00:00","pvmtto":"20-12-2030 00:00:00","ism":1,"portofolio":"ptgslot"},{"id":875,"pvnm":"5g","pvst":1,"pvsub":1,"pvicon":"fvg","pvcode":"FVG","pvmtfrom":"20-07-2008 05:00:00","pvmtto":"08-07-2026 12:00:00","ism":1,"portofolio":"fvgslot"},{"id":137,"pvnm":"Micro gaming","pvst":1,"pvsub":1,"pvicon":"mcg","pvcode":"MCG","pvmtfrom":"20-08-2026 10:50:00","pvmtto":"20-08-2026 12:00:00","ism":1,"portofolio":"mcgslot"},{"id":314,"pvnm":"Jili gaming","pvst":1,"pvsub":1,"pvicon":"jli","pvcode":"JLI","pvmtfrom":"11-11-2025 11:30:00","pvmtto":"12-08-2026 11:25:00","ism":1,"portofolio":"jlislot"},{"id":248,"pvnm":"Advantplay","pvst":1,"pvsub":1,"pvicon":"adv","pvcode":"ADV","pvmtfrom":"21-08-2025 13:00:00","pvmtto":"21-08-2025 14:00:00","ism":1,"portofolio":"advslot"},{"id":97,"pvnm":"Top trend game","pvst":1,"pvsub":1,"pvicon":"ttg","pvcode":"TTG","pvmtfrom":"20-10-2020 18:00:00","pvmtto":"11-11-2028 23:00:00","ism":1,"portofolio":"ttgslot"},{"id":15,"pvnm":"Spade gaming","pvst":1,"pvsub":1,"pvicon":"spd","pvcode":"SPD","pvmtfrom":"20-05-2019 08:30:00","pvmtto":"21-07-2026 11:00:00","ism":1,"portofolio":"slt"},{"id":8,"pvnm":"Habanero","pvst":1,"pvsub":1,"pvicon":"hb","pvcode":"HB","pvmtfrom":"12-06-2024 03:50:00","pvmtto":"12-06-2024 10:00:00","ism":1,"portofolio":"11"},{"id":18,"pvnm":"Joker","pvst":1,"pvsub":1,"pvicon":"jkr","pvcode":"JKR","pvmtfrom":"20-01-2015 04:00:00","pvmtto":"31-12-2026 23:55:55","ism":1,"portofolio":"slt"},{"id":61,"pvnm":"Playstar gaming","pvst":1,"pvsub":1,"pvicon":"pst","pvcode":"PST","pvmtfrom":"03-08-2026 09:00:00","pvmtto":"03-08-2026 11:00:00","ism":1,"portofolio":"pstslot"},{"id":102,"pvnm":"Cq9","pvst":1,"pvsub":1,"pvicon":"cqn","pvcode":"CQN","pvmtfrom":"20-07-2029 03:00:00","pvmtto":"29-07-2026 09:15:00","ism":1,"portofolio":"cqnslot"},{"id":138,"pvnm":"Bng","pvst":1,"pvsub":1,"pvicon":"bng","pvcode":"BNG","pvmtfrom":"20-02-2021 05:35:00","pvmtto":"18-06-2026 17:45:00","ism":1,"portofolio":"bngslot"},{"id":136,"pvnm":"Slot88","pvst":1,"pvsub":1,"pvicon":"sll","pvcode":"SLL","pvmtfrom":"08-04-2025 12:51:00","pvmtto":"31-01-2035 13:00:00","ism":1,"portofolio":"sllslot"},{"id":176,"pvnm":"Mimi gaming","pvst":1,"pvsub":1,"pvicon":"mmg","pvcode":"MMG","pvmtfrom":"01-05-2025 08:00:00","pvmtto":"01-05-2025 09:00:00","ism":1,"portofolio":"mmgslot"},{"id":181,"pvnm":"Fachai","pvst":1,"pvsub":1,"pvicon":"fch","pvcode":"FCH","pvmtfrom":"27-01-2026 02:00:00","pvmtto":"20-05-2026 05:15:00","ism":1,"portofolio":"fchslot"},{"id":347,"pvnm":"No limit city","pvst":1,"pvsub":1,"pvicon":"evo","pvcode":"EVO","pvmtfrom":"20-04-2009 11:52:00","pvmtto":"10-04-2026 17:15:00","ism":1,"portofolio":"evoslot"},{"id":380,"pvnm":"Bigpot gaming ","pvst":1,"pvsub":1,"pvicon":"bpt","pvcode":"BPT","pvmtfrom":"20-07-2020 05:00:00","pvmtto":"20-07-2019 03:00:00","ism":1,"portofolio":"bptslot"},{"id":215,"pvnm":"Yggdrasil gaming","pvst":1,"pvsub":1,"pvicon":"ygg","pvcode":"YGG","pvmtfrom":"30-07-2026 05:00:00","pvmtto":"30-07-2026 08:30:00","ism":1,"portofolio":"yggslot"},{"id":413,"pvnm":"Dragoon soft","pvst":1,"pvsub":1,"pvicon":"dgs","pvcode":"DGS","pvmtfrom":"23-07-2026 08:00:00","pvmtto":"23-07-2026 11:00:00","ism":1,"portofolio":"dgsslot"},{"id":611,"pvnm":"Hacksaw gaming","pvst":1,"pvsub":1,"pvicon":"hsg","pvcode":"HSG","pvmtfrom":"20-07-2004 22:00:00","pvmtto":"26-01-2026 20:30:00","ism":1,"portofolio":"hsgslot"},{"id":677,"pvnm":"Mega888","pvst":1,"pvsub":1,"pvicon":"mll","pvcode":"MLL","pvmtfrom":"26-01-2026 14:30:00","pvmtto":"28-05-2026 03:20:00","ism":1,"portofolio":"mllslot"},{"id":743,"pvnm":"Mini.game","pvst":1,"pvsub":1,"pvicon":"plk","pvcode":"PLK","pvmtfrom":"20-07-2026 09:00:00","pvmtto":"20-07-2026 11:00:00","ism":1,"portofolio":"plkgm"},{"id":1207,"pvnm":"YGR Gaming","pvst":1,"pvsub":1,"pvicon":"YGR","pvcode":"YGR","pvmtfrom":"-","pvmtto":"-","ism":1,"portofolio":"ygrslot"}],"hideFromMobile":false,"gameGroupDisabled":false,"ordering":1},{"idgmfr":5,"gmfrnm":"Togel","gmfricon":"lottery","pvls":[{"id":179,"pvnm":"Infini4d","pvst":1,"pvsub":1,"pvicon":"ifd","pvcode":"IFD","pvmtfrom":"20-04-2020 01:00:00","pvmtto":"12-06-2026 19:30:00","ism":1,"portofolio":"DEF"},{"id":4,"pvnm":"Pragmatic Play","pvst":1,"pvsub":1,"pvicon":"pgr","pvcode":"PGR","pvmtfrom":"20-07-2020 23:00:00","pvmtto":"20-05-2001 09:00:00","ism":1,"portofolio":"sc"},{"id":1141,"pvnm":"EEAI","pvst":1,"pvsub":1,"pvicon":"EAI","pvcode":"EAI","pvmtfrom":"-","pvmtto":"-","ism":1,"portofolio":"eailuck"}],"hideFromMobile":false,"gameGroupDisabled":false,"ordering":0},{"idgmfr":6,"gmfrnm":"Poker","gmfricon":"poker","pvls":[],"hideFromMobile":true,"gameGroupDisabled":false,"ordering":6},{"idgmfr":7,"gmfrnm":"Racing","gmfricon":"racing","pvls":[],"hideFromMobile":true,"gameGroupDisabled":false,"ordering":6},{"idgmfr":9,"gmfrnm":"Sabung Ayam","gmfricon":"cock_fighting","pvls":[{"id":645,"pvnm":"Ws168","pvst":1,"pvsub":0,"pvicon":"wsl","pvcode":"WSL","pvmtfrom":"10-08-2026 03:00:00","pvmtto":"10-08-2026 04:30:00","ism":1,"portofolio":"ws168"},{"id":28,"pvnm":"Sv388","pvst":1,"pvsub":0,"pvicon":"awc","pvcode":"AWC","pvmtfrom":"30-07-2026 07:45:00","pvmtto":"30-07-2026 08:00:00","ism":1,"portofolio":"awc"}],"hideFromMobile":false,"gameGroupDisabled":false,"ordering":4},{"idgmfr":8,"gmfrnm":"Games","gmfricon":"games","pvls":[{"id":4,"pvnm":"Pragmatic Play","pvst":1,"pvsub":1,"pvicon":"pgr","pvcode":"PGR","pvmtfrom":"20-07-2020 23:00:00","pvmtto":"20-05-2001 09:00:00","ism":1,"portofolio":"pl"},{"id":1075,"pvnm":"GG Soft","pvst":1,"pvsub":1,"pvicon":"ggs","pvcode":"GGS","pvmtfrom":"20-07-2010 04:00:00","pvmtto":"20-07-2010 04:55:00","ism":1,"portofolio":"ggsgames"},{"id":97,"pvnm":"Top trend game","pvst":1,"pvsub":1,"pvicon":"ttg","pvcode":"TTG","pvmtfrom":"20-10-2020 18:00:00","pvmtto":"11-11-2028 23:00:00","ism":1,"portofolio":"ttgcard"},{"id":16,"pvnm":"SBO","pvst":1,"pvsub":1,"pvicon":"sbo","pvcode":"SBO","pvmtfrom":"20-07-2020 07:45:00","pvmtto":"31-07-2026 12:50:00","ism":1,"portofolio":"sbovg"},{"id":743,"pvnm":"Mini.game","pvst":1,"pvsub":1,"pvicon":"plk","pvcode":"PLK","pvmtfrom":"20-07-2026 09:00:00","pvmtto":"20-07-2026 11:00:00","ism":1,"portofolio":"plkgm"},{"id":18,"pvnm":"Joker","pvst":1,"pvsub":1,"pvicon":"jkr","pvcode":"JKR","pvmtfrom":"20-01-2015 04:00:00","pvmtto":"31-12-2026 23:55:55","ism":1,"portofolio":"bingo"},{"id":413,"pvnm":"Dragoon soft","pvst":1,"pvsub":1,"pvicon":"dgs","pvcode":"DGS","pvmtfrom":"23-07-2026 08:00:00","pvmtto":"23-07-2026 11:00:00","ism":1,"portofolio":"dgsgames"},{"id":677,"pvnm":"Mega888","pvst":1,"pvsub":1,"pvicon":"mll","pvcode":"MLL","pvmtfrom":"26-01-2026 14:30:00","pvmtto":"28-05-2026 03:20:00","ism":1,"portofolio":"mllgames"},{"id":611,"pvnm":"Hacksaw gaming","pvst":1,"pvsub":1,"pvicon":"hsg","pvcode":"HSG","pvmtfrom":"20-07-2004 22:00:00","pvmtto":"26-01-2026 20:30:00","ism":1,"portofolio":"hsggames"},{"id":181,"pvnm":"Fachai","pvst":1,"pvsub":1,"pvicon":"fch","pvcode":"FCH","pvmtfrom":"27-01-2026 02:00:00","pvmtto":"20-05-2026 05:15:00","ism":1,"portofolio":"fchspecgames"},{"id":314,"pvnm":"Jili gaming","pvst":1,"pvsub":1,"pvicon":"jli","pvcode":"JLI","pvmtfrom":"11-11-2025 11:30:00","pvmtto":"12-08-2026 11:25:00","ism":1,"portofolio":"jligames"},{"id":176,"pvnm":"Mimi gaming","pvst":1,"pvsub":1,"pvicon":"mmg","pvcode":"MMG","pvmtfrom":"01-05-2025 08:00:00","pvmtto":"01-05-2025 09:00:00","ism":1,"portofolio":"mmggame"}],"hideFromMobile":false,"gameGroupDisabled":false,"ordering":5},{"idgmfr":4,"gmfrnm":"Tembak Ikan","gmfricon":"tembak_ikan","pvls":[{"id":15,"pvnm":"Spade gaming","pvst":1,"pvsub":1,"pvicon":"spd","pvcode":"SPD","pvmtfrom":"20-05-2019 08:30:00","pvmtto":"21-07-2026 11:00:00","ism":1,"portofolio":"fishinggame"},{"id":18,"pvnm":"Joker","pvst":1,"pvsub":1,"pvicon":"jkr","pvcode":"JKR","pvmtfrom":"20-01-2015 04:00:00","pvmtto":"31-12-2026 23:55:55","ism":1,"portofolio":"fhs"},{"id":1207,"pvnm":"YGR Gaming","pvst":1,"pvsub":1,"pvicon":"YGR","pvcode":"YGR","pvmtfrom":"-","pvmtto":"-","ism":1,"portofolio":"fishygr"},{"id":137,"pvnm":"Micro gaming","pvst":1,"pvsub":1,"pvicon":"mcg","pvcode":"MCG","pvmtfrom":"20-08-2026 10:50:00","pvmtto":"20-08-2026 12:00:00","ism":1,"portofolio":"mcgfish"},{"id":314,"pvnm":"Jili gaming","pvst":1,"pvsub":1,"pvicon":"jli","pvcode":"JLI","pvmtfrom":"11-11-2025 11:30:00","pvmtto":"12-08-2026 11:25:00","ism":1,"portofolio":"jlifishing"},{"id":413,"pvnm":"Dragoon soft","pvst":1,"pvsub":1,"pvicon":"dgs","pvcode":"DGS","pvmtfrom":"23-07-2026 08:00:00","pvmtto":"23-07-2026 11:00:00","ism":1,"portofolio":"dgsfish"},{"id":611,"pvnm":"Hacksaw gaming","pvst":1,"pvsub":1,"pvicon":"hsg","pvcode":"HSG","pvmtfrom":"20-07-2004 22:00:00","pvmtto":"26-01-2026 20:30:00","ism":1,"portofolio":"hsgbingo"},{"id":181,"pvnm":"Fachai","pvst":1,"pvsub":1,"pvicon":"fch","pvcode":"FCH","pvmtfrom":"27-01-2026 02:00:00","pvmtto":"20-05-2026 05:15:00","ism":1,"portofolio":"fchfish"}],"hideFromMobile":false,"gameGroupDisabled":false,"ordering":6}];
				var d = $("#ProviderList");
				
				for(var b = 0; b < a.length; b++) {
					var e = a[b];
					
					var pvls = e.pvls;
					if( pvls.length > 0 ) {
						for(var c = 0; c < pvls.length; c++) {
							var f = pvls[c];
							var g = $('li[data-provider="'+ f.id +'"]');
							
							if( g.length == 0 ) {
								var icon = f.pvicon;
								var sub  = f.pvsub;
								var pvcd = f.pvcode.toLowerCase();
								var hassub = sub == 1 ? "sub" : "";
								var url  = sub == 1 ? "/game/" + pvcd + "/" + e.idgmfr : "/play/" + pvcd;
								if( pvcd == "pgr" ) {
									url  = "/game/" + pvcd + "/3";
								}

								
								d.append('<li class="provider '+ hassub +'" data-provider="'+ f.id +'"><a href="'+ url +'" class="'+ icon.toLowerCase() +'" aria-label="'+ f.pvnm +'"></a></li>');
							}
						}
					}
				}

				var _a = d.find("li");
				var _bbnp = [];
				_a.each(function(k, i) {
					var a = $(i).find("a").attr("class");
					if( a == "bbp" || a == "bbn" ) {
						_bbnp.unshift(i);
						$(i).remove();
					}
				});
				_bbnp.forEach((entry) => {
					d.prepend(entry);
				});

				$(document).on('click', '.provider a', function() {
					var target = $(this).attr("data-url");
	
					
						if( $(this).closest("li").hasClass("sub") ) {
							location.href = target;
						} else {
							do_login(target);
							return false;
						}
					
				});
			</script>
		</div>

		<div class="_seo_footer default">
						<!-- TOMBOL SOSMED -->

<style>
  @import url("https://fonts.googleapis.com/css?family=Raleway:900&display=swap");

  :root {
    --accent-color: #ffc000;
    --base-color: #000;
  }

  .hamburg {
    position: absolute;
    width: 40px;
    height: auto;
    padding: .6rem;
    background-color: var(--base-color);
    border-radius: 10px;
    z-index: 80;    
    box-shadow: 0px 0px 12px 1px #ffc000;
  }

  .ard-sosmed {
    display: block;
    cursor: pointer;
    position: fixed;
    bottom: 10%;
    left: 10px;
    font-family: "Raleway", sans-serif;
    z-index: 79;
  }

  .ard-sosmed ul {
    margin: 0;
    padding: 0;
  }

  .ard-sosmed ul li {
    position: absolute;
    text-decoration: none;
    list-style: none;
    transform: translate(0, 0) rotate(360deg);
    transition: all .5s ease;
    opacity: 0;
  }

  .ard-sosmed.open ul li:nth-child(1) {
  transform: translateY(-305px);
  transition-delay: .20s;
  opacity: 1;
}

.ard-sosmed.open ul li:nth-child(2) {
  transform: translateY(-245px);
  transition-delay: .16s;
  opacity: 1;
}

.ard-sosmed.open ul li:nth-child(3) {
  transform: translateY(-185px);
  transition-delay: .12s;
  opacity: 1;
}

.ard-sosmed.open ul li:nth-child(4) {
  transform: translateY(-125px);
  transition-delay: .08s;
  opacity: 1;
}

.ard-sosmed.open ul li:nth-child(5) {
  transform: translateY(-65px);
  transition-delay: .04s;
  opacity: 1;
}

  .ard-sosmed.open ul li:nth-child(6) {
    transform: translateX(200px);
    transition-delay: 0s;
    opacity: 1;
  }

  .ard-sosmed ul li a img {
    width: 90%;
    height: auto;
  }

  .ard-sosmed ul li a {
    display: flex;
    width: 55px;
    height: 55px;
    border: solid 2px var(--accent-color);
    border-radius: 10px;
    justify-content: center;
    align-items: center;
    background-color: #000 ;
  }

  .bar1,
  .bar2,
  .bar3 {
    width: 80%;
    height: 5px;
    background-color: var(--accent-color);
    margin: 6px auto;
    transition: .4s;
    position: relative;
    transform: translateY(-1px);
  }

  .open .bar1 {
    transform: translate(0, 10px) rotate(-225deg);
  }

  .open .bar2 {
    opacity: 0;
    transform: translate(0, -6px) rotate(-225deg);
  }

  .open .bar3 {
    transform: translate(0, -12px) rotate(-315deg);
  }

  .ard-sosmed ul li div {
    position: absolute;
    transition: all .3s ease;
    opacity: 0;
    scale: .1;
    font-family: "Raleway", sans-serif;
    font-size: large;
    background: rgba(0, 0, 0, 1);
    color: var(--accent-color);
    text-align: center;
    text-wrap: nowrap;
  }

  .ard-sosmed ul li:hover div {
    opacity: 1;
    scale: 1;
  }

  .ard-sosmed ul li:nth-child(1) div {
    transform: translateY(-240px);
  }

  .ard-sosmed ul li:nth-child(1):hover div {
    transform: translateY(-95px);
  }

  .ard-sosmed ul li:nth-child(2) div {
    transform: translateY(-175px);
  }

  .ard-sosmed ul li:nth-child(2):hover div {
    transform: translate(30px, -95px);
  }

  .ard-sosmed ul li:nth-child(3) div {
    transform: translateY(-150px);
  }

  .ard-sosmed ul li:nth-child(3):hover div {
    transform: translate(50px, -90px);
  }

  .ard-sosmed ul li:nth-child(4) div {
    transform: translateX(160px);
  }

  .ard-sosmed ul li:nth-child(4):hover div {
    transform: translate(50px, -90px);
  }

  .ard-sosmed ul li:nth-child(5) div {
    transform: translate(110px, 70px);
  }

  .ard-sosmed ul li:nth-child(5):hover div {
    transform: translate(62px, -80px);
  }

  .ard-sosmed ul li:nth-child(6) div {
    transform: translate(55px, 135px);
  }

  .ard-sosmed ul li:nth-child(6):hover div {
    transform: translate(65px, -65px);
  }

  .attention {
    position: relative;
    -webkit-clip-path: polygon(0% 0%, 100% 0%, 100% 75%, 49% 75%, 22% 100%, 22% 75%, 0% 75%);
    clip-path: polygon(0% 0%, 100% 0%, 100% 75%, 49% 75%, 22% 100%, 22% 75%, 0% 75%);
    width: 80px;
    text-wrap: nowrap;
    height: 30px;
    margin-bottom: 5px;
    left: 15px;
    background-color: var(--base-color);
    cursor: default;
    color: var(--accent-color);
    display: flex;
    justify-content: center;
    align-items: center;
    padding-bottom: 10px;
    opacity: 0;
  }

  .whore {
    animation: flicker .6s infinite;

    &:hover {
      animation-duration: 10s;
    }
  }

  @keyframes flicker {
    0% {
      opacity: 1;
    }

    50% {
      opacity: 0;
    }

    100% {
      opacity: 1;
    }
  }

  @media screen and (max-width: 600px) {
    .ard-sosmed {
      bottom: 13%;
    }
  }
</style>
<div class="ard-sosmed">
  <div class="attention whore">
    RTPLIVE !  </div>
  <div class="hamburg" onclick="ardFunction()">
    <div class="bar1"></div>
    <div class="bar2"></div>
    <div class="bar3"></div>
  </div>
  <ul>
    <li>
            <a href="https://ln.run/rtptitan777" target="_blank">
        <img src="https://assetskid.com/TITAN777/gif/GIF-RTP-TITAN777.gif" alt="RTP">
      </a>
      <div>
        RTP
      </div>
    </li>
    <li>
      <a href="https://ln.run/watitan777" target="_blank">
        <img src="https://assetskid.com/TITAN777/gif/GIF-WHATSAPP-TITAN777.gif" alt="WHATSAPP">
      </a>
      <div>
        WHATSAPP
      </div>
    </li>
    <li>
      <a href="https://t.me/+uo90AXpmxaU0YjY1" target="_blank">
        <img src="https://assetskid.com/TITAN777/gif/GIF-TELEGRAM2-TITAN777.gif" alt="TELEGRAM">
      </a>
      <div>
        TELEGRAM
      </div>
    </li>
    <li>
      <a href="https://direct.lc.chat/19966491/" target="_blank">
        <img src="https://assetskid.com/TITAN777/gif/GIF-LIVECHAT-TITAN777.gif" alt="LIVECHAT">
      </a>
      <div>
        LIVECHAT
      </div>
    </li>
    <li>
      <a href="https://ln.run/APK-Titan777" target="_blank">
        <img src="https://image.aksesgrup988.cfd/ICON%20SOSMED%20TOMBOL/apk-alasqq_uiucvp.gif" alt="APK">
      </a>
      <div>
        APK
      </div>
        </li>
  </ul>
</div>
<script>
  const ard = document.querySelector('.ard-sosmed');
  const attention_whore = document.querySelector('.attention.whore');

  function ardFunction() {
    ard.classList.toggle("open");
    attention_whore.classList.remove("whore");
  }
</script>
    <link href="/Content/reserve-css?v=" rel="stylesheet"/>

    <h1>TITAN777 – Platform Game Daring Modern Sistem Akses Cepat OK</h1>
    
    <p>Perkembangan teknologi digital telah menghadirkan berbagai platform hiburan berbasis internet yang semakin inovatif. Salah satu platform yang kini semakin dikenal oleh para pengguna adalah TITAN777, sebuah layanan digital yang menawarkan pengalaman bermain game online modern dengan sistem yang stabil, cepat, dan mudah diakses dari berbagai perangkat.</p>
    
    <p>Sebagai platform yang dirancang untuk memberikan kenyamanan bagi pengguna, TITAN777 menghadirkan berbagai fitur unggulan yang memadukan teknologi terbaru dengan tampilan antarmuka yang sederhana. Hal ini membuat pengguna dapat menikmati berbagai permainan tanpa harus mengalami kesulitan dalam proses navigasi atau akses sistem.</p>
    
    <p>Selain itu, <a href="https://titan777gg.com" target="_blank" rel="noopener noreferrer">TITAN777</a> juga terus melakukan pengembangan sistem agar mampu memberikan pengalaman digital yang lebih optimal. Dengan server yang responsif serta sistem keamanan yang terus diperbarui, platform ini berupaya menghadirkan lingkungan hiburan yang stabil dan terpercaya bagi para penggunanya.</p>

    <h2>Sistem Akses TITAN777 yang Cepat dan Mudah Digunakan</h2>
    
    <p>Salah satu keunggulan utama dari TITAN777 adalah sistem akses yang dirancang agar mudah digunakan oleh siapa saja. Pengguna dapat mengakses platform ini melalui berbagai perangkat seperti komputer, tablet, maupun smartphone tanpa harus melakukan konfigurasi yang rumit.</p>
    
    <p>Desain tampilan yang responsif membuat halaman situs dapat menyesuaikan dengan berbagai ukuran layar. Hal ini memungkinkan pengguna untuk menikmati pengalaman bermain yang nyaman, baik saat menggunakan perangkat desktop maupun perangkat mobile.</p>
    
    <p>Selain itu, proses navigasi di dalam platform juga dibuat sesederhana mungkin. Menu utama, kategori permainan, serta fitur-fitur lainnya ditata secara sistematis sehingga pengguna dapat menemukan permainan yang diinginkan dengan cepat.</p>

    <h2>Teknologi Server Stabil untuk Pengalaman Bermain Lebih Optimal</h2>
    
    <p>Kualitas server merupakan salah satu faktor penting dalam menentukan kenyamanan pengguna saat bermain game online. TITAN777 menggunakan sistem server yang dirancang untuk memberikan performa stabil serta meminimalkan gangguan teknis saat platform sedang digunakan.</p>
    
    <p>Dengan teknologi server yang modern, pengguna dapat menikmati permainan tanpa mengalami lag atau keterlambatan sistem. Hal ini tentunya memberikan pengalaman bermain yang lebih lancar dan menyenangkan.</p>
    
    <p>Selain itu, sistem pengelolaan server juga terus diperbarui secara berkala untuk memastikan bahwa performa platform tetap optimal meskipun jumlah pengguna terus meningkat.</p>

    <h2>Tampilan Antarmuka Modern dan User Friendly</h2>
    
    <p>Selain fokus pada performa sistem, TITAN777 juga menghadirkan tampilan antarmuka yang modern dan user friendly. Desain visual yang bersih serta navigasi yang jelas membuat pengguna dapat memahami fungsi setiap fitur dengan mudah.</p>
    
    <p>Setiap elemen pada halaman situs dirancang dengan mempertimbangkan kenyamanan pengguna. Mulai dari tata letak menu, kategori permainan, hingga informasi yang ditampilkan semuanya disusun secara terstruktur.</p>
    
    <p>Pendekatan desain ini bertujuan agar pengguna tidak hanya menikmati permainan yang tersedia, tetapi juga merasa nyaman saat menjelajahi berbagai fitur yang ada di dalam platform.</p>

    <h2>Ragam Permainan Digital dengan Teknologi Terbaru</h2>
    
    <p>Sebagai platform hiburan digital, TITAN777 menghadirkan berbagai jenis permainan yang dirancang menggunakan teknologi terbaru. Setiap permainan memiliki konsep serta mekanisme yang berbeda sehingga pengguna dapat memilih permainan yang paling sesuai dengan preferensi mereka.</p>
    
    <p>Keberagaman permainan ini memberikan pengalaman yang lebih menarik bagi pengguna karena mereka dapat mencoba berbagai jenis permainan tanpa harus berpindah ke platform lain.</p>
    
    <p>Selain itu, pembaruan permainan juga dilakukan secara berkala agar pengguna selalu mendapatkan pengalaman baru yang lebih segar dan inovatif.</p>

    <h2>Sistem Keamanan Digital yang Terintegrasi</h2>
    
    <p>Keamanan merupakan salah satu aspek penting dalam platform berbasis internet. Oleh karena itu,  mengimplementasikan sistem keamanan digital yang dirancang untuk melindungi data serta aktivitas pengguna.</p>
    
    <p>Teknologi enkripsi modern digunakan untuk menjaga kerahasiaan informasi yang terdapat di dalam sistem. Dengan demikian, pengguna dapat mengakses platform dengan rasa aman dan nyaman.</p>
    
    <p>Selain itu, sistem pemantauan juga diterapkan untuk memastikan bahwa seluruh aktivitas di dalam platform berjalan sesuai dengan standar keamanan <a href="https://titan777gg.com/page/tentang-kami" target="_blank" rel="noopener noreferrer">Tentang TITAN777</a> yang telah ditetapkan.</p>

<p style="text-align:center; color:#fafafa; font-family:Arial,sans-serif;">COPYRIGHT &copy; TITAN777 2026</p>

<!-- Social Media List in One Line (Inline CSS Anti-Block) -->
<div style="display: flex; flex-wrap: wrap; gap: 10px; justify-content: flex-start; margin-top: 20px; margin-bottom: 20px;">
    
    <a href="https://ln.run/watitan777" target="_blank" style="display: inline-flex; align-items: center; gap: 6px; text-decoration: none !important; color: #ffffff !important; background-color: #25D366; padding: 8px 16px; border-radius: 25px; font-size: 14px; font-weight: bold;">
        <i class="fab fa-whatsapp"></i> Whatsapp
    </a>
    
    <a href="https://www.facebook.com/share/1FPerQgfXv/" target="_blank" style="display: inline-flex; align-items: center; gap: 6px; text-decoration: none !important; color: #ffffff !important; background-color: #1877F2; padding: 8px 16px; border-radius: 25px; font-size: 14px; font-weight: bold;">
        <i class="fab fa-facebook-f"></i> Facebook
    </a>
    
    <a href="https://www.instagram.com/titan777_ig" target="_blank" style="display: inline-flex; align-items: center; gap: 6px; text-decoration: none !important; color: #ffffff !important; background: linear-gradient(45deg, #f09433, #e6683c, #dc2743, #cc2366, #bc1888); padding: 8px 16px; border-radius: 25px; font-size: 14px; font-weight: bold;">
        <i class="fab fa-instagram"></i> Instagram
    </a>
    
    <a href="#" target="_blank" style="display: inline-flex; align-items: center; gap: 6px; text-decoration: none !important; color: #ffffff !important; background-color: #000000; border: 1px solid #444; padding: 8px 16px; border-radius: 25px; font-size: 14px; font-weight: bold;">
        <i class="fab fa-tiktok"></i> TikTok
    </a>
    
    <a href="https://youtube.com/@titan777_yt?si=7Lca5OjoOK1YrLyE" target="_blank" style="display: inline-flex; align-items: center; gap: 6px; text-decoration: none !important; color: #ffffff !important; background-color: #FF0000; padding: 8px 16px; border-radius: 25px; font-size: 14px; font-weight: bold;">
        <i class="fab fa-youtube"></i> YouTube
    </a>
    
</div></div>
				<div class="support-footer">
			<div class="row clearfix">
				<div class="col-6">
					<section aria-labelledby="license" class="license heading mb-2">
						<h3 id="license" class="mb-3">Lisensi</h3>
						<div class="license">
							<a href="https://www.pagcor.ph/index.php" target="_blank" rel="noopener noreferrer nofollow" title="PAGCOR - Official website" aria-label="PAGCOR - Official website">
								<span role="img" class="pagcor"></span>
							</a>
							<a href="https://www.gamblingcommission.gov.uk/public-and-players/public-register" target="_blank" rel="noopener noreferrer nofollow" title="Gambling Commission - Public Register" aria-label="Gambling Commission - Public Register">
								<span role="img" class="gambling-commission"></span>
							</a>
							<a href="https://itechlabs.com" target="_blank" rel="noopener noreferrer nofollow" title="iTech Labs - Official site" aria-label="iTech Labs - Official site">
								<span role="img" class="itech-labs"></span>
							</a>
							<a href="https://gaminglabs.com" target="_blank" rel="noopener noreferrer nofollow" title="Gaming Labs International - Global Gaming Testing &amp; Certification" aria-label="Gaming Labs International - Global Gaming Testing &amp; Certification">
								<span role="img" class="gaming-labs-certified"></span>
							</a>
							<a href="https://bmm.com" target="_blank" rel="noopener noreferrer nofollow" title="bmm testlabs - Official webiste" aria-label="bmm testlabs - Official webiste">
								<span role="img" class="bmm-testlabs"></span>
							</a>
							<a href="https://www.mga.org.mt" target="_blank" rel="noopener noreferrer nofollow" title="Malta Gaming Authority - Official site" aria-label="Malta Gaming Authority - Official site">
								<span role="img" class="mga"></span>
							</a>
							</div>
					</section>
					<section aria-labelledby="responsible-gaming" class="responsible-gaming heading mb-4">
						<h3 id="responsible-gaming" class="mb-3">Tanggung Jawab Bermain</h3>
						<img loading="lazy" src="https://cdn.robotaset.com/assets/images/common/icon-responsible-game-horizontal-white.png" alt='Logo program permainan bertanggung jawab'>
					</section>
				</div>
				<div class="col-3" aria-labelledby="games-heading">
	<h3 id="games-heading" class="mb-3">Kategori Permainan</h3>
	<ul class="footer-links">
		<li><a href="/game-group/sports" title="Kategori Permainan Sports" aria-label="Kategori Permainan Sports">Sports</a></li>
			<li><a href="/game-group/casino" title="Kategori Permainan Casino" aria-label="Kategori Permainan Casino">Casino</a></li>
			<li><a href="/game-group/slot" title="Kategori Permainan Slot" aria-label="Kategori Permainan Slot">Slot</a></li>
			<li><a href="/game-group/lottery" title="Kategori Permainan Togel" aria-label="Kategori Permainan Togel">Togel</a></li>
			<li><a href="/game-group/cock_fighting" title="Kategori Permainan Sabung Ayam" aria-label="Kategori Permainan Sabung Ayam">Sabung Ayam</a></li>
			<li><a href="/game-group/games" title="Kategori Permainan Games" aria-label="Kategori Permainan Games">Games</a></li>
			<li><a href="/game-group/tembak_ikan" title="Kategori Permainan Tembak Ikan" aria-label="Kategori Permainan Tembak Ikan">Tembak Ikan</a></li>
			</ul>
</div>

<div class="col-3" aria-labelledby="info-heading">
	<h3 id="info-heading" class="mb-3">Informasi</h3>
	<ul class="footer-links">
		<li><a href="/about-us" title="Tentang Kami" aria-label="Tentang Kami">Tentang Kami</a></li>
		<li><a href="/contact-us" title="Hubungi Kami" aria-label="Hubungi Kami">Hubungi Kami</a></li>
	</ul>
</div></div>
		</div>

		<div class="text-center" style="margin:20px auto;">
		  		<img loading="lazy" src="https://cdn.robotaset.com/assets/images/common/infini88.png" alt="infini88.png" height="45">
	  		</div>
  		<div class="text-center rules-agreement mt-4 mb-4">
  			<div class="rules-agreement-logo"></div>
	  		</div>
	</div>
	<div class="container">
	<p class="copyright">Hak Cipta &copy; 2026 &nbsp;<span class="brand-name">Titan777</span>. Semua hak dilindungi.</p>
</div>
</footer>
<script>
	var jpEl = $("#jackpot");
	setInterval(function() {
		var newJp = new Date().getTime() / 100;
		jpEl.attr("data-value", newJp);
		jpEl.text(formatCurrency(newJp, null, 2));
	}, 600);
</script>
<script>window.__balanceScope = "";</script>

<script src="https://cdn.robotaset.com/assets/js/common/axios.min.js"></script>
	<script src="https://cdn.robotaset.com/assets/js/common/popper.min.js"></script>
	<script src="https://cdn.robotaset.com/assets/js/common/bootstrap.min.js"></script>
	<script src="https://cdn.robotaset.com/assets/js/common/ajaxcall.min.js"></script>
	<script src="https://cdn.robotaset.com/assets/js/common/format-number.min.js"></script>
	<script src="https://cdn.robotaset.com/assets/thirdparty/owl-carousel/owl.carousel.min.js"></script>
	<script src="https://cdn.robotaset.com/assets/js/common/app.min.js"></script>
<script>
(function (window) {
    'use strict';

    var SCHEMA_VERSION = 1;
    var PREFIX = 'bal.v1.';
    var memberScope = String('' || '').replace(/[^A-Za-z0-9]/g, '');
    var storageKey = memberScope ? PREFIX + memberScope : null;
    var pending = {};
    var sequences = {};
    var subscribers = [];
    var providerListPromise = null;
    var PROVIDER_LIST_KEY = 'listPv';
    var PROVIDER_LIST_SCOPE_KEY = 'bal.meta.listPvScope';
    var PROVIDER_LOCKED_CODE = 19175;
    var PROVIDER_LOCKED_LABEL = 'Terkunci';
    var PROVIDER_MAINTENANCE_CODE = 9004;
    var PROVIDER_MAINTENANCE_LABEL = 'Pemeliharaan';
    // Locked-provider state is intentionally session/page scoped, not persisted in localStorage.
    // The authoritative persistent state lives in user_data.disabledProvider (Spring Session/Redis).
    var lockedProviders = {};
    // Page-scoped only: reload picks up the authoritative maintenance window again.
    var maintenanceProviders = {};
    var initialDisabledProviderRaw = String('' || '').trim();
    if (initialDisabledProviderRaw.toLowerCase() === 'null' || initialDisabledProviderRaw.toLowerCase() === 'undefined') {
        initialDisabledProviderRaw = '';
    }

    // Keep the native Storage methods before installing the legacy bridge below.
    // app.js / toto.js still contain direct sessionStorage wallet reads in LIVE PROD.
    // For this JSP-only POC those reads are virtualized to balanceCache/localStorage;
    // no balance object is persisted back into sessionStorage.
    var nativeStorageGetItem = Storage.prototype.getItem;
    var nativeStorageSetItem = Storage.prototype.setItem;
    var nativeStorageRemoveItem = Storage.prototype.removeItem;
    var nativeObjectKeys = Object.keys;

    window.__balanceScope = memberScope;

    function debug(reason, code) {
        if (window.__balanceCacheDebug === true && window.console && console.debug) {
            console.debug('[BalanceCache]', reason, code || '');
        }
    }

    function normalizeCode(code) {
        return String(code || '').trim().toUpperCase();
    }

    function safeParse(raw) {
        if (!raw) return null;
        try { return JSON.parse(raw); } catch (e) { return null; }
    }

    function emptyEnvelope() {
        return {
            schemaVersion: SCHEMA_VERSION,
            memberScope: memberScope,
            wallets: {}
        };
    }

    function readEnvelope() {
        if (!storageKey) return emptyEnvelope();
        var env = safeParse(localStorage.getItem(storageKey));
        if (!env || env.schemaVersion !== SCHEMA_VERSION || env.memberScope !== memberScope || !env.wallets || typeof env.wallets !== 'object') {
            return emptyEnvelope();
        }
        // V6 POC briefly persisted providerStates; do not carry it forward.
        if (Object.prototype.hasOwnProperty.call(env, 'providerStates')) delete env.providerStates;
        return env;
    }

    function writeEnvelope(env) {
        if (!storageKey) {
            debug('write_skipped_no_scope');
            return false;
        }
        env.schemaVersion = SCHEMA_VERSION;
        env.memberScope = memberScope;
        if (!env.wallets || typeof env.wallets !== 'object') env.wallets = {};
        if (Object.prototype.hasOwnProperty.call(env, 'providerStates')) delete env.providerStates;
        try {
            localStorage.setItem(storageKey, JSON.stringify(env));
            notify();
            return true;
        } catch (e) {
            debug('storage_write_failed');
            return false;
        }
    }

    function getProviderState(code) {
        code = normalizeCode(code);
        if (!code) return null;
        var state = lockedProviders[code];
        return state ? {
            status: 'LOCKED',
            messageCode: Number(state.messageCode || PROVIDER_LOCKED_CODE),
            updatedAt: Number(state.updatedAt || 0)
        } : null;
    }

    function isProviderLocked(code) {
        code = normalizeCode(code);
        return !!(code && lockedProviders[code]);
    }

    function replaceProviderStatusNode(h5, label, preferredTag, status) {
        if (!h5) return;
        var next = h5.nextElementSibling;
        var tag = preferredTag || (next && next.tagName && next.tagName.toLowerCase() === 'p' ? 'p' : 'span');
        var node = document.createElement(tag);
        status = status || 'LOCKED';
        node.className = status === 'MAINTENANCE' ? 'provider-maintenance-label' : 'provider-locked-label';
        node.setAttribute('data-provider-state', status);
        node.textContent = label;
        if (next) {
            next.parentNode.replaceChild(node, next);
        } else if (h5.parentNode) {
            h5.parentNode.appendChild(node);
        }
    }

    function disableTransferProvider(code) {
        var desktopSelectors = [
            '#TransferFrom li[data-value="' + code + '"]',
            '#TransferTo li[data-value="' + code + '"]'
        ];
        document.querySelectorAll(desktopSelectors.join(',')).forEach(function (item) {
            item.classList.add('disabled');
            item.setAttribute('aria-disabled', 'true');
            if (item.classList.contains('selected')) {
                var root = item.closest('#TransferFrom, #TransferTo');
                item.classList.remove('selected');
                if (root) {
                    var first = root.querySelector('li[data-value=""]');
                    if (first) {
                        first.classList.add('selected');
                        var chosen = root.querySelector('.chosen');
                        if (chosen) chosen.textContent = first.textContent;
                    }
                    var walletBox = root.id === 'TransferFrom'
                        ? document.getElementById('FromWallet')
                        : document.getElementById('ToWallet');
                    if (walletBox) walletBox.textContent = '0.00';
                }
            }
        });

        document.querySelectorAll('#TransferFrom option[value="' + code + '"], #TransferTo option[value="' + code + '"]').forEach(function (option) {
            option.disabled = true;
            option.setAttribute('aria-disabled', 'true');
            if (option.selected && option.parentElement) {
                var select = option.parentElement;
                select.value = '';
                try {
                    select.dispatchEvent(new Event('change', { bubbles: true }));
                } catch (e) {
                    var evt = document.createEvent('Event');
                    evt.initEvent('change', true, true);
                    select.dispatchEvent(evt);
                }
            }
        });
    }

    function renderProviderLocked(code) {
        code = normalizeCode(code);
        if (!code) return;
        var label = PROVIDER_LOCKED_LABEL || 'Locked';

        // Desktop Transfer side wallet list.
        document.querySelectorAll('#ProviderBalance h5[data-id]').forEach(function (h5) {
            if (normalizeCode(h5.getAttribute('data-id')) === code) {
                replaceProviderStatusNode(h5, label, 'span');
            }
        });

        // Mobile Balance list (shared by Infini88 / Infinitoto).
        document.querySelectorAll('#balance h5[data-id]').forEach(function (h5) {
            if (normalizeCode(h5.getAttribute('data-id')) === code) {
                replaceProviderStatusNode(h5, label, 'p');
            }
        });

        // Desktop header balance popup for both templates.
        var wallet = document.getElementById('game-balance-' + code.toLowerCase());
        if (wallet) {
            wallet.textContent = label;
            wallet.classList.remove('game-wallet');
            wallet.classList.add('provider-locked-label');
            wallet.setAttribute('data-provider-state', 'LOCKED');
        }
        document.querySelectorAll('.calibrate[data-id]').forEach(function (control) {
            if (normalizeCode(control.getAttribute('data-id')) === code) {
                control.style.display = 'none';
                control.setAttribute('aria-disabled', 'true');
            }
        });

        disableTransferProvider(code);
    }

    function isProviderMaintenance(code) {
        code = normalizeCode(code);
        return !!(code && maintenanceProviders[code]);
    }

    function renderProviderMaintenance(code) {
        code = normalizeCode(code);
        if (!code) return;
        var label = PROVIDER_MAINTENANCE_LABEL || 'Maintenance';

        document.querySelectorAll('#ProviderBalance h5[data-id]').forEach(function (h5) {
            if (normalizeCode(h5.getAttribute('data-id')) === code) {
                replaceProviderStatusNode(h5, label, 'span', 'MAINTENANCE');
            }
        });
        document.querySelectorAll('#balance h5[data-id]').forEach(function (h5) {
            if (normalizeCode(h5.getAttribute('data-id')) === code) {
                replaceProviderStatusNode(h5, label, 'p', 'MAINTENANCE');
            }
        });

        var wallet = document.getElementById('game-balance-' + code.toLowerCase());
        if (wallet) {
            wallet.textContent = label;
            wallet.classList.remove('game-wallet');
            wallet.classList.add('provider-maintenance-label');
            wallet.setAttribute('data-provider-state', 'MAINTENANCE');
            wallet.setAttribute('data-provider-code', code);
        }
        document.querySelectorAll('.calibrate[data-id]').forEach(function (control) {
            if (normalizeCode(control.getAttribute('data-id')) === code) {
                control.style.display = 'none';
                control.setAttribute('aria-disabled', 'true');
            }
        });
        disableTransferProvider(code);
    }

    function markProviderMaintenance(code) {
        code = normalizeCode(code);
        if (!code || code === 'MAIN') return false;
        maintenanceProviders[code] = { updatedAt: Date.now() };
        // Never count a stale numeric wallet in TOTAL, even if its TTL is valid.
        invalidate(code, 'maintenance');
        renderProviderMaintenance(code);
        // Legacy success callbacks may still attempt to display Retry immediately afterward.
        setTimeout(function () { renderProviderMaintenance(code); }, 0);
        try {
            window.dispatchEvent(new CustomEvent('balancecache:providermaintenance', {
                detail: { providerCode: code, messageCode: PROVIDER_MAINTENANCE_CODE }
            }));
        } catch (e) { /* CustomEvent compatibility is non-critical */ }
        return true;
    }

    function lockProvider(code, messageCode) {
        code = normalizeCode(code);
        if (!code) return false;

        // A locked provider must never keep a stale numeric balance.
        // Persist only the balance envelope; the LOCKED state itself stays in memory.
        if (storageKey) {
            var env = readEnvelope();
            delete env.wallets[code];
            writeEnvelope(env);
        }

        lockedProviders[code] = {
            messageCode: Number(messageCode || PROVIDER_LOCKED_CODE),
            updatedAt: Date.now()
        };

        renderProviderLocked(code);
        // Legacy callbacks may run after the response bridge and write Retry/0.
        setTimeout(function () { renderProviderLocked(code); }, 0);
        try {
            window.dispatchEvent(new CustomEvent('balancecache:providerlocked', {
                detail: { providerCode: code, messageCode: Number(messageCode || PROVIDER_LOCKED_CODE) }
            }));
        } catch (e) { /* CustomEvent compatibility is non-critical */ }
        return true;
    }

    function responseProviderCode(resp, payload) {
        var code = resp && resp.data && resp.data.disabledPv ? resp.data.disabledPv : null;
        if (!code && payload && typeof payload === 'object') code = payload.pvcd || payload.pvcode;
        if (!code && typeof payload === 'string') {
            var parsed = safeParse(payload);
            if (parsed) code = parsed.pvcd || parsed.pvcode;
        }
        return normalizeCode(code);
    }

    function handleProviderResponse(resp, payload) {
        if (!resp) return false;
        var code = responseProviderCode(resp, payload);
        if (!code) return false;
        if (Number(resp.code) === PROVIDER_LOCKED_CODE) {
            lockProvider(code, PROVIDER_LOCKED_CODE);
            return true;
        }
        if (Number(resp.code) === PROVIDER_MAINTENANCE_CODE) {
            markProviderMaintenance(code);
            return true;
        }
        return false;
    }

    function validWallet(obj) {
        return obj && typeof obj === 'object' && obj.balance !== undefined && obj.balance !== null && obj.ts !== undefined && obj.ts !== null;
    }

    function cloneWallet(obj) {
        return {
            balance: obj.balance,
            ts: Number(obj.ts),
            hasTransfer: Number(obj.hasTransfer || 0),
            revision: Number(obj.revision || 0),
            updatedAt: Number(obj.updatedAt || Date.now())
        };
    }

    function get(code) {
        code = normalizeCode(code);
        if (!code || !storageKey) return null;
        var wallet = readEnvelope().wallets[code];
        return validWallet(wallet) ? cloneWallet(wallet) : null;
    }

    function getUsable(code) {
        if (isProviderLocked(code) || isProviderMaintenance(code)) return null;
        var wallet = get(code);
        if (!wallet) return null;
        if (!Number.isFinite(wallet.ts) || wallet.ts <= Date.now()) return null;
        if (Number(wallet.hasTransfer) === 1) return null;
        return wallet;
    }

    function setWallet(code, obj, seq) {
        code = normalizeCode(code);
        if (!code || !validWallet(obj) || !storageKey) return false;
        if (isProviderLocked(code) || isProviderMaintenance(code)) return false;
        if (seq !== undefined && seq !== null && Number(seq) < Number(sequences[code] || 0)) {
            debug('stale_sequence_discarded', code);
            return false;
        }

        var env = readEnvelope();
        var existing = env.wallets[code];
        var incomingTs = Number(obj.ts);
        if (!Number.isFinite(incomingTs)) return false;
        if (existing && Number(existing.ts) > incomingTs) {
            debug('stale_timestamp_discarded', code);
            return false;
        }

        env.wallets[code] = {
            balance: obj.balance,
            ts: incomingTs,
            hasTransfer: Number(obj.hasTransfer || 0),
            revision: Number(obj.revision || seq || 0),
            updatedAt: Date.now()
        };
        return writeEnvelope(env);
    }

    function setFromListBalance(listBalance, seq) {
        // Persist the whole response in one localStorage write. Provider balance
        // 0 is a valid authoritative value and MUST be cached just like any
        // positive balance. A batch merge also prevents rapid parallel provider
        // responses from repeatedly rebuilding the envelope one wallet at a time.
        if (!Array.isArray(listBalance) || !storageKey) return false;

        var env = readEnvelope();
        var changed = false;
        var batchUpdatedAt = Date.now();

        listBalance.forEach(function (row) {
            if (!row || typeof row !== 'object') return;

            nativeObjectKeys(row).forEach(function (rawCode) {
                var code = normalizeCode(rawCode);
                var obj = row[rawCode];
                if (!code || !validWallet(obj)) return;
                if (isProviderLocked(code) || isProviderMaintenance(code)) return;

                // Only reject by sequence when the caller explicitly supplied
                // one for this request. Equal/undefined sequence is valid.
                if (seq !== undefined && seq !== null &&
                    Number(seq) < Number(sequences[code] || 0)) {
                    debug('stale_sequence_discarded', code);
                    return;
                }

                var incomingTs = Number(obj.ts);
                if (!Number.isFinite(incomingTs)) {
                    debug('invalid_timestamp_discarded', code);
                    return;
                }

                var existing = env.wallets[code];
                if (existing && Number(existing.ts) > incomingTs) {
                    debug('stale_timestamp_discarded', code);
                    return;
                }

                var next = {
                    // Do not use a truthy check here: numeric 0 and string "0"
                    // are legitimate balances returned by the backend.
                    balance: obj.balance,
                    ts: incomingTs,
                    hasTransfer: Number(obj.hasTransfer || 0),
                    revision: Number(obj.revision || seq || 0),
                    updatedAt: batchUpdatedAt
                };

                // Avoid an unnecessary localStorage write when an automatic API
                // bridge and the page's explicit setFromListBalance() both see
                // the same response.
                if (existing &&
                    existing.balance === next.balance &&
                    Number(existing.ts) === next.ts &&
                    Number(existing.hasTransfer || 0) === next.hasTransfer &&
                    Number(existing.revision || 0) === next.revision) {
                    return;
                }

                env.wallets[code] = next;
                changed = true;
            });
        });

        return changed ? writeEnvelope(env) : true;
    }

    function ingestApiResponse(resp, seq) {
        if (!resp || resp.success !== true || !resp.data) return false;
        if (!Array.isArray(resp.data.listBalance)) return false;
        return setFromListBalance(resp.data.listBalance, seq);
    }

    function invalidate(code, reason) {
        code = normalizeCode(code);
        if (!code || !storageKey) return false;
        var env = readEnvelope();
        if (!Object.prototype.hasOwnProperty.call(env.wallets, code)) return true;
        delete env.wallets[code];
        debug('invalidated:' + (reason || 'manual'), code);
        return writeEnvelope(env);
    }

    function total() {
        var env = readEnvelope();
        var amount = 0;
        var known = 0;
        var unknown = 0;
        Object.keys(env.wallets).forEach(function (code) {
            var wallet = getUsable(code);
            if (!wallet) {
                unknown++;
                return;
            }
            var n = Number(wallet.balance);
            if (Number.isFinite(n)) {
                amount += n;
                known++;
            } else {
                unknown++;
            }
        });
        return { amount: amount, known: known, unknown: unknown };
    }

    function beginRequest(code, force) {
        code = normalizeCode(code);
        if (!code) return null;
        if (pending[code] && !force) return null;
        sequences[code] = Number(sequences[code] || 0) + 1;
        pending[code] = sequences[code];
        return sequences[code];
    }

    function endRequest(code, seq) {
        code = normalizeCode(code);
        if (!code) return;
        if (seq === undefined || seq === null || pending[code] === seq) delete pending[code];
    }

    function isRequestCurrent(code, seq) {
        code = normalizeCode(code);
        return !!code && Number(seq) === Number(sequences[code] || 0);
    }

    function clearCurrentMember() {
        if (!storageKey) return;
        localStorage.removeItem(storageKey);
        notify();
    }

    function clearAllMembers() {
        var keys = [];
        for (var i = 0; i < localStorage.length; i++) {
            var key = localStorage.key(i);
            if (key && key.indexOf(PREFIX) === 0) keys.push(key);
        }
        keys.forEach(function (key) { localStorage.removeItem(key); });
        notify();
    }

    function normalizeProviderList(list) {
        if (!Array.isArray(list)) return [];
        var result = [];
        list.forEach(function (code) {
            code = normalizeCode(code);
            if (code && result.indexOf(code) === -1) result.push(code);
        });
        return result;
    }

    function readProviderList() {
        var raw = nativeStorageGetItem.call(localStorage, PROVIDER_LIST_KEY);
        if (raw === null) return null;
        var list = safeParse(raw);
        return Array.isArray(list) ? normalizeProviderList(list) : null;
    }

    function writeProviderList(list) {
        var normalized = normalizeProviderList(list);
        nativeStorageSetItem.call(localStorage, PROVIDER_LIST_KEY, JSON.stringify(normalized));
        if (memberScope) {
            nativeStorageSetItem.call(localStorage, PROVIDER_LIST_SCOPE_KEY, memberScope);
        }
        return normalized;
    }

    function providerListMatchesScope() {
        if (!memberScope) return false;
        return nativeStorageGetItem.call(localStorage, PROVIDER_LIST_SCOPE_KEY) === memberScope;
    }

    function requestProviderList() {
        var url = window.location.origin + '/api/wallet/calibrate/list';

        if (typeof window.callApi3 === 'function') {
            return window.callApi3(url, 'GET', null).then(function (resp) {
                var list = resp && resp.success && resp.data && Array.isArray(resp.data.listPv)
                    ? resp.data.listPv
                    : [];
                return writeProviderList(list);
            });
        }

        if (window.fetch) {
            return window.fetch(url, { credentials: 'same-origin' })
                .then(function (response) { return response.json(); })
                .then(function (resp) {
                    var list = resp && resp.success && resp.data && Array.isArray(resp.data.listPv)
                        ? resp.data.listPv
                        : [];
                    return writeProviderList(list);
                });
        }

        return new Promise(function (resolve) {
            var xhr = new XMLHttpRequest();
            xhr.open('GET', url, true);
            xhr.onreadystatechange = function () {
                if (xhr.readyState !== 4) return;
                if (xhr.status >= 200 && xhr.status < 300) {
                    var resp = safeParse(xhr.responseText);
                    var list = resp && resp.success && resp.data && Array.isArray(resp.data.listPv)
                        ? resp.data.listPv
                        : [];
                    resolve(writeProviderList(list));
                } else {
                    resolve([]);
                }
            };
            xhr.send();
        });
    }

    function ensureProviderList(force) {
        if (!storageKey) return Promise.resolve([]);

        var current = readProviderList();
        if (!force && providerListMatchesScope() && current !== null) {
            return Promise.resolve(current);
        }

        if (providerListPromise) return providerListPromise;

        providerListPromise = requestProviderList().then(function (list) {
            providerListPromise = null;
            return list;
        }, function () {
            providerListPromise = null;
            return current || [];
        });
        return providerListPromise;
    }

    function parseProviderList() {
        return readProviderList() || [];
    }

    function isLegacyWalletKey(key) {
        var code = normalizeCode(key);
        if (!code) return false;
        if (code === 'MAIN') return true;

        var env = readEnvelope();
        if (Object.prototype.hasOwnProperty.call(env.wallets, code)) return true;

        var providers = parseProviderList();
        if (providers.indexOf(code) !== -1) return true;

        // Some template flows expose pvls before listPv has been populated.
        if (Array.isArray(window.pvls)) {
            for (var i = 0; i < window.pvls.length; i++) {
                var row = window.pvls[i] || {};
                if (normalizeCode(row.pvcode || row.pvcd) === code) return true;
            }
        }
        return false;
    }

    function installLegacySessionStorageBridge() {
        if (Storage.prototype.__balanceCacheBridgeInstalled) return;

        Storage.prototype.getItem = function (key) {
            if (this === window.sessionStorage && isLegacyWalletKey(key)) {
                var wallet = get(key);
                return wallet ? JSON.stringify(wallet) : null;
            }
            return nativeStorageGetItem.call(this, key);
        };

        Storage.prototype.setItem = function (key, value) {
            if (this === window.sessionStorage) {
                var parsed = safeParse(value);
                if (validWallet(parsed)) {
                    // Compatibility only: legacy code thinks it wrote to
                    // sessionStorage, but the authoritative value is persisted
                    // exclusively by balanceCache in localStorage.
                    setWallet(key, parsed);
                    return;
                }
            }
            return nativeStorageSetItem.call(this, key, value);
        };

        Storage.prototype.removeItem = function (key) {
            if (this === window.sessionStorage && isLegacyWalletKey(key)) {
                invalidate(key, 'legacy_session_remove');
                // Also remove any real pre-migration entry that may still exist.
                return nativeStorageRemoveItem.call(this, key);
            }
            return nativeStorageRemoveItem.call(this, key);
        };

        // A few LIVE PROD balance functions enumerate Object.keys(sessionStorage)
        // before calling getItem(). Expose the localStorage wallet codes virtually
        // so those legacy readers keep working without persisting balance data in
        // sessionStorage.
        if (!Object.keys.__balanceCacheBridgeInstalled) {
            var bridgedObjectKeys = function (obj) {
                var keys = nativeObjectKeys(obj);
                if (obj === window.sessionStorage) {
                    var wallets = readEnvelope().wallets;
                    nativeObjectKeys(wallets).forEach(function (code) {
                        if (keys.indexOf(code) === -1) keys.push(code);
                    });
                }
                return keys;
            };
            try {
                Object.defineProperty(bridgedObjectKeys, '__balanceCacheBridgeInstalled', {
                    value: true,
                    configurable: false,
                    enumerable: false,
                    writable: false
                });
            } catch (e) {
                bridgedObjectKeys.__balanceCacheBridgeInstalled = true;
            }
            Object.keys = bridgedObjectKeys;
        }

        try {
            Object.defineProperty(Storage.prototype, '__balanceCacheBridgeInstalled', {
                value: true,
                configurable: false,
                enumerable: false,
                writable: false
            });
        } catch (e) {
            Storage.prototype.__balanceCacheBridgeInstalled = true;
        }
    }

    function purgeLegacySessionBalances() {
        var toRemove = [];
        for (var i = 0; i < sessionStorage.length; i++) {
            var key = sessionStorage.key(i);
            var parsed = safeParse(nativeStorageGetItem.call(sessionStorage, key));
            if (parsed && typeof parsed === 'object' && parsed.balance !== undefined && parsed.ts !== undefined) {
                toRemove.push(key);
            }
        }
        toRemove.forEach(function (key) { nativeStorageRemoveItem.call(sessionStorage, key); });
        localStorage.removeItem(PREFIX + 'anon');
    }

    function notify() {
        subscribers.slice().forEach(function (fn) {
            try { fn(readEnvelope()); } catch (e) { /* subscriber isolation */ }
        });
    }

    function subscribe(fn) {
        if (typeof fn !== 'function') return function () {};
        subscribers.push(fn);
        return function () {
            subscribers = subscribers.filter(function (item) { return item !== fn; });
        };
    }

    window.addEventListener('storage', function (event) {
        if (storageKey && event.key === storageKey) {
            notify();
        }
    });

    purgeLegacySessionBalances();
    installLegacySessionStorageBridge();

    // SSR maintenance is authoritative on page load. Mark before consumers calculate TOTAL.
    // This also clears a valid-but-stale balance from a previous page/cache TTL.
    document.querySelectorAll('[data-provider-state="MAINTENANCE"]').forEach(function (node) {
        var code = node.getAttribute('data-provider-code');
        if (!code && node.previousElementSibling && node.previousElementSibling.hasAttribute('data-id')) {
            code = node.previousElementSibling.getAttribute('data-id');
        }
        if (code) markProviderMaintenance(code);
    });

    window.balanceCache = {
        get: get,
        getUsable: getUsable,
        needsRefresh: function (code) { return getUsable(code) === null; },
        setWallet: setWallet,
        setFromListBalance: setFromListBalance,
        ingestApiResponse: ingestApiResponse,
        lockProvider: lockProvider,
        isProviderLocked: isProviderLocked,
        isProviderMaintenance: isProviderMaintenance,
        markProviderMaintenance: markProviderMaintenance,
        renderProviderMaintenance: renderProviderMaintenance,
        getProviderState: getProviderState,
        renderProviderLocked: renderProviderLocked,
        invalidate: invalidate,
        total: total,
        beginRequest: beginRequest,
        endRequest: endRequest,
        isRequestCurrent: isRequestCurrent,
        clearCurrentMember: clearCurrentMember,
        clearAllMembers: clearAllMembers,
        subscribe: subscribe,
        ensureProviderList: ensureProviderList,
        waitForUiLoading: waitForUiLoading,
        getProviderList: function () { return readProviderList() || []; },
        hasMemberScope: function () { return !!storageKey; },
        key: function () { return storageKey; },
        legacyBridgeInstalled: function () { return Storage.prototype.__balanceCacheBridgeInstalled === true; },
        physicalSessionBalanceKeys: function () {
            return nativeObjectKeys(sessionStorage).filter(function (key) {
                var parsed = safeParse(nativeStorageGetItem.call(sessionStorage, key));
                return parsed && typeof parsed === 'object' && parsed.balance !== undefined && parsed.ts !== undefined;
            });
        }
    };

    // Compatibility for existing page scripts (login / withdrawal) without
    // modifying app.js or toto.js. Balance data is still stored only in localStorage.
    window.setBalanceToSession = function (listBalance) {
        return window.balanceCache.setFromListBalance(listBalance);
    };
    window.isBalanceExpired = function (valueOrWallet) {
        var wallet = valueOrWallet;
        if (typeof wallet === 'string') wallet = safeParse(wallet);
        if (!validWallet(wallet)) return true;
        return Number(wallet.hasTransfer || 0) === 1 || Number(wallet.ts) <= Date.now();
    };

    // Keep the existing listPv contract, but make it MEMBER-aware and normalized.
    // This metadata controls which provider wallets need to be queried.
    var originalSetListPvToSession = window.setListPvToSession;
    window.setListPvToSession = function (listPv) {
        if (typeof originalSetListPvToSession === 'function') {
            try { originalSetListPvToSession(listPv); } catch (e) { /* normalize below */ }
        }
        return writeProviderList(listPv);
    };

    function isTrackedBalanceUrl(url) {
        url = String(url || '');
        return url.indexOf('/api/wallet/main/getBalance') !== -1
            || url.indexOf('/api/wallet/provider/getBalance') !== -1
            || url.indexOf('/api/wallet/calibrate/list') !== -1;
    }

    function formatBatchTotal(amount) {
        if (typeof window.formatCurrency === 'function') {
            return window.formatCurrency(amount, null, 2);
        }
        var n = Number(amount || 0);
        return Number.isFinite(n) ? n.toFixed(2) : '0.00';
    }

    // V9: Desktop header Check All is orchestrated here instead of relying on a
    // "network went quiet" timer. A quiet period is not a valid completion
    // signal because provider requests can be chained/sequential. TOTAL is
    // rendered only after every eligible MAIN/provider task has settled.
    var headerBalanceBatchInProgress = false;

    function headerSpinnerHtml() {
        return '<i class="fa fa-spinner fa-pulse fa-fw"></i>';
    }

    // V10: even cache-hit wallets get a short loading affordance when MEMBER
    // explicitly runs Check All. This is UI feedback only; cache hits still do
    // not call the backend. Network/error paths keep the spinner until they
    // settle, then render the balance or Retry.
    var CACHE_HIT_LOADING_MS = 300;

    function waitForUiLoading(ms) {
        var delay = Number(ms);
        if (!Number.isFinite(delay) || delay < 0) delay = CACHE_HIT_LOADING_MS;
        return new Promise(function (resolve) {
            window.setTimeout(resolve, delay);
        });
    }

    function setHeaderMainBalance(balance) {
        var formatted = formatBatchTotal(balance) + ' K';
        var holder = document.getElementById('main-balance-holder');
        var credit = document.getElementById('creditBalance');
        if (holder) holder.textContent = formatted;
        if (credit) credit.textContent = formatted;
    }

    function setHeaderMainLoading() {
        var holder = document.getElementById('main-balance-holder');
        var credit = document.getElementById('creditBalance');
        if (holder) holder.innerHTML = headerSpinnerHtml();
        if (credit) credit.innerHTML = headerSpinnerHtml();
    }

    function setHeaderMainRetry() {
        var retry = (window.alertMsg && window.alertMsg.retry) ? window.alertMsg.retry : 'Retry';
        var holder = document.getElementById('main-balance-holder');
        var credit = document.getElementById('creditBalance');
        if (holder) holder.textContent = retry;
        if (credit) credit.textContent = retry;
    }

    function setHeaderProviderBalance(code, balance) {
        var node = document.getElementById('game-balance-' + normalizeCode(code).toLowerCase());
        if (!node || isProviderLocked(code) || isProviderMaintenance(code)) return;
        node.textContent = formatBatchTotal(balance) + ' K';
    }

    function setHeaderProviderLoading(code) {
        var node = document.getElementById('game-balance-' + normalizeCode(code).toLowerCase());
        if (!node || isProviderLocked(code) || isProviderMaintenance(code)) return;
        node.innerHTML = headerSpinnerHtml();
    }

    function setHeaderProviderRetry(code) {
        var node = document.getElementById('game-balance-' + normalizeCode(code).toLowerCase());
        if (!node || isProviderLocked(code) || isProviderMaintenance(code)) return;
        var retry = (window.alertMsg && window.alertMsg.retry) ? window.alertMsg.retry : 'Retry';
        node.textContent = retry;
    }

    function setHeaderTotalLoading() {
        document.querySelectorAll('.totalWallet').forEach(function (node) {
            node.innerHTML = headerSpinnerHtml();
        });
    }

    function setHeaderTotalFromCache() {
        var summary = total();
        var formatted = formatBatchTotal(summary.amount) + ' K';
        document.querySelectorAll('.totalWallet').forEach(function (node) {
            node.textContent = formatted;
        });
    }

    function requestHeaderMainBalance() {
        // Always show a short spinner for an explicit Check All, even when the
        // value is served from localStorage. This avoids the action looking
        // unresponsive while preserving the no-backend-request cache behavior.
        setHeaderMainLoading();
        var cached = getUsable('MAIN');
        if (cached !== null) {
            return waitForUiLoading().then(function () {
                setHeaderMainBalance(cached.balance);
                return cached.balance;
            });
        }

        if (typeof window.callApi3 !== 'function') {
            setHeaderMainRetry();
            return Promise.resolve(null);
        }

        var seq = beginRequest('MAIN', true);
        return window.callApi3(window.location.origin + '/api/wallet/main/getBalance', 'GET', null).then(function (resp) {
            if (resp && resp.success && resp.data) {
                setFromListBalance(resp.data.listBalance || [], seq);
            }
            endRequest('MAIN', seq);
            var stored = get('MAIN');
            if (resp && resp.success && stored !== null) {
                setHeaderMainBalance(stored.balance);
                return stored.balance;
            }
            setHeaderMainRetry();
            return null;
        }, function (err) {
            endRequest('MAIN', seq);
            setHeaderMainRetry();
            if (typeof window.errorHandler === 'function') window.errorHandler(err);
            return null;
        });
    }

    function requestHeaderProviderBalance(code, transferredProvider) {
        code = normalizeCode(code);
        if (!code || isProviderLocked(code) || isProviderMaintenance(code)) return Promise.resolve(null);

        // Explicit Check All always gives visual feedback. Cache hits and known
        // zero wallets only wait for the short UI delay; no XHR is created.
        setHeaderProviderLoading(code);

        // If MEMBER never transferred to this provider, existing behavior treats
        // it as a known zero without calling provider/getBalance.
        if (!transferredProvider[code]) {
            return waitForUiLoading().then(function () {
                setHeaderProviderBalance(code, 0);
                return 0;
            });
        }

        var cached = getUsable(code);
        if (cached !== null) {
            return waitForUiLoading().then(function () {
                setHeaderProviderBalance(code, cached.balance);
                return cached.balance;
            });
        }

        if (typeof window.callApi3 !== 'function') {
            setHeaderProviderRetry(code);
            return Promise.resolve(null);
        }

        var seq = beginRequest(code, true);
        return window.callApi3(window.location.origin + '/api/wallet/provider/getBalance', 'POST', { pvcd: code }).then(function (resp) {
            if (Number(resp && resp.code) === PROVIDER_LOCKED_CODE) {
                lockProvider(code, PROVIDER_LOCKED_CODE);
                endRequest(code, seq);
                return null;
            }
            if (Number(resp && resp.code) === PROVIDER_MAINTENANCE_CODE) {
                markProviderMaintenance(code);
                endRequest(code, seq);
                return null;
            }
            if (resp && resp.success && resp.data) {
                setFromListBalance(resp.data.listBalance || [], seq);
            }
            endRequest(code, seq);

            var stored = get(code);
            if (resp && resp.success && stored !== null) {
                setHeaderProviderBalance(code, stored.balance);
                return stored.balance;
            }

            setHeaderProviderRetry(code);
            return null;
        }, function (err) {
            endRequest(code, seq);
            setHeaderProviderRetry(code);
            if (typeof window.errorHandler === 'function') window.errorHandler(err);
            return null;
        });
    }

    function checkAllHeaderBalances() {
        if (headerBalanceBatchInProgress) return Promise.resolve(false);
        headerBalanceBatchInProgress = true;
        setHeaderTotalLoading();

        return ensureProviderList(false).then(function (listProvider) {
            var transferredProvider = {};
            (Array.isArray(listProvider) ? listProvider : []).forEach(function (code) {
                code = normalizeCode(code);
                if (code) transferredProvider[code] = true;
            });

            var tasks = [requestHeaderMainBalance()];

            // A .game-wallet exists only for active, non-maintenance and
            // server-not-disabled providers rendered by the JSP. Runtime-locked
            // providers lose this class in renderProviderLocked(), so they are
            // automatically excluded from subsequent batches as well.
            document.querySelectorAll('.game-wallet[id^="game-balance-"]').forEach(function (node) {
                var code = normalizeCode(node.id.replace(/^game-balance-/i, ''));
                if (!code || isProviderLocked(code) || isProviderMaintenance(code)) return;
                tasks.push(requestHeaderProviderBalance(code, transferredProvider));
            });

            return Promise.all(tasks);
        }).then(function () {
            // IMPORTANT: do not expose TOTAL until every eligible wallet task is
            // settled. This fixes the V8 race where TOTAL appeared while provider
            // XHRs were still running.
            setHeaderTotalFromCache();
            headerBalanceBatchInProgress = false;
            return true;
        }, function (err) {
            // Individual wallet requests are converted to settled results above,
            // so this path is mainly for provider-list/bootstrap failures.
            setHeaderTotalFromCache();
            headerBalanceBatchInProgress = false;
            if (typeof window.errorHandler === 'function') window.errorHandler(err);
            return false;
        });
    }

    // JSP-only compatibility bridge: cache every successful balance response
    // before legacy LIVE PROD page code renders it. This keeps app.js/toto.js
    // untouched and also covers header flows that still call their own helpers.
    function installApiResponseBridge() {
        if (typeof window.callApi3 === 'function' && !window.callApi3.__balanceCacheWrapped) {
            var originalCallApi3 = window.callApi3;
            var wrappedCallApi3 = function () {
                var args = Array.prototype.slice.call(arguments);
                var payload = args.length > 2 ? args[2] : null;
                var result = originalCallApi3.apply(this, args);
                if (!result || typeof result.then !== 'function') return result;
                return result.then(function (resp) {
                    handleProviderResponse(resp, payload);
                    ingestApiResponse(resp);
                    return resp;
                });
            };
            wrappedCallApi3.__balanceCacheWrapped = true;
            window.callApi3 = wrappedCallApi3;
        }

        // callApi is callback based in the legacy templates. Wrap only the
        // success callback and preserve all arguments/signatures.
        if (typeof window.callApi === 'function' && !window.callApi.__balanceCacheWrapped) {
            var originalCallApi = window.callApi;
            var wrappedCallApi = function () {
                var args = Array.prototype.slice.call(arguments);
                var payload = args.length > 1 ? args[1] : null;
                if (typeof args[2] === 'function') {
                    var success = args[2];
                    args[2] = function (resp) {
                        handleProviderResponse(resp, payload);
                        ingestApiResponse(resp);
                        return success.apply(this, arguments);
                    };
                }
                return originalCallApi.apply(this, args);
            };
            wrappedCallApi.__balanceCacheWrapped = true;
            window.callApi = wrappedCallApi;
        }

        if (typeof window.callApi2 === 'function' && !window.callApi2.__balanceCacheWrapped) {
            var originalCallApi2 = window.callApi2;
            var wrappedCallApi2 = function () {
                var args = Array.prototype.slice.call(arguments);
                var payload = args.length > 2 ? args[2] : null;
                if (typeof args[3] === 'function') {
                    var success = args[3];
                    args[3] = function (resp) {
                        handleProviderResponse(resp, payload);
                        ingestApiResponse(resp);
                        return success.apply(this, arguments);
                    };
                }
                return originalCallApi2.apply(this, args);
            };
            wrappedCallApi2.__balanceCacheWrapped = true;
            window.callApi2 = wrappedCallApi2;
        }

        // Some LIVE PROD code uses jQuery.ajax directly instead of callApi*.
        // ajaxSuccess provides a final safety net for successful listBalance
        // responses. Duplicate ingestion is idempotent.
        if (window.jQuery && !window.jQuery(document).data('balanceCacheAjaxBridge')) {
            window.jQuery(document).data('balanceCacheAjaxBridge', true);

            window.jQuery(document).on('ajaxSuccess.balanceCache', function (_event, xhr, settings) {
                var resp = xhr && xhr.responseJSON;
                if (!resp && xhr && typeof xhr.responseText === 'string') {
                    resp = safeParse(xhr.responseText);
                }
                var payload = settings ? settings.data : null;
                handleProviderResponse(resp, payload);
                ingestApiResponse(resp);
            });
        }
    }

    installApiResponseBridge();

    // Initialize locked providers from server-side user_data.disabledProvider.
    // Persistence remains in Spring Session/Redis, not in the balance localStorage object.
    initialDisabledProviderRaw.split(',').forEach(function (value) {
        var code = normalizeCode(value);
        if (!code) return;
        lockedProviders[code] = { messageCode: PROVIDER_LOCKED_CODE, updatedAt: Date.now() };
        renderProviderLocked(code);
    });

    // Remove the temporary V6 providerStates field if an older POC cache exists.
    if (storageKey) {
        var currentEnvelope = readEnvelope();
        writeEnvelope(currentEnvelope);
    }

    // If a page loads another legacy script after this JSP include, give it one
    // more chance to be wrapped without polling indefinitely.
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', installApiResponseBridge, { once: true });
    } else {
        setTimeout(installApiResponseBridge, 0);
    }

    // Preload listPv after the page scripts have finished parsing. LIVE PROD
    // app.js/toto.js expects this metadata synchronously when the user clicks
    // "check all balance"; without preloading, MAIN can refresh while every
    // provider path short-circuits on a missing/stale listPv.
    function preloadProviderList() {
        ensureProviderList(false);
    }
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', preloadProviderList, { once: true });
    } else {
        setTimeout(preloadProviderList, 0);
    }

    // Desktop header Check All: intercept the existing reload icon and run an
    // explicit Promise-based batch. app.js / toto.js remain untouched, but their
    // legacy counter/timer cannot expose TOTAL before provider requests finish.
    document.addEventListener('click', function (event) {
        var node = event.target;
        var control = null;
        while (node && node !== document) {
            if (node.id === 'iconReload') {
                control = node;
                break;
            }
            node = node.parentNode;
        }
        if (!control) return;

        event.preventDefault();
        event.stopPropagation();
        event.stopImmediatePropagation();
        checkAllHeaderBalances();
    }, true);

    // Keep logout cleanup member-scoped. Do not use localStorage.clear().
    if (typeof window.confirm_signout === 'function' && !window.confirm_signout.__balanceWrapped) {
        var originalConfirmSignout = window.confirm_signout;
        var wrappedConfirmSignout = function () {
            clearCurrentMember();
            return originalConfirmSignout.apply(this, arguments);
        };
        wrappedConfirmSignout.__balanceWrapped = true;
        window.confirm_signout = wrappedConfirmSignout;
    }
})(window);
</script>
<script src="https://cdn.robotaset.com/assets/js/common/Alert.min.js"></script>
		<script src="https://cdn.robotaset.com/assets/js/common/sha256.min.js"></script>
		<script src="https://cdn.robotaset.com/assets/js/pages/AccountValidation.min.js"></script>
		<script src="https://cdn.robotaset.com/assets/js/pages/240715_Account.min.js"></script>
		<script src="https://cdn.robotaset.com/assets/js/pages/240715_login.min.js"></script>
	<!-- Start of LiveChat (www.livechat.com) code -->
<script>
    window.__lc = window.__lc || {};
    window.__lc.license = 19966491;
    window.__lc.integration_name = "manual_channels";
    window.__lc.product_name = "livechat";
    ;(function(n,t,c){function i(n){return e._h?e._h.apply(null,n):e._q.push(n)}var e={_q:[],_h:null,_v:"2.0",on:function(){i(["on",c.call(arguments)])},once:function(){i(["once",c.call(arguments)])},off:function(){i(["off",c.call(arguments)])},get:function(){if(!e._h)throw new Error("[LiveChatWidget] You can't use getters before load.");return i(["get",c.call(arguments)])},call:function(){i(["call",c.call(arguments)])},init:function(){var n=t.createElement("script");n.async=!0,n.type="text/javascript",n.src="https://cdn.livechatinc.com/tracking.js",t.head.appendChild(n)}};!n.__lc.asyncInit&&e.init(),n.LiveChatWidget=n.LiveChatWidget||e}(window,document,[].slice))
</script>
<noscript><a href="https://www.livechat.com/chat-with/19966491/" rel="nofollow">Chat with us</a>, powered by <a href="https://www.livechat.com/?welcome" rel="noopener nofollow" target="_blank">LiveChat</a></noscript>
<!-- End of LiveChat code --><script>
window.openGameUrl = window.openGameUrl || function(url) {
    var ua = navigator.userAgent || '';
    if (/Mobile|Android/i.test(ua)) {
        window.location.href = url;
    } else {
        window.open(url, '_blank');
    }
};
</script>
<script>
            $(document).ready(function () {
                $(document).on('click', 'li.game a', function () {
                    var target = $(this).attr("data-url");

                    if ($(this).closest(".game").hasClass("sub")) {
                        location.href = target;
                    } else {
                        do_login(target);
                        return false;
                    }
                });

                $(document).on('click', '.btn-game', function () {
                    var target = $(this).attr("data-url");

                    do_login(target);
                });

                $(document).on('click', '.close_modal', function () {
                    close_mask();
                });
            });
        </script>
    <div class="reward_pop" style="display:none;" id="BannerPop">
			<div class="sub_color">
				<div class="logo_wrap">
					<img loading="lazy" decoding="async" src="https://cdn.robotaset.com/assets/tpl/a2697c19ad/images/logo.png" alt="LogoTitan777">
				</div>
			</div>
			<button class="close_icon btn" id="CloseBannerPop" onclick="closePopupBanner(15);">Tutup</button>
			<div class="card reward_content">
				<a href="/promotion" aria-label="REBATE TITAN777" title="REBATE TITAN777" class="banner-popup-link" onclick="closePopupBanner(15);"><img loading="lazy" decoding="async" src="https://image.aksesgrup988.cfd/TITAN777/banner%20popup%20titan22.png" alt="REBATE TITAN777"></a></div>
		</div>
		<script>popupBannerTimer();</script>
	<div class="modal fade" id="LoginPopupModal" tabindex="-1" role="dialog" aria-labelledby="LoginPopupTitle" aria-hidden="true">
			<div class="modal-dialog modal-dialog-centered" role="document">
				<div class="modal-content">
					<div class="modal-header">
						<h5 class="modal-title">Masuk</h5>
						<button type="button" class="close close-modal" data-dismiss="modal" aria-label="Close">
							<span aria-hidden="true">&times;</span>
						</button>
					</div>
					<div class="modal-body">
						<form id="LoginPopup" action="" method="POST">
							<div class="form-group clearfix">
								<label for="username" class="col-sm-4 col-12">Nama Pengguna<span>*</span></label>
								<input name="username" id="LP_Username" class="col-sm-8 col-12" type="text" minlength="5" maxlength="16" required="required" placeholder='Nama pengguna harus minimal antara 5 dan 16 karakter Dan gunakan alfanumerik'>
							</div>
							<div class="form-group clearfix">
								<label for="password" class="col-sm-4 col-12">Kata Sandi<span>*</span></label>
								<input name="password" id="LP_Password" class="col-sm-8 col-12" type="password" minlength="6" maxlength="16" required="required" placeholder='Panjang kata sandi minimal harus antara 6 dan 16 karakter'>
							</div>
						 	<div class="form-group clearfix">
						 		<div class="row">
						 			<div class="col-sm-6 offset-sm-4" style="padding-left:0;">
								   		<input type="hidden" name="target" id="target">
										<input type="hidden" id="gmsb">
								   		<button class="bttn-login" id="btnLoginPopup" type="submit">Masuk</button>
						 			</div>
						 		</div>
						 	</div>
						</form>
					</div>
				</div>
			</div>
		</div>

		<div class="modal fade" id="CaptchaPopupModal" tabindex="-1" role="dialog" aria-modal="true" aria-labelledby="CaptchaPopupTitle" aria-describedby="CaptchaPopupDesc" aria-hidden="true">
			<div class="modal-dialog modal-dialog-centered" role="document">
				<div class="modal-content">
					<div class="modal-header">
						<h5 id="CaptchaPopupTitle" class="modal-title">Masuk</h5>
						<button type="button" class="close close-modal" aria-label="" data-dismiss="modal" aria-label='Tutup modal Captcha'>
							<span aria-hidden="true">&times;</span>
						</button>
					</div>
					<div class="modal-body" id="CaptchaPopupDesc">
						<form id="CaptchaPopup" method="POST" autocomplete="off">
							<div class="form-group">
								<div class="row clearfix">
									<label for="captcha" class="col-md-3">Captcha</label>
									<input type="text" class="form-control col-md-5" name="captcha" maxlength="4" id="LP_Captcha" placeholder="Captcha" required>
									<div class="col-md-4">
										<img loading="lazy" src="/captcha/login/1792515295583" alt='Gambar captcha' id="imgCaptcha" class="img-captcha img-thumbnail" width="100" height="32" align="left">
										<i class="fas fa-redo-alt" id="ReloadCaptcha" role="button" aria-label='Muat ulang Captcha'></i>
									</div>
								</div>
							</div>
						 	<div class="form-group clearfix">
						 		<div class="row">
						 			<div class="col-sm-9 offset-sm-3" style="padding-left:0;">
								   		<button class="bttn-login" id="BtnCaptchaPopup" type="submit" style="margin-left:0;">Masuk Sekarang</button>
						 			</div>
						 		</div>
						 	</div>
						</form>
					</div>
				</div>
			</div>
		</div>
		<script>
function getIconEventTag(gmsbevent) {
	var tags = {
        1: { alt: 'hot', src: 'https://cdn.robotaset.com/assets/images/provider/pp-hot-tag-w-frame.png' },
        2: { alt: 'new', src: 'https://cdn.robotaset.com/assets/images/provider/pp-new-tag-w-frame.png' },
        3: { alt: 'exclusive', src: 'https://cdn.robotaset.com/assets/images/provider/pp-excl-tag.png' }
    };
    var tag = tags[gmsbevent];
    return tag
        ? '<img loading="lazy" alt="' + tag.alt + '" class="game-icon-frame" style="width:100%" src="' + tag.src + '">'
        : '';
}
</script>
<!-- Transfer Balance Modal -->

    
    
        <div class="modal fade transfer-balance-modal-component" id="transferBalanceModal" tabindex="-1" role="dialog"
             aria-labelledby="transferBalanceModalLabel" aria-hidden="true"
             data-backdrop="static" data-keyboard="false">
            <div class="modal-dialog modal-dialog-centered" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <div class="transfer-balance-title-wrapper">
                            <h5 class="modal-title"
                                id="transferBalanceModalLabel">Transfer Saldo</h5>
                            <button type="button" class="transfer-balance-info-btn" id="transferBalanceInfoBtn" aria-label="Info">
                                <i class="fas fa-question-circle"></i>
                            </button>
                        </div>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body">
                        <form id="transferBalanceForm">
                            <div class="form-group textfield-wrap">
                                <div class="row">
                                    <label for="walletBalance" class="col-sm-5">Saldo Dompet</label>
                                    <div class="row col-sm-7">
                                        <div class="input-field">
                                            <input type="text" class="form-control" id="walletBalance" readonly>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="form-group textfield-wrap">
                                <div class="row">
                                    <label for="providerBalance" class="col-sm-5">Saldo pada <span
                                            id="providerNameDisplay"></span></label>
                                    <div class="row col-sm-7">
                                        <div class="input-field">
                                            <input type="text" class="form-control" id="providerBalance" readonly>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="form-group textfield-wrap">
                                <div class="row">
                                    <label for="transferAmount" class="col-sm-5">Jumlah</label>
                                    <div class="row col-sm-7">
                                        <div class="input-field">
                                            <input type="number" class="form-control" id="transferAmount" min="0" step="0.01"
                                                   placeholder="0.00">
                                            <div class="invalid-feedback" id="transferAmountError"></div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="form-group textfield-wrap">
                                <div class="row">
                                    <label class="col-sm-5"></label>
                                    <div class="row col-sm-7">
                                        <div class="custom-checkbox-wrapper">
                                            <input type="checkbox" class="custom-checkbox-input" id="transferAll">
                                            <label class="custom-checkbox-label" for="transferAll">
                                                <span class="checkbox-slider"></span>
                                                <span class="checkbox-text">Masukan semua</span>
                                            </label>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </form>
                        
                        <div class="modal-footer">
                            <button type="button" class="btn btn-secondary btn-preview" id="btnPreview">

                                <span>Coba lihat dulu</span>
                            </button>
                            <button type="button" class="btn btn-primary" id="btnTransfer">
                                <i class="fas fa-play me-2"></i>Transfer saldo & main
                            </button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    


<!-- Transfer Balance Info Tooltip -->
<div class="transfer-balance-tooltip" id="transferBalanceTooltip" style="display: none;">
    <div class="transfer-balance-tooltip-content">
        <button type="button" class="transfer-balance-tooltip-close" aria-label="Close">
            <i class="fas fa-times"></i>
        </button>
        <h6 class="transfer-balance-tooltip-title">Transfer Saldo</h6>
        <div class="transfer-balance-tooltip-body">
            <p><strong>Saldo Dompet:</strong> Saldo yang tersedia di wallet utama Anda.</p>
            <p><strong>Saldo pada:</strong> Saldo yang tersedia di provider game.</p>
            <p><strong>Jumlah:</strong> Masukkan jumlah yang ingin ditransfer dari wallet ke provider game.</p>
            <p><strong>:</strong> Centang untuk mentransfer seluruh saldo wallet ke provider game.</p>
        </div>
    </div>
</div>



<style>
    /* Custom Checkbox Toggle Switch Style - Scoped to transfer balance modal */
    .transfer-balance-modal-component .custom-checkbox-wrapper {
        position: relative;
        display: inline-block;
    }

    .transfer-balance-modal-component .custom-checkbox-input {
        position: absolute;
        opacity: 0;
        width: 0;
        height: 0;
    }

    .transfer-balance-modal-component .custom-checkbox-label {
        display: flex;
        align-items: center;
        cursor: pointer;
        user-select: none;
        gap: 12px;
    }

    .transfer-balance-modal-component .checkbox-slider {
        position: relative;
        display: inline-block;
        width: 38px;
        height: 26px;
        background-color: #ccc;
        border-radius: 26px;
        transition: background-color 0.3s ease;
        box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
        margin-right: 0;
    }

    .transfer-balance-modal-component .checkbox-slider::before {
        content: "";
        position: absolute;
        width: 20px;
        height: 20px;
        left: 3px;
        top: 3px;
        background-color: white;
        border-radius: 50%;
        transition: transform 0.3s ease;
        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
    }

    .transfer-balance-modal-component .custom-checkbox-input:checked + .custom-checkbox-label .checkbox-slider {
        background-color: #28a745;
    }

    .transfer-balance-modal-component .custom-checkbox-input:checked + .custom-checkbox-label .checkbox-slider::before {
        transform: translateX(12px);
    }

    .transfer-balance-modal-component .custom-checkbox-input:focus + .custom-checkbox-label .checkbox-slider {
        box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.25);
    }

    .transfer-balance-modal-component .checkbox-text {
        font-weight: 500;
        color: #666;
        font-size: 14px;
        vertical-align: 8px;
    }

    .transfer-balance-modal-component .custom-checkbox-input:checked + .custom-checkbox-label .checkbox-text {
        color: #28a745;
        font-weight: 600;
    }

    /* Button Icon Spacing - Scoped to transfer balance modal */
    .transfer-balance-modal-component .btn i.me-2 {
        margin-right: 0.5rem;
    }

    /* Disabled button styling for desktop */
    .transfer-balance-modal-component .modal-footer .btn:disabled {
        opacity: 0.6;
        cursor: not-allowed;
    }

    /* Disabled checkbox styling for desktop */
    .transfer-balance-modal-component .custom-checkbox-input:disabled + .custom-checkbox-label {
        opacity: 0.6;
        cursor: not-allowed;
    }

    /* Disabled input styling for desktop */
    .transfer-balance-modal-component .input-field .form-control:disabled {
        opacity: 0.6;
        cursor: not-allowed;
        background-color: #e9ecef !important;
    }

    /* Preview button styling for desktop - low priority */
    .transfer-balance-modal-component .modal-footer .btn-preview {
        background-color: transparent !important;
        color: #adb5bd !important;
        border: 1px solid transparent !important;
        font-size: 0.875rem !important;
        font-weight: 400 !important;
        padding: 0.5rem 0.75rem !important;
        opacity: 0.5 !important;
    }

    .transfer-balance-modal-component .modal-footer .btn-preview:hover {
        background-color: transparent !important;
        color: #6c757d !important;
        opacity: 0.7 !important;
        text-decoration: underline !important;
    }

    .transfer-balance-modal-component .modal-footer .btn-preview:focus {
        box-shadow: none !important;
        outline: none !important;
    }

    /* Input validation styling */
    .transfer-balance-modal-component .form-control.is-invalid {
        border-color: #dc3545 !important;
        box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25) !important;
    }

    .transfer-balance-modal-component .invalid-feedback {
        display: block;
        width: 100%;
        margin-top: 0.25rem;
        font-size: 0.875rem;
        color: #dc3545;
    }

    /* Input styling for desktop - Readonly inputs (faded) */
    .transfer-balance-modal-component .input-field .form-control[readonly] {
        background-color: #3d3d3d !important;
        border-color: #e9ecef !important;
        color: white !important;
        cursor: not-allowed;
    }

    /* Input styling for desktop - Editable inputs (focused) */
    .transfer-balance-modal-component .input-field .form-control:not([readonly]) {
        background-color: #ffffff !important;
        border: 2px solid #007bff !important;
        color: #212529 !important;
        box-shadow: 0 0 0 0.15rem rgba(0, 123, 255, 0.15) !important;
        font-weight: 500;
    }

    .transfer-balance-modal-component .input-field .form-control:not([readonly]):focus {
        border-color: #0056b3 !important;
        box-shadow: 0 0 0 0.3rem rgba(0, 123, 255, 0.35) !important;
        outline: 0;
        background-color: #f8f9ff !important;
    }

    .transfer-balance-modal-component .input-field .form-control:not([readonly]):hover {
        border-color: #0056b3 !important;
        box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25) !important;
    }

    /* Title wrapper for desktop */
    .transfer-balance-modal-component .modal-header .transfer-balance-title-wrapper {
        display: flex;
        align-items: center;
        gap: 0.5rem;
    }

    .transfer-balance-modal-component .transfer-balance-info-btn {
        background: none;
        border: none;
        color: #adb5bd;
        font-size: 0.85rem;
        cursor: pointer;
        padding: 0.2rem;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.2s ease;
        opacity: 0.6;
    }

    .transfer-balance-modal-component .transfer-balance-info-btn:hover {
        color: #6c757d;
        opacity: 0.8;
        transform: scale(1.05);
    }

    .transfer-balance-modal-component .transfer-balance-info-btn:focus {
        outline: 1px solid #adb5bd;
        outline-offset: 1px;
        border-radius: 50%;
        opacity: 0.8;
    }

    /* Tooltip Popup */
    .transfer-balance-tooltip {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.6);
        z-index: 10000;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 1rem;
    }

    .transfer-balance-tooltip-content {
        background: #ffffff;
        border-radius: 8px;
        max-width: 500px;
        width: 100%;
        max-height: 80vh;
        overflow-y: auto;
        box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
        position: relative;
        padding: 1.5rem;
    }

    .transfer-balance-tooltip-close {
        position: absolute;
        top: 0.75rem;
        right: 0.75rem;
        background: none;
        border: none;
        font-size: 1.25rem;
        color: #666;
        cursor: pointer;
        padding: 0.25rem;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: color 0.2s ease;
    }

    .transfer-balance-tooltip-close:hover {
        color: #000;
    }

    .transfer-balance-tooltip-title {
        margin: 0 0 1rem 0;
        font-size: 1.25rem;
        font-weight: 600;
        color: #333;
        padding-right: 2rem;
    }

    .transfer-balance-tooltip-body {
        color: #555;
        line-height: 1.6;
    }

    .transfer-balance-tooltip-body p {
        margin-bottom: 0.75rem;
    }

    .transfer-balance-tooltip-body p:last-child {
        margin-bottom: 0;
    }

    .transfer-balance-tooltip-body strong {
        color: #333;
        font-weight: 600;
    }
</style>

<script>
    // Language strings for validation messages
    var transferBalanceLang = {
        errorAmountNegative: 'Jumlah tidak boleh negatif',
        errorAmountExceed: 'Jumlah tidak boleh melebihi saldo dompet',
        errorAmountZero: 'Jumlah harus lebih dari 0'
    };

    // Global flag for player transfer balance (defaults to false if not set)

    // Transfer Balance Modal Handler
    var transferBalanceModal = {
        currentProvider: null,
        gameUrl: null,
        // [IDTF-2100] null means "not known yet", which is different from a
        // real balance of 0. Starting these at 0 was what let the form validate
        // and submit against a balance nobody had confirmed.
        walletBalance: null,
        providerBalance: null,
        firstTransfer: parseInt("") || 0,

        normalizeProviderCode: function (providerCode) {
            return typeof providerCode === 'string' ? providerCode.trim().toUpperCase() : '';
        },

        resolveProviderCode: function (target, $btn, fallbackProviderCode) {
            var providerCode = '';

            if ($btn && $btn.length) {
                providerCode = $btn.attr('data-provider') || $btn.data('provider') || '';
            }

            if (!providerCode && typeof target === 'string') {
                var match = target.match(/\/(?:play|game)\/([^\/?#]+)/i);
                if (match && match[1]) {
                    providerCode = match[1];
                }
            }

            return this.normalizeProviderCode(providerCode || fallbackProviderCode);
        },

        getTransferredProviders: function () {
            var listPv = localStorage.getItem('listPv');
            var listPvArray = [];

            if (listPv) {
                try {
                    listPvArray = JSON.parse(listPv);
                } catch (e) {
                    listPvArray = [];
                }
            }

            if (!Array.isArray(listPvArray)) {
                return [];
            }

            return listPvArray.map(this.normalizeProviderCode).filter(function (providerCode) {
                return providerCode !== '';
            });
        },

        // listPv can survive a member switch. Never infer a zero balance from
        // an unscoped/malformed provider list; ask the centralized cache to
        // refresh its member-scoped list before making that decision.
        hasCurrentMemberProviderList: function () {
            var scope = window.__balanceScope;
            if (!scope || localStorage.getItem('bal.meta.listPvScope') !== scope) {
                return false;
            }
            try {
                return Array.isArray(JSON.parse(localStorage.getItem('listPv')));
            } catch (e) {
                return false;
            }
        },

        updateTransferredProviders: function (providers) {
            var listPvArray = this.getTransferredProviders();
            var providersToAdd = Array.isArray(providers) ? providers : [providers];
            var self = this;

            providersToAdd.forEach(function (providerCode) {
                var normalizedProviderCode = self.normalizeProviderCode(providerCode);
                if (normalizedProviderCode && listPvArray.indexOf(normalizedProviderCode) === -1) {
                    listPvArray.push(normalizedProviderCode);
                }
            });

            localStorage.setItem('listPv', JSON.stringify(listPvArray));
        },

        loadBalances: function (providerCode) {
            var self = this;
            self.currentProvider = self.normalizeProviderCode(providerCode);
            $('#providerNameDisplay').text(self.currentProvider);

            // Do not reuse the preceding provider or member's modal balances.
            self.walletBalance = null;
            self.providerBalance = null;
            $('#walletBalance, #providerBalance').val('...');

            // Disable checkbox and buttons while loading
            self.disableControls();

            // A missing provider wallet means 0 only when listPv is confirmed
            // to belong to the logged-in member. A background list refresh can
            // finish after MAIN is loaded, so re-render when it does.
            if (!self.hasCurrentMemberProviderList() && typeof balanceCache.ensureProviderList === 'function') {
                var requestedProvider = self.currentProvider;
                balanceCache.ensureProviderList(false).then(function () {
                    if (self.currentProvider !== requestedProvider || self.walletBalance === null) return;
                    self.renderBalances();
                    self.enableControls();
                });
            }

            // [IDTF-2100] A usable cached MAIN balance is shown without a
            // request. Controls only re-enable once the balance is actually
            // known - an unknown balance must never arrive here as 0, because
            // that would enable a transfer against a fabricated figure.
            var cachedMain = balanceCache.getUsable('MAIN');
            if (cachedMain !== null) {
                self.walletBalance = cachedMain.balance;
                self.renderBalances();
                self.enableControls();
                return;
            }

            var seq = balanceCache.beginRequest('MAIN');
            if (seq === null) {
                // A refresh is already in flight; it will render on completion.
                return;
            }

            callApi3('/api/wallet/main/getBalance', 'GET', null).then(function (response) {
                    balanceCache.endRequest('MAIN');

                    if (response && response.success && response.data && response.data.listBalance) {
                        balanceCache.setFromListBalance(response.data.listBalance, seq);
                    }

                    var stored = balanceCache.get('MAIN');
                    if (stored !== null) {
                        self.walletBalance = stored.balance;
                        self.renderBalances();
                        self.enableControls();
                    } else {
                        // Still unknown: offer a retry rather than a 0 balance.
                        self.showBalanceUnavailable();
                    }
            }).catch(function () {
                    balanceCache.endRequest('MAIN');
                    var stored = balanceCache.get('MAIN');
                    if (stored !== null) {
                        self.walletBalance = stored.balance;
                        self.renderBalances();
                        self.enableControls();
                    } else {
                        self.showBalanceUnavailable();
                    }
            });
        },

        /* Render whatever is currently known for both sides of the transfer. */
        renderBalances: function () {
            $('#walletBalance').val(this.formatCurrency(this.walletBalance));

            this.providerBalance = null;
            var providerCode = this.currentProvider;
            var blocked = balanceCache.isProviderLocked(providerCode)
                || balanceCache.isProviderMaintenance(providerCode);
            var neverTransferred = this.hasCurrentMemberProviderList()
                && this.getTransferredProviders().indexOf(providerCode) === -1;
            var pv = blocked ? null : balanceCache.getUsable(providerCode);

            if (blocked) {
                // Never treat a locked/maintenance provider as a zero wallet.
                $('#providerBalance').val(alertMsg.retry);
            } else if (neverTransferred) {
                // First transfer: listPv is authoritative; there is no provider
                // wallet to fetch yet. 0 is a known balance, not an API failure.
                this.providerBalance = 0;
                $('#providerBalance').val(this.formatCurrency(0));
            } else if (pv !== null) {
                this.providerBalance = pv.balance;
                $('#providerBalance').val(this.formatCurrency(this.providerBalance));
            } else {
                // Already transferred, but no usable balance: do not guess 0.
                $('#providerBalance').val(alertMsg.retry);
            }
        },

        /* MAIN balance could not be established, so the transfer controls stay
         * disabled and the member is shown a retry state (AC8). */
        showBalanceUnavailable: function () {
            $('#walletBalance').val(alertMsg.retry);
            $('#providerBalance').val(alertMsg.retry);
            this.disableControls();

            /*
            // Get provider balance
            $.ajax({
                url: '/api/wallet/provider/getBalance',
                method: 'POST',
                data: {pvcd: providerCode},
                success: function (response) {
                    if (response && response.success) {
                        self.providerBalance = response.data.balance || 0;
                        $('#providerBalance').val(self.formatCurrency(self.providerBalance));
                        $('#providerNameDisplay').text(providerCode.toUpperCase());
                    }
                }
            });
             */
        },

        showModal: function () {
            if (window.pendingGameLaunch) {
                this.gameUrl = window.pendingGameLaunch.target;
            }
            // Disable controls when modal opens (will be enabled after balance loads)
            this.disableControls();
            
            var isMobile = $('#transferBalanceModal').hasClass('mobile-modal') || window.innerWidth <= 768;
            if (isMobile) {
                $('#transferBalanceModal').fadeIn();
            } else {
                $('#transferBalanceModal').modal('show');
            }
        },

        hideModal: function () {
            var isMobile = $('#transferBalanceModal').hasClass('mobile-modal') || window.innerWidth <= 768;
            if (isMobile) {
                $('#transferBalanceModal').fadeOut();
            } else {
                $('#transferBalanceModal').modal('hide');
            }
            this.resetForm();
            window.pendingGameLaunch = null;
        },

        resetForm: function () {
            $('#transferAmount').val('').prop('readonly', false);
            $('#transferAll, #transferAllMobile').prop('checked', false);
            this.clearValidation();
            this.enableControls();
        },

        validateAmount: function (amount) {
            var self = this;
            var $input = $('#transferAmount');
            var $error = $('#transferAmountError, #transferAmountErrorMobile');
            var isValid = true;
            var errorMessage = '';

            // [IDTF-2100] Refuse to validate against an unknown balance rather
            // than treating it as 0 and letting the transfer through.
            if (self.walletBalance === null || self.walletBalance === undefined
                || isNaN(parseFloat(self.walletBalance))) {
                $input.addClass('is-invalid');
                $error.text(transferBalanceLang.errorBalanceUnknown || alertMsg.retry).show();
                return false;
            }

            // Check if negative
            if (amount < 0) {
                isValid = false;
                errorMessage = transferBalanceLang.errorAmountNegative || 'Amount cannot be negative';
            }
            // Check if exceeds wallet balance
            else if (amount > parseFloat(self.walletBalance)) {
                isValid = false;
                errorMessage = transferBalanceLang.errorAmountExceed || 'Amount cannot exceed wallet balance';
            }
            // Check if zero
            else if (amount === 0) {
                isValid = false;
                errorMessage = transferBalanceLang.errorAmountZero || 'Amount must be greater than 0';
            }

            if (!isValid) {
                $input.addClass('is-invalid');
                $error.text(errorMessage).show();
            } else {
                $input.removeClass('is-invalid');
                $error.text('').hide();
            }

            return isValid;
        },

        clearValidation: function () {
            $('#transferAmount').removeClass('is-invalid');
            $('#transferAmountError, #transferAmountErrorMobile').text('').hide();
        },

        disableControls: function () {
            // Disable checkboxes
            $('#transferAll, #transferAllMobile').prop('disabled', true);
            
            // Disable buttons
            $('#btnPreview, #btnPreviewMobile, #btnTransfer, #btnTransferMobile').prop('disabled', true);
            
            // Disable amount input
            $('#transferAmount').prop('disabled', true);
        },

        enableControls: function () {
            // Both origin balances must be known before enabling a transfer.
            // A genuine first-transfer provider balance of 0 is allowed.
            if (this.walletBalance === null || this.providerBalance === null) {
                this.disableControls();
                return;
            }
            // Enable checkboxes
            $('#transferAll, #transferAllMobile').prop('disabled', false);
            
            // Enable buttons
            $('#btnPreview, #btnPreviewMobile, #btnTransfer, #btnTransferMobile').prop('disabled', false);
            
            // Enable amount input
            $('#transferAmount').prop('disabled', false);
        },

        handleTransfer: function () {
            var self = this;
            var amount = parseFloat($('#transferAmount').val()) || 0;
            var transferAll = $('#transferAll, #transferAllMobile').is(':checked');
            
            // Store original button text
            var $btnTransfer = $('#btnTransfer');
            var $btnTransferMobile = $('#btnTransferMobile');
            var originalText = $btnTransfer.html();
            var originalTextMobile = $btnTransferMobile.html();

            if (this.walletBalance === null || this.providerBalance === null) {
                this.disableControls();
                return;
            }

            if (transferAll) {
                amount = this.walletBalance;
            } else {
                // Validate amount if not transfer all
                if (!this.validateAmount(amount)) {
                    return;
                }
            }

            // Disable buttons and show loading state
            $('#btnTransfer, #btnTransferMobile').prop('disabled', true).html('<i class="fas fa-spinner fa-spin me-2"></i>Processing...');

            // Call transfer API
            callApi3('/api/wallet/v2/setTransfer', 'POST', {
                    transferFrom: 'MAIN',
                    transferTo: this.currentProvider,
                    amount: amount,
                    isWithdrawAll: transferAll ? 1 : 0,
                    originFrom: this.walletBalance,
                    originTo: this.providerBalance,
                    bonusId: 0,
                    bonusPercentage: 0,
                    bonusReward: 0
            }).then(function (response) {
                    if (response && response.success) {
                        // [IDTF-2100] Persist both wallets from the authoritative
                        // response BEFORE navigating, so the game page and every
                        // other tab see the post-transfer balances. Doing this
                        // after launch would lose them on navigation.
                        if (response.data && response.data.listBalance) {
                            balanceCache.setFromListBalance(response.data.listBalance);
                        }

                        // Prefer the provider list returned by the backend, then ensure the
                        // current provider is present for backwards-compatible responses.
                        var responseListPv = response.data && Array.isArray(response.data.listPv)
                            ? response.data.listPv
                            : [];
                        self.updateTransferredProviders(responseListPv.concat([self.currentProvider]));

                        self.firstTransfer = 1;
                        self.launchGame(true);
                    } else {
                        alert(response.data.message || 'Transfer failed');
                        $btnTransfer.prop('disabled', false).html(originalText);
                        $btnTransferMobile.prop('disabled', false).html(originalTextMobile);
                    }
            }).catch(function () {
                    alert('Transfer error occurred');
                    $btnTransfer.prop('disabled', false).html(originalText);
                    $btnTransferMobile.prop('disabled', false).html(originalTextMobile);
            });
        },

        launchGame: function (transferCompleted) {
            if (!window.pendingGameLaunch) {
                this.hideModal();
                return;
            }

            var target = window.pendingGameLaunch.target;
            var $btn = window.pendingGameLaunch.$btn;

            if (transferCompleted) {
                // Update balances after transfer
                this.loadBalances(this.currentProvider);
            }

            this.hideModal();

            // Use original game launch logic
            
            
            openGameUrl(target);
            
            if (!(/Mobile|Android/i.test(navigator.userAgent || ''))) {
                window.location.reload();
            }
        },

        formatCurrency: function (amount) {
            return parseFloat(amount || 0).toLocaleString('en-US', {
                minimumFractionDigits: 2,
                maximumFractionDigits: 2
            });
        },

        // Check if transfer balance modal should be shown and show it if needed
        // Returns true if modal was shown (caller should return early), false otherwise
        checkAndShowIfNeeded: function (target, providerCode, $btn) {
            providerCode = this.resolveProviderCode(target, $btn, providerCode);
            if (!providerCode) {
                // Do not block game launch or submit an invalid transfer destination.
                return false;
            }

            // Check if this specific provider has been transferred to before
            var listPvArray = this.getTransferredProviders();

            // If provider already transferred to, skip modal
            if (listPvArray.indexOf(providerCode) !== -1) {
                return false;
            }

            // Provider not yet transferred to --> show modal
            window.pendingGameLaunch = {
                target: target,
                providerCode: providerCode,
                $btn: $btn
            };

            this.loadBalances(providerCode);
            this.showModal();
            return true;
        }
    };

    // Initialize transfer modal handlers
    $(document).ready(function () {
        // Transfer All checkbox (Desktop and Mobile)
        $(document).on('change', '#transferAll, #transferAllMobile', function () {
            if ($(this).is(':checked')) {
                $('#transferAmount').val(transferBalanceModal.walletBalance).prop('readonly', true);
                transferBalanceModal.clearValidation();
            } else {
                $('#transferAmount').prop('readonly', false);
            }
        });

        // Amount input validation (Desktop and Mobile)
        $(document).on('input blur', '#transferAmount', function () {
            var amount = parseFloat($(this).val()) || 0;
            if (amount > 0) {
                transferBalanceModal.validateAmount(amount);
            } else {
                transferBalanceModal.clearValidation();
            }
        });

        // Preview button - launch game without transfer (Desktop and Mobile)
        $(document).on('click', '#btnPreview, #btnPreviewMobile', function () {
            transferBalanceModal.launchGame(false);
        });

        // Transfer button (Desktop and Mobile)
        $(document).on('click', '#btnTransfer, #btnTransferMobile', function () {
            transferBalanceModal.handleTransfer();
        });

        // Close modal handlers
        $(document).on('click', '.close-transfer-modal, [data-dismiss="modal"]', function () {
            transferBalanceModal.hideModal();
        });

        // Transfer Balance Info Tooltip handlers
        $(document).on('click', '#transferBalanceInfoBtn, #transferBalanceInfoBtnMobile', function (e) {
            e.stopPropagation();
            $('#transferBalanceTooltip').fadeIn(200);
        });

        $(document).on('click', '.transfer-balance-tooltip-close, .transfer-balance-tooltip', function (e) {
            if ($(e.target).hasClass('transfer-balance-tooltip') || $(e.target).closest('.transfer-balance-tooltip-close').length) {
                $('#transferBalanceTooltip').fadeOut(200);
            }
        });

        // Close tooltip when clicking outside
        $(document).on('click', '.transfer-balance-tooltip-content', function (e) {
            e.stopPropagation();
        });
    });
</script>
</body>
</html>
