diff --git a/creator/packages/steedos-objects-core/cfs/stores.coffee b/creator/packages/steedos-objects-core/cfs/stores.coffee index d28d2968af..64e6cf57f3 100644 --- a/creator/packages/steedos-objects-core/cfs/stores.coffee +++ b/creator/packages/steedos-objects-core/cfs/stores.coffee @@ -37,19 +37,25 @@ _.each stores, (store_name)-> filename = fileObj.name(); filenameInStore = fileObj.name({store: store_name}) + metadata = fileObj.metadata || {}; + objectName = metadata.object_name; + objectFoldPath = '' + if objectName + objectFoldPath = objectName + '/' + now = new Date year = now.getFullYear() month = now.getMonth() + 1 path = require('path') mkdirp = require('mkdirp') - pathname = path.join(process.env.STEEDOS_STORAGE_DIR, "files/#{store_name}/" + year + '/' + month) + pathname = path.join(process.env.STEEDOS_STORAGE_DIR, "files/#{store_name}/" + objectFoldPath + year + '/' + month) # Set absolute path absolutePath = path.resolve(pathname) # Ensure the path exists mkdirp.sync(absolutePath) # If no store key found we resolve / generate a key - return year + '/' + month + '/' + fileObj.collectionName + '-' + fileObj._id + '-' + (filenameInStore || filename) + return objectFoldPath + year + '/' + month + '/' + fileObj.collectionName + '-' + fileObj._id + '-' + (filenameInStore || filename) }) diff --git a/server/bundle/programs/server/packages/modules.js b/server/bundle/programs/server/packages/modules.js index 80d0ac2814..73270dd172 100644 --- a/server/bundle/programs/server/packages/modules.js +++ b/server/bundle/programs/server/packages/modules.js @@ -463,7 +463,7 @@ module.useNode(); // module.exports = { "name": "@steedos/objectql", - "version": "2.6.11", + "version": "2.6.16", "main": "lib/index.js" }; @@ -490,7 +490,7 @@ module.useNode(); // module.exports = { "name": "@steedos/i18n", - "version": "2.6.11", + "version": "2.6.16", "main": "lib/index.js" }; @@ -517,7 +517,7 @@ module.useNode(); // module.exports = { "name": "@steedos/core", - "version": "2.6.11", + "version": "2.6.16", "main": "lib/index.js" }; @@ -544,7 +544,7 @@ module.useNode(); // module.exports = { "name": "@steedos/service-meteor-package-loader", - "version": "2.6.11", + "version": "2.6.16", "main": "index.js" }; @@ -571,7 +571,7 @@ module.useNode(); // module.exports = { "name": "@steedos/service-api", - "version": "2.6.11", + "version": "2.6.16", "main": "index.js" }; @@ -598,7 +598,7 @@ module.useNode(); // module.exports = { "name": "@steedos/service-metadata-server", - "version": "2.6.11", + "version": "2.6.16", "main": "index.js" }; @@ -625,7 +625,7 @@ module.useNode(); // module.exports = { "name": "@steedos/service-package-registry", - "version": "2.6.11", + "version": "2.6.16", "main": "package.service.js" }; @@ -652,7 +652,7 @@ module.useNode(); // module.exports = { "name": "@steedos/service-objectql", - "version": "2.6.11", + "version": "2.6.16", "main": "package.service.js" }; @@ -679,7 +679,7 @@ module.useNode(); // module.exports = { "name": "@steedos/service-ui", - "version": "2.6.11", + "version": "2.6.16", "main": "package.service.js" }; @@ -706,7 +706,7 @@ module.useNode(); // module.exports = { "name": "@steedos/service-pages", - "version": "2.6.11", + "version": "2.6.16", "main": "package.service.js" }; @@ -733,7 +733,7 @@ module.useNode(); // module.exports = { "name": "@steedos/router", - "version": "2.6.11", + "version": "2.6.16", "main": "lib/index.js" }; @@ -760,7 +760,7 @@ module.useNode(); // module.exports = { "name": "@steedos/auth", - "version": "2.6.11", + "version": "2.6.16", "main": "lib/index.js" }; @@ -787,7 +787,7 @@ module.useNode(); // module.exports = { "name": "@steedos/workflow", - "version": "2.6.11", + "version": "2.6.16", "main": "index.js" }; diff --git a/server/bundle/programs/server/packages/steedos_objects-core.js b/server/bundle/programs/server/packages/steedos_objects-core.js index b22c28ca56..7932f7c117 100644 --- a/server/bundle/programs/server/packages/steedos_objects-core.js +++ b/server/bundle/programs/server/packages/steedos_objects-core.js @@ -31,12 +31,12 @@ var __coffeescriptShare; var require = meteorInstall({"node_modules":{"meteor":{"steedos:objects-core":{"i18n.coffee":function module(require){ -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// // -// packages/steedos_objects-core/i18n.coffee // -// // -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +// // +// packages/steedos_objects-core/i18n.coffee // +// // +//////////////////////////////////////////////////////////////////////////////////////////////////////////// + // __coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare; var I18n, absoluteUrl, getBrowserLocale, i18n; i18n = require('meteor/universe:i18n').i18n; @@ -216,16 +216,16 @@ if (Meteor.isClient) { }); }); } -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////// },"cfs":{"cfs.coffee":function module(){ -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// // -// packages/steedos_objects-core/cfs/cfs.coffee // -// // -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +// // +// packages/steedos_objects-core/cfs/cfs.coffee // +// // +//////////////////////////////////////////////////////////////////////////////////////////////////////////// + // __coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare; this.cfs = {}; Meteor.startup(function () { @@ -349,16 +349,16 @@ cfs.getContentType = function (filename) { return 'application/octet-stream'; } }; -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////// },"cfs_fix.coffee":function module(){ -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// // -// packages/steedos_objects-core/cfs/cfs_fix.coffee // -// // -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +// // +// packages/steedos_objects-core/cfs/cfs_fix.coffee // +// // +//////////////////////////////////////////////////////////////////////////////////////////////////////////// + // __coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare; FS.StorageAdapter.prototype.on('error', function (storeName, error, fileObj) { console.error("FS.StorageAdapter emit error"); @@ -372,16 +372,16 @@ FS.Collection.prototype.on('error', function (error, fileObj, storeName) { console.error(fileObj); return console.error(storeName); }); -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////// },"stores.coffee":function module(require){ -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// // -// packages/steedos_objects-core/cfs/stores.coffee // -// // -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +// // +// packages/steedos_objects-core/cfs/stores.coffee // +// // +//////////////////////////////////////////////////////////////////////////////////////////////////////////// + // __coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare; var stores; stores = ['avatars', 'audios', 'images', 'videos', 'files']; @@ -415,7 +415,7 @@ _.each(stores, function (store_name) { file_store = new FS.Store.FileSystem(store_name, { path: require('path').join(process.env.STEEDOS_STORAGE_DIR, "files/" + store_name), fileKeyMaker: function (fileObj) { - var absolutePath, filename, filenameInStore, mkdirp, month, now, path, pathname, store, year; + var absolutePath, filename, filenameInStore, metadata, mkdirp, month, now, objectFoldPath, objectName, path, pathname, store, year; store = fileObj && fileObj._getInfo(store_name); if (store && store.key) { @@ -426,15 +426,23 @@ _.each(stores, function (store_name) { filenameInStore = fileObj.name({ store: store_name }); + metadata = fileObj.metadata || {}; + objectName = metadata.object_name; + objectFoldPath = ''; + + if (objectName) { + objectFoldPath = objectName + '/'; + } + now = new Date(); year = now.getFullYear(); month = now.getMonth() + 1; path = require('path'); mkdirp = require('mkdirp'); - pathname = path.join(process.env.STEEDOS_STORAGE_DIR, "files/" + store_name + "/" + year + '/' + month); + pathname = path.join(process.env.STEEDOS_STORAGE_DIR, "files/" + store_name + "/" + objectFoldPath + year + '/' + month); absolutePath = path.resolve(pathname); mkdirp.sync(absolutePath); - return year + '/' + month + '/' + fileObj.collectionName + '-' + fileObj._id + '-' + (filenameInStore || filename); + return objectFoldPath + year + '/' + month + '/' + fileObj.collectionName + '-' + fileObj._id + '-' + (filenameInStore || filename); } }); } @@ -499,7 +507,7 @@ _.each(stores, function (store_name) { return db["cfs." + store_name + ".filerecord"] = cfs[store_name].files; } }); -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////// }}}}}},{ "extensions": [ @@ -520,4 +528,4 @@ Package._define("steedos:objects-core"); })(); //# sourceURL=meteor://💻app/packages/steedos_objects-core.js -//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1ldGVvcjovL/CfkrthcHAvcGFja2FnZXMvc3RlZWRvc19vYmplY3RzLWNvcmUvaTE4bi5jb2ZmZWUiLCJtZXRlb3I6Ly/wn5K7YXBwL2kxOG4uY29mZmVlIiwibWV0ZW9yOi8v8J+Su2FwcC9wYWNrYWdlcy9zdGVlZG9zX29iamVjdHMtY29yZS9jZnMvY2ZzLmNvZmZlZSIsIm1ldGVvcjovL/CfkrthcHAvY2ZzL2Nmcy5jb2ZmZWUiLCJtZXRlb3I6Ly/wn5K7YXBwL3BhY2thZ2VzL3N0ZWVkb3Nfb2JqZWN0cy1jb3JlL2Nmcy9jZnNfZml4LmNvZmZlZSIsIm1ldGVvcjovL/CfkrthcHAvY2ZzL2Nmc19maXguY29mZmVlIiwibWV0ZW9yOi8v8J+Su2FwcC9wYWNrYWdlcy9zdGVlZG9zX29iamVjdHMtY29yZS9jZnMvc3RvcmVzLmNvZmZlZSIsIm1ldGVvcjovL/CfkrthcHAvY2ZzL3N0b3Jlcy5jb2ZmZWUiXSwibmFtZXMiOlsiSTE4biIsImFic29sdXRlVXJsIiwiZ2V0QnJvd3NlckxvY2FsZSIsImkxOG4iLCJyZXF1aXJlIiwidCIsInRyIiwidHJsIiwidXJsIiwiZSIsInJvb3RfdXJsIiwicmVwbGFjZSIsIk1ldGVvciIsImlzQ29yZG92YSIsImlzQ2xpZW50IiwiVVJMIiwicGF0aG5hbWUiLCJlcnJvciIsInNldE9wdGlvbnMiLCJwdXJpZnkiLCJkZWZhdWx0TG9jYWxlIiwiaG9zdFVybCIsIlRBUGkxOG4iLCJfX29yaWdpbmFsIiwiX18iLCJrZXkiLCJvcHRpb25zIiwibG9jYWxlIiwidHJhbnNsYXRlZCIsIl9nZXRMYW5ndWFnZUZpbGVQYXRoIiwibGFuZ190YWciLCJwYXRoIiwiY29uZiIsImNkbl9wYXRoIiwiaTE4bl9maWxlc19yb3V0ZSIsImwiLCJ3aW5kb3ciLCJuYXZpZ2F0b3IiLCJ1c2VyTGFuZ3VhZ2UiLCJsYW5ndWFnZSIsImluZGV4T2YiLCJTaW1wbGVTY2hlbWEiLCJwcm90b3R5cGUiLCJwcmVmaXgiLCJUZW1wbGF0ZSIsInJlZ2lzdGVySGVscGVyIiwiYXJncyIsInN0YXJ0dXAiLCJ1c2VyTGFzdExvY2FsZSIsIlNlc3Npb24iLCJzZXQiLCJUcmFja2VyIiwiYXV0b3J1biIsImdldCIsInNldExhbmd1YWdlIiwiY2hhbmdlTGFuZ3VhZ2UiLCJyb290VXJsIiwiU3RlZWRvcyIsInNldExvY2FsZSIsIm1vbWVudCIsInVzZXIiLCJsb2NhdGlvbiIsInJlbG9hZCIsIm9uQ2hhbmdlTG9jYWxlIiwibmV3TG9jYWxlIiwiJCIsImV4dGVuZCIsImZuIiwiZGF0YVRhYmxlIiwiZGVmYXVsdHMiLCJfIiwiZWFjaCIsIlRhYnVsYXIiLCJ0YWJsZXNCeU5hbWUiLCJ0YWJsZSIsImNvbHVtbnMiLCJjb2x1bW4iLCJjb2xsTmFtZSIsImRhdGEiLCJjb2xsZWN0aW9uIiwiX25hbWUiLCJzVGl0bGUiLCJ6ZXJvUmVjb3JkcyIsImNmcyIsIkZTIiwiSFRUUCIsInNldEJhc2VVcmwiLCJnZXRDb250ZW50VHlwZSIsImZpbGVuYW1lIiwiX2V4cCIsInNwbGl0IiwicG9wIiwidG9Mb3dlckNhc2UiLCJTdG9yYWdlQWRhcHRlciIsIm9uIiwic3RvcmVOYW1lIiwiZmlsZU9iaiIsImNvbnNvbGUiLCJDb2xsZWN0aW9uIiwic3RvcmVzIiwic3RvcmVfbmFtZSIsImZpbGVfc3RvcmUiLCJyZWYiLCJyZWYxIiwicmVmMiIsInNldHRpbmdzIiwic3RvcmUiLCJTdG9yZSIsIk9TUyIsImlzU2VydmVyIiwiYWxpeXVuIiwiUzMiLCJhd3MiLCJTVEVFRE9TQ0xPVUQiLCJzdGVlZG9zQ2xvdWQiLCJGaWxlU3lzdGVtIiwiam9pbiIsInByb2Nlc3MiLCJlbnYiLCJTVEVFRE9TX1NUT1JBR0VfRElSIiwiZmlsZUtleU1ha2VyIiwiYWJzb2x1dGVQYXRoIiwiZmlsZW5hbWVJblN0b3JlIiwibWtkaXJwIiwibW9udGgiLCJub3ciLCJ5ZWFyIiwiX2dldEluZm8iLCJuYW1lIiwiRGF0ZSIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJyZXNvbHZlIiwic3luYyIsImNvbGxlY3Rpb25OYW1lIiwiX2lkIiwiZmlsdGVyIiwiYWxsb3ciLCJjb250ZW50VHlwZXMiLCJpbnNlcnQiLCJ1cGRhdGUiLCJyZW1vdmUiLCJkb3dubG9hZCIsImRiIiwiZmlsZXMiLCJiZWZvcmUiLCJ1c2VySWQiLCJkb2MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxJQUFBLEVBQUFDLFdBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsSUFBQTtBQUFBQSxPQUFPQyxRQUFRLHNCQUFSLEVBQWdDRCxJQUF2QztBQUNBSCxPQUFPSSxRQUFRLGVBQVIsQ0FBUDtBQUNBLEtBQUNELElBQUQsR0FBUUEsSUFBUjtBQUVBLEtBQUNFLENBQUQsR0FBS0wsS0FBS0ssQ0FBVjtBQUVBLEtBQUNDLEVBQUQsR0FBTUQsQ0FBTjtBQUVBLEtBQUNFLEdBQUQsR0FBT0YsQ0FBUDs7QUFFQUosY0FBYyxVQUFDTyxHQUFEO0FBQ2IsTUFBQUMsQ0FBQSxFQUFBQyxRQUFBOztBQUFBLE1BQUdGLEdBQUg7QUFFQ0EsVUFBTUEsSUFBSUcsT0FBSixDQUFZLEtBQVosRUFBa0IsRUFBbEIsQ0FBTjtBQ0tDOztBREpGLE1BQUlDLE9BQU9DLFNBQVg7QUFDQyxXQUFPRCxPQUFPWCxXQUFQLENBQW1CTyxHQUFuQixDQUFQO0FBREQ7QUFHQyxRQUFHSSxPQUFPRSxRQUFWO0FBQ0M7QUFDQ0osbUJBQVcsSUFBSUssR0FBSixDQUFRSCxPQUFPWCxXQUFQLEVBQVIsQ0FBWDs7QUFDQSxZQUFHTyxHQUFIO0FBQ0MsaUJBQU9FLFNBQVNNLFFBQVQsR0FBb0JSLEdBQTNCO0FBREQ7QUFHQyxpQkFBT0UsU0FBU00sUUFBaEI7QUFMRjtBQUFBLGVBQUFDLEtBQUE7QUFNTVIsWUFBQVEsS0FBQTtBQUNMLGVBQU9MLE9BQU9YLFdBQVAsQ0FBbUJPLEdBQW5CLENBQVA7QUFSRjtBQUFBO0FDa0JJLGFEUkhJLE9BQU9YLFdBQVAsQ0FBbUJPLEdBQW5CLENDUUc7QURyQkw7QUN1QkU7QUQzQlcs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LElBQXFDakIsSUFBSWlCLFVBQUosRUFBZ0I0QyxLQ1F6RDtBQUNEO0FEMUdILEciLCJmaWxlIjoiL3BhY2thZ2VzL3N0ZWVkb3Nfb2JqZWN0cy1jb3JlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaTE4biA9IHJlcXVpcmUoJ21ldGVvci91bml2ZXJzZTppMThuJykuaTE4bjtcbkkxOG4gPSByZXF1aXJlKCdAc3RlZWRvcy9pMThuJyk7XG5AaTE4biA9IGkxOG47XG5cbkB0ID0gSTE4bi50XG5cbkB0ciA9IHRcblxuQHRybCA9IHRcblxuYWJzb2x1dGVVcmwgPSAodXJsKS0+XG5cdGlmIHVybFxuXHRcdCMgdXJs5LulXCIvXCLlvIDlpLTnmoTor53vvIzljrvmjonlvIDlpLTnmoRcIi9cIlxuXHRcdHVybCA9IHVybC5yZXBsYWNlKC9eXFwvLyxcIlwiKVxuXHRpZiAoTWV0ZW9yLmlzQ29yZG92YSlcblx0XHRyZXR1cm4gTWV0ZW9yLmFic29sdXRlVXJsKHVybCk7XG5cdGVsc2Vcblx0XHRpZiBNZXRlb3IuaXNDbGllbnRcblx0XHRcdHRyeVxuXHRcdFx0XHRyb290X3VybCA9IG5ldyBVUkwoTWV0ZW9yLmFic29sdXRlVXJsKCkpXG5cdFx0XHRcdGlmIHVybFxuXHRcdFx0XHRcdHJldHVybiByb290X3VybC5wYXRobmFtZSArIHVybFxuXHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0cmV0dXJuIHJvb3RfdXJsLnBhdGhuYW1lXG5cdFx0XHRjYXRjaCBlXG5cdFx0XHRcdHJldHVybiBNZXRlb3IuYWJzb2x1dGVVcmwodXJsKVxuXHRcdGVsc2Vcblx0XHRcdE1ldGVvci5hYnNvbHV0ZVVybCh1cmwpXG4jIOmHjeWGmXRhcDppMThu5Ye95pWw77yM5ZCR5ZCO5YW85a65XG5pMThuLnNldE9wdGlvbnNcblx0cHVyaWZ5OiBudWxsXG5cdGRlZmF1bHRMb2NhbGU6ICd6aC1DTidcblx0aG9zdFVybDogYWJzb2x1dGVVcmwoKVxuXG5pZiBUQVBpMThuP1xuXHRUQVBpMThuLl9fb3JpZ2luYWwgPSBUQVBpMThuLl9fXG5cblx0VEFQaTE4bi5fXyA9IChrZXksIG9wdGlvbnMsIGxvY2FsZSktPlxuXHRcdHRyYW5zbGF0ZWQgPSB0KGtleSwgb3B0aW9ucywgbG9jYWxlKTtcblx0XHRpZiB0cmFuc2xhdGVkICE9IGtleVxuXHRcdFx0cmV0dXJuIHRyYW5zbGF0ZWRcblxuXHRcdCMgaTE4biDnv7vor5HkuI3lh7rmnaXvvIzlsJ3or5XnlKggdGFwOmkxOG4g57+76K+RIFRPRE8gcmVtb3ZlXG5cdFx0cmV0dXJuIFRBUGkxOG4uX19vcmlnaW5hbCBrZXksIG9wdGlvbnMsIGxvY2FsZVxuXG5cdFRBUGkxOG4uX2dldExhbmd1YWdlRmlsZVBhdGggPSAobGFuZ190YWcpIC0+XG5cblx0XHRwYXRoID0gaWYgQC5jb25mLmNkbl9wYXRoPyB0aGVuIEAuY29uZi5jZG5fcGF0aCBlbHNlIEAuY29uZi5pMThuX2ZpbGVzX3JvdXRlXG5cdFx0cGF0aCA9IHBhdGgucmVwbGFjZSAvXFwvJC8sIFwiXCJcblx0XHRpZiBwYXRoWzBdID09IFwiL1wiXG5cdFx0XHRwYXRoID0gYWJzb2x1dGVVcmwoKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpICsgcGF0aFxuXG5cdFx0cmV0dXJuIFwiI3twYXRofS8je2xhbmdfdGFnfS5qc29uXCJcblxuaWYgTWV0ZW9yLmlzQ2xpZW50XG5cdGdldEJyb3dzZXJMb2NhbGUgPSAoKS0+XG5cdFx0bCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckxhbmd1YWdlIHx8IHdpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgJ2VuJ1xuXHRcdGlmIGwuaW5kZXhPZihcInpoXCIpID49MFxuXHRcdFx0bG9jYWxlID0gXCJ6aC1jblwiXG5cdFx0ZWxzZVxuXHRcdFx0bG9jYWxlID0gXCJlbi11c1wiXG5cdFx0cmV0dXJuIGxvY2FsZVxuXG5cblx0IyDlgZznlKjkuJrliqHlr7nosaHnv7vor5Eg5q2k5Ye95pWw5bey5byD55SoXG5cdFNpbXBsZVNjaGVtYS5wcm90b3R5cGUuaTE4biA9IChwcmVmaXgpIC0+XG5cdFx0cmV0dXJuXG5cblx0VGVtcGxhdGUucmVnaXN0ZXJIZWxwZXIgJ18nLCAoa2V5LCBhcmdzKS0+XG5cdFx0cmV0dXJuIFRBUGkxOG4uX18oa2V5LCBhcmdzKTtcblxuXHRNZXRlb3Iuc3RhcnR1cCAtPlxuXG5cdFx0VGVtcGxhdGUucmVnaXN0ZXJIZWxwZXIgJ18nLCAoa2V5LCBhcmdzKS0+XG5cdFx0XHRyZXR1cm4gVEFQaTE4bi5fXyhrZXksIGFyZ3MpO1xuXG5cdFx0U2Vzc2lvbi5zZXQoXCJzdGVlZG9zLWxvY2FsZVwiLCBnZXRCcm93c2VyTG9jYWxlKCkpXG5cblx0XHRUcmFja2VyLmF1dG9ydW4gKCktPlxuXHRcdFx0aWYgU2Vzc2lvbi5nZXQoXCJzdGVlZG9zLWxvY2FsZVwiKSAhPSBcImVuLXVzXCJcblx0XHRcdFx0aWYgVEFQaTE4bj9cblx0XHRcdFx0XHRUQVBpMThuLnNldExhbmd1YWdlKFwiemgtQ05cIilcblx0XHRcdFx0STE4bi5jaGFuZ2VMYW5ndWFnZShcInpoLUNOXCIsIHtyb290VXJsOiBTdGVlZG9zLmFic29sdXRlVXJsKCkgfSlcblx0XHRcdFx0aTE4bi5zZXRMb2NhbGUoXCJ6aC1DTlwiKVxuXHRcdFx0XHRtb21lbnQubG9jYWxlKFwiemgtY25cIilcblx0XHRcdFx0cmVxdWlyZShcIm1vbWVudFwiKS5sb2NhbGUoXCJ6aC1jblwiKVxuXHRcdFx0ZWxzZVxuXHRcdFx0XHRpZiBUQVBpMThuP1xuXHRcdFx0XHRcdFRBUGkxOG4uc2V0TGFuZ3VhZ2UoXCJlblwiKVxuXHRcdFx0XHRJMThuLmNoYW5nZUxhbmd1YWdlKFwiZW5cIiwge3Jvb3RVcmw6IFN0ZWVkb3MuYWJzb2x1dGVVcmwoKSB9KVxuXHRcdFx0XHRpMThuLnNldExvY2FsZShcImVuXCIpXG5cdFx0XHRcdG1vbWVudC5sb2NhbGUoXCJlblwiKVxuXHRcdFx0XHRyZXF1aXJlKFwibW9tZW50XCIpLmxvY2FsZShcImVuXCIpXG5cdFx0dXNlckxhc3RMb2NhbGUgPSBudWxsXG5cdFx0VHJhY2tlci5hdXRvcnVuICgpLT5cblx0XHRcdFNlc3Npb24uc2V0KFwic3RlZWRvcy1sb2NhbGVcIiwgXCJ6aC1DTlwiKVxuXHRcdFx0dXNlckxhc3RMb2NhbGUgPVxuXHRcdFx0aWYgTWV0ZW9yLnVzZXIoKVxuXHRcdFx0XHRpZiBNZXRlb3IudXNlcigpLmxvY2FsZVxuXHRcdFx0XHRcdFNlc3Npb24uc2V0KFwic3RlZWRvcy1sb2NhbGVcIiwgTWV0ZW9yLnVzZXIoKS5sb2NhbGUpO1xuXHRcdFx0XHRcdGlmIHVzZXJMYXN0TG9jYWxlICYmIHVzZXJMYXN0TG9jYWxlICE9IE1ldGVvci51c2VyKCkubG9jYWxlXG5cdFx0XHRcdFx0XHR3aW5kb3cubG9jYXRpb24ucmVsb2FkKHRydWUpO1xuXHRcdFx0XHRcdHVzZXJMYXN0TG9jYWxlID0gTWV0ZW9yLnVzZXIoKS5sb2NhbGVcblxuXHRcdGkxOG4ub25DaGFuZ2VMb2NhbGUgKG5ld0xvY2FsZSktPlxuXG5cdFx0XHQkLmV4dGVuZCB0cnVlLCAkLmZuLmRhdGFUYWJsZS5kZWZhdWx0cyxcblx0XHRcdFx0bGFuZ3VhZ2U6XG5cdFx0XHRcdFx0XCJkZWNpbWFsXCI6ICAgICAgICB0KFwiZGF0YVRhYmxlcy5kZWNpbWFsXCIpLFxuXHRcdFx0XHRcdFwiZW1wdHlUYWJsZVwiOiAgICAgdChcImRhdGFUYWJsZXMuZW1wdHlUYWJsZVwiKSxcblx0XHRcdFx0XHRcImluZm9cIjogICAgICAgICAgIHQoXCJkYXRhVGFibGVzLmluZm9cIiksXG5cdFx0XHRcdFx0XCJpbmZvRW1wdHlcIjogICAgICB0KFwiZGF0YVRhYmxlcy5pbmZvRW1wdHlcIiksXG5cdFx0XHRcdFx0XCJpbmZvRmlsdGVyZWRcIjogICB0KFwiZGF0YVRhYmxlcy5pbmZvRmlsdGVyZWRcIiksXG5cdFx0XHRcdFx0XCJpbmZvUG9zdEZpeFwiOiAgICB0KFwiZGF0YVRhYmxlcy5pbmZvUG9zdEZpeFwiKSxcblx0XHRcdFx0XHRcInRob3VzYW5kc1wiOiAgICAgIHQoXCJkYXRhVGFibGVzLnRob3VzYW5kc1wiKSxcblx0XHRcdFx0XHRcImxlbmd0aE1lbnVcIjogICAgIHQoXCJkYXRhVGFibGVzLmxlbmd0aE1lbnVcIiksXG5cdFx0XHRcdFx0XCJsb2FkaW5nUmVjb3Jkc1wiOiB0KFwiZGF0YVRhYmxlcy5sb2FkaW5nUmVjb3Jkc1wiKSxcblx0XHRcdFx0XHRcInByb2Nlc3NpbmdcIjogICAgIHQoXCJkYXRhVGFibGVzLnByb2Nlc3NpbmdcIiksXG5cdFx0XHRcdFx0XCJzZWFyY2hcIjogICAgICAgICB0KFwiZGF0YVRhYmxlcy5zZWFyY2hcIiksXG5cdFx0XHRcdFx0XCJ6ZXJvUmVjb3Jkc1wiOiAgICB0KFwiZGF0YVRhYmxlcy56ZXJvUmVjb3Jkc1wiKSxcblx0XHRcdFx0XHRcInBhZ2luYXRlXCI6XG5cdFx0XHRcdFx0XHRcImZpcnN0XCI6ICAgICAgdChcImRhdGFUYWJsZXMucGFnaW5hdGUuZmlyc3RcIiksXG5cdFx0XHRcdFx0XHRcImxhc3RcIjogICAgICAgdChcImRhdGFUYWJsZXMucGFnaW5hdGUubGFzdFwiKSxcblx0XHRcdFx0XHRcdFwibmV4dFwiOiAgICAgICB0KFwiZGF0YVRhYmxlcy5wYWdpbmF0ZS5uZXh0XCIpLFxuXHRcdFx0XHRcdFx0XCJwcmV2aW91c1wiOiAgIHQoXCJkYXRhVGFibGVzLnBhZ2luYXRlLnByZXZpb3VzXCIpXG5cdFx0XHRcdFx0XCJhcmlhXCI6XG5cdFx0XHRcdFx0XHRcInNvcnRBc2NlbmRpbmdcIjogIHQoXCJkYXRhVGFibGVzLmFyaWEuc29ydEFzY2VuZGluZ1wiKSxcblx0XHRcdFx0XHRcdFwic29ydERlc2NlbmRpbmdcIjogdChcImRhdGFUYWJsZXMuYXJpYS5zb3J0RGVzY2VuZGluZ1wiKVxuXG5cdFx0XHRfLmVhY2ggVGFidWxhci50YWJsZXNCeU5hbWUsICh0YWJsZSkgLT5cblx0XHRcdFx0Xy5lYWNoIHRhYmxlLm9wdGlvbnMuY29sdW1ucywgKGNvbHVtbikgLT5cblx0XHRcdFx0XHRpZiAoIWNvbHVtbi5kYXRhIHx8IGNvbHVtbi5kYXRhID09IFwiX2lkXCIpXG5cdFx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XHRpZiB0YWJsZS5jb2xsZWN0aW9uXG5cdFx0XHRcdFx0XHRjb2xsTmFtZSA9IHRhYmxlLmNvbGxlY3Rpb24uX25hbWVcblx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRjb2xsTmFtZSA9ICcnXG5cdFx0XHRcdFx0Y29sdW1uLnNUaXRsZSA9IHQoXCJcIiArIGNvbGxOYW1lICsgXCJfXCIgKyBjb2x1bW4uZGF0YS5yZXBsYWNlKC9cXC4vZyxcIl9cIikpO1xuXHRcdFx0XHRcdGlmICF0YWJsZS5vcHRpb25zLmxhbmd1YWdlXG5cdFx0XHRcdFx0XHR0YWJsZS5vcHRpb25zLmxhbmd1YWdlID0ge31cblx0XHRcdFx0XHR0YWJsZS5vcHRpb25zLmxhbmd1YWdlLnplcm9SZWNvcmRzID0gdChcImRhdGFUYWJsZXMuemVyb1wiKSArIHQoY29sbE5hbWUpXG5cdFx0XHRcdFx0cmV0dXJuIFxuXG5cbiIsInZhciBJMThuLCBhYnNvbHV0ZVVybCwgZ2V0QnJvd3NlckxvY2FsZSwgaTE4bjtcblxuaTE4biA9IHJlcXVpcmUoJ21ldGVvci91bml2ZXJzZTppMThuJykuaTE4bjtcblxuSTE4biA9IHJlcXVpcmUoJ0BzdGVlZG9zL2kxOG4nKTtcblxudGhpcy5pMThuID0gaTE4bjtcblxudGhpcy50ID0gSTE4bi50O1xuXG50aGlzLnRyID0gdDtcblxudGhpcy50cmwgPSB0O1xuXG5hYnNvbHV0ZVVybCA9IGZ1bmN0aW9uKHVybCkge1xuICB2YXIgZSwgcm9vdF91cmw7XG4gIGlmICh1cmwpIHtcbiAgICB1cmwgPSB1cmwucmVwbGFjZSgvXlxcLy8sIFwiXCIpO1xuICB9XG4gIGlmIChNZXRlb3IuaXNDb3Jkb3ZhKSB7XG4gICAgcmV0dXJuIE1ldGVvci5hYnNvbHV0ZVVybCh1cmwpO1xuICB9IGVsc2Uge1xuICAgIGlmIChNZXRlb3IuaXNDbGllbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJvb3RfdXJsID0gbmV3IFVSTChNZXRlb3IuYWJzb2x1dGVVcmwoKSk7XG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICByZXR1cm4gcm9vdF91cmwucGF0aG5hbWUgKyB1cmw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHJvb3RfdXJsLnBhdGhuYW1lO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBlID0gZXJyb3I7XG4gICAgICAgIHJldHVybiBNZXRlb3IuYWJzb2x1dGVVcmwodXJsKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIE1ldGVvci5hYnNvbHV0ZVVybCh1cmwpO1xuICAgIH1cbiAgfVxufTtcblxuaTE4bi5zZXRPcHRpb25zKHtcbiAgcHVyaWZ5OiBudWxsLFxuICBkZWZhdWx0TG9jYWxlOiAnemgtQ04nLFxuICBob3N0VXJsOiBhYnNvbHV0ZVVybCgpXG59KTtcblxuaWYgKHR5cGVvZiBUQVBpMThuICE9PSBcInVuZGVmaW5lZFwiICYmIFRBUGkxOG4gIT09IG51bGwpIHtcbiAgVEFQaTE4bi5fX29yaWdpbmFsID0gVEFQaTE4bi5fXztcbiAgVEFQaTE4bi5fXyA9IGZ1bmN0aW9uKGtleSwgb3B0aW9ucywgbG9jYWxlKSB7XG4gICAgdmFyIHRyYW5zbGF0ZWQ7XG4gICAgdHJhbnNsYXRlZCA9IHQoa2V5LCBvcHRpb25zLCBsb2NhbGUpO1xuICAgIGlmICh0cmFuc2xhdGVkICE9PSBrZXkpIHtcbiAgICAgIHJldHVybiB0cmFuc2xhdGVkO1xuICAgIH1cbiAgICByZXR1cm4gVEFQaTE4bi5fX29yaWdpbmFsKGtleSwgb3B0aW9ucywgbG9jYWxlKTtcbiAgfTtcbiAgVEFQaTE4bi5fZ2V0TGFuZ3VhZ2VGaWxlUGF0aCA9IGZ1bmN0aW9uKGxhbmdfdGFnKSB7XG4gICAgdmFyIHBhdGg7XG4gICAgcGF0aCA9IHRoaXMuY29uZi5jZG5fcGF0aCAhPSBudWxsID8gdGhpcy5jb25mLmNkbl9wYXRoIDogdGhpcy5jb25mLmkxOG5fZmlsZXNfcm91dGU7XG4gICAgcGF0aCA9IHBhdGgucmVwbGFjZSgvXFwvJC8sIFwiXCIpO1xuICAgIGlmIChwYXRoWzBdID09PSBcIi9cIikge1xuICAgICAgcGF0aCA9IGFic29sdXRlVXJsKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKSArIHBhdGg7XG4gICAgfVxuICAgIHJldHVybiBwYXRoICsgXCIvXCIgKyBsYW5nX3RhZyArIFwiLmpzb25cIjtcbiAgfTtcbn1cblxuaWYgKE1ldGVvci5pc0NsaWVudCkge1xuICBnZXRCcm93c2VyTG9jYWxlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGwsIGxvY2FsZTtcbiAgICBsID0gd2luZG93Lm5hdmlnYXRvci51c2VyTGFuZ3VhZ2UgfHwgd2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZSB8fCAnZW4nO1xuICAgIGlmIChsLmluZGV4T2YoXCJ6aFwiKSA+PSAwKSB7XG4gICAgICBsb2NhbGUgPSBcInpoLWNuXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvY2FsZSA9IFwiZW4tdXNcIjtcbiAgICB9XG4gICAgcmV0dXJuIGxvY2FsZTtcbiAgfTtcbiAgU2ltcGxlU2NoZW1hLnByb3RvdHlwZS5pMThuID0gZnVuY3Rpb24ocHJlZml4KSB7fTtcbiAgVGVtcGxhdGUucmVnaXN0ZXJIZWxwZXIoJ18nLCBmdW5jdGlvbihrZXksIGFyZ3MpIHtcbiAgICByZXR1cm4gVEFQaTE4bi5fXyhrZXksIGFyZ3MpO1xuICB9KTtcbiAgTWV0ZW9yLnN0YXJ0dXAoZnVuY3Rpb24oKSB7XG4gICAgdmFyIHVzZXJMYXN0TG9jYWxlO1xuICAgIFRlbXBsYXRlLnJlZ2lzdGVySGVscGVyKCdfJywgZnVuY3Rpb24oa2V5LCBhcmdzKSB7XG4gICAgICByZXR1cm4gVEFQaTE4bi5fXyhrZXksIGFyZ3MpO1xuICAgIH0pO1xuICAgIFNlc3Npb24uc2V0KFwic3RlZWRvcy1sb2NhbGVcIiwgZ2V0QnJvd3NlckxvY2FsZSgpKTtcbiAgICBUcmFja2VyLmF1dG9ydW4oZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoU2Vzc2lvbi5nZXQoXCJzdGVlZG9zLWxvY2FsZVwiKSAhPT0gXCJlbi11c1wiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgVEFQaTE4biAhPT0gXCJ1bmRlZmluZWRcIiAmJiBUQVBpMThuICE9PSBudWxsKSB7XG4gICAgICAgICAgVEFQaTE4bi5zZXRMYW5ndWFnZShcInpoLUNOXCIpO1xuICAgICAgICB9XG4gICAgICAgIEkxOG4uY2hhbmdlTGFuZ3VhZ2UoXCJ6aC1DTlwiLCB7XG4gICAgICAgICAgcm9vdFVybDogU3RlZWRvcy5hYnNvbHV0ZVVybCgpXG4gICAgICAgIH0pO1xuICAgICAgICBpMThuLnNldExvY2FsZShcInpoLUNOXCIpO1xuICAgICAgICBtb21lbnQubG9jYWxlKFwiemgtY25cIik7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwibW9tZW50XCIpLmxvY2FsZShcInpoLWNuXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHR5cGVvZiBUQVBpMThuICE9PSBcInVuZGVmaW5lZFwiICYmIFRBUGkxOG4gIT09IG51bGwpIHtcbiAgICAgICAgICBUQVBpMThuLnNldExhbmd1YWdlKFwiZW5cIik7XG4gICAgICAgIH1cbiAgICAgICAgSTE4bi5jaGFuZ2VMYW5ndWFnZShcImVuXCIsIHtcbiAgICAgICAgICByb290VXJsOiBTdGVlZG9zLmFic29sdXRlVXJsKClcbiAgICAgICAgfSk7XG4gICAgICAgIGkxOG4uc2V0TG9jYWxlKFwiZW5cIik7XG4gICAgICAgIG1vbWVudC5sb2NhbGUoXCJlblwiKTtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoXCJtb21lbnRcIikubG9jYWxlKFwiZW5cIik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdXNlckxhc3RMb2NhbGUgPSBudWxsO1xuICAgIFRyYWNrZXIuYXV0b3J1bihmdW5jdGlvbigpIHtcbiAgICAgIFNlc3Npb24uc2V0KFwic3RlZWRvcy1sb2NhbGVcIiwgXCJ6aC1DTlwiKTtcbiAgICAgIHJldHVybiB1c2VyTGFzdExvY2FsZSA9IE1ldGVvci51c2VyKCkgPyBNZXRlb3IudXNlcigpLmxvY2FsZSA/IChTZXNzaW9uLnNldChcInN0ZWVkb3MtbG9jYWxlXCIsIE1ldGVvci51c2VyKCkubG9jYWxlKSwgdXNlckxhc3RMb2NhbGUgJiYgdXNlckxhc3RMb2NhbGUgIT09IE1ldGVvci51c2VyKCkubG9jYWxlID8gd2luZG93LmxvY2F0aW9uLnJlbG9hZCh0cnVlKSA6IHZvaWQgMCwgdXNlckxhc3RMb2NhbGUgPSBNZXRlb3IudXNlcigpLmxvY2FsZSkgOiB2b2lkIDAgOiB2b2lkIDA7XG4gICAgfSk7XG4gICAgcmV0dXJuIGkxOG4ub25DaGFuZ2VMb2NhbGUoZnVuY3Rpb24obmV3TG9jYWxlKSB7XG4gICAgICAkLmV4dGVuZCh0cnVlLCAkLmZuLmRhdGFUYWJsZS5kZWZhdWx0cywge1xuICAgICAgICBsYW5ndWFnZToge1xuICAgICAgICAgIFwiZGVjaW1hbFwiOiB0KFwiZGF0YVRhYmxlcy5kZWNpbWFsXCIpLFxuICAgICAgICAgIFwiZW1wdHlUYWJsZVwiOiB0KFwiZGF0YVRhYmxlcy5lbXB0eVRhYmxlXCIpLFxuICAgICAgICAgIFwiaW5mb1wiOiB0KFwiZGF0YVRhYmxlcy5pbmZvXCIpLFxuICAgICAgICAgIFwiaW5mb0VtcHR5XCI6IHQoXCJkYXRhVGFibGVzLmluZm9FbXB0eVwiKSxcbiAgICAgICAgICBcImluZm9GaWx0ZXJlZFwiOiB0KFwiZGF0YVRhYmxlcy5pbmZvRmlsdGVyZWRcIiksXG4gICAgICAgICAgXCJpbmZvUG9zdEZpeFwiOiB0KFwiZGF0YVRhYmxlcy5pbmZvUG9zdEZpeFwiKSxcbiAgICAgICAgICBcInRob3VzYW5kc1wiOiB0KFwiZGF0YVRhYmxlcy50aG91c2FuZHNcIiksXG4gICAgICAgICAgXCJsZW5ndGhNZW51XCI6IHQoXCJkYXRhVGFibGVzLmxlbmd0aE1lbnVcIiksXG4gICAgICAgICAgXCJsb2FkaW5nUmVjb3Jkc1wiOiB0KFwiZGF0YVRhYmxlcy5sb2FkaW5nUmVjb3Jkc1wiKSxcbiAgICAgICAgICBcInByb2Nlc3NpbmdcIjogdChcImRhdGFUYWJsZXMucHJvY2Vzc2luZ1wiKSxcbiAgICAgICAgICBcInNlYXJjaFwiOiB0KFwiZGF0YVRhYmxlcy5zZWFyY2hcIiksXG4gICAgICAgICAgXCJ6ZXJvUmVjb3Jkc1wiOiB0KFwiZGF0YVRhYmxlcy56ZXJvUmVjb3Jkc1wiKSxcbiAgICAgICAgICBcInBhZ2luYXRlXCI6IHtcbiAgICAgICAgICAgIFwiZmlyc3RcIjogdChcImRhdGFUYWJsZXMucGFnaW5hdGUuZmlyc3RcIiksXG4gICAgICAgICAgICBcImxhc3RcIjogdChcImRhdGFUYWJsZXMucGFnaW5hdGUubGFzdFwiKSxcbiAgICAgICAgICAgIFwibmV4dFwiOiB0KFwiZGF0YVRhYmxlcy5wYWdpbmF0ZS5uZXh0XCIpLFxuICAgICAgICAgICAgXCJwcmV2aW91c1wiOiB0KFwiZGF0YVRhYmxlcy5wYWdpbmF0ZS5wcmV2aW91c1wiKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJhcmlhXCI6IHtcbiAgICAgICAgICAgIFwic29ydEFzY2VuZGluZ1wiOiB0KFwiZGF0YVRhYmxlcy5hcmlhLnNvcnRBc2NlbmRpbmdcIiksXG4gICAgICAgICAgICBcInNvcnREZXNjZW5kaW5nXCI6IHQoXCJkYXRhVGFibGVzLmFyaWEuc29ydERlc2NlbmRpbmdcIilcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIF8uZWFjaChUYWJ1bGFyLnRhYmxlc0J5TmFtZSwgZnVuY3Rpb24odGFibGUpIHtcbiAgICAgICAgcmV0dXJuIF8uZWFjaCh0YWJsZS5vcHRpb25zLmNvbHVtbnMsIGZ1bmN0aW9uKGNvbHVtbikge1xuICAgICAgICAgIHZhciBjb2xsTmFtZTtcbiAgICAgICAgICBpZiAoIWNvbHVtbi5kYXRhIHx8IGNvbHVtbi5kYXRhID09PSBcIl9pZFwiKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0YWJsZS5jb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICBjb2xsTmFtZSA9IHRhYmxlLmNvbGxlY3Rpb24uX25hbWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbGxOYW1lID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbHVtbi5zVGl0bGUgPSB0KFwiXCIgKyBjb2xsTmFtZSArIFwiX1wiICsgY29sdW1uLmRhdGEucmVwbGFjZSgvXFwuL2csIFwiX1wiKSk7XG4gICAgICAgICAgaWYgKCF0YWJsZS5vcHRpb25zLmxhbmd1YWdlKSB7XG4gICAgICAgICAgICB0YWJsZS5vcHRpb25zLmxhbmd1YWdlID0ge307XG4gICAgICAgICAgfVxuICAgICAgICAgIHRhYmxlLm9wdGlvbnMubGFuZ3VhZ2UuemVyb1JlY29yZHMgPSB0KFwiZGF0YVRhYmxlcy56ZXJvXCIpICsgdChjb2xsTmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuIiwiQGNmcyA9IHt9XG5cbk1ldGVvci5zdGFydHVwIC0+XG4gIEZTLkhUVFAuc2V0QmFzZVVybChcIi9hcGlcIilcblxuXG4jIOmAmui/h+aWh+S7tuaJqeWxleWQjeiOt+WPluaWh+S7tmNvbnRlbnRUeXBlXG4jIGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9odG1sL21pbWUtdHlwZXNcbiMg5Y+C54WnczPkuIrkvKDpmYTku7blkI7nmoRjb250ZW50VHlwZVxuY2ZzLmdldENvbnRlbnRUeXBlID0gKGZpbGVuYW1lKSAtPlxuICAgIF9leHAgPSBmaWxlbmFtZS5zcGxpdCgnLicpLnBvcCgpLnRvTG93ZXJDYXNlKClcbiAgICBpZiAoJy4nICsgX2V4cCA9PSAnLmF1JykgXG4gICAgICByZXR1cm4gJ2F1ZGlvL2Jhc2ljJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5hdmknKSBcbiAgICAgIHJldHVybiAndmlkZW8veC1tc3ZpZGVvJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5ibXAnKSBcbiAgICAgIHJldHVybiAnaW1hZ2UvYm1wJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5iejInKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24veC1iemlwMidcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcuY3NzJykgXG4gICAgICByZXR1cm4gJ3RleHQvY3NzJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5kdGQnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5kb2MnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vbXN3b3JkJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5kb2N4JykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL21zd29yZCdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcuZG90eCcpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLmVzJykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcuZXhlJykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcuZ2lmJykgXG4gICAgICByZXR1cm4gJ2ltYWdlL2dpZidcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcuZ3onKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24veC1nemlwJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5ocXgnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vbWFjLWJpbmhleDQwJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5odG1sJykgXG4gICAgICByZXR1cm4gJ3RleHQvaHRtbCdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcuamFyJykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3gtamF2YS1hcmNoaXZlJ1xuICAgIGVsc2UgaWYgKCgnLicgKyBfZXhwID09ICcuanBnJykgfHwgKCcuJyArIF9leHAgPT0gJy5qcGVnJykpIFxuICAgICAgcmV0dXJuICdpbWFnZS9qcGVnJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5qcycpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLmpzcCcpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLm1pZGknKSBcbiAgICAgIHJldHVybiAnYXVkaW8vbWlkaSdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcubXAzJykgXG4gICAgICByZXR1cm4gJ2F1ZGlvL21wZWcnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLm1wZWcnKSBcbiAgICAgIHJldHVybiAndmlkZW8vbXBlZydcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcub2dnJykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29nZydcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcucGRmJykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3BkZidcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcucGwnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5wbmcnKSBcbiAgICAgIHJldHVybiAnaW1hZ2UvcG5nJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5wb3R4JykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcucHBzeCcpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnBwdCcpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcucHB0eCcpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcucHMnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcucXQnKSBcbiAgICAgIHJldHVybiAndmlkZW8vcXVpY2t0aW1lJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5yYScpIFxuICAgICAgcmV0dXJuICdhdWRpby94LXBuLXJlYWxhdWRpbydcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcucmFtJykgXG4gICAgICByZXR1cm4gJ2F1ZGlvL3gtcG4tcmVhbGF1ZGlvJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5yZGYnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5ydGYnKSBcbiAgICAgIHJldHVybiAndGV4dC9ydGYnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnNnbWwnKSBcbiAgICAgIHJldHVybiAndGV4dC9zZ21sJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5zaXQnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24veC1zdHVmZml0J1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5zbGR4JykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcuc3ZnJykgXG4gICAgICByZXR1cm4gJ2ltYWdlL3N2Zyt4bWwnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnN3ZicpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcudGFyLmd6JykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3gtZ3ppcCdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcudGd6JykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3gtY29tcHJlc3NlZCdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcudGlmZicpIFxuICAgICAgcmV0dXJuICdpbWFnZS90aWZmJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy50c3YnKSBcbiAgICAgIHJldHVybiAndGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcydcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcudHh0JykgXG4gICAgICByZXR1cm4gJ3RleHQvcGxhaW4nXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLndhdicpIFxuICAgICAgcmV0dXJuICdhdWRpby94LXdhdidcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcueGxhbScpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnhscycpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnhsc2InKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy54bHN4JykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcueGx0eCcpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnhtbCcpIFxuICAgICAgcmV0dXJuICd0ZXh0L3htbCdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcuemlwJykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3ppcCdcbiAgICBlbHNlIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nXG4gICAgXG5cblxuIiwidGhpcy5jZnMgPSB7fTtcblxuTWV0ZW9yLnN0YXJ0dXAoZnVuY3Rpb24oKSB7XG4gIHJldHVybiBGUy5IVFRQLnNldEJhc2VVcmwoXCIvYXBpXCIpO1xufSk7XG5cbmNmcy5nZXRDb250ZW50VHlwZSA9IGZ1bmN0aW9uKGZpbGVuYW1lKSB7XG4gIHZhciBfZXhwO1xuICBfZXhwID0gZmlsZW5hbWUuc3BsaXQoJy4nKS5wb3AoKS50b0xvd2VyQ2FzZSgpO1xuICBpZiAoJy4nICsgX2V4cCA9PT0gJy5hdScpIHtcbiAgICByZXR1cm4gJ2F1ZGlvL2Jhc2ljJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLmF2aScpIHtcbiAgICByZXR1cm4gJ3ZpZGVvL3gtbXN2aWRlbyc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5ibXAnKSB7XG4gICAgcmV0dXJuICdpbWFnZS9ibXAnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuYnoyJykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24veC1iemlwMic7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5jc3MnKSB7XG4gICAgcmV0dXJuICd0ZXh0L2Nzcyc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5kdGQnKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuZG9jJykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vbXN3b3JkJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLmRvY3gnKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi9tc3dvcmQnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuZG90eCcpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5lcycpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5leGUnKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuZ2lmJykge1xuICAgIHJldHVybiAnaW1hZ2UvZ2lmJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLmd6Jykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24veC1nemlwJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLmhxeCcpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL21hYy1iaW5oZXg0MCc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5odG1sJykge1xuICAgIHJldHVybiAndGV4dC9odG1sJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLmphcicpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3gtamF2YS1hcmNoaXZlJztcbiAgfSBlbHNlIGlmICgoJy4nICsgX2V4cCA9PT0gJy5qcGcnKSB8fCAoJy4nICsgX2V4cCA9PT0gJy5qcGVnJykpIHtcbiAgICByZXR1cm4gJ2ltYWdlL2pwZWcnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuanMnKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuanNwJykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLm1pZGknKSB7XG4gICAgcmV0dXJuICdhdWRpby9taWRpJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLm1wMycpIHtcbiAgICByZXR1cm4gJ2F1ZGlvL21wZWcnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcubXBlZycpIHtcbiAgICByZXR1cm4gJ3ZpZGVvL21wZWcnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcub2dnJykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vb2dnJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnBkZicpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3BkZic7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5wbCcpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5wbmcnKSB7XG4gICAgcmV0dXJuICdpbWFnZS9wbmcnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcucG90eCcpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5wcHN4Jykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnBwdCcpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnBwdHgnKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5wcycpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcucXQnKSB7XG4gICAgcmV0dXJuICd2aWRlby9xdWlja3RpbWUnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcucmEnKSB7XG4gICAgcmV0dXJuICdhdWRpby94LXBuLXJlYWxhdWRpbyc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5yYW0nKSB7XG4gICAgcmV0dXJuICdhdWRpby94LXBuLXJlYWxhdWRpbyc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5yZGYnKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcucnRmJykge1xuICAgIHJldHVybiAndGV4dC9ydGYnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuc2dtbCcpIHtcbiAgICByZXR1cm4gJ3RleHQvc2dtbCc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5zaXQnKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi94LXN0dWZmaXQnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuc2xkeCcpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5zdmcnKSB7XG4gICAgcmV0dXJuICdpbWFnZS9zdmcreG1sJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnN3ZicpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnRhci5neicpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3gtZ3ppcCc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy50Z3onKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi94LWNvbXByZXNzZWQnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcudGlmZicpIHtcbiAgICByZXR1cm4gJ2ltYWdlL3RpZmYnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcudHN2Jykge1xuICAgIHJldHVybiAndGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcyc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy50eHQnKSB7XG4gICAgcmV0dXJuICd0ZXh0L3BsYWluJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLndhdicpIHtcbiAgICByZXR1cm4gJ2F1ZGlvL3gtd2F2JztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnhsYW0nKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcueGxzJykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnhsc2InKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcueGxzeCcpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy54bHR4Jykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnhtbCcpIHtcbiAgICByZXR1cm4gJ3RleHQveG1sJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnppcCcpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3ppcCc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICB9XG59O1xuIiwiRlMuU3RvcmFnZUFkYXB0ZXIucHJvdG90eXBlLm9uICdlcnJvcicsIChzdG9yZU5hbWUsIGVycm9yLCBmaWxlT2JqKS0+XG4gIGNvbnNvbGUuZXJyb3IoXCJGUy5TdG9yYWdlQWRhcHRlciBlbWl0IGVycm9yXCIpXG4gIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gIGNvbnNvbGUuZXJyb3IoZmlsZU9iailcbiAgY29uc29sZS5lcnJvcihzdG9yZU5hbWUpXG5cbkZTLkNvbGxlY3Rpb24ucHJvdG90eXBlLm9uICdlcnJvcicsIChlcnJvciwgZmlsZU9iaiwgc3RvcmVOYW1lKS0+XG4gIGNvbnNvbGUuZXJyb3IoXCJGUy5Db2xsZWN0aW9uIGVtaXQgZXJyb3JcIilcbiAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgY29uc29sZS5lcnJvcihmaWxlT2JqKVxuICBjb25zb2xlLmVycm9yKHN0b3JlTmFtZSkiLCJGUy5TdG9yYWdlQWRhcHRlci5wcm90b3R5cGUub24oJ2Vycm9yJywgZnVuY3Rpb24oc3RvcmVOYW1lLCBlcnJvciwgZmlsZU9iaikge1xuICBjb25zb2xlLmVycm9yKFwiRlMuU3RvcmFnZUFkYXB0ZXIgZW1pdCBlcnJvclwiKTtcbiAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gIGNvbnNvbGUuZXJyb3IoZmlsZU9iaik7XG4gIHJldHVybiBjb25zb2xlLmVycm9yKHN0b3JlTmFtZSk7XG59KTtcblxuRlMuQ29sbGVjdGlvbi5wcm90b3R5cGUub24oJ2Vycm9yJywgZnVuY3Rpb24oZXJyb3IsIGZpbGVPYmosIHN0b3JlTmFtZSkge1xuICBjb25zb2xlLmVycm9yKFwiRlMuQ29sbGVjdGlvbiBlbWl0IGVycm9yXCIpO1xuICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgY29uc29sZS5lcnJvcihmaWxlT2JqKTtcbiAgcmV0dXJuIGNvbnNvbGUuZXJyb3Ioc3RvcmVOYW1lKTtcbn0pO1xuIiwic3RvcmVzID0gWydhdmF0YXJzJywgJ2F1ZGlvcycsICdpbWFnZXMnLCAndmlkZW9zJywgJ2ZpbGVzJ11cblxuXy5lYWNoIHN0b3JlcywgKHN0b3JlX25hbWUpLT5cbiAgICBmaWxlX3N0b3JlXG4gICAgaWYgTWV0ZW9yLnNldHRpbmdzLnB1YmxpYy5jZnM/LnN0b3JlID09IFwiT1NTXCJcbiAgICAgICAgaWYgTWV0ZW9yLmlzQ2xpZW50XG4gICAgICAgICAgICBmaWxlX3N0b3JlID0gbmV3IEZTLlN0b3JlLk9TUyhzdG9yZV9uYW1lKVxuICAgICAgICBlbHNlIGlmIE1ldGVvci5pc1NlcnZlclxuICAgICAgICAgICAgZmlsZV9zdG9yZSA9IG5ldyBGUy5TdG9yZS5PU1Mgc3RvcmVfbmFtZSwgTWV0ZW9yLnNldHRpbmdzLmNmcy5hbGl5dW5cblxuICAgIGVsc2UgaWYgTWV0ZW9yLnNldHRpbmdzLnB1YmxpYy5jZnM/LnN0b3JlID09IFwiUzNcIlxuICAgICAgICBpZiBNZXRlb3IuaXNDbGllbnRcbiAgICAgICAgICAgIGZpbGVfc3RvcmUgPSBuZXcgRlMuU3RvcmUuUzMoc3RvcmVfbmFtZSlcbiAgICAgICAgZWxzZSBpZiBNZXRlb3IuaXNTZXJ2ZXJcbiAgICAgICAgICAgIGZpbGVfc3RvcmUgPSBuZXcgRlMuU3RvcmUuUzMgc3RvcmVfbmFtZSwgTWV0ZW9yLnNldHRpbmdzLmNmcy5hd3NcblxuICAgIGVsc2UgaWYgTWV0ZW9yLnNldHRpbmdzLnB1YmxpYy5jZnM/LnN0b3JlID09IFwiU1RFRURPU0NMT1VEXCJcbiAgICAgICAgaWYgTWV0ZW9yLmlzQ2xpZW50XG4gICAgICAgICAgICBmaWxlX3N0b3JlID0gbmV3IEZTLlN0b3JlLlNURUVET1NDTE9VRChzdG9yZV9uYW1lKVxuICAgICAgICBlbHNlIGlmIE1ldGVvci5pc1NlcnZlclxuICAgICAgICAgICAgZmlsZV9zdG9yZSA9IG5ldyBGUy5TdG9yZS5TVEVFRE9TQ0xPVUQgc3RvcmVfbmFtZSwgTWV0ZW9yLnNldHRpbmdzLmNmcy5zdGVlZG9zQ2xvdWRcbiAgICBlbHNlXG4gICAgICAgIGlmIE1ldGVvci5pc0NsaWVudFxuICAgICAgICAgICAgZmlsZV9zdG9yZSA9IG5ldyBGUy5TdG9yZS5GaWxlU3lzdGVtKHN0b3JlX25hbWUpXG4gICAgICAgIGVsc2UgaWYgTWV0ZW9yLmlzU2VydmVyXG4gICAgICAgICAgICBmaWxlX3N0b3JlID0gbmV3IEZTLlN0b3JlLkZpbGVTeXN0ZW0oc3RvcmVfbmFtZSwge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiByZXF1aXJlKCdwYXRoJykuam9pbihwcm9jZXNzLmVudi5TVEVFRE9TX1NUT1JBR0VfRElSLCBcImZpbGVzLyN7c3RvcmVfbmFtZX1cIiksXG4gICAgICAgICAgICAgICAgICAgIGZpbGVLZXlNYWtlcjogKGZpbGVPYmopLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICMgTG9va3VwIHRoZSBjb3B5XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZSA9IGZpbGVPYmogYW5kIGZpbGVPYmouX2dldEluZm8oc3RvcmVfbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlIHN0b3JlIGFuZCBrZXkgaXMgZm91bmQgcmV0dXJuIHRoZSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0b3JlIGFuZCBzdG9yZS5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmUua2V5XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICMgVE8gQ1VTVE9NSVpFLCBSRVBMQUNFIENPREUgQUZURVIgVEhJUyBQT0lOVFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVPYmoubmFtZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWVJblN0b3JlID0gZmlsZU9iai5uYW1lKHtzdG9yZTogc3RvcmVfbmFtZX0pXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdyA9IG5ldyBEYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZWFyID0gbm93LmdldEZ1bGxZZWFyKClcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoID0gbm93LmdldE1vbnRoKCkgKyAxXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG4gICAgICAgICAgICAgICAgICAgICAgICBta2RpcnAgPSByZXF1aXJlKCdta2RpcnAnKVxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5lbnYuU1RFRURPU19TVE9SQUdFX0RJUiwgXCJmaWxlcy8je3N0b3JlX25hbWV9L1wiICsgeWVhciArICcvJyArIG1vbnRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgIyBTZXQgYWJzb2x1dGUgcGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgYWJzb2x1dGVQYXRoID0gcGF0aC5yZXNvbHZlKHBhdGhuYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgIyBFbnN1cmUgdGhlIHBhdGggZXhpc3RzXG4gICAgICAgICAgICAgICAgICAgICAgICBta2RpcnAuc3luYyhhYnNvbHV0ZVBhdGgpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgbm8gc3RvcmUga2V5IGZvdW5kIHdlIHJlc29sdmUgLyBnZW5lcmF0ZSBhIGtleVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHllYXIgKyAnLycgKyBtb250aCArICcvJyArIGZpbGVPYmouY29sbGVjdGlvbk5hbWUgKyAnLScgKyBmaWxlT2JqLl9pZCArICctJyArIChmaWxlbmFtZUluU3RvcmUgfHwgZmlsZW5hbWUpXG5cbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgaWYgc3RvcmVfbmFtZSA9PSAnYXVkaW9zJ1xuICAgICAgICBjZnNbc3RvcmVfbmFtZV0gPSBuZXcgRlMuQ29sbGVjdGlvbiBzdG9yZV9uYW1lLFxuICAgICAgICAgICAgc3RvcmVzOiBbZmlsZV9zdG9yZV0sXG4gICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICBhbGxvdzoge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZXM6IFsnYXVkaW8vKiddICMgYWxsb3cgb25seSBhdWRpb3MgaW4gdGhpcyBGUy5Db2xsZWN0aW9uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIGVsc2UgaWYgc3RvcmVfbmFtZSA9PSAnaW1hZ2VzJyB8fCBzdG9yZV9uYW1lID09ICdhdmF0YXJzJ1xuICAgICAgICBjZnNbc3RvcmVfbmFtZV0gPSBuZXcgRlMuQ29sbGVjdGlvbiBzdG9yZV9uYW1lLFxuICAgICAgICAgICAgc3RvcmVzOiBbZmlsZV9zdG9yZV0sXG4gICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICBhbGxvdzoge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZXM6IFsnaW1hZ2UvKiddICMgYWxsb3cgb25seSBpbWFnZXMgaW4gdGhpcyBGUy5Db2xsZWN0aW9uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIGVsc2UgaWYgc3RvcmVfbmFtZSA9PSAndmlkZW9zJ1xuICAgICAgICBjZnNbc3RvcmVfbmFtZV0gPSBuZXcgRlMuQ29sbGVjdGlvbiBzdG9yZV9uYW1lLFxuICAgICAgICAgICAgc3RvcmVzOiBbZmlsZV9zdG9yZV0sXG4gICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICBhbGxvdzoge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZXM6IFsndmlkZW8vKiddICMgYWxsb3cgb25seSB2aWRlb3MgaW4gdGhpcyBGUy5Db2xsZWN0aW9uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIGVsc2VcbiAgICAgICAgY2ZzW3N0b3JlX25hbWVdID0gbmV3IEZTLkNvbGxlY3Rpb24gc3RvcmVfbmFtZSxcbiAgICAgICAgICAgIHN0b3JlczogW2ZpbGVfc3RvcmVdXG5cbiAgICBjZnNbc3RvcmVfbmFtZV0uYWxsb3dcbiAgICAgICAgaW5zZXJ0OiAtPlxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgdXBkYXRlOiAtPlxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgcmVtb3ZlOiAtPlxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgZG93bmxvYWQ6IC0+XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuXG4gICAgaWYgc3RvcmVfbmFtZSA9PSAnYXZhdGFycydcbiAgICAgICAgZGJbc3RvcmVfbmFtZV0gPSBjZnNbc3RvcmVfbmFtZV1cbiAgICAgICAgZGJbc3RvcmVfbmFtZV0uZmlsZXMuYmVmb3JlLmluc2VydCAodXNlcklkLCBkb2MpIC0+XG4gICAgICAgICAgICBkb2MudXNlcklkID0gdXNlcklkXG5cbiAgICBpZiBzdG9yZV9uYW1lID09ICdmaWxlcydcbiAgICAgICAgZGJbXCJjZnMuI3tzdG9yZV9uYW1lfS5maWxlcmVjb3JkXCJdID0gY2ZzW3N0b3JlX25hbWVdLmZpbGVzIiwidmFyIHN0b3Jlcztcblxuc3RvcmVzID0gWydhdmF0YXJzJywgJ2F1ZGlvcycsICdpbWFnZXMnLCAndmlkZW9zJywgJ2ZpbGVzJ107XG5cbl8uZWFjaChzdG9yZXMsIGZ1bmN0aW9uKHN0b3JlX25hbWUpIHtcbiAgZmlsZV9zdG9yZTtcbiAgdmFyIGZpbGVfc3RvcmUsIHJlZiwgcmVmMSwgcmVmMjtcbiAgaWYgKCgocmVmID0gTWV0ZW9yLnNldHRpbmdzW1wicHVibGljXCJdLmNmcykgIT0gbnVsbCA/IHJlZi5zdG9yZSA6IHZvaWQgMCkgPT09IFwiT1NTXCIpIHtcbiAgICBpZiAoTWV0ZW9yLmlzQ2xpZW50KSB7XG4gICAgICBmaWxlX3N0b3JlID0gbmV3IEZTLlN0b3JlLk9TUyhzdG9yZV9uYW1lKTtcbiAgICB9IGVsc2UgaWYgKE1ldGVvci5pc1NlcnZlcikge1xuICAgICAgZmlsZV9zdG9yZSA9IG5ldyBGUy5TdG9yZS5PU1Moc3RvcmVfbmFtZSwgTWV0ZW9yLnNldHRpbmdzLmNmcy5hbGl5dW4pO1xuICAgIH1cbiAgfSBlbHNlIGlmICgoKHJlZjEgPSBNZXRlb3Iuc2V0dGluZ3NbXCJwdWJsaWNcIl0uY2ZzKSAhPSBudWxsID8gcmVmMS5zdG9yZSA6IHZvaWQgMCkgPT09IFwiUzNcIikge1xuICAgIGlmIChNZXRlb3IuaXNDbGllbnQpIHtcbiAgICAgIGZpbGVfc3RvcmUgPSBuZXcgRlMuU3RvcmUuUzMoc3RvcmVfbmFtZSk7XG4gICAgfSBlbHNlIGlmIChNZXRlb3IuaXNTZXJ2ZXIpIHtcbiAgICAgIGZpbGVfc3RvcmUgPSBuZXcgRlMuU3RvcmUuUzMoc3RvcmVfbmFtZSwgTWV0ZW9yLnNldHRpbmdzLmNmcy5hd3MpO1xuICAgIH1cbiAgfSBlbHNlIGlmICgoKHJlZjIgPSBNZXRlb3Iuc2V0dGluZ3NbXCJwdWJsaWNcIl0uY2ZzKSAhPSBudWxsID8gcmVmMi5zdG9yZSA6IHZvaWQgMCkgPT09IFwiU1RFRURPU0NMT1VEXCIpIHtcbiAgICBpZiAoTWV0ZW9yLmlzQ2xpZW50KSB7XG4gICAgICBmaWxlX3N0b3JlID0gbmV3IEZTLlN0b3JlLlNURUVET1NDTE9VRChzdG9yZV9uYW1lKTtcbiAgICB9IGVsc2UgaWYgKE1ldGVvci5pc1NlcnZlcikge1xuICAgICAgZmlsZV9zdG9yZSA9IG5ldyBGUy5TdG9yZS5TVEVFRE9TQ0xPVUQoc3RvcmVfbmFtZSwgTWV0ZW9yLnNldHRpbmdzLmNmcy5zdGVlZG9zQ2xvdWQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoTWV0ZW9yLmlzQ2xpZW50KSB7XG4gICAgICBmaWxlX3N0b3JlID0gbmV3IEZTLlN0b3JlLkZpbGVTeXN0ZW0oc3RvcmVfbmFtZSk7XG4gICAgfSBlbHNlIGlmIChNZXRlb3IuaXNTZXJ2ZXIpIHtcbiAgICAgIGZpbGVfc3RvcmUgPSBuZXcgRlMuU3RvcmUuRmlsZVN5c3RlbShzdG9yZV9uYW1lLCB7XG4gICAgICAgIHBhdGg6IHJlcXVpcmUoJ3BhdGgnKS5qb2luKHByb2Nlc3MuZW52LlNURUVET1NfU1RPUkFHRV9ESVIsIFwiZmlsZXMvXCIgKyBzdG9yZV9uYW1lKSxcbiAgICAgICAgZmlsZUtleU1ha2VyOiBmdW5jdGlvbihmaWxlT2JqKSB7XG4gICAgICAgICAgdmFyIGFic29sdXRlUGF0aCwgZmlsZW5hbWUsIGZpbGVuYW1lSW5TdG9yZSwgbWtkaXJwLCBtb250aCwgbm93LCBwYXRoLCBwYXRobmFtZSwgc3RvcmUsIHllYXI7XG4gICAgICAgICAgc3RvcmUgPSBmaWxlT2JqICYmIGZpbGVPYmouX2dldEluZm8oc3RvcmVfbmFtZSk7XG4gICAgICAgICAgaWYgKHN0b3JlICYmIHN0b3JlLmtleSkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmtleTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZmlsZW5hbWUgPSBmaWxlT2JqLm5hbWUoKTtcbiAgICAgICAgICBmaWxlbmFtZUluU3RvcmUgPSBmaWxlT2JqLm5hbWUoe1xuICAgICAgICAgICAgc3RvcmU6IHN0b3JlX25hbWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBub3cgPSBuZXcgRGF0ZTtcbiAgICAgICAgICB5ZWFyID0gbm93LmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgbW9udGggPSBub3cuZ2V0TW9udGgoKSArIDE7XG4gICAgICAgICAgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbiAgICAgICAgICBta2RpcnAgPSByZXF1aXJlKCdta2RpcnAnKTtcbiAgICAgICAgICBwYXRobmFtZSA9IHBhdGguam9pbihwcm9jZXNzLmVudi5TVEVFRE9TX1NUT1JBR0VfRElSLCAoXCJmaWxlcy9cIiArIHN0b3JlX25hbWUgKyBcIi9cIikgKyB5ZWFyICsgJy8nICsgbW9udGgpO1xuICAgICAgICAgIGFic29sdXRlUGF0aCA9IHBhdGgucmVzb2x2ZShwYXRobmFtZSk7XG4gICAgICAgICAgbWtkaXJwLnN5bmMoYWJzb2x1dGVQYXRoKTtcbiAgICAgICAgICByZXR1cm4geWVhciArICcvJyArIG1vbnRoICsgJy8nICsgZmlsZU9iai5jb2xsZWN0aW9uTmFtZSArICctJyArIGZpbGVPYmouX2lkICsgJy0nICsgKGZpbGVuYW1lSW5TdG9yZSB8fCBmaWxlbmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBpZiAoc3RvcmVfbmFtZSA9PT0gJ2F1ZGlvcycpIHtcbiAgICBjZnNbc3RvcmVfbmFtZV0gPSBuZXcgRlMuQ29sbGVjdGlvbihzdG9yZV9uYW1lLCB7XG4gICAgICBzdG9yZXM6IFtmaWxlX3N0b3JlXSxcbiAgICAgIGZpbHRlcjoge1xuICAgICAgICBhbGxvdzoge1xuICAgICAgICAgIGNvbnRlbnRUeXBlczogWydhdWRpby8qJ11cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKHN0b3JlX25hbWUgPT09ICdpbWFnZXMnIHx8IHN0b3JlX25hbWUgPT09ICdhdmF0YXJzJykge1xuICAgIGNmc1tzdG9yZV9uYW1lXSA9IG5ldyBGUy5Db2xsZWN0aW9uKHN0b3JlX25hbWUsIHtcbiAgICAgIHN0b3JlczogW2ZpbGVfc3RvcmVdLFxuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIGFsbG93OiB7XG4gICAgICAgICAgY29udGVudFR5cGVzOiBbJ2ltYWdlLyonXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoc3RvcmVfbmFtZSA9PT0gJ3ZpZGVvcycpIHtcbiAgICBjZnNbc3RvcmVfbmFtZV0gPSBuZXcgRlMuQ29sbGVjdGlvbihzdG9yZV9uYW1lLCB7XG4gICAgICBzdG9yZXM6IFtmaWxlX3N0b3JlXSxcbiAgICAgIGZpbHRlcjoge1xuICAgICAgICBhbGxvdzoge1xuICAgICAgICAgIGNvbnRlbnRUeXBlczogWyd2aWRlby8qJ11cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNmc1tzdG9yZV9uYW1lXSA9IG5ldyBGUy5Db2xsZWN0aW9uKHN0b3JlX25hbWUsIHtcbiAgICAgIHN0b3JlczogW2ZpbGVfc3RvcmVdXG4gICAgfSk7XG4gIH1cbiAgY2ZzW3N0b3JlX25hbWVdLmFsbG93KHtcbiAgICBpbnNlcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBkb3dubG9hZDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICBpZiAoc3RvcmVfbmFtZSA9PT0gJ2F2YXRhcnMnKSB7XG4gICAgZGJbc3RvcmVfbmFtZV0gPSBjZnNbc3RvcmVfbmFtZV07XG4gICAgZGJbc3RvcmVfbmFtZV0uZmlsZXMuYmVmb3JlLmluc2VydChmdW5jdGlvbih1c2VySWQsIGRvYykge1xuICAgICAgcmV0dXJuIGRvYy51c2VySWQgPSB1c2VySWQ7XG4gICAgfSk7XG4gIH1cbiAgaWYgKHN0b3JlX25hbWUgPT09ICdmaWxlcycpIHtcbiAgICByZXR1cm4gZGJbXCJjZnMuXCIgKyBzdG9yZV9uYW1lICsgXCIuZmlsZXJlY29yZFwiXSA9IGNmc1tzdG9yZV9uYW1lXS5maWxlcztcbiAgfVxufSk7XG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1ldGVvcjovL/CfkrthcHAvcGFja2FnZXMvc3RlZWRvc19vYmplY3RzLWNvcmUvaTE4bi5jb2ZmZWUiLCJtZXRlb3I6Ly/wn5K7YXBwL2kxOG4uY29mZmVlIiwibWV0ZW9yOi8v8J+Su2FwcC9wYWNrYWdlcy9zdGVlZG9zX29iamVjdHMtY29yZS9jZnMvY2ZzLmNvZmZlZSIsIm1ldGVvcjovL/CfkrthcHAvY2ZzL2Nmcy5jb2ZmZWUiLCJtZXRlb3I6Ly/wn5K7YXBwL3BhY2thZ2VzL3N0ZWVkb3Nfb2JqZWN0cy1jb3JlL2Nmcy9jZnNfZml4LmNvZmZlZSIsIm1ldGVvcjovL/CfkrthcHAvY2ZzL2Nmc19maXguY29mZmVlIiwibWV0ZW9yOi8v8J+Su2FwcC9wYWNrYWdlcy9zdGVlZG9zX29iamVjdHMtY29yZS9jZnMvc3RvcmVzLmNvZmZlZSIsIm1ldGVvcjovL/CfkrthcHAvY2ZzL3N0b3Jlcy5jb2ZmZWUiXSwibmFtZXMiOlsiSTE4biIsImFic29sdXRlVXJsIiwiZ2V0QnJvd3NlckxvY2FsZSIsImkxOG4iLCJyZXF1aXJlIiwidCIsInRyIiwidHJsIiwidXJsIiwiZSIsInJvb3RfdXJsIiwicmVwbGFjZSIsIk1ldGVvciIsImlzQ29yZG92YSIsImlzQ2xpZW50IiwiVVJMIiwicGF0aG5hbWUiLCJlcnJvciIsInNldE9wdGlvbnMiLCJwdXJpZnkiLCJkZWZhdWx0TG9jYWxlIiwiaG9zdFVybCIsIlRBUGkxOG4iLCJfX29yaWdpbmFsIiwiX18iLCJrZXkiLCJvcHRpb25zIiwibG9jYWxlIiwidHJhbnNsYXRlZCIsIl9nZXRMYW5ndWFnZUZpbGVQYXRoIiwibGFuZ190YWciLCJwYXRoIiwiY29uZiIsImNkbl9wYXRoIiwiaTE4bl9maWxlc19yb3V0ZSIsImwiLCJ3aW5kb3ciLCJuYXZpZ2F0b3IiLCJ1c2VyTGFuZ3VhZ2UiLCJsYW5ndWFnZSIsImluZGV4T2YiLCJTaW1wbGVTY2hlbWEiLCJwcm90b3R5cGUiLCJwcmVmaXgiLCJUZW1wbGF0ZSIsInJlZ2lzdGVySGVscGVyIiwiYXJncyIsInN0YXJ0dXAiLCJ1c2VyTGFzdExvY2FsZSIsIlNlc3Npb24iLCJzZXQiLCJUcmFja2VyIiwiYXV0b3J1biIsImdldCIsInNldExhbmd1YWdlIiwiY2hhbmdlTGFuZ3VhZ2UiLCJyb290VXJsIiwiU3RlZWRvcyIsInNldExvY2FsZSIsIm1vbWVudCIsInVzZXIiLCJsb2NhdGlvbiIsInJlbG9hZCIsIm9uQ2hhbmdlTG9jYWxlIiwibmV3TG9jYWxlIiwiJCIsImV4dGVuZCIsImZuIiwiZGF0YVRhYmxlIiwiZGVmYXVsdHMiLCJfIiwiZWFjaCIsIlRhYnVsYXIiLCJ0YWJsZXNCeU5hbWUiLCJ0YWJsZSIsImNvbHVtbnMiLCJjb2x1bW4iLCJjb2xsTmFtZSIsImRhdGEiLCJjb2xsZWN0aW9uIiwiX25hbWUiLCJzVGl0bGUiLCJ6ZXJvUmVjb3JkcyIsImNmcyIsIkZTIiwiSFRUUCIsInNldEJhc2VVcmwiLCJnZXRDb250ZW50VHlwZSIsImZpbGVuYW1lIiwiX2V4cCIsInNwbGl0IiwicG9wIiwidG9Mb3dlckNhc2UiLCJTdG9yYWdlQWRhcHRlciIsIm9uIiwic3RvcmVOYW1lIiwiZmlsZU9iaiIsImNvbnNvbGUiLCJDb2xsZWN0aW9uIiwic3RvcmVzIiwic3RvcmVfbmFtZSIsImZpbGVfc3RvcmUiLCJyZWYiLCJyZWYxIiwicmVmMiIsInNldHRpbmdzIiwic3RvcmUiLCJTdG9yZSIsIk9TUyIsImlzU2VydmVyIiwiYWxpeXVuIiwiUzMiLCJhd3MiLCJTVEVFRE9TQ0xPVUQiLCJzdGVlZG9zQ2xvdWQiLCJGaWxlU3lzdGVtIiwiam9pbiIsInByb2Nlc3MiLCJlbnYiLCJTVEVFRE9TX1NUT1JBR0VfRElSIiwiZmlsZUtleU1ha2VyIiwiYWJzb2x1dGVQYXRoIiwiZmlsZW5hbWVJblN0b3JlIiwibWV0YWRhdGEiLCJta2RpcnAiLCJtb250aCIsIm5vdyIsIm9iamVjdEZvbGRQYXRoIiwib2JqZWN0TmFtZSIsInllYXIiLCJfZ2V0SW5mbyIsIm5hbWUiLCJvYmplY3RfbmFtZSIsIkRhdGUiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwicmVzb2x2ZSIsInN5bmMiLCJjb2xsZWN0aW9uTmFtZSIsIl9pZCIsImZpbHRlciIsImFsbG93IiwiY29udGVudFR5cGVzIiwiaW5zZXJ0IiwidXBkYXRlIiwicmVtb3ZlIiwiZG93bmxvYWQiLCJkYiIsImZpbGVzIiwiYmVmb3JlIiwidXNlcklkIiwiZG9jIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxFQUFBQyxXQUFBLEVBQUFDLGdCQUFBLEVBQUFDLElBQUE7QUFBQUEsT0FBT0MsUUFBUSxzQkFBUixFQUFnQ0QsSUFBdkM7QUFDQUgsT0FBT0ksUUFBUSxlQUFSLENBQVA7QUFDQSxLQUFDRCxJQUFELEdBQVFBLElBQVI7QUFFQSxLQUFDRSxDQUFELEdBQUtMLEtBQUtLLENBQVY7QUFFQSxLQUFDQyxFQUFELEdBQU1ELENBQU47QUFFQSxLQUFDRSxHQUFELEdBQU9GLENBQVA7O0FBRUFKLGNBQWMsVUFBQ08sR0FBRDtBQUNiLE1BQUFDLENBQUEsRUFBQUMsUUFBQTs7QUFBQSxNQUFHRixHQUFIO0FBRUNBLFVBQU1BLElBQUlHLE9BQUosQ0FBWSxLQUFaLEVBQWtCLEVBQWxCLENBQU47QUNLQzs7QURKRixNQUFJQyxPQUFPQyxTQUFYO0FBQ0MsV0FBT0QsT0FBT1gsV0FBUCxDQUFtQk8sR0FBbkIsQ0FBUDtBQUREO0FBR0MsUUFBR0ksT0FBT0UsUUFBVjtBQUNDO0FBQ0NKLG1CQUFXLElBQUlLLEdBQUosQ0FBUUgsT0FBT1gsV0FBUCxFQUFSLENBQVg7O0FBQ0EsWUFBR08sR0FBSDtBQUNDLGlCQUFPRSxTQUFTTSxRQUFULEdBQW9CUixHQUEzQjtBQUREO0FBR0MsaUJBQU9FLFNBQVNNLFFBQWhCO0FBTEY7QUFBQSxlQUFBQyxLQUFBO0FBTU1SLFlBQUFRLEtBQUE7QUFDTCxlQUFPTCxPQUFPWCxXQUFQLENBQW1CTyxHQUFuQixDQUFQO0FBUkY7QUFBQTtBQ2tC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LGVBQWMsU0FBakI7QUFDSStDLE9BQUcvQyxVQUFILElBQWlCakIsSUFBSWlCLFVBQUosQ0FBakI7QUFDQStDLE9BQUcvQyxVQUFILEVBQWVnRCxLQUFmLENBQXFCQyxNQUFyQixDQUE0Qk4sTUFBNUIsQ0FBbUMsVUFBQ08sTUFBRCxFQUFTQyxHQUFUO0FDUXJDLGFEUE1BLElBQUlELE1BQUosR0FBYUEsTUNPbkI7QURSRTtBQ1VMOztBRFBDLE1BQUdsRCxlQUFjLE9BQWpCO0FDU0EsV0RSSStDLEdBQUcsU0FBTy9DLFVBQVAsR0FBa0IsYUFBckIsSUFBcUNqQixJQUFJaUIsVUFBSixFQUFnQmdELEtDUXpEO0FBQ0Q7QURoSEgsRyIsImZpbGUiOiIvcGFja2FnZXMvc3RlZWRvc19vYmplY3RzLWNvcmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpMThuID0gcmVxdWlyZSgnbWV0ZW9yL3VuaXZlcnNlOmkxOG4nKS5pMThuO1xuSTE4biA9IHJlcXVpcmUoJ0BzdGVlZG9zL2kxOG4nKTtcbkBpMThuID0gaTE4bjtcblxuQHQgPSBJMThuLnRcblxuQHRyID0gdFxuXG5AdHJsID0gdFxuXG5hYnNvbHV0ZVVybCA9ICh1cmwpLT5cblx0aWYgdXJsXG5cdFx0IyB1cmzku6VcIi9cIuW8gOWktOeahOivne+8jOWOu+aOieW8gOWktOeahFwiL1wiXG5cdFx0dXJsID0gdXJsLnJlcGxhY2UoL15cXC8vLFwiXCIpXG5cdGlmIChNZXRlb3IuaXNDb3Jkb3ZhKVxuXHRcdHJldHVybiBNZXRlb3IuYWJzb2x1dGVVcmwodXJsKTtcblx0ZWxzZVxuXHRcdGlmIE1ldGVvci5pc0NsaWVudFxuXHRcdFx0dHJ5XG5cdFx0XHRcdHJvb3RfdXJsID0gbmV3IFVSTChNZXRlb3IuYWJzb2x1dGVVcmwoKSlcblx0XHRcdFx0aWYgdXJsXG5cdFx0XHRcdFx0cmV0dXJuIHJvb3RfdXJsLnBhdGhuYW1lICsgdXJsXG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRyZXR1cm4gcm9vdF91cmwucGF0aG5hbWVcblx0XHRcdGNhdGNoIGVcblx0XHRcdFx0cmV0dXJuIE1ldGVvci5hYnNvbHV0ZVVybCh1cmwpXG5cdFx0ZWxzZVxuXHRcdFx0TWV0ZW9yLmFic29sdXRlVXJsKHVybClcbiMg6YeN5YaZdGFwOmkxOG7lh73mlbDvvIzlkJHlkI7lhbzlrrlcbmkxOG4uc2V0T3B0aW9uc1xuXHRwdXJpZnk6IG51bGxcblx0ZGVmYXVsdExvY2FsZTogJ3poLUNOJ1xuXHRob3N0VXJsOiBhYnNvbHV0ZVVybCgpXG5cbmlmIFRBUGkxOG4/XG5cdFRBUGkxOG4uX19vcmlnaW5hbCA9IFRBUGkxOG4uX19cblxuXHRUQVBpMThuLl9fID0gKGtleSwgb3B0aW9ucywgbG9jYWxlKS0+XG5cdFx0dHJhbnNsYXRlZCA9IHQoa2V5LCBvcHRpb25zLCBsb2NhbGUpO1xuXHRcdGlmIHRyYW5zbGF0ZWQgIT0ga2V5XG5cdFx0XHRyZXR1cm4gdHJhbnNsYXRlZFxuXG5cdFx0IyBpMThuIOe/u+ivkeS4jeWHuuadpe+8jOWwneivleeUqCB0YXA6aTE4biDnv7vor5EgVE9ETyByZW1vdmVcblx0XHRyZXR1cm4gVEFQaTE4bi5fX29yaWdpbmFsIGtleSwgb3B0aW9ucywgbG9jYWxlXG5cblx0VEFQaTE4bi5fZ2V0TGFuZ3VhZ2VGaWxlUGF0aCA9IChsYW5nX3RhZykgLT5cblxuXHRcdHBhdGggPSBpZiBALmNvbmYuY2RuX3BhdGg/IHRoZW4gQC5jb25mLmNkbl9wYXRoIGVsc2UgQC5jb25mLmkxOG5fZmlsZXNfcm91dGVcblx0XHRwYXRoID0gcGF0aC5yZXBsYWNlIC9cXC8kLywgXCJcIlxuXHRcdGlmIHBhdGhbMF0gPT0gXCIvXCJcblx0XHRcdHBhdGggPSBhYnNvbHV0ZVVybCgpLnJlcGxhY2UoL1xcLyskLywgXCJcIikgKyBwYXRoXG5cblx0XHRyZXR1cm4gXCIje3BhdGh9LyN7bGFuZ190YWd9Lmpzb25cIlxuXG5pZiBNZXRlb3IuaXNDbGllbnRcblx0Z2V0QnJvd3NlckxvY2FsZSA9ICgpLT5cblx0XHRsID0gd2luZG93Lm5hdmlnYXRvci51c2VyTGFuZ3VhZ2UgfHwgd2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZSB8fCAnZW4nXG5cdFx0aWYgbC5pbmRleE9mKFwiemhcIikgPj0wXG5cdFx0XHRsb2NhbGUgPSBcInpoLWNuXCJcblx0XHRlbHNlXG5cdFx0XHRsb2NhbGUgPSBcImVuLXVzXCJcblx0XHRyZXR1cm4gbG9jYWxlXG5cblxuXHQjIOWBnOeUqOS4muWKoeWvueixoee/u+ivkSDmraTlh73mlbDlt7LlvIPnlKhcblx0U2ltcGxlU2NoZW1hLnByb3RvdHlwZS5pMThuID0gKHByZWZpeCkgLT5cblx0XHRyZXR1cm5cblxuXHRUZW1wbGF0ZS5yZWdpc3RlckhlbHBlciAnXycsIChrZXksIGFyZ3MpLT5cblx0XHRyZXR1cm4gVEFQaTE4bi5fXyhrZXksIGFyZ3MpO1xuXG5cdE1ldGVvci5zdGFydHVwIC0+XG5cblx0XHRUZW1wbGF0ZS5yZWdpc3RlckhlbHBlciAnXycsIChrZXksIGFyZ3MpLT5cblx0XHRcdHJldHVybiBUQVBpMThuLl9fKGtleSwgYXJncyk7XG5cblx0XHRTZXNzaW9uLnNldChcInN0ZWVkb3MtbG9jYWxlXCIsIGdldEJyb3dzZXJMb2NhbGUoKSlcblxuXHRcdFRyYWNrZXIuYXV0b3J1biAoKS0+XG5cdFx0XHRpZiBTZXNzaW9uLmdldChcInN0ZWVkb3MtbG9jYWxlXCIpICE9IFwiZW4tdXNcIlxuXHRcdFx0XHRpZiBUQVBpMThuP1xuXHRcdFx0XHRcdFRBUGkxOG4uc2V0TGFuZ3VhZ2UoXCJ6aC1DTlwiKVxuXHRcdFx0XHRJMThuLmNoYW5nZUxhbmd1YWdlKFwiemgtQ05cIiwge3Jvb3RVcmw6IFN0ZWVkb3MuYWJzb2x1dGVVcmwoKSB9KVxuXHRcdFx0XHRpMThuLnNldExvY2FsZShcInpoLUNOXCIpXG5cdFx0XHRcdG1vbWVudC5sb2NhbGUoXCJ6aC1jblwiKVxuXHRcdFx0XHRyZXF1aXJlKFwibW9tZW50XCIpLmxvY2FsZShcInpoLWNuXCIpXG5cdFx0XHRlbHNlXG5cdFx0XHRcdGlmIFRBUGkxOG4/XG5cdFx0XHRcdFx0VEFQaTE4bi5zZXRMYW5ndWFnZShcImVuXCIpXG5cdFx0XHRcdEkxOG4uY2hhbmdlTGFuZ3VhZ2UoXCJlblwiLCB7cm9vdFVybDogU3RlZWRvcy5hYnNvbHV0ZVVybCgpIH0pXG5cdFx0XHRcdGkxOG4uc2V0TG9jYWxlKFwiZW5cIilcblx0XHRcdFx0bW9tZW50LmxvY2FsZShcImVuXCIpXG5cdFx0XHRcdHJlcXVpcmUoXCJtb21lbnRcIikubG9jYWxlKFwiZW5cIilcblx0XHR1c2VyTGFzdExvY2FsZSA9IG51bGxcblx0XHRUcmFja2VyLmF1dG9ydW4gKCktPlxuXHRcdFx0U2Vzc2lvbi5zZXQoXCJzdGVlZG9zLWxvY2FsZVwiLCBcInpoLUNOXCIpXG5cdFx0XHR1c2VyTGFzdExvY2FsZSA9XG5cdFx0XHRpZiBNZXRlb3IudXNlcigpXG5cdFx0XHRcdGlmIE1ldGVvci51c2VyKCkubG9jYWxlXG5cdFx0XHRcdFx0U2Vzc2lvbi5zZXQoXCJzdGVlZG9zLWxvY2FsZVwiLCBNZXRlb3IudXNlcigpLmxvY2FsZSk7XG5cdFx0XHRcdFx0aWYgdXNlckxhc3RMb2NhbGUgJiYgdXNlckxhc3RMb2NhbGUgIT0gTWV0ZW9yLnVzZXIoKS5sb2NhbGVcblx0XHRcdFx0XHRcdHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQodHJ1ZSk7XG5cdFx0XHRcdFx0dXNlckxhc3RMb2NhbGUgPSBNZXRlb3IudXNlcigpLmxvY2FsZVxuXG5cdFx0aTE4bi5vbkNoYW5nZUxvY2FsZSAobmV3TG9jYWxlKS0+XG5cblx0XHRcdCQuZXh0ZW5kIHRydWUsICQuZm4uZGF0YVRhYmxlLmRlZmF1bHRzLFxuXHRcdFx0XHRsYW5ndWFnZTpcblx0XHRcdFx0XHRcImRlY2ltYWxcIjogICAgICAgIHQoXCJkYXRhVGFibGVzLmRlY2ltYWxcIiksXG5cdFx0XHRcdFx0XCJlbXB0eVRhYmxlXCI6ICAgICB0KFwiZGF0YVRhYmxlcy5lbXB0eVRhYmxlXCIpLFxuXHRcdFx0XHRcdFwiaW5mb1wiOiAgICAgICAgICAgdChcImRhdGFUYWJsZXMuaW5mb1wiKSxcblx0XHRcdFx0XHRcImluZm9FbXB0eVwiOiAgICAgIHQoXCJkYXRhVGFibGVzLmluZm9FbXB0eVwiKSxcblx0XHRcdFx0XHRcImluZm9GaWx0ZXJlZFwiOiAgIHQoXCJkYXRhVGFibGVzLmluZm9GaWx0ZXJlZFwiKSxcblx0XHRcdFx0XHRcImluZm9Qb3N0Rml4XCI6ICAgIHQoXCJkYXRhVGFibGVzLmluZm9Qb3N0Rml4XCIpLFxuXHRcdFx0XHRcdFwidGhvdXNhbmRzXCI6ICAgICAgdChcImRhdGFUYWJsZXMudGhvdXNhbmRzXCIpLFxuXHRcdFx0XHRcdFwibGVuZ3RoTWVudVwiOiAgICAgdChcImRhdGFUYWJsZXMubGVuZ3RoTWVudVwiKSxcblx0XHRcdFx0XHRcImxvYWRpbmdSZWNvcmRzXCI6IHQoXCJkYXRhVGFibGVzLmxvYWRpbmdSZWNvcmRzXCIpLFxuXHRcdFx0XHRcdFwicHJvY2Vzc2luZ1wiOiAgICAgdChcImRhdGFUYWJsZXMucHJvY2Vzc2luZ1wiKSxcblx0XHRcdFx0XHRcInNlYXJjaFwiOiAgICAgICAgIHQoXCJkYXRhVGFibGVzLnNlYXJjaFwiKSxcblx0XHRcdFx0XHRcInplcm9SZWNvcmRzXCI6ICAgIHQoXCJkYXRhVGFibGVzLnplcm9SZWNvcmRzXCIpLFxuXHRcdFx0XHRcdFwicGFnaW5hdGVcIjpcblx0XHRcdFx0XHRcdFwiZmlyc3RcIjogICAgICB0KFwiZGF0YVRhYmxlcy5wYWdpbmF0ZS5maXJzdFwiKSxcblx0XHRcdFx0XHRcdFwibGFzdFwiOiAgICAgICB0KFwiZGF0YVRhYmxlcy5wYWdpbmF0ZS5sYXN0XCIpLFxuXHRcdFx0XHRcdFx0XCJuZXh0XCI6ICAgICAgIHQoXCJkYXRhVGFibGVzLnBhZ2luYXRlLm5leHRcIiksXG5cdFx0XHRcdFx0XHRcInByZXZpb3VzXCI6ICAgdChcImRhdGFUYWJsZXMucGFnaW5hdGUucHJldmlvdXNcIilcblx0XHRcdFx0XHRcImFyaWFcIjpcblx0XHRcdFx0XHRcdFwic29ydEFzY2VuZGluZ1wiOiAgdChcImRhdGFUYWJsZXMuYXJpYS5zb3J0QXNjZW5kaW5nXCIpLFxuXHRcdFx0XHRcdFx0XCJzb3J0RGVzY2VuZGluZ1wiOiB0KFwiZGF0YVRhYmxlcy5hcmlhLnNvcnREZXNjZW5kaW5nXCIpXG5cblx0XHRcdF8uZWFjaCBUYWJ1bGFyLnRhYmxlc0J5TmFtZSwgKHRhYmxlKSAtPlxuXHRcdFx0XHRfLmVhY2ggdGFibGUub3B0aW9ucy5jb2x1bW5zLCAoY29sdW1uKSAtPlxuXHRcdFx0XHRcdGlmICghY29sdW1uLmRhdGEgfHwgY29sdW1uLmRhdGEgPT0gXCJfaWRcIilcblx0XHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRcdGlmIHRhYmxlLmNvbGxlY3Rpb25cblx0XHRcdFx0XHRcdGNvbGxOYW1lID0gdGFibGUuY29sbGVjdGlvbi5fbmFtZVxuXHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdGNvbGxOYW1lID0gJydcblx0XHRcdFx0XHRjb2x1bW4uc1RpdGxlID0gdChcIlwiICsgY29sbE5hbWUgKyBcIl9cIiArIGNvbHVtbi5kYXRhLnJlcGxhY2UoL1xcLi9nLFwiX1wiKSk7XG5cdFx0XHRcdFx0aWYgIXRhYmxlLm9wdGlvbnMubGFuZ3VhZ2Vcblx0XHRcdFx0XHRcdHRhYmxlLm9wdGlvbnMubGFuZ3VhZ2UgPSB7fVxuXHRcdFx0XHRcdHRhYmxlLm9wdGlvbnMubGFuZ3VhZ2UuemVyb1JlY29yZHMgPSB0KFwiZGF0YVRhYmxlcy56ZXJvXCIpICsgdChjb2xsTmFtZSlcblx0XHRcdFx0XHRyZXR1cm4gXG5cblxuIiwidmFyIEkxOG4sIGFic29sdXRlVXJsLCBnZXRCcm93c2VyTG9jYWxlLCBpMThuO1xuXG5pMThuID0gcmVxdWlyZSgnbWV0ZW9yL3VuaXZlcnNlOmkxOG4nKS5pMThuO1xuXG5JMThuID0gcmVxdWlyZSgnQHN0ZWVkb3MvaTE4bicpO1xuXG50aGlzLmkxOG4gPSBpMThuO1xuXG50aGlzLnQgPSBJMThuLnQ7XG5cbnRoaXMudHIgPSB0O1xuXG50aGlzLnRybCA9IHQ7XG5cbmFic29sdXRlVXJsID0gZnVuY3Rpb24odXJsKSB7XG4gIHZhciBlLCByb290X3VybDtcbiAgaWYgKHVybCkge1xuICAgIHVybCA9IHVybC5yZXBsYWNlKC9eXFwvLywgXCJcIik7XG4gIH1cbiAgaWYgKE1ldGVvci5pc0NvcmRvdmEpIHtcbiAgICByZXR1cm4gTWV0ZW9yLmFic29sdXRlVXJsKHVybCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKE1ldGVvci5pc0NsaWVudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcm9vdF91cmwgPSBuZXcgVVJMKE1ldGVvci5hYnNvbHV0ZVVybCgpKTtcbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIHJldHVybiByb290X3VybC5wYXRobmFtZSArIHVybDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcm9vdF91cmwucGF0aG5hbWU7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGUgPSBlcnJvcjtcbiAgICAgICAgcmV0dXJuIE1ldGVvci5hYnNvbHV0ZVVybCh1cmwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gTWV0ZW9yLmFic29sdXRlVXJsKHVybCk7XG4gICAgfVxuICB9XG59O1xuXG5pMThuLnNldE9wdGlvbnMoe1xuICBwdXJpZnk6IG51bGwsXG4gIGRlZmF1bHRMb2NhbGU6ICd6aC1DTicsXG4gIGhvc3RVcmw6IGFic29sdXRlVXJsKClcbn0pO1xuXG5pZiAodHlwZW9mIFRBUGkxOG4gIT09IFwidW5kZWZpbmVkXCIgJiYgVEFQaTE4biAhPT0gbnVsbCkge1xuICBUQVBpMThuLl9fb3JpZ2luYWwgPSBUQVBpMThuLl9fO1xuICBUQVBpMThuLl9fID0gZnVuY3Rpb24oa2V5LCBvcHRpb25zLCBsb2NhbGUpIHtcbiAgICB2YXIgdHJhbnNsYXRlZDtcbiAgICB0cmFuc2xhdGVkID0gdChrZXksIG9wdGlvbnMsIGxvY2FsZSk7XG4gICAgaWYgKHRyYW5zbGF0ZWQgIT09IGtleSkge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0ZWQ7XG4gICAgfVxuICAgIHJldHVybiBUQVBpMThuLl9fb3JpZ2luYWwoa2V5LCBvcHRpb25zLCBsb2NhbGUpO1xuICB9O1xuICBUQVBpMThuLl9nZXRMYW5ndWFnZUZpbGVQYXRoID0gZnVuY3Rpb24obGFuZ190YWcpIHtcbiAgICB2YXIgcGF0aDtcbiAgICBwYXRoID0gdGhpcy5jb25mLmNkbl9wYXRoICE9IG51bGwgPyB0aGlzLmNvbmYuY2RuX3BhdGggOiB0aGlzLmNvbmYuaTE4bl9maWxlc19yb3V0ZTtcbiAgICBwYXRoID0gcGF0aC5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG4gICAgaWYgKHBhdGhbMF0gPT09IFwiL1wiKSB7XG4gICAgICBwYXRoID0gYWJzb2x1dGVVcmwoKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpICsgcGF0aDtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGggKyBcIi9cIiArIGxhbmdfdGFnICsgXCIuanNvblwiO1xuICB9O1xufVxuXG5pZiAoTWV0ZW9yLmlzQ2xpZW50KSB7XG4gIGdldEJyb3dzZXJMb2NhbGUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgbCwgbG9jYWxlO1xuICAgIGwgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJMYW5ndWFnZSB8fCB3aW5kb3cubmF2aWdhdG9yLmxhbmd1YWdlIHx8ICdlbic7XG4gICAgaWYgKGwuaW5kZXhPZihcInpoXCIpID49IDApIHtcbiAgICAgIGxvY2FsZSA9IFwiemgtY25cIjtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9jYWxlID0gXCJlbi11c1wiO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYWxlO1xuICB9O1xuICBTaW1wbGVTY2hlbWEucHJvdG90eXBlLmkxOG4gPSBmdW5jdGlvbihwcmVmaXgpIHt9O1xuICBUZW1wbGF0ZS5yZWdpc3RlckhlbHBlcignXycsIGZ1bmN0aW9uKGtleSwgYXJncykge1xuICAgIHJldHVybiBUQVBpMThuLl9fKGtleSwgYXJncyk7XG4gIH0pO1xuICBNZXRlb3Iuc3RhcnR1cChmdW5jdGlvbigpIHtcbiAgICB2YXIgdXNlckxhc3RMb2NhbGU7XG4gICAgVGVtcGxhdGUucmVnaXN0ZXJIZWxwZXIoJ18nLCBmdW5jdGlvbihrZXksIGFyZ3MpIHtcbiAgICAgIHJldHVybiBUQVBpMThuLl9fKGtleSwgYXJncyk7XG4gICAgfSk7XG4gICAgU2Vzc2lvbi5zZXQoXCJzdGVlZG9zLWxvY2FsZVwiLCBnZXRCcm93c2VyTG9jYWxlKCkpO1xuICAgIFRyYWNrZXIuYXV0b3J1bihmdW5jdGlvbigpIHtcbiAgICAgIGlmIChTZXNzaW9uLmdldChcInN0ZWVkb3MtbG9jYWxlXCIpICE9PSBcImVuLXVzXCIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBUQVBpMThuICE9PSBcInVuZGVmaW5lZFwiICYmIFRBUGkxOG4gIT09IG51bGwpIHtcbiAgICAgICAgICBUQVBpMThuLnNldExhbmd1YWdlKFwiemgtQ05cIik7XG4gICAgICAgIH1cbiAgICAgICAgSTE4bi5jaGFuZ2VMYW5ndWFnZShcInpoLUNOXCIsIHtcbiAgICAgICAgICByb290VXJsOiBTdGVlZG9zLmFic29sdXRlVXJsKClcbiAgICAgICAgfSk7XG4gICAgICAgIGkxOG4uc2V0TG9jYWxlKFwiemgtQ05cIik7XG4gICAgICAgIG1vbWVudC5sb2NhbGUoXCJ6aC1jblwiKTtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoXCJtb21lbnRcIikubG9jYWxlKFwiemgtY25cIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodHlwZW9mIFRBUGkxOG4gIT09IFwidW5kZWZpbmVkXCIgJiYgVEFQaTE4biAhPT0gbnVsbCkge1xuICAgICAgICAgIFRBUGkxOG4uc2V0TGFuZ3VhZ2UoXCJlblwiKTtcbiAgICAgICAgfVxuICAgICAgICBJMThuLmNoYW5nZUxhbmd1YWdlKFwiZW5cIiwge1xuICAgICAgICAgIHJvb3RVcmw6IFN0ZWVkb3MuYWJzb2x1dGVVcmwoKVxuICAgICAgICB9KTtcbiAgICAgICAgaTE4bi5zZXRMb2NhbGUoXCJlblwiKTtcbiAgICAgICAgbW9tZW50LmxvY2FsZShcImVuXCIpO1xuICAgICAgICByZXR1cm4gcmVxdWlyZShcIm1vbWVudFwiKS5sb2NhbGUoXCJlblwiKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB1c2VyTGFzdExvY2FsZSA9IG51bGw7XG4gICAgVHJhY2tlci5hdXRvcnVuKGZ1bmN0aW9uKCkge1xuICAgICAgU2Vzc2lvbi5zZXQoXCJzdGVlZG9zLWxvY2FsZVwiLCBcInpoLUNOXCIpO1xuICAgICAgcmV0dXJuIHVzZXJMYXN0TG9jYWxlID0gTWV0ZW9yLnVzZXIoKSA/IE1ldGVvci51c2VyKCkubG9jYWxlID8gKFNlc3Npb24uc2V0KFwic3RlZWRvcy1sb2NhbGVcIiwgTWV0ZW9yLnVzZXIoKS5sb2NhbGUpLCB1c2VyTGFzdExvY2FsZSAmJiB1c2VyTGFzdExvY2FsZSAhPT0gTWV0ZW9yLnVzZXIoKS5sb2NhbGUgPyB3aW5kb3cubG9jYXRpb24ucmVsb2FkKHRydWUpIDogdm9pZCAwLCB1c2VyTGFzdExvY2FsZSA9IE1ldGVvci51c2VyKCkubG9jYWxlKSA6IHZvaWQgMCA6IHZvaWQgMDtcbiAgICB9KTtcbiAgICByZXR1cm4gaTE4bi5vbkNoYW5nZUxvY2FsZShmdW5jdGlvbihuZXdMb2NhbGUpIHtcbiAgICAgICQuZXh0ZW5kKHRydWUsICQuZm4uZGF0YVRhYmxlLmRlZmF1bHRzLCB7XG4gICAgICAgIGxhbmd1YWdlOiB7XG4gICAgICAgICAgXCJkZWNpbWFsXCI6IHQoXCJkYXRhVGFibGVzLmRlY2ltYWxcIiksXG4gICAgICAgICAgXCJlbXB0eVRhYmxlXCI6IHQoXCJkYXRhVGFibGVzLmVtcHR5VGFibGVcIiksXG4gICAgICAgICAgXCJpbmZvXCI6IHQoXCJkYXRhVGFibGVzLmluZm9cIiksXG4gICAgICAgICAgXCJpbmZvRW1wdHlcIjogdChcImRhdGFUYWJsZXMuaW5mb0VtcHR5XCIpLFxuICAgICAgICAgIFwiaW5mb0ZpbHRlcmVkXCI6IHQoXCJkYXRhVGFibGVzLmluZm9GaWx0ZXJlZFwiKSxcbiAgICAgICAgICBcImluZm9Qb3N0Rml4XCI6IHQoXCJkYXRhVGFibGVzLmluZm9Qb3N0Rml4XCIpLFxuICAgICAgICAgIFwidGhvdXNhbmRzXCI6IHQoXCJkYXRhVGFibGVzLnRob3VzYW5kc1wiKSxcbiAgICAgICAgICBcImxlbmd0aE1lbnVcIjogdChcImRhdGFUYWJsZXMubGVuZ3RoTWVudVwiKSxcbiAgICAgICAgICBcImxvYWRpbmdSZWNvcmRzXCI6IHQoXCJkYXRhVGFibGVzLmxvYWRpbmdSZWNvcmRzXCIpLFxuICAgICAgICAgIFwicHJvY2Vzc2luZ1wiOiB0KFwiZGF0YVRhYmxlcy5wcm9jZXNzaW5nXCIpLFxuICAgICAgICAgIFwic2VhcmNoXCI6IHQoXCJkYXRhVGFibGVzLnNlYXJjaFwiKSxcbiAgICAgICAgICBcInplcm9SZWNvcmRzXCI6IHQoXCJkYXRhVGFibGVzLnplcm9SZWNvcmRzXCIpLFxuICAgICAgICAgIFwicGFnaW5hdGVcIjoge1xuICAgICAgICAgICAgXCJmaXJzdFwiOiB0KFwiZGF0YVRhYmxlcy5wYWdpbmF0ZS5maXJzdFwiKSxcbiAgICAgICAgICAgIFwibGFzdFwiOiB0KFwiZGF0YVRhYmxlcy5wYWdpbmF0ZS5sYXN0XCIpLFxuICAgICAgICAgICAgXCJuZXh0XCI6IHQoXCJkYXRhVGFibGVzLnBhZ2luYXRlLm5leHRcIiksXG4gICAgICAgICAgICBcInByZXZpb3VzXCI6IHQoXCJkYXRhVGFibGVzLnBhZ2luYXRlLnByZXZpb3VzXCIpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImFyaWFcIjoge1xuICAgICAgICAgICAgXCJzb3J0QXNjZW5kaW5nXCI6IHQoXCJkYXRhVGFibGVzLmFyaWEuc29ydEFzY2VuZGluZ1wiKSxcbiAgICAgICAgICAgIFwic29ydERlc2NlbmRpbmdcIjogdChcImRhdGFUYWJsZXMuYXJpYS5zb3J0RGVzY2VuZGluZ1wiKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gXy5lYWNoKFRhYnVsYXIudGFibGVzQnlOYW1lLCBmdW5jdGlvbih0YWJsZSkge1xuICAgICAgICByZXR1cm4gXy5lYWNoKHRhYmxlLm9wdGlvbnMuY29sdW1ucywgZnVuY3Rpb24oY29sdW1uKSB7XG4gICAgICAgICAgdmFyIGNvbGxOYW1lO1xuICAgICAgICAgIGlmICghY29sdW1uLmRhdGEgfHwgY29sdW1uLmRhdGEgPT09IFwiX2lkXCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRhYmxlLmNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbGxOYW1lID0gdGFibGUuY29sbGVjdGlvbi5fbmFtZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sbE5hbWUgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29sdW1uLnNUaXRsZSA9IHQoXCJcIiArIGNvbGxOYW1lICsgXCJfXCIgKyBjb2x1bW4uZGF0YS5yZXBsYWNlKC9cXC4vZywgXCJfXCIpKTtcbiAgICAgICAgICBpZiAoIXRhYmxlLm9wdGlvbnMubGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgIHRhYmxlLm9wdGlvbnMubGFuZ3VhZ2UgPSB7fTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGFibGUub3B0aW9ucy5sYW5ndWFnZS56ZXJvUmVjb3JkcyA9IHQoXCJkYXRhVGFibGVzLnplcm9cIikgKyB0KGNvbGxOYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG4iLCJAY2ZzID0ge31cblxuTWV0ZW9yLnN0YXJ0dXAgLT5cbiAgRlMuSFRUUC5zZXRCYXNlVXJsKFwiL2FwaVwiKVxuXG5cbiMg6YCa6L+H5paH5Lu25omp5bGV5ZCN6I635Y+W5paH5Lu2Y29udGVudFR5cGVcbiMgaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2h0bWwvbWltZS10eXBlc1xuIyDlj4LnhadzM+S4iuS8oOmZhOS7tuWQjueahGNvbnRlbnRUeXBlXG5jZnMuZ2V0Q29udGVudFR5cGUgPSAoZmlsZW5hbWUpIC0+XG4gICAgX2V4cCA9IGZpbGVuYW1lLnNwbGl0KCcuJykucG9wKCkudG9Mb3dlckNhc2UoKVxuICAgIGlmICgnLicgKyBfZXhwID09ICcuYXUnKSBcbiAgICAgIHJldHVybiAnYXVkaW8vYmFzaWMnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLmF2aScpIFxuICAgICAgcmV0dXJuICd2aWRlby94LW1zdmlkZW8nXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLmJtcCcpIFxuICAgICAgcmV0dXJuICdpbWFnZS9ibXAnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLmJ6MicpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi94LWJ6aXAyJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5jc3MnKSBcbiAgICAgIHJldHVybiAndGV4dC9jc3MnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLmR0ZCcpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLmRvYycpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9tc3dvcmQnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLmRvY3gnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vbXN3b3JkJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5kb3R4JykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcuZXMnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5leGUnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5naWYnKSBcbiAgICAgIHJldHVybiAnaW1hZ2UvZ2lmJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5neicpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi94LWd6aXAnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLmhxeCcpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9tYWMtYmluaGV4NDAnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLmh0bWwnKSBcbiAgICAgIHJldHVybiAndGV4dC9odG1sJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5qYXInKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24veC1qYXZhLWFyY2hpdmUnXG4gICAgZWxzZSBpZiAoKCcuJyArIF9leHAgPT0gJy5qcGcnKSB8fCAoJy4nICsgX2V4cCA9PSAnLmpwZWcnKSkgXG4gICAgICByZXR1cm4gJ2ltYWdlL2pwZWcnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLmpzJykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcuanNwJykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcubWlkaScpIFxuICAgICAgcmV0dXJuICdhdWRpby9taWRpJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5tcDMnKSBcbiAgICAgIHJldHVybiAnYXVkaW8vbXBlZydcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcubXBlZycpIFxuICAgICAgcmV0dXJuICd2aWRlby9tcGVnJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5vZ2cnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vb2dnJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5wZGYnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vcGRmJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5wbCcpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnBuZycpIFxuICAgICAgcmV0dXJuICdpbWFnZS9wbmcnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnBvdHgnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5wcHN4JykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcucHB0JykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50J1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5wcHR4JykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50J1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5wcycpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0J1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5xdCcpIFxuICAgICAgcmV0dXJuICd2aWRlby9xdWlja3RpbWUnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnJhJykgXG4gICAgICByZXR1cm4gJ2F1ZGlvL3gtcG4tcmVhbGF1ZGlvJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5yYW0nKSBcbiAgICAgIHJldHVybiAnYXVkaW8veC1wbi1yZWFsYXVkaW8nXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnJkZicpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnJ0ZicpIFxuICAgICAgcmV0dXJuICd0ZXh0L3J0ZidcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcuc2dtbCcpIFxuICAgICAgcmV0dXJuICd0ZXh0L3NnbWwnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnNpdCcpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi94LXN0dWZmaXQnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnNsZHgnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy5zdmcnKSBcbiAgICAgIHJldHVybiAnaW1hZ2Uvc3ZnK3htbCdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcuc3dmJykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy50YXIuZ3onKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24veC1nemlwJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy50Z3onKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24veC1jb21wcmVzc2VkJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy50aWZmJykgXG4gICAgICByZXR1cm4gJ2ltYWdlL3RpZmYnXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnRzdicpIFxuICAgICAgcmV0dXJuICd0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy50eHQnKSBcbiAgICAgIHJldHVybiAndGV4dC9wbGFpbidcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcud2F2JykgXG4gICAgICByZXR1cm4gJ2F1ZGlvL3gtd2F2J1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy54bGFtJykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcueGxzJykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcueGxzYicpIFxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nXG4gICAgZWxzZSBpZiAoJy4nICsgX2V4cCA9PSAnLnhsc3gnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy54bHR4JykgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSdcbiAgICBlbHNlIGlmICgnLicgKyBfZXhwID09ICcueG1sJykgXG4gICAgICByZXR1cm4gJ3RleHQveG1sJ1xuICAgIGVsc2UgaWYgKCcuJyArIF9leHAgPT0gJy56aXAnKSBcbiAgICAgIHJldHVybiAnYXBwbGljYXRpb24vemlwJ1xuICAgIGVsc2UgXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSdcbiAgICBcblxuXG4iLCJ0aGlzLmNmcyA9IHt9O1xuXG5NZXRlb3Iuc3RhcnR1cChmdW5jdGlvbigpIHtcbiAgcmV0dXJuIEZTLkhUVFAuc2V0QmFzZVVybChcIi9hcGlcIik7XG59KTtcblxuY2ZzLmdldENvbnRlbnRUeXBlID0gZnVuY3Rpb24oZmlsZW5hbWUpIHtcbiAgdmFyIF9leHA7XG4gIF9leHAgPSBmaWxlbmFtZS5zcGxpdCgnLicpLnBvcCgpLnRvTG93ZXJDYXNlKCk7XG4gIGlmICgnLicgKyBfZXhwID09PSAnLmF1Jykge1xuICAgIHJldHVybiAnYXVkaW8vYmFzaWMnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuYXZpJykge1xuICAgIHJldHVybiAndmlkZW8veC1tc3ZpZGVvJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLmJtcCcpIHtcbiAgICByZXR1cm4gJ2ltYWdlL2JtcCc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5iejInKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi94LWJ6aXAyJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLmNzcycpIHtcbiAgICByZXR1cm4gJ3RleHQvY3NzJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLmR0ZCcpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5kb2MnKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi9tc3dvcmQnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuZG9jeCcpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL21zd29yZCc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5kb3R4Jykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLmVzJykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLmV4ZScpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5naWYnKSB7XG4gICAgcmV0dXJuICdpbWFnZS9naWYnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuZ3onKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi94LWd6aXAnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuaHF4Jykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vbWFjLWJpbmhleDQwJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLmh0bWwnKSB7XG4gICAgcmV0dXJuICd0ZXh0L2h0bWwnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuamFyJykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24veC1qYXZhLWFyY2hpdmUnO1xuICB9IGVsc2UgaWYgKCgnLicgKyBfZXhwID09PSAnLmpwZycpIHx8ICgnLicgKyBfZXhwID09PSAnLmpwZWcnKSkge1xuICAgIHJldHVybiAnaW1hZ2UvanBlZyc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5qcycpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5qc3AnKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcubWlkaScpIHtcbiAgICByZXR1cm4gJ2F1ZGlvL21pZGknO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcubXAzJykge1xuICAgIHJldHVybiAnYXVkaW8vbXBlZyc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5tcGVnJykge1xuICAgIHJldHVybiAndmlkZW8vbXBlZyc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5vZ2cnKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vZ2cnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcucGRmJykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vcGRmJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnBsJykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnBuZycpIHtcbiAgICByZXR1cm4gJ2ltYWdlL3BuZyc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5wb3R4Jykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnBwc3gnKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcucHB0Jykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcucHB0eCcpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnBzJykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5xdCcpIHtcbiAgICByZXR1cm4gJ3ZpZGVvL3F1aWNrdGltZSc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5yYScpIHtcbiAgICByZXR1cm4gJ2F1ZGlvL3gtcG4tcmVhbGF1ZGlvJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnJhbScpIHtcbiAgICByZXR1cm4gJ2F1ZGlvL3gtcG4tcmVhbGF1ZGlvJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnJkZicpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5ydGYnKSB7XG4gICAgcmV0dXJuICd0ZXh0L3J0Zic7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5zZ21sJykge1xuICAgIHJldHVybiAndGV4dC9zZ21sJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnNpdCcpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3gtc3R1ZmZpdCc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy5zbGR4Jykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnN2ZycpIHtcbiAgICByZXR1cm4gJ2ltYWdlL3N2Zyt4bWwnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuc3dmJykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcudGFyLmd6Jykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24veC1nemlwJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnRneicpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3gtY29tcHJlc3NlZCc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy50aWZmJykge1xuICAgIHJldHVybiAnaW1hZ2UvdGlmZic7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy50c3YnKSB7XG4gICAgcmV0dXJuICd0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnR4dCcpIHtcbiAgICByZXR1cm4gJ3RleHQvcGxhaW4nO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcud2F2Jykge1xuICAgIHJldHVybiAnYXVkaW8veC13YXYnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcueGxhbScpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy54bHMnKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcueGxzYicpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gIH0gZWxzZSBpZiAoJy4nICsgX2V4cCA9PT0gJy54bHN4Jykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJztcbiAgfSBlbHNlIGlmICgnLicgKyBfZXhwID09PSAnLnhsdHgnKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcueG1sJykge1xuICAgIHJldHVybiAndGV4dC94bWwnO1xuICB9IGVsc2UgaWYgKCcuJyArIF9leHAgPT09ICcuemlwJykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vemlwJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gIH1cbn07XG4iLCJGUy5TdG9yYWdlQWRhcHRlci5wcm90b3R5cGUub24gJ2Vycm9yJywgKHN0b3JlTmFtZSwgZXJyb3IsIGZpbGVPYmopLT5cbiAgY29uc29sZS5lcnJvcihcIkZTLlN0b3JhZ2VBZGFwdGVyIGVtaXQgZXJyb3JcIilcbiAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgY29uc29sZS5lcnJvcihmaWxlT2JqKVxuICBjb25zb2xlLmVycm9yKHN0b3JlTmFtZSlcblxuRlMuQ29sbGVjdGlvbi5wcm90b3R5cGUub24gJ2Vycm9yJywgKGVycm9yLCBmaWxlT2JqLCBzdG9yZU5hbWUpLT5cbiAgY29uc29sZS5lcnJvcihcIkZTLkNvbGxlY3Rpb24gZW1pdCBlcnJvclwiKVxuICBjb25zb2xlLmVycm9yKGVycm9yKVxuICBjb25zb2xlLmVycm9yKGZpbGVPYmopXG4gIGNvbnNvbGUuZXJyb3Ioc3RvcmVOYW1lKSIsIkZTLlN0b3JhZ2VBZGFwdGVyLnByb3RvdHlwZS5vbignZXJyb3InLCBmdW5jdGlvbihzdG9yZU5hbWUsIGVycm9yLCBmaWxlT2JqKSB7XG4gIGNvbnNvbGUuZXJyb3IoXCJGUy5TdG9yYWdlQWRhcHRlciBlbWl0IGVycm9yXCIpO1xuICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgY29uc29sZS5lcnJvcihmaWxlT2JqKTtcbiAgcmV0dXJuIGNvbnNvbGUuZXJyb3Ioc3RvcmVOYW1lKTtcbn0pO1xuXG5GUy5Db2xsZWN0aW9uLnByb3RvdHlwZS5vbignZXJyb3InLCBmdW5jdGlvbihlcnJvciwgZmlsZU9iaiwgc3RvcmVOYW1lKSB7XG4gIGNvbnNvbGUuZXJyb3IoXCJGUy5Db2xsZWN0aW9uIGVtaXQgZXJyb3JcIik7XG4gIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICBjb25zb2xlLmVycm9yKGZpbGVPYmopO1xuICByZXR1cm4gY29uc29sZS5lcnJvcihzdG9yZU5hbWUpO1xufSk7XG4iLCJzdG9yZXMgPSBbJ2F2YXRhcnMnLCAnYXVkaW9zJywgJ2ltYWdlcycsICd2aWRlb3MnLCAnZmlsZXMnXVxuXG5fLmVhY2ggc3RvcmVzLCAoc3RvcmVfbmFtZSktPlxuICAgIGZpbGVfc3RvcmVcbiAgICBpZiBNZXRlb3Iuc2V0dGluZ3MucHVibGljLmNmcz8uc3RvcmUgPT0gXCJPU1NcIlxuICAgICAgICBpZiBNZXRlb3IuaXNDbGllbnRcbiAgICAgICAgICAgIGZpbGVfc3RvcmUgPSBuZXcgRlMuU3RvcmUuT1NTKHN0b3JlX25hbWUpXG4gICAgICAgIGVsc2UgaWYgTWV0ZW9yLmlzU2VydmVyXG4gICAgICAgICAgICBmaWxlX3N0b3JlID0gbmV3IEZTLlN0b3JlLk9TUyBzdG9yZV9uYW1lLCBNZXRlb3Iuc2V0dGluZ3MuY2ZzLmFsaXl1blxuXG4gICAgZWxzZSBpZiBNZXRlb3Iuc2V0dGluZ3MucHVibGljLmNmcz8uc3RvcmUgPT0gXCJTM1wiXG4gICAgICAgIGlmIE1ldGVvci5pc0NsaWVudFxuICAgICAgICAgICAgZmlsZV9zdG9yZSA9IG5ldyBGUy5TdG9yZS5TMyhzdG9yZV9uYW1lKVxuICAgICAgICBlbHNlIGlmIE1ldGVvci5pc1NlcnZlclxuICAgICAgICAgICAgZmlsZV9zdG9yZSA9IG5ldyBGUy5TdG9yZS5TMyBzdG9yZV9uYW1lLCBNZXRlb3Iuc2V0dGluZ3MuY2ZzLmF3c1xuXG4gICAgZWxzZSBpZiBNZXRlb3Iuc2V0dGluZ3MucHVibGljLmNmcz8uc3RvcmUgPT0gXCJTVEVFRE9TQ0xPVURcIlxuICAgICAgICBpZiBNZXRlb3IuaXNDbGllbnRcbiAgICAgICAgICAgIGZpbGVfc3RvcmUgPSBuZXcgRlMuU3RvcmUuU1RFRURPU0NMT1VEKHN0b3JlX25hbWUpXG4gICAgICAgIGVsc2UgaWYgTWV0ZW9yLmlzU2VydmVyXG4gICAgICAgICAgICBmaWxlX3N0b3JlID0gbmV3IEZTLlN0b3JlLlNURUVET1NDTE9VRCBzdG9yZV9uYW1lLCBNZXRlb3Iuc2V0dGluZ3MuY2ZzLnN0ZWVkb3NDbG91ZFxuICAgIGVsc2VcbiAgICAgICAgaWYgTWV0ZW9yLmlzQ2xpZW50XG4gICAgICAgICAgICBmaWxlX3N0b3JlID0gbmV3IEZTLlN0b3JlLkZpbGVTeXN0ZW0oc3RvcmVfbmFtZSlcbiAgICAgICAgZWxzZSBpZiBNZXRlb3IuaXNTZXJ2ZXJcbiAgICAgICAgICAgIGZpbGVfc3RvcmUgPSBuZXcgRlMuU3RvcmUuRmlsZVN5c3RlbShzdG9yZV9uYW1lLCB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IHJlcXVpcmUoJ3BhdGgnKS5qb2luKHByb2Nlc3MuZW52LlNURUVET1NfU1RPUkFHRV9ESVIsIFwiZmlsZXMvI3tzdG9yZV9uYW1lfVwiKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsZUtleU1ha2VyOiAoZmlsZU9iaiktPlxuICAgICAgICAgICAgICAgICAgICAgICAgIyBMb29rdXAgdGhlIGNvcHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlID0gZmlsZU9iaiBhbmQgZmlsZU9iai5fZ2V0SW5mbyhzdG9yZV9uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB0aGUgc3RvcmUgYW5kIGtleSBpcyBmb3VuZCByZXR1cm4gdGhlIGtleVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RvcmUgYW5kIHN0b3JlLmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdG9yZS5rZXlcblxuICAgICAgICAgICAgICAgICAgICAgICAgIyBUTyBDVVNUT01JWkUsIFJFUExBQ0UgQ09ERSBBRlRFUiBUSElTIFBPSU5UXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZU9iai5uYW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZUluU3RvcmUgPSBmaWxlT2JqLm5hbWUoe3N0b3JlOiBzdG9yZV9uYW1lfSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEgPSBmaWxlT2JqLm1ldGFkYXRhIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0TmFtZSA9IG1ldGFkYXRhLm9iamVjdF9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Rm9sZFBhdGggPSAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2JqZWN0TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RGb2xkUGF0aCA9IG9iamVjdE5hbWUgKyAnLydcblxuICAgICAgICAgICAgICAgICAgICAgICAgbm93ID0gbmV3IERhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHllYXIgPSBub3cuZ2V0RnVsbFllYXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgbW9udGggPSBub3cuZ2V0TW9udGgoKSArIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggPSByZXF1aXJlKCdwYXRoJylcbiAgICAgICAgICAgICAgICAgICAgICAgIG1rZGlycCA9IHJlcXVpcmUoJ21rZGlycCcpXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSA9IHBhdGguam9pbihwcm9jZXNzLmVudi5TVEVFRE9TX1NUT1JBR0VfRElSLCBcImZpbGVzLyN7c3RvcmVfbmFtZX0vXCIgKyBvYmplY3RGb2xkUGF0aCArIHllYXIgKyAnLycgKyBtb250aClcbiAgICAgICAgICAgICAgICAgICAgICAgICMgU2V0IGFic29sdXRlIHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGFic29sdXRlUGF0aCA9IHBhdGgucmVzb2x2ZShwYXRobmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICMgRW5zdXJlIHRoZSBwYXRoIGV4aXN0c1xuICAgICAgICAgICAgICAgICAgICAgICAgbWtkaXJwLnN5bmMoYWJzb2x1dGVQYXRoKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAjIElmIG5vIHN0b3JlIGtleSBmb3VuZCB3ZSByZXNvbHZlIC8gZ2VuZXJhdGUgYSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3RGb2xkUGF0aCArIHllYXIgKyAnLycgKyBtb250aCArICcvJyArIGZpbGVPYmouY29sbGVjdGlvbk5hbWUgKyAnLScgKyBmaWxlT2JqLl9pZCArICctJyArIChmaWxlbmFtZUluU3RvcmUgfHwgZmlsZW5hbWUpXG5cbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgaWYgc3RvcmVfbmFtZSA9PSAnYXVkaW9zJ1xuICAgICAgICBjZnNbc3RvcmVfbmFtZV0gPSBuZXcgRlMuQ29sbGVjdGlvbiBzdG9yZV9uYW1lLFxuICAgICAgICAgICAgc3RvcmVzOiBbZmlsZV9zdG9yZV0sXG4gICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICBhbGxvdzoge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZXM6IFsnYXVkaW8vKiddICMgYWxsb3cgb25seSBhdWRpb3MgaW4gdGhpcyBGUy5Db2xsZWN0aW9uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIGVsc2UgaWYgc3RvcmVfbmFtZSA9PSAnaW1hZ2VzJyB8fCBzdG9yZV9uYW1lID09ICdhdmF0YXJzJ1xuICAgICAgICBjZnNbc3RvcmVfbmFtZV0gPSBuZXcgRlMuQ29sbGVjdGlvbiBzdG9yZV9uYW1lLFxuICAgICAgICAgICAgc3RvcmVzOiBbZmlsZV9zdG9yZV0sXG4gICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICBhbGxvdzoge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZXM6IFsnaW1hZ2UvKiddICMgYWxsb3cgb25seSBpbWFnZXMgaW4gdGhpcyBGUy5Db2xsZWN0aW9uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIGVsc2UgaWYgc3RvcmVfbmFtZSA9PSAndmlkZW9zJ1xuICAgICAgICBjZnNbc3RvcmVfbmFtZV0gPSBuZXcgRlMuQ29sbGVjdGlvbiBzdG9yZV9uYW1lLFxuICAgICAgICAgICAgc3RvcmVzOiBbZmlsZV9zdG9yZV0sXG4gICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICBhbGxvdzoge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZXM6IFsndmlkZW8vKiddICMgYWxsb3cgb25seSB2aWRlb3MgaW4gdGhpcyBGUy5Db2xsZWN0aW9uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIGVsc2VcbiAgICAgICAgY2ZzW3N0b3JlX25hbWVdID0gbmV3IEZTLkNvbGxlY3Rpb24gc3RvcmVfbmFtZSxcbiAgICAgICAgICAgIHN0b3JlczogW2ZpbGVfc3RvcmVdXG5cbiAgICBjZnNbc3RvcmVfbmFtZV0uYWxsb3dcbiAgICAgICAgaW5zZXJ0OiAtPlxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgdXBkYXRlOiAtPlxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgcmVtb3ZlOiAtPlxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgZG93bmxvYWQ6IC0+XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuXG4gICAgaWYgc3RvcmVfbmFtZSA9PSAnYXZhdGFycydcbiAgICAgICAgZGJbc3RvcmVfbmFtZV0gPSBjZnNbc3RvcmVfbmFtZV1cbiAgICAgICAgZGJbc3RvcmVfbmFtZV0uZmlsZXMuYmVmb3JlLmluc2VydCAodXNlcklkLCBkb2MpIC0+XG4gICAgICAgICAgICBkb2MudXNlcklkID0gdXNlcklkXG5cbiAgICBpZiBzdG9yZV9uYW1lID09ICdmaWxlcydcbiAgICAgICAgZGJbXCJjZnMuI3tzdG9yZV9uYW1lfS5maWxlcmVjb3JkXCJdID0gY2ZzW3N0b3JlX25hbWVdLmZpbGVzIiwidmFyIHN0b3Jlcztcblxuc3RvcmVzID0gWydhdmF0YXJzJywgJ2F1ZGlvcycsICdpbWFnZXMnLCAndmlkZW9zJywgJ2ZpbGVzJ107XG5cbl8uZWFjaChzdG9yZXMsIGZ1bmN0aW9uKHN0b3JlX25hbWUpIHtcbiAgZmlsZV9zdG9yZTtcbiAgdmFyIGZpbGVfc3RvcmUsIHJlZiwgcmVmMSwgcmVmMjtcbiAgaWYgKCgocmVmID0gTWV0ZW9yLnNldHRpbmdzW1wicHVibGljXCJdLmNmcykgIT0gbnVsbCA/IHJlZi5zdG9yZSA6IHZvaWQgMCkgPT09IFwiT1NTXCIpIHtcbiAgICBpZiAoTWV0ZW9yLmlzQ2xpZW50KSB7XG4gICAgICBmaWxlX3N0b3JlID0gbmV3IEZTLlN0b3JlLk9TUyhzdG9yZV9uYW1lKTtcbiAgICB9IGVsc2UgaWYgKE1ldGVvci5pc1NlcnZlcikge1xuICAgICAgZmlsZV9zdG9yZSA9IG5ldyBGUy5TdG9yZS5PU1Moc3RvcmVfbmFtZSwgTWV0ZW9yLnNldHRpbmdzLmNmcy5hbGl5dW4pO1xuICAgIH1cbiAgfSBlbHNlIGlmICgoKHJlZjEgPSBNZXRlb3Iuc2V0dGluZ3NbXCJwdWJsaWNcIl0uY2ZzKSAhPSBudWxsID8gcmVmMS5zdG9yZSA6IHZvaWQgMCkgPT09IFwiUzNcIikge1xuICAgIGlmIChNZXRlb3IuaXNDbGllbnQpIHtcbiAgICAgIGZpbGVfc3RvcmUgPSBuZXcgRlMuU3RvcmUuUzMoc3RvcmVfbmFtZSk7XG4gICAgfSBlbHNlIGlmIChNZXRlb3IuaXNTZXJ2ZXIpIHtcbiAgICAgIGZpbGVfc3RvcmUgPSBuZXcgRlMuU3RvcmUuUzMoc3RvcmVfbmFtZSwgTWV0ZW9yLnNldHRpbmdzLmNmcy5hd3MpO1xuICAgIH1cbiAgfSBlbHNlIGlmICgoKHJlZjIgPSBNZXRlb3Iuc2V0dGluZ3NbXCJwdWJsaWNcIl0uY2ZzKSAhPSBudWxsID8gcmVmMi5zdG9yZSA6IHZvaWQgMCkgPT09IFwiU1RFRURPU0NMT1VEXCIpIHtcbiAgICBpZiAoTWV0ZW9yLmlzQ2xpZW50KSB7XG4gICAgICBmaWxlX3N0b3JlID0gbmV3IEZTLlN0b3JlLlNURUVET1NDTE9VRChzdG9yZV9uYW1lKTtcbiAgICB9IGVsc2UgaWYgKE1ldGVvci5pc1NlcnZlcikge1xuICAgICAgZmlsZV9zdG9yZSA9IG5ldyBGUy5TdG9yZS5TVEVFRE9TQ0xPVUQoc3RvcmVfbmFtZSwgTWV0ZW9yLnNldHRpbmdzLmNmcy5zdGVlZG9zQ2xvdWQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoTWV0ZW9yLmlzQ2xpZW50KSB7XG4gICAgICBmaWxlX3N0b3JlID0gbmV3IEZTLlN0b3JlLkZpbGVTeXN0ZW0oc3RvcmVfbmFtZSk7XG4gICAgfSBlbHNlIGlmIChNZXRlb3IuaXNTZXJ2ZXIpIHtcbiAgICAgIGZpbGVfc3RvcmUgPSBuZXcgRlMuU3RvcmUuRmlsZVN5c3RlbShzdG9yZV9uYW1lLCB7XG4gICAgICAgIHBhdGg6IHJlcXVpcmUoJ3BhdGgnKS5qb2luKHByb2Nlc3MuZW52LlNURUVET1NfU1RPUkFHRV9ESVIsIFwiZmlsZXMvXCIgKyBzdG9yZV9uYW1lKSxcbiAgICAgICAgZmlsZUtleU1ha2VyOiBmdW5jdGlvbihmaWxlT2JqKSB7XG4gICAgICAgICAgdmFyIGFic29sdXRlUGF0aCwgZmlsZW5hbWUsIGZpbGVuYW1lSW5TdG9yZSwgbWV0YWRhdGEsIG1rZGlycCwgbW9udGgsIG5vdywgb2JqZWN0Rm9sZFBhdGgsIG9iamVjdE5hbWUsIHBhdGgsIHBhdGhuYW1lLCBzdG9yZSwgeWVhcjtcbiAgICAgICAgICBzdG9yZSA9IGZpbGVPYmogJiYgZmlsZU9iai5fZ2V0SW5mbyhzdG9yZV9uYW1lKTtcbiAgICAgICAgICBpZiAoc3RvcmUgJiYgc3RvcmUua2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUua2V5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVPYmoubmFtZSgpO1xuICAgICAgICAgIGZpbGVuYW1lSW5TdG9yZSA9IGZpbGVPYmoubmFtZSh7XG4gICAgICAgICAgICBzdG9yZTogc3RvcmVfbmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG1ldGFkYXRhID0gZmlsZU9iai5tZXRhZGF0YSB8fCB7fTtcbiAgICAgICAgICBvYmplY3ROYW1lID0gbWV0YWRhdGEub2JqZWN0X25hbWU7XG4gICAgICAgICAgb2JqZWN0Rm9sZFBhdGggPSAnJztcbiAgICAgICAgICBpZiAob2JqZWN0TmFtZSkge1xuICAgICAgICAgICAgb2JqZWN0Rm9sZFBhdGggPSBvYmplY3ROYW1lICsgJy8nO1xuICAgICAgICAgIH1cbiAgICAgICAgICBub3cgPSBuZXcgRGF0ZTtcbiAgICAgICAgICB5ZWFyID0gbm93LmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgbW9udGggPSBub3cuZ2V0TW9udGgoKSArIDE7XG4gICAgICAgICAgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbiAgICAgICAgICBta2RpcnAgPSByZXF1aXJlKCdta2RpcnAnKTtcbiAgICAgICAgICBwYXRobmFtZSA9IHBhdGguam9pbihwcm9jZXNzLmVudi5TVEVFRE9TX1NUT1JBR0VfRElSLCAoXCJmaWxlcy9cIiArIHN0b3JlX25hbWUgKyBcIi9cIikgKyBvYmplY3RGb2xkUGF0aCArIHllYXIgKyAnLycgKyBtb250aCk7XG4gICAgICAgICAgYWJzb2x1dGVQYXRoID0gcGF0aC5yZXNvbHZlKHBhdGhuYW1lKTtcbiAgICAgICAgICBta2RpcnAuc3luYyhhYnNvbHV0ZVBhdGgpO1xuICAgICAgICAgIHJldHVybiBvYmplY3RGb2xkUGF0aCArIHllYXIgKyAnLycgKyBtb250aCArICcvJyArIGZpbGVPYmouY29sbGVjdGlvbk5hbWUgKyAnLScgKyBmaWxlT2JqLl9pZCArICctJyArIChmaWxlbmFtZUluU3RvcmUgfHwgZmlsZW5hbWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgaWYgKHN0b3JlX25hbWUgPT09ICdhdWRpb3MnKSB7XG4gICAgY2ZzW3N0b3JlX25hbWVdID0gbmV3IEZTLkNvbGxlY3Rpb24oc3RvcmVfbmFtZSwge1xuICAgICAgc3RvcmVzOiBbZmlsZV9zdG9yZV0sXG4gICAgICBmaWx0ZXI6IHtcbiAgICAgICAgYWxsb3c6IHtcbiAgICAgICAgICBjb250ZW50VHlwZXM6IFsnYXVkaW8vKiddXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIGlmIChzdG9yZV9uYW1lID09PSAnaW1hZ2VzJyB8fCBzdG9yZV9uYW1lID09PSAnYXZhdGFycycpIHtcbiAgICBjZnNbc3RvcmVfbmFtZV0gPSBuZXcgRlMuQ29sbGVjdGlvbihzdG9yZV9uYW1lLCB7XG4gICAgICBzdG9yZXM6IFtmaWxlX3N0b3JlXSxcbiAgICAgIGZpbHRlcjoge1xuICAgICAgICBhbGxvdzoge1xuICAgICAgICAgIGNvbnRlbnRUeXBlczogWydpbWFnZS8qJ11cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKHN0b3JlX25hbWUgPT09ICd2aWRlb3MnKSB7XG4gICAgY2ZzW3N0b3JlX25hbWVdID0gbmV3IEZTLkNvbGxlY3Rpb24oc3RvcmVfbmFtZSwge1xuICAgICAgc3RvcmVzOiBbZmlsZV9zdG9yZV0sXG4gICAgICBmaWx0ZXI6IHtcbiAgICAgICAgYWxsb3c6IHtcbiAgICAgICAgICBjb250ZW50VHlwZXM6IFsndmlkZW8vKiddXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjZnNbc3RvcmVfbmFtZV0gPSBuZXcgRlMuQ29sbGVjdGlvbihzdG9yZV9uYW1lLCB7XG4gICAgICBzdG9yZXM6IFtmaWxlX3N0b3JlXVxuICAgIH0pO1xuICB9XG4gIGNmc1tzdG9yZV9uYW1lXS5hbGxvdyh7XG4gICAgaW5zZXJ0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgdXBkYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZG93bmxvYWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbiAgaWYgKHN0b3JlX25hbWUgPT09ICdhdmF0YXJzJykge1xuICAgIGRiW3N0b3JlX25hbWVdID0gY2ZzW3N0b3JlX25hbWVdO1xuICAgIGRiW3N0b3JlX25hbWVdLmZpbGVzLmJlZm9yZS5pbnNlcnQoZnVuY3Rpb24odXNlcklkLCBkb2MpIHtcbiAgICAgIHJldHVybiBkb2MudXNlcklkID0gdXNlcklkO1xuICAgIH0pO1xuICB9XG4gIGlmIChzdG9yZV9uYW1lID09PSAnZmlsZXMnKSB7XG4gICAgcmV0dXJuIGRiW1wiY2ZzLlwiICsgc3RvcmVfbmFtZSArIFwiLmZpbGVyZWNvcmRcIl0gPSBjZnNbc3RvcmVfbmFtZV0uZmlsZXM7XG4gIH1cbn0pO1xuIl19 diff --git a/server/bundle/programs/server/packages/steedos_objects-core.js.map b/server/bundle/programs/server/packages/steedos_objects-core.js.map index afa1840128..e902b1b9c2 100644 --- a/server/bundle/programs/server/packages/steedos_objects-core.js.map +++ b/server/bundle/programs/server/packages/steedos_objects-core.js.map @@ -1 +1 @@ -{"version":3,"sources":["meteor://💻app/packages/steedos_objects-core/i18n.coffee","meteor://💻app/i18n.coffee","meteor://💻app/packages/steedos_objects-core/cfs/cfs.coffee","meteor://💻app/cfs/cfs.coffee","meteor://💻app/packages/steedos_objects-core/cfs/cfs_fix.coffee","meteor://💻app/cfs/cfs_fix.coffee","meteor://💻app/packages/steedos_objects-core/cfs/stores.coffee","meteor://💻app/cfs/stores.coffee"],"names":["I18n","absoluteUrl","getBrowserLocale","i18n","require","t","tr","trl","url","e","root_url","replace","Meteor","isCordova","isClient","URL","pathname","error","setOptions","purify","defaultLocale","hostUrl","TAPi18n","__original","__","key","options","locale","translated","_getLanguageFilePath","lang_tag","path","conf","cdn_path","i18n_files_route","l","window","navigator","userLanguage","language","indexOf","SimpleSchema","prototype","prefix","Template","registerHelper","args","startup","userLastLocale","Session","set","Tracker","autorun","get","setLanguage","changeLanguage","rootUrl","Steedos","setLocale","moment","user","location","reload","onChangeLocale","newLocale","$","extend","fn","dataTable","defaults","_","each","Tabular","tablesByName","table","columns","column","collName","data","collection","_name","sTitle","zeroRecords","cfs","FS","HTTP","setBaseUrl","getContentType","filename","_exp","split","pop","toLowerCase","StorageAdapter","on","storeName","fileObj","console","Collection","stores","store_name","file_store","ref","ref1","ref2","settings","store","Store","OSS","isServer","aliyun","S3","aws","STEEDOSCLOUD","steedosCloud","FileSystem","join","process","env","STEEDOS_STORAGE_DIR","fileKeyMaker","absolutePath","filenameInStore","mkdirp","month","now","year","_getInfo","name","Date","getFullYear","getMonth","resolve","sync","collectionName","_id","filter","allow","contentTypes","insert","update","remove","download","db","files","before","userId","doc"],"mappings":"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","file":"/packages/steedos_objects-core.js","sourcesContent":["i18n = require('meteor/universe:i18n').i18n;\nI18n = require('@steedos/i18n');\n@i18n = i18n;\n\n@t = I18n.t\n\n@tr = t\n\n@trl = t\n\nabsoluteUrl = (url)->\n\tif url\n\t\t# url以\"/\"开头的话,去掉开头的\"/\"\n\t\turl = url.replace(/^\\//,\"\")\n\tif (Meteor.isCordova)\n\t\treturn Meteor.absoluteUrl(url);\n\telse\n\t\tif Meteor.isClient\n\t\t\ttry\n\t\t\t\troot_url = new URL(Meteor.absoluteUrl())\n\t\t\t\tif url\n\t\t\t\t\treturn root_url.pathname + url\n\t\t\t\telse\n\t\t\t\t\treturn root_url.pathname\n\t\t\tcatch e\n\t\t\t\treturn Meteor.absoluteUrl(url)\n\t\telse\n\t\t\tMeteor.absoluteUrl(url)\n# 重写tap:i18n函数,向后兼容\ni18n.setOptions\n\tpurify: null\n\tdefaultLocale: 'zh-CN'\n\thostUrl: absoluteUrl()\n\nif TAPi18n?\n\tTAPi18n.__original = TAPi18n.__\n\n\tTAPi18n.__ = (key, options, locale)->\n\t\ttranslated = t(key, options, locale);\n\t\tif translated != key\n\t\t\treturn translated\n\n\t\t# i18n 翻译不出来,尝试用 tap:i18n 翻译 TODO remove\n\t\treturn TAPi18n.__original key, options, locale\n\n\tTAPi18n._getLanguageFilePath = (lang_tag) ->\n\n\t\tpath = if @.conf.cdn_path? then @.conf.cdn_path else @.conf.i18n_files_route\n\t\tpath = path.replace /\\/$/, \"\"\n\t\tif path[0] == \"/\"\n\t\t\tpath = absoluteUrl().replace(/\\/+$/, \"\") + path\n\n\t\treturn \"#{path}/#{lang_tag}.json\"\n\nif Meteor.isClient\n\tgetBrowserLocale = ()->\n\t\tl = window.navigator.userLanguage || window.navigator.language || 'en'\n\t\tif l.indexOf(\"zh\") >=0\n\t\t\tlocale = \"zh-cn\"\n\t\telse\n\t\t\tlocale = \"en-us\"\n\t\treturn locale\n\n\n\t# 停用业务对象翻译 此函数已弃用\n\tSimpleSchema.prototype.i18n = (prefix) ->\n\t\treturn\n\n\tTemplate.registerHelper '_', (key, args)->\n\t\treturn TAPi18n.__(key, args);\n\n\tMeteor.startup ->\n\n\t\tTemplate.registerHelper '_', (key, args)->\n\t\t\treturn TAPi18n.__(key, args);\n\n\t\tSession.set(\"steedos-locale\", getBrowserLocale())\n\n\t\tTracker.autorun ()->\n\t\t\tif Session.get(\"steedos-locale\") != \"en-us\"\n\t\t\t\tif TAPi18n?\n\t\t\t\t\tTAPi18n.setLanguage(\"zh-CN\")\n\t\t\t\tI18n.changeLanguage(\"zh-CN\", {rootUrl: Steedos.absoluteUrl() })\n\t\t\t\ti18n.setLocale(\"zh-CN\")\n\t\t\t\tmoment.locale(\"zh-cn\")\n\t\t\t\trequire(\"moment\").locale(\"zh-cn\")\n\t\t\telse\n\t\t\t\tif TAPi18n?\n\t\t\t\t\tTAPi18n.setLanguage(\"en\")\n\t\t\t\tI18n.changeLanguage(\"en\", {rootUrl: Steedos.absoluteUrl() })\n\t\t\t\ti18n.setLocale(\"en\")\n\t\t\t\tmoment.locale(\"en\")\n\t\t\t\trequire(\"moment\").locale(\"en\")\n\t\tuserLastLocale = null\n\t\tTracker.autorun ()->\n\t\t\tSession.set(\"steedos-locale\", \"zh-CN\")\n\t\t\tuserLastLocale =\n\t\t\tif Meteor.user()\n\t\t\t\tif Meteor.user().locale\n\t\t\t\t\tSession.set(\"steedos-locale\", Meteor.user().locale);\n\t\t\t\t\tif userLastLocale && userLastLocale != Meteor.user().locale\n\t\t\t\t\t\twindow.location.reload(true);\n\t\t\t\t\tuserLastLocale = Meteor.user().locale\n\n\t\ti18n.onChangeLocale (newLocale)->\n\n\t\t\t$.extend true, $.fn.dataTable.defaults,\n\t\t\t\tlanguage:\n\t\t\t\t\t\"decimal\": t(\"dataTables.decimal\"),\n\t\t\t\t\t\"emptyTable\": t(\"dataTables.emptyTable\"),\n\t\t\t\t\t\"info\": t(\"dataTables.info\"),\n\t\t\t\t\t\"infoEmpty\": t(\"dataTables.infoEmpty\"),\n\t\t\t\t\t\"infoFiltered\": t(\"dataTables.infoFiltered\"),\n\t\t\t\t\t\"infoPostFix\": t(\"dataTables.infoPostFix\"),\n\t\t\t\t\t\"thousands\": t(\"dataTables.thousands\"),\n\t\t\t\t\t\"lengthMenu\": t(\"dataTables.lengthMenu\"),\n\t\t\t\t\t\"loadingRecords\": t(\"dataTables.loadingRecords\"),\n\t\t\t\t\t\"processing\": t(\"dataTables.processing\"),\n\t\t\t\t\t\"search\": t(\"dataTables.search\"),\n\t\t\t\t\t\"zeroRecords\": t(\"dataTables.zeroRecords\"),\n\t\t\t\t\t\"paginate\":\n\t\t\t\t\t\t\"first\": t(\"dataTables.paginate.first\"),\n\t\t\t\t\t\t\"last\": t(\"dataTables.paginate.last\"),\n\t\t\t\t\t\t\"next\": t(\"dataTables.paginate.next\"),\n\t\t\t\t\t\t\"previous\": t(\"dataTables.paginate.previous\")\n\t\t\t\t\t\"aria\":\n\t\t\t\t\t\t\"sortAscending\": t(\"dataTables.aria.sortAscending\"),\n\t\t\t\t\t\t\"sortDescending\": t(\"dataTables.aria.sortDescending\")\n\n\t\t\t_.each Tabular.tablesByName, (table) ->\n\t\t\t\t_.each table.options.columns, (column) ->\n\t\t\t\t\tif (!column.data || column.data == \"_id\")\n\t\t\t\t\t\treturn\n\t\t\t\t\tif table.collection\n\t\t\t\t\t\tcollName = table.collection._name\n\t\t\t\t\telse\n\t\t\t\t\t\tcollName = ''\n\t\t\t\t\tcolumn.sTitle = t(\"\" + collName + \"_\" + column.data.replace(/\\./g,\"_\"));\n\t\t\t\t\tif !table.options.language\n\t\t\t\t\t\ttable.options.language = {}\n\t\t\t\t\ttable.options.language.zeroRecords = t(\"dataTables.zero\") + t(collName)\n\t\t\t\t\treturn \n\n\n","var I18n, absoluteUrl, getBrowserLocale, i18n;\n\ni18n = require('meteor/universe:i18n').i18n;\n\nI18n = require('@steedos/i18n');\n\nthis.i18n = i18n;\n\nthis.t = I18n.t;\n\nthis.tr = t;\n\nthis.trl = t;\n\nabsoluteUrl = function(url) {\n var e, root_url;\n if (url) {\n url = url.replace(/^\\//, \"\");\n }\n if (Meteor.isCordova) {\n return Meteor.absoluteUrl(url);\n } else {\n if (Meteor.isClient) {\n try {\n root_url = new URL(Meteor.absoluteUrl());\n if (url) {\n return root_url.pathname + url;\n } else {\n return root_url.pathname;\n }\n } catch (error) {\n e = error;\n return Meteor.absoluteUrl(url);\n }\n } else {\n return Meteor.absoluteUrl(url);\n }\n }\n};\n\ni18n.setOptions({\n purify: null,\n defaultLocale: 'zh-CN',\n hostUrl: absoluteUrl()\n});\n\nif (typeof TAPi18n !== \"undefined\" && TAPi18n !== null) {\n TAPi18n.__original = TAPi18n.__;\n TAPi18n.__ = function(key, options, locale) {\n var translated;\n translated = t(key, options, locale);\n if (translated !== key) {\n return translated;\n }\n return TAPi18n.__original(key, options, locale);\n };\n TAPi18n._getLanguageFilePath = function(lang_tag) {\n var path;\n path = this.conf.cdn_path != null ? this.conf.cdn_path : this.conf.i18n_files_route;\n path = path.replace(/\\/$/, \"\");\n if (path[0] === \"/\") {\n path = absoluteUrl().replace(/\\/+$/, \"\") + path;\n }\n return path + \"/\" + lang_tag + \".json\";\n };\n}\n\nif (Meteor.isClient) {\n getBrowserLocale = function() {\n var l, locale;\n l = window.navigator.userLanguage || window.navigator.language || 'en';\n if (l.indexOf(\"zh\") >= 0) {\n locale = \"zh-cn\";\n } else {\n locale = \"en-us\";\n }\n return locale;\n };\n SimpleSchema.prototype.i18n = function(prefix) {};\n Template.registerHelper('_', function(key, args) {\n return TAPi18n.__(key, args);\n });\n Meteor.startup(function() {\n var userLastLocale;\n Template.registerHelper('_', function(key, args) {\n return TAPi18n.__(key, args);\n });\n Session.set(\"steedos-locale\", getBrowserLocale());\n Tracker.autorun(function() {\n if (Session.get(\"steedos-locale\") !== \"en-us\") {\n if (typeof TAPi18n !== \"undefined\" && TAPi18n !== null) {\n TAPi18n.setLanguage(\"zh-CN\");\n }\n I18n.changeLanguage(\"zh-CN\", {\n rootUrl: Steedos.absoluteUrl()\n });\n i18n.setLocale(\"zh-CN\");\n moment.locale(\"zh-cn\");\n return require(\"moment\").locale(\"zh-cn\");\n } else {\n if (typeof TAPi18n !== \"undefined\" && TAPi18n !== null) {\n TAPi18n.setLanguage(\"en\");\n }\n I18n.changeLanguage(\"en\", {\n rootUrl: Steedos.absoluteUrl()\n });\n i18n.setLocale(\"en\");\n moment.locale(\"en\");\n return require(\"moment\").locale(\"en\");\n }\n });\n userLastLocale = null;\n Tracker.autorun(function() {\n Session.set(\"steedos-locale\", \"zh-CN\");\n return userLastLocale = Meteor.user() ? Meteor.user().locale ? (Session.set(\"steedos-locale\", Meteor.user().locale), userLastLocale && userLastLocale !== Meteor.user().locale ? window.location.reload(true) : void 0, userLastLocale = Meteor.user().locale) : void 0 : void 0;\n });\n return i18n.onChangeLocale(function(newLocale) {\n $.extend(true, $.fn.dataTable.defaults, {\n language: {\n \"decimal\": t(\"dataTables.decimal\"),\n \"emptyTable\": t(\"dataTables.emptyTable\"),\n \"info\": t(\"dataTables.info\"),\n \"infoEmpty\": t(\"dataTables.infoEmpty\"),\n \"infoFiltered\": t(\"dataTables.infoFiltered\"),\n \"infoPostFix\": t(\"dataTables.infoPostFix\"),\n \"thousands\": t(\"dataTables.thousands\"),\n \"lengthMenu\": t(\"dataTables.lengthMenu\"),\n \"loadingRecords\": t(\"dataTables.loadingRecords\"),\n \"processing\": t(\"dataTables.processing\"),\n \"search\": t(\"dataTables.search\"),\n \"zeroRecords\": t(\"dataTables.zeroRecords\"),\n \"paginate\": {\n \"first\": t(\"dataTables.paginate.first\"),\n \"last\": t(\"dataTables.paginate.last\"),\n \"next\": t(\"dataTables.paginate.next\"),\n \"previous\": t(\"dataTables.paginate.previous\")\n },\n \"aria\": {\n \"sortAscending\": t(\"dataTables.aria.sortAscending\"),\n \"sortDescending\": t(\"dataTables.aria.sortDescending\")\n }\n }\n });\n return _.each(Tabular.tablesByName, function(table) {\n return _.each(table.options.columns, function(column) {\n var collName;\n if (!column.data || column.data === \"_id\") {\n return;\n }\n if (table.collection) {\n collName = table.collection._name;\n } else {\n collName = '';\n }\n column.sTitle = t(\"\" + collName + \"_\" + column.data.replace(/\\./g, \"_\"));\n if (!table.options.language) {\n table.options.language = {};\n }\n table.options.language.zeroRecords = t(\"dataTables.zero\") + t(collName);\n });\n });\n });\n });\n}\n","@cfs = {}\n\nMeteor.startup ->\n FS.HTTP.setBaseUrl(\"/api\")\n\n\n# 通过文件扩展名获取文件contentType\n# http://reference.sitepoint.com/html/mime-types\n# 参照s3上传附件后的contentType\ncfs.getContentType = (filename) ->\n _exp = filename.split('.').pop().toLowerCase()\n if ('.' + _exp == '.au') \n return 'audio/basic'\n else if ('.' + _exp == '.avi') \n return 'video/x-msvideo'\n else if ('.' + _exp == '.bmp') \n return 'image/bmp'\n else if ('.' + _exp == '.bz2') \n return 'application/x-bzip2'\n else if ('.' + _exp == '.css') \n return 'text/css'\n else if ('.' + _exp == '.dtd') \n return 'application/octet-stream'\n else if ('.' + _exp == '.doc') \n return 'application/msword'\n else if ('.' + _exp == '.docx') \n return 'application/msword'\n else if ('.' + _exp == '.dotx') \n return 'application/octet-stream'\n else if ('.' + _exp == '.es') \n return 'application/octet-stream'\n else if ('.' + _exp == '.exe') \n return 'application/octet-stream'\n else if ('.' + _exp == '.gif') \n return 'image/gif'\n else if ('.' + _exp == '.gz') \n return 'application/x-gzip'\n else if ('.' + _exp == '.hqx') \n return 'application/mac-binhex40'\n else if ('.' + _exp == '.html') \n return 'text/html'\n else if ('.' + _exp == '.jar') \n return 'application/x-java-archive'\n else if (('.' + _exp == '.jpg') || ('.' + _exp == '.jpeg')) \n return 'image/jpeg'\n else if ('.' + _exp == '.js') \n return 'application/x-javascript'\n else if ('.' + _exp == '.jsp') \n return 'application/octet-stream'\n else if ('.' + _exp == '.midi') \n return 'audio/midi'\n else if ('.' + _exp == '.mp3') \n return 'audio/mpeg'\n else if ('.' + _exp == '.mpeg') \n return 'video/mpeg'\n else if ('.' + _exp == '.ogg') \n return 'application/ogg'\n else if ('.' + _exp == '.pdf') \n return 'application/pdf'\n else if ('.' + _exp == '.pl') \n return 'application/octet-stream'\n else if ('.' + _exp == '.png') \n return 'image/png'\n else if ('.' + _exp == '.potx') \n return 'application/octet-stream'\n else if ('.' + _exp == '.ppsx') \n return 'application/octet-stream'\n else if ('.' + _exp == '.ppt') \n return 'application/vnd.ms-powerpoint'\n else if ('.' + _exp == '.pptx') \n return 'application/vnd.ms-powerpoint'\n else if ('.' + _exp == '.ps') \n return 'application/postscript'\n else if ('.' + _exp == '.qt') \n return 'video/quicktime'\n else if ('.' + _exp == '.ra') \n return 'audio/x-pn-realaudio'\n else if ('.' + _exp == '.ram') \n return 'audio/x-pn-realaudio'\n else if ('.' + _exp == '.rdf') \n return 'application/octet-stream'\n else if ('.' + _exp == '.rtf') \n return 'text/rtf'\n else if ('.' + _exp == '.sgml') \n return 'text/sgml'\n else if ('.' + _exp == '.sit') \n return 'application/x-stuffit'\n else if ('.' + _exp == '.sldx') \n return 'application/octet-stream'\n else if ('.' + _exp == '.svg') \n return 'image/svg+xml'\n else if ('.' + _exp == '.swf') \n return 'application/x-shockwave-flash'\n else if ('.' + _exp == '.tar.gz') \n return 'application/x-gzip'\n else if ('.' + _exp == '.tgz') \n return 'application/x-compressed'\n else if ('.' + _exp == '.tiff') \n return 'image/tiff'\n else if ('.' + _exp == '.tsv') \n return 'text/tab-separated-values'\n else if ('.' + _exp == '.txt') \n return 'text/plain'\n else if ('.' + _exp == '.wav') \n return 'audio/x-wav'\n else if ('.' + _exp == '.xlam') \n return 'application/octet-stream'\n else if ('.' + _exp == '.xls') \n return 'application/vnd.ms-excel'\n else if ('.' + _exp == '.xlsb') \n return 'application/octet-stream'\n else if ('.' + _exp == '.xlsx') \n return 'application/vnd.ms-excel'\n else if ('.' + _exp == '.xltx') \n return 'application/octet-stream'\n else if ('.' + _exp == '.xml') \n return 'text/xml'\n else if ('.' + _exp == '.zip') \n return 'application/zip'\n else \n return 'application/octet-stream'\n \n\n\n","this.cfs = {};\n\nMeteor.startup(function() {\n return FS.HTTP.setBaseUrl(\"/api\");\n});\n\ncfs.getContentType = function(filename) {\n var _exp;\n _exp = filename.split('.').pop().toLowerCase();\n if ('.' + _exp === '.au') {\n return 'audio/basic';\n } else if ('.' + _exp === '.avi') {\n return 'video/x-msvideo';\n } else if ('.' + _exp === '.bmp') {\n return 'image/bmp';\n } else if ('.' + _exp === '.bz2') {\n return 'application/x-bzip2';\n } else if ('.' + _exp === '.css') {\n return 'text/css';\n } else if ('.' + _exp === '.dtd') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.doc') {\n return 'application/msword';\n } else if ('.' + _exp === '.docx') {\n return 'application/msword';\n } else if ('.' + _exp === '.dotx') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.es') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.exe') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.gif') {\n return 'image/gif';\n } else if ('.' + _exp === '.gz') {\n return 'application/x-gzip';\n } else if ('.' + _exp === '.hqx') {\n return 'application/mac-binhex40';\n } else if ('.' + _exp === '.html') {\n return 'text/html';\n } else if ('.' + _exp === '.jar') {\n return 'application/x-java-archive';\n } else if (('.' + _exp === '.jpg') || ('.' + _exp === '.jpeg')) {\n return 'image/jpeg';\n } else if ('.' + _exp === '.js') {\n return 'application/x-javascript';\n } else if ('.' + _exp === '.jsp') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.midi') {\n return 'audio/midi';\n } else if ('.' + _exp === '.mp3') {\n return 'audio/mpeg';\n } else if ('.' + _exp === '.mpeg') {\n return 'video/mpeg';\n } else if ('.' + _exp === '.ogg') {\n return 'application/ogg';\n } else if ('.' + _exp === '.pdf') {\n return 'application/pdf';\n } else if ('.' + _exp === '.pl') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.png') {\n return 'image/png';\n } else if ('.' + _exp === '.potx') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.ppsx') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.ppt') {\n return 'application/vnd.ms-powerpoint';\n } else if ('.' + _exp === '.pptx') {\n return 'application/vnd.ms-powerpoint';\n } else if ('.' + _exp === '.ps') {\n return 'application/postscript';\n } else if ('.' + _exp === '.qt') {\n return 'video/quicktime';\n } else if ('.' + _exp === '.ra') {\n return 'audio/x-pn-realaudio';\n } else if ('.' + _exp === '.ram') {\n return 'audio/x-pn-realaudio';\n } else if ('.' + _exp === '.rdf') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.rtf') {\n return 'text/rtf';\n } else if ('.' + _exp === '.sgml') {\n return 'text/sgml';\n } else if ('.' + _exp === '.sit') {\n return 'application/x-stuffit';\n } else if ('.' + _exp === '.sldx') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.svg') {\n return 'image/svg+xml';\n } else if ('.' + _exp === '.swf') {\n return 'application/x-shockwave-flash';\n } else if ('.' + _exp === '.tar.gz') {\n return 'application/x-gzip';\n } else if ('.' + _exp === '.tgz') {\n return 'application/x-compressed';\n } else if ('.' + _exp === '.tiff') {\n return 'image/tiff';\n } else if ('.' + _exp === '.tsv') {\n return 'text/tab-separated-values';\n } else if ('.' + _exp === '.txt') {\n return 'text/plain';\n } else if ('.' + _exp === '.wav') {\n return 'audio/x-wav';\n } else if ('.' + _exp === '.xlam') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.xls') {\n return 'application/vnd.ms-excel';\n } else if ('.' + _exp === '.xlsb') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.xlsx') {\n return 'application/vnd.ms-excel';\n } else if ('.' + _exp === '.xltx') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.xml') {\n return 'text/xml';\n } else if ('.' + _exp === '.zip') {\n return 'application/zip';\n } else {\n return 'application/octet-stream';\n }\n};\n","FS.StorageAdapter.prototype.on 'error', (storeName, error, fileObj)->\n console.error(\"FS.StorageAdapter emit error\")\n console.error(error)\n console.error(fileObj)\n console.error(storeName)\n\nFS.Collection.prototype.on 'error', (error, fileObj, storeName)->\n console.error(\"FS.Collection emit error\")\n console.error(error)\n console.error(fileObj)\n console.error(storeName)","FS.StorageAdapter.prototype.on('error', function(storeName, error, fileObj) {\n console.error(\"FS.StorageAdapter emit error\");\n console.error(error);\n console.error(fileObj);\n return console.error(storeName);\n});\n\nFS.Collection.prototype.on('error', function(error, fileObj, storeName) {\n console.error(\"FS.Collection emit error\");\n console.error(error);\n console.error(fileObj);\n return console.error(storeName);\n});\n","stores = ['avatars', 'audios', 'images', 'videos', 'files']\n\n_.each stores, (store_name)->\n file_store\n if Meteor.settings.public.cfs?.store == \"OSS\"\n if Meteor.isClient\n file_store = new FS.Store.OSS(store_name)\n else if Meteor.isServer\n file_store = new FS.Store.OSS store_name, Meteor.settings.cfs.aliyun\n\n else if Meteor.settings.public.cfs?.store == \"S3\"\n if Meteor.isClient\n file_store = new FS.Store.S3(store_name)\n else if Meteor.isServer\n file_store = new FS.Store.S3 store_name, Meteor.settings.cfs.aws\n\n else if Meteor.settings.public.cfs?.store == \"STEEDOSCLOUD\"\n if Meteor.isClient\n file_store = new FS.Store.STEEDOSCLOUD(store_name)\n else if Meteor.isServer\n file_store = new FS.Store.STEEDOSCLOUD store_name, Meteor.settings.cfs.steedosCloud\n else\n if Meteor.isClient\n file_store = new FS.Store.FileSystem(store_name)\n else if Meteor.isServer\n file_store = new FS.Store.FileSystem(store_name, {\n path: require('path').join(process.env.STEEDOS_STORAGE_DIR, \"files/#{store_name}\"),\n fileKeyMaker: (fileObj)->\n # Lookup the copy\n store = fileObj and fileObj._getInfo(store_name)\n # If the store and key is found return the key\n if store and store.key\n return store.key\n\n # TO CUSTOMIZE, REPLACE CODE AFTER THIS POINT\n\n filename = fileObj.name();\n filenameInStore = fileObj.name({store: store_name})\n\n now = new Date\n year = now.getFullYear()\n month = now.getMonth() + 1\n path = require('path')\n mkdirp = require('mkdirp')\n pathname = path.join(process.env.STEEDOS_STORAGE_DIR, \"files/#{store_name}/\" + year + '/' + month)\n # Set absolute path\n absolutePath = path.resolve(pathname)\n # Ensure the path exists\n mkdirp.sync(absolutePath)\n\n # If no store key found we resolve / generate a key\n return year + '/' + month + '/' + fileObj.collectionName + '-' + fileObj._id + '-' + (filenameInStore || filename)\n\n })\n\n if store_name == 'audios'\n cfs[store_name] = new FS.Collection store_name,\n stores: [file_store],\n filter: {\n allow: {\n contentTypes: ['audio/*'] # allow only audios in this FS.Collection\n }\n }\n else if store_name == 'images' || store_name == 'avatars'\n cfs[store_name] = new FS.Collection store_name,\n stores: [file_store],\n filter: {\n allow: {\n contentTypes: ['image/*'] # allow only images in this FS.Collection\n }\n }\n else if store_name == 'videos'\n cfs[store_name] = new FS.Collection store_name,\n stores: [file_store],\n filter: {\n allow: {\n contentTypes: ['video/*'] # allow only videos in this FS.Collection\n }\n }\n else\n cfs[store_name] = new FS.Collection store_name,\n stores: [file_store]\n\n cfs[store_name].allow\n insert: ->\n return true\n update: ->\n return true\n remove: ->\n return true\n download: ->\n return true\n\n if store_name == 'avatars'\n db[store_name] = cfs[store_name]\n db[store_name].files.before.insert (userId, doc) ->\n doc.userId = userId\n\n if store_name == 'files'\n db[\"cfs.#{store_name}.filerecord\"] = cfs[store_name].files","var stores;\n\nstores = ['avatars', 'audios', 'images', 'videos', 'files'];\n\n_.each(stores, function(store_name) {\n file_store;\n var file_store, ref, ref1, ref2;\n if (((ref = Meteor.settings[\"public\"].cfs) != null ? ref.store : void 0) === \"OSS\") {\n if (Meteor.isClient) {\n file_store = new FS.Store.OSS(store_name);\n } else if (Meteor.isServer) {\n file_store = new FS.Store.OSS(store_name, Meteor.settings.cfs.aliyun);\n }\n } else if (((ref1 = Meteor.settings[\"public\"].cfs) != null ? ref1.store : void 0) === \"S3\") {\n if (Meteor.isClient) {\n file_store = new FS.Store.S3(store_name);\n } else if (Meteor.isServer) {\n file_store = new FS.Store.S3(store_name, Meteor.settings.cfs.aws);\n }\n } else if (((ref2 = Meteor.settings[\"public\"].cfs) != null ? ref2.store : void 0) === \"STEEDOSCLOUD\") {\n if (Meteor.isClient) {\n file_store = new FS.Store.STEEDOSCLOUD(store_name);\n } else if (Meteor.isServer) {\n file_store = new FS.Store.STEEDOSCLOUD(store_name, Meteor.settings.cfs.steedosCloud);\n }\n } else {\n if (Meteor.isClient) {\n file_store = new FS.Store.FileSystem(store_name);\n } else if (Meteor.isServer) {\n file_store = new FS.Store.FileSystem(store_name, {\n path: require('path').join(process.env.STEEDOS_STORAGE_DIR, \"files/\" + store_name),\n fileKeyMaker: function(fileObj) {\n var absolutePath, filename, filenameInStore, mkdirp, month, now, path, pathname, store, year;\n store = fileObj && fileObj._getInfo(store_name);\n if (store && store.key) {\n return store.key;\n }\n filename = fileObj.name();\n filenameInStore = fileObj.name({\n store: store_name\n });\n now = new Date;\n year = now.getFullYear();\n month = now.getMonth() + 1;\n path = require('path');\n mkdirp = require('mkdirp');\n pathname = path.join(process.env.STEEDOS_STORAGE_DIR, (\"files/\" + store_name + \"/\") + year + '/' + month);\n absolutePath = path.resolve(pathname);\n mkdirp.sync(absolutePath);\n return year + '/' + month + '/' + fileObj.collectionName + '-' + fileObj._id + '-' + (filenameInStore || filename);\n }\n });\n }\n }\n if (store_name === 'audios') {\n cfs[store_name] = new FS.Collection(store_name, {\n stores: [file_store],\n filter: {\n allow: {\n contentTypes: ['audio/*']\n }\n }\n });\n } else if (store_name === 'images' || store_name === 'avatars') {\n cfs[store_name] = new FS.Collection(store_name, {\n stores: [file_store],\n filter: {\n allow: {\n contentTypes: ['image/*']\n }\n }\n });\n } else if (store_name === 'videos') {\n cfs[store_name] = new FS.Collection(store_name, {\n stores: [file_store],\n filter: {\n allow: {\n contentTypes: ['video/*']\n }\n }\n });\n } else {\n cfs[store_name] = new FS.Collection(store_name, {\n stores: [file_store]\n });\n }\n cfs[store_name].allow({\n insert: function() {\n return true;\n },\n update: function() {\n return true;\n },\n remove: function() {\n return true;\n },\n download: function() {\n return true;\n }\n });\n if (store_name === 'avatars') {\n db[store_name] = cfs[store_name];\n db[store_name].files.before.insert(function(userId, doc) {\n return doc.userId = userId;\n });\n }\n if (store_name === 'files') {\n return db[\"cfs.\" + store_name + \".filerecord\"] = cfs[store_name].files;\n }\n});\n"]} \ No newline at end of file +{"version":3,"sources":["meteor://💻app/packages/steedos_objects-core/i18n.coffee","meteor://💻app/i18n.coffee","meteor://💻app/packages/steedos_objects-core/cfs/cfs.coffee","meteor://💻app/cfs/cfs.coffee","meteor://💻app/packages/steedos_objects-core/cfs/cfs_fix.coffee","meteor://💻app/cfs/cfs_fix.coffee","meteor://💻app/packages/steedos_objects-core/cfs/stores.coffee","meteor://💻app/cfs/stores.coffee"],"names":["I18n","absoluteUrl","getBrowserLocale","i18n","require","t","tr","trl","url","e","root_url","replace","Meteor","isCordova","isClient","URL","pathname","error","setOptions","purify","defaultLocale","hostUrl","TAPi18n","__original","__","key","options","locale","translated","_getLanguageFilePath","lang_tag","path","conf","cdn_path","i18n_files_route","l","window","navigator","userLanguage","language","indexOf","SimpleSchema","prototype","prefix","Template","registerHelper","args","startup","userLastLocale","Session","set","Tracker","autorun","get","setLanguage","changeLanguage","rootUrl","Steedos","setLocale","moment","user","location","reload","onChangeLocale","newLocale","$","extend","fn","dataTable","defaults","_","each","Tabular","tablesByName","table","columns","column","collName","data","collection","_name","sTitle","zeroRecords","cfs","FS","HTTP","setBaseUrl","getContentType","filename","_exp","split","pop","toLowerCase","StorageAdapter","on","storeName","fileObj","console","Collection","stores","store_name","file_store","ref","ref1","ref2","settings","store","Store","OSS","isServer","aliyun","S3","aws","STEEDOSCLOUD","steedosCloud","FileSystem","join","process","env","STEEDOS_STORAGE_DIR","fileKeyMaker","absolutePath","filenameInStore","metadata","mkdirp","month","now","objectFoldPath","objectName","year","_getInfo","name","object_name","Date","getFullYear","getMonth","resolve","sync","collectionName","_id","filter","allow","contentTypes","insert","update","remove","download","db","files","before","userId","doc"],"mappings":"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","file":"/packages/steedos_objects-core.js","sourcesContent":["i18n = require('meteor/universe:i18n').i18n;\nI18n = require('@steedos/i18n');\n@i18n = i18n;\n\n@t = I18n.t\n\n@tr = t\n\n@trl = t\n\nabsoluteUrl = (url)->\n\tif url\n\t\t# url以\"/\"开头的话,去掉开头的\"/\"\n\t\turl = url.replace(/^\\//,\"\")\n\tif (Meteor.isCordova)\n\t\treturn Meteor.absoluteUrl(url);\n\telse\n\t\tif Meteor.isClient\n\t\t\ttry\n\t\t\t\troot_url = new URL(Meteor.absoluteUrl())\n\t\t\t\tif url\n\t\t\t\t\treturn root_url.pathname + url\n\t\t\t\telse\n\t\t\t\t\treturn root_url.pathname\n\t\t\tcatch e\n\t\t\t\treturn Meteor.absoluteUrl(url)\n\t\telse\n\t\t\tMeteor.absoluteUrl(url)\n# 重写tap:i18n函数,向后兼容\ni18n.setOptions\n\tpurify: null\n\tdefaultLocale: 'zh-CN'\n\thostUrl: absoluteUrl()\n\nif TAPi18n?\n\tTAPi18n.__original = TAPi18n.__\n\n\tTAPi18n.__ = (key, options, locale)->\n\t\ttranslated = t(key, options, locale);\n\t\tif translated != key\n\t\t\treturn translated\n\n\t\t# i18n 翻译不出来,尝试用 tap:i18n 翻译 TODO remove\n\t\treturn TAPi18n.__original key, options, locale\n\n\tTAPi18n._getLanguageFilePath = (lang_tag) ->\n\n\t\tpath = if @.conf.cdn_path? then @.conf.cdn_path else @.conf.i18n_files_route\n\t\tpath = path.replace /\\/$/, \"\"\n\t\tif path[0] == \"/\"\n\t\t\tpath = absoluteUrl().replace(/\\/+$/, \"\") + path\n\n\t\treturn \"#{path}/#{lang_tag}.json\"\n\nif Meteor.isClient\n\tgetBrowserLocale = ()->\n\t\tl = window.navigator.userLanguage || window.navigator.language || 'en'\n\t\tif l.indexOf(\"zh\") >=0\n\t\t\tlocale = \"zh-cn\"\n\t\telse\n\t\t\tlocale = \"en-us\"\n\t\treturn locale\n\n\n\t# 停用业务对象翻译 此函数已弃用\n\tSimpleSchema.prototype.i18n = (prefix) ->\n\t\treturn\n\n\tTemplate.registerHelper '_', (key, args)->\n\t\treturn TAPi18n.__(key, args);\n\n\tMeteor.startup ->\n\n\t\tTemplate.registerHelper '_', (key, args)->\n\t\t\treturn TAPi18n.__(key, args);\n\n\t\tSession.set(\"steedos-locale\", getBrowserLocale())\n\n\t\tTracker.autorun ()->\n\t\t\tif Session.get(\"steedos-locale\") != \"en-us\"\n\t\t\t\tif TAPi18n?\n\t\t\t\t\tTAPi18n.setLanguage(\"zh-CN\")\n\t\t\t\tI18n.changeLanguage(\"zh-CN\", {rootUrl: Steedos.absoluteUrl() })\n\t\t\t\ti18n.setLocale(\"zh-CN\")\n\t\t\t\tmoment.locale(\"zh-cn\")\n\t\t\t\trequire(\"moment\").locale(\"zh-cn\")\n\t\t\telse\n\t\t\t\tif TAPi18n?\n\t\t\t\t\tTAPi18n.setLanguage(\"en\")\n\t\t\t\tI18n.changeLanguage(\"en\", {rootUrl: Steedos.absoluteUrl() })\n\t\t\t\ti18n.setLocale(\"en\")\n\t\t\t\tmoment.locale(\"en\")\n\t\t\t\trequire(\"moment\").locale(\"en\")\n\t\tuserLastLocale = null\n\t\tTracker.autorun ()->\n\t\t\tSession.set(\"steedos-locale\", \"zh-CN\")\n\t\t\tuserLastLocale =\n\t\t\tif Meteor.user()\n\t\t\t\tif Meteor.user().locale\n\t\t\t\t\tSession.set(\"steedos-locale\", Meteor.user().locale);\n\t\t\t\t\tif userLastLocale && userLastLocale != Meteor.user().locale\n\t\t\t\t\t\twindow.location.reload(true);\n\t\t\t\t\tuserLastLocale = Meteor.user().locale\n\n\t\ti18n.onChangeLocale (newLocale)->\n\n\t\t\t$.extend true, $.fn.dataTable.defaults,\n\t\t\t\tlanguage:\n\t\t\t\t\t\"decimal\": t(\"dataTables.decimal\"),\n\t\t\t\t\t\"emptyTable\": t(\"dataTables.emptyTable\"),\n\t\t\t\t\t\"info\": t(\"dataTables.info\"),\n\t\t\t\t\t\"infoEmpty\": t(\"dataTables.infoEmpty\"),\n\t\t\t\t\t\"infoFiltered\": t(\"dataTables.infoFiltered\"),\n\t\t\t\t\t\"infoPostFix\": t(\"dataTables.infoPostFix\"),\n\t\t\t\t\t\"thousands\": t(\"dataTables.thousands\"),\n\t\t\t\t\t\"lengthMenu\": t(\"dataTables.lengthMenu\"),\n\t\t\t\t\t\"loadingRecords\": t(\"dataTables.loadingRecords\"),\n\t\t\t\t\t\"processing\": t(\"dataTables.processing\"),\n\t\t\t\t\t\"search\": t(\"dataTables.search\"),\n\t\t\t\t\t\"zeroRecords\": t(\"dataTables.zeroRecords\"),\n\t\t\t\t\t\"paginate\":\n\t\t\t\t\t\t\"first\": t(\"dataTables.paginate.first\"),\n\t\t\t\t\t\t\"last\": t(\"dataTables.paginate.last\"),\n\t\t\t\t\t\t\"next\": t(\"dataTables.paginate.next\"),\n\t\t\t\t\t\t\"previous\": t(\"dataTables.paginate.previous\")\n\t\t\t\t\t\"aria\":\n\t\t\t\t\t\t\"sortAscending\": t(\"dataTables.aria.sortAscending\"),\n\t\t\t\t\t\t\"sortDescending\": t(\"dataTables.aria.sortDescending\")\n\n\t\t\t_.each Tabular.tablesByName, (table) ->\n\t\t\t\t_.each table.options.columns, (column) ->\n\t\t\t\t\tif (!column.data || column.data == \"_id\")\n\t\t\t\t\t\treturn\n\t\t\t\t\tif table.collection\n\t\t\t\t\t\tcollName = table.collection._name\n\t\t\t\t\telse\n\t\t\t\t\t\tcollName = ''\n\t\t\t\t\tcolumn.sTitle = t(\"\" + collName + \"_\" + column.data.replace(/\\./g,\"_\"));\n\t\t\t\t\tif !table.options.language\n\t\t\t\t\t\ttable.options.language = {}\n\t\t\t\t\ttable.options.language.zeroRecords = t(\"dataTables.zero\") + t(collName)\n\t\t\t\t\treturn \n\n\n","var I18n, absoluteUrl, getBrowserLocale, i18n;\n\ni18n = require('meteor/universe:i18n').i18n;\n\nI18n = require('@steedos/i18n');\n\nthis.i18n = i18n;\n\nthis.t = I18n.t;\n\nthis.tr = t;\n\nthis.trl = t;\n\nabsoluteUrl = function(url) {\n var e, root_url;\n if (url) {\n url = url.replace(/^\\//, \"\");\n }\n if (Meteor.isCordova) {\n return Meteor.absoluteUrl(url);\n } else {\n if (Meteor.isClient) {\n try {\n root_url = new URL(Meteor.absoluteUrl());\n if (url) {\n return root_url.pathname + url;\n } else {\n return root_url.pathname;\n }\n } catch (error) {\n e = error;\n return Meteor.absoluteUrl(url);\n }\n } else {\n return Meteor.absoluteUrl(url);\n }\n }\n};\n\ni18n.setOptions({\n purify: null,\n defaultLocale: 'zh-CN',\n hostUrl: absoluteUrl()\n});\n\nif (typeof TAPi18n !== \"undefined\" && TAPi18n !== null) {\n TAPi18n.__original = TAPi18n.__;\n TAPi18n.__ = function(key, options, locale) {\n var translated;\n translated = t(key, options, locale);\n if (translated !== key) {\n return translated;\n }\n return TAPi18n.__original(key, options, locale);\n };\n TAPi18n._getLanguageFilePath = function(lang_tag) {\n var path;\n path = this.conf.cdn_path != null ? this.conf.cdn_path : this.conf.i18n_files_route;\n path = path.replace(/\\/$/, \"\");\n if (path[0] === \"/\") {\n path = absoluteUrl().replace(/\\/+$/, \"\") + path;\n }\n return path + \"/\" + lang_tag + \".json\";\n };\n}\n\nif (Meteor.isClient) {\n getBrowserLocale = function() {\n var l, locale;\n l = window.navigator.userLanguage || window.navigator.language || 'en';\n if (l.indexOf(\"zh\") >= 0) {\n locale = \"zh-cn\";\n } else {\n locale = \"en-us\";\n }\n return locale;\n };\n SimpleSchema.prototype.i18n = function(prefix) {};\n Template.registerHelper('_', function(key, args) {\n return TAPi18n.__(key, args);\n });\n Meteor.startup(function() {\n var userLastLocale;\n Template.registerHelper('_', function(key, args) {\n return TAPi18n.__(key, args);\n });\n Session.set(\"steedos-locale\", getBrowserLocale());\n Tracker.autorun(function() {\n if (Session.get(\"steedos-locale\") !== \"en-us\") {\n if (typeof TAPi18n !== \"undefined\" && TAPi18n !== null) {\n TAPi18n.setLanguage(\"zh-CN\");\n }\n I18n.changeLanguage(\"zh-CN\", {\n rootUrl: Steedos.absoluteUrl()\n });\n i18n.setLocale(\"zh-CN\");\n moment.locale(\"zh-cn\");\n return require(\"moment\").locale(\"zh-cn\");\n } else {\n if (typeof TAPi18n !== \"undefined\" && TAPi18n !== null) {\n TAPi18n.setLanguage(\"en\");\n }\n I18n.changeLanguage(\"en\", {\n rootUrl: Steedos.absoluteUrl()\n });\n i18n.setLocale(\"en\");\n moment.locale(\"en\");\n return require(\"moment\").locale(\"en\");\n }\n });\n userLastLocale = null;\n Tracker.autorun(function() {\n Session.set(\"steedos-locale\", \"zh-CN\");\n return userLastLocale = Meteor.user() ? Meteor.user().locale ? (Session.set(\"steedos-locale\", Meteor.user().locale), userLastLocale && userLastLocale !== Meteor.user().locale ? window.location.reload(true) : void 0, userLastLocale = Meteor.user().locale) : void 0 : void 0;\n });\n return i18n.onChangeLocale(function(newLocale) {\n $.extend(true, $.fn.dataTable.defaults, {\n language: {\n \"decimal\": t(\"dataTables.decimal\"),\n \"emptyTable\": t(\"dataTables.emptyTable\"),\n \"info\": t(\"dataTables.info\"),\n \"infoEmpty\": t(\"dataTables.infoEmpty\"),\n \"infoFiltered\": t(\"dataTables.infoFiltered\"),\n \"infoPostFix\": t(\"dataTables.infoPostFix\"),\n \"thousands\": t(\"dataTables.thousands\"),\n \"lengthMenu\": t(\"dataTables.lengthMenu\"),\n \"loadingRecords\": t(\"dataTables.loadingRecords\"),\n \"processing\": t(\"dataTables.processing\"),\n \"search\": t(\"dataTables.search\"),\n \"zeroRecords\": t(\"dataTables.zeroRecords\"),\n \"paginate\": {\n \"first\": t(\"dataTables.paginate.first\"),\n \"last\": t(\"dataTables.paginate.last\"),\n \"next\": t(\"dataTables.paginate.next\"),\n \"previous\": t(\"dataTables.paginate.previous\")\n },\n \"aria\": {\n \"sortAscending\": t(\"dataTables.aria.sortAscending\"),\n \"sortDescending\": t(\"dataTables.aria.sortDescending\")\n }\n }\n });\n return _.each(Tabular.tablesByName, function(table) {\n return _.each(table.options.columns, function(column) {\n var collName;\n if (!column.data || column.data === \"_id\") {\n return;\n }\n if (table.collection) {\n collName = table.collection._name;\n } else {\n collName = '';\n }\n column.sTitle = t(\"\" + collName + \"_\" + column.data.replace(/\\./g, \"_\"));\n if (!table.options.language) {\n table.options.language = {};\n }\n table.options.language.zeroRecords = t(\"dataTables.zero\") + t(collName);\n });\n });\n });\n });\n}\n","@cfs = {}\n\nMeteor.startup ->\n FS.HTTP.setBaseUrl(\"/api\")\n\n\n# 通过文件扩展名获取文件contentType\n# http://reference.sitepoint.com/html/mime-types\n# 参照s3上传附件后的contentType\ncfs.getContentType = (filename) ->\n _exp = filename.split('.').pop().toLowerCase()\n if ('.' + _exp == '.au') \n return 'audio/basic'\n else if ('.' + _exp == '.avi') \n return 'video/x-msvideo'\n else if ('.' + _exp == '.bmp') \n return 'image/bmp'\n else if ('.' + _exp == '.bz2') \n return 'application/x-bzip2'\n else if ('.' + _exp == '.css') \n return 'text/css'\n else if ('.' + _exp == '.dtd') \n return 'application/octet-stream'\n else if ('.' + _exp == '.doc') \n return 'application/msword'\n else if ('.' + _exp == '.docx') \n return 'application/msword'\n else if ('.' + _exp == '.dotx') \n return 'application/octet-stream'\n else if ('.' + _exp == '.es') \n return 'application/octet-stream'\n else if ('.' + _exp == '.exe') \n return 'application/octet-stream'\n else if ('.' + _exp == '.gif') \n return 'image/gif'\n else if ('.' + _exp == '.gz') \n return 'application/x-gzip'\n else if ('.' + _exp == '.hqx') \n return 'application/mac-binhex40'\n else if ('.' + _exp == '.html') \n return 'text/html'\n else if ('.' + _exp == '.jar') \n return 'application/x-java-archive'\n else if (('.' + _exp == '.jpg') || ('.' + _exp == '.jpeg')) \n return 'image/jpeg'\n else if ('.' + _exp == '.js') \n return 'application/x-javascript'\n else if ('.' + _exp == '.jsp') \n return 'application/octet-stream'\n else if ('.' + _exp == '.midi') \n return 'audio/midi'\n else if ('.' + _exp == '.mp3') \n return 'audio/mpeg'\n else if ('.' + _exp == '.mpeg') \n return 'video/mpeg'\n else if ('.' + _exp == '.ogg') \n return 'application/ogg'\n else if ('.' + _exp == '.pdf') \n return 'application/pdf'\n else if ('.' + _exp == '.pl') \n return 'application/octet-stream'\n else if ('.' + _exp == '.png') \n return 'image/png'\n else if ('.' + _exp == '.potx') \n return 'application/octet-stream'\n else if ('.' + _exp == '.ppsx') \n return 'application/octet-stream'\n else if ('.' + _exp == '.ppt') \n return 'application/vnd.ms-powerpoint'\n else if ('.' + _exp == '.pptx') \n return 'application/vnd.ms-powerpoint'\n else if ('.' + _exp == '.ps') \n return 'application/postscript'\n else if ('.' + _exp == '.qt') \n return 'video/quicktime'\n else if ('.' + _exp == '.ra') \n return 'audio/x-pn-realaudio'\n else if ('.' + _exp == '.ram') \n return 'audio/x-pn-realaudio'\n else if ('.' + _exp == '.rdf') \n return 'application/octet-stream'\n else if ('.' + _exp == '.rtf') \n return 'text/rtf'\n else if ('.' + _exp == '.sgml') \n return 'text/sgml'\n else if ('.' + _exp == '.sit') \n return 'application/x-stuffit'\n else if ('.' + _exp == '.sldx') \n return 'application/octet-stream'\n else if ('.' + _exp == '.svg') \n return 'image/svg+xml'\n else if ('.' + _exp == '.swf') \n return 'application/x-shockwave-flash'\n else if ('.' + _exp == '.tar.gz') \n return 'application/x-gzip'\n else if ('.' + _exp == '.tgz') \n return 'application/x-compressed'\n else if ('.' + _exp == '.tiff') \n return 'image/tiff'\n else if ('.' + _exp == '.tsv') \n return 'text/tab-separated-values'\n else if ('.' + _exp == '.txt') \n return 'text/plain'\n else if ('.' + _exp == '.wav') \n return 'audio/x-wav'\n else if ('.' + _exp == '.xlam') \n return 'application/octet-stream'\n else if ('.' + _exp == '.xls') \n return 'application/vnd.ms-excel'\n else if ('.' + _exp == '.xlsb') \n return 'application/octet-stream'\n else if ('.' + _exp == '.xlsx') \n return 'application/vnd.ms-excel'\n else if ('.' + _exp == '.xltx') \n return 'application/octet-stream'\n else if ('.' + _exp == '.xml') \n return 'text/xml'\n else if ('.' + _exp == '.zip') \n return 'application/zip'\n else \n return 'application/octet-stream'\n \n\n\n","this.cfs = {};\n\nMeteor.startup(function() {\n return FS.HTTP.setBaseUrl(\"/api\");\n});\n\ncfs.getContentType = function(filename) {\n var _exp;\n _exp = filename.split('.').pop().toLowerCase();\n if ('.' + _exp === '.au') {\n return 'audio/basic';\n } else if ('.' + _exp === '.avi') {\n return 'video/x-msvideo';\n } else if ('.' + _exp === '.bmp') {\n return 'image/bmp';\n } else if ('.' + _exp === '.bz2') {\n return 'application/x-bzip2';\n } else if ('.' + _exp === '.css') {\n return 'text/css';\n } else if ('.' + _exp === '.dtd') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.doc') {\n return 'application/msword';\n } else if ('.' + _exp === '.docx') {\n return 'application/msword';\n } else if ('.' + _exp === '.dotx') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.es') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.exe') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.gif') {\n return 'image/gif';\n } else if ('.' + _exp === '.gz') {\n return 'application/x-gzip';\n } else if ('.' + _exp === '.hqx') {\n return 'application/mac-binhex40';\n } else if ('.' + _exp === '.html') {\n return 'text/html';\n } else if ('.' + _exp === '.jar') {\n return 'application/x-java-archive';\n } else if (('.' + _exp === '.jpg') || ('.' + _exp === '.jpeg')) {\n return 'image/jpeg';\n } else if ('.' + _exp === '.js') {\n return 'application/x-javascript';\n } else if ('.' + _exp === '.jsp') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.midi') {\n return 'audio/midi';\n } else if ('.' + _exp === '.mp3') {\n return 'audio/mpeg';\n } else if ('.' + _exp === '.mpeg') {\n return 'video/mpeg';\n } else if ('.' + _exp === '.ogg') {\n return 'application/ogg';\n } else if ('.' + _exp === '.pdf') {\n return 'application/pdf';\n } else if ('.' + _exp === '.pl') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.png') {\n return 'image/png';\n } else if ('.' + _exp === '.potx') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.ppsx') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.ppt') {\n return 'application/vnd.ms-powerpoint';\n } else if ('.' + _exp === '.pptx') {\n return 'application/vnd.ms-powerpoint';\n } else if ('.' + _exp === '.ps') {\n return 'application/postscript';\n } else if ('.' + _exp === '.qt') {\n return 'video/quicktime';\n } else if ('.' + _exp === '.ra') {\n return 'audio/x-pn-realaudio';\n } else if ('.' + _exp === '.ram') {\n return 'audio/x-pn-realaudio';\n } else if ('.' + _exp === '.rdf') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.rtf') {\n return 'text/rtf';\n } else if ('.' + _exp === '.sgml') {\n return 'text/sgml';\n } else if ('.' + _exp === '.sit') {\n return 'application/x-stuffit';\n } else if ('.' + _exp === '.sldx') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.svg') {\n return 'image/svg+xml';\n } else if ('.' + _exp === '.swf') {\n return 'application/x-shockwave-flash';\n } else if ('.' + _exp === '.tar.gz') {\n return 'application/x-gzip';\n } else if ('.' + _exp === '.tgz') {\n return 'application/x-compressed';\n } else if ('.' + _exp === '.tiff') {\n return 'image/tiff';\n } else if ('.' + _exp === '.tsv') {\n return 'text/tab-separated-values';\n } else if ('.' + _exp === '.txt') {\n return 'text/plain';\n } else if ('.' + _exp === '.wav') {\n return 'audio/x-wav';\n } else if ('.' + _exp === '.xlam') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.xls') {\n return 'application/vnd.ms-excel';\n } else if ('.' + _exp === '.xlsb') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.xlsx') {\n return 'application/vnd.ms-excel';\n } else if ('.' + _exp === '.xltx') {\n return 'application/octet-stream';\n } else if ('.' + _exp === '.xml') {\n return 'text/xml';\n } else if ('.' + _exp === '.zip') {\n return 'application/zip';\n } else {\n return 'application/octet-stream';\n }\n};\n","FS.StorageAdapter.prototype.on 'error', (storeName, error, fileObj)->\n console.error(\"FS.StorageAdapter emit error\")\n console.error(error)\n console.error(fileObj)\n console.error(storeName)\n\nFS.Collection.prototype.on 'error', (error, fileObj, storeName)->\n console.error(\"FS.Collection emit error\")\n console.error(error)\n console.error(fileObj)\n console.error(storeName)","FS.StorageAdapter.prototype.on('error', function(storeName, error, fileObj) {\n console.error(\"FS.StorageAdapter emit error\");\n console.error(error);\n console.error(fileObj);\n return console.error(storeName);\n});\n\nFS.Collection.prototype.on('error', function(error, fileObj, storeName) {\n console.error(\"FS.Collection emit error\");\n console.error(error);\n console.error(fileObj);\n return console.error(storeName);\n});\n","stores = ['avatars', 'audios', 'images', 'videos', 'files']\n\n_.each stores, (store_name)->\n file_store\n if Meteor.settings.public.cfs?.store == \"OSS\"\n if Meteor.isClient\n file_store = new FS.Store.OSS(store_name)\n else if Meteor.isServer\n file_store = new FS.Store.OSS store_name, Meteor.settings.cfs.aliyun\n\n else if Meteor.settings.public.cfs?.store == \"S3\"\n if Meteor.isClient\n file_store = new FS.Store.S3(store_name)\n else if Meteor.isServer\n file_store = new FS.Store.S3 store_name, Meteor.settings.cfs.aws\n\n else if Meteor.settings.public.cfs?.store == \"STEEDOSCLOUD\"\n if Meteor.isClient\n file_store = new FS.Store.STEEDOSCLOUD(store_name)\n else if Meteor.isServer\n file_store = new FS.Store.STEEDOSCLOUD store_name, Meteor.settings.cfs.steedosCloud\n else\n if Meteor.isClient\n file_store = new FS.Store.FileSystem(store_name)\n else if Meteor.isServer\n file_store = new FS.Store.FileSystem(store_name, {\n path: require('path').join(process.env.STEEDOS_STORAGE_DIR, \"files/#{store_name}\"),\n fileKeyMaker: (fileObj)->\n # Lookup the copy\n store = fileObj and fileObj._getInfo(store_name)\n # If the store and key is found return the key\n if store and store.key\n return store.key\n\n # TO CUSTOMIZE, REPLACE CODE AFTER THIS POINT\n\n filename = fileObj.name();\n filenameInStore = fileObj.name({store: store_name})\n\n metadata = fileObj.metadata || {};\n objectName = metadata.object_name;\n objectFoldPath = ''\n if objectName\n objectFoldPath = objectName + '/'\n\n now = new Date\n year = now.getFullYear()\n month = now.getMonth() + 1\n path = require('path')\n mkdirp = require('mkdirp')\n pathname = path.join(process.env.STEEDOS_STORAGE_DIR, \"files/#{store_name}/\" + objectFoldPath + year + '/' + month)\n # Set absolute path\n absolutePath = path.resolve(pathname)\n # Ensure the path exists\n mkdirp.sync(absolutePath)\n\n # If no store key found we resolve / generate a key\n return objectFoldPath + year + '/' + month + '/' + fileObj.collectionName + '-' + fileObj._id + '-' + (filenameInStore || filename)\n\n })\n\n if store_name == 'audios'\n cfs[store_name] = new FS.Collection store_name,\n stores: [file_store],\n filter: {\n allow: {\n contentTypes: ['audio/*'] # allow only audios in this FS.Collection\n }\n }\n else if store_name == 'images' || store_name == 'avatars'\n cfs[store_name] = new FS.Collection store_name,\n stores: [file_store],\n filter: {\n allow: {\n contentTypes: ['image/*'] # allow only images in this FS.Collection\n }\n }\n else if store_name == 'videos'\n cfs[store_name] = new FS.Collection store_name,\n stores: [file_store],\n filter: {\n allow: {\n contentTypes: ['video/*'] # allow only videos in this FS.Collection\n }\n }\n else\n cfs[store_name] = new FS.Collection store_name,\n stores: [file_store]\n\n cfs[store_name].allow\n insert: ->\n return true\n update: ->\n return true\n remove: ->\n return true\n download: ->\n return true\n\n if store_name == 'avatars'\n db[store_name] = cfs[store_name]\n db[store_name].files.before.insert (userId, doc) ->\n doc.userId = userId\n\n if store_name == 'files'\n db[\"cfs.#{store_name}.filerecord\"] = cfs[store_name].files","var stores;\n\nstores = ['avatars', 'audios', 'images', 'videos', 'files'];\n\n_.each(stores, function(store_name) {\n file_store;\n var file_store, ref, ref1, ref2;\n if (((ref = Meteor.settings[\"public\"].cfs) != null ? ref.store : void 0) === \"OSS\") {\n if (Meteor.isClient) {\n file_store = new FS.Store.OSS(store_name);\n } else if (Meteor.isServer) {\n file_store = new FS.Store.OSS(store_name, Meteor.settings.cfs.aliyun);\n }\n } else if (((ref1 = Meteor.settings[\"public\"].cfs) != null ? ref1.store : void 0) === \"S3\") {\n if (Meteor.isClient) {\n file_store = new FS.Store.S3(store_name);\n } else if (Meteor.isServer) {\n file_store = new FS.Store.S3(store_name, Meteor.settings.cfs.aws);\n }\n } else if (((ref2 = Meteor.settings[\"public\"].cfs) != null ? ref2.store : void 0) === \"STEEDOSCLOUD\") {\n if (Meteor.isClient) {\n file_store = new FS.Store.STEEDOSCLOUD(store_name);\n } else if (Meteor.isServer) {\n file_store = new FS.Store.STEEDOSCLOUD(store_name, Meteor.settings.cfs.steedosCloud);\n }\n } else {\n if (Meteor.isClient) {\n file_store = new FS.Store.FileSystem(store_name);\n } else if (Meteor.isServer) {\n file_store = new FS.Store.FileSystem(store_name, {\n path: require('path').join(process.env.STEEDOS_STORAGE_DIR, \"files/\" + store_name),\n fileKeyMaker: function(fileObj) {\n var absolutePath, filename, filenameInStore, metadata, mkdirp, month, now, objectFoldPath, objectName, path, pathname, store, year;\n store = fileObj && fileObj._getInfo(store_name);\n if (store && store.key) {\n return store.key;\n }\n filename = fileObj.name();\n filenameInStore = fileObj.name({\n store: store_name\n });\n metadata = fileObj.metadata || {};\n objectName = metadata.object_name;\n objectFoldPath = '';\n if (objectName) {\n objectFoldPath = objectName + '/';\n }\n now = new Date;\n year = now.getFullYear();\n month = now.getMonth() + 1;\n path = require('path');\n mkdirp = require('mkdirp');\n pathname = path.join(process.env.STEEDOS_STORAGE_DIR, (\"files/\" + store_name + \"/\") + objectFoldPath + year + '/' + month);\n absolutePath = path.resolve(pathname);\n mkdirp.sync(absolutePath);\n return objectFoldPath + year + '/' + month + '/' + fileObj.collectionName + '-' + fileObj._id + '-' + (filenameInStore || filename);\n }\n });\n }\n }\n if (store_name === 'audios') {\n cfs[store_name] = new FS.Collection(store_name, {\n stores: [file_store],\n filter: {\n allow: {\n contentTypes: ['audio/*']\n }\n }\n });\n } else if (store_name === 'images' || store_name === 'avatars') {\n cfs[store_name] = new FS.Collection(store_name, {\n stores: [file_store],\n filter: {\n allow: {\n contentTypes: ['image/*']\n }\n }\n });\n } else if (store_name === 'videos') {\n cfs[store_name] = new FS.Collection(store_name, {\n stores: [file_store],\n filter: {\n allow: {\n contentTypes: ['video/*']\n }\n }\n });\n } else {\n cfs[store_name] = new FS.Collection(store_name, {\n stores: [file_store]\n });\n }\n cfs[store_name].allow({\n insert: function() {\n return true;\n },\n update: function() {\n return true;\n },\n remove: function() {\n return true;\n },\n download: function() {\n return true;\n }\n });\n if (store_name === 'avatars') {\n db[store_name] = cfs[store_name];\n db[store_name].files.before.insert(function(userId, doc) {\n return doc.userId = userId;\n });\n }\n if (store_name === 'files') {\n return db[\"cfs.\" + store_name + \".filerecord\"] = cfs[store_name].files;\n }\n});\n"]} \ No newline at end of file diff --git a/server/bundle/programs/web.browser.legacy/46d6afbfa6d571fa8e0eb86d000d02178fdf01c3.js b/server/bundle/programs/web.browser.legacy/4e109ebb98bc187190001730f9b5c2a54cbaf4bd.js similarity index 90% rename from server/bundle/programs/web.browser.legacy/46d6afbfa6d571fa8e0eb86d000d02178fdf01c3.js rename to server/bundle/programs/web.browser.legacy/4e109ebb98bc187190001730f9b5c2a54cbaf4bd.js index 67e9b7ca31..f6c50bdbad 100644 --- a/server/bundle/programs/web.browser.legacy/46d6afbfa6d571fa8e0eb86d000d02178fdf01c3.js +++ b/server/bundle/programs/web.browser.legacy/4e109ebb98bc187190001730f9b5c2a54cbaf4bd.js @@ -31,14 +31,14 @@ Package._define("blaze-html-templates"); * * Date: 2015-10-17 */ -function(e){var t,n,r,i,o,s,a,u,f,c,l,h,d,p,g,b,m,v,y,_="sizzle"+1*new Date,w=e.document,k=0,j=0,x=oe(),S=oe(),D=oe(),E=function(e,t){return e===t&&(l=!0),0},A=1<<31,C={}.hasOwnProperty,M=[],O=M.pop,T=M.push,B=M.push,I=M.slice,R=function(e,t){for(var n=0,r=e.length;n+~]|"+P+")"+P+"*"),H=new RegExp("="+P+"*([^\\]'\"]*?)"+P+"*\\]","g"),Y=new RegExp(z),V=new RegExp("^"+N+"$"),K={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N+"|[*])"),ATTR:new RegExp("^"+L),PSEUDO:new RegExp("^"+z),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:new RegExp("^(?:"+F+")$","i"),needsContext:new RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Q=/[+~]/,ee=/'|\\/g,te=new RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=function(){h()};try{B.apply(M=I.call(w.childNodes),w.childNodes),M[w.childNodes.length].nodeType}catch(je){B={apply:M.length?function(e,t){T.apply(e,I.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function ie(e,t,r,i){var o,a,f,c,l,p,m,v,k=t&&t.ownerDocument,j=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==j&&9!==j&&11!==j)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&h(t),t=t||d,g)){if(11!==j&&(p=J.exec(e)))if(o=p[1]){if(9===j){if(!(f=t.getElementById(o)))return r;if(f.id===o)return r.push(f),r}else if(k&&(f=k.getElementById(o))&&y(t,f)&&f.id===o)return r.push(f),r}else{if(p[2])return B.apply(r,t.getElementsByTagName(e)),r;if((o=p[3])&&n.getElementsByClassName&&t.getElementsByClassName)return B.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!D[e+" "]&&(!b||!b.test(e))){if(1!==j)k=t,v=e;else if("object"!==t.nodeName.toLowerCase()){for((c=t.getAttribute("id"))?c=c.replace(ee,"\\$&"):t.setAttribute("id",c=_),a=(m=s(e)).length,l=V.test(c)?"#"+c:"[id='"+c+"']";a--;)m[a]=l+" "+ge(m[a]);v=m.join(","),k=Q.test(e)&&de(t.parentNode)||t}if(v)try{return B.apply(r,k.querySelectorAll(v)),r}catch(x){}finally{c===_&&t.removeAttribute("id")}}}return u(e.replace(q,"$1"),t,r,i)}function oe(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[_]=!0,e}function ae(e){var t=d.createElement("div");try{return!!e(t)}catch(je){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ue(e,t){for(var n=e.split("|"),i=n.length;i--;)r.attrHandle[n[i]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||A)-(~e.sourceIndex||A);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function ce(e){return function(t){var n;return"input"===t.nodeName.toLowerCase()&&t.type===e}}function le(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function he(e){return se((function(t){return t=+t,se((function(n,r){for(var i,o=e([],n.length,t),s=o.length;s--;)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))}))}))}function de(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=ie.support={},o=ie.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},h=ie.setDocument=function(e){var t,i,s=e?e.ownerDocument||e:w;return s!==d&&9===s.nodeType&&s.documentElement?(p=(d=s).documentElement,g=!o(d),(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ae((function(e){return e.className="i",!e.getAttribute("className")})),n.getElementsByTagName=ae((function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length})),n.getElementsByClassName=Z.test(d.getElementsByClassName),n.getById=ae((function(e){return p.appendChild(e).id=_,!d.getElementsByName||!d.getElementsByName(_).length})),n.getById?(r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}},r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}}):(delete r.find.ID,r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},m=[],b=[],(n.qsa=Z.test(d.querySelectorAll))&&(ae((function(e){p.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&b.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||b.push("\\["+P+"*(?:value|"+F+")"),e.querySelectorAll("[id~="+_+"-]").length||b.push("~="),e.querySelectorAll(":checked").length||b.push(":checked"),e.querySelectorAll("a#"+_+"+*").length||b.push(".#.+[+~]")})),ae((function(e){var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&b.push("name"+P+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||b.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),b.push(",.*:")}))),(n.matchesSelector=Z.test(v=p.matches||p.webkitMatchesSelector||p.mozMatchesSelector||p.oMatchesSelector||p.msMatchesSelector))&&ae((function(e){n.disconnectedMatch=v.call(e,"div"),v.call(e,"[s!='']:x"),m.push("!=",z)})),b=b.length&&new RegExp(b.join("|")),m=m.length&&new RegExp(m.join("|")),t=Z.test(p.compareDocumentPosition),y=t||Z.test(p.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},E=t?function(e,t){if(e===t)return l=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&y(w,e)?-1:t===d||t.ownerDocument===w&&y(w,t)?1:c?R(c,e)-R(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],a=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?R(c,e)-R(c,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;s[r]===a[r];)r++;return r?fe(s[r],a[r]):s[r]===w?-1:a[r]===w?1:0},d):d},ie.matches=function(e,t){return ie(e,null,null,t)},ie.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&h(e),t=t.replace(H,"='$1']"),n.matchesSelector&&g&&!D[t+" "]&&(!m||!m.test(t))&&(!b||!b.test(t)))try{var r=v.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(je){}return ie(t,d,null,[e]).length>0},ie.contains=function(e,t){return(e.ownerDocument||e)!==d&&h(e),y(e,t)},ie.attr=function(e,t){(e.ownerDocument||e)!==d&&h(e);var i=r.attrHandle[t.toLowerCase()],o=i&&C.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},ie.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ie.uniqueSort=function(e){var t,r=[],i=0,o=0;if(l=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(E),l){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return c=null,e},i=ie.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(r=ie.selectors={cacheLength:50,createPseudo:se,match:K,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ie.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ie.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return K.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&Y.test(n)&&(t=s(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=x[e+" "];return t||(t=new RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&x(e,(function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(r){var i=ie.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace(U," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var f,c,l,h,d,p,g=o!==s?"nextSibling":"previousSibling",b=t.parentNode,m=a&&t.nodeName.toLowerCase(),v=!u&&!a,y=!1;if(b){if(o){for(;g;){for(h=t;h=h[g];)if(a?h.nodeName.toLowerCase()===m:1===h.nodeType)return!1;p=g="only"===e&&!p&&"nextSibling"}return!0}if(p=[s?b.firstChild:b.lastChild],s&&v){for(y=(d=(f=(c=(l=(h=b)[_]||(h[_]={}))[h.uniqueID]||(l[h.uniqueID]={}))[e]||[])[0]===k&&f[1])&&f[2],h=d&&b.childNodes[d];h=++d&&h&&h[g]||(y=d=0)||p.pop();)if(1===h.nodeType&&++y&&h===t){c[e]=[k,d,y];break}}else if(v&&(y=d=(f=(c=(l=(h=t)[_]||(h[_]={}))[h.uniqueID]||(l[h.uniqueID]={}))[e]||[])[0]===k&&f[1]),!1===y)for(;(h=++d&&h&&h[g]||(y=d=0)||p.pop())&&((a?h.nodeName.toLowerCase()!==m:1!==h.nodeType)||!++y||(v&&((c=(l=h[_]||(h[_]={}))[h.uniqueID]||(l[h.uniqueID]={}))[e]=[k,y]),h!==t)););return(y-=i)===r||y%r==0&&y/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||ie.error("unsupported pseudo: "+e);return i[_]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se((function(e,n){for(var r,o=i(e,t),s=o.length;s--;)e[r=R(e,o[s])]=!(n[r]=o[s])})):function(e){return i(e,0,n)}):i}},pseudos:{not:se((function(e){var t=[],n=[],r=a(e.replace(q,"$1"));return r[_]?se((function(e,t,n,i){for(var o,s=r(e,null,i,[]),a=e.length;a--;)(o=s[a])&&(e[a]=!(t[a]=o))})):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:se((function(e){return function(t){return ie(e,t).length>0}})),contains:se((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}})),lang:se((function(e){return V.test(e||"")||ie.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===p},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return X.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he((function(){return[0]})),last:he((function(e,t){return[t-1]})),eq:he((function(e,t,n){return[n<0?n+t:n]})),even:he((function(e,t){for(var n=0;n=0;)e.push(r);return e})),gt:he((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function ve(e,t,n){for(var r=0,i=t.length;r-1&&(o[f]=!(s[f]=l))}}else m=ye(m===s?m.splice(p,m.length):m),i?i(null,s,m,u):B.apply(s,m)}))}function we(e){for(var t,n,i,o=e.length,s=r.relative[e[0].type],a=s||r.relative[" "],u=s?1:0,c=be((function(e){return e===t}),a,!0),l=be((function(e){return R(t,e)>-1}),a,!0),h=[function(e,n,r){var i=!s&&(r||n!==f)||((t=n).nodeType?c(e,n,r):l(e,n,r));return t=null,i}];u1&&me(h),u>1&&ge(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(q,"$1"),n,u0,i=e.length>0,o=function(o,s,a,u,c){var l,p,b,m=0,v="0",y=o&&[],_=[],w=f,j=o||i&&r.find.TAG("*",c),x=k+=null==w?1:Math.random()||.1,S=j.length;for(c&&(f=s===d||s||c);v!==S&&null!=(l=j[v]);v++){if(i&&l){for(p=0,s||l.ownerDocument===d||(h(l),a=!g);b=e[p++];)if(b(l,s||d,a)){u.push(l);break}c&&(k=x)}n&&((l=!b&&l)&&m--,o&&y.push(l))}if(m+=v,n&&v!==m){for(p=0;b=t[p++];)b(y,_,s,a);if(o){if(m>0)for(;v--;)y[v]||_[v]||(_[v]=O.call(u));_=ye(_)}B.apply(u,_),c&&!o&&_.length>0&&m+t.length>1&&ie.uniqueSort(u)}return c&&(k=x,f=w),y};return n?se(o):o}return pe.prototype=r.filters=r.pseudos,r.setFilters=new pe,s=ie.tokenize=function(e,t){var n,i,o,s,a,u,f,c=S[e+" "];if(c)return t?0:c.slice(0);for(a=e,u=[],f=r.preFilter;a;){for(s in n&&!(i=$.exec(a))||(i&&(a=a.slice(i[0].length)||a),u.push(o=[])),n=!1,(i=W.exec(a))&&(n=i.shift(),o.push({value:n,type:i[0].replace(q," ")}),a=a.slice(n.length)),r.filter)!(i=K[s].exec(a))||f[s]&&!(i=f[s](i))||(n=i.shift(),o.push({value:n,type:s,matches:i}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ie.error(e):S(e,u).slice(0)},a=ie.compile=function(e,t){var n,r=[],i=[],o=D[e+" "];if(!o){for(t||(t=s(e)),n=t.length;n--;)(o=we(t[n]))[_]?r.push(o):i.push(o);(o=D(e,ke(i,r))).selector=e}return o},u=ie.select=function(e,t,i,o){var u,f,c,l,h,d="function"==typeof e&&e,p=!o&&s(e=d.selector||e);if(i=i||[],1===p.length){if((f=p[0]=p[0].slice(0)).length>2&&"ID"===(c=f[0]).type&&n.getById&&9===t.nodeType&&g&&r.relative[f[1].type]){if(!(t=(r.find.ID(c.matches[0].replace(te,ne),t)||[])[0]))return i;d&&(t=t.parentNode),e=e.slice(f.shift().value.length)}for(u=K.needsContext.test(e)?0:f.length;u--&&(c=f[u],!r.relative[l=c.type]);)if((h=r.find[l])&&(o=h(c.matches[0].replace(te,ne),Q.test(f[0].type)&&de(t.parentNode)||t))){if(f.splice(u,1),!(e=o.length&&ge(f)))return B.apply(i,o),i;break}}return(d||a(e,p))(o,t,!g,i,!t||Q.test(e)&&de(t.parentNode)||t),i},n.sortStable=_.split("").sort(E).join("")===_,n.detectDuplicates=!!l,h(),n.sortDetached=ae((function(e){return 1&e.compareDocumentPosition(d.createElement("div"))})),ae((function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")}))||ue("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),n.attributes&&ae((function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||ue("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),ae((function(e){return null==e.getAttribute("disabled")}))||ue(F,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),ie}(e);d.find=y,d.expr=y.selectors,d.expr[":"]=d.expr.pseudos,d.uniqueSort=d.unique=y.uniqueSort,d.text=y.getText,d.isXMLDoc=y.isXML,d.contains=y.contains;var _=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&d(e).is(n))break;r.push(e)}return r},w=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=d.expr.match.needsContext,j=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,x=/^.[^:#\[\.,]*$/;function S(e,t,n){if(d.isFunction(t))return d.grep(e,(function(e,r){return!!t.call(e,r,e)!==n}));if(t.nodeType)return d.grep(e,(function(e){return e===t!==n}));if("string"==typeof t){if(x.test(t))return d.filter(t,e,n);t=d.filter(t,e)}return d.grep(e,(function(e){return a.call(t,e)>-1!==n}))}d.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?d.find.matchesSelector(r,e)?[r]:[]:d.find.matches(e,d.grep(t,(function(e){return 1===e.nodeType})))},d.fn.extend({find:function(e){var t,n=this.length,r=[],i=this;if("string"!=typeof e)return this.pushStack(d(e).filter((function(){for(t=0;t1?d.unique(r):r)).selector=this.selector?this.selector+" "+e:e,r},filter:function(e){return this.pushStack(S(this,e||[],!1))},not:function(e){return this.pushStack(S(this,e||[],!0))},is:function(e){return!!S(this,"string"==typeof e&&k.test(e)?d(e):e||[],!1).length}});var D,E=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A;(d.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:E.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof d?t[0]:t,d.merge(this,d.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),j.test(i[1])&&d.isPlainObject(t))for(i in t)d.isFunction(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&o.parentNode&&(this.length=1,this[0]=o),this.context=r,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):d.isFunction(e)?void 0!==n.ready?n.ready(e):e(d):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),d.makeArray(e,this))}).prototype=d.fn,D=d(r);var C=/^(?:parents|prev(?:Until|All))/,M={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}d.fn.extend({has:function(e){var t=d(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&d.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?d.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?a.call(d(e),this[0]):a.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(d.uniqueSort(d.merge(this.get(),d(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),d.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return _(e,"parentNode")},parentsUntil:function(e,t,n){return _(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return _(e,"nextSibling")},prevAll:function(e){return _(e,"previousSibling")},nextUntil:function(e,t,n){return _(e,"nextSibling",n)},prevUntil:function(e,t,n){return _(e,"previousSibling",n)},siblings:function(e){return w((e.parentNode||{}).firstChild,e)},children:function(e){return w(e.firstChild)},contents:function(e){return e.contentDocument||d.merge([],e.childNodes)}},(function(e,t){d.fn[e]=function(n,r){var i=d.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=d.filter(r,i)),this.length>1&&(M[e]||d.uniqueSort(i),C.test(e)&&i.reverse()),this.pushStack(i)}}));var T=/\S+/g,B;function I(e){var t={};return d.each(e.match(T)||[],(function(e,n){t[n]=!0})),t}function R(){r.removeEventListener("DOMContentLoaded",R),e.removeEventListener("load",R),d.ready()}d.Callbacks=function(e){e="string"==typeof e?I(e):d.extend({},e);var t,n,r,i,o=[],s=[],a=-1,u=function(){for(i=e.once,r=t=!0;s.length;a=-1)for(n=s.shift();++a-1;)o.splice(n,1),n<=a&&a--})),this},has:function(e){return e?d.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=s=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=s=[],n||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],s.push(n),t||u()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!r}};return f},d.extend({Deferred:function(e){var t=[["resolve","done",d.Callbacks("once memory"),"resolved"],["reject","fail",d.Callbacks("once memory"),"rejected"],["notify","progress",d.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return d.Deferred((function(n){d.each(t,(function(t,o){var s=d.isFunction(e[t])&&e[t];i[o[1]]((function(){var e=s&&s.apply(this,arguments);e&&d.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===r?n.promise():this,s?[e]:arguments)}))})),e=null})).promise()},promise:function(e){return null!=e?d.extend(e,r):r}},i={};return r.pipe=r.then,d.each(t,(function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add((function(){n=a}),t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith})),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=i.call(arguments),r=n.length,o=1!==r||e&&d.isFunction(e.promise)?r:0,s=1===o?e:d.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?i.call(arguments):r,n===u?s.notifyWith(t,n):--o||s.resolveWith(t,n)}},u,f,c;if(r>1)for(u=new Array(r),f=new Array(r),c=new Array(r);t0||(B.resolveWith(r,[d]),d.fn.triggerHandler&&(d(r).triggerHandler("ready"),d(r).off("ready"))))}}),d.ready.promise=function(t){return B||(B=d.Deferred(),"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(d.ready):(r.addEventListener("DOMContentLoaded",R),e.addEventListener("load",R))),B.promise(t)},d.ready.promise();var F=function(e,t,n,r,i,o,s){var a=0,u=e.length,f=null==n;if("object"===d.type(n))for(a in i=!0,n)F(e,t,a,n[a],!0,o,s);else if(void 0!==r&&(i=!0,d.isFunction(r)||(s=!0),f&&(s?(t.call(e,r),t=null):(f=t,t=function(e,t,n){return f.call(d(e),n)})),t))for(;a-1&&void 0!==n&&z.set(this,e,t)}))}),null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each((function(){z.remove(this,e)}))}}),d.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=L.get(e,t),n&&(!r||d.isArray(n)?r=L.access(e,t,d.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=d.queue(e,t),r=n.length,i=n.shift(),o=d._queueHooks(e,t),s=function(){d.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return L.get(e,n)||L.access(e,n,{empty:d.Callbacks("once memory").add((function(){L.remove(e,[t+"queue",n])}))})}}),d.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length",""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Q(e,t){var n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&d.nodeName(e,t)?d.merge([e],n):n}function ee(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(f=d.contains(o.ownerDocument,o),s=Q(l.appendChild(o),"script"),f&&ee(s),n)for(c=0;o=s[c++];)Z.test(o.type||"")&&n.push(o);return l}re=r.createDocumentFragment().appendChild(r.createElement("div")),(ie=r.createElement("input")).setAttribute("type","radio"),ie.setAttribute("checked","checked"),ie.setAttribute("name","t"),re.appendChild(ie),l.checkClone=re.cloneNode(!0).cloneNode(!0).lastChild.checked,re.innerHTML="",l.noCloneChecked=!!re.cloneNode(!0).lastChild.defaultValue;var se=/^key/,ae=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ue=/^([^.]*)(?:\.(.+)|)/;function fe(){return!0}function ce(){return!1}function le(){try{return r.activeElement}catch(e){}}function he(e,t,n,r,i,o){var s,a;if("object"==typeof t){for(a in"string"!=typeof n&&(r=r||n,n=void 0),t)he(e,a,n,r,t[a],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ce;else if(!i)return e;return 1===o&&(s=i,(i=function(e){return d().off(e),s.apply(this,arguments)}).guid=s.guid||(s.guid=d.guid++)),e.each((function(){d.event.add(this,t,i,r,n)}))}d.event={global:{},add:function(e,t,n,r,i){var o,s,a,u,f,c,l,h,p,g,b,m=L.get(e);if(m)for(n.handler&&(n=(o=n).handler,i=o.selector),n.guid||(n.guid=d.guid++),(u=m.events)||(u=m.events={}),(s=m.handle)||(s=m.handle=function(t){return void 0!==d&&d.event.triggered!==t.type?d.event.dispatch.apply(e,arguments):void 0}),f=(t=(t||"").match(T)||[""]).length;f--;)p=b=(a=ue.exec(t[f])||[])[1],g=(a[2]||"").split(".").sort(),p&&(l=d.event.special[p]||{},p=(i?l.delegateType:l.bindType)||p,l=d.event.special[p]||{},c=d.extend({type:p,origType:b,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&d.expr.match.needsContext.test(i),namespace:g.join(".")},o),(h=u[p])||((h=u[p]=[]).delegateCount=0,l.setup&&!1!==l.setup.call(e,r,g,s)||e.addEventListener&&e.addEventListener(p,s)),l.add&&(l.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?h.splice(h.delegateCount++,0,c):h.push(c),d.event.global[p]=!0)},remove:function(e,t,n,r,i){var o,s,a,u,f,c,l,h,p,g,b,m=L.hasData(e)&&L.get(e);if(m&&(u=m.events)){for(f=(t=(t||"").match(T)||[""]).length;f--;)if(p=b=(a=ue.exec(t[f])||[])[1],g=(a[2]||"").split(".").sort(),p){for(l=d.event.special[p]||{},h=u[p=(r?l.delegateType:l.bindType)||p]||[],a=a[2]&&new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=h.length;o--;)c=h[o],!i&&b!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(h.splice(o,1),c.selector&&h.delegateCount--,l.remove&&l.remove.call(e,c));s&&!h.length&&(l.teardown&&!1!==l.teardown.call(e,g,m.handle)||d.removeEvent(e,p,m.handle),delete u[p])}else for(p in u)d.event.remove(e,p+t[f],n,r,!0);d.isEmptyObject(u)&&L.remove(e,"handle events")}},dispatch:function(e){e=d.event.fix(e);var t,n,r,o,s,a=[],u=i.call(arguments),f=(L.get(this,"events")||{})[e.type]||[],c=d.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,e)){for(a=d.event.handlers.call(this,e,f),t=0;(o=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=o.elem,n=0;(s=o.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(s.namespace)||(e.handleObj=s,e.data=s.data,void 0!==(r=((d.event.special[s.origType]||{}).handle||s.handler).apply(o.elem,u))&&!1===(e.result=r)&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&(!0!==u.disabled||"click"!==e.type)){for(r=[],n=0;n-1:d.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return a]*)\/>/gi,pe=/\s*$/g;function ve(e,t){return d.nodeName(e,"table")&&d.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ye(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function _e(e){var t=be.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function we(e,t){var n,r,i,o,s,a,u,f;if(1===t.nodeType){if(L.hasData(e)&&(o=L.access(e),s=L.set(t,o),f=o.events))for(i in delete s.handle,s.events={},f)for(n=0,r=f[i].length;n1&&"string"==typeof b&&!l.checkClone&&ge.test(b))return e.each((function(i){var o=e.eq(i);m&&(t[0]=b.call(this,i,o.html())),je(o,t,n,r)}));if(p&&(s=(i=oe(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=s),s||r)){for(u=(a=d.map(Q(i,"script"),ye)).length;h")},clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=d.contains(e.ownerDocument,e);if(!(l.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||d.isXMLDoc(e)))for(s=Q(a),r=0,i=(o=Q(e)).length;r0&&ee(s,!u&&Q(e,"script")),a},cleanData:function(e){for(var t,n,r,i=d.event.special,o=0;void 0!==(n=e[o]);o++)if(P(n)){if(t=n[L.expando]){if(t.events)for(r in t.events)i[r]?d.event.remove(n,r):d.removeEvent(n,r,t.handle);n[L.expando]=void 0}n[z.expando]&&(n[z.expando]=void 0)}}}),d.fn.extend({domManip:je,detach:function(e){return xe(this,e,!0)},remove:function(e){return xe(this,e)},text:function(e){return F(this,(function(e){return void 0===e?d.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return je(this,arguments,(function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||ve(this,e).appendChild(e)}))},prepend:function(){return je(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=ve(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return je(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return je(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(d.cleanData(Q(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return d.clone(this,e,t)}))},html:function(e){return F(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!pe.test(e)&&!J[(X.exec(e)||["",""])[1].toLowerCase()]){e=d.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentDocument).write(),t.close(),n=Ee(e,t),Se.detach()),De[e]=n),n}var Ce=/^margin/,Me=new RegExp("^("+W+")(?!px)[a-z%]+$","i"),Oe=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Te=function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=s[o];return i},Be=r.documentElement;function Ie(e,t,n){var r,i,o,s,a=e.style;return""!==(s=(n=n||Oe(e))?n.getPropertyValue(t)||n[t]:void 0)&&void 0!==s||d.contains(e.ownerDocument,e)||(s=d.style(e,t)),n&&!l.pixelMarginRight()&&Me.test(s)&&Ce.test(t)&&(r=a.width,i=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=s,s=n.width,a.width=r,a.minWidth=i,a.maxWidth=o),void 0!==s?s+"":s}function Re(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){var t,n,i,o,s=r.createElement("div"),a=r.createElement("div");function u(){a.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",a.innerHTML="",Be.appendChild(s);var r=e.getComputedStyle(a);t="1%"!==r.top,o="2px"===r.marginLeft,n="4px"===r.width,a.style.marginRight="50%",i="4px"===r.marginRight,Be.removeChild(s)}a.style&&(a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===a.style.backgroundClip,s.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",s.appendChild(a),d.extend(l,{pixelPosition:function(){return u(),t},boxSizingReliable:function(){return null==n&&u(),n},pixelMarginRight:function(){return null==n&&u(),i},reliableMarginLeft:function(){return null==n&&u(),o},reliableMarginRight:function(){var t,n=a.appendChild(r.createElement("div"));return n.style.cssText=a.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",n.style.marginRight=n.style.width="0",a.style.width="1px",Be.appendChild(s),t=!parseFloat(e.getComputedStyle(n).marginRight),Be.removeChild(s),a.removeChild(n),t}}))}();var Fe=/^(none|table(?!-c[ea]).+)/,Pe={position:"absolute",visibility:"hidden",display:"block"},Ne={letterSpacing:"0",fontWeight:"400"},Le=["Webkit","O","Moz","ms"],ze=r.createElement("div").style;function Ue(e){if(e in ze)return e;for(var t=e[0].toUpperCase()+e.slice(1),n=Le.length;n--;)if((e=Le[n]+t)in ze)return e}function qe(e,t,n){var r=H.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function $e(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;o<4;o+=2)"margin"===n&&(s+=d.css(e,n+Y[o],!0,i)),r?("content"===n&&(s-=d.css(e,"padding"+Y[o],!0,i)),"margin"!==n&&(s-=d.css(e,"border"+Y[o]+"Width",!0,i))):(s+=d.css(e,"padding"+Y[o],!0,i),"padding"!==n&&(s+=d.css(e,"border"+Y[o]+"Width",!0,i)));return s}function We(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Oe(e),s="border-box"===d.css(e,"boxSizing",!1,o);if(i<=0||null==i){if(((i=Ie(e,t,o))<0||null==i)&&(i=e.style[t]),Me.test(i))return i;r=s&&(l.boxSizingReliable()||i===e.style[t]),i=parseFloat(i)||0}return i+$e(e,t,n||(s?"border":"content"),r,o)+"px"}function He(e,t){for(var n,r,i,o=[],s=0,a=e.length;s1)},show:function(){return He(this,!0)},hide:function(){return He(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each((function(){V(this)?d(this).show():d(this).hide()}))}}),d.Tween=Ye,Ye.prototype={constructor:Ye,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||d.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(d.cssNumber[n]?"":"px")},cur:function(){var e=Ye.propHooks[this.prop];return e&&e.get?e.get(this):Ye.propHooks._default.get(this)},run:function(e){var t,n=Ye.propHooks[this.prop];return this.options.duration?this.pos=t=d.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ye.propHooks._default.set(this),this}},Ye.prototype.init.prototype=Ye.prototype,Ye.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=d.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){d.fx.step[e.prop]?d.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[d.cssProps[e.prop]]&&!d.cssHooks[e.prop]?e.elem[e.prop]=e.now:d.style(e.elem,e.prop,e.now+e.unit)}}},Ye.propHooks.scrollTop=Ye.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},d.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},d.fx=Ye.prototype.init,d.fx.step={};var Ve,Ke,Ge=/^(?:toggle|show|hide)$/,Xe=/queueHooks$/;function Ze(){return e.setTimeout((function(){Ve=void 0})),Ve=d.now()}function Je(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=Y[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function Qe(e,t,n){for(var r,i=(nt.tweeners[t]||[]).concat(nt.tweeners["*"]),o=0,s=i.length;o1)},removeAttr:function(e){return this.each((function(){d.removeAttr(this,e)}))}}),d.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?d.prop(e,t,n):(1===o&&d.isXMLDoc(e)||(t=t.toLowerCase(),i=d.attrHooks[t]||(d.expr.match.bool.test(t)?rt:void 0)),void 0!==n?null===n?void d.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=d.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!l.radioValue&&"radio"===t&&d.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)for(;n=o[i++];)r=d.propFix[n]||n,d.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)}}),rt={set:function(e,t,n){return!1===t?d.removeAttr(e,n):e.setAttribute(n,n),n}},d.each(d.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=it[t]||d.find.attr;it[t]=function(e,t,r){var i,o;return r||(o=it[t],it[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,it[t]=o),i}}));var ot=/^(?:input|select|textarea|button)$/i,st=/^(?:a|area)$/i;d.fn.extend({prop:function(e,t){return F(this,d.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[d.propFix[e]||e]}))}}),d.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&d.isXMLDoc(e)||(t=d.propFix[t]||t,i=d.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=d.find.attr(e,"tabindex");return t?parseInt(t,10):ot.test(e.nodeName)||st.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),l.optSelected||(d.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),d.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){d.propFix[this.toLowerCase()]=this}));var at=/[\t\r\n\f]/g;function ut(e){return e.getAttribute&&e.getAttribute("class")||""}d.fn.extend({addClass:function(e){var t,n,r,i,o,s,a,u=0;if(d.isFunction(e))return this.each((function(t){d(this).addClass(e.call(this,t,ut(this)))}));if("string"==typeof e&&e)for(t=e.match(T)||[];n=this[u++];)if(i=ut(n),r=1===n.nodeType&&(" "+i+" ").replace(at," ")){for(s=0;o=t[s++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(a=d.trim(r))&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,r,i,o,s,a,u=0;if(d.isFunction(e))return this.each((function(t){d(this).removeClass(e.call(this,t,ut(this)))}));if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(T)||[];n=this[u++];)if(i=ut(n),r=1===n.nodeType&&(" "+i+" ").replace(at," ")){for(s=0;o=t[s++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(a=d.trim(r))&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):d.isFunction(e)?this.each((function(n){d(this).toggleClass(e.call(this,n,ut(this),t),t)})):this.each((function(){var t,r,i,o;if("string"===n)for(r=0,i=d(this),o=e.match(T)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||((t=ut(this))&&L.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":L.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+ut(n)+" ").replace(at," ").indexOf(t)>-1)return!0;return!1}});var ft=/\r/g,ct=/[\x20\t\r\n\f]+/g;d.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=d.isFunction(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,d(this).val()):e)?i="":"number"==typeof i?i+="":d.isArray(i)&&(i=d.map(i,(function(e){return null==e?"":e+""}))),(t=d.valHooks[this.type]||d.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))}))):i?(t=d.valHooks[i.type]||d.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(ft,""):null==n?"":n:void 0}}),d.extend({valHooks:{option:{get:function(e){var t=d.find.attr(e,"value");return null!=t?t:d.trim(d.text(e)).replace(ct," ")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||i<0,s=o?null:[],a=o?i+1:r.length,u=i<0?a:o?i:0;u-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),d.each(["radio","checkbox"],(function(){d.valHooks[this]={set:function(e,t){if(d.isArray(t))return e.checked=d.inArray(d(e).val(),t)>-1}},l.checkOn||(d.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}));var lt=/^(?:focusinfocus|focusoutblur)$/;d.extend(d.event,{trigger:function(t,n,i,o){var s,a,u,f,l,h,p,g=[i||r],b=c.call(t,"type")?t.type:t,m=c.call(t,"namespace")?t.namespace.split("."):[];if(a=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!lt.test(b+d.event.triggered)&&(b.indexOf(".")>-1&&(m=b.split("."),b=m.shift(),m.sort()),l=b.indexOf(":")<0&&"on"+b,(t=t[d.expando]?t:new d.Event(b,"object"==typeof t&&t)).isTrigger=o?2:3,t.namespace=m.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:d.makeArray(n,[t]),p=d.event.special[b]||{},o||!p.trigger||!1!==p.trigger.apply(i,n))){if(!o&&!p.noBubble&&!d.isWindow(i)){for(f=p.delegateType||b,lt.test(f+b)||(a=a.parentNode);a;a=a.parentNode)g.push(a),u=a;u===(i.ownerDocument||r)&&g.push(u.defaultView||u.parentWindow||e)}for(s=0;(a=g[s++])&&!t.isPropagationStopped();)t.type=s>1?f:p.bindType||b,(h=(L.get(a,"events")||{})[t.type]&&L.get(a,"handle"))&&h.apply(a,n),(h=l&&a[l])&&h.apply&&P(a)&&(t.result=h.apply(a,n),!1===t.result&&t.preventDefault());return t.type=b,o||t.isDefaultPrevented()||p._default&&!1!==p._default.apply(g.pop(),n)||!P(i)||l&&d.isFunction(i[b])&&!d.isWindow(i)&&((u=i[l])&&(i[l]=null),d.event.triggered=b,i[b](),d.event.triggered=void 0,u&&(i[l]=u)),t.result}},simulate:function(e,t,n){var r=d.extend(new d.Event,n,{type:e,isSimulated:!0});d.event.trigger(r,null,t)}}),d.fn.extend({trigger:function(e,t){return this.each((function(){d.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return d.event.trigger(e,t,n,!0)}}),d.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),(function(e,t){d.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}})),d.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),l.focusin="onfocusin"in e,l.focusin||d.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){d.event.simulate(t,e.target,d.event.fix(e))};d.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=L.access(r,t);i||r.addEventListener(e,n,!0),L.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=L.access(r,t)-1;i?L.access(r,t,i):(r.removeEventListener(e,n,!0),L.remove(r,t))}}}));var ht=e.location,dt=d.now(),pt=/\?/;d.parseJSON=function(e){return JSON.parse(e+"")},d.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(r){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||d.error("Invalid XML: "+t),n};var gt=/#.*$/,bt=/([?&])_=[^&]*/,mt=/^(.*?):[ \t]*([^\r\n]*)$/gm,vt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,yt=/^(?:GET|HEAD)$/,_t=/^\/\//,wt={},kt={},jt="*/".concat("*"),xt=r.createElement("a");function St(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(d.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Dt(e,t,n,r){var i={},o=e===kt;function s(a){var u;return i[a]=!0,d.each(e[a]||[],(function(e,a){var f=a(t,n,r);return"string"!=typeof f||o||i[f]?o?!(u=f):void 0:(t.dataTypes.unshift(f),s(f),!1)})),u}return s(t.dataTypes[0])||!i["*"]&&s("*")}function Et(e,t){var n,r,i=d.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&d.extend(!0,e,r),e}function At(e,t,n){for(var r,i,o,s,a=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ct(e,t,n,r){var i,o,s,a,u,f={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)f[s.toLowerCase()]=e.converters[s];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(s=f[u+" "+o]||f["* "+o]))for(i in f)if((a=i.split(" "))[1]===o&&(s=f[u+" "+a[0]]||f["* "+a[0]])){!0===s?s=f[i]:!0!==f[i]&&(o=a[0],c.unshift(a[1]));break}if(!0!==s)if(s&&e.throws)t=s(t);else try{t=s(t)}catch(l){return{state:"parsererror",error:s?l:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}xt.href=ht.href,d.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ht.href,type:"GET",isLocal:vt.test(ht.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":jt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Et(Et(e,d.ajaxSettings),t):Et(d.ajaxSettings,e)},ajaxPrefilter:St(wt),ajaxTransport:St(kt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,s,a,u,f,c,l,h=d.ajaxSetup({},n),p=h.context||h,g=h.context&&(p.nodeType||p.jquery)?d(p):d.event,b=d.Deferred(),m=d.Callbacks("once memory"),v=h.statusCode||{},y={},_={},w=0,k="canceled",j={readyState:0,getResponseHeader:function(e){var t;if(2===w){if(!a)for(a={};t=mt.exec(s);)a[t[1].toLowerCase()]=t[2];t=a[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===w?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return w||(e=_[n]=_[n]||e,y[e]=t),this},overrideMimeType:function(e){return w||(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(w<2)for(t in e)v[t]=[v[t],e[t]];else j.always(e[j.status]);return this},abort:function(e){var t=e||k;return i&&i.abort(t),x(0,t),this}};if(b.promise(j).complete=m.add,j.success=j.done,j.error=j.fail,h.url=((t||h.url||ht.href)+"").replace(gt,"").replace(_t,ht.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=d.trim(h.dataType||"*").toLowerCase().match(T)||[""],null==h.crossDomain){f=r.createElement("a");try{f.href=h.url,f.href=f.href,h.crossDomain=xt.protocol+"//"+xt.host!=f.protocol+"//"+f.host}catch(S){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=d.param(h.data,h.traditional)),Dt(wt,h,n,j),2===w)return j;for(l in(c=d.event&&h.global)&&0==d.active++&&d.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!yt.test(h.type),o=h.url,h.hasContent||(h.data&&(o=h.url+=(pt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(h.url=bt.test(o)?o.replace(bt,"$1_="+dt++):o+(pt.test(o)?"&":"?")+"_="+dt++)),h.ifModified&&(d.lastModified[o]&&j.setRequestHeader("If-Modified-Since",d.lastModified[o]),d.etag[o]&&j.setRequestHeader("If-None-Match",d.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&j.setRequestHeader("Content-Type",h.contentType),j.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+jt+"; q=0.01":""):h.accepts["*"]),h.headers)j.setRequestHeader(l,h.headers[l]);if(h.beforeSend&&(!1===h.beforeSend.call(p,j,h)||2===w))return j.abort();for(l in k="abort",{success:1,error:1,complete:1})j[l](h[l]);if(i=Dt(kt,h,n,j)){if(j.readyState=1,c&&g.trigger("ajaxSend",[j,h]),2===w)return j;h.async&&h.timeout>0&&(u=e.setTimeout((function(){j.abort("timeout")}),h.timeout));try{w=1,i.send(y,x)}catch(S){if(!(w<2))throw S;x(-1,S)}}else x(-1,"No Transport");function x(t,n,r,a){var f,l,y,_,k,x=n;2!==w&&(w=2,u&&e.clearTimeout(u),i=void 0,s=a||"",j.readyState=t>0?4:0,f=t>=200&&t<300||304===t,r&&(_=At(h,j,r)),_=Ct(h,_,j,f),f?(h.ifModified&&((k=j.getResponseHeader("Last-Modified"))&&(d.lastModified[o]=k),(k=j.getResponseHeader("etag"))&&(d.etag[o]=k)),204===t||"HEAD"===h.type?x="nocontent":304===t?x="notmodified":(x=_.state,l=_.data,f=!(y=_.error))):(y=x,!t&&x||(x="error",t<0&&(t=0))),j.status=t,j.statusText=(n||x)+"",f?b.resolveWith(p,[l,x,j]):b.rejectWith(p,[j,x,y]),j.statusCode(v),v=void 0,c&&g.trigger(f?"ajaxSuccess":"ajaxError",[j,h,f?l:y]),m.fireWith(p,[j,x]),c&&(g.trigger("ajaxComplete",[j,h]),--d.active||d.event.trigger("ajaxStop")))}return j},getJSON:function(e,t,n){return d.get(e,t,n,"json")},getScript:function(e,t){return d.get(e,void 0,t,"script")}}),d.each(["get","post"],(function(e,t){d[t]=function(e,n,r,i){return d.isFunction(n)&&(i=i||r,r=n,n=void 0),d.ajax(d.extend({url:e,type:t,dataType:i,data:n,success:r},d.isPlainObject(e)&&e))}})),d._evalUrl=function(e){return d.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,throws:!0})},d.fn.extend({wrapAll:function(e){var t;return d.isFunction(e)?this.each((function(t){d(this).wrapAll(e.call(this,t))})):(this[0]&&(t=d(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this)},wrapInner:function(e){return d.isFunction(e)?this.each((function(t){d(this).wrapInner(e.call(this,t))})):this.each((function(){var t=d(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=d.isFunction(e);return this.each((function(n){d(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(){return this.parent().each((function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)})).end()}}),d.expr.filters.hidden=function(e){return!d.expr.filters.visible(e)},d.expr.filters.visible=function(e){return e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0};var Mt=/%20/g,Ot=/\[\]$/,Tt=/\r?\n/g,Bt=/^(?:submit|button|image|reset|file)$/i,It=/^(?:input|select|textarea|keygen)/i;function Rt(e,t,n,r){var i;if(d.isArray(t))d.each(t,(function(t,i){n||Ot.test(e)?r(e,i):Rt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)}));else if(n||"object"!==d.type(t))r(e,t);else for(i in t)Rt(e+"["+i+"]",t[i],n,r)}d.param=function(e,t){var n,r=[],i=function(e,t){t=d.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=d.ajaxSettings&&d.ajaxSettings.traditional),d.isArray(e)||e.jquery&&!d.isPlainObject(e))d.each(e,(function(){i(this.name,this.value)}));else for(n in e)Rt(n,e[n],t,i);return r.join("&").replace(Mt,"+")},d.fn.extend({serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=d.prop(this,"elements");return e?d.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!d(this).is(":disabled")&&It.test(this.nodeName)&&!Bt.test(e)&&(this.checked||!G.test(e))})).map((function(e,t){var n=d(this).val();return null==n?null:d.isArray(n)?d.map(n,(function(e){return{name:t.name,value:e.replace(Tt,"\r\n")}})):{name:t.name,value:n.replace(Tt,"\r\n")}})).get()}}),d.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(t){}};var Ft={0:200,1223:204},Pt=d.ajaxSettings.xhr();l.cors=!!Pt&&"withCredentials"in Pt,l.ajax=Pt=!!Pt,d.ajaxTransport((function(t){var n,r;if(l.cors||Pt&&!t.crossDomain)return{send:function(i,o){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];for(s in t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)a.setRequestHeader(s,i[s]);n=function(e){return function(){n&&(n=r=a.onload=a.onerror=a.onabort=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?o(0,"error"):o(a.status,a.statusText):o(Ft[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=n(),r=a.onerror=n("error"),void 0!==a.onabort?a.onabort=r:a.onreadystatechange=function(){4===a.readyState&&e.setTimeout((function(){n&&r()}))},n=n("abort");try{a.send(t.hasContent&&t.data||null)}catch(u){if(n)throw u}},abort:function(){n&&n()}}})),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return d.globalEval(e),e}}}),d.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),d.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain)return{send:function(i,o){t=d("