tweeter-server
Version:
Sends tweets.
6 lines • 25.8 kB
JavaScript
/*!
*** Tweeter Server 3.5.0
*** Copyright © 2020, Jaid <jaid.jsx@gmail.com> (https://github.com/Jaid)
*** @license MIT
!*/!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=28)}([function(e,t,r){"use strict";r.d(t,"c",(function(){return a})),r.d(t,"a",(function(){return i}));var n=r(15);const o=new(r.n(n).a)({name:"Tweeter Server",version:"3.5.0",gotLogLevel:"info",insecurePort:21784,useGot:!0,configSetup:{secretKeys:["twitterConsumerKey","twitterConsumerSecret","apiUser"],defaults:{callbackUrl:"https://twitter.example.com/callback",apiPayloadLimit:"20mb"}}}),a=o.logger,i=o.config;o.appFolder,t.b=o},function(e,t,r){"use strict";t.__esModule=!0,t.extend=i,t.indexOf=function(e,t){for(var r=0,n=e.length;n>r;r++)if(e[r]===t)return r;return-1},t.escapeExpression=function(e){if("string"!=typeof e){if(e&&e.toHTML)return e.toHTML();if(null==e)return"";if(!e)return e+"";e=""+e}return o.test(e)?e.replace(/[&<>"'`=]/g,a):e},t.isEmpty=function(e){return!e&&0!==e||!(!l(e)||0!==e.length)},t.createFrame=function(e){var t=i({},e);return t._parent=e,t},t.blockParams=function(e,t){return e.path=t,e},t.appendContextPath=function(e,t){return(e?e+".":"")+t};var n={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},o=/[&<>"'`=]/;function a(e){return n[e]}function i(e){for(var t=1;t<arguments.length;t++)for(var r in arguments[t])Object.prototype.hasOwnProperty.call(arguments[t],r)&&(e[r]=arguments[t][r]);return e}var s=Object.prototype.toString;t.toString=s;var u=function(e){return"function"==typeof e};u(/x/)&&(t.isFunction=u=function(e){return"function"==typeof e&&"[object Function]"===s.call(e)}),t.isFunction=u;var l=Array.isArray||function(e){return!(!e||"object"!=typeof e)&&"[object Array]"===s.call(e)};t.isArray=l},function(e,t,r){"use strict";r.r(t);var n=r(5),o=r.n(n),a=r(18),i=r.n(a),s=r(19),u=r.n(s),l=r(6),c=r.n(l),d=r(20),f=r.n(d),p=r(21),h=r.n(p),m=r(4),v=r.n(m),g=r(22),y=r.n(g),w=r(23),_=r.n(w),b=r(9),k=r.n(b),x=r(24),P=r.n(x),M=r(8),O=r.n(M),C=r(25),j=r.n(C),S=r(26),E=r.n(S),L=r(0);const I=(e,t)=>i.a.createHmac("sha1",t).update(e).digest("base64");t.default=new class{constructor(){this.usersFolder=k.a.join(L.c.appFolder,"users")}async init(){this.oauthClient=new _.a({hash_function:I,consumer:{key:L.a.twitterConsumerKey,secret:L.a.twitterConsumerSecret},signature_method:"HMAC-SHA1"});const e=await h()("*/credentials.yml",{cwd:this.usersFolder,onlyFiles:!0,absolute:!0}),t=async e=>{const t=await o.a.readYaml(e),r=new E.a({access_token:t.oauthToken,access_token_secret:t.oauthTokenSecret,consumer_key:L.a.twitterConsumerKey,consumer_secret:L.a.twitterConsumerSecret});return t.twit=P()(r,{multiArgs:!0,include:["postMediaChunked"],excludeMain:!0}),t},r=Array(e.length);for(let n=0;n<=e.length-1;n++)r[n]=t(e[n]);this.users=await Promise.all(r),L.c.info("Started twitterClient with %s users",this.users.length),L.c.debug("Callback: %s",L.a.callbackUrl)}getUserByInternalId(e){const t=(e+"").toLowerCase();return this.users.find(({internalId:e})=>e===t)}getFolderForUser(e){return k.a.join(this.usersFolder,e)}getCredentialsPathForUser(e){return k.a.join(this.getFolderForUser(e),"credentials.yml")}async getRequestToken(){const e={url:"https://api.twitter.com/oauth/request_token",data:{oauth_callback:L.a.callbackUrl}},t=await this.signGot(e);return O.a.parse(t.body)}async signGot(e,t){e={method:"POST",...e};const r=this.oauthClient.authorize(e,t);return L.b.got(e.url,{method:e.method,form:e.data,headers:this.oauthClient.toHeader(r)})}async tweet(e,t,r){try{const n=this.getUserByInternalId(e);if(!n)throw new Error("User not found");const a={status:t};if(v()(r)){const e=c()(r),t=async e=>{const{body:t,mimeType:r}=u()(e),a=y.a.extension(r.essence),i=j()(`.${a}`);await o.a.outputFile(i,t);const[{media_id_string:s}]=await n.twit.postMediaChunked({file_path:i});return L.c.debug(`Wrote ${f()(t.length)} to ${a} file`),s},i=Array(e.length);for(let r=0;r<=e.length-1;r++)i[r]=t(e[r],r,e);a.media_ids=await Promise.all(i)}return(await n.twit.post("statuses/update",a)).data}catch(t){L.c.error("Could not tweet for @%s: %s",e,t)}}async uploadMedia(e,t,r){try{const n=this.getUserByInternalId(e);if(!n)throw new Error("User not found");const[{media_id_string:o}]=await n.twit.postMediaChunked({file_path:t});L.c.debug("Media %s",o),v()(r)&&L.c.debug(`Text: ${r}`),await n.twit.post("statuses/update",{status:r,media_ids:o})}catch(r){L.c.error("Could not post media %s for @%s: %s",t,e,r)}}}},function(e,t,r){"use strict";t.__esModule=!0;var n=["description","fileName","lineNumber","endLineNumber","message","name","number","stack"];function o(e,t){var r=t&&t.loc,a=void 0,i=void 0,s=void 0,u=void 0;r&&(a=r.start.line,i=r.end.line,s=r.start.column,u=r.end.column,e+=" - "+a+":"+s);for(var l=Error.prototype.constructor.call(this,e),c=0;n.length>c;c++)this[n[c]]=l[n[c]];Error.captureStackTrace&&Error.captureStackTrace(this,o);try{r&&(this.lineNumber=a,this.endLineNumber=i,Object.defineProperty?(Object.defineProperty(this,"column",{value:s,enumerable:!0}),Object.defineProperty(this,"endColumn",{value:u,enumerable:!0})):(this.column=s,this.endColumn=u))}catch(e){}}o.prototype=new Error,t.default=o,e.exports=t.default},function(e,t){e.exports=require("has-content")},function(e,t){e.exports=require("@absolunet/fsp")},function(e,t){e.exports=require("ensure-array")},function(e,t){e.exports=require("fast-koa-router")},function(e,t){e.exports=require("query-string")},function(e,t){e.exports=require("path")},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.HandlebarsEnvironment=c;var o=r(1),a=n(r(3)),i=r(11),s=r(41),u=n(r(12)),l=r(13);function c(e,t,r){this.helpers=e||{},this.partials=t||{},this.decorators=r||{},i.registerDefaultHelpers(this),s.registerDefaultDecorators(this)}t.VERSION="4.7.6",t.COMPILER_REVISION=8,t.LAST_COMPATIBLE_COMPILER_REVISION=7,t.REVISION_CHANGES={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"},c.prototype={constructor:c,logger:u.default,log:u.default.log,registerHelper:function(e,t){if("[object Object]"===o.toString.call(e)){if(t)throw new a.default("Arg not supported with multiple helpers");o.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if("[object Object]"===o.toString.call(e))o.extend(this.partials,e);else{if(void 0===t)throw new a.default('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,t){if("[object Object]"===o.toString.call(e)){if(t)throw new a.default("Arg not supported with multiple decorators");o.extend(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function(e){delete this.decorators[e]},resetLoggedPropertyAccesses:function(){l.resetLoggedProperties()}};var d=u.default.log;t.log=d,t.createFrame=o.createFrame,t.logger=u.default},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.registerDefaultHelpers=function(e){o.default(e),a.default(e),i.default(e),s.default(e),u.default(e),l.default(e),c.default(e)},t.moveHelperToHooks=function(e,t,r){e.helpers[t]&&(e.hooks[t]=e.helpers[t],r||delete e.helpers[t])};var o=n(r(34)),a=n(r(35)),i=n(r(36)),s=n(r(37)),u=n(r(38)),l=n(r(39)),c=n(r(40))},function(e,t,r){"use strict";t.__esModule=!0;var n=r(1),o={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if("string"==typeof e){var t=n.indexOf(o.methodMap,e.toLowerCase());e=0>t?parseInt(e,10):t}return e},log:function(e){if(e=o.lookupLevel(e),"undefined"!=typeof console&&o.lookupLevel(o.level)<=e){var t=o.methodMap[e];console[t]||(t="log");for(var r=arguments.length,n=Array(r>1?r-1:0),a=1;r>a;a++)n[a-1]=arguments[a];console[t].apply(console,n)}}};t.default=o,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.createProtoAccessControl=function(e){var t=Object.create(null);t.constructor=!1,t.__defineGetter__=!1,t.__defineSetter__=!1,t.__lookupGetter__=!1;var r=Object.create(null);return r.__proto__=!1,{properties:{whitelist:n.createNewLookupObject(r,e.allowedProtoProperties),defaultValue:e.allowProtoPropertiesByDefault},methods:{whitelist:n.createNewLookupObject(t,e.allowedProtoMethods),defaultValue:e.allowProtoMethodsByDefault}}},t.resultIsAllowed=function(e,t,r){return function(e,t){return void 0!==e.whitelist[t]?!0===e.whitelist[t]:void 0!==e.defaultValue?e.defaultValue:(function(e){!0!==a[e]&&(a[e]=!0,o.log("error",'Handlebars: Access has been denied to resolve the property "'+e+'" because it is not an "own property" of its parent.\nYou can add a runtime option to disable the check or this warning:\nSee https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details'))}(t),!1)}("function"==typeof e?t.methods:t.properties,r)},t.resetLoggedProperties=function(){Object.keys(a).forEach((function(e){delete a[e]}))};var n=r(43),o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(r(12)),a=Object.create(null)},function(e,t){e.exports=require("yargs")},function(e,t){e.exports=require("jaid-core")},function(e,t){e.exports=require("flatten-multiline")},function(e,t){e.exports=require("koa-bodyparser")},function(e,t){e.exports=require("crypto")},function(e,t){e.exports=require("data-urls")},function(e,t){e.exports=require("filesize")},function(e,t){e.exports=require("globby")},function(e,t){e.exports=require("mime-types")},function(e,t){e.exports=require("oauth-1.0a")},function(e,t){e.exports=require("pify")},function(e,t){e.exports=require("tempfile")},function(e,t){e.exports=require("twit")},function(e,t,r){var n=r(32);e.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(e,t,r,n,o){var a,i=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"<a href='https://api.twitter.com/oauth/authenticate?oauth_token="+(null!=(a=e.lambda(null!=(a=null!=t?i(t,"requestToken"):t)?i(a,"oauth_token"):a,t))?a:"")+"'>Login with Twitter</a>"},useData:!0})},function(e,t,r){"use strict";r.r(t);var n=r(14),o=r.n(n),a=r(0);function i(e){var t;(null===a.b||void 0===a.b||null===(t=a.b.logger)||void 0===t?void 0:t.error)?a.b.logger.error(e):console.error(e)}process.on("unhandledRejection",e=>{i(e?`Unhandled promise rejection: ${(null==e?void 0:e.message)||e}`:"Unhandled promise rejection"),(null==e?void 0:e.stack)&&i(e.stack)}),o.a.scriptName("tweeter-server").version("3.5.0").command("$0","Sends tweets.",{},(function(){(async function(){const e={},t=r(29);for(const r of t.keys()){const{pluginName:n}=r.match(/[/\\](?<pluginName>.+?)[/\\]index\.js$/).groups;e[n]=t(r).default}await a.b.init(e)})().catch(e=>{i("Core process crashed"),i(e),process.exit(1)})})).argv},function(e,t,r){var n={"./apiServer/index.js":30,"./authServer/index.js":31,"./twitterClient/index.js":2};function o(e){var t=a(e);return r(t)}function a(e){if(!r.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}o.keys=function(){return Object.keys(n)},o.resolve=a,e.exports=o,o.id=29},function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return h}));var n=r(6),o=r.n(n),a=r(7),i=r(16),s=r.n(i),u=r(4),l=r.n(u),c=r(17),d=r.n(c),f=r(0),p=r(2);class h{handleConfig(e){this.apiUsers=o()(e.apiUser),this.twitCredentials={consumer_key:e.twitterConsumerKey,consumer_secret:e.twitterConsumerSecret},this.apiPayloadLimit=e.apiPayloadLimit}async init(){const e=this.auth.bind(this),t=this.getCredentials.bind(this),r=d()({formLimit:this.apiPayloadLimit,textLimit:this.apiPayloadLimit,jsonLimit:this.apiPayloadLimit,strict:!1}),n={post:{"/tweet":[r,e,this.handleTweet.bind(this)],"/credentials":[r,e,t]}};f.b.koa.use(Object(a.router)(n))}async handleTweet(e){const t=e.request.body;f.c.debug("Got post data with keys %s",Object.keys(t).join());for(const r of["text","handle"])e.assert(null==t?void 0:t.hasOwnProperty(r),400,`body.${r} not given`);const r=t.handle.toLowerCase();f.c.info("[User %s] @%s: %s",e.apiUser.user,r,s()(t.text));const n=await p.default.tweet(r,t.text,t.media);e.body={status:"ok",tweet:n}}async auth(e,t){const r=e.request.body;e.assert(l()(r.apiUser),403,"apiUser not given in JSON body"),e.assert(l()(r.apiKey),403,"apiKey not given in JSON body"),e.apiUser=this.apiUsers.find(e=>e.user===r.apiUser),e.assert(e.apiUser,403,"apiUser not found"),e.assert(e.apiUser.key===r.apiKey,403,"Wrong apiKey"),await t()}async getCredentials(e){const t=e.request.body.handle;if(!t){const t=p.default.users,r=e=>[e.handle.toLowerCase(),{access_token:e.oauthToken,access_token_secret:e.oauthTokenSecret,id:e.id,handle:e.handle}],n=Array(t.length);for(let e=0;e<=t.length-1;e++)n[e]=r(t[e],e,t);return void(e.body={appCredentials:{...this.twitCredentials},users:Object.fromEntries(n)})}const r=p.default.getUserByInternalId(t);e.assert(r,400,`No Twitter user found for ${t}`),e.body={...this.twitCredentials,access_token:r.oauthToken,access_token_secret:r.oauthTokenSecret}}}},function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return f}));var n=r(5),o=r.n(n),a=r(7),i=r(8),s=r.n(i),u=r(0),l=r(2),c=r(27),d=r.n(c);class f{async init(){this.koa=u.b.koa;const e={get:{"/login":this.handleLogin,"/callback":this.handleCallback,"/done":this.handleDone}};this.koa.use(Object(a.router)(e))}async handleLogin(e){const t=await l.default.getRequestToken();if(null==t||!t.oauth_token)throw u.c.error("Could not retrieve a token"),new Error("Could not retrieve a token");e.body=d()({requestToken:t})}async handleCallback(e){var t;const r=e.query.oauth_token,n=e.query.oauth_verifier,a=(t=(await l.default.signGot({url:"https://api.twitter.com/oauth/access_token",data:{oauth_token:r,oauth_verifier:n}})).body,s.a.parse(t)),i=a.screen_name.toLowerCase(),c=l.default.getCredentialsPathForUser(i);u.c.info("Saving new credentials of %s to %s",a.screen_name,c),await o.a.outputYaml(c,{internalId:i,id:a.user_id,handle:a.screen_name,oauthToken:a.oauth_token,oauthTokenSecret:a.oauth_token_secret}),e.redirect("/done")}async handleDone(e){e.body="Done."}}},function(e,t,r){e.exports=r(33).default},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}t.__esModule=!0;var a=o(r(10)),i=n(r(44)),s=n(r(3)),u=o(r(1)),l=o(r(45)),c=n(r(47));function d(){var e=new a.HandlebarsEnvironment;return u.extend(e,a),e.SafeString=i.default,e.Exception=s.default,e.Utils=u,e.escapeExpression=u.escapeExpression,e.VM=l,e.template=function(t){return l.template(t,e)},e}var f=d();f.create=d,c.default(f),f.default=f,t.default=f,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n=r(1);t.default=function(e){e.registerHelper("blockHelperMissing",(function(t,r){var o=r.inverse,a=r.fn;if(!0===t)return a(this);if(!1===t||null==t)return o(this);if(n.isArray(t))return t.length>0?(r.ids&&(r.ids=[r.name]),e.helpers.each(t,r)):o(this);if(r.data&&r.ids){var i=n.createFrame(r.data);i.contextPath=n.appendContextPath(r.data.contextPath,r.name),r={data:i}}return a(t,r)}))},e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n,o=r(1),a=(n=r(3))&&n.__esModule?n:{default:n};t.default=function(e){e.registerHelper("each",(function(e,t){if(!t)throw new a.default("Must pass iterator to #each");var r,n=t.fn,i=t.inverse,s=0,u="",l=void 0,c=void 0;function d(t,r,a){l&&(l.key=t,l.index=r,l.first=0===r,l.last=!!a,c&&(l.contextPath=c+t)),u+=n(e[t],{data:l,blockParams:o.blockParams([e[t],t],[c+t,null])})}if(t.data&&t.ids&&(c=o.appendContextPath(t.data.contextPath,t.ids[0])+"."),o.isFunction(e)&&(e=e.call(this)),t.data&&(l=o.createFrame(t.data)),e&&"object"==typeof e)if(o.isArray(e))for(var f=e.length;f>s;s++)s in e&&d(s,s,s===e.length-1);else if(global.Symbol&&e[global.Symbol.iterator]){for(var p=[],h=e[global.Symbol.iterator](),m=h.next();!m.done;m=h.next())p.push(m.value);for(f=(e=p).length;f>s;s++)d(s,s,s===e.length-1)}else r=void 0,Object.keys(e).forEach((function(e){void 0!==r&&d(r,s-1),r=e,s++})),void 0!==r&&d(r,s-1,!0);return 0===s&&(u=i(this)),u}))},e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n,o=(n=r(3))&&n.__esModule?n:{default:n};t.default=function(e){e.registerHelper("helperMissing",(function(){if(1!==arguments.length)throw new o.default('Missing helper: "'+arguments[arguments.length-1].name+'"')}))},e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n,o=r(1),a=(n=r(3))&&n.__esModule?n:{default:n};t.default=function(e){e.registerHelper("if",(function(e,t){if(2!=arguments.length)throw new a.default("#if requires exactly one argument");return o.isFunction(e)&&(e=e.call(this)),!t.hash.includeZero&&!e||o.isEmpty(e)?t.inverse(this):t.fn(this)})),e.registerHelper("unless",(function(t,r){if(2!=arguments.length)throw new a.default("#unless requires exactly one argument");return e.helpers.if.call(this,t,{fn:r.inverse,inverse:r.fn,hash:r.hash})}))},e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e){e.registerHelper("log",(function(){for(var t=[void 0],r=arguments[arguments.length-1],n=0;n<arguments.length-1;n++)t.push(arguments[n]);var o=1;null!=r.hash.level?o=r.hash.level:r.data&&null!=r.data.level&&(o=r.data.level),t[0]=o,e.log.apply(e,t)}))},e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e){e.registerHelper("lookup",(function(e,t,r){return e?r.lookupProperty(e,t):e}))},e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n,o=r(1),a=(n=r(3))&&n.__esModule?n:{default:n};t.default=function(e){e.registerHelper("with",(function(e,t){if(2!=arguments.length)throw new a.default("#with requires exactly one argument");o.isFunction(e)&&(e=e.call(this));var r=t.fn;if(o.isEmpty(e))return t.inverse(this);var n=t.data;return t.data&&t.ids&&((n=o.createFrame(t.data)).contextPath=o.appendContextPath(t.data.contextPath,t.ids[0])),r(e,{data:n,blockParams:o.blockParams([e],[n&&n.contextPath])})}))},e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.registerDefaultDecorators=function(e){o.default(e)};var n,o=(n=r(42))&&n.__esModule?n:{default:n}},function(e,t,r){"use strict";t.__esModule=!0;var n=r(1);t.default=function(e){e.registerDecorator("inline",(function(e,t,r,o){var a=e;return t.partials||(t.partials={},a=function(o,a){var i=r.partials;r.partials=n.extend({},i,t.partials);var s=e(o,a);return r.partials=i,s}),t.partials[o.args[0]]=o.fn,a}))},e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.createNewLookupObject=function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];return n.extend.apply(void 0,[Object.create(null)].concat(t))};var n=r(1)},function(e,t,r){"use strict";function n(e){this.string=e}t.__esModule=!0,n.prototype.toString=n.prototype.toHTML=function(){return""+this.string},t.default=n,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.checkRevision=function(e){var t=e&&e[0]||1,r=i.COMPILER_REVISION;if(t<i.LAST_COMPATIBLE_COMPILER_REVISION||t>i.COMPILER_REVISION){if(t<i.LAST_COMPATIBLE_COMPILER_REVISION){var n=i.REVISION_CHANGES[r],o=i.REVISION_CHANGES[t];throw new a.default("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+n+") or downgrade your runtime to an older version ("+o+").")}throw new a.default("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+e[1]+").")}},t.template=function(e,t){if(!t)throw new a.default("No environment passed to template");if(!e||!e.main)throw new a.default("Unknown template object: "+typeof e);e.main.decorator=e.main_d,t.VM.checkRevision(e.compiler);var r=e.compiler&&7===e.compiler[0],n={strict:function(e,t,r){if(!e||!(t in e))throw new a.default('"'+t+'" not defined in '+e,{loc:r});return e[t]},lookupProperty:function(e,t){var r=e[t];return null==r||Object.prototype.hasOwnProperty.call(e,t)||l.resultIsAllowed(r,n.protoAccessControl,t)?r:void 0},lookup:function(e,t){for(var r=e.length,o=0;r>o;o++)if(null!=(e[o]&&n.lookupProperty(e[o],t)))return e[o][t]},lambda:function(e,t){return"function"==typeof e?e.call(t):e},escapeExpression:o.escapeExpression,invokePartial:function(r,n,i){i.hash&&(n=o.extend({},n,i.hash),i.ids&&(i.ids[0]=!0)),r=t.VM.resolvePartial.call(this,r,n,i);var s=o.extend({},i,{hooks:this.hooks,protoAccessControl:this.protoAccessControl}),u=t.VM.invokePartial.call(this,r,n,s);if(null==u&&t.compile&&(i.partials[i.name]=t.compile(r,e.compilerOptions,t),u=i.partials[i.name](n,s)),null!=u){if(i.indent){for(var l=u.split("\n"),c=0,d=l.length;d>c&&(l[c]||c+1!==d);c++)l[c]=i.indent+l[c];u=l.join("\n")}return u}throw new a.default("The partial "+i.name+" could not be compiled when running in runtime-only mode")},fn:function(t){var r=e[t];return r.decorator=e[t+"_d"],r},programs:[],program:function(e,t,r,n,o){var a=this.programs[e],i=this.fn(e);return t||o||n||r?a=c(this,e,i,t,r,n,o):a||(a=this.programs[e]=c(this,e,i)),a},data:function(e,t){for(;e&&t--;)e=e._parent;return e},mergeIfNeeded:function(e,t){var r=e||t;return e&&t&&e!==t&&(r=o.extend({},t,e)),r},nullContext:Object.seal({}),noop:t.VM.noop,compilerInfo:e.compiler};function i(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=r.data;i._setup(r),!r.partial&&e.useData&&(o=f(t,o));var a=void 0,s=e.useBlockParams?[]:void 0;function u(t){return""+e.main(n,t,n.helpers,n.partials,o,s,a)}return e.useDepths&&(a=r.depths?t!=r.depths[0]?[t].concat(r.depths):r.depths:[t]),(u=p(e.main,u,n,r.depths||[],o,s))(t,r)}return i.isTop=!0,i._setup=function(a){if(a.partial)n.protoAccessControl=a.protoAccessControl,n.helpers=a.helpers,n.partials=a.partials,n.decorators=a.decorators,n.hooks=a.hooks;else{var i=o.extend({},t.helpers,a.helpers);!function(e,t){Object.keys(e).forEach((function(r){var n=e[r];e[r]=function(e,t){var r=t.lookupProperty;return u.wrapHelper(e,(function(e){return o.extend({lookupProperty:r},e)}))}(n,t)}))}(i,n),n.helpers=i,e.usePartial&&(n.partials=n.mergeIfNeeded(a.partials,t.partials)),(e.usePartial||e.useDecorators)&&(n.decorators=o.extend({},t.decorators,a.decorators)),n.hooks={},n.protoAccessControl=l.createProtoAccessControl(a);var c=a.allowCallsToHelperMissing||r;s.moveHelperToHooks(n,"helperMissing",c),s.moveHelperToHooks(n,"blockHelperMissing",c)}},i._child=function(t,r,o,i){if(e.useBlockParams&&!o)throw new a.default("must pass block params");if(e.useDepths&&!i)throw new a.default("must pass parent depths");return c(n,t,e[t],r,0,o,i)},i},t.wrapProgram=c,t.resolvePartial=function(e,t,r){return e?e.call||r.name||(r.name=e,e=r.partials[e]):e="@partial-block"===r.name?r.data["partial-block"]:r.partials[r.name],e},t.invokePartial=function(e,t,r){var n=r.data&&r.data["partial-block"];r.partial=!0,r.ids&&(r.data.contextPath=r.ids[0]||r.data.contextPath);var s=void 0;if(r.fn&&r.fn!==d&&function(){r.data=i.createFrame(r.data);var e=r.fn;s=r.data["partial-block"]=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r.data=i.createFrame(r.data),r.data["partial-block"]=n,e(t,r)},e.partials&&(r.partials=o.extend({},r.partials,e.partials))}(),void 0===e&&s&&(e=s),void 0===e)throw new a.default("The partial "+r.name+" could not be found");if(e instanceof Function)return e(t,r)},t.noop=d;var n,o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(r(1)),a=(n=r(3))&&n.__esModule?n:{default:n},i=r(10),s=r(11),u=r(46),l=r(13);function c(e,t,r,n,o,a,i){function s(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=i;return!i||t==i[0]||t===e.nullContext&&null===i[0]||(s=[t].concat(i)),r(e,t,e.helpers,e.partials,o.data||n,a&&[o.blockParams].concat(a),s)}return(s=p(r,s,e,i,n,a)).program=t,s.depth=i?i.length:0,s.blockParams=o||0,s}function d(){return""}function f(e,t){return t&&"root"in t||((t=t?i.createFrame(t):{}).root=e),t}function p(e,t,r,n,a,i){if(e.decorator){var s={};t=e.decorator(t,s,r,n&&n[0],a,i,n),o.extend(t,s)}return t}},function(e,t,r){"use strict";t.__esModule=!0,t.wrapHelper=function(e,t){return"function"!=typeof e?e:function(){var r=arguments[arguments.length-1];return arguments[arguments.length-1]=t(r),e.apply(this,arguments)}}},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e){var t="undefined"!=typeof global?global:window,r=t.Handlebars;e.noConflict=function(){return t.Handlebars===e&&(t.Handlebars=r),e}},e.exports=t.default}]);