{"version":3,"sources":["webpack:///./node_modules/handlebars/runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack:///./public/javascripts/translations/enrollmentNames.js","webpack:///./ui/shims/dummyI18nResource.js?de41","webpack:///./ui/shared/handlebars-helpers/enrollmentName.js","webpack:///./ui/shared/handlebars-helpers/dateSelect.js","webpack:///./public/javascripts/translations/handlebars_helpers.js","webpack:///./ui/shims/dummyI18nResource.js?9ea2","webpack:///./ui/shared/handlebars-helpers/index.coffee","webpack:///./public/javascripts/translations/dates.js","webpack:///./ui/shims/dummyI18nResource.js?92d5","webpack:///./ui/shared/datetime/semanticDateRange.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack:///./ui/shared/i18n/numberFormat.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack:///./public/javascripts/translations/mimeClass.js","webpack:///./ui/shims/dummyI18nResource.js?de11","webpack:///./ui/shared/mime/mimeClass.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/runtime.js"],"names":["module","exports","Utils","Exception","VERSION","COMPILER_REVISION","REVISION_CHANGES","1","2","3","4","isArray","isFunction","toString","objectType","HandlebarsEnvironment","helpers","partials","this","registerDefaultHelpers","prototype","constructor","logger","log","registerHelper","name","fn","inverse","call","extend","not","registerPartial","str","instance","arg","arguments","length","context","options","each","data","i","ret","createFrame","j","index","first","last","key","hasOwnProperty","conditional","hash","includeZero","isEmpty","level","parseInt","methodMap","0","DEBUG","INFO","WARN","ERROR","obj","method","console","object","mergeI18nTranslations","JSON","parse","scoped","types","I18n","t","enrollmentName","type","builders","year","htmlOptions","step","startYear","endYear","$result","$","includeBlank","append","month","dateSettings","months","month_names","h","day","dateSelect","_","clone","validOptions","forEach","opt","class","Date","getFullYear","position","lookup","defaults","order","end","asc","tName","replace","html","id","Handlebars","semanticDateRange","startISO","endISO","htmlEscape","startAt","tz","endAt","sameDate","toISOString","dateString","timeString","datetimeString","base","SafeString","runtime","create","hb","VM","template","spec","numberFormat","_format","n","isNaN","outcomeScore","precision","strip_insignificant_zeros","escape","badChars","possible","escapeChar","chr","value","Object","Array","escapeExpression","string","test","mimeClasses","audio","mimeTypes","code","doc","flash","image","ppt","pdf","text","video","xls","zip","mimeClass","contentType","displayName","found","cls","mimeType","errorProps","message","node","line","firstLine","firstColumn","tmp","Error","idx","lineNumber","column","checkRevision","compilerInfo","compilerRevision","currentRevision","runtimeVersions","compilerVersions","templateSpec","env","invokePartialWrapper","partial","result","invokePartial","apply","compile","undefined","container","programs","program","programWrapper","merge","param","common","programWithDepth","noop","namespace","args","slice","prog","concat","depth","Function"],"mappings":"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","file":"9-c-f14b655a01.js","sourcesContent":["// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime');\n","\"use strict\";\nvar Utils = require(\"./utils\");\nvar Exception = require(\"./exception\")[\"default\"];\n\nvar VERSION = \"1.3.0\";\nexports.VERSION = VERSION;var COMPILER_REVISION = 4;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '>= 1.0.0'\n};\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar isArray = Utils.isArray,\n isFunction = Utils.isFunction,\n toString = Utils.toString,\n objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n\n registerDefaultHelpers(this);\n}\n\nexports.HandlebarsEnvironment = HandlebarsEnvironment;HandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: logger,\n log: log,\n\n registerHelper: function(name, fn, inverse) {\n if (toString.call(name) === objectType) {\n if (inverse || fn) { throw new Exception('Arg not supported with multiple helpers'); }\n Utils.extend(this.helpers, name);\n } else {\n if (inverse) { fn.not = inverse; }\n this.helpers[name] = fn;\n }\n },\n\n registerPartial: function(name, str) {\n if (toString.call(name) === objectType) {\n Utils.extend(this.partials, name);\n } else {\n this.partials[name] = str;\n }\n }\n};\n\nfunction registerDefaultHelpers(instance) {\n instance.registerHelper('helperMissing', function(arg) {\n if(arguments.length === 2) {\n return undefined;\n } else {\n throw new Exception(\"Missing helper: '\" + arg + \"'\");\n }\n });\n\n instance.registerHelper('blockHelperMissing', function(context, options) {\n var inverse = options.inverse || function() {}, fn = options.fn;\n\n if (isFunction(context)) { context = context.call(this); }\n\n if(context === true) {\n return fn(this);\n } else if(context === false || context == null) {\n return inverse(this);\n } else if (isArray(context)) {\n if(context.length > 0) {\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n return fn(context);\n }\n });\n\n instance.registerHelper('each', function(context, options) {\n var fn = options.fn, inverse = options.inverse;\n var i = 0, ret = \"\", data;\n\n if (isFunction(context)) { context = context.call(this); }\n\n if (options.data) {\n data = createFrame(options.data);\n }\n\n if(context && typeof context === 'object') {\n if (isArray(context)) {\n for(var j = context.length; i.\n\nimport I18n from 'i18n!enrollmentNames'\n\nconst types = {\n get StudentEnrollment() {\n return I18n.t('student', 'Student')\n },\n get TeacherEnrollment() {\n return I18n.t('teacher', 'Teacher')\n },\n get TaEnrollment() {\n return I18n.t('teacher_assistant', 'TA')\n },\n get ObserverEnrollment() {\n return I18n.t('observer', 'Observer')\n },\n get DesignerEnrollment() {\n return I18n.t('designer', 'Designer')\n }\n}\n\nexport default function enrollmentName(type) {\n return types[type] || type\n}\n","//\n// Copyright (C) 2012 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see .\n\nimport I18n from '@canvas/i18n'\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport h from 'html-escape'\n\n/*\nxsslint safeString.identifier i\n*/\n\nconst builders = {\n year(options, htmlOptions) {\n const step = options.startYear < options.endYear ? 1 : -1\n const $result = $('', htmlOptions)\n if (options.includeBlank) $result.append('')\n let i = options.startYear\n while (i * step <= options.endYear * step) {\n i += step\n $result.append($(``))\n }\n return $result\n },\n month(options, htmlOptions, dateSettings) {\n const months = dateSettings.month_names\n const $result = $('', htmlOptions)\n if (options.includeBlank) $result.append('')\n for (let i = 1; i <= 12; i++) {\n $result.append($(``))\n }\n return $result\n },\n day(options, htmlOptions) {\n const $result = $('', htmlOptions)\n if (options.includeBlank) $result.append('')\n for (let i = 1; i <= 31; i++) {\n $result.append($(``))\n }\n return $result\n }\n}\n\n// generates something like rails' date_select/select_date\n// TODO: feature parity\nexport default function dateSelect(name, options, htmlOptions = _.clone(options)) {\n const validOptions = ['type', 'startYear', 'endYear', 'includeBlank', 'order']\n validOptions.forEach(opt => delete htmlOptions[opt])\n\n if (htmlOptions.class == null) htmlOptions.class = ''\n htmlOptions.class += ' date-select'\n\n const year = new Date().getFullYear()\n const position = {\n year: 1,\n month: 2,\n day: 3\n }\n const dateSettings = I18n.lookup('date')\n\n if (options.type === 'birthdate') {\n _.defaults(options, {\n startYear: year - 1,\n endYear: year - 125,\n includeBlank: true\n })\n }\n\n _.defaults(options, {\n startYear: year - 5,\n endYear: year + 5,\n order: dateSettings.order || ['year', 'month', 'day']\n })\n\n const $result = $('')\n // in coffeescript: for i in [0...options.order.length]\n for (\n let i = 0, end = options.order.length, asc = end >= 0;\n asc ? i < end : i > end;\n asc ? i++ : i--\n ) {\n const type = options.order[i]\n const tName = name.replace(/(\\]?)$/, `(${position[type]}i)$1`)\n const html = builders[type](options, {name: tName, ...htmlOptions}, dateSettings)\n $result.append(html)\n delete htmlOptions.id\n }\n return $result\n}\n","// this file was auto-generated by rake i18n:generate_js.\n// you probably shouldn't edit it directly\nimport mergeI18nTranslations from '@canvas/i18n/mergeI18nTranslations.js';\n\n// we use JSON.parse here instead of just loading it as a javascript object literal\n// because according to https://v8.dev/blog/cost-of-javascript-2019#json that is faster\nmergeI18nTranslations(JSON.parse(\"{\\\"ar\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"المدة: 1 دقيقة\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"المدة: %{hours} ساعة و %{minutes} دقيقة\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"المدة: %{minutes} دقائق\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"DD-MM-YYYY hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"DD-MM-YYYY\\\",\\\"accessible_date_prompt\\\":\\\"تنسيق مثل\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"المساق\\\",\\\"local\\\":\\\"محلي\\\"}},\\\"ca\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Durada: 1 minut\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Durada: %{hours} hores i %{minutes} minuts\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Durada: %{minutes} minuts\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"DD/MM/YYYY hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"DD/MM/YYYY\\\",\\\"accessible_date_prompt\\\":\\\"Tipus de format\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Curs\\\",\\\"local\\\":\\\"Local\\\"}},\\\"cy\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Hyd: 1 munud\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Hyd: %{hours} awr a %{minutes} a munud\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Hyd: %{minutes} munud\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"BBBB-MM-DD aa:mm\\\",\\\"accessible_date_only_format\\\":\\\"BBBB-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Fformatio’r nodwedd Hoffi\\\",\\\"accessible_time_only_format\\\":\\\"aa:mm\\\",\\\"course\\\":\\\"Cwrs\\\",\\\"local\\\":\\\"Lleol\\\"}},\\\"da\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Varighed: 1 minut\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Varighed: %{hours} timer og %{minutes} minutter\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Varighed: %{minutes} minutter\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"ÅÅÅÅ-MM-DD tt:mm\\\",\\\"accessible_date_only_format\\\":\\\"ÅÅÅÅ-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Formater som\\\",\\\"accessible_time_only_format\\\":\\\"tt:mm\\\",\\\"course\\\":\\\"Fag\\\",\\\"local\\\":\\\"Lokal\\\"}},\\\"da-x-k12\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Varighed: 1 minut\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Varighed: %{hours} timer og %{minutes} minutter\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Varighed: %{minutes} minutter\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"ÅÅÅÅ-MM-DD tt:mm\\\",\\\"accessible_date_only_format\\\":\\\"ÅÅÅÅ-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Formater som\\\",\\\"accessible_time_only_format\\\":\\\"tt:mm\\\",\\\"course\\\":\\\"Fag\\\",\\\"local\\\":\\\"Lokal\\\"}},\\\"de\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Dauer: 1 Minute\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Dauer: %{hours} Stunden und %{minutes} Minuten\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Dauer: %{minutes} Minuten\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"JJJJ-MM-TT hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"TT-MM-JJJJ\\\",\\\"accessible_date_prompt\\\":\\\"Format wie\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Kurs\\\",\\\"local\\\":\\\"Lokal\\\"}},\\\"el\\\":{\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"DD-MM-YYYY hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"ΕΕΕΕ-ΜΜ-ΗΗ\\\",\\\"accessible_date_prompt\\\":\\\"Μορφοποίηση ως\\\",\\\"accessible_time_only_format\\\":\\\"ωω:λλ\\\",\\\"course\\\":\\\"Μάθημα\\\",\\\"local\\\":\\\"Τοπικό\\\"}},\\\"en\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Duration: 1 minute\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Duration: %{hours} hours and %{minutes} minutes\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Duration: %{minutes} minutes\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"YYYY-MM-DD hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"YYYY-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Format Like\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Course\\\",\\\"local\\\":\\\"Local\\\"}},\\\"en-AU\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Duration: 1 minute\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Duration: %{hours} hours and %{minutes} minutes\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Duration: %{minutes} minutes\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"YYYY-MM-DD hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"YYYY-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Format Like\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Course\\\",\\\"local\\\":\\\"Local\\\"}},\\\"en-CA\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Duration: 1 minute\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Duration: %{hours} hours and %{minutes} minutes\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Duration: %{minutes} minutes\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"YYYY-MM-DD hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"YYYY-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Format Like\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Course\\\",\\\"local\\\":\\\"Local\\\"}},\\\"en-GB\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Duration: 1 minute\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Duration: %{hours} hours and %{minutes} minutes\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Duration: %{minutes} minutes\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"YYYY-MM-DD hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"YYYY-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Format Like\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Course\\\",\\\"local\\\":\\\"Local\\\"}},\\\"es\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Duración: 1 minuto\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Duración: %{hours} horas y %{minutes} minutos\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Duración: %{minutes} minutos\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"DD-MM-AAAA hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"DD-MM-AAAA\\\",\\\"accessible_date_prompt\\\":\\\"Formato como\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Curso\\\",\\\"local\\\":\\\"Hora local\\\"}},\\\"fa\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"مدت زمان: 1 دقیقه\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"مدت زمان: %{hours}ساعت و %{minutes} دقیقه\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"مدت زمان: %{minutes} دقیقه\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"YYYY-MM-DD hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"YYYY-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"قالب مانند\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"درس\\\",\\\"local\\\":\\\"محلی\\\"}},\\\"fi\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Kesto: 1 minuutti\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Kesto: %{hours} tuntia ja %{minutes} minuuttia\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Kesto: %{minutes} minuuttia\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"VVVV-KK-PV hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"VVVV-KK-PV\\\",\\\"accessible_date_prompt\\\":\\\"Muotoilutapa\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Kurssi\\\",\\\"local\\\":\\\"Paikallinen\\\"}},\\\"fr\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Durée : 1 minute\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Durée : %{hours} heures et %{minutes} minutes\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Durée : %{minutes} minutes\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"AAAA-MM-JJ hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"AAAA-MM-JJ\\\",\\\"accessible_date_prompt\\\":\\\"Formater comme\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Cours\\\",\\\"local\\\":\\\"Local\\\"}},\\\"fr-CA\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Durée : 1 minute\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Durée : %{hours} heures et %{minutes} minutes\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Durée : %{minutes} minutes\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"AAAA-MM-JJ hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"AAAA-MM-JJ\\\",\\\"accessible_date_prompt\\\":\\\"Formater comme\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Cours\\\",\\\"local\\\":\\\"Local\\\"}},\\\"he\\\":{\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"YYYY-MM-DD hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"YYYY-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"בפורמט כגון\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"קורס\\\",\\\"local\\\":\\\"מקומי\\\"}},\\\"ht\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Dire: 1 minit\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Dire: %{hours} èdtan e %{minutes} minit\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Dire: %{minutes} minit\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"JJ-MM-AAAA hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"JJ-MM-AAAA\\\",\\\"accessible_date_prompt\\\":\\\"Fòma\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Kou\\\",\\\"local\\\":\\\"Lokal\\\"}},\\\"hu\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Időtartam: 1 perc\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Időtartam: %{hours}óra és %{minutes}ˇperc\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Időtartam: %{minutes}perc\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"ÉÉÉÉ-HH-NN óó:pp\\\",\\\"accessible_date_only_format\\\":\\\"ÉÉÉÉ-HH-NN\\\",\\\"accessible_date_prompt\\\":\\\"Ilyen formátumban\\\",\\\"accessible_time_only_format\\\":\\\"óó:pp\\\",\\\"course\\\":\\\"Kurzus\\\",\\\"local\\\":\\\"Helyi\\\"}},\\\"hy\\\":{\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"ՏՏՏՏ-ԱԱ-ՕՕ ժժ:րր\\\",\\\"accessible_date_only_format\\\":\\\"YYYY-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Ֆորմատի նման\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Դասընթաց\\\",\\\"local\\\":\\\"Տեղական\\\"}},\\\"is\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Tími:1 mínúta\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Tími: %{hours}Klukkustundir og %{minutes} mínútur\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Tími: %{minutes}mínútur\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"ÁÁÁÁ-MM-DD kl:mín\\\",\\\"accessible_date_only_format\\\":\\\"ÁÁÁÁ-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Sníða eins\\\",\\\"accessible_time_only_format\\\":\\\"klst:mín\\\",\\\"course\\\":\\\"Námskeið\\\",\\\"local\\\":\\\"Staðbundið\\\"}},\\\"it\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Durata: 1 minuto\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Durata: %{hours} ore e %{minutes} minuti\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Durata: %{minutes} minuti\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"AAAA-MM-GG hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"AAAA-MM-GG\\\",\\\"accessible_date_prompt\\\":\\\"Formatta come\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Corso\\\",\\\"local\\\":\\\"Locale\\\"}},\\\"ja\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"期間:1 分\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"期間:%{hours}時間 %{minutes} 分\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"期間:%{minutes}分\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"YYYY-MM-DD hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"YYYY-MM-DD \\\",\\\"accessible_date_prompt\\\":\\\"フォーマットと同様に\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"コース\\\",\\\"local\\\":\\\"ローカル\\\"}},\\\"ko\\\":{\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"YYYY-MM-DD hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"YYYY-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"형식\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"과목\\\",\\\"local\\\":\\\"로컬\\\"}},\\\"mi\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Te Roanga: 1 meneti\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Te Roanga: %{hours} ngā roanga me %{minutes} ngā meneti\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Te Roanga: %{minutes} Ngā meneti\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"HH YYYY-MM-DD: mm\\\",\\\"accessible_date_only_format\\\":\\\"YYYY-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"hōputu rite\\\",\\\"accessible_time_only_format\\\":\\\"HH: mm\\\",\\\"course\\\":\\\"akoranga\\\",\\\"local\\\":\\\"Paetata\\\"}},\\\"nb\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Varighet: 1 minutt\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Varighet: %{hours} timer og %{minutes} minutter\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Varighet: %{minutes} minutter\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"ÅÅÅÅ-MM-DD tt:mm\\\",\\\"accessible_date_only_format\\\":\\\"ÅÅÅÅ-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Formatter som\\\",\\\"accessible_time_only_format\\\":\\\"tt:mm\\\",\\\"course\\\":\\\"Emne\\\",\\\"local\\\":\\\"Lokal\\\"}},\\\"nb-x-k12\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Varighet: 1 minutt\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Varighet: %{hours} timer and %{minutes} minutter\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Varighet: %{minutes} minutter\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"DD-MM-ÅÅÅÅ tt:mm\\\",\\\"accessible_date_only_format\\\":\\\"ÅÅÅÅ-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Formater som\\\",\\\"accessible_time_only_format\\\":\\\"tt:mm\\\",\\\"course\\\":\\\"Fag\\\",\\\"local\\\":\\\"Lokal\\\"}},\\\"nl\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Duur: 1 minuut\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Duur: %{hours} uur en %{minutes} minuten\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Duur: %{minutes} minuten\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"JJJJ-MM-DD uu:mm\\\",\\\"accessible_date_only_format\\\":\\\"JJJJ-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Formaat als\\\",\\\"accessible_time_only_format\\\":\\\"JJJJ-MM-DD uu:mm\\\",\\\"course\\\":\\\"Cursus\\\",\\\"local\\\":\\\"Plaatselijk\\\"}},\\\"nn\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Varigheit: 1 minutt\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Varigheit: %{hours} timar og %{minutes} minutt\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Varigheit: %{minutes}minutt\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"DD-MM-ÅÅÅÅ tt:mm\\\",\\\"accessible_date_only_format\\\":\\\"DD-MM-ÅÅÅÅ\\\",\\\"accessible_date_prompt\\\":\\\"Format som\\\",\\\"accessible_time_only_format\\\":\\\"tt:mm\\\",\\\"course\\\":\\\"Emne\\\",\\\"local\\\":\\\"Lokal\\\"}},\\\"pl\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Czas trwania: 1 min\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Czas trwania: %{hours} godz. i %{minutes} min\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Czas trwania: %{minutes} min\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"RRRR-MM-DD gg:mm\\\",\\\"accessible_date_only_format\\\":\\\"RRRR-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Rodzaj formatu\\\",\\\"accessible_time_only_format\\\":\\\"gg:mm\\\",\\\"course\\\":\\\"Kurs\\\",\\\"local\\\":\\\"Lokalne\\\"}},\\\"pt\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Duração: 1 minuto\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Duração: %{hours} horas e %{minutes} minutos\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Duração: %{minutes} minutos\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"YYYY-MM-DD hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"AAAA-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Gostar do Formato\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Disciplina\\\",\\\"local\\\":\\\"Local\\\"}},\\\"pt-BR\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Duração: 1 minuto\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Duração: %{hours} horas e %{minutes} minutos\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Duração: %{minutes} minutos\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"DD-MM-AAAA hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"DD-MM-AAAA\\\",\\\"accessible_date_prompt\\\":\\\"Formatar como\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Curso\\\",\\\"local\\\":\\\"Local\\\"}},\\\"ru\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Длительность: 1 минута\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Длительность: %{hours} часов и %{minutes} минут\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Длительность: %{minutes} минут\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"ГГГГ-ММ-ДД чч:мм\\\",\\\"accessible_date_only_format\\\":\\\"ГГГГ-ММ-ДД\\\",\\\"accessible_date_prompt\\\":\\\"Формат подобно\\\",\\\"accessible_time_only_format\\\":\\\"чч:мм\\\",\\\"course\\\":\\\"Курс\\\",\\\"local\\\":\\\"Местный\\\"}},\\\"sl\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Trajanje: 1 minuta\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Trajanje: %{hours} ur in %{minutes} minut\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Trajanje: %{minutes} minut\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"LLLL-MM-DD uu:mm\\\",\\\"accessible_date_only_format\\\":\\\"LLLL-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Oblikuj všeček\\\",\\\"accessible_time_only_format\\\":\\\"uu:mm\\\",\\\"course\\\":\\\"Predmet\\\",\\\"local\\\":\\\"Lokalno\\\"}},\\\"sv\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Varaktighet: 1 minut\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Varaktighet: %{hours} timmar och %{minutes} minuter\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Varaktighet: %{minutes} minuter\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"ÅÅÅÅ-MM-DD hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"ÅÅÅÅ-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Formatera Gilla\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Kurs\\\",\\\"local\\\":\\\"Lokal\\\"}},\\\"sv-x-k12\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Varaktighet: 1 minut\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Varaktighet: %{hours} timmar och %{minutes} minuter\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Varaktighet: %{minutes} minuter\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"ÅÅÅÅ-MM-DD hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"ÅÅÅÅ-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Formatera Gilla\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"Kurs\\\",\\\"local\\\":\\\"Lokal\\\"}},\\\"tr\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"Süre: 1 dakika\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"Süre: %{hours} saat %{minutes} dakika\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"Süre: %{minutes} dakika\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"YYYY-MM-DD hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"YYYY-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"Gibi Format\\\",\\\"accessible_time_only_format\\\":\\\"ss:dd\\\",\\\"course\\\":\\\"Ders\\\",\\\"local\\\":\\\"Yerel\\\"}},\\\"uk\\\":{\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"РРРР-ММ-ДД гг:хв\\\",\\\"accessible_date_only_format\\\":\\\"РРРР-ММ-ДД\\\",\\\"accessible_date_prompt\\\":\\\"Форматувати як\\\",\\\"accessible_time_only_format\\\":\\\"гг:хв\\\",\\\"course\\\":\\\"Курс\\\",\\\"local\\\":\\\"локально\\\"}},\\\"zh-Hans\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"持续时间:1 分钟\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"持续时间:%{hours}小时 %{minutes} 分钟\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"持续时间:%{minutes}分钟\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"YYYY-MM-DD hh:mm\\\",\\\"accessible_date_only_format\\\":\\\"YYYY-MM-DD\\\",\\\"accessible_date_prompt\\\":\\\"格式像\\\",\\\"accessible_time_only_format\\\":\\\"hh:mm\\\",\\\"course\\\":\\\"课程\\\",\\\"local\\\":\\\"当地时间\\\"}},\\\"zh-Hant\\\":{\\\"duration_1_minute_29c7d5ab\\\":\\\"持續時間:1 分鐘\\\",\\\"duration_hours_hours_and_minutes_minutes_d5da8c3\\\":\\\"持續時間:%{hours}小時和 %{minutes} 分鐘\\\",\\\"duration_minutes_minutes_d7b9182b\\\":\\\"持續時間:%{minutes}分鐘\\\",\\\"helpers\\\":{\\\"accessible_date_format\\\":\\\"年年年年-月月-日日 時時:分分\\\",\\\"accessible_date_only_format\\\":\\\"年年年年-月月-日日\\\",\\\"accessible_date_prompt\\\":\\\"格式示例:\\\",\\\"accessible_time_only_format\\\":\\\"時時:分分\\\",\\\"course\\\":\\\"課程\\\",\\\"local\\\":\\\"本地\\\"}}}\"));\n","\n import I18n from '@canvas/i18n/i18nObj';\n \n import 'translations/handlebars_helpers';\n import 'translations/_core';\n \n import 'translations/_core_en';\n\n export default I18n.scoped('handlebars_helpers');\n ","#\n# Copyright (C) 2011 - present Instructure, Inc.\n#\n# This file is part of Canvas.\n#\n# Canvas is free software: you can redistribute it and/or modify it under\n# the terms of the GNU Affero General Public License as published by the Free\n# Software Foundation, version 3 of the License.\n#\n# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n# details.\n#\n# You should have received a copy of the GNU Affero General Public License along\n# with this program. If not, see .\n\nimport tz from '@canvas/timezone'\nimport enrollmentName from './enrollmentName'\nimport _Handlebars from 'handlebars/runtime'\nimport I18nObj from '@canvas/i18n' # 'i18nObj' gets the extended I18n object with all the extra functions (interpolate, strftime, ...)\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport htmlEscape from 'html-escape'\nimport semanticDateRange from '@canvas/datetime/semanticDateRange'\nimport dateSelect from './dateSelect'\nimport mimeClass from '@canvas/mime/mimeClass'\nimport apiUserContent from '@canvas/util/jquery/apiUserContent'\nimport textHelper from '@canvas/util/TextHelper.coffee'\nimport numberFormat from '@canvas/i18n/numberFormat'\nimport '@canvas/datetime'\nimport '@canvas/jquery/jquery.instructure_misc_helpers'\nimport '@canvas/jquery/jquery.instructure_misc_plugins'\nimport 'translations/_core_en'\nimport I18n from 'i18n!handlebars_helpers' # 'i18n!handlebars_helpers' sets the scope for the I18n.t calls\n\nHandlebars = _Handlebars.default\n\nHandlebars.registerHelper name, fn for name, fn of {\n t : (args..., options) ->\n wrappers = {}\n options = options?.hash ? {}\n for key, value of options when key.match(/^w\\d+$/)\n wrappers[new Array(parseInt(key.replace('w', '')) + 2).join('*')] = value\n delete options[key]\n options.wrapper = wrappers if wrappers['*']\n unless (typeof this == 'undefined') || (this instanceof Window)\n options[key] = this[key] for key in this\n new Handlebars.SafeString htmlEscape(I18nObj.t(args..., options))\n\n __i18nliner_escape: (val) ->\n htmlEscape val\n\n __i18nliner_safe: (val) ->\n new htmlEscape.SafeString(val)\n\n __i18nliner_concat: (args..., options) ->\n args.join(\"\")\n\n hiddenIf : (condition) -> \" display:none; \" if condition\n\n hiddenUnless : (condition) -> \" display:none; \" unless condition\n\n hiddenIfExists : (condition) -> \" display:none; \" if condition?\n\n hiddenUnlessExists : (condition) -> \" display:none; \" unless condition?\n\n ifExists: (condition, options) ->\n if condition?\n options.fn @\n else\n options.inverse @\n\n semanticDateRange : ->\n new Handlebars.SafeString semanticDateRange arguments...\n\n # expects: a Date object or an ISO string\n contextSensitiveDatetimeTitle : (datetime, {hash: {justText}})->\n localDatetime = $.datetimeString(datetime)\n titleText = localDatetime\n if ENV and ENV.CONTEXT_TIMEZONE and (ENV.TIMEZONE != ENV.CONTEXT_TIMEZONE)\n localText = I18n.t('#helpers.local','Local')\n courseText = I18n.t('#helpers.course', 'Course')\n courseDatetime = $.datetimeString(datetime, timezone: ENV.CONTEXT_TIMEZONE)\n if localDatetime != courseDatetime\n titleText = \"#{htmlEscape localText}: #{htmlEscape localDatetime} #{htmlEscape courseText}: #{htmlEscape courseDatetime}\"\n\n if justText\n new Handlebars.SafeString titleText\n else\n new Handlebars.SafeString \"data-tooltip data-html-tooltip-title=\\\"#{htmlEscape titleText}\\\"\"\n\n # expects: a Date object or an ISO string\n friendlyDatetime : (datetime, {hash: {pubdate, contextSensitive}}) ->\n return unless datetime?\n datetime = tz.parse(datetime) unless _.isDate datetime\n fudged = $.fudgeDateForProfileTimezone(tz.parse(datetime))\n timeTitleHtml = \"\"\n if contextSensitive and ENV and ENV.CONTEXT_TIMEZONE\n timeTitleHtml = Handlebars.helpers.contextSensitiveDatetimeTitle(datetime, hash: {justText: true})\n else\n timeTitleHtml = $.datetimeString(datetime)\n\n new Handlebars.SafeString \"\"\"\n \n \"\"\"\n\n\n fudge: (datetime) ->\n $.fudgeDateForProfileTimezone(datetime)\n\n unfudge: (datetime) ->\n $.unfudgeDateForProfileTimezone(datetime)\n\n # expects: a Date object or an ISO string\n formattedDate : (datetime, format, {hash: {pubdate}}) ->\n return unless datetime?\n datetime = tz.parse(datetime) unless _.isDate datetime\n new Handlebars.SafeString \"\"\n\n # IMPORTANT: these next two handlebars helpers emit profile-timezone\n # human-formatted strings. don't send them as is to the server (you can\n # parse them with tz.parse(), or preferably not use these values at all\n # when sending to the server, instead using a machine-formatted value\n # stored elsewhere).\n\n # expects: anything that $.datetimeString can handle\n datetimeFormatted : (datetime) ->\n $.datetimeString(datetime)\n\n # Strips the time information from the datetime and accounts for the user's\n # timezone preference. expects: anything tz() can handle\n dateString : (datetime) ->\n return '' unless datetime\n I18nObj.l \"date.formats.medium\", datetime\n\n # Convert the total amount of minutes into a Hours:Minutes format.\n minutesToHM : (minutes) ->\n hours = Math.floor(minutes / 60)\n real_minutes = minutes % 60\n real_min_str = (if real_minutes < 10 then \"0\" + real_minutes else real_minutes)\n \"#{hours}:#{real_min_str}\"\n\n ###*\n * Convert the total amount of minutes into a readable duration.\n * @param {number} Duration in minutes elapsed\n * @return {string} String containing a formatted duration including hours and minutes\n * Example:\n * ...\n * duration = 97\n * durationToString(duration)\n * ...\n * Returns\n * \"Duration: 1 hour and 37 minutes\"\n ###\n durationToString : (duration) ->\n # stores the hours in the duration\n hours = Math.floor(duration / 60)\n # stores the remaining minutes after substracting the hours\n minutes = duration % 60\n if hours > 0\n return I18n.t(\"Duration: %{hours} hours and %{minutes} minutes\", {hours: hours, minutes: minutes})\n else if minutes > 1\n return I18n.t(\"Duration: %{minutes} minutes\", {minutes: minutes})\n else\n return I18n.t(\"Duration: 1 minute\")\n\n # helper for easily creating icon font markup\n addIcon : (icontype) ->\n new Handlebars.SafeString \"\"\n\n # helper for using date.js's custom toString method on Date objects\n dateToString : (date = '', format) ->\n date.toString(format)\n\n # convert a date to a string, using the given i18n format in the date.formats namespace\n tDateToString : (date = '', i18n_format) ->\n return '' unless date\n date = tz.parse(date) unless _.isDate date\n fudged = $.fudgeDateForProfileTimezone(tz.parse(date))\n I18nObj.l \"date.formats.#{i18n_format}\", fudged\n\n # convert a date to a time string, using the given i18n format in the time.formats namespace\n tTimeToString : (date = '', i18n_format) ->\n return '' unless date\n date = tz.parse(date) unless _.isDate date\n fudged = $.fudgeDateForProfileTimezone(tz.parse(date))\n I18nObj.l \"time.formats.#{i18n_format}\", fudged\n\n tTimeHours : (date = '') ->\n if date.getMinutes() == 0 and date.getSeconds() == 0\n I18nObj.l \"time.formats.tiny_on_the_hour\", date\n else\n I18nObj.l \"time.formats.tiny\", date\n\n # convert an event date and time to a string using the given date and time format specifiers\n tEventToString : (date = '', i18n_date_format = 'short', i18n_time_format = 'tiny') ->\n I18nObj.t 'time.event',\n defaultValue: '%{date} at %{time}',\n date: I18nObj.l \"date.formats.#{i18n_date_format}\", date\n time: I18nObj.l \"time.formats.#{i18n_time_format}\", date\n\n # formats a date as a string, using the given i18n format string\n strftime : (date = '', fmtstr) ->\n I18nObj.strftime date, fmtstr\n\n ##\n # outputs the format preferred for date inputs to prompt KB and SR\n # users with for interacting with datepickers\n #\n # @public\n #\n # @param {string} format defaults to 'datetime', if 'date' only returns\n # the date portion of the format, same for 'time'\n #\n # @returns {String} the format to include for all datepickers\n accessibleDateFormat: (format='datetime')->\n if format is 'date'\n I18n.t \"#helpers.accessible_date_only_format\", \"YYYY-MM-DD\"\n else if format is 'time'\n I18n.t \"#helpers.accessible_time_only_format\", \"hh:mm\"\n else\n I18n.t \"#helpers.accessible_date_format\", \"YYYY-MM-DD hh:mm\"\n\n ##\n # outputs the prompt to include in labels attached to date pickers for\n # screenreader consumption\n #\n # @public\n #\n # @param {string} format defaults to 'datetime', if 'date' only returns\n # the date portion of the format, same for 'time'\n #\n # @returns {String} the prompt for telling SRs about how to\n # input a date\n datepickerScreenreaderPrompt: (format='datetime')->\n promptText = I18n.t \"#helpers.accessible_date_prompt\", \"Format Like\"\n format = Handlebars.helpers.accessibleDateFormat(format)\n \"#{promptText} #{format}\"\n\n mimeClass: mimeClass\n\n # use this method to process any user content fields returned in api responses\n # this is important to handle object/embed tags safely, and to properly display audio/video tags\n convertApiUserContent: (html, {hash}) ->\n content = apiUserContent.convert(html, hash)\n # if the content is going to get picked up by tinymce, do not mark as safe\n # because we WANT it to be escaped again.\n content = new Handlebars.SafeString content unless hash and hash.forEditing\n content\n\n # Turns plaintext into HTML with links and newlines\n # Not for use by text in an RCE\n linkify: (text) ->\n html = textHelper.formatMessage(text)\n content = new Handlebars.SafeString html\n content\n\n newlinesToBreak : (string) ->\n # Convert a null to an empty string so it doesn't blow up.\n string ||= ''\n new Handlebars.SafeString htmlEscape(string).replace(/\\n/g, \" \")\n\n not: (arg) -> !arg\n\n # runs block if all arguments are === to each other\n # usage:\n # {{#ifEqual argument1 argument2 'a string argument' argument4}}\n # everything was equal\n # {{else}}\n # everything was NOT equal\n # {{/ifEqual}}\n ifEqual: ->\n [previousArg, args..., {fn, inverse}] = arguments\n for arg in args\n return inverse(this) if arg != previousArg\n previousArg = arg\n fn(this)\n\n # runs block if *ALL* arguments are truthy\n # usage:\n # {{#ifAll arg1 arg2 arg3 arg}}\n # everything was truthy\n # {{else}}\n # something was falsey\n # {{/ifAll}}\n ifAll: ->\n [args..., {fn, inverse}] = arguments\n for arg in args\n return inverse(this) unless arg\n fn(this)\n\n # runs block if *ANY* arguments are truthy\n # usage:\n # {{#ifAny arg1 arg2 arg3 arg}}\n # something was truthy\n # {{else}}\n # all were falsy\n # {{/ifAny}}\n ifAny: ->\n [args..., {fn, inverse}] = arguments\n for arg in args\n return fn(this) if arg\n inverse(this)\n\n # runs block if the argument is null or undefined\n # usage:\n # {{#ifNull arg}}\n # arg was null\n # {{else}}\n # arg is not null\n # {{/ifNull}}\n ifNull: ->\n [args..., {fn, inverse}] = arguments\n arg = args[0]\n if arg?\n return inverse(this)\n fn(this)\n\n # {{#eachWithIndex records startingIndex=0}}\n #
{{Name}}
\n # {{/each_with_index}}\n #\n # (startingIndex will default to 0 if not specified)\n eachWithIndex: (context, options) ->\n fn = options.fn\n inverse = options.inverse\n startingValue = parseInt(options.hash.startingValue || 0, 10)\n ret = ''\n\n if context and context.length > 0\n for own index, ctx of context\n ctx._index = parseInt(index, 10) + startingValue\n ret += fn ctx\n else\n ret = inverse this\n\n ret\n\n # loop through an object's properties, exposing \"property\" and\n # \"value.\"\n #\n # ex.\n #\n # obj =\n # group_one: [\n # { label: 'one', val: 1 }\n # { label: 'two', val: 2 }\n # ],\n # group_two: [\n # { label: 'three', val: 3 }\n # { label: 'four', val: 4 }\n # ]\n #\n # {{#eachProp this}}\n # \n # {{/each}}\n #\n # outputs:\n # \n # \n #\n eachProp: (context, options) ->\n (options.fn(property: prop, value: context[prop]) for prop of context).join ''\n\n # runs block if the setting is set to the value\n # usage:\n # {{#ifSettingIs some_setting some_value}}\n # The setting is set to the thing!\n # {{else}}\n # The setting is set to something else or doesn't exist\n # {{/ifSettingIs}}\n ifSettingIs: ->\n [setting, value, {fn, inverse}] = arguments\n settings = ENV.SETTINGS\n return fn(this) if settings[setting] == value\n inverse(this)\n\n # evaluates the block for each item in context and passes the result to $.toSentence\n toSentence: (context, options) ->\n results = _.map(context, (c) -> options.fn(c))\n $.toSentence(results)\n\n dateSelect: (name, options) ->\n new Handlebars.SafeString dateSelect(name, options.hash).html()\n\n ##\n # usage:\n # if 'this' is {human: true}\n # and you do: {{checkbox \"human\"}}\n # you'll get: \n # \n # you can pass custom attributes and use nested properties:\n # if 'this' is {likes: {tacos: true}}\n # and you do: {{checkbox \"likes.tacos\" class=\"foo bar\"}}\n # you'll get: \n # \n # you can append a unique string to the id with uniqid:\n # if you pass id=someid\" and uniqid=true as parameters\n # the result is like doing id=\"someid-{{uniqid}}\" inside a manually\n # created input tag.\n checkbox: (propertyName, {hash}) ->\n splitPropertyName = propertyName.split(/\\./)\n snakeCase = splitPropertyName.join('_')\n\n if hash.prefix\n splitPropertyName.unshift hash.prefix\n delete hash.prefix\n\n bracketNotation = splitPropertyName[0] + _.chain(splitPropertyName)\n .rest()\n .map((prop) -> \"[#{prop}]\")\n .value()\n .join('')\n inputProps = _.extend\n type: 'checkbox'\n value: 1\n id: snakeCase\n name: bracketNotation\n , hash\n\n unless inputProps.checked?\n value = _.reduce(splitPropertyName, ((memo, key) -> memo[key] if memo?), this)\n inputProps.checked = true if value\n\n for prop in ['checked', 'disabled']\n if inputProps[prop]\n inputProps[prop] = prop\n else\n delete inputProps[prop]\n\n if inputProps.uniqid and inputProps.id\n inputProps.id += \"-#{Handlebars.helpers.uniqid.call this}\"\n delete inputProps.uniqid\n\n attributes = for key, val of inputProps when val?\n \"#{htmlEscape key}=\\\"#{htmlEscape val}\\\"\"\n\n hiddenDisabledHtml = if inputProps.disabled then \"disabled\" else \"\"\n\n new Handlebars.SafeString \"\"\"\n \n \n \"\"\"\n\n toPercentage: (number) ->\n parseInt(100 * number) + \"%\"\n\n toPrecision: (number, precision) ->\n if number\n parseFloat(number).toPrecision(precision)\n else\n ''\n\n checkedIf: ( thing, thingToCompare, hash ) ->\n if arguments.length == 3\n if thing == thingToCompare\n 'checked'\n else\n ''\n else\n if thing then 'checked' else ''\n\n selectedIf: ( thing, thingToCompare, hash ) ->\n if arguments.length == 3\n if thing == thingToCompare\n 'selected'\n else\n ''\n else\n if thing then 'selected' else ''\n\n disabledIf: ( thing, hash ) ->\n if thing then 'disabled' else ''\n\n readonlyIf: ( thing, hash ) ->\n if thing then 'readonly' else ''\n\n checkedUnless: ( thing ) ->\n if thing then '' else 'checked'\n\n join: ( array, separator = ',', hash ) ->\n return '' unless array\n array.join(separator)\n\n ifIncludes: ( array, thing, options ) ->\n return false unless array\n if thing in array\n options.fn( this )\n else\n options.inverse( this )\n\n disabledIfIncludes: ( array, thing ) ->\n return '' unless array\n if thing in array\n 'disabled'\n else\n ''\n truncate_left: ( string, max ) ->\n return Handlebars.Utils.escapeExpression(textHelper.truncateText(string.split(\"\").reverse().join(\"\"), {max: max}).split(\"\").reverse().join(\"\"))\n\n truncate: ( string, max ) ->\n return Handlebars.Utils.escapeExpression(textHelper.truncateText(string, {max: max}))\n\n escape_html: (string) ->\n htmlEscape string\n\n enrollmentName: enrollmentName\n\n # Public: Print an array as a comma-separated list.\n #\n # separator - The string to separate values with (default: ', ')\n # propName - If array elements are objects, this is the object property\n # that should be printed (default: null).\n # limit - Only display the first n results of the list, following by \"end.\" (default: null)\n # end - If the list is truncated, display this string at the end of the list (default: '...').\n #\n # Examples\n # values = [1,2,3]\n # complexValues = [{ id: 1 }, { id: 2 }, { id: 3 }]\n # {{list values}} #=> 1, 2, 3\n # {{list values separator=\";\"}} #=> 1;2;3\n # {{list complexValues propName=\"id\"}} #=> 1, 2, 3\n # {{list values limit=2}} #=> 1, 2...\n # {{list values limit=2 end=\"!\"}} #=> 1, 2!\n #\n # Returns a string.\n list: (value, options) ->\n _.defaults(options.hash, separator: ', ', propName: null, limit: null, end: '...')\n {propName, limit, end, separator} = options.hash\n result = _.map value, (item) ->\n if propName then item[propName] else item\n result = result.slice(0, limit) if limit\n string = result.join(separator)\n if limit and value.length > limit then \"#{string}#{end}\" else string\n\n titleize: (str) ->\n return '' unless str\n words = str.split(/[ _]+/)\n titleizedWords = _(words).map (w) -> w[0].toUpperCase() + w.slice(1)\n titleizedWords.join(' ')\n\n uniqid: (context) ->\n context = (this || window) if arguments.length <= 1\n unless context._uniqid_\n chars = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"\n context._uniqid_ = (chars.charAt(Math.floor(Math.random() * chars.length)) for [1..8]).join ''\n return context._uniqid_\n\n # Public: Render a child Backbone view.\n #\n # backboneView - A class that extends from Backbone.View.\n #\n # Examples\n # childView = Backbone.View.extend(...)\n #\n # {{view childView}}\n #\n # Returns the child view's HTML.\n view: (backboneView) ->\n onNextFrame = (fn) -> (window.requestAnimationFrame or setTimeout)(fn, 0)\n id = \"placeholder-#{$.guid++}\"\n replace = ->\n $span = $(\"##{id}\")\n if $span.length then $span.replaceWith(backboneView.$el) else onNextFrame(replace)\n\n backboneView.render()\n onNextFrame(replace)\n new Handlebars.SafeString(\"pk\")\n\n # Public: yields the first non-nil argument\n #\n # Examples\n # Name: {{or display_name short_name 'Unknown'}}\n #\n # Returns the first non-null argument or null\n or: (args..., options) ->\n for arg in args when arg\n return arg\n\n # Public: returns icon for outcome mastery level\n #\n addMasteryIcon: (status, options={}) ->\n iconType = {\n 'exceeds': 'check-plus'\n 'mastery': 'check'\n 'near': 'plus'\n }[status] or 'x'\n new Handlebars.SafeString \"\"\n\n # Public: Render `fn` or `inverse` depending on whether firstArg is greater than secondArg\n #\n ifGreaterThan: (x, y, options) ->\n if x > y\n options.fn @\n else\n options.inverse @\n\n n:(number, {hash: {precision, percentage, strip_insignificant_zeros}}) ->\n I18nObj.n(number, {precision, percentage, strip_insignificant_zeros})\n\n nf:(number, {hash: {format}}) ->\n numberFormat[format](number)\n\n # Public: look up an element of a hash or array\n #\n lookup: (obj, key) ->\n obj && obj[key]\n}\n\nexport default Handlebars\n","// this file was auto-generated by rake i18n:generate_js.\n// you probably shouldn't edit it directly\nimport mergeI18nTranslations from '@canvas/i18n/mergeI18nTranslations.js';\n\n// we use JSON.parse here instead of just loading it as a javascript object literal\n// because according to https://v8.dev/blog/cost-of-javascript-2019#json that is faster\nmergeI18nTranslations(JSON.parse(\"{\\\"ar\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"بلا تاريخ\\\"}},\\\"ca\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Sense data\\\"}},\\\"cy\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Dim Dyddiad\\\"}},\\\"da\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Ingen dato\\\"}},\\\"da-x-k12\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Ingen dato\\\"}},\\\"de\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Kein Datum\\\"}},\\\"el\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Δεν υπάρχει Ημερομηνία\\\"}},\\\"en\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"No Date\\\"}},\\\"en-AU\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"No Date\\\"}},\\\"en-CA\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"No Date\\\"}},\\\"en-GB\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"No date\\\"}},\\\"es\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Sin fecha\\\"}},\\\"fa\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"تاریخ موجود نیست\\\"}},\\\"fi\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Ei päivämäärää\\\"}},\\\"fr\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Aucune date\\\"}},\\\"fr-CA\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Aucune date\\\"}},\\\"he\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"אין תאריך\\\"}},\\\"ht\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"San Dat\\\"}},\\\"hu\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Nincs dátum\\\"}},\\\"hy\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Տվյալներ չկան\\\"}},\\\"is\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Engin dagsetning\\\"}},\\\"it\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Nessuna data\\\"}},\\\"ja\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"日付なし\\\"}},\\\"ko\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"날짜 없음\\\"}},\\\"mi\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Kāore he rā\\\"}},\\\"nb\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Ingen dato\\\"}},\\\"nb-x-k12\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Ingen dato\\\"}},\\\"nl\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Geen datum\\\"}},\\\"nn\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Ingen dato\\\"}},\\\"pl\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Brak daty\\\"}},\\\"pt\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Sem data\\\"}},\\\"pt-BR\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Sem Data\\\"}},\\\"ru\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Отсутствует дата\\\"}},\\\"sl\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Brez datuma\\\"}},\\\"sv\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Inget datum\\\"}},\\\"sv-x-k12\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Inget datum\\\"}},\\\"tr\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Tarih Yok\\\"}},\\\"uk\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"Дата відсутня\\\"}},\\\"zh-Hans\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"无日期\\\"}},\\\"zh-Hant\\\":{\\\"dates\\\":{\\\"no_date\\\":\\\"無日期\\\"}}}\"));\n","\n import I18n from '@canvas/i18n/i18nObj';\n \n import 'translations/dates';\n import 'translations/_core';\n \n import 'translations/_core_en';\n\n export default I18n.scoped('dates');\n ","//\n// Copyright (C) 2012 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see .\n\n// requires $.sameDate, $.dateString, $.timeString, $.datetimeString\nimport I18n from 'i18n!dates'\nimport $ from 'jquery'\nimport tz from '@canvas/timezone'\nimport htmlEscape from 'html-escape'\nimport './jquery/index'\n\nexport default function semanticDateRange(startISO, endISO) {\n if (!startISO) {\n return `\n ${htmlEscape(I18n.t('no_date', 'No Date'))}\n`\n }\n\n const startAt = tz.parse(startISO)\n const endAt = tz.parse(endISO)\n if (+startAt !== +endAt) {\n if (!$.sameDate(startAt, endAt)) {\n return `\n -\n \n`\n } else {\n return `\n -\n \n`\n }\n } else {\n return `\n \n`\n }\n}\n","\"use strict\";\n/*globals Handlebars: true */\nvar base = require(\"./handlebars/base\");\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\nvar SafeString = require(\"./handlebars/safe-string\")[\"default\"];\nvar Exception = require(\"./handlebars/exception\")[\"default\"];\nvar Utils = require(\"./handlebars/utils\");\nvar runtime = require(\"./handlebars/runtime\");\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nvar create = function() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = SafeString;\n hb.Exception = Exception;\n hb.Utils = Utils;\n\n hb.VM = runtime;\n hb.template = function(spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n};\n\nvar Handlebars = create();\nHandlebars.create = create;\n\nexports[\"default\"] = Handlebars;","/*\n * Copyright (C) 2017 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see .\n */\n\nimport I18n from './i18nObj'\n\nconst numberFormat = {\n _format(n, options) {\n if (typeof n !== 'number' || isNaN(n)) {\n return n\n }\n return I18n.n(n, options)\n },\n\n outcomeScore(n) {\n return numberFormat._format(n, {precision: 2, strip_insignificant_zeros: true})\n }\n}\n\nexport default numberFormat\n","\"use strict\";\n/*jshint -W004 */\nvar SafeString = require(\"./safe-string\")[\"default\"];\n\nvar escape = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n \"`\": \"`\"\n};\n\nvar badChars = /[&<>\"'`]/g;\nvar possible = /[&<>\"'`]/;\n\nfunction escapeChar(chr) {\n return escape[chr] || \"&\";\n}\n\nfunction extend(obj, value) {\n for(var key in value) {\n if(Object.prototype.hasOwnProperty.call(value, key)) {\n obj[key] = value[key];\n }\n }\n}\n\nexports.extend = extend;var toString = Object.prototype.toString;\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\nvar isFunction = function(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\nif (isFunction(/x/)) {\n isFunction = function(value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nvar isFunction;\nexports.isFunction = isFunction;\nvar isArray = Array.isArray || function(value) {\n return (value && typeof value === 'object') ? toString.call(value) === '[object Array]' : false;\n};\nexports.isArray = isArray;\n\nfunction escapeExpression(string) {\n // don't escape SafeStrings, since they're already safe\n if (string instanceof SafeString) {\n return string.toString();\n } else if (!string && string !== 0) {\n return \"\";\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = \"\" + string;\n\n if(!possible.test(string)) { return string; }\n return string.replace(badChars, escapeChar);\n}\n\nexports.escapeExpression = escapeExpression;function isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nexports.isEmpty = isEmpty;","\"use strict\";\n// Build out our basic SafeString type\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = function() {\n return \"\" + this.string;\n};\n\nexports[\"default\"] = SafeString;","// this file was auto-generated by rake i18n:generate_js.\n// you probably shouldn't edit it directly\nimport mergeI18nTranslations from '@canvas/i18n/mergeI18nTranslations.js';\n\n// we use JSON.parse here instead of just loading it as a javascript object literal\n// because according to https://v8.dev/blog/cost-of-javascript-2019#json that is faster\nmergeI18nTranslations(JSON.parse(\"{\\\"ar\\\":{\\\"archive_3f794d7e\\\":\\\"أرشيف\\\",\\\"audio_dd489fcc\\\":\\\"صوت\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"الصورة\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"نص عادي\\\",\\\"presentation_2d9387ca\\\":\\\"عرض تقديمي\\\",\\\"source_code_2395ca74\\\":\\\"رمز المصدر\\\",\\\"spreadsheet_6d622119\\\":\\\"جدول بيانات\\\",\\\"text_document_eacbcdb7\\\":\\\"مستند نصي\\\",\\\"unknown_47a3b725\\\":\\\"غير معروف\\\",\\\"video_b9f27375\\\":\\\"فيديو\\\",\\\"web_page_146f9102\\\":\\\"صفحة الويب\\\"},\\\"ca\\\":{\\\"archive_3f794d7e\\\":\\\"Arxiva\\\",\\\"audio_dd489fcc\\\":\\\"Àudio\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Imatge\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Text sense format\\\",\\\"presentation_2d9387ca\\\":\\\"Presentació\\\",\\\"source_code_2395ca74\\\":\\\"Codi font\\\",\\\"spreadsheet_6d622119\\\":\\\"Full de càlcul\\\",\\\"text_document_eacbcdb7\\\":\\\"Document de text\\\",\\\"unknown_47a3b725\\\":\\\"Desconegut\\\",\\\"video_b9f27375\\\":\\\"Vídeo\\\",\\\"web_page_146f9102\\\":\\\"Pàgina web\\\"},\\\"cy\\\":{\\\"archive_3f794d7e\\\":\\\"Archifo\\\",\\\"audio_dd489fcc\\\":\\\"Sain\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Delwedd\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Testun plaen\\\",\\\"presentation_2d9387ca\\\":\\\"Cyflwyniad\\\",\\\"source_code_2395ca74\\\":\\\"Cod ffynhonnell\\\",\\\"spreadsheet_6d622119\\\":\\\"Taenlen\\\",\\\"text_document_eacbcdb7\\\":\\\"Dogfen Testun\\\",\\\"unknown_47a3b725\\\":\\\"Dieithr\\\",\\\"video_b9f27375\\\":\\\"Fideo\\\",\\\"web_page_146f9102\\\":\\\"Tudalen we\\\"},\\\"da\\\":{\\\"archive_3f794d7e\\\":\\\"Arkiv\\\",\\\"audio_dd489fcc\\\":\\\"Lyd\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Billede\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Almindelig tekst\\\",\\\"presentation_2d9387ca\\\":\\\"Præsentation\\\",\\\"source_code_2395ca74\\\":\\\"Kildekode\\\",\\\"spreadsheet_6d622119\\\":\\\"Regneark\\\",\\\"text_document_eacbcdb7\\\":\\\"Tekstdokument\\\",\\\"unknown_47a3b725\\\":\\\"Ukendt\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Webside\\\"},\\\"da-x-k12\\\":{\\\"archive_3f794d7e\\\":\\\"Arkiv\\\",\\\"audio_dd489fcc\\\":\\\"Lyd\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Billede\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Almindelig tekst\\\",\\\"presentation_2d9387ca\\\":\\\"Præsentation\\\",\\\"source_code_2395ca74\\\":\\\"Kildekode\\\",\\\"spreadsheet_6d622119\\\":\\\"Regneark\\\",\\\"text_document_eacbcdb7\\\":\\\"Tekstdokument\\\",\\\"unknown_47a3b725\\\":\\\"Ukendt\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Webside\\\"},\\\"de\\\":{\\\"archive_3f794d7e\\\":\\\"Archivieren\\\",\\\"audio_dd489fcc\\\":\\\"Audio\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Bild\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Nur-Text\\\",\\\"presentation_2d9387ca\\\":\\\"Präsentation\\\",\\\"source_code_2395ca74\\\":\\\"Quellcode\\\",\\\"spreadsheet_6d622119\\\":\\\"Tabellenblatt\\\",\\\"text_document_eacbcdb7\\\":\\\"Textdokument\\\",\\\"unknown_47a3b725\\\":\\\"Unbekannt\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Webseite\\\"},\\\"el\\\":{\\\"archive_3f794d7e\\\":\\\"Αρχείο\\\",\\\"audio_dd489fcc\\\":\\\"Αρχείο ήχου\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Εικόνα\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Απλό κείμενο\\\",\\\"presentation_2d9387ca\\\":\\\"Παρουσίαση\\\",\\\"source_code_2395ca74\\\":\\\"Πηγαίος κώδικας\\\",\\\"spreadsheet_6d622119\\\":\\\"Λογιστικό φύλλο\\\",\\\"text_document_eacbcdb7\\\":\\\"Έγγραφο κειμένου\\\",\\\"unknown_47a3b725\\\":\\\"Άγνωστο\\\",\\\"video_b9f27375\\\":\\\"Αρχείο Βίντεο\\\",\\\"web_page_146f9102\\\":\\\"Ιστοσελίδα\\\"},\\\"en\\\":{\\\"archive_3f794d7e\\\":\\\"Archive\\\",\\\"audio_dd489fcc\\\":\\\"Audio\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Image\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Plain text\\\",\\\"presentation_2d9387ca\\\":\\\"Presentation\\\",\\\"source_code_2395ca74\\\":\\\"Source code\\\",\\\"spreadsheet_6d622119\\\":\\\"Spreadsheet\\\",\\\"text_document_eacbcdb7\\\":\\\"Text document\\\",\\\"unknown_47a3b725\\\":\\\"Unknown\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Web page\\\"},\\\"en-AU\\\":{\\\"archive_3f794d7e\\\":\\\"Archive\\\",\\\"audio_dd489fcc\\\":\\\"Audio\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Image\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Plain text\\\",\\\"presentation_2d9387ca\\\":\\\"Presentation\\\",\\\"source_code_2395ca74\\\":\\\"Source code\\\",\\\"spreadsheet_6d622119\\\":\\\"Spreadsheet\\\",\\\"text_document_eacbcdb7\\\":\\\"Text document\\\",\\\"unknown_47a3b725\\\":\\\"Unknown\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Web page\\\"},\\\"en-CA\\\":{\\\"archive_3f794d7e\\\":\\\"Archive\\\",\\\"audio_dd489fcc\\\":\\\"Audio\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Image\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Plain text\\\",\\\"presentation_2d9387ca\\\":\\\"Presentation\\\",\\\"source_code_2395ca74\\\":\\\"Source code\\\",\\\"spreadsheet_6d622119\\\":\\\"Spreadsheet\\\",\\\"text_document_eacbcdb7\\\":\\\"Text document\\\",\\\"unknown_47a3b725\\\":\\\"Unknown\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Web page\\\"},\\\"en-GB\\\":{\\\"archive_3f794d7e\\\":\\\"Archive\\\",\\\"audio_dd489fcc\\\":\\\"Audio\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Image\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Plain text\\\",\\\"presentation_2d9387ca\\\":\\\"Presentation\\\",\\\"source_code_2395ca74\\\":\\\"Source code\\\",\\\"spreadsheet_6d622119\\\":\\\"Spreadsheet\\\",\\\"text_document_eacbcdb7\\\":\\\"Text document\\\",\\\"unknown_47a3b725\\\":\\\"Unknown\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Web page\\\"},\\\"es\\\":{\\\"archive_3f794d7e\\\":\\\"Archivar\\\",\\\"audio_dd489fcc\\\":\\\"Audio\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Imagen\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Texto sin formato\\\",\\\"presentation_2d9387ca\\\":\\\"Presentación\\\",\\\"source_code_2395ca74\\\":\\\"Código fuente\\\",\\\"spreadsheet_6d622119\\\":\\\"Hoja de cálculo\\\",\\\"text_document_eacbcdb7\\\":\\\"Documento de texto\\\",\\\"unknown_47a3b725\\\":\\\"Desconocido\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Página web\\\"},\\\"fa\\\":{\\\"archive_3f794d7e\\\":\\\"بایگانی\\\",\\\"audio_dd489fcc\\\":\\\"صدا\\\",\\\"flash_6afbf65a\\\":\\\"فلش\\\",\\\"image_8ad06\\\":\\\"تصویر\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"متن ساده\\\",\\\"presentation_2d9387ca\\\":\\\"ارائه\\\",\\\"source_code_2395ca74\\\":\\\"رمز منبع\\\",\\\"spreadsheet_6d622119\\\":\\\"صفحه گسترده\\\",\\\"text_document_eacbcdb7\\\":\\\"سند متنی\\\",\\\"unknown_47a3b725\\\":\\\"ناشناس\\\",\\\"video_b9f27375\\\":\\\"تصویر\\\",\\\"web_page_146f9102\\\":\\\"صفحه وب\\\"},\\\"fi\\\":{\\\"archive_3f794d7e\\\":\\\"Arkisto\\\",\\\"audio_dd489fcc\\\":\\\"Ääni\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Kuva\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Pelkkä teksti\\\",\\\"presentation_2d9387ca\\\":\\\"Esitys\\\",\\\"source_code_2395ca74\\\":\\\"Lähteen koodi\\\",\\\"spreadsheet_6d622119\\\":\\\"Laskentataulukko\\\",\\\"text_document_eacbcdb7\\\":\\\"Tekstiasiakirja\\\",\\\"unknown_47a3b725\\\":\\\"Tuntematon\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Verkkosivusto\\\"},\\\"fr\\\":{\\\"archive_3f794d7e\\\":\\\"Archiver\\\",\\\"audio_dd489fcc\\\":\\\"Audio\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Image\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Texte brut\\\",\\\"presentation_2d9387ca\\\":\\\"Présentation\\\",\\\"source_code_2395ca74\\\":\\\"Code source\\\",\\\"spreadsheet_6d622119\\\":\\\"Feuille\\\",\\\"text_document_eacbcdb7\\\":\\\"Document de texte\\\",\\\"unknown_47a3b725\\\":\\\"Inconnu\\\",\\\"video_b9f27375\\\":\\\"Vidéo\\\",\\\"web_page_146f9102\\\":\\\"Page Web\\\"},\\\"fr-CA\\\":{\\\"archive_3f794d7e\\\":\\\"Archiver\\\",\\\"audio_dd489fcc\\\":\\\"Audio\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Image\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Texte brut\\\",\\\"presentation_2d9387ca\\\":\\\"Présentation\\\",\\\"source_code_2395ca74\\\":\\\"Code source\\\",\\\"spreadsheet_6d622119\\\":\\\"Feuille\\\",\\\"text_document_eacbcdb7\\\":\\\"Document de texte\\\",\\\"unknown_47a3b725\\\":\\\"Inconnu\\\",\\\"video_b9f27375\\\":\\\"Vidéo\\\",\\\"web_page_146f9102\\\":\\\"Page Web\\\"},\\\"he\\\":{\\\"archive_3f794d7e\\\":\\\"העברה לארכיון\\\",\\\"audio_dd489fcc\\\":\\\"שמע\\\",\\\"flash_6afbf65a\\\":\\\"פלאש\\\",\\\"image_8ad06\\\":\\\"תמונה\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"כיתוב פשוט\\\",\\\"presentation_2d9387ca\\\":\\\"מצגת\\\",\\\"source_code_2395ca74\\\":\\\"קוד מקור\\\",\\\"spreadsheet_6d622119\\\":\\\"גיליון חישובים\\\",\\\"text_document_eacbcdb7\\\":\\\"מסמך מלל\\\",\\\"unknown_47a3b725\\\":\\\"לא מוכר\\\",\\\"video_b9f27375\\\":\\\"וידאו\\\",\\\"web_page_146f9102\\\":\\\"דף אינטרנט\\\"},\\\"ht\\\":{\\\"archive_3f794d7e\\\":\\\"Achiv\\\",\\\"audio_dd489fcc\\\":\\\"Son\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Imaj\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Tèks brit\\\",\\\"presentation_2d9387ca\\\":\\\"Prezantasyon\\\",\\\"source_code_2395ca74\\\":\\\"Kòd sous\\\",\\\"spreadsheet_6d622119\\\":\\\"Fèy Kalkil\\\",\\\"text_document_eacbcdb7\\\":\\\"Dokiman Tèks\\\",\\\"unknown_47a3b725\\\":\\\"Enkoni\\\",\\\"video_b9f27375\\\":\\\"Videyo\\\",\\\"web_page_146f9102\\\":\\\"Paj web\\\"},\\\"hu\\\":{\\\"archive_3f794d7e\\\":\\\"Archívum\\\",\\\"audio_dd489fcc\\\":\\\"Hang\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Kép\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Egyszerű szöveg\\\",\\\"presentation_2d9387ca\\\":\\\"Prezentáció\\\",\\\"source_code_2395ca74\\\":\\\"Forráskód\\\",\\\"spreadsheet_6d622119\\\":\\\"Táblázat\\\",\\\"text_document_eacbcdb7\\\":\\\"Szöveges dokumentum\\\",\\\"unknown_47a3b725\\\":\\\"Ismeretlen\\\",\\\"video_b9f27375\\\":\\\"Videó\\\",\\\"web_page_146f9102\\\":\\\"Weboldal \\\"},\\\"hy\\\":{\\\"archive_3f794d7e\\\":\\\"Արխիվ\\\",\\\"audio_dd489fcc\\\":\\\"Աուդիո\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Պատկեր\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Սովորական տեքստ\\\",\\\"presentation_2d9387ca\\\":\\\"Պրեզենտացիա\\\",\\\"source_code_2395ca74\\\":\\\"Աղբյուրի կոդ\\\",\\\"spreadsheet_6d622119\\\":\\\"Էլեկտրոնային աղյուսակ\\\",\\\"text_document_eacbcdb7\\\":\\\"Տեքստային փաստաթուղթ\\\",\\\"unknown_47a3b725\\\":\\\"Անհայտ է\\\",\\\"video_b9f27375\\\":\\\"Վիդեո\\\",\\\"web_page_146f9102\\\":\\\"Վեբ-էջ\\\"},\\\"is\\\":{\\\"archive_3f794d7e\\\":\\\"Safn\\\",\\\"audio_dd489fcc\\\":\\\"Hljóð\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Mynd\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Einfaldur texti\\\",\\\"presentation_2d9387ca\\\":\\\"Kynning\\\",\\\"source_code_2395ca74\\\":\\\"Frumkóði\\\",\\\"spreadsheet_6d622119\\\":\\\"Töflureiknir\\\",\\\"text_document_eacbcdb7\\\":\\\"Textaskjal\\\",\\\"unknown_47a3b725\\\":\\\"Óþekkt\\\",\\\"video_b9f27375\\\":\\\"Myndband\\\",\\\"web_page_146f9102\\\":\\\"Vefsíða\\\"},\\\"it\\\":{\\\"archive_3f794d7e\\\":\\\"Archivia\\\",\\\"audio_dd489fcc\\\":\\\"Audio\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Immagine\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Testo normale\\\",\\\"presentation_2d9387ca\\\":\\\"Presentazione\\\",\\\"source_code_2395ca74\\\":\\\"Codice sorgente\\\",\\\"spreadsheet_6d622119\\\":\\\"Foglio di calcolo\\\",\\\"text_document_eacbcdb7\\\":\\\"Documento di testo\\\",\\\"unknown_47a3b725\\\":\\\"Sconosciuto\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Pagina web\\\"},\\\"ja\\\":{\\\"archive_3f794d7e\\\":\\\"アーカイブ\\\",\\\"audio_dd489fcc\\\":\\\"オーディオ\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"画像\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"プレーン テキスト\\\",\\\"presentation_2d9387ca\\\":\\\"プレゼンテーション\\\",\\\"source_code_2395ca74\\\":\\\"ソース コード\\\",\\\"spreadsheet_6d622119\\\":\\\"スプレッドシート\\\",\\\"text_document_eacbcdb7\\\":\\\"テキスト文書\\\",\\\"unknown_47a3b725\\\":\\\"不明\\\",\\\"video_b9f27375\\\":\\\"ビデオ\\\",\\\"web_page_146f9102\\\":\\\"Web ページ\\\"},\\\"ko\\\":{\\\"archive_3f794d7e\\\":\\\"저장소\\\",\\\"image_8ad06\\\":\\\"이미지\\\",\\\"unknown_47a3b725\\\":\\\"알 수 없음\\\"},\\\"mi\\\":{\\\"archive_3f794d7e\\\":\\\"Pūranga\\\",\\\"audio_dd489fcc\\\":\\\"Ōrorongo\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Āhua\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"kuputuhi tōkau\\\",\\\"presentation_2d9387ca\\\":\\\"Whakāturanga\\\",\\\"source_code_2395ca74\\\":\\\"waehere pūtake\\\",\\\"spreadsheet_6d622119\\\":\\\"Ripanga\\\",\\\"text_document_eacbcdb7\\\":\\\"tuhinga Kupu\\\",\\\"unknown_47a3b725\\\":\\\"Kaore e mōhiotia\\\",\\\"video_b9f27375\\\":\\\"Ataata\\\",\\\"web_page_146f9102\\\":\\\"whārangi Tukutuku\\\"},\\\"nb\\\":{\\\"archive_3f794d7e\\\":\\\"Arkiv\\\",\\\"audio_dd489fcc\\\":\\\"Lyd\\\",\\\"flash_6afbf65a\\\":\\\"Blitz\\\",\\\"image_8ad06\\\":\\\"Bilde\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Enkel tekst\\\",\\\"presentation_2d9387ca\\\":\\\"Presentasjon\\\",\\\"source_code_2395ca74\\\":\\\"kilde kode\\\",\\\"spreadsheet_6d622119\\\":\\\"Regneark\\\",\\\"text_document_eacbcdb7\\\":\\\"Tekst dokument\\\",\\\"unknown_47a3b725\\\":\\\"Ukjent\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Nettside\\\"},\\\"nb-x-k12\\\":{\\\"archive_3f794d7e\\\":\\\"Arkiv\\\",\\\"audio_dd489fcc\\\":\\\"Lyd\\\",\\\"flash_6afbf65a\\\":\\\"Blitz\\\",\\\"image_8ad06\\\":\\\"Bilde\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Enkel tekst\\\",\\\"presentation_2d9387ca\\\":\\\"Presentasjon\\\",\\\"source_code_2395ca74\\\":\\\"kilde kode\\\",\\\"spreadsheet_6d622119\\\":\\\"Regneark\\\",\\\"text_document_eacbcdb7\\\":\\\"Tekst dokument\\\",\\\"unknown_47a3b725\\\":\\\"Ukjent\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Nettside\\\"},\\\"nl\\\":{\\\"archive_3f794d7e\\\":\\\"Archiveren\\\",\\\"audio_dd489fcc\\\":\\\"Audio\\\",\\\"flash_6afbf65a\\\":\\\"Flash \\\",\\\"image_8ad06\\\":\\\"Afbeelding\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Tekst zonder opmaak\\\",\\\"presentation_2d9387ca\\\":\\\"Presentatie\\\",\\\"source_code_2395ca74\\\":\\\"Broncode\\\",\\\"spreadsheet_6d622119\\\":\\\"Werkblad\\\",\\\"text_document_eacbcdb7\\\":\\\"Tekstdocument\\\",\\\"unknown_47a3b725\\\":\\\"Onbekend\\\",\\\"video_b9f27375\\\":\\\"Video \\\",\\\"web_page_146f9102\\\":\\\"webpagina\\\"},\\\"nn\\\":{\\\"archive_3f794d7e\\\":\\\"Arkiv\\\",\\\"audio_dd489fcc\\\":\\\"Lyd\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Bilde\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Rein tekst\\\",\\\"presentation_2d9387ca\\\":\\\"Presentasjon\\\",\\\"source_code_2395ca74\\\":\\\"Kjeldekode\\\",\\\"spreadsheet_6d622119\\\":\\\"Rekneark\\\",\\\"text_document_eacbcdb7\\\":\\\"Tekstdokument\\\",\\\"unknown_47a3b725\\\":\\\"Ukjent\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Nettside\\\"},\\\"pl\\\":{\\\"archive_3f794d7e\\\":\\\"Archiwum\\\",\\\"audio_dd489fcc\\\":\\\"Audio\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Obraz\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Zwykły tekst\\\",\\\"presentation_2d9387ca\\\":\\\"Prezentacja\\\",\\\"source_code_2395ca74\\\":\\\"Kod źródłowy\\\",\\\"spreadsheet_6d622119\\\":\\\"Arkusz kalkulacyjny\\\",\\\"text_document_eacbcdb7\\\":\\\"Dokument tekstowy\\\",\\\"unknown_47a3b725\\\":\\\"Nieznany\\\",\\\"video_b9f27375\\\":\\\"Wideo\\\",\\\"web_page_146f9102\\\":\\\"Strona sieci Web\\\"},\\\"pt\\\":{\\\"archive_3f794d7e\\\":\\\"Arquivar\\\",\\\"audio_dd489fcc\\\":\\\"Áudio\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Imagem\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Texto simples\\\",\\\"presentation_2d9387ca\\\":\\\"Apresentação\\\",\\\"source_code_2395ca74\\\":\\\"Código-fonte\\\",\\\"spreadsheet_6d622119\\\":\\\"Folha de cálculo\\\",\\\"text_document_eacbcdb7\\\":\\\"Documento de texto\\\",\\\"unknown_47a3b725\\\":\\\"Desconhecido\\\",\\\"video_b9f27375\\\":\\\"Vídeo\\\",\\\"web_page_146f9102\\\":\\\"Página Web\\\"},\\\"pt-BR\\\":{\\\"archive_3f794d7e\\\":\\\"Arquivar\\\",\\\"audio_dd489fcc\\\":\\\"Áudio\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Imagem\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Texto simples\\\",\\\"presentation_2d9387ca\\\":\\\"Apresentação\\\",\\\"source_code_2395ca74\\\":\\\"Código-fonte\\\",\\\"spreadsheet_6d622119\\\":\\\"Planilha\\\",\\\"text_document_eacbcdb7\\\":\\\"Documento de texto\\\",\\\"unknown_47a3b725\\\":\\\"Desconhecido\\\",\\\"video_b9f27375\\\":\\\"Vídeo\\\",\\\"web_page_146f9102\\\":\\\"Página Web\\\"},\\\"ru\\\":{\\\"archive_3f794d7e\\\":\\\"Архив\\\",\\\"audio_dd489fcc\\\":\\\"Аудио\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Изображение\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Обычный текст\\\",\\\"presentation_2d9387ca\\\":\\\"Презентация\\\",\\\"source_code_2395ca74\\\":\\\"Код источника\\\",\\\"spreadsheet_6d622119\\\":\\\"Динамическая таблица\\\",\\\"text_document_eacbcdb7\\\":\\\"Текстовый документ\\\",\\\"unknown_47a3b725\\\":\\\"Неизвестно\\\",\\\"video_b9f27375\\\":\\\"Видео\\\",\\\"web_page_146f9102\\\":\\\"Веб-страница\\\"},\\\"sl\\\":{\\\"archive_3f794d7e\\\":\\\"Arhiviraj\\\",\\\"audio_dd489fcc\\\":\\\"Zvok\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Slika\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Navadno besedilo\\\",\\\"presentation_2d9387ca\\\":\\\"Predstavitev\\\",\\\"source_code_2395ca74\\\":\\\"Izvorna koda\\\",\\\"spreadsheet_6d622119\\\":\\\"Preglednica\\\",\\\"text_document_eacbcdb7\\\":\\\"Besedilni dokument\\\",\\\"unknown_47a3b725\\\":\\\"Neznano\\\",\\\"video_b9f27375\\\":\\\"Videoposnetek\\\",\\\"web_page_146f9102\\\":\\\"Spletna stran\\\"},\\\"sv\\\":{\\\"archive_3f794d7e\\\":\\\"Arkivera\\\",\\\"audio_dd489fcc\\\":\\\"Ljud\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Bild\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Oformaterad text\\\",\\\"presentation_2d9387ca\\\":\\\"Presentation\\\",\\\"source_code_2395ca74\\\":\\\"Källkod\\\",\\\"spreadsheet_6d622119\\\":\\\"Kalkylblad\\\",\\\"text_document_eacbcdb7\\\":\\\"Textdokument\\\",\\\"unknown_47a3b725\\\":\\\"Okänd\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Webbsida\\\"},\\\"sv-x-k12\\\":{\\\"archive_3f794d7e\\\":\\\"Arkivera\\\",\\\"audio_dd489fcc\\\":\\\"Ljud\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Bild\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Oformaterad text\\\",\\\"presentation_2d9387ca\\\":\\\"Presentation\\\",\\\"source_code_2395ca74\\\":\\\"Källkod\\\",\\\"spreadsheet_6d622119\\\":\\\"Kalkylblad\\\",\\\"text_document_eacbcdb7\\\":\\\"Textdokument\\\",\\\"unknown_47a3b725\\\":\\\"Okänd\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Webbsida\\\"},\\\"tr\\\":{\\\"archive_3f794d7e\\\":\\\"Arşiv\\\",\\\"audio_dd489fcc\\\":\\\"Ses\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"Resim\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Düz metin\\\",\\\"presentation_2d9387ca\\\":\\\"Sunum\\\",\\\"source_code_2395ca74\\\":\\\"Kaynak kodu\\\",\\\"spreadsheet_6d622119\\\":\\\"Elektronik Tablo\\\",\\\"text_document_eacbcdb7\\\":\\\"Metin belgesi\\\",\\\"unknown_47a3b725\\\":\\\"Bilinmiyor\\\",\\\"video_b9f27375\\\":\\\"Video\\\",\\\"web_page_146f9102\\\":\\\"Web sayfası\\\"},\\\"uk\\\":{\\\"archive_3f794d7e\\\":\\\"Архів\\\",\\\"audio_dd489fcc\\\":\\\"Звук\\\",\\\"flash_6afbf65a\\\":\\\"Флеш\\\",\\\"image_8ad06\\\":\\\"Зображення\\\",\\\"pdf_d8236d9a\\\":\\\"Формат PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"Простий текст\\\",\\\"presentation_2d9387ca\\\":\\\"Презентація\\\",\\\"source_code_2395ca74\\\":\\\"Вихідний код\\\",\\\"spreadsheet_6d622119\\\":\\\"Електронна таблиця\\\",\\\"text_document_eacbcdb7\\\":\\\"Текстовий документ\\\",\\\"unknown_47a3b725\\\":\\\"Невідомий\\\",\\\"video_b9f27375\\\":\\\"Відео\\\",\\\"web_page_146f9102\\\":\\\"Веб-сторінка\\\"},\\\"zh-Hans\\\":{\\\"archive_3f794d7e\\\":\\\"存档\\\",\\\"audio_dd489fcc\\\":\\\"音频\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"图像\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"纯文本\\\",\\\"presentation_2d9387ca\\\":\\\"展示\\\",\\\"source_code_2395ca74\\\":\\\"源代码\\\",\\\"spreadsheet_6d622119\\\":\\\"电子表格\\\",\\\"text_document_eacbcdb7\\\":\\\"文本文档\\\",\\\"unknown_47a3b725\\\":\\\"未知\\\",\\\"video_b9f27375\\\":\\\"视频\\\",\\\"web_page_146f9102\\\":\\\"网页\\\"},\\\"zh-Hant\\\":{\\\"archive_3f794d7e\\\":\\\"存檔\\\",\\\"audio_dd489fcc\\\":\\\"音頻\\\",\\\"flash_6afbf65a\\\":\\\"Flash\\\",\\\"image_8ad06\\\":\\\"影像\\\",\\\"pdf_d8236d9a\\\":\\\"PDF\\\",\\\"plain_text_e3ab33aa\\\":\\\"純文字\\\",\\\"presentation_2d9387ca\\\":\\\"簡報\\\",\\\"source_code_2395ca74\\\":\\\"源代碼\\\",\\\"spreadsheet_6d622119\\\":\\\"电子表格\\\",\\\"text_document_eacbcdb7\\\":\\\"文本文件\\\",\\\"unknown_47a3b725\\\":\\\"未知\\\",\\\"video_b9f27375\\\":\\\"視訊\\\",\\\"web_page_146f9102\\\":\\\"網頁\\\"}}\"));\n","\n import I18n from '@canvas/i18n/i18nObj';\n \n import 'translations/mimeClass';\n import 'translations/_core';\n \n import 'translations/_core_en';\n\n export default I18n.scoped('mimeClass');\n ","//\n// Copyright (C) 2012 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see .\n\nimport I18n from 'i18n!mimeClass'\n\n// this module works together with app/stylesheets/components/_MimeClassIcons.scss\n// so, given the mime-type of a file you can give it a css class name that corresponds to it.\n// eg: somefile.pdf would get the css class .mimeClass-pdf and a little icon with the acrobat logo in it.\n\n// if there is a file format that is common enough, go ahead and add an entry to one of these:\n// If you need to make a new class, make sure to also make an svg for it in public/images/mimeClassIcons/\n// and a class name in app/stylesheets/components/_MimeClassIcons.scss\n// (and app/stylesheets/components/deprecated/_fancy_links.scss if it is still being used)\nconst mimeClasses = {\n audio: {\n get displayName() {\n return I18n.t('Audio')\n },\n mimeTypes: [\n 'audio/x-mpegurl',\n 'audio/x-pn-realaudio',\n 'audio/x-aiff',\n 'audio/3gpp',\n 'audio/mid',\n 'audio/x-wav',\n 'audio/basic',\n 'audio/mpeg'\n ]\n },\n code: {\n get displayName() {\n return I18n.t('Source code')\n },\n mimeTypes: [\n 'text/xml',\n 'text/css',\n 'text/x-yaml',\n 'application/xml',\n 'application/javascript',\n 'text/x-csharp'\n ]\n },\n doc: {\n get displayName() {\n return I18n.t('Text document')\n },\n mimeTypes: [\n 'application/x-docx',\n 'text/rtf',\n 'application/msword',\n 'application/rtf',\n 'application/vnd.oasis.opendocument.text',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n ]\n },\n flash: {\n get displayName() {\n return I18n.t('Flash')\n },\n mimeTypes: ['application/x-shockwave-flash']\n },\n html: {\n get displayName() {\n return I18n.t('Web page')\n },\n mimeTypes: ['text/html', 'application/xhtml+xml']\n },\n image: {\n get displayName() {\n return I18n.t('Image')\n },\n mimeTypes: ['image/png', 'image/x-psd', 'image/gif', 'image/pjpeg', 'image/jpeg']\n },\n ppt: {\n get displayName() {\n return I18n.t('Presentation')\n },\n mimeTypes: [\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.ms-powerpoint'\n ]\n },\n pdf: {\n get displayName() {\n return I18n.t('PDF')\n },\n mimeTypes: ['application/pdf']\n },\n text: {\n get displayName() {\n return I18n.t('Plain text')\n },\n mimeTypes: ['text', 'text/plain']\n },\n video: {\n get displayName() {\n return I18n.t('Video')\n },\n mimeTypes: [\n 'video/mp4',\n 'video/x-ms-asf',\n 'video/x-msvideo',\n 'video/x-sgi-movie',\n 'video/mpeg',\n 'video/quicktime',\n 'video/x-la-asf',\n 'video/3gpp',\n 'video/webm',\n 'video/avi'\n ]\n },\n xls: {\n get displayName() {\n return I18n.t('Spreadsheet')\n },\n mimeTypes: [\n 'application/vnd.oasis.opendocument.spreadsheet',\n 'text/csv',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.ms-excel'\n ]\n },\n zip: {\n get displayName() {\n return I18n.t('Archive')\n },\n mimeTypes: [\n 'application/x-rar-compressed',\n 'application/x-zip-compressed',\n 'application/zip',\n 'application/x-zip',\n 'application/x-rar'\n ]\n }\n}\n\nexport default function mimeClass(contentType) {\n return mimeClass.mimeClasses[contentType] || 'file'\n}\n\nmimeClass.displayName = function(contentType) {\n const found = mimeClasses[mimeClass(contentType)]\n return (found && found.displayName) || I18n.t('Unknown')\n}\n\nmimeClass.mimeClasses = {}\nfor (const cls in mimeClasses) {\n const value = mimeClasses[cls]\n value.mimeTypes.forEach(mimeType => (mimeClass.mimeClasses[mimeType] = cls))\n}\n","\"use strict\";\n\nvar errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var line;\n if (node && node.firstLine) {\n line = node.firstLine;\n\n message += ' - ' + line + ':' + node.firstColumn;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n if (line) {\n this.lineNumber = line;\n this.column = node.firstColumn;\n }\n}\n\nException.prototype = new Error();\n\nexports[\"default\"] = Exception;","\"use strict\";\nvar Utils = require(\"./utils\");\nvar Exception = require(\"./exception\")[\"default\"];\nvar COMPILER_REVISION = require(\"./base\").COMPILER_REVISION;\nvar REVISION_CHANGES = require(\"./base\").REVISION_CHANGES;\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = COMPILER_REVISION;\n\n if (compilerRevision !== currentRevision) {\n if (compilerRevision < currentRevision) {\n var runtimeVersions = REVISION_CHANGES[currentRevision],\n compilerVersions = REVISION_CHANGES[compilerRevision];\n throw new Exception(\"Template was precompiled with an older version of Handlebars than the current runtime. \"+\n \"Please update your precompiler to a newer version (\"+runtimeVersions+\") or downgrade your runtime to an older version (\"+compilerVersions+\").\");\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new Exception(\"Template was precompiled with a newer version of Handlebars than the current runtime. \"+\n \"Please update your runtime to a newer version (\"+compilerInfo[1]+\").\");\n }\n }\n}\n\nexports.checkRevision = checkRevision;// TODO: Remove this line and break up compilePartial\n\nfunction template(templateSpec, env) {\n if (!env) {\n throw new Exception(\"No environment passed to template\");\n }\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as psuedo-supported APIs.\n var invokePartialWrapper = function(partial, name, context, helpers, partials, data) {\n var result = env.VM.invokePartial.apply(this, arguments);\n if (result != null) { return result; }\n\n if (env.compile) {\n var options = { helpers: helpers, partials: partials, data: data };\n partials[name] = env.compile(partial, { data: data !== undefined }, env);\n return partials[name](context, options);\n } else {\n throw new Exception(\"The partial \" + name + \" could not be compiled when running in runtime-only mode\");\n }\n };\n\n // Just add water\n var container = {\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n programs: [],\n program: function(i, fn, data) {\n var programWrapper = this.programs[i];\n if(data) {\n programWrapper = program(i, fn, data);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = program(i, fn);\n }\n return programWrapper;\n },\n merge: function(param, common) {\n var ret = param || common;\n\n if (param && common && (param !== common)) {\n ret = {};\n Utils.extend(ret, common);\n Utils.extend(ret, param);\n }\n return ret;\n },\n programWithDepth: env.VM.programWithDepth,\n noop: env.VM.noop,\n compilerInfo: null\n };\n\n return function(context, options) {\n options = options || {};\n var namespace = options.partial ? options : env,\n helpers,\n partials;\n\n if (!options.partial) {\n helpers = options.helpers;\n partials = options.partials;\n }\n var result = templateSpec.call(\n container,\n namespace, context,\n helpers,\n partials,\n options.data);\n\n if (!options.partial) {\n env.VM.checkRevision(container.compilerInfo);\n }\n\n return result;\n };\n}\n\nexports.template = template;function programWithDepth(i, fn, data /*, $depth */) {\n var args = Array.prototype.slice.call(arguments, 3);\n\n var prog = function(context, options) {\n options = options || {};\n\n return fn.apply(this, [context, options.data || data].concat(args));\n };\n prog.program = i;\n prog.depth = args.length;\n return prog;\n}\n\nexports.programWithDepth = programWithDepth;function program(i, fn, data) {\n var prog = function(context, options) {\n options = options || {};\n\n return fn(context, options.data || data);\n };\n prog.program = i;\n prog.depth = 0;\n return prog;\n}\n\nexports.program = program;function invokePartial(partial, name, context, helpers, partials, data) {\n var options = { partial: true, helpers: helpers, partials: partials, data: data };\n\n if(partial === undefined) {\n throw new Exception(\"The partial \" + name + \" could not be found\");\n } else if(partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nexports.invokePartial = invokePartial;function noop() { return \"\"; }\n\nexports.noop = noop;"],"sourceRoot":""}