Index: frontend/node_modules/tmpl/lib/tmpl.js
===================================================================
--- frontend/node_modules/tmpl/lib/tmpl.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tmpl/lib/tmpl.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+var INTERPOLATE = /{([^{]+?)}/g
+
+module.exports = function(str, data) {
+  var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +
+    'with(obj||{}){__p.push(\'' +
+    str.replace(/\\/g, '\\\\')
+       .replace(/'/g, "\\'")
+       .replace(INTERPOLATE, function(match, code) {
+         return "'," + code.replace(/\\'/g, "'") + ",'"
+       })
+       .replace(/\r/g, '\\r')
+       .replace(/\n/g, '\\n')
+       .replace(/\t/g, '\\t')
+       + "');}return __p.join('');"
+  var func = new Function('obj', tmpl)
+  return data ? func(data) : func
+}
Index: frontend/node_modules/tmpl/license
===================================================================
--- frontend/node_modules/tmpl/license	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tmpl/license	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,28 @@
+BSD License
+
+Copyright (c) 2014, Naitik Shah. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+ * Neither the name Naitik Shah nor the names of its contributors may be used to
+   endorse or promote products derived from this software without specific
+   prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Index: frontend/node_modules/tmpl/package.json
===================================================================
--- frontend/node_modules/tmpl/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tmpl/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,19 @@
+{
+  "name": "tmpl",
+  "description": "JavaScript micro templates.",
+  "version": "1.0.5",
+  "license": "BSD-3-Clause",
+  "homepage": "https://github.com/daaku/nodejs-tmpl",
+  "author": "Naitik Shah <n@daaku.org>",
+  "main": "lib/tmpl",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/daaku/nodejs-tmpl"
+  },
+  "scripts": {
+    "test": "NODE_PATH=./lib mocha --ui exports"
+  },
+  "devDependencies": {
+    "mocha": "^9.1.1"
+  }
+}
Index: frontend/node_modules/tmpl/readme.md
===================================================================
--- frontend/node_modules/tmpl/readme.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tmpl/readme.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,10 @@
+tmpl [![Build Status](https://secure.travis-ci.org/nshah/nodejs-tmpl.png)](http://travis-ci.org/nshah/nodejs-tmpl)
+====
+
+Simple string formatting using `{}`.
+
+```javascript
+assert.equal(
+  tmpl('the answer is {answer}', { answer: 42 }),
+  'the answer is 42')
+```
