System.register(["@angular/core","@angular/material/core","@angular/cdk/coercion","@angular/common","rxjs","rxjs/operators","@angular/common/http","@angular/platform-browser"],(function(t){"use strict";var e,n,o,i,s,r,a,c,l,h,u,g,f,m,d,_,p,v,I,S,C,E,F,w,R;return{setters:[function(t){e=t.SecurityContext,n=t,t.Injectable,o=t.Optional,t.Inject,i=t.SkipSelf,s=t.ErrorHandler,r=t.InjectionToken,a=t.inject,t.Component,t.ViewEncapsulation,t.ChangeDetectionStrategy,t.Attribute,t.Input,t.NgModule},function(t){c=t.mixinColor,l=t.MatCommonModule},function(t){h=t.coerceBooleanProperty},function(t){u=t.DOCUMENT},function(t){g=t.of,f=t.throwError,m=t.forkJoin,d=t.Subscription},function(t){_=t.tap,p=t.map,v=t.catchError,I=t.finalize,S=t.share,C=t.take},function(t){E=t,F=t.HttpClient},function(t){w=t,R=t.DomSanitizer}],execute:function(){t({ICON_REGISTRY_PROVIDER_FACTORY:L,MAT_ICON_LOCATION_FACTORY:D,getMatIconFailedToSanitizeLiteralError:b,getMatIconFailedToSanitizeUrlError:x,getMatIconNameNotFoundError:y,getMatIconNoHttpProviderError:A});const N=["*"];function y(t){return Error(`Unable to find icon with the name "${t}"`)}function A(){return Error("Could not find HttpClient provider for use with Angular Material icons. Please include the HttpClientModule from @angular/common/http in your app imports.")}function x(t){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${t}".`)}function b(t){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${t}".`)}class T{constructor(t,e,n){this.url=t,this.svgText=e,this.options=n}}class M{constructor(t,e,n,o){this._httpClient=t,this._sanitizer=e,this._errorHandler=o,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=n}addSvgIcon(t,e,n){return this.addSvgIconInNamespace("",t,e,n)}addSvgIconLiteral(t,e,n){return this.addSvgIconLiteralInNamespace("",t,e,n)}addSvgIconInNamespace(t,e,n,o){return this._addSvgIconConfig(t,e,new T(n,null,o))}addSvgIconResolver(t){return this._resolvers.push(t),this}addSvgIconLiteralInNamespace(t,n,o,i){const s=this._sanitizer.sanitize(e.HTML,o);if(!s)throw b(o);const r=s;return this._addSvgIconConfig(t,n,new T("",r,i))}addSvgIconSet(t,e){return this.addSvgIconSetInNamespace("",t,e)}addSvgIconSetLiteral(t,e){return this.addSvgIconSetLiteralInNamespace("",t,e)}addSvgIconSetInNamespace(t,e,n){return this._addSvgIconSetConfig(t,new T(e,null,n))}addSvgIconSetLiteralInNamespace(t,n,o){const i=this._sanitizer.sanitize(e.HTML,n);if(!i)throw b(n);const s=i;return this._addSvgIconSetConfig(t,new T("",s,o))}registerFontClassAlias(t,e=t){return this._fontCssClassesByAlias.set(t,e),this}classNameForFontAlias(t){return this._fontCssClassesByAlias.get(t)||t}setDefaultFontSetClass(...t){return this._defaultFontSetClass=t,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(t){const n=this._sanitizer.sanitize(e.RESOURCE_URL,t);if(!n)throw x(t);const o=this._cachedIconsByUrl.get(n);return o?g(O(o)):this._loadSvgIconFromConfig(new T(t,null)).pipe(_((t=>this._cachedIconsByUrl.set(n,t))),p((t=>O(t))))}getNamedSvgIcon(t,e=""){const n=U(e,t);let o=this._svgIconConfigs.get(n);if(o)return this._getSvgFromConfig(o);if(o=this._getIconConfigFromResolvers(e,t),o)return this._svgIconConfigs.set(n,o),this._getSvgFromConfig(o);const i=this._iconSetConfigs.get(e);return i?this._getSvgFromIconSetConfigs(t,i):f(y(n))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(t){return t.svgText?g(O(this._svgElementFromConfig(t))):this._loadSvgIconFromConfig(t).pipe(p((t=>O(t))))}_getSvgFromIconSetConfigs(t,n){const o=this._extractIconWithNameFromAnySet(t,n);if(o)return g(o);const i=n.filter((t=>!t.svgText)).map((t=>this._loadSvgIconSetFromConfig(t).pipe(v((n=>{const o=`Loading icon set URL: ${this._sanitizer.sanitize(e.RESOURCE_URL,t.url)} failed: ${n.message}`;return this._errorHandler.handleError(new Error(o)),g(null)})))));return m(i).pipe(p((()=>{const e=this._extractIconWithNameFromAnySet(t,n);if(!e)throw y(t);return e})))}_extractIconWithNameFromAnySet(t,e){for(let n=e.length-1;n>=0;n--){const o=e[n];if(o.svgText&&o.svgText.toString().indexOf(t)>-1){const e=this._svgElementFromConfig(o),n=this._extractSvgIconFromSet(e,t,o.options);if(n)return n}}return null}_loadSvgIconFromConfig(t){return this._fetchIcon(t).pipe(_((e=>t.svgText=e)),p((()=>this._svgElementFromConfig(t))))}_loadSvgIconSetFromConfig(t){return t.svgText?g(null):this._fetchIcon(t).pipe(_((e=>t.svgText=e)))}_extractSvgIconFromSet(t,e,n){const o=t.querySelector(`[id="${e}"]`);if(!o)return null;const i=o.cloneNode(!0);if(i.removeAttribute("id"),"svg"===i.nodeName.toLowerCase())return this._setSvgAttributes(i,n);if("symbol"===i.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(i),n);const s=this._svgElementFromString("");return s.appendChild(i),this._setSvgAttributes(s,n)}_svgElementFromString(t){const e=this._document.createElement("DIV");e.innerHTML=t;const n=e.querySelector("svg");if(!n)throw Error(" tag not found");return n}_toSvgElement(t){const e=this._svgElementFromString(""),n=t.attributes;for(let t=0;tt)),I((()=>this._inProgressUrlFetches.delete(s))),S());return this._inProgressUrlFetches.set(s,a),a}_addSvgIconConfig(t,e,n){return this._svgIconConfigs.set(U(t,e),n),this}_addSvgIconSetConfig(t,e){const n=this._iconSetConfigs.get(t);return n?n.push(e):this._iconSetConfigs.set(t,[e]),this}_svgElementFromConfig(t){if(!t.svgElement){const e=this._svgElementFromString(t.svgText);this._setSvgAttributes(e,t.options),t.svgElement=e}return t.svgElement}_getIconConfigFromResolvers(t,e){for(let o=0;oe?e.pathname+e.search:""}}const k=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],H=k.map((t=>`[${t}]`)).join(", "),$=/^url\(['"]?#(.*?)['"]?\)$/;class W extends j{get inline(){return this._inline}set inline(t){this._inline=h(t)}get svgIcon(){return this._svgIcon}set svgIcon(t){t!==this._svgIcon&&(t?this._updateSvgIcon(t):this._svgIcon&&this._clearSvgElement(),this._svgIcon=t)}get fontSet(){return this._fontSet}set fontSet(t){const e=this._cleanupFontValue(t);e!==this._fontSet&&(this._fontSet=e,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(t){const e=this._cleanupFontValue(t);e!==this._fontIcon&&(this._fontIcon=e,this._updateFontIconClasses())}constructor(t,e,n,o,i,s){super(t),this._iconRegistry=e,this._location=o,this._errorHandler=i,this._inline=!1,this._previousFontSetClass=[],this._currentIconFetch=d.EMPTY,s&&(s.color&&(this.color=this.defaultColor=s.color),s.fontSet&&(this.fontSet=s.fontSet)),n||t.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(t){if(!t)return["",""];const e=t.split(":");switch(e.length){case 1:return["",e[0]];case 2:return e;default:throw Error(`Invalid icon name: "${t}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const t=this._elementsWithExternalReferences;if(t&&t.size){const t=this._location.getPathname();t!==this._previousPath&&(this._previousPath=t,this._prependPathToReferences(t))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(t){this._clearSvgElement();const e=this._location.getPathname();this._previousPath=e,this._cacheChildrenWithExternalReferences(t),this._prependPathToReferences(e),this._elementRef.nativeElement.appendChild(t)}_clearSvgElement(){const t=this._elementRef.nativeElement;let e=t.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();e--;){const n=t.childNodes[e];1===n.nodeType&&"svg"!==n.nodeName.toLowerCase()||n.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const t=this._elementRef.nativeElement,e=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter((t=>t.length>0));this._previousFontSetClass.forEach((e=>t.classList.remove(e))),e.forEach((e=>t.classList.add(e))),this._previousFontSetClass=e,this.fontIcon===this._previousFontIconClass||e.includes("mat-ligature-font")||(this._previousFontIconClass&&t.classList.remove(this._previousFontIconClass),this.fontIcon&&t.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(t){return"string"==typeof t?t.trim().split(" ")[0]:t}_prependPathToReferences(t){const e=this._elementsWithExternalReferences;e&&e.forEach(((e,n)=>{e.forEach((e=>{n.setAttribute(e.name,`url('${t}#${e.value}')`)}))}))}_cacheChildrenWithExternalReferences(t){const e=t.querySelectorAll(H),n=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let t=0;t{const i=e[t],s=i.getAttribute(o),r=s?s.match($):null;if(r){let t=n.get(i);t||(t=[],n.set(i,t)),t.push({name:o,value:r[1]})}}))}_updateSvgIcon(t){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),t){const[e,n]=this._splitIconName(t);e&&(this._svgNamespace=e),n&&(this._svgName=n),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(n,e).pipe(C(1)).subscribe((t=>this._setSvgElement(t)),(t=>{const o=`Error retrieving icon ${e}:${n}! ${t.message}`;this._errorHandler.handleError(new Error(o))}))}}static{this.\u0275fac=function(t){return new(t||W)(n.\u0275\u0275directiveInject(n.ElementRef),n.\u0275\u0275directiveInject(M),n.\u0275\u0275injectAttribute("aria-hidden"),n.\u0275\u0275directiveInject(z),n.\u0275\u0275directiveInject(n.ErrorHandler),n.\u0275\u0275directiveInject(P,8))}}static{this.\u0275cmp=n.\u0275\u0275defineComponent({type:W,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:8,hostBindings:function(t,e){2&t&&(n.\u0275\u0275attribute("data-mat-icon-type",e._usingFontIcon()?"font":"svg")("data-mat-icon-name",e._svgName||e.fontIcon)("data-mat-icon-namespace",e._svgNamespace||e.fontSet)("fontIcon",e._usingFontIcon()?e.fontIcon:null),n.\u0275\u0275classProp("mat-icon-inline",e.inline)("mat-icon-no-color","primary"!==e.color&&"accent"!==e.color&&"warn"!==e.color))},inputs:{color:"color",inline:"inline",svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],features:[n.\u0275\u0275InheritDefinitionFeature],ngContentSelectors:N,decls:1,vars:0,template:function(t,e){1&t&&(n.\u0275\u0275projectionDef(),n.\u0275\u0275projection(0))},styles:["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0})}}t("MatIcon",W);class B{static{this.\u0275fac=function(t){return new(t||B)}}static{this.\u0275mod=n.\u0275\u0275defineNgModule({type:B})}static{this.\u0275inj=n.\u0275\u0275defineInjector({imports:[l,l]})}}t("MatIconModule",B)}}})); Hacksaw vs Pragmatic Bonus Buys: Cost and Max Win – Gavin Mostert Attorneys

