1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.Parser = void 0;
|
7 |
|
8 | var _util = require("@glimmer/util");
|
9 |
|
10 | var _simpleHtmlTokenizer = require("simple-html-tokenizer");
|
11 |
|
12 | function _defineProperties(target, props) {
|
13 | for (var i = 0; i < props.length; i++) {
|
14 | var descriptor = props[i];
|
15 | descriptor.enumerable = descriptor.enumerable || false;
|
16 | descriptor.configurable = true;
|
17 | if ("value" in descriptor) descriptor.writable = true;
|
18 | Object.defineProperty(target, descriptor.key, descriptor);
|
19 | }
|
20 | }
|
21 |
|
22 | function _createClass(Constructor, protoProps, staticProps) {
|
23 | if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
24 | if (staticProps) _defineProperties(Constructor, staticProps);
|
25 | return Constructor;
|
26 | }
|
27 |
|
28 | var Parser = /*#__PURE__*/function () {
|
29 | function Parser(source, entityParser, mode) {
|
30 | if (entityParser === void 0) {
|
31 | entityParser = new _simpleHtmlTokenizer.EntityParser(_simpleHtmlTokenizer.HTML5NamedCharRefs);
|
32 | }
|
33 |
|
34 | if (mode === void 0) {
|
35 | mode = 'precompile';
|
36 | }
|
37 |
|
38 | this.elementStack = [];
|
39 | this.currentAttribute = null;
|
40 | this.currentNode = null;
|
41 | this.source = source;
|
42 | this.lines = source.source.split(/(?:\r\n?|\n)/g);
|
43 | this.tokenizer = new _simpleHtmlTokenizer.EventedTokenizer(this, entityParser, mode);
|
44 | }
|
45 |
|
46 | var _proto = Parser.prototype;
|
47 |
|
48 | _proto.offset = function offset() {
|
49 | var _this$tokenizer = this.tokenizer,
|
50 | line = _this$tokenizer.line,
|
51 | column = _this$tokenizer.column;
|
52 | return this.source.offsetFor(line, column);
|
53 | };
|
54 |
|
55 | _proto.pos = function pos(_ref) {
|
56 | var line = _ref.line,
|
57 | column = _ref.column;
|
58 | return this.source.offsetFor(line, column);
|
59 | };
|
60 |
|
61 | _proto.finish = function finish(node) {
|
62 | return (0, _util.assign)({}, node, {
|
63 | loc: node.loc.until(this.offset())
|
64 | }); // node.loc = node.loc.withEnd(end);
|
65 | };
|
66 |
|
67 | _proto.acceptTemplate = function acceptTemplate(node) {
|
68 | return this[node.type](node);
|
69 | };
|
70 |
|
71 | _proto.acceptNode = function acceptNode(node) {
|
72 | return this[node.type](node);
|
73 | };
|
74 |
|
75 | _proto.currentElement = function currentElement() {
|
76 | return this.elementStack[this.elementStack.length - 1];
|
77 | };
|
78 |
|
79 | _proto.sourceForNode = function sourceForNode(node, endNode) {
|
80 | var firstLine = node.loc.start.line - 1;
|
81 | var currentLine = firstLine - 1;
|
82 | var firstColumn = node.loc.start.column;
|
83 | var string = [];
|
84 | var line;
|
85 | var lastLine;
|
86 | var lastColumn;
|
87 |
|
88 | if (endNode) {
|
89 | lastLine = endNode.loc.end.line - 1;
|
90 | lastColumn = endNode.loc.end.column;
|
91 | } else {
|
92 | lastLine = node.loc.end.line - 1;
|
93 | lastColumn = node.loc.end.column;
|
94 | }
|
95 |
|
96 | while (currentLine < lastLine) {
|
97 | currentLine++;
|
98 | line = this.lines[currentLine];
|
99 |
|
100 | if (currentLine === firstLine) {
|
101 | if (firstLine === lastLine) {
|
102 | string.push(line.slice(firstColumn, lastColumn));
|
103 | } else {
|
104 | string.push(line.slice(firstColumn));
|
105 | }
|
106 | } else if (currentLine === lastLine) {
|
107 | string.push(line.slice(0, lastColumn));
|
108 | } else {
|
109 | string.push(line);
|
110 | }
|
111 | }
|
112 |
|
113 | return string.join('\n');
|
114 | };
|
115 |
|
116 | _createClass(Parser, [{
|
117 | key: "currentAttr",
|
118 | get: function get() {
|
119 | return this.currentAttribute;
|
120 | }
|
121 | }, {
|
122 | key: "currentTag",
|
123 | get: function get() {
|
124 | var node = this.currentNode;
|
125 | false && (0, _util.assert)(node && (node.type === 'StartTag' || node.type === 'EndTag'), 'expected tag');
|
126 | return node;
|
127 | }
|
128 | }, {
|
129 | key: "currentStartTag",
|
130 | get: function get() {
|
131 | var node = this.currentNode;
|
132 | false && (0, _util.assert)(node && node.type === 'StartTag', 'expected start tag');
|
133 | return node;
|
134 | }
|
135 | }, {
|
136 | key: "currentEndTag",
|
137 | get: function get() {
|
138 | var node = this.currentNode;
|
139 | false && (0, _util.assert)(node && node.type === 'EndTag', 'expected end tag');
|
140 | return node;
|
141 | }
|
142 | }, {
|
143 | key: "currentComment",
|
144 | get: function get() {
|
145 | var node = this.currentNode;
|
146 | false && (0, _util.assert)(node && node.type === 'CommentStatement', 'expected a comment');
|
147 | return node;
|
148 | }
|
149 | }, {
|
150 | key: "currentData",
|
151 | get: function get() {
|
152 | var node = this.currentNode;
|
153 | false && (0, _util.assert)(node && node.type === 'TextNode', 'expected a text node');
|
154 | return node;
|
155 | }
|
156 | }]);
|
157 |
|
158 | return Parser;
|
159 | }();
|
160 |
|
161 | exports.Parser = Parser;
|
162 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0NBLElBQU0sTUFBTixHQUFBLGFBQUEsWUFBQTtBQWVFLFdBQUEsTUFBQSxDQUFBLE1BQUEsRUFBQSxZQUFBLEVBQUEsSUFBQSxFQUcrQztBQUFBLFFBRDdDLFlBQzZDLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFEN0MsTUFBQSxZQUM2QyxHQUQ5QixJQUFBLGlDQUFBLENBRmpCLHVDQUVpQixDQUFmO0FBQzZDOztBQUFBLFFBQTdDLElBQTZDLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBN0MsTUFBQSxJQUE2QyxHQUgvQyxZQUdFO0FBQTZDOztBQWpCckMsU0FBQSxZQUFBLEdBQUEsRUFBQTtBQUdILFNBQUEsZ0JBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxXQUFBLEdBQUEsSUFBQTtBQWVMLFNBQUEsTUFBQSxHQUFBLE1BQUE7QUFDQSxTQUFBLEtBQUEsR0FBYSxNQUFNLENBQU4sTUFBQSxDQUFBLEtBQUEsQ0FBYixlQUFhLENBQWI7QUFDQSxTQUFBLFNBQUEsR0FBaUIsSUFBQSxxQ0FBQSxDQUFBLElBQUEsRUFBQSxZQUFBLEVBQWpCLElBQWlCLENBQWpCO0FBQ0Q7O0FBdkJILE1BQUEsTUFBQSxHQUFBLE1BQUEsQ0FBQSxTQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLE1BQUEsR0F5QkUsU0FBQSxNQUFBLEdBQU07QUFBQSxRQUFBLGVBQUEsR0FDbUIsS0FEbkIsU0FBQTtBQUFBLFFBQ0EsSUFEQSxHQUFBLGVBQUEsQ0FBQSxJQUFBO0FBQUEsUUFDUSxNQURSLEdBQUEsZUFBQSxDQUFBLE1BQUE7QUFFSixXQUFPLEtBQUEsTUFBQSxDQUFBLFNBQUEsQ0FBQSxJQUFBLEVBQVAsTUFBTyxDQUFQO0FBM0JKLEdBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsR0FB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V0FBQTtBQURnQixlQUVoQixrQkFBTyxJQUFJLElBQUksSUFBSSxDQUFKLElBQUEsS0FBVCxrQkFBTixFQUZnQixvQkFFaEIsQ0FGZ0I7QUFHaEIsYUFBQSxJQUFBO0FBQ0Q7QUEzR0gsR0FBQSxFQUFBO0FBQUEsSUFBQSxHQUFBLEVBQUEsYUFBQTtBQUFBLElBQUEsR0FBQSxFQUFBLFNBQUEsR0FBQSxHQTZHaUI7QUFDYixVQUFJLElBQUksR0FBRyxLQUFYLFdBQUE7QUFEYSxlQUViLGtCQUFPLElBQUksSUFBSSxJQUFJLENBQUosSUFBQSxLQUFULFVBQU4sRUFGYSxzQkFFYixDQUZhO0FBR2IsYUFBQSxJQUFBO0FBQ0Q7QUFqSEgsR0FBQSxDQUFBLENBQUE7O0FBQUEsU0FBQSxNQUFBO0FBQUEsQ0FBQSxFQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBhc3NlcnQsIGFzc2lnbiwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBFbnRpdHlQYXJzZXIsXG4gIEV2ZW50ZWRUb2tlbml6ZXIsXG4gIEhUTUw1TmFtZWRDaGFyUmVmcyBhcyBuYW1lZENoYXJSZWZzLFxufSBmcm9tICdzaW1wbGUtaHRtbC10b2tlbml6ZXInO1xuXG5pbXBvcnQgeyBTb3VyY2VQb3NpdGlvbiB9IGZyb20gJy4vc291cmNlL2xvY2F0aW9uJztcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJy4vc291cmNlL3NvdXJjZSc7XG5pbXBvcnQgeyBTb3VyY2VPZmZzZXQsIFNvdXJjZVNwYW4gfSBmcm9tICcuL3NvdXJjZS9zcGFuJztcbmltcG9ydCAqIGFzIEFTVHYxIGZyb20gJy4vdjEvYXBpJztcbmltcG9ydCAqIGFzIEhCUyBmcm9tICcuL3YxL2hhbmRsZWJhcnMtYXN0JztcblxuZXhwb3J0IHR5cGUgUGFyc2VyTm9kZUJ1aWxkZXI8TiBleHRlbmRzIHsgbG9jOiBTb3VyY2VTcGFuIH0+ID0gT21pdDxOLCAnbG9jJz4gJiB7XG4gIGxvYzogU291cmNlT2Zmc2V0O1xufTtcblxuZXhwb3J0IHR5cGUgRWxlbWVudCA9IEFTVHYxLlRlbXBsYXRlIHwgQVNUdjEuQmxvY2sgfCBBU1R2MS5FbGVtZW50Tm9kZTtcblxuZXhwb3J0IGludGVyZmFjZSBUYWc8VCBleHRlbmRzICdTdGFydFRhZycgfCAnRW5kVGFnJz4ge1xuICByZWFkb25seSB0eXBlOiBUO1xuICBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGF0dHJpYnV0ZXM6IEFTVHYxLkF0dHJOb2RlW107XG4gIHJlYWRvbmx5IG1vZGlmaWVyczogQVNUdjEuRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50W107XG4gIHJlYWRvbmx5IGNvbW1lbnRzOiBBU1R2MS5NdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnRbXTtcbiAgc2VsZkNsb3Npbmc6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGxvYzogU291cmNlU3Bhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbnRQYXJ0OiBBU1R2MS5UZXh0Tm9kZSB8IG51bGw7XG4gIHBhcnRzOiAoQVNUdjEuTXVzdGFjaGVTdGF0ZW1lbnQgfCBBU1R2MS5UZXh0Tm9kZSlbXTtcbiAgaXNRdW90ZWQ6IGJvb2xlYW47XG4gIGlzRHluYW1pYzogYm9vbGVhbjtcbiAgc3RhcnQ6IFNvdXJjZU9mZnNldDtcbiAgdmFsdWVTcGFuOiBTb3VyY2VTcGFuO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFyc2VyIHtcbiAgcHJvdGVjdGVkIGVsZW1lbnRTdGFjazogRWxlbWVudFtdID0gW107XG4gIHByaXZhdGUgbGluZXM6IHN0cmluZ1tdO1xuICByZWFkb25seSBzb3VyY2U6IFNvdXJjZTtcbiAgcHVibGljIGN1cnJlbnRBdHRyaWJ1dGU6IE9wdGlvbjxBdHRyaWJ1dGU+ID0gbnVsbDtcbiAgcHVibGljIGN1cnJlbnROb2RlOiBPcHRpb248XG4gICAgUmVhZG9ubHk8XG4gICAgICB8IFBhcnNlck5vZGVCdWlsZGVyPEFTVHYxLkNvbW1lbnRTdGF0ZW1lbnQ+XG4gICAgICB8IEFTVHYxLlRleHROb2RlXG4gICAgICB8IFBhcnNlck5vZGVCdWlsZGVyPFRhZzwnU3RhcnRUYWcnPj5cbiAgICAgIHwgUGFyc2VyTm9kZUJ1aWxkZXI8VGFnPCdFbmRUYWcnPj5cbiAgICA+XG4gID4gPSBudWxsO1xuICBwdWJsaWMgdG9rZW5pemVyOiBFdmVudGVkVG9rZW5pemVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNvdXJjZTogU291cmNlLFxuICAgIGVudGl0eVBhcnNlciA9IG5ldyBFbnRpdHlQYXJzZXIobmFtZWRDaGFyUmVmcyksXG4gICAgbW9kZTogJ3ByZWNvbXBpbGUnIHwgJ2NvZGVtb2QnID0gJ3ByZWNvbXBpbGUnXG4gICkge1xuICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgIHRoaXMubGluZXMgPSBzb3VyY2Uuc291cmNlLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgdGhpcy50b2tlbml6ZXIgPSBuZXcgRXZlbnRlZFRva2VuaXplcih0aGlzLCBlbnRpdHlQYXJzZXIsIG1vZGUpO1xuICB9XG5cbiAgb2Zmc2V0KCk6IFNvdXJjZU9mZnNldCB7XG4gICAgbGV0IHsgbGluZSwgY29sdW1uIH0gPSB0aGlzLnRva2VuaXplcjtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2Uub2Zmc2V0Rm9yKGxpbmUsIGNvbHVtbik7XG4gIH1cblxuICBwb3MoeyBsaW5lLCBjb2x1bW4gfTogU291cmNlUG9zaXRpb24pOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5vZmZzZXRGb3IobGluZSwgY29sdW1uKTtcbiAgfVxuXG4gIGZpbmlzaDxUIGV4dGVuZHMgeyBsb2M6IFNvdXJjZVNwYW4gfT4obm9kZTogUGFyc2VyTm9kZUJ1aWxkZXI8VD4pOiBUIHtcbiAgICByZXR1cm4gKGFzc2lnbih7fSwgbm9kZSwge1xuICAgICAgbG9jOiBub2RlLmxvYy51bnRpbCh0aGlzLm9mZnNldCgpKSxcbiAgICB9IGFzIGNvbnN0KSBhcyB1bmtub3duKSBhcyBUO1xuXG4gICAgLy8gbm9kZS5sb2MgPSBub2RlLmxvYy53aXRoRW5kKGVuZCk7XG4gIH1cblxuICBhYnN0cmFjdCBQcm9ncmFtKG5vZGU6IEhCUy5Qcm9ncmFtKTogSEJTLk91dHB1dDwnUHJvZ3JhbSc+O1xuICBhYnN0cmFjdCBNdXN0YWNoZVN0YXRlbWVudChub2RlOiBIQlMuTXVzdGFjaGVTdGF0ZW1lbnQpOiBIQlMuT3V0cHV0PCdNdXN0YWNoZVN0YXRlbWVudCc+O1xuICBhYnN0cmFjdCBEZWNvcmF0b3Iobm9kZTogSEJTLkRlY29yYXRvcik6IEhCUy5PdXRwdXQ8J0RlY29yYXRvcic+O1xuICBhYnN0cmFjdCBCbG9ja1N0YXRlbWVudChub2RlOiBIQlMuQmxvY2tTdGF0ZW1lbnQpOiBIQlMuT3V0cHV0PCdCbG9ja1N0YXRlbWVudCc+O1xuICBhYnN0cmFjdCBEZWNvcmF0b3JCbG9jayhub2RlOiBIQlMuRGVjb3JhdG9yQmxvY2spOiBIQlMuT3V0cHV0PCdEZWNvcmF0b3JCbG9jayc+O1xuICBhYnN0cmFjdCBQYXJ0aWFsU3RhdGVtZW50KG5vZGU6IEhCUy5QYXJ0aWFsU3RhdGVtZW50KTogSEJTLk91dHB1dDwnUGFydGlhbFN0YXRlbWVudCc+O1xuICBhYnN0cmFjdCBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQoXG4gICAgbm9kZTogSEJTLlBhcnRpYWxCbG9ja1N0YXRlbWVudFxuICApOiBIQlMuT3V0cHV0PCdQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQnPjtcbiAgYWJzdHJhY3QgQ29udGVudFN0YXRlbWVudChub2RlOiBIQlMuQ29udGVudFN0YXRlbWVudCk6IEhCUy5PdXRwdXQ8J0NvbnRlbnRTdGF0ZW1lbnQnPjtcbiAgYWJzdHJhY3QgQ29tbWVudFN0YXRlbWVudChub2RlOiBIQlMuQ29tbWVudFN0YXRlbWVudCk6IEhCUy5PdXRwdXQ8J0NvbW1lbnRTdGF0ZW1lbnQnPjtcbiAgYWJzdHJhY3QgU3ViRXhwcmVzc2lvbihub2RlOiBIQlMuU3ViRXhwcmVzc2lvbik6IEhCUy5PdXRwdXQ8J1N1YkV4cHJlc3Npb24nPjtcbiAgYWJzdHJhY3QgUGF0aEV4cHJlc3Npb24obm9kZTogSEJTLlBhdGhFeHByZXNzaW9uKTogSEJTLk91dHB1dDwnUGF0aEV4cHJlc3Npb24nPjtcbiAgYWJzdHJhY3QgU3RyaW5nTGl0ZXJhbChub2RlOiBIQlMuU3RyaW5nTGl0ZXJhbCk6IEhCUy5PdXRwdXQ8J1N0cmluZ0xpdGVyYWwnPjtcbiAgYWJzdHJhY3QgQm9vbGVhbkxpdGVyYWwobm9kZTogSEJTLkJvb2xlYW5MaXRlcmFsKTogSEJTLk91dHB1dDwnQm9vbGVhbkxpdGVyYWwnPjtcbiAgYWJzdHJhY3QgTnVtYmVyTGl0ZXJhbChub2RlOiBIQlMuTnVtYmVyTGl0ZXJhbCk6IEhCUy5PdXRwdXQ8J051bWJlckxpdGVyYWwnPjtcbiAgYWJzdHJhY3QgVW5kZWZpbmVkTGl0ZXJhbChub2RlOiBIQlMuVW5kZWZpbmVkTGl0ZXJhbCk6IEhCUy5PdXRwdXQ8J1VuZGVmaW5lZExpdGVyYWwnPjtcbiAgYWJzdHJhY3QgTnVsbExpdGVyYWwobm9kZTogSEJTLk51bGxMaXRlcmFsKTogSEJTLk91dHB1dDwnTnVsbExpdGVyYWwnPjtcblxuICBhYnN0cmFjdCByZXNldCgpOiB2b2lkO1xuICBhYnN0cmFjdCBmaW5pc2hEYXRhKCk6IHZvaWQ7XG4gIGFic3RyYWN0IHRhZ09wZW4oKTogdm9pZDtcbiAgYWJzdHJhY3QgYmVnaW5EYXRhKCk6IHZvaWQ7XG4gIGFic3RyYWN0IGFwcGVuZFRvRGF0YShjaGFyOiBzdHJpbmcpOiB2b2lkO1xuICBhYnN0cmFjdCBiZWdpblN0YXJ0VGFnKCk6IHZvaWQ7XG4gIGFic3RyYWN0IGFwcGVuZFRvVGFnTmFtZShjaGFyOiBzdHJpbmcpOiB2b2lkO1xuICBhYnN0cmFjdCBiZWdpbkF0dHJpYnV0ZSgpOiB2b2lkO1xuICBhYnN0cmFjdCBhcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2hhcjogc3RyaW5nKTogdm9pZDtcbiAgYWJzdHJhY3QgYmVnaW5BdHRyaWJ1dGVWYWx1ZShxdW90ZWQ6IGJvb2xlYW4pOiB2b2lkO1xuICBhYnN0cmFjdCBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNoYXI6IHN0cmluZyk6IHZvaWQ7XG4gIGFic3RyYWN0IGZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk6IHZvaWQ7XG4gIGFic3RyYWN0IG1hcmtUYWdBc1NlbGZDbG9zaW5nKCk6IHZvaWQ7XG4gIGFic3RyYWN0IGJlZ2luRW5kVGFnKCk6IHZvaWQ7XG4gIGFic3RyYWN0IGZpbmlzaFRhZygpOiB2b2lkO1xuICBhYnN0cmFjdCBiZWdpbkNvbW1lbnQoKTogdm9pZDtcbiAgYWJzdHJhY3QgYXBwZW5kVG9Db21tZW50RGF0YShjaGFyOiBzdHJpbmcpOiB2b2lkO1xuICBhYnN0cmFjdCBmaW5pc2hDb21tZW50KCk6IHZvaWQ7XG4gIGFic3RyYWN0IHJlcG9ydFN5bnRheEVycm9yKGVycm9yOiBzdHJpbmcpOiB2b2lkO1xuXG4gIGdldCBjdXJyZW50QXR0cigpOiBBdHRyaWJ1dGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5jdXJyZW50QXR0cmlidXRlLCAnZXhwZWN0ZWQgYXR0cmlidXRlJyk7XG4gIH1cblxuICBnZXQgY3VycmVudFRhZygpOiBQYXJzZXJOb2RlQnVpbGRlcjxUYWc8J1N0YXJ0VGFnJyB8ICdFbmRUYWcnPj4ge1xuICAgIGxldCBub2RlID0gdGhpcy5jdXJyZW50Tm9kZTtcbiAgICBhc3NlcnQobm9kZSAmJiAobm9kZS50eXBlID09PSAnU3RhcnRUYWcnIHx8IG5vZGUudHlwZSA9PT0gJ0VuZFRhZycpLCAnZXhwZWN0ZWQgdGFnJyk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBnZXQgY3VycmVudFN0YXJ0VGFnKCk6IFBhcnNlck5vZGVCdWlsZGVyPFRhZzwnU3RhcnRUYWcnPj4ge1xuICAgIGxldCBub2RlID0gdGhpcy5jdXJyZW50Tm9kZTtcbiAgICBhc3NlcnQobm9kZSAmJiBub2RlLnR5cGUgPT09ICdTdGFydFRhZycsICdleHBlY3RlZCBzdGFydCB0YWcnKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGdldCBjdXJyZW50RW5kVGFnKCk6IFBhcnNlck5vZGVCdWlsZGVyPFRhZzwnRW5kVGFnJz4+IHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuY3VycmVudE5vZGU7XG4gICAgYXNzZXJ0KG5vZGUgJiYgbm9kZS50eXBlID09PSAnRW5kVGFnJywgJ2V4cGVjdGVkIGVuZCB0YWcnKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGdldCBjdXJyZW50Q29tbWVudCgpOiBQYXJzZXJOb2RlQnVpbGRlcjxBU1R2MS5Db21tZW50U3RhdGVtZW50PiB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLmN1cnJlbnROb2RlO1xuICAgIGFzc2VydChub2RlICYmIG5vZGUudHlwZSA9PT0gJ0NvbW1lbnRTdGF0ZW1lbnQnLCAnZXhwZWN0ZWQgYSBjb21tZW50Jyk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBnZXQgY3VycmVudERhdGEoKTogQVNUdjEuVGV4dE5vZGUge1xuICAgIGxldCBub2RlID0gdGhpcy5jdXJyZW50Tm9kZTtcbiAgICBhc3NlcnQobm9kZSAmJiBub2RlLnR5cGUgPT09ICdUZXh0Tm9kZScsICdleHBlY3RlZCBhIHRleHQgbm9kZScpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgYWNjZXB0VGVtcGxhdGUobm9kZTogSEJTLlByb2dyYW0pOiBBU1R2MS5UZW1wbGF0ZSB7XG4gICAgcmV0dXJuIHRoaXNbbm9kZS50eXBlIGFzICdQcm9ncmFtJ10obm9kZSkgYXMgQVNUdjEuVGVtcGxhdGU7XG4gIH1cblxuICBhY2NlcHROb2RlKG5vZGU6IEhCUy5Qcm9ncmFtKTogQVNUdjEuQmxvY2sgfCBBU1R2MS5UZW1wbGF0ZTtcbiAgYWNjZXB0Tm9kZTxVIGV4dGVuZHMgSEJTLk5vZGUgfCBBU1R2MS5Ob2RlPihub2RlOiBIQlMuTm9kZSk6IFU7XG4gIGFjY2VwdE5vZGU8VCBleHRlbmRzIEhCUy5Ob2RlVHlwZT4obm9kZTogSEJTLk5vZGU8VD4pOiBIQlMuT3V0cHV0PFQ+IHtcbiAgICByZXR1cm4gKHRoaXNbbm9kZS50eXBlIGFzIFRdIGFzIChub2RlOiBIQlMuTm9kZTxUPikgPT4gSEJTLk91dHB1dDxUPikobm9kZSk7XG4gIH1cblxuICBjdXJyZW50RWxlbWVudCgpOiBFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2tbdGhpcy5lbGVtZW50U3RhY2subGVuZ3RoIC0gMV07XG4gIH1cblxuICBzb3VyY2VGb3JOb2RlKG5vZGU6IEhCUy5Ob2RlLCBlbmROb2RlPzogeyBsb2M6IEhCUy5Tb3VyY2VMb2NhdGlvbiB9KTogc3RyaW5nIHtcbiAgICBsZXQgZmlyc3RMaW5lID0gbm9kZS5sb2Muc3RhcnQubGluZSAtIDE7XG4gICAgbGV0IGN1cnJlbnRMaW5lID0gZmlyc3RMaW5lIC0gMTtcbiAgICBsZXQgZmlyc3RDb2x1bW4gPSBub2RlLmxvYy5zdGFydC5jb2x1bW47XG4gICAgbGV0IHN0cmluZyA9IFtdO1xuICAgIGxldCBsaW5lO1xuXG4gICAgbGV0IGxhc3RMaW5lOiBudW1iZXI7XG4gICAgbGV0IGxhc3RDb2x1bW46IG51bWJlcjtcblxuICAgIGlmIChlbmROb2RlKSB7XG4gICAgICBsYXN0TGluZSA9IGVuZE5vZGUubG9jLmVuZC5saW5lIC0gMTtcbiAgICAgIGxhc3RDb2x1bW4gPSBlbmROb2RlLmxvYy5lbmQuY29sdW1uO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYXN0TGluZSA9IG5vZGUubG9jLmVuZC5saW5lIC0gMTtcbiAgICAgIGxhc3RDb2x1bW4gPSBub2RlLmxvYy5lbmQuY29sdW1uO1xuICAgIH1cblxuICAgIHdoaWxlIChjdXJyZW50TGluZSA8IGxhc3RMaW5lKSB7XG4gICAgICBjdXJyZW50TGluZSsrO1xuICAgICAgbGluZSA9IHRoaXMubGluZXNbY3VycmVudExpbmVdO1xuXG4gICAgICBpZiAoY3VycmVudExpbmUgPT09IGZpcnN0TGluZSkge1xuICAgICAgICBpZiAoZmlyc3RMaW5lID09PSBsYXN0TGluZSkge1xuICAgICAgICAgIHN0cmluZy5wdXNoKGxpbmUuc2xpY2UoZmlyc3RDb2x1bW4sIGxhc3RDb2x1bW4pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHJpbmcucHVzaChsaW5lLnNsaWNlKGZpcnN0Q29sdW1uKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudExpbmUgPT09IGxhc3RMaW5lKSB7XG4gICAgICAgIHN0cmluZy5wdXNoKGxpbmUuc2xpY2UoMCwgbGFzdENvbHVtbikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyaW5nLnB1c2gobGluZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZy5qb2luKCdcXG4nKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== |
\ | No newline at end of file |