{"version":3,"file":"frontpage.09183d918fc38d4deed2.js","mappings":"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","sources":["webpack://wp/./locales/ sync ^\\.\\/.*\\.yml$","webpack://wp/./modules/engine/koa/error/locales/network/ sync ^\\.\\/.*\\.yml$","webpack://wp/./modules/newsletter/locales/client/ sync ^\\.\\/.*\\.yml$","webpack://wp/./modules/client/config.js","webpack://wp/./modules/client/delegate.js","webpack://wp/./modules/client/getCsrfCookie.js","webpack://wp/./modules/client/notification/index.js","webpack://wp/./modules/client/recaptcha/index.js","webpack://wp/./modules/client/recaptcha/initForms.js","webpack://wp/./modules/client/recaptcha/loadScript.js","webpack://wp/./modules/client/recaptcha/recaptcha.js","webpack://wp/./modules/client/spinner.js","webpack://wp/./modules/client/xhr.js","webpack://wp/./modules/engine/i18n/t.js","webpack://wp/./modules/engine/text-utils/pluralize.js","webpack://wp/./modules/newsletter/client/index.js","webpack://wp/./modules/newsletter/client/multiSelect.js","webpack://wp/./node_modules/babelfish/index.js","webpack://wp/./node_modules/babelfish/lib/parser.js","webpack://wp/./node_modules/plurals-cldr/index.js","webpack://wp/./locales/ko.yml","webpack://wp/./modules/engine/koa/error/locales/network/ko.yml","webpack://wp/./modules/newsletter/locales/client/ko.yml","webpack://wp/webpack/bootstrap","webpack://wp/webpack/runtime/define property getters","webpack://wp/webpack/runtime/hasOwnProperty shorthand","webpack://wp/webpack/runtime/make namespace object","webpack://wp/./modules/frontpage/client/index.js"],"sourcesContent":["var map = {\n\t\"./ko.yml\": 912\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 205;","var map = {\n\t\"./ko.yml\": 81\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 188;","var map = {\n\t\"./ko.yml\": 834\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 51;","module.exports = {\n lang: LANG,\n localCurrency: localCurrency,\n shopCurrency: shopCurrency,\n env: NODE_ENV,\n rateShopTo: rateShopTo,\n countryCode: countryCode,\n ordersMail: ordersMail,\n providers: providers,\n stripeKey: stripeKey,\n paypalClientId: paypalClientId,\n telegramBotId: telegramBotId,\n lookatCodeUrlBase: lookatCodeUrlBase,\n isRTL: isRTL\n};\n","\nfunction findDelegateTarget(event, selector) {\n let currentNode = event.target;\n while (currentNode) {\n if (currentNode.matches(selector)) {\n return currentNode;\n }\n\n if (currentNode == event.currentTarget) {\n break;\n }\n currentNode = currentNode.parentElement;\n }\n return null;\n}\n\n// delegate(table, 'th', click, handler)\n// table\n// thead\n// th ^*\n// code <--\nfunction delegate(topElement, selector, eventName, handler, context) {\n /* jshint -W040 */\n topElement.addEventListener(eventName, function(event) {\n let found = findDelegateTarget(event, selector);\n\n // .currentTarget is read only, I can not overwrite it to the \"found\" element\n // Object.create wrapper would break event.preventDefault()\n // so, keep in mind:\n // --> event.currentTarget is always the top-level (delegating) element!\n // use \"this\" to get the found target\n\n event.delegateTarget = found; // use instead of \"this\" in object methods\n\n if (found) {\n // if in context of object, use object as this,\n handler.call(context || this, event);\n }\n });\n}\n\ndelegate.delegateMixin = function(obj) {\n obj.delegate = function(selector, eventName, handler) {\n delegate(this.elem, selector, eventName, handler, this);\n };\n};\n\nmodule.exports = delegate;\n\n","module.exports = function() {\n let csrfCookie = document.cookie.match(/XSRF-TOKEN=([\\w-]+)/);\n return csrfCookie ? csrfCookie[1] : null;\n};\n\n","/**\n * For new notification types extend Notification\n */\n\nlet delegate = require('client/delegate');\n\n/**\n * Calculates translateY positions when notifications are added/removed\n */\nclass NotificationManager {\n\n constructor(options = {}) {\n this.notifications = [];\n this.verticalSpace = options.verticalSpace || 8;\n }\n\n register(notification) {\n this.notifications.unshift(notification);\n setTimeout(() => this.recalculate(), 20);\n }\n\n unregister(notification) {\n let idx = this.notifications.indexOf(notification);\n this.notifications.splice(idx, 1);\n this.recalculate();\n }\n\n recalculate() {\n let top = this.verticalSpace;\n this.notifications.forEach(notification => {\n notification.top = top;\n top += notification.height + this.verticalSpace;\n });\n }\n\n}\n\n// if this module is included into different webpack builds,\n// ensure they share the same manager object\nexport function init(options) {\n if (!window.notificationManager) {\n window.notificationManager = new NotificationManager(options);\n }\n}\n\n\nclass Notification {\n\n constructor(html, type, timeout) {\n let elemHtml = `
\n
${html}
\n
`;\n\n document.body.insertAdjacentHTML(\"beforeEnd\", elemHtml);\n\n this.elem = document.body.lastElementChild;\n\n switch(timeout) {\n case undefined:\n this.timeout = this.TIMEOUT_DEFAULT;\n break;\n case 'slow':\n this.timeout = this.TIMEOUT_SLOW;\n break;\n case 'fast':\n this.timeout = this.TIMEOUT_FAST;\n break;\n default:\n this.timeout = timeout;\n }\n\n\n window.notificationManager.register(this);\n this.setupCloseHandler();\n this.setupCloseTimeout();\n }\n\n get TIMEOUT_DEFAULT() {\n return 3000;\n }\n\n get TIMEOUT_SLOW() {\n return 5000;\n }\n\n get TIMEOUT_FAST() {\n return 1500;\n }\n\n\n close() {\n if (!this.elem.parentNode) return; // already closed (by user click?)\n this.elem.remove();\n window.notificationManager.unregister(this);\n }\n\n setupCloseHandler() {\n this.delegate('.notification__close', 'click', () => this.close());\n }\n\n setupCloseTimeout() {\n if (this.timeout) {\n setTimeout(() => this.close(), this.timeout);\n }\n }\n\n get height() {\n return this.elem.offsetHeight;\n }\n\n set top(value) {\n this.elem.style.transform = 'translateY(' + value + 'px)';\n }\n\n}\n\ndelegate.delegateMixin(Notification.prototype);\n\n\nexport class Info extends Notification {\n\n constructor(html, timeout) {\n super(html, 'info', timeout);\n }\n\n}\n\nexport class Warning extends Notification {\n\n constructor(html, timeout) {\n super(html, 'warning', timeout);\n }\n}\n\nexport class Success extends Notification {\n\n constructor(html, timeout) {\n super(html, 'success', timeout);\n }\n\n}\n\nexport class Error extends Notification {\n\n constructor(html, timeout) {\n super(html, 'error', timeout);\n }\n\n\n get TIMEOUT_DEFAULT() {\n return 5000;\n }\n\n\n}\n\n/*\nexport class Test extends Notification {\n\n constructor(html) {\n super(html, 'error');\n }\n\n\n get TIMEOUT_DEFAULT() {\n return null;\n }\n\n\n}\n\nexports.Test = Test;\n*/\n","// @see https://stackoverflow.com/questions/48224799/test-invisible-recaptcha hot to test captcha\n\nasync function init() {\n if (!window.RECAPTCHA_ID) return;\n\n if (init.promise) return init.promise;\n\n init.promise = new Promise((resolve, reject) => {\n window.recaptchaCallback = resolve;\n let script = document.createElement('script');\n script.src = `https://www.google.com/recaptcha/api.js?onload=recaptchaCallback&render=explicit`;\n script.onerror = reject;\n document.head.appendChild(script);\n });\n\n return init.promise;\n}\n\nexports.Recaptcha = require('./recaptcha');\n\nexports.initForms = require('./initForms');","let loadScript = require('./loadScript');\nlet Recaptcha = require('./recaptcha');\n\nmodule.exports = async function() {\n let submitButtons = document.querySelectorAll('[data-recaptcha-submit]');\n if (!submitButtons.length) return;\n\n for(let button of submitButtons) {\n button.disabled = true;\n }\n\n await loadScript();\n\n for(let button of submitButtons) {\n let form = button.form;\n \n let recaptcha = new Recaptcha(form);\n \n form.onsubmit = async (event) => {\n event.preventDefault();\n await recaptcha.validateForm(form);\n \n if (form.checkValidity()) {\n form.submit();\n } else {\n form.reportValidity();\n }\n }\n\n button.disabled = false;\n }\n\n}","let promise;\n\nmodule.exports = async function loadScript() {\n if (!window.RECAPTCHA_ID) return;\n\n if (promise) return promise;\n\n promise = new Promise((resolve, reject) => {\n window.recaptchaCallback = resolve;\n let script = document.createElement('script');\n script.src = `https://www.google.com/recaptcha/api.js?onload=recaptchaCallback&render=explicit`;\n script.onerror = reject;\n document.head.appendChild(script);\n });\n\n return promise;\n}\n\n","let loadScript = require('./loadScript');\n\nmodule.exports = class Recaptcha {\n constructor(elem) {\n this.elem = elem;\n\n this.renderPromise = new Promise((resolve, reject) => {\n this.renderPromiseResolve = resolve;\n this.renderPromiseReject = reject;\n });\n\n this.render();\n }\n\n async render() {\n if (!window.RECAPTCHA_ID) return;\n\n // console.log('RENDER');\n \n if (this.widgetId !== undefined) return; // already rendered\n\n await loadScript();\n\n let container = document.createElement('div');\n this.elem.append(container);\n this.widgetId = grecaptcha.render(container, {\n sitekey: window.RECAPTCHA_ID,\n size: 'invisible',\n callback: this.renderPromiseResolve,\n });\n\n // console.log('RENDERED', this.widgetId);\n }\n\n async execute() {\n if (!window.RECAPTCHA_ID) return '';\n await this.render();\n\n let token = grecaptcha.getResponse(this.widgetId);\n\n // console.log(\"TOKEN\", token);\n if (token) {\n // already resolved\n return token;\n }\n\n // prevent body scroll while modal captcha is open\n // document.body.classList.add('overflow-hidden');\n // this.renderPromise.then(() => document.body.classList.remove('overflow-hidden'));\n\n grecaptcha.execute(this.widgetId);\n\n // console.log('EXECUTED', this.widgetId);\n return this.renderPromise;\n }\n\n async validateForm(form) {\n if (!window.RECAPTCHA_ID) return;\n\n let token = await this.execute();\n\n // console.log(\"VALIDATE TOKEN\", token);\n let input = form.elements['g-recaptcha-response'];\n if (!input) {\n input = document.createElement('input');\n input.name = 'g-recaptcha-response';\n input.type = 'hidden';\n form.append(input);\n }\n\n input.value = token;\n }\n};\n","// Usage:\n// 1) new Spinner({ elem: elem}) -> start/stop()\n// 2) new Spinner() -> somewhere.append(spinner.elem) -> start/stop\nfunction Spinner(options) {\n options = options || {};\n this.elem = options.elem;\n\n this.size = options.size || 'medium';\n // any class to add to spinner (make spinner special here)\n this.class = options.class ? (' ' + options.class) : '';\n\n // any class to add to element (to hide it's content for instance)\n this.elemClass = options.elemClass;\n\n if (this.size != 'medium' && this.size != 'small' && this.size != 'large') {\n throw new Error(\"Unsupported size: \" + this.size);\n }\n\n if (!this.elem) {\n this.elem = document.createElement('div');\n }\n}\n\nSpinner.prototype.start = function() {\n if (this.elemClass) {\n this.elem.classList.toggle(this.elemClass);\n }\n\n this.elem.insertAdjacentHTML('beforeend', '');\n};\n\nSpinner.prototype.stop = function() {\n let spinnerElem = this.elem.querySelector('.spinner');\n if (!spinnerElem) return; // already stopped or never started\n\n spinnerElem.remove();\n\n if (this.elemClass) {\n this.elem.classList.toggle(this.elemClass);\n }\n};\n\nwindow.Spinner = Spinner;\n\nmodule.exports = Spinner;\n","let notification = require('client/notification');\nlet getCsrfCookie = require('client/getCsrfCookie');\n\nconst LANG = require('config').lang;\nconst t = require('engine/i18n/t');\n\nt.i18n.add('', require('../../locales/' + LANG + '.yml'));\nt.i18n.add('error.network', require('engine/koa/error/locales/network/' + LANG + '.yml'));\n\n// Wrapper about XHR\n// # Global Events\n// triggers document.loadstart/loadend on communication start/end\n// --> unless options.noGlobalEvents is set\n//\n// # Events\n// triggers fail/success on load end:\n// --> by default status=200 is ok, the others are failures\n// --> options.normalStatuses = [201,409] allow given statuses\n// --> fail event has .reason field\n// --> success event has .result field\n//\n// # JSON\n// --> send(object) calls JSON.stringify\n// --> adds Accept: json (we want json) by default, unless options.raw\n// if options.json or server returned json content type\n// --> autoparse json\n// --> fail if error\n//\n// # CSRF\n// --> requests sends header X-XSRF-TOKEN from cookie\n\nfunction xhr(options) {\n\n let request = new XMLHttpRequest();\n let method = options.method || 'GET';\n\n let body = options.body;\n let url = options.url;\n\n request.open(method, url, options.sync ? false : true);\n\n request.method = method;\n\n // token/header names same as angular $http for easier interop\n let csrfCookie = getCsrfCookie();\n if (csrfCookie && !options.skipCsrf) {\n request.setRequestHeader(\"X-XSRF-TOKEN\", csrfCookie);\n }\n\n if (options.responseType) request.responseType = options.responseType;\n\n if ({}.toString.call(body) == '[object Object]') {\n // must be OPENed to setRequestHeader\n request.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n body = JSON.stringify(body);\n }\n\n if (!options.noDocumentEvents) {\n request.addEventListener('loadstart', event => {\n request.timeStart = Date.now();\n let e = wrapEvent('xhrstart', event);\n document.dispatchEvent(e);\n });\n request.addEventListener('loadend', event => {\n let e = wrapEvent('xhrend', event);\n document.dispatchEvent(e);\n });\n request.addEventListener('success', event => {\n let e = wrapEvent('xhrsuccess', event);\n e.result = event.result;\n document.dispatchEvent(e);\n });\n request.addEventListener('fail', event => {\n let e = wrapEvent('xhrfail', event);\n e.reason = event.reason;\n document.dispatchEvent(e);\n });\n }\n\n if (!options.raw) { // means we want json\n request.setRequestHeader(\"Accept\", \"application/json\");\n }\n\n request.setRequestHeader('X-Requested-With', \"XMLHttpRequest\");\n\n let normalStatuses = options.normalStatuses || [200];\n\n function wrapEvent(name, e) {\n let event = new CustomEvent(name);\n event.originalEvent = e;\n return event;\n }\n\n function fail(reason, originalEvent) {\n let e = wrapEvent(\"fail\", originalEvent);\n e.reason = reason;\n request.dispatchEvent(e);\n }\n\n function success(result, originalEvent) {\n let e = wrapEvent(\"success\", originalEvent);\n e.result = result;\n request.dispatchEvent(e);\n }\n\n request.addEventListener(\"error\", e => {\n fail(t('error.network.server_connection_error'), e);\n });\n\n request.addEventListener(\"timeout\", e => {\n fail(t('error.network.server_request_timeout'), e);\n });\n\n request.addEventListener(\"abort\", e => {\n fail(t('error.network.request_aborted'), e);\n });\n\n request.addEventListener(\"load\", e => {\n if (!request.status) { // does that ever happen?\n fail(t('error.network.no_response'), e);\n return;\n }\n\n let result = !options.responseType || options.responseType === 'text' ? request.responseText : request.response;\n let contentType = request.getResponseHeader(\"Content-Type\") || '';\n if (contentType.match(/^application\\/json/) || options.json) { // autoparse json if WANT or RECEIVED json\n try {\n result = JSON.parse(result);\n } catch (e) {\n fail(t('error.network.invalid_format'), e);\n return;\n }\n }\n\n if (!normalStatuses.includes(request.status)) {\n\n // if we have a JSON response with {info:..} field, show info as error details\n let errorMessage = result.info ?\n t('error.network.server_error_info', {status: request.status, info: result.info}) : t('error.network.server_error', {status: request.status});\n\n fail(errorMessage, e);\n return;\n }\n\n success(result, e);\n });\n\n // defer to let other handlers be assigned\n setTimeout(function() {\n request.send(body);\n });\n\n return request;\n\n}\n\n\ndocument.addEventListener('xhrfail', function(event) {\n new notification.Error(event.reason);\n});\n\n\nmodule.exports = xhr;\n","'use strict';\n\nconst BabelFish = require('babelfish');\n\nconst i18n = new BabelFish('en');\n\nlet err = console.error;\n\nif (typeof IS_CLIENT === 'undefined') {\n const log = require('engine/log')();\n err = (...args) => log.error(...args);\n}\n\nfunction t(phrase) {\n\n if (!i18n.hasPhrase(LANG, phrase)) {\n if (process.env.NODE_ENV !== 'production' || process.env.I18N_DEBUG) {\n // silent in production to avoid spamming the logs\n err(\"No such phrase\", phrase);\n }\n }\n\n return i18n.t(LANG, ...arguments);\n}\n\nmodule.exports = t;\n\nconst LANG = require('config').lang;\n\nif (LANG !== 'en') {\n i18n.setFallback(LANG, 'en');\n}\n\ni18n.add = (...args) => {\n args = args.map(arg => arg.__esModule ? arg.default : arg);\n return i18n.addPhrase(LANG, ...args);\n};\n\nt.i18n = i18n;\n","function getPluralType(n) {\n if ((n % 10) == 1 && (n % 100) != 11) {\n return 'one';\n }\n if ((n % 10) >= 2 && (n % 10) <= 4 && ((n % 100) < 12 || (n % 100) > 14) && n == Math.floor(n)) {\n return 'few';\n }\n if ((n % 10) === 0 || ((n % 10) >= 5 && (n % 10) <= 9) || ((n % 100) >= 11 && (n % 100) <= 14) && n == Math.floor(n)) {\n return 'many';\n }\n return 'other';\n}\n\n// pluralize(10, 'груша', 'груши', 'груш')\nfunction pluralize(count, string) {\n var type = getPluralType(count);\n var values = string.split(',');\n\n switch (type) {\n case 'one':\n return values[0];\n case 'few':\n return values[1];\n case 'many':\n return values[2];\n default:\n throw new Error(\"Unsupported count: \" + count);\n }\n\n}\n\nmodule.exports = pluralize;\n","const Spinner = require('client/spinner');\nconst xhr = require('client/xhr');\nconst notification = require('client/notification');\nconst MultiSelect = require('./multiSelect');\nconst { Recaptcha } = require('client/recaptcha');\nconst t = require('engine/i18n/t');\n\nconst LANG = require('config').lang;\n\nt.i18n.add('newsletter.client', require('../locales/client/' + LANG + '.yml'));\n\nfunction submitSubscribeForm(form, onSuccess) {\n\n if (!form.elements.email.value) {\n return;\n }\n\n const slugElem = form.elements.slug;\n let slugs = [...slugElem.querySelectorAll('option:checked')].map(option => option.value);\n if (!slugs.length) slugs = slugElem.value;\n\n let userLogged;\n if (form.elements['subscribe-email']) userLogged = true;\n\n if (!userLogged && !slugs.length) {\n new notification.Error(t(\"newsletter.client.choose_newsletter\"));\n return;\n }\n\n\n const body = {\n email: form.elements.email.value,\n slug: slugs\n // no remove/replace => action is \"add\"\n };\n\n if (form.elements['g-recaptcha-response']) {\n body['g-recaptcha-response'] = form.elements['g-recaptcha-response'].value;\n }\n\n // if the user is logged in we let him manage his subscriptions, not only add\n\n if (userLogged) body.replace = true;\n\n const request = xhr({\n method: 'POST',\n url: form.action,\n body: body\n });\n\n const submitButton = form.querySelector('[type=\"submit\"]');\n\n const spinner = new Spinner({\n elem: submitButton,\n size: 'small',\n elemClass: 'button_loading'\n });\n spinner.start();\n submitButton.disabled = true;\n\n request.addEventListener('loadend', ()=> {\n spinner.stop();\n submitButton.disabled = false;\n });\n\n request.addEventListener('success', function(event) {\n if (this.status == 200) {\n new notification.Success(event.result.message, 'slow');\n\n let gaEvent = form.elements.gaEvent && JSON.parse(form.elements.gaEvent.value);\n\n if (gaEvent) {\n // GA4\n // window.ga('send', 'event', gaEvent);\n }\n\n onSuccess && onSuccess();\n } else {\n\n new notification.Error(event.result.message);\n }\n });\n\n}\n\n\nfunction initNewsletterForm() {\n let forms = document.querySelectorAll('[data-newsletter-subscribe-form]');\n\n for(let form of forms) {\n const isLogged = form.elements.email.type === 'hidden';\n const select = form.querySelector('.multiselect');\n\n if (select) {\n const multiSelect = new MultiSelect({ elem: select});\n const formButton = form.querySelector('button[type=\"submit\"]');\n const formButtonTextEl = formButton.querySelector('span');\n\n if (form.elements.slug) form.elements.slug.addEventListener('change', () => {\n formButton.disabled = !multiSelect.getValues().length && !isLogged;\n if (!multiSelect.getValues().length && isLogged) {\n formButtonTextEl.textContent = t('site.subscribe.button_unsubscribe');\n } else {\n formButtonTextEl.textContent = t('site.subscribe.button');\n }\n });\n }\n\n let recaptcha = new Recaptcha(form);\n\n form.onsubmit = async function(event) {\n event.preventDefault();\n\n await recaptcha.validateForm(form);\n\n submitSubscribeForm(form);\n };\n }\n}\n\nexports.initNewsletterForm = initNewsletterForm;\nexports.submitSubscribeForm = submitSubscribeForm;\n","const t = require('engine/i18n/t');\nconst pluralize = require('engine/text-utils/pluralize');\n\nclass multiSelect {\n constructor(options) {\n this.elem = options.elem;\n this.select = this.elem.querySelector('select');\n this.textContainer = this.elem.querySelector('.multiselect__active-button');\n this.options = [...this.select.querySelectorAll('option')];\n this.defaultValue = this.textContainer.textContent;\n this.status = 'closed';\n this.elem.querySelector('.multiselect__container').insertAdjacentHTML('beforeend', this.createDropdown());\n this.setButtonTitle();\n this.bindHandlers();\n }\n\n createDropdown() {\n return `\n
\n
\n ${ this.options.map(option => {\n return `
\n ${option.textContent + (option.value === 'advanced' ? `${t('site.subscribe.common_updates_text')}` : ``)}\n
`;\n }).join(``)\n }\n
\n
\n `;\n }\n\n bindHandlers() {\n this.textContainer.addEventListener('click', this.toggleDropdown.bind(this));\n for (let item of this.elem.querySelectorAll('.multiselect__item')) {\n item.addEventListener('click', this.onChange.bind(this));\n }\n this.select.addEventListener('change', this.setButtonTitle.bind(this));\n }\n\n toggleDropdown(e) {\n e.stopPropagation();\n this.elem.classList.toggle('multiselect_opened');\n this.toggleStatus();\n if (this.status === 'opened') {\n this.boundCloseDropdown = this.closeDropdown.bind(this);\n document.addEventListener('click', this.boundCloseDropdown);\n }\n }\n\n toggleStatus() {\n if (this.status === 'closed') this.status = 'opened';\n else this.status = 'closed';\n }\n\n closeDropdown(e) {\n if (e.target.closest('.multiselect__dropdown-container')) return;\n this.status = 'closed';\n this.elem.classList.remove('multiselect_opened');\n document.removeEventListener('click', this.boundCloseDropdown);\n }\n\n onChange(e) {\n const item = e.target.closest('.multiselect__item');\n item.classList.toggle('multiselect__item_checked');\n\n const targetOption = this.options.filter(option => option.value === item.getAttribute('data-value')).pop();\n targetOption.selected = item.classList.contains('multiselect__item_checked');\n\n this.select.dispatchEvent(new Event('change'));\n }\n\n setButtonTitle() {\n const values = this.getValues();\n\n if (values.length === 1 && values.includes('advanced')) {\n this.textContainer.textContent = this.defaultValue;\n } else if (values.length) {\n this.textContainer.textContent = values.length + ' ' + pluralize(values.length, t('site.subscribe.newsletters'));\n } else {\n this.textContainer.textContent = t('site.subscribe.no_selected');\n }\n }\n\n getValues() {\n return this.options.filter(option => option.selected).map(option => option.value);\n }\n}\n\nmodule.exports = multiSelect;\n","/**\n * class BabelFish\n *\n * Internalization and localization library that makes i18n and l10n fun again.\n *\n * ##### Example\n *\n * ```javascript\n * var BabelFish = require('babelfish'),\n * i18n = new BabelFish();\n * ```\n *\n * or\n *\n * ```javascript\n * var babelfish = require('babelfish'),\n * i18n = babelfish();\n * ```\n **/\n\n\n'use strict';\n\n\nvar parser = require('./lib/parser');\nvar plural = require('plurals-cldr');\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction isString(obj) { return _class(obj) === '[object String]'; }\nfunction isNumber(obj) { return !isNaN(obj) && isFinite(obj); }\nfunction isBoolean(obj) { return obj === true || obj === false; }\nfunction isFunction(obj) { return _class(obj) === '[object Function]'; }\nfunction isObject(obj) { return _class(obj) === '[object Object]'; }\n\n/*istanbul ignore next*/\nvar isArray = Array.isArray || function _isArray(obj) {\n return _class(obj) === '[object Array]';\n};\n\n\n////////////////////////////////////////////////////////////////////////////////\n// The following two utilities (forEach and extend) are modified from Underscore\n//\n// http://underscorejs.org\n//\n// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.\n//\n// Underscore may be freely distributed under the MIT license\n////////////////////////////////////////////////////////////////////////////////\n\n\nvar nativeForEach = Array.prototype.forEach;\n\n\n// The cornerstone, an `each` implementation, aka `forEach`.\n// Handles objects with the built-in `forEach`, arrays, and raw objects.\n// Delegates to **ECMAScript 5**'s native `forEach` if available.\n/*istanbul ignore next*/\nfunction forEach(obj, iterator, context) {\n if (obj === null) {\n return;\n }\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i += 1) {\n iterator.call(context, obj[i], i, obj);\n }\n } else {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n iterator.call(context, obj[key], key, obj);\n }\n }\n }\n}\n\n\nvar formatRegExp = /%[sdj%]/g;\n\n/*istanbul ignore next*/\nfunction format(f) {\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function (x) {\n if (x === '%%') { return '%'; }\n if (i >= len) { return x; }\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n return JSON.stringify(args[i++]);\n default:\n return x;\n }\n });\n return str;\n}\n\n\n// helpers\n////////////////////////////////////////////////////////////////////////////////\n\n\n// Last resort locale, that exists for sure\nvar GENERIC_LOCALE = 'en';\n\n\n// flatten(obj) -> Object\n//\n// Flattens object into one-level dictionary.\n//\n// ##### Example\n//\n// var obj = {\n// abc: { def: 'foo' },\n// hij: 'bar'\n// };\n//\n// flatten(obj);\n// // -> { 'abc.def': 'foo', 'hij': 'bar' };\n//\nfunction flatten(obj) {\n var params = {};\n\n forEach(obj || {}, function (val, key) {\n if (val && typeof val === 'object') {\n forEach(flatten(val), function (sub_val, sub_key) {\n params[key + '.' + sub_key] = sub_val;\n });\n return;\n }\n\n params[key] = val;\n });\n\n return params;\n}\n\n\nvar keySeparator = '#@$';\n\nfunction makePhraseKey(locale, phrase) {\n return locale + keySeparator + phrase;\n}\n\n\nfunction searchPhraseKey(self, locale, phrase) {\n var key = makePhraseKey(locale, phrase);\n var storage = self._storage;\n\n // direct search first\n if (storage.hasOwnProperty(key)) { return key; }\n\n // don't try follbacks for default locale\n if (locale === self._defaultLocale) { return null; }\n\n // search via fallback map cache\n var fb_cache = self._fallbacks_cache;\n if (fb_cache.hasOwnProperty(key)) { return fb_cache[key]; }\n\n // scan fallbacks & cache result\n var fb = self._fallbacks[locale] || [ self._defaultLocale ];\n var fb_key;\n\n for (var i = 0, l = fb.length; i < l; i++) {\n fb_key = makePhraseKey(fb[i], phrase);\n if (storage.hasOwnProperty(fb_key)) {\n // found - update cache and return result\n fb_cache[key] = fb_key;\n return fb_cache[key];\n }\n }\n\n // mark fb_cache entry empty for fast lookup on next request\n fb_cache[key] = null;\n return null;\n}\n\n\nfunction pluralizer(lang, val, forms) {\n var idx = plural.indexOf(lang, val);\n\n if (idx === -1) {\n return format('[pluralizer for \"%s\" locale not found]', lang);\n }\n\n if (typeof forms[idx] === 'undefined') {\n return format(\n '[plural form %d (\"%s\") not found in translation]',\n idx, plural.forms(lang)[idx]\n );\n }\n\n return forms[idx];\n}\n\n// public api (module)\n////////////////////////////////////////////////////////////////////////////////\n\n\n/**\n * new BabelFish([defaultLocale = 'en'])\n *\n * Initiates new instance of BabelFish.\n *\n * __Note!__ you can omit `new` for convenience, direct call will return\n * new instance too.\n **/\nfunction BabelFish(defaultLocale) {\n if (!(this instanceof BabelFish)) { return new BabelFish(defaultLocale); }\n\n this._defaultLocale = defaultLocale ? String(defaultLocale) : GENERIC_LOCALE;\n\n // hash of locale => [ fallback1, fallback2, ... ] pairs\n this._fallbacks = {};\n\n // fallback cache for each phrase\n //\n // {\n // locale_key: fallback_key\n // }\n //\n // fallback_key can be null if search failed\n //\n this._fallbacks_cache = {};\n\n // storage of compiled translations\n //\n // {\n // locale + @#$ + phrase_key: {\n // locale: locale name - can be different for fallbacks\n // translation: original translation phrase or data variable/object\n // raw: true/false - does translation contain plain data or\n // string to compile\n // compiled: copiled translation fn or plain string\n // }\n // ...\n // }\n //\n this._storage = {};\n\n // cache for complex plural parts (with params)\n //\n // {\n // language: new BabelFish(language)\n // }\n //\n this._plurals_cache = {};\n}\n\n\n// public api (instance)\n////////////////////////////////////////////////////////////////////////////////\n\n\n/**\n * BabelFish#addPhrase(locale, phrase, translation [, flattenLevel]) -> BabelFish\n * - locale (String): Locale of translation\n * - phrase (String|Null): Phrase ID, e.g. `apps.forum`\n * - translation (String|Object|Array|Number|Boolean): Translation or an object\n * with nested phrases, or a pure object.\n * - flattenLevel (Number|Boolean): Optional, 0..infinity. `Infinity` by default.\n * Define \"flatten\" deepness for loaded object. You can also use\n * `true` as `0` or `false` as `Infinity`.\n *\n *\n * ##### Flatten & using JS objects\n *\n * By default all nested properties are normalized to strings like \"foo.bar.baz\",\n * and if value is string, it will be compiled with babelfish notation.\n * If deepness is above `flattenLevel` OR value is not object and not string,\n * it will be used \"as is\". Note, only JSON stringifiable data should be used.\n *\n * In short: you can safely pass `Array`, `Number` or `Boolean`. For objects you\n * should define flatten level or disable it compleetely, to work with pure data.\n *\n * Pure objects can be useful to prepare bulk data for external libraries, like\n * calendars, time/date generators and so on.\n *\n * ##### Example\n *\n * ```javascript\n * i18n.addPhrase('ru-RU',\n * 'apps.forums.replies_count',\n * '#{count} %{ответ|ответа|ответов}:count в теме');\n *\n * // equals to:\n * i18n.addPhrase('ru-RU',\n * 'apps.forums',\n * { replies_count: '#{count} %{ответ|ответа|ответов}:count в теме' });\n * ```\n **/\nBabelFish.prototype.addPhrase = function _addPhrase(locale, phrase, translation, flattenLevel) {\n var self = this, fl;\n\n // Calculate flatten level. Infinity by default\n if (isBoolean(flattenLevel)) {\n fl = flattenLevel ? Infinity : 0;\n } else if (isNumber(flattenLevel)) {\n fl = Math.floor(flattenLevel);\n if (fl < 0) {\n throw new TypeError('Invalid flatten level (should be >= 0).');\n }\n } else {\n fl = Infinity;\n }\n\n if (isObject(translation) && (fl > 0)) {\n // recursive object walk, until flattenLevel allows\n forEach(translation, function (val, key) {\n self.addPhrase(locale, (phrase ? phrase + '.' : '') + key, val, fl - 1);\n });\n return this;\n }\n\n if (isString(translation)) {\n this._storage[makePhraseKey(locale, phrase)] = {\n translation: translation,\n locale: locale,\n raw: false\n };\n } else if (isArray(translation) ||\n isNumber(translation) ||\n isBoolean(translation) ||\n (fl === 0 && isObject(translation))) {\n // Pure objects are stored without compilation\n // Limit allowed types.\n this._storage[makePhraseKey(locale, phrase)] = {\n translation: translation,\n locale: locale,\n raw: true\n };\n } else {\n // `Regex`, `Date`, `Uint8Array` and others types will\n // fuckup `stringify()`. Don't allow here.\n // `undefined` also means wrong param in real life.\n // `null` can be allowed when examples from real life available.\n throw new TypeError('Invalid translation - [String|Object|Array|Number|Boolean] expected.');\n }\n\n self._fallbacks_cache = {};\n\n return this;\n};\n\n\n/**\n * BabelFish#setFallback(locale, fallbacks) -> BabelFish\n * - locale (String): Target locale\n * - fallbacks (Array): List of fallback locales\n *\n * Set fallbacks for given locale.\n *\n * When `locale` has no translation for the phrase, `fallbacks[0]` will be\n * tried, if translation still not found, then `fallbacks[1]` will be tried\n * and so on. If none of fallbacks have translation,\n * default locale will be tried as last resort.\n *\n * ##### Errors\n *\n * - throws `Error`, when `locale` equals default locale\n *\n * ##### Example\n *\n * ```javascript\n * i18n.setFallback('ua-UK', ['ua', 'ru']);\n * ```\n **/\nBabelFish.prototype.setFallback = function _setFallback(locale, fallbacks) {\n var def = this._defaultLocale;\n\n if (def === locale) {\n throw new Error(\"Default locale can't have fallbacks\");\n }\n\n var fb = isArray(fallbacks) ? fallbacks.slice() : [ fallbacks ];\n if (fb[fb.length - 1] !== def) { fb.push(def); }\n\n this._fallbacks[locale] = fb;\n this._fallbacks_cache = {};\n\n return this;\n};\n\n\nvar CAN_HAVE_DIRECTIVES_RE = /#\\{|\\(\\(|\\\\\\\\/;\n\n// Compiles given string into function. Used to compile phrases,\n// which contains `plurals`, `variables`, etc.\nfunction compile(self, str, locale) {\n var nodes, buf, key, strict_exec, forms_exec, plurals_cache;\n\n // Quick check to avoid parse in most cases :)\n if (!CAN_HAVE_DIRECTIVES_RE.test(str)) { return str; }\n\n nodes = parser.parse(str);\n\n if (nodes.length === 1 && nodes[0].type === 'literal') {\n return nodes[0].text;\n }\n\n // init cache instance for plural parts, if not exists yet.\n if (!self._plurals_cache[locale]) {\n self._plurals_cache[locale] = new BabelFish(locale);\n }\n plurals_cache = self._plurals_cache[locale];\n\n buf = [];\n buf.push([ 'var str = \"\", strict, strict_exec, forms, forms_exec, plrl, cache, loc, loc_plzr, anchor;' ]);\n buf.push('params = flatten(params);');\n\n forEach(nodes, function (node) {\n if (node.type === 'literal') {\n buf.push(format('str += %j;', node.text));\n return;\n }\n\n if (node.type === 'variable') {\n key = node.anchor;\n buf.push(format(\n 'str += (\"undefined\" === typeof (params[%j])) ? \"[missed variable: %s]\" : params[%j];',\n key, key, key\n ));\n return;\n }\n\n // should never happen\n /*istanbul ignore next*/\n if (node.type !== 'plural') { throw new Error('Unknown node type'); }\n\n //\n // Compile plural\n //\n\n key = node.anchor;\n // check if plural parts are plain strings or executable,\n // and add executable to \"cache\" instance of babelfish\n // plural part text will be used as translation key\n strict_exec = {};\n forEach(node.strict, function (text, k) {\n var parsed = parser.parse(text);\n if (parsed.length === 1 && parsed[0].type === 'literal') {\n strict_exec[k] = false;\n // patch with unescaped value for direct extract\n node.strict[k] = parsed[0].text;\n return;\n }\n\n strict_exec[k] = true;\n if (!plurals_cache.hasPhrase(locale, text, true)) {\n plurals_cache.addPhrase(locale, text, text);\n }\n });\n\n forms_exec = {};\n forEach(node.forms, function (text, idx) {\n var parsed = parser.parse(text), unescaped;\n if (parsed.length === 1 && parsed[0].type === 'literal') {\n // patch with unescaped value for direct extract\n unescaped = parsed[0].text;\n node.forms[idx] = unescaped;\n forms_exec[unescaped] = false;\n return;\n }\n\n forms_exec[text] = true;\n if (!plurals_cache.hasPhrase(locale, text, true)) {\n plurals_cache.addPhrase(locale, text, text);\n }\n });\n /*eslint-disable space-in-parens*/\n buf.push(format('loc = %j;', locale));\n buf.push(format('loc_plzr = %j;', locale.split(/[-_]/)[0]));\n buf.push(format('anchor = params[%j];', key));\n buf.push(format('cache = this._plurals_cache[loc];'));\n buf.push(format('strict = %j;', node.strict));\n buf.push(format('strict_exec = %j;', strict_exec));\n buf.push(format('forms = %j;', node.forms));\n buf.push(format('forms_exec = %j;', forms_exec));\n buf.push( 'if (+(anchor) != anchor) {');\n buf.push(format(' str += \"[invalid plurals amount: %s(\" + anchor + \")]\";', key));\n buf.push( '} else {');\n buf.push( ' if (strict[anchor] !== undefined) {');\n buf.push( ' plrl = strict[anchor];');\n buf.push( ' str += strict_exec[anchor] ? cache.t(loc, plrl, params) : plrl;');\n buf.push( ' } else {');\n buf.push( ' plrl = pluralizer(loc_plzr, +anchor, forms);');\n buf.push( ' str += forms_exec[plrl] ? cache.t(loc, plrl, params) : plrl;');\n buf.push( ' }');\n buf.push( '}');\n return;\n });\n\n buf.push('return str;');\n\n /*eslint-disable no-new-func*/\n return new Function('params', 'flatten', 'pluralizer', buf.join('\\n'));\n}\n\n\n/**\n * BabelFish#translate(locale, phrase[, params]) -> String\n * - locale (String): Locale of translation\n * - phrase (String): Phrase ID, e.g. `app.forums.replies_count`\n * - params (Object|Number|String): Params for translation. `Number` & `String`\n * will be coerced to `{ count: X, value: X }`\n *\n * ##### Example\n *\n * ```javascript\n * i18n.addPhrase('ru-RU',\n * 'apps.forums.replies_count',\n * '#{count} ((ответ|ответа|ответов)) в теме');\n *\n * // ...\n *\n * i18n.translate('ru-RU', 'app.forums.replies_count', { count: 1 });\n * i18n.translate('ru-RU', 'app.forums.replies_count', 1});\n * // -> '1 ответ'\n *\n * i18n.translate('ru-RU', 'app.forums.replies_count', { count: 2 });\n * i18n.translate('ru-RU', 'app.forums.replies_count', 2);\n * // -> '2 ответa'\n * ```\n **/\nBabelFish.prototype.translate = function _translate(locale, phrase, params) {\n var key = searchPhraseKey(this, locale, phrase);\n var data;\n\n if (!key) {\n return locale + ': No translation for [' + phrase + ']';\n }\n\n data = this._storage[key];\n\n // simple string or other pure object\n if (data.raw) { return data.translation; }\n\n // compile data if not done yet\n if (!data.hasOwnProperty('compiled')) {\n // We should use locale from phrase, because of possible fallback,\n // to keep plural locales in sync.\n data.compiled = compile(this, data.translation, data.locale);\n }\n\n // return simple string immediately\n if (!isFunction(data.compiled)) {\n return data.compiled;\n }\n\n //\n // Generate \"complex\" phrase\n //\n\n // Sugar: coerce numbers & strings to { count: X, value: X }\n if (isNumber(params) || isString(params)) {\n params = { count: params, value: params };\n }\n\n return data.compiled.call(this, params, flatten, pluralizer);\n};\n\n\n/**\n * BabelFish#hasPhrase(locale, phrase) -> Boolean\n * - locale (String): Locale of translation\n * - phrase (String): Phrase ID, e.g. `app.forums.replies_count`\n * - noFallback (Boolean): Disable search in fallbacks\n *\n * Returns whenever or not there's a translation of a `phrase`.\n **/\nBabelFish.prototype.hasPhrase = function _hasPhrase(locale, phrase, noFallback) {\n return noFallback ?\n this._storage.hasOwnProperty(makePhraseKey(locale, phrase))\n :\n searchPhraseKey(this, locale, phrase) ? true : false;\n};\n\n\n/**\n * BabelFish#getLocale(locale, phrase) -> String|null\n * - locale (String): Locale of translation\n * - phrase (String): Phrase ID, e.g. `app.forums.replies_count`\n * - noFallback (Boolean): Disable search in fallbacks\n *\n * Similar to [[BabelFish#hasPhrase]], but returns real locale of requested\n * phrase, or `null` if nothing found. Can be useful for dynamic dependencies\n * init. For example, when you fetch i10n config as single object and create\n * phrases from it's content.\n **/\nBabelFish.prototype.getLocale = function _getLocale(locale, phrase, noFallback) {\n if (noFallback) {\n return this._storage.hasOwnProperty(makePhraseKey(locale, phrase)) ? locale : null;\n }\n\n var key = searchPhraseKey(this, locale, phrase);\n\n return key ? key.split(keySeparator, 2)[0] : null;\n};\n\n\n/** alias of: BabelFish#translate\n * BabelFish#t(locale, phrase[, params]) -> String\n **/\nBabelFish.prototype.t = BabelFish.prototype.translate;\n\n\n/**\n * BabelFish#stringify(locale) -> String\n * - locale (String): Locale of translation\n *\n * Returns serialized locale data, including fallbacks.\n * It can be loaded back via `load()` method.\n **/\nBabelFish.prototype.stringify = function _stringify(locale) {\n var self = this;\n\n // Collect unique keys\n var unique = {};\n\n forEach(this._storage, function (val, key) {\n unique[key.split(keySeparator)[1]] = true;\n });\n\n // Collect phrases (with fallbacks)\n var result = {};\n\n forEach(unique, function (val, key) {\n var k = searchPhraseKey(self, locale, key);\n // if key was just a garbage from another\n // and doesn't fit into fallback chain for current locale - skip it\n if (!k) { return; }\n // create namespace if not exists\n var l = self._storage[k].locale;\n if (!result[l]) { result[l] = {}; }\n result[l][key] = self._storage[k].translation;\n });\n\n var out = {\n fallback: {},\n locales: result\n };\n\n // Get fallback rule. Cut auto-added fallback to default locale\n var fallback = (self._fallbacks[locale] || []).slice(0, -1);\n if (fallback.length) {\n out.fallback[locale] = fallback;\n }\n\n return JSON.stringify(out);\n};\n\n\n/**\n * BabelFish#load(data) -> BabelFish\n * - data (Object|String): data from `stringify()` method, as object or string.\n *\n * Batch load phrases data, prepared with `stringify()` method.\n * Useful at browser side.\n **/\nBabelFish.prototype.load = function _load(data) {\n var self = this;\n\n if (isString(data)) { data = JSON.parse(data); }\n\n forEach(data.locales, function (phrases, locale) {\n forEach(phrases, function (translation, key) {\n self.addPhrase(locale, key, translation, 0);\n });\n });\n\n forEach(data.fallback, function (rule, locale) {\n self.setFallback(locale, rule);\n });\n\n return this;\n};\n\n// export module\nmodule.exports = BabelFish;\n","module.exports = (function() {\n /*\n * Generated by PEG.js 0.8.0.\n *\n * http://pegjs.majda.cz/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function SyntaxError(message, expected, found, offset, line, column) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.offset = offset;\n this.line = line;\n this.column = column;\n\n this.name = \"SyntaxError\";\n }\n\n peg$subclass(SyntaxError, Error);\n\n function parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = [],\n peg$c1 = peg$FAILED,\n peg$c2 = \"((\",\n peg$c3 = { type: \"literal\", value: \"((\", description: \"\\\"((\\\"\" },\n peg$c4 = \"))\",\n peg$c5 = { type: \"literal\", value: \"))\", description: \"\\\"))\\\"\" },\n peg$c6 = null,\n peg$c7 = function(forms, anchor) {\n return {\n type: 'plural',\n forms: regularForms(forms),\n strict: strictForms(forms),\n anchor: anchor || 'count'\n };\n },\n peg$c8 = \"|\",\n peg$c9 = { type: \"literal\", value: \"|\", description: \"\\\"|\\\"\" },\n peg$c10 = function(part, more) {\n return [part].concat(more);\n },\n peg$c11 = function(part) {\n return [part];\n },\n peg$c12 = \"=\",\n peg$c13 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c14 = /^[0-9]/,\n peg$c15 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c16 = \" \",\n peg$c17 = { type: \"literal\", value: \" \", description: \"\\\" \\\"\" },\n peg$c18 = function(strict, form) {\n return {\n strict: strict.join(''),\n text: form.join('')\n }\n },\n peg$c19 = function() {\n return {\n text: text()\n };\n },\n peg$c20 = \"\\\\\",\n peg$c21 = { type: \"literal\", value: \"\\\\\", description: \"\\\"\\\\\\\\\\\"\" },\n peg$c22 = /^[\\\\|)(]/,\n peg$c23 = { type: \"class\", value: \"[\\\\\\\\|)(]\", description: \"[\\\\\\\\|)(]\" },\n peg$c24 = function(char) {\n return char;\n },\n peg$c25 = void 0,\n peg$c26 = { type: \"any\", description: \"any character\" },\n peg$c27 = function() {\n return text();\n },\n peg$c28 = \":\",\n peg$c29 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c30 = function(name) {\n return name;\n },\n peg$c31 = \"#{\",\n peg$c32 = { type: \"literal\", value: \"#{\", description: \"\\\"#{\\\"\" },\n peg$c33 = \"}\",\n peg$c34 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c35 = function(anchor) {\n return {\n type: 'variable',\n anchor: anchor\n };\n },\n peg$c36 = \".\",\n peg$c37 = { type: \"literal\", value: \".\", description: \"\\\".\\\"\" },\n peg$c38 = function() {\n return text()\n },\n peg$c39 = /^[a-zA-Z_$]/,\n peg$c40 = { type: \"class\", value: \"[a-zA-Z_$]\", description: \"[a-zA-Z_$]\" },\n peg$c41 = /^[a-zA-Z0-9_$]/,\n peg$c42 = { type: \"class\", value: \"[a-zA-Z0-9_$]\", description: \"[a-zA-Z0-9_$]\" },\n peg$c43 = function(lc) { return lc; },\n peg$c44 = function(literal_chars) {\n return {\n type: 'literal',\n text: literal_chars.join('')\n };\n },\n peg$c45 = /^[\\\\#()|]/,\n peg$c46 = { type: \"class\", value: \"[\\\\\\\\#()|]\", description: \"[\\\\\\\\#()|]\" },\n\n peg$currPos = 0,\n peg$reportedPos = 0,\n peg$cachedPos = 0,\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$reportedPos, peg$currPos);\n }\n\n function offset() {\n return peg$reportedPos;\n }\n\n function line() {\n return peg$computePosDetails(peg$reportedPos).line;\n }\n\n function column() {\n return peg$computePosDetails(peg$reportedPos).column;\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n peg$reportedPos\n );\n }\n\n function error(message) {\n throw peg$buildException(message, null, peg$reportedPos);\n }\n\n function peg$computePosDetails(pos) {\n function advance(details, startPos, endPos) {\n var p, ch;\n\n for (p = startPos; p < endPos; p++) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== pos) {\n if (peg$cachedPos > pos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advance(peg$cachedPosDetails, peg$cachedPos, pos);\n peg$cachedPos = pos;\n }\n\n return peg$cachedPosDetails;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, pos) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0180-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1080-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n var posDetails = peg$computePosDetails(pos),\n found = pos < input.length ? input.charAt(pos) : null;\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n pos,\n posDetails.line,\n posDetails.column\n );\n }\n\n function peg$parsestart() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parseliteral();\n if (s1 === peg$FAILED) {\n s1 = peg$parseplural();\n if (s1 === peg$FAILED) {\n s1 = peg$parsevariable();\n }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseliteral();\n if (s1 === peg$FAILED) {\n s1 = peg$parseplural();\n if (s1 === peg$FAILED) {\n s1 = peg$parsevariable();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseplural() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c2) {\n s1 = peg$c2;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseplural_forms();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c4) {\n s3 = peg$c4;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseplural_anchor();\n if (s4 === peg$FAILED) {\n s4 = peg$c6;\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c7(s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parseplural_forms() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseplural_part();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 124) {\n s2 = peg$c8;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseplural_forms();\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c10(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseplural_part();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c11(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseplural_part() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s1 = peg$c12;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c14.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c14.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n }\n } else {\n s2 = peg$c1;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 32) {\n s3 = peg$c16;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s3 === peg$FAILED) {\n s3 = peg$c6;\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseplural_char();\n if (s5 !== peg$FAILED) {\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseplural_char();\n }\n } else {\n s4 = peg$c1;\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c18(s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseplural_char();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseplural_char();\n }\n } else {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c19();\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseplural_char() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c20;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s1 !== peg$FAILED) {\n if (peg$c22.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c23); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 124) {\n s2 = peg$c8;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s2 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c4) {\n s2 = peg$c4;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = peg$c25;\n } else {\n peg$currPos = s1;\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c26); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c27();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n }\n\n return s0;\n }\n\n function peg$parseplural_anchor() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s1 = peg$c28;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseidentifier();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c30(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parsevariable() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c31) {\n s1 = peg$c31;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseidentifier();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s3 = peg$c33;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c35(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parseidentifier() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseidentifier_part();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c36;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseidentifier();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseidentifier();\n }\n } else {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c38();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseidentifier_part();\n }\n\n return s0;\n }\n\n function peg$parseidentifier_part() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (peg$c39.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c27();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parseliteral() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseplural();\n if (s4 === peg$FAILED) {\n s4 = peg$parsevariable();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = peg$c25;\n } else {\n peg$currPos = s3;\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseliteral_char();\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s2;\n s3 = peg$c43(s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseplural();\n if (s4 === peg$FAILED) {\n s4 = peg$parsevariable();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = peg$c25;\n } else {\n peg$currPos = s3;\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseliteral_char();\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s2;\n s3 = peg$c43(s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n }\n } else {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c44(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseliteral_char() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c20;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s1 !== peg$FAILED) {\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n if (input.length > peg$currPos) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c26); }\n }\n }\n\n return s0;\n }\n\n\n function regularForms(forms) {\n var result = [];\n for (var i=0; i= 0; }\n\n\nadd([ 'af', 'an', 'asa', 'bem', 'bez', 'bg', 'brx', 'ce', 'cgg', 'chr', 'ckb', 'dv', 'ee', 'el', 'eo', 'eu', 'fo', 'fur', 'gsw', 'ha', 'haw', 'jgo', 'jmc', 'kaj', 'kcg', 'kkj', 'kl', 'ks', 'ksb', 'ku', 'ky', 'lb', 'lg', 'mas', 'mgo', 'ml', 'mn', 'nah', 'nb', 'nd', 'nn', 'nnh', 'no', 'nr', 'ny', 'nyn', 'om', 'os', 'pap', 'ps', 'rm', 'rof', 'rwk', 'saq', 'sd', 'sdh', 'seh', 'sn', 'so', 'ss', 'ssy', 'st', 'syr', 'ta', 'te', 'teo', 'tig', 'tn', 'tr', 'ts', 'ug', 'uz', 've', 'vo', 'vun', 'wae', 'xh', 'xog' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'ak', 'bho', 'guw', 'ln', 'mg', 'nso', 'pa', 'ti', 'wa' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return B(0, 1, n) ? 0 : 1;\n }\n});\n\nadd([ 'am', 'doi', 'fa', 'kn', 'pcm', 'zu' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return i === 0 || n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'ar', 'ars' ], {\n c: [ 0, 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n var n100 = n % 100;\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : B(3, 10, n100) ? 3 : B(11, 99, n100) ? 4 : 5;\n }\n});\n\nadd([ 'as', 'bn' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return i === 0 || n === 1 ? 0 : 1;\n },\n o: [ 1, 2, 3, 4, 5 ],\n oFn: function (n) {\n return IN([ 1, 5, 7, 8, 9, 10 ], n) ? 0 : IN([ 2, 3 ], n) ? 1 : n === 4 ? 2 : n === 6 ? 3 : 4;\n }\n});\n\nadd([ 'ast', 'de', 'et', 'fi', 'fy', 'gl', 'ia', 'io', 'nl', 'sw', 'ur', 'yi' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n }\n});\n\nadd([ 'az' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 3, 4, 5 ],\n oFn: function (n, i) {\n var i10 = i % 10, i100 = i % 100, i1000 = i % 1000;\n return IN([ 1, 2, 5, 7, 8 ], i10) || IN([ 20, 50, 70, 80 ], i100) ? 0 : IN([ 3, 4 ], i10) || IN([ 100, 200, 300, 400, 500, 600, 700, 800, 900 ], i1000) ? 1 : i === 0 || i10 === 6 || IN([ 40, 60, 90 ], i100) ? 2 : 3;\n }\n});\n\nadd([ 'bal' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'be' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return n10 === 1 && n100 !== 11 ? 0 : B(2, 4, n10) && !B(12, 14, n100) ? 1 : n10 === 0 || B(5, 9, n10) || B(11, 14, n100) ? 2 : 3;\n },\n o: [ 3, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return IN([ 2, 3 ], n10) && !IN([ 12, 13 ], n100) ? 0 : 1;\n }\n});\n\nadd([ 'bm', 'bo', 'dz', 'hnj', 'id', 'ig', 'ii', 'ja', 'jbo', 'jv', 'jw', 'kde', 'kea', 'km', 'ko', 'lkt', 'my', 'nqo', 'osa', 'sah', 'ses', 'sg', 'su', 'th', 'to', 'tpi', 'und', 'wo', 'yo', 'yue', 'zh' ], {\n});\n\nadd([ 'br' ], {\n c: [ 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n var n10 = n % 10, n100 = n % 100, n1000000 = n % 1000000;\n return n10 === 1 && !IN([ 11, 71, 91 ], n100) ? 0 : n10 === 2 && !IN([ 12, 72, 92 ], n100) ? 1 : (B(3, 4, n10) || n10 === 9) && (!B(10, 19, n100) && !B(70, 79, n100) && !B(90, 99, n100)) ? 2 : n !== 0 && n1000000 === 0 ? 3 : 4;\n }\n});\n\nadd([ 'bs', 'hr', 'sh', 'sr' ], {\n c: [ 1, 3, 5 ],\n cFn: function (n, i, v, f) {\n var i10 = i % 10, i100 = i % 100, f10 = f % 10, f100 = f % 100;\n return v === 0 && i10 === 1 && i100 !== 11 || f10 === 1 && f100 !== 11 ? 0 : v === 0 && B(2, 4, i10) && !B(12, 14, i100) || B(2, 4, f10) && !B(12, 14, f100) ? 1 : 2;\n }\n});\n\nadd([ 'ca' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 1, 2, 3, 5 ],\n oFn: function (n) {\n return IN([ 1, 3 ], n) ? 0 : n === 2 ? 1 : n === 4 ? 2 : 3;\n }\n});\n\nadd([ 'ceb' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f) {\n var i10 = i % 10, f10 = f % 10;\n return v === 0 && IN([ 1, 2, 3 ], i) || v === 0 && !IN([ 4, 6, 9 ], i10) || v !== 0 && !IN([ 4, 6, 9 ], f10) ? 0 : 1;\n }\n});\n\nadd([ 'cs', 'sk' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : B(2, 4, i) && v === 0 ? 1 : v !== 0 ? 2 : 3;\n }\n});\n\nadd([ 'cy' ], {\n c: [ 0, 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n === 3 ? 3 : n === 6 ? 4 : 5;\n },\n o: [ 0, 1, 2, 3, 4, 5 ],\n oFn: function (n) {\n return IN([ 0, 7, 8, 9 ], n) ? 0 : n === 1 ? 1 : n === 2 ? 2 : IN([ 3, 4 ], n) ? 3 : IN([ 5, 6 ], n) ? 4 : 5;\n }\n});\n\nadd([ 'da' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f, t) {\n return n === 1 || t !== 0 && IN([ 0, 1 ], i) ? 0 : 1;\n }\n});\n\nadd([ 'dsb', 'hsb' ], {\n c: [ 1, 2, 3, 5 ],\n cFn: function (n, i, v, f) {\n var i100 = i % 100, f100 = f % 100;\n return v === 0 && i100 === 1 || f100 === 1 ? 0 : v === 0 && i100 === 2 || f100 === 2 ? 1 : v === 0 && B(3, 4, i100) || B(3, 4, f100) ? 2 : 3;\n }\n});\n\nadd([ 'en' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 1, 2, 3, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return n10 === 1 && n100 !== 11 ? 0 : n10 === 2 && n100 !== 12 ? 1 : n10 === 3 && n100 !== 13 ? 2 : 3;\n }\n});\n\nadd([ 'es' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return n === 1 ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n }\n});\n\nadd([ 'ff', 'kab' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return IN([ 0, 1 ], i) ? 0 : 1;\n }\n});\n\nadd([ 'fil', 'tl' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f) {\n var i10 = i % 10, f10 = f % 10;\n return v === 0 && IN([ 1, 2, 3 ], i) || v === 0 && !IN([ 4, 6, 9 ], i10) || v !== 0 && !IN([ 4, 6, 9 ], f10) ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'fr' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return IN([ 0, 1 ], i) ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'ga' ], {\n c: [ 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : n === 2 ? 1 : B(3, 6, n) ? 2 : B(7, 10, n) ? 3 : 4;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'gd' ], {\n c: [ 1, 2, 3, 5 ],\n cFn: function (n) {\n return IN([ 1, 11 ], n) ? 0 : IN([ 2, 12 ], n) ? 1 : (B(3, 10, n) || B(13, 19, n)) ? 2 : 3;\n },\n o: [ 1, 2, 3, 5 ],\n oFn: function (n) {\n return IN([ 1, 11 ], n) ? 0 : IN([ 2, 12 ], n) ? 1 : IN([ 3, 13 ], n) ? 2 : 3;\n }\n});\n\nadd([ 'gu', 'hi' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return i === 0 || n === 1 ? 0 : 1;\n },\n o: [ 1, 2, 3, 4, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : IN([ 2, 3 ], n) ? 1 : n === 4 ? 2 : n === 6 ? 3 : 4;\n }\n});\n\nadd([ 'gv' ], {\n c: [ 1, 2, 3, 4, 5 ],\n cFn: function (n, i, v) {\n var i10 = i % 10, i100 = i % 100;\n return v === 0 && i10 === 1 ? 0 : v === 0 && i10 === 2 ? 1 : v === 0 && IN([ 0, 20, 40, 60, 80 ], i100) ? 2 : v !== 0 ? 3 : 4;\n }\n});\n\nadd([ 'he' ], {\n c: [ 1, 2, 4, 5 ],\n cFn: function (n, i, v) {\n var n10 = n % 10;\n return i === 1 && v === 0 ? 0 : i === 2 && v === 0 ? 1 : v === 0 && !B(0, 10, n) && n10 === 0 ? 2 : 3;\n }\n});\n\nadd([ 'hu' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return IN([ 1, 5 ], n) ? 0 : 1;\n }\n});\n\nadd([ 'hy' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return IN([ 0, 1 ], i) ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'is' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f, t) {\n var i10 = i % 10, i100 = i % 100;\n return t === 0 && i10 === 1 && i100 !== 11 || t !== 0 ? 0 : 1;\n }\n});\n\nadd([ 'it' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return i === 1 && v === 0 ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n },\n o: [ 4, 5 ],\n oFn: function (n) {\n return IN([ 11, 8, 80, 800 ], n) ? 0 : 1;\n }\n});\n\nadd([ 'iu', 'naq', 'sat', 'se', 'sma', 'smi', 'smj', 'smn', 'sms' ], {\n c: [ 1, 2, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : n === 2 ? 1 : 2;\n }\n});\n\nadd([ 'ka' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 4, 5 ],\n oFn: function (n, i) {\n var i100 = i % 100;\n return i === 1 ? 0 : i === 0 || (B(2, 20, i100) || i100 === 40 || i100 === 60 || i100 === 80) ? 1 : 2;\n }\n});\n\nadd([ 'kk' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 4, 5 ],\n oFn: function (n) {\n var n10 = n % 10;\n return n10 === 6 || n10 === 9 || n10 === 0 && n !== 0 ? 0 : 1;\n }\n});\n\nadd([ 'ksh' ], {\n c: [ 0, 1, 5 ],\n cFn: function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : 2;\n }\n});\n\nadd([ 'kw' ], {\n c: [ 0, 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n var n100 = n % 100, n1000 = n % 1000, n100000 = n % 100000, n1000000 = n % 1000000;\n return n === 0 ? 0 : n === 1 ? 1 : IN([ 2, 22, 42, 62, 82 ], n100) || n1000 === 0 && (B(1000, 20000, n100000) || n100000 === 40000 || n100000 === 60000 || n100000 === 80000) || n !== 0 && n1000000 === 100000 ? 2 : IN([ 3, 23, 43, 63, 83 ], n100) ? 3 : n !== 1 && IN([ 1, 21, 41, 61, 81 ], n100) ? 4 : 5;\n },\n o: [ 1, 4, 5 ],\n oFn: function (n) {\n var n100 = n % 100;\n return B(1, 4, n) || (B(1, 4, n100) || B(21, 24, n100) || B(41, 44, n100) || B(61, 64, n100) || B(81, 84, n100)) ? 0 : n === 5 || n100 === 5 ? 1 : 2;\n }\n});\n\nadd([ 'lag' ], {\n c: [ 0, 1, 5 ],\n cFn: function (n, i) {\n return n === 0 ? 0 : IN([ 0, 1 ], i) && n !== 0 ? 1 : 2;\n }\n});\n\nadd([ 'lij' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 4, 5 ],\n oFn: function (n) {\n return (n === 11 || n === 8 || B(80, 89, n) || B(800, 899, n)) ? 0 : 1;\n }\n});\n\nadd([ 'lo', 'ms', 'vi' ], {\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'lt' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v, f) {\n var n10 = n % 10, n100 = n % 100;\n return n10 === 1 && !B(11, 19, n100) ? 0 : B(2, 9, n10) && !B(11, 19, n100) ? 1 : f !== 0 ? 2 : 3;\n }\n});\n\nadd([ 'lv', 'prg' ], {\n c: [ 0, 1, 5 ],\n cFn: function (n, i, v, f) {\n var n10 = n % 10, n100 = n % 100, f100 = f % 100, f10 = f % 10;\n return n10 === 0 || B(11, 19, n100) || v === 2 && B(11, 19, f100) ? 0 : n10 === 1 && n100 !== 11 || v === 2 && f10 === 1 && f100 !== 11 || v !== 2 && f10 === 1 ? 1 : 2;\n }\n});\n\nadd([ 'mk' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f) {\n var i10 = i % 10, i100 = i % 100, f10 = f % 10, f100 = f % 100;\n return v === 0 && i10 === 1 && i100 !== 11 || f10 === 1 && f100 !== 11 ? 0 : 1;\n },\n o: [ 1, 2, 4, 5 ],\n oFn: function (n, i) {\n var i10 = i % 10, i100 = i % 100;\n return i10 === 1 && i100 !== 11 ? 0 : i10 === 2 && i100 !== 12 ? 1 : IN([ 7, 8 ], i10) && !IN([ 17, 18 ], i100) ? 2 : 3;\n }\n});\n\nadd([ 'mo', 'ro' ], {\n c: [ 1, 3, 5 ],\n cFn: function (n, i, v) {\n var n100 = n % 100;\n return i === 1 && v === 0 ? 0 : v !== 0 || n === 0 || B(2, 19, n100) ? 1 : 2;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'mr' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 2, 3, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : IN([ 2, 3 ], n) ? 1 : n === 4 ? 2 : 3;\n }\n});\n\nadd([ 'mt' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n) {\n var n100 = n % 100;\n return n === 1 ? 0 : n === 0 || B(2, 10, n100) ? 1 : B(11, 19, n100) ? 2 : 3;\n }\n});\n\nadd([ 'ne' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return B(1, 4, n) ? 0 : 1;\n }\n});\n\nadd([ 'or' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 2, 3, 4, 5 ],\n oFn: function (n) {\n return (n === 1 || n === 5 || B(7, 9, n)) ? 0 : IN([ 2, 3 ], n) ? 1 : n === 4 ? 2 : n === 6 ? 3 : 4;\n }\n});\n\nadd([ 'pl' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v) {\n var i10 = i % 10, i100 = i % 100;\n return i === 1 && v === 0 ? 0 : v === 0 && B(2, 4, i10) && !B(12, 14, i100) ? 1 : v === 0 && i !== 1 && B(0, 1, i10) || v === 0 && B(5, 9, i10) || v === 0 && B(12, 14, i100) ? 2 : 3;\n }\n});\n\nadd([ 'pt' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return B(0, 1, i) ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n }\n});\n\nadd([ 'pt-pt' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return i === 1 && v === 0 ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n }\n});\n\nadd([ 'ru' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v) {\n var i10 = i % 10, i100 = i % 100;\n return v === 0 && i10 === 1 && i100 !== 11 ? 0 : v === 0 && B(2, 4, i10) && !B(12, 14, i100) ? 1 : v === 0 && i10 === 0 || v === 0 && B(5, 9, i10) || v === 0 && B(11, 14, i100) ? 2 : 3;\n }\n});\n\nadd([ 'sc', 'scn' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 4, 5 ],\n oFn: function (n) {\n return IN([ 11, 8, 80, 800 ], n) ? 0 : 1;\n }\n});\n\nadd([ 'shi' ], {\n c: [ 1, 3, 5 ],\n cFn: function (n, i) {\n return i === 0 || n === 1 ? 0 : B(2, 10, n) ? 1 : 2;\n }\n});\n\nadd([ 'si' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f) {\n return IN([ 0, 1 ], n) || i === 0 && f === 1 ? 0 : 1;\n }\n});\n\nadd([ 'sl' ], {\n c: [ 1, 2, 3, 5 ],\n cFn: function (n, i, v) {\n var i100 = i % 100;\n return v === 0 && i100 === 1 ? 0 : v === 0 && i100 === 2 ? 1 : v === 0 && B(3, 4, i100) || v !== 0 ? 2 : 3;\n }\n});\n\nadd([ 'sq' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 4, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return n === 1 ? 0 : n10 === 4 && n100 !== 14 ? 1 : 2;\n }\n});\n\nadd([ 'sv' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return IN([ 1, 2 ], n10) && !IN([ 11, 12 ], n100) ? 0 : 1;\n }\n});\n\nadd([ 'tk' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 3, 5 ],\n oFn: function (n) {\n var n10 = n % 10;\n return IN([ 6, 9 ], n10) || n === 10 ? 0 : 1;\n }\n});\n\nadd([ 'tzm' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return B(0, 1, n) || B(11, 99, n) ? 0 : 1;\n }\n});\n\nadd([ 'uk' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v) {\n var i10 = i % 10, i100 = i % 100;\n return v === 0 && i10 === 1 && i100 !== 11 ? 0 : v === 0 && B(2, 4, i10) && !B(12, 14, i100) ? 1 : v === 0 && i10 === 0 || v === 0 && B(5, 9, i10) || v === 0 && B(11, 14, i100) ? 2 : 3;\n },\n o: [ 3, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return n10 === 3 && n100 !== 13 ? 0 : 1;\n }\n});\n\n////////////////////////////////////////////////////////////////////////////////\n","export default {site:{privacy_policy:'개인정보 취급방침',terms:'이용 약관',gdpr_dialog:{title:'본 사이트는 쿠키를 사용합니다.',text:'본 사이트는 쿠키, 로컬 스토리지 등의 기술을 사용해 사용자 정보를 수집합니다. 사이트를 이용하려면 개인정보 취급방침회원이용 약관에 동의해야 합니다.',accept:'동의',cancel:'거부'},theme:{light:'Light theme',dark:'Dark theme',change:'Change theme'},toolbar:{lang_switcher:{cta_text:'본 튜토리얼은 전 세계 사람들이 이용할 수 있는 오픈 소스 프로젝트입니다. 프로젝트 페이지에 방문하셔서 번역을 도와주세요.',footer_text:'얼마나 많은 콘텐츠가 해당 언어로 번역되었는지',old_version:'튜토리얼 구 버전은 이미 배포되었습니다. 개정이 진행 중입니다.'},logo:{normal:{svg:'sitetoolbar__logo_en.svg',width:200},'normal-white':{svg:'sitetoolbar__logo_en-white.svg'},small:{svg:'sitetoolbar__logo_small_en.svg',width:70},'small-white':{svg:'sitetoolbar__logo_small_en-white.svg'}},sections:null,buy_ebook_extra:'구매',buy_ebook:'EPUB/PDF',search_placeholder:'javascript.info에서 검색하기',search_button:'검색',public_profile:'공개 프로필',account:'계정',notifications:'알림',admin:'관리자',logout:'로그아웃'},sorry_old_browser:'Internet Explorer 미만의 브라우저는 지원하지 않습니다. 최신 버전 브라우저를 사용해주세요.',contact_us:'연락처',about_the_project:'프로젝트 설명',ilya_kantor:'Ilya Kantor',comments:'댓글',loading:'로딩중...',search:'검색',share:'공유',read_before_commenting:'댓글을 달기 전에 마우스를 올렸을 때 나타나는 글을 먼저 읽어주세요.',last_updated_at:'최종 업데이트 #{date}',meta:{description:'모던 자바스크립트 튜토리얼은 클로저, 문서 객체 모델, 이벤트, 객체 지향 프로그래밍 등의 다양한 주제에 대한 설명과 예시, 과제를 담고 있습니다.'},'tablet-menu':{choose_section:'섹션 선택',search_placeholder:'튜토리얼 내에서 검색',search_button:'검색'},comment:{help:['추가 코멘트, 질문 및 답변을 자유롭게 남겨주세요. 개선해야 할 것이 있다면 댓글 대신 이슈를 만들어주세요.','잘 이해되지 않는 부분은 구체적으로 언급해주세요.','댓글에 한 줄짜리 코드를 삽입하고 싶다면 <code> 태그를, 여러 줄로 구성된 코드를 삽입하고 싶다면 <pre> 태그를 이용하세요. 10줄 이상의 코드는 plnkr, JSBin, codepen 등의 샌드박스를 사용하세요.']},edit_on_github:'GitHub에서 수정하기',error:'에러',close:'종료',hide_forever:'영구적으로 숨기기',hidden_forever:'이제 이 정보는 더 이상 나타나지 않습니다.'}};","export default {server_connection_error:'서버 접속 에러',server_request_timeout:'서버 요청 타임아웃',request_aborted:'요청이 취소되었습니다.',no_response:'서버로부터 응답이 없습니다.',server_error:'서버 에러(코드 #{status})가 발생했습니다. 잠시 후 다시 시도해주세요.',invalid_format:'유효하지 않은 응답 포맷'};","export default {choose_newsletter:'Choose newsletters in the list.',email_please:'Your e-mail?'};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const newsletter = require('newsletter/client');\n\nfunction init() {\n newsletter.initNewsletterForm();\n\n initTabs();\n}\n\nfunction initTabs() {\n\n document.addEventListener('click', (e) => {\n if (e.target.closest('.frontpage-content')) {\n let button = e.target.closest('.tabs__menu-button');\n if (!button) return;\n\n e.preventDefault();\n\n let i, tablinks;\n\n tablinks = document.getElementsByClassName('tabs__menu-button');\n\n /*\n for (i = 0; i < tablinks.length; i++) {\n tablinks[i].classList.remove('active');\n }\n\n button.classList.add('active');*/\n\n document.querySelector(button.getAttribute('href')).scrollIntoView({\n behavior: 'smooth'\n });\n }\n });\n\n function changeTabState(sections, tabs, tabsHeight) {\n let index = sections.length;\n\n while(--index && window.scrollY + tabsHeight < sections[index].offsetTop) {}\n\n tabs.forEach((tab) => tab.classList.remove('active'));\n tabs[index].classList.add('active');\n }\n\n document.addEventListener('DOMContentLoaded', () => {\n const sections = document.querySelectorAll(\".tabs__content\");\n const stickyTabs = document.querySelector('.tabs__menu');\n const stickyTabsEls = stickyTabs.querySelectorAll('.tabs__menu-button');\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries[0].target.classList.toggle(\"sticky\", !entries[0].isIntersecting);\n }, {rootMargin: `-${stickyTabs.offsetHeight + 1}px`, threshold: 0});\n\n observer.observe(stickyTabs);\n\n changeTabState(sections, stickyTabsEls, stickyTabs.offsetHeight);\n window.addEventListener('scroll', () => changeTabState(sections, stickyTabsEls, stickyTabs.offsetHeight));\n\n // window.addEventListener('scroll', () => {\n // let current = \"tab-1\";\n // console.log('current', current)\n\n // sections.forEach((section) => {\n // const sectionTop = section.offsetTop;\n // console.log('sectionTop', sectionTop)\n // console.log('window.scrollTop', window.pageYOffset | document.body.scrollTop)\n // if (window.pageYOffset | document.body.scrollTop >= sectionTop - 60) {\n // current = section.getAttribute('id');\n // console.log('change current', current)\n // }\n // });\n\n // stickyTabs.querySelectorAll('.tabs__menu-button').forEach((tab) => {\n // tab.classList.remove('active');\n // if (tab.classList.contains(current)) {\n // tab.classList.add('active');\n // }\n // });\n // });\n });\n}\n\ninit();\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","lang","LANG","localCurrency","shopCurrency","env","NODE_ENV","rateShopTo","countryCode","ordersMail","providers","stripeKey","paypalClientId","telegramBotId","lookatCodeUrlBase","isRTL","delegate","topElement","selector","eventName","handler","context","addEventListener","event","found","currentNode","target","matches","currentTarget","parentElement","findDelegateTarget","delegateTarget","call","this","delegateMixin","obj","elem","csrfCookie","document","cookie","match","require","NotificationManager","constructor","options","notifications","verticalSpace","register","notification","unshift","setTimeout","recalculate","unregister","idx","indexOf","splice","top","forEach","height","init","window","notificationManager","Notification","html","type","timeout","elemHtml","body","insertAdjacentHTML","lastElementChild","undefined","TIMEOUT_DEFAULT","TIMEOUT_SLOW","TIMEOUT_FAST","setupCloseHandler","setupCloseTimeout","close","parentNode","remove","offsetHeight","value","style","transform","prototype","Info","super","Warning","Success","Recaptcha","initForms","loadScript","async","submitButtons","querySelectorAll","length","button","disabled","form","recaptcha","onsubmit","preventDefault","validateForm","checkValidity","submit","reportValidity","promise","RECAPTCHA_ID","Promise","reject","recaptchaCallback","script","createElement","src","onerror","head","appendChild","renderPromise","renderPromiseResolve","renderPromiseReject","render","widgetId","container","append","grecaptcha","sitekey","size","callback","execute","token","getResponse","input","elements","name","Spinner","class","elemClass","start","classList","toggle","stop","spinnerElem","querySelector","getCsrfCookie","t","i18n","add","reason","request","XMLHttpRequest","method","url","open","sync","skipCsrf","setRequestHeader","responseType","toString","JSON","stringify","noDocumentEvents","timeStart","Date","now","wrapEvent","dispatchEvent","result","raw","normalStatuses","CustomEvent","originalEvent","fail","status","response","responseText","getResponseHeader","json","parse","includes","success","info","send","err","console","error","phrase","hasPhrase","process","I18N_DEBUG","arguments","setFallback","args","arg","__esModule","default","addPhrase","count","string","n","Math","floor","values","split","xhr","MultiSelect","submitSubscribeForm","onSuccess","email","slugElem","slug","userLogged","slugs","option","replace","action","submitButton","spinner","message","gaEvent","initNewsletterForm","forms","isLogged","select","multiSelect","formButton","formButtonTextEl","getValues","textContent","pluralize","textContainer","defaultValue","createDropdown","setButtonTitle","bindHandlers","selected","join","toggleDropdown","bind","item","onChange","stopPropagation","toggleStatus","boundCloseDropdown","closeDropdown","closest","removeEventListener","filter","getAttribute","pop","contains","Event","parser","plural","_class","isString","isNumber","isNaN","isFinite","isBoolean","isObject","isArray","Array","nativeForEach","iterator","i","l","key","hasOwnProperty","formatRegExp","format","f","len","String","x","Number","flatten","params","val","sub_val","sub_key","keySeparator","makePhraseKey","locale","searchPhraseKey","self","storage","_storage","_defaultLocale","fb_cache","_fallbacks_cache","fb_key","fb","_fallbacks","pluralizer","BabelFish","defaultLocale","_plurals_cache","translation","flattenLevel","fl","Infinity","TypeError","fallbacks","def","slice","push","CAN_HAVE_DIRECTIVES_RE","translate","data","compiled","str","nodes","buf","strict_exec","forms_exec","plurals_cache","test","text","node","anchor","strict","k","parsed","unescaped","Function","compile","noFallback","getLocale","unique","out","fallback","locales","load","phrases","rule","SyntaxError","expected","offset","line","column","child","parent","ctor","peg$subclass","peg$result","peg$FAILED","peg$startRuleFunctions","peg$parsestart","peg$startRuleFunction","peg$c1","peg$c2","peg$c3","description","peg$c4","peg$c5","peg$c6","peg$c7","regularForms","strictForms","peg$c8","peg$c9","peg$c10","part","more","concat","peg$c11","peg$c12","peg$c13","peg$c14","peg$c15","peg$c16","peg$c17","peg$c18","peg$c19","peg$c20","peg$c21","peg$c22","peg$c23","peg$c24","char","peg$c25","peg$c26","peg$c27","peg$c28","peg$c29","peg$c30","peg$c31","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$c37","peg$c38","peg$c39","peg$c40","peg$c41","peg$c42","peg$c43","lc","peg$c44","literal_chars","peg$c45","peg$c46","peg$currPos","peg$reportedPos","peg$cachedPos","peg$cachedPosDetails","seenCR","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","startRule","substring","peg$computePosDetails","pos","details","startPos","endPos","p","ch","charAt","advance","peg$fail","peg$buildException","posDetails","sort","a","b","cleanupExpected","expectedDescs","s","hex","charCodeAt","toUpperCase","stringEscape","buildMessage","s0","s1","peg$parseliteral","peg$parseplural","peg$parsevariable","s2","s3","s4","substr","peg$parseplural_forms","peg$parseidentifier","peg$parseplural_anchor","peg$parseplural_part","s5","peg$parseplural_char","peg$parseidentifier_part","peg$parseliteral_char","normalize","loc","toLowerCase","c_re","cFn","sval","spl","pow","v","w","o_indexOf","oFn","c","ordinal","FORMS","unpack","B","y","IN","set","n100","i10","i100","i1000","n10","n1000000","f10","f100","i1000000","n1000","n100000","site","privacy_policy","terms","gdpr_dialog","title","accept","cancel","theme","light","dark","change","toolbar","lang_switcher","cta_text","footer_text","old_version","logo","normal","svg","width","small","sections","buy_ebook_extra","buy_ebook","search_placeholder","search_button","public_profile","account","admin","logout","sorry_old_browser","contact_us","about_the_project","ilya_kantor","comments","loading","search","share","read_before_commenting","last_updated_at","meta","choose_section","comment","help","edit_on_github","hide_forever","hidden_forever","server_connection_error","server_request_timeout","request_aborted","no_response","server_error","invalid_format","choose_newsletter","email_please","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","d","definition","defineProperty","enumerable","get","prop","r","Symbol","toStringTag","changeTabState","tabs","tabsHeight","index","scrollY","offsetTop","tab","tablinks","getElementsByClassName","scrollIntoView","behavior","stickyTabs","stickyTabsEls","IntersectionObserver","entries","isIntersecting","rootMargin","threshold","observe","initTabs"],"sourceRoot":""}