text: ﻿/*
   * JavaScript Templates
   * https://github.com/blueimp/JavaScript-Templates
   *
   * Copyright 2011, Sebastian Tschan
   * https://blueimp.net
   *
   * Licensed under the MIT license:
   * https://opensource.org/licenses/MIT
   *
   * Inspired by John Resig's JavaScript Micro-Templating:
   * http://ejohn.org/blog/javascript-micro-templating/
   */
  
  /* global define */
  
  /* eslint-disable strict */
  
  ; (function ($) {
      'use strict'
      var tmpl = function (str, data) {
          var f = !/[^\w\-.:]/.test(str)
              ? (tmpl.cache[str] = tmpl.cache[str] || tmpl(tmpl.load(str)))
              : new Function( // eslint-disable-line no-new-func
                  tmpl.arg + ',tmpl',
                  'var _e=tmpl.encode' +
                  tmpl.helper +
                  ",_s='" +
                  str.replace(tmpl.regexp, tmpl.func) +
                  "';return _s;"
              )
          return data
              ? f(data, tmpl)
              : function (data) {
                  return f(data, tmpl)
              }
      }
      tmpl.cache = {}
      tmpl.load = function (id) {
          return document.getElementById(id).innerHTML
      }
      tmpl.regexp = /([\s'\\])(?!(?:[^{]|\{(?!%))*%\})|(?:\{%(=|#)([\s\S]+?)%\})|(\{%)|(%\})/g
      tmpl.func = function (s, p1, p2, p3, p4, p5) {
          if (p1) {
              // whitespace, quote and backspace in HTML context
              return (
                  {
                      '\n': '\\n',
                      '\r': '\\r',
                      '\t': '\\t',
                      ' ': ' '
                  }[p1] || '\\' + p1
              )
          }
          if (p2) {
              // interpolation: {%=prop%}, or unescaped: {%#prop%}
              if (p2 === '=') {
                  return "'+_e(" + p3 + ")+'"
              }
              return "'+(" + p3 + "==null?'':" + p3 + ")+'"
          }
          if (p4) {
              // evaluation start tag: {%
              return "';"
          }
          if (p5) {
              // evaluation end tag: %}
              return "_s+='"
          }
      }
      tmpl.encReg = /[<>&"'\x00]/g // eslint-disable-line no-control-regex
      tmpl.encMap = {
          '<': '&lt;',
          '>': '&gt;',
          '&': '&amp;',
          '"': '&quot;',
          "'": '&#39;'
      }
      tmpl.encode = function (s) {
          // eslint-disable-next-line eqeqeq
          return (s == null ? '' : '' + s).replace(tmpl.encReg, function (c) {
              return tmpl.encMap[c] || ''
          })
      }
      tmpl.arg = 'o'
      tmpl.helper =
          ",print=function(s,e){_s+=e?(s==null?'':s):_e(s);}" +
          ',include=function(s,d){_s+=tmpl(s,d);}'
      if (typeof define === 'function' && define.amd) {
          define(function () {
              return tmpl
          })
      } else if (typeof module === 'object' && module.exports) {
          module.exports = tmpl
      } else {
          $.tmpl = tmpl
      }
  })(this)