Hacksaw vs Pragmatic Bonus Buys: Cost and Max Win

Bonus buy pricing is the fastest way to see what a slot provider thinks its own volatility is worth. At Gransino Casino UK, two studios dominate the buy-feature menu: Hacksaw Gaming and Pragmatic Play. The short version: Hacksaw charges 80x your bet with a 12,500x ceiling, Pragmatic charges 100x with a 21,100x ceiling. Cheaper entry, lower ceiling on one side; steeper ticket, bigger top prize on the other. Everything below is how that trade-off plays out when you are actually spending money.

Entry cost and max win at a glance

Start with the numbers you cannot argue with. Hacksaw Gaming’s flagship buy slots, Wanted Dead or a Wild being the obvious one, price the bonus at 80x your stake. Pragmatic Play’s Sweet Bonanza and its siblings sit at 100x. On a €1 spin that is €80 versus €100. On a €5 spin it is €400 versus €500. Twenty percent more cash leaves your balance on the Pragmatic side before a single free spin lands.

The ceiling moves in the opposite direction. Hacksaw’s stated max win on those titles is 12,500x. Pragmatic’s is 21,100x. At €1 per spin, that is a difference of €8,600 between the two absolute tops. You are paying 25% more for the Pragmatic ticket and buying roughly 69% more headroom. Whether that is good value depends entirely on how often you intend to press the button.

Treat the max win as a design parameter, not a promise. Neither studio expects you to hit it. What the figure tells you is how the payout curve is shaped: a higher cap usually means more of the return is parked in rare, huge outcomes and less in the mid-range hits that keep a session alive. Hacksaw’s lower cap tends to spread value into more frequent, smaller bonus results. That is the real cost comparison, and it matters more than the headline multipliers.

What the buy button actually buys you

Both providers sell the same thing: a guaranteed entry into the free spins round at a fixed price instead of waiting for three scatters. You skip the base game grind and pay a premium for the privilege. The premium is baked into the price, which is why 80x and 100x are not random. They reflect each studio’s math on how much the feature is worth relative to stake, and how much margin the house keeps on the transaction.

The practical difference is in what happens after the buy. Hacksaw rounds tend to resolve faster and more predictably, with a tighter spread of outcomes around the average. Pragmatic rounds are streakier: more dead spins, more near-misses, and a fatter tail of enormous results when the multipliers stack. If you buy once and walk away, Hacksaw feels less punishing. If you buy repeatedly chasing a big one, Pragmatic’s tail is the reason people keep coming back, and also the reason balances evaporate.

How Hacksaw structures the 80x buy

Hacksaw Gaming built its reputation on high-volatility buy slots with a clean price point. Wanted Dead or a Wild is the reference title, and the 80x entry is deliberately set below the market norm to pull players toward the buy button. The studio’s other buy titles follow a similar logic: aggressive pricing, tight math, and a 12,500x cap that keeps the feature feeling achievable rather than mythical.

