mirror of
https://gitlab.com/lecarore/breakout71.git
synced 2025-04-23 21:46:15 -04:00
1 line
No EOL
165 KiB
HTML
1 line
No EOL
165 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:absolute;top:0;left:0}#score,#menu{z-index:1;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font:inherit;color:#fff;text-shadow:0 0 4px rgba(0,0,0,.8);background:0 0;border:none;min-width:40px;min-height:40px;padding:10px;line-height:20px;position:absolute;top:0}#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{color:gold;-o-transition:color 10ms;-webkit-transition:color 10ms;-o-transition:color 10ms;transition:color 10ms}#menu{left:0}.popup{z-index:10;background:rgba(0,0,0,.9);display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex;position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.popup>div{-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:450px;margin:auto;padding:20px 10px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:flex}.popup>div>*{margin:0;padding:0}.popup>div>h2,.popup>div>p{margin-bottom:20px}.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;margin-top:20px;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);pointer-events:none}.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.actionsAsGrid>div{max-width:800px}.popup.actionsAsGrid>div section{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.popup button.close-modale{color:#fff;cursor:pointer;background:0 0;border:none;width:60px;height:60px;position:absolute;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}.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}@media (min-width:1200px){#level-recording-container{max-width:calc(50vw - 305px);position:absolute;top:40px;left:40px}}.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}</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> <script>!function(){function e(e){return e&&e.__esModule?e.default:e}var _,t,r,a,s,n,l,o,i,u,c="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},p={},d={},m=c.parcelRequire94c2;function h(e,_,t,r,a,s,n){try{var l=e[s](n),o=l.value}catch(e){t(e);return}l.done?_(o):Promise.resolve(o).then(r,a)}function g(e){return function(){var _=this,t=arguments;return new Promise(function(r,a){var s=e.apply(_,t);function n(e){h(s,r,a,n,l,"next",e)}function l(e){h(s,r,a,n,l,"throw",e)}n(void 0)})}}function b(e,_,t){return _ in e?Object.defineProperty(e,_,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[_]=t,e}function v(e,_){(null==_||_>e.length)&&(_=e.length);for(var t=0,r=Array(_);t<_;t++)r[t]=e[t];return r}function f(e){return function(e){if(Array.isArray(e))return v(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 v(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 v(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.")}()}function y(e,_){var t,r,a,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},n=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return n.next=l(0),n.throw=l(1),n.return=l(2),"function"==typeof Symbol&&(n[Symbol.iterator]=function(){return this}),n;function l(l){return function(o){return function(l){if(t)throw TypeError("Generator is already executing.");for(;n&&(n=0,l[0]&&(s=0)),s;)try{if(t=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return s.label++,{value:l[1],done:!1};case 5:s.label++,r=l[1],l=[0];continue;case 7:l=s.ops.pop(),s.trys.pop();continue;default:if(!(a=(a=s.trys).length>0&&a[a.length-1])&&(6===l[0]||2===l[0])){s=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]<a[3])){s.label=l[1];break}if(6===l[0]&&s.label<a[1]){s.label=a[1],a=l;break}if(a&&s.label<a[2]){s.label=a[2],s.ops.push(l);break}a[2]&&s.ops.pop(),s.trys.pop();continue}l=_.call(e,s)}catch(e){l=[6,e],r=0}finally{t=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,o])}}}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(_){b(e,_,t[_])})}return e}function W(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}null==m&&((m=function(e){if(e in p)return p[e].exports;if(e in d){var _=d[e];delete d[e];var t={id:e,exports:{}};return p[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,_){d[e]=_},c.parcelRequire94c2=m),(0,m.register)("kqXj6",function(e,_){Object.defineProperty(e.exports,"getBundleURL",{get:function(){return t},set:function(e){return t=e},enumerable:!0,configurable:!0});var t,r={};t=function(e){var _=r[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"/"}(),r[e]=_),_}}),"function"==typeof SuppressedError&&SuppressedError;var w={};w=JSON.parse('{"_":"","B":"black","W":"white","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 x={};x=JSON.parse('[{"name":"71 mini","size":5,"bricks":"bbb____bt__btt__b_t___ttt","svg":23,"color":""},{"name":"Butterfly","bricks":"_________bb_t_t_bbbbb_t_bbbbbbbtbbbb_bbbtbbb____btb____bbbtbbb__bb_t_bb__________","size":9,"svg":20,"color":""},{"name":"Castle","size":7,"bricks":"s_s_s_ssssssssssBBBssssBBBssttbbbttttbbbtttbtbtbt","svg":16},{"name":"Eyes","size":9,"bricks":"ttttttt__tWWWWWWW_tWrrWttW_tWWWWWWW_ttttttt_____t______ttttt____ttttt_____t_t","svg":null,"color":""},{"name":"Creeper","size":10,"bricks":"___________ccGGccGG__cGccGcGc__GBBccBBc__cBBGcBBc__GccBBGGc__ccBBBBcG__GGBBBBcG__cGBccBGc___________","svg":22},{"name":"Stairs","size":8,"bricks":"tt______tt______bbtt____bbtt____vvbbtt__vvbbtt__ppvvbbttppvvbbtt","svg":14},{"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":null},{"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":""},{"name":"Swiss","size":7,"bricks":"________RRRRR__RRWRR__RWWWR__RRWRR__RRRRR","svg":13,"color":""},{"name":"Germany","size":6,"bricks":"_______gggg__rrrr__yyyy","svg":null,"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":""},{"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":""},{"name":"Space mushroom","size":10,"bricks":"______________WW_______WWWW_____WWWWWW___WWBWWBWW__WWWWWWWW____W__W_____W_WW_W___W_W__W_W","svg":6,"color":""},{"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":""},{"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"},{"name":"Mushroom","size":16,"bricks":"_____________________rrrrWW________WWrrrrWWWW_____WWrrrrrrWWWW____WrrWWWWrrWWW___rrrWWWWWWrrrrr__rrrWWWWWWrrWWr__WrrWWWWWWrWWWW__WWrrWWWWrrWWWW__WWrrrrrrrrrWWr__WrrWWWWWWWWrrr_____WWBWWBWW_______WWWBWWBWWW______WWWWWWWWWW_______WWWWWWWW____________________","svg":null,"color":""},{"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":4,"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},{"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":"Cute dog","size":9,"bricks":"__________O_____O_OOOWWWOOOOOWWWWWOOOOeWWWWOO_eBeWWBW__eBeWWBW___eWBWW_____WRW____________","svg":null},{"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_tttttt_W______W______W_____WWWW","svg":null},{"name":"icon:base_combo","size":8,"bricks":"ttttttttttyyttttttyytyyttttttyyttyyttttttyytyyttttttyytttttttttt________","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":"rtrtrtrttrtrtrtrrtrtrtrt____________________t_____________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":"___t_____ttt___t___t__t___t_tttttttt_____tt_____t","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":""},{"name":"Orca","size":20,"bricks":"____________________________________________________________________________________________BBBBB____BBB_BBB___BBBBBBB____BBBBB___BBBBBBBBB____BBB___BBBBWBBWWW_____BBBBBBBBBBBWWWW_____BBBBBBBBBBWWWWW_____BBBBBBBBBWWWWW_______BBBBBBBWWWWW___________WWBBWWW______________BBB_BB______________BB__B______________________________________________________________________________________________________________________________","svg":null,"color":"#1c71d8"},{"name":"Shark","size":17,"bricks":"__________________________________________g_______________ggg____________ggggggg_________ggggggggg_______ggggggggggg_____gggggWWWggggg____gBgWWWWWWWgBg___ggWWWWrWrWWWWgg__ggWWWrrrrrWWWgg_ggWWWrrrrrrrWWWggggWWrrrrrrrrrWWgggWWWrWrWrWrWrWWWggWWrrWWWWWWWrrWWggWWWWWWWWWWWWWWWg_________________","svg":null,"color":"#3584e4"},{"name":"Bird","size":13,"bricks":"_______RRR____R____RSSSR___RR__RSSWWWR__RSR_RSWWBWR__RSSRRSWWWWyy_RSSSRSWWWR___RSSSSSSRR_____RRSSyyyy______RSyyyyy___RRRRSyyyy____RSSSRyyy_____RRRR______________________","svg":null,"color":""},{"name":"Tux","size":14,"bricks":"_____gggg________gggggggg_____gggggggggg____gggggggggg___gggggggggggg__gggWBggWBggg__gggBBggBBggg__ggggyyyygggg_ggggggyyggggggggggWWWWWWggggg_gWWWWWWWWg_g__WWWWWWWWWW____WWWWWWWWWW____yyy____yyy__","svg":null,"color":"#62a0ea"},{"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":"_WWWWGWBBBGGGGBGGWWGGGBWWBGBBW_WWWW_","svg":null},{"name":"icon:checkmark_unchecked","size":6,"bricks":"_WWWW_WBBBBWWBBBBWWBBBBWWBBBBW_WWWW_","svg":null},{"name":"icon:fullscreen","size":6,"bricks":"WW__WWW____W____________W____WWW__WW","svg":null},{"name":"icon:exit_fullscreen","size":6,"bricks":"_W__W_WW__WW____________WW__WW_W__W_","svg":null},{"name":"icon:concave_puck","size":8,"bricks":"___________W_______________W_______________W_____________WWWWW__","svg":null,"color":""}]');var S={};S=JSON.parse('"29036807"');var z={};z=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.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.next_unlock":"Marquez {{points}} points supplémentaires pour débloquer la prochaine amélioration ou le prochain niveau.","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.test_run":"Cette partie de test et son score ne sont pas enregistrés.","gameOver.unlocked_count":"Vous avez débloqué {{count}} objet(s) :","gameOver.win.summary":"Vous avez nettoyé tous les niveaux pour cette partie, en attrapant {{score}} pièces au total.","gameOver.win.title":"Partie terminée","level_up.after_buttons":"Vous venez de terminer le niveau {{level}}/{{max}} et vous avez choisi ces améliorations jusqu\'à présent :","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_choice":"(+1 choix)","level_up.plus_one_upgrade":"(+1 amélioration et +1 choix)","level_up.unlocked_level":" (Niveau)","level_up.unlocked_perk":" (Amélioration)","level_up.upgrade_perk_to_level":" niveau {{level}}","main_menu.basic":"Graphismes simplifiés","main_menu.basic_help":"Moins de particules et effets, meilleures performances.","main_menu.download_save_file":"Sauvegarder mes progrès","main_menu.download_save_file_help":"Obtenir un fichier de sauvegarde .b71 transférable","main_menu.footer_html":" <p> <span>Programmé en France par <a href=\\"https://lecaro.me\\">Renan LE CARO</a>.</span> <a href=\\"https://breakout.lecaro.me/privacy.html\\" target=\\"_blank\\">Politique de confidentialité</a> <a href=\\"https://f-droid.org/en/packages/me.lecaro.breakout/\\" target=\\"_blank\\">F-Droid</a> <a href=\\"https://play.google.com/store/apps/details?id=me.lecaro.breakout\\" target=\\"_blank\\">Google Play</a> <a href=\\"https://renanlecaro.itch.io/breakout71\\" target=\\"_blank\\">itch.io</a> <a href=\\"https://gitlab.com/lecarore/breakout71\\" target=\\"_blank\\">Gitlab</a> <a href=\\"https://breakout.lecaro.me/\\" target=\\"_blank\\">Version web</a> <a href=\\"https://news.ycombinator.com/item?id=43183131\\" target=\\"_blank\\">HackerNews</a> <span>v.{{appVersion}}</span></p>","main_menu.fullscreen":"Plein écran","main_menu.fullscreen_exit":"Quitter le plein écran","main_menu.fullscreen_exit_help":"Peut ne pas fonctionner sur certaines machines","main_menu.fullscreen_help":"Peut ne pas fonctionner sur certaines machines","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":"Sélectionnez un fichier .b71 sur votre appareil ","main_menu.mobile":"Mode mobile","main_menu.mobile_help":"Laisse un espace pour le pouce sous le palet.","main_menu.pointer_lock":"Verrouillage du pointeur de la souris","main_menu.pointer_lock_help":"Verrouille et cache 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.reset":"Réinitialiser le jeu","main_menu.reset_cancel":"Non","main_menu.reset_confirm":"Oui","main_menu.reset_help":"Effacer le meilleur score et les statistiques","main_menu.reset_instruction":"Vous perdrez tous les progrès que vous avez faits dans le jeu, êtes-vous sûr ?","main_menu.resume":"Retourner à la partie","main_menu.resume_help":"Continuer la partie en cours","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.sounds":"Sons du jeu","main_menu.sounds_help":"Ralentis certains téléphones.","main_menu.title":"Breakout 71","main_menu.unlocks":"Améliorations et niveaux","main_menu.unlocks_help":"Essayez les éléments débloqués","play.close_modale_window_tooltip":"Fermer","play.current_lvl":"Niveau {{level}}/{{max}}","play.menu_label":"Menu","play.missed_ball":"raté","play.mobile_press_to_play":"Gardez le doigt ici pour jouer","sandbox.help":"Tester n\'importe quelle combinaison d\'améliorations","sandbox.instructions":"Sélectionnez les amélioration ci-dessous et appuyez sur \\"Démarrer la partie de test\\" pour les tester. Les scores et les statistiques ne seront pas enregistrés.","sandbox.start":"Démarrer la partie de test","sandbox.title":"Mode bac à sable","sandbox.unlocks_at":"Déverrouillé à partir d\'un score total de {{score}}","score_panel.restart":"Redémarrer","score_panel.restart_help":"Commencer une nouvelle partie","score_panel.resume":"Continuer la partie","score_panel.resume_help":"Fermer cette fenêtre pour retourner au jeu","score_panel.test_run":"Il s\'agit d\'une partie d\'essai, le score n\'est pas enregistré.","score_panel.title":"{{score}} points au niveau {{level}}/{{max}} ","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.","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.","unlocks.level_description":"Un niveau {{size}}x{{size}} avec {{bricks}} briques","unlocks.title":"Vous avez débloqué {{percentUnlock}}% du jeu.","unlocks.unlocks_at":"Déverrouillé au score total {{threshold}}.","upgrades.ball_attract_ball.fullHelp":"Les balles qui sont éloignées de plus d\'une demi-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_repulse_ball.fullHelp":"Les balles qui se trouvent à moins d\'une demi-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 (nombre de pièces par brique) 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). Cependant, un grand palet est plus difficile à utiliser sur les côtés du niveau.","upgrades.bigger_puck.help":"Attrapez facilement plus de pièces.","upgrades.bigger_puck.name":"Palet plus grand","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 90 % ou 100 % des pièces apporte des bonus spéciaux dans le jeu. Une 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.\\n\\nCet avantage se combine avec d\'autres avantages de combo, le combo augmentera plus rapidement mais se réinitialisera plus souvent.","upgrades.compound_interest.help":"+1 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.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.\\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.\\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.hot_start.fullHelp":"Au début de chaque niveau, votre combo commencera à +15 points, mais à chaque seconde, il sera diminué d\'un point. Cela signifie que les 15 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 15 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}}, -{{lvl}} combo par seconde","upgrades.hot_start.name":"Démarrage à chaud","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":"-1 choix jusqu\'à la fin de la course.","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.\\n\\nL\'effet se cumule avec d\'autres avantages de combo, le combo augmente plus rapidement avec plus d\'améliorations, mais il se réinitialise également si l\'une ou l\'autre des conditions de réinitialisation est remplie. ","upgrades.left_is_lava.help":"Plus de pièces si vous ne touchez pas le côté gauche.","upgrades.left_is_lava.name":"Éviter le côté gauche","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":"Les pièces de monnaie tachent les briques qu\'elles touchent","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.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 une option supplémentaire dans la liste d\'améliorations.","upgrades.one_more_choice.name":"+1 choix jusqu\'à la fin de la course","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.\\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 lorsque l\'une d\'entre elles touche une brique.","upgrades.picky_eater.help":"Plus de pièces si vous cassez les briques couleur par couleur.","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.\\nLorsqu\'elle atteint une brique de couleur différente, elle la casse, prend sa couleur et rebondit.","upgrades.pierce_color.help":"Les balles transpercent les briques de leur couleur","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.respawn.fullHelp":"Après avoir cassé deux briques ou plus, lorsque la balle touche le palet, la première brique est remise en place, à condition que l\'espace soit libre et que la brique ne soit pas une bombe.\\n\\nDes effets de particules vous indiqueront où les briques apparaîtront. \\n\\nEn montant en niveau, vous pouvez faire réapparaître jusqu\'à 4 briques à la fois, mais il doit toujours y en avoir au moins une qui reste détruite.","upgrades.respawn.help":"Certaines briques réapparaissent après avoir été détruites.","upgrades.respawn.help_plural":"Plus de briques peuvent réapparaître","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.\\n\\nL\'effet se cumule avec d\'autres avantages de combo, le combo augmente plus rapidement avec plus d\'améliorations, mais il se réinitialise également si l\'une des conditions de réinitialisation est remplie.","upgrades.right_is_lava.help":"Plus de pièces si vous ne touchez pas le côté droit.","upgrades.right_is_lava.name":"Éviter le côté droit","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\'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.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 course, 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 course 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.\\n\\nCela peut se cumuler avec d\'autres avantages liés au combo, le combo augmentera plus rapidement mais se réinitialisera plus facilement car n\'importe laquelle des conditions suffit à le réinitialiser.","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":"Avec le niveau 1 de cette compétence, la balle a 20 % de chances de rebondir sans casser les briques, mais génère 10% de pièces en plus lorsqu\'elle en casse une.\\n\\nCe +10% n\'est pas indiqué dans le nombre de combos. Au niveau 4, la balle a 80 % de chances de rebondir et rapporte 40 % de pièces en plus.","upgrades.sturdy_bricks.help":"Les briques résistent parfois aux coups mais font tomber plus de pièces.","upgrades.sturdy_bricks.help_plural":"Les briques résistent davantage et font tomber plus de pièces","upgrades.sturdy_bricks.name":"Briques solides","upgrades.telekinesis.fullHelp":"Dès que la balle touche votre palet, vous pouvez la diriger vers la gauche ou la droite en déplaçant votre palet.\\n\\nL\'effet s\'arrête lorsque la balle touche une brique et se réinitialise la prochaine fois qu\'elle touche le palet. Il ne fait rien non plus lorsque la balle descend après avoir rebondi au sommet.","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.\\n\\nCet effet s\'ajoute aux autres avantages du combo.","upgrades.top_is_lava.help":"Plus de pièces si vous ne touchez pas le haut de la zone de jeu","upgrades.top_is_lava.name":"Icare ","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"}');var M={};M=JSON.parse('{"confirmRestart.no":"Cancel","confirmRestart.text":"You\'re about to start a new run, is that really what you wanted ?","confirmRestart.title":"Start a new run ?","confirmRestart.yes":"Restart game","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.next_unlock":"Score {{points}} more points to reach the next unlock","gameOver.restart":"Start a new run","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 run statistics compared to your {{count}} best runs.","gameOver.stats.level_reached":"Level reached","gameOver.stats.total_score":"Total score","gameOver.stats.upgrades_applied":"Upgrades applied","gameOver.test_run":"This test run and its score are not being recorded","gameOver.unlocked_count":"You unlocked {{count}} item(s) :","gameOver.win.summary":"You cleared all levels for this run, catching {{score}} coins in total.","gameOver.win.title":"Run finished","level_up.after_buttons":"You just finished level {{level}}/{{max}} and picked those upgrades so far :","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_choice":"(+1 choice)","level_up.plus_one_upgrade":"(+1 upgrade and choice)","level_up.unlocked_level":" (Level)","level_up.unlocked_perk":" (Perk)","level_up.upgrade_perk_to_level":" lvl {{level}}","main_menu.basic":"Basic graphics","main_menu.basic_help":"Fewer particles and flashes, better performance.","main_menu.download_save_file":"Download save file","main_menu.download_save_file_help":"Get a transferable .b71 file with your score and stats","main_menu.footer_html":" <p> <span>Made in France by <a href=\\"https://lecaro.me\\">Renan LE CARO</a>.</span> \\n <a href=\\"https://breakout.lecaro.me/privacy.html\\" target=\\"_blank\\">Privacy Policy</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 <span>v.{{appVersion}}</span></p>","main_menu.fullscreen":"Fullscreen","main_menu.fullscreen_exit":"Exit Fullscreen","main_menu.fullscreen_exit_help":"Might not work on some machines","main_menu.fullscreen_help":"Might not work on some machines","main_menu.kid":"Kids mode","main_menu.kid_help":"Start future runs 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 .b71 file on your device","main_menu.mobile":"Mobile mode","main_menu.mobile_help":"Leaves space for your thumb under the puck.","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.reset":"Reset Game","main_menu.reset_cancel":"No","main_menu.reset_confirm":"Yes","main_menu.reset_help":"Erase high score and statistics","main_menu.reset_instruction":"You will loose all progress you made in the game, are you sure ?","main_menu.resume":"Resume","main_menu.resume_help":"Return to your run","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.sounds":"Game sounds","main_menu.sounds_help":"Can slow down some phones.","main_menu.title":"Breakout 71","main_menu.unlocks":"Starting perk","main_menu.unlocks_help":"Try perks and levels you unlocked","play.close_modale_window_tooltip":"close ","play.current_lvl":"L{{level}}/{{max}}","play.menu_label":"menu","play.missed_ball":"miss","play.mobile_press_to_play":"Press and hold here to play","sandbox.help":"Test any perk combination","sandbox.instructions":"Select perks below and press \\"start run\\" to try them out in a test run. Scores and stats are not recorded.","sandbox.start":"Start test run","sandbox.title":"Sandbox mode","sandbox.unlocks_at":"Unlocks at total score {{score}}","score_panel.restart":"Restart","score_panel.restart_help":"Start a brand new run","score_panel.resume":"Resume","score_panel.resume_help":"Return to your run","score_panel.test_run":"This is a test run, score is not recorded permanently","score_panel.title":"{{score}} points at level {{level}}/{{max}} ","score_panel.upgrades_picked":"Upgrades picked so far : ","unlocks.greyed_out_help":"The greyed out ones can be unlocked by increasing your total score. The total score increases every time you score in game.","unlocks.intro":"Your total score is {{ts}}. Below are all the upgrades and levels the games has to offer.","unlocks.level_description":"A {{size}}x{{size}} level with {{bricks}} bricks","unlocks.title":"You unlocked {{percentUnlock}}% of the game.","unlocks.unlocks_at":"Unlocks at total score {{threshold}}.","upgrades.ball_attract_ball.fullHelp":"Balls that are more than half a screen 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_repulse_ball.fullHelp":"Balls that are less than half a 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 (number of coins per bricks) normally starts at 1 at the beginning of the level, and resets to one 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 However, a large puck is harder to use around the sides of the level, and will make it sometimes unavoidable to miss (not hit anything) which comes with downsides. ","upgrades.bigger_puck.help":"Easily catch more coins.","upgrades.bigger_puck.name":"Bigger puck","upgrades.coin_magnet.fullHelp":"Directs the coins to the puck. The effect is stronger if the coin is close to it already. Catching 90% or 100% of 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.\\n\\nThis perk combines with other combo perks, the combo will rise faster but reset more easily.","upgrades.compound_interest.help":"+1 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.extra_levels.fullHelp":"The default run can last a max of 7 levels, after which the game is over and whatever score you reached is your run score. \\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 per run, and the run 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.hot_start.fullHelp":"At the start of every level, your combo will start at +15 points, but then every second it will be decreased by one.\\n\\nThis means the first 15 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 15s 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}}, -{{lvl}} combo per second","upgrades.hot_start.name":"Hot start","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":"-1 choice until run 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\\nThe effect stacks with other combo perks, combo rises faster with more upgrades but will also reset if any of the reset conditions are met.","upgrades.left_is_lava.help":"+1 combo per brick broken, resets on left side hit","upgrades.left_is_lava.name":"Avoid left side","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. Coins 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":"Coins stain the bricks they touch","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.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 one more option in the list","upgrades.one_more_choice.name":"+1 choice until run end","upgrades.picky_eater.fullHelp":"Whenever you break a brick the same color as your ball, your combo increases by one. \\nIf it\'s a different color, the ball takes that new color, but the combo resets.\\nThe bricks with the right color will get a white border. \\nOnce you get a combo higher than your minimum, the bricks of the wrong color will get a red halo. \\nIf you have more than one ball, they all change color whenever one of them hits a brick.","upgrades.picky_eater.help":"+1 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. \\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. \\nOnce it reaches a brick of a different color, it will break it, take its color and bounce.","upgrades.pierce_color.help":"Balls pierce bricks of their 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.respawn.fullHelp":"After breaking two or more bricks, when the ball hits the puck, the first brick will be put back in place, provided that space is free and the brick wasn\'t a bomb.\\n\\nSome particle effect will let you know where bricks will appear. Leveling this up lets you re-spawn up to 4 bricks at a time, but there should always be at least one destroyed.","upgrades.respawn.help":"The first brick hit of two+ will re-spawn","upgrades.respawn.help_plural":"More bricks can re-spawn","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\\nThe effect stacks with other combo perks, combo rises faster with more upgrades but will also reset if any\\nof the reset conditions are met.","upgrades.right_is_lava.help":"+1 combo per brick broken, resets on right side hit","upgrades.right_is_lava.name":"Avoid right side","upgrades.sapper.fullHelp":"Instead of just disappearing, the first brick you break will be replaced by a bomb brick. \\n\\nBouncing the ball on the puck re-arms the effect. \\n\\nLeveling-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.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 run 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.\\n\\nThis can stack with other combo related perks, the combo will rise faster but reset more easily as any of the conditions is enough to reset it. ","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":"With level one of this perk, the ball has a 20% chance to bounce harmlessly on bricks, \\n but generates 10% more coins when it does break one. \\n This +10% is not shown in the combo number. At level 4 the ball has 80% chance of bouncing and brings 40% more coins.","upgrades.sturdy_bricks.help":"Bricks sometimes resist hits but drop more coins.","upgrades.sturdy_bricks.help_plural":"Bricks resist more and drop more coins","upgrades.sturdy_bricks.name":"Sturdy bricks","upgrades.telekinesis.fullHelp":"Right after the ball hits your puck, you\'ll be able to direct it left and right by moving your puck. \\n\\n\\nThe effect stops when the ball hits a brick and resets the next time it touches the puck. It also does nothing when the ball is going downward after bouncing at the top.","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. \\n\\nThe effect stacks with other combo perks.","upgrades.top_is_lava.help":"More coins if you don\'t touch the top.","upgrades.top_is_lava.name":"Sky is the limit","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"}');var B={};function R(e,_){if(void 0===B[e])try{var t,r=localStorage.getItem(e);r&&(B[e]=JSON.parse(r))}catch(e){console.warn(e)}return null!==(t=B[e])&&void 0!==t?t:_}function G(e,_){B[e]=_;try{localStorage.setItem(e,JSON.stringify(_))}catch(e){console.warn(e)}}function q(){return R("breakout_71_total_score",0)}var L={fr:e(z),en:e(M)};function H(){var e,_;return R("lang",(e=f(navigator.languages).concat([navigator.language,"en"]).filter(function(e){return e}).map(function(e){return e.slice(0,2).toLowerCase()}),_=Object.keys(L),e.find(function(e){return _.includes(e)})||"en"))}function O(e){var _,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=(null===(_=L[H()])||void 0===_?void 0:_[e])||L.en[e];for(var a in t)r=r.split("{{"+a+"}}").join("".concat(t[a]));return r}var C=[{requires:"",threshold:0,giftable:!1,id:"extra_life",max:7,name:O("upgrades.extra_life.name"),help:function(e){return 1===e?O("upgrades.extra_life.help"):O("upgrades.extra_life.help_plural",{lvl:e})},fullHelp:O("upgrades.extra_life.fullHelp")},{requires:"",threshold:0,id:"streak_shots",giftable:!0,max:1,name:O("upgrades.streak_shots.name"),help:function(e){return O("upgrades.streak_shots.help",{lvl:e})},fullHelp:O("upgrades.streak_shots.fullHelp")},{requires:"",threshold:0,id:"base_combo",giftable:!0,max:7,name:O("upgrades.base_combo.name"),help:function(e){return O("upgrades.base_combo.help",{coins:1+3*e})},fullHelp:O("upgrades.base_combo.fullHelp")},{requires:"",threshold:0,giftable:!1,id:"slow_down",max:2,name:O("upgrades.slow_down.name"),help:function(){return O("upgrades.slow_down.help")},fullHelp:O("upgrades.slow_down.fullHelp")},{requires:"",threshold:0,giftable:!1,id:"bigger_puck",max:2,name:O("upgrades.bigger_puck.name"),help:function(){return O("upgrades.bigger_puck.help")},fullHelp:O("upgrades.bigger_puck.fullHelp")},{requires:"",threshold:0,giftable:!1,id:"viscosity",max:3,name:O("upgrades.viscosity.name"),help:function(){return O("upgrades.viscosity.help")},fullHelp:O("upgrades.viscosity.fullHelp")},{requires:"",threshold:0,id:"left_is_lava",giftable:!0,max:1,name:O("upgrades.left_is_lava.name"),help:function(){return O("upgrades.left_is_lava.help")},fullHelp:O("upgrades.left_is_lava.fullHelp")},{requires:"",threshold:0,id:"right_is_lava",giftable:!0,max:1,name:O("upgrades.right_is_lava.name"),help:function(){return O("upgrades.right_is_lava.help")},fullHelp:O("upgrades.right_is_lava.fullHelp")},{requires:"",threshold:0,id:"top_is_lava",giftable:!0,max:1,name:O("upgrades.top_is_lava.name"),help:function(){return O("upgrades.top_is_lava.help")},fullHelp:O("upgrades.top_is_lava.fullHelp")},{requires:"",threshold:0,giftable:!1,id:"skip_last",max:7,name:O("upgrades.skip_last.name"),help:function(e){return 1==e?O("upgrades.skip_last.help"):O("upgrades.skip_last.help_plural",{lvl:e})},fullHelp:O("upgrades.skip_last.fullHelp")},{requires:"",threshold:500,id:"telekinesis",giftable:!0,max:2,name:O("upgrades.telekinesis.name"),help:function(e){return 1==e?O("upgrades.telekinesis.help"):O("upgrades.telekinesis.help_plural")},fullHelp:O("upgrades.telekinesis.fullHelp")},{requires:"",threshold:1e3,giftable:!1,id:"coin_magnet",max:3,name:O("upgrades.coin_magnet.name"),help:function(e){return 1==e?O("upgrades.coin_magnet.help"):O("upgrades.coin_magnet.help_plural")},fullHelp:O("upgrades.coin_magnet.fullHelp")},{requires:"",threshold:1500,id:"multiball",giftable:!0,max:6,name:O("upgrades.multiball.name"),help:function(e){return O("upgrades.multiball.help",{count:e+1})},fullHelp:O("upgrades.multiball.fullHelp")},{requires:"",threshold:2e3,giftable:!1,id:"smaller_puck",max:2,name:O("upgrades.smaller_puck.name"),help:function(e){return 1==e?O("upgrades.smaller_puck.help"):O("upgrades.smaller_puck.help_plural")},fullHelp:O("upgrades.smaller_puck.fullHelp")},{requires:"",threshold:3e3,id:"pierce",giftable:!0,max:3,name:O("upgrades.pierce.name"),help:function(e){return O("upgrades.pierce.help",{count:3*e})},fullHelp:O("upgrades.pierce.fullHelp")},{requires:"",threshold:4e3,id:"picky_eater",giftable:!0,max:1,name:O("upgrades.picky_eater.name"),help:function(e){return O("upgrades.picky_eater.help")},fullHelp:O("upgrades.picky_eater.fullHelp")},{requires:"",threshold:5e3,giftable:!1,id:"metamorphosis",max:1,name:O("upgrades.metamorphosis.name"),help:function(e){return O("upgrades.metamorphosis.help")},fullHelp:O("upgrades.metamorphosis.fullHelp")},{requires:"",threshold:6e3,id:"compound_interest",giftable:!0,max:1,name:O("upgrades.compound_interest.name"),help:function(e){return O("upgrades.compound_interest.help")},fullHelp:O("upgrades.compound_interest.fullHelp")},{requires:"",threshold:7e3,id:"hot_start",giftable:!0,max:3,name:O("upgrades.hot_start.name"),help:function(e){return O("upgrades.hot_start.help",{start:15*e+1,lvl:e})},fullHelp:O("upgrades.hot_start.fullHelp")},{requires:"",threshold:9e3,id:"sapper",giftable:!0,max:7,name:O("upgrades.sapper.name"),help:function(e){return 1==e?O("upgrades.sapper.help"):O("upgrades.sapper.help_plural",{lvl:e})},fullHelp:O("upgrades.sapper.fullHelp")},{requires:"",threshold:11e3,id:"bigger_explosions",giftable:!1,max:1,name:O("upgrades.bigger_explosions.name"),help:function(e){return O("upgrades.bigger_explosions.help")},fullHelp:O("upgrades.bigger_explosions.fullHelp")},{requires:"",threshold:13e3,giftable:!1,id:"extra_levels",max:3,name:O("upgrades.extra_levels.name"),help:function(e){return O("upgrades.extra_levels.help",{count:e+7})},fullHelp:O("upgrades.extra_levels.fullHelp")},{requires:"",threshold:15e3,giftable:!1,id:"pierce_color",max:1,name:O("upgrades.pierce_color.name"),help:function(e){return O("upgrades.pierce_color.help")},fullHelp:O("upgrades.pierce_color.fullHelp")},{requires:"",threshold:18e3,giftable:!1,id:"soft_reset",max:9,name:O("upgrades.soft_reset.name"),help:function(e){return O("upgrades.soft_reset.help",{percent:10*e})},fullHelp:O("upgrades.soft_reset.fullHelp")},{requires:"multiball",threshold:21e3,giftable:!1,id:"ball_repulse_ball",max:3,name:O("upgrades.ball_repulse_ball.name"),help:function(e){return 1==e?O("upgrades.ball_repulse_ball.help"):O("upgrades.ball_repulse_ball.help_plural")},fullHelp:O("upgrades.ball_repulse_ball.fullHelp")},{requires:"multiball",threshold:25e3,giftable:!1,id:"ball_attract_ball",max:3,name:O("upgrades.ball_attract_ball.name"),help:function(e){return 1==e?O("upgrades.ball_attract_ball.help"):O("upgrades.ball_attract_ball.help_plural")},fullHelp:O("upgrades.ball_attract_ball.fullHelp")},{requires:"",threshold:3e4,giftable:!1,id:"puck_repulse_ball",max:2,name:O("upgrades.puck_repulse_ball.name"),help:function(e){return 1==e?O("upgrades.puck_repulse_ball.help"):O("upgrades.puck_repulse_ball.help_plural")},fullHelp:O("upgrades.puck_repulse_ball.fullHelp")},{requires:"",threshold:35e3,giftable:!1,id:"wind",max:3,name:O("upgrades.wind.name"),help:function(e){return 1==e?O("upgrades.wind.help"):O("upgrades.wind.help_plural")},fullHelp:O("upgrades.wind.fullHelp")},{requires:"",threshold:4e4,giftable:!1,id:"sturdy_bricks",max:4,name:O("upgrades.telekinesis.name"),help:function(e){return 1==e?O("upgrades.telekinesis.help"):O("upgrades.telekinesis.help_plural")},fullHelp:O("upgrades.telekinesis.fullHelp")},{requires:"",threshold:45e3,giftable:!1,id:"respawn",max:4,name:O("upgrades.respawn.name"),help:function(e){return 1==e?O("upgrades.respawn.help"):O("upgrades.respawn.help_plural")},fullHelp:O("upgrades.respawn.fullHelp")},{requires:"",threshold:5e4,giftable:!1,id:"one_more_choice",max:3,name:O("upgrades.one_more_choice.name"),help:function(e){return O("upgrades.one_more_choice.help")},fullHelp:O("upgrades.one_more_choice.fullHelp")},{requires:"",threshold:55e3,giftable:!1,id:"instant_upgrade",max:2,name:O("upgrades.instant_upgrade.name"),help:function(e){return O("upgrades.instant_upgrade.help")},fullHelp:O("upgrades.instant_upgrade.fullHelp")},{requires:"",threshold:6e4,giftable:!1,id:"concave_puck",max:1,name:O("upgrades.concave_puck.name"),help:function(e){return O("upgrades.concave_puck.help")},fullHelp:O("upgrades.concave_puck.fullHelp")}],P={},T=e(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\\\" xml:space=\\\"preserve\\\" width=\\\"45.491\\\" height=\\\"44.293\\\" viewBox=\\\"0 0 12.036 11.719\\\"><path d=\\\"M-.036-.081h12.157V11.82H-.036z\\\" style=\\\"fill:#000;stroke:none;stroke-width:.112189;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/><path d=\\\"M.051.134h3.622v3.615h3.981V7.55h4.13v4.006\\\" style=\\\"fill:none;stroke:#fff;stroke-width:.307996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/></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\\\" xml:space=\\\"preserve\\\" width=\\\"88.718\\\" height=\\\"59.048\\\" viewBox=\\\"0 0 23.473 15.623\\\"><path d=\\\"M-.036-.081h23.591v15.862H-.036z\\\" style=\\\"fill:#000;stroke:none;stroke-width:.180422;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/><path d=\\\"M-1.054 7.864h26.127M-1.185 15.474h26.128M11.545 7.765V-2.431M4.444 8.028v7.389M17.637 8.06v7.39\\\" style=\\\"fill:#fff;stroke:#fff;stroke-width:.307996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/></svg>\",\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xml:space=\\\"preserve\\\" width=\\\"45.491\\\" height=\\\"44.293\\\" viewBox=\\\"0 0 12.036 11.719\\\"><path d=\\\"M-.036-.081h12.157V11.82H-.036z\\\" style=\\\"fill:#000;stroke:none;stroke-width:.112189;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/><path d=\\\"M5.997 9.079c1.941-1.892 5.045-5.609 3.495-6.38-1.43-.71-2.665.599-3.317 1.603-.521-.96-1.47-2.616-2.839-1.655-1.898 1.334.838 5.026 2.661 6.432\\\" style=\\\"fill:none;stroke:#fff;stroke-width:.307996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/></svg>\",\"<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'><path d='M27.26 5.415c-.55 0-.9.55-.65 1l2.45 4.75c.2.5.85.5 1.15.1l3.15-4.5c.3-.4 0-1.05-.55-1.1zM10.689 8.068c-.406-.051-.822.31-.778.748l.5 5.3c.05.5.6.8 1.05.5l4.55-3.05c.45-.3.4-.95-.05-1.15l-5.1-2.3a.605.605 0 0 0-.172-.048zM2.406 24.584a.635.635 0 0 0-.345.081l-4.75 2.4c-.45.2-.5.85-.1 1.15l4.45 3.15c.4.3 1 0 1.1-.5l.3-5.55c0-.412-.31-.712-.655-.73zm40 0a.635.635 0 0 0-.345.081l-4.75 2.4c-.45.2-.5.85-.1 1.15l4.45 3.15c.4.3 1 0 1.1-.5l.3-5.55c0-.412-.31-.712-.655-.73zm-22.17 3.108a.744.744 0 0 0-.675.723l.4 5.55c.05.5.6.8 1.05.5l4.45-2.95c.45-.25.4-.9-.05-1.15l-4.8-2.6a.702.702 0 0 0-.376-.073z' stroke='none' fill='white'/></svg>\",\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xml:space=\\\"preserve\\\" width=\\\"45.701\\\" height=\\\"36.148\\\" viewBox=\\\"0 0 12.092 9.564\\\"><path d=\\\"M-.036-.081h12.157V11.82H-.036z\\\" style=\\\"fill:#000;stroke:none;stroke-width:.112189;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\" transform=\\\"translate(0 -.76)\\\"/><path d=\\\"M.049 2.794c2.088-1.328 4.06-1.436 5.864-.036 1.804 1.401 5.21.78 6.074.013M.157 5.687C2.245 4.359 4.217 4.25 6.02 5.65c1.803 1.401 5.21.78 6.074.013M.137 8.792C2.225 7.465 4.197 7.356 6 8.757s5.21.779 6.074.013\\\" style=\\\"fill:none;stroke:#fff;stroke-width:.307999;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill;stop-color:#000\\\" transform=\\\"translate(0 -.76)\\\"/></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\\\" xml:space=\\\"preserve\\\" width=\\\"45.491\\\" height=\\\"44.293\\\" viewBox=\\\"0 0 12.036 11.719\\\"><path d=\\\"M-.036-.081h12.157V11.82H-.036z\\\" style=\\\"fill:#000;stroke:none;stroke-width:.112189;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/><path d=\\\"M.058.132h6.413V6.34H2.006v4.024h8.68v-8.96H8.303v7.292H3.979\\\" style=\\\"fill:none;stroke:#fff;stroke-width:.307996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/><path d=\\\"M3.73 3.095H.034v8.58\\\" style=\\\"fill:none;stroke:#fff;stroke-width:.307996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/></svg>\",\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xml:space=\\\"preserve\\\" width=\\\"88.718\\\" height=\\\"59.048\\\" viewBox=\\\"0 0 23.473 15.623\\\"><path d=\\\"M-.036-.081h23.591v15.862H-.036z\\\" style=\\\"fill:#000;stroke:none;stroke-width:.180422;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/><path d=\\\"m23.463 8.674.044-8.608L11.47 6.941-.06.166\\\" style=\\\"fill:none;stroke:#fff;stroke-width:.307996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/><path d=\\\"M11.472 6.937v8.574l11.943-6.896M11.507 15.438-.024 8.78\\\" style=\\\"fill:none;stroke:#fff;stroke-width:.307996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;-inkscape-stroke:none;paint-order:markers stroke fill;stop-color:#000\\\"/></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>\"]")),E=document.createElement("canvas"),A=E.getContext("2d",{antialias:!1,alpha:!0}),D=e(w),j=e(x),V=e(S),Z={},I=j.map(function(e){var _,t=e.bricks.split("").map(function(e){return D[e]}).slice(0,e.size*e.size),r=function(e,_,t){if(!A)return"";E.width=40,E.height=40,t?(A.fillStyle=t,A.fillRect(0,0,40,40)):A.clearRect(0,0,40,40);for(var r=40/_,a=0;a<_;a++)for(var s=0;s<_;s++){var n=e[s*_+a];n&&(A.fillStyle=n,A.fillRect(Math.floor(r*a),Math.floor(r*s),Math.ceil(r),Math.ceil(r)))}return'<img alt="" width="'.concat(40,'" height="').concat(40,'" src="').concat(E.toDataURL(),'"/>')}(t,e.size,e.color);return Z[e.name]=r,W(k({},e),{bricks:t,icon:r,svg:(_=null!==e.svg&&T[e.svg%T.length],e.color||_||(_=T[function(e){for(var _=0,t=0;t<e.length;t++)_=(_<<5)-_+e.charCodeAt(t),_&=_;return Math.abs(_)}(e.name)%T.length]),_)})}).filter(function(e){return!e.name.startsWith("icon:")}).map(function(e,_){return W(k({},e),{threshold:_<8?0:Math.round(Math.min(10*Math.pow(10,1+(_+e.size)/30),5e3)*_),sortKey:(Math.random()+3)/3.5*e.bricks.filter(function(e){return e}).length})}),X=C.map(function(e){return W(k({},e),{icon:Z["icon:"+e.id]})}),F={sound:{default:!0,name:O("main_menu.sounds"),help:O("main_menu.sounds_help")},"mobile-mode":{default:window.innerHeight>window.innerWidth,name:O("main_menu.mobile"),help:O("main_menu.mobile_help")},basic:{default:!1,name:O("main_menu.basic"),help:O("main_menu.basic_help")},pointerLock:{default:!1,name:O("main_menu.pointer_lock"),help:O("main_menu.pointer_lock_help")},easy:{default:!1,name:O("main_menu.kid"),help:O("main_menu.kid_help")},record:{default:!1,name:O("main_menu.record"),help:O("main_menu.record_help")}};function N(e){var _;return R("breakout-settings-enable-"+e,null===(_=F[e])||void 0===_?void 0:_.default)}var U={wallBeep:function(e){N("sound")&&J(800,$(e))},comboIncreaseMaybe:function(e,_,t){if(N("sound")){var r=0;!isNaN(Q)&&(Q<e&&(r=1),Q>e&&(r=-1)),e_(r,$(_),t),Q=e}},comboDecrease:function(){N("sound")&&e_(-1,.5,.5)},coinBounce:function(e,_){N("sound")&&J(1200,$(e),_,.1,"triangle")},explode:function(e){N("sound")&&function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5,_=Y();if(_){var t=_.createBufferSource();t.buffer=K(_);var a=_.createGain();t.connect(a);var s=_.createBiquadFilter();s.type="lowpass",s.frequency.setValueAtTime(1e3,_.currentTime),a.connect(s);var n=_.createStereoPanner();n.pan.setValueAtTime(2*e-1,_.currentTime),s.connect(n),n.connect(_.destination),n.connect(r),a.gain.setValueAtTime(1,_.currentTime),a.gain.exponentialRampToValueAtTime(.01,_.currentTime+1),s.frequency.exponentialRampToValueAtTime(60,_.currentTime+1),t.start(_.currentTime),t.stop(_.currentTime+1)}}($(e))},lifeLost:function(e){N("sound")&&function(e){var _=Y();if(_){var t=[et(_,3e3,"square"),et(_,4500,"square"),et(_,6e3,"square")],a=_.createGain(),s=_.createBufferSource();s.buffer=K(_),t.forEach(function(e){return e.connect(a)}),s.connect(a),a.gain.setValueAtTime(.2,_.currentTime),t.forEach(function(e){return e.start()}),s.start(),t.forEach(function(e){return e.stop(_.currentTime+.2)}),s.stop(_.currentTime+.2),a.gain.exponentialRampToValueAtTime(.001,_.currentTime+.2);var n=_.createStereoPanner();n.pan.setValueAtTime(2*e-1,_.currentTime),a.connect(n),n.connect(_.destination),n.connect(r),a.connect(n)}}($(e))},coinCatch:function(e){N("sound")&&J(900,$(e),.8,.1,"triangle")},colorChange:function(e,_){J(400,$(e),_,.5,"sine"),J(800,$(e),.5*_,.2,"square")}};function Y(){if(!t){if(!N("sound"))return null;r=(t=new(window.AudioContext||window.webkitAudioContext)).createMediaStreamDestination()}return t}function J(){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,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.1,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"sine",n=Y();if(n){var l=et(n,e,s),o=n.createGain();l.connect(o);var i=n.createStereoPanner();i.pan.setValueAtTime(2*_-1,n.currentTime),o.connect(i),i.connect(n.destination),i.connect(r),o.gain.setValueAtTime(.8*t,n.currentTime),o.gain.exponentialRampToValueAtTime(.001,n.currentTime+a),l.start(n.currentTime),l.stop(n.currentTime+a)}}function K(e){if(!a)for(var _=2*e.sampleRate,t=(a=e.createBuffer(1,_,e.sampleRate)).getChannelData(0),r=0;r<_;r++)t[r]=2*Math.random()-1;return a}function $(e){return Math.max(0,Math.min(1,(e-_r.offsetXRoundedDown)/_r.gameZoneWidthRoundedUp))}var Q=NaN,ee=6;function e_(e,_,t){(ee+=e)>11&&(ee=0),ee<0&&(ee=11);var r=function(e){var r=392*Math.pow(1.05945594920268,e),a=Math.abs(e-5.5),s=Math.max(0,t*(1-a/16.5));return J(r,_,s),r.toFixed(2)+" at "+Math.floor(100*s)+"% diff "+a};r(12+ee),r(ee),r(-12+ee)}function et(e,_,t){var r=e.createOscillator();return r.type=t,r.frequency.setValueAtTime(_,e.currentTime),r}function er(e){var _;return e&&(null===(_=Object.values(e))||void 0===_?void 0:_.reduce(function(e,_){return e+_},0))||0}var ea=function(e){var _={};return e.forEach(function(e){return _[e.id]=0}),_};function es(e,_){return e.offsetX+(_%e.gridSize+.5)*e.brickWidth}function en(e,_){return(Math.floor(_/e.gridSize)+.5)*e.brickWidth}function el(e,_,t){return _<0||t<0||_>=e.gridSize||t>=e.gridSize?-1:_*e.gridSize+t}function eo(e){return X.filter(function(_){return e.totalScoreAtRunStart>=_.threshold}).filter(function(_){return!(null==_?void 0:_.requires)||e.perks[null==_?void 0:_.requires]})}function ei(e){return 7+e.perks.extra_levels}function eu(e){var _="",t=!0,r=!1,a=void 0;try{for(var s,n=X[Symbol.iterator]();!(t=(s=n.next()).done);t=!0)for(var l=s.value,o=0;o<e.perks[l.id];o++)_+=Z["icon:"+l.id]+" "}catch(e){r=!0,a=e}finally{try{t||null==n.return||n.return()}finally{if(r)throw a}}return _}function ec(e){return e.runLevels[e.currentLevel%e.runLevels.length]}function ep(e,_){return e.perks.telekinesis&&!_.hitSinceBounce&&_.vy<0}function ed(e,_){return Math.sqrt(Math.pow(e.x-_.x,2)+Math.pow(e.y-_.y,2))}var em={};em=m("kqXj6").getBundleURL("ec1j5")+"PWA/sw-b71.js","serviceWorker"in navigator&&window.location.search.includes("isPWA=true")&&navigator.serviceWorker.register(em);var eh=document.getElementById("game"),eg=eh.getContext("2d",{alpha:!1}),eb=document.createElement("img");eb.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>');var ev=document.createElement("img"),ef=document.createElement("canvas"),ey=document.createElement("canvas"),ek="",eW={};function ew(e,_,t,r){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5?arguments[5]:void 0,n="puck"+_+"_"+t+"_"+r+"_"+s;if(!eW[n]){var l=document.createElement("canvas");l.width=t,l.height=2*r;var o=l.getContext("2d");o.fillStyle=_,o.beginPath(),o.moveTo(0,2*r),s?(o.lineTo(0,.75*r),o.bezierCurveTo(t/2,r,t/2,+r,t,.75*r)):(o.lineTo(0,1.25*r),o.bezierCurveTo(0,.75*r,t,.75*r,t,1.25*r)),o.lineTo(t,2*r),o.fill(),eW[n]=l}e.drawImage(eW[n],Math.round(_r.puckPosition-t/2),_r.gameZoneHeight-2*r+a)}function ex(e,_,t,r,a){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"",n="ball"+_+"_"+t+"_"+s,l=Math.round(t);if(!eW[n]){var o=document.createElement("canvas");o.width=l,o.height=l;var i=o.getContext("2d");i.beginPath(),i.arc(l/2,l/2,Math.round(l/2)-1,0,2*Math.PI),i.fillStyle=_,i.fill(),s&&(i.lineWidth=2,i.strokeStyle=s,i.stroke()),eW[n]=o}e.drawImage(eW[n],Math.round(r-l/2),Math.round(a-l/2))}function eS(e,_,t,r,a,s,n){var l=(Math.round(n/Math.PI*64)%32+32)%32,o="coin with halo_"+_+"_"+t+"_"+s+"_"+("gold"===_?l:"whatever");if(!eW[o]){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(),"gold"===_&&(u.strokeStyle=s,u.stroke(),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(l/16),u.translate(-t/2,-t/2),u.globalCompositeOperation="multiply",eM(u,"$",_,t-2,t/2,t/2+1),eM(u,"$",_,t-2,t/2,t/2+1)),eW[o]=i}e.drawImage(eW[o],Math.round(r-t/2),Math.round(a-t/2))}function ez(e,_,t,r,a){var s="fuzzy-circle"+_+"_"+t,n=Math.round(3*t);if(!eW[s]){var l=document.createElement("canvas");l.width=n,l.height=n;var o=l.getContext("2d"),i=o.createRadialGradient(n/2,n/2,0,n/2,n/2,n/2);i.addColorStop(0,_),i.addColorStop(1,"transparent"),o.fillStyle=i,o.fillRect(0,0,n,n),eW[s]=l}e.drawImage(eW[s],Math.round(r-n/2),Math.round(a-n/2))}function eM(e,_,t,r,a,s){var n=arguments.length>6&&void 0!==arguments[6]&&arguments[6],l="text"+_+"_"+t+"_"+r+"_"+n;if(!eW[l]){var o=document.createElement("canvas");o.width=r*_.length,o.height=r;var i=o.getContext("2d");i.fillStyle=t,i.textAlign=n?"left":"center",i.textBaseline="middle",i.font=r+"px monospace",i.fillText(_,n?0:o.width/2,o.height/2,o.width),eW[l]=o}e.drawImage(eW[l],n?a:Math.round(a-eW[l].width/2),Math.round(s-eW[l].height/2))}var eB=document.getElementById("score"),eR=document.getElementById("menuLabel");function eG(){N("record")&&(null==s?void 0:s.state)==="recording"&&(null==s||s.pause())}function eq(){N("record")&&s&&(null==s||s.stop(),s=null)}var eL=0,eH=null;function eO(e){var _=e.title,t=e.text,r=e.actions,a=e.allowClose,s=void 0===a||a,n=e.textAfterButtons,l=void 0===n?"":n,o=e.actionsAsGrid,i=void 0!==o&&o;return eL++,new Promise(function(e){var a,n=function(_){e(_),setTimeout(function(){document.body.removeChild(o)})},o=document.createElement("div");if(document.body.appendChild(o),o.className="popup "+(i?"actionsAsGrid ":""),s){var u=document.createElement("button");u.title=O("play.close_modale_window_tooltip"),u.className="close-modale",u.addEventListener("click",function(e){e.preventDefault(),n(void 0)}),eH=function(){n(void 0)},o.appendChild(u)}var c=document.createElement("div");if(_){var p=document.createElement("h2");p.innerHTML=_,c.appendChild(p)}if(t){var d=document.createElement("div");d.innerHTML=t,c.appendChild(d)}var m=document.createElement("section");if(c.appendChild(m),null==r||r.filter(function(e){return e}).forEach(function(e){var _=e.text,t=e.value,r=e.help,a=e.disabled,s=e.className,l=e.icon,o=document.createElement("button");o.innerHTML="\n".concat(void 0===l?"":l,"\n<div>\n <strong>").concat(_,"</strong>\n <em>").concat(r||"","</em>\n </div>"),a?o.setAttribute("disabled","disabled"):o.addEventListener("click",function(e){e.preventDefault(),n(t)}),o.className=void 0===s?"":s,m.appendChild(o)}),l){var h=document.createElement("div");h.className="textAfterButtons",h.innerHTML=l,c.appendChild(h)}o.appendChild(c),null===(a=c.querySelector("button:not([disabled])"))||void 0===a||a.focus()}).then(function(e){return eL--,eH=null,e},function(){eH=null,eL--})}function eC(e,_){if(_r.running){eJ(!0),eq(),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){}}(_r.runStatistics.runTime),_r.runStatistics.max_level=_r.currentLevel+1;var t,r,a=-300,s=function(){return"animation-delay:"+(a+=800)+"ms;"},n="",l=q(),o=l-_r.score,i=(t=[],X.forEach(function(e){e.threshold&&t.push({threshold:e.threshold,title:e.name+" "+O("level_up.unlocked_perk")})}),I.forEach(function(e){t.push({threshold:e.threshold,title:e.name+" "+O("level_up.unlocked_level")})}),t.filter(function(e){return e.threshold}).sort(function(e,_){return e.threshold-_.threshold}));i.filter(function(e){return e.threshold>o&&e.threshold<l}).forEach(function(e){n+='\n<p class="progress" >\n <span>'.concat(e.title,'</span>\n <span class="progress_bar_part" style="').concat(s(),'"></span>\n</p>\n')});var u=(null===(r=function(e,_){for(var t=e.length;--t;)if(_(e[t],t,e))return e[t]}(i,function(e){return e.threshold<=l}))||void 0===r?void 0:r.threshold)||0,c=i.find(function(e){return e.threshold>l});if(c){var p=(null==c?void 0:c.threshold)-u,d=l-u;_+=O("gameOver.next_unlock",{points:c.threshold-l});var m=(d/p).toFixed(2);n+='\n <p class="progress" >\n <span>'.concat(c.title,'</span>\n <span style="transform: scale(').concat(m,",1);").concat(s(),'" class="progress_bar_part"></span>\n </p>\n\n'),i.slice(i.indexOf(c)+1).slice(0,3).forEach(function(e){n+='\n <p class="progress" >\n <span>'.concat(e.title,"</span> \n </p> \n")})}var h=i.filter(function(e){return e.threshold>o&&e.threshold<l});h.length&&(n+="<p>".concat(O("gameOver.unlocked_count",{count:h.length})," ").concat(h.map(function(e){return e.title}).join(", "),"</p>")),_r.combo=1,eO({allowClose:!0,title:e,text:"\n ".concat(_r.isCreativeModeRun?"<p>".concat(O("gameOver.test_run"),"</p> "):"","\n <p>").concat(_,"</p>\n <p>").concat(O("gameOver.cumulative_total",{startTs:o,endTs:l}),"</p>\n ").concat(n," \n "),actions:[{value:null,text:O("gameOver.restart"),help:""}],textAfterButtons:'<div id="level-recording-container"></div>\n '.concat(function(){var e="";try{var _=JSON.parse(localStorage.getItem("breakout_71_runs_history")||"[]");_.sort(function(e,_){return e.score-_.score}).reverse(),(_=_.slice(0,100)).push(W(k({},_r.runStatistics),{perks:_r.perks,appVersion:V})),_r.isCreativeModeRun||localStorage.setItem("breakout_71_runs_history",JSON.stringify(_,null,2));var t=function(e,t,r){var a,s,n,l=_.map(function(e){return t(e)||0}),o=(a=Math).min.apply(a,f(l)),i=(s=Math).max.apply(s,f(l));if(o===i)return"";i-o<10&&(o=Math.max(0,i-10),i=Math.max(i,o+10));var u=Math.min(l.length,10);if(u<3)return"";for(var c=[],p=[],d=0;d<u;d++)c.push(0),p.push(0);var m=(i-o)/c.length,h=function(e){return Math.min(c.length-1,Math.floor((e-o)/m))};if(l.forEach(function(e){if(!isNaN(e)){var _=h(e);c[_]++,p[_]+=e}}),c.filter(function(e){return e}).length<3)return"";var g=(n=Math).max.apply(n,f(c)),b=l[l.length-1],v=h(b),y=c.map(function(e,_){return'<span class="'.concat(_===v?"active":"",'"><span style="').concat("height: ".concat(e/g*80,"px"),'" title="').concat(e," run").concat(e>1?"s":""," between ").concat(Math.floor(o+_*m)," and ").concat(Math.floor(o+(_+1)*m)).concat(r,'"\n ><span>').concat(!e&&" "||_==v&&b+r||Math.round(p[_]/e)+r,"</span></span></span>")}).join("");return'<h2 class="histogram-title">'.concat(e," : <strong>").concat(b).concat(r,'</strong></h2>\n <div class="histogram">').concat(y,"</div>\n ")};e+=t(O("gameOver.stats.total_score"),function(e){return e.score},""),e+=t(O("gameOver.stats.catch_rate"),function(e){return Math.round(e.score/e.coins_spawned*100)},"%"),e+=t(O("gameOver.stats.bricks_broken"),function(e){return e.bricks_broken},""),e+=t(O("gameOver.stats.bricks_per_minute"),function(e){return Math.round(e.bricks_broken/e.runTime*6e4)},""),e+=t(O("gameOver.stats.hit_rate"),function(e){return Math.round((1-e.misses/e.puck_bounces)*100)},"%"),e+=t(O("gameOver.stats.duration_per_level"),function(e){return Math.round(e.runTime/1e3/e.levelsPlayed)},"s"),e+=t(O("gameOver.stats.level_reached"),function(e){return e.levelsPlayed},""),e+=t(O("gameOver.stats.upgrades_applied"),function(e){return e.upgrades_picked},""),e+=t(O("gameOver.stats.balls_lost"),function(e){return e.balls_lost},""),e+=t(O("gameOver.stats.combo_avg"),function(e){return Math.round(e.coins_spawned/e.bricks_broken)},""),(e+=t(O("gameOver.stats.combo_max"),function(e){return e.max_combo},""))&&(e="<p>".concat(O("gameOver.stats.intro",{count:_.length-1}),"</p>")+e)}catch(e){console.warn(e)}return e}()," \n ")}).then(function(){return _a({levelToAvoid:ec(_r).name})})}}function eP(e,_){e.puckPosition=_,e.needsRender=!0}function eT(e){return+!e.perks.concave_puck*(Math.random()>.5?e.baseSpeed:-e.baseSpeed)}function eE(e){var _,t=1+((null===(_=e.perks)||void 0===_?void 0:_.multiball)||0),r=e.puckWidth/(t+1);e.balls=[],e.ballsColor="#FFF",(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,f(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}))||"#FFF");for(var a=0;a<t;a++){var s=e.puckPosition-e.puckWidth/2+r*(a+1),n=eT(e);e.balls.push({x:s,previousX:s,y:e.gameZoneHeight-1.5*e.ballSize,previousY:e.gameZoneHeight-1.5*e.ballSize,vx:n,previousVX:n,vy:-e.baseSpeed,previousVY:-e.baseSpeed,sx:0,sy:0,sparks:0,piercedSinceBounce:0,hitSinceBounce:0,hitItem:[],sapperUses:0})}}function eA(e){var _=e.balls.length,t=e.puckWidth/(_+1),r=eT(e);e.balls.forEach(function(_,a){var s=e.puckPosition-e.puckWidth/2+t*(a+1);_.x=s,_.previousX=s,_.y=e.gameZoneHeight-1.5*e.ballSize,_.previousY=_.y,_.vx=r,_.previousVX=_.vx,_.vy=-e.baseSpeed,_.previousVY=_.vy,_.sx=0,_.sy=0,_.hitItem=[],_.hitSinceBounce=0,_.piercedSinceBounce=0})}function eD(e){return 1+3*e.perks.base_combo+5*e.perks.smaller_puck}function ej(e,_,t){var r=e.combo;e.combo=eD(e),e.levelTime||(e.combo+=15*e.perks.hot_start),r>e.combo&&e.perks.soft_reset&&(e.combo+=Math.floor((r-e.combo)*(10*e.perks.soft_reset)/100));var a=Math.max(0,r-e.combo);if(a){for(var s=0;s<a&&s<8;s++)setTimeout(function(){return U.comboDecrease()},100*s);void 0!==_&&void 0!==t&&e.flashes.push({type:"text",text:"-"+a,time:e.levelTime,color:"red",x:_,y:t,duration:150,size:e.puckHeight})}return a}function eV(e,_,t,r,a){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:150,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:e.coinSize;if(!N("basic")){e.flashes.length>e.MAX_PARTICLES&&(_=1);for(var l=0;l<_;l++)e.flashes.push({type:"particle",time:e.levelTime,size:n,x:t+(Math.random()-.5)*e.brickWidth/2,y:r+(Math.random()-.5)*e.brickWidth/2,vx:(Math.random()-.5)*30,vy:(Math.random()-.5)*30,color:a,duration:s,ethereal:!1})}}function eZ(e,_,t,r){var a,s=e.bricks[_];if(s){if("black"===s){delete e.bricks[_];var n=es(e,_),l=en(e,_);U.explode(t.x);for(var o=_%e.gridSize,i=Math.floor(_/e.gridSize),u=1+e.perks.bigger_explosions,c=-u;c<=u;c++)for(var p=-u;p<=u;p++){var d=el(e,i+p,o+c);if(e.bricks[d]&&-1!==d){if("black"!==e.bricks[d]&&e.perks.sturdy_bricks>5*Math.random())continue;eZ(e,d,t,!0)}}e.coins.forEach(function(_){var t=_.x-n,r=_.y-l,a=Math.max(e.brickWidth,Math.abs(t)+Math.abs(r));_.vx+=t/a*10*u/_.weight,_.vy+=r/a*10*u/_.weight}),e.lastExplosion=Date.now(),e.flashes.push({type:"ball",duration:150,time:e.levelTime,size:2*e.brickWidth,color:"white",x:n,y:l}),eV(e,7*(1+e.perks.bigger_explosions),n,l,"white",150,e.coinSize),t.hitSinceBounce++,e.runStatistics.bricks_broken++}else if(s){t.hitSinceBounce++;var m=es(e,_),h=en(e,_);e.bricks[_]="";var g=e.combo;e.perks.sturdy_bricks&&(g+=Math.ceil((10+e.perks.sturdy_bricks)/10*g)),e.levelSpawnedCoins+=g,e.runStatistics.coins_spawned+=g,e.runStatistics.bricks_broken++;for(var b=e.MAX_COINS*(N("basic")?.5:1),v=Math.max(1,Math.ceil(g/(e.coins.length>e.MAX_COINS?1:Math.floor(b-e.coins.length)/3)));g>0;){var f=Math.min(v,g);(f<0||isNaN(f))&&console.error({points:f}),g-=f;var y=m+(Math.random()-.5)*(e.brickWidth-e.coinSize),k=h+(Math.random()-.5)*(e.brickWidth-e.coinSize);e.coins.push({points:f,size:e.coinSize,color:e.perks.metamorphosis?s:"gold",x:y,y:k,previousX:y,previousY:k,vx:t.previousVX*(.5+Math.random()),vy:t.previousVY*(.5+Math.random()),sx:0,sy:0,a:Math.random()*Math.PI*2,sa:Math.random()-.5,weight:.8+.2*Math.random()})}e.combo+=Math.max(0,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),r||((e.perks.picky_eater||e.perks.pierce_color)&&s!==e.ballsColor&&s?(e.perks.picky_eater&&ej(e,t.x,t.y),U.colorChange(t.x,.8),e.lastExplosion=e.levelTime,e.ballsColor=s,N("basic")||e.balls.forEach(function(_){eV(e,7,_.previousX,_.previousY,s,150,15)})):U.comboIncreaseMaybe(e.combo,t.x,1)),e.flashes.push({type:"ball",duration:40,time:e.levelTime,size:e.brickWidth,color:s,x:m,y:h}),eV(e,5+Math.min(e.combo,30),m,h,s,150,e.coinSize/2)}e.bricks[_]||"black"===s||null===(a=t.hitItem)||void 0===a||a.push({index:_,color:s})}}function eI(e,_){e.lastOffered[_]=Math.round(Date.now()/1e3)}function eX(e,_){eq(),eJ(!1),_>0&&function(e){e$.apply(this,arguments)}(e),e.currentLevel=_,e.levelTime=0,e.levelWallBounces=0,e.autoCleanUses=0,e.lastTickDown=e.levelTime,e.levelStartScore=e.score,e.levelSpawnedCoins=0,e.levelMisses=0,e.runStatistics.levelsPlayed++,ej(e,void 0,void 0),eE(e);var t=ec(e);t.size!==e.gridSize&&(e.gridSize=t.size,eK()),e.coins=[],e.bricks=f(t.bricks),e.flashes=[],ev.src="data:image/svg+xml;UTF8,"+t.svg}function eF(){return"hsl(".concat(2*Math.round(_r.levelTime/4)%360,",100%,70%)")}function eN(e,_,t,r,a){var s=ed(_,t),n=e.gameZoneWidth/2;if(!(s>n)){var l=(_.x-t.x)/s,o=(_.y-t.y)/s,i=-r*(n-s)/(1.2*n)/3*Math.min(500,e.levelTime)/500;a&&void 0!==t.vx&&void 0!==t.vy&&(t.vx+=l*i,t.vy+=o*i),_.vx-=l*i,_.vy-=o*i,e.flashes.push({type:"particle",duration:100,time:e.levelTime,size:e.coinSize/2,color:eF(),ethereal:!0,x:_.x,y:_.y,vx:-(10*l)+_.vx+(Math.random()-.5)*2,vy:-(10*o)+_.vy+(Math.random()-.5)*2}),a&&void 0!==t.vx&&void 0!==t.vy&&e.flashes.push({type:"particle",duration:100,time:e.levelTime,size:e.coinSize/2,color:eF(),ethereal:!0,x:t.x,y:t.y,vx:10*l+t.vx+(Math.random()-.5)*2,vy:10*o+t.vy+(Math.random()-.5)*2})}}function eU(e){var _=q(),t=(null==e?void 0:e.level)?I.filter(function(_){return _.name===(null==e?void 0:e.level)}):[],r=I.filter(function(e){return _>=e.threshold}).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}),a=t.concat(r.slice(0,10).sort(function(e,_){return e.sortKey-_.sortKey})),s=k({},ea(X),(null==e?void 0:e.perks)||{}),n={runLevels:a,currentLevel:0,perks:s,puckWidth:200,baseSpeed:12,combo:1,gridSize:12,running:!1,puckPosition:400,pauseTimeout:null,canvasWidth:0,canvasHeight:0,offsetX:0,offsetXRoundedDown:0,gameZoneWidth:0,gameZoneWidthRoundedUp:0,gameZoneHeight:0,brickWidth:0,score:0,lastScoreIncrease:-1e3,lastExplosion:-1e3,highScore:parseFloat(localStorage.getItem("breakout-3-hs")||"0"),balls:[],ballsColor:"white",bricks:[],flashes:[],coins:[],levelStartScore:0,levelMisses:0,levelSpawnedCoins:0,lastPlayedCoinGrab:0,MAX_COINS:400,MAX_PARTICLES:600,puckColor:"#FFF",ballSize:20,coinSize:14,puckHeight:20,totalScoreAtRunStart:_,isCreativeModeRun:er(s)>1,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,max_level:0},lastOffered:{},levelTime:0,levelWallBounces:0,needsRender:!0,autoCleanUses:0};if(eE(n),!er(n.perks)){var l=eo(n).filter(function(e){return e.giftable}),o=N("easy")&&"slow_down"||l[Math.floor(Math.random()*l.length)].id;s[o]=1,eI(n,o)}var i=!0,u=!1,c=void 0;try{for(var p,d=X[Symbol.iterator]();!(i=(p=d.next()).done);i=!0){var m=p.value;n.perks[m.id]&&eI(n,m.id)}}catch(e){u=!0,c=e}finally{try{i||null==d.return||d.return()}finally{if(u)throw c}}return n}function eY(){var e;_r.running||(_r.running=!0,function(e){if(N("record")&&!s){if(!o){i=(o=document.createElement("canvas")).getContext("2d",{antialias:!1,alpha:!1}),l=(n=o.captureStream(0)).getVideoTracks()[0];var _=(Y(),r);_&&n.addTrack(_.stream.getAudioTracks()[0])}o.width=e.gameZoneWidthRoundedUp,o.height=e.gameZoneHeight;var t=[],a=new MediaRecorder(n,{videoBitsPerSecond:35e5});s=a,a.start(),s.pause(),a.ondataavailable=function(e){t.push(e.data)},a.onstop=g(function(){var e,_,r,a;return y(this,function(s){switch(s.label){case 0:if((_=new Blob(t,{type:"video/webm"})).size<2e5)return[2];s.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 s.sent(),[3,1];case 3:return(r=document.createElement("video")).autoplay=!0,r.controls=!1,r.disablePictureInPicture=!0,r.disableRemotePlayback=!0,r.width=o.width,r.height=o.height,r.loop=!0,r.muted=!0,r.playsInline=!0,r.src=URL.createObjectURL(_),(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",a.href=r.src,a.textContent=O("main_menu.record_download",{size:(_.size/1e6).toFixed(2)}),e.appendChild(r),e.appendChild(a),[2]}})})}}(_r),null===(e=Y())||void 0===e||e.resume(),N("record")&&(null==s?void 0:s.state)==="paused"&&s.resume(),document.body.className=_r.running?" running ":" paused ")}function eJ(e){_r.running&&!_r.pauseTimeout&&(_r.pauseTimeout=setTimeout(function(){_r.running=!1,setTimeout(function(){var e;_r.running||null===(e=Y())||void 0===e||e.suspend()},1e3),eG(),_r.pauseTimeout=null,document.body.className=_r.running?" running ":" paused ",eB.className="",_r.needsRender=!0},Math.min(50*Math.max(0,_r.pauseUsesDuringRun-5),500)),e&&_r.pauseUsesDuringRun++,document.exitPointerLock&&document.exitPointerLock())}var eK=function(){var e,_=eh.getBoundingClientRect(),t=_.width,r=_.height;_r.canvasWidth=t,_r.canvasHeight=r,eh.width=t,eh.height=r,eg.fillStyle=(null===(e=ec(_r))||void 0===e?void 0:e.color)||"black",eg.globalAlpha=1,eg.fillRect(0,0,t,r),ef.width=t,ef.height=r,_r.gameZoneHeight=N("mobile-mode")?80*r/100:r;var a=Math.round(Math.min(_r.canvasWidth,.73*_r.gameZoneHeight));_r.brickWidth=2*Math.floor(a/_r.gridSize/2),_r.gameZoneWidth=_r.brickWidth*_r.gridSize,_r.offsetX=Math.floor((_r.canvasWidth-_r.gameZoneWidth)/2),_r.offsetXRoundedDown=_r.offsetX,_r.offsetX<_r.ballSize&&(_r.offsetXRoundedDown=0),_r.gameZoneWidthRoundedUp=t-2*_r.offsetXRoundedDown,ef.title="resized",eP(_r,_r.puckPosition),_r.coins=[],_r.flashes=[],eJ(!0),eA(_r),document.documentElement.style.setProperty("--vh","".concat(.01*window.innerHeight,"px"))};function e$(){return(e$=g(function(e){var _,t,r,a,s,n,l,o,i,u,c;return y(this,function(p){switch(p.label){case 0:_=(e.score-e.levelStartScore)/(e.levelSpawnedCoins||1),t=1,r=3,a="",s="",n="",l="",0==e.levelWallBounces?(t++,r++,n=O("level_up.plus_one_upgrade")):e.levelWallBounces<5&&(r++,n=O("level_up.plus_one_choice")),e.levelTime<3e4?(t++,r++,a=O("level_up.plus_one_upgrade")):e.levelTime<6e4&&(r++,a=O("level_up.plus_one_choice")),1===_?(t++,r++,s=O("level_up.plus_one_upgrade")):_>.9&&(r++,s=O("level_up.plus_one_choice")),0===e.levelMisses?(t++,r++,l=O("level_up.plus_one_upgrade")):e.levelMisses<=3&&(r++,l=O("level_up.plus_one_choice")),p.label=1;case 1:var d,m;if(!t--||(d=r+e.perks.one_more_choice-e.perks.instant_upgrade,(m=eo(e).map(function(_){return W(k({},_),{score:Math.random()+(e.lastOffered[_.id]||0)})}).sort(function(e,_){return e.score-_.score}).filter(function(_){return e.perks[_.id]<_.max}).slice(0,d).sort(function(e,_){return e.id>_.id?1:-1})).forEach(function(_){eI(e,_.id)}),!(o=m.map(function(_){return{text:_.name+(e.perks[_.id]?O("level_up.upgrade_perk_to_level",{level:e.perks[_.id]+1}):""),icon:Z["icon:"+_.id],value:_.id,help:_.help(e.perks[_.id]+1)}})).length))return[3,3];return i="\n <p>".concat(O("level_up.after_buttons",{level:e.currentLevel+1,max:ei(e)})," </p>\n <p>").concat(eu(e),'</p>\n <div id="level-recording-container"></div> \n \n '),u=a&&s&&l&&n&&O("level_up.compliment_perfect")||(a||s||l||n)&&O("level_up.compliment_good")||O("level_up.compliment_advice"),[4,eO({title:O("level_up.pick_upgrade_title")+(t?" ("+(t+1)+")":""),actions:o,text:"<p>".concat(O("level_up.before_buttons",{score:e.score-e.levelStartScore,catchGain:s,levelSpawnedCoins:e.levelSpawnedCoins,time:Math.round(e.levelTime/1e3),timeGain:a,levelMisses:e.levelMisses,missesGain:l,levelWallBounces:e.levelWallBounces,wallHitsGain:n,compliment:u}),"\n </p>"),allowClose:!1,textAfterButtons:i})];case 2:return c=p.sent(),e.perks[c]++,"instant_upgrade"===c&&(t+=2),e.runStatistics.upgrades_picked++,[3,1];case 3:return ej(e,void 0,void 0),eE(e),[2]}})})).apply(this,arguments)}function eQ(e,_){return el(_r,Math.floor(_/_r.brickWidth),Math.floor((e-_r.offsetX)/_r.brickWidth))}function e0(e){if(_r.bricks[e])return e}function e1(e,_,t){var r,a,s;return null!==(s=null!==(a=null!==(r=e0(eQ(e-t,_-t)))&&void 0!==r?r:e0(eQ(e+t,_-t)))&&void 0!==a?a:e0(eQ(e+t,_+t)))&&void 0!==s?s:e0(eQ(e-t,_+t))}function e2(e,_,t){if(!e.destroyed){e.previousX=e.x,e.previousY=e.y,e.x+=e.vx*t,e.y+=e.vy*t,e.sx||(e.sx=0),e.sy||(e.sy=0),e.sx+=e.previousX-e.x,e.sy+=e.previousY-e.y,e.sx*=.9,e.sy*=.9,_r.perks.wind&&(e.vx+=(_r.puckPosition-(_r.offsetX+_r.gameZoneWidth/2))/_r.gameZoneWidth*_r.perks.wind*.5);var r=0,a=0;return e.x<_r.offsetXRoundedDown+_&&(e.x=_r.offsetXRoundedDown+_+(_r.offsetXRoundedDown+_-e.x),e.vx*=-1,a=1),e.y<_&&(e.y=_+(_-e.y),e.vy*=-1,r=1),e.x>_r.canvasWidth-_r.offsetXRoundedDown-_&&(e.x=_r.canvasWidth-_r.offsetXRoundedDown-_-(e.x-(_r.canvasWidth-_r.offsetXRoundedDown-_)),e.vx*=-1,a=1),a+2*r}}function e4(){return e5.apply(this,arguments)}function e5(){return(e5=g(function(){var e;return y(this,function(_){switch(_.label){case 0:return eJ(!0),[4,eO({title:O("score_panel.title",{score:_r.score,level:_r.currentLevel+1,max:ei(_r)}),text:"\n ".concat(_r.isCreativeModeRun?"<p>${t('score_panel.test_run}</p>":"","\n <p>").concat(O("score_panel.upgrades_picked"),"</p>\n <p>").concat(eu(_r),"</p>\n "),allowClose:!0,actions:[{text:O("score_panel.resume"),help:O("score_panel.resume_help"),value:function(){}},{text:O("score_panel.restart"),help:O("score_panel.restart_help"),value:function(){_a({levelToAvoid:ec(_r).name})}}]})];case 1:return(e=_.sent())&&e(),[2]}})})).apply(this,arguments)}function e3(){return e6.apply(this,arguments)}function e6(){return(e6=g(function(){var e,_,t,r,a,s,n,l,o,i;return y(this,function(u){switch(u.label){case 0:eJ(!0),_=[{text:O("main_menu.resume"),help:O("main_menu.resume_help"),value:function(){}},{text:O("main_menu.unlocks"),help:O("main_menu.unlocks_help"),value:function(){(function(){e7.apply(this,arguments)})()}}],t=!0,r=!1,a=void 0;try{for(s=function(){var e=l.value;F[e]&&_.push({icon:N(e)?Z["icon:checkmark_checked"]:Z["icon:checkmark_unchecked"],text:F[e].name,help:F[e].help,value:function(){G("breakout-settings-enable-"+e,!N(e)),"mobile-mode"===e&&eK(),e3()}})},n=Object.keys(F)[Symbol.iterator]();!(t=(l=n.next()).done);t=!0)s()}catch(e){r=!0,a=e}finally{try{t||null==n.return||n.return()}finally{if(r)throw a}}return o=(e=Math).max.apply(e,f(X.map(function(e){return e.threshold}))),(document.fullscreenEnabled||document.webkitFullscreenEnabled)&&(null!==document.fullscreenElement?_.push({text:O("main_menu.fullscreen_exit"),help:O("main_menu.fullscreen_exit_help"),icon:Z["icon:exit_fullscreen"],value:function(){_e()}}):_.push({text:O("main_menu.fullscreen"),help:O("main_menu.fullscreen_help"),icon:Z["icon:fullscreen"],value:function(){_e()}})),_.push({text:O("sandbox.title"),help:q()<o?O("sandbox.unlocks_at",{score:o}):O("sandbox.help"),disabled:q()<o,value:function(){return g(function(){var e,_;return y(this,function(t){switch(t.label){case 0:e=R("creativeModePerks",{}),t.label=1;case 1:return[4,eO({title:O("sandbox.title"),text:O("sandbox.instructions"),actionsAsGrid:!0,actions:f(X.map(function(_){return{icon:_.icon,text:_.name,help:(e[_.id]||0)+"/"+_.max,value:_,className:e[_.id]?"":"grey-out-unless-hovered"}})).concat([{text:O("sandbox.start"),value:"start"}])})];case 2:if(!(_=t.sent()))return[3,3];if("start"===_)return G("creativeModePerks",e),_a({perks:e}),[3,3];return _&&(e[_.id]=((e[_.id]||0)+1)%(_.max+1)),[3,1];case 3:return[2]}})})()}}),_.push({text:O("main_menu.reset"),help:O("main_menu.reset_help"),value:function(){return g(function(){return y(this,function(e){switch(e.label){case 0:return[4,eO({title:O("main_menu.reset"),text:O("main_menu.reset_instruction"),actions:[{text:O("main_menu.reset_confirm"),value:!0},{text:O("main_menu.reset_cancel"),value:!1}],allowClose:!0})];case 1:return e.sent()&&(localStorage.clear(),window.location.reload()),[2]}})})()}}),_.push({text:O("main_menu.download_save_file"),help:O("main_menu.download_save_file_help"),value:function(){return g(function(){var e,_,t,r,a;return y(this,function(s){for(_=0,e={};_<localStorage.length;_++)t=localStorage.key(_),r=localStorage.getItem(t),e[t]=r;return(a=document.createElement("a")).setAttribute("href","data:application/json;base64,"+btoa(JSON.stringify({fileType:"B71-save-file",appVersion:V,localStorageContent:e}))),a.setAttribute("download","b71-save-"+new Date().toISOString().slice(0,19).replace(/[^0-9]+/gi,"-")+".b71"),document.body.appendChild(a),a.click(),setTimeout(function(){return document.body.removeChild(a)},1e3),[2]})})()}}),_.push({text:O("main_menu.load_save_file"),help:O("main_menu.load_save_file_help"),value:function(){return g(function(){var e,_;return y(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"),_.style.position="absolute",_.style.left="-1000px",_.addEventListener("change",(r=g(function(e){var t,r,a,s,n,l,o;return y(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(s=(a=JSON.parse(e.sent())).fileType,n=a.appVersion,l=a.localStorageContent,"B71-save-file"!==s)throw Error("Not a B71 save file");if(n>V)throw Error("Please update your app first, this file is for version "+n+" or newer.");for(var i in localStorage.clear(),l)localStorage.setItem(i,l[i]);return[4,eO({title:O("main_menu.save_file_loaded"),text:O("main_menu.save_file_loaded_help"),actions:[{text:O("main_menu.save_file_loaded_ok")}]})];case 2:e.sent(),window.location.reload(),e.label=3;case 3:return[3,6];case 4:return o=e.sent(),[4,eO({title:O("main_menu.save_file_error"),text:o.message,actions:[{text:O("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({text:O("main_menu.language"),help:O("main_menu.language_help"),value:function(){return g(function(){var e,_;return y(this,function(t){switch(t.label){case 0:return[4,eO({title:O("main_menu.language"),text:O("main_menu.language_help"),actions:[{text:"English",value:"en"},{text:"Français",value:"fr"}],allowClose:!0})];case 1:if(!(_=(e=t.sent())&&e!==H()))return[3,3];return[4,e8()];case 2:_=t.sent(),t.label=3;case 3:return _&&(G("lang",e),window.location.reload()),[2]}})})()}}),[4,eO({title:O("main_menu.title"),text:"",allowClose:!0,actions:_,textAfterButtons:O("main_menu.footer_html",{appVersion:V})})];case 1:return(i=u.sent())&&(i(),_r.needsRender=!0),[2]}})})).apply(this,arguments)}function e7(){return(e7=g(function(){var e,_,t,r;return y(this,function(a){switch(a.label){case 0:return e=q(),t=Math.round((_=f(X.sort(function(e,_){return e.threshold-_.threshold}).map(function(_){var t=_.name,r=_.id,a=_.threshold,s=_.icon,n=_.fullHelp;return{text:t,help:e>=a?n:O("unlocks.unlocks_at",{threshold:a}),disabled:e<a,value:{perks:b({},r,1)},icon:s}})).concat(f(I.sort(function(e,_){return e.threshold-_.threshold}).map(function(_){var t=e>=_.threshold;return{text:_.name,help:t?O("unlocks.level_description",{size:_.size,bricks:_.bricks.filter(function(e){return e}).length}):O("unlocks.unlocks_at",{threshold:_.threshold}),disabled:!t,value:{level:_.name},icon:Z[_.name]}})))).filter(function(e){return!e.disabled}).length/_.length*100),[4,eO({title:O("unlocks.title",{percentUnlock:t}),text:"<p>".concat(O("unlocks.intro",{ts:e}),"\n ").concat(t<100?O("unlocks.greyed_out_help"):"","</p> \n "),textAfterButtons:"<p> \nYour high score is ".concat(_r.highScore,". \nClick an item above to start a run with it.\n </p>"),actions:_,allowClose:!0})];case 1:if(!(r=a.sent()))return[3,3];return[4,e8()];case 2:a.sent()&&_a(r),a.label=3;case 3:return[2]}})})).apply(this,arguments)}function e8(){return e9.apply(this,arguments)}function e9(){return(e9=g(function(){return y(this,function(e){return _r.currentLevel?[2,eO({title:O("confirmRestart.title"),text:O("confirmRestart.text"),actions:[{value:!0,text:O("confirmRestart.yes")},{value:!1,text:O("confirmRestart.no")}]})]:[2,!0]})})).apply(this,arguments)}function _e(){try{if(null!==document.fullscreenElement)document.exitFullscreen?document.exitFullscreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen();else{var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.webkitRequestFullscreen&&e.webkitRequestFullscreen()}}catch(e){console.warn(e)}}window.addEventListener("resize",eK),window.addEventListener("fullscreenchange",eK),setInterval(function(){var e=eh.getBoundingClientRect(),_=e.width,t=e.height;(_!==_r.canvasWidth||t!==_r.canvasHeight)&&eK()},1e3),eh.addEventListener("mouseup",function(e){0===e.button&&(_r.running?eJ(!0):(eY(),N("pointerLock")&&eh.requestPointerLock&&eh.requestPointerLock().then()))}),eh.addEventListener("mousemove",function(e){document.pointerLockElement===eh?eP(_r,_r.puckPosition+e.movementX):eP(_r,e.x)}),eh.addEventListener("touchstart",function(e){var _;e.preventDefault(),(null===(_=e.touches)||void 0===_?void 0:_.length)&&(eP(_r,e.touches[0].pageX),eY())}),eh.addEventListener("touchend",function(e){e.preventDefault(),eJ(!0)}),eh.addEventListener("touchcancel",function(e){e.preventDefault(),eJ(!0)}),eh.addEventListener("touchmove",function(e){var _;(null===(_=e.touches)||void 0===_?void 0:_.length)&&eP(_r,e.touches[0].pageX)}),window.addEventListener("visibilitychange",function(){document.hidden&&eJ(!0)}),eB.addEventListener("click",function(e){e.preventDefault(),e4()}),document.addEventListener("visibilitychange",function(){document.hidden&&eJ(!0)}),null===(u=document.getElementById("menu"))||void 0===u||u.addEventListener("click",function(e){e.preventDefault(),e3()});var __={ArrowLeft:0,ArrowRight:0,Shift:0};function _t(e,_){__[e]=_,_r.keyboardPuckSpeed=(__.ArrowRight-__.ArrowLeft)*(1+2*__.Shift)*_r.gameZoneWidth/50}document.addEventListener("keydown",function(e){"f"!==e.key.toLowerCase()||e.ctrlKey||e.metaKey?e.key in __&&_t(e.key,1):_e()," "===e.key&&!eL&&(_r.running?eJ(!0):eY(),e.preventDefault())}),document.addEventListener("keyup",(_=g(function(e){var _,t,r,a,s;return y(this,function(n){switch(n.label){case 0:if(s=document.querySelector("button:focus"),!(e.key in __))return[3,1];return _t(e.key,0),[3,10];case 1:if("ArrowDown"!==e.key||(null==s?void 0:null===(_=s.nextElementSibling)||void 0===_?void 0:_.tagName)!=="BUTTON")return[3,2];return null==s||null===(t=s.nextElementSibling)||void 0===t||t.focus(),[3,10];case 2:if("ArrowUp"!==e.key||(null==s?void 0:null===(r=s.previousElementSibling)||void 0===r?void 0:r.tagName)!=="BUTTON")return[3,3];return null==s||null===(a=s.previousElementSibling)||void 0===a||a.focus(),[3,10];case 3:if(!("Escape"===e.key&&eH))return[3,4];return eH(),[3,10];case 4:if(!("Escape"===e.key&&_r.running))return[3,5];return eJ(!0),[3,10];case 5:if(!("m"===e.key.toLowerCase()&&!eL))return[3,6];return e3().then(),[3,10];case 6:if(!("s"===e.key.toLowerCase()&&!eL))return[3,7];return e4().then(),[3,10];case 7:if(!("r"===e.key.toLowerCase()&&!eL))return[3,9];return[4,e8()];case 8:return n.sent()&&_a({levelToAvoid:ec(_r).name}),[3,10];case 9:return[2];case 10:return e.preventDefault(),[2]}})}),function(e){return _.apply(this,arguments)}));var _r=eU({});function _a(e){Object.assign(_r,eU(e)),eG(),eX(_r,0)}_a({}),eK(),function e(){var _=performance.now(),t=_-_r.lastTick;_r.lastTick=_;var r=Math.min(4,t/(1e3/60));_r.keyboardPuckSpeed&&eP(_r,_r.puckPosition+_r.keyboardPuckSpeed),_r.baseSpeed=Math.max(3,_r.gameZoneWidth/12/10+_r.currentLevel/3+_r.levelTime/3e4-2*_r.perks.slow_down),_r.puckWidth=_r.gameZoneWidth/12*(3-_r.perks.smaller_puck+_r.perks.bigger_puck),_r.puckPosition<_r.offsetXRoundedDown+_r.puckWidth/2&&(_r.puckPosition=_r.offsetXRoundedDown+_r.puckWidth/2),_r.puckPosition>_r.offsetXRoundedDown+_r.gameZoneWidthRoundedUp-_r.puckWidth/2&&(_r.puckPosition=_r.offsetXRoundedDown+_r.gameZoneWidthRoundedUp-_r.puckWidth/2),_r.running||_r.levelTime||eA(_r),_r.running&&(_r.levelTime+=t,_r.runStatistics.runTime+=t,function(e){var _,t,r,a,s,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;e.runStatistics.max_combo=Math.max(e.runStatistics.max_combo,e.combo),e.coins=e.coins.filter(function(e){return!e.destroyed}),e.balls=e.balls.filter(function(e){return!e.destroyed});var l=e.bricks.filter(function(e){return e&&"black"!==e}).length;if(e.levelTime>e.lastTickDown+1e3&&e.perks.hot_start&&(e.lastTickDown=e.levelTime,_=e.perks.hot_start,t=e.puckPosition,r=e.gameZoneHeight-2*e.puckHeight,a=e.combo,e.combo=Math.max(eD(e),e.combo-_),(s=Math.max(0,a-e.combo))&&(U.comboDecrease(),void 0!==t&&void 0!==r&&e.flashes.push({type:"text",text:"-"+s,time:e.levelTime,color:"red",x:t,y:r,duration:300,size:e.puckHeight}))),l<=e.perks.skip_last&&!e.autoCleanUses&&(e.bricks.forEach(function(_,t){_&&eZ(e,t,e.balls[0],!0)}),e.autoCleanUses++),l||e.coins.length){if(e.running||e.levelTime){var o=!1,i=Math.round(e.coinSize/2);if(e.coins.forEach(function(_){if(!_.destroyed){if(e.perks.coin_magnet){var t,r=n*(e.puckPosition-_.x)/(100+Math.pow(_.y-e.gameZoneHeight,2)+Math.pow(_.x-e.puckPosition,2))*e.perks.coin_magnet*100;_.vx+=r,_.sa-=r/10}var a=1-(.03*e.perks.viscosity+.005)*n;_.vy*=a,_.vx*=a,_.vx>7*e.baseSpeed&&(_.vx=7*e.baseSpeed),_.vx<-7*e.baseSpeed&&(_.vx=-7*e.baseSpeed),_.vy>7*e.baseSpeed&&(_.vy=7*e.baseSpeed),_.vy<-7*e.baseSpeed&&(_.vy=-7*e.baseSpeed),_.a+=_.sa,_.vy+=n*_.weight*.8;var s=Math.abs(_.sx)+Math.abs(_.sx),l=e2(_,_.size/2,n);_.y>e.gameZoneHeight-i-e.puckHeight&&_.y<e.gameZoneHeight+e.puckHeight+_.vy&&Math.abs(_.x-e.puckPosition)<i+e.puckWidth/2+e.puckHeight?(_.destroyed=!0,e.score+=_.points,e.lastScoreIncrease=e.levelTime,t=_.points,e.isCreativeModeRun||G("breakout_71_total_score",q()+t),e.score>e.highScore&&!e.isCreativeModeRun&&(e.highScore=e.score,localStorage.setItem("breakout-3-hs",e.score.toString())),N("basic")||e.flashes.push({type:"particle",duration:100+50*Math.random(),time:e.levelTime,size:e.coinSize/2,color:_.color,x:_.previousX,y:_.previousY,vx:(e.canvasWidth-_.x)/100,vy:-_.y/100,ethereal:!0}),Date.now()-e.lastPlayedCoinGrab>16&&(e.lastPlayedCoinGrab=Date.now(),U.coinCatch(_.x)),e.runStatistics.score+=_.points):_.y>e.canvasHeight+i&&(_.destroyed=!0,e.perks.compound_interest&&ej(e,_.x,_.y));var u=function(e){var _,t=e.size/2,r=e.x,a=e.y,s=e.previousX,n=e.previousY,l=e1(s,a,t),o=e1(r,n,t),i=void 0===l&&void 0===o&&e1(r,a,t)||void 0;if(void 0!==l||void 0!==i){e.y=e.previousY,e.vy*=-1;var u=_r.bricks[eQ(r-t,a+t)],c=_r.bricks[eQ(r+t,a+t)];u&&!c&&(e.vx+=1,e.sa-=1),!u&&c&&(e.vx-=1,e.sa+=1)}return(void 0!==o||void 0!==i)&&(e.x=e.previousX,e.vx*=-1),null!==(_=null!=l?l:o)&&void 0!==_?_:i}(_);e.perks.metamorphosis&&void 0!==u&&e.bricks[u]&&_.color!==e.bricks[u]&&"black"!==e.bricks[u]&&!_.coloredABrick&&(e.bricks[u]=_.color,_.coloredABrick=!0,U.colorChange(_.x,.3)),(void 0!==u||l)&&(_.vx*=.8,_.vy*=.8,_.sa*=.9,s>20&&!o&&(o=!0,U.coinBounce(_.x,.2)),3>Math.abs(_.vy)&&(_.vy=0))}}),e.balls.forEach(function(_){return function(e,_,t){_.previousVX=_.vx,_.previousVY=_.vy;var r,a,s,n,l=1+e.perks.telekinesis+e.perks.ball_repulse_ball+e.perks.puck_repulse_ball+e.perks.ball_attract_ball;ep(e,_)&&(l+=3,_.vx+=(e.puckPosition-_.x)/1e3*t*e.perks.telekinesis),_.vx*_.vx+_.vy*_.vy<e.baseSpeed*e.baseSpeed*2?(_.vx*=1+.02/l,_.vy*=1+.02/l):(_.vx*=1-.02/l,_.vy*=1-.02/l),Math.abs(_.vy)<.2*e.baseSpeed&&(_.vy+=(_.vy>0?1:-1)*.02/l);var o=!0,i=!1,u=void 0;if(e.perks.ball_repulse_ball)try{for(var c,p,d,m=e.balls[Symbol.iterator]();!(o=(d=m.next()).done);o=!0){var h=d.value;h.x>=_.x||eN(e,_,h,e.perks.ball_repulse_ball,!0)}}catch(e){i=!0,u=e}finally{try{o||null==m.return||m.return()}finally{if(i)throw u}}var g=!0,b=!1,v=void 0;if(e.perks.ball_attract_ball)try{for(var f,y=e.balls[Symbol.iterator]();!(g=(f=y.next()).done);g=!0){var k=f.value;k.x>=_.x||function(e,_,t,r){var a=ed(_,t),s=.5*e.gameZoneWidth;if(!(a<s)){var n=(_.x-t.x)/a,l=(_.y-t.y)/a,o=r*(a-s)/s*Math.min(500,e.levelTime)/500;t.vx+=n*o,t.vy+=l*o,_.vx-=n*o,_.vy-=l*o,e.flashes.push({type:"particle",duration:100,time:e.levelTime,size:e.coinSize/2,color:eF(),ethereal:!0,x:_.x,y:_.y,vx:10*n+_.vx+(Math.random()-.5)*2,vy:10*l+_.vy+(Math.random()-.5)*2}),e.flashes.push({type:"particle",duration:100,time:e.levelTime,size:e.coinSize/2,color:eF(),ethereal:!0,x:t.x,y:t.y,vx:-(10*n)+t.vx+(Math.random()-.5)*2,vy:-(10*l)+t.vy+(Math.random()-.5)*2})}}(e,_,k,e.perks.ball_attract_ball)}}catch(e){b=!0,v=e}finally{try{g||null==y.return||y.return()}finally{if(b)throw v}}if(e.perks.puck_repulse_ball&&Math.abs(_.x-e.puckPosition)<e.puckWidth/2+e.ballSize*(9+e.perks.puck_repulse_ball)/10&&eN(e,_,{x:e.puckPosition,y:e.gameZoneHeight},e.perks.puck_repulse_ball+1,!1),e.perks.respawn&&(null===(c=_.hitItem)||void 0===c?void 0:c.length)>1&&!N("basic"))for(var W=0;W<(null===(p=_.hitItem)||void 0===p?void 0:p.length)-1&&W<e.perks.respawn;W++){var w=_.hitItem[W],x=w.index,S=w.color;if(!e.bricks[x]&&"black"!==S){var z=Math.random()>.5,M=Math.random()>.5?1:-1,B=Math.random()>.5?1:-1;e.flashes.push({type:"particle",duration:250,ethereal:!0,time:e.levelTime,size:e.coinSize/2,color:S,x:es(e,x)+M*e.brickWidth/2,y:en(e,x)+B*e.brickWidth/2,vx:z?0:-M*e.baseSpeed,vy:z?-B*e.baseSpeed:0})}}var R=e2(_,e.ballSize/2,t);R&&(e.perks.left_is_lava&&R%2&&_.x<e.offsetX+e.gameZoneWidth/2&&ej(e,_.x,_.y),e.perks.right_is_lava&&R%2&&_.x>e.offsetX+e.gameZoneWidth/2&&ej(e,_.x,_.y),e.perks.top_is_lava&&R>=2&&ej(e,_.x,_.y+e.ballSize),U.wallBeep(_.x),e.levelWallBounces++,e.runStatistics.wall_bounces++);var G=e.gameZoneHeight-e.puckHeight-e.ballSize/2,q=Math.abs(_.x-e.puckPosition)<e.ballSize/2+e.puckWidth/2;if(_.y>G&&_.vy>0&&(q||e.perks.extra_life&&_.y>G+e.puckHeight/2)){if(q){var L=Math.sqrt(_.vx*_.vx+_.vy*_.vy),H=Math.atan2(-e.puckWidth/2,(_.x-e.puckPosition)*(e.perks.concave_puck?-.5:1));_.vx=L*Math.cos(H),_.vy=L*Math.sin(H),U.wallBeep(_.x)}else if(_.vy*=-1,e.perks.extra_life=Math.max(0,e.perks.extra_life-1),U.lifeLost(_.x),!N("basic"))for(var C=0;C<10;C++)e.flashes.push({type:"particle",ethereal:!1,color:"red",destroyed:!1,duration:150,size:e.coinSize/2,time:e.levelTime,x:_.x,y:_.y,vx:Math.random()*e.baseSpeed*3,vy:3*e.baseSpeed});e.perks.streak_shots&&ej(e,_.x,_.y),e.perks.respawn&&_.hitItem.slice(0,-1).slice(0,e.perks.respawn).forEach(function(_){var t=_.index,r=_.color;e.bricks[t]||"black"===r||(e.bricks[t]=r)}),_.hitItem=[],_.hitSinceBounce||(e.runStatistics.misses++,e.levelMisses++,ej(e,_.x,_.y),e.flashes.push({type:"text",text:O("play.missed_ball"),duration:500,time:e.levelTime,size:1.5*e.puckHeight,color:"red",x:e.puckPosition,y:e.gameZoneHeight-2*e.puckHeight})),e.runStatistics.puck_bounces++,_.hitSinceBounce=0,_.sapperUses=0,_.piercedSinceBounce=0}_.y>e.gameZoneHeight+e.ballSize/2&&e.running&&(_.destroyed=!0,e.runStatistics.balls_lost++,e.balls.find(function(e){return!e.destroyed})||eC(O("gameOver.lost.title"),O("gameOver.lost.summary",{score:e.score})));var P=e.ballSize/2,T=_.x,E=_.y,A=_.previousX,D=_.previousY,j=e1(A,E,P),V=e1(T,D,P),Z=void 0===j&&void 0===V&&e1(T,E,P)||void 0,I=null!==(n=null!=j?j:V)&&void 0!==n?n:Z,X=I&&"black"!==e.bricks[I]&&e.perks.sturdy_bricks&&e.perks.sturdy_bricks>5*Math.random(),F=!1;if(X||void 0===I||((r=j,a=V,s=Z,_r.perks.pierce_color&&(void 0===r||_r.bricks[r]===_r.ballsColor)&&(void 0===a||_r.bricks[a]===_r.ballsColor)&&(void 0===s||_r.bricks[s]===_r.ballsColor))?F=!0:_.piercedSinceBounce<3*e.perks.pierce&&(F=!0,_.piercedSinceBounce++)),void 0===j&&void 0===Z||F||(_.y=_.previousY,_.vy*=-1),void 0===V&&void 0===Z||F||(_.x=_.previousX,_.vx*=-1),X){U.wallBeep(T);return}if(void 0!==I){var Y=e.bricks[I];eZ(e,I,_,!1),_.sapperUses<e.perks.sapper&&"black"!==Y&&!e.bricks[I]&&(e.bricks[I]="black",_.sapperUses++)}!N("basic")&&(_.sparks+=t*(e.combo-1)/30,_.sparks>1&&(e.flashes.push({type:"particle",duration:100*_.sparks,time:e.levelTime,size:e.coinSize/2,color:e.ballsColor,x:_.x,y:_.y,vx:(Math.random()-.5)*e.baseSpeed,vy:(Math.random()-.5)*e.baseSpeed,ethereal:!1}),_.sparks=0))}(e,_,n)}),e.perks.wind)for(var u=(e.puckPosition-(e.offsetX+e.gameZoneWidth/2))/e.gameZoneWidth*2*e.perks.wind,c=0;c<e.perks.wind;c++)Math.random()*Math.abs(u)>.5&&e.flashes.push({type:"particle",duration:150,ethereal:!0,time:e.levelTime,size:e.coinSize/2,color:eF(),x:e.offsetXRoundedDown+Math.random()*e.gameZoneWidthRoundedUp,y:Math.random()*e.gameZoneHeight,vx:8*u,vy:0});e.flashes.forEach(function(e){"particle"===e.type&&(e.x+=e.vx*n,e.y+=e.vy*n,!e.ethereal&&(e.vy+=.5,e0(eQ(e.x,e.y))&&(e.destroyed=!0)))})}}else e.currentLevel+1<ei(e)?eX(e,e.currentLevel+1):eC(O("gameOver.win.title"),O("gameOver.win.summary",{score:e.score}));if(e.combo>eD(e)){var p=!N("basic")&&(e.combo-eD(e))*Math.random()>5&&e.running&&{type:"particle",duration:100*(Math.random()+1),time:e.levelTime,size:e.coinSize/2,color:"red",ethereal:!0};if(e.perks.top_is_lava&&p&&e.flashes.push(W(k({},p),{x:e.offsetXRoundedDown+Math.random()*e.gameZoneWidthRoundedUp,y:0,vx:(Math.random()-.5)*10,vy:5})),e.perks.left_is_lava&&p&&e.flashes.push(W(k({},p),{x:e.offsetXRoundedDown,y:Math.random()*e.gameZoneHeight,vx:5,vy:(Math.random()-.5)*10})),e.perks.right_is_lava&&p&&e.flashes.push(W(k({},p),{x:e.offsetXRoundedDown+e.gameZoneWidthRoundedUp,y:Math.random()*e.gameZoneHeight,vx:-5,vy:(Math.random()-.5)*10})),e.perks.compound_interest){var d=e.puckPosition,m=0;do d=e.offsetXRoundedDown+e.gameZoneWidthRoundedUp*Math.random(),m++;while(Math.abs(d-e.puckPosition)<e.puckWidth/2&&m<10)p&&e.flashes.push(W(k({},p),{x:d,y:e.gameZoneHeight,vx:(Math.random()-.5)*10,vy:-5}))}if(e.perks.streak_shots){var h=.5-Math.random();p&&e.flashes.push(W(k({},p),{duration:100,x:e.puckPosition+e.puckWidth*h,y:e.gameZoneHeight-e.puckHeight,vx:10*h,vy:-5}))}}}(_r,r)),(_r.running||_r.needsRender)&&(_r.needsRender=!1,function(e){var _=ec(e),t=eh.width,r=eh.height;if(t&&r){if(e.currentLevel||e.levelTime?eR.innerText=O("play.current_lvl",{level:e.currentLevel+1,max:ei(e)}):eR.innerText=O("play.menu_label"),eB.innerText="$".concat(e.score),eB.className=e.lastScoreIncrease>e.levelTime-500?"active":"",N("basic")||_.color||!_.svg)eg.globalAlpha=1,eg.globalCompositeOperation="source-over",eg.fillStyle=_.color||"#000",eg.fillRect(0,0,t,r),e.flashes.forEach(function(_){var t=_.x,r=_.y,a=_.time,s=_.color,n=_.size,l=_.type,o=_.duration;eg.globalAlpha=Math.min(1,2-(e.levelTime-a)/o*2),"particle"===l&&ex(eg,s,n,t,r)});else if(eg.globalCompositeOperation="source-over",eg.globalAlpha=1,eg.fillStyle="#000",eg.fillRect(0,0,t,r),eg.globalCompositeOperation="screen",eg.globalAlpha=.6,e.coins.forEach(function(_){_.destroyed||ez(eg,_.color,2*e.coinSize,_.x,_.y)}),e.balls.forEach(function(_){ez(eg,e.ballsColor,2*e.ballSize,_.x,_.y)}),eg.globalAlpha=.5,e.bricks.forEach(function(_,t){if(_){var r=es(e,t),a=en(e,t);ez(eg,"black"==_?"#666":_,e.brickWidth,r,a)}}),eg.globalAlpha=1,e.flashes.forEach(function(_){var t=_.x,r=_.y,a=_.time,s=_.color,n=_.size,l=_.type,o=_.duration;eg.globalAlpha=Math.min(1,2-(e.levelTime-a)/o*2),"ball"===l&&ez(eg,s,n,t,r),"particle"===l&&ez(eg,s,3*n,t,r)}),eg.globalAlpha=.2,eg.globalCompositeOperation="multiply",eg.fillStyle="black",eg.fillRect(0,0,t,r),eg.globalAlpha=.8,eg.globalCompositeOperation="multiply",_.svg&&ev.width&&ev.complete){if(ef.title!==_.name){ef.title=_.name,ef.width=e.canvasWidth,ef.height=e.canvasHeight;var a=ef.getContext("2d");a.fillStyle=_.color||"#000",a.fillRect(0,0,e.canvasWidth,e.canvasHeight);var s=eg.createPattern(ev,"repeat");s&&(a.fillStyle=s,a.fillRect(0,0,t,r))}eg.drawImage(ef,0,0)}else eg.fillStyle="#000",eg.fillRect(0,0,t,r);eg.globalAlpha=1,eg.globalCompositeOperation="source-over";var n=Date.now()-e.lastExplosion+5,l=n<200&&!N("basic");if(l){var o=(e.perks.bigger_explosions+1)*50/n;eg.translate(Math.sin(Date.now())*o,Math.sin(Date.now()+36)*o)}if(e.perks.bigger_explosions&&!N("basic")&&(l?eh.style.filter="brightness("+(1+100/(1+n))+")":eh.style.filter=""),eg.globalAlpha=1,e.coins.forEach(function(e){e.destroyed||(eg.globalCompositeOperation="gold"===e.color||_.color?"source-over":"screen",eS(eg,e.color,e.size,e.x,e.y,_.color||"black",e.a))}),N("basic")||(eg.globalCompositeOperation="source-over",eg.globalAlpha=Math.min(.8,e.coins.length/20),e.balls.forEach(function(t){ex(eg,_.color||"#000",6*e.ballSize,t.x,t.y)})),eg.globalCompositeOperation="source-over",function(){eg.globalAlpha=1;var e=_r.combo>eD(_r)&&_r.perks.picky_eater&&!N("basic"),_=_r.gameZoneWidth+"_"+_r.bricks.join("_")+eb.complete+"_"+e+"_"+_r.ballsColor+"_"+_r.perks.pierce_color;if(_!==ek){ek=_,ey.width=_r.gameZoneWidth,ey.height=_r.gameZoneWidth+1;var t=ey.getContext("2d");t.clearRect(0,0,_r.gameZoneWidth,_r.gameZoneWidth),t.resetTransform(),t.translate(-_r.offsetX,0),_r.bricks.forEach(function(_,r){var a=es(_r,r),s=en(_r,r);if(_){var n=_r.ballsColor!==_&&"black"!==_&&e&&"red"||_;(function(e,_,t,r,a){var s=Math.ceil(r-_r.brickWidth/2),n=Math.ceil(a-_r.brickWidth/2),l=Math.ceil(r+_r.brickWidth/2)-1,o=Math.ceil(a+_r.brickWidth/2)-1,i=l-s,u=o-n,c="brick"+_+"_"+t+"_"+i+"_"+u;if(!eW[c]){var p,d,m,h,g,b,v=document.createElement("canvas");v.width=i,v.height=u;var f=v.getContext("2d");f.fillStyle=_,f.strokeStyle=t,f.lineJoin="round",f.lineWidth=2,p=f,d=1,m=1,h=i-2,g=u-2,b=2,p.beginPath(),p.moveTo(3,1),p.lineTo(d+h-b,m),p.quadraticCurveTo(d+h,m,d+h,m+b),p.lineTo(d+h,m+g-b),p.quadraticCurveTo(d+h,m+g,d+h-b,m+g),p.lineTo(d+b,m+g),p.quadraticCurveTo(d,m+g,d,m+g-b),p.lineTo(d,m+b),p.quadraticCurveTo(d,m,d+b,m),p.closePath(),f.fill(),f.stroke(),eW[c]=v}e.drawImage(eW[c],s,n,i,u)})(t,_,n,a,s),"black"===_&&(t.globalCompositeOperation="source-over",function(e,_,t,r,a){var s="svg"+_+"_"+t+"_"+_.complete;if(!eW[s]){var n=document.createElement("canvas");n.width=t,n.height=t;var l=n.getContext("2d"),o=t/Math.max(_.width,_.height),i=_.width*o,u=_.height*o;l.drawImage(_,(t-i)/2,(t-u)/2,i,u),eW[s]=n}e.drawImage(eW[s],Math.round(r-t/2),Math.round(a-t/2))}(t,eb,_r.brickWidth,a,s))}})}eg.drawImage(ey,_r.offsetX,0)}(),eg.globalCompositeOperation="screen",e.flashes=e.flashes.filter(function(_){return e.levelTime-_.time<_.duration&&!_.destroyed}),e.flashes.forEach(function(_){var t=_.x,r=_.y,a=_.time,s=_.color,n=_.size,l=_.type,o=_.duration,i=e.levelTime-a;eg.globalAlpha=Math.max(0,Math.min(1,2-i/o*2)),"text"===l?(eg.globalCompositeOperation="source-over",eM(eg,_.text,s,n,t,r-i/10)):"particle"===l&&(eg.globalCompositeOperation="screen",ex(eg,s,n,t,r),ez(eg,s,n,t,r))}),e.perks.extra_life){eg.globalAlpha=1,eg.globalCompositeOperation="source-over",eg.fillStyle=e.puckColor;for(var i=0;i<e.perks.extra_life;i++)eg.fillRect(e.offsetXRoundedDown,e.gameZoneHeight-e.puckHeight/2+2*i,e.gameZoneWidthRoundedUp,1)}if(eg.globalAlpha=1,eg.globalCompositeOperation="source-over",e.balls.forEach(function(_){ex(eg,e.ballsColor,e.ballSize,_.x,_.y,e.puckColor),ep(e,_)&&(eg.strokeStyle=e.puckColor,eg.beginPath(),eg.bezierCurveTo(e.puckPosition,e.gameZoneHeight,e.puckPosition,_.y,_.x,_.y),eg.stroke())}),eg.globalAlpha=1,eg.globalCompositeOperation="source-over",e.perks.streak_shots&&e.combo>eD(e)&&ew(eg,"red",e.puckWidth,e.puckHeight,-2,!!e.perks.concave_puck),ew(eg,e.puckColor,e.puckWidth,e.puckHeight,0,!!e.perks.concave_puck),e.combo>1){eg.globalCompositeOperation="source-over";var u="x "+e.combo,c=u.length*e.puckHeight/1.8+2*e.coinSize,p=e.puckPosition-c/2;c<e.puckWidth?(eS(eg,"gold",e.coinSize,p+e.coinSize/2,e.gameZoneHeight-e.puckHeight/2,e.puckColor,0),eM(eg,u,"#000",e.puckHeight,p+1.5*e.coinSize,e.gameZoneHeight-e.puckHeight/2,!0)):eM(eg,u,"#FFF",e.puckHeight,e.puckPosition,e.gameZoneHeight-e.puckHeight/2,!1)}var d=e.combo>eD(e);eg.globalCompositeOperation="source-over",e.offsetXRoundedDown?(eg.fillStyle=d&&e.perks.left_is_lava?"red":e.puckColor,eg.fillRect(e.offsetX-1,0,1,r),eg.fillStyle=d&&e.perks.right_is_lava?"red":e.puckColor,eg.fillRect(t-e.offsetX+1,0,1,r)):(eg.fillStyle="red",d&&e.perks.left_is_lava&&eg.fillRect(0,0,1,r),d&&e.perks.right_is_lava&&eg.fillRect(t-1,0,1,r)),e.perks.top_is_lava&&e.combo>eD(e)&&(eg.fillStyle="red",eg.fillRect(e.offsetXRoundedDown,0,e.gameZoneWidthRoundedUp,1));var m=e.perks.compound_interest&&e.combo>eD(e);eg.fillStyle=m?"red":e.puckColor,N("mobile-mode")?(eg.fillRect(e.offsetXRoundedDown,e.gameZoneHeight,e.gameZoneWidthRoundedUp,1),e.running||eM(eg,O("play.mobile_press_to_play"),e.puckColor,e.puckHeight,e.canvasWidth/2,e.gameZoneHeight+(e.canvasHeight-e.gameZoneHeight)/2)):m&&eg.fillRect(e.offsetXRoundedDown,e.gameZoneHeight-1,e.gameZoneWidthRoundedUp,1),l&&eg.resetTransform()}}(_r)),_r.running&&function(e){if(N("record")){var _;n&&(_=e,i&&(i.drawImage(eh,_.offsetXRoundedDown,0,_.gameZoneWidthRoundedUp,_.gameZoneHeight,0,0,o.width,o.height),i.fillStyle="#FFF",i.textBaseline="top",i.font="12px monospace",i.textAlign="right",i.fillText(_.score.toString(),o.width-12,12),i.textAlign="left",i.fillText("Level "+(_.currentLevel+1)+"/"+ei(_),12,12)),(null==l?void 0:l.requestFrame)?null==l||l.requestFrame():(null==n?void 0:n.requestFrame)&&n.requestFrame())}}(_r),requestAnimationFrame(e)}(),window.stressTest=function(){return _a({level:"Shark",perks:{sapper:2,pierce:10,multiball:3}})}}();</script> </body></html> |