Socket
Socket
Sign inDemoInstall

sugarss

Package Overview
Dependencies
11
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.1.4 to 0.1.5

4

CHANGELOG.md
# Change Log
## 0.1.5
* Put comments after declaration semicolon.
* Use PostCSS 5.1.
## 0.1.4

@@ -4,0 +8,0 @@ * Fix parsing nested properties.

16

package.json
{
"name": "sugarss",
"version": "0.1.4",
"version": "0.1.5",
"description": "Indent-based CSS syntax for PostCSS",

@@ -17,3 +17,3 @@ "keywords": [

"dependencies": {
"postcss": "^5.0.21"
"postcss": "^5.1.0"
},

@@ -26,8 +26,8 @@ "devDependencies": {

"babel-preset-stage-0": "6.5.0",
"postcss-parser-tests": "5.0.7",
"babel-eslint": "6.0.4",
"babel-core": "6.9.1",
"babel-cli": "6.9.0",
"eslint": "2.11.0",
"ava": "0.15.1"
"postcss-parser-tests": "5.0.9",
"babel-eslint": "6.1.2",
"babel-core": "6.11.4",
"babel-cli": "6.11.4",
"eslint": "3.1.1",
"ava": "0.15.2"
},

@@ -34,0 +34,0 @@ "scripts": {

@@ -85,15 +85,3 @@ 'use strict';

node.source.end = { line: token[4], column: token[5] };
var text = token[1];
if (token[6] === 'inline') {
node.raws.inline = true;
text = text.slice(2);
} else {
text = text.slice(2, -2);
}
var match = text.match(/^(\s*)([^]*[^\s])(\s*)\n?$/);
node.text = match[2];
node.raws.left = match[1];
node.raws.inlineRight = match[3];
this.commentText(node, token);
};

@@ -159,2 +147,20 @@

var last = value[value.length - 1];
if (last && last[0] === 'comment') {
value.pop();
var comment = new _comment2.default();
this.current.push(comment);
comment.source = {
input: this.input,
start: { line: last[2], column: last[3] },
end: { line: last[4], column: last[5] }
};
var prev = value[value.length - 1];
if (prev && prev[0] === 'space') {
value.pop();
comment.raws.before = prev[1];
}
this.commentText(comment, last);
}
for (var _i = value.length - 1; _i > 0; _i--) {

@@ -316,2 +322,17 @@ var t = value[_i][0];

Parser.prototype.commentText = function commentText(node, token) {
var text = token[1];
if (token[6] === 'inline') {
node.raws.inline = true;
text = text.slice(2);
} else {
text = text.slice(2, -2);
}
var match = text.match(/^(\s*)([^]*[^\s])(\s*)\n?$/);
node.text = match[2];
node.raws.left = match[1];
node.raws.inlineRight = match[3];
};
// Errors

@@ -349,2 +370,2 @@

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,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RCxlQUFPLElBQVA7QUFDSCxLOzs7O3FCQUlELEssa0JBQU0sRyxFQUFLLEksRUFBTSxNLEVBQVE7QUFDckIsY0FBTSxLQUFLLEtBQUwsQ0FBVyxLQUFYLENBQWlCLEdBQWpCLEVBQXNCLElBQXRCLEVBQTRCLE1BQTVCLENBQU47QUFDSCxLOztxQkFFRCxhLDBCQUFjLEssRUFBTztBQUNqQixhQUFLLEtBQUwsQ0FBVyxzQkFBWCxFQUFtQyxNQUFNLENBQU4sQ0FBbkMsRUFBNkMsTUFBTSxDQUFOLENBQTdDO0FBQ0gsSzs7cUJBRUQsVyx3QkFBWSxLLEVBQU87QUFDZixhQUFLLEtBQUwsQ0FBVywwQkFBWCxFQUF1QyxNQUFNLENBQU4sQ0FBdkMsRUFBaUQsTUFBTSxDQUFOLENBQWpEO0FBQ0gsSzs7cUJBRUQsaUIsOEJBQWtCLEksRUFBTTtBQUNwQixhQUFLLEtBQUwsQ0FBVyxtQ0FBWCxFQUFnRCxLQUFLLE1BQXJELEVBQTZELENBQTdEO0FBQ0gsSzs7cUJBRUQsVyx3QkFBWSxRLEVBQVUsSSxFQUFNLEksRUFBTTtBQUM5QixZQUFJLG9CQUFtQixRQUFuQix5QkFBaUQsSUFBckQ7QUFDQSxhQUFLLEtBQUwsQ0FBVyxHQUFYLEVBQWdCLEtBQUssTUFBckIsRUFBNkIsQ0FBN0I7QUFDSCxLOztxQkFFRCxPLG9CQUFRLEssRUFBTztBQUNYLGFBQUssS0FBTCxDQUFXLGtDQUFYLEVBQStDLE1BQU0sQ0FBTixDQUEvQyxFQUF5RCxNQUFNLENBQU4sQ0FBekQ7QUFDSCxLOzs7OztrQkFuVGdCLE0iLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gJ3Bvc3Rjc3MvbGliL2RlY2xhcmF0aW9uJztcbmltcG9ydCBDb21tZW50ICAgICBmcm9tICdwb3N0Y3NzL2xpYi9jb21tZW50JztcbmltcG9ydCBBdFJ1bGUgICAgICBmcm9tICdwb3N0Y3NzL2xpYi9hdC1ydWxlJztcbmltcG9ydCBSdWxlICAgICAgICBmcm9tICdwb3N0Y3NzL2xpYi9ydWxlJztcbmltcG9ydCBSb290ICAgICAgICBmcm9tICdwb3N0Y3NzL2xpYi9yb290JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyc2VyIHtcblxuICAgIGNvbnN0cnVjdG9yKGlucHV0KSB7XG4gICAgICAgIHRoaXMuaW5wdXQgPSBpbnB1dDtcblxuICAgICAgICB0aGlzLnBvcyAgICAgPSAwO1xuICAgICAgICB0aGlzLnJvb3QgICAgPSBuZXcgUm9vdCgpO1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnJvb3Q7XG4gICAgICAgIHRoaXMuc3BhY2VzICA9ICcnO1xuXG4gICAgICAgIHRoaXMucHJldkluZGVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zdGVwICAgICAgID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMucm9vdC5zb3VyY2UgPSB7IGlucHV0LCBzdGFydDogeyBsaW5lOiAxLCBjb2x1bW46IDEgfSB9O1xuICAgIH1cblxuICAgIGxvb3AoKSB7XG4gICAgICAgIGxldCBwYXJ0O1xuICAgICAgICB3aGlsZSAoIHRoaXMucG9zIDwgdGhpcy5wYXJ0cy5sZW5ndGggKSB7XG4gICAgICAgICAgICBwYXJ0ID0gdGhpcy5wYXJ0c1t0aGlzLnBvc107XG5cbiAgICAgICAgICAgIGlmICggcGFydC5jb21tZW50ICkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tbWVudChwYXJ0KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHBhcnQuYXRydWxlICkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXRydWxlKHBhcnQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggcGFydC5jb2xvbiApIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IHRoaXMubmV4dE5vbkNvbW1lbnQodGhpcy5wb3MpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBuZXh0LmVuZCB8fCBuZXh0LmF0cnVsZSApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWNsKHBhcnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtb3JlSW5kZW50ID0gbmV4dC5pbmRlbnQubGVuZ3RoID4gcGFydC5pbmRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoICFtb3JlSW5kZW50ICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWNsKHBhcnQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBtb3JlSW5kZW50ICYmIG5leHQuY29sb24gKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGUocGFydCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIG1vcmVJbmRlbnQgJiYgIW5leHQuY29sb24gKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY2wocGFydCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBwYXJ0LmVuZCApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvb3QucmF3cy5hZnRlciA9IHBhcnQuYmVmb3JlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGUocGFydCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucG9zICs9IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb21tZW50KHBhcnQpIHtcbiAgICAgICAgbGV0IHRva2VuID0gcGFydC50b2tlbnNbMF07XG4gICAgICAgIGxldCBub2RlICA9IG5ldyBDb21tZW50KCk7XG4gICAgICAgIHRoaXMuaW5pdChub2RlLCBwYXJ0KTtcbiAgICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlbls0XSwgY29sdW1uOiB0b2tlbls1XSB9O1xuXG4gICAgICAgIGxldCB0ZXh0ID0gdG9rZW5bMV07XG4gICAgICAgIGlmICggdG9rZW5bNl0gPT09ICdpbmxpbmUnICkge1xuICAgICAgICAgICAgbm9kZS5yYXdzLmlubGluZSA9IHRydWU7XG4gICAgICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZSgyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDIsIC0yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtYXRjaCA9IHRleHQubWF0Y2goL14oXFxzKikoW15dKlteXFxzXSkoXFxzKilcXG4/JC8pO1xuICAgICAgICBub2RlLnRleHQgPSBtYXRjaFsyXTtcbiAgICAgICAgbm9kZS5yYXdzLmxlZnQgPSBtYXRjaFsxXTtcbiAgICAgICAgbm9kZS5yYXdzLmlubGluZVJpZ2h0ID0gbWF0Y2hbM107XG4gICAgfVxuXG4gICAgYXRydWxlKHBhcnQpIHtcbiAgICAgICAgbGV0IGF0d29yZCA9IHBhcnQudG9rZW5zWzBdO1xuICAgICAgICBsZXQgcGFyYW1zID0gcGFydC50b2tlbnMuc2xpY2UoMSk7XG5cbiAgICAgICAgbGV0IG5vZGUgID0gbmV3IEF0UnVsZSgpO1xuICAgICAgICBub2RlLm5hbWUgPSBhdHdvcmRbMV0uc2xpY2UoMSk7XG4gICAgICAgIHRoaXMuaW5pdChub2RlLCBwYXJ0KTtcblxuICAgICAgICBpZiAoIG5vZGUubmFtZSA9PT0gJycgKSB0aGlzLnVubmFtZWRBdHJ1bGUoYXR3b3JkKTtcblxuICAgICAgICB3aGlsZSAoICFwYXJ0LmVuZCAmJiBwYXJ0Lmxhc3RDb21tYSApIHtcbiAgICAgICAgICAgIHRoaXMucG9zICs9IDE7XG4gICAgICAgICAgICBwYXJ0ID0gdGhpcy5wYXJ0c1t0aGlzLnBvc107XG4gICAgICAgICAgICBwYXJhbXMucHVzaChbJ3NwYWNlJywgcGFydC5iZWZvcmUgKyBwYXJ0LmluZGVudF0pO1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmNvbmNhdChwYXJ0LnRva2Vucyk7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlLnJhd3MuYWZ0ZXJOYW1lID0gdGhpcy5maXJzdFNwYWNlcyhwYXJhbXMpO1xuICAgICAgICB0aGlzLmtlZXBUcmFpbGluZ1NwYWNlKG5vZGUsIHBhcmFtcyk7XG4gICAgICAgIHRoaXMucmF3KG5vZGUsICdwYXJhbXMnLCBwYXJhbXMsIGF0d29yZCk7XG4gICAgfVxuXG4gICAgZGVjbChwYXJ0KSB7XG4gICAgICAgIGxldCBub2RlID0gbmV3IERlY2xhcmF0aW9uKCk7XG4gICAgICAgIHRoaXMuaW5pdChub2RlLCBwYXJ0KTtcblxuICAgICAgICBsZXQgYmV0d2VlbiA9ICcnO1xuICAgICAgICBsZXQgY29sb24gICA9IDA7XG4gICAgICAgIGxldCB2YWx1ZSAgID0gW107XG4gICAgICAgIGxldCBwcm9wICAgID0gJyc7XG4gICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IHBhcnQudG9rZW5zLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgbGV0IHRva2VuID0gcGFydC50b2tlbnNbaV07XG4gICAgICAgICAgICBpZiAoIHRva2VuWzBdID09PSAnOicgKSB7XG4gICAgICAgICAgICAgICAgYmV0d2VlbiArPSB0b2tlblsxXTtcbiAgICAgICAgICAgICAgICBjb2xvbiAgICA9IHRva2VuO1xuICAgICAgICAgICAgICAgIHZhbHVlICAgID0gcGFydC50b2tlbnMuc2xpY2UoaSArIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggdG9rZW5bMF0gPT09ICdjb21tZW50JyB8fCB0b2tlblswXSA9PT0gJ3NwYWNlJyApIHtcbiAgICAgICAgICAgICAgICBiZXR3ZWVuICs9IHRva2VuWzFdO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggYmV0d2VlbiAhPT0gJycgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iYWRQcm9wKHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJvcCArPSB0b2tlblsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggcHJvcCA9PT0gJycgKSB0aGlzLnVubmFtZWREZWNsKHBhcnQudG9rZW5zWzBdKTtcbiAgICAgICAgbm9kZS5wcm9wID0gcHJvcDtcblxuICAgICAgICBsZXQgbmV4dCA9IHRoaXMucGFydHNbdGhpcy5wb3MgKyAxXTtcblxuICAgICAgICB3aGlsZSAoICFuZXh0LmVuZCAmJiAhbmV4dC5hdHJ1bGUgJiYgIW5leHQuY29sb24gJiZcbiAgICAgICAgICAgICAgICBuZXh0LmluZGVudC5sZW5ndGggPiBwYXJ0LmluZGVudC5sZW5ndGggKSB7XG4gICAgICAgICAgICB2YWx1ZS5wdXNoKFsnc3BhY2UnLCBuZXh0LmJlZm9yZSArIG5leHQuaW5kZW50XSk7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmNvbmNhdChuZXh0LnRva2Vucyk7XG4gICAgICAgICAgICB0aGlzLnBvcyArPSAxO1xuICAgICAgICAgICAgbmV4dCA9IHRoaXMucGFydHNbdGhpcy5wb3MgKyAxXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoIGxldCBpID0gdmFsdWUubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSApIHtcbiAgICAgICAgICAgIGxldCB0ID0gdmFsdWVbaV1bMF07XG4gICAgICAgICAgICBpZiAoIHQgPT09ICd3b3JkJyAmJiB2YWx1ZVtpXVsxXSA9PT0gJyFpbXBvcnRhbnQnICkge1xuICAgICAgICAgICAgICAgIG5vZGUuaW1wb3J0YW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoIGkgPiAwICYmIHZhbHVlW2kgLSAxXVswXSA9PT0gJ3NwYWNlJyApIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5yYXdzLmltcG9ydGFudCA9IHZhbHVlW2kgLSAxXVsxXSArICchaW1wb3J0YW50JztcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUuc3BsaWNlKGkgLSAxLCAyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJhd3MuaW1wb3J0YW50ID0gJyFpbXBvcnRhbnQnO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggdCAhPT0gJ3NwYWNlJyAmJiB0ICE9PSAnbmV3bGluZScgJiYgdCAhPT0gJ2NvbW1lbnQnICkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gPSBiZXR3ZWVuICsgdGhpcy5maXJzdFNwYWNlcyh2YWx1ZSk7XG4gICAgICAgIHRoaXMucmF3KG5vZGUsICd2YWx1ZScsIHZhbHVlLCBjb2xvbik7XG4gICAgfVxuXG4gICAgcnVsZShwYXJ0KSB7XG4gICAgICAgIGxldCBub2RlID0gbmV3IFJ1bGUoKTtcbiAgICAgICAgdGhpcy5pbml0KG5vZGUsIHBhcnQpO1xuXG4gICAgICAgIGxldCBzZWxlY3RvciA9IHBhcnQudG9rZW5zO1xuICAgICAgICBsZXQgbmV4dCAgICAgPSB0aGlzLnBhcnRzW3RoaXMucG9zICsgMV07XG5cbiAgICAgICAgd2hpbGUgKCAhbmV4dC5lbmQgJiYgbmV4dC5pbmRlbnQubGVuZ3RoID09PSBwYXJ0LmluZGVudC5sZW5ndGggKSB7XG4gICAgICAgICAgICBzZWxlY3Rvci5wdXNoKFsnc3BhY2UnLCBuZXh0LmJlZm9yZSArIG5leHQuaW5kZW50XSk7XG4gICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLmNvbmNhdChuZXh0LnRva2Vucyk7XG4gICAgICAgICAgICB0aGlzLnBvcyArPSAxO1xuICAgICAgICAgICAgbmV4dCA9IHRoaXMucGFydHNbdGhpcy5wb3MgKyAxXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMua2VlcFRyYWlsaW5nU3BhY2Uobm9kZSwgc2VsZWN0b3IpO1xuICAgICAgICB0aGlzLnJhdyhub2RlLCAnc2VsZWN0b3InLCBzZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgLyogSGVscGVycyAqL1xuXG4gICAgaW5kZW50KHBhcnQpIHtcbiAgICAgICAgbGV0IGluZGVudCA9IHBhcnQuaW5kZW50Lmxlbmd0aDtcbiAgICAgICAgbGV0IGlzUHJldiA9IHR5cGVvZiB0aGlzLnByZXZJbmRlbnQgIT09ICd1bmRlZmluZWQnO1xuXG4gICAgICAgIGlmICggIWlzUHJldiAmJiBpbmRlbnQgKSB0aGlzLmluZGVudGVkRmlyc3RMaW5lKHBhcnQpO1xuXG4gICAgICAgIGlmICggIXRoaXMuc3RlcCAmJiBpbmRlbnQgKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXAgPSBpbmRlbnQ7XG4gICAgICAgICAgICB0aGlzLnJvb3QucmF3cy5pbmRlbnQgPSBwYXJ0LmluZGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggaXNQcmV2ICYmIHRoaXMucHJldkluZGVudCAhPT0gaW5kZW50ICkge1xuICAgICAgICAgICAgbGV0IGRpZmYgPSBpbmRlbnQgLSB0aGlzLnByZXZJbmRlbnQ7XG4gICAgICAgICAgICBpZiAoIGRpZmYgPiAwICkge1xuICAgICAgICAgICAgICAgIGlmICggZGlmZiAhPT0gdGhpcy5zdGVwICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndyb25nSW5kZW50KHRoaXMucHJldkluZGVudCArIHRoaXMuc3RlcCwgaW5kZW50LCBwYXJ0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmN1cnJlbnQubGFzdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBkaWZmICUgdGhpcy5zdGVwICE9PSAwICkge1xuICAgICAgICAgICAgICAgIGxldCBtID0gaW5kZW50ICsgZGlmZiAlIHRoaXMuc3RlcDtcbiAgICAgICAgICAgICAgICB0aGlzLndyb25nSW5kZW50KGAkeyBtIH0gb3IgJHsgbSArIHRoaXMuc3RlcCB9YCwgaW5kZW50LCBwYXJ0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgLWRpZmYgLyB0aGlzLnN0ZXA7IGkrKyApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5jdXJyZW50LnBhcmVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZXZJbmRlbnQgPSBpbmRlbnQ7XG4gICAgfVxuXG4gICAgaW5pdChub2RlLCBwYXJ0KSB7XG4gICAgICAgIHRoaXMuaW5kZW50KHBhcnQpO1xuXG4gICAgICAgIGlmICggIXRoaXMuY3VycmVudC5ub2RlcyApIHRoaXMuY3VycmVudC5ub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmN1cnJlbnQucHVzaChub2RlKTtcblxuICAgICAgICBub2RlLnJhd3MuYmVmb3JlID0gcGFydC5iZWZvcmUgKyBwYXJ0LmluZGVudDtcbiAgICAgICAgbm9kZS5zb3VyY2UgPSB7XG4gICAgICAgICAgICBzdGFydDogeyBsaW5lOiBwYXJ0LnRva2Vuc1swXVsyXSwgY29sdW1uOiBwYXJ0LnRva2Vuc1swXVszXSB9LFxuICAgICAgICAgICAgaW5wdXQ6IHRoaXMuaW5wdXRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBrZWVwVHJhaWxpbmdTcGFjZShub2RlLCB0b2tlbnMpIHtcbiAgICAgICAgbGV0IGxhc3RTcGFjZSA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICggbGFzdFNwYWNlICYmIGxhc3RTcGFjZVswXSA9PT0gJ3NwYWNlJyApIHtcbiAgICAgICAgICAgIHRva2Vucy5wb3AoKTtcbiAgICAgICAgICAgIG5vZGUucmF3cy5zc3NCZXR3ZWVuID0gbGFzdFNwYWNlWzFdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmlyc3RTcGFjZXModG9rZW5zKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgaWYgKCB0b2tlbnNbaV1bMF0gPT09ICdzcGFjZScgfHwgdG9rZW5zW2ldWzBdID09PSAnbmV3bGluZScgKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IHRva2Vucy5zaGlmdCgpWzFdO1xuICAgICAgICAgICAgICAgIGkgLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICByYXcobm9kZSwgcHJvcCwgdG9rZW5zLCBhbHRMYXN0KSB7XG4gICAgICAgIGxldCB0b2tlbiwgdHlwZTtcbiAgICAgICAgbGV0IGxlbmd0aCA9IHRva2Vucy5sZW5ndGg7XG4gICAgICAgIGxldCB2YWx1ZSAgPSAnJztcbiAgICAgICAgbGV0IGNsZWFuICA9IHRydWU7XG4gICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxICkge1xuICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgICAgICAgICB0eXBlICA9IHRva2VuWzBdO1xuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnY29tbWVudCcgfHwgdHlwZSA9PT0gJ3NwYWNlJyAmJiBpID09PSBsZW5ndGggLSAxICkge1xuICAgICAgICAgICAgICAgIGNsZWFuID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlICs9IHRva2VuWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICggIWNsZWFuICkge1xuICAgICAgICAgICAgbGV0IHNzcyA9IHRva2Vucy5yZWR1Y2UoIChhbGwsIGkpID0+IGFsbCArIGlbMV0sICcnKTtcbiAgICAgICAgICAgIGxldCByYXcgPSB0b2tlbnMucmVkdWNlKCAoYWxsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCBpWzBdID09PSAnY29tbWVudCcgJiYgaVs2XSA9PT0gJ2lubGluZScgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhbGwgKyAnLyogJyArIGlbMV0uc2xpY2UoMikudHJpbSgpICsgJyAqLyc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFsbCArIGlbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgJycpO1xuICAgICAgICAgICAgbm9kZS5yYXdzW3Byb3BdID0geyB2YWx1ZSwgcmF3IH07XG4gICAgICAgICAgICBpZiAoIHNzcyAhPT0gcmF3ICkgbm9kZS5yYXdzW3Byb3BdLnNzcyA9IHNzcztcbiAgICAgICAgfVxuICAgICAgICBub2RlW3Byb3BdID0gdmFsdWU7XG5cbiAgICAgICAgbGV0IGxhc3QgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdIHx8IGFsdExhc3Q7XG4gICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHtcbiAgICAgICAgICAgIGxpbmU6ICAgbGFzdFs0XSB8fCBsYXN0WzJdLFxuICAgICAgICAgICAgY29sdW1uOiBsYXN0WzVdIHx8IGxhc3RbM11cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZXh0Tm9uQ29tbWVudChwb3MpIHtcbiAgICAgICAgbGV0IG5leHQgPSBwb3M7XG4gICAgICAgIGxldCBwYXJ0O1xuICAgICAgICB3aGlsZSAoIG5leHQgPCB0aGlzLnBhcnRzLmxlbmd0aCApIHtcbiAgICAgICAgICAgIG5leHQgKz0gMTtcbiAgICAgICAgICAgIHBhcnQgPSB0aGlzLnBhcnRzW25leHRdO1xuICAgICAgICAgICAgaWYgKCBwYXJ0LmVuZCB8fCAhcGFydC5jb21tZW50ICkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgfVxuXG4gICAgLy8gRXJyb3JzXG5cbiAgICBlcnJvcihtc2csIGxpbmUsIGNvbHVtbikge1xuICAgICAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKG1zZywgbGluZSwgY29sdW1uKTtcbiAgICB9XG5cbiAgICB1bm5hbWVkQXRydWxlKHRva2VuKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoJ0F0LXJ1bGUgd2l0aG91dCBuYW1lJywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICB9XG5cbiAgICB1bm5hbWVkRGVjbCh0b2tlbikge1xuICAgICAgICB0aGlzLmVycm9yKCdEZWNsYXJhdGlvbiB3aXRob3V0IG5hbWUnLCB0b2tlblsyXSwgdG9rZW5bM10pO1xuICAgIH1cblxuICAgIGluZGVudGVkRmlyc3RMaW5lKHBhcnQpIHtcbiAgICAgICAgdGhpcy5lcnJvcignRmlyc3QgbGluZSBzaG91bGQgbm90IGhhdmUgaW5kZW50JywgcGFydC5udW1iZXIsIDEpO1xuICAgIH1cblxuICAgIHdyb25nSW5kZW50KGV4cGVjdGVkLCByZWFsLCBwYXJ0KSB7XG4gICAgICAgIGxldCBtc2cgPSBgRXhwZWN0ZWQgJHsgZXhwZWN0ZWQgfSBpbmRlbnQsIGJ1dCBnZXQgJHsgcmVhbCB9YDtcbiAgICAgICAgdGhpcy5lcnJvcihtc2csIHBhcnQubnVtYmVyLCAxKTtcbiAgICB9XG5cbiAgICBiYWRQcm9wKHRva2VuKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoJ1VuZXhwZWN0ZWQgc2VwYXJhdG9yIGluIHByb3BlcnR5JywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICB9XG5cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,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TztBQUNmLGFBQUssS0FBTCxDQUFXLDBCQUFYLEVBQXVDLE1BQU0sQ0FBTixDQUF2QyxFQUFpRCxNQUFNLENBQU4sQ0FBakQ7QUFDSCxLOztxQkFFRCxpQiw4QkFBa0IsSSxFQUFNO0FBQ3BCLGFBQUssS0FBTCxDQUFXLG1DQUFYLEVBQWdELEtBQUssTUFBckQsRUFBNkQsQ0FBN0Q7QUFDSCxLOztxQkFFRCxXLHdCQUFZLFEsRUFBVSxJLEVBQU0sSSxFQUFNO0FBQzlCLFlBQUksb0JBQW1CLFFBQW5CLHlCQUFpRCxJQUFyRDtBQUNBLGFBQUssS0FBTCxDQUFXLEdBQVgsRUFBZ0IsS0FBSyxNQUFyQixFQUE2QixDQUE3QjtBQUNILEs7O3FCQUVELE8sb0JBQVEsSyxFQUFPO0FBQ1gsYUFBSyxLQUFMLENBQVcsa0NBQVgsRUFBK0MsTUFBTSxDQUFOLENBQS9DLEVBQXlELE1BQU0sQ0FBTixDQUF6RDtBQUNILEs7Ozs7O2tCQXhVZ0IsTSIsImZpbGUiOiJwYXJzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAncG9zdGNzcy9saWIvZGVjbGFyYXRpb24nO1xuaW1wb3J0IENvbW1lbnQgICAgIGZyb20gJ3Bvc3Rjc3MvbGliL2NvbW1lbnQnO1xuaW1wb3J0IEF0UnVsZSAgICAgIGZyb20gJ3Bvc3Rjc3MvbGliL2F0LXJ1bGUnO1xuaW1wb3J0IFJ1bGUgICAgICAgIGZyb20gJ3Bvc3Rjc3MvbGliL3J1bGUnO1xuaW1wb3J0IFJvb3QgICAgICAgIGZyb20gJ3Bvc3Rjc3MvbGliL3Jvb3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJzZXIge1xuXG4gICAgY29uc3RydWN0b3IoaW5wdXQpIHtcbiAgICAgICAgdGhpcy5pbnB1dCA9IGlucHV0O1xuXG4gICAgICAgIHRoaXMucG9zICAgICA9IDA7XG4gICAgICAgIHRoaXMucm9vdCAgICA9IG5ldyBSb290KCk7XG4gICAgICAgIHRoaXMuY3VycmVudCA9IHRoaXMucm9vdDtcbiAgICAgICAgdGhpcy5zcGFjZXMgID0gJyc7XG5cbiAgICAgICAgdGhpcy5wcmV2SW5kZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN0ZXAgICAgICAgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5yb290LnNvdXJjZSA9IHsgaW5wdXQsIHN0YXJ0OiB7IGxpbmU6IDEsIGNvbHVtbjogMSB9IH07XG4gICAgfVxuXG4gICAgbG9vcCgpIHtcbiAgICAgICAgbGV0IHBhcnQ7XG4gICAgICAgIHdoaWxlICggdGhpcy5wb3MgPCB0aGlzLnBhcnRzLmxlbmd0aCApIHtcbiAgICAgICAgICAgIHBhcnQgPSB0aGlzLnBhcnRzW3RoaXMucG9zXTtcblxuICAgICAgICAgICAgaWYgKCBwYXJ0LmNvbW1lbnQgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21tZW50KHBhcnQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggcGFydC5hdHJ1bGUgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHJ1bGUocGFydCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBwYXJ0LmNvbG9uICkge1xuICAgICAgICAgICAgICAgIGxldCBuZXh0ID0gdGhpcy5uZXh0Tm9uQ29tbWVudCh0aGlzLnBvcyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIG5leHQuZW5kIHx8IG5leHQuYXRydWxlICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY2wocGFydCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vcmVJbmRlbnQgPSBuZXh0LmluZGVudC5sZW5ndGggPiBwYXJ0LmluZGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGlmICggIW1vcmVJbmRlbnQgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY2wocGFydCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIG1vcmVJbmRlbnQgJiYgbmV4dC5jb2xvbiApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZShwYXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggbW9yZUluZGVudCAmJiAhbmV4dC5jb2xvbiApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjbChwYXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHBhcnQuZW5kICkge1xuICAgICAgICAgICAgICAgIHRoaXMucm9vdC5yYXdzLmFmdGVyID0gcGFydC5iZWZvcmU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucnVsZShwYXJ0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5wb3MgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbW1lbnQocGFydCkge1xuICAgICAgICBsZXQgdG9rZW4gPSBwYXJ0LnRva2Vuc1swXTtcbiAgICAgICAgbGV0IG5vZGUgID0gbmV3IENvbW1lbnQoKTtcbiAgICAgICAgdGhpcy5pbml0KG5vZGUsIHBhcnQpO1xuICAgICAgICBub2RlLnNvdXJjZS5lbmQgPSB7IGxpbmU6IHRva2VuWzRdLCBjb2x1bW46IHRva2VuWzVdIH07XG4gICAgICAgIHRoaXMuY29tbWVudFRleHQobm9kZSwgdG9rZW4pO1xuICAgIH1cblxuICAgIGF0cnVsZShwYXJ0KSB7XG4gICAgICAgIGxldCBhdHdvcmQgPSBwYXJ0LnRva2Vuc1swXTtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHBhcnQudG9rZW5zLnNsaWNlKDEpO1xuXG4gICAgICAgIGxldCBub2RlICA9IG5ldyBBdFJ1bGUoKTtcbiAgICAgICAgbm9kZS5uYW1lID0gYXR3b3JkWzFdLnNsaWNlKDEpO1xuICAgICAgICB0aGlzLmluaXQobm9kZSwgcGFydCk7XG5cbiAgICAgICAgaWYgKCBub2RlLm5hbWUgPT09ICcnICkgdGhpcy51bm5hbWVkQXRydWxlKGF0d29yZCk7XG5cbiAgICAgICAgd2hpbGUgKCAhcGFydC5lbmQgJiYgcGFydC5sYXN0Q29tbWEgKSB7XG4gICAgICAgICAgICB0aGlzLnBvcyArPSAxO1xuICAgICAgICAgICAgcGFydCA9IHRoaXMucGFydHNbdGhpcy5wb3NdO1xuICAgICAgICAgICAgcGFyYW1zLnB1c2goWydzcGFjZScsIHBhcnQuYmVmb3JlICsgcGFydC5pbmRlbnRdKTtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5jb25jYXQocGFydC50b2tlbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5yYXdzLmFmdGVyTmFtZSA9IHRoaXMuZmlyc3RTcGFjZXMocGFyYW1zKTtcbiAgICAgICAgdGhpcy5rZWVwVHJhaWxpbmdTcGFjZShub2RlLCBwYXJhbXMpO1xuICAgICAgICB0aGlzLnJhdyhub2RlLCAncGFyYW1zJywgcGFyYW1zLCBhdHdvcmQpO1xuICAgIH1cblxuICAgIGRlY2wocGFydCkge1xuICAgICAgICBsZXQgbm9kZSA9IG5ldyBEZWNsYXJhdGlvbigpO1xuICAgICAgICB0aGlzLmluaXQobm9kZSwgcGFydCk7XG5cbiAgICAgICAgbGV0IGJldHdlZW4gPSAnJztcbiAgICAgICAgbGV0IGNvbG9uICAgPSAwO1xuICAgICAgICBsZXQgdmFsdWUgICA9IFtdO1xuICAgICAgICBsZXQgcHJvcCAgICA9ICcnO1xuICAgICAgICBmb3IgKCBsZXQgaSA9IDA7IGkgPCBwYXJ0LnRva2Vucy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIGxldCB0b2tlbiA9IHBhcnQudG9rZW5zW2ldO1xuICAgICAgICAgICAgaWYgKCB0b2tlblswXSA9PT0gJzonICkge1xuICAgICAgICAgICAgICAgIGJldHdlZW4gKz0gdG9rZW5bMV07XG4gICAgICAgICAgICAgICAgY29sb24gICAgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICB2YWx1ZSAgICA9IHBhcnQudG9rZW5zLnNsaWNlKGkgKyAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHRva2VuWzBdID09PSAnY29tbWVudCcgfHwgdG9rZW5bMF0gPT09ICdzcGFjZScgKSB7XG4gICAgICAgICAgICAgICAgYmV0d2VlbiArPSB0b2tlblsxXTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIGJldHdlZW4gIT09ICcnICkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmFkUHJvcCh0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHByb3AgKz0gdG9rZW5bMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHByb3AgPT09ICcnICkgdGhpcy51bm5hbWVkRGVjbChwYXJ0LnRva2Vuc1swXSk7XG4gICAgICAgIG5vZGUucHJvcCA9IHByb3A7XG5cbiAgICAgICAgbGV0IG5leHQgPSB0aGlzLnBhcnRzW3RoaXMucG9zICsgMV07XG5cbiAgICAgICAgd2hpbGUgKCAhbmV4dC5lbmQgJiYgIW5leHQuYXRydWxlICYmICFuZXh0LmNvbG9uICYmXG4gICAgICAgICAgICAgICAgbmV4dC5pbmRlbnQubGVuZ3RoID4gcGFydC5pbmRlbnQubGVuZ3RoICkge1xuICAgICAgICAgICAgdmFsdWUucHVzaChbJ3NwYWNlJywgbmV4dC5iZWZvcmUgKyBuZXh0LmluZGVudF0pO1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5jb25jYXQobmV4dC50b2tlbnMpO1xuICAgICAgICAgICAgdGhpcy5wb3MgKz0gMTtcbiAgICAgICAgICAgIG5leHQgPSB0aGlzLnBhcnRzW3RoaXMucG9zICsgMV07XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGFzdCA9IHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoIGxhc3QgJiYgbGFzdFswXSA9PT0gJ2NvbW1lbnQnICkge1xuICAgICAgICAgICAgdmFsdWUucG9wKCk7XG4gICAgICAgICAgICBsZXQgY29tbWVudCA9IG5ldyBDb21tZW50KCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQucHVzaChjb21tZW50KTtcbiAgICAgICAgICAgIGNvbW1lbnQuc291cmNlID0ge1xuICAgICAgICAgICAgICAgIGlucHV0OiB0aGlzLmlucHV0LFxuICAgICAgICAgICAgICAgIHN0YXJ0OiB7IGxpbmU6IGxhc3RbMl0sIGNvbHVtbjogbGFzdFszXSB9LFxuICAgICAgICAgICAgICAgIGVuZDogICB7IGxpbmU6IGxhc3RbNF0sIGNvbHVtbjogbGFzdFs1XSB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IHByZXYgPSB2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGlmICggcHJldiAmJiBwcmV2WzBdID09PSAnc3BhY2UnICkge1xuICAgICAgICAgICAgICAgIHZhbHVlLnBvcCgpO1xuICAgICAgICAgICAgICAgIGNvbW1lbnQucmF3cy5iZWZvcmUgPSBwcmV2WzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb21tZW50VGV4dChjb21tZW50LCBsYXN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoIGxldCBpID0gdmFsdWUubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSApIHtcbiAgICAgICAgICAgIGxldCB0ID0gdmFsdWVbaV1bMF07XG4gICAgICAgICAgICBpZiAoIHQgPT09ICd3b3JkJyAmJiB2YWx1ZVtpXVsxXSA9PT0gJyFpbXBvcnRhbnQnICkge1xuICAgICAgICAgICAgICAgIG5vZGUuaW1wb3J0YW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoIGkgPiAwICYmIHZhbHVlW2kgLSAxXVswXSA9PT0gJ3NwYWNlJyApIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5yYXdzLmltcG9ydGFudCA9IHZhbHVlW2kgLSAxXVsxXSArICchaW1wb3J0YW50JztcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUuc3BsaWNlKGkgLSAxLCAyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJhd3MuaW1wb3J0YW50ID0gJyFpbXBvcnRhbnQnO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggdCAhPT0gJ3NwYWNlJyAmJiB0ICE9PSAnbmV3bGluZScgJiYgdCAhPT0gJ2NvbW1lbnQnICkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gPSBiZXR3ZWVuICsgdGhpcy5maXJzdFNwYWNlcyh2YWx1ZSk7XG4gICAgICAgIHRoaXMucmF3KG5vZGUsICd2YWx1ZScsIHZhbHVlLCBjb2xvbik7XG4gICAgfVxuXG4gICAgcnVsZShwYXJ0KSB7XG4gICAgICAgIGxldCBub2RlID0gbmV3IFJ1bGUoKTtcbiAgICAgICAgdGhpcy5pbml0KG5vZGUsIHBhcnQpO1xuXG4gICAgICAgIGxldCBzZWxlY3RvciA9IHBhcnQudG9rZW5zO1xuICAgICAgICBsZXQgbmV4dCAgICAgPSB0aGlzLnBhcnRzW3RoaXMucG9zICsgMV07XG5cbiAgICAgICAgd2hpbGUgKCAhbmV4dC5lbmQgJiYgbmV4dC5pbmRlbnQubGVuZ3RoID09PSBwYXJ0LmluZGVudC5sZW5ndGggKSB7XG4gICAgICAgICAgICBzZWxlY3Rvci5wdXNoKFsnc3BhY2UnLCBuZXh0LmJlZm9yZSArIG5leHQuaW5kZW50XSk7XG4gICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLmNvbmNhdChuZXh0LnRva2Vucyk7XG4gICAgICAgICAgICB0aGlzLnBvcyArPSAxO1xuICAgICAgICAgICAgbmV4dCA9IHRoaXMucGFydHNbdGhpcy5wb3MgKyAxXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMua2VlcFRyYWlsaW5nU3BhY2Uobm9kZSwgc2VsZWN0b3IpO1xuICAgICAgICB0aGlzLnJhdyhub2RlLCAnc2VsZWN0b3InLCBzZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgLyogSGVscGVycyAqL1xuXG4gICAgaW5kZW50KHBhcnQpIHtcbiAgICAgICAgbGV0IGluZGVudCA9IHBhcnQuaW5kZW50Lmxlbmd0aDtcbiAgICAgICAgbGV0IGlzUHJldiA9IHR5cGVvZiB0aGlzLnByZXZJbmRlbnQgIT09ICd1bmRlZmluZWQnO1xuXG4gICAgICAgIGlmICggIWlzUHJldiAmJiBpbmRlbnQgKSB0aGlzLmluZGVudGVkRmlyc3RMaW5lKHBhcnQpO1xuXG4gICAgICAgIGlmICggIXRoaXMuc3RlcCAmJiBpbmRlbnQgKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXAgPSBpbmRlbnQ7XG4gICAgICAgICAgICB0aGlzLnJvb3QucmF3cy5pbmRlbnQgPSBwYXJ0LmluZGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggaXNQcmV2ICYmIHRoaXMucHJldkluZGVudCAhPT0gaW5kZW50ICkge1xuICAgICAgICAgICAgbGV0IGRpZmYgPSBpbmRlbnQgLSB0aGlzLnByZXZJbmRlbnQ7XG4gICAgICAgICAgICBpZiAoIGRpZmYgPiAwICkge1xuICAgICAgICAgICAgICAgIGlmICggZGlmZiAhPT0gdGhpcy5zdGVwICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndyb25nSW5kZW50KHRoaXMucHJldkluZGVudCArIHRoaXMuc3RlcCwgaW5kZW50LCBwYXJ0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmN1cnJlbnQubGFzdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBkaWZmICUgdGhpcy5zdGVwICE9PSAwICkge1xuICAgICAgICAgICAgICAgIGxldCBtID0gaW5kZW50ICsgZGlmZiAlIHRoaXMuc3RlcDtcbiAgICAgICAgICAgICAgICB0aGlzLndyb25nSW5kZW50KGAkeyBtIH0gb3IgJHsgbSArIHRoaXMuc3RlcCB9YCwgaW5kZW50LCBwYXJ0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgLWRpZmYgLyB0aGlzLnN0ZXA7IGkrKyApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5jdXJyZW50LnBhcmVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZXZJbmRlbnQgPSBpbmRlbnQ7XG4gICAgfVxuXG4gICAgaW5pdChub2RlLCBwYXJ0KSB7XG4gICAgICAgIHRoaXMuaW5kZW50KHBhcnQpO1xuXG4gICAgICAgIGlmICggIXRoaXMuY3VycmVudC5ub2RlcyApIHRoaXMuY3VycmVudC5ub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmN1cnJlbnQucHVzaChub2RlKTtcblxuICAgICAgICBub2RlLnJhd3MuYmVmb3JlID0gcGFydC5iZWZvcmUgKyBwYXJ0LmluZGVudDtcbiAgICAgICAgbm9kZS5zb3VyY2UgPSB7XG4gICAgICAgICAgICBzdGFydDogeyBsaW5lOiBwYXJ0LnRva2Vuc1swXVsyXSwgY29sdW1uOiBwYXJ0LnRva2Vuc1swXVszXSB9LFxuICAgICAgICAgICAgaW5wdXQ6IHRoaXMuaW5wdXRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBrZWVwVHJhaWxpbmdTcGFjZShub2RlLCB0b2tlbnMpIHtcbiAgICAgICAgbGV0IGxhc3RTcGFjZSA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICggbGFzdFNwYWNlICYmIGxhc3RTcGFjZVswXSA9PT0gJ3NwYWNlJyApIHtcbiAgICAgICAgICAgIHRva2Vucy5wb3AoKTtcbiAgICAgICAgICAgIG5vZGUucmF3cy5zc3NCZXR3ZWVuID0gbGFzdFNwYWNlWzFdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmlyc3RTcGFjZXModG9rZW5zKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgaWYgKCB0b2tlbnNbaV1bMF0gPT09ICdzcGFjZScgfHwgdG9rZW5zW2ldWzBdID09PSAnbmV3bGluZScgKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IHRva2Vucy5zaGlmdCgpWzFdO1xuICAgICAgICAgICAgICAgIGkgLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICByYXcobm9kZSwgcHJvcCwgdG9rZW5zLCBhbHRMYXN0KSB7XG4gICAgICAgIGxldCB0b2tlbiwgdHlwZTtcbiAgICAgICAgbGV0IGxlbmd0aCA9IHRva2Vucy5sZW5ndGg7XG4gICAgICAgIGxldCB2YWx1ZSAgPSAnJztcbiAgICAgICAgbGV0IGNsZWFuICA9IHRydWU7XG4gICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxICkge1xuICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgICAgICAgICB0eXBlICA9IHRva2VuWzBdO1xuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnY29tbWVudCcgfHwgdHlwZSA9PT0gJ3NwYWNlJyAmJiBpID09PSBsZW5ndGggLSAxICkge1xuICAgICAgICAgICAgICAgIGNsZWFuID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlICs9IHRva2VuWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICggIWNsZWFuICkge1xuICAgICAgICAgICAgbGV0IHNzcyA9IHRva2Vucy5yZWR1Y2UoIChhbGwsIGkpID0+IGFsbCArIGlbMV0sICcnKTtcbiAgICAgICAgICAgIGxldCByYXcgPSB0b2tlbnMucmVkdWNlKCAoYWxsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCBpWzBdID09PSAnY29tbWVudCcgJiYgaVs2XSA9PT0gJ2lubGluZScgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhbGwgKyAnLyogJyArIGlbMV0uc2xpY2UoMikudHJpbSgpICsgJyAqLyc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFsbCArIGlbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgJycpO1xuICAgICAgICAgICAgbm9kZS5yYXdzW3Byb3BdID0geyB2YWx1ZSwgcmF3IH07XG4gICAgICAgICAgICBpZiAoIHNzcyAhPT0gcmF3ICkgbm9kZS5yYXdzW3Byb3BdLnNzcyA9IHNzcztcbiAgICAgICAgfVxuICAgICAgICBub2RlW3Byb3BdID0gdmFsdWU7XG5cbiAgICAgICAgbGV0IGxhc3QgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdIHx8IGFsdExhc3Q7XG4gICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHtcbiAgICAgICAgICAgIGxpbmU6ICAgbGFzdFs0XSB8fCBsYXN0WzJdLFxuICAgICAgICAgICAgY29sdW1uOiBsYXN0WzVdIHx8IGxhc3RbM11cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZXh0Tm9uQ29tbWVudChwb3MpIHtcbiAgICAgICAgbGV0IG5leHQgPSBwb3M7XG4gICAgICAgIGxldCBwYXJ0O1xuICAgICAgICB3aGlsZSAoIG5leHQgPCB0aGlzLnBhcnRzLmxlbmd0aCApIHtcbiAgICAgICAgICAgIG5leHQgKz0gMTtcbiAgICAgICAgICAgIHBhcnQgPSB0aGlzLnBhcnRzW25leHRdO1xuICAgICAgICAgICAgaWYgKCBwYXJ0LmVuZCB8fCAhcGFydC5jb21tZW50ICkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgfVxuXG4gICAgY29tbWVudFRleHQobm9kZSwgdG9rZW4pIHtcbiAgICAgICAgbGV0IHRleHQgPSB0b2tlblsxXTtcbiAgICAgICAgaWYgKCB0b2tlbls2XSA9PT0gJ2lubGluZScgKSB7XG4gICAgICAgICAgICBub2RlLnJhd3MuaW5saW5lID0gdHJ1ZTtcbiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGV4dCA9IHRleHQuc2xpY2UoMiwgLTIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG1hdGNoID0gdGV4dC5tYXRjaCgvXihcXHMqKShbXl0qW15cXHNdKShcXHMqKVxcbj8kLyk7XG4gICAgICAgIG5vZGUudGV4dCA9IG1hdGNoWzJdO1xuICAgICAgICBub2RlLnJhd3MubGVmdCA9IG1hdGNoWzFdO1xuICAgICAgICBub2RlLnJhd3MuaW5saW5lUmlnaHQgPSBtYXRjaFszXTtcbiAgICB9XG5cbiAgICAvLyBFcnJvcnNcblxuICAgIGVycm9yKG1zZywgbGluZSwgY29sdW1uKSB7XG4gICAgICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IobXNnLCBsaW5lLCBjb2x1bW4pO1xuICAgIH1cblxuICAgIHVubmFtZWRBdHJ1bGUodG9rZW4pIHtcbiAgICAgICAgdGhpcy5lcnJvcignQXQtcnVsZSB3aXRob3V0IG5hbWUnLCB0b2tlblsyXSwgdG9rZW5bM10pO1xuICAgIH1cblxuICAgIHVubmFtZWREZWNsKHRva2VuKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoJ0RlY2xhcmF0aW9uIHdpdGhvdXQgbmFtZScsIHRva2VuWzJdLCB0b2tlblszXSk7XG4gICAgfVxuXG4gICAgaW5kZW50ZWRGaXJzdExpbmUocGFydCkge1xuICAgICAgICB0aGlzLmVycm9yKCdGaXJzdCBsaW5lIHNob3VsZCBub3QgaGF2ZSBpbmRlbnQnLCBwYXJ0Lm51bWJlciwgMSk7XG4gICAgfVxuXG4gICAgd3JvbmdJbmRlbnQoZXhwZWN0ZWQsIHJlYWwsIHBhcnQpIHtcbiAgICAgICAgbGV0IG1zZyA9IGBFeHBlY3RlZCAkeyBleHBlY3RlZCB9IGluZGVudCwgYnV0IGdldCAkeyByZWFsIH1gO1xuICAgICAgICB0aGlzLmVycm9yKG1zZywgcGFydC5udW1iZXIsIDEpO1xuICAgIH1cblxuICAgIGJhZFByb3AodG9rZW4pIHtcbiAgICAgICAgdGhpcy5lcnJvcignVW5leHBlY3RlZCBzZXBhcmF0b3IgaW4gcHJvcGVydHknLCB0b2tlblsyXSwgdG9rZW5bM10pO1xuICAgIH1cblxufVxuIl19

@@ -24,3 +24,3 @@ # SugarSS [![Build Status][ci-img]][ci]

As any PostCSS custom syntax, SugarSS has source map, [Stylelint]
As any PostCSS custom syntax, SugarSS has source map, [stylelint]
and [postcss-sorting] support out-of-box.

@@ -39,3 +39,3 @@

[postcss-sorting]: https://github.com/hudochenkov/postcss-sorting
[Stylelint]: http://stylelint.io/
[stylelint]: http://stylelint.io/
[PostCSS]: https://github.com/postcss/postcss

@@ -128,3 +128,3 @@ [PreCSS]: https://github.com/jonathantneal/precss

* Atom: [language-postcss] or [language-postcss-sugarss] and [source-preview-postcss]
* Atom: [language-postcss] and [source-preview-postcss]
* Vim: [vim-sugarss]

@@ -136,3 +136,2 @@

[language-postcss-sugarss]: https://atom.io/packages/language-postcss-sugarss
[language-postcss]: https://atom.io/packages/language-postcss

@@ -149,3 +148,3 @@ [source-preview-postcss]: https://atom.io/packages/source-preview-postcss

Gulp:
[Gulp](https://github.com/postcss/gulp-postcss):

@@ -165,5 +164,5 @@ ```js

Webpack:
[Webpack](https://github.com/postcss/postcss-loader):
```
```js
module: {

@@ -179,2 +178,8 @@ loaders: [

[CLI](https://github.com/postcss/postcss-cli):
```
postcss -u autoprefixer -p sugarss test.sss -o test.css
```
### SugarSS to SugarSS

@@ -208,4 +213,19 @@

### Imports
[postcss-import] doesn’t support `.sss` file extension, because this plugin
implements W3C specification. If you want smarter `@import`, you should
use [postcss-easy-import] with `extensions` option.
```js
postcss([
easyImport({ extensions: ['.sss'] })
]).process(sss, { parser: sugarss })
```
[postcss-easy-import]: https://github.com/TrySound/postcss-easy-import
[postcss-import]: https://github.com/postcss/postcss-import
## Thanks
Cute project logo was made by [Maria Keller](http://www.mariakellerac.com/).

@@ -82,2 +82,5 @@ 'use strict';

var before = child.raws.before.replace(/[^\n]*$/, '') + this.indent(node, indent);
if (child.type === 'comment' && child.raws.before.indexOf('\n') === -1) {
before = child.raws.before;
}
if (before) this.builder(before);

@@ -122,2 +125,2 @@ this.stringify(child);

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,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O0FBQ0gsU0FGRCxNQUVPO0FBQ0gsbUJBQU8sS0FBUDtBQUNIO0FBQ0osSzs7Ozs7a0JBcEdnQixXIiwiZmlsZSI6InN0cmluZ2lmaWVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZGVmYXVsdFJhdyA9IHtcbiAgICBjb2xvbjogICAgICAgICc6ICcsXG4gICAgaW5kZW50OiAgICAgICAnICAnLFxuICAgIGNvbW1lbnRMZWZ0OiAgJyAnLFxuICAgIGNvbW1lbnRSaWdodDogJyAnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJpbmdpZmllciB7XG5cbiAgICBjb25zdHJ1Y3RvcihidWlsZGVyKSB7XG4gICAgICAgIHRoaXMuYnVpbGRlciA9IGJ1aWxkZXI7XG4gICAgfVxuXG4gICAgc3RyaW5naWZ5KG5vZGUsIHNlbWljb2xvbikge1xuICAgICAgICB0aGlzW25vZGUudHlwZV0obm9kZSwgc2VtaWNvbG9uKTtcbiAgICB9XG5cbiAgICByb290KG5vZGUpIHtcbiAgICAgICAgdGhpcy5ib2R5KG5vZGUpO1xuICAgICAgICBpZiAoIG5vZGUucmF3cy5hZnRlciApIHRoaXMuYnVpbGRlcihub2RlLnJhd3MuYWZ0ZXIpO1xuICAgIH1cblxuICAgIGNvbW1lbnQobm9kZSkge1xuICAgICAgICBsZXQgbGVmdCAgPSBkZWZhdWx0UmF3LmNvbW1lbnRMZWZ0O1xuICAgICAgICBsZXQgcmlnaHQgPSBkZWZhdWx0UmF3LmNvbW1lbnRSaWdodDtcbiAgICAgICAgaWYgKCB0aGlzLmhhcyhub2RlLnJhd3MubGVmdCkgKSBsZWZ0ID0gbm9kZS5yYXdzLmxlZnQ7XG5cbiAgICAgICAgaWYgKCBub2RlLnJhd3MuaW5saW5lICkge1xuICAgICAgICAgICAgaWYgKCB0aGlzLmhhcyhub2RlLnJhd3MuaW5saW5lUmlnaHQpICkge1xuICAgICAgICAgICAgICAgIHJpZ2h0ID0gbm9kZS5yYXdzLmlubGluZVJpZ2h0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByaWdodCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5idWlsZGVyKCcvLycgKyBsZWZ0ICsgbm9kZS50ZXh0ICsgcmlnaHQsIG5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCB0aGlzLmhhcyhub2RlLnJhd3MucmlnaHQpICkgcmlnaHQgPSBub2RlLnJhd3MucmlnaHQ7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXIoJy8qJyArIGxlZnQgKyBub2RlLnRleHQgKyByaWdodCArICcqLycsIG5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVjbChub2RlKSB7XG4gICAgICAgIGxldCBiZXR3ZWVuID0gbm9kZS5yYXdzLmJldHdlZW4gfHwgZGVmYXVsdFJhdy5jb2xvbjtcbiAgICAgICAgbGV0IHN0cmluZyAgPSBub2RlLnByb3AgKyBiZXR3ZWVuICsgdGhpcy5yYXdWYWx1ZShub2RlLCAndmFsdWUnKTtcblxuICAgICAgICBpZiAoIG5vZGUuaW1wb3J0YW50ICkge1xuICAgICAgICAgICAgc3RyaW5nICs9IG5vZGUucmF3cy5pbXBvcnRhbnQgfHwgJyAhaW1wb3J0YW50JztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVpbGRlcihzdHJpbmcsIG5vZGUpO1xuICAgIH1cblxuICAgIHJ1bGUobm9kZSkge1xuICAgICAgICB0aGlzLmJsb2NrKG5vZGUsIHRoaXMucmF3VmFsdWUobm9kZSwgJ3NlbGVjdG9yJykpO1xuICAgIH1cblxuICAgIGF0cnVsZShub2RlKSB7XG4gICAgICAgIGxldCBuYW1lICAgPSAnQCcgKyBub2RlLm5hbWU7XG4gICAgICAgIGxldCBwYXJhbXMgPSBub2RlLnBhcmFtcyA/IHRoaXMucmF3VmFsdWUobm9kZSwgJ3BhcmFtcycpIDogJyc7XG5cbiAgICAgICAgaWYgKCB0aGlzLmhhcyhub2RlLnJhd3MuYWZ0ZXJOYW1lKSApIHtcbiAgICAgICAgICAgIG5hbWUgKz0gbm9kZS5yYXdzLmFmdGVyTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmICggcGFyYW1zICkge1xuICAgICAgICAgICAgbmFtZSArPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJsb2NrKG5vZGUsIG5hbWUgKyBwYXJhbXMpO1xuICAgIH1cblxuICAgIGJvZHkobm9kZSkge1xuICAgICAgICBsZXQgaW5kZW50ID0gbm9kZS5yb290KCkucmF3cy5pbmRlbnQgfHwgZGVmYXVsdFJhdy5pbmRlbnQ7XG5cbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgbm9kZS5ub2Rlcy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIGxldCBjaGlsZCAgPSBub2RlLm5vZGVzW2ldO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IGNoaWxkLnJhd3MuYmVmb3JlLnJlcGxhY2UoL1teXFxuXSokLywgJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGVudChub2RlLCBpbmRlbnQpO1xuICAgICAgICAgICAgaWYgKCBiZWZvcmUgKSB0aGlzLmJ1aWxkZXIoYmVmb3JlKTtcbiAgICAgICAgICAgIHRoaXMuc3RyaW5naWZ5KGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJsb2NrKG5vZGUsIHN0YXJ0KSB7XG4gICAgICAgIGxldCBiZXR3ZWVuID0gbm9kZS5yYXdzLnNzc0JldHdlZW4gfHwgJyc7XG4gICAgICAgIHRoaXMuYnVpbGRlcihzdGFydCArIGJldHdlZW4sIG5vZGUsICdzdGFydCcpO1xuICAgICAgICBpZiAoIHRoaXMuaGFzKG5vZGUubm9kZXMpICkgdGhpcy5ib2R5KG5vZGUpO1xuICAgIH1cblxuICAgIGluZGVudChub2RlLCBzdGVwKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgd2hpbGUgKCBub2RlLnBhcmVudCApIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBzdGVwO1xuICAgICAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgaGFzKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnO1xuICAgIH1cblxuICAgIHJhd1ZhbHVlKG5vZGUsIHByb3ApIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVtwcm9wXTtcbiAgICAgICAgbGV0IHJhdyAgID0gbm9kZS5yYXdzW3Byb3BdO1xuICAgICAgICBpZiAoIHJhdyAmJiByYXcudmFsdWUgPT09IHZhbHVlICkge1xuICAgICAgICAgICAgcmV0dXJuIHJhdy5zc3MgfHwgcmF3LnJhdztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,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SSxRQUFRLEtBQUssSUFBTCxDQUFaO0FBQ0EsWUFBSSxNQUFRLEtBQUssSUFBTCxDQUFVLElBQVYsQ0FBWjtBQUNBLFlBQUssT0FBTyxJQUFJLEtBQUosS0FBYyxLQUExQixFQUFrQztBQUM5QixtQkFBTyxJQUFJLEdBQUosSUFBVyxJQUFJLEdBQXRCO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsbUJBQU8sS0FBUDtBQUNIO0FBQ0osSzs7Ozs7a0JBeEdnQixXIiwiZmlsZSI6InN0cmluZ2lmaWVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZGVmYXVsdFJhdyA9IHtcbiAgICBjb2xvbjogICAgICAgICc6ICcsXG4gICAgaW5kZW50OiAgICAgICAnICAnLFxuICAgIGNvbW1lbnRMZWZ0OiAgJyAnLFxuICAgIGNvbW1lbnRSaWdodDogJyAnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJpbmdpZmllciB7XG5cbiAgICBjb25zdHJ1Y3RvcihidWlsZGVyKSB7XG4gICAgICAgIHRoaXMuYnVpbGRlciA9IGJ1aWxkZXI7XG4gICAgfVxuXG4gICAgc3RyaW5naWZ5KG5vZGUsIHNlbWljb2xvbikge1xuICAgICAgICB0aGlzW25vZGUudHlwZV0obm9kZSwgc2VtaWNvbG9uKTtcbiAgICB9XG5cbiAgICByb290KG5vZGUpIHtcbiAgICAgICAgdGhpcy5ib2R5KG5vZGUpO1xuICAgICAgICBpZiAoIG5vZGUucmF3cy5hZnRlciApIHRoaXMuYnVpbGRlcihub2RlLnJhd3MuYWZ0ZXIpO1xuICAgIH1cblxuICAgIGNvbW1lbnQobm9kZSkge1xuICAgICAgICBsZXQgbGVmdCAgPSBkZWZhdWx0UmF3LmNvbW1lbnRMZWZ0O1xuICAgICAgICBsZXQgcmlnaHQgPSBkZWZhdWx0UmF3LmNvbW1lbnRSaWdodDtcbiAgICAgICAgaWYgKCB0aGlzLmhhcyhub2RlLnJhd3MubGVmdCkgKSBsZWZ0ID0gbm9kZS5yYXdzLmxlZnQ7XG5cbiAgICAgICAgaWYgKCBub2RlLnJhd3MuaW5saW5lICkge1xuICAgICAgICAgICAgaWYgKCB0aGlzLmhhcyhub2RlLnJhd3MuaW5saW5lUmlnaHQpICkge1xuICAgICAgICAgICAgICAgIHJpZ2h0ID0gbm9kZS5yYXdzLmlubGluZVJpZ2h0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByaWdodCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5idWlsZGVyKCcvLycgKyBsZWZ0ICsgbm9kZS50ZXh0ICsgcmlnaHQsIG5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCB0aGlzLmhhcyhub2RlLnJhd3MucmlnaHQpICkgcmlnaHQgPSBub2RlLnJhd3MucmlnaHQ7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXIoJy8qJyArIGxlZnQgKyBub2RlLnRleHQgKyByaWdodCArICcqLycsIG5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVjbChub2RlKSB7XG4gICAgICAgIGxldCBiZXR3ZWVuID0gbm9kZS5yYXdzLmJldHdlZW4gfHwgZGVmYXVsdFJhdy5jb2xvbjtcbiAgICAgICAgbGV0IHN0cmluZyAgPSBub2RlLnByb3AgKyBiZXR3ZWVuICsgdGhpcy5yYXdWYWx1ZShub2RlLCAndmFsdWUnKTtcblxuICAgICAgICBpZiAoIG5vZGUuaW1wb3J0YW50ICkge1xuICAgICAgICAgICAgc3RyaW5nICs9IG5vZGUucmF3cy5pbXBvcnRhbnQgfHwgJyAhaW1wb3J0YW50JztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVpbGRlcihzdHJpbmcsIG5vZGUpO1xuICAgIH1cblxuICAgIHJ1bGUobm9kZSkge1xuICAgICAgICB0aGlzLmJsb2NrKG5vZGUsIHRoaXMucmF3VmFsdWUobm9kZSwgJ3NlbGVjdG9yJykpO1xuICAgIH1cblxuICAgIGF0cnVsZShub2RlKSB7XG4gICAgICAgIGxldCBuYW1lICAgPSAnQCcgKyBub2RlLm5hbWU7XG4gICAgICAgIGxldCBwYXJhbXMgPSBub2RlLnBhcmFtcyA/IHRoaXMucmF3VmFsdWUobm9kZSwgJ3BhcmFtcycpIDogJyc7XG5cbiAgICAgICAgaWYgKCB0aGlzLmhhcyhub2RlLnJhd3MuYWZ0ZXJOYW1lKSApIHtcbiAgICAgICAgICAgIG5hbWUgKz0gbm9kZS5yYXdzLmFmdGVyTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmICggcGFyYW1zICkge1xuICAgICAgICAgICAgbmFtZSArPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJsb2NrKG5vZGUsIG5hbWUgKyBwYXJhbXMpO1xuICAgIH1cblxuICAgIGJvZHkobm9kZSkge1xuICAgICAgICBsZXQgaW5kZW50ID0gbm9kZS5yb290KCkucmF3cy5pbmRlbnQgfHwgZGVmYXVsdFJhdy5pbmRlbnQ7XG5cbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgbm9kZS5ub2Rlcy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIGxldCBjaGlsZCAgPSBub2RlLm5vZGVzW2ldO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IGNoaWxkLnJhd3MuYmVmb3JlLnJlcGxhY2UoL1teXFxuXSokLywgJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGVudChub2RlLCBpbmRlbnQpO1xuICAgICAgICAgICAgaWYgKCBjaGlsZC50eXBlID09PSAnY29tbWVudCcgJiZcbiAgICAgICAgICAgICAgICAgY2hpbGQucmF3cy5iZWZvcmUuaW5kZXhPZignXFxuJykgPT09IC0xICkge1xuICAgICAgICAgICAgICAgIGJlZm9yZSA9IGNoaWxkLnJhd3MuYmVmb3JlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCBiZWZvcmUgKSB0aGlzLmJ1aWxkZXIoYmVmb3JlKTtcbiAgICAgICAgICAgIHRoaXMuc3RyaW5naWZ5KGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJsb2NrKG5vZGUsIHN0YXJ0KSB7XG4gICAgICAgIGxldCBiZXR3ZWVuID0gbm9kZS5yYXdzLnNzc0JldHdlZW4gfHwgJyc7XG4gICAgICAgIHRoaXMuYnVpbGRlcihzdGFydCArIGJldHdlZW4sIG5vZGUsICdzdGFydCcpO1xuICAgICAgICBpZiAoIHRoaXMuaGFzKG5vZGUubm9kZXMpICkgdGhpcy5ib2R5KG5vZGUpO1xuICAgIH1cblxuICAgIGluZGVudChub2RlLCBzdGVwKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgd2hpbGUgKCBub2RlLnBhcmVudCApIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBzdGVwO1xuICAgICAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgaGFzKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnO1xuICAgIH1cblxuICAgIHJhd1ZhbHVlKG5vZGUsIHByb3ApIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVtwcm9wXTtcbiAgICAgICAgbGV0IHJhdyAgID0gbm9kZS5yYXdzW3Byb3BdO1xuICAgICAgICBpZiAoIHJhdyAmJiByYXcudmFsdWUgPT09IHZhbHVlICkge1xuICAgICAgICAgICAgcmV0dXJuIHJhdy5zc3MgfHwgcmF3LnJhdztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19

@@ -287,2 +287,2 @@ 'use strict';

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,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LEVBQ1IsSUFEUSxFQUNGLE1BQU8sTUFETCxFQUVSLElBRlEsRUFFRixPQUFPLE1BRkwsRUFHUixRQUhRLENBQVo7O0FBTUEsMEJBQU0sSUFBTjtBQUVILGlCQW5CTSxNQW1CQTtBQUNILGdDQUFZLFNBQVosR0FBd0IsTUFBTSxDQUE5QjtBQUNBLGdDQUFZLElBQVosQ0FBaUIsR0FBakI7QUFDQSx3QkFBSyxZQUFZLFNBQVosS0FBMEIsQ0FBL0IsRUFBbUM7QUFDL0IsK0JBQU8sSUFBSSxNQUFKLEdBQWEsQ0FBcEI7QUFDSCxxQkFGRCxNQUVPO0FBQ0gsK0JBQU8sWUFBWSxTQUFaLEdBQXdCLENBQS9CO0FBQ0g7O0FBRUQsMkJBQU8sSUFBUCxDQUFZLENBQUMsTUFBRCxFQUFTLElBQUksS0FBSixDQUFVLEdBQVYsRUFBZSxPQUFPLENBQXRCLENBQVQsRUFDUixJQURRLEVBQ0YsTUFBTyxNQURMLEVBRVIsSUFGUSxFQUVGLE9BQU8sTUFGTCxDQUFaO0FBSUEsMEJBQU0sSUFBTjtBQUNIOztBQUVEO0FBclBKOztBQXdQQTtBQUNIOztBQUVELFdBQU8sTUFBUDtBQUNIIiwiZmlsZSI6InRva2VuaXplLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU0lOR0xFX1FVT1RFICAgICAgPSAnXFwnJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgRE9VQkxFX1FVT1RFICAgICAgPSAgJ1wiJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQkFDS1NMQVNIICAgICAgICAgPSAnXFxcXCcuY2hhckNvZGVBdCgwKTtcbmNvbnN0IFNMQVNIICAgICAgICAgICAgID0gICcvJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgTkVXTElORSAgICAgICAgICAgPSAnXFxuJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgU1BBQ0UgICAgICAgICAgICAgPSAgJyAnLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBGRUVEICAgICAgICAgICAgICA9ICdcXGYnLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBUQUIgICAgICAgICAgICAgICA9ICdcXHQnLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBDUiAgICAgICAgICAgICAgICA9ICdcXHInLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBPUEVOX1BBUkVOVEhFU0VTICA9ICAnKCcuY2hhckNvZGVBdCgwKTtcbmNvbnN0IENMT1NFX1BBUkVOVEhFU0VTID0gICcpJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgT1BFTl9DVVJMWSAgICAgICAgPSAgJ3snLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBDTE9TRV9DVVJMWSAgICAgICA9ICAnfScuY2hhckNvZGVBdCgwKTtcbmNvbnN0IFNFTUlDT0xPTiAgICAgICAgID0gICc7Jy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQVNURVJJQ0sgICAgICAgICAgPSAgJyonLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBDT0xPTiAgICAgICAgICAgICA9ICAnOicuY2hhckNvZGVBdCgwKTtcbmNvbnN0IEFUICAgICAgICAgICAgICAgID0gICdAJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQ09NTUEgICAgICAgICAgICAgPSAgJywnLmNoYXJDb2RlQXQoMCk7XG5cbmNvbnN0IFJFX0FUX0VORCAgICAgID0gL1sgXFxuXFx0XFxyXFxmXFx7XFwoXFwpJ1wiXFxcXDsvXS9nO1xuY29uc3QgUkVfTkVXX0xJTkUgICAgPSAvW1xcclxcZlxcbl0vZztcbmNvbnN0IFJFX1dPUkRfRU5EICAgID0gL1sgXFxuXFx0XFxyXFxmXFwoXFwpXFx7XFx9OjtAISdcIlxcXFwsXXxcXC8oPz1cXCopL2c7XG5jb25zdCBSRV9CQURfQlJBQ0tFVCA9IC8uW1xcXFxcXC9cXChcIidcXG5dLztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9rZW5pemUoaW5wdXQpIHtcbiAgICBsZXQgdG9rZW5zID0gW107XG4gICAgbGV0IGNzcyAgICA9IGlucHV0LmNzcy52YWx1ZU9mKCk7XG5cbiAgICBsZXQgY29kZSwgbmV4dCwgcXVvdGUsIGxpbmVzLCBsYXN0LCBjb250ZW50LCBlc2NhcGUsXG4gICAgICAgIG5leHRMaW5lLCBuZXh0T2Zmc2V0LCBlc2NhcGVkLCBlc2NhcGVQb3MsIHByZXYsIG47XG5cbiAgICBsZXQgbGVuZ3RoID0gY3NzLmxlbmd0aDtcbiAgICBsZXQgb2Zmc2V0ID0gLTE7XG4gICAgbGV0IGxpbmUgICA9ICAxO1xuICAgIGxldCBwb3MgICAgPSAgMDtcblxuICAgIGZ1bmN0aW9uIHVuY2xvc2VkKHdoYXQpIHtcbiAgICAgICAgdGhyb3cgaW5wdXQuZXJyb3IoJ1VuY2xvc2VkICcgKyB3aGF0LCBsaW5lLCBwb3MgLSBvZmZzZXQpO1xuICAgIH1cblxuICAgIHdoaWxlICggcG9zIDwgbGVuZ3RoICkge1xuICAgICAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQocG9zKTtcblxuICAgICAgICBpZiAoIGNvZGUgPT09IE5FV0xJTkUgfHwgY29kZSA9PT0gRkVFRCB8fFxuICAgICAgICAgICAgIGNvZGUgPT09IENSICYmIGNzcy5jaGFyQ29kZUF0KHBvcyArIDEpICE9PSBORVdMSU5FICkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gcG9zO1xuICAgICAgICAgICAgbGluZSAgKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoIGNvZGUgKSB7XG4gICAgICAgIGNhc2UgQ1I6XG4gICAgICAgICAgICBpZiAoIGNzcy5jaGFyQ29kZUF0KHBvcyArIDEpID09PSBORVdMSU5FICkge1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IHBvcztcbiAgICAgICAgICAgICAgICBsaW5lICArPSAxO1xuICAgICAgICAgICAgICAgIHBvcyAgICs9IDE7XG4gICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goWyduZXdsaW5lJywgJ1xcclxcbicsIGxpbmUgLSAxXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKFsnbmV3bGluZScsICdcXHInLCBsaW5lIC0gMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBGRUVEOlxuICAgICAgICBjYXNlIE5FV0xJTkU6XG4gICAgICAgICAgICB0b2tlbnMucHVzaChbJ25ld2xpbmUnLCBjc3Muc2xpY2UocG9zLCBwb3MgKyAxKSwgbGluZSAtIDFdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG5cbiAgICAgICAgY2FzZSBTUEFDRTpcbiAgICAgICAgY2FzZSBUQUI6XG4gICAgICAgICAgICBuZXh0ID0gcG9zO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIG5leHQgKz0gMTtcbiAgICAgICAgICAgICAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQobmV4dCk7XG4gICAgICAgICAgICB9IHdoaWxlICggY29kZSA9PT0gU1BBQ0UgfHwgY29kZSA9PT0gVEFCICk7XG5cbiAgICAgICAgICAgIHRva2Vucy5wdXNoKFsnc3BhY2UnLCBjc3Muc2xpY2UocG9zLCBuZXh0KV0pO1xuICAgICAgICAgICAgcG9zID0gbmV4dCAtIDE7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIE9QRU5fQ1VSTFk6XG4gICAgICAgICAgICB0b2tlbnMucHVzaChbJ3snLCAneycsIGxpbmUsIHBvcyAtIG9mZnNldF0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBDTE9TRV9DVVJMWTpcbiAgICAgICAgICAgIHRva2Vucy5wdXNoKFsnfScsICd9JywgbGluZSwgcG9zIC0gb2Zmc2V0XSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIENPTE9OOlxuICAgICAgICAgICAgdG9rZW5zLnB1c2goWyc6JywgJzonLCBsaW5lLCBwb3MgLSBvZmZzZXRdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU0VNSUNPTE9OOlxuICAgICAgICAgICAgdG9rZW5zLnB1c2goWyc7JywgJzsnLCBsaW5lLCBwb3MgLSBvZmZzZXRdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQ09NTUE6XG4gICAgICAgICAgICB0b2tlbnMucHVzaChbJywnLCAnLCcsIGxpbmUsIHBvcyAtIG9mZnNldF0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBPUEVOX1BBUkVOVEhFU0VTOlxuICAgICAgICAgICAgcHJldiA9IHRva2Vucy5sZW5ndGggPyB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzFdIDogJyc7XG4gICAgICAgICAgICBuICAgID0gY3NzLmNoYXJDb2RlQXQocG9zICsgMSk7XG4gICAgICAgICAgICBpZiAoIHByZXYgPT09ICd1cmwnICYmIG4gIT09IFNJTkdMRV9RVU9URSAmJiBuICE9PSBET1VCTEVfUVVPVEUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAhPT0gU1BBQ0UgJiYgbiAhPT0gTkVXTElORSAmJiBuICE9PSBUQUIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAhPT0gRkVFRCAmJiBuICE9PSBDUiApIHtcbiAgICAgICAgICAgICAgICBuZXh0ID0gcG9zO1xuICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBuZXh0ICAgID0gY3NzLmluZGV4T2YoJyknLCBuZXh0ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gLTEgKSB1bmNsb3NlZCgnYnJhY2tldCcpO1xuICAgICAgICAgICAgICAgICAgICBlc2NhcGVQb3MgPSBuZXh0O1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGNzcy5jaGFyQ29kZUF0KGVzY2FwZVBvcyAtIDEpID09PSBCQUNLU0xBU0ggKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGVQb3MgLT0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKCBlc2NhcGVkICk7XG5cbiAgICAgICAgICAgICAgICB0b2tlbnMucHVzaChbJ2JyYWNrZXRzJywgY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpLFxuICAgICAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBsaW5lLCBuZXh0IC0gb2Zmc2V0XG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgcG9zID0gbmV4dDtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0ICAgID0gY3NzLmluZGV4T2YoJyknLCBwb3MgKyAxKTtcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBuZXh0ID09PSAtMSB8fCBSRV9CQURfQlJBQ0tFVC50ZXN0KGNvbnRlbnQpICkge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbnMucHVzaChbJygnLCAnKCcsIGxpbmUsIHBvcyAtIG9mZnNldF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKFsnYnJhY2tldHMnLCBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZSwgcG9zICAtIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgIHBvcyA9IG5leHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIENMT1NFX1BBUkVOVEhFU0VTOlxuICAgICAgICAgICAgdG9rZW5zLnB1c2goWycpJywgJyknLCBsaW5lLCBwb3MgLSBvZmZzZXRdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU0lOR0xFX1FVT1RFOlxuICAgICAgICBjYXNlIERPVUJMRV9RVU9URTpcbiAgICAgICAgICAgIHF1b3RlID0gY29kZSA9PT0gU0lOR0xFX1FVT1RFID8gJ1xcJycgOiAnXCInO1xuICAgICAgICAgICAgbmV4dCAgPSBwb3M7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIG5leHQgICAgPSBjc3MuaW5kZXhPZihxdW90ZSwgbmV4dCArIDEpO1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gLTEgKSB1bmNsb3NlZCgncXVvdGUnKTtcbiAgICAgICAgICAgICAgICBlc2NhcGVQb3MgPSBuZXh0O1xuICAgICAgICAgICAgICAgIHdoaWxlICggY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCApIHtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlUG9zIC09IDE7XG4gICAgICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlICggZXNjYXBlZCApO1xuXG4gICAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpO1xuICAgICAgICAgICAgbGluZXMgICA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgICAgICAgICAgbGFzdCAgICA9IGxpbmVzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgICAgIGlmICggbGFzdCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgbmV4dExpbmUgICA9IGxpbmUgKyBsYXN0O1xuICAgICAgICAgICAgICAgIG5leHRPZmZzZXQgPSBuZXh0IC0gbGluZXNbbGFzdF0ubGVuZ3RoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0TGluZSAgID0gbGluZTtcbiAgICAgICAgICAgICAgICBuZXh0T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b2tlbnMucHVzaChbJ3N0cmluZycsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgIG5leHRMaW5lLCBuZXh0IC0gbmV4dE9mZnNldFxuICAgICAgICAgICAgXSk7XG5cbiAgICAgICAgICAgIG9mZnNldCA9IG5leHRPZmZzZXQ7XG4gICAgICAgICAgICBsaW5lICAgPSBuZXh0TGluZTtcbiAgICAgICAgICAgIHBvcyAgICA9IG5leHQ7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIEFUOlxuICAgICAgICAgICAgUkVfQVRfRU5ELmxhc3RJbmRleCA9IHBvcyArIDE7XG4gICAgICAgICAgICBSRV9BVF9FTkQudGVzdChjc3MpO1xuICAgICAgICAgICAgaWYgKCBSRV9BVF9FTkQubGFzdEluZGV4ID09PSAwICkge1xuICAgICAgICAgICAgICAgIG5leHQgPSBjc3MubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV4dCA9IFJFX0FUX0VORC5sYXN0SW5kZXggLSAyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG9rZW5zLnB1c2goWydhdC13b3JkJywgY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpLFxuICAgICAgICAgICAgICAgIGxpbmUsIHBvcyAgLSBvZmZzZXQsXG4gICAgICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICBwb3MgPSBuZXh0O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBCQUNLU0xBU0g6XG4gICAgICAgICAgICBuZXh0ICAgPSBwb3M7XG4gICAgICAgICAgICBlc2NhcGUgPSB0cnVlO1xuXG4gICAgICAgICAgICBuZXh0TGluZSA9IGxpbmU7XG5cbiAgICAgICAgICAgIHdoaWxlICggY3NzLmNoYXJDb2RlQXQobmV4dCArIDEpID09PSBCQUNLU0xBU0ggKSB7XG4gICAgICAgICAgICAgICAgbmV4dCAgKz0gMTtcbiAgICAgICAgICAgICAgICBlc2NhcGUgPSAhZXNjYXBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29kZSA9IGNzcy5jaGFyQ29kZUF0KG5leHQgKyAxKTtcbiAgICAgICAgICAgIGlmICggZXNjYXBlICkge1xuICAgICAgICAgICAgICAgIGlmICggY29kZSA9PT0gQ1IgJiYgY3NzLmNoYXJDb2RlQXQobmV4dCArIDIpID09PSBORVdMSU5FICkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0ICAgICAgKz0gMjtcbiAgICAgICAgICAgICAgICAgICAgbmV4dExpbmUgICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIG5leHRPZmZzZXQgPSBuZXh0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGNvZGUgPT09IENSIHx8IGNvZGUgPT09IE5FV0xJTkUgfHwgY29kZSA9PT0gRkVFRCApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCAgICAgICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIG5leHRMaW5lICArPSAxO1xuICAgICAgICAgICAgICAgICAgICBuZXh0T2Zmc2V0ID0gbmV4dDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXh0ICs9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG9rZW5zLnB1c2goWyd3b3JkJywgY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpLFxuICAgICAgICAgICAgICAgIGxpbmUsIHBvcyAgLSBvZmZzZXQsXG4gICAgICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICBpZiAoIG5leHRMaW5lICE9PSBsaW5lICkge1xuICAgICAgICAgICAgICAgIGxpbmUgICA9IG5leHRMaW5lO1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IG5leHRPZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3MgPSBuZXh0O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIG4gPSBjc3MuY2hhckNvZGVBdChwb3MgKyAxKTtcblxuICAgICAgICAgICAgaWYgKCBjb2RlID09PSBTTEFTSCAmJiBuID09PSBBU1RFUklDSyApIHtcbiAgICAgICAgICAgICAgICBuZXh0ID0gY3NzLmluZGV4T2YoJyovJywgcG9zICsgMikgKyAxO1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gMCApIHVuY2xvc2VkKCdjb21tZW50Jyk7XG5cbiAgICAgICAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpO1xuICAgICAgICAgICAgICAgIGxpbmVzICAgPSBjb250ZW50LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICAgICAgICBsYXN0ICAgID0gbGluZXMubGVuZ3RoIC0gMTtcblxuICAgICAgICAgICAgICAgIGlmICggbGFzdCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHRMaW5lICAgPSBsaW5lICsgbGFzdDtcbiAgICAgICAgICAgICAgICAgICAgbmV4dE9mZnNldCA9IG5leHQgLSBsaW5lc1tsYXN0XS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dExpbmUgICA9IGxpbmU7XG4gICAgICAgICAgICAgICAgICAgIG5leHRPZmZzZXQgPSBvZmZzZXQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goWydjb21tZW50JywgY29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgbGluZSwgICAgIHBvcyAgLSBvZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIG5leHRMaW5lLCBuZXh0IC0gbmV4dE9mZnNldFxuICAgICAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gbmV4dE9mZnNldDtcbiAgICAgICAgICAgICAgICBsaW5lICAgPSBuZXh0TGluZTtcbiAgICAgICAgICAgICAgICBwb3MgICAgPSBuZXh0O1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBjb2RlID09PSBTTEFTSCAmJiBuID09PSBTTEFTSCApIHtcbiAgICAgICAgICAgICAgICBSRV9ORVdfTElORS5sYXN0SW5kZXggPSBwb3MgKyAxO1xuICAgICAgICAgICAgICAgIFJFX05FV19MSU5FLnRlc3QoY3NzKTtcbiAgICAgICAgICAgICAgICBpZiAoIFJFX05FV19MSU5FLmxhc3RJbmRleCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSBSRV9ORVdfTElORS5sYXN0SW5kZXggLSAyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSk7XG5cbiAgICAgICAgICAgICAgICB0b2tlbnMucHVzaChbJ2NvbW1lbnQnLCBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBsaW5lLCBuZXh0IC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAnaW5saW5lJ1xuICAgICAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgICAgICAgcG9zID0gbmV4dDtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBSRV9XT1JEX0VORC5sYXN0SW5kZXggPSBwb3MgKyAxO1xuICAgICAgICAgICAgICAgIFJFX1dPUkRfRU5ELnRlc3QoY3NzKTtcbiAgICAgICAgICAgICAgICBpZiAoIFJFX1dPUkRfRU5ELmxhc3RJbmRleCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSBSRV9XT1JEX0VORC5sYXN0SW5kZXggLSAyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKFsnd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgICAgICAgICAgbGluZSwgcG9zICAtIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIHBvcyA9IG5leHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcG9zKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRva2Vucztcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,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QWUsT0FBTyxDQUF0QixDQUFWOztBQUVBLDJCQUFPLElBQVAsQ0FBWSxDQUFDLFNBQUQsRUFBWSxPQUFaLEVBQ1IsSUFEUSxFQUNGLE1BQU8sTUFETCxFQUVSLElBRlEsRUFFRixPQUFPLE1BRkwsRUFHUixRQUhRLENBQVo7O0FBTUEsMEJBQU0sSUFBTjtBQUVILGlCQW5CTSxNQW1CQTtBQUNILGdDQUFZLFNBQVosR0FBd0IsTUFBTSxDQUE5QjtBQUNBLGdDQUFZLElBQVosQ0FBaUIsR0FBakI7QUFDQSx3QkFBSyxZQUFZLFNBQVosS0FBMEIsQ0FBL0IsRUFBbUM7QUFDL0IsK0JBQU8sSUFBSSxNQUFKLEdBQWEsQ0FBcEI7QUFDSCxxQkFGRCxNQUVPO0FBQ0gsK0JBQU8sWUFBWSxTQUFaLEdBQXdCLENBQS9CO0FBQ0g7O0FBRUQsMkJBQU8sSUFBUCxDQUFZLENBQUMsTUFBRCxFQUFTLElBQUksS0FBSixDQUFVLEdBQVYsRUFBZSxPQUFPLENBQXRCLENBQVQsRUFDUixJQURRLEVBQ0YsTUFBTyxNQURMLEVBRVIsSUFGUSxFQUVGLE9BQU8sTUFGTCxDQUFaO0FBSUEsMEJBQU0sSUFBTjtBQUNIOztBQUVEO0FBclBKOztBQXdQQTtBQUNIOztBQUVELFdBQU8sTUFBUDtBQUNIIiwiZmlsZSI6InRva2VuaXplLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU0lOR0xFX1FVT1RFICAgICAgPSAnXFwnJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgRE9VQkxFX1FVT1RFICAgICAgPSAgJ1wiJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQkFDS1NMQVNIICAgICAgICAgPSAnXFxcXCcuY2hhckNvZGVBdCgwKTtcbmNvbnN0IFNMQVNIICAgICAgICAgICAgID0gICcvJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgTkVXTElORSAgICAgICAgICAgPSAnXFxuJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgU1BBQ0UgICAgICAgICAgICAgPSAgJyAnLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBGRUVEICAgICAgICAgICAgICA9ICdcXGYnLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBUQUIgICAgICAgICAgICAgICA9ICdcXHQnLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBDUiAgICAgICAgICAgICAgICA9ICdcXHInLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBPUEVOX1BBUkVOVEhFU0VTICA9ICAnKCcuY2hhckNvZGVBdCgwKTtcbmNvbnN0IENMT1NFX1BBUkVOVEhFU0VTID0gICcpJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgT1BFTl9DVVJMWSAgICAgICAgPSAgJ3snLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBDTE9TRV9DVVJMWSAgICAgICA9ICAnfScuY2hhckNvZGVBdCgwKTtcbmNvbnN0IFNFTUlDT0xPTiAgICAgICAgID0gICc7Jy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQVNURVJJQ0sgICAgICAgICAgPSAgJyonLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBDT0xPTiAgICAgICAgICAgICA9ICAnOicuY2hhckNvZGVBdCgwKTtcbmNvbnN0IEFUICAgICAgICAgICAgICAgID0gICdAJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQ09NTUEgICAgICAgICAgICAgPSAgJywnLmNoYXJDb2RlQXQoMCk7XG5cbmNvbnN0IFJFX0FUX0VORCAgICAgID0gL1sgXFxuXFx0XFxyXFxmXFx7XFwoXFwpJ1wiXFxcXDsvXS9nO1xuY29uc3QgUkVfTkVXX0xJTkUgICAgPSAvW1xcclxcZlxcbl0vZztcbmNvbnN0IFJFX1dPUkRfRU5EICAgID0gL1sgXFxuXFx0XFxyXFxmXFwoXFwpXFx7XFx9OjtAISdcIlxcXFwsXXxcXC8oPz1cXCopL2c7XG5jb25zdCBSRV9CQURfQlJBQ0tFVCA9IC8uW1xcXFxcXC9cXChcIidcXG5dLztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9rZW5pemUoaW5wdXQpIHtcbiAgICBsZXQgdG9rZW5zID0gW107XG4gICAgbGV0IGNzcyAgICA9IGlucHV0LmNzcy52YWx1ZU9mKCk7XG5cbiAgICBsZXQgY29kZSwgbmV4dCwgcXVvdGUsIGxpbmVzLCBsYXN0LCBjb250ZW50LCBlc2NhcGUsXG4gICAgICAgIG5leHRMaW5lLCBuZXh0T2Zmc2V0LCBlc2NhcGVkLCBlc2NhcGVQb3MsIHByZXYsIG47XG5cbiAgICBsZXQgbGVuZ3RoID0gY3NzLmxlbmd0aDtcbiAgICBsZXQgb2Zmc2V0ID0gLTE7XG4gICAgbGV0IGxpbmUgICA9ICAxO1xuICAgIGxldCBwb3MgICAgPSAgMDtcblxuICAgIGZ1bmN0aW9uIHVuY2xvc2VkKHdoYXQpIHtcbiAgICAgICAgdGhyb3cgaW5wdXQuZXJyb3IoJ1VuY2xvc2VkICcgKyB3aGF0LCBsaW5lLCBwb3MgLSBvZmZzZXQpO1xuICAgIH1cblxuICAgIHdoaWxlICggcG9zIDwgbGVuZ3RoICkge1xuICAgICAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQocG9zKTtcblxuICAgICAgICBpZiAoIGNvZGUgPT09IE5FV0xJTkUgfHwgY29kZSA9PT0gRkVFRCB8fFxuICAgICAgICAgICAgIGNvZGUgPT09IENSICYmIGNzcy5jaGFyQ29kZUF0KHBvcyArIDEpICE9PSBORVdMSU5FICkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gcG9zO1xuICAgICAgICAgICAgbGluZSAgKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoIGNvZGUgKSB7XG4gICAgICAgIGNhc2UgQ1I6XG4gICAgICAgICAgICBpZiAoIGNzcy5jaGFyQ29kZUF0KHBvcyArIDEpID09PSBORVdMSU5FICkge1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IHBvcztcbiAgICAgICAgICAgICAgICBsaW5lICArPSAxO1xuICAgICAgICAgICAgICAgIHBvcyAgICs9IDE7XG4gICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goWyduZXdsaW5lJywgJ1xcclxcbicsIGxpbmUgLSAxXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKFsnbmV3bGluZScsICdcXHInLCBsaW5lIC0gMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBGRUVEOlxuICAgICAgICBjYXNlIE5FV0xJTkU6XG4gICAgICAgICAgICB0b2tlbnMucHVzaChbJ25ld2xpbmUnLCBjc3Muc2xpY2UocG9zLCBwb3MgKyAxKSwgbGluZSAtIDFdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG5cbiAgICAgICAgY2FzZSBTUEFDRTpcbiAgICAgICAgY2FzZSBUQUI6XG4gICAgICAgICAgICBuZXh0ID0gcG9zO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIG5leHQgKz0gMTtcbiAgICAgICAgICAgICAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQobmV4dCk7XG4gICAgICAgICAgICB9IHdoaWxlICggY29kZSA9PT0gU1BBQ0UgfHwgY29kZSA9PT0gVEFCICk7XG5cbiAgICAgICAgICAgIHRva2Vucy5wdXNoKFsnc3BhY2UnLCBjc3Muc2xpY2UocG9zLCBuZXh0KV0pO1xuICAgICAgICAgICAgcG9zID0gbmV4dCAtIDE7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIE9QRU5fQ1VSTFk6XG4gICAgICAgICAgICB0b2tlbnMucHVzaChbJ3snLCAneycsIGxpbmUsIHBvcyAtIG9mZnNldF0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBDTE9TRV9DVVJMWTpcbiAgICAgICAgICAgIHRva2Vucy5wdXNoKFsnfScsICd9JywgbGluZSwgcG9zIC0gb2Zmc2V0XSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIENPTE9OOlxuICAgICAgICAgICAgdG9rZW5zLnB1c2goWyc6JywgJzonLCBsaW5lLCBwb3MgLSBvZmZzZXRdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU0VNSUNPTE9OOlxuICAgICAgICAgICAgdG9rZW5zLnB1c2goWyc7JywgJzsnLCBsaW5lLCBwb3MgLSBvZmZzZXRdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQ09NTUE6XG4gICAgICAgICAgICB0b2tlbnMucHVzaChbJywnLCAnLCcsIGxpbmUsIHBvcyAtIG9mZnNldF0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBPUEVOX1BBUkVOVEhFU0VTOlxuICAgICAgICAgICAgcHJldiA9IHRva2Vucy5sZW5ndGggPyB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzFdIDogJyc7XG4gICAgICAgICAgICBuICAgID0gY3NzLmNoYXJDb2RlQXQocG9zICsgMSk7XG4gICAgICAgICAgICBpZiAoIHByZXYgPT09ICd1cmwnICYmIG4gIT09IFNJTkdMRV9RVU9URSAmJiBuICE9PSBET1VCTEVfUVVPVEUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAhPT0gU1BBQ0UgJiYgbiAhPT0gTkVXTElORSAmJiBuICE9PSBUQUIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAhPT0gRkVFRCAmJiBuICE9PSBDUiApIHtcbiAgICAgICAgICAgICAgICBuZXh0ID0gcG9zO1xuICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBuZXh0ICAgID0gY3NzLmluZGV4T2YoJyknLCBuZXh0ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gLTEgKSB1bmNsb3NlZCgnYnJhY2tldCcpO1xuICAgICAgICAgICAgICAgICAgICBlc2NhcGVQb3MgPSBuZXh0O1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGNzcy5jaGFyQ29kZUF0KGVzY2FwZVBvcyAtIDEpID09PSBCQUNLU0xBU0ggKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGVQb3MgLT0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKCBlc2NhcGVkICk7XG5cbiAgICAgICAgICAgICAgICB0b2tlbnMucHVzaChbJ2JyYWNrZXRzJywgY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpLFxuICAgICAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBsaW5lLCBuZXh0IC0gb2Zmc2V0XG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgcG9zID0gbmV4dDtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0ICAgID0gY3NzLmluZGV4T2YoJyknLCBwb3MgKyAxKTtcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBuZXh0ID09PSAtMSB8fCBSRV9CQURfQlJBQ0tFVC50ZXN0KGNvbnRlbnQpICkge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbnMucHVzaChbJygnLCAnKCcsIGxpbmUsIHBvcyAtIG9mZnNldF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKFsnYnJhY2tldHMnLCBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZSwgcG9zICAtIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgIHBvcyA9IG5leHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIENMT1NFX1BBUkVOVEhFU0VTOlxuICAgICAgICAgICAgdG9rZW5zLnB1c2goWycpJywgJyknLCBsaW5lLCBwb3MgLSBvZmZzZXRdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU0lOR0xFX1FVT1RFOlxuICAgICAgICBjYXNlIERPVUJMRV9RVU9URTpcbiAgICAgICAgICAgIHF1b3RlID0gY29kZSA9PT0gU0lOR0xFX1FVT1RFID8gJ1xcJycgOiAnXCInO1xuICAgICAgICAgICAgbmV4dCAgPSBwb3M7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIG5leHQgICAgPSBjc3MuaW5kZXhPZihxdW90ZSwgbmV4dCArIDEpO1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gLTEgKSB1bmNsb3NlZCgncXVvdGUnKTtcbiAgICAgICAgICAgICAgICBlc2NhcGVQb3MgPSBuZXh0O1xuICAgICAgICAgICAgICAgIHdoaWxlICggY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCApIHtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlUG9zIC09IDE7XG4gICAgICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlICggZXNjYXBlZCApO1xuXG4gICAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpO1xuICAgICAgICAgICAgbGluZXMgICA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgICAgICAgICAgbGFzdCAgICA9IGxpbmVzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgICAgIGlmICggbGFzdCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgbmV4dExpbmUgICA9IGxpbmUgKyBsYXN0O1xuICAgICAgICAgICAgICAgIG5leHRPZmZzZXQgPSBuZXh0IC0gbGluZXNbbGFzdF0ubGVuZ3RoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0TGluZSAgID0gbGluZTtcbiAgICAgICAgICAgICAgICBuZXh0T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b2tlbnMucHVzaChbJ3N0cmluZycsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgIG5leHRMaW5lLCBuZXh0IC0gbmV4dE9mZnNldFxuICAgICAgICAgICAgXSk7XG5cbiAgICAgICAgICAgIG9mZnNldCA9IG5leHRPZmZzZXQ7XG4gICAgICAgICAgICBsaW5lICAgPSBuZXh0TGluZTtcbiAgICAgICAgICAgIHBvcyAgICA9IG5leHQ7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIEFUOlxuICAgICAgICAgICAgUkVfQVRfRU5ELmxhc3RJbmRleCA9IHBvcyArIDE7XG4gICAgICAgICAgICBSRV9BVF9FTkQudGVzdChjc3MpO1xuICAgICAgICAgICAgaWYgKCBSRV9BVF9FTkQubGFzdEluZGV4ID09PSAwICkge1xuICAgICAgICAgICAgICAgIG5leHQgPSBjc3MubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV4dCA9IFJFX0FUX0VORC5sYXN0SW5kZXggLSAyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG9rZW5zLnB1c2goWydhdC13b3JkJywgY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpLFxuICAgICAgICAgICAgICAgIGxpbmUsIHBvcyAgLSBvZmZzZXQsXG4gICAgICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICBwb3MgPSBuZXh0O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBCQUNLU0xBU0g6XG4gICAgICAgICAgICBuZXh0ICAgPSBwb3M7XG4gICAgICAgICAgICBlc2NhcGUgPSB0cnVlO1xuXG4gICAgICAgICAgICBuZXh0TGluZSA9IGxpbmU7XG5cbiAgICAgICAgICAgIHdoaWxlICggY3NzLmNoYXJDb2RlQXQobmV4dCArIDEpID09PSBCQUNLU0xBU0ggKSB7XG4gICAgICAgICAgICAgICAgbmV4dCAgKz0gMTtcbiAgICAgICAgICAgICAgICBlc2NhcGUgPSAhZXNjYXBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29kZSA9IGNzcy5jaGFyQ29kZUF0KG5leHQgKyAxKTtcbiAgICAgICAgICAgIGlmICggZXNjYXBlICkge1xuICAgICAgICAgICAgICAgIGlmICggY29kZSA9PT0gQ1IgJiYgY3NzLmNoYXJDb2RlQXQobmV4dCArIDIpID09PSBORVdMSU5FICkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0ICAgICAgKz0gMjtcbiAgICAgICAgICAgICAgICAgICAgbmV4dExpbmUgICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIG5leHRPZmZzZXQgPSBuZXh0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGNvZGUgPT09IENSIHx8IGNvZGUgPT09IE5FV0xJTkUgfHwgY29kZSA9PT0gRkVFRCApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCAgICAgICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIG5leHRMaW5lICArPSAxO1xuICAgICAgICAgICAgICAgICAgICBuZXh0T2Zmc2V0ID0gbmV4dDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXh0ICs9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG9rZW5zLnB1c2goWyd3b3JkJywgY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpLFxuICAgICAgICAgICAgICAgIGxpbmUsIHBvcyAgLSBvZmZzZXQsXG4gICAgICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICBpZiAoIG5leHRMaW5lICE9PSBsaW5lICkge1xuICAgICAgICAgICAgICAgIGxpbmUgICA9IG5leHRMaW5lO1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IG5leHRPZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3MgPSBuZXh0O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIG4gPSBjc3MuY2hhckNvZGVBdChwb3MgKyAxKTtcblxuICAgICAgICAgICAgaWYgKCBjb2RlID09PSBTTEFTSCAmJiBuID09PSBBU1RFUklDSyApIHtcbiAgICAgICAgICAgICAgICBuZXh0ID0gY3NzLmluZGV4T2YoJyovJywgcG9zICsgMikgKyAxO1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gMCApIHVuY2xvc2VkKCdjb21tZW50Jyk7XG5cbiAgICAgICAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpO1xuICAgICAgICAgICAgICAgIGxpbmVzICAgPSBjb250ZW50LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICAgICAgICBsYXN0ICAgID0gbGluZXMubGVuZ3RoIC0gMTtcblxuICAgICAgICAgICAgICAgIGlmICggbGFzdCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHRMaW5lICAgPSBsaW5lICsgbGFzdDtcbiAgICAgICAgICAgICAgICAgICAgbmV4dE9mZnNldCA9IG5leHQgLSBsaW5lc1tsYXN0XS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dExpbmUgICA9IGxpbmU7XG4gICAgICAgICAgICAgICAgICAgIG5leHRPZmZzZXQgPSBvZmZzZXQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goWydjb21tZW50JywgY29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgbGluZSwgICAgIHBvcyAgLSBvZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIG5leHRMaW5lLCBuZXh0IC0gbmV4dE9mZnNldFxuICAgICAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gbmV4dE9mZnNldDtcbiAgICAgICAgICAgICAgICBsaW5lICAgPSBuZXh0TGluZTtcbiAgICAgICAgICAgICAgICBwb3MgICAgPSBuZXh0O1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBjb2RlID09PSBTTEFTSCAmJiBuID09PSBTTEFTSCApIHtcbiAgICAgICAgICAgICAgICBSRV9ORVdfTElORS5sYXN0SW5kZXggPSBwb3MgKyAxO1xuICAgICAgICAgICAgICAgIFJFX05FV19MSU5FLnRlc3QoY3NzKTtcbiAgICAgICAgICAgICAgICBpZiAoIFJFX05FV19MSU5FLmxhc3RJbmRleCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSBSRV9ORVdfTElORS5sYXN0SW5kZXggLSAyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSk7XG5cbiAgICAgICAgICAgICAgICB0b2tlbnMucHVzaChbJ2NvbW1lbnQnLCBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBsaW5lLCBuZXh0IC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAnaW5saW5lJ1xuICAgICAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgICAgICAgcG9zID0gbmV4dDtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBSRV9XT1JEX0VORC5sYXN0SW5kZXggPSBwb3MgKyAxO1xuICAgICAgICAgICAgICAgIFJFX1dPUkRfRU5ELnRlc3QoY3NzKTtcbiAgICAgICAgICAgICAgICBpZiAoIFJFX1dPUkRfRU5ELmxhc3RJbmRleCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSBSRV9XT1JEX0VORC5sYXN0SW5kZXggLSAyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKFsnd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgICAgICAgICAgbGluZSwgcG9zICAtIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIHBvcyA9IG5leHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcG9zKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRva2Vucztcbn1cbiJdfQ==
SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc