mirror of
https://gitlab.com/lecarore/breakout71.git
synced 2025-04-27 23:46:14 -04:00
1 line
No EOL
244 KiB
HTML
1 line
No EOL
244 KiB
HTML
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Breakout 71</title><meta name="description" content="A breakout game with roguelite mechanics. Break bricks, catch coins, pick upgrades, repeat. Play for free on mobile and desktop."><link rel="manifest" href="/PWA/manifest.webmanifest"><style>*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-family:Courier New,Courier,Lucida Sans Typewriter,Lucida Typewriter,monospace}body{width:100vw;height:100vh;height:calc(var(--vh,1vh)*100);color:#fff;background-size:120px 120px;background-color:var(--background1);--background1:#030c23;--background2:#03112a;margin:0;padding:0;overflow:hidden}#game{height:100vh;height:calc(var(--vh,1vh)*100);width:100vw;position:fixed;top:0;left:0}canvas:not(#game){display:none}#score,#menu{z-index:1;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font:inherit;color:#fff;min-width:40px;max-width:calc(100vw - 80px);min-height:40px;text-shadow:0 0 4px var(--level-background);background:0 0;border:none;padding:10px;line-height:20px;position:absolute;top:0;overflow:hidden}#score:hover,#menu:hover,#score:focus,#menu:focus{cursor:pointer;background:rgba(0,0,0,.3)}#score{color:#fff;-o-transition:color .3s;-webkit-transition:color .3s;-o-transition:color .3s;transition:color .3s;right:0}#score.active .score{color:gold;-o-transition:color 10ms;-webkit-transition:color 10ms;-o-transition:color 10ms;transition:color 10ms}#score span{color:rgba(255,255,255,.8)}#score span.great{color:#90ee90}#score span.good,#score span.bad{color:#fff}#menu{left:0}body.has-alert-open{height:auto;overflow:visible}body:not(.has-alert-open) #popup{display:none}#popup{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex;overflow:auto}#popup:before{z-index:10;content:"";background:rgba(0,0,0,.9);display:block;position:fixed;top:0;bottom:0;left:0;right:0}#popup>div{z-index:11;-webkit-transform-origin:50%;-moz-transform-origin:50%;-ms-transform-origin:50%;transform-origin:50%;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-moz-box-align:stretch;-webkit-align-items:stretch;align-items:stretch;width:100%;max-width:500px;margin:auto;padding:20px 10px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex;position:relative}#popup>div>*{margin:0 0 20px;padding:0}#popup>div>section{-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-moz-box-align:stretch;-webkit-align-items:stretch;align-items:stretch;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex}#popup>div>section button{font:inherit;color:#fff;cursor:pointer;text-align:left;background:rgba(0,0,0,.8);border:1px solid #fff;gap:10px;margin-top:-1px;padding:10px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex}#popup>div>section button:not([disabled]):hover{z-index:1;border-color:#f1d33b;position:relative}#popup>div>section button:not([disabled]):focus{z-index:1;border-color:#f1d33b;position:relative}#popup>div>section button[disabled]{opacity:.5;-webkit-filter:saturate(0);filter:saturate(0);cursor:not-allowed}#popup>div>section button>div{-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex-grow:1;flex-grow:1}#popup>div>section button>div>em{opacity:.8;display:block}#popup>div>section button.grey-out-unless-hovered:not(:hover){opacity:.6}#popup>div>section button.grey-out-unless-hovered:not(:hover) img{-webkit-filter:saturate(0);filter:saturate(0)}#popup>div>section button.grey-out-unless-hovered[disabled]{opacity:.2}#popup.actionsAsGrid>div{max-width:none}#popup.actionsAsGrid>div>div,#popup.actionsAsGrid>div>p,#popup.actionsAsGrid>div>h1,#popup.actionsAsGrid>div>h2{width:100%;max-width:550px;margin-left:auto;margin-right:auto}#popup.actionsAsGrid>div section{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}#popup button#close-modale{color:#fff;cursor:pointer;z-index:12;background:0 0;border:none;width:60px;height:60px;position:fixed;top:0;right:0;overflow:hidden}#popup button#close-modale:before{content:"+";font-size:80px;display:inline-block;position:absolute;top:34px;left:26px;-webkit-transform:translate(-50%,-50%)rotate(45deg);-moz-transform:translate(-50%,-50%)rotate(45deg);-ms-transform:translate(-50%,-50%)rotate(45deg);transform:translate(-50%,-50%)rotate(45deg)}#popup button#close-modale:hover{background:#000;font-weight:700}#popup .textAfterButtons{color:rgba(255,255,255,.58)}#popup a[href]{color:inherit}#popup a[href]:hover,#popup a[href]:focus{color:#fff}@media (min-width:1400px){#popup.settings:before{opacity:0}#popup.settings>div{max-width:400px;margin-right:0}}.progress{color:#fff;text-align:center;background:#1c1c2f;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:5px 10px;display:block;position:relative;overflow:hidden;-webkit-box-shadow:inset 3px 3px 5px rgba(0,0,0,.5);-moz-box-shadow:inset 3px 3px 5px rgba(0,0,0,.5);box-shadow:inset 3px 3px 5px rgba(0,0,0,.5)}.progress>.progress_bar_part{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;z-index:1;background:#4049ca;-webkit-animation:1s ease-out both grow;animation:1s ease-out both grow;display:block;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-box-shadow:inset 3px 3px 5px rgba(0,0,0,.5);-moz-box-shadow:inset 3px 3px 5px rgba(0,0,0,.5);box-shadow:inset 3px 3px 5px rgba(0,0,0,.5)}.progress>span{z-index:2;display:block;position:relative}@-webkit-keyframes grow{0%{-webkit-transform:scaleX(0);-moz-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0)}}@keyframes grow{0%{-webkit-transform:scaleX(0);-moz-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0)}}#level-recording-container{text-align:center;max-width:400px;margin:40px}#level-recording-container video{max-width:100%;height:auto}#level-recording-container a{display:block}#level-recording-container a video{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;outline:1px solid #fff;margin:20px auto;display:block;-webkit-box-shadow:2px 2px 5px #000;-moz-box-shadow:2px 2px 5px #000;box-shadow:2px 2px 5px #000}.histogram{-webkit-box-align:stretch;-moz-box-align:stretch;-webkit-align-items:stretch;align-items:stretch;gap:10px;margin:10px 0 40px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex}.histogram>span{-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex-grow:1;flex-grow:1;-webkit-box-pack:end;-moz-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;width:10px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex;position:relative}.histogram>span.active>span{background:#4049ca}.histogram>span>span{background:#1c1c2f;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;width:100%;min-height:1px;display:block}.histogram>span>span>span{pointer-events:none;white-space:nowrap;-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%;text-align:center;font-size:13px;display:block;position:absolute;bottom:-20px;left:50%;-webkit-transform:translate(-50%);-moz-transform:translate(-50%);-ms-transform:translate(-50%);transform:translate(-50%)}.histogram>span:not(:hover):not(.active)>span>span{opacity:0}h2.histogram-title{color:#3b3f75;font-size:18px}h2.histogram-title strong{color:#4049ca}.red-icon{background:red}.red-icon img{-webkit-filter:saturate(0);filter:saturate(0);mix-blend-mode:luminosity}.upgrade{gap:2px;margin:0 0 10px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex}.upgrade img{width:32px;height:32px}.upgrade p{color:rgba(255,255,255,.6);-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex-grow:1;flex-grow:1;margin:0 20px}.upgrade.used p strong{color:#fff}.upgrade>span{-webkit-box-flex:0;-moz-box-flex:0;-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;-webkit-align-self:center;align-self:center;width:5px;height:32px;display:inline-block}.upgrade>span.used{background:#fff}.upgrade>span.free{opacity:.25;background:#fff}.upgrade>span.banned{background:red}.upgrade.used{opacity:1}.upgrade.free,.upgrade.banned{opacity:.8}#tooltip{color:#fff;z-index:11;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:1;background:#000;border:1px solid #fff;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;max-width:300px;padding:10px;display:block;position:fixed;top:0;left:0}#popup.history>div{max-width:none}#popup.history>div table th:hover{cursor:pointer;background:#000}#popup.history>div table td,#popup.history>div table th{text-align:right;padding:0 5px;line-height:20px}#popup.history>div table th:first-child,#popup.history>div table td:first-child{text-align:left}#popup.history>div table img{pointer-events:none;width:20px;height:auto}#popup.history>div table tr:nth-child(2n){background:rgba(0,0,0,.58)}.progress-inline{background:gray;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;height:7px;display:block;position:absolute;bottom:2px;left:62px;right:2px}.progress-inline span{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;background:#fff;position:absolute;top:1px;bottom:1px;left:1px;right:1px}</style><link rel="icon" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22500%22%20height%3D%22500%22%3E%3Cpath%20fill%3D%22%236262EA%22%20d%3D%22M0%200h300v100H0zM200%20100h100v100H200zM100%20200h100v200H100z%22%2F%3E%3Cpath%20fill%3D%22%235DA3EA%22%20d%3D%22M200%20200h100v100H200zM300%20100h100v300H300zM200%20400h300v100H200z%22%2F%3E%3C%2Fsvg%3E"></head><body> <button id="menu">☰ <span id="menuLabel">menu</span></button> <button id="score"></button> <canvas id="game"></canvas> <div id="popup"> <button id="close-modale"></button> </div> <div id="tooltip" style="display:none"></div> <script>!function(){function e(e,_,t,r){Object.defineProperty(e,_,{get:t,set:r,enumerable:!0,configurable:!0})}function _(e){return e&&e.__esModule?e.default:e}var t,r,a,n,o,s,l,i,u,c,p,d,m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},g={},b={},h=m.parcelRequire94c2;null==h&&((h=function(e){if(e in g)return g[e].exports;if(e in b){var _=b[e];delete b[e];var t={id:e,exports:{}};return g[e]=t,_.call(t.exports,t,t.exports),t.exports}var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}).register=function(e,_){b[e]=_},m.parcelRequire94c2=h);var v=h.register;v("5mG9B",function(_,t){function r(e,_,t,r,a,n,o){try{var s=e[n](o),l=s.value}catch(e){t(e);return}s.done?_(l):Promise.resolve(l).then(r,a)}function a(e){return function(){var _=this,t=arguments;return new Promise(function(a,n){var o=e.apply(_,t);function s(e){r(o,a,n,s,l,"next",e)}function l(e){r(o,a,n,s,l,"throw",e)}s(void 0)})}}e(_.exports,"_",function(){return a})}),v("6QuVk",function(_,t){function r(e,_){var t,r,a,n={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return o.next=s(0),o.throw=s(1),o.return=s(2),"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(s){return function(l){return function(s){if(t)throw TypeError("Generator is already executing.");for(;o&&(o=0,s[0]&&(n=0)),n;)try{if(t=1,r&&(a=2&s[0]?r.return:s[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,s[1])).done)return a;switch(r=0,a&&(s=[2&s[0],a.value]),s[0]){case 0:case 1:a=s;break;case 4:return n.label++,{value:s[1],done:!1};case 5:n.label++,r=s[1],s=[0];continue;case 7:s=n.ops.pop(),n.trys.pop();continue;default:if(!(a=(a=n.trys).length>0&&a[a.length-1])&&(6===s[0]||2===s[0])){n=0;continue}if(3===s[0]&&(!a||s[1]>a[0]&&s[1]<a[3])){n.label=s[1];break}if(6===s[0]&&n.label<a[1]){n.label=a[1],a=s;break}if(a&&n.label<a[2]){n.label=a[2],n.ops.push(s);break}a[2]&&n.ops.pop(),n.trys.pop();continue}s=_.call(e,n)}catch(e){s=[6,e],r=0}finally{t=a=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,l])}}}function a(e){var _="function"==typeof Symbol&&Symbol.iterator,t=_&&e[_],r=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(_?"Object is not iterable.":"Symbol.iterator is not defined.")}e(_.exports,"__generator",function(){return r}),e(_.exports,"__values",function(){return a}),h("6kDwf"),"function"==typeof SuppressedError&&SuppressedError}),v("6kDwf",function(_,t){e(_.exports,"_",function(){return r});function r(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}}),v("kqXj6",function(_,t){e(_.exports,"getBundleURL",function(){return r},function(e){return r=e});var r,a={};r=function(e){var _=a[e];return _||(_=function(){try{throw Error()}catch(_){var e=(""+_.stack).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\/\/[^)\n]+/g);if(e)return(""+e[2]).replace(/^((?:https?|file|ftp|(chrome|moz|safari-web)-extension):\/\/.+)\/[^/]+$/,"$1")+"/"}return"/"}(),a[e]=_),_}});var f=h("5mG9B");function y(e,_,t){return _ in e?Object.defineProperty(e,_,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[_]=t,e}function k(e){for(var _=1;_<arguments.length;_++){var t=null!=arguments[_]?arguments[_]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(_){y(e,_,t[_])})}return e}function W(e,_){(null==_||_>e.length)&&(_=e.length);for(var t=0,r=Array(_);t<_;t++)r[t]=e[t];return r}function w(e){return function(e){if(Array.isArray(e))return W(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,_){if(e){if("string"==typeof e)return W(e,void 0);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return W(e,void 0)}}(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var x=h("6QuVk");function S(e,_){return _=null!=_?_:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(_)):(function(e,_){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(_)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(_,t))}),e}var z={};z=JSON.parse('{"_":"","B":"black","W":"#FFFFFF","g":"#231f20","y":"#ffd300","b":"#6262EA","t":"#5DA3EA","s":"#E67070","r":"#e32119","R":"#ab0c0c","c":"#59EEA3","G":"#A1F051","v":"#A664E8","p":"#E869E8","a":"#5BECEC","C":"#53EE53","S":"#F44848","P":"#E66BA8","O":"#F29E4A","k":"#618227","e":"#e1c8b4","l":"#9b9fa4"}');var q={};q=JSON.parse('[{"name":"71 mini","size":5,"bricks":"bbb____bt__btt__b_t___ttt","svg":1,"color":""},{"name":"Butterfly","bricks":"_________bb_t_t_bbbbb_t_bbbbbbbtbbbb_bbbtbbb____btb____bbbtbbb__bb_t_bb__________","size":9,"svg":2,"color":""},{"name":"Castle","size":7,"bricks":"s_s_s_ssssssssssBBBssssBBBssttbbbttttbbbtttbtbtbt","svg":3,"color":""},{"name":"Eyes","size":9,"bricks":"ttttttt__tWWWWWWW_tWrrWttW_tWWWWWWW_ttttttt_____t______ttttt____ttttt_____t_t","svg":4,"color":"","credit":"https://steamcommunity.com/sharedfiles/filedetails/?id=487035876"},{"name":"Creeper","size":10,"bricks":"___________ccGGccGG__cGccGcGc__GBBccBBc__cBBGcBBc__GccBBGGc__ccBBBBcG__GGBBBBcG__cGBccBGc___________","svg":5,"credit":"https://en.wikipedia.org/wiki/Creeper_(Minecraft)","color":""},{"name":"Stairs","size":8,"bricks":"tt______tt______bbtt____bbtt____vvbbtt__vvbbtt__ppvvbbttppvvbbtt","svg":6,"color":""},{"name":"Dots","size":9,"bricks":"b_t_a_c_c__________b_t_a_c__________P_b_t_a_c__________P_b_t_a__________P_P_b_t_a","svg":7,"color":""},{"name":"Lines","size":9,"bricks":"aaaaaaaa___________tttttttt_________aaaaaaaa___________tttttttt_________aaaaaaaa","svg":8,"color":""},{"name":"Heart","size":15,"bricks":"__________________RRR___RRR_____RSSSR_RSSSR___RSWWSSRSSSSSR__RSWSSSSSSSSSR__RSSSSSSSSSSSR__RSWSSSSSSSSSR___RSSSSSSSSSR_____RSSSSSSSR_______RSSSSSR_________RSSSR___________RSR_____________R____________________________________","svg":17,"color":"","credit":"https://www.youtube.com/watch?v=gdWiTfzXb1g"},{"name":"Swiss","size":7,"bricks":"________RRRRR__RRWRR__RWWWR__RRWRR__RRRRR","svg":13,"color":""},{"name":"Germany","size":6,"bricks":"_______gggg__rrrr__yyyy","svg":8,"color":""},{"name":"France","size":8,"bricks":"_________ttWWrr__ttWWrr__ttWWrr__ttWWrr__ttWWrr________","svg":null,"color":""},{"name":"Smiley","size":8,"bricks":"_________yy__yy__yy__yy__________________yyyyyy___yyyy__________","svg":29,"color":""},{"name":"Labyrinthe","size":11,"bricks":"_______tttS_Stttt_S________t___S__Stt_ttttt____t_____S__ttt_S_S____t___t_tttt_t_S_t____tSt_t_t_Sttt___t_t_____Sttt_tttttS","svg":21},{"name":"Temple","size":11,"bricks":"_______________WWW______WWWWWWW___WWWWWWWWW___b_b_b_b____b_b_b_b____v_v_v_v____P_P_P_P____P_P_P_P____WWWWWWW___WWWWWWWWW_","svg":null,"color":""},{"name":"Pacman","size":12,"bricks":"____yyyy______yyyyyyyy___yyyyByyyyy__yyyyyyyyy__yyyyyyyy____yyyyyy______yyyyyy___S_Syyyyyyyy_____yyyyyyyyy___yyyyyyyyyy___yyyyyyyy______yyyy","svg":7,"color":"","credit":"https://en.wikipedia.org/wiki/Pacman"},{"name":"Ship","size":11,"bricks":"____sWW________sWWW_______sWWW_______s___OOOOOOOOOOOOOO_OBOBOBOBOO__OOOOOOOO_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb___________","svg":19},{"name":"We come in peace","size":13,"bricks":"________________a_____a_______a___a_______aaaaaaa_____aaBaaaBaa___aaaaaaaaaaa__aaaaaaaaaaa__a_aaaaaaa_a__a_a_____a_a_____aa_aa_____________________________","svg":29,"color":"","credit":"https://en.wikipedia.org/wiki/Space_invaders"},{"name":"Space mushroom","size":10,"bricks":"______________WW_______WWWW_____WWWWWW___WWBWWBWW__WWWWWWWW____W__W_____W_WW_W___W_W__W_W","svg":6,"color":"","credit":"https://en.wikipedia.org/wiki/Space_invaders"},{"name":"Wololo","size":9,"bricks":"____WW_OOW___WW__OWW__W___OWWWbbbW_WWW_WbW_WOW__WWb__OW__bbb__O___W_W__O___W_W__O","svg":null,"color":"","credit":"https://aoe.heavengames.com/theacademy/unitsboatsandbuildings/priest/"},{"name":"Small heart","size":15,"bricks":"________________________________RRRR___RRRR___RrWWrR_RWWrrR__RWWrrrRWWrrrR__RrrrrrrrrrrrR__RrrrrrrrrrrrR___RrrrrrrrrrR_____RrrrrrrrR_______RrrrrrR_________RrrrR___________RrR_____________R______________________","svg":29,"color":""},{"name":"Eye","size":9,"bricks":"____________ggg_____gWWWg___gWbbbWg_gWWbBbWWg_gWbbbWg___gWWWg_____ggg____________","svg":null,"color":"#5da3ea"},{"name":"Enderman","size":10,"bricks":"___________gggggggg__gggggggg__gggggggg__gggggggg__vvvggvvv__gggggggg__gggggggg__gggggggg_____________________","svg":null,"color":"#154b07","credit":"https://minecraft.wiki/w/Enderman"},{"name":"Mushroom","size":16,"bricks":"_____________________rrrrWW________WWrrrrWWWW_____WWrrrrrrWWWW____WrrWWWWrrWWW___rrrWWWWWWrrrrr__rrrWWWWWWrrWWr__WrrWWWWWWrWWWW__WWrrWWWWrrWWWW__WWrrrrrrrrrWWr__WrrWWWWWWWWrrr_____WWBWWBWW_______WWWBWWBWWW______WWWWWWWWWW_______WWWWWWWW____________________","svg":null,"color":"","credit":"https://pixelartmaker.com/art/cce4295a92035ea"},{"name":"Tulip","size":11,"bricks":"______________R_R_R______RRRRR______RRRRR______RRRRR_______RRR_________k________k_k_k______k_k_k_______kkk_________k________________","svg":17,"color":""},{"name":"Chain","size":7,"bricks":"yyy____yBy____yyyyy____yBy____yyyyy____yBy____yyy","svg":31,"color":""},{"name":"Marion","size":9,"bricks":"rr_____rr_rr___rr__rrr_rrr__rrrrrrr__rr_r_rr__rr___rr__rr___rr__rr___rr_rrr___rrr","svg":27,"color":""},{"name":"Renan","size":9,"bricks":"yyyyyyy___yyyyyyy__yy___yy__yy___yy__yyyyyy___yy_yy____yy__yy___yy___yy_yyy___yyy","svg":3,"color":""},{"name":"Violet Pairs","size":8,"bricks":"b_b_b_b_b_b_b_b__________t_t_t_t_t_t_t_t________b_b_b_b_b_b_b_b","svg":5,"color":""},{"name":"Red Cups","size":11,"bricks":"___________rBr_rBr_rBrrrr_rrr_rrr___________r_rBr_rBr_rr_rrr_rrr_r___________rBr_rBr_rBrrrr_rrr_rrr__________","svg":23,"color":""},{"name":"Cactus","size":10,"bricks":"____G______rG_Gk______G_Gk______kkkk_r_____kkk_G______GkGk_____rGkk_______Gk________kk________kk_____","svg":27,"color":""},{"name":"Sunny Face","size":11,"bricks":"____yyy______yyyyyyy___yyyyyyyyy__yyyyyyyyy_yyyWWyWWyyyyyyyyyyyyyyyyyyyyyyyyy_yyWWWWWyy__yyyWWWyyy___yyyyyyy______yyy","svg":null,"color":"#5da3ea"},{"name":"Mountain","size":9,"bricks":"_______________W_______WWW______GGWW__W_GGGGG_kkkGGGGG_kkkkGGGGkkkkkGGGGkkkkkkGGG_________","svg":15,"color":""},{"name":"Dollar","size":17,"bricks":"________________________G_G______________G_G____________GGGGGGG_________GGGGGGGGG_______GG__G_G__GG______GG__G_G__GG______GG__G_G___________GGGGGGGG__________GGGGGGGG___________G_G__GG______GG__G_G__GG______GG__G_G__GG_______GGGGGGGGG_________GGGGGGG____________G_G______________G_G________________________","svg":null,"color":""},{"name":"Waves","size":8,"bricks":"___bbb____bbb____bbttbbbbbttbbbbttttaatttttaattttaaaaaaa","svg":20,"color":""},{"name":"Box","size":8,"bricks":"yyyyyyyyy______yy_bbbb_yy_b__b_yy_b__b_yy_bbbb_yy______yyyyyyyyy","svg":30,"color":"","squared":false},{"name":"Rose","size":9,"bricks":"__SS______SSSS_____SSSS_____SSSS______SS_k______k_kk_____kk_k______kk________k","svg":17,"color":""},{"name":"Time","size":9,"bricks":"__________WWWWWWW___WWWWW_____yyy_______y________y_______WyW_____WyyyW___yyyyyyy__________","svg":9,"color":"","squared":false},{"name":"Watermelon","size":8,"bricks":"_____Sk_____SSBk___SBSSk__SSSSSk_SSBSSk_SBSSSSk_kSSSkk___kkk____","svg":28,"color":""},{"name":"Worms","size":13,"bricks":"___sssss_______sssssss______WWsWWsss_____WBsBWsss_____WBsBWsss_____WWsWWsss_____sssssss_______ssssss_____WWWWWWss_______WssWs__s_____ssss__sss___sssssssssss__sssssssss_ss","svg":null,"color":"","squared":false,"credit":"https://en.wikipedia.org/wiki/Worms_(series)"},{"name":"Ocean Sunrise","size":8,"bricks":"SSSSSSSSSSSyySSSSSyyyySSSyyyyyySbttttttbbbttttbbbbbttbbbbbbbbbbb","svg":12,"color":""},{"name":"Crosses","size":13,"bricks":"b___b___b___b__v___v___v___vvv_vvv_vvv___v___v___v__p___p___p___ppp_ppp_ppp_ppp___p___p___p__P___P___P___PPP_PPP_PPP___P___P___P__p___p___p___ppp_ppp_ppp_ppp___p___p___p","svg":10,"color":""},{"name":"Negative space","size":9,"bricks":"tttttttttt_t_t_t_t_________b_b_b_b_bbbbbbbbbb_b_b_b_b___________t_t_t_t_ttttttttt_________","svg":null},{"name":"UK","size":11,"bricks":"brbbWrWbbrbbbrbWrWbrbbbbbrWrWrbbbWWWWWrWWWWWrrrrrrrrrrrWWWWWrWWWWWbbbrWrWrbbbbbrbWrWbrbbbrbbWrWbbrb__________","svg":null,"color":""},{"name":"Greece","size":11,"bricks":"ttWttttttttttWttWWWWWWWWWWWttttttttWttWWWWWWttWttttttttWWWWWWWWWWWtttttttttttWWWWWWWWWWWttttttttttt__________","svg":null,"color":""},{"name":"Russia","size":8,"bricks":"________WWWWWWWWWWWWWWWWttttttttttttttttrrrrrrrrrrrrrrrr________________","svg":null,"color":""},{"name":"Ukraine","size":8,"bricks":"________ttttttttttttttttttttttttyyyyyyyyyyyyyyyyyyyyyyyy________","svg":null,"color":""},{"name":"Poland","size":7,"bricks":"________WWWWW__WWWWW__rrrrr__rrrrr_______________","svg":null,"color":""},{"name":"Yellow 71","size":9,"bricks":"_________yyyyy__yyyyyyy_yyy___yy__yy__yyy__yy_yyy___yy_yy____yy_yy____yy__________________","svg":26,"color":""},{"name":"71 on white","size":6,"bricks":"WWWWWWrrrWWrWWrWrrWrWWWrWrWWWrWWWWWW______","svg":null},{"name":"Blue 71","size":8,"bricks":"ttttt__bttttt_bb___ttbbb__tt__bb__tt__bb_tt___bb_tt___bb_tt___bb","svg":null,"color":""},{"name":"Seventy one","size":21,"bricks":"rr_yy_rrry_yrrry_yrrrr_ry_yr__y_yr_ry_y_r_rr_yy_rr_yy_r_ry_y_r_r_ry_yr__y_yr_ry_y_r_rr_y_yrrry_yrrryyy_r_yyy__________________y______________r_____yyyrrry_yrrryyyrr_y_y__yrr_y_yrr_y_yr__y_yyyyrrr_y_rrry_yrrryyy____________________yrrryyyrrr_________yy_r_ry_yrr_____________rrry_yrrryyyyyyyyyyyy_____________________________________________________________________________________________________________________________","svg":null},{"name":"B71","size":10,"bricks":"__________bbbtttt_b_b__b__tbb_b__b__t_b_bbb__t__b_b__b_t__b_b__bt___b_bbb_t__bbb__________","svg":null},{"name":"Pig","size":9,"bricks":"__________PP___PP__PPP_PPP__WWPPPWW__WBPPPBW__PPsssPP__PsBsBsP__PPsssPP___________","svg":null},{"name":"Big Pig","size":15,"bricks":"________________sss_______sss__ss__sssss__ss____sssssssss_____sWBsssssBWs___ssBBsssssBBss__ssss_____ssss__sss_sssss_sss__sss_sBsBs_sss__sss_sssss_sss___sss_____sss____sssssssssss__GGGsssssssssGGGGGGsGsssssGsGGGGGGssGGGGGssGGG_______________","svg":2,"color":""},{"name":"Donkey Kong","size":9,"bricks":"OOr__a___OOr__a___ppppppp_O______a________a____pppppppr_a______b_a___O__ppppppp__","svg":null,"color":""},{"name":"Banana","size":12,"bricks":"_________________e__________eee_________eee_________eee_________eeeyy_____yyeeyyyy___yyyyey_yC___yy_yyy___C_____yyyy_________yyyy_________yyyy","svg":null},{"name":"Fox","size":8,"bricks":"e______eee_OO_eeeeOOOOeeeOBOOBOeOOOOOOOO_WWBBWW___WWWW_____WW___","svg":null},{"name":"Wiki","size":10,"bricks":"_______________________GGGG_____GGkkGG___GkggggkG__GgWWWWgG__GkggggkG___GGkkGG_____GGGG_______________________","svg":null},{"name":"Baby Dog","size":8,"bricks":"_______W__eeeeWWWWeeWeWWWegWegeeeeWWWWee_eWggWe__eWWWWe____WW","svg":null},{"name":"dog 21","size":9,"bricks":"__________O_____O_OOOWWWOOOOOWWWWWOOOOeWWWWOO_eBeWWBW__eBeWWBW___eWBWW_____WRW____________","svg":null,"credit":"https://prohama.com/dog-21-pattern/"},{"name":"icon:extra_life","size":9,"bricks":"___________rr_rr___rrrrrrr_rrrrrrrrrrrrrrrrrr_rrrrrrr___rrrrr_____rrr_______r_____________","svg":null},{"name":"icon:streak_shots","size":8,"bricks":"_W_W_W__W_W_W_W_tttttt_WttttttW________W______W______W_____WWWW_","svg":null},{"name":"icon:base_combo","size":5,"bricks":"ttttttytytttttttytytttttt","svg":null},{"name":"icon:slow_down","size":10,"bricks":"_____________kk_______kkkk_____kkkkkkGG__kkkkkkGBG_kkkkkkGGGGkkkkkkGG__GGGGGG____GG__GG_____________","svg":null},{"name":"icon:bigger_puck","size":8,"bricks":"_________tttttt__tttttt______________________W___________WWWWWW_","svg":null},{"name":"icon:viscosity","size":8,"bricks":"________tt______bbtt__ttbbbbttbbbtbbtbbbbbtbbtbbbbbybbybbbbbbbbb","svg":null},{"name":"icon:left_is_lava","size":8,"bricks":"r_______rtttttt_rtttttt_r_______r_______r____W__r_______r_WWW___","svg":null},{"name":"icon:right_is_lava","size":8,"bricks":"_______r_ttttttr_ttttttr_______r_______r_____W_r_______r__WWW__r","svg":null},{"name":"icon:telekinesis","size":8,"bricks":"_____PW_____s______P______s_______P_______s_______P_____WWWWW","svg":null},{"name":"icon:top_is_lava","size":8,"bricks":"rrrrrrrr_tttttt__tttttt____________________W_______________WWW__","svg":null},{"name":"icon:coin_magnet","size":8,"bricks":"__y__y_yy_________y_y_y_y________y_y______________y______WWW____","svg":null},{"name":"icon:skip_last","size":5,"bricks":"_ttt_t_t_ttt_ttt_t_t_ttt_","svg":null},{"name":"icon:multiball","size":8,"bricks":"_________tttttt__tttttt___________W__W____________________WWW___","svg":null},{"name":"icon:smaller_puck","size":8,"bricks":"_________tttttt__tttttt_____________W_____________________WW____","svg":null},{"name":"icon:pierce","size":6,"bricks":"ttttttttttWtttt__ttt__ttt__ttt__tttt","svg":null},{"name":"icon:picky_eater","size":8,"bricks":"_rrr_______ry_____ryy_____r_y______yyy______________y_____WWWW__","svg":null},{"name":"icon:metamorphosis","size":8,"bricks":"aaaaaa__aaaa__________W___________ttaatt__tttttt_________WWW","svg":null},{"name":"icon:compound_interest","size":8,"bricks":"_________tttttt__ttt__t______y_____________W__y_________rrWWWrrr","svg":null},{"name":"icon:hot_start","size":7,"bricks":"ttttttttttt_tt_____W_____y_y_____y_____y_y_WWW_y_","svg":null},{"name":"icon:sapper","size":9,"bricks":"_____WW______W__W_tttWttt_yttgggtt__tgggggt__tgggggt__tgggggt__ttgggtt__ttttttt___________","svg":null,"color":"#000000"},{"name":"icon:bigger_explosions","size":8,"bricks":"__r_______ry_rr___ryry__ryyyW_rr_rrWyyy___yryrr__yrry_rr_rr","svg":null},{"name":"icon:extra_levels","size":6,"bricks":"__________b__t_bb_ttt_b__t_bbb____________","svg":null},{"name":"icon:pierce_color","size":8,"bricks":"bb___bbbb__b_bbb_____bbb____bbbbb____bbbbb____bbbbb____bbbbb____","svg":null},{"name":"icon:soft_reset","size":8,"bricks":"___rg_____rrgg___rryggg_rryWggggrryWgggg_ryyggg___rrgg_____rg___","svg":null},{"name":"icon:ball_repulse_ball","size":8,"bricks":"WsP__PsWs______sP______P________________P______Ps______sWsP__PsW","svg":null},{"name":"icon:ball_attract_ball","size":8,"bricks":"__P__P____s__s__PsW__WsP________________PsW__WsP__s__s____P__P__","svg":null},{"name":"icon:puck_repulse_ball","size":8,"bricks":"__________________W_______s___W___P__s______P____________WWW__","svg":null},{"name":"A","size":7,"bricks":"__ttt___ttttt_ttt_ttttt___ttttttttttt___tttt___tt","svg":null},{"name":"B","size":9,"bricks":"_bbbbb_____bb_bb____bb_bb____bb_bb____bbbb_____bb_bb____bb_bb____bb_bb___bbbbb____","svg":null},{"name":"C","size":8,"bricks":"__rrrr___rrrrrr_rrr___rrrr______rr______rrr___rr_rrrrrr___rrrr","svg":null},{"name":"D","size":8,"bricks":"_GGGGG____GG__G___GG__GG__GG__GG__GG__GG__GG__GG__GG__G__GGGGG","svg":null},{"name":"e","size":8,"bricks":"__tttt___tttttt_tt____tttt____tttttttttttt_______tt__tt___tttt_","svg":null},{"name":"icon:wind","size":9,"bricks":"_ss______s___PPPP_s_________sssssss___________sssssss_s________s___PPPP__ss","svg":null},{"name":"icon:sturdy_bricks","size":7,"bricks":"ttbttttbtttbtt____W_____W_W___W___W_______WWW____","svg":null},{"name":"icon:respawn","size":9,"bricks":"tttt___ttttt__t__ttta_ttt_______________________________W_________________WWW","svg":null},{"name":"Elephant","size":18,"bricks":"_________________________llll_________lll_llllll_lll___lsssllllllllsssl__lsssllllllllsssl__lsssllBllBllsssl__lssllWllllWllssl___ll__llllll__ll_________llll_______________ll______________llll______________ll________________________________________________________________________________________________________________________________________","svg":25,"color":"","credit":"https://prohama.com/elephant-5-pattern/"},{"name":"Orca","size":20,"bricks":"____________________________________________________________________________________________ggggg____ggg_ggg___ggggggg____ggggg___ggggggggg____ggg___ggggWggWWW_____gggggggggggWWWW_____ggggggggggWWWWW_____gggggggggWWWWW_______gggggggWWWWW___________WWggWWW______________ggg_gg______________gg__g__________________________________________________________________________________________________________","svg":null,"color":"#1c71d8","credit":"https://prohama.com/whale-2-pattern/"},{"name":"Shark","size":17,"bricks":"__________________________________________g_______________ggg____________ggggggg_________ggggggggg_______ggggggggggg_____gggggWWWggggg____gBgWWWWWWWgBg___ggWWWWrWrWWWWgg__ggWWWrrrrrWWWgg_ggWWWrrrrrrrWWWggggWWrrrrrrrrrWWgggWWWrWrWrWrWrWWWggWWrrWWWWWWWrrWWggWWWWWWWWWWWWWWWg_________________","svg":null,"color":"#3584e4","credit":"https://prohama.com/shark-2-pattern/"},{"name":"Bird","size":13,"bricks":"_______RRR____R____RSSSR___RR__RSSWWWR__RSR_RSWWBWR__RSSRRSWWWWyy_RSSSRSWWWR___RSSSSSSRR_____RRSSyyyy______RSyyyyy___RRRRSyyyy____RSSSRyyy_____RRRR______________________","svg":null,"color":"","credit":"https://prohama.com/bird-1-size-13x12/"},{"name":"Tux","size":14,"bricks":"_____gggg________gggggggg_____gggggggggg____gggggggggg___gggggggggggg__gggWBggWBggg__gggBBggBBggg__ggggyyyygggg_ggggggyyggggggggggWWWWWWggggg_gWWWWWWWWg_g__WWWWWWWWWW____WWWWWWWWWW____yyy____yyy__","svg":null,"color":"#62a0ea","credit":"https://prohama.com/pingwin-4-pattern/"},{"name":"Armenia","size":6,"bricks":"_______rrrr__bbbb__yyyy_____________","svg":null,"color":""},{"name":"Austria","size":6,"bricks":"_______rrrr__WWWW__rrrr______","svg":null,"color":""},{"name":"Benin","size":8,"bricks":"_________kkyyyy__kkyyyy__kkrrrr__kkrrrr__________________________","svg":null,"color":""},{"name":"Botswana","size":10,"bricks":"___________tttttttt__tttttttt__tttttttt__WWWWWWWW__BBBBBBBB__WWWWWWWW__tttttttt__tttttttt__tttttttt___________","svg":null,"color":""},{"name":"Bulgaria","size":6,"bricks":"_______WWWW__cccc__rrrr_____________","svg":null,"color":""},{"name":"Canada","size":7,"bricks":"________rWWWr__rWrWr__rWWWr______________________","svg":null,"color":""},{"name":"Chad","size":8,"bricks":"_________bbyyRR__bbyyRR__bbyyRR","svg":null,"color":""},{"name":"China","size":8,"bricks":"_________RRyRRR__RyRyRR__RRyRRR__RRRRRR","svg":null,"color":""},{"name":"Colombia","size":7,"bricks":"________yyyyy__yyyyy__bbbbb__RRRRR_______________","svg":null,"color":""},{"name":"Republic of the Congo","size":7,"bricks":"________kkkyy__kkyyr__kyyrr__yyrrr_______________","svg":null,"color":""},{"name":"Côte d\'Ivoire","size":8,"bricks":"_________OOWWGG__OOWWGG__OOWWGG","svg":null,"color":""},{"name":"Denmark","size":8,"bricks":"_________rrWrrr__rrWrrr__WWWWWW__rrWrrr__rrWrrr","svg":null,"color":""},{"name":"El Salvador","size":8,"bricks":"_________bbbbbb__bbbbbb__WWWkWW__WWkWWW__bbbbbb__bbbbbb","svg":null,"color":""},{"name":"Egypt","size":8,"bricks":"_________RRRRRR__RRRRRR__WWWyWW__WWyWWW__gggggg__gggggg","svg":null,"color":"#1c71d8"},{"name":"Estonia","size":8,"bricks":"_________tttttt__tttttt__gggggg__gggggg__WWWWWW__WWWWWW","svg":null,"color":"#986a44"},{"name":"Finland","size":6,"bricks":"_______WtWW__tttt__WtWW_____________","svg":null,"color":""},{"name":"Gabon","size":5,"bricks":"______CCC__yyy__ttt______","svg":null,"color":""},{"name":"Georgia","size":9,"bricks":"__________WrWrWrW__WWWrWWW__rrrrrrr__WWWrWWW__WrWrWrW__________________","svg":null,"color":""},{"name":"Guinea","size":8,"bricks":"_________rryycc__rryycc__rryycc","svg":null,"color":""},{"name":"Indonesia","size":6,"bricks":"_______rrrr__rrrr__WWWW__WWWW_______","svg":null,"color":""},{"name":"icon:one_more_choice","size":7,"bricks":"ttt____tbbb___tbttt__tbtbbb__btbbb___tbbb____bbb_","svg":null},{"name":"icon:instant_upgrade","size":5,"bricks":"ttt__tbbb_tbbb_tbbb__bbb_","svg":null},{"name":"icon:checkmark_checked","size":6,"bricks":"_ggggbgBBBbbbbBbbggbbbBggBbBBg_gggg_","svg":null},{"name":"icon:checkmark_unchecked","size":6,"bricks":"_gggg_gBBBBggBBBBggBBBBggBBBBg_gggg_","svg":null},{"name":"icon:concave_puck","size":8,"bricks":"___________W_______________W____________W__W__W_WW___WW_WWWWWWW_","svg":null,"color":""},{"name":"icon:helium","size":8,"bricks":"v______vvv____vvv______vv______vv______vv______vv______v__WWWW__","svg":null,"color":""},{"name":"icon:asceticism","size":8,"bricks":"_________y____y____W____y______y_________y____y_________y_WWWW_y","svg":null,"color":""},{"name":"icon:unbounded","size":9,"bricks":"rrWWWWWrrrr_____rrrrtttttrrrrttt__rrrr____yrrrr_____rrrr___y_yWrr_____rrrrWWW__ry","svg":null,"color":""},{"name":"icon:shunt","size":8,"bricks":"_______y______yy______yy__yCCyyy__y__yyy_yy__yyy_yy__yyyyyy__yyy","svg":null,"color":""},{"name":"icon:yoyo","size":8,"bricks":"_rrrrrr_rrrrrrrrrrrrrrrr_WWWWWW_rWrrrrrrrrWrrrrr_rrWrrr_____W___","svg":null,"color":""},{"name":"icon:nbricks","size":6,"bricks":"yy__yyyyy_yyyyyyyyyyyyyyyy_yyyyy__yy","svg":null,"color":""},{"name":"icon:etherealcoins","size":11,"bricks":"_____v_________vvv________ttt________ttt_______vtttv_____vvtttvv____vvtttvv____vvtttvv____v_ryr_v_______r________________","svg":null,"color":""},{"name":"icon:shocks","size":8,"bricks":"_r__r_r_rWWWyy_r_WWW__r_yWWWyry_y_ryyy_rry__WWW___ryWWWryr__WWWy","svg":null,"color":""},{"name":"icon:zen","size":9,"bricks":"___vv______vvvv______vv______bbbb____bbbbbb____bbbb____tttttt__tttttttt__tttttt__","svg":null,"color":""},{"name":"icon:sacrifice","size":9,"bricks":"__r___r___rrr_rrr_rrWWWWWrrrrWrWrWrrrrWWrWWrr_rrWWWrr___rWrWr_____rrr_______r____","svg":null,"color":""},{"name":"icon:trampoline","size":8,"bricks":"__y_y__y_y___y____llll___lygygl_lgggWggl_lgyggl__gllllg__g____g_","svg":null,"color":""},{"name":"icon:ghost_coins","size":7,"bricks":"__yyy___yyyyy_yyOyOyyyyyyyyyyyOOOyyyyyyyyyyy_y_yy","svg":null,"color":""},{"name":"icon:forgiving","size":8,"bricks":"____G______G_G____G___G__G_____GG_____G__G___G____G_G____WWWWW__","svg":null,"color":""},{"name":"icon:ball_attracts_coins","size":8,"bricks":"WWW_____WWW_y___WWW____y__y_y____y____y_____y_____y____y___y_y__","svg":null,"color":""},{"name":"icon:reach","size":8,"bricks":"________ttt__tttttt_Wttt__t__t____r__r___________________WWW____","svg":null,"color":""},{"name":"icon:passive_income","size":8,"bricks":"__________tttt____tttt_______________W___________________rWWWr__","svg":null,"color":""},{"name":"icon:restart","size":10,"bricks":"__GGGGGGGG__GGGGGGGG________GG________GG__G_____GG_GGG____GGGGGGG___GG_GGG____GG_GGGGGGGGG_GGGGGGGGG","svg":null,"color":""},{"name":"icon:clairvoyant","size":9,"bricks":"__y___y__y__y_y__y_y__t__y____ttt_____tWWWt___tWWgWWt_tttWWWttt__________________","svg":null,"color":""},{"name":"icon:side_kick","size":4,"bricks":"yyrryttryttryyrr","svg":null,"color":""},{"name":"icon:implosions","size":8,"bricks":"y______W__ryW_W__yr_WW____r_WWWy_WWW_rr___WW_rrryW_Wy___W_____y_","svg":null,"color":""},{"name":"icon:corner_shot","size":9,"bricks":"___W____y___W_y______W___y____W_y______W___y____W______W_W_WWW_WW_W_WWWWWW_W_WWWW","svg":null,"color":""},{"name":"icon:premium","size":11,"bricks":"__g____g___g____g____g_g__gbg__g______g______gg_gbg_gg_gbbgbbbgbbggbbgbbbgbbg_gbgbbbgbg___ggggggg____ggggggg_____________","svg":null,"color":""},{"name":"icon:reroll","size":8,"bricks":"__llllll_llBlBlelllllleBWWWWWeeeWBWBWeBeWWWWWeeeWBWBWBe_WWWWWe__","svg":null,"color":""},{"name":"icon:loop","size":7,"bricks":"bbbbbbbtttttt_aaaaa__cccc___CCC____GG_____y______","svg":null,"color":""},{"name":"icon:addiction","size":9,"bricks":"__________________________l__WWWWW_lWWWyylllly_WWWWW_ly_______l__________________","svg":null,"color":""},{"name":"icon:help","size":8,"bricks":"___bb_____bbbb___bb__bb__bb__bb_____bb_____bb______________bb___","svg":null,"color":""},{"name":"Pingwin","size":13,"bricks":"______gggg________ggWWgg_______gWWgWgy______ggWWWg_______ggggg_______gggWWW______gggggWWW___gggggggWWW____ggggggWWW_____ggggWWWW____gggWWWWW______ggWWWW________gWWyyy___","svg":null,"color":"#3584e4","credit":"https://prohama.com/pingwin-2-pattern/"},{"name":"Dog 8","size":17,"bricks":"_____________________________________gg_ggggg_gg____ggWWgWWWWWgWWgg__gWWgWWWWWWWgWWg__gWWgWWWWWWWgWWg__gggWWWWWWWWWggg___gWggWWWWWggWg____gWggWWWWWggWg____gWWWWgggWWWWg_____gWgWWgWWgWg______gWWggsggWWg_______gWgsssgWg_________ggsssgg____________ggg_________________________________________","svg":null,"color":"#62a0ea","credit":"https://prohama.com/dog-8-pattern/"},{"name":"Sunglasses","size":24,"bricks":"____________________________________________________ggggg______ggggg_______gg___g______g___gg_____gg________________gg___gg__________________gg_gggggggggg____gggggggggggggtttttggggggggbbbbbgggggtWWWttttggggbbbbWWWbgg_gtWttttttggggbbbbWbbbg__gtttttttgg__ggbbbbbbbg__gtttttttg____gbbbbbbbg__ggtttttgg____ggbbbbbgg___ggtttgg______ggbbbgg_____ggggg________ggggg___________________________________________________________________________________________________________________________________________________________________________________________________________________________","svg":null,"color":"#1a5fb4","credit":"https://prohama.com/sunglasses-pattern-1/"},{"name":"Balloon","size":21,"bricks":"_____bbbWbbbWbbb_________PWbWPWbWPWbWP_______bWbbbWbbbWbbbWb_____WbbbWbbbWbbbWbbbW___WPWbWPWbWPWbWPWbWPW__bWbbbWbbbWbbbWbbbWb__bbbPbbbPbbbPbbbPbbb__bbPPPbPPPbPPPbPPPbb___PPWPPPWPPPWPPPWPP____PWbWPWbWPWbWPWbWP_____PWPPPWPPPWPPPWP_______PPWPPPWPPPWPP_________WbWPWbWPWbW___________bbbbbbbbb_____________b_____b______________b_____b______________b_____b______________WWWWWWW_______________PPPPP________________PPPPP________________PPPPP________","svg":null,"color":"#240a8b","credit":"https://prohama.com/balloon-1/"},{"name":"Opening","size":14,"bricks":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbyyyyyyyyyyyybbyB___BB___Bybby__________ybbyyy______yyybbbbyyB__Byybbbbbbbyy__yybbbbbbbbby__ybbbbbyyyyby__ybyyyy___yby__yby______yby__yby______yBy__yBy______yyy__yyy___","svg":null,"color":"#000000"},{"name":"Stripes","size":17,"bricks":"bbb______tttttt________tttttt________tttttt______bbtttttt______bbbbbttt______bbbbbb________bbbbbb________bbbbbb______ttbbbbbb______tttttbbb______tttttt________tttttt________tttttt______bbtttttt______bbbbbttt______bbbbbb________bbbbbb________bbbbbb________bbbbbb___________bbb______________","svg":null,"color":""},{"name":"icon:starting_perks","size":8,"bricks":"_________b_b_b___________g_g_g_g_________g_g_g_g_________g_g_g_g","svg":null,"color":""},{"name":"icon:download","size":8,"bricks":"___bb______bb______bb______bb______bb____bbbbbb___bbbb__gggbbggg","svg":null,"color":""},{"name":"icon:upload","size":8,"bricks":"gggbbggg__bbbb___bbbbbb____bb______bb______bb______bb______bb___","svg":null,"color":""},{"name":"icon:coins","size":8,"bricks":"__bbbb___bbggbb_bbggggbbbggggggbbggggggbbbggggbb_bbggbb___bbbb__","svg":null,"color":""},{"name":"icon:particles","size":8,"bricks":"_b_b_b__________b_bbb_b___bbb___b_bbb__b_____b___b_b__b________b","svg":null,"color":""},{"name":"icon:reset","size":8,"bricks":"bb____bbbbb__bbb_bbbbbb___bbbb____bbbb___bbbbbb_bbb__bbbbb____bb","svg":null,"color":""},{"name":"icon:fountain_toss","size":12,"bricks":"________________tttt______tttggttt____tggggggt____t__gg__t____tllggllt___ltbyggbbtl_lbtttggtytblgyttybbtttyggggttbbtyggg_gggggggggg____gggggg___","svg":null,"color":""},{"name":"You are here","size":13,"bricks":"_____rrr_________rrrrr_______rrr_rrr______rr___rr______rr___rr_______rr_rr________rrrrr_________rrr__________rrr_________WWrWW_______WWWrWWW______WWWWWWW_______WWWWW____","svg":null,"color":""},{"name":"Gear","size":14,"bricks":"_________________________________l_l_l_______l_lllll_l______lllllll_____lllll_lllll____lll___lll____lll_____lll____lll___lll____lllll_lllll_____lllllll______l_lllll_l_______l_l_l__________________","svg":null,"color":""},{"name":"Play","size":15,"bricks":"_________________rrrrrrrrrrr___rrrrWWrrrrrrr__rrrrWWWrrrrrr__rrrrWWWWrrrrr__rrrrWWWWWrrrr__rrrrWWWWWWrrr__rrrrWWWWWrrrr__rrrrWWWWrrrrr__rrrrWWWrrrrrr__rrrrWWrrrrrrr___rrrrrrrrrrr_______________________________________________","svg":null,"color":""},{"name":"City","size":18,"bricks":"_______yyy___bbbbb________yyy__ybyyb________yyy__ybyyb__tt___yyy_b_ybbbb_tttt______bbbbbbbtttttt_______ybyybbbbbbb_______ybyybbyybyb_____b_ybbbbbyybyb_____bbbbbbbbbbbbb__bb___bbbbbbybyyb_bbbb__ybyybbybyybbbbbbb_ybyybbbbbbbtttttt_ybbbbbyybybtyyyyt_bbbbbbyybybtyyyyt_bbbbbbbbbbbtttttt_byybybybyybtytyyt_byybybybyybtttttt_byybb","svg":null,"color":""},{"name":"Wiggle","size":17,"bricks":"__________________cccccc_ccc_cccc__c____c_c_c_c__c__ccc_cc_c_ccc_cc____c_c__c_____c___ccc_cccc_ccc_cc__c________c_c__c__ccc_ccc_cc_cccc____c_c_c_c________ccc_c_c_ccccccc__c___c_________c__ccc_ccccccccccc____c______________ccc_ccc_ccc_ccc__c___c_c_c_c_c_c__ccccc_ccc_ccc_c__________________","svg":null,"color":""},{"name":"Graph","size":18,"bricks":"_______________________yy________________yyt__yytttt______tt_tttyy___t____yyt____t_____t____yy____tt_____t____t_____t______yy___t_____t______yy__tt_____yytttttt___tt___ttyy_____t___t____t__t_____t___yytttt__t_____t___yy______tt____t____t_______yy___t____ttt_____yyttyy______tyy___t___yy_______yytttt_________________________","svg":null,"color":""},{"name":"Lightbulb","size":14,"bricks":"_______________y__yyyyy___y____yyyyyyy______yyyyyyyyy_____yyyyyyyyy___y_yyyyyyyyy__y__yyyyyyyyy_____yyyyyyyyy_____yyyBBByyy___y__yyByByy___y____yByBy_________lllll______y___lll___y_______lll______","svg":null,"color":""},{"name":"Note","size":16,"bricks":"_____________WWW__________WWWWWW_______WWWWWW__W____WWWWWW_____W____WWW________W____W__________W____W__________W____W__________W____W__________W____W________WWW____W_______WWWW____W_______WWW___WWW____________WWWW____________WWW____________________________","svg":null,"color":""},{"name":"Rocket","size":13,"bricks":"______b___________bbb_________bbBbb________btttb________ttBtt________ttttt________ttBtt________ttttt________ttBtt_______bbtttbb_____bbbyyybbb____bbbyyybbb____bb_ByB_bb__","svg":null,"color":""},{"name":"Abstract","size":16,"bricks":"________________aaaaa_cccc_aaaaaaaaaa_cccc_aaaaa________________aaaa_cccc_aaaaaaaaaa_cccc_aaaaaa________________aaa_cccc_aaaaaaaaaa_cccc_aaaaaaa________________aa_cccc_aaaaaaaaaa_cccc_aaaaaaaa________________a_cccc_aaaaaaaaaa_cccc_aaaaaaaaa________________","svg":null,"color":""},{"name":"Fingerprint","size":15,"bricks":"___SSSSSSSS______S_______SS____S__SSSSS__SS__S__S____SS__S____S__SS__SS_S___S__S_SS__S__S_S__S___SS_SS__SS_S_____S___S__S_S__SS__S__SS_S_S_SS_S__S__S_S_S_S___S_S__S_S_S_S___S_S__S___S_S___S_S__S__S__S___S_S__S__S__S__S___S_S_","svg":null,"color":""},{"name":"Leaf","size":14,"bricks":"____________________________________________________________GGkGG________GGkGGkGG_____GGkGGkGGkkG_kkkkkkkkkkkGGG__GGkGGkGGkkG____GGkGGkGG_______GGkGG_______________________________________________","svg":null,"color":""},{"name":"Abstract 2","size":14,"bricks":"______________yyyy______yyyy______________bbb_bbbbbb_bbbbb___bbbb___bbb__y__bb__y__b______________bbb_bbbbbb_bbbbb___bbbb___bbb__y__bb__y__b______________bbb_bbbbbb_bbbbb___bbbb___bbb__y__bb__y__b","svg":null,"color":""},{"name":"Abstract 3","size":13,"bricks":"______________p_aaa_ppp_a__p___a_p___a__ppp_a_p_aaa_______________aaa_p_a_ppp__a___p_a___p__a_ppp_aaa_p_______________p_aaa_ppp_a__p___a_p___a__ppp_a_p_aaa______________","svg":null,"color":""},{"name":"Abstract 4","size":13,"bricks":"______________y_y_y_y_y_y__y_y_y_y_y_y__y_y_y_y_y_y_______________bbb_bbb_bbb_______________bbb_bbb_bbb_______________y_y_y_y_y_y__y_y_y_y_y_y__y_y_y_y_y_y______________","svg":null,"color":""},{"name":"Abstract 5","size":13,"bricks":"______________ccc_ccc_ccc__c_a_c_c_a_c__caa_aaa_aac_______________cca_aaa_acc__c_a_a_a_a_c__cca_aaa_acc_______________caa_aaa_aac__c_a_c_c_a_c__ccc_ccc_ccc______________","svg":null,"color":""},{"name":"Abstract 6","size":13,"bricks":"_vvvvv_vvvvv__v___v_v___v__v_bbbbbbb_v__v_b_v_v_b_v__v_b_v_v_b_v__v_b_v_v_b_v__v_b_v_v_b_v__v_b_v_v_b_v__v_b_v_v_b_v__v_b_vvv_b_v__v_b_____b_v__vvvvvvvvvvv_bbbb_____bbbb","svg":null,"color":""},{"name":"icon:new_run","size":7,"bricks":"_ggg____gbgg___gbbgg__gbbbg__gbbgg__gbgg___ggg___","svg":null,"color":""},{"name":"icon:unlocks","size":6,"bricks":"_bbbb__b__b__b__b_gggggggggggggggggg","svg":null,"color":""},{"name":"icon:settings","size":9,"bricks":"___g_g____g_ggg_g___ggbgg__gggbbbggg_gbb_bbg_gggbbbggg__ggbgg___g_ggg_g____g_g___","svg":null,"color":""},{"name":"icon:creative","size":7,"bricks":"bbg_bgg_______bbb_bgg_______bgg_bbg_______bbg_bbb","svg":null,"color":""},{"name":"icon:limitless","size":12,"bricks":"_________________________bbb____ttb_bbbbb__tttbbbb_bbbttt_bbbb__bbbt__bbbb_ttbbb__bbttttttbbbbbb_ttt___bbbb_____________________________________","svg":null,"color":""},{"name":"icon:history","size":8,"bricks":"__gggg___ggbggg_gggbgggggggbggggggggbbgggggggggg_gggggg___gggg__","svg":null,"color":""},{"name":"Hemiola","size":11,"bricks":"___gggg_____gggrrgg_____ggrrg_______gggg_____gggyygg_____ggyyg_______gggg_____gggCCgg_____ggCCg_______gggg________gg_____","svg":null,"color":""},{"name":"Obigre","size":13,"bricks":"_______________________________________OOOORgRgRgOOOOWOORgRgRgOOOOOWORgRgRgOWOOWOORgRgRgOOWOOWORgRgRgOWOOWOORgRgRgOOOOOOORgRgRgOOO_______________________________________","svg":null,"color":"","credit":"https://colin-crapahute.bearblog.dev/"},{"name":"Noodlemire","size":15,"bricks":"_________________________________ggggggggg_____g_________g___g___________g_g_____________gg_____________gg_____yyy_____ggg__yyyyyyy__ggggtyyyyyyyyytggggtttttttttttgggg_ttttttttt_gg_____ttttt___________________________________","svg":null,"color":""},{"name":"Bearded axe","size":12,"bricks":"______________WyyyOOy_____WyyyOOy_____Wyy_OO______Wyy_OO______Wyy_OO__________OO__________OO__________OO__________OO__________OO__________OO____","svg":null,"color":""}]');var G={};G=JSON.parse('"29067292"');var M={};M=JSON.parse('{"confirmRestart.no":"Annuler, continuer ma partie en cours","confirmRestart.text":"Vous êtes sur le point de commencer une nouvelle partie, est-ce vraiment ce que vous vouliez ?","confirmRestart.title":"Démarrer une nouvelle partie ?","confirmRestart.yes":"Commencer une nouvelle partie","gameOver.creative":"Cette partie de test et son score ne sont pas enregistrés.","gameOver.cumulative_total":"Votre score total cumulé est passé de {{startTs}} à {{endTs}}.","gameOver.lost.summary":"Vous avez fait tomber la balle après avoir attrapé {{score}} pièces.","gameOver.lost.title":"Balle perdue","gameOver.restart":"Nouvelle partie","gameOver.stats.balls_lost":"Balles perdues","gameOver.stats.bricks_broken":"Briques cassées","gameOver.stats.bricks_per_minute":"Briques cassées par minute","gameOver.stats.catch_rate":"Pièces attrapées","gameOver.stats.combo_avg":"Combo moyen","gameOver.stats.combo_max":"Combo maximum","gameOver.stats.duration_per_level":"Durée par niveau","gameOver.stats.hit_rate":"Précision","gameOver.stats.intro":"Vous trouverez ci-dessous les statistiques de cette partie comparées à vos {{count}} meilleures parties.","gameOver.stats.level_reached":"Niveau atteint","gameOver.stats.total_score":"Score total","gameOver.stats.upgrades_applied":"Mises à jour appliquées","gameOver.unlocked_perk":"Vous avez débloqué une amélioration","gameOver.unlocked_perk_plural":"Vous avez débloqué {{count}} améliorations","gameOver.win.summary":"Cette partie est terminée. Vous avez accumulé {{score}} pièces. ","gameOver.win.title":"Vous avez terminé cette partie","history.columns.max_combo":"Combo maximum","history.columns.max_level":"Les niveaux","history.columns.puck_bounces":"PB","history.columns.puck_bounces_tooltip":"Rebonds du palet : nombre de fois où la balle a rebondi sur le palet","history.columns.runTime":"Dur.","history.columns.runTime_tooltip":"Durée de la partie, en secondes, en comptant uniquement le temps où le jeu se déroule et où la balle est en mouvement","history.columns.score":"Score","history.columns.started":"Date","history.columns.upgrades_picked":"Mises à niveau","history.help":"Voir la liste de votre jeu {{count}} ","history.locked":"Jouez d\'abord au moins dix parties","history.title":"Historique","lab.help":"Essayez n\'importe quel build","lab.instructions":"Sélectionnez les améliorations ci-dessous, puis choisissez le niveau à jouer. Les parties en mode créatif sont ignorées dans les déblocages, le meilleur score, le score total et les statistiques, et ne durent qu\'un seul niveau.","lab.menu_entry":"Mode créatif","lab.reset":"RAZ toutes les améliorations","lab.select_level":"Sélectionnez un niveau sur lequel jouer","lab.unlocks_at":"Déverrouillé à partir d\'un score total de {{score}}","level_up.after_buttons":"Vous venez de terminer le niveau {{level}}/{{max}}.","level_up.before_buttons":"Vous avez attrapé {{score}} pièces {{catchGain}} sur {{levelSpawnedCoins}} en {{time}} secondes {{timeGain}}.\\n\\nVous avez raté les briques {{levelMisses}} fois {{missesGain}} et touché les bords de la zone de jeu {{levelWallBounces}} fois {{wallHitsGain}}.\\n\\n{{compliment}}","level_up.compliment_advice":"Essayez d\'attraper toutes les pièces, de ne jamais rater les briques, de ne pas toucher les murs ou de terminer le niveau en moins de 30 secondes pour obtenir des choix supplémentaires et des améliorations.","level_up.compliment_good":"Bravo !","level_up.compliment_perfect":"Impressionnant, continuez comme ça !","level_up.pick_upgrade_title":"Choisir une amélioration","level_up.plus_one_upgrade":"(+1 upgrade)","level_up.plus_one_upgrade_and_reroll":"(+1 amélioration et +1 re-roll)","level_up.reroll":"Re-roll ({{count}})","level_up.reroll_help":"Nouveaux choix","level_up.unlocked_level":" (Niveau)","level_up.unlocked_perk":" (Amélioration)","level_up.upgrade_perk_to_level":" niveau {{level}}","loop.converted_rerolls":"Vos {{n}} relances restantes ont été converties en +{{n}} combo de base.","loop.instructions":"Tous vos avantages seront bannis pour la suite de la partie, sauf celui que vous choisirez ci-dessous. Votre choix sera augmenté d\'un niveau, mêmes au delà de la limite normalement appliquée.","loop.no_rerolls":"Vous n\'aviez plus de re-rolls, donc votre combo de base est resté le même.","loop.title":"Début de la boucle n°{{loop}}","main_menu.basic":"Graphismes simplifiés","main_menu.basic_help":"Meilleures performances.","main_menu.colorful_coins":"Pièces colorées","main_menu.colorful_coins_help":"Les pièces apparaissent toujours de la couleur de la brique","main_menu.comboIncreaseTexts":"Afficher un +X doré","main_menu.comboIncreaseTexts_help":"Quand le combo augmente","main_menu.contrast":"Contraste élevé","main_menu.contrast_help":"Affichage plus contrasté et coloré","main_menu.credit_levels":"<h2>Source ou référence des niveaux</h2>","main_menu.credits":"# Crédits\\n\\nJ\'ai récupéré de nombreux motifs d\'arrière-plan sur https://pattern.monster/\\n\\nUne partie du code de génération de sons a été écrite par ChatGPT et a été largement adaptée à mon utilisation au fil du temps.\\n\\nJe souhaitais un APK qui démarre en plein écran et puisse être listé sur Android et le Play Store. J\'ai commencé avec une vue vide et je me suis attelé à la réduire, à l\'aide de ce tutoriel : https://github.com/fractalwrench/ApkGolf/blob/master/blog/BLOG_POST.md\\n\\nColin (obigre) a apporté de nombreuses idées fantastiques au jeu. Voici son site web : https://colin-crapahute.bearblog.dev/\\n\\nTõnu Rääk a fait un template Tiermaker pour partager vos améliorations préférées : https://tiermaker.com/create/breakout-71-perks-18086724\\n\\n# Autres jeux de casse-briques\\n\\nVoici quelques jeux intéressants dans le genre du casse-briques :\\n\\n- LBreakoutHD : un remake open source intéressant https://sourceforge.net/p/lgames/code/HEAD/tree/trunk/lbreakouthd/\\n- Wizorb https://store.steampowered.com/app/207420/Wizorb/\\n- Breakout multijoueur : JcJ avec multijoueur de type console aérienne https://casmo.itch.io/breakout-multiplayer\\n- Ricochet Infinity : https://www.myabandonware.com/game/ricochet-infinity-dxm\\n- Mes premières tentatives dans le genre : https://breakout-v1.lecaro.me/ (décontracté, plus proche du concept original de Breakout) et https://breakout-v2.lecaro.me/ (multijoueur)\\n\\n# Autres jeux PC à forte rejouabilité\\n\\n- Rollers of the realm : https://store.steampowered.com/app/262470/Rollers_of_the_Realm/\\n- FTL : https://www.gog.com/en/game/faster_than_light\\n- Nova Drift : https://www.gog.com/en/game/nova_drift\\n- Noita : https://www.gog.com/en/game/noita\\n- Enter the Gungeon : https://www.gog.com/en/game/enter_the_gungeon\\n- Zero Sivert : https://store.steampowered.com/app/1782120/ZERO_Sievert/\\n- Factorio : https://www.factorio.com/\\n- Nuclear throne : https://store.steampowered.com/app/242680/Nuclear_Throne/ (ne l\'achetez pas sur GOG, c\'est obsolète)\\n- Brigador : https://www.gog.com/en/game/brigador\\n- Teleglitch https://www.gog.com/en/game/teleglitch_die_more_edition\\n- Broforce : https://www.gog.com/en/game/broforce\\n- Spelunky : https://www.gog.com/en/game/spelunky","main_menu.donate":"Vous avez joué {{hours}} heures","main_menu.donate_help":"Pourriez-vous donner {{suggestion}} € ? Vous pouvez masquer ce rappel dans les paramètres.","main_menu.donation_reminder":"Me rappeler de donner","main_menu.donation_reminder_help":"Afficher le temps de jeu et un lien pour donner dans le menu principal","main_menu.download_save_file":"Sauvegarder mes progrès","main_menu.download_save_file_help":"Obtenir un fichier de sauvegarde","main_menu.extra_bright":"Plus de lumière","main_menu.extra_bright_help":"Plus grand halo lumineux autours des briques et pièces.","main_menu.footer_html":" <p> \\n<span>Programmé en France par <a href=\\"https://lecaro.me\\">Renan LE CARO</a>.</span>\\n<a href=\\"https://paypal.me/renanlecaro\\" target=\\"_blank\\">Donner</a>\\n<a href=\\"https://discord.gg/bbcQw4x5zA\\" target=\\"_blank\\">Discord</a>\\n<a href=\\"https://f-droid.org/en/packages/me.lecaro.breakout/\\" target=\\"_blank\\">F-Droid</a>\\n<a href=\\"https://play.google.com/store/apps/details?id=me.lecaro.breakout\\" target=\\"_blank\\">Google Play</a>\\n<a href=\\"https://renanlecaro.itch.io/breakout71\\" target=\\"_blank\\">itch.io</a>\\n<a href=\\"https://gitlab.com/lecarore/breakout71\\" target=\\"_blank\\">Gitlab</a>\\n<a href=\\"https://breakout.lecaro.me/\\" target=\\"_blank\\">Version web</a>\\n<a href=\\"https://news.ycombinator.com/item?id=43183131\\" target=\\"_blank\\">HackerNews</a>\\n<a href=\\"https://breakout.lecaro.me/privacy.html\\" target=\\"_blank\\">Politique de confidentialité</a> \\n<span>v.{{appVersion}}</span>\\n</p>","main_menu.fullscreen":"Plein écran","main_menu.fullscreen_help":"Le jeu essaiera de passer en plein écran quand vous le démarrez","main_menu.help_content":"# Objectif\\n\\nLe but est d\'attraper un maximum de pièces au cours des 7 niveaux.\\nLes pièces apparaissent lorsque vous cassez des briques.\\nElles volent, rebondissent et roulent, et vous devez les attraper avec votre palet pour augmenter votre score.\\nVotre score est affiché en haut à droite de l\'écran.\\nVous devez supprimer toutes les briques pour passer au niveau suivant.\\nSi vous laissez tomber la balle, la partie est terminée, sauf si vous aviez l\'amélioration « Vie supplémentaire ».\\n\\n# Améliorations\\n\\nAprès avoir terminé un niveau, vous pourrez choisir des améliorations parmi une petite sélection qui vous sera présentée.\\nL\'amélioration choisie sera valable jusqu\'à la fin de la partie. Vous aurez plus de choix d\'améliorations, et même la possibilité d\'en choisir plusieurs à la fin du niveau si vous jouez bien : attrapez toutes les pièces, terminez le niveau rapidement et ne ratez jamais votre cible.\\nVous obtenez également une amélioration aléatoire gratuite au début de chaque partie. Vous pouvez voir vos améliorations (et quelques détails supplémentaires) en cliquant sur votre score en haut à droite de l\'écran.\\n\\nLes améliorations s\'appliquent à l\'ensemble de la partie et peuvent être synergiques. Par exemple, si vous combinez « sapeur » et « perforant », la première brique que vous touchez après un rebond de palet se transformera immédiatement en brique explosive et explosera avec la même balle, vous donnant ainsi une balle explosive.\\n\\nCertaines améliorations facilitent la visée, comme les « balles de contrôle de palet ». Certaines améliorations peuvent être sélectionnées plusieurs fois pour augmenter leur effet. Par exemple, « +1 balle niveau 2 » ajoute une troisième balle.\\n\\nLors de votre première partie, seules quelques améliorations sont disponibles ; vous débloquez les autres en jouant et en marquant des points. À la fin d\'une partie, les éléments que vous venez de débloquer seront affichés et vous pourrez consulter leur contenu complet dans le menu / Déblocages.\\n\\nDe nombreuses améliorations influencent votre combo.\\n\\n# Combo\\n\\nVotre « combo » correspond au nombre de pièces générées lorsqu\'une brique se brise. L\'affichage est sur votre palet. Par exemple, x4 signifie que chaque brique rapporte 4 pièces. Le combo se réinitialise si vous ratez toutes les briques et que la balle revient vers le palet sans en avoir touché aucune.\\n\\n# Déblocages\\n\\nLorsque vous démarrez Breakout 71 pour la première fois, vous avez accès à quelques améliorations et niveaux. Les autres doivent être débloqués. Les améliorations se débloquent simplement en jouant. Chaque fois que vous attrapez une pièce, votre score total cumulé augmente d\'un point. Une fois le seuil de l\'amélioration atteint, elle est débloquée.\\n\\nLe déblocage des niveaux est un peu différent : il requiert une excellente maîtrise du jeu, de différentes manières. Les premiers niveaux nécessitent d\'atteindre le score X pendant une partie, tandis que les niveaux suivants sont débloqués en atteignant un score élevé de X avec l\'amélioration Y et sans l\'amélioration Z. Toutes ces conditions sont pseudo-aléatoires, certaines sont donc probablement plus difficiles que d\'autres. Elles devraient toutefois être les mêmes pour tous les joueurs. Il est possible qu\'une mise à jour modifie les améliorations requises.\\n\\n# Configuration requise\\n\\nBreakout 71 peut fonctionner hors ligne (ajoutez-le à l\'écran d\'accueil) et fonctionne bien même sur les appareils bas de gamme.\\nL\'application est très simple et occupe peu d\'espace de stockage (environ 0,1 Mo).\\nSi l\'application est instable, activez le « mode rapide » dans les paramètres pour afficher une vue simplifiée et plus rapide. Il existe également un mode facile pour les enfants (balle plus lente).\\n\\n# Boucle\\n\\nUne fois toutes les améliorations débloquées, vous aurez la possibilité de jouer une partie plus longue.\\nDans ce mode, vous pouvez boucler le jeu jusqu\'à 7 fois après votre première tentative.\\n\\nChaque boucle est plus courte et vous ne pouvez pas utiliser les niveaux d\'avantages utilisés dans les niveaux précédents, à l\'exception d\'un avantage que vous pouvez améliorer continuellement. Si vous épuisez complètement un avantage, il ne sera plus proposé dans les boucles suivantes. L\'avantage que vous améliorez gagne instantanément +1 niveau et +2 niveaux max.\\n\\nChaque boucle est plus courte d\'un niveau. La balle démarre légèrement plus vite. La partie se termine lorsque vous perdez le ballon ou terminez la 7e boucle.\\n\\n# Visée\\n\\nSeule la position du palet frappé détermine la trajectoire du ballon. Si le ballon touche le palet en plein centre, il rebondira verticalement, tandis que si vous frappez davantage d\'un côté, l\'angle sera plus grand.\\nLa vitesse du palet et l\'angle d\'arrivée n\'ont aucun impact sur la direction du ballon après le rebond.\\n\\nUn palet plus petit facilitera peut-être la visée près des coins, mais rendra aussi beaucoup plus difficile la capture de pièces.\\nLes options « Vent » et « Télékinesis » peuvent vous aider à viser même après un rebond dans la mauvaise direction.\\n« Balle plus lente » vous donne un peu plus de temps pour viser, ce qui est particulièrement utile dans les niveaux avancés où la balle va plus vite. La balle accélère également à mesure que vous progressez dans chaque niveau.","main_menu.help_help":"Découvrez le jeu en détail","main_menu.help_title":"Aide et crédits","main_menu.help_upgrades":"<h2>Améliorations</h2>","main_menu.high_score":"High score : {{score}}","main_menu.kid":"Mode enfants","main_menu.kid_help":"Balle plus lente","main_menu.language":"Langue","main_menu.language_help":"Changer la langue d\'affichage","main_menu.load_save_file":"Charger une sauvegarde","main_menu.load_save_file_help":"Depuis un fichier ","main_menu.loop_run_help":"Permet de boucler le jeu jusqu\'à 7 fois","main_menu.max_coins":"{{max}} pièces affichées maximum","main_menu.max_coins_help":"Visuel uniquement, pas d\'impact sur le score","main_menu.max_particles":" {{max}} particules maximum","main_menu.max_particles_help":"Limite le nombre de particules affichées à l\'écran pour les effets visuels","main_menu.mobile":"Mode mobile","main_menu.mobile_help":"Laisse un espace sous le palet.","main_menu.normal":"Nouvelle partie","main_menu.normal_help":"Avec un avantage de départ aléatoire","main_menu.pointer_lock":"Verrouillage du pointeur","main_menu.pointer_lock_help":"Cache aussi le curseur de la souris.","main_menu.record":"Enregistrer des vidéos de jeu","main_menu.record_download":"Télécharger la vidéo ({{size}} MB)","main_menu.record_help":"Obtenez une vidéo de chaque niveau.","main_menu.red_miss":"Balles ratées","main_menu.red_miss_help":"Afficher des particules rouges autours des balles qui redescendent sans avoir touché une brique.","main_menu.reset":"Réinitialiser le jeu","main_menu.reset_cancel":"Non","main_menu.reset_confirm":"Oui","main_menu.reset_help":"Effacer les scores, statistiques et temps de jeu","main_menu.reset_instruction":"Vous perdrez tous les progrès que vous avez faits dans le jeu, êtes-vous sûr ?","main_menu.save_file_error":"Erreur lors du chargement du fichier de sauvegarde","main_menu.save_file_loaded":"Sauvegarde chargée","main_menu.save_file_loaded_help":"L\'appli va redémarrer","main_menu.save_file_loaded_ok":"Ok","main_menu.settings_help":"Adaptez le jeu à vos besoins","main_menu.settings_title":"Paramètre","main_menu.show_fps":"Compteur de FPS","main_menu.show_fps_help":"Surveiller la performance du jeu","main_menu.show_stats":"Statistiques en temps réel","main_menu.show_stats_help":"Pièces, temps, rebonds, ratés","main_menu.sounds":"Sons du jeu","main_menu.sounds_help":"Ralentis certains téléphones.","main_menu.starting_perks":"Avantages de départ","main_menu.starting_perks_checked":"Lorsque vous démarrez une nouvelle partie, l\'un de ces avantages vous sera attribué. Vous pouvez cliquer sur la liste pour exclure certains avantages de la sélection.","main_menu.starting_perks_help":"Choisissez les avantages de départ","main_menu.starting_perks_unchecked":"Les avantages ci-dessous ne sont pas proposés comme avantages de départ, mais vous pouvez cliquer pour les ajouter aux avantages de départ possibles.","main_menu.title":"Breakout 71","main_menu.unlocks":"Contenu débloqué","main_menu.unlocks_help":"Essayez les éléments débloqués","play.close_modale_window_tooltip":"Fermer","play.current_lvl":"Niveau {{level}}/{{max}}","play.current_lvl_loop":"Niveau {{level}}/{{max}} boucle {{loop}}","play.menu_label":"Menu","play.menu_tooltip":"Ouvrir le menu principal","play.missed_ball":"raté","play.mobile_press_to_play":"Gardez le doigt ici pour jouer","play.score_tooltip":"Consultez votre score, améliorations et plus encore","play.stats.coins_catch_rate":"Taux de capture des pièces ","play.stats.levelMisses":"Tirs ratés, ou vous n\'avez touché aucune brique","play.stats.levelTime":"Durée du niveau","play.stats.levelWallBounces":"Rebonds sur les murs","score_panel.close_to_unlock":"Vous pourriez débloquer un niveau à la fin de cette partie :","score_panel.continue_to_unlock":"Vous êtes sur le point de débloquer le niveau « {{level}} »","score_panel.get_upgrades_to_unlock":"Obtenez {{missingUpgrades}} et marquez {{points}} points supplémentaires pour débloquer le niveau « {{level}} »","score_panel.rerolls_count":"Vous avez accumulé {{rerolls}} rerolls","score_panel.score_to_unlock":"Marquez {{points}} points supplémentaires pour débloquer le niveau « {{level}} »","score_panel.title":"{{score}} points au niveau {{level}}/{{max}} ","score_panel.title_looped":"{{score}} points au niveau {{level}}/{{max}} ","score_panel.upcoming_levels":"Niveaux de la parties : ","score_panel.upgrades_picked":"Améliorations choisies jusqu\'à présent :","unlocks.greyed_out_help":"Les éléments grisées peuvent être débloquées en augmentant votre score total. Le score total augmente à chaque fois que vous marquez des points dans le jeu, en dehors des parties de test.","unlocks.intro":"Votre score total est de {{ts}}. Vous trouverez ci-dessous toutes les améliorations et tous les niveaux que le jeu peut offrir. Cliquez sur l\'un d\'entre eux pour les essayer dans une partie de test. Astuce : vous pouvez choisir les améliorations de départ dans les réglages.","unlocks.just_unlocked":"Vous venez de débloquer un niveau","unlocks.just_unlocked_plural":"Vous venez de débloquer {{count}} niveaux","unlocks.level":"<h2>Vous avez débloqué {{unlocked}} niveaux sur {{out_of}}</h2>\\n<p>Voici tous les niveaux du jeu, cliquez sur l\'un d\'eux pour démarrer une partie de test avec ce niveau de départ. </p> ","unlocks.level_description":"Un niveau {{size}}x{{size}} avec {{bricks}} briques, {{colors}} couleurs et {{bombs}} bombes.","unlocks.minScore":"Atteignez un score de ${{minScore}} dans une partie pour débloquer.","unlocks.minScoreWithPerks":"Atteignez ${{minScore}} dans une partie avec {{required}} mais sans {{forbidden}}.","unlocks.minTotalScore":"Accumuler un total de ${{score}}","unlocks.reached":"Votre meilleur score pour l\'instant est {{reached}}.","unlocks.title_upgrades":"Vous avez débloqué {{unlocked}} améliorations sur {{out_of}}","upgrades.addiction.fullHelp":"Le décompte ne commence qu\'à parti de la destruction de la première brique du niveau, et s\'arrête dès qu\'il n\'y a plus de briques. ","upgrades.addiction.help":"+{{lvl}} combo / brique, le combo RAZ après {{delay}}s sans casser de briques","upgrades.addiction.name":"Addiction","upgrades.asceticism.fullHelp":"Il faudra trouver un moyen de stocker les pièces pendant que le combo grandis. ","upgrades.asceticism.help":"+{{combo}} combo par brique cassée, - {{combo}} quand une pièce est attrapée","upgrades.asceticism.name":"Ascétisme","upgrades.ball_attract_ball.fullHelp":"Les balles qui sont éloignées de plus de 3/4 de la largeur d\'écran commencent à s\'attirer. La force d\'attraction est plus forte lorsque les balles sont plus éloignées l\'une de l\'autre. Des particules arc-en-ciel voleront pour symboliser la force d\'attraction. Cet avantage n\'est offert que si vous avez déjà plus d\'une balle en jeu.","upgrades.ball_attract_ball.help":"Les balles attirent les balles","upgrades.ball_attract_ball.help_plural":"Force d\'attraction plus forte","upgrades.ball_attract_ball.name":"Gravité","upgrades.ball_attracts_coins.fullHelp":"Vous pourriez l\'utiliser pour que les pièces orbitent autours de la balle et colorent les briques à proximité.","upgrades.ball_attracts_coins.help":"Les balles attirent les pièces","upgrades.ball_attracts_coins.name":"Balles de fortune","upgrades.ball_repulse_ball.fullHelp":"Les balles qui se trouvent à moins d\'un quart de largeur d\'écran commencent à se repousser les unes les autres. La force de répulsion est plus forte si elles sont proches l\'une de l\'autre. Des particules seront affichées pour symboliser l\'application de cette force. Cet avantage n\'est offert que si vous avez déjà plus d\'une balle.","upgrades.ball_repulse_ball.help":"Les balles repoussent les balles","upgrades.ball_repulse_ball.help_plural":"Force de répulsion plus forte","upgrades.ball_repulse_ball.name":"Vol en formation","upgrades.base_combo.fullHelp":"Votre combo commence normalement à 1 au début du niveau et revient à 1 lorsque vous rebondissez sans rien toucher. Avec cette caractéristique, le combo commence 3 points plus haut, ce qui fait que vous obtiendrez toujours au moins 4 pièces par brique. Lorsque votre combo est réinitialisé, il revient à 4 et non à 1. Votre balle scintillera un peu pour indiquer que son combo est supérieur à 1.","upgrades.base_combo.help":"Le combo commence à {{coins}}.","upgrades.base_combo.name":"Combo +3","upgrades.bigger_explosions.fullHelp":"L\'explosion par défaut efface un carré de 3x3 briques, avec cette amélioration un carré de 5x5. Le vent soufflant les pièces est également beaucoup plus fort. L\'écran clignotera un peu après chaque explosion (sauf en mode graphismes basiques).","upgrades.bigger_explosions.help":"Explosions plus violentes","upgrades.bigger_explosions.name":"Kaboom","upgrades.bigger_puck.fullHelp":"Un grand palet permet de ne jamais rater la balle et d\'attraper plus de pièces, ainsi que d\'orienter précisément les rebonds (l\'angle de la balle ne dépend que de l\'endroit où elle touche le palet). \\n\\nCependant, un grand palet est plus difficile à utiliser sur les côtés du niveau, sauf si vous le combinez avec une autre amélioration.","upgrades.bigger_puck.help":"Attrapez facilement plus de pièces.","upgrades.bigger_puck.name":"Palet plus grand","upgrades.clairvoyant.fullHelp":"Vous aide à choisir les bonnes améliorations et à comprendre ce qu\'il se passe avec \\"briques solides\\". Les niveaux 2 et 3 (en mode loop) amènent des informations complémentaires d\'une utilité douteuse. ","upgrades.clairvoyant.help":"Révèle les niveaux, PV des briques et direction des balles","upgrades.clairvoyant.name":"Clairvoyant","upgrades.coin_magnet.fullHelp":"Dirige les pièces vers le palet. L\'effet est plus fort si la pièce est déjà proche du palet. Attraper toutes les pièces apporte des bonus spéciaux dans le jeu. \\n\\nUne autre façon d\'attraper plus de pièces est de frapper les briques par le bas. La vitesse et la direction de la balle ont un impact sur la vitesse des pièces produites.","upgrades.coin_magnet.help":"Le palet attire les pièces","upgrades.coin_magnet.help_plural":"Effet plus marqué sur les pièces","upgrades.coin_magnet.name":"Aimant pour pièces","upgrades.compound_interest.fullHelp":"Votre combo augmentera d\'une unité à chaque fois que vous casserez une brique, générant de plus en plus de pièces à chaque fois que vous casserez une brique. Veillez cependant à attraper chacune de ces pièces avec votre palet, car toute pièce perdue remettra votre combo à zéro. \\n \\nSi votre combinaison est supérieure au minimum, une ligne rouge s\'affichera au bas de la zone de jeu pour vous le rappeler que les pièces ne doivent pas aller à cet endroit.","upgrades.compound_interest.help":"+{{lvl}} combo par brique cassée, remise à zéro quand une pièce est perdu","upgrades.compound_interest.name":"Intérêts","upgrades.concave_puck.fullHelp":"Les balles démarrent verticalement en début de niveau, et rebondi sur le palet de manière plus verticale et inversée.","upgrades.concave_puck.help":"Aide à éviter les bords.","upgrades.concave_puck.name":"Palet concave","upgrades.corner_shot.fullHelp":"Aide à viser dans les coins","upgrades.corner_shot.help":"Laisse votre palet sortir de la zone encadrée","upgrades.corner_shot.name":"Tir en coin","upgrades.etherealcoins.fullHelp":"Il faudrait vous assurer que les pièces tomberont bien quand même à un moment.","upgrades.etherealcoins.help":"Les pièces ne subissent plus la gravité","upgrades.etherealcoins.name":"Monnaie spatiale ","upgrades.extra_levels.fullHelp":"La partie dure normalement 7 niveaux, après quoi le jeu est terminé et le score que vous avez atteint est votre score de partie.\\n\\nChoisir cette amélioration vous permet de prolonger la partie d\'un niveau. Les derniers niveaux sont souvent ceux où vous faites le plus de points, la différence peut donc être spectaculaire.","upgrades.extra_levels.help":"Jouer {{count}} niveaux au lieu de 7","upgrades.extra_levels.name":"+1 niveau","upgrades.extra_life.fullHelp":"Normalement, vous n\'avez qu\'une seule balle par manche, et la manche est terminée dès que vous la laissez tomber.\\n\\nCette compétence ajoute une barre blanche en bas de l\'écran qui sauvera une balle une fois, et se brisera au cours du processus.\\n\\nVous pouvez prendre plusieurs vies d\'avances, elle seront utilisées à chaque fois qu\'une balle est sur le point d\'être perdue. ","upgrades.extra_life.help":"La balle rebondit une fois avant d\'être perdue.","upgrades.extra_life.help_plural":"La balle rebondit {{lvl}} fois avant d\'être perdue.","upgrades.extra_life.name":"+1 vie","upgrades.forgiving.fullHelp":" La première brique ratée par niveau ne coûte rien, la suivante 10%, 20%, etc.","upgrades.forgiving.help":"Rater les briques fait perdre un portion progressivement plu importante du combo","upgrades.forgiving.name":"L\'erreur est humaine","upgrades.fountain_toss.fullHelp":"","upgrades.fountain_toss.help":"Quand une pièce est perdue alors que votre combo était en dessous de {{max}}, votre combo à une probabilité de {{lvl}}/combo d\'être incrémenté","upgrades.fountain_toss.name":"Pièce dans la fontaine","upgrades.ghost_coins.fullHelp":"Ce n\'est pas une bug, c\'est une fonctionnalité Les pièces passent à travers les briques doucement. ","upgrades.ghost_coins.help":"Les pièces traversent les briques","upgrades.ghost_coins.name":"Pièces fantôme","upgrades.helium.fullHelp":"Les pièces attendront d\'être sous le palet pour tomber. ","upgrades.helium.help":"Les pièce flottent au lieu de tomber autours du palet","upgrades.helium.name":"Helium","upgrades.hot_start.fullHelp":"Au début de chaque niveau, votre combo commencera à +30 points, mais à chaque seconde, il sera diminué d\'un point. Cela signifie que les 30 premières secondes d\'un niveau produiront beaucoup plus de pièces que les suivantes.\\nVous devez vous assurer de terminer le niveau rapidement. L\'effet se cumule avec d\'autres avantages liés au combo, ce qui vous permet d\'augmenter le combo après les 30 secondes, mais il continuera à diminuer chaque seconde. Chaque fois que vous reprenez la compétence, l\'effet est encore plus prononcé.","upgrades.hot_start.help":"Combo à {{start}}, -{{loss}} combo par seconde","upgrades.hot_start.name":"Démarrage à chaud","upgrades.implosions.fullHelp":"La force d’explosion est appliquée dans l’autre sens. Les niveaux 2+ augmentent la puissance de l\'implosion. ","upgrades.implosions.help":"Les explosions aspirent les pièces au lieu de les faire exploser.","upgrades.implosions.name":"Implosions","upgrades.instant_upgrade.fullHelp":"Choisissez immédiatement deux améliorations, afin d\'en obtenir une gratuite et une autre pour rembourser celle utilisée pour obtenir cet avantage. Chaque fois que vous choisirez des améliorations dans le menu suivant, vous aurez moins de choix.","upgrades.instant_upgrade.help":"-{{lvl}} choix jusqu\'à la fin de la partie.","upgrades.instant_upgrade.name":"+2 améliorations maintenant","upgrades.left_is_lava.fullHelp":"Chaque fois que vous cassez une brique, votre combo augmente d\'une unité, ce qui vous permet d\'obtenir une pièce de plus à chaque fois que vous cassez une brique.\\n\\nCependant, votre combinaison se réinitialise dès que votre balle touche le côté gauche.\\n\\nDès que votre combo augmente, le côté gauche devient rouge pour vous rappeler que vous devez éviter de le frapper.","upgrades.left_is_lava.help":"+{{lvl}} combo par brique, RAZ en touchant le bord gauche","upgrades.left_is_lava.name":"Éviter le côté gauche","upgrades.limitless.fullHelp":"Choisir cet avantage augmente également sa propre limite d\'un point, vous permettant de le choisir à nouveau.","upgrades.limitless.help":"Augmenter le niveau maximum de toutes les mises à niveau de {{lvl}} ","upgrades.limitless.name":"Sans limites","upgrades.metamorphosis.fullHelp":"Avec cette amélioration, les pièces seront de la couleur de la brique d\'où elles proviennent et coloreront la première brique qu\'elles toucheront. \\n\\nLes pièces apparaissent à la vitesse de la balle qui les a cassées, ce qui signifie que vous pouvez viser un peu dans la direction des briques que vous voulez \\"peindre\\".","upgrades.metamorphosis.help":"Chaque pièces peut tacher {{lvl}} brique(s) avec sa couleur","upgrades.metamorphosis.name":"Métamorphose","upgrades.multiball.fullHelp":"Dès que vous laissez tomber la balle dans Breakout 71, vous perdez. \\n\\nAvec cet avantage, vous obtenez deux balles, et vous pouvez donc vous permettre d\'en perdre une.\\n\\nLes balles perdues reviennent au niveau suivant. \\n\\nLe fait d\'avoir plus d\'une balle permet d\'obtenir d\'autres avantages et, bien sûr, de franchir le niveau plus rapidement.","upgrades.multiball.help":"Chaque niveau commence avec {{count}} balles.","upgrades.multiball.name":"+1 balle","upgrades.nbricks.fullHelp":"Si votre balle rebondis sans casser une brique, ça compte quand même comme une frappe. Les briques détruites par des explosions ne comptent pas.","upgrades.nbricks.help":"Frappez exactement {{lvl}} briques par rebond pour +{{lvl}} combo, sinon RAZ","upgrades.nbricks.name":"Prélèvement","upgrades.one_more_choice.fullHelp":"Chaque menu d\'amélioration comportera une option supplémentaire. Cela n\'augmente pas le nombre d\'améliorations que vous pouvez choisir, mais vous aide à créer le profile idéal. ","upgrades.one_more_choice.help":"Les niveaux suivants offriront {{lvl}} option(s) supplémentaire(s) dans la liste d\'améliorations.","upgrades.one_more_choice.name":"+1 choix","upgrades.passive_income.fullHelp":"Certaines amélioration font bouger les balles sans avoir besoin de mettre le palet en mouvement.","upgrades.passive_income.help":"+{{lvl}} combo / brique, sauf si le palet à bougé dans les {{time}} dernières secondes, RAZ dans ce cas","upgrades.passive_income.name":"Revenu passif","upgrades.picky_eater.fullHelp":"Chaque fois que vous cassez une brique de la même couleur que votre balle, votre combo augmente d\'une unité.\\n\\nS\'il s\'agit d\'une couleur différente, la balle adopte cette nouvelle couleur, mais la combinaison est réinitialisée, sauf s\'il n\'y avais plus aucune brique de la couleur de la balle.\\n\\nLes briques de la mauvaise couleur sont entourées en rouge.\\n\\nSi vous avez plus d\'une balle, elles changent toutes de couleur en même temps lorsque l\'une d\'entre elles touche une brique.","upgrades.picky_eater.help":"+{{lvl}} combo par brique cassée la couleur de la balle, RAZ sinon","upgrades.picky_eater.name":"Mangeur par couleur","upgrades.pierce.fullHelp":"Normalement , la balle rebondit dès qu\'elle touche une brique. Avec cette caractéristique, elle continuera sa trajectoire jusqu\'à 3 briques cassées.\\n\\nAprès cela, elle rebondira sur la quatrième brique et vous devez toucher le palet pour remettre le compteur à zéro.","upgrades.pierce.help":"La balle perce {{count}} briques après chaque rebond sur le palet","upgrades.pierce.name":"Balle perçante","upgrades.pierce_color.fullHelp":"Chaque fois qu\'une balle touche une brique de la même couleur, elle la traverse sans encombre.\\n\\nLorsqu\'elle atteint une brique de couleur différente, elle la casse, prend sa couleur et rebondit. \\n\\nSi vous avez des briques solides, le fonctionnement est un peu différent. ","upgrades.pierce_color.help":"+{{lvl}} dommage sur les briques de la couleur de la balle","upgrades.pierce_color.name":"Perceur de couleur","upgrades.puck_repulse_ball.fullHelp":"Lorsqu\'une balle s\'approche du palet, elle commence à ralentir, voire à rebondir sans toucher le palet. Beaucoup de choses sont liées à un passage par le palet dans le jeu, donc ça pourrait ouvrir des possibilités. ","upgrades.puck_repulse_ball.help":"Le palet repousse les balles","upgrades.puck_repulse_ball.help_plural":"La force de répulsion est plus grande","upgrades.puck_repulse_ball.name":"Atterrissage en douceur","upgrades.reach.fullHelp":"S\'il n\'y a qu\'une seule rangée de briques, ou si la rangée la plus basse couvre toute la largeur du jeu, cet avantage est sans effet. Sinon, briser cette rangée la plus basse réinitialise le combo ; briser toute autre rangée augmente le combo du nombre de briques présentes sur cette rangée.\\n\\nLa rangée de briques du bas sera entourée en rouge pour vous rappeler de ne pas la toucher. ","upgrades.reach.help":"Casser une des N briques de la ligne la plus basse RAZ le combo. Sinon, +N combo.","upgrades.reach.name":"Attaque aérienne","upgrades.respawn.fullHelp":"Des effets de particules vous indiqueront où les briques apparaîtront. ","upgrades.respawn.help":"{{percent}}% des briques réapparaissent après {{delay}}s.","upgrades.respawn.name":"Réapparition ","upgrades.right_is_lava.fullHelp":"Chaque fois que vous cassez une brique, votre combo augmente d\'une unité, ce qui vous permet d\'obtenir une pièce de plus à chaque fois que vous cassez les briques suivantes.\\n\\nCependant, votre combinaison se réinitialise dès que votre balle touche le côté droit de la zone de jeu.\\n\\nDès que votre combo augmente, le côté droit devient rouge pour vous rappeler que vous devez éviter de le frapper.","upgrades.right_is_lava.help":"+{{lvl}} combo par brique, RAZ en cas de choc avec le coté droit","upgrades.right_is_lava.name":"Éviter le côté droit","upgrades.sacrifice.fullHelp":"Le combo pourrait monter assez haut.","upgrades.sacrifice.help_l1":"Perdre une vie détruit toutes les briques","upgrades.sacrifice.help_over":"Perdre une vie multiplie le combo par {{lvl}} puis détruit toutes les briques à l\'écran","upgrades.sacrifice.name":"Sacrifice","upgrades.sapper.fullHelp":"Au lieu de disparaître, la première brique cassée est remplacée par une bombe. Faire rebondir la balle sur le palet réarme l\'effet. En montant en niveau, vous pourrez placer plus de bombes. \\n\\nN\'oubliez pas que les bombes ont un impact sur la vitesse des pièces à proximité. Trop d\'explosions peuvent rendre difficile la récupération des fruits de votre dur labeur.","upgrades.sapper.help":"La première brique cassée devient une bombe.","upgrades.sapper.help_plural":"Les premières briques {{lvl}} cassées deviennent des bombes.","upgrades.sapper.name":"Sapeur","upgrades.shocks.fullHelp":"Quand deux balles entrent en collision, elles échangent leurs vitesse, créent une explosion et gagnent un peu de vitesse qui les sépare. ","upgrades.shocks.help":"Collision explosive entre les balles","upgrades.shocks.name":"Choc","upgrades.shunt.fullHelp":"Démarrage à chaud sera simplement ajouté au combo actuel","upgrades.shunt.help":"Garer {{percent}}% du combo au changement de niveau ","upgrades.shunt.name":"Shunt","upgrades.side_kick.fullHelp":"Lorsqu\'une brique est touchée, le jeu vérifie la vitesse horizontale de la balle et ajoute +1 au combo si sa direction sur l\'axe horizontale est vers la droite. Dans le cas contraire, le combo diminuera de deux points. L\'emplacement de l\'impact sur la brique n\'a aucune importance.","upgrades.side_kick.help":"+{{lvl}} combo par brique cassé horizontalement, -{{loss}} sinon","upgrades.side_kick.name":"Gaucher","upgrades.skip_last.fullHelp":"Vous devez casser toutes les briques pour passer au niveau suivant. \\n\\nCependant, il peut être difficile d\'obtenir les dernières briques.\\n\\nTerminer un niveau plus tôt permet d\'obtenir des choix supplémentaires lors de la mise à niveau. \\n\\nNe jamais manquer de briques est également très avantageux.\\n\\nDonc, si vous avez du mal à casser les dernières briques, obtenir cet avantage plusieurs fois peut vous aider.","upgrades.skip_last.help":"La dernière brique s\'autodétruit.","upgrades.skip_last.help_plural":"Les {{lvl}} dernières briques restantes s\'autodétruiront","upgrades.skip_last.name":"Nettoyage facile","upgrades.slow_down.fullHelp":"La balle démarre relativement lentement, mais à chaque niveau de votre partie, elle démarre un peu plus vite, et elle accélère également si vous passez beaucoup de temps dans un niveau.\\n\\nCet avantage rend la balle plus facile à gérer. \\n\\nVous pouvez l\'obtenir au début de chaque partie en activant le mode enfant dans le menu.","upgrades.slow_down.help":"La balle se déplace plus lentement","upgrades.slow_down.name":"Balle lente","upgrades.smaller_puck.fullHelp":"Le palet est donc plus petit, ce qui, en théorie, facilite certains tirs en coin, mais augmente surtout la difficulté.\\n\\nC\'est pourquoi vous bénéficiez également d\'un bonus de +5 pièces par brique pour toutes les briques que vous casserez après avoir choisi cette option.","upgrades.smaller_puck.help":"Donne aussi +5 combo","upgrades.smaller_puck.help_plural":"Palet encore plus petit et combinaison de base plus élevée","upgrades.smaller_puck.name":"Palet plus petit","upgrades.soft_reset.fullHelp":"Limite l\'impact d\'une réinitialisation du combo.","upgrades.soft_reset.help":"La remise à zéro du combo conserve {{percent}}% des points","upgrades.soft_reset.name":"Réinitialisation progressive","upgrades.streak_shots.fullHelp":"Chaque fois que vous cassez une brique, votre combo (nombre de pièces par brique) augmente d\'une unité. Cependant, dès que la balle touche votre palet, le combo est remis à sa valeur par défaut, et vous n\'obtiendrez qu\'une seule pièce par brique.\\n\\nUne fois que votre combinaison dépasse la valeur de base, votre palet devient rouge pour vous rappeler que le fait de le toucher avec la balle détruira votre combinaison.","upgrades.streak_shots.help":"Plus de pièces si vous cassez plusieurs briques à la fois.","upgrades.streak_shots.name":"Séquence de destruction","upgrades.sturdy_bricks.fullHelp":"Chaque niveau de cet amélioration ajoute un PV à toutes les briques. Vous pouvez consulter le nombre de PV avec l\'avantage \\"clairvoyant\\". Vous pouvez augmenter les dégâts des balles en obtenant l\'amélioration \\"Balle perçante\\". Chaque niveau de cet amélioration ajoute 50% de pièces en plus.","upgrades.sturdy_bricks.help":"+{{lvl}} points de vie des briques, +{{percent}}% pièces quand elles sont détruites","upgrades.sturdy_bricks.name":"Briques solides","upgrades.telekinesis.fullHelp":"Vous contrôlez la balle pendant qu\'elle monte.","upgrades.telekinesis.help":"Contrôler la trajectoire de la balle","upgrades.telekinesis.help_plural":"Effet plus fort sur la balle","upgrades.telekinesis.name":"Télékinésie","upgrades.top_is_lava.fullHelp":"Chaque fois que vous cassez une brique, votre combo augmente d\'une unité. Cependant, votre combo sera réinitialisé dès que votre balle atteindra le haut de l\'écran.\\n\\nLorsque votre combo est supérieur au minimum, une barre rouge apparaît en haut de l\'écran pour vous rappeler que vous devez éviter de la frapper.","upgrades.top_is_lava.help":"+{{lvl}} combo par brique, RAZ en cas de rebond au plafond","upgrades.top_is_lava.name":"Icare ","upgrades.trampoline.fullHelp":"Une des rares améliorations à ne pas avoir de condition de remise à zéro","upgrades.trampoline.help":"+{{lvl}} combo à chaque rebond d\'une balle sur le palet,-{{lvl}} combo à chaque rebond sur un bord ","upgrades.trampoline.name":"Trampoline","upgrades.unbounded.fullHelp":"J\'espère que vous avez trouvé un moyen de garder votre balle à l\'écran. Au niveau 2+, le plafond disparaîtra également. Il s\'agit d\'un avantage avancé.","upgrades.unbounded.help":"+{{lvl}} combo par brique, plus de cotés pour garder la balle en jeu, danger","upgrades.unbounded.help_no_ceiling":"+{{lvl}} combo par brique, plus de cotés ou de plafond","upgrades.unbounded.name":"Libérée, délivrée","upgrades.viscosity.fullHelp":"Les pièces accélèrent normalement avec la gravité et les explosions pour atteindre des vitesses assez élevées. \\n\\nCette compétence les ralentit constamment, comme si elles se trouvaient dans une sorte de liquide visqueux.\\n\\nCela permet de les attraper plus facilement et se combine bien avec les améliorations qui influencent le mouvement de la pièce.","upgrades.viscosity.help":"Chute plus lente des pièces","upgrades.viscosity.name":"Fluide visqueux ","upgrades.wind.fullHelp":"Le vent dépend de l\'endroit où se trouve le palet, s\'il est au centre de l\'écran, il ne se passe rien, s\'il est à gauche, il soufflera vers la gauche, s\'il est à droite de l\'écran, il soufflera vers la droite.\\n\\nLe vent affecte à la fois les balles et les pièces.","upgrades.wind.help":"La position du palet crée du vent","upgrades.wind.help_plural":"Force du vent plus importante","upgrades.wind.name":"Vive le vent","upgrades.yoyo.fullHelp":"C\'est l\'inverse de Télékinésie, contrôlez la balle alors qu\'elle redescend vers le palet.","upgrades.yoyo.help":"La balle descend vers le palet","upgrades.yoyo.name":"Yo-yo","upgrades.zen.fullHelp":"C\'est quand même un jeu non violent à la base.","upgrades.zen.help":"+{{lvl}} combo par brique, jusqu\'à ce qu\'il y ait une explosion","upgrades.zen.name":"Zen"}');var H={};H=JSON.parse('{"confirmRestart.no":"Cancel","confirmRestart.text":"You\'re about to start a new game, is that really what you wanted ?","confirmRestart.title":"Start a new game ?","confirmRestart.yes":"Restart game","gameOver.creative":"This is a test game, its score is not recorded.","gameOver.cumulative_total":"Your total cumulative score went from {{startTs}} to {{endTs}}.","gameOver.lost.summary":"You dropped the ball after catching {{score}} coins.","gameOver.lost.title":"Game Over","gameOver.restart":"Start a new game","gameOver.stats.balls_lost":"Balls lost","gameOver.stats.bricks_broken":"Bricks broken","gameOver.stats.bricks_per_minute":"Bricks broken per minute","gameOver.stats.catch_rate":"Catch rate","gameOver.stats.combo_avg":"Average combo","gameOver.stats.combo_max":"Max combo","gameOver.stats.duration_per_level":"Duration per level","gameOver.stats.hit_rate":"Hit rate","gameOver.stats.intro":"Find below your game statistics compared to your {{count}} best games.","gameOver.stats.level_reached":"Level reached","gameOver.stats.total_score":"Total score","gameOver.stats.upgrades_applied":"Upgrades applied","gameOver.unlocked_perk":"You just unlocked a perk","gameOver.unlocked_perk_plural":"You just unlocked {{count}} perks","gameOver.win.summary":"This game is over. You stashed {{score}} coins. ","gameOver.win.title":"You completed this game","history.columns.max_combo":"Max combo","history.columns.max_level":"Levels","history.columns.puck_bounces":"PB","history.columns.puck_bounces_tooltip":"Puck bounces : number of time the ball bounced on the puck","history.columns.runTime":"Dur.","history.columns.runTime_tooltip":"Duration of the run, in seconds, only counting time where the game is running and the ball is in motion","history.columns.score":"Score","history.columns.started":"Date","history.columns.upgrades_picked":"Upgrades","history.help":"See the list of your {{count}} game","history.locked":"Play at least ten games to unlock","history.title":"Runs history","lab.help":"Try any build you want","lab.instructions":"Select upgrades below, then pick the level to play. Creative mode runs are ignored in unlocks, high score, total score and statistics, and only last one level.","lab.menu_entry":"Creative mode","lab.reset":"Reset all to 0","lab.select_level":"Select a level to play on","lab.unlocks_at":"Unlocks at total score {{score}}","level_up.after_buttons":"You just finished level {{level}}/{{max}}.","level_up.before_buttons":"You caught {{score}} coins {{catchGain}} out of {{levelSpawnedCoins}} in {{time}} seconds {{timeGain}}.\\n\\nYou missed {{levelMisses}} times {{missesGain}} and hit the walls or ceiling {{levelWallBounces}} times{{wallHitsGain}}.\\n\\n{{compliment}}","level_up.compliment_advice":"Try to catch all coins, never miss the bricks, never hit the walls/ceiling or clear the level under 30s to gain additional choices and upgrades.","level_up.compliment_good":"Well done !","level_up.compliment_perfect":"Impressive, keep it up !","level_up.pick_upgrade_title":"Pick an upgrade","level_up.plus_one_upgrade":"(+1 upgrade)","level_up.plus_one_upgrade_and_reroll":"(+1 upgrade and +1 re-roll)","level_up.reroll":"Re-roll ({{count}})","level_up.reroll_help":"Offer new choices","level_up.unlocked_level":" (Level)","level_up.unlocked_perk":" (Perk)","level_up.upgrade_perk_to_level":" lvl {{level}}","loop.converted_rerolls":"Your {{n}} leftover re-rolls where converted to +{{n}} base combo.","loop.instructions":"All perks you have now will have lower max levels depending on their current level. You can pick one below that will gain one level and one max level instead. Your pick will be leveled up, even beyond the maximum normally allowed for that perk.","loop.no_rerolls":"You didn\'t have any leftover re-rolls, so your base combo stayed the same. ","loop.title":"Starting loop {{loop}}","main_menu.basic":"Basic graphics","main_menu.basic_help":"Better performance.","main_menu.colorful_coins":"Colorful coins","main_menu.colorful_coins_help":"Coins always spawn of the color of the brick","main_menu.comboIncreaseTexts":"Show +X in gold","main_menu.comboIncreaseTexts_help":"When the combo increase","main_menu.contrast":"High Contrast","main_menu.contrast_help":"More colorful and dark rendering","main_menu.credit_levels":"<h2>Levels source or reference link</h2>","main_menu.credits":"# Credits\\n\\nI pulled many background patterns from https://pattern.monster/\\n\\nSome of the sound generating code was written by ChatGPT, and heavily\\nadapted to my usage over time.\\n\\nI wanted an APK to start in fullscreen and be able to list it on fdroid and the play store. I started with an empty view and went to work trimming it down, with the help of that tutorial : https://github.com/fractalwrench/ApkGolf/blob/master/blog/BLOG_POST.md\\n\\nColin (obigre) brought a lot of fantastic ideas to the game, here\'s his website (in French) : https://colin-crapahute.bearblog.dev/\\n\\nTõnu Rääk made a Tiermaker template to share your favorite perk choices : https://tiermaker.com/create/breakout-71-perks-18086724\\n\\n# Breakout games suggestions\\n\\nHere are a few interesting games in the breakout genre :\\n\\n- LBreakoutHD : https://sourceforge.net/p/lgames/code/HEAD/tree/trunk/lbreakouthd/\\n- Wizorb : https://store.steampowered.com/app/207420/Wizorb/\\n- Ricochet infinity : https://www.myabandonware.com/game/ricochet-infinity-dxm\\n- First prototype of B71 : https://breakout-v1.lecaro.me/\\n- Second prototype of B71: https://breakout-v2.lecaro.me/\\n- Whackerball : https://store.steampowered.com/app/2192170/Whackerball/\\n\\n# PC game suggestions\\n\\nHere are a few games i\'ve sank a lot of time in, and that inspired breakout in some way\\n\\n- Heat signature : https://www.humblebundle.com/store/heat-signature\\n- FTL : https://www.gog.com/en/game/faster_than_light\\n- Nova drift : https://www.gog.com/en/game/nova_drift\\n- Noita : https://www.gog.com/en/game/noita\\n- Enter the gungeon : https://www.gog.com/en/game/enter_the_gungeon\\n- Zero Sivert : https://store.steampowered.com/app/1782120/ZERO_Sievert/\\n- Factorio : https://www.factorio.com/\\n- Nuclear throne : https://store.steampowered.com/app/242680/Nuclear_Throne/ (don\'t buy on GOG it\'s outdated) \\n- Brigador : https://www.gog.com/en/game/brigador\\n- Teleglitch https://www.gog.com/en/game/teleglitch_die_more_edition\\n- Rollers of the realm : https://store.steampowered.com/app/262470/Rollers_of_the_Realm/\\n","main_menu.donate":"You\'ve played for {{hours}} hours","main_menu.donate_help":"How about donating {{suggestion}} € ? You can hide this reminder in the settings. ","main_menu.donation_reminder":"Remind me to donate","main_menu.donation_reminder_help":"See time played and donation link in main menu","main_menu.download_save_file":"Download score and stats","main_menu.download_save_file_help":"Get a save file","main_menu.extra_bright":"Extra bright","main_menu.extra_bright_help":"Increases the size of the halo around coins and bricks.","main_menu.footer_html":"<p> \\n<span>Made in France by <a href=\\"https://lecaro.me\\">Renan LE CARO</a>.</span> \\n<a href=\\"https://paypal.me/renanlecaro\\" target=\\"_blank\\">Donate</a>\\n<a href=\\"https://discord.gg/bbcQw4x5zA\\" target=\\"_blank\\">Discord</a>\\n<a href=\\"https://f-droid.org/en/packages/me.lecaro.breakout/\\" target=\\"_blank\\">F-Droid</a>\\n<a href=\\"https://play.google.com/store/apps/details?id=me.lecaro.breakout\\" target=\\"_blank\\">Google Play</a>\\n<a href=\\"https://renanlecaro.itch.io/breakout71\\" target=\\"_blank\\">itch.io</a> \\n<a href=\\"https://gitlab.com/lecarore/breakout71\\" target=\\"_blank\\">Gitlab</a>\\n<a href=\\"https://breakout.lecaro.me/\\" target=\\"_blank\\">Web version</a>\\n<a href=\\"https://news.ycombinator.com/item?id=43183131\\" target=\\"_blank\\">HackerNews</a>\\n<a href=\\"https://breakout.lecaro.me/privacy.html\\" target=\\"_blank\\">Privacy Policy</a>\\n<span>v.{{appVersion}}</span>\\n</p>\\n","main_menu.fullscreen":"Fullscreen","main_menu.fullscreen_help":"Game will try to go full screen before starting","main_menu.help_content":"# Goal\\n\\nThe goal is to catch as many coins as possible during 7 levels. \\nCoins appear when you break bricks.\\nThey fly around, bounce and roll, and you need to catch them with your puck to increase your score. \\nYour score is displayed in the top right corner of the screen.\\nYou must delete all bricks to progress to the next level. \\nIf you drop the ball, it\'s game over, unless you had the \\"extra life\\" upgrade.\\n\\n# Upgrades \\n\\nAfter clearing a level, you\'ll be able to pick upgrades among a small selection presented to you. \\n\\nThe upgrade you pick will apply until the end of the run. You will get more upgrade if you play well : catch all coins, clear the level quickly, never miss the bricks, never bounce on the sides or ceiling.\\n\\nIf you play very well, you\'ll also get \\"rerolls\\" that allow you to shuffle the list of upgrades that are offered to you. Once an upgrade is offered, it\'s less likely to reappear afterward. \\n\\nYou also get a free random upgrade at the beginning of each run. There\'s also an easy mode for kids, where the game will always start with the \\"slower ball\\" upgrade. The icon of your randomly assigned upgrade will be the used as the first level you play in each run. You can decide which upgrades can be starting upgrades in the settings. \\n\\nUpgrades apply to the whole run and can synergize, or really work against each other. Most of the fun of the game is discovering which ones work best together.\\n\\nSome upgrades help with aiming, like \\"Telekinesis\\". Some upgrades can be picked multiple times to increase the effect, you\'ll see for example \\"+1 ball level 2\\" which adds a third ball.\\n\\nWhen you first play, only a few upgrades are available, you unlock the rest by simply playing and scoring points. At the end of a run, the things you just unlocked will be shown, and you can check the full content in menu / unlocks.\\n\\nMany upgrades impact your combo. \\n\\n# Combo\\n\\nYour \\"combo\\" is the number of coins spawned when a brick breaks. It is displayed on your puck, for example x4 means each\\nbrick will spawn 4 coins. It will reset if you miss. \\n\\nMany upgrades will increase the combo when you break a brick, but also add a condition to reset it. So the more upgrades you pick, the faster it will climb, but the more likely it will be that it returns to it\'s base value. \\n\\n# Aiming\\n\\nWhat decides how the ball flies away is only the position of the puck hit. If the ball hits the puck dead center, it will bounce back up vertically, while in you hit more on one side, it will have more angle. \\n\\nThe puck speed and incoming angle have no impact on the ball direction after bouncing.\\n\\nYou might find that a smaller puck makes it a bit easier to aim near corners, but also makes it much harder to catch coins.\\n\\n\\"Wind\\" and \\"puck controls ball\\" can help you aim even after the ball bounced to the wrong direction.\\n\\n\\"Slower ball\\" gives you a bit more time to aim, particularly useful in later levels where the ball goes faster. The ball also\\naccelerates as you spend time in each level. \\n\\n# Unlocks\\n\\nWhen starting breakout 71 for the first time, you can access a few upgrades and levels. The rest needs to be unlocked. Upgrades are unlocked by simply playing. Every time you catch a coin, your total score is raised by one. Then once you reach the threshold of the upgrade, it\'s unlocked.\\n\\nUnlocking levels is a bit different, it requires you to play very well, in many different ways. The first levels just need a high score of X, but later level are unlocked by reaching a high score of X with perk Y and without perk Z. All those requirements are pseudo random and not handpicked, so some are likely much harder than others. They should be the same for everyone though. It might happen that an update of the game perks list changes the required perks. \\n\\n# System requirements \\n\\nThe game should perform well even on low-end devices. It\'s very lean and does not take much storage space (Roughly 0.1MB). The web version is supposed to work on iOS safari, Firefox ESR and chrome, on desktop and mobile.\\n\\nIf the app stutters, turn on \\"fast mode\\" in the settings to render a simplified view that should be faster. You can adjust many aspects of the game there, go have a look ! \\n\\n# Playing offline \\n\\nBreakout 71 can work offline in many ways:\\n\\n- play store : https://play.google.com/store/apps/details?id=me.lecaro.breakout\\n- fdroid : https://f-droid.org/packages/me.lecaro.breakout/\\n- html file on pc : https://renanlecaro.itch.io/breakout71\\n\\n","main_menu.help_help":"Learn more about general aspects of the game","main_menu.help_title":"Help and credits","main_menu.help_upgrades":"<h2>Upgrades</h2>","main_menu.high_score":"High score : {{score}}","main_menu.kid":"Kids mode","main_menu.kid_help":"Start future games with \\"slower ball\\".","main_menu.language":"Language","main_menu.language_help":"Choose the game\'s language","main_menu.load_save_file":"Load save file","main_menu.load_save_file_help":"Select a save file on your device","main_menu.loop_run_help":"Allows you to loop up to 7 times","main_menu.max_coins":" {{max}} coins on screen maximum","main_menu.max_coins_help":"Cosmetic only, no effect on score","main_menu.max_particles":" {{max}} particles maximum","main_menu.max_particles_help":"Limits the number of particles show on screen for visual effect. ","main_menu.mobile":"Mobile mode","main_menu.mobile_help":"Leaves space under the puck.","main_menu.normal":"New game","main_menu.normal_help":"Play 7 levels with a random starting perk","main_menu.pointer_lock":"Mouse pointer lock","main_menu.pointer_lock_help":"Locks and hides the mouse cursor.","main_menu.record":"Record gameplay videos","main_menu.record_download":"Download video ({{size}} MB)","main_menu.record_help":"Get a video of each level.","main_menu.red_miss":"Miss warning","main_menu.red_miss_help":"Show red particles around balls going down without a hit.","main_menu.reset":"Reset Game","main_menu.reset_cancel":"No","main_menu.reset_confirm":"Yes","main_menu.reset_help":"Erase high score, play time and statistics","main_menu.reset_instruction":"You will loose all progress you made in the game, are you sure ?","main_menu.save_file_error":"Error loading save file","main_menu.save_file_loaded":"Save file loaded","main_menu.save_file_loaded_help":"The app will now reload to apply your save","main_menu.save_file_loaded_ok":"Ok","main_menu.settings_help":"Tailor the game play to your needs and taste","main_menu.settings_title":"Settings","main_menu.show_fps":"FPS counter","main_menu.show_fps_help":"Monitor the app\'s performance","main_menu.show_stats":"Show real time stats","main_menu.show_stats_help":"Coins, time, bounces, misses","main_menu.sounds":"Game sounds","main_menu.sounds_help":"Can slow down some phones.","main_menu.starting_perks":"Starting perks","main_menu.starting_perks_checked":"When you start a new game, one of those perks will be give to you. You can click the list to exclude some perks from the pool.","main_menu.starting_perks_help":"Choose possible starting upgrades","main_menu.starting_perks_unchecked":"The perks below are not offered as starting perks, but you can click to add them to the pool. ","main_menu.title":"Breakout 71","main_menu.unlocks":"Unlocked content","main_menu.unlocks_help":"Try perks and levels you unlocked","play.close_modale_window_tooltip":"close ","play.current_lvl":"Level {{level}}/{{max}}","play.current_lvl_loop":"Level {{level}}/{{max}} loop {{loop}}","play.menu_label":"menu","play.menu_tooltip":"Open main menu","play.missed_ball":"miss","play.mobile_press_to_play":"Press and hold here to play","play.score_tooltip":"See your score, upgrades and more","play.stats.coins_catch_rate":"Coins catch rate","play.stats.levelMisses":"Missed shots, where you hit nothing","play.stats.levelTime":"Level time","play.stats.levelWallBounces":"Wall bounces","score_panel.close_to_unlock":"You could unlock a level at the end of this run:","score_panel.continue_to_unlock":"You are about to unlock level \\"{{level}}\\"","score_panel.get_upgrades_to_unlock":"Get {{missingUpgrades}} and score {{points}} more points to unlock level \\"{{level}}\\"","score_panel.rerolls_count":"You have accumulated {{rerolls}} rerolls","score_panel.score_to_unlock":"Score {{points}} more points to unlock level \\"{{level}}\\"","score_panel.title":"{{score}} points at level {{level}}/{{max}} ","score_panel.title_looped":"{{score}} points at level {{level}}/{{max}} of loop {{loop}}","score_panel.upcoming_levels":"Upcoming levels :","score_panel.upgrades_picked":"Upgrades picked so far : ","unlocks.greyed_out_help":"The grayed out upgrades can be unlocked by increasing your total score. The total score increases every time you score in game, outside of test runs.","unlocks.intro":"Your total score is {{ts}}. Below are all the upgrades and levels the games has to offer. Click an upgrade or level below to start a test game with it. Hint: you can set the starting upgrades in the settings.","unlocks.just_unlocked":"You just unlocked a level","unlocks.just_unlocked_plural":"You just unlocked {{count}} levels","unlocks.level":"<h2>You unlocked {{unlocked}} levels out of {{out_of}}</h2>\\n<p>Here are all the game levels, click one to start a test game with that starting level. </p> ","unlocks.level_description":"A {{size}}x{{size}} level with {{bricks}} bricks, {{colors}} colors and {{bombs}} bombs.","unlocks.minScore":"Reach ${{minScore}} in a run to unlock.","unlocks.minScoreWithPerks":"Reach ${{minScore}} in a run with {{required}} but without {{forbidden}} to unlock.","unlocks.minTotalScore":"Accumulate a total of ${{score}}","unlocks.reached":"Your best score was {{reached}}.","unlocks.title_upgrades":"You unlocked {{unlocked}} upgrades out of {{out_of}}","upgrades.addiction.fullHelp":"The countdown only starts after breaking the first brick of each level. It stops as soon as all bricks are destroyed.","upgrades.addiction.help":"+{{lvl}} combo / brick, combo resets {{delay}}s after breaking a brick. ","upgrades.addiction.name":"Addiction","upgrades.asceticism.fullHelp":"You\'ll need to store the coins somewhere while your combo climbs. ","upgrades.asceticism.help":"+{{combo}} combo / brick, - {{combo}} on coin catch","upgrades.asceticism.name":"Asceticism","upgrades.ball_attract_ball.fullHelp":"Balls that are more than \\"3/4 of the game area width\\" away will start attracting each other. \\n\\nThe attraction force is stronger when they are furthest away from each other.\\n\\nRainbow particles will fly to symbolize the attraction force. This perk is only offered if you have more than one ball already.","upgrades.ball_attract_ball.help":"Balls attract balls","upgrades.ball_attract_ball.help_plural":"Stronger attraction force","upgrades.ball_attract_ball.name":"Gravity","upgrades.ball_attracts_coins.fullHelp":"This could be used to \\"paint around\\" the balls with coins if you combined it with \\"stain\\" and \\"ghost coins\\".","upgrades.ball_attracts_coins.help":"Balls attract coins","upgrades.ball_attracts_coins.name":"Fortunate ball","upgrades.ball_repulse_ball.fullHelp":"Balls that are less than a quarter screen width away will start repulsing each other. The repulsion force is stronger if they are close to each other. Particles will jet out to symbolize this force being applied. This perk is only offered if you have more than one ball already.","upgrades.ball_repulse_ball.help":"Balls repulse balls","upgrades.ball_repulse_ball.help_plural":"Stronger repulsion force","upgrades.ball_repulse_ball.name":"Personal space","upgrades.base_combo.fullHelp":"Your combo normally starts at 1 at the beginning of the level, and resets to 1 when you bounce around without hitting anything. With this perk, the combo starts 3 points higher, so you\'ll always get at least 4 coins per brick. Whenever your combo reset, it will go back to 4 and not 1. Your ball will glitter a bit to indicate that its combo is higher than one.","upgrades.base_combo.help":"Combo starts at {{coins}}.","upgrades.base_combo.name":"+3 base combo","upgrades.bigger_explosions.fullHelp":"The default explosion clears a 3x3 square, with this it becomes a 5x5 square, and the blow on the coins is also significantly stronger. The screen will flash after each explosion (except in basic mode)","upgrades.bigger_explosions.help":"Bigger explosions","upgrades.bigger_explosions.name":"Kaboom","upgrades.bigger_puck.fullHelp":"A bigger puck makes it easier to never miss the ball and to catch more coins, and also to precisely angle the bounces (the ball\'s angle only depends on where it hits the puck). \\n\\nHowever, a large puck is harder to use around the sides of the level, and will make it sometimes unavoidable to miss. You could word around that with other perks.","upgrades.bigger_puck.help":"Easily catch more coins.","upgrades.bigger_puck.name":"Bigger puck","upgrades.clairvoyant.fullHelp":"Helps you pick the right upgrades and understand what\'s going on with sturdy bricks. Level 2 and 3 bring additional knowledge of dubious utility (reachable in loop mode)","upgrades.clairvoyant.help":"See upcoming levels, bricks HP and ball direction","upgrades.clairvoyant.name":"Clairvoyant","upgrades.coin_magnet.fullHelp":"Directs the coins to the puck. The effect is stronger if the coin is close to it already. Catching all coins bring special bonuses in the game. \\n\\nAnother way to catch more coins is to hit bricks from the bottom. The ball\'s speed and direction impacts the spawned coin\'s velocity. ","upgrades.coin_magnet.help":"Puck attracts coins","upgrades.coin_magnet.help_plural":"Stronger effect on the coins","upgrades.coin_magnet.name":"Coins magnet","upgrades.compound_interest.fullHelp":"Your combo will grow by one every time you break a brick, spawning more and more coin with every brick you break. \\n\\nBe sure however to catch every one of those coins with your puck, as any lost coin will reset your combo. \\n\\nOnce your combo is above the minimum, the bottom of the play area will have a red line to remind you that coins should not go there.","upgrades.compound_interest.help":"+{{lvl}} combo per brick broken, resets on coin lost","upgrades.compound_interest.name":"Compound interest","upgrades.concave_puck.fullHelp":"Balls starts the level going straight up, and bounces with less angle.","upgrades.concave_puck.help":" Helps with aiming straight up","upgrades.concave_puck.name":"Concave puck","upgrades.corner_shot.fullHelp":"Helps with aiming in the corners. Further levels let you go further out. ","upgrades.corner_shot.help":"Lets your puck overlap with the borders of the screen","upgrades.corner_shot.name":"Corner shot","upgrades.etherealcoins.fullHelp":"You\'ll have to make sure that the coins fall down somehow, or you won\'t get any. ","upgrades.etherealcoins.help":"Coins are no longer affected by gravity","upgrades.etherealcoins.name":"Coins, in Space","upgrades.extra_levels.fullHelp":"The default game can last a max of 7 levels, after which the game is over. \\n\\nEach level of this perk lets you go one level higher. The last levels are often the ones where you make the most score, so the difference can be dramatic.","upgrades.extra_levels.help":"Play {{count}} levels instead of 7","upgrades.extra_levels.name":"+1 level","upgrades.extra_life.fullHelp":"Normally, you have one ball, and the game is over as soon as you drop it.\\n\\nThis perk adds a white bar at the bottom of the screen that will save a ball once, and break in the process. \\n\\nYou\'ll loose one level of that perk every time a ball bounces at the bottom of the screen.","upgrades.extra_life.help":"The ball will bounce once on the bottom line before being lost.","upgrades.extra_life.help_plural":"The ball will bounce on the bottom {{lvl}} times before being lost.","upgrades.extra_life.name":"+1 life","upgrades.forgiving.fullHelp":"The first miss per level is free, then 10% of the combo, then 20% .. ","upgrades.forgiving.help":"Missing breaks reduces combo progressively instead of all at once.","upgrades.forgiving.name":"Forgiving","upgrades.fountain_toss.fullHelp":"","upgrades.fountain_toss.help":"When you miss a coin and your combo was under {{max}}, your combo has a probability of {{lvl}}/combo to grow by one.","upgrades.fountain_toss.name":"Fountain toss","upgrades.ghost_coins.fullHelp":"It\'s not a bug, it\'s a feature ! Coins fly through bricks slowly. Higher levels let them move faster. ","upgrades.ghost_coins.help":"Coins pass through bricks","upgrades.ghost_coins.name":"Ghost coins","upgrades.helium.fullHelp":"This affects the coins and will let the float up until you are ready to pick them up.","upgrades.helium.help":"Gravity reversed left and right of puck","upgrades.helium.name":"Helium","upgrades.hot_start.fullHelp":"At the start of every level, your combo will start at +30 points, but then every second it will be decreased by one.\\n\\nThis means the first 30 seconds in a level will spawn many more coins than the following ones, and you should make sure that you clear the level quickly. \\n\\nThe effect stacks with other combo related perks, so you might be able to raise the combo after the 30s timeout, but it will keep ticking down. \\n\\nEvery time you take the perk again, the effect will be more dramatic.","upgrades.hot_start.help":"Start at combo {{start}}, -{{loss}} combo per second","upgrades.hot_start.name":"Hot start","upgrades.implosions.fullHelp":"The explosion force is applied the other way. Further levels act as \\"bigger explosion\\"","upgrades.implosions.help":"Explosions suck coins in instead of blowing them out","upgrades.implosions.name":"Implosions","upgrades.instant_upgrade.fullHelp":"Immediately pick two upgrades, so that you get one free one and one to repay the one used to get this perk. Every further menu to pick upgrades will have fewer options to choose from.","upgrades.instant_upgrade.help":"-{{lvl}} choice until game end.","upgrades.instant_upgrade.name":"+2 upgrades now","upgrades.left_is_lava.fullHelp":"Whenever you break a brick, your combo will increase by one, so you\'ll get one more coin from all the next bricks you break.\\n\\nHowever, your combo will reset as soon as your ball hits the left side . \\n\\nAs soon as your combo rises, the left side becomes red to remind you that you should avoid hitting them. \\n","upgrades.left_is_lava.help":"+{{lvl}} combo per brick broken, resets on left side hit","upgrades.left_is_lava.name":"Avoid left side","upgrades.limitless.fullHelp":"Choosing this perk also raises his own limit by one, letting you pick it again.","upgrades.limitless.help":"Raise all upgrade\'s maximum level by {{lvl}} ","upgrades.limitless.name":"Limitless","upgrades.metamorphosis.fullHelp":"With this perk, coins will be of the color of the brick they come from, and will color the first brick they touch in the same color. \\n\\nCoins spawn with the speed of the ball that broke them, which means you can aim a bit in the direction of the bricks you want to \\"paint\\".","upgrades.metamorphosis.help":"Each coins can stain {{lvl}} brick(s) with its color","upgrades.metamorphosis.name":"Metamorphosis","upgrades.multiball.fullHelp":"As soon as you drop the ball in Breakout 71, you loose. \\n\\nWith this perk, you get two balls, and so you can afford to lose one. \\n\\nThe lost balls come back on the next level. \\n\\nHaving more than one balls makes some further perks available, and of course clears the level faster.","upgrades.multiball.help":"Start every levels with {{count}} balls.","upgrades.multiball.name":"+1 ball","upgrades.nbricks.fullHelp":"You don\'t necessarily need to destroy those bricks, but you need to hit them. Bricks destroyed by explosions don\'t count","upgrades.nbricks.help":"Hit exactly {{lvl}} bricks per puck bounce for +{{lvl}} combo, otherwise it resets","upgrades.nbricks.name":"Strict sample size","upgrades.one_more_choice.fullHelp":"Every upgrade menu will have one more option. Doesn\'t increase the number of upgrades you can pick.","upgrades.one_more_choice.help":"Further level ups will offer {{lvl}} more option(s) in the list","upgrades.one_more_choice.name":"+1 choice","upgrades.passive_income.fullHelp":"Some perks can help the balls do what you want without needing to do anything.","upgrades.passive_income.help":"+{{lvl}} combo / brick, unless the puck moved in the last {{time}}s, then it resets instead","upgrades.passive_income.name":"Passive income","upgrades.picky_eater.fullHelp":"Whenever you break a brick the same color as your ball, your combo increases by one. \\n\\nIf it\'s a different color, the ball takes that new color, but the combo resets, unless there were no bricks left of the ball\'s color. \\n\\nOnce you get a combo higher than your minimum, the bricks of the wrong color will get a red halo. \\n\\nIf you have more than one ball, they all switch color whenever one of them hits a brick.","upgrades.picky_eater.help":"+{{lvl}} combo per brick broken, resets on ball color change","upgrades.picky_eater.name":"Picky eater","upgrades.pierce.fullHelp":"The ball normally bounces as soon as it touches something. With this perk, it will continue its trajectory for up to 3 bricks broken. \\n\\nAfter that, it will bounce on the 4th brick, and you\'ll need to touch the puck to reset the counter.","upgrades.pierce.help":"Ball pierces {{count}} bricks after a puck bounce","upgrades.pierce.name":"Piercing","upgrades.pierce_color.fullHelp":"Whenever a ball hits a brick of the same color, it will just go through unimpeded. \\n\\nOnce it reaches a brick of a different color, it will break it, take its color and bounce.\\n\\nIf you have sturdy bricks, the ball might still bounce off a brick of the same color.","upgrades.pierce_color.help":"+{{lvl}} damage to bricks of the ball\'s color","upgrades.pierce_color.name":"Color pierce","upgrades.puck_repulse_ball.fullHelp":"When a ball gets close to the puck, it will start slowing down, and even potentially bouncing without touching the puck.","upgrades.puck_repulse_ball.help":"Puck repulses balls","upgrades.puck_repulse_ball.help_plural":"Stronger repulsion force","upgrades.puck_repulse_ball.name":"Soft landing","upgrades.reach.fullHelp":"If there is only one row of bricks, or if the lowest row of bricks cover the whole width of the game, then this perk does nothing. Otherwise, breaking this lowest row resets the combo, while breaking anything else increases the combo by the number of bricks present on that lowest row. \\n\\nThe lowest row will be highlighted in red. ","upgrades.reach.help":" Touching the N bricks of the lowest row resets the combo. Otherwise, +N combo","upgrades.reach.name":"Top down","upgrades.respawn.fullHelp":"Some particle effect will let you know where bricks will appear. ","upgrades.respawn.help":"{{percent}}% of bricks re-spawn after {{delay}}s.","upgrades.respawn.name":"Re-spawn","upgrades.right_is_lava.fullHelp":"Whenever you break a brick, your combo will increase by one, so you\'ll get one more coin from all the next bricks you break.\\n\\nHowever, your combo will reset as soon as your ball hits the right side. \\n\\nAs soon as your combo rises, the right side becomes red to remind you that you should avoid hitting them.\\n","upgrades.right_is_lava.help":"+{{lvl}} combo per brick broken, resets on right side hit","upgrades.right_is_lava.name":"Avoid right side","upgrades.sacrifice.fullHelp":"This might get the combo pretty high.","upgrades.sacrifice.help_l1":"Loosing a life clears all bricks","upgrades.sacrifice.help_over":"Loosing a life {{lvl}}x the combo then clears all bricks","upgrades.sacrifice.name":"Sacrifice","upgrades.sapper.fullHelp":"Instead of just disappearing, the first brick you break will be replaced by a bomb brick. Bouncing the ball on the puck re-arms the effect. Leveling-up this perk will allow you to place more bombs.\\n\\nRemember that bombs impact the velocity of nearby coins, so too many explosions could make it hard to catch the fruits of your hard work.","upgrades.sapper.help":"The first brick broken becomes a bomb.","upgrades.sapper.help_plural":"The first {{lvl}} bricks broken become bombs.","upgrades.sapper.name":"Sapper","upgrades.shocks.fullHelp":"Whenever two balls collide, they exchange their speed, spawn an explosion, and gain added speed to separated them. ","upgrades.shocks.help":"Explosive balls collisions","upgrades.shocks.name":"Shocks","upgrades.shunt.fullHelp":"If you also have hot start, the hot start is just added to the current combo","upgrades.shunt.help":"Keep {{percent}}% of your combo between levels","upgrades.shunt.name":"Shunt","upgrades.side_kick.fullHelp":"When a brick get hit, the game checks the ball\'s horizontal velocity, and add +1 to the combo it is towards the right. The combo will decrease by 2 otherwise. The location of the impact on the brick is irrelevant. ","upgrades.side_kick.help":"+{{lvl}} combo per brick broken from the left, -{{loss}} otherwise","upgrades.side_kick.name":"Left handed","upgrades.skip_last.fullHelp":"You need to break all bricks to go to the next level. However, it can be hard to get the last ones. \\n\\nClearing a level early brings extra choices when upgrading. Never missing the bricks is also very beneficial. \\n\\nSo if you find it difficult to break the last bricks, getting this perk a few time can help.","upgrades.skip_last.help":"The last brick will explode.","upgrades.skip_last.help_plural":"The last {{lvl}} bricks will explode.","upgrades.skip_last.name":"Easy Cleanup","upgrades.slow_down.fullHelp":"The ball starts relatively slow, but every level of your game it will start a bit faster. \\n\\nIt will also accelerate if you spend a lot of time in one level. \\n\\nThis perk makes it more manageable. \\n\\nYou can get it at the start every time by enabling kid mode in the menu.","upgrades.slow_down.help":"Ball moves more slowly","upgrades.slow_down.name":"Slower ball","upgrades.smaller_puck.fullHelp":"This makes the puck smaller, which in theory makes some corner shots easier, but really just raises the difficulty.\\n\\nThat\'s why you also get a nice bonus of +5 coins per brick for all bricks you\'ll break after picking this. ","upgrades.smaller_puck.help":"Also gives +5 base combo","upgrades.smaller_puck.help_plural":"Even smaller puck and higher base combo","upgrades.smaller_puck.name":"Smaller puck","upgrades.soft_reset.fullHelp":"Limit the impact of a combo reset.","upgrades.soft_reset.help":"Combo resets keeps {{percent}}%","upgrades.soft_reset.name":"Soft reset","upgrades.streak_shots.fullHelp":"Every time you break a brick, your combo (number of coins per bricks) increases by one. \\n\\nHowever, as soon as the ball touches your puck, the combo is reset to its default value, and you\'ll just get one coin per brick.\\n\\nOnce your combo rises above the base value, your puck will become red to remind you that it will destroy your combo to touch it with the ball.","upgrades.streak_shots.help":"More coins if you break many bricks at once.","upgrades.streak_shots.name":"Single puck hit streak","upgrades.sturdy_bricks.fullHelp":"Each level of this perk adds one HP to all bricks. You can see the HP number with the \\"clairvoyant\\" perk. You can increase ball damage by getting the \\"piercing\\" perk. Each level of the perk adds +50% coins spawn. ","upgrades.sturdy_bricks.help":"+{{lvl}} bricks HP, +{{percent}}% coins spawned when broken","upgrades.sturdy_bricks.name":"Sturdy bricks","upgrades.telekinesis.fullHelp":"You control the ball while it\'s going up. ","upgrades.telekinesis.help":"Puck controls the ball\'s trajectory","upgrades.telekinesis.help_plural":"Stronger effect on the ball","upgrades.telekinesis.name":"Telekinesis","upgrades.top_is_lava.fullHelp":"Whenever you break a brick, your combo will increase by one. However, your combo will reset as soon as your ball hit the top of the screen. \\n\\nWhen your combo is above the minimum, a red bar will appear at the top to remind you that you should avoid hitting it. ","upgrades.top_is_lava.help":"+{{lvl}} combo per brick, reset when the top is hit","upgrades.top_is_lava.name":"Sky is the limit","upgrades.trampoline.fullHelp":"One of the rare combo upgrades that don\'t add a reset condition","upgrades.trampoline.help":"+{{lvl}} combo per puck bounce,-{{lvl}} combo per bounce on any border","upgrades.trampoline.name":"Trampoline","upgrades.unbounded.fullHelp":"I hope you\'ve found a way to keep your ball on screen. Penalties for hitting the sides no longer apply. At level 2+, the ceiling will also disappear. This is an advanced perk. ","upgrades.unbounded.help":"+{{lvl}} combo per brick, no more sides to keep the ball in game, danger","upgrades.unbounded.help_no_ceiling":"+{{lvl}} combo per brick, no more sides or ceiling","upgrades.unbounded.name":"Unbounded","upgrades.viscosity.fullHelp":"Coins normally accelerate with gravity and explosions to pretty high speeds. \\n\\nThis perk constantly makes them slow down, as if they were in some sort of viscous liquid. \\n\\nThis makes catching them easier, and combines nicely with perks that influence the coin\'s movement.","upgrades.viscosity.help":"Slower coin fall","upgrades.viscosity.name":"Viscosity","upgrades.wind.fullHelp":"The wind depends on where your puck is, if it\'s in the center of the screen nothing happens, if it\'s on the left it will blow left-wise, if it\'s on the right of the screen then it will blow right-wise. \\n\\nThe wind affects both the balls and coins.","upgrades.wind.help":"Puck position creates wind","upgrades.wind.help_plural":"Stronger wind force","upgrades.wind.name":"Wind","upgrades.yoyo.fullHelp":"It\'s the opposite of telekinesis, control the ball while it\'s falling back down.","upgrades.yoyo.help":"Ball falls toward puck","upgrades.yoyo.name":"Yo-yo","upgrades.zen.fullHelp":"After all, this is a non-violent game. ","upgrades.zen.help":"+{{lvl}} combo per bricks, reset when there\'s an explosion","upgrades.zen.name":"Zen"}');var P={};function R(e,_){if(void 0===P[e])try{var t,r=localStorage.getItem(e);r&&(P[e]=JSON.parse(r))}catch(e){console.warn(e)}return null!==(t=P[e])&&void 0!==t?t:_}function O(e,_){P[e]=_;try{localStorage.setItem(e,JSON.stringify(_))}catch(e){console.warn(e)}}function L(){return R("breakout_71_total_score",0)}function B(){return 200*Math.pow(2,R("max_coins",1))}function T(){return 200*Math.pow(2,R("max_particles",1))}var C={fr:_(M),en:_(H)};function F(){var e,_;return R("lang",(e=w(navigator.languages).concat([navigator.language,"en"]).filter(function(e){return e}).map(function(e){return e.slice(0,2).toLowerCase()}),_=Object.keys(C),e.find(function(e){return _.includes(e)})||"en"))}function A(e){var _,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=(null===(_=C[F()])||void 0===_?void 0:_[e])||C.en[e];for(var a in t)r=r.split("{{"+a+"}}").join("".concat(t[a]));return r}function E(e,_,t){return Math.max(_,Math.min(e,t))}function j(e){return E(1-1/(1+e)*1.5,0,1)}function D(){try{var e=localStorage.getItem("breakout_71_total_play_time")||"0";return Math.floor(parseFloat(e)/1e3/60/60)}catch(e){return 0}}function V(e){var _=[],t=null;return e.split("\n").forEach(function(e){var r,a=null===(r=e.match(/^#+ /))||void 0===r?void 0:r[0];a?(t&&_.push(t),t={tagName:"h"+(a.length-1),text:e.slice(a.length)}):e.startsWith("- ")?((null==t?void 0:t.tagName)!=="ul"&&(t&&_.push(t),t={tagName:"ul",text:""}),t.text+="<li>"+e.slice(2)+"</li>"):e.trim()?((null==t?void 0:t.tagName)!=="p"&&(t&&_.push(t),t={tagName:"p",text:""}),t.text+=e+" "):(t&&_.push(t),t=null)}),t&&_.push(t),_.map(function(e){return"<"+e.tagName+">"+e.text.replace(/\bhttps?:\/\/[^\s<>]+/gi,function(e){return'<a href="'.concat(e,'">').concat(e,"</a>")})+"</"+e.tagName+">"}).join("\n")}var I=[{requires:"",threshold:0,giftable:!1,id:"extra_life",max:3,name:A("upgrades.extra_life.name"),help:function(e){return 1===e?A("upgrades.extra_life.help"):A("upgrades.extra_life.help_plural",{lvl:e})},fullHelp:A("upgrades.extra_life.fullHelp")},{requires:"",threshold:0,id:"streak_shots",giftable:!0,max:1,name:A("upgrades.streak_shots.name"),help:function(e){return A("upgrades.streak_shots.help",{lvl:e})},fullHelp:A("upgrades.streak_shots.fullHelp")},{requires:"",threshold:0,id:"base_combo",giftable:!0,max:7,name:A("upgrades.base_combo.name"),help:function(e){return A("upgrades.base_combo.help",{coins:1+3*e})},fullHelp:A("upgrades.base_combo.fullHelp")},{requires:"",threshold:0,giftable:!1,id:"slow_down",max:2,name:A("upgrades.slow_down.name"),help:function(e){return A("upgrades.slow_down.help",{lvl:e})},fullHelp:A("upgrades.slow_down.fullHelp")},{requires:"",threshold:0,giftable:!1,id:"bigger_puck",max:2,name:A("upgrades.bigger_puck.name"),help:function(){return A("upgrades.bigger_puck.help")},fullHelp:A("upgrades.bigger_puck.fullHelp")},{requires:"",threshold:0,giftable:!1,id:"viscosity",max:3,name:A("upgrades.viscosity.name"),help:function(){return A("upgrades.viscosity.help")},fullHelp:A("upgrades.viscosity.fullHelp")},{requires:"",threshold:0,id:"left_is_lava",giftable:!0,max:1,name:A("upgrades.left_is_lava.name"),help:function(e){return A("upgrades.left_is_lava.help",{lvl:e})},fullHelp:A("upgrades.left_is_lava.fullHelp")},{requires:"",threshold:0,id:"right_is_lava",giftable:!0,max:1,name:A("upgrades.right_is_lava.name"),help:function(e){return A("upgrades.right_is_lava.help",{lvl:e})},fullHelp:A("upgrades.right_is_lava.fullHelp")},{requires:"",threshold:0,id:"top_is_lava",giftable:!0,max:1,name:A("upgrades.top_is_lava.name"),help:function(e){return A("upgrades.top_is_lava.help",{lvl:e})},fullHelp:A("upgrades.top_is_lava.fullHelp")},{requires:"",threshold:0,giftable:!1,id:"skip_last",max:7,name:A("upgrades.skip_last.name"),help:function(e){return 1==e?A("upgrades.skip_last.help"):A("upgrades.skip_last.help_plural",{lvl:e})},fullHelp:A("upgrades.skip_last.fullHelp")},{requires:"",threshold:500,id:"telekinesis",giftable:!0,max:1,name:A("upgrades.telekinesis.name"),help:function(e){return 1==e?A("upgrades.telekinesis.help"):A("upgrades.telekinesis.help_plural")},fullHelp:A("upgrades.telekinesis.fullHelp")},{requires:"",threshold:1e3,giftable:!1,id:"coin_magnet",max:3,name:A("upgrades.coin_magnet.name"),help:function(e){return 1==e?A("upgrades.coin_magnet.help"):A("upgrades.coin_magnet.help_plural")},fullHelp:A("upgrades.coin_magnet.fullHelp")},{requires:"",threshold:1500,id:"multiball",giftable:!0,max:6,name:A("upgrades.multiball.name"),help:function(e){return A("upgrades.multiball.help",{count:e+1})},fullHelp:A("upgrades.multiball.fullHelp")},{requires:"",threshold:2e3,giftable:!1,id:"smaller_puck",max:2,name:A("upgrades.smaller_puck.name"),help:function(e){return 1==e?A("upgrades.smaller_puck.help"):A("upgrades.smaller_puck.help_plural")},fullHelp:A("upgrades.smaller_puck.fullHelp")},{requires:"",threshold:3e3,id:"pierce",giftable:!1,max:3,name:A("upgrades.pierce.name"),help:function(e){return A("upgrades.pierce.help",{count:3*e})},fullHelp:A("upgrades.pierce.fullHelp")},{requires:"",threshold:4e3,id:"picky_eater",giftable:!0,max:1,name:A("upgrades.picky_eater.name"),help:function(e){return A("upgrades.picky_eater.help",{lvl:e})},fullHelp:A("upgrades.picky_eater.fullHelp")},{requires:"",threshold:5e3,giftable:!1,id:"metamorphosis",max:1,name:A("upgrades.metamorphosis.name"),help:function(e){return A("upgrades.metamorphosis.help",{lvl:e})},fullHelp:A("upgrades.metamorphosis.fullHelp")},{requires:"",threshold:6e3,id:"compound_interest",giftable:!0,max:1,name:A("upgrades.compound_interest.name"),help:function(e){return A("upgrades.compound_interest.help",{lvl:e})},fullHelp:A("upgrades.compound_interest.fullHelp")},{requires:"",threshold:7e3,id:"hot_start",giftable:!0,max:3,name:A("upgrades.hot_start.name"),help:function(e){return A("upgrades.hot_start.help",{start:30*e+1,loss:e})},fullHelp:A("upgrades.hot_start.fullHelp")},{requires:"",threshold:9e3,id:"sapper",giftable:!1,max:7,name:A("upgrades.sapper.name"),help:function(e){return 1==e?A("upgrades.sapper.help"):A("upgrades.sapper.help_plural",{lvl:e})},fullHelp:A("upgrades.sapper.fullHelp")},{requires:"",threshold:11e3,id:"bigger_explosions",giftable:!1,max:1,name:A("upgrades.bigger_explosions.name"),help:function(e){return A("upgrades.bigger_explosions.help")},fullHelp:A("upgrades.bigger_explosions.fullHelp")},{requires:"",threshold:13e3,giftable:!1,adventure:!1,id:"extra_levels",max:3,name:A("upgrades.extra_levels.name"),help:function(e){return A("upgrades.extra_levels.help",{count:e+7})},fullHelp:A("upgrades.extra_levels.fullHelp")},{requires:"",threshold:15e3,giftable:!1,id:"pierce_color",max:4,name:A("upgrades.pierce_color.name"),help:function(e){return A("upgrades.pierce_color.help",{lvl:e})},fullHelp:A("upgrades.pierce_color.fullHelp")},{requires:"",threshold:18e3,giftable:!1,id:"soft_reset",max:3,name:A("upgrades.soft_reset.name"),help:function(e){return A("upgrades.soft_reset.help",{percent:Math.round(100*j(e))})},fullHelp:A("upgrades.soft_reset.fullHelp")},{requires:"multiball",threshold:21e3,giftable:!1,id:"ball_repulse_ball",max:3,name:A("upgrades.ball_repulse_ball.name"),help:function(e){return 1==e?A("upgrades.ball_repulse_ball.help"):A("upgrades.ball_repulse_ball.help_plural")},fullHelp:A("upgrades.ball_repulse_ball.fullHelp")},{requires:"multiball",threshold:25e3,giftable:!1,id:"ball_attract_ball",max:3,name:A("upgrades.ball_attract_ball.name"),help:function(e){return 1==e?A("upgrades.ball_attract_ball.help"):A("upgrades.ball_attract_ball.help_plural")},fullHelp:A("upgrades.ball_attract_ball.fullHelp")},{requires:"",threshold:3e4,giftable:!1,id:"puck_repulse_ball",max:2,name:A("upgrades.puck_repulse_ball.name"),help:function(e){return 1==e?A("upgrades.puck_repulse_ball.help"):A("upgrades.puck_repulse_ball.help_plural")},fullHelp:A("upgrades.puck_repulse_ball.fullHelp")},{requires:"",threshold:35e3,giftable:!1,id:"wind",max:3,name:A("upgrades.wind.name"),help:function(e){return 1==e?A("upgrades.wind.help"):A("upgrades.wind.help_plural")},fullHelp:A("upgrades.wind.fullHelp")},{requires:"",threshold:4e4,giftable:!1,id:"sturdy_bricks",max:4,name:A("upgrades.sturdy_bricks.name"),help:function(e){return A("upgrades.sturdy_bricks.help",{lvl:e,percent:50*e})},fullHelp:A("upgrades.sturdy_bricks.fullHelp")},{requires:"",threshold:45e3,giftable:!1,id:"respawn",max:4,name:A("upgrades.respawn.name"),help:function(e){return A("upgrades.respawn.help",{percent:Math.floor(100*j(e)),delay:(3/e).toFixed(2)})},fullHelp:A("upgrades.respawn.fullHelp")},{requires:"",threshold:5e4,giftable:!1,id:"one_more_choice",max:3,name:A("upgrades.one_more_choice.name"),help:function(e){return A("upgrades.one_more_choice.help",{lvl:e})},fullHelp:A("upgrades.one_more_choice.fullHelp")},{requires:"",threshold:55e3,giftable:!1,id:"instant_upgrade",max:2,adventure:!1,name:A("upgrades.instant_upgrade.name"),help:function(e){return A("upgrades.instant_upgrade.help",{lvl:e})},fullHelp:A("upgrades.instant_upgrade.fullHelp")},{requires:"",threshold:6e4,giftable:!1,id:"concave_puck",max:1,name:A("upgrades.concave_puck.name"),help:function(e){return A("upgrades.concave_puck.help")},fullHelp:A("upgrades.concave_puck.fullHelp")},{requires:"",threshold:65e3,giftable:!1,id:"helium",max:1,name:A("upgrades.helium.name"),help:function(e){return A("upgrades.helium.help")},fullHelp:A("upgrades.helium.fullHelp")},{requires:"",threshold:7e4,giftable:!0,id:"asceticism",max:1,name:A("upgrades.asceticism.name"),help:function(e){return A("upgrades.asceticism.help",{combo:3*e})},fullHelp:A("upgrades.asceticism.fullHelp")},{requires:"",threshold:75e3,giftable:!1,id:"unbounded",max:1,name:A("upgrades.unbounded.name"),help:function(e){return e>1?A("upgrades.unbounded.help_no_ceiling",{lvl:e}):A("upgrades.unbounded.help",{lvl:e})},fullHelp:A("upgrades.unbounded.fullHelp")},{requires:"",threshold:8e4,giftable:!1,id:"shunt",max:3,name:A("upgrades.shunt.name"),help:function(e){return A("upgrades.shunt.help",{percent:Math.round(100*j(e))})},fullHelp:A("upgrades.shunt.fullHelp")},{requires:"",threshold:85e3,giftable:!1,id:"yoyo",max:1,name:A("upgrades.yoyo.name"),help:function(e){return A("upgrades.yoyo.help")},fullHelp:A("upgrades.yoyo.fullHelp")},{requires:"",threshold:9e4,giftable:!0,id:"nbricks",max:3,name:A("upgrades.nbricks.name"),help:function(e){return A("upgrades.nbricks.help",{lvl:e})},fullHelp:A("upgrades.nbricks.fullHelp")},{requires:"",threshold:95e3,giftable:!1,id:"etherealcoins",max:1,name:A("upgrades.etherealcoins.name"),help:function(e){return A("upgrades.etherealcoins.help")},fullHelp:A("upgrades.etherealcoins.fullHelp")},{requires:"multiball",threshold:1e5,giftable:!1,id:"shocks",max:1,name:A("upgrades.shocks.name"),help:function(e){return A("upgrades.shocks.help")},fullHelp:A("upgrades.shocks.fullHelp")},{requires:"",threshold:105e3,giftable:!0,id:"zen",max:1,name:A("upgrades.zen.name"),help:function(e){return A("upgrades.zen.help",{lvl:e})},fullHelp:A("upgrades.zen.fullHelp")},{requires:"extra_life",threshold:11e4,giftable:!1,id:"sacrifice",max:1,name:A("upgrades.sacrifice.name"),help:function(e){return 1==e?A("upgrades.sacrifice.help_l1"):A("upgrades.sacrifice.help_over",{lvl:e})},fullHelp:A("upgrades.sacrifice.fullHelp")},{requires:"",threshold:115e3,giftable:!0,id:"trampoline",max:1,name:A("upgrades.trampoline.name"),help:function(e){return A("upgrades.trampoline.help",{lvl:e})},fullHelp:A("upgrades.trampoline.fullHelp")},{requires:"",threshold:12e4,giftable:!1,id:"ghost_coins",max:1,name:A("upgrades.ghost_coins.name"),help:function(e){return A("upgrades.ghost_coins.help",{lvl:e})},fullHelp:A("upgrades.ghost_coins.fullHelp")},{requires:"",threshold:125e3,giftable:!1,id:"forgiving",max:1,name:A("upgrades.forgiving.name"),help:function(e){return A("upgrades.forgiving.help")},fullHelp:A("upgrades.forgiving.fullHelp")},{requires:"",threshold:13e4,giftable:!1,id:"ball_attracts_coins",max:3,name:A("upgrades.ball_attracts_coins.name"),help:function(e){return A("upgrades.ball_attracts_coins.help")},fullHelp:A("upgrades.ball_attracts_coins.fullHelp")},{requires:"",threshold:135e3,giftable:!1,id:"reach",max:1,name:A("upgrades.reach.name"),help:function(e){return A("upgrades.reach.help",{lvl:e})},fullHelp:A("upgrades.reach.fullHelp")},{requires:"",threshold:14e4,giftable:!0,id:"passive_income",max:4,name:A("upgrades.passive_income.name"),help:function(e){return A("upgrades.passive_income.help",{time:.25*e,lvl:e})},fullHelp:A("upgrades.passive_income.fullHelp")},{requires:"",threshold:145e3,giftable:!1,id:"clairvoyant",max:1,name:A("upgrades.clairvoyant.name"),help:function(e){return A("upgrades.clairvoyant.help")},fullHelp:A("upgrades.clairvoyant.fullHelp")},{requires:"",threshold:15e4,giftable:!0,id:"side_kick",max:3,name:A("upgrades.side_kick.name"),help:function(e){return A("upgrades.side_kick.help",{lvl:e,loss:2*e})},fullHelp:A("upgrades.side_kick.fullHelp")},{requires:"",threshold:155e3,giftable:!1,id:"implosions",max:1,name:A("upgrades.implosions.name"),help:function(e){return A("upgrades.implosions.help")},fullHelp:A("upgrades.implosions.fullHelp")},{requires:"",threshold:16e4,giftable:!1,id:"corner_shot",max:1,name:A("upgrades.corner_shot.name"),help:function(e){return A("upgrades.corner_shot.help")},fullHelp:A("upgrades.corner_shot.fullHelp")},{requires:"",threshold:165e3,giftable:!1,id:"addiction",max:7,name:A("upgrades.addiction.name"),help:function(e){return A("upgrades.addiction.help",{lvl:e,delay:(5/e).toFixed(2)})},fullHelp:A("upgrades.addiction.fullHelp")},{requires:"",threshold:17e4,giftable:!1,id:"fountain_toss",max:7,name:A("upgrades.fountain_toss.name"),help:function(e){return A("upgrades.fountain_toss.help",{lvl:e,max:30*e})},fullHelp:A("upgrades.fountain_toss.fullHelp")},{requires:"",threshold:175e3,giftable:!1,id:"limitless",max:1,name:A("upgrades.limitless.name"),help:function(e){return A("upgrades.limitless.help",{lvl:e})},fullHelp:A("upgrades.limitless.fullHelp")}],Z={},N=_(JSON.parse("[\"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20'><path d='M3.25 10h13.5M10 3.25v13.5' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M11 6a5 5 0 01-5 5 5 5 0 01-5-5 5 5 0 015-5 5 5 0 015 5' stroke='none' fill='white'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20'><path d='M10-10L20 0v10L10 0zM20 0L10-10V0l10 10zm0 10L10 0v10l10 10zm0 10L10 10v10l10 10zM0 20l10-10v10L0 30zm0-10L10 0v10L0 20zM0 0l10-10V0L0 10z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M15.986 4.186 4.1 16.072v.58L16.566 4.186Zm7.62 0 12.38 12.38v-.58l-11.8-11.8Zm12.38 19.248L23.52 35.9h.58l11.886-11.886ZM4.1 23.52v.58l11.8 11.8h.58z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='25' height='25'><path d='M9.19 0v3.93A9.187 9.187 0 003.93 9.19H0m0 6.618h3.93a9.188 9.188 0 005.26 5.26V25m6.619 0v-3.93a9.188 9.188 0 005.261-5.261H25m0-6.618h-3.93A9.188 9.188 0 0015.81 3.93V0' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='29' height='33.487'><path d='M29 20.928v14.813M14.5 12.56v16.745M29-2.559v6.744l-14.5 8.374L0 4.189v-6.745m29 6.742l14.5 8.37m0 16.745L29 20.928l-14.5 8.376L0 20.931l-14.5 8.376m0-16.744L0 4.189m0 31.487V20.931' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='29' height='50.115'><path d='M14.498 16.858L0 8.488.002-8.257l14.5-8.374L29-8.26l-.002 16.745zm0 50.06L0 58.548l.002-16.745 14.5-8.373L29 41.8l-.002 16.744zM28.996 41.8l-14.498-8.37.002-16.744L29 8.312l14.498 8.37-.002 16.745zm-29 0l-14.498-8.37.002-16.744L0 8.312l14.498 8.37-.002 16.745z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='62' height='68'><rect x='0' y='0' width='62' height='68' fill='black'/><path d='M41.845 51.072h3.465v-7.035h-7.076v13.999H52.18V37.21H31.117m0 27.79V37.21M20.389 51.07h-3.466v-7.034H24v13.999H10.055V37.21h21.062m10.728-20.283h3.465v7.035h-7.076V9.964H52.18V30.79H31.117m0-27.789v27.79M20.389 16.927h-3.466v7.035H24V9.964H10.055V30.79h21.062M3 3h56v62H3.126z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='26.55' height='25'><rect x='0' y='0' width='26.55' height='25' fill='black'/><path d='M0 10.86v3.22c2.7.08 4.9 2.31 4.9 5.03V25h3.2v-5.9c0-4.48-3.63-8.16-8.1-8.24ZM18.17 25h3.21v-5.9a5.05 5.05 0 0 1 5.03-5.02h.14v-3.21h-.14a8.27 8.27 0 0 0-8.24 8.24zm3.21-25h-3.21v1.64a5.05 5.05 0 0 1-5.03 5.02A5.05 5.05 0 0 1 8.1 1.64V0H4.89v1.64c0 4.53 3.7 8.24 8.25 8.24 4.53 0 8.24-3.7 8.24-8.24z' stroke='none' fill='white'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='79.392'><path d='m.135 40.054-14.277-25.722M0 40.054l14.278-25.722M0 40.054v-40m0 40-20-20 20-20 20 20Zm-.135-.716L14.142 65.06M0 39.338-14.278 65.06M0 39.338v40m0-40 20 20-20 20-20-20Zm40.136.716L25.858 14.332M40 40.054l14.278-25.722M40 40.054v-40m-20 20 20-20 20 20-20 20Zm19.865 19.284L54.142 65.06M40 39.338 25.722 65.06M40 39.338v40m20-20-20 20-20-20 20-20Z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='50' height='29.442'><path d='M35.569-17.373 22.959 4.468l-12.61-21.841Zm0 29.442-12.61 21.84-12.61-21.84Zm25-14.721-12.61 21.841-12.61-21.841zm0 29.441-12.61 21.842-12.61-21.842Zm-33.478 0L39.7 4.95l12.61 21.84zM10.569-2.652l-12.61 21.841-12.61-21.841Zm0 29.441-12.61 21.842-12.61-21.842Zm-33.478 0L-10.3 4.95l12.61 21.84zm25-14.72L14.7-9.773l12.61 21.842zm0 29.441L14.7 19.67l12.61 21.841z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='59.428'><path d='M0 70.975V47.881m20-1.692L8.535 52.808v13.239L20 72.667l11.465-6.62V52.808zm0-32.95l11.465-6.62V-6.619L20-13.24 8.535-6.619V6.619L20 13.24m8.535 4.927v13.238L40 38.024l11.465-6.62V18.166L40 11.546zM20 36.333L0 47.88m0 0v23.094m0 0l20 11.548 20-11.548V47.88m0 0L20 36.333m0 0l20 11.549M0 11.547l-11.465 6.619v13.239L0 38.025l11.465-6.62v-13.24L0 11.548v-23.094l20-11.547 20 11.547v23.094M20 36.333V13.24' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='70' height='8'><path d='M-.02 22c8.373 0 11.938-4.695 16.32-9.662C20.785 7.258 25.728 2 35 2c9.272 0 14.215 5.258 18.7 10.338C58.082 17.305 61.647 22 70.02 22M-.02 14.002C8.353 14 11.918 9.306 16.3 4.339 20.785-.742 25.728-6 35-6 44.272-6 49.215-.742 53.7 4.339c4.382 4.967 7.947 9.661 16.32 9.664M70 6.004c-8.373-.001-11.918-4.698-16.3-9.665C49.215-8.742 44.272-14 35-14c-9.272 0-14.215 5.258-18.7 10.339C11.918 1.306 8.353 6-.02 6.002' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='45' height='51.96'><path d='M52.48 44.47a15 15 0 01-14.96 0 15 15 0 00-7.48 12.96M7.48 44.42a15 15 0 01-14.96 0M15 57.44c0-5.35-2.9-10.35-7.52-13.02a15 15 0 017.48-12.97M7.48 18.5a14.97 14.97 0 01-14.98-.03m15.02-.03A15 15 0 0115 5.47a15 15 0 00-4.4-10.62m23.8.05A15 15 0 0030 5.53a15 15 0 017.48 12.96 14.9 14.9 0 0015.02-.03m-22.5 13a15.13 15.13 0 017.52 13.01m-7.56-39a15 15 0 01-14.96 0M7.48 18.5a15 15 0 017.48 12.96 15 15 0 0015.04 0 15 15 0 017.48-12.96' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='72' height='43.875'><path d='m14.296 7.185 7.236 7.234L36.002-.048l14.47 14.47 7.236-7.233L36-14.518Zm-7.275 7.251 7.258 7.26 7.259-7.26-7.258-7.259zm-28.798 14.76 7.237 7.237L-.023 21.916 14.452 36.39l7.26-7.258L0 7.42Zm50.746 7.193-7.258-7.258-7.26 7.258 7.26 7.26zm57.568.046 7.24-7.238L72 7.42 50.282 29.137l7.259 7.259L72.02 21.918Zm-28.993-.042-7.26-7.258-7.258 7.258 7.26 7.26zm.233 14.742L36 29.358 14.223 51.135l7.258 7.258L36 43.875l14.518 14.517ZM50.453 14.45l7.259 7.26 7.258-7.26-7.258-7.257z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M45.69 13.342c-1.677.945-3.557 1.6-5.48 1.588-1.922-.012-3.795-.691-5.462-1.653-1.668-.962-3.156-2.202-4.637-3.435-1.48-1.232-2.97-2.47-4.641-3.427-1.67-.957-3.547-1.628-5.47-1.628-1.923 0-3.8.67-5.47 1.628-1.67.956-3.161 2.195-4.641 3.427-1.48 1.233-2.97 2.473-4.637 3.435-1.667.962-3.54 1.641-5.463 1.653-1.922.012-3.802-.643-5.478-1.588v13.316c1.676-.945 3.556-1.6 5.478-1.588 1.923.012 3.796.691 5.463 1.653 1.668.962 3.156 2.202 4.637 3.435 1.48 1.232 2.97 2.47 4.641 3.427 1.67.957 3.547 1.628 5.47 1.628 1.923 0 3.8-.67 5.47-1.628 1.67-.956 3.161-2.195 4.641-3.427 1.48-1.233 2.97-2.473 4.637-3.435 1.667-.962 3.54-1.641 5.463-1.653 1.922-.012 3.802.643 5.478 1.588z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='40'><path d='M0 0v5.436c.385-.146.767.123 1.163.82.948 1.674 2.214 2.996 3.46 4.294C6.977 13.002 9.2 15.318 9.2 19.995c0 4.679-2.223 6.994-4.577 9.447-1.246 1.299-2.512 2.621-3.46 4.295-.396.698-.777.966-1.163.82V40h1.198v-.005c0-4.678 2.224-6.992 4.579-9.445 1.245-1.298 2.51-2.62 3.459-4.295.654-1.154 1.273-1.154 1.926 0 .95 1.673 2.214 2.997 3.46 4.295 2.353 2.452 4.578 4.767 4.578 9.445V40h.8v-5.442c-.252-.095-.504-.365-.762-.82-.95-1.675-2.214-2.998-3.46-4.296-2.353-2.452-4.576-4.768-4.576-9.447-.001-4.678 2.221-6.993 4.575-9.445 1.246-1.298 2.512-2.62 3.46-4.294.259-.456.511-.725.763-.82V0h-.8c0 4.676-2.224 6.991-4.577 9.442-1.246 1.298-2.512 2.621-3.46 4.296-.653 1.153-1.273 1.153-1.926 0-.948-1.675-2.214-2.998-3.46-4.296C3.424 6.991 1.2 4.676 1.2 0Z' stroke='none' fill='white'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='50' height='33.333'><path d='M25 .806v2.79h.8V.806Zm0 4.465v2.791h.8v-2.79Zm-2.043 3.902-2.32 1.55.444.665 2.32-1.55-.443-.665zm4.885 0-.444.665 2.32 1.55.445-.665zM-.4 10.61v2.79h.8v-2.79zm50 0v2.79h.8v-2.79zm-30.356 1.042-2.32 1.55.443.666 2.322-1.55-.444-.666zm12.311 0-.444.665 2.32 1.55.445-.664zm3.783 2.566-.444.666 2.321 1.55.444-.666zm-19.852.025-2.32 1.55.444.665 2.32-1.55zm-15.886.77v2.79h.8v-2.79Zm50 0v2.79h.8v-2.79Zm-50 4.465v2.79h.8v-2.79h-.8Zm50 0v2.79h.8v-2.79h-.8zM2.442 23.379l-.444.665 2.32 1.55.445-.665zm45.115 0-2.32 1.55.443.666 2.322-1.55-.444-.666zM6.155 25.86l-.444.665 2.32 1.55.445-.665zm37.69 0-2.322 1.55.444.665 2.321-1.55-.444-.666zM9.937 28.424l-.444.665 2.32 1.55.445-.665-2.321-1.55zm30.11.003-2.321 1.55.444.666 2.321-1.55zM25 29.737v2.79h.8v-2.79z' stroke='none' fill='white'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='69.282' height='40'><path d='M34.641-20v80m34.64-40L0-20m69.282 80L0 20m69.282 0L0 60m69.282-80L0 20m69.282-40v80M0-20v80M34.64 40l11.547-20m11.547 20l11.547 20M34.641 40h23.094m11.547-20L57.735 40M46.188 20L34.641 40l11.547 20h23.094L80.83 40 69.282 20H46.188zM34.641 40l11.547-20m11.547 20l11.547 20M34.641 40h23.094m11.547-20L57.735 40M46.188 20L34.641 40l11.547 20h23.094L80.83 40 69.282 20H46.188zM34.641 0l11.547-20M57.735 0l11.547 20M34.642 0h23.093m11.547-20L57.735 0M46.188-20L34.641 0l11.547 20h23.094L80.83 0 69.282-20H46.188zM34.641 40L23.094 20M11.547 40L0 60m34.64-20H11.548M0 20l11.547 20m11.547-20l11.547 20-11.547 20H0l-11.547-20L0 20h23.094zM34.641 0L23.094-20M11.547 0L0 20M34.64 0H11.548M0-20L11.547 0m11.547-20L34.641 0 23.094 20H0L-11.547 0 0-20h23.094z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='29' height='50.115'><path d='M14.5 6.628L8.886 3.372v-6.515L14.502-6.4l5.612 3.257-.001 6.514zm0 50.06l-5.613-3.256v-6.515l5.614-3.258 5.612 3.257-.001 6.515zm14.497-25.117l-5.612-3.257v-6.515L29 18.541l5.612 3.257-.001 6.515zm-29 0l-5.612-3.257v-6.515L0 18.541l5.612 3.257v6.515zM14.5 11.82L4.36 5.967l.002-11.706 10.14-5.855L24.638-5.74l-.001 11.707zm0 50.06L4.36 56.028l.002-11.706 10.14-5.855 10.137 5.852-.001 11.707zm14.498-25.118L18.858 30.91l.002-11.707L29 13.349l10.137 5.853-.001 11.706zm-29 0l-10.139-5.852.002-11.707L0 13.349l10.138 5.853-.002 11.706zm14.501-19.905L0 8.488.002-8.257l14.5-8.374L29-8.26l-.002 16.745zm0 50.06L0 58.548l.002-16.745 14.5-8.373L29 41.8l-.002 16.744zM28.996 41.8l-14.498-8.37.002-16.744L29 8.312l14.498 8.37-.002 16.745zm-29 0l-14.498-8.37.002-16.744L0 8.312l14.498 8.37-.002 16.745z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='60' height='60'><path d='M6.13-.002.005 6.125v1.059L6.59 13.77l.013-.014 16.243 16.24L6.617 46.23.535 40.15l10.147-10.153L.004 19.318v1.037l9.644 9.641-9.646 9.65v1.03L12.73 53.402l-6.082 6.082-6.127-6.127.014-.015-.533-.531v1.06l6.127 6.127h1.055l6.586-6.584-.012-.012 16.246-16.246L46.236 53.39l-6.082 6.082-10.15-10.15-10.68 10.677h1.033l9.647-9.644 9.646 9.644h1.034l12.722-12.723 6.082 6.082-6.125 6.125-.013-.011-.528.527h1.057l6.123-6.123V52.81l-6.58-6.58-.016.015L37.16 29.996 53.393 13.77l6.082 6.082-10.15 10.144 10.677 10.678v-1.031l-9.647-9.647 9.647-9.64v-1.038L47.279 6.596 53.361.514l6.13 6.127-.016.013.527.53V6.123L53.879-.002h-1.057l-6.586 6.586.014.012-16.244 16.246L13.77 6.607l6.082-6.08 10.153 10.15L40.684-.001H39.65l-9.646 9.647-9.647-9.647h-1.03L6.601 12.723.52 6.64 6.646.514l.012.013.528-.529H6.13zm7.114 7.113 16.76 16.76 16.762-16.76 6.127 6.127-16.764 16.758 16.764 16.762-6.127 6.127-16.76-16.76-16.762 16.76-6.127-6.127 16.758-16.762L7.117 13.238l6.127-6.127z' stroke='none' fill='white'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='80' height='97.989'><path d='m40 15.681 20.818-48.593-6.307-14.72-14.51 33.87-14.512-33.87-6.307 14.72zm0 .803-8.204 19.15L40 54.782l8.205-19.15zm14.511 33.872-6.306-14.723L40 54.783l-8.204-19.15-6.307 14.723L40 84.227zm0-29.445-6.306 14.722 6.306 14.723 6.307-14.723zM25.49 50.356l6.307-14.723-6.307-14.722-6.307 14.722zm0-29.445L19.182 6.19l-6.307 14.724 6.307 14.72zm29.022 0 6.307 14.722 6.308-14.72-6.308-14.724zm-14.51 92.76 20.817-48.594-6.307-14.721-14.51 33.871L25.49 50.356l-6.307 14.721zM25.488 50.355l-6.307-14.723-6.307 14.722 6.307 14.722zm29.022 0 6.307 14.721 6.308-14.722-6.308-14.722zm12.615-29.443-6.308 14.72 6.308 14.722 6.307-14.722zm-54.25 29.443 6.307-14.722-6.307-14.72-6.308 14.72zm0-29.442L6.567 6.189.26 20.91l6.307 14.722zm54.25 0 6.308 14.72 6.307-14.722L73.433 6.19zm0 29.442-6.307 14.722L67.126 79.8l6.307-14.722zM12.876 79.8l6.307-14.722-6.307-14.722-6.308 14.722zm0-29.444L6.567 35.633.26 50.356l6.307 14.721zm54.25 0 6.308 14.722 6.307-14.721-6.307-14.723zm0 29.444 6.308 14.723L79.741 79.8l-6.307-14.722zm-54.25 0L6.567 65.077.26 79.8l6.307 14.723z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30'><path d='M9 20.502h0A7.5 7.5 0 0 1 1.5 28 7.5 7.5 0 0 0-6 35.5h0a7.5 7.5 0 0 1-7.5 7.499 7.476 7.476 0 0 1-5.304-2.196A7.482 7.482 0 0 1-21 35.5h0a7.5 7.5 0 0 1 7.5-7.5A7.5 7.5 0 0 0-6 20.502h0a7.5 7.5 0 1 1 15 0zm15 0h0A7.5 7.5 0 0 1 16.5 28a7.476 7.476 0 0 1-5.304-2.196A7.482 7.482 0 0 1 9 20.502h0c0-2.072-.84-3.947-2.197-5.303A7.477 7.477 0 0 0 1.5 13.002a7.476 7.476 0 0 1-5.304-2.196A7.482 7.482 0 0 1-6 5.503h0a7.5 7.5 0 1 1 15 0h0c0 2.07.84 3.945 2.196 5.303a7.476 7.476 0 0 0 5.304 2.196c2.07 0 3.945.84 5.303 2.197A7.471 7.471 0 0 1 24 20.502zm15 0h0A7.5 7.5 0 0 1 31.5 28a7.5 7.5 0 0 0-7.5 7.5h0a7.5 7.5 0 0 1-7.5 7.499 7.476 7.476 0 0 1-5.304-2.196A7.482 7.482 0 0 1 9 35.5h0a7.5 7.5 0 0 1 7.5-7.5 7.5 7.5 0 0 0 7.5-7.498h0a7.5 7.5 0 1 1 15 0zm0-30h0A7.5 7.5 0 0 1 31.5-2 7.5 7.5 0 0 0 24 5.5h0a7.5 7.5 0 0 1-7.5 7.499 7.476 7.476 0 0 1-5.304-2.196A7.482 7.482 0 0 1 9 5.5h0A7.5 7.5 0 0 1 16.5-2 7.5 7.5 0 0 0 24-9.498h0a7.5 7.5 0 1 1 15 0zm-22.5 37.5a7.5 7.5 0 0 0-7.5 7.5c0-2.072-.84-3.947-2.197-5.303A7.477 7.477 0 0 0 1.5 28.002 7.5 7.5 0 0 0 9 20.503c0 2.07.84 3.945 2.196 5.303a7.476 7.476 0 0 0 5.304 2.196zm15-15a7.5 7.5 0 0 0-7.5 7.5c0-2.072-.84-3.947-2.197-5.303a7.477 7.477 0 0 0-5.303-2.197A7.5 7.5 0 0 0 24 5.503c0 2.07.84 3.945 2.196 5.303a7.476 7.476 0 0 0 5.304 2.196z' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='69.282'><path d='M13.333-3.849v23.094M6.667-15.396l20 11.547M13.333-19.245l20 11.547M20 0v23.094m20-34.641l-6.667 3.849-6.666 3.849L20 0M0-11.547l6.667 3.849 6.666 3.849L20 0m0-23.094l20 11.547v23.094L20 23.094l-6.667-3.849-6.666-3.849L0 11.547v-23.094l6.667-3.849 6.666-3.849zM40-3.769L20 7.698m20-3.849l-16.253 9.384L20 15.396M6.667-7.698v23.094m6.666 50.037v23.094M6.667 53.886l20 11.547M13.333 50.037l20 11.547M20 69.282v23.094m20-34.641l-6.667 3.849-6.666 3.849L20 69.282M0 57.735l6.667 3.849 6.666 3.849L20 69.282m0-23.094l20 11.547v23.094L20 92.376l-6.667-3.849-6.666-3.849L0 80.829V57.735l6.667-3.849 6.666-3.849zm20 19.325L20 76.98m20-3.849L20 84.678M6.667 61.584v23.094m26.666-53.886v23.094m-6.666-34.641l20 11.547M33.333 15.396l20 11.547M40 34.641v23.094m20-34.641l-6.667 3.849-6.666 3.849L40 34.641M20 23.094l6.667 3.849 6.666 3.849L40 34.641m0-23.094l20 11.547v23.094L40 57.735l-6.667-3.849-6.666-3.849L20 46.188V23.094l6.667-3.849 6.666-3.849zm20 19.325L40 42.339m20-3.849L40 50.037M26.667 26.943v23.094M-6.667 30.792v23.094m-6.666-34.641l20 11.547M-6.667 15.396l20 11.547M0 34.641v23.094m20-34.641l-6.667 3.849-6.666 3.849L0 34.641m-20-11.547l6.667 3.849 6.666 3.849L0 34.641m0-23.094l20 11.547v23.094L0 57.735l-6.667-3.849-6.666-3.849L-20 46.188V23.094l6.667-3.849 6.666-3.849zm20 19.325L0 42.339m20-3.849L0 50.037m-13.333-23.094v23.094' stroke-width='1' stroke='white' fill='none'/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M46.231 19.999a5.937 7.48 0 01-5.937 7.48A5.937 7.48 0 0134.357 20a5.937 7.48 0 015.937-7.48 5.937 7.48 0 015.937 7.48zm-40.421 0a5.937 7.48 0 01-5.937 7.48A5.937 7.48 0 01-6.064 20a5.937 7.48 0 015.937-7.48 5.937 7.48 0 015.937 7.48zm20.21 20.285a5.937 7.48 0 01-5.937 7.48 5.937 7.48 0 01-5.936-7.48 5.937 7.48 0 015.936-7.48 5.937 7.48 0 015.937 7.48zm0-40.57a5.937 7.48 0 01-5.937 7.48 5.937 7.48 0 01-5.936-7.48 5.937 7.48 0 015.936-7.48 5.937 7.48 0 015.937 7.48zM-5.732 46.942c1.676-.944 3.556-1.6 5.478-1.587 1.924.011 3.796.69 5.463 1.653 1.668.962 3.156 2.202 4.637 3.434 1.48 1.233 2.97 2.471 4.641 3.428 1.67.957 3.547 1.627 5.47 1.627 1.924 0 3.8-.67 5.47-1.627s3.161-2.195 4.642-3.428c1.48-1.232 2.968-2.472 4.636-3.434 1.667-.963 3.54-1.642 5.463-1.653 1.922-.012 3.802.643 5.479 1.587V33.628c-1.677.944-3.557 1.6-5.479 1.587-1.923-.011-3.796-.69-5.463-1.653-1.668-.962-3.156-2.202-4.636-3.434-1.48-1.233-2.971-2.471-4.642-3.428-1.67-.957-3.546-1.627-5.47-1.627-1.923 0-3.8.67-5.47 1.627s-3.161 2.195-4.641 3.428c-1.48 1.232-2.97 2.472-4.637 3.434-1.667.963-3.54 1.641-5.463 1.653-1.922.012-3.802-.643-5.478-1.587zM45.647-6.943c-1.677.944-3.557 1.6-5.479 1.587-1.923-.011-3.796-.69-5.463-1.653-1.668-.962-3.156-2.202-4.636-3.434-1.48-1.233-2.971-2.471-4.642-3.428-1.67-.957-3.546-1.627-5.47-1.627-1.923 0-3.8.67-5.47 1.627s-3.161 2.195-4.641 3.428c-1.48 1.232-2.97 2.472-4.637 3.434-1.667.963-3.54 1.642-5.463 1.653-1.922.012-3.802-.643-5.478-1.587V6.372c1.676-.944 3.556-1.6 5.478-1.587 1.924.012 3.796.69 5.463 1.653C6.877 7.4 8.365 8.64 9.846 9.872c1.48 1.233 2.97 2.471 4.641 3.428 1.67.957 3.547 1.627 5.47 1.627 1.924 0 3.8-.67 5.47-1.627s3.161-2.195 4.642-3.428c1.48-1.232 2.968-2.472 4.636-3.434 1.667-.963 3.54-1.642 5.463-1.653 1.922-.012 3.802.643 5.479 1.587z' stroke-width='1' stroke='white' fill='none'/></svg>\"]"));function X(e){for(var _=0,t=0;t<e.length;t++)_=(_<<5)-_+e.charCodeAt(t),_&=_;return Math.abs(_)}var Y=document.createElement("canvas"),U=Y.getContext("2d",{antialias:!1,alpha:!0}),J=_(z),Q=_(q),K=_(G),$={},ee=Q.map(function(e,_){var t=e.bricks.split("").map(function(e){return J[e]}).slice(0,e.size*e.size),r=t.filter(function(e){return e}).length,a=function(e,_,t){if(!U)return"";Y.width=46,Y.height=46,t?(U.fillStyle=t,U.fillRect(0,0,46,46)):U.clearRect(0,0,46,46);for(var r=46/_,a=0;a<_;a++)for(var n=0;n<_;n++){var o=e[n*_+a];o&&(U.fillStyle=o,U.fillRect(Math.floor(r*a),Math.floor(r*n),Math.ceil(r),Math.ceil(r)))}return'<img alt="" width="'.concat(46,'" height="').concat(46,'" src="').concat(Y.toDataURL(),'"/>')}(t,e.size,e.color);return $[e.name]=a,S(k({},e),{bricks:t,bricksCount:r,icon:a,color:e.color||"#000000",svg:N[X(e.name)%N.length]})}).map(function(e,_){return S(k({},e),{sortKey:(Math.random()+3)/3.5*e.bricksCount})}),e_=ee.filter(function(e){return!e.name.startsWith("icon:")}),et=I.map(function(e){return S(k({},e),{icon:$["icon:"+e.id]})}),er={sound:{default:!0,name:A("main_menu.sounds"),help:A("main_menu.sounds_help")},"mobile-mode":{default:window.innerHeight>window.innerWidth,name:A("main_menu.mobile"),help:A("main_menu.mobile_help")},basic:{default:!1,name:A("main_menu.basic"),help:A("main_menu.basic_help")},colorful_coins:{default:!1,name:A("main_menu.colorful_coins"),help:A("main_menu.colorful_coins_help")},extra_bright:{default:!0,name:A("main_menu.extra_bright"),help:A("main_menu.extra_bright_help")},contrast:{default:!1,name:A("main_menu.contrast"),help:A("main_menu.contrast_help")},show_fps:{default:!1,name:A("main_menu.show_fps"),help:A("main_menu.show_fps_help")},show_stats:{default:!1,name:A("main_menu.show_stats"),help:A("main_menu.show_stats_help")},pointerLock:{default:!1,name:A("main_menu.pointer_lock"),help:A("main_menu.pointer_lock_help")},easy:{default:!1,name:A("main_menu.kid"),help:A("main_menu.kid_help")},record:{default:!1,name:A("main_menu.record"),help:A("main_menu.record_help")},fullscreen:{default:!1,name:A("main_menu.fullscreen"),help:A("main_menu.fullscreen_help")},donation_reminder:{default:D()>5,name:A("main_menu.donation_reminder"),help:A("main_menu.donation_reminder_help")},red_miss:{default:!0,name:A("main_menu.red_miss"),help:A("main_menu.red_miss_help")},comboIncreaseTexts:{default:!0,name:A("main_menu.comboIncreaseTexts"),help:A("main_menu.comboIncreaseTexts_help")}};function ea(e){var _;return R("breakout-settings-enable-"+e,null===(_=er[e])||void 0===_?void 0:_.default)}function en(e){O("breakout-settings-enable-"+e,!ea(e))}var eo=Date.now(),es={wallBeep:function(e,_,t){ea("sound")&&ei(800,_,e)},comboIncreaseMaybe:function(e,_,t){if(ea("sound")){var r=0;!isNaN(ec)&&(ec<t&&(r=1),ec>t&&(r=-1)),ed(r,_,e),ec=t}},comboDecrease:function(e,_,t){ea("sound")&&ed(-1,_,e)},coinBounce:function(e,_,t){ea("sound")&&ei(1200,_,e,.1,"triangle")},explode:function(e,_,t){ea("sound")&&function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5,_=el();if(_){var t=_.createBufferSource();t.buffer=eu(_);var r=_.createGain();t.connect(r);var a=_.createBiquadFilter();a.type="lowpass",a.frequency.setValueAtTime(1e3,_.currentTime),r.connect(a);var o=_.createStereoPanner();o.pan.setValueAtTime(2*e-1,_.currentTime),a.connect(o),o.connect(_.destination),o.connect(n),r.gain.setValueAtTime(1,_.currentTime),r.gain.exponentialRampToValueAtTime(.01,_.currentTime+1),a.frequency.exponentialRampToValueAtTime(60,_.currentTime+1),t.start(_.currentTime),t.stop(_.currentTime+1)}}(_)},lifeLost:function(e,_,t){ea("sound")&&function(e){var _=el();if(_){var t=[em(_,3e3,"square"),em(_,4500,"square"),em(_,6e3,"square")],r=_.createGain(),a=_.createBufferSource();a.buffer=eu(_),t.forEach(function(e){return e.connect(r)}),a.connect(r),r.gain.setValueAtTime(.2,_.currentTime),t.forEach(function(e){return e.start()}),a.start(),t.forEach(function(e){return e.stop(_.currentTime+.2)}),a.stop(_.currentTime+.2),r.gain.exponentialRampToValueAtTime(.001,_.currentTime+.2);var o=_.createStereoPanner();o.pan.setValueAtTime(2*e-1,_.currentTime),r.connect(o),o.connect(_.destination),o.connect(n),r.connect(o)}}(_)},coinCatch:function(e,_,t){ea("sound")&&ei(900,_,e,.1,"triangle")},colorChange:function(e,_,t){ei(400,_,e,.5,"sine"),ei(800,_,.5*e,.2,"square")}};function el(){if(!a){if(!ea("sound"))return null;n=(a=new(window.AudioContext||window.webkitAudioContext)).createMediaStreamDestination()}return a}function ei(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:800,_=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.5,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"sine",o=el();if(o){var s=em(o,e,a),l=o.createGain();s.connect(l);var i=o.createStereoPanner();i.pan.setValueAtTime(2*_-1,o.currentTime),l.connect(i),i.connect(o.destination),i.connect(n),l.gain.setValueAtTime(.8*t,o.currentTime),l.gain.exponentialRampToValueAtTime(.001,o.currentTime+r),s.start(o.currentTime),s.stop(o.currentTime+r)}}function eu(e){if(!o)for(var _=2*e.sampleRate,t=(o=e.createBuffer(1,_,e.sampleRate)).getChannelData(0),r=0;r<_;r++)t[r]=2*Math.random()-1;return o}var ec=NaN,ep=6;function ed(e,_,t){(ep+=e)>11&&(ep=0),ep<0&&(ep=11);var r=function(e){var r=392*Math.pow(1.05945594920268,e),a=Math.abs(e-5.5),n=Math.max(0,t*(1-a/16.5));return ei(r,_,n),r.toFixed(2)+" at "+Math.floor(100*n)+"% diff "+a};r(12+ep),r(ep),r(-12+ep)}function em(e,_,t){var r=e.createOscillator();return r.type=t,r.frequency.setValueAtTime(_,e.currentTime),r}function eg(e){var _=0,t=new Set,r=0;return e.bricks.forEach(function(e){if(e){if("black"===e){r++;return}t.add(e),_++}}),A("unlocks.level_description",{size:e.size,bricks:_,colors:t.size,bombs:r})}function eb(e){var _;return e&&(null===(_=Object.values(e))||void 0===_?void 0:_.reduce(function(e,_){return e+_},0))||0}var eh=function(e){var _={};return e.forEach(function(e){return _[e.id]=0}),_};function ev(e,_){return e.offsetX+(_%e.gridSize+.5)*e.brickWidth}function ef(e,_){return(Math.floor(_/e.gridSize)+.5)*e.brickWidth}function ey(e,_,t){return _<0||t<0||_>=e.gridSize||t>=e.gridSize?-1:_*e.gridSize+t}function ek(e){return et.filter(function(_){return e.totalScoreAtRunStart>=_.threshold}).filter(function(_){return!(null==_?void 0:_.requires)||e.perks[null==_?void 0:_.requires]})}function eW(e){return e.creative?1:7+e.perks.extra_levels}function ew(e){var _=ek(e).filter(function(_){return e.perks[_.id]}).map(function(_){for(var t=Math.max(0,_.max+e.perks.limitless),r=[],a=0;a<Math.max(_.max,t,e.perks[_.id]);a++)a<e.perks[_.id]?r.push('<span class="used"></span>'):a<t?r.push('<span class="free"></span>'):r.push('<span class="banned"></span>');var n=e.perks[_.id]&&1||!t&&2||3;return{state:n,html:'\n <div class="upgrade '.concat(["??","used","banned","free"][n],'">\n ').concat(_.icon,"\n <p>\n <strong>").concat(_.name,"</strong>\n ").concat(_.help(Math.max(1,e.perks[_.id])),"\n </p> \n ").concat(r.reverse().join(""),"\n </div>\n ")}}).sort(function(e,_){return e.state-_.state}).map(function(e){return e.html});return" <p>".concat(A("score_panel.upgrades_picked"),"</p>")+_.join("")}function ex(e,_){if(!e.perks.clairvoyant||e.creative)return"";for(var t="",r=0;r<eW(e);r++)t+='<span style="opacity: '.concat(r>=_?1:.2,'" title="').concat(e.runLevels[r].name,'">').concat($[e.runLevels[r].name],"</span>");return"<p>".concat(A("score_panel.upcoming_levels"),"</p><p>").concat(t,"</p>")}function eS(e){return e.level}function ez(e){return -1!==e.bricks.indexOf(e.ballsColor)}function eq(e){if(!e.perks.reach)return -1;for(var _=e.level.size,t=-1,r=-1,a=-1,n=0;n<_;n++)for(var o=0;o<_;o++)e.bricks[o+n*_]&&(-1==t&&(t=n),r<n&&(r=n,a=0),r==n&&a++);return r<1||r==t||a===_?-1:r}function eG(e,_){return e.perks.telekinesis&&_.vy<0&&E(_.y/e.gameZoneHeight*1.1+.1,0,1)||0}function eM(e,_){return e.perks.yoyo&&_.vy>0&&E(1-_.y/e.gameZoneHeight*1.1+.1,0,1)||0}function eH(e,_){return Math.pow(e.x-_.x,2)+Math.pow(e.y-_.y,2)}function eP(e,_){return Math.sqrt(eH(e,_))}function eR(e){return!!(e.lastPuckMove&&e.perks.passive_income&&e.lastPuckMove>e.levelTime-250*e.perks.passive_income)}function eO(){try{return parseInt(localStorage.getItem("breakout-3-hs-short")||"0")}catch(e){}return 0}function eL(e){var _=[],t=[],r=Math.max(-1e3+100*e,0);if(e>20){var a=new Set(["extra_levels","extra_life","one_more_choice","instant_upgrade","shunt","slow_down"]);I.forEach(function(e){e.requires&&a.add(e.requires)});var n=I.slice(0,Math.floor(e/2)).map(function(e){return e}).filter(function(e){return!a.has(e.id)}).sort(function(_,t){return X(e+_.id)-X(e+t.id)}),o=Math.ceil(e/30);_=n.slice(0,o),t=n.slice(o,o+o)}return{required:_,forbidden:t,minScore:r}}function eB(e,_,t){var r=eL(e),a=r.required,n=r.forbidden,o=r.minScore,s=function(e){var _,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return(_=Math).max.apply(_,[0].concat(w(e.filter(function(e){return!t.find(function(_){var t;return!(null==e?void 0:null===(t=e.perks)||void 0===t?void 0:t[_.id])})&&!r.find(function(_){var t;return null==e?void 0:null===(t=e.perks)||void 0===t?void 0:t[_.id]})}).map(function(e){return e.score}))))}(_,a,n),l=s&&t?A("unlocks.reached",{reached:s}):"";return s>=o?null:a.length||n.length?{reached:s,minScore:o,text:A("unlocks.minScoreWithPerks",{minScore:o,required:a.map(function(e){return e.name}).join(", "),forbidden:n.map(function(e){return e.name}).join(", ")})+l}:{reached:s,minScore:o,text:A("unlocks.minScore",{minScore:o})+l}}var eT={};if(eT=h("kqXj6").getBundleURL("1foiJ")+"sw-b71.55013001.js","serviceWorker"in navigator&&window.location.href.endsWith("/index.html?isPWA=true")){var eC=new URL(eT);navigator.serviceWorker.register(eC)}var f=h("5mG9B"),x=h("6QuVk"),eF=document.getElementById("game"),eA=eF.getContext("2d",{alpha:!1}),eE=document.createElement("img");eE.src="data:image/svg+xml;base64,"+btoa('<svg width="144" height="144" viewBox="0 0 38.101 38.099" xmlns="http://www.w3.org/2000/svg">\n <path d="m6.1528 26.516c-2.6992-3.4942-2.9332-8.281-.58305-11.981a10.454 10.454 0 017.3701-4.7582c1.962-.27726 4.1646.05953 5.8835.90027l.45013.22017.89782-.87417c.83748-.81464.91169-.87499 1.0992-.90271.40528-.058713.58876.03425 1.1971.6116l.55451.52679 1.0821-1.0821c1.1963-1.1963 1.383-1.3357 2.1039-1.5877.57898-.20223 1.5681-.19816 2.1691.00897 1.4613.50314 2.3673 1.7622 2.3567 3.2773-.0058.95654-.24464 1.5795-.90924 2.3746-.40936.48928-.55533.81057-.57898 1.2737-.02039.41018.1109.77714.42322 1.1792.30172.38816.3694.61323.2797.93044-.12803.45666-.56674.71598-1.0242.60507-.601-.14597-1.3031-1.3088-1.3969-2.3126-.09459-1.0161.19245-1.8682.92392-2.7432.42567-.50885.5643-.82851.5643-1.3031 0-.50151-.14026-.83177-.51211-1.2028-.50966-.50966-1.0968-.64829-1.781-.41996l-.37348.12477-2.1006 2.1006.52597.55696c.45421.48194.5325.58876.57898.78855.09622.41588.07502.45014-.88396 1.4548l-.87173.9125.26339.57979a10.193 10.193 0 01.9231 4.1001c.03996 2.046-.41996 3.8082-1.4442 5.537-.55044.928-1.0185 1.5013-1.8968 2.3241-.83503.78284-1.5526 1.2827-2.4904 1.7361-3.4266 1.657-7.4721 1.3422-10.549-.82035-.73473-.51782-1.7312-1.4621-2.2515-2.1357zm21.869-4.5584c-.0579-.19734-.05871-2.2662 0-2.4545.11906-.39142.57898-.63361 1.0038-.53005.23812.05708.54147.32455.6116.5382.06279.19163.06769 2.1805.0065 2.3811-.12558.40773-.61649.67602-1.0462.57164-.234-.05708-.51615-.30498-.57568-.50722m3.0417-2.6013c-.12313-.6222.37837-1.1049 1.0479-1.0079.18348.0261.25279.08399 1.0071.83911.75838.75838.81301.82362.84074 1.0112.10193.68499-.40365 1.1938-1.034 1.0405-.1949-.0473-.28786-.12558-1.0144-.85216-.7649-.76409-.80241-.81057-.84645-1.0316m.61323-3.0629a.85623.85623 0 01.59284-.99975c.28949-.09214 2.1814-.08318 2.3917.01141.38734.17369.6279.61078.53984.98181-.06035.25606-.35391.57327-.60181.64992-.25279.07747-2.2278.053-2.4097-.03017-.26013-.11906-.46318-.36125-.51374-.61323" fill="#fff" opacity="0.3"/>\n</svg>'),eE.onload=function(){return to.needsRender=!0};var ej=document.createElement("img");ej.onload=function(){return to.needsRender=!0};var eD=document.createElement("canvas"),eV=document.createElement("canvas"),eI=eV.getContext("2d",{alpha:!1});function eZ(e,_,t,r,a,n,o){var s=arguments.length>7&&void 0!==arguments[7]?arguments[7]:1;e.globalAlpha=s,t&&("#FF0000"==t?(e.strokeStyle="#FF0000",e.lineDashOffset=e3(_),e.lineWidth=2,e.setLineDash(e4)):(e.strokeStyle="#FFFFFF",e.lineWidth=1),e.beginPath(),e.moveTo(r,a),e.lineTo(n,o),e.stroke(),"#FF0000"==t&&(e.setLineDash(e2),e.lineWidth=1),e.globalAlpha=1)}var eN=document.createElement("canvas"),eX="",eY={};function eU(e,_,t,r,a){var n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"",o="ball"+_+"_"+t+"_"+n,s=Math.round(t);if(!eY[o]){var l=document.createElement("canvas");l.width=s,l.height=s;var i=l.getContext("2d");i.beginPath(),i.arc(s/2,s/2,Math.round(s/2)-1,0,2*Math.PI),i.fillStyle=_,i.fill(),n&&(i.lineWidth=2,i.strokeStyle=n,i.stroke()),eY[o]=l}e.drawImage(eY[o],Math.round(r-s/2),Math.round(a-s/2))}function eJ(e,_,t,r,a,n,o){var s=(Math.round(o/Math.PI*64)%32+32)%32,l="coin with halo_"+_+"_"+t+"_"+n+"_"+("#ffd300"===_?s:"whatever");if(!eY[l]){var i=document.createElement("canvas");i.width=t,i.height=t;var u=i.getContext("2d");u.beginPath(),u.arc(t/2,t/2,t/2,0,2*Math.PI),u.fillStyle=_,u.fill(),u.strokeStyle=n,"#FF0000"==n&&(u.lineWidth=2,u.setLineDash(e4)),u.stroke(),"#ffd300"===_&&(u.beginPath(),u.arc(t/2,t/2,t/2*.6,0,2*Math.PI),u.fillStyle="rgba(255,255,255,0.5)",u.fill(),u.translate(t/2,t/2),u.rotate(s/16),u.translate(-t/2,-t/2),u.globalCompositeOperation="multiply",e$(u,"$",_,t-2,t/2,t/2+1),e$(u,"$",_,t-2,t/2,t/2+1)),eY[l]=i}e.drawImage(eY[l],Math.round(r-t/2),Math.round(a-t/2))}function eQ(e,_,t,r,a){var n="fuzzy-circle"+_+"_"+t,o=Math.round(3*t);if(!eY[n]){var s=document.createElement("canvas");s.width=o,s.height=o;var l=s.getContext("2d"),i=l.createRadialGradient(o/2,o/2,0,o/2,o/2,o/2);i.addColorStop(0,_),i.addColorStop(.3,_+"88"),i.addColorStop(.6,_+"22"),i.addColorStop(1,"transparent"),l.fillStyle=i,l.fillRect(0,0,o,o),eY[n]=s}e.drawImage(eY[n],Math.round(r-o/2),Math.round(a-o/2))}function eK(e,_,t,r,a){var n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=arguments.length>6?arguments[6]:void 0,s=Math.ceil(r-e.brickWidth/2),l=Math.ceil(a-e.brickWidth/2),i=Math.ceil(r+e.brickWidth/2)-1,u=Math.ceil(a+e.brickWidth/2)-1,c=i-s,p=u-l,d=-1==n&&"#231f20"==t&&"#000000"==e.level.color&&"#FFFFFF",m="brick"+t+"__"+c+"_"+p+"_"+n+"_"+o+"_"+d;if(!eY[m]){var g,b,h,v,f,y,k=document.createElement("canvas");k.width=c,k.height=p;var W=k.getContext("2d");W.fillStyle=t,W.setLineDash(-1!==n?e4:e2),W.lineDashOffset=n,W.strokeStyle=-1!==n&&"#FF0000"||d||t,W.lineJoin="round",W.lineWidth=d?1:4,g=W,b=2,h=2,v=c-4,f=p-4,y=2,g.beginPath(),g.moveTo(4,2),g.lineTo(b+v-y,h),g.quadraticCurveTo(b+v,h,b+v,h+y),g.lineTo(b+v,h+f-y),g.quadraticCurveTo(b+v,h+f,b+v-y,h+f),g.lineTo(b+y,h+f),g.quadraticCurveTo(b,h+f,b,h+f-y),g.lineTo(b,h+y),g.quadraticCurveTo(b,h,b+y,h),g.closePath(),o||W.fill(),W.stroke(),eY[m]=k}_.drawImage(eY[m],s,l,c,p)}function e$(e,_,t,r,a,n){var o=arguments.length>6&&void 0!==arguments[6]&&arguments[6],s="text"+_+"_"+t+"_"+r+"_"+o;if(!eY[s]){var l=document.createElement("canvas");l.width=r*_.length,l.height=r;var i=l.getContext("2d");i.fillStyle=t,i.textAlign=o?"left":"center",i.textBaseline="middle",i.font=r+"px monospace",i.fillText(_,o?0:l.width/2,l.height/2,l.width),eY[s]=l}e.drawImage(eY[s],o?a:Math.round(a-eY[s].width/2),Math.round(n-eY[s].height/2))}var e0=document.getElementById("score"),e1=document.getElementById("menuLabel"),e2=[],e4=[5,5];function e3(e){return ea("basic")?0:Math.floor(e.levelTime%500/500*10)%10}function e5(e,_){return e.perks.metamorphosis||ea("colorful_coins")?_.color:"#ffd300"}var f=h("5mG9B"),x=h("6QuVk");function e6(){ea("record")&&(null==s?void 0:s.state)==="recording"&&(null==s||s.pause())}function e7(){ea("record")&&s&&(null==s||s.stop(),s=null)}var f=h("5mG9B"),x=h("6QuVk"),e8=0,e9=null,_e=document.getElementById("popup"),__=document.getElementById("close-modale");__.addEventListener("click",function(e){e.preventDefault(),e9&&e9()}),__.title=A("play.close_modale_window_tooltip");var _t=-1;function _r(e){return _a.apply(this,arguments)}function _a(){return(_a=(0,f._)(function(e){var _,t,r,a,n,o,s;return(0,x.__generator)(this,function(l){return _=e.title,r=void 0===(t=e.content)?[]:t,n=void 0===(a=e.allowClose)||a,s=void 0===(o=e.className)?"":o,_n(1),[2,new Promise(function(e){var t,a=function(_){l||(l=!0,Array.prototype.forEach.call(o.querySelectorAll("button:not([disabled])"),function(e){return e.disabled=!0}),document.body.style.minHeight=document.body.scrollHeight+"px",setTimeout(function(){return document.body.style.minHeight=""},0),o.remove(),e(_))};_e.className=s,__.style.display=n?"":"none";var o=document.createElement("div"),l=!1;if(e9=n?function(){a(void 0)}:null,_){var i=document.createElement("h2");i.innerHTML=_,o.appendChild(i)}null==r||r.filter(function(e){return e}).forEach(function(e,_){if(e){if("string"==typeof e){var t,r,n=document.createElement("div");n.innerHTML=e,o.appendChild(n);return}(null===(t=o.lastChild)||void 0===t?void 0:t.nodeName)=="SECTION"?r=o.lastChild:((r=document.createElement("section")).className="actions",o.appendChild(r));var s=e.text,l=e.value,i=e.help,u=e.disabled,c=e.className,p=e.icon,d=e.tooltip,m=document.createElement("button");m.innerHTML="\n".concat(void 0===p?"":p,"\n<div>\n <strong>").concat(s,"</strong>\n <em>").concat(i||"","</em>\n </div>"),d&&m.setAttribute("data-tooltip",d),u?m.setAttribute("disabled","disabled"):m.addEventListener("click",function(e){e.preventDefault(),e.stopPropagation(),a(l),_t=_}),m.className=(void 0===c?"":c)+(_t===_?" needs-focus":""),r.appendChild(m)}}),o.addEventListener("click",function(e){var _=e.target;_.getAttribute("data-resolve-to")&&a(_.getAttribute("data-resolve-to"))},!0),_e.appendChild(o),null===(t=_e.querySelector("section.actions > button.needs-focus"))||void 0===t||t.focus(),_t=-1}).then(function(e){return _n(-1),e9=null,e},function(){e9=null,_n(-1)})]})})).apply(this,arguments)}function _n(e){(e8+=e)>1&&alert("Two alerts where opened at once"),document.body.classList[e8?"add":"remove"]("has-alert-open")}function _o(e,_){if(to.running&&!to.isGameOver){to.isGameOver=!0,_U(!0),e7(),function(e){try{localStorage.setItem("breakout_71_total_play_time",JSON.stringify(JSON.parse(localStorage.getItem("breakout_71_total_play_time")||"0")+e))}catch(e){}}(to.runStatistics.runTime);var t=L(),r=t-to.score,a=I.filter(function(e){return e.threshold>r&&e.threshold<t}),n=a.length?"\n\n <h2>".concat(1===a.length?A("gameOver.unlocked_perk"):A("gameOver.unlocked_perk_plural",{count:a.length}),"</h2>\n \n ").concat(a.map(function(e){return' \n <div class="upgrade used">\n '.concat($["icon:"+e.id],"\n <p>\n <strong>").concat(e.name,"</strong>\n ").concat(e.help(1),"\n </p> \n </div>\n ")}).join("\n")," \n "):"";to.combo=1,_r({allowClose:!0,title:e,content:[_s(to)||"\n <p>".concat(_,"</p>\n <p>").concat(A("gameOver.cumulative_total",{startTs:r,endTs:t}),"</p> \n "),{icon:$["icon:new_run"],value:null,text:A("gameOver.restart"),help:""},'<div id="level-recording-container"></div>',n,function(e){if(e.creative)return"";var _="",t="";try{var r=e_.map(function(e,_){var t;return{li:_,l:e,r:null===(t=eB(_,_l,!1))||void 0===t?void 0:t.text}}).filter(function(e){return e.r});e.runStatistics.runTime=Math.round(e.runStatistics.runTime);var a=k({},e.perks);for(var n in a)a[n]||delete a[n];_l.push(S(k({},e.runStatistics),{perks:a,appVersion:K}));var o=r.filter(function(e){var _=e.li;return!eB(_,_l,!0)});o.length&&(_="\n\n <h2>".concat(1===o.length?A("unlocks.just_unlocked"):A("unlocks.just_unlocked_plural",{count:o.length}),"</h2>\n \n ").concat(o.map(function(e){var _=e.l;return e.r,' \n <div class="upgrade used">\n '.concat($[_.name],"\n <p>\n <strong>").concat(_.name,"</strong>\n ").concat(eg(_),"\n </p> \n </div>\n ")}).join("\n")," \n ")),localStorage.setItem("breakout_71_runs_history",JSON.stringify(_l,null,2));var s=function(e,_,t){var r,a,n,o=_l.map(function(e){return _(e)||0}),s=(r=Math).min.apply(r,w(o)),l=(a=Math).max.apply(a,w(o));if(s===l)return"";l-s<10&&(s=Math.max(0,l-10),l=Math.max(l,s+10));var i=Math.min(o.length,10);if(i<3)return"";for(var u=[],c=[],p=0;p<i;p++)u.push(0),c.push(0);var d=(l-s)/u.length,m=function(e){return Math.min(u.length-1,Math.floor((e-s)/d))};if(o.forEach(function(e){if(!isNaN(e)){var _=m(e);u[_]++,c[_]+=e}}),u.filter(function(e){return e}).length<3)return"";var g=(n=Math).max.apply(n,w(u)),b=o[o.length-1],h=m(b),v=u.map(function(e,_){return'<span class="'.concat(_===h?"active":"",'"><span style="').concat("height: ".concat(e/g*80,"px"),'" title="').concat(e," run").concat(e>1?"s":""," between ").concat(Math.floor(s+_*d)," and ").concat(Math.floor(s+(_+1)*d)).concat(t,'"\n ><span>').concat(!e&&" "||_==h&&b+t||Math.round(c[_]/e)+t,"</span></span></span>")}).join("");return'<h2 class="histogram-title">'.concat(e," : <strong>").concat(b).concat(t,'</strong></h2>\n <div class="histogram">').concat(v,"</div>\n ")};t+=s(A("gameOver.stats.total_score"),function(e){return e.score},""),t+=s(A("gameOver.stats.catch_rate"),function(e){return Math.round(e.score/e.coins_spawned*100)},"%"),t+=s(A("gameOver.stats.bricks_broken"),function(e){return e.bricks_broken},""),t+=s(A("gameOver.stats.bricks_per_minute"),function(e){return Math.round(e.bricks_broken/e.runTime*6e4)},""),t+=s(A("gameOver.stats.hit_rate"),function(e){return Math.round((1-e.misses/e.puck_bounces)*100)},"%"),t+=s(A("gameOver.stats.duration_per_level"),function(e){return Math.round(e.runTime/1e3/e.levelsPlayed)},"s"),t+=s(A("gameOver.stats.level_reached"),function(e){return e.levelsPlayed},""),t+=s(A("gameOver.stats.upgrades_applied"),function(e){return e.upgrades_picked},""),t+=s(A("gameOver.stats.balls_lost"),function(e){return e.balls_lost},""),t+=s(A("gameOver.stats.combo_avg"),function(e){return Math.round(e.coins_spawned/e.bricks_broken)},""),t+=s(A("gameOver.stats.combo_max"),function(e){return e.max_combo},""),(t+=s(A("gameOver.stats.loops"),function(e){return e.loops},""))&&(t="<p>".concat(A("gameOver.stats.intro",{count:_l.length-1}),"</p>")+t)}catch(e){console.warn(e)}return _+t}(to)]}).then(function(){return ts({levelToAvoid:eS(to).name})})}}function _s(e){return e.creative?"<p>"+A("gameOver.creative")+"</p>":""}var _l=[];try{_l=JSON.parse(localStorage.getItem("breakout_71_runs_history")||"[]")}catch(e){}function _i(e,_){e.puckPosition=_,e.needsRender=!0}function _u(e){_c(e);var _,t=1+((null===(_=e.perks)||void 0===_?void 0:_.multiball)||0),r=e.puckWidth/(t+1);e.balls=[],e.ballsColor="#FFFFFF",(e.perks.picky_eater||e.perks.pierce_color)&&(e.ballsColor=function(e){var _,t,r={};e.forEach(function(e){return r[e]=(r[e]||0)+1});var a=(t=Math).max.apply(t,w(Object.keys(r).map(function(e){return r[e]})));return(_=Object.keys(r).filter(function(e){return r[e]==a}))[Math.floor(_.length*Math.random())]}(e.bricks.filter(function(e){return e}))||"#FFFFFF");for(var a=0;a<t;a++){var n=e.puckPosition-e.puckWidth/2+r*(a+1),o=+!e.perks.concave_puck*(Math.random()>.5?e.baseSpeed:-e.baseSpeed);e.balls.push({x:n,previousX:n,y:e.gameZoneHeight-1.5*e.ballSize,previousY:e.gameZoneHeight-1.5*e.ballSize,vx:o,previousVX:o,vy:-e.baseSpeed,previousVY:-e.baseSpeed,piercePoints:3*e.perks.pierce,hitSinceBounce:0,brokenSinceBounce:0,sapperUses:0})}e.ballStickToPuck=!0}function _c(e){e.baseSpeed=Math.max(3,e.gameZoneWidth/12/10+e.currentLevel/3+e.levelTime/3e4-2*e.perks.slow_down),e.puckWidth=Math.max(e.ballSize,e.gameZoneWidth/12*Math.min(12,3-e.perks.smaller_puck+e.perks.bigger_puck));var _=e.levelTime?e.perks.corner_shot:0,t=e.offsetXRoundedDown+e.puckWidth/2-e.puckWidth*_,r=e.offsetXRoundedDown+e.gameZoneWidthRoundedUp-e.puckWidth/2+e.puckWidth*_;e.puckPosition=E(e.puckPosition,t,r),e.ballStickToPuck&&function(e){var _=e.balls.length,t=e.puckWidth/(_+1);e.balls.forEach(function(_,r){var a=e.puckPosition-e.puckWidth/2+t*(r+1);_.x=a,_.previousX=a,_.y=e.gameZoneHeight-1.5*e.ballSize,_.previousY=_.y,_.hitSinceBounce=0,_.brokenSinceBounce=0,_.piercePoints=3*e.perks.pierce})}(e),Math.abs(e.lastPuckPosition-e.puckPosition)>1&&e.running&&(e.lastPuckMove=e.levelTime),e.lastPuckPosition=e.puckPosition}function _p(e){return 1+3*e.perks.base_combo+5*e.perks.smaller_puck}function _d(e,_,t){var r=e.combo;e.combo=_p(e),r>e.combo&&e.perks.soft_reset&&(e.combo+=Math.floor((r-e.combo)*j(e.perks.soft_reset)));var a=Math.max(0,r-e.combo);if(a){for(var n=0;n<a&&n<8;n++)setTimeout(function(){return _y(e,"comboDecrease",_,1)},100*n);void 0!==_&&void 0!==t&&_M(e,_,t,"#FF0000","-"+a,20,500+E(a,0,500))}return a}function _m(e,_,t,r){!(_<=0)&&(e.combo+=_,ea("comboIncreaseTexts")&&void 0!==t&&void 0!==r&&_M(e,t,r,"#ffd300","+"+_,25,400+_))}function _g(e,_,t,r){var a=e.combo;e.combo=Math.max(_p(e),e.combo-_);var n=Math.max(0,a-e.combo);n&&(_y(e,"comboDecrease",t,1),void 0!==t&&void 0!==r&&_M(e,t,r,"#FF0000","-"+n,20,400+n))}function _b(e,_,t,r,a){if(!ea("basic")){_R(e.particles)>T()&&(_=1);for(var n=0;n<_;n++)_G(e,t+(Math.random()-.5)*e.brickWidth/2,r+(Math.random()-.5)*e.brickWidth/2,(Math.random()-.5)*30,(Math.random()-.5)*30,a,!1)}}function _h(e,_,t,r,a){var n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=1+e.perks.bigger_explosions+Math.max(0,e.perks.implosions-1)+n;if(_y(e,"explode",a.x,1),-1!==_)for(var s=_%e.gridSize,l=Math.floor(_/e.gridSize),i=-o;i<=o;i++)for(var u=-o;u<=o;u++){var c=ey(e,l+u,s+i);e.bricks[c]&&-1!==c&&(e.brickHP[c]--,e.brickHP[c]<=0&&_v(e,c,a,!0))}var p=e.perks.implosions?-1:1;_L(e.coins,function(_){var a=_.x-t,n=_.y-r,s=Math.max(e.brickWidth,Math.abs(a)+Math.abs(n));_.vx+=a/s*10*o/_.weight*p,_.vy+=n/s*10*o/_.weight*p}),e.lastExplosion=Date.now(),e.perks.implosions?function(e,_,t,r,a){if(!ea("basic")){_R(e.particles)>T()&&(_=1);for(var n=0;n<_;n++){var o=(Math.random()-.5)*e.brickWidth/2,s=(Math.random()-.5)*e.brickWidth/2;_G(e,t-10*o,r-10*s,o,s,a,!1)}}}(e,7*o,t,r,"#FFFFFF"):_b(e,7*o,t,r,"#FFFFFF"),e.runStatistics.bricks_broken++,e.perks.zen&&_d(e,t,r)}function _v(e,_,t,r){var a=e.bricks[_];if(a){var n=e.perks.picky_eater&&ez(e),o=eq(e);if(e.lastBrickBroken=e.levelTime,"black"===a){var s=ev(e,_),l=ef(e,_);_w(e,_,""),_h(e,_,s,l,t,0)}else if(a){var i=ev(e,_),u=ef(e,_);_w(e,_,"");var c=e.combo;e.perks.sturdy_bricks&&(c+=Math.ceil((2+e.perks.sturdy_bricks)/2*c)),e.levelSpawnedCoins+=c,e.runStatistics.coins_spawned+=c,e.runStatistics.bricks_broken++;for(var p=B()*(ea("basic")?.5:1),d=Math.max(1,Math.ceil(c/(_R(e.coins)>B()?1:Math.floor(p-_R(e.coins))/3)));c>0;){var m=Math.min(d,c);(m<0||isNaN(m))&&console.error({points:m}),c-=m;var g=i+(Math.random()-.5)*(e.brickWidth-e.coinSize),b=u+(Math.random()-.5)*(e.brickWidth-e.coinSize);!function(e,_,t,r,a){var n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"#ffd300",o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,s=.8+.2*Math.random()+Math.min(2,.01*o);s*=5/(5+e.perks.etherealcoins),_H(e.coins,function(l){l.x=_,l.y=t,l.collidedLastFrame=!0,l.size=e.coinSize,l.previousX=_,l.previousY=t,l.vx=r,l.vy=a,l.color=n,l.a=Math.random()*Math.PI*2,l.sa=Math.random()-.5,l.points=o,l.weight=s,l.metamorphosisPoints=e.perks.metamorphosis})}(e,g,b,t.previousVX*(.5+Math.random()),t.previousVY*(.5+Math.random()),a,m)}if(_m(e,e.perks.streak_shots+e.perks.compound_interest+e.perks.left_is_lava+e.perks.right_is_lava+e.perks.top_is_lava+e.perks.picky_eater+3*e.perks.asceticism+e.perks.zen+e.perks.passive_income+e.perks.addiction+e.perks.unbounded,t.x,t.y),e.perks.side_kick&&(t.previousVX>0?_m(e,e.perks.side_kick,t.x,t.y):_g(e,2*e.perks.side_kick,t.x,t.y)),-1!==o){if(Math.floor(_/e.level.size)===o)_d(e,i,u);else for(var h=0;h<e.level.size;h++)e.bricks[o*e.level.size+h]&&e.combo++}eR(e)&&_d(e,i,u),r||((e.perks.picky_eater||e.perks.pierce_color)&&a!==e.ballsColor&&a?(n&&_d(e,t.x,t.y),_y(e,"colorChange",t.x,.8),e.lastExplosion=e.levelTime,e.ballsColor=a,ea("basic")||e.balls.forEach(function(_){_b(e,7,_.previousX,_.previousY,a)})):_y(e,"comboIncreaseMaybe",t.x,1)),_b(e,5+Math.min(e.combo,30),i,u,a)}e.perks.respawn&&"black"!==a&&!e.bricks[_]&&Math.random()<j(e.perks.respawn)&&_H(e.respawns,function(t){t.color=a,t.index=_,t.time=e.levelTime+3e3/e.perks.respawn})}}function _f(e,_){e.lastOffered[_]=Math.round(Date.now()/1e3)}function _y(e,_,t,r){if(r){null!=t||(t=e.offsetX+e.gameZoneWidth/2);var a=e.aboutToPlaySound[_];a.x=(t*r+a.x*a.vol)/(r+a.vol),a.vol+=r}}function _k(e,_){return _W.apply(this,arguments)}function _W(){return(_W=(0,f._)(function(e,_){var t,r,a;return(0,x.__generator)(this,function(n){switch(n.label){case 0:if(e.upgradesOfferedFor>=_)return[2,console.warn("Extra upgrade request ignored ")];if(e.upgradesOfferedFor=_,_U(!1),e7(),!(_>0))return[3,2];return[4,function(e){return _Q.apply(this,arguments)}(e)];case 1:n.sent(),n.label=2;case 2:for(e.currentLevel=_,e.level=e.runLevels[_],e.levelTime=0,e.winAt=0,e.levelWallBounces=0,e.lastPuckMove=0,e.autoCleanUses=0,e.lastTickDown=e.levelTime,e.levelStartScore=e.score,e.levelSpawnedCoins=0,e.levelLostCoins=0,e.levelMisses=0,e.lastBrickBroken=0,e.runStatistics.levelsPlayed++,t=e.combo,e.combo=_p(e),e.perks.shunt&&(e.combo+=Math.round(Math.max(0,(t-e.combo)*j(e.perks.shunt)))),e.combo+=30*e.perks.hot_start,(r=eS(e)).size!==e.gridSize&&(e.gridSize=r.size,_J()),e.levelLostCoins+=_O(e.coins),_O(e.particles),_O(e.lights),_O(e.texts),_O(e.respawns),e.bricks=[],a=0;a<r.size*r.size;a++)_w(e,a,r.bricks[a]);return _u(e),e.needsRender=!0,ej.src="data:image/svg+xml;UTF8,"+r.svg,document.body.style.setProperty("--level-background",r.color||"#000"),[2]}})})).apply(this,arguments)}function _w(e,_,t){e.bricks[_]=t||"",e.brickHP[_]="black"===t&&1||t&&1+e.perks.sturdy_bricks||0}var _x=["#ff2e2e","#ffe02e","#70ff33","#33ffa7","#38acff","#7038ff","#ff3de5"];function _S(){return _x[Math.floor(to.levelTime/50)%_x.length]}function _z(e,_,t,r,a){var n=eP(_,t),o=e.gameZoneWidth/4;if(!(n>o)){var s=(_.x-t.x)/n,l=(_.y-t.y)/n,i=-r*(o-n)/(1.2*o)/3*Math.min(500,e.levelTime)/500;a&&void 0!==t.vx&&void 0!==t.vy&&(t.vx+=s*i,t.vy+=l*i),_.vx-=s*i,_.vy-=l*i,_G(e,_.x,_.y,-(10*s)+_.vx+(Math.random()-.5)*2,-(10*l)+_.vy+(Math.random()-.5)*2,_S(),!0,e.coinSize/2,100),a&&void 0!==t.vx&&void 0!==t.vy&&_G(e,t.x,t.y,10*s+t.vx+(Math.random()-.5)*2,10*l+t.vy+(Math.random()-.5)*2,_S(),!0,e.coinSize/2,100)}}function _q(e,_,t,r){if(!_.destroyed){_.previousX=_.x,_.previousY=_.y,_.x+=_.vx*r,_.y+=_.vy*r,e.perks.wind&&(_.vx+=(e.puckPosition-(e.offsetX+e.gameZoneWidth/2))/e.gameZoneWidth*e.perks.wind*.5);var a=0,n=0;return _.x<e.offsetXRoundedDown+t&&!e.perks.unbounded&&(_.x=e.offsetXRoundedDown+t+(e.offsetXRoundedDown+t-_.x),_.vx*=-1,n=1),_.y<t&&e.perks.unbounded<2&&(_.y=t+(t-_.y),_.vy*=-1,a=1),_.x>e.canvasWidth-e.offsetXRoundedDown-t&&!e.perks.unbounded&&(_.x=e.canvasWidth-e.offsetXRoundedDown-t-(_.x-(e.canvasWidth-e.offsetXRoundedDown-t)),_.vx*=-1,n=1),n+2*a}}function _G(e,_,t,r,a,n){var o=arguments.length>6&&void 0!==arguments[6]&&arguments[6],s=arguments.length>7&&void 0!==arguments[7]?arguments[7]:8,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:150;_H(e.particles,function(i){i.time=e.levelTime,i.x=_,i.y=t,i.vx=r,i.vy=a,i.color=n,i.size=s,i.duration=l,i.ethereal=o})}function _M(e,_,t,r,a){var n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:20,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:500;_H(e.texts,function(s){s.time=e.levelTime,s.x=_,s.y=t,s.color=r,s.size=n,s.duration=E(o,400,2e3),s.text=a})}function _H(e,_){for(;e.list[e.indexMin]&&!e.list[e.indexMin].destroyed&&e.indexMin<e.list.length;)e.indexMin++;if(e.indexMin<e.list.length)e.list[e.indexMin].destroyed=!1,_(e.list[e.indexMin]),e.indexMin++;else{var t={destroyed:!1};_(t),e.list.push(t)}e.total++}function _P(e,_){!e.list[_].destroyed&&(e.list[_].destroyed=!0,e.indexMin=Math.min(e.indexMin,_),e.total--)}function _R(e){return e.total}function _O(e){var _=0;return e.total=0,e.indexMin=0,e.list.forEach(function(e){!e.destroyed&&(e.destroyed=!0,_++)}),_}function _L(e,_){e.list.forEach(function(e,t){e&&!e.destroyed&&_(e,t)})}var f=h("5mG9B"),x=h("6QuVk");function _B(e){return R("start_with_"+e.id,e.giftable)}function _T(){return _C.apply(this,arguments)}function _C(){return(_C=(0,f._)(function(){var e,_,t,r,a;return(0,x.__generator)(this,function(n){switch(n.label){case 0:return e=L(),t=(_=et.filter(function(_){return!_.requires&&!["instant_upgrade"].includes(_.id)&&_.threshold<=e})).filter(function(e){return _B(e)}),r=_.map(function(e){var _=_B(e);return{icon:e.icon,text:e.name,tooltip:e.help(1),value:e,disabled:_&&t.length<2,checked:_}}),[4,_r({title:A("main_menu.starting_perks"),className:"actionsAsGrid",content:[A("main_menu.starting_perks_checked")].concat(w(r.filter(function(e){return e.checked})),[A("main_menu.starting_perks_unchecked")],w(r.filter(function(e){return!e.checked})))})];case 1:return(a=n.sent())&&(O("start_with_"+a.id,!_B(a)),_T()),[2]}})})).apply(this,arguments)}function _F(e){var _=eO(),t=k({},eh(et),(null==e?void 0:e.perks)||{}),r=void 0;if(!eb(t)){var a=et.filter(function(e){return _>=e.threshold&&!e.requires&&_B(e)});t[r=ea("easy")&&"slow_down"||a[Math.floor(Math.random()*a.length)].id]=1}var n=(u=r,c=_l,p=e_.filter(function(e,_){return!eB(_,c,!1)}),d=(null==e?void 0:e.level)&&p.filter(function(_){return _.name===(null==e?void 0:e.level)})||u&&ee.filter(function(e){return e.name=="icon:"+u})||[],m=p.filter(function(_){return _.name!==(null==e?void 0:e.level)}).filter(function(_){return _.name!==(null==e?void 0:e.levelToAvoid)}).sort(function(){return Math.random()-.5}),d.concat(m.slice(0,10).sort(function(e,_){return e.sortKey-_.sortKey}))),o=S(k({runLevels:n,level:n[0],currentLevel:0,upgradesOfferedFor:-1,perks:t,puckWidth:200,baseSpeed:12,combo:1,gridSize:12,running:!1,isGameOver:!1,ballStickToPuck:!0,puckPosition:400,lastPuckPosition:400,lastPuckMove:0,pauseTimeout:null,canvasWidth:0,canvasHeight:0,offsetX:0,offsetXRoundedDown:0,gameZoneWidth:0,gameZoneWidthRoundedUp:0,gameZoneHeight:0,brickWidth:0,score:0,lastScoreIncrease:-1e3,lastExplosion:-1e3,lastBrickBroken:0,highScore:_,balls:[],ballsColor:"#FFFFFF",bricks:[],brickHP:[],lights:{indexMin:0,total:0,list:[]},particles:{indexMin:0,total:0,list:[]},texts:{indexMin:0,total:0,list:[]},coins:{indexMin:0,total:0,list:[]},respawns:{indexMin:0,total:0,list:[]},levelStartScore:0,levelMisses:0,levelSpawnedCoins:0,puckColor:"#FFFFFF",ballSize:20,coinSize:14,puckHeight:20,totalScoreAtRunStart:L(),pauseUsesDuringRun:0,keyboardPuckSpeed:0,lastTick:performance.now(),lastTickDown:0,runStatistics:{started:Date.now(),levelsPlayed:0,runTime:0,coins_spawned:0,score:0,bricks_broken:0,misses:0,balls_lost:0,puck_bounces:0,wall_bounces:0,upgrades_picked:1,max_combo:1},lastOffered:{},levelTime:0,winAt:0,levelWallBounces:0,needsRender:!0,autoCleanUses:0},{aboutToPlaySound:{wallBeep:{vol:0,x:0},comboIncreaseMaybe:{vol:0,x:0},comboDecrease:{vol:0,x:0},coinBounce:{vol:0,x:0},explode:{vol:0,x:0},lifeLost:{vol:0,x:0},coinCatch:{vol:0,x:0},colorChange:{vol:0,x:0}}}),{rerolls:0,creative:eb(e.perks)>1||e.level});_u(o);var s=!0,l=!1,i=void 0;try{for(var u,c,p,d,m,g,b=et[Symbol.iterator]();!(s=(g=b.next()).done);s=!0){var h=g.value;t[h.id]&&_f(o,h.id)}}catch(e){l=!0,i=e}finally{try{s||null==b.return||b.return()}finally{if(l)throw i}}return o}var f=h("5mG9B"),x=h("6QuVk"),f=h("5mG9B"),x=h("6QuVk");function _A(){return(_A=(0,f._)(function(){var e,_,t;return(0,x.__generator)(this,function(r){switch(r.label){case 0:e=R("creativeModePerks",{}),t=["extra_levels","shunt","one_more_choice","instant_upgrade"],r.label=1;case 1:return[4,_r({title:A("lab.menu_entry"),className:"actionsAsGrid",content:[A("lab.instructions"),{value:"reset",text:A("lab.reset"),disabled:!eb(e)}].concat(w(et.filter(function(e){return!t.includes(e.id)}).map(function(_){return{icon:_.icon,text:_.name,help:(e[_.id]||0)+"/"+(_.max+(e.limitless||0)),value:_,className:e[_.id]?"sandbox":"sandbox grey-out-unless-hovered",tooltip:_.help(e[_.id]||1)}})),[A("lab.select_level")],w(e_.map(function(e,_){var t,r=(null===(t=eB(_,_l,!0))||void 0===t?void 0:t.text)||"";return{icon:$[e.name],text:e.name,value:e,disabled:!!r,tooltip:r||eg(e)}})))})];case 2:if(!(_=r.sent()))return[3,7];if("reset"!==_)return[3,3];return et.forEach(function(_){e[_.id]=0}),[3,6];case 3:if(!("bricks"in _))return[3,5];return O("creativeModePerks",e),[4,t_(to)];case 4:return r.sent()&&ts({perks:e,level:_.name}),[2];case 5:if(!_)return[2];e[_.id]=((e[_.id]||0)+1)%(_.max+1+(e.limitless||0)),r.label=6;case 6:return[3,1];case 7:return[2]}})})).apply(this,arguments)}function _E(){for(var e={},_=0;_<localStorage.length;_++){var t=localStorage.key(_);if(!["recovery_data"].includes(t)){var r=localStorage.getItem(t);e[t]=r}}return JSON.stringify(e)}var _j=0;function _D(e,_){if(!localStorage.getItem(e))try{_(),console.debug("Ran migration : "+e),localStorage.setItem(e,""+Date.now()),_j++}catch(_){console.warn("Migration "+e+" failed : ",_)}}_D("save_data_before_upgrade_to_"+_(G),function(){localStorage.setItem("recovery_data",JSON.stringify(_E()))}),_D("migrate_high_scores",function(){var e=localStorage.getItem("breakout-3-hs");e&&(localStorage.setItem("breakout-3-hs-short",e),localStorage.removeItem("breakout-3-hs"))}),_D("recover_high_scores",function(){JSON.parse(localStorage.getItem("breakout_71_runs_history")||"[]").forEach(function(e){var _=parseInt(localStorage.getItem("breakout-3-hs-"+(e.mode||"short"))||"0");e.score>_&&localStorage.setItem("breakout-3-hs-"+(e.mode||"short"),""+e.score)})}),_D("remove_long_and_creative_mode_data",function(){var e=JSON.parse(localStorage.getItem("breakout_71_runs_history")||"[]"),_=e.filter(function(e){return!!e.perks&&(!("mode"in e)||"short"===e.mode)});_.length!==e.length&&localStorage.setItem("breakout_71_runs_history",JSON.stringify(_))}),_D("compact_runs_data",function(){var e=JSON.parse(localStorage.getItem("breakout_71_runs_history")||"[]");e.forEach(function(e){for(var _ in e.runTime=Math.round(e.runTime),e.perks)e.perks&&!e.perks[_]&&delete e.perks[_];"best_level_score"in e&&delete e.best_level_score,"worst_level_score"in e&&delete e.worst_level_score}),localStorage.setItem("breakout_71_runs_history",JSON.stringify(e))}),_j&&!window.location.hash&&(window.location.hash="#reloadAfterMigration",window.location.reload()),_j||(window.location.hash="");var f=h("5mG9B"),_V=h("6kDwf"),x=(h("6QuVk"),h("6QuVk")),f=h("5mG9B"),x=h("6QuVk");function _I(e){return _Z.apply(this,arguments)}function _Z(){return(_Z=(0,f._)(function(e){return(0,x.__generator)(this,function(_){switch(_.label){case 0:return _U(!0),[4,_r({title:A("score_panel.title",{score:e.score,level:e.currentLevel+1,max:eW(e)}),content:[_s(e),ew(e),ex(e,e.currentLevel),_N(e),e.rerolls?A("score_panel.rerolls_count",{rerolls:e.rerolls}):""],allowClose:!0})];case 1:return _.sent(),[2]}})})).apply(this,arguments)}function _N(e){if(e.creative)return"";var _,t=e_.map(function(_,t){var r=eL(t),a=r.minScore,n=r.forbidden,o=r.required;return{l:_,li:t,minScore:a,forbidden:n,required:o,missing:o.filter(function(_){var t;return!(null==e?void 0:null===(t=e.perks)||void 0===t?void 0:t[_.id])}),reason:eB(t,_l,!1)}}).filter(function(_){var t=_.reason,r=_.forbidden,a=_.missing;return t&&!r.find(function(_){var t;return null==e?void 0:null===(t=e.perks)||void 0===t?void 0:t[_.id]})&&!a.find(function(_){return _.threshold>e.totalScoreAtRunStart})}),r=t.find(function(e){return!e.missing.length})||t[0];if(!r)return"";var a=r.minScore-e.score,n=r.missing.map(function(e){return e.name}).join(", "),o=n&&A("score_panel.get_upgrades_to_unlock",{missingUpgrades:n,points:a,level:r.l.name})||a>0&&A("score_panel.score_to_unlock",{points:a,level:r.l.name})||A("score_panel.continue_to_unlock",{level:r.l.name});return"\n<p>".concat(A("score_panel.close_to_unlock"),'</p>\n <div class="upgrade used">\n ').concat($[r.l.name],"\n <p>\n <strong>").concat(o,"</strong>\n ").concat(null===(_=r.reason)||void 0===_?void 0:_.text,"\n </p> \n </div>\n \n ")}function _X(){return _Y.apply(this,arguments)}function _Y(){return(_Y=(0,f._)(function(){var e;return(0,x.__generator)(this,function(_){switch(_.label){case 0:return[4,_8()];case 1:if(_.sent()||to.running)return[2];return to.running=!0,to.ballStickToPuck=!1,!function(e){if(ea("record")&&!s){if(!u){c=(u=document.createElement("canvas")).getContext("2d",{antialias:!1,alpha:!1}),i=(l=u.captureStream(0)).getVideoTracks()[0];var _=(el(),n);_&&l.addTrack(_.stream.getAudioTracks()[0])}u.width=e.gameZoneWidthRoundedUp,u.height=e.gameZoneHeight;var t=[],r=new MediaRecorder(l,{videoBitsPerSecond:35e5});s=r,r.start(),s.pause(),r.ondataavailable=function(e){t.push(e.data)},r.onstop=(0,f._)(function(){var e,_,r,a;return(0,x.__generator)(this,function(n){switch(n.label){case 0:if((_=new Blob(t,{type:"video/webm"})).size<2e5)return[2];n.label=1;case 1:if(e=document.getElementById("level-recording-container"))return[3,3];return[4,new Promise(function(e){return setTimeout(e,200)})];case 2:return n.sent(),[3,1];case 3:var o;if((r=document.createElement("video")).autoplay=!0,r.controls=!1,r.disablePictureInPicture=!0,r.disableRemotePlayback=!0,r.width=u.width,r.height=u.height,r.loop=!0,r.muted=!0,r.playsInline=!0,r.src=URL.createObjectURL(_),e.appendChild(r),(a=document.createElement("a")).download=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"webm";return"breakout-71-capture-"+new Date().toISOString().replace(/[^0-9\-]+/gi,"-")+"."+e}("webm"),a.target="_blank",!window.location.href.endsWith("index.html?isInWebView=true"))return[3,5];return[4,(o=_,new Promise(function(e,_){var t=new FileReader;t.onload=function(){e(t.result)},t.onerror=function(e){console.error(e),_(Error("Failed to readAsDataURL of the video "))},t.readAsDataURL(o)}))];case 4:return a.href=n.sent(),[3,6];case 5:a.href=r.src,n.label=6;case 6:return a.textContent=A("main_menu.record_download",{size:(_.size/1e6).toFixed(2)}),e.appendChild(a),[2]}})})}}(to),null===(e=el())||void 0===e||e.resume(),ea("record")&&(null==s?void 0:s.state)==="paused"&&s.resume(),[2]}})})).apply(this,arguments)}function _U(e){if(to.running&&!to.pauseTimeout){var _=function(){to.running=!1,setTimeout(function(){var e;to.running||null===(e=el())||void 0===e||e.suspend()},1e3),e6(),to.pauseTimeout=null,e0.className="",to.needsRender=!0};e?(to.pauseUsesDuringRun++,to.pauseTimeout=setTimeout(_,Math.min(50*Math.max(0,to.pauseUsesDuringRun-5),500))):_(),document.exitPointerLock&&document.exitPointerLock()}}var _J=function(){var e=function(e){e.x=to.offsetXRoundedDown+(e.x-t)/r*to.gameZoneWidthRoundedUp,e.y=e.y/a*to.gameZoneHeight},_=function(e){e.x=to.offsetXRoundedDown+(e.x-t)/r*to.gameZoneWidthRoundedUp,e.y=e.y/a*to.gameZoneHeight,e.previousX=e.x,e.previousY=e.y},t=to.offsetXRoundedDown,r=to.gameZoneWidthRoundedUp,a=to.gameZoneHeight,n=eF.getBoundingClientRect(),o=n.width,s=n.height;to.canvasWidth=o,to.canvasHeight=s,eF.width=o,eF.height=s,eD.width=o,eD.height=s,eV.width=o/16,eV.height=s/16,to.gameZoneHeight=ea("mobile-mode")?80*s/100:s;var l=Math.round(Math.min(to.canvasWidth,.73*to.gameZoneHeight));to.brickWidth=2*Math.floor(l/to.gridSize/2),to.gameZoneWidth=to.brickWidth*to.gridSize,to.offsetX=Math.floor((to.canvasWidth-to.gameZoneWidth)/2),to.offsetXRoundedDown=to.offsetX,to.offsetX<to.ballSize&&(to.offsetXRoundedDown=0),to.gameZoneWidthRoundedUp=o-2*to.offsetXRoundedDown,eD.title="resized",_i(to,to.puckPosition),to.balls.forEach(_),_L(to.coins,_),_L(to.particles,e),_L(to.texts,e),_L(to.lights,e),_U(!0),document.documentElement.style.setProperty("--vh","".concat(.01*window.innerHeight,"px"))};function _Q(){return(_Q=(0,f._)(function(e){var _,t,r,a,n,o,s,l,i;return(0,x.__generator)(this,function(u){switch(u.label){case 0:_=(e.score-e.levelStartScore)/(e.levelSpawnedCoins||1),t=1,r="",a="",n="",o="",e.levelWallBounces<3?(t++,e.rerolls++,n=A("level_up.plus_one_upgrade_and_reroll")):e.levelWallBounces<10&&(t++,n=A("level_up.plus_one_upgrade")),e.levelTime<3e4?(t++,e.rerolls++,r=A("level_up.plus_one_upgrade_and_reroll")):e.levelTime<6e4&&(t++,r=A("level_up.plus_one_upgrade")),_>.95?(t++,e.rerolls++,a=A("level_up.plus_one_upgrade_and_reroll")):_>.9&&(t++,a=A("level_up.plus_one_upgrade")),e.levelMisses<3?(t++,e.rerolls++,o=A("level_up.plus_one_upgrade_and_reroll")):e.levelMisses<6&&(t++,o=A("level_up.plus_one_upgrade")),u.label=1;case 1:var c,p;if(!t--||(c=3+e.perks.one_more_choice-e.perks.instant_upgrade,(p=ek(e).map(function(_){return S(k({},_),{score:Math.random()+(e.lastOffered[_.id]||0)})}).sort(function(e,_){return e.score-_.score}).filter(function(_){return e.perks[_.id]<_.max+e.perks.limitless}).slice(0,c).sort(function(e,_){return e.id>_.id?1:-1})).forEach(function(_){_f(e,_.id)}),!(s=p.map(function(_){return{text:_.name+(e.perks[_.id]?A("level_up.upgrade_perk_to_level",{level:e.perks[_.id]+1}):""),icon:$["icon:"+_.id],value:_.id,help:_.help(e.perks[_.id]+1)}})).length))return[3,3];return e.rerolls&&s.push({text:A("level_up.reroll",{count:e.rerolls}),help:A("level_up.reroll_help"),value:"reroll",icon:$["icon:reroll"]}),l=r&&a&&o&&n&&A("level_up.compliment_perfect")||(r||a||o||n)&&A("level_up.compliment_good")||A("level_up.compliment_advice"),[4,_r(S(k({},{title:A("level_up.pick_upgrade_title")+(t?" ("+(t+1)+")":""),content:["<p>".concat(A("level_up.before_buttons",{score:e.score-e.levelStartScore,catchGain:a,levelSpawnedCoins:e.levelSpawnedCoins,time:Math.round(e.levelTime/1e3),timeGain:r,levelMisses:e.levelMisses,missesGain:o,levelWallBounces:e.levelWallBounces,wallHitsGain:n,compliment:l}),"\n </p>\n <p>").concat(A("level_up.after_buttons",{level:e.currentLevel+1,max:eW(e)})," </p>\n <p>").concat(ex(e,e.currentLevel+1),"</p>\n")].concat(w(s),[_N(e),ew(e),'<div id="level-recording-container"></div>'])}),{allowClose:!1}))];case 2:return"reroll"===(i=u.sent())?(t++,e.rerolls--):(e.perks[i]++,"instant_upgrade"===i&&(t+=2),e.runStatistics.upgrades_picked++),[3,1];case 3:return[2]}})})).apply(this,arguments)}function _K(e,_){return ey(to,Math.floor(_/to.brickWidth),Math.floor((e-to.offsetX)/to.brickWidth))}function _$(e){if(to.bricks[e])return e}function _0(e,_,t){var r,a,n;return null!==(n=null!==(a=null!==(r=_$(_K(e-t,_-t)))&&void 0!==r?r:_$(_K(e+t,_-t)))&&void 0!==a?a:_$(_K(e+t,_+t)))&&void 0!==n?n:_$(_K(e-t,_+t))}window.addEventListener("resize",_J),window.addEventListener("fullscreenchange",_J),setInterval(function(){var e=eF.getBoundingClientRect(),_=e.width,t=e.height;(_!==to.canvasWidth||t!==to.canvasHeight)&&_J()},1e3),eF.addEventListener("mouseup",function(e){0===e.button&&(to.running?_U(!0):(_X(),ea("pointerLock")&&eF.requestPointerLock&&eF.requestPointerLock().then()))}),eF.addEventListener("mousemove",function(e){document.pointerLockElement===eF?_i(to,to.puckPosition+e.movementX):_i(to,e.x)}),eF.addEventListener("touchstart",function(e){var _;e.preventDefault(),(null===(_=e.touches)||void 0===_?void 0:_.length)&&(_i(to,e.touches[0].pageX),_c(to),_X())}),eF.addEventListener("touchend",function(e){e.preventDefault(),_U(!0)}),eF.addEventListener("touchcancel",function(e){e.preventDefault(),_U(!0)}),eF.addEventListener("touchmove",function(e){var _;(null===(_=e.touches)||void 0===_?void 0:_.length)&&_i(to,e.touches[0].pageX)});var _1=0,_2=60;setInterval(function(){_2=_1,_1=0},1e3),window.addEventListener("visibilitychange",function(){document.hidden&&_U(!0)}),e0.addEventListener("click",function(e){e.preventDefault(),e8||_I(to)}),document.addEventListener("visibilitychange",function(){document.hidden&&_U(!0)}),document.getElementById("menu").addEventListener("click",function(e){e.preventDefault(),e8||_3()});var _4=(p=Math).max.apply(p,w(et.map(function(e){return e.threshold})));function _3(){return _5.apply(this,arguments)}function _5(){return(_5=(0,f._)(function(){var e,_;return(0,x.__generator)(this,function(t){switch(t.label){case 0:var r;return _U(!0),e=[{icon:$["icon:new_run"],text:A("main_menu.normal"),help:(eO()?A("main_menu.high_score",{score:eO()}):"")||A("main_menu.normal_help"),value:function(){ts({levelToAvoid:eS(to).name})}},{icon:$["icon:creative"],text:A("lab.menu_entry"),help:L()<_4&&A("lab.unlocks_at",{score:_4})||A("lab.help"),disabled:L()<_4,value:function(){return(0,f._)(function(){return(0,x.__generator)(this,function(e){return function(){_A.apply(this,arguments)}(),[2]})})()}},(r=_l,{icon:$["icon:history"],text:A("history.title"),disabled:r.length<10,help:r.length<10?A("history.locked"):A("history.help",{count:r.length}),value:function(){return(0,f._)(function(){var e,_,t,a,n;return(0,x.__generator)(this,function(o){switch(o.label){case 0:e=function(){var e,n,o,s;return(0,x.__generator)(this,function(l){switch(l.label){case 0:return e=a.map(function(e,_){return'<th data-tooltip="'.concat(e.tooltip||"",'" data-resolve-to="sort:').concat(_,'">').concat(e.label,"</th>")}).join(""),n=r.sort(function(e,r){return t*(a[_].field(e)-a[_].field(r))}).map(function(e){return"<tr>"+a.map(function(_){var t,r=null!==(t=_.field(e))&&void 0!==t?t:0;return"<td>"+(_.render||function(e){return e.toString()})(r)+"</td>"}).join("")+"</tr>"}).join(""),[4,_r({title:A("history.title"),className:"history",content:["\n<table>\n<thead><tr>".concat(e,"</tr></thead>\n<tbody>").concat(n,"</tbody>\n</table>\n ")]})];case 1:if(!(o=l.sent()))return[2,{v:void 0}];return o.startsWith("sort:")&&((s=parseInt(o.split(":")[1]))==_?t*=-1:(t=-1,_=s)),[2]}})},_=0,t=-1,a=[{label:A("history.columns.started"),field:function(e){return e.started},render:function(e){return new Date(e).toISOString().slice(0,10)}},{label:A("history.columns.score"),field:function(e){return e.score}},{label:A("history.columns.runTime"),tooltip:A("history.columns.runTime_tooltip"),field:function(e){return e.runTime},render:function(e){return Math.floor(e/1e3)+"s"}},{label:A("history.columns.puck_bounces"),tooltip:A("history.columns.puck_bounces_tooltip"),field:function(e){return e.puck_bounces}},{label:A("history.columns.max_combo"),field:function(e){return e.max_combo}},{label:A("history.columns.upgrades_picked"),field:function(e){return e.upgrades_picked}}].concat(w(I.map(function(e){return{label:$["icon:"+e.id],tooltip:e.name,field:function(_){var t;return(null===(t=_.perks)||void 0===t?void 0:t[e.id])||0},render:function(e){return e||"-"}}}))),o.label=1;case 1:return[5,(0,x.__values)(e())];case 2:if(n=o.sent(),"object"===(0,_V._)(n))return[2,n.v];return[3,1];case 3:return[2]}})})()}}),{icon:$["icon:unlocks"],text:A("main_menu.unlocks"),help:A("main_menu.unlocks_help"),value:function(){(function(){te.apply(this,arguments)})()}}].concat(w(function(e){if(!ea("donation_reminder"))return[];var _=D();return[{text:A("main_menu.donate",{hours:_}),help:A("main_menu.donate_help",{suggestion:Math.min(20,Math.max(1,.2*_)).toFixed(0)}),icon:$["icon:premium"],value:function(){window.open("https://paypal.me/renanlecaro","_blank")}}]}(0)),[{text:A("main_menu.settings_title"),help:A("main_menu.settings_help"),icon:$["icon:settings"],value:function(){_6()}},{icon:$["icon:help"],text:A("main_menu.help_title"),help:A("main_menu.help_help"),value:function(){return(0,f._)(function(){return(0,x.__generator)(this,function(e){switch(e.label){case 0:return[4,_r({title:A("main_menu.help_title"),allowClose:!0,content:[V(A("main_menu.help_content")),A("main_menu.help_upgrades")].concat(w(et.map(function(e){return'\n<div class="upgrade used">\n '.concat(e.icon,"\n <p>\n <strong>").concat(e.name,"</strong><br/>\n ").concat(e.help(1),"\n </p> \n </div>\n \n ").concat(V(e.fullHelp),"\n")})),[V(A("main_menu.credits")),A("main_menu.credit_levels")],w(e_.filter(function(e){var _;return null===(_=e.credit)||void 0===_?void 0:_.startsWith("http")}).map(function(e){return'\n<div class="upgrade used">\n '.concat($[e.name],"\n <p>\n <strong>").concat(e.name,'</strong><br/>\n <a href="').concat(e.credit,'" target="_blank">').concat(e.credit,"</a> \n </p> \n </div>")})))})];case 1:return e.sent(),[2]}})})()}}]),[4,_r({title:A("main_menu.title"),content:w(e).concat([A("main_menu.footer_html",{appVersion:K})]),allowClose:!0})];case 1:return(_=t.sent())&&(_(),to.needsRender=!0),[2]}})})).apply(this,arguments)}function _6(){return _7.apply(this,arguments)}function _7(){return(_7=(0,f._)(function(){var e,_,t,r,a,n,o,s,l,i;return(0,x.__generator)(this,function(u){switch(u.label){case 0:_U(!0),_=[{disabled:ea("easy"),icon:$["icon:starting_perks"],text:A("main_menu.starting_perks"),help:A("main_menu.starting_perks_help"),value:function(){return(0,f._)(function(){return(0,x.__generator)(this,function(e){switch(e.label){case 0:return[4,_T()];case 1:return e.sent(),[2]}})})()}}],t=[{text:"English",value:"en",icon:$.UK},{text:"Français",value:"fr",icon:$.France}],_.push({icon:null===(e=t.find(function(e){return e.value===F()}))||void 0===e?void 0:e.icon,text:A("main_menu.language"),help:A("main_menu.language_help"),value:function(){return(0,f._)(function(){var e,_;return(0,x.__generator)(this,function(r){switch(r.label){case 0:return[4,_r({title:A("main_menu.language"),content:[A("main_menu.language_help")].concat(w(t)),allowClose:!0})];case 1:if(!(_=(e=r.sent())&&e!==F()))return[3,3];return[4,t_(to)];case 2:_=r.sent(),r.label=3;case 3:return _&&(O("lang",e),window.location.reload()),[2]}})})()}}),r=!0,a=!1,n=void 0;try{for(o=function(){var e=l.value;er[e]&&_.push({icon:ea(e)?$["icon:checkmark_checked"]:$["icon:checkmark_unchecked"],text:er[e].name,help:er[e].help,value:function(){en(e),_J(),_8(),_6()}})},s=Object.keys(er)[Symbol.iterator]();!(r=(l=s.next()).done);r=!0)o()}catch(e){a=!0,n=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw n}}return _.push({icon:$["icon:download"],text:A("main_menu.download_save_file"),help:A("main_menu.download_save_file_help"),value:function(){return(0,f._)(function(){var e,_;return(0,x.__generator)(this,function(t){return e=_E(),(_=document.createElement("a")).setAttribute("href","data:application/json;base64,"+btoa(JSON.stringify({fileType:"B71-save-file",appVersion:K,signedPayload:e,key:X("Security by obscurity, but really the game is oss so eh"+e)}))),_.setAttribute("download","b71-save-"+new Date().toISOString().slice(0,19).replace(/[^0-9]+/gi,"-")+".b71"),document.body.appendChild(_),_.click(),setTimeout(function(){return document.body.removeChild(_)},1e3),[2]})})()}}),_.push({icon:$["icon:upload"],text:A("main_menu.load_save_file"),help:A("main_menu.load_save_file_help"),value:function(){return(0,f._)(function(){var e,_;return(0,x.__generator)(this,function(t){if(!document.getElementById("save_file_picker")){var r;(_=document.createElement("input")).setAttribute("type","file"),_.setAttribute("id","save_file_picker"),_.setAttribute("accept",".b71,.json"),_.style.position="absolute",_.style.left="-1000px",_.addEventListener("change",(r=(0,f._)(function(e){var t,r,a,n,o,s,l,i,u;return(0,x.__generator)(this,function(e){switch(e.label){case 0:if(e.trys.push([0,4,,6]),!(r=_&&(null===(t=_.files)||void 0===t?void 0:t.item(0))))return[3,3];return[4,new Promise(function(e,_){var t=new FileReader;t.onload=function(){var _;e((null===(_=t.result)||void 0===_?void 0:_.toString())||"")},t.onerror=function(){_(t.error)},t.readAsText(r)})];case 1:if(n=(a=JSON.parse(e.sent())).fileType,o=a.appVersion,s=a.signedPayload,l=a.key,"B71-save-file"!==n)throw Error("Not a B71 save file");if(o>K)throw Error("Please update your app first, this file is for version "+o+" or newer.");if(l!==X("Security by obscurity, but really the game is oss so eh"+s))throw Error("Key does not match content.");for(var c in i=JSON.parse(s),localStorage.clear(),i)localStorage.setItem(c,i[c]);return[4,_r({title:A("main_menu.save_file_loaded"),content:[A("main_menu.save_file_loaded_help"),{text:A("main_menu.save_file_loaded_ok")}]})];case 2:e.sent(),window.location.reload(),e.label=3;case 3:return[3,6];case 4:return u=e.sent(),[4,_r({title:A("main_menu.save_file_error"),content:[u.message,{text:A("main_menu.save_file_loaded_ok")}]})];case 5:return e.sent(),[3,6];case 6:return _.value="",[2]}})}),function(e){return r.apply(this,arguments)})),document.body.appendChild(_)}return null===(e=document.getElementById("save_file_picker"))||void 0===e||e.click(),[2]})})()}}),_.push({icon:$["icon:coins"],text:A("main_menu.max_coins",{max:B()}),help:A("main_menu.max_coins_help"),value:function(){return(0,f._)(function(){return(0,x.__generator)(this,function(e){switch(e.label){case 0:return O("max_coins",(R("max_coins",1)+1)%6),[4,_6()];case 1:return e.sent(),[2]}})})()}}),_.push({icon:$["icon:particles"],text:A("main_menu.max_particles",{max:T()}),help:A("main_menu.max_particles_help"),value:function(){return(0,f._)(function(){return(0,x.__generator)(this,function(e){switch(e.label){case 0:return O("max_particles",(R("max_particles",1)+1)%6),[4,_6()];case 1:return e.sent(),[2]}})})()}}),_.push({icon:$["icon:reset"],text:A("main_menu.reset"),help:A("main_menu.reset_help"),value:function(){return(0,f._)(function(){return(0,x.__generator)(this,function(e){switch(e.label){case 0:return[4,_r({title:A("main_menu.reset"),content:[A("main_menu.reset_instruction"),{text:A("main_menu.reset_confirm"),value:!0},{text:A("main_menu.reset_cancel"),value:!1}],allowClose:!0})];case 1:return e.sent()&&(localStorage.clear(),window.location.reload()),[2]}})})()}}),[4,_r({title:A("main_menu.settings_title"),content:[A("main_menu.settings_help")].concat(w(_)),allowClose:!0,className:"settings"})];case 1:return(i=u.sent())&&(i(),to.needsRender=!0),[2]}})})).apply(this,arguments)}function _8(){return _9.apply(this,arguments)}function _9(){return(_9=(0,f._)(function(){var e;return(0,x.__generator)(this,function(_){switch(_.label){case 0:if(_.trys.push([0,10,,11]),!(document.fullscreenEnabled||document.webkitFullscreenEnabled))return[2,!1];if(!(null!==document.fullscreenElement&&!ea("fullscreen")))return[3,5];if(!document.exitFullscreen)return[3,2];return[4,document.exitFullscreen()];case 1:case 3:case 6:case 8:return _.sent(),[2,!0];case 2:if(!document.webkitCancelFullScreen)return[3,4];return[4,document.webkitCancelFullScreen()];case 4:return[3,9];case 5:if(!(ea("fullscreen")&&!document.fullscreenElement))return[3,9];if(!(e=document.documentElement).requestFullscreen)return[3,7];return[4,e.requestFullscreen()];case 7:if(!e.webkitRequestFullscreen)return[3,9];return[4,e.webkitRequestFullscreen()];case 9:return[3,11];case 10:return console.warn(_.sent()),[3,11];case 11:return[2,!1]}})})).apply(this,arguments)}function te(){return(te=(0,f._)(function(){var e,_,t,r,a;return(0,x.__generator)(this,function(n){switch(n.label){case 0:return e=L(),_=ea("mobile-mode")?"help":"tooltip",t=et.sort(function(e,_){return e.threshold-_.threshold}).map(function(t){var r=t.name,a=t.id,n=t.threshold,o=t.icon,s=t.help;return y({text:r,disabled:e<n,value:{perks:y({},a,1)},icon:o},_,e<n?A("unlocks.minTotalScore",{score:n}):s(1))}),r=e_.map(function(e,t){var r=eB(t,_l,!0),a=(null==r?void 0:r.reached)?'<span class="progress-inline"><span style="transform: scale('.concat(Math.floor(r.reached/r.minScore*100)/100,',1)"></span></span>'):"";return y({text:e.name+a,disabled:!!r,value:{level:e.name},icon:$[e.name]},_,(null==r?void 0:r.text)||eg(e))}),[4,_r({title:A("unlocks.title_upgrades",{unlocked:t.filter(function(e){return!e.disabled}).length,out_of:t.length}),content:["<p>".concat(A("unlocks.intro",{ts:e}),"\n ").concat(t.find(function(e){return e.disabled})?A("unlocks.greyed_out_help"):"","</p> ")].concat(w(t),[A("unlocks.level",{unlocked:r.filter(function(e){return!e.disabled}).length,out_of:r.length})],w(r)),allowClose:!0,className:ea("mobile-mode")?"":"actionsAsGrid"})];case 1:if(!(a=n.sent()))return[3,3];return[4,t_(to)];case 2:n.sent()&&ts(k({},a)),n.label=3;case 3:return[2]}})})).apply(this,arguments)}function t_(e){return tt.apply(this,arguments)}function tt(){return(tt=(0,f._)(function(e){return(0,x.__generator)(this,function(_){return!e.currentLevel||e8?[2,!0]:(_U(!0),[2,_r({title:A("confirmRestart.title"),content:[A("confirmRestart.text"),{value:!0,text:A("confirmRestart.yes")},{value:!1,text:A("confirmRestart.no")}]})])})})).apply(this,arguments)}var tr={ArrowLeft:0,ArrowRight:0,Shift:0};function ta(e,_){tr[e]=_,to.keyboardPuckSpeed=(tr.ArrowRight-tr.ArrowLeft)*(1+2*tr.Shift)*to.gameZoneWidth/50}document.addEventListener("keydown",(t=(0,f._)(function(e){return(0,x.__generator)(this,function(_){return"f"!==e.key.toLowerCase()||e.ctrlKey||e.metaKey?e.key in tr&&ta(e.key,1):(en("fullscreen"),_8())," "!==e.key||e8||(to.running?_U(!0):_X(),e.preventDefault()),[2]})}),function(e){return t.apply(this,arguments)}));var tn=new Date;document.addEventListener("keyup",(r=(0,f._)(function(e){var _,t,r,a,n;return(0,x.__generator)(this,function(o){switch(o.label){case 0:if(n=document.querySelector("button:focus"),!(e.key in tr))return[3,1];return ta(e.key,0),[3,10];case 1:if("ArrowDown"!==e.key||(null==n?void 0:null===(_=n.nextElementSibling)||void 0===_?void 0:_.tagName)!=="BUTTON")return[3,2];return null==n||null===(t=n.nextElementSibling)||void 0===t||t.focus(),[3,10];case 2:if("ArrowUp"!==e.key||(null==n?void 0:null===(r=n.previousElementSibling)||void 0===r?void 0:r.tagName)!=="BUTTON")return[3,3];return null==n||null===(a=n.previousElementSibling)||void 0===a||a.focus(),[3,10];case 3:if(!("Escape"===e.key&&e9))return[3,4];return e9(),[3,10];case 4:if(!("Escape"===e.key&&to.running))return[3,5];return _U(!0),[3,10];case 5:if(!("m"===e.key.toLowerCase()&&!e8))return[3,6];return _3().then(),[3,10];case 6:if(!("s"===e.key.toLowerCase()&&!e8))return[3,7];return _I().then(),[3,10];case 7:if(!("r"===e.key.toLowerCase()&&!e8&&tn<Date.now()-500))return[3,9];return[4,t_(to)];case 8:return o.sent()&&ts({levelToAvoid:eS(to).name}),[3,10];case 9:return[2];case 10:return e.preventDefault(),[2]}})}),function(e){return r.apply(this,arguments)}));var to=_F({});function ts(e){_J(),Object.assign(to,_F(e)),e6(),_k(to,0)}ts({}),function e(){var _=performance.now(),t=_-to.lastTick;to.lastTick=_;var r=Math.min(4,t/(1e3/60));to.keyboardPuckSpeed&&_i(to,to.puckPosition+to.keyboardPuckSpeed),_c(to),to.running&&(to.levelTime+=t,to.runStatistics.runTime+=t,function(e){var _=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;e.runStatistics.max_combo=Math.max(e.runStatistics.max_combo,e.combo),e.perks.addiction&&e.lastBrickBroken&&e.lastBrickBroken<e.levelTime-5e3/e.perks.addiction&&_d(e,e.puckPosition,e.gameZoneHeight-2*e.puckHeight),e.balls=e.balls.filter(function(e){return!e.destroyed});var t=e.bricks.filter(function(e){return e&&"black"!==e}).length;!t&&e.lastBrickBroken&&(e.lastBrickBroken=0),e.levelTime>e.lastTickDown+1e3&&e.perks.hot_start&&(e.lastTickDown=e.levelTime,_g(e,e.perks.hot_start,e.puckPosition,e.gameZoneHeight-2*e.puckHeight)),t<=e.perks.skip_last&&!e.autoCleanUses&&(e.bricks.forEach(function(_,t){_&&_v(e,t,e.balls[0],!0)}),e.autoCleanUses++);var r=_R(e.respawns);if(!e.running||t||r?e.winAt=0:e.winAt||(e.winAt=e.levelTime+5e3),e.running&&e.winAt&&e.levelTime>e.winAt||e.levelTime&&!t&&!_R(e.coins))e.currentLevel+1<eW(e)?_k(e,e.currentLevel+1):_o(A("gameOver.win.title"),A("gameOver.win.summary",{score:e.score}));else if(e.running||e.levelTime){var a=Math.round(e.coinSize/2);if(_L(e.coins,function(t,r){if(e.perks.coin_magnet){var n,o=100/(100+Math.pow(t.y-e.gameZoneHeight,2)+Math.pow(t.x-e.puckPosition,2))*e.perks.coin_magnet,s=_*(e.puckPosition-t.x)*o;t.vx+=s,t.vy+=_*(e.gameZoneHeight-t.y)*o/2,t.sa-=s/10}e.perks.ball_attracts_coins&&e.balls.forEach(function(_){var r=eH(_,t);t.vx+=(_.x-t.x)/r*50*e.perks.ball_attracts_coins,t.vy+=(_.y-t.y)/r*50*e.perks.ball_attracts_coins});var l=1-(.03*e.perks.viscosity+.002)*_/(1+e.perks.etherealcoins);if(t.vy*=l,t.vx*=l,t.vx>7*e.baseSpeed&&(t.vx=7*e.baseSpeed),t.vx<-7*e.baseSpeed&&(t.vx=-7*e.baseSpeed),t.vy>7*e.baseSpeed&&(t.vy=7*e.baseSpeed),t.vy<-7*e.baseSpeed&&(t.vy=-7*e.baseSpeed),t.a+=t.sa,!e.perks.etherealcoins){var i=e.perks.helium>0&&2*Math.abs(t.x-e.puckPosition)>e.puckWidth+t.size;t.vy+=_*t.weight*.8*(i?-e.perks.helium:1),i&&!ea("basic")&&.1>Math.random()&&_G(e,t.x,t.y,0,e.baseSpeed,e.perks.metamorphosis||ea("colorful_coins")?t.color:"#ffd300",!0,5,250)}var u=(Math.abs(t.vx)+Math.abs(t.vy))*10,c=_q(e,t,t.size/2,_);t.y>e.gameZoneHeight-a-e.puckHeight&&t.y<e.gameZoneHeight+e.puckHeight+t.vy&&Math.abs(t.x-e.puckPosition)<a+e.puckWidth/2+e.puckHeight*(t.points?1:-1)?(e.score+=t.points,e.lastScoreIncrease=e.levelTime,n=t.points,e.creative||O("breakout_71_total_score",L()+n),e.score>e.highScore&&!e.creative&&(e.highScore=e.score,localStorage.setItem("breakout-3-hs-short",e.score.toString())),ea("basic")||_G(e,t.previousX,t.previousY,(e.canvasWidth-t.x)/100,-t.y/100,e.perks.metamorphosis||ea("colorful_coins")?t.color:"#ffd300",!0,e.coinSize/2,100+50*Math.random()),_y(e,"coinCatch",t.x,1),e.runStatistics.score+=t.points,e.perks.asceticism&&_g(e,3*e.perks.asceticism*t.points,t.x,t.y),_P(e.coins,r)):t.y>e.canvasHeight+10*a?(e.levelLostCoins+=t.points,_P(e.coins,r),e.perks.compound_interest&&_d(e,t.x,e.gameZoneHeight-20),e.combo<30*e.perks.fountain_toss&&Math.random()<1/e.combo*e.perks.fountain_toss&&_m(e,1,t.x,e.gameZoneHeight-20)):e.perks.unbounded&&(t.x<-e.gameZoneWidth/2||t.x>e.canvasWidth+e.gameZoneWidth/2||t.y<-e.gameZoneWidth)&&(e.levelLostCoins+=t.points,_P(e.coins,r));var p=function(e,_){var t,r,a=_.size/2,n=_.x,o=_.y,s=_.previousX,l=_.previousY,i=_0(s,o,a),u=_0(n,l,a),c=void 0===i&&void 0===u&&_0(n,o,a)||void 0;if(e.perks.ghost_coins)void 0!==(null!==(t=null!=i?i:u)&&void 0!==t?t:c)&&(_.vy*=1-.2/e.perks.ghost_coins,_.vx*=1-.2/e.perks.ghost_coins);else{if(void 0!==i||void 0!==c){_.y=_.previousY,_.vy*=-1;var p=e.bricks[_K(n-a,o+a)],d=e.bricks[_K(n+a,o+a)];p&&!d&&(_.vx+=1,_.sa-=1),!p&&d&&(_.vx-=1,_.sa+=1)}(void 0!==u||void 0!==c)&&(_.x=_.previousX,_.vx*=-1)}return null!==(r=null!=i?i:u)&&void 0!==r?r:c}(e,t);e.perks.metamorphosis&&void 0!==p&&e.bricks[p]&&t.color!==e.bricks[p]&&"black"!==e.bricks[p]&&t.metamorphosisPoints&&(e.bricks[p]=t.color,t.metamorphosisPoints--,_y(e,"colorChange",t.x,.3)),!e.perks.ghost_coins&&void 0!==p||c?(t.vx*=.8,t.vy*=.8,t.sa*=.9,u>20&&!t.collidedLastFrame&&_y(e,"coinBounce",t.x,.2),t.collidedLastFrame=!0,3>Math.abs(t.vy)&&(t.vy=0)):t.collidedLastFrame=!1}),e.balls.forEach(function(t){return function(e,_,t){_.previousVX=_.vx,_.previousVY=_.vy;var r,a=1+e.perks.telekinesis+e.perks.ball_repulse_ball+e.perks.puck_repulse_ball+e.perks.ball_attract_ball;eG(e,_)>0&&(a+=3,_.vx+=(e.puckPosition-_.x)/1e3*t*e.perks.telekinesis*eG(e,_)),eM(e,_)>0&&(a+=3,_.vx+=(e.puckPosition-_.x)/1e3*t*e.perks.yoyo*eM(e,_)),_.vx*_.vx+_.vy*_.vy<e.baseSpeed*e.baseSpeed*2?(_.vx*=1+.02/a,_.vy*=1+.02/a):(_.vx*=1-.02/a,_.vy*=1-.02/a),Math.abs(_.vy)<.2*e.baseSpeed&&(_.vy+=(_.vy>0?1:-1)*.02/a);var n=!0,o=!1,s=void 0;if(e.perks.ball_repulse_ball)try{for(var l,i=e.balls[Symbol.iterator]();!(n=(l=i.next()).done);n=!0){var u=l.value;u.x>=_.x||_z(e,_,u,e.perks.ball_repulse_ball,!0)}}catch(e){o=!0,s=e}finally{try{n||null==i.return||i.return()}finally{if(o)throw s}}var c=!0,p=!1,d=void 0;if(e.perks.ball_attract_ball)try{for(var m,g=e.balls[Symbol.iterator]();!(c=(m=g.next()).done);c=!0){var b=m.value;b.x>=_.x||function(e,_,t,r){var a=eP(_,t),n=3*e.gameZoneWidth/4;if(!(a<n)){var o=(_.x-t.x)/a,s=(_.y-t.y)/a,l=r*(a-n)/n*Math.min(500,e.levelTime)/500;t.vx+=o*l,t.vy+=s*l,_.vx-=o*l,_.vy-=s*l,_G(e,_.x,_.y,10*o+_.vx+(Math.random()-.5)*2,10*s+_.vy+(Math.random()-.5)*2,_S(),!0,e.coinSize/2,100),_G(e,t.x,t.y,-(10*o)+t.vx+(Math.random()-.5)*2,-(10*s)+t.vy+(Math.random()-.5)*2,_S(),!0,e.coinSize/2,100)}}(e,_,b,e.perks.ball_attract_ball)}}catch(e){p=!0,d=e}finally{try{c||null==g.return||g.return()}finally{if(p)throw d}}e.perks.puck_repulse_ball&&Math.abs(_.x-e.puckPosition)<e.puckWidth/2+e.ballSize*(9+e.perks.puck_repulse_ball)/10&&_z(e,_,{x:e.puckPosition,y:e.gameZoneHeight},e.perks.puck_repulse_ball+1,!1);var h=_q(e,_,e.ballSize/2,t);h&&(e.perks.left_is_lava&&h%2&&_.x<e.offsetX+e.gameZoneWidth/2&&_d(e,_.x,_.y),e.perks.right_is_lava&&h%2&&_.x>e.offsetX+e.gameZoneWidth/2&&_d(e,_.x,_.y),e.perks.top_is_lava&&h>=2&&_d(e,_.x,_.y+3*e.ballSize),e.perks.trampoline&&_g(e,e.perks.trampoline,_.x,_.y+e.ballSize),_y(e,"wallBeep",_.x,1),e.levelWallBounces++,e.runStatistics.wall_bounces++);var v=e.gameZoneHeight-e.puckHeight-e.ballSize/2,f=Math.abs(_.x-e.puckPosition)<e.ballSize/2+e.puckWidth/2;if(_.y>v&&_.vy>0&&(f||e.perks.extra_life&&_.y>v+e.puckHeight/2)){if(f){var y=Math.sqrt(_.vx*_.vx+_.vy*_.vy),k=Math.atan2(-e.puckWidth/2,(_.x-e.puckPosition)*(e.perks.concave_puck?-1/(1+e.perks.concave_puck):1));_.vx=y*Math.cos(k),_.vy=y*Math.sin(k),_y(e,"wallBeep",_.x,1)}else _.vy*=-1,function(e,_,t,r){if(e.perks.extra_life-=1,e.perks.extra_life<0?e.perks.extra_life=0:e.perks.sacrifice&&(e.combo*=e.perks.sacrifice,e.bricks.forEach(function(t,r){return t&&_v(e,r,_,!0)})),_y(e,"lifeLost",_.x,1),!ea("basic"))for(var a=0;a<10;a++)_G(e,t,r,Math.random()*e.baseSpeed*3,3*e.baseSpeed,"#FF0000",!1,e.coinSize/2,150)}(e,_,_.x,_.y);if(e.perks.streak_shots&&_d(e,_.x,_.y),e.perks.trampoline&&_m(e,e.perks.trampoline,_.x,_.y),e.perks.nbricks&&_.hitSinceBounce<e.perks.nbricks&&_d(e,_.x,_.y),!_.hitSinceBounce&&e.bricks.find(function(e){return e})){if(e.runStatistics.misses++,e.perks.forgiving){var W=Math.floor(e.levelMisses/10/e.perks.forgiving*(e.combo-_p(e)));_g(e,W,_.x,_.y-e.ballSize)}else _d(e,_.x,_.y);e.levelMisses++,_M(e,e.puckPosition,e.gameZoneHeight-2*e.puckHeight,"#FF0000",A("play.missed_ball"),e.puckHeight,500)}e.runStatistics.puck_bounces++,_.hitSinceBounce=0,_.brokenSinceBounce=0,_.sapperUses=0,_.piercePoints=3*e.perks.pierce}var w=e.perks.unbounded&&_.x<-e.gameZoneWidth/2||_.x>e.canvasWidth+e.gameZoneWidth/2,x=e.perks.unbounded>1&&_.y<-e.gameZoneWidth/2;e.running&&(_.y>e.gameZoneHeight+e.ballSize/2||w||x)&&(_.destroyed=!0,e.runStatistics.balls_lost++,e.balls.find(function(e){return!e.destroyed})||_o(A("gameOver.lost.title"),A("gameOver.lost.summary",{score:e.score})));var S=e.ballSize/2,z=_.x,q=_.y,G=_.previousX,M=_.previousY,H=_0(G,q,S),P=_0(z,M,S),R=void 0===H&&void 0===P&&_0(z,q,S)||void 0,O=null!==(r=null!=H?H:P)&&void 0!==r?r:R;if(void 0!==O){var L=e.bricks[O];_.hitSinceBounce++,e.perks.nbricks&&(_.hitSinceBounce>e.perks.nbricks?_d(e,_.x,_.y):_m(e,e.perks.nbricks,_.x,_.y));var B=!1,T=1+(e.perks.pierce_color&&(void 0===H||e.bricks[H]===e.ballsColor)&&(void 0===P||e.bricks[P]===e.ballsColor)&&(void 0===R||e.bricks[R]===e.ballsColor)?e.perks.pierce_color:0);e.brickHP[O]-=T;var C=Math.min(_.piercePoints,Math.max(1,e.brickHP[O]+1));e.brickHP[O]-=C,_.piercePoints-=C,e.brickHP[O]<0&&(e.brickHP[O]=0,B=!0),void 0===H&&void 0===R||B||(_.y=_.previousY,_.vy*=-1),void 0===P&&void 0===R||B||(_.x=_.previousX,_.vx*=-1),e.brickHP[O]?(_y(e,"wallBeep",z,1),function(e,_,t,r){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:8,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:150;_H(e.lights,function(o){o.time=e.levelTime,o.x=_,o.y=t,o.color=r,o.size=a,o.duration=n})}(e,ev(e,O),ef(e,O),"#FFFFFF",e.brickWidth+2,50*e.brickHP[O])):(_.brokenSinceBounce++,_v(e,O,_,!1),_.sapperUses<e.perks.sapper&&"black"!==L&&!e.bricks[O]&&(_w(e,O,"black"),_.sapperUses++))}if(!ea("basic")){var F=_.piercePoints,E=_.sapperUses<e.perks.sapper,j=ea("red_miss")&&_.vy>0&&!_.hitSinceBounce,D=e.combo-1;if(j||D&&Math.random()>.1/(1+D)||E&&Math.random()>.1/(1+E)||D&&Math.random()>.1/(1+D)){var V=E&&(Math.random()>.5?"#ffb92a":"#FF0000")||j&&"#FF0000"||e.ballsColor;_G(e,_.x,_.y,e.perks.pierce_color||F?-_.vx+(Math.random()-.5)*e.baseSpeed/3:(Math.random()-.5)*e.baseSpeed,e.perks.pierce_color||F?-_.vy+(Math.random()-.5)*e.baseSpeed/3:(Math.random()-.5)*e.baseSpeed,V,!0,e.coinSize/2,100)}}}(e,t,_)}),e.perks.shocks&&e.balls.forEach(function(_,t){return e.balls.forEach(function(r,a){if(t<a&&!_.destroyed&&!r.destroyed&&eH(_,r)<e.ballSize*e.ballSize){var n=_.vx,o=_.vy;_.vx=r.vx,_.vy=r.vy,r.vx=n,r.vy=o;var s=(_.x+r.x)/2,l=(_.y+r.y)/2,i=e.baseSpeed;_.vx+=E(_.x-s,-i,i)+(Math.random()-.5)*i/3,_.vy+=E(_.y-l,-i,i)+(Math.random()-.5)*i/3,r.vx+=E(r.x-s,-i,i)+(Math.random()-.5)*i/3,r.vy+=E(r.y-l,-i,i)+(Math.random()-.5)*i/3,_h(e,_K(s,l),s,l,_,Math.max(0,e.perks.shocks-1))}})}),e.perks.wind)for(var n=(e.puckPosition-(e.offsetX+e.gameZoneWidth/2))/e.gameZoneWidth*2*e.perks.wind,o=0;o<e.perks.wind;o++)Math.random()*Math.abs(n)>.5&&_G(e,e.offsetXRoundedDown+Math.random()*e.gameZoneWidthRoundedUp,Math.random()*e.gameZoneHeight,8*n,0,_S(),!0,e.coinSize/2,150);_L(e.particles,function(t,r){t.x+=t.vx*_,t.y+=t.vy*_,!t.ethereal&&(t.vy+=.5,_$(_K(t.x,t.y))&&_P(e.particles,r))})}if(e.combo>_p(e)&&!ea("basic")&&(e.combo-_p(e))*Math.random()>5){if(e.perks.top_is_lava&&_G(e,e.offsetXRoundedDown+Math.random()*e.gameZoneWidthRoundedUp,0,(Math.random()-.5)*10,5,"#FF0000",!0,e.coinSize/2,100*(Math.random()+1)),e.perks.left_is_lava&&_G(e,e.offsetXRoundedDown,Math.random()*e.gameZoneHeight,5,(Math.random()-.5)*10,"#FF0000",!0,e.coinSize/2,100*(Math.random()+1)),e.perks.right_is_lava&&_G(e,e.offsetXRoundedDown+e.gameZoneWidthRoundedUp,Math.random()*e.gameZoneHeight,-5,(Math.random()-.5)*10,"#FF0000",!0,e.coinSize/2,100*(Math.random()+1)),e.perks.compound_interest){var s=e.puckPosition,l=0;do s=e.offsetXRoundedDown+e.gameZoneWidthRoundedUp*Math.random(),l++;while(Math.abs(s-e.puckPosition)<e.puckWidth/2&&l<10)_G(e,s,e.gameZoneHeight,(Math.random()-.5)*10,-5,"#FF0000",!0,e.coinSize/2,100*(Math.random()+1))}if(e.perks.streak_shots){var i=.5-Math.random();_G(e,e.puckPosition+e.puckWidth*i,e.gameZoneHeight-e.puckHeight,10*i,-5,"#FF0000",!0,e.coinSize/2,100*(Math.random()+1))}}_L(e.respawns,function(_,t){if(e.bricks[_.index])_P(e.respawns,t);else if(e.levelTime>_.time)_w(e,_.index,_.color),_P(e.respawns,t);else{var r=_.index,a=_.color,n=Math.random()>.5,o=Math.random()>.5?1:-1,s=Math.random()>.5?1:-1;_G(e,ev(e,r)+o*e.brickWidth/2,ef(e,r)+s*e.brickWidth/2,n?0:-o*e.baseSpeed,n?-s*e.baseSpeed:0,a,!0,e.coinSize/2,250)}}),_L(e.particles,function(_,t){e.levelTime>_.time+_.duration&&_P(e.particles,t)}),_L(e.texts,function(_,t){e.levelTime>_.time+_.duration&&_P(e.texts,t)}),_L(e.lights,function(_,t){e.levelTime>_.time+_.duration&&_P(e.lights,t)})}(to,r)),(to.running||to.needsRender)&&(to.needsRender=!1,function(e){var _=eS(e),t=e.combo>_p(e),r=eF.width,a=eF.height;if(r&&a){e.currentLevel||e.levelTime?e1.innerText=A("play.current_lvl",{level:e.currentLevel+1,max:eW(e)}):e1.innerText=A("play.menu_label");var n=e.levelSpawnedCoins?(e.levelSpawnedCoins-e.levelLostCoins)/e.levelSpawnedCoins:1;if(e0.innerHTML=(ea("show_fps")?' \n <span class="'.concat(2>Math.abs(_2-60)&&" "||10>Math.abs(_2-60)&&"good"||"bad",'">\n ').concat(_2," FPS\n </span><span> / </span>\n \n "):"")+(ea("show_stats")?' \n <span class="'.concat(n>.95&&"great"||n>.9&&"good"||"",'" data-tooltip="').concat(A("play.stats.coins_catch_rate"),'">\n ').concat(Math.floor(100*n),'%\n </span><span> / </span>\n <span class="').concat(e.levelTime<3e4&&"great"||e.levelTime<6e4&&"good"||"",'" data-tooltip="').concat(A("play.stats.levelTime"),'">\n ').concat(Math.ceil(e.levelTime/1e3),'s \n </span><span> / </span>\n <span class="').concat(e.levelWallBounces<3&&"great"||e.levelWallBounces<10&&"good"||"",'" data-tooltip="').concat(A("play.stats.levelWallBounces"),'">\n ').concat(e.levelWallBounces,' B \n </span><span> / </span> \n <span class="').concat(e.levelMisses<3&&"great"||e.levelMisses<6&&"good"||"",'" data-tooltip="').concat(A("play.stats.levelMisses"),'">\n ').concat(e.levelMisses," M\n </span><span> / </span>\n "):"")+'<span class="score" data-tooltip="'.concat(A("play.score_tooltip"),'">$').concat(e.score,"</span>"),e0.className=e.lastScoreIncrease>e.levelTime-500?"active":"",!ea("basic")&&_.svg&&"#000000"===_.color){eI.globalCompositeOperation="source-over",eI.globalAlpha=.99,eI.fillStyle=_.color,eI.fillRect(0,0,r/16,a/16);var o=ea("extra_bright")?3:1;if(eI.globalCompositeOperation="lighten",eI.globalAlpha=.1,_L(e.coins,function(_){eQ(eI,e5(e,_),2*e.coinSize*o/16,_.x/16,_.y/16)}),eI.globalAlpha=.3,e.balls.forEach(function(_){eQ(eI,e.ballsColor,2*e.ballSize*o/16,_.x/16,_.y/16)}),eI.globalAlpha=.05,e.bricks.forEach(function(_,t){if(_){var r=ev(e,t),a=ef(e,t);eQ(eI,"black"==_?"#666666":_,Math.min(200,1.5*e.brickWidth*o)/16,r/16,a/16)}}),eI.globalCompositeOperation="screen",_L(e.particles,function(_){var t=_.x,r=_.y,a=_.time,n=_.color,s=_.size,l=_.duration;eI.globalAlpha=.1*Math.min(1,2-(e.levelTime-a)/l*2),eQ(eI,n,3*s*o/16,t/16,r/16)}),eA.globalAlpha=1,eA.globalCompositeOperation="source-over",eA.imageSmoothingEnabled=!0,eA.imageSmoothingQuality="high",eA.drawImage(eV,0,0,r,a),eA.imageSmoothingEnabled=!1,eA.globalAlpha=1,eA.globalCompositeOperation="multiply",_.svg&&ej.width&&ej.complete){if(eD.title!==_.name){eD.title=_.name,eD.width=e.canvasWidth,eD.height=e.canvasHeight;var s=eD.getContext("2d");if(s.globalCompositeOperation="source-over",s.fillStyle=_.color||"#000",s.fillRect(0,0,e.canvasWidth,e.canvasHeight),e.perks.clairvoyant>=3)for(var l=document.body.innerHTML.replace(/\s+/gi,""),i=Math.ceil(e.canvasWidth/15),u=Math.ceil(e.canvasHeight/20),c=Math.ceil(Math.random()*(l.length-i*u)),p=0;p<u;p++)s.fillStyle="#FFFFFF",s.font="20px Courier",s.fillText(l.slice(c+p*i,c+(p+1)*i),0,20*p,e.canvasWidth);else{var d=eA.createPattern(ej,"repeat");d&&(s.globalCompositeOperation="screen",s.fillStyle=d,s.fillRect(0,0,r,a))}}eA.globalCompositeOperation="darken",eA.drawImage(eD,0,0)}else eA.fillStyle="#000",eA.fillRect(0,0,r,a)}else eA.globalAlpha=1,eA.globalCompositeOperation="source-over",eA.fillStyle=_.color||"#000",eA.fillRect(0,0,r,a),_L(e.particles,function(_){var t=_.x,r=_.y,a=_.time,n=_.color,o=_.size,s=_.duration;eA.globalAlpha=Math.min(1,2-(e.levelTime-a)/s*2),eU(eA,n,o,t,r)});eA.globalAlpha=1,eA.globalCompositeOperation="source-over";var m=Date.now()-e.lastExplosion+5,g=m<200&&!ea("basic");if(g){var b=(e.perks.bigger_explosions+1)*50/m;eA.translate(Math.sin(Date.now())*b,Math.sin(Date.now()+36)*b)}if(eA.globalAlpha=1,_L(e.coins,function(_){var r=e5(e,_);eA.globalCompositeOperation="source-over",eJ(eA,r,_.size,_.x,_.y,t&&e.perks.asceticism&&"#FF0000"||"#ffd300"===r&&"#ffd300"||"#231f20"==r&&"#000000"==e.level.color&&"#FFFFFF"||e.level.color,_.a)}),ea("basic")||(eA.globalCompositeOperation="source-over",eA.globalAlpha=Math.min(.8,_R(e.coins)/20),e.balls.forEach(function(t){eU(eA,_.color||"#000",6*e.ballSize,t.x,t.y)})),eA.globalCompositeOperation="source-over",function(){eA.globalAlpha=1;var e=to.combo>_p(to),_=e&&to.perks.picky_eater&&ez(to),t=e&&eR(to),r=eq(to),a=to.perks.clairvoyant,n=e3(to);_||t||-1!==r||to.perks.zen||(n=0);var o=a&&to.brickHP.reduce(function(e,_){return e+_},0),s=to.gameZoneWidth+"_"+to.bricks.join("_")+eE.complete+"_"+r+"_"+_+"_"+t+"_"+to.ballsColor+"_"+to.perks.pierce_color+"_"+o+"_"+n;if(s!==eX){eX=s,eN.width=to.gameZoneWidth,eN.height=to.gameZoneWidth+1;var l=eN.getContext("2d");l.clearRect(0,0,to.gameZoneWidth,to.gameZoneWidth),l.resetTransform(),l.translate(-to.offsetX,0),to.bricks.forEach(function(o,s){var i=ev(to,s),u=ef(to,s);if(o){var c=r===Math.floor(s/to.level.size),p=to.ballsColor!==o&&"black"!==o&&_||e&&to.perks.zen&&"black"===o||c||t;l.globalCompositeOperation="source-over",eK(to,l,o,i,u,p?n:-1,a>=2),to.brickHP[s]>1&&a&&(l.globalCompositeOperation="source-over",e$(l,to.brickHP[s].toString(),a>=2?o:to.level.color,to.puckHeight,i,u)),"black"===o&&(l.globalCompositeOperation="source-over",function(e,_,t,r,a){var n="svg"+_+"_"+t+"_"+_.complete;if(!eY[n]){var o=document.createElement("canvas");o.width=t,o.height=t;var s=o.getContext("2d"),l=t/Math.max(_.width,_.height),i=_.width*l,u=_.height*l;s.drawImage(_,(t-i)/2,(t-u)/2,i,u),eY[n]=o}e.drawImage(eY[n],Math.round(r-t/2),Math.round(a-t/2))}(l,eE,to.brickWidth,i,u))}})}eA.drawImage(eN,to.offsetX,0)}(),eA.globalCompositeOperation="screen",_L(e.lights,function(_){var t=_.x,r=_.y,a=_.time,n=_.color,o=(_.size,_.duration);eA.globalAlpha=.5*Math.min(1,2-(e.levelTime-a)/o*2),eK(e,eA,n,t,r,-1,e.perks.clairvoyant>=2)}),eA.globalCompositeOperation="screen",_L(e.texts,function(_){var t=_.x,r=_.y,a=_.time,n=_.color,o=_.size,s=_.duration,l=e.levelTime-a;eA.globalAlpha=Math.max(0,Math.min(1,2-l/s*2)),eA.globalCompositeOperation="source-over",e$(eA,_.text,n,o,t,r-l/10)}),_L(e.particles,function(_){var t=_.x,r=_.y,a=_.time,n=_.color,o=_.size,s=_.duration;eA.globalAlpha=Math.max(0,Math.min(1,2-(e.levelTime-a)/s*2)),eA.globalCompositeOperation="screen",eU(eA,n,o,t,r)}),e.perks.extra_life){eA.globalAlpha=1,eA.globalCompositeOperation="source-over",eA.fillStyle=e.puckColor;for(var h=0;h<e.perks.extra_life;h++)eA.fillRect(e.perks.unbounded?0:e.offsetXRoundedDown,e.gameZoneHeight-e.puckHeight/2+2*h,e.perks.unbounded?e.canvasWidth:e.gameZoneWidthRoundedUp,1)}if(eA.globalAlpha=1,eA.globalCompositeOperation="source-over",e.balls.forEach(function(_){eU(eA,e.ballsColor,e.ballSize,_.x,_.y,e.puckColor),(eG(e,_)||eM(e,_))&&(eA.beginPath(),eA.moveTo(e.puckPosition,e.gameZoneHeight),eA.globalAlpha=Math.max(eG(e,_),eM(e,_)),eA.strokeStyle=e.puckColor,eA.bezierCurveTo(e.puckPosition,e.gameZoneHeight,e.puckPosition,_.y,_.x,_.y),eA.stroke(),eA.lineWidth=2,eA.setLineDash(e2)),eA.globalAlpha=1,e.perks.clairvoyant&&e.ballStickToPuck&&(eA.strokeStyle=e.ballsColor,eA.beginPath(),eA.moveTo(_.x,_.y),eA.lineTo(_.x+10*_.vx,_.y+10*_.vy),eA.stroke())}),eA.globalAlpha=1,eA.globalCompositeOperation="source-over",function(e,_,t,r){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,n=arguments.length>5?arguments[5]:void 0,o=arguments.length>6?arguments[6]:void 0,s="puck"+_+"_"+t+"_"+r+"_"+n+"_"+o;if(!eY[s]){var l=document.createElement("canvas");l.width=t,l.height=2*r;var i=l.getContext("2d");i.fillStyle=_,i.beginPath(),i.moveTo(0,2*r),n?(i.lineTo(0,.75*r),i.bezierCurveTo(t/2,r*(2+n)/3,t/2,r*(2+n)/3,t,.75*r)):(i.lineTo(0,1.25*r),i.bezierCurveTo(0,.75*r,t,.75*r,t,1.25*r)),i.lineTo(t,2*r),i.fill(),-1!==o&&(i.strokeStyle="#FF0000",i.lineWidth=4,i.setLineDash(e4),i.lineDashOffset=o,i.stroke()),eY[s]=l}e.drawImage(eY[s],Math.round(to.puckPosition-t/2),to.gameZoneHeight-2*r+a)}(eA,e.puckColor,e.puckWidth,e.puckHeight,0,e.perks.concave_puck,e.perks.streak_shots&&t?e3(e):-1),e.combo>1){eA.globalCompositeOperation="source-over";var v="x "+e.combo,f=v.length*e.puckHeight/1.8,y=f+2*e.coinSize,k=e.puckPosition-y/2;y<e.puckWidth?(eJ(eA,"#ffd300",e.coinSize,k+e.coinSize/2,e.gameZoneHeight-e.puckHeight/2,e.puckColor,0),e$(eA,v,"#000",e.puckHeight,k+1.5*e.coinSize,e.gameZoneHeight-e.puckHeight/2,!0)):e$(eA,f>e.puckWidth?e.combo.toString():v,"#000",f>e.puckWidth?12:20,e.puckPosition,e.gameZoneHeight-e.puckHeight/2,!1)}eA.globalCompositeOperation="source-over",eA.globalAlpha=e.perks.unbounded?.1:1;var W=t&&!e.perks.unbounded&&(e.perks.left_is_lava||e.perks.trampoline),w=t&&!e.perks.unbounded&&(e.perks.right_is_lava||e.perks.trampoline),x=t&&e.perks.unbounded<=2&&(e.perks.top_is_lava||e.perks.trampoline);e.offsetXRoundedDown?(eZ(eA,e,W&&"#FF0000"||"#FFFFFF",e.offsetX-1,0,e.offsetX-1,a,e.perks.unbounded?.1:1),eZ(eA,e,w&&"#FF0000"||"#FFFFFF",r-e.offsetX+1,0,r-e.offsetX+1,a,e.perks.unbounded?.1:1)):(eZ(eA,e,W&&"#FF0000"||"",0,0,0,a,1),eZ(eA,e,w&&"#FF0000"||"",r-1,0,r-1,a,1)),x&&eZ(eA,e,"#FF0000",e.perks.unbounded?0:e.offsetXRoundedDown,1,e.perks.unbounded?r:r-e.offsetXRoundedDown,1,1),eA.globalAlpha=1,eZ(eA,e,t&&e.perks.compound_interest&&"#FF0000"||ea("mobile-mode")&&"#FFFFFF"||"",e.offsetXRoundedDown,e.gameZoneHeight,r-e.offsetXRoundedDown,e.gameZoneHeight,1),!ea("basic")&&ea("contrast")&&_.svg&&"#000000"===_.color&&(eA.imageSmoothingEnabled=!0,eI.fillStyle="#FFFFFF",eI.globalAlpha=.25,eI.globalCompositeOperation="screen",eI.fillRect(0,0,eV.width,eV.height),eA.globalAlpha=1,eA.globalCompositeOperation="overlay",eA.drawImage(eV,0,0,r,a),eA.imageSmoothingEnabled=!1),eA.globalCompositeOperation="source-over",eA.globalAlpha=1,ea("mobile-mode")&&!e.running&&e$(eA,A("play.mobile_press_to_play"),e.puckColor,e.puckHeight,e.canvasWidth/2,e.gameZoneHeight+(e.canvasHeight-e.gameZoneHeight)/2),g&&eA.resetTransform()}}(to)),to.running&&function(e){if(ea("record")){var _;l&&(_=e,c&&(c.drawImage(eF,_.offsetXRoundedDown,0,_.gameZoneWidthRoundedUp,_.gameZoneHeight,0,0,u.width,u.height),c.fillStyle="#FFFFFF",c.textBaseline="top",c.font="12px monospace",c.textAlign="right",c.fillText(_.score.toString(),u.width-12,12),c.textAlign="left",c.fillText("Level "+(_.currentLevel+1)+"/"+eW(_),12,12)),(null==i?void 0:i.requestFrame)?null==i||i.requestFrame():(null==l?void 0:l.requestFrame)&&l.requestFrame())}}(to),ea("sound")&&function(e){if(!(eo>Date.now()-60))for(var _ in eo=Date.now(),e.aboutToPlaySound){var t,r=e.aboutToPlaySound[_];r.vol&&(es[_](Math.min(2,r.vol),(t=e,Math.max(0,Math.min(1,(r.x-t.offsetXRoundedDown)/t.gameZoneWidthRoundedUp))),e.combo),r.vol=0)}}(to),requestAnimationFrame(e),_1++}(),function(){var e=document.getElementById("tooltip");if(ea("mobile-mode")){e.style.display="none";return}function _(_){e.style.transform="translate(".concat(_.clientX,"px,").concat(_.clientY,"px) translate(").concat(_.clientX>window.innerWidth/2?"-100%":"0",",").concat(_.clientY>2*window.innerHeight/3?"-100%":"20px",")")}function t(){e.style.display="none",r=null}var r=null;document.body.addEventListener("mouseenter",function(a){for(var n,o=a.target;o&&!o.hasAttribute("data-tooltip");)o=o.parentElement;(null==o?void 0:null===(n=o.getAttribute("data-tooltip"))||void 0===n?void 0:n.trim())?(e.innerHTML=(r=o).getAttribute("data-tooltip")||"",e.style.display="",_(a)):t()},!0),setInterval(function(){r&&!document.body.contains(r)&&t()},200),document.body.addEventListener("mousemove",function(t){e.style.display||_(t)},!0),document.body.addEventListener("mouseleave",function(e){t()},!0)}(),null===(d=document.getElementById("menu"))||void 0===d||d.setAttribute("data-tooltip",A("play.menu_tooltip"))}();</script> </body></html> |