Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

transformalizer

Package Overview
Dependencies
Maintainers
2
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

transformalizer - npm Package Compare versions

Comparing version 1.0.0-beta.1 to 1.0.0-beta.2

10

CHANGELOG.md

@@ -5,2 +5,12 @@ # Change Log

<a name="1.0.0-beta.2"></a>
# [1.0.0-beta.2](https://github.com/GaiamTV/transformalizer/compare/v1.0.0-beta.1...v1.0.0-beta.2) (2017-06-22)
### Bug Fixes
* adds getSchema method ([1bfeb84](https://github.com/GaiamTV/transformalizer/commit/1bfeb84))
<a name="1.0.0-beta.1"></a>

@@ -7,0 +17,0 @@ # [1.0.0-beta.1](https://github.com/GaiamTV/transformalizer/compare/v1.0.0-beta.0...v1.0.0-beta.1) (2017-06-21)

28

dist/transformalizer.js

@@ -51,2 +51,13 @@ 'use strict';

/**
* Get a schema from the registry by name
* @param {String} options.name - schema name/id
* @return {Object} - schema
*/
function getSchema(_ref2) {
var name = _ref2.name;
return registry[name];
}
/**
* Transform raw data into a valid JSON API document

@@ -59,6 +70,6 @@ * @param {Object} args

*/
function transform(_ref2) {
var name = _ref2.name,
source = _ref2.source,
opts = _ref2.options;
function transform(_ref3) {
var name = _ref3.name,
source = _ref3.source,
opts = _ref3.options;

@@ -452,5 +463,5 @@ if (!(0, _utils.isString)(name)) {

*/
exists: function exists(_ref3) {
var type = _ref3.type,
id = _ref3.id;
exists: function exists(_ref4) {
var type = _ref4.type,
id = _ref4.id;

@@ -488,2 +499,3 @@ return alreadyIncluded[type + ':' + id];

getRelationships: getRelationships,
getSchema: getSchema,
getType: getType,

@@ -498,2 +510,2 @@ register: register,

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi90cmFuc2Zvcm1hbGl6ZXIuanMiXSwibmFtZXMiOlsiY3JlYXRlVHJhbnNmb3JtYWxpemVyIiwiYmFzZU9wdGlvbnMiLCJyZWdpc3RyeSIsInJlZ2lzdGVyIiwibmFtZSIsInNjaGVtYSIsInNjaGVtYU9wdGlvbnMiLCJvcHRpb25zIiwiRXJyb3IiLCJ1bmRlZmluZWQiLCJ0cmFuc2Zvcm0iLCJzb3VyY2UiLCJvcHRzIiwiZG9jU2NoZW1hIiwiT2JqZWN0IiwiYXNzaWduIiwiaW5jbHVkZSIsImNyZWF0ZUluY2x1ZGUiLCJkYXRhIiwidHJhbnNmb3JtU291cmNlIiwiaW5jbHVkZWQiLCJnZXQiLCJkb2N1bWVudCIsImpzb25hcGkiLCJ2ZXJzaW9uIiwidG9wTGV2ZWwiLCJmb3JFYWNoIiwicHJvcCIsInJlc3VsdCIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ0cmFuc2Zvcm1EYXRhIiwiX3R5cGUiLCJfaWQiLCJkYXRhU2NoZW1hIiwic3RhdGUiLCJwYXJhbXMiLCJ0eXBlIiwiZ2V0VHlwZSIsImlkIiwiZ2V0SWQiLCJhdHRyaWJ1dGVzIiwiZ2V0QXR0cmlidXRlcyIsInJlbGF0aW9uc2hpcHMiLCJnZXRSZWxhdGlvbnNoaXBzIiwibGlua3MiLCJnZXRMaW5rcyIsIm1ldGEiLCJnZXRNZXRhIiwicmVzb3VyY2UiLCJvdGhlcnMiLCJyZWxTY2hlbWEiLCJrZXlzIiwicmVkdWNlIiwibWVtbyIsImtleSIsImZuIiwicmVsYXRpb25zaGlwIiwiZ2V0UmVsYXRpb25zaGlwIiwiaW52YWxpZERhdGEiLCJ0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhIiwiaXRlbSIsImV4aXN0cyIsImFscmVhZHlJbmNsdWRlZCIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7a0JBYXdCQSxxQjs7QUFieEI7Ozs7QUFRQTs7Ozs7QUFLZSxTQUFTQSxxQkFBVCxHQUFpRDtBQUFBLE1BQWxCQyxXQUFrQix1RUFBSixFQUFJOztBQUM5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d0IsZ0JBQW1CMUIsSUFBbkIsU0FBMkJFLEVBQTNCLENBQVA7QUFDRCxPQVZJOzs7QUFZTDs7Ozs7QUFLQTFCLGFBakJLLG1CQWlCR29DLFFBakJILEVBaUJhO0FBQ2hCYyx3QkFBbUJkLFNBQVNaLElBQTVCLFNBQW9DWSxTQUFTVixFQUE3QyxJQUFxRCxJQUFyRDtBQUNBdEIsaUJBQVMrQyxJQUFULENBQWNmLFFBQWQ7QUFDRCxPQXBCSTs7O0FBc0JMOzs7O0FBSUEvQixTQTFCSyxpQkEwQkM7QUFDSixlQUFPRCxRQUFQO0FBQ0Q7QUE1QkksS0FBUDtBQThCRDs7QUFFRCxTQUFPO0FBQ0xILGdDQURLO0FBRUw0QixnQ0FGSztBQUdMRixnQkFISztBQUlMa0Isb0NBSks7QUFLTGQsc0NBTEs7QUFNTE4sb0JBTks7QUFPTHRDLHNCQVBLO0FBUUxPLHdCQVJLO0FBU0x3QixnQ0FUSztBQVVMNkIsd0RBVks7QUFXTDVDO0FBWEssR0FBUDtBQWFEIiwiZmlsZSI6InRyYW5zZm9ybWFsaXplci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzRnVuY3Rpb24sXG4gIGlzT2JqZWN0LFxuICBpc1N0cmluZyxcbiAgVHJhbnNmb3JtRXJyb3IsXG4gIHZhbGlkYXRlU2NoZW1hLFxufSBmcm9tICcuL3V0aWxzJ1xuXG4vKipcbiAqIFRyYW5zZm9ybWFsaXplciBmYWN0b3J5IGZ1bmN0aW9uLlxuICogQHBhcmFtICB7T2JqZWN0fSBbYmFzZU9wdGlvbnM9e31dXG4gKiBAcmV0dXJuIHtPYmplY3R9IHRyYW5zZm9ybWFsaXplclxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVUcmFuc2Zvcm1hbGl6ZXIoYmFzZU9wdGlvbnMgPSB7fSkge1xuICBjb25zdCByZWdpc3RyeSA9IHt9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgc2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MubmFtZSAtIHNjaGVtYSBuYW1lL2lkXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5zY2hlbWEgLSBzY2hlbWEgZGVmaW5pdGlvblxuICAgKiBAcGFyYW0gIHtPYmplY3R9IFthcmdzLm9wdGlvbnM9e31dIC0gc2NoZW1hIG9wdGlvbnMgdG8gYmUgbWVyZ2VkIGluIHRvIHRyYW5zZm9ybSBvcHRpb25zXG4gICAqIEByZXR1cm4ge1VuZGVmaW5lZH1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZ2lzdGVyKHsgbmFtZSwgc2NoZW1hLCBvcHRpb25zOiBzY2hlbWFPcHRpb25zIH0pIHtcbiAgICBpZiAoIWlzU3RyaW5nKG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgXCJuYW1lXCIgUHJvcGVydHkgKG5vbiBzdHJpbmcpJylcbiAgICB9XG4gICAgcmVnaXN0cnlbbmFtZV0gPSB7XG4gICAgICBzY2hlbWE6IHZhbGlkYXRlU2NoZW1hKHsgbmFtZSwgc2NoZW1hIH0pLFxuICAgICAgb3B0aW9uczogc2NoZW1hT3B0aW9ucyxcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSByYXcgZGF0YSBpbnRvIGEgdmFsaWQgSlNPTiBBUEkgZG9jdW1lbnRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5uYW1lIC0gdGhlIHRvcCBsZXZlbCBzY2hlbWEgbmFtZVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlIC0gYSBzaW5nbGUgc291cmNlIG9iamVjdCBvciBhbiBhcmF5IG9mIHNvdXJjZSBvYmplY3RzXG4gICAqIEBwYXJhbSAge09iamVjdH0gW29wdGlvbnM9e31dIC0gZnVuY3Rpb24gbGV2ZWwgb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IGRvY3VtZW50XG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm0oeyBuYW1lLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMgfSkge1xuICAgIGlmICghaXNTdHJpbmcobmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcignSW52YWxpZCBcIm5hbWVcIiBQcm9wZXJ0eSAobm9uIHN0cmluZyknLCB7IG5hbWUsIHNvdXJjZSwgb3B0aW9uczogb3B0cyB9KVxuICAgIH1cbiAgICBjb25zdCBkb2NTY2hlbWEgPSByZWdpc3RyeVtuYW1lXVxuICAgIGlmICghZG9jU2NoZW1hKSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXJyb3IoYE1pc3NpbmcgU2NoZW1hOiAke25hbWV9YCwgeyBuYW1lLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMgfSlcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGJhc2VPcHRpb25zLCBvcHRzKVxuICAgIGNvbnN0IGluY2x1ZGUgPSBjcmVhdGVJbmNsdWRlKHsgc291cmNlLCBvcHRpb25zIH0pXG4gICAgY29uc3QgZGF0YSA9IHRyYW5zZm9ybVNvdXJjZSh7IGRvY1NjaGVtYSwgc291cmNlLCBvcHRpb25zLCBpbmNsdWRlIH0pXG4gICAgY29uc3QgaW5jbHVkZWQgPSBpbmNsdWRlLmdldCgpXG4gICAgY29uc3QgZG9jdW1lbnQgPSB7XG4gICAgICBqc29uYXBpOiB7XG4gICAgICAgIHZlcnNpb246ICcxLjAnLFxuICAgICAgfSxcbiAgICB9XG4gICAgLy8gYWRkIHRvcCBsZXZlbCBwcm9wZXJ0aWVzIGlmIGF2YWlsYWJsZVxuICAgIGNvbnN0IHRvcExldmVsID0gWydsaW5rcycsICdtZXRhJ11cbiAgICB0b3BMZXZlbC5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICBpZiAoZG9jU2NoZW1hLnNjaGVtYVtwcm9wXSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkb2NTY2hlbWEuc2NoZW1hW3Byb3BdKHsgc291cmNlLCBvcHRpb25zLCBkYXRhLCBpbmNsdWRlZCB9KVxuICAgICAgICBpZiAoaXNPYmplY3QocmVzdWx0KSkge1xuICAgICAgICAgIGRvY3VtZW50W3Byb3BdID0gcmVzdWx0XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICAgIGRvY3VtZW50LmRhdGEgPSBkYXRhXG4gICAgaWYgKGluY2x1ZGVkLmxlbmd0aCkge1xuICAgICAgZG9jdW1lbnQuaW5jbHVkZWQgPSBpbmNsdWRlZFxuICAgIH1cbiAgICByZXR1cm4gZG9jdW1lbnRcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gc291cmNlIGludG8gdGhlIFwicHJpbWFyeSBkYXRhXCIgb2YgdGhlIGRvY3VtZW50XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZG9jU2NoZW1hIC0gdGhlIHRvcCBsZXZlbCBzY2hlbWEgdXNlZCBmb3IgdHJhbnNmb3JtaW5nIHRoZSBkb2N1bWVudFxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlIC0gc291cmNlIGRhdGFcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnMgLSBmdW5jdGlvbiBsZXZlbCBvcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pbmNsdWRlIC0gaW5jbHVkZSBvYmplY3RcbiAgICogQHJldHVybiB7T2JqZWN0fE9iamVjdFtdfVxuICAgKi9cbiAgZnVuY3Rpb24gdHJhbnNmb3JtU291cmNlKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRvY1NjaGVtYSwgc291cmNlLCBvcHRpb25zOiBvcHRzLCBpbmNsdWRlIH0gPSBhcmdzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHNvdXJjZS5tYXAoZGF0YSA9PiB0cmFuc2Zvcm1EYXRhKHsgZG9jU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMsIGRhdGEsIGluY2x1ZGUgfSkpXG4gICAgfVxuICAgIHJldHVybiB0cmFuc2Zvcm1EYXRhKHsgZG9jU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMsIGRhdGE6IHNvdXJjZSwgaW5jbHVkZSB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBhIHNpbmdsZSBzb3VyY2Ugb2JqZWN0IGludG8gYSB2YWxpZCByZXNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRvY1NjaGVtYSAtIHRoZSB0b3AgbGV2ZWwgc2NoZW1hIHVzZWQgZm9yIHRyYW5zZm9ybWluZyB0aGUgZG9jdW1lbnRcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZSAtIHNvdXJjZSBkYXRhXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zIC0gZnVuY3Rpb24gbGV2ZWwgb3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YSAtIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuaW5jbHVkZSAtIGluY2x1ZGUgb2JqZWN0XG4gICAqIEBwYXJhbSAge1N0cmluZ30gW2FyZ3MuX3R5cGVdIC0gKGZvciB1c2UgYnkgdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSlcbiAgICogQHBhcmFtICB7U3RyaW5nfSBbYXJncy5faWRdIC0gKGZvciB1c2UgYnkgdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSlcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgZnVuY3Rpb24gdHJhbnNmb3JtRGF0YShhcmdzKSB7XG4gICAgY29uc3QgeyBkb2NTY2hlbWEsIHNvdXJjZSwgb3B0aW9ucywgZGF0YSwgaW5jbHVkZSwgX3R5cGUsIF9pZCB9ID0gYXJnc1xuICAgIC8vIGNhbGwgZGF0YVNjaGVtYSBpZiBkZWZpbmVkIGFuZCBzd2l0Y2ggY29udGV4dHMgaWYgbmVjZXNzYXJ5XG4gICAgbGV0IGRhdGFTY2hlbWEgPSBkb2NTY2hlbWFcbiAgICBpZiAoaXNGdW5jdGlvbihkb2NTY2hlbWEuc2NoZW1hLmRhdGEuZGF0YVNjaGVtYSkpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBkb2NTY2hlbWEuc2NoZW1hLmRhdGEuZGF0YVNjaGVtYSh7IHNvdXJjZSwgZGF0YSwgb3B0aW9ucyB9KVxuICAgICAgaWYgKG5hbWUgIT09IGRvY1NjaGVtYS5uYW1lKSB7XG4gICAgICAgIGRhdGFTY2hlbWEgPSByZWdpc3RyeVtuYW1lXVxuICAgICAgICBpZiAoIWRhdGFTY2hlbWEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgU2NoZW1hOiAke25hbWV9YClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzdGF0ZSA9IHt9XG4gICAgY29uc3QgcGFyYW1zID0geyBkYXRhU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnMsIGRhdGEsIHN0YXRlIH1cbiAgICBjb25zdCB0eXBlID0gcGFyYW1zLnR5cGUgPSBfdHlwZSB8fCBnZXRUeXBlKHBhcmFtcylcbiAgICBjb25zdCBpZCA9IHBhcmFtcy5pZCA9IF9pZCB8fCBnZXRJZChwYXJhbXMpXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHBhcmFtcy5hdHRyaWJ1dGVzID0gZ2V0QXR0cmlidXRlcyhwYXJhbXMpXG4gICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHBhcmFtcy5yZWxhdGlvbnNoaXBzID0gZ2V0UmVsYXRpb25zaGlwcyh7IGluY2x1ZGUsIC4uLnBhcmFtcyB9KVxuICAgIGNvbnN0IGxpbmtzID0gcGFyYW1zLmxpbmtzID0gZ2V0TGlua3MocGFyYW1zKVxuICAgIGNvbnN0IG1ldGEgPSBwYXJhbXMubWV0YSA9IGdldE1ldGEocGFyYW1zKVxuICAgIC8vIGJ1aWxkIHJlc3VsdGluZyByZXNvdXJjZVxuICAgIGNvbnN0IHJlc291cmNlID0geyB0eXBlLCBpZCB9XG4gICAgaWYgKGlzT2JqZWN0KGF0dHJpYnV0ZXMpKSB7XG4gICAgICByZXNvdXJjZS5hdHRyaWJ1dGVzID0gYXR0cmlidXRlc1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3QocmVsYXRpb25zaGlwcykpIHtcbiAgICAgIHJlc291cmNlLnJlbGF0aW9uc2hpcHMgPSByZWxhdGlvbnNoaXBzXG4gICAgfVxuICAgIGlmIChpc09iamVjdChtZXRhKSkge1xuICAgICAgcmVzb3VyY2UubWV0YSA9IG1ldGFcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KGxpbmtzKSkge1xuICAgICAgcmVzb3VyY2UubGlua3MgPSBsaW5rc1xuICAgIH1cbiAgICByZXR1cm4gcmVzb3VyY2VcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIHR5cGUgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHJldHVybiB7U3RyaW5nfSB0eXBlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRUeXBlKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGNvbnN0IHR5cGUgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLnR5cGUob3RoZXJzKVxuICAgIGlmICghaXNTdHJpbmcodHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcignSW52YWxpZCB0eXBlJywgYXJncylcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIGlkIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEByZXR1cm4ge1N0cmluZ30gaWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGdldElkKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGNvbnN0IGlkID0gZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5pZChvdGhlcnMpXG4gICAgaWYgKCFpc1N0cmluZyhpZCkpIHtcbiAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcignSW52YWxpZCBpZCcsIGFyZ3MpXG4gICAgfVxuICAgIHJldHVybiBpZFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgYXR0cmlidXRlcyBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLmlkXG4gICAqIEByZXR1cm4ge09iamVjdH0gYXR0cmlidXRlc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0QXR0cmlidXRlcyhhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBpZiAoZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5hdHRyaWJ1dGVzKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5hdHRyaWJ1dGVzKG90aGVycylcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIHJlbGF0aW9uc2hpcHMgb2JqZWN0IGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuaW5jbHVkZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IHJlbGF0aW9uc2hpcHNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGdldFJlbGF0aW9uc2hpcHMoYXJncykge1xuICAgIGNvbnN0IHsgZGF0YVNjaGVtYSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgY29uc3QgcmVsU2NoZW1hID0gZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5yZWxhdGlvbnNoaXBzXG4gICAgaWYgKHJlbFNjaGVtYSkge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHJlbFNjaGVtYSlcbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSBrZXlzLnJlZHVjZSgobWVtbywga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IGZuID0gcmVsU2NoZW1hW2tleV1cbiAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwID0gZ2V0UmVsYXRpb25zaGlwKHsgZm4sIC4uLm90aGVycyB9KVxuICAgICAgICBpZiAoaXNPYmplY3QocmVsYXRpb25zaGlwKSkge1xuICAgICAgICAgIG1lbW9ba2V5XSA9IHJlbGF0aW9uc2hpcFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZW1vXG4gICAgICB9LCB7fSlcbiAgICAgIGlmICghT2JqZWN0LmtleXMocmVsYXRpb25zaGlwcykubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIHJldHVybiByZWxhdGlvbnNoaXBzXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIHJlbGF0aW9uc2hpcCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHJlbGF0aW9uc2hpcCBvZiB0aGVcbiAgICogY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZm5cbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmF0dHJpYnV0ZXNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmluY2x1ZGVcbiAgICogQHJldHVybiB7T2JqZWN0fSByZWxhdGlvbnNoaXBcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGdldFJlbGF0aW9uc2hpcChhcmdzKSB7XG4gICAgY29uc3QgeyBmbiwgaW5jbHVkZSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgY29uc3QgcmVzdWx0ID0gZm4ob3RoZXJzKVxuICAgIGlmICghaXNPYmplY3QocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBjb25zdCB7IG1ldGEsIGxpbmtzLCBkYXRhIH0gPSByZXN1bHRcbiAgICBjb25zdCBpbnZhbGlkRGF0YSA9ICFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0J1xuICAgIGlmICghbGlua3MgJiYgIW1ldGEgJiYgaW52YWxpZERhdGEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgY29uc3QgcmVsYXRpb25zaGlwID0ge31cbiAgICBpZiAoIWludmFsaWREYXRhKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICByZWxhdGlvbnNoaXAuZGF0YSA9IGRhdGEubWFwKGl0ZW0gPT4gdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSh7XG4gICAgICAgICAgaXRlbSxcbiAgICAgICAgICBzb3VyY2U6IGFyZ3Muc291cmNlLFxuICAgICAgICAgIG9wdGlvbnM6IGFyZ3Mub3B0aW9ucyxcbiAgICAgICAgICBpbmNsdWRlLFxuICAgICAgICB9KSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbGF0aW9uc2hpcC5kYXRhID0gdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSh7XG4gICAgICAgICAgaXRlbTogZGF0YSxcbiAgICAgICAgICBzb3VyY2U6IGFyZ3Muc291cmNlLFxuICAgICAgICAgIG9wdGlvbnM6IGFyZ3Mub3B0aW9ucyxcbiAgICAgICAgICBpbmNsdWRlLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNPYmplY3QobWV0YSkpIHtcbiAgICAgIHJlbGF0aW9uc2hpcC5tZXRhID0gbWV0YVxuICAgIH1cbiAgICBpZiAoaXNPYmplY3QobGlua3MpKSB7XG4gICAgICByZWxhdGlvbnNoaXAubGlua3MgPSBsaW5rc1xuICAgIH1cbiAgICByZXR1cm4gcmVsYXRpb25zaGlwXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkYXRhIGZvciB0aGUgY3VycmVudCByZWxhdGlvbnNoaXAgb2JqZWN0IGZvciB0aGUgY3VycmVudCBzb3VyY2VcbiAgICogb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuaXRlbSAtIHRoZSBjdXJyZW50IGRhdGEgaXRlbVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge0Z1bmN0aW9ufSBhcmdzLmluY2x1ZGVcbiAgICogQHJldHVybiB7T2JqZWN0fSBkYXRhXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKGFyZ3MpIHtcbiAgICBjb25zdCB7IGl0ZW0sIHNvdXJjZSwgb3B0aW9ucywgaW5jbHVkZSB9ID0gYXJnc1xuICAgIGNvbnN0IHsgbmFtZSwgZGF0YSwgaW5jbHVkZWQsIG1ldGEgfSA9IGl0ZW1cbiAgICBpZiAoIWlzU3RyaW5nKG5hbWUpIHx8ICFyZWdpc3RyeVtuYW1lXSkge1xuICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybUVycm9yKGBNaXNzaW5nIFNjaGVtYTogJHtuYW1lfWAsIGFyZ3MpXG4gICAgfVxuICAgIGNvbnN0IHJlbFNjaGVtYSA9IHJlZ2lzdHJ5W25hbWVdXG4gICAgY29uc3QgdHlwZSA9IGdldFR5cGUoeyBkYXRhU2NoZW1hOiByZWxTY2hlbWEsIHNvdXJjZSwgb3B0aW9ucywgZGF0YSB9KVxuICAgIGNvbnN0IGlkID0gZ2V0SWQoeyBkYXRhU2NoZW1hOiByZWxTY2hlbWEsIHNvdXJjZSwgb3B0aW9ucywgZGF0YSB9KVxuICAgIGNvbnN0IHJlc3VsdCA9IHsgdHlwZSwgaWQgfVxuICAgIGlmIChpc09iamVjdChtZXRhKSkge1xuICAgICAgcmVzdWx0Lm1ldGEgPSBtZXRhXG4gICAgfVxuICAgIGlmIChpbmNsdWRlZCA9PT0gdHJ1ZSAmJiAhaW5jbHVkZS5leGlzdHMoeyB0eXBlLCBpZCB9KSkge1xuICAgICAgY29uc3QgcmVzb3VyY2UgPSB0cmFuc2Zvcm1EYXRhKHtcbiAgICAgICAgZG9jU2NoZW1hOiByZWxTY2hlbWEsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgaW5jbHVkZSxcbiAgICAgICAgX3R5cGU6IHR5cGUsXG4gICAgICAgIF9pZDogaWQsXG4gICAgICB9KVxuICAgICAgaW5jbHVkZS5pbmNsdWRlKHJlc291cmNlKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSBsaW5rcyBmb3IgdGhlIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFTY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmF0dHJpYnV0ZXNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLnJlbGF0aW9uc2hpcHNcbiAgICogQHJldHVybiB7T2JqZWN0fSBsaW5rc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0TGlua3MoYXJncykge1xuICAgIGNvbnN0IHsgZGF0YVNjaGVtYSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgaWYgKGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEubGlua3MpIHtcbiAgICAgIHJldHVybiBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmxpbmtzKG90aGVycylcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgbWV0YSBmb3IgdGhlIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFTY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmF0dHJpYnV0ZXNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLnJlbGF0aW9uc2hpcHNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmxpbmtzXG4gICAqIEByZXR1cm4ge09iamVjdH0gbWV0YVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0TWV0YShhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBpZiAoZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5tZXRhKSB7XG4gICAgICByZXR1cm4gZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5tZXRhKG90aGVycylcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBpbmNsdWRlIG9iamVjdFxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGluY2x1ZGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZUluY2x1ZGUoKSB7XG4gICAgY29uc3QgaW5jbHVkZWQgPSBbXVxuICAgIGNvbnN0IGFscmVhZHlJbmNsdWRlZCA9IHt9XG4gICAgcmV0dXJuIHtcbiAgICAgIC8qKlxuICAgICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEgZ2l2ZW4gcmVzb3VyY2UgaGFzIGFscmVhZHkgYmVlbiBpbmNsdWRlZFxuICAgICAgICogQHBhcmFtIHtPYmplY3R9IGFyZ3NcbiAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBhcmdzLmlkXG4gICAgICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgICAgICovXG4gICAgICBleGlzdHMoeyB0eXBlLCBpZCB9KSB7XG4gICAgICAgIHJldHVybiBhbHJlYWR5SW5jbHVkZWRbYCR7dHlwZX06JHtpZH1gXVxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBBZGQgYW4gaW5jbHVkZWQgcmVzb3VyY2UgdG8gdGhlIGluY2x1ZGVkIHNlY3Rpb24gb2YgdGhlIGRvY3VtZW50XG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gcmVzb3VyY2VcbiAgICAgICAqIEByZXR1cm4ge1VuZGVmaW5lZH1cbiAgICAgICAqL1xuICAgICAgaW5jbHVkZShyZXNvdXJjZSkge1xuICAgICAgICBhbHJlYWR5SW5jbHVkZWRbYCR7cmVzb3VyY2UudHlwZX06JHtyZXNvdXJjZS5pZH1gXSA9IHRydWVcbiAgICAgICAgaW5jbHVkZWQucHVzaChyZXNvdXJjZSlcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogUmV0dXJuIHRoZSBpbmNsdWRlZCBhcnJheSBpbiBpdHMgY3VycmVudCBzdGF0ZVxuICAgICAgICogQHJldHVybiB7T2JqZWN0W119XG4gICAgICAgKi9cbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGluY2x1ZGVkXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY3JlYXRlSW5jbHVkZSxcbiAgICBnZXRBdHRyaWJ1dGVzLFxuICAgIGdldElkLFxuICAgIGdldFJlbGF0aW9uc2hpcCxcbiAgICBnZXRSZWxhdGlvbnNoaXBzLFxuICAgIGdldFR5cGUsXG4gICAgcmVnaXN0ZXIsXG4gICAgdHJhbnNmb3JtLFxuICAgIHRyYW5zZm9ybURhdGEsXG4gICAgdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSxcbiAgICB0cmFuc2Zvcm1Tb3VyY2UsXG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi90cmFuc2Zvcm1hbGl6ZXIuanMiXSwibmFtZXMiOlsiY3JlYXRlVHJhbnNmb3JtYWxpemVyIiwiYmFzZU9wdGlvbnMiLCJyZWdpc3RyeSIsInJlZ2lzdGVyIiwibmFtZSIsInNjaGVtYSIsInNjaGVtYU9wdGlvbnMiLCJvcHRpb25zIiwiRXJyb3IiLCJ1bmRlZmluZWQiLCJnZXRTY2hlbWEiLCJ0cmFuc2Zvcm0iLCJzb3VyY2UiLCJvcHRzIiwiZG9jU2NoZW1hIiwiT2JqZWN0IiwiYXNzaWduIiwiaW5jbHVkZSIsImNyZWF0ZUluY2x1ZGUiLCJkYXRhIiwidHJhbnNmb3JtU291cmNlIiwiaW5jbHVkZWQiLCJnZXQiLCJkb2N1bWVudCIsImpzb25hcGkiLCJ2ZXJzaW9uIiwidG9wTGV2ZWwiLCJmb3JFYWNoIiwicHJvcCIsInJlc3VsdCIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ0cmFuc2Zvcm1EYXRhIiwiX3R5cGUiLCJfaWQiLCJkYXRhU2NoZW1hIiwic3RhdGUiLCJwYXJhbXMiLCJ0eXBlIiwiZ2V0VHlwZSIsImlkIiwiZ2V0SWQiLCJhdHRyaWJ1dGVzIiwiZ2V0QXR0cmlidXRlcyIsInJlbGF0aW9uc2hpcHMiLCJnZXRSZWxhdGlvbnNoaXBzIiwibGlua3MiLCJnZXRMaW5rcyIsIm1ldGEiLCJnZXRNZXRhIiwicmVzb3VyY2UiLCJvdGhlcnMiLCJyZWxTY2hlbWEiLCJrZXlzIiwicmVkdWNlIiwibWVtbyIsImtleSIsImZuIiwicmVsYXRpb25zaGlwIiwiZ2V0UmVsYXRpb25zaGlwIiwiaW52YWxpZERhdGEiLCJ0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhIiwiaXRlbSIsImV4aXN0cyIsImFscmVhZHlJbmNsdWRlZCIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7a0JBYXdCQSxxQjs7QUFieEI7Ozs7QUFRQTs7Ozs7QUFLZSxTQUFTQSxxQkFBVCxHQUFpRDtBQUFBLE1BQWxCQyxXQUFrQix1RUFB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QUFDQSxXQUFPO0FBQ0w7Ozs7Ozs7QUFPQUQsWUFSSyx5QkFRZ0I7QUFBQSxZQUFaekIsSUFBWSxTQUFaQSxJQUFZO0FBQUEsWUFBTkUsRUFBTSxTQUFOQSxFQUFNOztBQUNuQixlQUFPd0IsZ0JBQW1CMUIsSUFBbkIsU0FBMkJFLEVBQTNCLENBQVA7QUFDRCxPQVZJOzs7QUFZTDs7Ozs7QUFLQTFCLGFBakJLLG1CQWlCR29DLFFBakJILEVBaUJhO0FBQ2hCYyx3QkFBbUJkLFNBQVNaLElBQTVCLFNBQW9DWSxTQUFTVixFQUE3QyxJQUFxRCxJQUFyRDtBQUNBdEIsaUJBQVMrQyxJQUFULENBQWNmLFFBQWQ7QUFDRCxPQXBCSTs7O0FBc0JMOzs7O0FBSUEvQixTQTFCSyxpQkEwQkM7QUFDSixlQUFPRCxRQUFQO0FBQ0Q7QUE1QkksS0FBUDtBQThCRDs7QUFFRCxTQUFPO0FBQ0xILGdDQURLO0FBRUw0QixnQ0FGSztBQUdMRixnQkFISztBQUlMa0Isb0NBSks7QUFLTGQsc0NBTEs7QUFNTHRDLHdCQU5LO0FBT0xnQyxvQkFQSztBQVFMdkMsc0JBUks7QUFTTFEsd0JBVEs7QUFVTHdCLGdDQVZLO0FBV0w2Qix3REFYSztBQVlMNUM7QUFaSyxHQUFQO0FBY0QiLCJmaWxlIjoidHJhbnNmb3JtYWxpemVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNGdW5jdGlvbixcbiAgaXNPYmplY3QsXG4gIGlzU3RyaW5nLFxuICBUcmFuc2Zvcm1FcnJvcixcbiAgdmFsaWRhdGVTY2hlbWEsXG59IGZyb20gJy4vdXRpbHMnXG5cbi8qKlxuICogVHJhbnNmb3JtYWxpemVyIGZhY3RvcnkgZnVuY3Rpb24uXG4gKiBAcGFyYW0gIHtPYmplY3R9IFtiYXNlT3B0aW9ucz17fV1cbiAqIEByZXR1cm4ge09iamVjdH0gdHJhbnNmb3JtYWxpemVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zZm9ybWFsaXplcihiYXNlT3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHJlZ2lzdHJ5ID0ge31cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBzY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5uYW1lIC0gc2NoZW1hIG5hbWUvaWRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLnNjaGVtYSAtIHNjaGVtYSBkZWZpbml0aW9uXG4gICAqIEBwYXJhbSAge09iamVjdH0gW2FyZ3Mub3B0aW9ucz17fV0gLSBzY2hlbWEgb3B0aW9ucyB0byBiZSBtZXJnZWQgaW4gdG8gdHJhbnNmb3JtIG9wdGlvbnNcbiAgICogQHJldHVybiB7VW5kZWZpbmVkfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVnaXN0ZXIoeyBuYW1lLCBzY2hlbWEsIG9wdGlvbnM6IHNjaGVtYU9wdGlvbnMgfSkge1xuICAgIGlmICghaXNTdHJpbmcobmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBcIm5hbWVcIiBQcm9wZXJ0eSAobm9uIHN0cmluZyknKVxuICAgIH1cbiAgICByZWdpc3RyeVtuYW1lXSA9IHtcbiAgICAgIHNjaGVtYTogdmFsaWRhdGVTY2hlbWEoeyBuYW1lLCBzY2hlbWEgfSksXG4gICAgICBvcHRpb25zOiBzY2hlbWFPcHRpb25zLFxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc2NoZW1hIGZyb20gdGhlIHJlZ2lzdHJ5IGJ5IG5hbWVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBvcHRpb25zLm5hbWUgLSBzY2hlbWEgbmFtZS9pZFxuICAgKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgICAgICAtIHNjaGVtYVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0U2NoZW1hKHsgbmFtZSB9KSB7XG4gICAgcmV0dXJuIHJlZ2lzdHJ5W25hbWVdXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIHJhdyBkYXRhIGludG8gYSB2YWxpZCBKU09OIEFQSSBkb2N1bWVudFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLm5hbWUgLSB0aGUgdG9wIGxldmVsIHNjaGVtYSBuYW1lXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2UgLSBhIHNpbmdsZSBzb3VyY2Ugb2JqZWN0IG9yIGFuIGFyYXkgb2Ygc291cmNlIG9iamVjdHNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBbb3B0aW9ucz17fV0gLSBmdW5jdGlvbiBsZXZlbCBvcHRpb25zXG4gICAqIEByZXR1cm4ge09iamVjdH0gZG9jdW1lbnRcbiAgICovXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybSh7IG5hbWUsIHNvdXJjZSwgb3B0aW9uczogb3B0cyB9KSB7XG4gICAgaWYgKCFpc1N0cmluZyhuYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybUVycm9yKCdJbnZhbGlkIFwibmFtZVwiIFByb3BlcnR5IChub24gc3RyaW5nKScsIHsgbmFtZSwgc291cmNlLCBvcHRpb25zOiBvcHRzIH0pXG4gICAgfVxuICAgIGNvbnN0IGRvY1NjaGVtYSA9IHJlZ2lzdHJ5W25hbWVdXG4gICAgaWYgKCFkb2NTY2hlbWEpIHtcbiAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcihgTWlzc2luZyBTY2hlbWE6ICR7bmFtZX1gLCB7IG5hbWUsIHNvdXJjZSwgb3B0aW9uczogb3B0cyB9KVxuICAgIH1cbiAgICBjb25zdCBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgYmFzZU9wdGlvbnMsIG9wdHMpXG4gICAgY29uc3QgaW5jbHVkZSA9IGNyZWF0ZUluY2x1ZGUoeyBzb3VyY2UsIG9wdGlvbnMgfSlcbiAgICBjb25zdCBkYXRhID0gdHJhbnNmb3JtU291cmNlKHsgZG9jU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnMsIGluY2x1ZGUgfSlcbiAgICBjb25zdCBpbmNsdWRlZCA9IGluY2x1ZGUuZ2V0KClcbiAgICBjb25zdCBkb2N1bWVudCA9IHtcbiAgICAgIGpzb25hcGk6IHtcbiAgICAgICAgdmVyc2lvbjogJzEuMCcsXG4gICAgICB9LFxuICAgIH1cbiAgICAvLyBhZGQgdG9wIGxldmVsIHByb3BlcnRpZXMgaWYgYXZhaWxhYmxlXG4gICAgY29uc3QgdG9wTGV2ZWwgPSBbJ2xpbmtzJywgJ21ldGEnXVxuICAgIHRvcExldmVsLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgIGlmIChkb2NTY2hlbWEuc2NoZW1hW3Byb3BdKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGRvY1NjaGVtYS5zY2hlbWFbcHJvcF0oeyBzb3VyY2UsIG9wdGlvbnMsIGRhdGEsIGluY2x1ZGVkIH0pXG4gICAgICAgIGlmIChpc09iamVjdChyZXN1bHQpKSB7XG4gICAgICAgICAgZG9jdW1lbnRbcHJvcF0gPSByZXN1bHRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgZG9jdW1lbnQuZGF0YSA9IGRhdGFcbiAgICBpZiAoaW5jbHVkZWQubGVuZ3RoKSB7XG4gICAgICBkb2N1bWVudC5pbmNsdWRlZCA9IGluY2x1ZGVkXG4gICAgfVxuICAgIHJldHVybiBkb2N1bWVudFxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBzb3VyY2UgaW50byB0aGUgXCJwcmltYXJ5IGRhdGFcIiBvZiB0aGUgZG9jdW1lbnRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kb2NTY2hlbWEgLSB0aGUgdG9wIGxldmVsIHNjaGVtYSB1c2VkIGZvciB0cmFuc2Zvcm1pbmcgdGhlIGRvY3VtZW50XG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2UgLSBzb3VyY2UgZGF0YVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9ucyAtIGZ1bmN0aW9uIGxldmVsIG9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmluY2x1ZGUgLSBpbmNsdWRlIG9iamVjdFxuICAgKiBAcmV0dXJuIHtPYmplY3R8T2JqZWN0W119XG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1Tb3VyY2UoYXJncykge1xuICAgIGNvbnN0IHsgZG9jU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMsIGluY2x1ZGUgfSA9IGFyZ3NcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gc291cmNlLm1hcChkYXRhID0+IHRyYW5zZm9ybURhdGEoeyBkb2NTY2hlbWEsIHNvdXJjZSwgb3B0aW9uczogb3B0cywgZGF0YSwgaW5jbHVkZSB9KSlcbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zZm9ybURhdGEoeyBkb2NTY2hlbWEsIHNvdXJjZSwgb3B0aW9uczogb3B0cywgZGF0YTogc291cmNlLCBpbmNsdWRlIH0pXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIGEgc2luZ2xlIHNvdXJjZSBvYmplY3QgaW50byBhIHZhbGlkIHJlc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZG9jU2NoZW1hIC0gdGhlIHRvcCBsZXZlbCBzY2hlbWEgdXNlZCBmb3IgdHJhbnNmb3JtaW5nIHRoZSBkb2N1bWVudFxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlIC0gc291cmNlIGRhdGFcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnMgLSBmdW5jdGlvbiBsZXZlbCBvcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhIC0gY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pbmNsdWRlIC0gaW5jbHVkZSBvYmplY3RcbiAgICogQHBhcmFtICB7U3RyaW5nfSBbYXJncy5fdHlwZV0gLSAoZm9yIHVzZSBieSB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IFthcmdzLl9pZF0gLSAoZm9yIHVzZSBieSB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKVxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRvY1NjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhLCBpbmNsdWRlLCBfdHlwZSwgX2lkIH0gPSBhcmdzXG4gICAgLy8gY2FsbCBkYXRhU2NoZW1hIGlmIGRlZmluZWQgYW5kIHN3aXRjaCBjb250ZXh0cyBpZiBuZWNlc3NhcnlcbiAgICBsZXQgZGF0YVNjaGVtYSA9IGRvY1NjaGVtYVxuICAgIGlmIChpc0Z1bmN0aW9uKGRvY1NjaGVtYS5zY2hlbWEuZGF0YS5kYXRhU2NoZW1hKSkge1xuICAgICAgY29uc3QgbmFtZSA9IGRvY1NjaGVtYS5zY2hlbWEuZGF0YS5kYXRhU2NoZW1hKHsgc291cmNlLCBkYXRhLCBvcHRpb25zIH0pXG4gICAgICBpZiAobmFtZSAhPT0gZG9jU2NoZW1hLm5hbWUpIHtcbiAgICAgICAgZGF0YVNjaGVtYSA9IHJlZ2lzdHJ5W25hbWVdXG4gICAgICAgIGlmICghZGF0YVNjaGVtYSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBTY2hlbWE6ICR7bmFtZX1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHN0YXRlID0ge31cbiAgICBjb25zdCBwYXJhbXMgPSB7IGRhdGFTY2hlbWEsIHNvdXJjZSwgb3B0aW9ucywgZGF0YSwgc3RhdGUgfVxuICAgIGNvbnN0IHR5cGUgPSBwYXJhbXMudHlwZSA9IF90eXBlIHx8IGdldFR5cGUocGFyYW1zKVxuICAgIGNvbnN0IGlkID0gcGFyYW1zLmlkID0gX2lkIHx8IGdldElkKHBhcmFtcylcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gcGFyYW1zLmF0dHJpYnV0ZXMgPSBnZXRBdHRyaWJ1dGVzKHBhcmFtcylcbiAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gcGFyYW1zLnJlbGF0aW9uc2hpcHMgPSBnZXRSZWxhdGlvbnNoaXBzKHsgaW5jbHVkZSwgLi4ucGFyYW1zIH0pXG4gICAgY29uc3QgbGlua3MgPSBwYXJhbXMubGlua3MgPSBnZXRMaW5rcyhwYXJhbXMpXG4gICAgY29uc3QgbWV0YSA9IHBhcmFtcy5tZXRhID0gZ2V0TWV0YShwYXJhbXMpXG4gICAgLy8gYnVpbGQgcmVzdWx0aW5nIHJlc291cmNlXG4gICAgY29uc3QgcmVzb3VyY2UgPSB7IHR5cGUsIGlkIH1cbiAgICBpZiAoaXNPYmplY3QoYXR0cmlidXRlcykpIHtcbiAgICAgIHJlc291cmNlLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzXG4gICAgfVxuICAgIGlmIChpc09iamVjdChyZWxhdGlvbnNoaXBzKSkge1xuICAgICAgcmVzb3VyY2UucmVsYXRpb25zaGlwcyA9IHJlbGF0aW9uc2hpcHNcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KG1ldGEpKSB7XG4gICAgICByZXNvdXJjZS5tZXRhID0gbWV0YVxuICAgIH1cbiAgICBpZiAoaXNPYmplY3QobGlua3MpKSB7XG4gICAgICByZXNvdXJjZS5saW5rcyA9IGxpbmtzXG4gICAgfVxuICAgIHJldHVybiByZXNvdXJjZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgdHlwZSBmb3IgdGhlIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFTY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IHR5cGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGdldFR5cGUoYXJncykge1xuICAgIGNvbnN0IHsgZGF0YVNjaGVtYSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgY29uc3QgdHlwZSA9IGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEudHlwZShvdGhlcnMpXG4gICAgaWYgKCFpc1N0cmluZyh0eXBlKSkge1xuICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybUVycm9yKCdJbnZhbGlkIHR5cGUnLCBhcmdzKVxuICAgIH1cbiAgICByZXR1cm4gdHlwZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgaWQgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHJldHVybiB7U3RyaW5nfSBpZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0SWQoYXJncykge1xuICAgIGNvbnN0IHsgZGF0YVNjaGVtYSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgY29uc3QgaWQgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmlkKG90aGVycylcbiAgICBpZiAoIWlzU3RyaW5nKGlkKSkge1xuICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybUVycm9yKCdJbnZhbGlkIGlkJywgYXJncylcbiAgICB9XG4gICAgcmV0dXJuIGlkXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSBhdHRyaWJ1dGVzIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFTY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICogQHJldHVybiB7T2JqZWN0fSBhdHRyaWJ1dGVzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRBdHRyaWJ1dGVzKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGlmIChkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmF0dHJpYnV0ZXMob3RoZXJzKVxuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgcmVsYXRpb25zaGlwcyBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLmlkXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5hdHRyaWJ1dGVzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pbmNsdWRlXG4gICAqIEByZXR1cm4ge09iamVjdH0gcmVsYXRpb25zaGlwc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UmVsYXRpb25zaGlwcyhhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBjb25zdCByZWxTY2hlbWEgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLnJlbGF0aW9uc2hpcHNcbiAgICBpZiAocmVsU2NoZW1hKSB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVsU2NoZW1hKVxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IGtleXMucmVkdWNlKChtZW1vLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgZm4gPSByZWxTY2hlbWFba2V5XVxuICAgICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSBnZXRSZWxhdGlvbnNoaXAoeyBmbiwgLi4ub3RoZXJzIH0pXG4gICAgICAgIGlmIChpc09iamVjdChyZWxhdGlvbnNoaXApKSB7XG4gICAgICAgICAgbWVtb1trZXldID0gcmVsYXRpb25zaGlwXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbW9cbiAgICAgIH0sIHt9KVxuICAgICAgaWYgKCFPYmplY3Qua2V5cyhyZWxhdGlvbnNoaXBzKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlbGF0aW9uc2hpcHNcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgcmVsYXRpb25zaGlwIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcmVsYXRpb25zaGlwIG9mIHRoZVxuICAgKiBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5mblxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuaW5jbHVkZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IHJlbGF0aW9uc2hpcFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UmVsYXRpb25zaGlwKGFyZ3MpIHtcbiAgICBjb25zdCB7IGZuLCBpbmNsdWRlLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBjb25zdCByZXN1bHQgPSBmbihvdGhlcnMpXG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IHsgbWV0YSwgbGlua3MsIGRhdGEgfSA9IHJlc3VsdFxuICAgIGNvbnN0IGludmFsaWREYXRhID0gIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnXG4gICAgaWYgKCFsaW5rcyAmJiAhbWV0YSAmJiBpbnZhbGlkRGF0YSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBjb25zdCByZWxhdGlvbnNoaXAgPSB7fVxuICAgIGlmICghaW52YWxpZERhdGEpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIHJlbGF0aW9uc2hpcC5kYXRhID0gZGF0YS5tYXAoaXRlbSA9PiB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKHtcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIHNvdXJjZTogYXJncy5zb3VyY2UsXG4gICAgICAgICAgb3B0aW9uczogYXJncy5vcHRpb25zLFxuICAgICAgICAgIGluY2x1ZGUsXG4gICAgICAgIH0pKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVsYXRpb25zaGlwLmRhdGEgPSB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKHtcbiAgICAgICAgICBpdGVtOiBkYXRhLFxuICAgICAgICAgIHNvdXJjZTogYXJncy5zb3VyY2UsXG4gICAgICAgICAgb3B0aW9uczogYXJncy5vcHRpb25zLFxuICAgICAgICAgIGluY2x1ZGUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc09iamVjdChtZXRhKSkge1xuICAgICAgcmVsYXRpb25zaGlwLm1ldGEgPSBtZXRhXG4gICAgfVxuICAgIGlmIChpc09iamVjdChsaW5rcykpIHtcbiAgICAgIHJlbGF0aW9uc2hpcC5saW5rcyA9IGxpbmtzXG4gICAgfVxuICAgIHJldHVybiByZWxhdGlvbnNoaXBcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRhdGEgZm9yIHRoZSBjdXJyZW50IHJlbGF0aW9uc2hpcCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHNvdXJjZVxuICAgKiBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pdGVtIC0gdGhlIGN1cnJlbnQgZGF0YSBpdGVtXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7RnVuY3Rpb259IGFyZ3MuaW5jbHVkZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGRhdGFcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybVJlbGF0aW9uc2hpcERhdGEoYXJncykge1xuICAgIGNvbnN0IHsgaXRlbSwgc291cmNlLCBvcHRpb25zLCBpbmNsdWRlIH0gPSBhcmdzXG4gICAgY29uc3QgeyBuYW1lLCBkYXRhLCBpbmNsdWRlZCwgbWV0YSB9ID0gaXRlbVxuICAgIGlmICghaXNTdHJpbmcobmFtZSkgfHwgIXJlZ2lzdHJ5W25hbWVdKSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXJyb3IoYE1pc3NpbmcgU2NoZW1hOiAke25hbWV9YCwgYXJncylcbiAgICB9XG4gICAgY29uc3QgcmVsU2NoZW1hID0gcmVnaXN0cnlbbmFtZV1cbiAgICBjb25zdCB0eXBlID0gZ2V0VHlwZSh7IGRhdGFTY2hlbWE6IHJlbFNjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhIH0pXG4gICAgY29uc3QgaWQgPSBnZXRJZCh7IGRhdGFTY2hlbWE6IHJlbFNjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhIH0pXG4gICAgY29uc3QgcmVzdWx0ID0geyB0eXBlLCBpZCB9XG4gICAgaWYgKGlzT2JqZWN0KG1ldGEpKSB7XG4gICAgICByZXN1bHQubWV0YSA9IG1ldGFcbiAgICB9XG4gICAgaWYgKGluY2x1ZGVkID09PSB0cnVlICYmICFpbmNsdWRlLmV4aXN0cyh7IHR5cGUsIGlkIH0pKSB7XG4gICAgICBjb25zdCByZXNvdXJjZSA9IHRyYW5zZm9ybURhdGEoe1xuICAgICAgICBkb2NTY2hlbWE6IHJlbFNjaGVtYSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBkYXRhLFxuICAgICAgICBpbmNsdWRlLFxuICAgICAgICBfdHlwZTogdHlwZSxcbiAgICAgICAgX2lkOiBpZCxcbiAgICAgIH0pXG4gICAgICBpbmNsdWRlLmluY2x1ZGUocmVzb3VyY2UpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIGxpbmtzIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MucmVsYXRpb25zaGlwc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IGxpbmtzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRMaW5rcyhhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBpZiAoZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5saW5rcykge1xuICAgICAgcmV0dXJuIGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEubGlua3Mob3RoZXJzKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSBtZXRhIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MucmVsYXRpb25zaGlwc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MubGlua3NcbiAgICogQHJldHVybiB7T2JqZWN0fSBtZXRhXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRNZXRhKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGlmIChkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLm1ldGEpIHtcbiAgICAgIHJldHVybiBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLm1ldGEob3RoZXJzKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGluY2x1ZGUgb2JqZWN0XG4gICAqIEByZXR1cm4ge09iamVjdH0gaW5jbHVkZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlSW5jbHVkZSgpIHtcbiAgICBjb25zdCBpbmNsdWRlZCA9IFtdXG4gICAgY29uc3QgYWxyZWFkeUluY2x1ZGVkID0ge31cbiAgICByZXR1cm4ge1xuICAgICAgLyoqXG4gICAgICAgKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSBnaXZlbiByZXNvdXJjZSBoYXMgYWxyZWFkeSBiZWVuIGluY2x1ZGVkXG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gYXJnc1xuICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICAgKi9cbiAgICAgIGV4aXN0cyh7IHR5cGUsIGlkIH0pIHtcbiAgICAgICAgcmV0dXJuIGFscmVhZHlJbmNsdWRlZFtgJHt0eXBlfToke2lkfWBdXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIEFkZCBhbiBpbmNsdWRlZCByZXNvdXJjZSB0byB0aGUgaW5jbHVkZWQgc2VjdGlvbiBvZiB0aGUgZG9jdW1lbnRcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSByZXNvdXJjZVxuICAgICAgICogQHJldHVybiB7VW5kZWZpbmVkfVxuICAgICAgICovXG4gICAgICBpbmNsdWRlKHJlc291cmNlKSB7XG4gICAgICAgIGFscmVhZHlJbmNsdWRlZFtgJHtyZXNvdXJjZS50eXBlfToke3Jlc291cmNlLmlkfWBdID0gdHJ1ZVxuICAgICAgICBpbmNsdWRlZC5wdXNoKHJlc291cmNlKVxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBSZXR1cm4gdGhlIGluY2x1ZGVkIGFycmF5IGluIGl0cyBjdXJyZW50IHN0YXRlXG4gICAgICAgKiBAcmV0dXJuIHtPYmplY3RbXX1cbiAgICAgICAqL1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gaW5jbHVkZWRcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjcmVhdGVJbmNsdWRlLFxuICAgIGdldEF0dHJpYnV0ZXMsXG4gICAgZ2V0SWQsXG4gICAgZ2V0UmVsYXRpb25zaGlwLFxuICAgIGdldFJlbGF0aW9uc2hpcHMsXG4gICAgZ2V0U2NoZW1hLFxuICAgIGdldFR5cGUsXG4gICAgcmVnaXN0ZXIsXG4gICAgdHJhbnNmb3JtLFxuICAgIHRyYW5zZm9ybURhdGEsXG4gICAgdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSxcbiAgICB0cmFuc2Zvcm1Tb3VyY2UsXG4gIH1cbn1cbiJdfQ==
{
"name": "transformalizer",
"version": "1.0.0-beta.1",
"version": "1.0.0-beta.2",
"description": "a bare bones node module for building JSON API v1.0 compliant payloads",

@@ -5,0 +5,0 @@ "main": "./dist/transformalizer.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc