@everymatrix/casino-wagering-bonuses-controller 0.0.386

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,30 @@
1
+ # @everymatrix/casino-wagering-bonuses-controller
2
+ ---------
3
+
4
+ ## First step
5
+ ---------
6
+ ```
7
+ lerna bootstrap
8
+ ```
9
+
10
+ ## Run Widget
11
+ ---------
12
+ - starts server at port 5050
13
+ - has livereload
14
+
15
+ ```
16
+ yarn run dev
17
+ ```
18
+
19
+ ## Build Widget
20
+ ---------
21
+ ```
22
+ yarn run build
23
+ ```
24
+
25
+ ## Publishing widget
26
+ ---------
27
+ - Note add your user to the npm
28
+ ```
29
+ lerna publish
30
+ ```
@@ -0,0 +1,175 @@
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).app=t()}(this,(function(){"use strict";function e(){}function t(e,t){
2
+ // @ts-ignore
3
+ for(const n in t)e[n]=t[n];return e}function n(e){return e()}function o(){return Object.create(null)}function r(e){e.forEach(n)}function i(e){return"function"==typeof e}function s(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}let a,l;function c(e,t){return a||(a=document.createElement("a")),a.href=t,e===a.href}function u(e,t){e.appendChild(t)}function d(e,t,n){e.insertBefore(t,n||null)}function p(e){e.parentNode.removeChild(e)}function h(e,t){for(let n=0;n<e.length;n+=1)e[n]&&e[n].d(t)}function f(e){return document.createElement(e)}function g(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}function m(e){return document.createTextNode(e)}function C(){return m(" ")}function v(){return m("")}function y(e,t,n,o){return e.addEventListener(t,n,o),()=>e.removeEventListener(t,n,o)}function w(e,t,n){null==n?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}function b(e,t){
4
+ // @ts-ignore
5
+ const n=Object.getOwnPropertyDescriptors(e.__proto__);for(const o in t)null==t[o]?e.removeAttribute(o):"style"===o?e.style.cssText=t[o]:"__value"===o?e.value=e[o]=t[o]:n[o]&&n[o].set?e[o]=t[o]:w(e,o,t[o])}function x(e,t){for(const n in t)w(e,n,t[n])}function E(e,t,n){t in e?e[t]="boolean"==typeof e[t]&&""===n||n:w(e,t,n)}function $(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function T(e){const t={};for(const n of e)t[n.name]=n.value;return t}function _(e){l=e}function S(e){(function(){if(!l)throw new Error("Function called outside component initialization");return l})().$$.on_mount.push(e)}const A=[],B=[],V=[],L=[],I=Promise.resolve();let M=!1;function R(e){V.push(e)}
6
+ // flush() calls callbacks in this order:
7
+ // 1. All beforeUpdate callbacks, in order: parents before children
8
+ // 2. All bind:this callbacks, in reverse order: children before parents.
9
+ // 3. All afterUpdate callbacks, in order: parents before children. EXCEPT
10
+ // for afterUpdates called during the initial onMount, which are called in
11
+ // reverse order: children before parents.
12
+ // Since callbacks might update component values, which could trigger another
13
+ // call to flush(), the following steps guard against this:
14
+ // 1. During beforeUpdate, any updated components will be added to the
15
+ // dirty_components array and will cause a reentrant call to flush(). Because
16
+ // the flush index is kept outside the function, the reentrant call will pick
17
+ // up where the earlier call left off and go through all dirty components. The
18
+ // current_component value is saved and restored so that the reentrant call will
19
+ // not interfere with the "parent" flush() call.
20
+ // 2. bind:this callbacks cannot trigger new flush() calls.
21
+ // 3. During afterUpdate, any updated components will NOT have their afterUpdate
22
+ // callback called a second time; the seen_callbacks set, outside the flush()
23
+ // function, guarantees this behavior.
24
+ const k=new Set;let F=0;// Do *not* move this inside the flush() function
25
+ function O(){const e=l;do{
26
+ // first, call beforeUpdate functions
27
+ // and update components
28
+ for(;F<A.length;){const e=A[F];F++,_(e),P(e.$$)}for(_(null),A.length=0,F=0;B.length;)B.pop()();
29
+ // then, once components are updated, call
30
+ // afterUpdate functions. This may cause
31
+ // subsequent updates...
32
+ for(let e=0;e<V.length;e+=1){const t=V[e];k.has(t)||(
33
+ // ...so guard against infinite loops
34
+ k.add(t),t())}V.length=0}while(A.length);for(;L.length;)L.pop()();M=!1,k.clear(),_(e)}function P(e){if(null!==e.fragment){e.update(),r(e.before_update);const t=e.dirty;e.dirty=[-1],e.fragment&&e.fragment.p(e.ctx,t),e.after_update.forEach(R)}}const Z=new Set;function D(e,t){const n={},o={},r={$$scope:1};let i=e.length;for(;i--;){const s=e[i],a=t[i];if(a){for(const e in s)e in a||(o[e]=1);for(const e in a)r[e]||(n[e]=a[e],r[e]=1);e[i]=a}else for(const e in s)r[e]=1}for(const e in o)e in n||(n[e]=void 0);return n}function j(e,t){-1===e.$$.dirty[0]&&(A.push(e),M||(M=!0,I.then(O)),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<<t%31}function N(t,s,a,c,u,d,h,f=[-1]){const g=l;_(t);const m=t.$$={fragment:null,ctx:null,
35
+ // state
36
+ props:d,update:e,not_equal:u,bound:o(),
37
+ // lifecycle
38
+ on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(s.context||(g?g.$$.context:[])),
39
+ // everything else
40
+ callbacks:o(),dirty:f,skip_bound:!1,root:s.target||g.$$.root};h&&h(m.root);let C=!1;if(m.ctx=a?a(t,s.props||{},((e,n,...o)=>{const r=o.length?o[0]:n;return m.ctx&&u(m.ctx[e],m.ctx[e]=r)&&(!m.skip_bound&&m.bound[e]&&m.bound[e](r),C&&j(t,e)),n})):[],m.update(),C=!0,r(m.before_update),
41
+ // `false` as a special case of no DOM component
42
+ m.fragment=!!c&&c(m.ctx),s.target){if(s.hydrate){const e=function(e){return Array.from(e.childNodes)}(s.target);
43
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
44
+ m.fragment&&m.fragment.l(e),e.forEach(p)}else
45
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
46
+ m.fragment&&m.fragment.c();s.intro&&((v=t.$$.fragment)&&v.i&&(Z.delete(v),v.i(y))),function(e,t,o,s){const{fragment:a,on_mount:l,on_destroy:c,after_update:u}=e.$$;a&&a.m(t,o),s||
47
+ // onMount happens before the initial afterUpdate
48
+ R((()=>{const t=l.map(n).filter(i);c?c.push(...t):
49
+ // Edge case - component was destroyed immediately,
50
+ // most likely as a result of a binding initialising
51
+ r(t),e.$$.on_mount=[]})),u.forEach(R)}(t,s.target,s.anchor,s.customElement),O()}var v,y;_(g)}let H;
52
+ /* ../casino-wagering-bonus-progress/src/CasinoWageringBonusProgress.svelte generated by Svelte v3.48.0 */
53
+ function W(n){let o,r,i,s,a,l,c,h=[{class:"ring",r:/*radius*/n[2],cx:/*center*/n[7],cy:/*center*/n[7],"stroke-width":`${/*ringStrokeWidth*/n[4]}px`}],f={};for(let e=0;e<h.length;e+=1)f=t(f,h[e]);let C=[{class:"ring ring-progress "+(/*status*/n[1]===/*BonusStatus*/n[5].InProgress?"active":""),r:/*radius*/n[2],cx:/*center*/n[7],cy:/*center*/n[7],"stroke-width":`${/*ringStrokeWidth*/n[4]}px`,"stroke-dasharray":`${/*circumference*/n[6]} ${/*circumference*/n[6]}`,"stroke-dashoffset":/*circumference*/n[6]-Number(/*percent*/n[0])/100*/*circumference*/n[6]}],v={};for(let e=0;e<C.length;e+=1)v=t(v,C[e]);let y=[{class:"center "+(/*status*/n[1]===/*BonusStatus*/n[5].InProgress?"active":""),r:/*radius*/n[2]-/*ringStrokeWidth*/n[4]/2-3,cx:/*center*/n[7],cy:/*center*/n[7]}],w={};for(let e=0;e<y.length;e+=1)w=t(w,y[e]);let b=[{x:/*center*/n[7],y:/*center*/n[7]}],E={};for(let e=0;e<b.length;e+=1)E=t(E,b[e]);let T=[{width:/*size*/n[3],height:/*size*/n[3]}],_={};for(let e=0;e<T.length;e+=1)_=t(_,T[e]);return{c(){o=g("svg"),r=g("circle"),i=g("circle"),s=g("circle"),a=g("text"),l=m(/*percent*/n[0]),c=m("%"),this.c=e,x(r,f),x(i,v),x(s,w),x(a,E),x(o,_)},m(e,t){d(e,o,t),u(o,r),u(o,i),u(o,s),u(o,a),u(a,l),u(a,c)},p(e,[t]){x(r,f=D(h,[/*radius, center, ringStrokeWidth*/148&t&&{class:"ring",r:/*radius*/e[2],cx:/*center*/e[7],cy:/*center*/e[7],"stroke-width":`${/*ringStrokeWidth*/e[4]}px`}])),x(i,v=D(C,[/*status, BonusStatus, radius, center, ringStrokeWidth, circumference, percent*/247&t&&{class:"ring ring-progress "+(/*status*/e[1]===/*BonusStatus*/e[5].InProgress?"active":""),r:/*radius*/e[2],cx:/*center*/e[7],cy:/*center*/e[7],"stroke-width":`${/*ringStrokeWidth*/e[4]}px`,"stroke-dasharray":`${/*circumference*/e[6]} ${/*circumference*/e[6]}`,"stroke-dashoffset":/*circumference*/e[6]-Number(/*percent*/e[0])/100*/*circumference*/e[6]}])),x(s,w=D(y,[/*status, BonusStatus, radius, ringStrokeWidth, center*/182&t&&{class:"center "+(/*status*/e[1]===/*BonusStatus*/e[5].InProgress?"active":""),r:/*radius*/e[2]-/*ringStrokeWidth*/e[4]/2-3,cx:/*center*/e[7],cy:/*center*/e[7]}])),/*percent*/1&t&&$(l,/*percent*/e[0]),x(a,E=D(b,[/*center*/128&t&&{x:/*center*/e[7],y:/*center*/e[7]}])),x(o,_=D(T,[/*size*/8&t&&{width:/*size*/e[3],height:/*size*/e[3]}]))},i:e,o:e,d(e){e&&p(o)}}}function z(e,t,n){let o,r,i,s,a,{percent:l=""}=t,{status:c=""}=t;var u;return function(e){e.BeforeClaimed="BeforeClaimed",e.InProgress="active",e.ForfeitedOrCompleted="ForfeitedOrCompleted"}(u||(u={})),e.$$set=e=>{"percent"in e&&n(0,l=e.percent),"status"in e&&n(1,c=e.status)},e.$$.update=()=>{/*size*/8&e.$$.dirty&&n(4,r=o/7.5),/*size, ringStrokeWidth*/24&e.$$.dirty&&n(2,i=o/2-r/2),/*size*/8&e.$$.dirty&&n(7,s=o/2),/*radius*/4&e.$$.dirty&&n(6,a=2*i*Math.PI)},n(3,o=200),[l,c,i,o,r,u,a,s]}"function"==typeof HTMLElement&&(H=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){const{on_mount:e}=this.$$;this.$$.on_disconnect=e.map(n).filter(i);
54
+ // @ts-ignore todo: improve typings
55
+ for(const e in this.$$.slotted)
56
+ // @ts-ignore todo: improve typings
57
+ this.appendChild(this.$$.slotted[e])}attributeChangedCallback(e,t,n){this[e]=n}disconnectedCallback(){r(this.$$.on_disconnect)}$destroy(){!function(e,t){const n=e.$$;null!==n.fragment&&(r(n.on_destroy),n.fragment&&n.fragment.d(t),
58
+ // TODO null out other refs, including component.$$ (but need to
59
+ // preserve final state?)
60
+ n.on_destroy=n.fragment=null,n.ctx=[])}(this,1),this.$destroy=e}$on(e,t){
61
+ // TODO should this delegate to addEventListener?
62
+ const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}$set(e){var t;this.$$set&&(t=e,0!==Object.keys(t).length)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}});!customElements.get("casino-wagering-bonus-progress")&&customElements.define("casino-wagering-bonus-progress",class extends H{constructor(e){super(),this.shadowRoot.innerHTML="<style>:host{font-family:system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'}*,*::before,*::after{margin:0;padding:0;list-style:none;text-decoration:none;outline:none;box-sizing:border-box}text{fill:#FFFFFF;text-anchor:middle;dominant-baseline:middle;font-style:normal;font-weight:700;font-size:36px}circle.ring{stroke:#F2F4F6;fill:transparent}circle.ring-progress{transition:0.35s stroke-dashoffset;stroke:#C4C4C4;transform:rotate(-90deg);transform-origin:50% 50%}circle.ring-progress.active{stroke:#00AEEF}circle.center{fill:#C4C4C4}circle.center.active{fill:#00AEEF}</style>",N(this,{target:this.shadowRoot,props:T(this.attributes),customElement:!0},z,W,s,{percent:0,status:1},null),e&&(e.target&&d(e.target,this,e.anchor),e.props&&(this.$set(e.props),O()))}static get observedAttributes(){return["percent","status"]}get percent(){return this.$$.ctx[0]}set percent(e){this.$$set({percent:e}),O()}get status(){return this.$$.ctx[1]}set status(e){this.$$set({status:e}),O()}});var U="data:image/svg+xml,%3csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cg clip-path='url(%23clip0_3490_338)'%3e %3cpath d='M12.5 0C5.60762 0 0 5.60762 0 12.5C0 19.3924 5.60762 25 12.5 25C19.3924 25 25 19.3924 25 12.5C25 5.60762 19.3924 0 12.5 0ZM12.5 23.4375C6.46896 23.4375 1.56251 18.531 1.56251 12.5C1.56251 6.46896 6.46896 1.56251 12.5 1.56251C18.531 1.56251 23.4375 6.46896 23.4375 12.5C23.4375 18.531 18.531 23.4375 12.5 23.4375V23.4375Z' fill='%2300AEEF'/%3e %3cpath d='M13.2813 4.6875H11.7188V12.8235L16.6351 17.7398L17.7399 16.6351L13.2813 12.1765V4.6875Z' fill='%2300AEEF'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_3490_338'%3e %3crect width='25' height='25' fill='white'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e",q="data:image/svg+xml,%3csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cg clip-path='url(%23clip0_3490_347)'%3e %3cpath d='M12.5002 7.5C11.5797 7.5 10.8335 8.2462 10.8335 9.16667V23.3333C10.8335 24.2538 11.5797 25 12.5002 25C13.4206 25 14.1668 24.2538 14.1668 23.3333V9.16667C14.1668 8.2462 13.4206 7.5 12.5002 7.5ZM13.3335 23.3333C13.3335 23.7936 12.9604 24.1667 12.5002 24.1667C12.0399 24.1667 11.6668 23.7936 11.6668 23.3333V9.16667C11.6668 8.70641 12.0399 8.33333 12.5002 8.33333C12.9604 8.33333 13.3335 8.70641 13.3335 9.16667V23.3333Z' fill='%2300AEEF'/%3e %3cpath d='M7.08317 12.5C6.1627 12.5 5.4165 13.2462 5.4165 14.1667V23.3333C5.4165 24.2538 6.1627 25 7.08317 25C8.00364 25 8.74984 24.2538 8.74984 23.3333V14.1667C8.74984 13.2462 8.00364 12.5 7.08317 12.5ZM7.9165 23.3333C7.9165 23.7936 7.54343 24.1667 7.08317 24.1667C6.62291 24.1667 6.24984 23.7936 6.24984 23.3333V14.1667C6.24984 13.7064 6.62291 13.3333 7.08317 13.3333C7.54343 13.3333 7.9165 13.7064 7.9165 14.1667V23.3333Z' fill='%2300AEEF'/%3e %3cpath d='M1.66667 18.333C0.746198 18.333 0 19.0792 0 19.9997V23.333C0 24.2535 0.746198 24.9997 1.66667 24.9997C2.58714 24.9997 3.33333 24.2535 3.33333 23.333V19.9997C3.33333 19.0792 2.58714 18.333 1.66667 18.333ZM2.5 23.333C2.5 23.7933 2.12693 24.1663 1.66667 24.1663C1.20641 24.1663 0.833333 23.7933 0.833333 23.333V19.9997C0.833333 19.5394 1.20641 19.1663 1.66667 19.1663C2.12693 19.1663 2.5 19.5394 2.5 19.9997V23.333Z' fill='%2300AEEF'/%3e %3cpath d='M17.9167 2.5C16.9962 2.5 16.25 3.2462 16.25 4.16667V23.3333C16.25 24.2538 16.9962 25 17.9167 25C18.8371 25 19.5833 24.2538 19.5833 23.3333V4.16667C19.5833 3.2462 18.8371 2.5 17.9167 2.5ZM18.75 23.3333C18.75 23.7936 18.3769 24.1667 17.9167 24.1667C17.4564 24.1667 17.0833 23.7936 17.0833 23.3333V4.16667C17.0833 3.70641 17.4564 3.33333 17.9167 3.33333C18.3769 3.33333 18.75 3.70641 18.75 4.16667V23.3333Z' fill='%2300AEEF'/%3e %3cpath d='M23.3332 0C22.4127 0 21.6665 0.746198 21.6665 1.66667V23.3333C21.6665 24.2538 22.4127 25 23.3332 25C24.2536 25 24.9998 24.2538 24.9998 23.3333V1.66667C24.9998 0.746198 24.2536 0 23.3332 0ZM24.1665 23.3333C24.1665 23.7936 23.7934 24.1667 23.3332 24.1667C22.8729 24.1667 22.4998 23.7936 22.4998 23.3333V1.66667C22.4998 1.20641 22.8729 0.833333 23.3332 0.833333C23.7934 0.833333 24.1665 1.20641 24.1665 1.66667V23.3333Z' fill='%2300AEEF'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_3490_347'%3e %3crect width='25' height='25' fill='white'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e";const G=e=>Object.keys(e).map((t=>`${t}=${e[t]}`)).join("&");const K=(e,t)=>({remainder:e%t,quotient:Math.floor(e/t)}),X=e=>{const t=new Date,n=(new Date(e)-t)/6e4,{quotient:o,remainder:r}=K(n,1440),{quotient:i,remainder:s}=K(r,60),a=Math.floor(s);return[{value:o,symbol:"d"},{value:i,symbol:"h"},{value:a,symbol:"m"}].map((e=>{return((t=e.value)<10?`0${t}`:t)+e.symbol;var t})).join(" ")},J=(e,t="")=>({part:e,class:[e,t].join(" ")}),Y=async(e,t={})=>{let n;return n=await fetch(e,t),n=await n.json(),n},Q=async(e,t,n="",o="50",r="0")=>{const i={pagination:`limit=${o},offset=${r}`,language:t},s=new URL(e+"/bonus/wagering");return Object.keys(i).map((e=>{s.searchParams.append(e,i[e])})),await Y(s,{headers:{"x-SessionId":n}})},ee=async e=>await Y(e+"/wagering-start",{method:"POST"}),te=e=>e?.bonuses[0]?.title,ne=(e,t,n,o,r)=>{const i=(e=>"EUR"===e?"€":"")(e.currentLevel.currency);return{target:(()=>{switch(e.status){case o.ForfeitedOrCompleted:return"This bonus is completed or expired";case o.InProgress:return te(n[e.currentLevel.level-1])}})(),remaining:(()=>{switch(e.type){case r.Money:return`Remaining: ${i}${e.currentLevel.gap}`;case r.BetCount:return`Bets Remaining: ${e.currentLevel.gap} bets`}})(),got:(()=>{switch(e.type){case r.Money:return`Wagered: ${i}${t}`;case r.BetCount:return`Bets Placed: ${t} bets`}})()}},oe=(e,t,n,o)=>{const r=Number(function(e,t){var n,o,r;try{n=e.toString().split(".")[1].length}catch(e){n=0}try{o=t.toString().split(".")[1].length}catch(e){o=0}return((e*(r=Math.pow(10,Math.max(n,o)))-t*r)/r).toFixed(n>=o?n:o)}(e.currentLevel.levelIncrement,e.currentLevel.gap));return{percent:String(Math.ceil(r/e.currentLevel.levelIncrement*100)),bonusTypeInfo:ne(e,r,t,n,o),levelsCurrent:{text:e.currentLevel.level,textWithLengh:`${e.currentLevel.level}/${t.length}`}}};var re="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var ie=function(e,t,n){return e(n={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&n.path)}},n.exports),n.exports}((function(e,t){
63
+ /** @license
64
+ * eventsource.js
65
+ * Available under MIT License (MIT)
66
+ * https://github.com/Yaffle/EventSource/
67
+ */
68
+ /*jslint indent: 2, vars: true, plusplus: true */
69
+ /*global setTimeout, clearTimeout */
70
+ !function(n){var o=n.setTimeout,r=n.clearTimeout,i=n.XMLHttpRequest,s=n.XDomainRequest,a=n.ActiveXObject,l=n.EventSource,c=n.document,u=n.Promise,d=n.fetch,p=n.Response,h=n.TextDecoder,f=n.TextEncoder,g=n.AbortController;
71
+ // see #118 (Promise#finally with polyfilled Promise)
72
+ // see #123 (data URLs crash Edge)
73
+ // see #125 (CSP violations)
74
+ // see pull/#138
75
+ // => No way to polyfill Promise#finally
76
+ if("undefined"==typeof window||void 0===c||"readyState"in c||null!=c.body||(// Firefox 2
77
+ c.readyState="loading",window.addEventListener("load",(function(e){c.readyState="complete"}),!1)),null==i&&null!=a&&(// https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest_in_IE6
78
+ i=function(){return new a("Microsoft.XMLHTTP")}),null==Object.create&&(Object.create=function(e){function t(){}return t.prototype=e,new t}),Date.now||(Date.now=function(){return(new Date).getTime()}),null==g){var m=d;d=function(e,t){var n=t.signal;return m(e,{headers:t.headers,credentials:t.credentials,cache:t.cache}).then((function(e){var t=e.body.getReader();return n._reader=t,n._aborted&&n._reader.cancel(),{status:e.status,statusText:e.statusText,headers:e.headers,body:{getReader:function(){return t}}}}))},g=function(){this.signal={_reader:null,_aborted:!1},this.abort=function(){null!=this.signal._reader&&this.signal._reader.cancel(),this.signal._aborted=!0}}}function C(){this.bitsNeeded=0,this.codePoint=0}C.prototype.decode=function(e){function t(e,t,n){if(1===n)return e>=128>>t&&e<<t<=2047;if(2===n)return e>=2048>>t&&e<<t<=55295||e>=57344>>t&&e<<t<=65535;if(3===n)return e>=65536>>t&&e<<t<=1114111;throw new Error}function n(e,t){if(6===e)return t>>6>15?3:t>31?2:1;if(12===e)return t>15?3:2;if(18===e)return 3;throw new Error}for(var o=65533,r="",i=this.bitsNeeded,s=this.codePoint,a=0;a<e.length;a+=1){var l=e[a];0!==i&&(l<128||l>191||!t(s<<6|63&l,i-6,n(i,s)))&&(i=0,s=o,r+=String.fromCharCode(s)),0===i?(l>=0&&l<=127?(i=0,s=l):l>=192&&l<=223?(i=6,s=31&l):l>=224&&l<=239?(i=12,s=15&l):l>=240&&l<=247?(i=18,s=7&l):(i=0,s=o),0===i||t(s,i,n(i,s))||(i=0,s=o)):(i-=6,s=s<<6|63&l),0===i&&(s<=65535?r+=String.fromCharCode(s):(r+=String.fromCharCode(55296+(s-65535-1>>10)),r+=String.fromCharCode(56320+(s-65535-1&1023))))}return this.bitsNeeded=i,this.codePoint=s,r};
79
+ // IE, Edge
80
+ null!=h&&null!=f&&function(){try{return"test"===(new h).decode((new f).encode("test"),{stream:!0})}catch(e){console.debug("TextDecoder does not support streaming option. Using polyfill instead: "+e)}return!1}()||(h=C);var v=function(){};function y(e){this.withCredentials=!1,this.readyState=0,this.status=0,this.statusText="",this.responseText="",this.onprogress=v,this.onload=v,this.onerror=v,this.onreadystatechange=v,this._contentType="",this._xhr=e,this._sendTimeout=0,this._abort=v}function w(e){return e.replace(/[A-Z]/g,(function(e){return String.fromCharCode(e.charCodeAt(0)+32)}))}function b(e){for(
81
+ // Get headers: implemented according to mozilla's example code: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders#Example
82
+ var t=Object.create(null),n=e.split("\r\n"),o=0;o<n.length;o+=1){var r=n[o].split(": "),i=r.shift(),s=r.join(": ");t[w(i)]=s}this._map=t}function x(){}function E(e){this._headers=e}function $(){}function T(){this._listeners=Object.create(null)}function _(e){o((function(){throw e}),0)}function S(e){this.type=e,this.target=void 0}function A(e,t){S.call(this,e),this.data=t.data,this.lastEventId=t.lastEventId}function B(e,t){S.call(this,e),this.status=t.status,this.statusText=t.statusText,this.headers=t.headers}function V(e,t){S.call(this,e),this.error=t.error}y.prototype.open=function(e,t){this._abort(!0);var n=this,s=this._xhr,a=1,l=0;this._abort=function(e){0!==n._sendTimeout&&(r(n._sendTimeout),n._sendTimeout=0),1!==a&&2!==a&&3!==a||(a=4,s.onload=v,s.onerror=v,s.onabort=v,s.onprogress=v,s.onreadystatechange=v,
83
+ // IE 8 - 9: XDomainRequest#abort() does not fire any event
84
+ // Opera < 10: XMLHttpRequest#abort() does not fire any event
85
+ s.abort(),0!==l&&(r(l),l=0),e||(n.readyState=4,n.onabort(null),n.onreadystatechange())),a=0};var c=function(){if(1===a){
86
+ //state = 2;
87
+ var e=0,t="",o=void 0;if("contentType"in s)e=200,t="OK",o=s.contentType;else try{e=s.status,t=s.statusText,o=s.getResponseHeader("Content-Type")}catch(n){
88
+ // IE < 10 throws exception for `xhr.status` when xhr.readyState === 2 || xhr.readyState === 3
89
+ // Opera < 11 throws exception for `xhr.status` when xhr.readyState === 2
90
+ // https://bugs.webkit.org/show_bug.cgi?id=29121
91
+ e=0,t="",o=void 0}0!==e&&(a=2,n.readyState=2,n.status=e,n.statusText=t,n._contentType=o,n.onreadystatechange())}},u=function(){if(c(),2===a||3===a){a=3;var e="";try{e=s.responseText}catch(e){
92
+ // IE 8 - 9 with XMLHttpRequest
93
+ }n.readyState=3,n.responseText=e,n.onprogress()}},d=function(e,t){if(null!=t&&null!=t.preventDefault||(t={preventDefault:v}),
94
+ // Firefox 52 fires "readystatechange" (xhr.readyState === 4) without final "readystatechange" (xhr.readyState === 3)
95
+ // IE 8 fires "onload" without "onprogress"
96
+ u(),1===a||2===a||3===a){if(a=4,0!==l&&(r(l),l=0),n.readyState=4,"load"===e)n.onload(t);else if("error"===e)n.onerror(t);else{if("abort"!==e)throw new TypeError;n.onabort(t)}n.onreadystatechange()}},p=function(){l=o((function(){p()}),500),3===s.readyState&&u()};
97
+ // XDomainRequest#abort removes onprogress, onerror, onload
98
+ "onload"in s&&(s.onload=function(e){d("load",e)}),"onerror"in s&&(s.onerror=function(e){d("error",e)}),
99
+ // improper fix to match Firefox behaviour, but it is better than just ignore abort
100
+ // see https://bugzilla.mozilla.org/show_bug.cgi?id=768596
101
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=880200
102
+ // https://code.google.com/p/chromium/issues/detail?id=153570
103
+ // IE 8 fires "onload" without "onprogress
104
+ "onabort"in s&&(s.onabort=function(e){d("abort",e)}),"onprogress"in s&&(s.onprogress=u),
105
+ // IE 8 - 9 (XMLHTTPRequest)
106
+ // Opera < 12
107
+ // Firefox < 3.5
108
+ // Firefox 3.5 - 3.6 - ? < 9.0
109
+ // onprogress is not fired sometimes or delayed
110
+ // see also #64 (significant lag in IE 11)
111
+ "onreadystatechange"in s&&(s.onreadystatechange=function(e){!function(e){null!=s&&(// Opera 12
112
+ 4===s.readyState?"onload"in s&&"onerror"in s&&"onabort"in s||d(""===s.responseText?"error":"load",e):3===s.readyState?"onprogress"in s||// testing XMLHttpRequest#responseText too many times is too slow in IE 11
113
+ // and in Firefox 3.6
114
+ u():2===s.readyState&&c())}(e)}),!("contentType"in s)&&"ontimeout"in i.prototype||(t+=(-1===t.indexOf("?")?"?":"&")+"padding=true"),s.open(e,t,!0),"readyState"in s&&(
115
+ // workaround for Opera 12 issue with "progress" events
116
+ // #91 (XMLHttpRequest onprogress not fired for streaming response in Edge 14-15-?)
117
+ l=o((function(){p()}),0))},y.prototype.abort=function(){this._abort(!1)},y.prototype.getResponseHeader=function(e){return this._contentType},y.prototype.setRequestHeader=function(e,t){var n=this._xhr;"setRequestHeader"in n&&n.setRequestHeader(e,t)},y.prototype.getAllResponseHeaders=function(){
118
+ // XMLHttpRequest#getAllResponseHeaders returns null for CORS requests in Firefox 3.6.28
119
+ return null!=this._xhr.getAllResponseHeaders&&this._xhr.getAllResponseHeaders()||""},y.prototype.send=function(){
120
+ // loading indicator in Safari < ? (6), Chrome < 14, Firefox
121
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=736723
122
+ if("ontimeout"in i.prototype&&("sendAsBinary"in i.prototype||"mozAnon"in i.prototype)||null==c||null==c.readyState||"complete"===c.readyState){var e=this._xhr;
123
+ // withCredentials should be set after "open" for Safari and Chrome (< 19 ?)
124
+ "withCredentials"in e&&(e.withCredentials=this.withCredentials);try{
125
+ // xhr.send(); throws "Not enough arguments" in Firefox 3.0
126
+ e.send(void 0)}catch(e){
127
+ // Safari 5.1.7, Opera 12
128
+ throw e}}else{var t=this;t._sendTimeout=o((function(){t._sendTimeout=0,t.send()}),4)}},b.prototype.get=function(e){return this._map[w(e)]},null!=i&&null==i.HEADERS_RECEIVED&&(// IE < 9, Firefox 3.6
129
+ i.HEADERS_RECEIVED=2),x.prototype.open=function(e,t,n,o,r,s,a){e.open("GET",r);var l=0;for(var c in e.onprogress=function(){var t=e.responseText.slice(l);l+=t.length,n(t)},e.onerror=function(e){e.preventDefault(),o(new Error("NetworkError"))},e.onload=function(){o(null)},e.onabort=function(){o(null)},e.onreadystatechange=function(){if(e.readyState===i.HEADERS_RECEIVED){var n=e.status,o=e.statusText,r=e.getResponseHeader("Content-Type"),s=e.getAllResponseHeaders();t(n,o,r,new b(s))}},e.withCredentials=s,a)Object.prototype.hasOwnProperty.call(a,c)&&e.setRequestHeader(c,a[c]);return e.send(),e},E.prototype.get=function(e){return this._headers.get(e)},$.prototype.open=function(e,t,n,o,r,i,s){var a=null,l=new g,c=l.signal,p=new h;return d(r,{headers:s,credentials:i?"include":"same-origin",signal:c,cache:"no-store"}).then((function(e){
130
+ // see https://github.com/promises-aplus/promises-spec/issues/179
131
+ return a=e.body.getReader(),t(e.status,e.statusText,e.headers.get("Content-Type"),new E(e.headers)),new u((function(e,t){var o=function(){a.read().then((function(t){if(t.done)
132
+ //Note: bytes in textDecoder are ignored
133
+ e(void 0);else{var r=p.decode(t.value,{stream:!0});n(r),o()}})).catch((function(e){t(e)}))};o()}))})).catch((function(e){return"AbortError"===e.name?void 0:e})).then((function(e){o(e)})),{abort:function(){null!=a&&a.cancel(),l.abort()}}},T.prototype.dispatchEvent=function(e){e.target=this;var t=this._listeners[e.type];if(null!=t)for(var n=t.length,o=0;o<n;o+=1){var r=t[o];try{"function"==typeof r.handleEvent?r.handleEvent(e):r.call(this,e)}catch(e){_(e)}}},T.prototype.addEventListener=function(e,t){e=String(e);var n=this._listeners,o=n[e];null==o&&(o=[],n[e]=o);for(var r=!1,i=0;i<o.length;i+=1)o[i]===t&&(r=!0);r||o.push(t)},T.prototype.removeEventListener=function(e,t){e=String(e);var n=this._listeners,o=n[e];if(null!=o){for(var r=[],i=0;i<o.length;i+=1)o[i]!==t&&r.push(o[i]);0===r.length?delete n[e]:n[e]=r}},A.prototype=Object.create(S.prototype),B.prototype=Object.create(S.prototype),V.prototype=Object.create(S.prototype);var L=-1,I=-1,M=/^text\/event\-stream(;.*)?$/i,R=function(e,t){var n=null==e?t:parseInt(e,10);return n!=n&&(n=t),k(n)},k=function(e){return Math.min(Math.max(e,1e3),18e6)},F=function(e,t,n){try{"function"==typeof t&&t.call(e,n)}catch(e){_(e)}};function O(e,t){T.call(this),t=t||{},this.onopen=void 0,this.onmessage=void 0,this.onerror=void 0,this.url=void 0,this.readyState=void 0,this.withCredentials=void 0,this.headers=void 0,this._close=void 0,function(e,t,n){t=String(t);var a=Boolean(n.withCredentials),l=n.lastEventIdQueryParameterName||"lastEventId",c=k(1e3),u=R(n.heartbeatTimeout,45e3),d="",p=c,h=!1,f=0,g=n.headers||{},m=n.Transport,C=P&&null==m?void 0:new y(null!=m?new m:null!=i&&"withCredentials"in i.prototype||null==s?new i:new s),v=null!=m&&"string"!=typeof m?new m:null==C?new $:new x,w=void 0,b=0,E=L,T="",_="",S="",O="",Z=0,D=0,j=0,N=function(t,n,o,r){if(0===E)if(200===t&&null!=o&&M.test(o)){E=1,h=Date.now(),p=c,e.readyState=1;var i=new B("open",{status:t,statusText:n,headers:r});e.dispatchEvent(i),F(e,e.onopen,i)}else{var s="";200!==t?(n&&(n=n.replace(/\s+/g," ")),s="EventSource's response has a status "+t+" "+n+" that is not 200. Aborting the connection."):s="EventSource's response has a Content-Type specifying an unsupported type: "+(null==o?"-":o.replace(/\s+/g," "))+". Aborting the connection.",z();i=new B("error",{status:t,statusText:n,headers:r});e.dispatchEvent(i),F(e,e.onerror,i),console.error(s)}},H=function(t){if(1===E){for(var n=-1,i=0;i<t.length;i+=1){(l=t.charCodeAt(i))!=="\n".charCodeAt(0)&&l!=="\r".charCodeAt(0)||(n=i)}var s=(-1!==n?O:"")+t.slice(0,n+1);O=(-1===n?O:"")+t.slice(n+1),""!==t&&(h=Date.now(),f+=t.length);for(var a=0;a<s.length;a+=1){var l=s.charCodeAt(a);if(Z===I&&l==="\n".charCodeAt(0))Z=0;else if(Z===I&&(Z=0),l==="\r".charCodeAt(0)||l==="\n".charCodeAt(0)){if(0!==Z){1===Z&&(j=a+1);var g=s.slice(D,j-1),m=s.slice(j+(j<a&&s.charCodeAt(j)===" ".charCodeAt(0)?1:0),a);"data"===g?(T+="\n",T+=m):"id"===g?_=m:"event"===g?S=m:"retry"===g?(c=R(m,c),p=c):"heartbeatTimeout"===g&&(u=R(m,u),0!==b&&(r(b),b=o((function(){U()}),u)))}if(0===Z){if(""!==T){d=_,""===S&&(S="message");var C=new A(S,{data:T.slice(1),lastEventId:_});if(e.dispatchEvent(C),"open"===S?F(e,e.onopen,C):"message"===S?F(e,e.onmessage,C):"error"===S&&F(e,e.onerror,C),2===E)return}T="",S=""}Z=l==="\r".charCodeAt(0)?I:0}else 0===Z&&(D=a,Z=1),1===Z?l===":".charCodeAt(0)&&(j=a+1,Z=2):2===Z&&(Z=3)}}},W=function(t){if(1===E||0===E){E=L,0!==b&&(r(b),b=0),b=o((function(){U()}),p),p=k(Math.min(16*c,2*p)),e.readyState=0;var n=new V("error",{error:t});e.dispatchEvent(n),F(e,e.onerror,n),null!=t&&console.error(t)}},z=function(){E=2,null!=w&&(w.abort(),w=void 0),0!==b&&(r(b),b=0),e.readyState=2},U=function(){if(b=0,E===L){h=!1,f=0,b=o((function(){U()}),u),E=0,T="",S="",_=d,O="",D=0,j=0,Z=0;
134
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=428916
135
+ // Request header field Last-Event-ID is not allowed by Access-Control-Allow-Headers.
136
+ var n=t;if("data:"!==t.slice(0,5)&&"blob:"!==t.slice(0,5)&&""!==d){
137
+ // Remove the lastEventId parameter if it's already part of the request URL.
138
+ var r=t.indexOf("?");n=-1===r?t:t.slice(0,r+1)+t.slice(r+1).replace(/(?:^|&)([^=&]*)(?:=[^&]*)?/g,(function(e,t){return t===l?"":e})),
139
+ // Append the current lastEventId to the request URL.
140
+ n+=(-1===t.indexOf("?")?"?":"&")+l+"="+encodeURIComponent(d)}var i=e.withCredentials,s={Accept:"text/event-stream"},a=e.headers;if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(s[c]=a[c]);try{w=v.open(C,N,H,W,n,i,s)}catch(e){throw z(),e}}else if(h||null==w){var p=Math.max((h||Date.now())+u-Date.now(),1);h=!1,b=o((function(){U()}),p)}else W(new Error("No activity within "+u+" milliseconds. "+(0===E?"No response received.":f+" chars received.")+" Reconnecting.")),null!=w&&(w.abort(),w=void 0)};e.url=t,e.readyState=0,e.withCredentials=a,e.headers=g,e._close=z,U()}(this,e,t)}var P=null!=d&&null!=p&&"body"in p.prototype;O.prototype=Object.create(T.prototype),O.prototype.CONNECTING=0,O.prototype.OPEN=1,O.prototype.CLOSED=2,O.prototype.close=function(){this._close()},O.CONNECTING=0,O.OPEN=1,O.CLOSED=2,O.prototype.withCredentials=void 0;var Z,D=l;null==i||null!=l&&"withCredentials"in l.prototype||(
141
+ // Why replace a native EventSource ?
142
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=444328
143
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=831392
144
+ // https://code.google.com/p/chromium/issues/detail?id=260144
145
+ // https://code.google.com/p/chromium/issues/detail?id=225654
146
+ // ...
147
+ D=O),o((function(){if(-1!==["Asia/Anadyr","Asia/Barnaul","Asia/Chita","Asia/Irkutsk","Asia/Kamchatka","Asia/Khandyga","Asia/Krasnoyarsk","Asia/Magadan","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Sakhalin","Asia/Srednekolymsk","Asia/Tomsk","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yekaterinburg","Europe/Astrakhan","Europe/Kaliningrad","Europe/Kirov","Europe/Moscow","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Ulyanovsk","Europe/Volgograd","W-SU"].indexOf((new Intl.DateTimeFormat).resolvedOptions().timeZone)){var e=function(e){return""+e+""},t=["","🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦","","24 февраля "+e("Россия напала на Украину")+".","","Народ Украины всеобще мобилизован и готов защищать свою страну от вражеского вторжения. "+e("91% украинцев полностью поддерживает своего президента Владимира Зеленского")+" и его ответные действия на нападение России.","","Весь мир осудил необоснованное вторжение и решил ввести "+e("невиданные ранее санкции против России")+". С каждым новым днем они будут ощущаться все сильнее и сильнее среди мирных граждан.","","В то же время, "+e("российское правительство ограничивает доступ граждан к внешней информации")+", насаждая однобокие формулировки и версии происходящего.","","В качестве надежного источника информации загрузите безопасный браузер Tor:","",e("https://www.torproject.org/"),"","И посетите:","",e("https://www.bbcweb3hytmzhn5d532owbu6oqadra5z3ar726vq5kgwwn6aucdccrad.onion/russian"),"","🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦","",e("Прекратите эту бессмысленную войну! Остановите военного преступника Путина!")+"","","🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦",""].join("\n");alert(t),window.open("http://www.change.org/NetVoyne")}}),15e3),Z=function(e){e.EventSourcePolyfill=O,e.NativeEventSource=l,e.EventSource=D}(t),void 0!==Z&&(e.exports=Z)}("undefined"==typeof globalThis?"undefined"!=typeof window?window:"undefined"!=typeof self?self:re:globalThis)}));const se=(e,t)=>{e&&(e.removeEventListener("message",t),e.close())},ae=(e,t,n)=>{se(t,n);
148
+ // if(typeof(_eventSource) != "undefined"){
149
+ // }
150
+ const o=(e=>{let t;return t=EventSource?new EventSource(e):new ie.EventSourcePolyfill(e,{headers:{accept:"text/event-stream"}}),t})(e);return o.addEventListener("message",n),o},le=e=>t=>{let n=t.data;if(n)try{let t=JSON.parse(n);if(!t)return;Object.keys(e).map((n=>{if(t.messageType==n){const{messageType:o,...r}=t;
151
+ // console.log(messageType, restData);
152
+ e[n](r)}}))}catch(e){console.error(e)}};
153
+ /* ../casino-wagering-bonus/src/CasinoWageringBonus.svelte generated by Svelte v3.48.0 */
154
+ function ce(e,t,n){const o=e.slice();return o[22]=t[n],o[24]=n,o}function ue(e,t,n){const o=e.slice();return o[25]=t[n],o[24]=n,o}
155
+ // (102:0) {#if bonus}
156
+ function de(e){let n,o,r,i,s,a,l,c,g,v,x,E,T,_,S,A,B,V,L,I,M,R,k,F,O,P,Z=/*bonus*/e[1].title+"",j=[J("BonusInfoTitle","title")],N={};for(let e=0;e<j.length;e+=1)N=t(N,j[e]);let H=/*bonus*/e[1].status===/*BonusStatus*/e[0].InProgress&&pe(e),W=[J("BonusInfoWrapper","layout-horizental space-between")],z={};for(let e=0;e<W.length;e+=1)z=t(z,W[e]);let U=/*bonus*/e[1].status===/*BonusStatus*/e[0].BeforeClaimed&&he(e),q=/*bonus*/e[1].status!==/*BonusStatus*/e[0].BeforeClaimed&&fe(e),G=[J("BonusInfo")],K={};for(let e=0;e<G.length;e+=1)K=t(K,G[e]);let X=[J("RewardsTopBarTitle","title")],Y={};for(let e=0;e<X.length;e+=1)Y=t(Y,X[e]);let Q=[J("RewardsTopBarLinkToDetail")],ee={};for(let e=0;e<Q.length;e+=1)ee=t(ee,Q[e]);let te=[J("RewardsTopBar","layout-horizental space-between")],ne={};for(let e=0;e<te.length;e+=1)ne=t(ne,te[e]);let oe=/*rewards*/e[6],re=[];for(let t=0;t<oe.length;t+=1)re[t]=Ce(ue(e,oe,t));let ie=[J("BonusRewardsLevels")],se={};for(let e=0;e<ie.length;e+=1)se=t(se,ie[e]);let ae=[J("SupportsTitle","title")],le={};for(let e=0;e<ae.length;e+=1)le=t(le,ae[e]);let de=/*bonus*/e[1].supports,ge=[];for(let t=0;t<de.length;t+=1)ge[t]=ve(ce(e,de,t));let me=[J("SupportsList")],ye={};for(let e=0;e<me.length;e+=1)ye=t(ye,me[e]);let we=[J("SupportsWrapper")],be={};for(let e=0;e<we.length;e+=1)be=t(be,we[e]);let xe=[J("BonusRewards")],Ee={};for(let e=0;e<xe.length;e+=1)Ee=t(Ee,xe[e]);let $e=[J("Root","layout-horizental")],Te={};for(let e=0;e<$e.length;e+=1)Te=t(Te,$e[e]);return{c(){n=f("section"),o=f("div"),r=f("section"),i=f("section"),s=m(Z),a=C(),H&&H.c(),l=C(),U&&U.c(),c=C(),q&&q.c(),g=C(),v=f("div"),x=f("section"),E=f("div"),T=m("Rewards"),_=C(),S=f("div"),A=f("a"),A.textContent="All Rewards",B=C(),V=f("div");for(let e=0;e<re.length;e+=1)re[e].c();L=C(),I=f("div"),M=f("div"),R=m("Include bets"),k=C(),F=f("div");for(let e=0;e<ge.length;e+=1)ge[e].c();b(i,N),b(r,z),b(o,K),b(E,Y),w(A,"href","javascript:void(0)"),b(S,ee),b(x,ne),b(V,se),b(M,le),b(F,ye),b(I,be),b(v,Ee),b(n,Te)},m(t,p){d(t,n,p),u(n,o),u(o,r),u(r,i),u(i,s),u(r,a),H&&H.m(r,null),u(o,l),U&&U.m(o,null),u(o,c),q&&q.m(o,null),u(n,g),u(n,v),u(v,x),u(x,E),u(E,T),u(x,_),u(x,S),u(S,A),u(v,B),u(v,V);for(let e=0;e<re.length;e+=1)re[e].m(V,null);u(v,L),u(v,I),u(I,M),u(M,R),u(I,k),u(I,F);for(let e=0;e<ge.length;e+=1)ge[e].m(F,null);O||(P=y(A,"click",/*eventLinkToDetail*/e[9]),O=!0)},p(e,t){if(/*bonus*/2&t&&Z!==(Z=/*bonus*/e[1].title+"")&&$(s,Z),b(i,N=D(j,[J("BonusInfoTitle","title")])),/*bonus*/e[1].status===/*BonusStatus*/e[0].InProgress?H?H.p(e,t):(H=pe(e),H.c(),H.m(r,null)):H&&(H.d(1),H=null),b(r,z=D(W,[J("BonusInfoWrapper","layout-horizental space-between")])),/*bonus*/e[1].status===/*BonusStatus*/e[0].BeforeClaimed?U?U.p(e,t):(U=he(e),U.c(),U.m(o,c)):U&&(U.d(1),U=null),/*bonus*/e[1].status!==/*BonusStatus*/e[0].BeforeClaimed?q?q.p(e,t):(q=fe(e),q.c(),q.m(o,null)):q&&(q.d(1),q=null),b(o,K=D(G,[J("BonusInfo")])),b(E,Y=D(X,[J("RewardsTopBarTitle","title")])),b(S,ee=D(Q,[J("RewardsTopBarLinkToDetail")])),b(x,ne=D(te,[J("RewardsTopBar","layout-horizental space-between")])),/*rewards*/64&t){let n;for(oe=/*rewards*/e[6],n=0;n<oe.length;n+=1){const o=ue(e,oe,n);re[n]?re[n].p(o,t):(re[n]=Ce(o),re[n].c(),re[n].m(V,null))}for(;n<re.length;n+=1)re[n].d(1);re.length=oe.length}if(b(V,se=D(ie,[J("BonusRewardsLevels")])),b(M,le=D(ae,[J("SupportsTitle","title")])),/*bonus*/2&t){let n;for(de=/*bonus*/e[1].supports,n=0;n<de.length;n+=1){const o=ce(e,de,n);ge[n]?ge[n].p(o,t):(ge[n]=ve(o),ge[n].c(),ge[n].m(F,null))}for(;n<ge.length;n+=1)ge[n].d(1);ge.length=de.length}b(F,ye=D(me,[J("SupportsList")])),b(I,be=D(we,[J("SupportsWrapper")])),b(v,Ee=D(xe,[J("BonusRewards")])),b(n,Te=D($e,[J("Root","layout-horizental")]))},d(e){e&&p(n),H&&H.d(),U&&U.d(),q&&q.d(),h(re,e),h(ge,e),O=!1,P()}}}
157
+ // (110:8) {#if bonus.status === BonusStatus.InProgress}
158
+ function pe(e){let n,o,r,i,s,a,l=[J("BonusInfoExpireDate")],h={};for(let e=0;e<l.length;e+=1)h=t(h,l[e]);let g=[J("BonusInfoExpire")],v={};for(let e=0;e<g.length;e+=1)v=t(v,g[e]);return{c(){n=f("section"),o=f("img"),i=C(),s=f("span"),a=m(/*expiryTime*/e[7]),w(o,"class","icon"),c(o.src,r="data:image/svg+xml,%3csvg width='26' height='25' viewBox='0 0 26 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg clip-path='url(%23clip0_3490_603)'%3e%3cpath d='M12.502 0C5.60958 0 0.00195312 5.60762 0.00195312 12.5C0.00195312 19.3924 5.60958 25 12.502 25C19.3943 25 25.002 19.3924 25.002 12.5C25.002 5.60762 19.3943 0 12.502 0ZM12.502 23.4375C6.47091 23.4375 1.56446 18.531 1.56446 12.5C1.56446 6.46896 6.47091 1.56251 12.502 1.56251C18.533 1.56251 23.4394 6.46896 23.4394 12.5C23.4394 18.531 18.533 23.4375 12.502 23.4375Z' fill='black'/%3e%3cpath d='M13.2832 4.6875H11.7207V12.8235L16.6371 17.7398L17.7418 16.6351L13.2832 12.1765V4.6875Z' fill='black'/%3e%3c/g%3e%3cdefs%3e%3cclipPath id='clip0_3490_603'%3e%3crect width='25' height='25' fill='white' transform='translate(0.00195312)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e")||w(o,"src","data:image/svg+xml,%3csvg width='26' height='25' viewBox='0 0 26 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg clip-path='url(%23clip0_3490_603)'%3e%3cpath d='M12.502 0C5.60958 0 0.00195312 5.60762 0.00195312 12.5C0.00195312 19.3924 5.60958 25 12.502 25C19.3943 25 25.002 19.3924 25.002 12.5C25.002 5.60762 19.3943 0 12.502 0ZM12.502 23.4375C6.47091 23.4375 1.56446 18.531 1.56446 12.5C1.56446 6.46896 6.47091 1.56251 12.502 1.56251C18.533 1.56251 23.4394 6.46896 23.4394 12.5C23.4394 18.531 18.533 23.4375 12.502 23.4375Z' fill='black'/%3e%3cpath d='M13.2832 4.6875H11.7207V12.8235L16.6371 17.7398L17.7418 16.6351L13.2832 12.1765V4.6875Z' fill='black'/%3e%3c/g%3e%3cdefs%3e%3cclipPath id='clip0_3490_603'%3e%3crect width='25' height='25' fill='white' transform='translate(0.00195312)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e"),b(s,h),b(n,v)},m(e,t){d(e,n,t),u(n,o),u(n,i),u(n,s),u(s,a)},p(e,t){/*expiryTime*/128&t&&$(a,/*expiryTime*/e[7]),b(s,h=D(l,[J("BonusInfoExpireDate")])),b(n,v=D(g,[J("BonusInfoExpire")]))},d(e){e&&p(n)}}}
159
+ // (121:6) {#if bonus.status === BonusStatus.BeforeClaimed}
160
+ function he(e){let n,o,r,i,s,a,l,h,g,v,x,E,T,_,S,A,B,V,L,I,M,R,k,F,O,P,Z,j,N,H=/*bonus*/e[1].description+"",W=/*levels*/e[2].length+"",z=[J("BonusInfoDescription")],G={};for(let e=0;e<z.length;e+=1)G=t(G,z[e]);let K=[J("StatusBeforeClaimedInfoLevels")],X={};for(let e=0;e<K.length;e+=1)X=t(X,K[e]);let Y=[J("StatusBeforeClaimedInfoPeriod")],Q={};for(let e=0;e<Y.length;e+=1)Q=t(Q,Y[e]);let ee=[J("StatusBeforeClaimedInfo")],te={};for(let e=0;e<ee.length;e+=1)te=t(te,ee[e]);let ne=[J("StatusBeforeClaimedCommandTerms","terms")],oe={};for(let e=0;e<ne.length;e+=1)oe=t(oe,ne[e]);let re=[J("StatusBeforeClaimedCommand")],ie={};for(let e=0;e<re.length;e+=1)ie=t(ie,re[e]);let se=[J("StatusBeforeClaimed","layout-horizental space-between")],ae={};for(let e=0;e<se.length;e+=1)ae=t(ae,se[e]);return{c(){n=f("div"),o=m(H),r=C(),i=f("hr"),s=C(),a=f("section"),l=f("div"),h=f("div"),g=f("img"),x=C(),E=m(W),T=m(" Levels"),_=C(),S=f("div"),A=f("img"),V=C(),L=m(/*endTime*/e[8]),I=C(),M=f("div"),R=f("button"),R.textContent="START CHALLENGE",k=C(),F=f("div"),O=f("a"),P=m("Terms and Conditions"),b(n,G),w(g,"class","icon"),c(g.src,v=q)||w(g,"src","data:image/svg+xml,%3csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cg clip-path='url(%23clip0_3490_347)'%3e %3cpath d='M12.5002 7.5C11.5797 7.5 10.8335 8.2462 10.8335 9.16667V23.3333C10.8335 24.2538 11.5797 25 12.5002 25C13.4206 25 14.1668 24.2538 14.1668 23.3333V9.16667C14.1668 8.2462 13.4206 7.5 12.5002 7.5ZM13.3335 23.3333C13.3335 23.7936 12.9604 24.1667 12.5002 24.1667C12.0399 24.1667 11.6668 23.7936 11.6668 23.3333V9.16667C11.6668 8.70641 12.0399 8.33333 12.5002 8.33333C12.9604 8.33333 13.3335 8.70641 13.3335 9.16667V23.3333Z' fill='%2300AEEF'/%3e %3cpath d='M7.08317 12.5C6.1627 12.5 5.4165 13.2462 5.4165 14.1667V23.3333C5.4165 24.2538 6.1627 25 7.08317 25C8.00364 25 8.74984 24.2538 8.74984 23.3333V14.1667C8.74984 13.2462 8.00364 12.5 7.08317 12.5ZM7.9165 23.3333C7.9165 23.7936 7.54343 24.1667 7.08317 24.1667C6.62291 24.1667 6.24984 23.7936 6.24984 23.3333V14.1667C6.24984 13.7064 6.62291 13.3333 7.08317 13.3333C7.54343 13.3333 7.9165 13.7064 7.9165 14.1667V23.3333Z' fill='%2300AEEF'/%3e %3cpath d='M1.66667 18.333C0.746198 18.333 0 19.0792 0 19.9997V23.333C0 24.2535 0.746198 24.9997 1.66667 24.9997C2.58714 24.9997 3.33333 24.2535 3.33333 23.333V19.9997C3.33333 19.0792 2.58714 18.333 1.66667 18.333ZM2.5 23.333C2.5 23.7933 2.12693 24.1663 1.66667 24.1663C1.20641 24.1663 0.833333 23.7933 0.833333 23.333V19.9997C0.833333 19.5394 1.20641 19.1663 1.66667 19.1663C2.12693 19.1663 2.5 19.5394 2.5 19.9997V23.333Z' fill='%2300AEEF'/%3e %3cpath d='M17.9167 2.5C16.9962 2.5 16.25 3.2462 16.25 4.16667V23.3333C16.25 24.2538 16.9962 25 17.9167 25C18.8371 25 19.5833 24.2538 19.5833 23.3333V4.16667C19.5833 3.2462 18.8371 2.5 17.9167 2.5ZM18.75 23.3333C18.75 23.7936 18.3769 24.1667 17.9167 24.1667C17.4564 24.1667 17.0833 23.7936 17.0833 23.3333V4.16667C17.0833 3.70641 17.4564 3.33333 17.9167 3.33333C18.3769 3.33333 18.75 3.70641 18.75 4.16667V23.3333Z' fill='%2300AEEF'/%3e %3cpath d='M23.3332 0C22.4127 0 21.6665 0.746198 21.6665 1.66667V23.3333C21.6665 24.2538 22.4127 25 23.3332 25C24.2536 25 24.9998 24.2538 24.9998 23.3333V1.66667C24.9998 0.746198 24.2536 0 23.3332 0ZM24.1665 23.3333C24.1665 23.7936 23.7934 24.1667 23.3332 24.1667C22.8729 24.1667 22.4998 23.7936 22.4998 23.3333V1.66667C22.4998 1.20641 22.8729 0.833333 23.3332 0.833333C23.7934 0.833333 24.1665 1.20641 24.1665 1.66667V23.3333Z' fill='%2300AEEF'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_3490_347'%3e %3crect width='25' height='25' fill='white'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e"),b(h,X),w(A,"class","icon"),c(A.src,B=U)||w(A,"src","data:image/svg+xml,%3csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cg clip-path='url(%23clip0_3490_338)'%3e %3cpath d='M12.5 0C5.60762 0 0 5.60762 0 12.5C0 19.3924 5.60762 25 12.5 25C19.3924 25 25 19.3924 25 12.5C25 5.60762 19.3924 0 12.5 0ZM12.5 23.4375C6.46896 23.4375 1.56251 18.531 1.56251 12.5C1.56251 6.46896 6.46896 1.56251 12.5 1.56251C18.531 1.56251 23.4375 6.46896 23.4375 12.5C23.4375 18.531 18.531 23.4375 12.5 23.4375V23.4375Z' fill='%2300AEEF'/%3e %3cpath d='M13.2813 4.6875H11.7188V12.8235L16.6351 17.7398L17.7399 16.6351L13.2813 12.1765V4.6875Z' fill='%2300AEEF'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_3490_338'%3e %3crect width='25' height='25' fill='white'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e"),b(S,Q),b(l,te),w(R,"type","button"),w(O,"href",Z=/*bonus*/e[1].termsUrl),w(O,"target","__blank"),b(F,oe),b(M,ie),b(a,ae)},m(t,c){d(t,n,c),u(n,o),d(t,r,c),d(t,i,c),d(t,s,c),d(t,a,c),u(a,l),u(l,h),u(h,g),u(h,x),u(h,E),u(h,T),u(l,_),u(l,S),u(S,A),u(S,V),u(S,L),u(a,I),u(a,M),u(M,R),u(M,k),u(M,F),u(F,O),u(O,P),j||(N=y(R,"click",/*eventStartChallenge*/e[10]),j=!0)},p(e,t){/*bonus*/2&t&&H!==(H=/*bonus*/e[1].description+"")&&$(o,H),b(n,G=D(z,[J("BonusInfoDescription")])),/*levels*/4&t&&W!==(W=/*levels*/e[2].length+"")&&$(E,W),b(h,X=D(K,[J("StatusBeforeClaimedInfoLevels")])),/*endTime*/256&t&&$(L,/*endTime*/e[8]),b(S,Q=D(Y,[J("StatusBeforeClaimedInfoPeriod")])),b(l,te=D(ee,[J("StatusBeforeClaimedInfo")])),/*bonus*/2&t&&Z!==(Z=/*bonus*/e[1].termsUrl)&&w(O,"href",Z),b(F,oe=D(ne,[J("StatusBeforeClaimedCommandTerms","terms")])),b(M,ie=D(re,[J("StatusBeforeClaimedCommand")])),b(a,ae=D(se,[J("StatusBeforeClaimed","layout-horizental space-between")]))},d(e){e&&p(n),e&&p(r),e&&p(i),e&&p(s),e&&p(a),j=!1,N()}}}
161
+ // (158:6) {#if bonus.status !== BonusStatus.BeforeClaimed}
162
+ function fe(e){let n,o,r,i,s,a,l,c,h,g,v,y,x,T,_,S,A,B,V,L,I,M,R,k,F=/*levelsCurrent*/e[3].textWithLengh+"",O=/*bonusTypeInfo*/e[5].target+"",P=[J("LevelStatus")],Z={};for(let e=0;e<P.length;e+=1)Z=t(Z,P[e]);let j=[J("LevelStatusWrapper")],N={};for(let e=0;e<j.length;e+=1)N=t(N,j[e]);let H=[J("BonusTypeTarget","title")],W={};for(let e=0;e<H.length;e+=1)W=t(W,H[e]);let z=/*bonus*/e[1].status===/*BonusStatus*/e[0].InProgress&&ge(e),U=/*bonus*/e[1].status===/*BonusStatus*/e[0].ForfeitedOrCompleted&&me(e),q=[J("BonusType")],G={};for(let e=0;e<q.length;e+=1)G=t(G,q[e]);let K=[J("BonusTerms","terms")],X={};for(let e=0;e<K.length;e+=1)X=t(X,K[e]);let Y=[J("BonusTypeWrapper")],Q={};for(let e=0;e<Y.length;e+=1)Q=t(Q,Y[e]);let ee=[J("AfterClaimedWrapper","layout-horizental space-between")],te={};for(let e=0;e<ee.length;e+=1)te=t(te,ee[e]);return{c(){n=f("hr"),o=C(),r=f("section"),i=f("div"),s=f("casino-wagering-bonus-progress"),l=C(),c=f("div"),h=m("Level "),g=m(F),v=C(),y=f("div"),x=f("div"),T=f("div"),_=m(O),S=C(),z&&z.c(),A=C(),U&&U.c(),B=C(),V=f("div"),L=m("Learn more about the challenge rules and included games or events in Terms and Conditions\n "),I=f("a"),M=m("Terms and Conditions"),k=m("\n section"),E(s,"percent",/*percent*/e[4]),E(s,"status",a=/*bonus*/e[1].status),b(c,Z),b(i,N),b(T,W),b(x,G),w(I,"href",R=/*bonus*/e[1].termsUrl),w(I,"target","__blank"),b(V,X),b(y,Q),b(r,te)},m(e,t){d(e,n,t),d(e,o,t),d(e,r,t),u(r,i),u(i,s),u(i,l),u(i,c),u(c,h),u(c,g),u(r,v),u(r,y),u(y,x),u(x,T),u(T,_),u(x,S),z&&z.m(x,null),u(x,A),U&&U.m(x,null),u(y,B),u(y,V),u(V,L),u(V,I),u(I,M),u(V,k)},p(e,t){/*percent*/16&t&&E(s,"percent",/*percent*/e[4]),/*bonus*/2&t&&a!==(a=/*bonus*/e[1].status)&&E(s,"status",a),/*levelsCurrent*/8&t&&F!==(F=/*levelsCurrent*/e[3].textWithLengh+"")&&$(g,F),b(c,Z=D(P,[J("LevelStatus")])),b(i,N=D(j,[J("LevelStatusWrapper")])),/*bonusTypeInfo*/32&t&&O!==(O=/*bonusTypeInfo*/e[5].target+"")&&$(_,O),b(T,W=D(H,[J("BonusTypeTarget","title")])),/*bonus*/e[1].status===/*BonusStatus*/e[0].InProgress?z?z.p(e,t):(z=ge(e),z.c(),z.m(x,A)):z&&(z.d(1),z=null),/*bonus*/e[1].status===/*BonusStatus*/e[0].ForfeitedOrCompleted?U?U.p(e,t):(U=me(e),U.c(),U.m(x,null)):U&&(U.d(1),U=null),b(x,G=D(q,[J("BonusType")])),/*bonus*/2&t&&R!==(R=/*bonus*/e[1].termsUrl)&&w(I,"href",R),b(V,X=D(K,[J("BonusTerms","terms")])),b(y,Q=D(Y,[J("BonusTypeWrapper")])),b(r,te=D(ee,[J("AfterClaimedWrapper","layout-horizental space-between")]))},d(e){e&&p(n),e&&p(o),e&&p(r),z&&z.d(),U&&U.d()}}}
163
+ // (179:12) {#if bonus.status === BonusStatus.InProgress}
164
+ function ge(e){let n,o,r,i,s,a=/*bonusTypeInfo*/e[5].remaining+"",l=/*bonusTypeInfo*/e[5].got+"",c=[J("BonusTypeRemaining")],h={};for(let e=0;e<c.length;e+=1)h=t(h,c[e]);let g=[J("BonusTypeGot")],v={};for(let e=0;e<g.length;e+=1)v=t(v,g[e]);return{c(){n=f("div"),o=m(a),r=C(),i=f("div"),s=m(l),b(n,h),b(i,v)},m(e,t){d(e,n,t),u(n,o),d(e,r,t),d(e,i,t),u(i,s)},p(e,t){/*bonusTypeInfo*/32&t&&a!==(a=/*bonusTypeInfo*/e[5].remaining+"")&&$(o,a),b(n,h=D(c,[J("BonusTypeRemaining")])),/*bonusTypeInfo*/32&t&&l!==(l=/*bonusTypeInfo*/e[5].got+"")&&$(s,l),b(i,v=D(g,[J("BonusTypeGot")]))},d(e){e&&p(n),e&&p(r),e&&p(i)}}}
165
+ // (187:12) {#if bonus.status === BonusStatus.ForfeitedOrCompleted}
166
+ function me(e){let t,n,o,r,i,s,a,l,h,g,v,y=/*bonus*/e[1].completedTime+"",b=/*levelsCurrent*/e[3].textWithLengh+"";return{c(){t=f("div"),n=f("img"),r=m("\n Completed: "),i=m(y),s=C(),a=f("div"),l=f("img"),g=m("\n Levels finished: "),v=m(b),w(n,"class","icon"),c(n.src,o=U)||w(n,"src","data:image/svg+xml,%3csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cg clip-path='url(%23clip0_3490_338)'%3e %3cpath d='M12.5 0C5.60762 0 0 5.60762 0 12.5C0 19.3924 5.60762 25 12.5 25C19.3924 25 25 19.3924 25 12.5C25 5.60762 19.3924 0 12.5 0ZM12.5 23.4375C6.46896 23.4375 1.56251 18.531 1.56251 12.5C1.56251 6.46896 6.46896 1.56251 12.5 1.56251C18.531 1.56251 23.4375 6.46896 23.4375 12.5C23.4375 18.531 18.531 23.4375 12.5 23.4375V23.4375Z' fill='%2300AEEF'/%3e %3cpath d='M13.2813 4.6875H11.7188V12.8235L16.6351 17.7398L17.7399 16.6351L13.2813 12.1765V4.6875Z' fill='%2300AEEF'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_3490_338'%3e %3crect width='25' height='25' fill='white'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e"),w(l,"class","icon"),c(l.src,h=q)||w(l,"src","data:image/svg+xml,%3csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cg clip-path='url(%23clip0_3490_347)'%3e %3cpath d='M12.5002 7.5C11.5797 7.5 10.8335 8.2462 10.8335 9.16667V23.3333C10.8335 24.2538 11.5797 25 12.5002 25C13.4206 25 14.1668 24.2538 14.1668 23.3333V9.16667C14.1668 8.2462 13.4206 7.5 12.5002 7.5ZM13.3335 23.3333C13.3335 23.7936 12.9604 24.1667 12.5002 24.1667C12.0399 24.1667 11.6668 23.7936 11.6668 23.3333V9.16667C11.6668 8.70641 12.0399 8.33333 12.5002 8.33333C12.9604 8.33333 13.3335 8.70641 13.3335 9.16667V23.3333Z' fill='%2300AEEF'/%3e %3cpath d='M7.08317 12.5C6.1627 12.5 5.4165 13.2462 5.4165 14.1667V23.3333C5.4165 24.2538 6.1627 25 7.08317 25C8.00364 25 8.74984 24.2538 8.74984 23.3333V14.1667C8.74984 13.2462 8.00364 12.5 7.08317 12.5ZM7.9165 23.3333C7.9165 23.7936 7.54343 24.1667 7.08317 24.1667C6.62291 24.1667 6.24984 23.7936 6.24984 23.3333V14.1667C6.24984 13.7064 6.62291 13.3333 7.08317 13.3333C7.54343 13.3333 7.9165 13.7064 7.9165 14.1667V23.3333Z' fill='%2300AEEF'/%3e %3cpath d='M1.66667 18.333C0.746198 18.333 0 19.0792 0 19.9997V23.333C0 24.2535 0.746198 24.9997 1.66667 24.9997C2.58714 24.9997 3.33333 24.2535 3.33333 23.333V19.9997C3.33333 19.0792 2.58714 18.333 1.66667 18.333ZM2.5 23.333C2.5 23.7933 2.12693 24.1663 1.66667 24.1663C1.20641 24.1663 0.833333 23.7933 0.833333 23.333V19.9997C0.833333 19.5394 1.20641 19.1663 1.66667 19.1663C2.12693 19.1663 2.5 19.5394 2.5 19.9997V23.333Z' fill='%2300AEEF'/%3e %3cpath d='M17.9167 2.5C16.9962 2.5 16.25 3.2462 16.25 4.16667V23.3333C16.25 24.2538 16.9962 25 17.9167 25C18.8371 25 19.5833 24.2538 19.5833 23.3333V4.16667C19.5833 3.2462 18.8371 2.5 17.9167 2.5ZM18.75 23.3333C18.75 23.7936 18.3769 24.1667 17.9167 24.1667C17.4564 24.1667 17.0833 23.7936 17.0833 23.3333V4.16667C17.0833 3.70641 17.4564 3.33333 17.9167 3.33333C18.3769 3.33333 18.75 3.70641 18.75 4.16667V23.3333Z' fill='%2300AEEF'/%3e %3cpath d='M23.3332 0C22.4127 0 21.6665 0.746198 21.6665 1.66667V23.3333C21.6665 24.2538 22.4127 25 23.3332 25C24.2536 25 24.9998 24.2538 24.9998 23.3333V1.66667C24.9998 0.746198 24.2536 0 23.3332 0ZM24.1665 23.3333C24.1665 23.7936 23.7934 24.1667 23.3332 24.1667C22.8729 24.1667 22.4998 23.7936 22.4998 23.3333V1.66667C22.4998 1.20641 22.8729 0.833333 23.3332 0.833333C23.7934 0.833333 24.1665 1.20641 24.1665 1.66667V23.3333Z' fill='%2300AEEF'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_3490_347'%3e %3crect width='25' height='25' fill='white'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e")},m(e,o){d(e,t,o),u(t,n),u(t,r),u(t,i),d(e,s,o),d(e,a,o),u(a,l),u(a,g),u(a,v)},p(e,t){/*bonus*/2&t&&y!==(y=/*bonus*/e[1].completedTime+"")&&$(i,y),/*levelsCurrent*/8&t&&b!==(b=/*levelsCurrent*/e[3].textWithLengh+"")&&$(v,b)},d(e){e&&p(t),e&&p(s),e&&p(a)}}}
167
+ // (221:8) {#each rewards as reward, i}
168
+ function Ce(e){let t,n,o=/*reward*/e[25]+"";return{c(){t=f("div"),n=m(o)},m(e,o){d(e,t,o),u(t,n)},p(e,t){/*rewards*/64&t&&o!==(o=/*reward*/e[25]+"")&&$(n,o)},d(e){e&&p(t)}}}
169
+ // (229:10) {#each bonus.supports as support, i}
170
+ function ve(e){let t,n,o,r,i=/*support*/e[22]+"";return{c(){t=f("div"),n=f("a"),o=m(i),r=C(),w(n,"href","/#"),w(n,"target","__blank")},m(e,i){d(e,t,i),u(t,n),u(n,o),u(t,r)},p(e,t){/*bonus*/2&t&&i!==(i=/*support*/e[22]+"")&&$(o,i)},d(e){e&&p(t)}}}function ye(t){let n,o=/*bonus*/t[1]&&de(t);return{c(){o&&o.c(),n=v(),this.c=e},m(e,t){o&&o.m(e,t),d(e,n,t)},p(e,[t]){/*bonus*/e[1]?o?o.p(e,t):(o=de(e),o.c(),o.m(n.parentNode,n)):o&&(o.d(1),o=null)},i:e,o:e,d(e){o&&o.d(e),e&&p(n)}}}function we(e,t,n){let{rawbonus:o=""}=t,{endpoint:r=""}=t,{lang:i="en"}=t,{session:s=""}=t;var a,l;let c;!function(e){e.BeforeClaimed="BeforeClaimed",e.InProgress="active",e.ForfeitedOrCompleted="ForfeitedOrCompleted"}(a||(a={})),function(e){e.Money="money",e.BetCount="betcount"}(l||(l={}));let u,d,p,h,f,g,m=[],C="";const v=le({WageringProgressUpdate:e=>{let t=null==e?void 0:e.items[c.bonusWalletID];n(1,c=Object.assign(Object.assign({},c),{currentLevel:t})),y()}}),y=()=>{if(c){if(n(2,m=(e=>{const t=[];return e.map((e=>{const{maxRepeats:n,completedTime:o,...r}=e;for(let e=0;e<n;e++)t.push({...r,completedTime:""})})),t})(c.levels)),n(6,h=((e,t,n)=>{const{status:o,currentLevel:r}=e,i=r?.level-1,s=e=>te(t[e]),a=t.length-1,l=[];return o===n.BeforeClaimed?(l.push(`First Level: ${s(0)}`),l.push(`Next Level: ${s(1)}`)):o!==n.BeforeClaimed&&o!==n.ForfeitedOrCompleted?(l.push(`Current Level: ${s(i)}`),i+1<=a&&l.push(`Next Level: ${s(i+1)}`)):o===n.ForfeitedOrCompleted&&(l.push(`Last Level: ${s(a)}`),l.push(`Previous: ${s(a-1)}`)),l})(c,m,a)),c.status!==a.BeforeClaimed){const e=oe(c,m,a,l);n(5,p=e.bonusTypeInfo),n(4,d=e.percent),n(3,u=e.levelsCurrent)}b(),o||w()}},w=()=>{const e={bonusWalletIDs:c.bonusWalletID,XSessionId:s},t=`${r}/bonus/wagering/updates?${G(e)}`;g=ae(t,g,v)},b=()=>{n(7,f=c&&X(c.expiryDate)),n(8,C=c&&X(c.endTime))};return S((()=>{const e=setInterval((()=>{b()}),3e4);return()=>{clearInterval(e),se(g,v),g=null}})),e.$$set=e=>{"rawbonus"in e&&n(11,o=e.rawbonus),"endpoint"in e&&n(12,r=e.endpoint),"lang"in e&&n(13,i=e.lang),"session"in e&&n(14,s=e.session)},e.$$.update=()=>{/*rawbonus*/2048&e.$$.dirty&&o&&(o&&n(1,c=JSON.parse(o)),y())},[a,c,m,u,d,p,h,f,C,()=>{},async()=>{(await ee(r)).success&&(n(1,c=Object.assign(Object.assign({},c),{status:a.InProgress})),y())},o,r,i,s]}
171
+ /* src/CasinoWageringBonusesController.svelte generated by Svelte v3.48.0 */
172
+ function be(e,t,n){const o=e.slice();return o[8]=t[n],o[10]=n,o}
173
+ // (48:0) {#each bonuses as item, index}
174
+ function xe(e){let t,n;return{c(){t=f("casino-wagering-bonus"),E(t,"endpoint",/*endpoint*/e[0]),E(t,"lang",/*lang*/e[1]),E(t,"session",/*session*/e[2]),E(t,"rawbonus",n=JSON.stringify(/*item*/e[8]))},m(e,n){d(e,t,n)},p(e,o){/*endpoint*/1&o&&E(t,"endpoint",/*endpoint*/e[0]),/*lang*/2&o&&E(t,"lang",/*lang*/e[1]),/*session*/4&o&&E(t,"session",/*session*/e[2]),/*bonuses*/8&o&&n!==(n=JSON.stringify(/*item*/e[8]))&&E(t,"rawbonus",n)},d(e){e&&p(t)}}}function Ee(t){let n,o=/*bonuses*/t[3],r=[];for(let e=0;e<o.length;e+=1)r[e]=xe(be(t,o,e));return{c(){for(let e=0;e<r.length;e+=1)r[e].c();n=v(),this.c=e},m(e,t){for(let n=0;n<r.length;n+=1)r[n].m(e,t);d(e,n,t)},p(e,[t]){if(/*endpoint, lang, session, JSON, bonuses*/15&t){let i;for(o=/*bonuses*/e[3],i=0;i<o.length;i+=1){const s=be(e,o,i);r[i]?r[i].p(s,t):(r[i]=xe(s),r[i].c(),r[i].m(n.parentNode,n))}for(;i<r.length;i+=1)r[i].d(1);r.length=o.length}},i:e,o:e,d(e){h(r,e),e&&p(n)}}}function $e(e,t,n){let o,{endpoint:r=""}=t,{lang:i=""}=t,{session:s=""}=t,a=[];const l=async()=>{if(!r||!i)return;const e=await Q(r,i,s);n(3,a=e.items),u()},c=le({WageringProgressUpdate:e=>{n(3,a=a.map((t=>{let n=null==e?void 0:e.items[t.bonusWalletID];return Object.assign(Object.assign({},t),{currentLevel:n})})))}}),u=()=>{if(!a)return;const e={bonusWalletIDs:null==a?void 0:a.map((e=>e.bonusWalletID)).join(","),XSessionId:s},t=`${r}/bonus/wagering/updates?${G(e)}`;o=ae(t,o,c)};return S((()=>()=>{se(o,c),o=null})),e.$$set=e=>{"endpoint"in e&&n(0,r=e.endpoint),"lang"in e&&n(1,i=e.lang),"session"in e&&n(2,s=e.session)},e.$$.update=()=>{/*endpoint*/1&e.$$.dirty&&r&&l(),/*lang*/2&e.$$.dirty&&i&&l(),/*session*/4&e.$$.dirty&&s&&l()},[r,i,s,a]}!customElements.get("casino-wagering-bonus")&&customElements.define("casino-wagering-bonus",class extends H{constructor(e){super(),this.shadowRoot.innerHTML="<style>:host{font-family:system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';font-size:24px;line-height:28px;font-style:normal}*,*::before,*::after{margin:0;padding:0;list-style:none;text-decoration:none;outline:none;box-sizing:border-box}button{font-size:24px;line-height:28px}hr{margin:18px 0;border-top:1px solid #00AEEF}section.layout-horizental{display:flex;flex-direction:row}section.layout-horizental.space-between{justify-content:space-between}.title{font-weight:700}.terms{font-size:18px;line-height:21px}.icon{width:24px;height:24px;vertical-align:bottom}.Root{border:1px solid #00AEEF;max-width:1300px;padding:28px 0}.Root>div{padding:0 28px}.Root>div:nth-child(1){flex:55%}.Root>div:nth-child(2){flex:45%;border-left:1px solid #00AEEF}.BonusInfoTitle{color:#59CA00}.BonusInfoExpireDate{color:#DC0D1F}.BonusInfoDescription{margin-top:20px}.StatusBeforeClaimedInfoPeriod{margin-top:18px}.StatusBeforeClaimed>div:nth-child(1){flex:40%}.StatusBeforeClaimed>div:nth-child(2){flex:60%}.StatusBeforeClaimedCommand button{width:100%;background:#00AEEF;border:1px solid #00AEEF;color:#FFFFFF;cursor:pointer;font-weight:400;padding:30px}.StatusBeforeClaimedCommandTerms{margin-top:10px;text-align:center}.StatusBeforeClaimedCommandTerms a{color:#000000}.LevelStatus{text-align:center;margin-top:10px}.BonusTypeWrapper{margin-left:30px}.BonusType>div{margin-bottom:20px}.BonusTypeRemaining{color:#00AEEF}.BonusTypeGot{color:#7884A0}.RewardsTopBarTitle{color:#252631;padding-bottom:12px}.BonusRewardsLevels>div{margin-top:5px;padding:12px 0}.SupportsWrapper{margin-top:35px}.SupportsWrapper div{margin-top:15px}</style>",N(this,{target:this.shadowRoot,props:T(this.attributes),customElement:!0},we,ye,s,{rawbonus:11,endpoint:12,lang:13,session:14},null),e&&(e.target&&d(e.target,this,e.anchor),e.props&&(this.$set(e.props),O()))}static get observedAttributes(){return["rawbonus","endpoint","lang","session"]}get rawbonus(){return this.$$.ctx[11]}set rawbonus(e){this.$$set({rawbonus:e}),O()}get endpoint(){return this.$$.ctx[12]}set endpoint(e){this.$$set({endpoint:e}),O()}get lang(){return this.$$.ctx[13]}set lang(e){this.$$set({lang:e}),O()}get session(){return this.$$.ctx[14]}set session(e){this.$$set({session:e}),O()}});class Te extends H{constructor(e){super(),this.shadowRoot.innerHTML="<style>:host{font-family:system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'}*,*::before,*::after{margin:0;padding:0;list-style:none;text-decoration:none;outline:none;box-sizing:border-box}casino-wagering-bonus::part(Root){margin-bottom:30px}</style>",N(this,{target:this.shadowRoot,props:T(this.attributes),customElement:!0},$e,Ee,s,{endpoint:0,lang:1,session:2},null),e&&(e.target&&d(e.target,this,e.anchor),e.props&&(this.$set(e.props),O()))}static get observedAttributes(){return["endpoint","lang","session"]}get endpoint(){return this.$$.ctx[0]}set endpoint(e){this.$$set({endpoint:e}),O()}get lang(){return this.$$.ctx[1]}set lang(e){this.$$set({lang:e}),O()}get session(){return this.$$.ctx[2]}set session(e){this.$$set({session:e}),O()}}return!customElements.get("casino-wagering-bonuses-controller")&&customElements.define("casino-wagering-bonuses-controller",Te),Te}));
175
+ //# sourceMappingURL=casino-wagering-bonuses-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"casino-wagering-bonuses-controller.js","sources":["../../../node_modules/svelte/internal/index.mjs","../../casino-wagering-bonus-progress/src/CasinoWageringBonusProgress.svelte","../../casino-wagering-bonus-progress/src/index.ts","../../casino-wagering-bonus/src/images/clock.svg","../../casino-wagering-bonus/src/images/level.svg","../../casino-wagering-bonus/src/util.js","../../casino-wagering-bonus/src/business.js","../../../node_modules/event-source-polyfill/src/eventsource.js","../../casino-wagering-bonus/src/message.js","../../casino-wagering-bonus/src/CasinoWageringBonus.svelte","../../casino-wagering-bonus/src/images/clock-expire.svg","../src/CasinoWageringBonusesController.svelte","../../casino-wagering-bonus/src/index.ts","../src/index.ts"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n if (!src_url_equal_anchor) {\n src_url_equal_anchor = document.createElement('a');\n }\n src_url_equal_anchor.href = url;\n return element_src === src_url_equal_anchor.href;\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\nfunction get_all_dirty_from_scope($$scope) {\n if ($$scope.ctx.length > 32) {\n const dirty = [];\n const length = $$scope.ctx.length / 32;\n for (let i = 0; i < length; i++) {\n dirty[i] = -1;\n }\n return dirty;\n }\n return -1;\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\nfunction start_hydrating() {\n is_hydrating = true;\n}\nfunction end_hydrating() {\n is_hydrating = false;\n}\nfunction upper_bound(low, high, key, value) {\n // Return first index of value larger than input value in the range [low, high)\n while (low < high) {\n const mid = low + ((high - low) >> 1);\n if (key(mid) <= value) {\n low = mid + 1;\n }\n else {\n high = mid;\n }\n }\n return low;\n}\nfunction init_hydrate(target) {\n if (target.hydrate_init)\n return;\n target.hydrate_init = true;\n // We know that all children have claim_order values since the unclaimed have been detached if target is not <head>\n let children = target.childNodes;\n // If target is <head>, there may be children without claim_order\n if (target.nodeName === 'HEAD') {\n const myChildren = [];\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n if (node.claim_order !== undefined) {\n myChildren.push(node);\n }\n }\n children = myChildren;\n }\n /*\n * Reorder claimed children optimally.\n * We can reorder claimed children optimally by finding the longest subsequence of\n * nodes that are already claimed in order and only moving the rest. The longest\n * subsequence subsequence of nodes that are claimed in order can be found by\n * computing the longest increasing subsequence of .claim_order values.\n *\n * This algorithm is optimal in generating the least amount of reorder operations\n * possible.\n *\n * Proof:\n * We know that, given a set of reordering operations, the nodes that do not move\n * always form an increasing subsequence, since they do not move among each other\n * meaning that they must be already ordered among each other. Thus, the maximal\n * set of nodes that do not move form a longest increasing subsequence.\n */\n // Compute longest increasing subsequence\n // m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n const m = new Int32Array(children.length + 1);\n // Predecessor indices + 1\n const p = new Int32Array(children.length);\n m[0] = -1;\n let longest = 0;\n for (let i = 0; i < children.length; i++) {\n const current = children[i].claim_order;\n // Find the largest subsequence length such that it ends in a value less than our current value\n // upper_bound returns first greater value, so we subtract one\n // with fast path for when we are on the current longest subsequence\n const seqLen = ((longest > 0 && children[m[longest]].claim_order <= current) ? longest + 1 : upper_bound(1, longest, idx => children[m[idx]].claim_order, current)) - 1;\n p[i] = m[seqLen] + 1;\n const newLen = seqLen + 1;\n // We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n m[newLen] = i;\n longest = Math.max(newLen, longest);\n }\n // The longest increasing subsequence of nodes (initially reversed)\n const lis = [];\n // The rest of the nodes, nodes that will be moved\n const toMove = [];\n let last = children.length - 1;\n for (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n lis.push(children[cur - 1]);\n for (; last >= cur; last--) {\n toMove.push(children[last]);\n }\n last--;\n }\n for (; last >= 0; last--) {\n toMove.push(children[last]);\n }\n lis.reverse();\n // We sort the nodes being moved to guarantee that their insertion order matches the claim order\n toMove.sort((a, b) => a.claim_order - b.claim_order);\n // Finally, we move the nodes\n for (let i = 0, j = 0; i < toMove.length; i++) {\n while (j < lis.length && toMove[i].claim_order >= lis[j].claim_order) {\n j++;\n }\n const anchor = j < lis.length ? lis[j] : null;\n target.insertBefore(toMove[i], anchor);\n }\n}\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction append_styles(target, style_sheet_id, styles) {\n const append_styles_to = get_root_for_style(target);\n if (!append_styles_to.getElementById(style_sheet_id)) {\n const style = element('style');\n style.id = style_sheet_id;\n style.textContent = styles;\n append_stylesheet(append_styles_to, style);\n }\n}\nfunction get_root_for_style(node) {\n if (!node)\n return document;\n const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n if (root && root.host) {\n return root;\n }\n return node.ownerDocument;\n}\nfunction append_empty_stylesheet(node) {\n const style_element = element('style');\n append_stylesheet(get_root_for_style(node), style_element);\n return style_element.sheet;\n}\nfunction append_stylesheet(node, style) {\n append(node.head || node, style);\n}\nfunction append_hydration(target, node) {\n if (is_hydrating) {\n init_hydrate(target);\n if ((target.actual_end_child === undefined) || ((target.actual_end_child !== null) && (target.actual_end_child.parentElement !== target))) {\n target.actual_end_child = target.firstChild;\n }\n // Skip nodes of undefined ordering\n while ((target.actual_end_child !== null) && (target.actual_end_child.claim_order === undefined)) {\n target.actual_end_child = target.actual_end_child.nextSibling;\n }\n if (node !== target.actual_end_child) {\n // We only insert if the ordering of this node should be modified or the parent node is not target\n if (node.claim_order !== undefined || node.parentNode !== target) {\n target.insertBefore(node, target.actual_end_child);\n }\n }\n else {\n target.actual_end_child = node.nextSibling;\n }\n }\n else if (node.parentNode !== target || node.nextSibling !== null) {\n target.appendChild(node);\n }\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction insert_hydration(target, node, anchor) {\n if (is_hydrating && !anchor) {\n append_hydration(target, node);\n }\n else if (node.parentNode !== target || node.nextSibling != anchor) {\n target.insertBefore(node, anchor || null);\n }\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction trusted(fn) {\n return function (event) {\n // @ts-ignore\n if (event.isTrusted)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction init_claim_info(nodes) {\n if (nodes.claim_info === undefined) {\n nodes.claim_info = { last_index: 0, total_claimed: 0 };\n }\n}\nfunction claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) {\n // Try to find nodes in an order such that we lengthen the longest increasing subsequence\n init_claim_info(nodes);\n const resultNode = (() => {\n // We first try to find an element after the previous one\n for (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n return node;\n }\n }\n // Otherwise, we try to find one before\n // We iterate in reverse so that we don't go too far back\n for (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n else if (replacement === undefined) {\n // Since we spliced before the last_index, we decrease it\n nodes.claim_info.last_index--;\n }\n return node;\n }\n }\n // If we can't find any matching node, we create a new one\n return createNode();\n })();\n resultNode.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n return resultNode;\n}\nfunction claim_element_base(nodes, name, attributes, create_element) {\n return claim_node(nodes, (node) => node.nodeName === name, (node) => {\n const remove = [];\n for (let j = 0; j < node.attributes.length; j++) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n remove.forEach(v => node.removeAttribute(v));\n return undefined;\n }, () => create_element(name));\n}\nfunction claim_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, element);\n}\nfunction claim_svg_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, svg_element);\n}\nfunction claim_text(nodes, data) {\n return claim_node(nodes, (node) => node.nodeType === 3, (node) => {\n const dataStr = '' + data;\n if (node.data.startsWith(dataStr)) {\n if (node.data.length !== dataStr.length) {\n return node.splitText(dataStr.length);\n }\n }\n else {\n node.data = dataStr;\n }\n }, () => text(data), true // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n );\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction find_comment(nodes, text, start) {\n for (let i = start; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n return i;\n }\n }\n return nodes.length;\n}\nfunction claim_html_tag(nodes, is_svg) {\n // find html opening tag\n const start_index = find_comment(nodes, 'HTML_TAG_START', 0);\n const end_index = find_comment(nodes, 'HTML_TAG_END', start_index);\n if (start_index === end_index) {\n return new HtmlTagHydration(undefined, is_svg);\n }\n init_claim_info(nodes);\n const html_tag_nodes = nodes.splice(start_index, end_index - start_index + 1);\n detach(html_tag_nodes[0]);\n detach(html_tag_nodes[html_tag_nodes.length - 1]);\n const claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n for (const n of claimed_nodes) {\n n.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n }\n return new HtmlTagHydration(claimed_nodes, is_svg);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.wholeText !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n if (value === null) {\n node.style.removeProperty(key);\n }\n else {\n node.style.setProperty(key, value, important ? 'important' : '');\n }\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n select.selectedIndex = -1; // no option should be selected\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,<script>onresize=function(){parent.postMessage(0,'*')}</script>\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, bubbles, cancelable, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor(is_svg = false) {\n this.is_svg = false;\n this.is_svg = is_svg;\n this.e = this.n = null;\n }\n c(html) {\n this.h(html);\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n if (this.is_svg)\n this.e = svg_element(target.nodeName);\n else\n this.e = element(target.nodeName);\n this.t = target;\n this.c(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nclass HtmlTagHydration extends HtmlTag {\n constructor(claimed_nodes, is_svg = false) {\n super(is_svg);\n this.e = this.n = null;\n this.l = claimed_nodes;\n }\n c(html) {\n if (this.l) {\n this.n = this.l;\n }\n else {\n super.c(html);\n }\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert_hydration(this.t, this.n[i], anchor);\n }\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\n\n// we need to store the information for multiple documents because a Svelte application could also contain iframes\n// https://github.com/sveltejs/svelte/issues/3624\nconst managed_styles = new Map();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_style_information(doc, node) {\n const info = { stylesheet: append_empty_stylesheet(node), rules: {} };\n managed_styles.set(doc, info);\n return info;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = get_root_for_style(node);\n const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);\n if (!rules[name]) {\n rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n managed_styles.forEach(info => {\n const { stylesheet } = info;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n info.rules = {};\n });\n managed_styles.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail, { cancelable = false } = {}) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail, { cancelable });\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n return !event.defaultPrevented;\n }\n return true;\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n return context;\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\nfunction getAllContexts() {\n return get_current_component().$$.context;\n}\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n // @ts-ignore\n callbacks.slice().forEach(fn => fn.call(this, event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n// for afterUpdates called during the initial onMount, which are called in\n// reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n// dirty_components array and will cause a reentrant call to flush(). Because\n// the flush index is kept outside the function, the reentrant call will pick\n// up where the earlier call left off and go through all dirty components. The\n// current_component value is saved and restored so that the reentrant call will\n// not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n// callback called a second time; the seen_callbacks set, outside the flush()\n// function, guarantees this behavior.\nconst seen_callbacks = new Set();\nlet flushidx = 0; // Do *not* move this inside the flush() function\nfunction flush() {\n const saved_component = current_component;\n do {\n // first, call beforeUpdate functions\n // and update components\n while (flushidx < dirty_components.length) {\n const component = dirty_components[flushidx];\n flushidx++;\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n flushidx = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n seen_callbacks.clear();\n set_current_component(saved_component);\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n started = true;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = (program.b - t);\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n const child_ctx = ctx.slice();\n const { resolved } = info;\n if (info.current === info.then) {\n child_ctx[info.value] = resolved;\n }\n if (info.current === info.catch) {\n child_ctx[info.error] = resolved;\n }\n info.block.p(child_ctx, dirty);\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst void_element_names = /^(?:area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/;\nfunction is_void(name) {\n return void_element_names.test(name) || name.toLowerCase() === '!doctype';\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, attrs_to_add) {\n const attributes = Object.assign({}, ...args);\n if (attrs_to_add) {\n const classes_to_add = attrs_to_add.classes;\n const styles_to_add = attrs_to_add.styles;\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n if (styles_to_add) {\n if (attributes.style == null) {\n attributes.style = style_object_to_string(styles_to_add);\n }\n else {\n attributes.style = style_object_to_string(merge_ssr_styles(attributes.style, styles_to_add));\n }\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${value}\"`;\n }\n });\n return str;\n}\nfunction merge_ssr_styles(style_attribute, style_directive) {\n const style_object = {};\n for (const individual_style of style_attribute.split(';')) {\n const colon_index = individual_style.indexOf(':');\n const name = individual_style.slice(0, colon_index).trim();\n const value = individual_style.slice(colon_index + 1).trim();\n if (!name)\n continue;\n style_object[name] = value;\n }\n for (const name in style_directive) {\n const value = style_directive[name];\n if (value) {\n style_object[name] = value;\n }\n else {\n delete style_object[name];\n }\n }\n return style_object;\n}\nconst escaped = {\n '\"': '&quot;',\n \"'\": '&#39;',\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction escape_attribute_value(value) {\n return typeof value === 'string' ? escape(value) : value;\n}\nfunction escape_object(obj) {\n const result = {};\n for (const key in obj) {\n result[key] = escape_attribute_value(obj[key]);\n }\n return result;\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots, context) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(context || (parent_component ? parent_component.$$.context : [])),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, $$slots, context);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n const assignment = (boolean && value === true) ? '' : `=\"${escape_attribute_value(value.toString())}\"`;\n return ` ${name}${assignment}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\nfunction style_object_to_string(style_object) {\n return Object.keys(style_object)\n .filter(key => style_object[key])\n .map(key => `${key}: ${style_object[key]};`)\n .join(' ');\n}\nfunction add_styles(style_object) {\n const styles = style_object_to_string(style_object);\n return styles ? ` style=\"${styles}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n start_hydrating();\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n end_hydrating();\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.48.0' }, detail), { bubbles: true }));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction append_hydration_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append_hydration(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction insert_hydration_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert_hydration(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\nfunction validate_dynamic_element(tag) {\n const is_string = typeof tag === 'string';\n if (tag && !is_string) {\n throw new Error('<svelte:element> expects \"this\" attribute to be a string.');\n }\n}\nfunction validate_void_dynamic_element(tag) {\n if (tag && is_void(tag)) {\n throw new Error(`<svelte:element this=\"${tag}\"> is self-closing and cannot have content.`);\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * <script lang=\"ts\">\n * \timport { MyComponent } from \"component-library\";\n * </script>\n * <MyComponent foo={'bar'} />\n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to separate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, HtmlTagHydration, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_styles, add_transform, afterUpdate, append, append_dev, append_empty_stylesheet, append_hydration, append_hydration_dev, append_styles, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_html_tag, claim_space, claim_svg_element, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, end_hydrating, escape, escape_attribute_value, escape_object, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getAllContexts, getContext, get_all_dirty_from_scope, get_binding_group_value, get_current_component, get_custom_elements_slots, get_root_for_style, get_slot_changes, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, identity, init, insert, insert_dev, insert_hydration, insert_hydration_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, is_void, listen, listen_dev, loop, loop_guard, merge_ssr_styles, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, src_url_equal, start_hydrating, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, trusted, update_await_block_branch, update_keyed_each, update_slot, update_slot_base, validate_component, validate_dynamic_element, validate_each_argument, validate_each_keys, validate_slots, validate_store, validate_void_dynamic_element, xlink_attr };\n","<svelte:options tag={null} />\n<script lang=\"ts\">\n\n export let percent: string = ''\n export let status: string = ''\n\n enum BonusStatus {\n BeforeClaimed = 'BeforeClaimed',\n InProgress = 'active',\n ForfeitedOrCompleted = 'ForfeitedOrCompleted',\n }\n\n // svg\n $: size = 200;\n $: ringStrokeWidth = size / 7.5\n $: radius = size / 2 - ringStrokeWidth / 2;\n $: center = size / 2;\n \n $: circumference = radius * 2 * Math.PI;\n</script>\n\n<svg\n {...{\n width: size,\n height: size,\n }}\n>\n <circle {...{\n class: \"ring\",\n r: radius,\n cx: center,\n cy: center,\n \"stroke-width\": `${ringStrokeWidth}px`,\n }} />\n <circle {...{\n class: `ring ring-progress ${status === BonusStatus.InProgress ? \"active\" : \"\"}`,\n r: radius,\n cx: center,\n cy: center,\n \"stroke-width\": `${ringStrokeWidth}px`,\n \"stroke-dasharray\": `${circumference} ${circumference}`,\n \"stroke-dashoffset\": circumference - Number(percent) / 100 * circumference,\n }} />\n\n <circle {...{\n class: `center ${status === BonusStatus.InProgress ? \"active\" : \"\"}`,\n r: radius - ringStrokeWidth / 2 - 3,\n cx: center,\n cy: center,\n }} />\n\n <text {...{\n x: center,\n y: center,\n }}>\n {percent}%\n </text>\n\n</svg>\n\n<style lang=\"scss\">\n :host {\n font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';\n }\n\n *,\n *::before,\n *::after {\n margin: 0;\n padding: 0;\n list-style: none;\n text-decoration: none;\n outline: none;\n box-sizing: border-box;\n }\n\n\n text {\n fill: #FFFFFF;\n text-anchor: middle;\n dominant-baseline: middle;\n font-style: normal;\n font-weight: 700;\n font-size: 36px;\n }\n\n circle.ring {\n stroke: #F2F4F6;\n fill: transparent;\n }\n\n circle.ring-progress {\n transition: 0.35s stroke-dashoffset;\n // axis compensation\n stroke: #C4C4C4;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n\n &.active {\n stroke: #00AEEF;\n }\n }\n\n circle.center {\n fill: #C4C4C4;\n &.active {\n fill: #00AEEF;\n }\n }\n</style>\n","import CasinoWageringBonusProgress from './CasinoWageringBonusProgress.svelte';\n\n!customElements.get('casino-wagering-bonus-progress') && customElements.define('casino-wagering-bonus-progress', CasinoWageringBonusProgress);\nexport default CasinoWageringBonusProgress;\n","var img = \"data:image/svg+xml,%3csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cg clip-path='url(%23clip0_3490_338)'%3e %3cpath d='M12.5 0C5.60762 0 0 5.60762 0 12.5C0 19.3924 5.60762 25 12.5 25C19.3924 25 25 19.3924 25 12.5C25 5.60762 19.3924 0 12.5 0ZM12.5 23.4375C6.46896 23.4375 1.56251 18.531 1.56251 12.5C1.56251 6.46896 6.46896 1.56251 12.5 1.56251C18.531 1.56251 23.4375 6.46896 23.4375 12.5C23.4375 18.531 18.531 23.4375 12.5 23.4375V23.4375Z' fill='%2300AEEF'/%3e %3cpath d='M13.2813 4.6875H11.7188V12.8235L16.6351 17.7398L17.7399 16.6351L13.2813 12.1765V4.6875Z' fill='%2300AEEF'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_3490_338'%3e %3crect width='25' height='25' fill='white'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cg clip-path='url(%23clip0_3490_347)'%3e %3cpath d='M12.5002 7.5C11.5797 7.5 10.8335 8.2462 10.8335 9.16667V23.3333C10.8335 24.2538 11.5797 25 12.5002 25C13.4206 25 14.1668 24.2538 14.1668 23.3333V9.16667C14.1668 8.2462 13.4206 7.5 12.5002 7.5ZM13.3335 23.3333C13.3335 23.7936 12.9604 24.1667 12.5002 24.1667C12.0399 24.1667 11.6668 23.7936 11.6668 23.3333V9.16667C11.6668 8.70641 12.0399 8.33333 12.5002 8.33333C12.9604 8.33333 13.3335 8.70641 13.3335 9.16667V23.3333Z' fill='%2300AEEF'/%3e %3cpath d='M7.08317 12.5C6.1627 12.5 5.4165 13.2462 5.4165 14.1667V23.3333C5.4165 24.2538 6.1627 25 7.08317 25C8.00364 25 8.74984 24.2538 8.74984 23.3333V14.1667C8.74984 13.2462 8.00364 12.5 7.08317 12.5ZM7.9165 23.3333C7.9165 23.7936 7.54343 24.1667 7.08317 24.1667C6.62291 24.1667 6.24984 23.7936 6.24984 23.3333V14.1667C6.24984 13.7064 6.62291 13.3333 7.08317 13.3333C7.54343 13.3333 7.9165 13.7064 7.9165 14.1667V23.3333Z' fill='%2300AEEF'/%3e %3cpath d='M1.66667 18.333C0.746198 18.333 0 19.0792 0 19.9997V23.333C0 24.2535 0.746198 24.9997 1.66667 24.9997C2.58714 24.9997 3.33333 24.2535 3.33333 23.333V19.9997C3.33333 19.0792 2.58714 18.333 1.66667 18.333ZM2.5 23.333C2.5 23.7933 2.12693 24.1663 1.66667 24.1663C1.20641 24.1663 0.833333 23.7933 0.833333 23.333V19.9997C0.833333 19.5394 1.20641 19.1663 1.66667 19.1663C2.12693 19.1663 2.5 19.5394 2.5 19.9997V23.333Z' fill='%2300AEEF'/%3e %3cpath d='M17.9167 2.5C16.9962 2.5 16.25 3.2462 16.25 4.16667V23.3333C16.25 24.2538 16.9962 25 17.9167 25C18.8371 25 19.5833 24.2538 19.5833 23.3333V4.16667C19.5833 3.2462 18.8371 2.5 17.9167 2.5ZM18.75 23.3333C18.75 23.7936 18.3769 24.1667 17.9167 24.1667C17.4564 24.1667 17.0833 23.7936 17.0833 23.3333V4.16667C17.0833 3.70641 17.4564 3.33333 17.9167 3.33333C18.3769 3.33333 18.75 3.70641 18.75 4.16667V23.3333Z' fill='%2300AEEF'/%3e %3cpath d='M23.3332 0C22.4127 0 21.6665 0.746198 21.6665 1.66667V23.3333C21.6665 24.2538 22.4127 25 23.3332 25C24.2536 25 24.9998 24.2538 24.9998 23.3333V1.66667C24.9998 0.746198 24.2536 0 23.3332 0ZM24.1665 23.3333C24.1665 23.7936 23.7934 24.1667 23.3332 24.1667C22.8729 24.1667 22.4998 23.7936 22.4998 23.3333V1.66667C22.4998 1.20641 22.8729 0.833333 23.3332 0.833333C23.7934 0.833333 24.1665 1.20641 24.1665 1.66667V23.3333Z' fill='%2300AEEF'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_3490_347'%3e %3crect width='25' height='25' fill='white'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e\";\n export default img;","export const cvtParamsToString = (params) => Object.keys(params).map(k => `${k}=${params[k]}`).join('&')\n\nexport function subtr(num1,num2){ \n var r1,r2,m,n; \n try{r1=num1.toString().split(\".\")[1].length}catch(e){r1=0} \n try{r2=num2.toString().split(\".\")[1].length}catch(e){r2=0} \n m=Math.pow(10,Math.max(r1,r2)); \n n=(r1>=r2)?r1:r2; \n return ((num1*m-num2*m)/m).toFixed(n); \n }\n\n\nexport const getModAndRemainder = (n, m) => ({\n remainder: n % m,\n quotient: Math.floor(n/m)\n})\n\nexport const diffFromNow = (rawtime) => {\n const timeNow = new Date()\n const time = new Date(rawtime)\n \n const diff = (time - timeNow) / (1000 * 60)\n\n const { quotient: day, remainder: diffInDay } = getModAndRemainder(diff, 1440)\n const { quotient: hour, remainder: diffInHour } = getModAndRemainder(diffInDay, 60)\n const minute = Math.floor(diffInHour)\n\n const grace = (value) => value < 10 ? `0${value}` : value\n\n const units = [\n {\n value: day,\n symbol: 'd'\n },\n {\n value: hour,\n symbol: 'h'\n },\n {\n value: minute,\n symbol: 'm'\n },\n ]\n \n return units\n .map(unit => grace(unit.value) + unit.symbol)\n .join(' ')\n\n}\n\nexport const classWithPart = (partAndClass, extraClass = '') => ({\n part: partAndClass,\n class: [partAndClass, extraClass].join(' '),\n})\n\nexport const fetchBase = async (url, options = {}) => {\n let res\n res = await fetch(url, options)\n res = await res.json()\n return res\n}","import { subtr, diffFromNow, fetchBase } from './util';\n\nexport const fetchApi = {\n\n list: async (endpoint, lang, session = '', limit = '50', offset = '0') => {\n\n const params = {\n pagination: `limit=${limit},offset=${offset}`,\n language: lang\n }\n\n const url = new URL(endpoint + \"/bonus/wagering\")\n\n Object.keys(params).map(k => {\n url.searchParams.append(k, params[k])\n })\n\n return await fetchBase(url, {\n headers: {\n 'x-SessionId': session\n }\n })\n },\n start: async (endpoint) => {\n return await fetchBase(endpoint + \"/wagering-start\", {\n method: \"POST\",\n })\n },\n item: async (endpoint, id) => {\n return await fetchBase(endpoint + \"/wagering-item/\" + id)\n }\n}\n\nexport const getCurrencySymbol = (currency) => {\n switch (currency) {\n case 'EUR': return '€'\n default: return ''\n } \n}\n\nexport const getTitle = (l) => l?.bonuses[0]?.title\nexport const getRewards = (bonus, levels, BonusStatus) => {\n\n const { status, currentLevel } = bonus\n\n const index = currentLevel?.level - 1\n\n const getTitleByIndex = (_i) => getTitle(levels[_i])\n\n const lastIndex = levels.length - 1\n\n const rewards = []\n\n if(\n status === BonusStatus.BeforeClaimed\n ){\n rewards.push(`First Level: ${getTitleByIndex(0)}`)\n rewards.push(`Next Level: ${getTitleByIndex(1)}`)\n \n }else if(\n status !== BonusStatus.BeforeClaimed && \n status !== BonusStatus.ForfeitedOrCompleted\n ){\n rewards.push(`Current Level: ${getTitleByIndex(index)}`)\n index + 1 <= lastIndex && (\n rewards.push(`Next Level: ${getTitleByIndex(index + 1)}`)\n )\n }else if(\n status === BonusStatus.ForfeitedOrCompleted\n ){\n rewards.push(`Last Level: ${getTitleByIndex(lastIndex)}`)\n rewards.push(`Previous: ${getTitleByIndex(lastIndex - 1)}`)\n }\n\n return rewards\n}\n\nexport const getLevels = (sourceLevels) => {\n const levels = []\n sourceLevels.map(l => {\n const { maxRepeats, completedTime, ...rest } = l\n for(let i = 0; i < maxRepeats; i++) {\n levels.push({\n ...rest,\n completedTime: ''\n })\n }\n })\n return levels\n}\n\nexport const getBonusTypeInfo = (bonus, wagered, levels, BonusStatus, BonusType) => {\n\n const currency = getCurrencySymbol(bonus.currentLevel.currency)\n\n return {\n target: (() => {\n switch (bonus.status) {\n case BonusStatus.ForfeitedOrCompleted:\n return 'This bonus is completed or expired'\n case BonusStatus.InProgress: \n return getTitle(levels[bonus.currentLevel.level - 1])\n }\n })(),\n remaining: (() => {\n switch (bonus.type) {\n case BonusType.Money:\n return `Remaining: ${currency}${bonus.currentLevel.gap}`\n case BonusType.BetCount:\n return `Bets Remaining: ${bonus.currentLevel.gap} bets`\n }\n })(),\n got: (() => {\n switch (bonus.type) {\n case BonusType.Money:\n return `Wagered: ${currency}${wagered}`\n case BonusType.BetCount:\n return `Bets Placed: ${wagered} bets`\n }\n })(),\n }\n}\n\nexport const getInitAfterClaimed = (bonus, levels, BonusStatus, BonusType) => {\n\n const wagered = Number(subtr(bonus.currentLevel.levelIncrement, bonus.currentLevel.gap))\n \n return {\n percent: String(Math.ceil(wagered / bonus.currentLevel.levelIncrement * 100)),\n bonusTypeInfo: getBonusTypeInfo(bonus, wagered, levels, BonusStatus, BonusType),\n levelsCurrent: {\n text: bonus.currentLevel.level,\n textWithLengh: `${bonus.currentLevel.level}/${levels.length}`\n }\n }\n}","/** @license\r\n * eventsource.js\r\n * Available under MIT License (MIT)\r\n * https://github.com/Yaffle/EventSource/\r\n */\r\n\r\n/*jslint indent: 2, vars: true, plusplus: true */\r\n/*global setTimeout, clearTimeout */\r\n\r\n(function (global) {\r\n \"use strict\";\r\n\r\n var setTimeout = global.setTimeout;\r\n var clearTimeout = global.clearTimeout;\r\n var XMLHttpRequest = global.XMLHttpRequest;\r\n var XDomainRequest = global.XDomainRequest;\r\n var ActiveXObject = global.ActiveXObject;\r\n var NativeEventSource = global.EventSource;\r\n\r\n var document = global.document;\r\n var Promise = global.Promise;\r\n var fetch = global.fetch;\r\n var Response = global.Response;\r\n var TextDecoder = global.TextDecoder;\r\n var TextEncoder = global.TextEncoder;\r\n var AbortController = global.AbortController;\r\n\r\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\" && !(\"readyState\" in document) && document.body == null) { // Firefox 2\r\n document.readyState = \"loading\";\r\n window.addEventListener(\"load\", function (event) {\r\n document.readyState = \"complete\";\r\n }, false);\r\n }\r\n\r\n if (XMLHttpRequest == null && ActiveXObject != null) { // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest_in_IE6\r\n XMLHttpRequest = function () {\r\n return new ActiveXObject(\"Microsoft.XMLHTTP\");\r\n };\r\n }\r\n\r\n if (Object.create == undefined) {\r\n Object.create = function (C) {\r\n function F(){}\r\n F.prototype = C;\r\n return new F();\r\n };\r\n }\r\n\r\n if (!Date.now) {\r\n Date.now = function now() {\r\n return new Date().getTime();\r\n };\r\n }\r\n\r\n // see #118 (Promise#finally with polyfilled Promise)\r\n // see #123 (data URLs crash Edge)\r\n // see #125 (CSP violations)\r\n // see pull/#138\r\n // => No way to polyfill Promise#finally\r\n\r\n if (AbortController == undefined) {\r\n var originalFetch2 = fetch;\r\n fetch = function (url, options) {\r\n var signal = options.signal;\r\n return originalFetch2(url, {headers: options.headers, credentials: options.credentials, cache: options.cache}).then(function (response) {\r\n var reader = response.body.getReader();\r\n signal._reader = reader;\r\n if (signal._aborted) {\r\n signal._reader.cancel();\r\n }\r\n return {\r\n status: response.status,\r\n statusText: response.statusText,\r\n headers: response.headers,\r\n body: {\r\n getReader: function () {\r\n return reader;\r\n }\r\n }\r\n };\r\n });\r\n };\r\n AbortController = function () {\r\n this.signal = {\r\n _reader: null,\r\n _aborted: false\r\n };\r\n this.abort = function () {\r\n if (this.signal._reader != null) {\r\n this.signal._reader.cancel();\r\n }\r\n this.signal._aborted = true;\r\n };\r\n };\r\n }\r\n\r\n function TextDecoderPolyfill() {\r\n this.bitsNeeded = 0;\r\n this.codePoint = 0;\r\n }\r\n\r\n TextDecoderPolyfill.prototype.decode = function (octets) {\r\n function valid(codePoint, shift, octetsCount) {\r\n if (octetsCount === 1) {\r\n return codePoint >= 0x0080 >> shift && codePoint << shift <= 0x07FF;\r\n }\r\n if (octetsCount === 2) {\r\n return codePoint >= 0x0800 >> shift && codePoint << shift <= 0xD7FF || codePoint >= 0xE000 >> shift && codePoint << shift <= 0xFFFF;\r\n }\r\n if (octetsCount === 3) {\r\n return codePoint >= 0x010000 >> shift && codePoint << shift <= 0x10FFFF;\r\n }\r\n throw new Error();\r\n }\r\n function octetsCount(bitsNeeded, codePoint) {\r\n if (bitsNeeded === 6 * 1) {\r\n return codePoint >> 6 > 15 ? 3 : codePoint > 31 ? 2 : 1;\r\n }\r\n if (bitsNeeded === 6 * 2) {\r\n return codePoint > 15 ? 3 : 2;\r\n }\r\n if (bitsNeeded === 6 * 3) {\r\n return 3;\r\n }\r\n throw new Error();\r\n }\r\n var REPLACER = 0xFFFD;\r\n var string = \"\";\r\n var bitsNeeded = this.bitsNeeded;\r\n var codePoint = this.codePoint;\r\n for (var i = 0; i < octets.length; i += 1) {\r\n var octet = octets[i];\r\n if (bitsNeeded !== 0) {\r\n if (octet < 128 || octet > 191 || !valid(codePoint << 6 | octet & 63, bitsNeeded - 6, octetsCount(bitsNeeded, codePoint))) {\r\n bitsNeeded = 0;\r\n codePoint = REPLACER;\r\n string += String.fromCharCode(codePoint);\r\n }\r\n }\r\n if (bitsNeeded === 0) {\r\n if (octet >= 0 && octet <= 127) {\r\n bitsNeeded = 0;\r\n codePoint = octet;\r\n } else if (octet >= 192 && octet <= 223) {\r\n bitsNeeded = 6 * 1;\r\n codePoint = octet & 31;\r\n } else if (octet >= 224 && octet <= 239) {\r\n bitsNeeded = 6 * 2;\r\n codePoint = octet & 15;\r\n } else if (octet >= 240 && octet <= 247) {\r\n bitsNeeded = 6 * 3;\r\n codePoint = octet & 7;\r\n } else {\r\n bitsNeeded = 0;\r\n codePoint = REPLACER;\r\n }\r\n if (bitsNeeded !== 0 && !valid(codePoint, bitsNeeded, octetsCount(bitsNeeded, codePoint))) {\r\n bitsNeeded = 0;\r\n codePoint = REPLACER;\r\n }\r\n } else {\r\n bitsNeeded -= 6;\r\n codePoint = codePoint << 6 | octet & 63;\r\n }\r\n if (bitsNeeded === 0) {\r\n if (codePoint <= 0xFFFF) {\r\n string += String.fromCharCode(codePoint);\r\n } else {\r\n string += String.fromCharCode(0xD800 + (codePoint - 0xFFFF - 1 >> 10));\r\n string += String.fromCharCode(0xDC00 + (codePoint - 0xFFFF - 1 & 0x3FF));\r\n }\r\n }\r\n }\r\n this.bitsNeeded = bitsNeeded;\r\n this.codePoint = codePoint;\r\n return string;\r\n };\r\n\r\n // Firefox < 38 throws an error with stream option\r\n var supportsStreamOption = function () {\r\n try {\r\n return new TextDecoder().decode(new TextEncoder().encode(\"test\"), {stream: true}) === \"test\";\r\n } catch (error) {\r\n console.debug(\"TextDecoder does not support streaming option. Using polyfill instead: \" + error);\r\n }\r\n return false;\r\n };\r\n\r\n // IE, Edge\r\n if (TextDecoder == undefined || TextEncoder == undefined || !supportsStreamOption()) {\r\n TextDecoder = TextDecoderPolyfill;\r\n }\r\n\r\n var k = function () {\r\n };\r\n\r\n function XHRWrapper(xhr) {\r\n this.withCredentials = false;\r\n this.readyState = 0;\r\n this.status = 0;\r\n this.statusText = \"\";\r\n this.responseText = \"\";\r\n this.onprogress = k;\r\n this.onload = k;\r\n this.onerror = k;\r\n this.onreadystatechange = k;\r\n this._contentType = \"\";\r\n this._xhr = xhr;\r\n this._sendTimeout = 0;\r\n this._abort = k;\r\n }\r\n\r\n XHRWrapper.prototype.open = function (method, url) {\r\n this._abort(true);\r\n\r\n var that = this;\r\n var xhr = this._xhr;\r\n var state = 1;\r\n var timeout = 0;\r\n\r\n this._abort = function (silent) {\r\n if (that._sendTimeout !== 0) {\r\n clearTimeout(that._sendTimeout);\r\n that._sendTimeout = 0;\r\n }\r\n if (state === 1 || state === 2 || state === 3) {\r\n state = 4;\r\n xhr.onload = k;\r\n xhr.onerror = k;\r\n xhr.onabort = k;\r\n xhr.onprogress = k;\r\n xhr.onreadystatechange = k;\r\n // IE 8 - 9: XDomainRequest#abort() does not fire any event\r\n // Opera < 10: XMLHttpRequest#abort() does not fire any event\r\n xhr.abort();\r\n if (timeout !== 0) {\r\n clearTimeout(timeout);\r\n timeout = 0;\r\n }\r\n if (!silent) {\r\n that.readyState = 4;\r\n that.onabort(null);\r\n that.onreadystatechange();\r\n }\r\n }\r\n state = 0;\r\n };\r\n\r\n var onStart = function () {\r\n if (state === 1) {\r\n //state = 2;\r\n var status = 0;\r\n var statusText = \"\";\r\n var contentType = undefined;\r\n if (!(\"contentType\" in xhr)) {\r\n try {\r\n status = xhr.status;\r\n statusText = xhr.statusText;\r\n contentType = xhr.getResponseHeader(\"Content-Type\");\r\n } catch (error) {\r\n // IE < 10 throws exception for `xhr.status` when xhr.readyState === 2 || xhr.readyState === 3\r\n // Opera < 11 throws exception for `xhr.status` when xhr.readyState === 2\r\n // https://bugs.webkit.org/show_bug.cgi?id=29121\r\n status = 0;\r\n statusText = \"\";\r\n contentType = undefined;\r\n // Firefox < 14, Chrome ?, Safari ?\r\n // https://bugs.webkit.org/show_bug.cgi?id=29658\r\n // https://bugs.webkit.org/show_bug.cgi?id=77854\r\n }\r\n } else {\r\n status = 200;\r\n statusText = \"OK\";\r\n contentType = xhr.contentType;\r\n }\r\n if (status !== 0) {\r\n state = 2;\r\n that.readyState = 2;\r\n that.status = status;\r\n that.statusText = statusText;\r\n that._contentType = contentType;\r\n that.onreadystatechange();\r\n }\r\n }\r\n };\r\n var onProgress = function () {\r\n onStart();\r\n if (state === 2 || state === 3) {\r\n state = 3;\r\n var responseText = \"\";\r\n try {\r\n responseText = xhr.responseText;\r\n } catch (error) {\r\n // IE 8 - 9 with XMLHttpRequest\r\n }\r\n that.readyState = 3;\r\n that.responseText = responseText;\r\n that.onprogress();\r\n }\r\n };\r\n var onFinish = function (type, event) {\r\n if (event == null || event.preventDefault == null) {\r\n event = {\r\n preventDefault: k\r\n };\r\n }\r\n // Firefox 52 fires \"readystatechange\" (xhr.readyState === 4) without final \"readystatechange\" (xhr.readyState === 3)\r\n // IE 8 fires \"onload\" without \"onprogress\"\r\n onProgress();\r\n if (state === 1 || state === 2 || state === 3) {\r\n state = 4;\r\n if (timeout !== 0) {\r\n clearTimeout(timeout);\r\n timeout = 0;\r\n }\r\n that.readyState = 4;\r\n if (type === \"load\") {\r\n that.onload(event);\r\n } else if (type === \"error\") {\r\n that.onerror(event);\r\n } else if (type === \"abort\") {\r\n that.onabort(event);\r\n } else {\r\n throw new TypeError();\r\n }\r\n that.onreadystatechange();\r\n }\r\n };\r\n var onReadyStateChange = function (event) {\r\n if (xhr != undefined) { // Opera 12\r\n if (xhr.readyState === 4) {\r\n if (!(\"onload\" in xhr) || !(\"onerror\" in xhr) || !(\"onabort\" in xhr)) {\r\n onFinish(xhr.responseText === \"\" ? \"error\" : \"load\", event);\r\n }\r\n } else if (xhr.readyState === 3) {\r\n if (!(\"onprogress\" in xhr)) { // testing XMLHttpRequest#responseText too many times is too slow in IE 11\r\n // and in Firefox 3.6\r\n onProgress();\r\n }\r\n } else if (xhr.readyState === 2) {\r\n onStart();\r\n }\r\n }\r\n };\r\n var onTimeout = function () {\r\n timeout = setTimeout(function () {\r\n onTimeout();\r\n }, 500);\r\n if (xhr.readyState === 3) {\r\n onProgress();\r\n }\r\n };\r\n\r\n // XDomainRequest#abort removes onprogress, onerror, onload\r\n if (\"onload\" in xhr) {\r\n xhr.onload = function (event) {\r\n onFinish(\"load\", event);\r\n };\r\n }\r\n if (\"onerror\" in xhr) {\r\n xhr.onerror = function (event) {\r\n onFinish(\"error\", event);\r\n };\r\n }\r\n // improper fix to match Firefox behaviour, but it is better than just ignore abort\r\n // see https://bugzilla.mozilla.org/show_bug.cgi?id=768596\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=880200\r\n // https://code.google.com/p/chromium/issues/detail?id=153570\r\n // IE 8 fires \"onload\" without \"onprogress\r\n if (\"onabort\" in xhr) {\r\n xhr.onabort = function (event) {\r\n onFinish(\"abort\", event);\r\n };\r\n }\r\n\r\n if (\"onprogress\" in xhr) {\r\n xhr.onprogress = onProgress;\r\n }\r\n\r\n // IE 8 - 9 (XMLHTTPRequest)\r\n // Opera < 12\r\n // Firefox < 3.5\r\n // Firefox 3.5 - 3.6 - ? < 9.0\r\n // onprogress is not fired sometimes or delayed\r\n // see also #64 (significant lag in IE 11)\r\n if (\"onreadystatechange\" in xhr) {\r\n xhr.onreadystatechange = function (event) {\r\n onReadyStateChange(event);\r\n };\r\n }\r\n\r\n if (\"contentType\" in xhr || !(\"ontimeout\" in XMLHttpRequest.prototype)) {\r\n url += (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + \"padding=true\";\r\n }\r\n xhr.open(method, url, true);\r\n\r\n if (\"readyState\" in xhr) {\r\n // workaround for Opera 12 issue with \"progress\" events\r\n // #91 (XMLHttpRequest onprogress not fired for streaming response in Edge 14-15-?)\r\n timeout = setTimeout(function () {\r\n onTimeout();\r\n }, 0);\r\n }\r\n };\r\n XHRWrapper.prototype.abort = function () {\r\n this._abort(false);\r\n };\r\n XHRWrapper.prototype.getResponseHeader = function (name) {\r\n return this._contentType;\r\n };\r\n XHRWrapper.prototype.setRequestHeader = function (name, value) {\r\n var xhr = this._xhr;\r\n if (\"setRequestHeader\" in xhr) {\r\n xhr.setRequestHeader(name, value);\r\n }\r\n };\r\n XHRWrapper.prototype.getAllResponseHeaders = function () {\r\n // XMLHttpRequest#getAllResponseHeaders returns null for CORS requests in Firefox 3.6.28\r\n return this._xhr.getAllResponseHeaders != undefined ? this._xhr.getAllResponseHeaders() || \"\" : \"\";\r\n };\r\n XHRWrapper.prototype.send = function () {\r\n // loading indicator in Safari < ? (6), Chrome < 14, Firefox\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=736723\r\n if ((!(\"ontimeout\" in XMLHttpRequest.prototype) || (!(\"sendAsBinary\" in XMLHttpRequest.prototype) && !(\"mozAnon\" in XMLHttpRequest.prototype))) &&\r\n document != undefined &&\r\n document.readyState != undefined &&\r\n document.readyState !== \"complete\") {\r\n var that = this;\r\n that._sendTimeout = setTimeout(function () {\r\n that._sendTimeout = 0;\r\n that.send();\r\n }, 4);\r\n return;\r\n }\r\n\r\n var xhr = this._xhr;\r\n // withCredentials should be set after \"open\" for Safari and Chrome (< 19 ?)\r\n if (\"withCredentials\" in xhr) {\r\n xhr.withCredentials = this.withCredentials;\r\n }\r\n try {\r\n // xhr.send(); throws \"Not enough arguments\" in Firefox 3.0\r\n xhr.send(undefined);\r\n } catch (error1) {\r\n // Safari 5.1.7, Opera 12\r\n throw error1;\r\n }\r\n };\r\n\r\n function toLowerCase(name) {\r\n return name.replace(/[A-Z]/g, function (c) {\r\n return String.fromCharCode(c.charCodeAt(0) + 0x20);\r\n });\r\n }\r\n\r\n function HeadersPolyfill(all) {\r\n // Get headers: implemented according to mozilla's example code: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders#Example\r\n var map = Object.create(null);\r\n var array = all.split(\"\\r\\n\");\r\n for (var i = 0; i < array.length; i += 1) {\r\n var line = array[i];\r\n var parts = line.split(\": \");\r\n var name = parts.shift();\r\n var value = parts.join(\": \");\r\n map[toLowerCase(name)] = value;\r\n }\r\n this._map = map;\r\n }\r\n HeadersPolyfill.prototype.get = function (name) {\r\n return this._map[toLowerCase(name)];\r\n };\r\n\r\n if (XMLHttpRequest != null && XMLHttpRequest.HEADERS_RECEIVED == null) { // IE < 9, Firefox 3.6\r\n XMLHttpRequest.HEADERS_RECEIVED = 2;\r\n }\r\n\r\n function XHRTransport() {\r\n }\r\n\r\n XHRTransport.prototype.open = function (xhr, onStartCallback, onProgressCallback, onFinishCallback, url, withCredentials, headers) {\r\n xhr.open(\"GET\", url);\r\n var offset = 0;\r\n xhr.onprogress = function () {\r\n var responseText = xhr.responseText;\r\n var chunk = responseText.slice(offset);\r\n offset += chunk.length;\r\n onProgressCallback(chunk);\r\n };\r\n xhr.onerror = function (event) {\r\n event.preventDefault();\r\n onFinishCallback(new Error(\"NetworkError\"));\r\n };\r\n xhr.onload = function () {\r\n onFinishCallback(null);\r\n };\r\n xhr.onabort = function () {\r\n onFinishCallback(null);\r\n };\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) {\r\n var status = xhr.status;\r\n var statusText = xhr.statusText;\r\n var contentType = xhr.getResponseHeader(\"Content-Type\");\r\n var headers = xhr.getAllResponseHeaders();\r\n onStartCallback(status, statusText, contentType, new HeadersPolyfill(headers));\r\n }\r\n };\r\n xhr.withCredentials = withCredentials;\r\n for (var name in headers) {\r\n if (Object.prototype.hasOwnProperty.call(headers, name)) {\r\n xhr.setRequestHeader(name, headers[name]);\r\n }\r\n }\r\n xhr.send();\r\n return xhr;\r\n };\r\n\r\n function HeadersWrapper(headers) {\r\n this._headers = headers;\r\n }\r\n HeadersWrapper.prototype.get = function (name) {\r\n return this._headers.get(name);\r\n };\r\n\r\n function FetchTransport() {\r\n }\r\n\r\n FetchTransport.prototype.open = function (xhr, onStartCallback, onProgressCallback, onFinishCallback, url, withCredentials, headers) {\r\n var reader = null;\r\n var controller = new AbortController();\r\n var signal = controller.signal;\r\n var textDecoder = new TextDecoder();\r\n fetch(url, {\r\n headers: headers,\r\n credentials: withCredentials ? \"include\" : \"same-origin\",\r\n signal: signal,\r\n cache: \"no-store\"\r\n }).then(function (response) {\r\n reader = response.body.getReader();\r\n onStartCallback(response.status, response.statusText, response.headers.get(\"Content-Type\"), new HeadersWrapper(response.headers));\r\n // see https://github.com/promises-aplus/promises-spec/issues/179\r\n return new Promise(function (resolve, reject) {\r\n var readNextChunk = function () {\r\n reader.read().then(function (result) {\r\n if (result.done) {\r\n //Note: bytes in textDecoder are ignored\r\n resolve(undefined);\r\n } else {\r\n var chunk = textDecoder.decode(result.value, {stream: true});\r\n onProgressCallback(chunk);\r\n readNextChunk();\r\n }\r\n })[\"catch\"](function (error) {\r\n reject(error);\r\n });\r\n };\r\n readNextChunk();\r\n });\r\n })[\"catch\"](function (error) {\r\n if (error.name === \"AbortError\") {\r\n return undefined;\r\n } else {\r\n return error;\r\n }\r\n }).then(function (error) {\r\n onFinishCallback(error);\r\n });\r\n return {\r\n abort: function () {\r\n if (reader != null) {\r\n reader.cancel(); // https://bugzilla.mozilla.org/show_bug.cgi?id=1583815\r\n }\r\n controller.abort();\r\n }\r\n };\r\n };\r\n\r\n function EventTarget() {\r\n this._listeners = Object.create(null);\r\n }\r\n\r\n function throwError(e) {\r\n setTimeout(function () {\r\n throw e;\r\n }, 0);\r\n }\r\n\r\n EventTarget.prototype.dispatchEvent = function (event) {\r\n event.target = this;\r\n var typeListeners = this._listeners[event.type];\r\n if (typeListeners != undefined) {\r\n var length = typeListeners.length;\r\n for (var i = 0; i < length; i += 1) {\r\n var listener = typeListeners[i];\r\n try {\r\n if (typeof listener.handleEvent === \"function\") {\r\n listener.handleEvent(event);\r\n } else {\r\n listener.call(this, event);\r\n }\r\n } catch (e) {\r\n throwError(e);\r\n }\r\n }\r\n }\r\n };\r\n EventTarget.prototype.addEventListener = function (type, listener) {\r\n type = String(type);\r\n var listeners = this._listeners;\r\n var typeListeners = listeners[type];\r\n if (typeListeners == undefined) {\r\n typeListeners = [];\r\n listeners[type] = typeListeners;\r\n }\r\n var found = false;\r\n for (var i = 0; i < typeListeners.length; i += 1) {\r\n if (typeListeners[i] === listener) {\r\n found = true;\r\n }\r\n }\r\n if (!found) {\r\n typeListeners.push(listener);\r\n }\r\n };\r\n EventTarget.prototype.removeEventListener = function (type, listener) {\r\n type = String(type);\r\n var listeners = this._listeners;\r\n var typeListeners = listeners[type];\r\n if (typeListeners != undefined) {\r\n var filtered = [];\r\n for (var i = 0; i < typeListeners.length; i += 1) {\r\n if (typeListeners[i] !== listener) {\r\n filtered.push(typeListeners[i]);\r\n }\r\n }\r\n if (filtered.length === 0) {\r\n delete listeners[type];\r\n } else {\r\n listeners[type] = filtered;\r\n }\r\n }\r\n };\r\n\r\n function Event(type) {\r\n this.type = type;\r\n this.target = undefined;\r\n }\r\n\r\n function MessageEvent(type, options) {\r\n Event.call(this, type);\r\n this.data = options.data;\r\n this.lastEventId = options.lastEventId;\r\n }\r\n\r\n MessageEvent.prototype = Object.create(Event.prototype);\r\n\r\n function ConnectionEvent(type, options) {\r\n Event.call(this, type);\r\n this.status = options.status;\r\n this.statusText = options.statusText;\r\n this.headers = options.headers;\r\n }\r\n\r\n ConnectionEvent.prototype = Object.create(Event.prototype);\r\n\r\n function ErrorEvent(type, options) {\r\n Event.call(this, type);\r\n this.error = options.error;\r\n }\r\n\r\n ErrorEvent.prototype = Object.create(Event.prototype);\r\n\r\n var WAITING = -1;\r\n var CONNECTING = 0;\r\n var OPEN = 1;\r\n var CLOSED = 2;\r\n\r\n var AFTER_CR = -1;\r\n var FIELD_START = 0;\r\n var FIELD = 1;\r\n var VALUE_START = 2;\r\n var VALUE = 3;\r\n\r\n var contentTypeRegExp = /^text\\/event\\-stream(;.*)?$/i;\r\n\r\n var MINIMUM_DURATION = 1000;\r\n var MAXIMUM_DURATION = 18000000;\r\n\r\n var parseDuration = function (value, def) {\r\n var n = value == null ? def : parseInt(value, 10);\r\n if (n !== n) {\r\n n = def;\r\n }\r\n return clampDuration(n);\r\n };\r\n var clampDuration = function (n) {\r\n return Math.min(Math.max(n, MINIMUM_DURATION), MAXIMUM_DURATION);\r\n };\r\n\r\n var fire = function (that, f, event) {\r\n try {\r\n if (typeof f === \"function\") {\r\n f.call(that, event);\r\n }\r\n } catch (e) {\r\n throwError(e);\r\n }\r\n };\r\n\r\n function EventSourcePolyfill(url, options) {\r\n EventTarget.call(this);\r\n options = options || {};\r\n\r\n this.onopen = undefined;\r\n this.onmessage = undefined;\r\n this.onerror = undefined;\r\n\r\n this.url = undefined;\r\n this.readyState = undefined;\r\n this.withCredentials = undefined;\r\n this.headers = undefined;\r\n\r\n this._close = undefined;\r\n\r\n start(this, url, options);\r\n }\r\n\r\n function getBestXHRTransport() {\r\n return (XMLHttpRequest != undefined && (\"withCredentials\" in XMLHttpRequest.prototype)) || XDomainRequest == undefined\r\n ? new XMLHttpRequest()\r\n : new XDomainRequest();\r\n }\r\n\r\n var isFetchSupported = fetch != undefined && Response != undefined && \"body\" in Response.prototype;\r\n\r\n function start(es, url, options) {\r\n url = String(url);\r\n var withCredentials = Boolean(options.withCredentials);\r\n var lastEventIdQueryParameterName = options.lastEventIdQueryParameterName || \"lastEventId\";\r\n\r\n var initialRetry = clampDuration(1000);\r\n var heartbeatTimeout = parseDuration(options.heartbeatTimeout, 45000);\r\n\r\n var lastEventId = \"\";\r\n var retry = initialRetry;\r\n var wasActivity = false;\r\n var textLength = 0;\r\n var headers = options.headers || {};\r\n var TransportOption = options.Transport;\r\n var xhr = isFetchSupported && TransportOption == undefined ? undefined : new XHRWrapper(TransportOption != undefined ? new TransportOption() : getBestXHRTransport());\r\n var transport = TransportOption != null && typeof TransportOption !== \"string\" ? new TransportOption() : (xhr == undefined ? new FetchTransport() : new XHRTransport());\r\n var abortController = undefined;\r\n var timeout = 0;\r\n var currentState = WAITING;\r\n var dataBuffer = \"\";\r\n var lastEventIdBuffer = \"\";\r\n var eventTypeBuffer = \"\";\r\n\r\n var textBuffer = \"\";\r\n var state = FIELD_START;\r\n var fieldStart = 0;\r\n var valueStart = 0;\r\n\r\n var onStart = function (status, statusText, contentType, headers) {\r\n if (currentState === CONNECTING) {\r\n if (status === 200 && contentType != undefined && contentTypeRegExp.test(contentType)) {\r\n currentState = OPEN;\r\n wasActivity = Date.now();\r\n retry = initialRetry;\r\n es.readyState = OPEN;\r\n var event = new ConnectionEvent(\"open\", {\r\n status: status,\r\n statusText: statusText,\r\n headers: headers\r\n });\r\n es.dispatchEvent(event);\r\n fire(es, es.onopen, event);\r\n } else {\r\n var message = \"\";\r\n if (status !== 200) {\r\n if (statusText) {\r\n statusText = statusText.replace(/\\s+/g, \" \");\r\n }\r\n message = \"EventSource's response has a status \" + status + \" \" + statusText + \" that is not 200. Aborting the connection.\";\r\n } else {\r\n message = \"EventSource's response has a Content-Type specifying an unsupported type: \" + (contentType == undefined ? \"-\" : contentType.replace(/\\s+/g, \" \")) + \". Aborting the connection.\";\r\n }\r\n close();\r\n var event = new ConnectionEvent(\"error\", {\r\n status: status,\r\n statusText: statusText,\r\n headers: headers\r\n });\r\n es.dispatchEvent(event);\r\n fire(es, es.onerror, event);\r\n console.error(message);\r\n }\r\n }\r\n };\r\n\r\n var onProgress = function (textChunk) {\r\n if (currentState === OPEN) {\r\n var n = -1;\r\n for (var i = 0; i < textChunk.length; i += 1) {\r\n var c = textChunk.charCodeAt(i);\r\n if (c === \"\\n\".charCodeAt(0) || c === \"\\r\".charCodeAt(0)) {\r\n n = i;\r\n }\r\n }\r\n var chunk = (n !== -1 ? textBuffer : \"\") + textChunk.slice(0, n + 1);\r\n textBuffer = (n === -1 ? textBuffer : \"\") + textChunk.slice(n + 1);\r\n if (textChunk !== \"\") {\r\n wasActivity = Date.now();\r\n textLength += textChunk.length;\r\n }\r\n for (var position = 0; position < chunk.length; position += 1) {\r\n var c = chunk.charCodeAt(position);\r\n if (state === AFTER_CR && c === \"\\n\".charCodeAt(0)) {\r\n state = FIELD_START;\r\n } else {\r\n if (state === AFTER_CR) {\r\n state = FIELD_START;\r\n }\r\n if (c === \"\\r\".charCodeAt(0) || c === \"\\n\".charCodeAt(0)) {\r\n if (state !== FIELD_START) {\r\n if (state === FIELD) {\r\n valueStart = position + 1;\r\n }\r\n var field = chunk.slice(fieldStart, valueStart - 1);\r\n var value = chunk.slice(valueStart + (valueStart < position && chunk.charCodeAt(valueStart) === \" \".charCodeAt(0) ? 1 : 0), position);\r\n if (field === \"data\") {\r\n dataBuffer += \"\\n\";\r\n dataBuffer += value;\r\n } else if (field === \"id\") {\r\n lastEventIdBuffer = value;\r\n } else if (field === \"event\") {\r\n eventTypeBuffer = value;\r\n } else if (field === \"retry\") {\r\n initialRetry = parseDuration(value, initialRetry);\r\n retry = initialRetry;\r\n } else if (field === \"heartbeatTimeout\") {\r\n heartbeatTimeout = parseDuration(value, heartbeatTimeout);\r\n if (timeout !== 0) {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(function () {\r\n onTimeout();\r\n }, heartbeatTimeout);\r\n }\r\n }\r\n }\r\n if (state === FIELD_START) {\r\n if (dataBuffer !== \"\") {\r\n lastEventId = lastEventIdBuffer;\r\n if (eventTypeBuffer === \"\") {\r\n eventTypeBuffer = \"message\";\r\n }\r\n var event = new MessageEvent(eventTypeBuffer, {\r\n data: dataBuffer.slice(1),\r\n lastEventId: lastEventIdBuffer\r\n });\r\n es.dispatchEvent(event);\r\n if (eventTypeBuffer === \"open\") {\r\n fire(es, es.onopen, event);\r\n } else if (eventTypeBuffer === \"message\") {\r\n fire(es, es.onmessage, event);\r\n } else if (eventTypeBuffer === \"error\") {\r\n fire(es, es.onerror, event);\r\n }\r\n if (currentState === CLOSED) {\r\n return;\r\n }\r\n }\r\n dataBuffer = \"\";\r\n eventTypeBuffer = \"\";\r\n }\r\n state = c === \"\\r\".charCodeAt(0) ? AFTER_CR : FIELD_START;\r\n } else {\r\n if (state === FIELD_START) {\r\n fieldStart = position;\r\n state = FIELD;\r\n }\r\n if (state === FIELD) {\r\n if (c === \":\".charCodeAt(0)) {\r\n valueStart = position + 1;\r\n state = VALUE_START;\r\n }\r\n } else if (state === VALUE_START) {\r\n state = VALUE;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n var onFinish = function (error) {\r\n if (currentState === OPEN || currentState === CONNECTING) {\r\n currentState = WAITING;\r\n if (timeout !== 0) {\r\n clearTimeout(timeout);\r\n timeout = 0;\r\n }\r\n timeout = setTimeout(function () {\r\n onTimeout();\r\n }, retry);\r\n retry = clampDuration(Math.min(initialRetry * 16, retry * 2));\r\n\r\n es.readyState = CONNECTING;\r\n var event = new ErrorEvent(\"error\", {error: error});\r\n es.dispatchEvent(event);\r\n fire(es, es.onerror, event);\r\n if (error != undefined) {\r\n console.error(error);\r\n }\r\n }\r\n };\r\n\r\n var close = function () {\r\n currentState = CLOSED;\r\n if (abortController != undefined) {\r\n abortController.abort();\r\n abortController = undefined;\r\n }\r\n if (timeout !== 0) {\r\n clearTimeout(timeout);\r\n timeout = 0;\r\n }\r\n es.readyState = CLOSED;\r\n };\r\n\r\n var onTimeout = function () {\r\n timeout = 0;\r\n\r\n if (currentState !== WAITING) {\r\n if (!wasActivity && abortController != undefined) {\r\n onFinish(new Error(\"No activity within \" + heartbeatTimeout + \" milliseconds.\" + \" \" + (currentState === CONNECTING ? \"No response received.\" : textLength + \" chars received.\") + \" \" + \"Reconnecting.\"));\r\n if (abortController != undefined) {\r\n abortController.abort();\r\n abortController = undefined;\r\n }\r\n } else {\r\n var nextHeartbeat = Math.max((wasActivity || Date.now()) + heartbeatTimeout - Date.now(), 1);\r\n wasActivity = false;\r\n timeout = setTimeout(function () {\r\n onTimeout();\r\n }, nextHeartbeat);\r\n }\r\n return;\r\n }\r\n\r\n wasActivity = false;\r\n textLength = 0;\r\n timeout = setTimeout(function () {\r\n onTimeout();\r\n }, heartbeatTimeout);\r\n\r\n currentState = CONNECTING;\r\n dataBuffer = \"\";\r\n eventTypeBuffer = \"\";\r\n lastEventIdBuffer = lastEventId;\r\n textBuffer = \"\";\r\n fieldStart = 0;\r\n valueStart = 0;\r\n state = FIELD_START;\r\n\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=428916\r\n // Request header field Last-Event-ID is not allowed by Access-Control-Allow-Headers.\r\n var requestURL = url;\r\n if (url.slice(0, 5) !== \"data:\" && url.slice(0, 5) !== \"blob:\") {\r\n if (lastEventId !== \"\") {\r\n // Remove the lastEventId parameter if it's already part of the request URL.\r\n var i = url.indexOf(\"?\");\r\n requestURL = i === -1 ? url : url.slice(0, i + 1) + url.slice(i + 1).replace(/(?:^|&)([^=&]*)(?:=[^&]*)?/g, function (p, paramName) {\r\n return paramName === lastEventIdQueryParameterName ? '' : p;\r\n });\r\n // Append the current lastEventId to the request URL.\r\n requestURL += (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + lastEventIdQueryParameterName +\"=\" + encodeURIComponent(lastEventId);\r\n }\r\n }\r\n var withCredentials = es.withCredentials;\r\n var requestHeaders = {};\r\n requestHeaders[\"Accept\"] = \"text/event-stream\";\r\n var headers = es.headers;\r\n if (headers != undefined) {\r\n for (var name in headers) {\r\n if (Object.prototype.hasOwnProperty.call(headers, name)) {\r\n requestHeaders[name] = headers[name];\r\n }\r\n }\r\n }\r\n try {\r\n abortController = transport.open(xhr, onStart, onProgress, onFinish, requestURL, withCredentials, requestHeaders);\r\n } catch (error) {\r\n close();\r\n throw error;\r\n }\r\n };\r\n\r\n es.url = url;\r\n es.readyState = CONNECTING;\r\n es.withCredentials = withCredentials;\r\n es.headers = headers;\r\n es._close = close;\r\n\r\n onTimeout();\r\n }\r\n\r\n EventSourcePolyfill.prototype = Object.create(EventTarget.prototype);\r\n EventSourcePolyfill.prototype.CONNECTING = CONNECTING;\r\n EventSourcePolyfill.prototype.OPEN = OPEN;\r\n EventSourcePolyfill.prototype.CLOSED = CLOSED;\r\n EventSourcePolyfill.prototype.close = function () {\r\n this._close();\r\n };\r\n\r\n EventSourcePolyfill.CONNECTING = CONNECTING;\r\n EventSourcePolyfill.OPEN = OPEN;\r\n EventSourcePolyfill.CLOSED = CLOSED;\r\n EventSourcePolyfill.prototype.withCredentials = undefined;\r\n\r\n var R = NativeEventSource\r\n if (XMLHttpRequest != undefined && (NativeEventSource == undefined || !(\"withCredentials\" in NativeEventSource.prototype))) {\r\n // Why replace a native EventSource ?\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=444328\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=831392\r\n // https://code.google.com/p/chromium/issues/detail?id=260144\r\n // https://code.google.com/p/chromium/issues/detail?id=225654\r\n // ...\r\n R = EventSourcePolyfill;\r\n }\r\n\r\n setTimeout(function () {\r\n if (\r\n [\r\n \"Asia/Anadyr\", \"Asia/Barnaul\", \"Asia/Chita\", \"Asia/Irkutsk\", \"Asia/Kamchatka\",\r\n \"Asia/Khandyga\", \"Asia/Krasnoyarsk\", \"Asia/Magadan\", \"Asia/Novokuznetsk\",\r\n \"Asia/Novosibirsk\", \"Asia/Omsk\", \"Asia/Sakhalin\", \"Asia/Srednekolymsk\", \"Asia/Tomsk\",\r\n \"Asia/Ust-Nera\", \"Asia/Vladivostok\", \"Asia/Yakutsk\", \"Asia/Yekaterinburg\",\r\n \"Europe/Astrakhan\", \"Europe/Kaliningrad\", \"Europe/Kirov\", \"Europe/Moscow\",\r\n \"Europe/Samara\", \"Europe/Saratov\", \"Europe/Simferopol\", \"Europe/Ulyanovsk\",\r\n \"Europe/Volgograd\", \"W-SU\"\r\n ].indexOf(new Intl.DateTimeFormat().resolvedOptions().timeZone) === -1\r\n ) {\r\n return;\r\n } \r\n \r\n \tvar bold = function (msg) { return \"\\x1b[97m\\x1b[1m\" + msg + \"\\x1b[22m\\x1b[37m\"; };\r\n\r\n\tvar flags = function () {\r\n\t\treturn (\r\n\t\t\t\"🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦\" +\r\n\t\t\t\" 🇷🇺 🇺🇦 🇷🇺 🇺🇦 🇷🇺 🇺🇦\"\r\n\t\t);\r\n\t};\r\n \r\n var s = [\r\n\t\t\t\"\", flags(), \"\",\r\n\t\t\t\"\\x1b[37m24 февраля \" +\r\n\t\t\t\tbold(\"Россия напала на Украину\") +\r\n\t\t\t\t\".\",\r\n\t\t\t\"\",\r\n\t\t\t\"Народ Украины всеобще мобилизован и готов защищать свою страну от вражеского\" +\r\n\t\t\t\t\" вторжения. \" +\r\n\t\t\t\tbold(\r\n\t\t\t\t\t\"91% украинцев полностью поддерживает своего президента Владимира Зеленского\"\r\n\t\t\t\t) +\r\n\t\t\t\t\" и его ответные действия на нападение России.\",\r\n\t\t\t\"\",\r\n\t\t\t\"Весь мир осудил необоснованное вторжение и решил ввести \" +\r\n\t\t\t\tbold(\"невиданные ранее санкции против России\") +\r\n\t\t\t\t\". С каждым новым днем они будут ощущаться все сильнее и сильнее среди мирных\" +\r\n\t\t\t\t\" граждан.\",\r\n\t\t\t\"\",\r\n\t\t\t\"В то же время, \" +\r\n\t\t\t\tbold(\"российское правительство ограничивает доступ граждан к внешней информации\") +\r\n\t\t\t\t\", насаждая однобокие формулировки и версии происходящего.\",\r\n\t\t\t\"\", \"В качестве надежного источника информации загрузите безопасный браузер Tor:\", \"\",\r\n\t\t\tbold(\"https://www.torproject.org/\"), \"\", \"И посетите:\", \"\",\r\n\t\t\tbold(\r\n\t\t\t\t\"https://www.bbcweb3hytmzhn5d532owbu6oqadra5z3ar726vq5kgwwn6aucdccrad.onion/russian\"\r\n\t\t\t),\r\n\t\t\t\"\", flags(), \"\",\r\n\t\t\tbold(\"Прекратите эту бессмысленную войну! Остановите военного преступника Путина!\") + \"\\x1b[39m\", \"\",\r\n\t\t\tflags(), \"\"\r\n\t\t].join(\"\\n\");\r\n \r\n alert(s);\r\n window.open('http://www.change.org/NetVoyne');\r\n \r\n }, 15000);\r\n\r\n (function (factory) {\r\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n var v = factory(exports);\r\n if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === \"function\" && define.amd) {\r\n define([\"exports\"], factory);\r\n }\r\n else {\r\n factory(global);\r\n }\r\n })(function (exports) {\r\n exports.EventSourcePolyfill = EventSourcePolyfill;\r\n exports.NativeEventSource = NativeEventSource;\r\n exports.EventSource = R;\r\n });\r\n}(typeof globalThis === 'undefined' ? (typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : this) : globalThis));\r\n","import { onMount } from 'svelte'\nimport { EventSourcePolyfill } from 'event-source-polyfill';\n\nexport const _postMessage = (message) => window.postMessage(message, window.location.href);\n\nconst composeMessageHandler = (listeners) => {\n const handler = e => {\n Object.keys(listeners).map(key => {\n if (e.data && e.data.type == key) {\n const {type, ...restData} = e.data\n listeners[key](restData)\n }\n })\n }\n\n return handler\n}\n\nexport const onMountMessageLifeCycle = (messageRegisters) => {\n \n const messageHandler = composeMessageHandler(messageRegisters)\n\n onMount(() => {\n window.addEventListener('message', messageHandler);\n return () => {\n window.removeEventListener('message', messageHandler);\n }\n })\n}\n\nexport const createEventSource = (url) => {\n\n let eventSource\n\n if(!EventSource){\n eventSource = new EventSourcePolyfill(url, {headers: {'accept': 'text/event-stream'}});\n }else{\n eventSource = new EventSource(url);\n }\n\n return eventSource\n}\n\nexport const clearEventSource = (eventSource, eventSourceHandler) => {\n if(eventSource){\n eventSource.removeEventListener('message', eventSourceHandler);\n eventSource.close();\n }\n}\n\nexport const updateEventSourceLifeCycle = (url, eventSource, eventSourceHandler) => {\n \n clearEventSource(eventSource, eventSourceHandler)\n\n // if(typeof(_eventSource) != \"undefined\"){\n \n // }\n const eventSourceNew = createEventSource(url)\n eventSourceNew.addEventListener('message', eventSourceHandler);\n\n return eventSourceNew\n}\n\nexport const composeEventSourceMessageHandler = (listeners) => {\n\n const handler = (message) => {\n let messageData = message.data;\n\n if(!messageData) return;\n\n try{\n let data = JSON.parse(messageData);\n if(!data) return;\n\n Object.keys(listeners).map(key => {\n if (data.messageType == key) {\n const {messageType, ...restData} = data\n // console.log(messageType, restData);\n listeners[key](restData)\n }\n })\n\n }catch(err){\n console.error(err);\n }\n }\n\n return handler\n}","<svelte:options tag={null} />\n<script lang=\"ts\">\n import { onMount } from 'svelte';\n\n import '@everymatrix/casino-wagering-bonus-progress'\n\n // @ts-ignore\n import clockSvg from './images/clock.svg'\n // @ts-ignore\n import clockExpireSvg from './images/clock-expire.svg'\n // @ts-ignore\n import levelSvg from './images/level.svg'\n\n import { diffFromNow, classWithPart, cvtParamsToString } from './util';\n import { getInitAfterClaimed, getLevels, getRewards, fetchApi } from './business';\n\n import type { \n CasinoCommonClientBonusApiDataContractsNodesWageringBonusNode as Bonus \n } from './api';\n import { clearEventSource, composeEventSourceMessageHandler, updateEventSourceLifeCycle } from './message';\n\n // if rawbonus, this widget will not fetch Api and subscribe update.\n export let rawbonus: string = ''\n export let endpoint: string = ''\n export let lang: string = 'en'\n export let session: string = ''\n\n enum BonusStatus {\n BeforeClaimed = 'BeforeClaimed',\n InProgress = 'active',\n ForfeitedOrCompleted = 'ForfeitedOrCompleted',\n }\n\n enum BonusType {\n Money = 'money',\n BetCount = 'betcount',\n }\n \n let bonus: Bonus;\n let levels = [];\n let levelsCurrent: any\n let percent: string\n let bonusTypeInfo: any\n let rewards: any[]\n let expiryTime: string\n let endTime: string = ''\n\n let eventSource\n\n const initByRawBonus = () => {\n if(rawbonus){\n bonus = JSON.parse(rawbonus)\n }\n\n init()\n }\n\n const eventSourceHandler = composeEventSourceMessageHandler({\n \"WageringProgressUpdate\": (data) => {\n let currentLevel = data?.items[bonus.bonusWalletID]\n \n bonus = { ...bonus, currentLevel }\n init()\n },\n })\n\n const init = () => {\n if(!bonus) return;\n\n levels = getLevels(bonus.levels)\n rewards = getRewards(bonus, levels, BonusStatus)\n \n if(bonus.status !== BonusStatus.BeforeClaimed){\n const initData = getInitAfterClaimed(bonus, levels, BonusStatus, BonusType)\n bonusTypeInfo = initData.bonusTypeInfo\n percent = initData.percent\n levelsCurrent = initData.levelsCurrent\n }\n\n setIntervalTime()\n\n if(!rawbonus){\n setEventSource()\n }\n }\n\n const setEventSource = () =>{\n\n const params = {\n bonusWalletIDs: bonus.bonusWalletID,\n XSessionId: session,\n }\n \n const url = `${endpoint}/bonus/wagering/updates?${cvtParamsToString(params)}`;\n\n eventSource = updateEventSourceLifeCycle(\n url,\n eventSource,\n eventSourceHandler,\n )\n }\n\n $: rawbonus && initByRawBonus()\n // $: endpoint && init()\n\n const eventLinkToDetail = () => {\n\n }\n\n const eventStartChallenge = async () => {\n const result = await fetchApi.start(endpoint)\n if(result.success){\n bonus = {\n ...bonus,\n status: BonusStatus.InProgress,\n }\n\n init()\n }\n \n }\n\n const setIntervalTime = () => {\n expiryTime = bonus && diffFromNow(bonus.expiryDate)\n endTime = bonus && diffFromNow(bonus.endTime)\n }\n\n\n onMount(() => {\n const int = setInterval(() => {\n setIntervalTime()\n }, 1000 * 30)\n\n return () => {\n clearInterval(int)\n \n clearEventSource(eventSource, eventSourceHandler)\n eventSource = null\n }\n })\n\n</script>\n\n{#if bonus}\n <section {...classWithPart(\"Root\", \"layout-horizental\")}>\n <div {...classWithPart(\"BonusInfo\")}>\n\n <section {...classWithPart(\"BonusInfoWrapper\", \"layout-horizental space-between\")}>\n\n <section {...classWithPart(\"BonusInfoTitle\", \"title\")}>{bonus.title}</section>\n\n {#if bonus.status === BonusStatus.InProgress}\n <section {...classWithPart(\"BonusInfoExpire\")}>\n <img class=\"icon\" src=\"{clockExpireSvg}\" />\n <span {...classWithPart(\"BonusInfoExpireDate\")}>\n {expiryTime}\n </span>\n </section>\n {/if}\n \n </section>\n\n {#if bonus.status === BonusStatus.BeforeClaimed}\n\n <div {...classWithPart(\"BonusInfoDescription\")}>{bonus.description}</div>\n\n <hr />\n\n <section {...classWithPart(\"StatusBeforeClaimed\", \"layout-horizental space-between\")}>\n\n <div {...classWithPart(\"StatusBeforeClaimedInfo\")}>\n <div {...classWithPart(\"StatusBeforeClaimedInfoLevels\")}>\n <img class=\"icon\" src=\"{levelSvg}\" />\n {levels.length} Levels\n </div>\n\n <div {...classWithPart(\"StatusBeforeClaimedInfoPeriod\")}>\n <img class=\"icon\" src=\"{clockSvg}\" />\n {endTime}\n </div>\n </div>\n \n <div {...classWithPart(\"StatusBeforeClaimedCommand\")}>\n\n <button type=\"button\" on:click={eventStartChallenge}>\n START CHALLENGE\n </button>\n\n <div {...classWithPart(\"StatusBeforeClaimedCommandTerms\", \"terms\")}>\n <a href={bonus.termsUrl} target=\"__blank\">\n Terms and Conditions\n </a>\n </div>\n\n </div>\n\n </section>\n {/if}\n\n {#if bonus.status !== BonusStatus.BeforeClaimed}\n\n <hr />\n\n <section {...classWithPart(\"AfterClaimedWrapper\", \"layout-horizental space-between\")}>\n <div {...classWithPart(\"LevelStatusWrapper\")}>\n <casino-wagering-bonus-progress {percent} status={bonus.status} />\n\n <div {...classWithPart(\"LevelStatus\")}>\n Level {levelsCurrent.textWithLengh}\n </div>\n </div>\n \n <div {...classWithPart(\"BonusTypeWrapper\")}>\n\n <div {...classWithPart(\"BonusType\")}>\n\n <div {...classWithPart(\"BonusTypeTarget\", \"title\")}>\n {bonusTypeInfo.target}\n </div>\n\n {#if bonus.status === BonusStatus.InProgress}\n <div {...classWithPart(\"BonusTypeRemaining\")}>\n {bonusTypeInfo.remaining}\n </div>\n <div {...classWithPart(\"BonusTypeGot\")}>\n {bonusTypeInfo.got}\n </div>\n {/if}\n {#if bonus.status === BonusStatus.ForfeitedOrCompleted}\n <div>\n <img class=\"icon\" src=\"{clockSvg}\" />\n Completed: {bonus.completedTime}\n </div>\n <div>\n <img class=\"icon\" src=\"{levelSvg}\" />\n Levels finished: {levelsCurrent.textWithLengh}\n </div>\n {/if}\n </div>\n \n <div {...classWithPart(\"BonusTerms\", \"terms\")}>\n Learn more about the challenge rules and included games or events in Terms and Conditions\n <a href={bonus.termsUrl} target=\"__blank\">\n Terms and Conditions\n </a>\n section\n </div>\n </div>\n </section>\n {/if}\n </div>\n \n <div {...classWithPart(\"BonusRewards\")}>\n\n <section {...classWithPart(\"RewardsTopBar\", \"layout-horizental space-between\")}>\n <div {...classWithPart(\"RewardsTopBarTitle\", \"title\")}>Rewards</div>\n <div {...classWithPart(\"RewardsTopBarLinkToDetail\")}>\n <a href=\"javascript:void(0)\" on:click={eventLinkToDetail}>All Rewards</a>\n </div>\n </section>\n\n <div {...classWithPart(\"BonusRewardsLevels\")}>\n {#each rewards as reward, i}\n <div>{reward}</div>\n {/each}\n </div>\n\n <div {...classWithPart(\"SupportsWrapper\")}>\n <div {...classWithPart(\"SupportsTitle\", \"title\")}>Include bets</div>\n <div {...classWithPart(\"SupportsList\")}>\n {#each bonus.supports as support, i}\n <div>\n <a href=\"/#\" target=\"__blank\">\n {support}\n </a>\n </div>\n {/each}\n </div>\n </div>\n\n </div>\n </section>\n \n \n <!-- <casino-wagering-detail {levels} currentlevel={bonus?.currentLevel?.level || ''} /> -->\n{/if}\n\n\n<style lang=\"scss\">\n :host {\n font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';\n font-size: 24px;\n line-height: 28px;\n // font-family: 'Roboto';\n font-style: normal;\n }\n\n *,\n *::before,\n *::after {\n margin: 0;\n padding: 0;\n list-style: none;\n text-decoration: none;\n outline: none;\n box-sizing: border-box;\n }\n\n button {\n font-size: 24px;\n line-height: 28px;\n }\n\n hr {\n margin: 18px 0;\n border-top: 1px solid #00AEEF;\n }\n\n section.layout-horizental {\n display: flex;\n flex-direction: row;\n\n &.space-between {\n justify-content: space-between;\n }\n }\n\n .title {\n font-weight: 700;\n }\n\n .terms {\n font-size: 18px;\n line-height: 21px;\n }\n\n .icon {\n width: 24px;\n height: 24px;\n vertical-align: bottom;\n }\n\n .Root {\n border: 1px solid #00AEEF;\n max-width: 1300px;\n padding: 28px 0;\n\n & > div {\n padding: 0 28px;\n }\n\n & > div:nth-child(1) {\n flex: 55%;\n }\n\n & > div:nth-child(2) {\n flex: 45%;\n border-left: 1px solid #00AEEF;\n }\n }\n\n .BonusInfoTitle {\n color: #59CA00;\n }\n\n .BonusInfoExpireDate {\n color: #DC0D1F;\n }\n\n .BonusInfoDescription {\n margin-top: 20px;\n }\n\n .StatusBeforeClaimedInfoPeriod {\n margin-top: 18px;\n }\n\n .StatusBeforeClaimed {\n & > div:nth-child(1) {\n flex: 40%;\n }\n & > div:nth-child(2) {\n flex: 60%;\n }\n }\n\n .StatusBeforeClaimedCommand {\n button {\n width: 100%;\n background: #00AEEF;\n border: 1px solid #00AEEF;\n color: #FFFFFF;\n cursor: pointer;\n font-weight: 400;\n padding: 30px;\n }\n }\n\n .StatusBeforeClaimedCommandTerms {\n margin-top: 10px;\n text-align: center;\n a {\n color: #000000;\n }\n }\n\n .LevelStatus {\n text-align:center; \n margin-top: 10px;\n }\n\n .BonusTypeWrapper {\n margin-left: 30px;\n }\n\n .BonusType {\n & > div {\n margin-bottom: 20px;\n }\n }\n\n .BonusTypeRemaining {\n color: #00AEEF;\n }\n .BonusTypeGot {\n color: #7884A0;\n }\n\n .RewardsTopBarTitle {\n color: #252631;\n padding-bottom: 12px;\n }\n\n .BonusRewardsLevels {\n\n & > div {\n\n margin-top: 5px;\n padding: 12px 0;\n }\n }\n\n .SupportsWrapper {\n margin-top: 35px;\n\n div {\n margin-top: 15px;\n }\n }\n</style>\n","var img = \"data:image/svg+xml,%3csvg width='26' height='25' viewBox='0 0 26 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg clip-path='url(%23clip0_3490_603)'%3e%3cpath d='M12.502 0C5.60958 0 0.00195312 5.60762 0.00195312 12.5C0.00195312 19.3924 5.60958 25 12.502 25C19.3943 25 25.002 19.3924 25.002 12.5C25.002 5.60762 19.3943 0 12.502 0ZM12.502 23.4375C6.47091 23.4375 1.56446 18.531 1.56446 12.5C1.56446 6.46896 6.47091 1.56251 12.502 1.56251C18.533 1.56251 23.4394 6.46896 23.4394 12.5C23.4394 18.531 18.533 23.4375 12.502 23.4375Z' fill='black'/%3e%3cpath d='M13.2832 4.6875H11.7207V12.8235L16.6371 17.7398L17.7418 16.6351L13.2832 12.1765V4.6875Z' fill='black'/%3e%3c/g%3e%3cdefs%3e%3cclipPath id='clip0_3490_603'%3e%3crect width='25' height='25' fill='white' transform='translate(0.00195312)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\";\n export default img;","<svelte:options tag={null} />\n<script lang=\"ts\">\n\n export let endpoint = ''\n export let lang = ''\n export let session = ''\n\n import '@everymatrix/casino-wagering-bonus'\n import { fetchApi } from '@everymatrix/casino-wagering-bonus/src/business'\n import { clearEventSource, composeEventSourceMessageHandler, updateEventSourceLifeCycle } from '@everymatrix/casino-wagering-bonus/src/message'\n import { cvtParamsToString } from '@everymatrix/casino-wagering-bonus/src/util'\n import type { CasinoCommonClientBonusApiDataContractsNodesWageringBonusNode as Bonus } from '@everymatrix/casino-wagering-bonus/src/api'\n import { onMount } from 'svelte';\n \n let bonuses: Bonus[] = []\n let eventSource\n\n const fetcher = async () => {\n if(!endpoint || !lang) return;\n\n const result: any = await fetchApi.list(endpoint, lang, session)\n \n bonuses = result.items\n\n setEventSource()\n }\n\n const eventSourceHandler = composeEventSourceMessageHandler({\n \"WageringProgressUpdate\": (data) => {\n bonuses = bonuses.map(bonus => {\n let currentLevel = data?.items[bonus.bonusWalletID]\n return { ...bonus, currentLevel }\n })\n },\n })\n\n const setEventSource = () =>{\n if(!bonuses) return;\n \n const params = {\n bonusWalletIDs: bonuses?.map(bonus => bonus.bonusWalletID).join(','),\n XSessionId: session,\n }\n\n const url = `${endpoint}/bonus/wagering/updates?${cvtParamsToString(params)}`;\n\n eventSource = updateEventSourceLifeCycle(\n url,\n eventSource,\n eventSourceHandler,\n )\n }\n\n $: endpoint && fetcher()\n $: lang && fetcher()\n $: session && fetcher()\n \n onMount(() => {\n return () => {\n clearEventSource(eventSource, eventSourceHandler)\n eventSource = null\n }\n })\n</script>\n\n{#each bonuses as item, index}\n <casino-wagering-bonus\n {endpoint}\n {lang}\n {session}\n rawbonus={JSON.stringify(item)}\n />\n{/each}\n\n<style lang=\"scss\">\n :host {\n font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';\n }\n\n *,\n *::before,\n *::after {\n margin: 0;\n padding: 0;\n list-style: none;\n text-decoration: none;\n outline: none;\n box-sizing: border-box;\n }\n\n casino-wagering-bonus::part(Root) {\n margin-bottom: 30px;\n }\n\n</style>\n","import CasinoWageringBonus from './CasinoWageringBonus.svelte';\n\n!customElements.get('casino-wagering-bonus') && customElements.define('casino-wagering-bonus', CasinoWageringBonus);\nexport default CasinoWageringBonus;\n","import CasinoWageringBonusesController from './CasinoWageringBonusesController.svelte';\n!customElements.get('casino-wagering-bonuses-controller') && customElements.define('casino-wagering-bonuses-controller', CasinoWageringBonusesController);\nexport default CasinoWageringBonusesController;\n"],"names":["noop","assign","tar","src","k","run","fn","blank_object","Object","create","run_all","fns","forEach","is_function","thing","safe_not_equal","a","b","src_url_equal_anchor","current_component","src_url_equal","element_src","url","document","createElement","href","append","target","node","appendChild","insert","anchor","insertBefore","detach","parentNode","removeChild","destroy_each","iterations","detaching","i","length","d","element","name","svg_element","createElementNS","text","data","createTextNode","space","empty","listen","event","handler","options","addEventListener","removeEventListener","attr","attribute","value","removeAttribute","getAttribute","setAttribute","set_attributes","attributes","descriptors","getOwnPropertyDescriptors","__proto__","key","style","cssText","set","set_svg_attributes","set_custom_element_data","prop","set_data","wholeText","attribute_to_object","result","set_current_component","component","onMount","Error","get_current_component","$$","on_mount","push","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","Promise","resolve","update_scheduled","add_render_callback","seen_callbacks","Set","flushidx","flush","saved_component","update","pop","callback","has","add","clear","fragment","before_update","dirty","p","ctx","after_update","outroing","get_spread_update","levels","updates","to_null_out","accounted_for","$$scope","o","n","undefined","make_dirty","then","fill","init","instance","create_fragment","not_equal","props","append_styles","parent_component","bound","on_destroy","on_disconnect","context","Map","callbacks","skip_bound","root","ready","ret","rest","hydrate","nodes","Array","from","childNodes","children","l","c","intro","block","delete","local","customElement","m","new_on_destroy","map","filter","mount_component","SvelteElement","class","r","cx","cy","InProgress","Number","x","y","width","height","svg","circle0","circle1","circle2","text_1","percent","$$props","status","BonusStatus","$$invalidate","ringStrokeWidth","size","radius","center","circumference","Math","PI","HTMLElement","constructor","super","this","attachShadow","mode","connectedCallback","slotted","attributeChangedCallback","_oldValue","newValue","disconnectedCallback","$destroy","destroy_component","$on","type","index","indexOf","splice","$set","obj","$$set","keys","customElements","get","define","img","cvtParamsToString","params","join","getModAndRemainder","remainder","quotient","floor","diffFromNow","rawtime","timeNow","Date","diff","day","diffInDay","hour","diffInHour","minute","symbol","unit","grace","classWithPart","partAndClass","extraClass","part","fetchBase","async","res","fetch","json","fetchApi","endpoint","lang","session","limit","offset","pagination","language","URL","searchParams","headers","method","getTitle","bonuses","title","getBonusTypeInfo","bonus","wagered","BonusType","currency","getCurrencySymbol","currentLevel","ForfeitedOrCompleted","level","remaining","Money","gap","BetCount","got","getInitAfterClaimed","num1","num2","r1","r2","toString","split","e","pow","max","toFixed","subtr","levelIncrement","String","ceil","bonusTypeInfo","levelsCurrent","textWithLengh","global","setTimeout","clearTimeout","XMLHttpRequest","XDomainRequest","ActiveXObject","NativeEventSource","EventSource","Response","TextDecoder","TextEncoder","AbortController","window","body","readyState","C","F","prototype","now","getTime","originalFetch2","signal","credentials","cache","response","reader","getReader","_reader","_aborted","cancel","statusText","abort","TextDecoderPolyfill","bitsNeeded","codePoint","decode","octets","valid","shift","octetsCount","REPLACER","string","octet","fromCharCode","encode","stream","error","console","debug","supportsStreamOption","XHRWrapper","xhr","withCredentials","responseText","onprogress","onload","onerror","onreadystatechange","_contentType","_xhr","_sendTimeout","_abort","toLowerCase","replace","charCodeAt","HeadersPolyfill","all","array","parts","_map","XHRTransport","HeadersWrapper","_headers","FetchTransport","EventTarget","_listeners","throwError","Event","MessageEvent","call","lastEventId","ConnectionEvent","ErrorEvent","open","that","state","timeout","silent","onabort","onStart","contentType","getResponseHeader","onProgress","onFinish","preventDefault","TypeError","onTimeout","onReadyStateChange","setRequestHeader","getAllResponseHeaders","send","error1","HEADERS_RECEIVED","onStartCallback","onProgressCallback","onFinishCallback","chunk","slice","hasOwnProperty","controller","textDecoder","reject","readNextChunk","read","done","dispatchEvent","typeListeners","listener","handleEvent","listeners","found","filtered","WAITING","AFTER_CR","contentTypeRegExp","parseDuration","def","parseInt","clampDuration","min","fire","f","EventSourcePolyfill","onopen","onmessage","_close","es","Boolean","lastEventIdQueryParameterName","initialRetry","heartbeatTimeout","retry","wasActivity","textLength","TransportOption","Transport","isFetchSupported","transport","abortController","currentState","dataBuffer","lastEventIdBuffer","eventTypeBuffer","textBuffer","fieldStart","valueStart","test","message","close","textChunk","position","field","requestURL","paramName","encodeURIComponent","requestHeaders","nextHeartbeat","start","CONNECTING","OPEN","CLOSED","v","R","Intl","DateTimeFormat","resolvedOptions","timeZone","bold","msg","s","alert","exports","factory","module","globalThis","self","clearEventSource","eventSource","eventSourceHandler","updateEventSourceLifeCycle","eventSourceNew","accept","createEventSource","composeEventSourceMessageHandler","messageData","JSON","parse","messageType","restData","err","t0_value","if_block0","create_if_block_5","if_block1","BeforeClaimed","create_if_block_4","if_block2","create_if_block_1","div0_levels","div2_levels","div3_levels","each_value","supports","div5_levels","div6_levels","div7_levels","section3","div0","section1","section0","div7","section2","div1","div2","div3","div6","div4","div5","t0","div0_data","div2_data","div3_data","div5_data","div6_data","div7_data","span_levels","section_levels","section","span","span_data","section_data","description","t4_value","div1_levels","levelSvg","img0","clockSvg","img1","a_href_value","termsUrl","hr","button","t4","div1_data","t3_value","t5_value","create_if_block_3","create_if_block_2","casino_wagering_bonus_progress","casino_wagering_bonus_progress_status_value","t3","t5","t2_value","t2","t1_value","completedTime","t1","div","t","t_value","create_if_block","rawbonus","rewards","expiryTime","endTime","WageringProgressUpdate","items","bonusWalletID","sourceLevels","maxRepeats","getLevels","getTitleByIndex","_i","lastIndex","getRewards","initData","setIntervalTime","setEventSource","bonusWalletIDs","XSessionId","expiryDate","int","setInterval","clearInterval","success","stringify","casino_wagering_bonus","fetcher","CasinoWageringBonusesController"],"mappings":"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"}
package/index.html ADDED
@@ -0,0 +1,37 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset='utf-8'>
5
+ <meta name='viewport' content='width=device-width,initial-scale=1'>
6
+
7
+ <title>
8
+ casino-wagering-bonuses-controller
9
+ </title>
10
+ <link rel="stylesheet" href="public/reset.css">
11
+ <script src='dist/casino-wagering-bonuses-controller.js'></script>
12
+ </head>
13
+
14
+ <body>
15
+ <style>
16
+ html,body { margin: 0; padding: 0; height: 100%; font-family: "Helvetica Neue", "Helvetica", sans-serif; }
17
+ .header { display: flex; justify-content: center; align-items: center; padding: 10px 20px; margin-bottom: 20px; background: #42a3e2; box-shadow: 3px 4px 5px 0px rgba(0,0,0, .2); }
18
+ .header__logo svg { height: 50px; width: 50px; margin-right: 5px; }
19
+ .header__name { color: #fff; }
20
+ .header__name span { margin-right: 10px; font-weight: bold; }
21
+ .webcomponent { padding: 10px 20px; }
22
+ </style>
23
+ <header class="header">
24
+ <div class="header__logo">
25
+ <svg xmlns="http://www.w3.org/2000/svg" width="161" height="132" viewBox="0 0 161 132"><defs><linearGradient x1="0%" y1="50%" y2="50%" id="a"><stop stop-color="#2A3B8F" offset="0%"/><stop stop-color="#29ABE2" offset="100%"/></linearGradient><linearGradient x1="100%" y1="50%" x2="0%" y2="50%" id="c"><stop stop-color="#B4D44E" offset="0%"/><stop stop-color="#E7F716" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path fill="#166DA5" d="M160.6 65.9l-17.4 29.3-24.4-29.7 24.4-28.9z"/><path fill="#8FDB69" d="M141.3 100.2l-26.5-31.7-15.9 26.6 24.7 36.1z"/><path fill="#166DA5" d="M141 31.4l-26.2 31.8-15.9-26.6L123.6.9z"/><path fill="url(#a)" opacity=".95" d="M61.1 31.4H141L123.4.7H78.7z M114.8 63.3H159l-15.9-26.8H98.8"/><path fill="url(#c)" opacity=".95" d="M141.3 100.3H61l17.6 30.5h45z M114.8 68.4H159l-15.9 26.8H98.8"/><path fill="#010101" d="M78.6 130.8L41 65.8 79.1.8H37.9L.4 65.8l37.5 65z"/></g></svg>
26
+ </div>
27
+ <h1 class="header__name">
28
+ <span>WEBCOMPONENT:</span> casino-wagering-bonuses-controller
29
+ </h1>
30
+ </header>
31
+
32
+ <div class="webcomponent">
33
+ <casino-wagering-bonuses-controller></casino-wagering-bonuses-controller>
34
+ </div>
35
+
36
+ </body>
37
+ </html>
package/index.js ADDED
@@ -0,0 +1 @@
1
+ import './dist/casino-wagering-bonuses-controller.js';
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@everymatrix/casino-wagering-bonuses-controller",
3
+ "version": "0.0.386",
4
+ "main": "index.js",
5
+ "svelte": "src/index.ts",
6
+ "scripts": {
7
+ "start": "sirv public",
8
+ "build": "cross-env NODE_ENV=production rollup -c",
9
+ "dev": "cross-env NODE_ENV=\"development\" rollup -c -w",
10
+ "validate": "svelte-check",
11
+ "test": "echo"
12
+ },
13
+ "devDependencies": {
14
+ "@rollup/plugin-babel": "^5.3.0",
15
+ "@rollup/plugin-commonjs": "^16.0.0",
16
+ "@rollup/plugin-node-resolve": "^10.0.0",
17
+ "@rollup/plugin-typescript": "^6.0.0",
18
+ "@tsconfig/svelte": "^1.0.0",
19
+ "node-sass": "^5.0.0",
20
+ "rollup": "^2.3.4",
21
+ "rollup-plugin-dev-server": "^0.4.3",
22
+ "rollup-plugin-livereload": "^2.0.0",
23
+ "rollup-plugin-svelte": "^7.0.0",
24
+ "rollup-plugin-terser": "^7.0.0",
25
+ "rollup-plugin-uglify": "^6.0.4",
26
+ "svelte-check": "^1.0.0",
27
+ "svelte-preprocess": "^4.0.0",
28
+ "tslib": "^2.0.0",
29
+ "typescript": "^3.9.3"
30
+ },
31
+ "dependencies": {
32
+ "cross-env": "^7.0.3",
33
+ "sirv-cli": "^1.0.0",
34
+ "svelte": "^3.0.0"
35
+ },
36
+ "publishConfig": {
37
+ "access": "public"
38
+ },
39
+ "gitHead": "76e2aac21de1c0afead1ce32e49ff535f5da954e"
40
+ }
Binary file
@@ -0,0 +1,48 @@
1
+ /* http://meyerweb.com/eric/tools/css/reset/
2
+ v2.0 | 20110126
3
+ License: none (public domain)
4
+ */
5
+
6
+ html, body, div, span, applet, object, iframe,
7
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
8
+ a, abbr, acronym, address, big, cite, code,
9
+ del, dfn, em, img, ins, kbd, q, s, samp,
10
+ small, strike, strong, sub, sup, tt, var,
11
+ b, u, i, center,
12
+ dl, dt, dd, ol, ul, li,
13
+ fieldset, form, label, legend,
14
+ table, caption, tbody, tfoot, thead, tr, th, td,
15
+ article, aside, canvas, details, embed,
16
+ figure, figcaption, footer, header, hgroup,
17
+ menu, nav, output, ruby, section, summary,
18
+ time, mark, audio, video {
19
+ margin: 0;
20
+ padding: 0;
21
+ border: 0;
22
+ font-size: 100%;
23
+ font: inherit;
24
+ vertical-align: baseline;
25
+ }
26
+ /* HTML5 display-role reset for older browsers */
27
+ article, aside, details, figcaption, figure,
28
+ footer, header, hgroup, menu, nav, section {
29
+ display: block;
30
+ }
31
+ body {
32
+ line-height: 1;
33
+ }
34
+ ol, ul {
35
+ list-style: none;
36
+ }
37
+ blockquote, q {
38
+ quotes: none;
39
+ }
40
+ blockquote:before, blockquote:after,
41
+ q:before, q:after {
42
+ content: '';
43
+ content: none;
44
+ }
45
+ table {
46
+ border-collapse: collapse;
47
+ border-spacing: 0;
48
+ }
@@ -0,0 +1,61 @@
1
+ import svelte from 'rollup-plugin-svelte';
2
+ import commonjs from '@rollup/plugin-commonjs';
3
+ import resolve from '@rollup/plugin-node-resolve';
4
+ import serve from 'rollup-plugin-dev-server';
5
+ import livereload from 'rollup-plugin-livereload';
6
+ import { terser } from 'rollup-plugin-terser';
7
+ import sveltePreprocess from 'svelte-preprocess';
8
+ import typescript from '@rollup/plugin-typescript';
9
+ import image from '@rollup/plugin-image';
10
+ const production = process.env.NODE_ENV === 'production';
11
+ const dev = process.env.NODE_ENV === 'development';
12
+
13
+ export default {
14
+ input: 'src/index.ts',
15
+ output: {
16
+ sourcemap: true,
17
+ format: 'umd',
18
+ name: 'app',
19
+ file: 'dist/casino-wagering-bonuses-controller.js'
20
+ },
21
+ plugins: [
22
+ svelte({
23
+ preprocess: sveltePreprocess(),
24
+ compilerOptions: {
25
+ // enable run-time checks when not in production
26
+ customElement: true,
27
+ dev: !production
28
+ }
29
+ }),
30
+ image(),
31
+ commonjs(),
32
+ resolve({
33
+ browser: true,
34
+ dedupe: ['svelte']
35
+ }),
36
+ dev && serve({
37
+ open: true,
38
+ verbose: true,
39
+ allowCrossOrigin: true,
40
+ historyApiFallback: false,
41
+ host: 'localhost',
42
+ port: 5050,
43
+ }),
44
+ dev && livereload({ watch: ['', 'dist'] }),
45
+ typescript({
46
+ sourceMap: !production,
47
+ inlineSources: !production,
48
+ }),
49
+ // If we're building for production (npm run build
50
+ // instead of npm run dev), minify
51
+ production &&
52
+ terser({
53
+ output: {
54
+ comments: "all"
55
+ },
56
+ })
57
+ ],
58
+ watch: {
59
+ clearScreen: false
60
+ }
61
+ };
@@ -0,0 +1,95 @@
1
+ <svelte:options tag={null} />
2
+ <script lang="ts">
3
+
4
+ export let endpoint = ''
5
+ export let lang = ''
6
+ export let session = ''
7
+
8
+ import '@everymatrix/casino-wagering-bonus'
9
+ import { fetchApi } from '@everymatrix/casino-wagering-bonus/src/business'
10
+ import { clearEventSource, composeEventSourceMessageHandler, updateEventSourceLifeCycle } from '@everymatrix/casino-wagering-bonus/src/message'
11
+ import { cvtParamsToString } from '@everymatrix/casino-wagering-bonus/src/util'
12
+ import type { CasinoCommonClientBonusApiDataContractsNodesWageringBonusNode as Bonus } from '@everymatrix/casino-wagering-bonus/src/api'
13
+ import { onMount } from 'svelte';
14
+
15
+ let bonuses: Bonus[] = []
16
+ let eventSource
17
+
18
+ const fetcher = async () => {
19
+ if(!endpoint || !lang) return;
20
+
21
+ const result: any = await fetchApi.list(endpoint, lang, session)
22
+
23
+ bonuses = result.items
24
+
25
+ setEventSource()
26
+ }
27
+
28
+ const eventSourceHandler = composeEventSourceMessageHandler({
29
+ "WageringProgressUpdate": (data) => {
30
+ bonuses = bonuses.map(bonus => {
31
+ let currentLevel = data?.items[bonus.bonusWalletID]
32
+ return { ...bonus, currentLevel }
33
+ })
34
+ },
35
+ })
36
+
37
+ const setEventSource = () =>{
38
+ if(!bonuses) return;
39
+
40
+ const params = {
41
+ bonusWalletIDs: bonuses?.map(bonus => bonus.bonusWalletID).join(','),
42
+ XSessionId: session,
43
+ }
44
+
45
+ const url = `${endpoint}/bonus/wagering/updates?${cvtParamsToString(params)}`;
46
+
47
+ eventSource = updateEventSourceLifeCycle(
48
+ url,
49
+ eventSource,
50
+ eventSourceHandler,
51
+ )
52
+ }
53
+
54
+ $: endpoint && fetcher()
55
+ $: lang && fetcher()
56
+ $: session && fetcher()
57
+
58
+ onMount(() => {
59
+ return () => {
60
+ clearEventSource(eventSource, eventSourceHandler)
61
+ eventSource = null
62
+ }
63
+ })
64
+ </script>
65
+
66
+ {#each bonuses as item, index}
67
+ <casino-wagering-bonus
68
+ {endpoint}
69
+ {lang}
70
+ {session}
71
+ rawbonus={JSON.stringify(item)}
72
+ />
73
+ {/each}
74
+
75
+ <style lang="scss">
76
+ :host {
77
+ font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
78
+ }
79
+
80
+ *,
81
+ *::before,
82
+ *::after {
83
+ margin: 0;
84
+ padding: 0;
85
+ list-style: none;
86
+ text-decoration: none;
87
+ outline: none;
88
+ box-sizing: border-box;
89
+ }
90
+
91
+ casino-wagering-bonus::part(Root) {
92
+ margin-bottom: 30px;
93
+ }
94
+
95
+ </style>
package/src/index.ts ADDED
@@ -0,0 +1,4 @@
1
+ import CasinoWageringBonusesController from './CasinoWageringBonusesController.svelte';
2
+
3
+ !customElements.get('casino-wagering-bonuses-controller') && customElements.define('casino-wagering-bonuses-controller', CasinoWageringBonusesController);
4
+ export default CasinoWageringBonusesController;
@@ -0,0 +1,13 @@
1
+ import { html } from 'lit-element';
2
+
3
+ import CasinoWageringBonusesController from '../src/CasinoWageringBonusesController';
4
+
5
+ // This default export determines where your story goes in the story list
6
+ export default {
7
+ title: 'CasinoWageringBonusesController',
8
+ };
9
+
10
+ // 👇 We create a “template” of how args map to rendering
11
+ const CasinoWageringBonusesController = ({ aProperty }) => html`<casino-wagering-bonuses-controller></casino-wagering-bonuses-controller>`;
12
+
13
+ export const FirstStory = CasinoWageringBonusesController.bind({});
@@ -0,0 +1,7 @@
1
+ module.exports = {
2
+ svelte: {
3
+ "language-server": {
4
+ runtime: `sass`
5
+ }
6
+ }
7
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "extends": "@tsconfig/svelte/tsconfig.json",
3
+
4
+ "include": ["src/**/*"],
5
+ "exclude": ["node_modules/*", "__sapper__/*", "public/*"]
6
+ }