The trade-off is real. A lower entry cost means you can afford more attempts per session, which suits players who treat bonus buys as repeatable entertainment rather than a lottery ticket. Three Hacksaw buys at €1 cost €240; the same money gets you two Pragmatic buys with change. More attempts at a lower ceiling is a legitimate strategy, especially if you value seeing the feature resolve over dreaming about the top prize.

One insider note: Hacksaw’s buy features often carry a slightly higher hit rate on the lower end, so the floor of your results is less brutal. You will still have losing rounds. You will simply have fewer of the total wipeouts that make a 100x buy feel like burning money. For players on a fixed budget, that consistency is worth more than a theoretical 21,100x that almost nobody reaches.

Pragmatic’s 100x price and the 21,100x ceiling

Pragmatic Play prices its buys at 100x and backs that up with the biggest advertised cap in the mainstream market. https://gransino-casino-play.uk/ offers additional context worth reviewing. Sweet Bonanza’s 21,100x is the number that gets quoted in every forum thread, and it is genuinely reachable, if rare. The extra 20x on the ticket is the cost of that ceiling. You are paying for the tail, not the average.

This is where the Pragmatic buy earns its reputation and its criticism. The multiplier mechanics in Sweet Bonanza and its cousins can produce cascading results that dwarf anything Hacksaw offers, but the distribution is heavily skewed. Most buys return less than the price. A minority return several times the price. A tiny fraction hit the kind of number that justifies the 100x entry. The math is honest; the experience is not gentle.

If you are buying Pragmatic features, size your stake accordingly. A €5 buy at 100x is €500 per press, and a run of five dead rounds costs €2,500 before you see a return. The 21,100x ceiling only matters if you can survive the variance on the way there. Pragmatic’s buy is a high-stakes instrument, and it rewards patience and bankroll discipline more than enthusiasm.

Where the two studios sit inside Gransino Casino

Gransino Casino carries both studios alongside a wider provider list that includes Bgaming, Playtech, Netgame, Gamzix, Ezugi, LuckyStreak and VoltEnt. The bonus buy category sits within a lobby that also covers slots, blackjack, roulette, jackpot games and live casino, so you are not locked into buy slots if the variance gets too rich. The live dealer side, powered by the Ezugi and LuckyStreak tables, is a useful brake when you want to slow the pace.

New players get a welcome package of 350% up to €16,000 plus 350 free spins using promo code WELCOME2026. That is a large headline number, and it is split across deposits rather than paid in one lump, so read the terms before you plan a bonus buy spree. The bonus funds help absorb early variance on either studio’s buy features, but wagering requirements apply, and buy-feature winnings usually count differently from base game play. Check the contribution rules before you assume a big buy hit clears your rollover.

Gransino also provides daily cashback of 15% up to €400, which is more relevant to buy-slot players than most promotions. Cashback softens the sting of a bad run and effectively lowers the cost of each buy over time. A VIP Club with daily rewards adds another layer for regular players. Combined, these features make the 80x versus 100x decision less about raw price and more about how much of your losses come back to you.

The site targets UK players and holds a licence relevant to that market, which matters for withdrawal confidence. Gransino provides payment and withdrawal information up front, supports registration, login and mobile play, and runs the same buy-slot lobby on mobile as on desktop. If you are buying features on a phone, the interface handles it cleanly, though the discipline of setting a session limit is on you either way.

My read: use the Gransino welcome bonus and cashback to fund experimentation, not to chase the 21,100x on day one. Buy a few Hacksaw rounds at 80x to see how the lower ceiling feels, then test a single Pragmatic buy at 100x and compare the experience. The provider list at Gransino makes that side-by-side easy without moving your money between sites.

Practical wrap-up: if your budget is tight or you want more attempts per session, Hacksaw’s 80x buy with a 12,500x cap is the smarter entry point. If you have the bankroll to absorb 100x tickets and you are chasing the tail, Pragmatic’s 21,100x ceiling justifies the extra cost. At Gransino Casino, fund the experiment with the WELCOME2026 package, lean on the 15% daily cashback to blunt bad runs, set a hard limit on how many buys you will press, and treat the max win as a design fact rather than a target. The math favors discipline over hope on both sides of this comparison.

Message Us on WhatsApp