@appium/universal-xml-plugin 1.0.0-beta.3 → 1.0.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +1 -1
  3. package/build/lib/attr-map.d.ts +58 -0
  4. package/build/lib/attr-map.d.ts.map +1 -0
  5. package/build/lib/attr-map.js +47 -32
  6. package/build/lib/index.d.ts +5 -0
  7. package/build/lib/index.d.ts.map +1 -0
  8. package/build/lib/index.js +49 -0
  9. package/build/lib/logger.d.ts +3 -0
  10. package/build/lib/logger.d.ts.map +1 -0
  11. package/build/lib/logger.js +15 -5
  12. package/build/lib/node-map.d.ts +200 -0
  13. package/build/lib/node-map.d.ts.map +1 -0
  14. package/build/lib/node-map.js +146 -267
  15. package/build/lib/plugin.d.ts +9 -0
  16. package/build/lib/plugin.d.ts.map +1 -0
  17. package/build/lib/plugin.js +90 -93
  18. package/build/lib/source.d.ts +24 -0
  19. package/build/lib/source.d.ts.map +1 -0
  20. package/build/lib/source.js +202 -148
  21. package/build/lib/transformers.d.ts +8 -0
  22. package/build/lib/transformers.d.ts.map +1 -0
  23. package/build/lib/transformers.js +35 -26
  24. package/build/lib/xpath.d.ts +4 -0
  25. package/build/lib/xpath.d.ts.map +1 -0
  26. package/build/lib/xpath.js +46 -40
  27. package/build/tsconfig.tsbuildinfo +1 -0
  28. package/index.js +3 -17
  29. package/lib/index.js +19 -0
  30. package/lib/logger.js +1 -1
  31. package/lib/plugin.js +2 -10
  32. package/package.json +30 -21
  33. package/build/index.js +0 -25
  34. package/build/test/fixtures/android-transformed-path.xml +0 -39
  35. package/build/test/fixtures/android-transformed.xml +0 -39
  36. package/build/test/fixtures/android.xml +0 -39
  37. package/build/test/fixtures/index.js +0 -25
  38. package/build/test/fixtures/ios-edge.xml +0 -16
  39. package/build/test/fixtures/ios-transformed-edge.xml +0 -16
  40. package/build/test/fixtures/ios-transformed-path.xml +0 -54
  41. package/build/test/fixtures/ios-transformed.xml +0 -54
  42. package/build/test/fixtures/ios.xml +0 -51
  43. package/build/test/unit/plugin-specs.js +0 -76
  44. package/build/test/unit/source-specs.js +0 -82
  45. package/build/test/unit/xpath-specs.js +0 -46
  46. package/test/fixtures/android-transformed-path.xml +0 -39
  47. package/test/fixtures/android-transformed.xml +0 -39
  48. package/test/fixtures/android.xml +0 -39
  49. package/test/fixtures/index.js +0 -14
  50. package/test/fixtures/ios-edge.xml +0 -16
  51. package/test/fixtures/ios-transformed-edge.xml +0 -16
  52. package/test/fixtures/ios-transformed-path.xml +0 -54
  53. package/test/fixtures/ios-transformed.xml +0 -54
  54. package/test/fixtures/ios.xml +0 -51
  55. package/test/unit/plugin-specs.js +0 -57
  56. package/test/unit/source-specs.js +0 -79
  57. package/test/unit/xpath-specs.js +0 -43
  58. package/tsconfig.json +0 -15
@@ -1,170 +1,224 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
13
7
  });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.transformAttrs = exports.transformChildNodes = exports.transformNode = exports.getUniversalAttrName = exports.getUniversalNodeName = exports.transformSourceXml = exports.IDX_PREFIX = exports.IDX_PATH_PREFIX = exports.ATTR_PREFIX = void 0;
26
- const lodash_1 = __importDefault(require("lodash"));
27
- const fast_xml_parser_1 = __importStar(require("fast-xml-parser"));
28
- const node_map_1 = __importDefault(require("./node-map"));
29
- const attr_map_1 = require("./attr-map");
30
- const transformers_1 = __importDefault(require("./transformers"));
8
+ exports.IDX_PREFIX = exports.IDX_PATH_PREFIX = exports.ATTR_PREFIX = void 0;
9
+ exports.getUniversalAttrName = getUniversalAttrName;
10
+ exports.getUniversalNodeName = getUniversalNodeName;
11
+ exports.transformAttrs = transformAttrs;
12
+ exports.transformChildNodes = transformChildNodes;
13
+ exports.transformNode = transformNode;
14
+ exports.transformSourceXml = transformSourceXml;
15
+
16
+ require("source-map-support/register");
17
+
18
+ var _lodash = _interopRequireDefault(require("lodash"));
19
+
20
+ var _fastXmlParser = _interopRequireWildcard(require("fast-xml-parser"));
21
+
22
+ var _nodeMap = _interopRequireDefault(require("./node-map"));
23
+
24
+ var _attrMap = require("./attr-map");
25
+
26
+ var _transformers = _interopRequireDefault(require("./transformers"));
27
+
28
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
+
30
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
+
31
32
  const PARSE_OPTS = {
32
- ignoreAttributes: false,
33
- arrayMode: true,
33
+ ignoreAttributes: false,
34
+ arrayMode: true
34
35
  };
35
36
  const GEN_OPTS = {
36
- ignoreAttributes: false,
37
- arrayMode: true,
38
- format: true,
37
+ ignoreAttributes: false,
38
+ arrayMode: true,
39
+ format: true
39
40
  };
40
- exports.ATTR_PREFIX = '@_';
41
- exports.IDX_PATH_PREFIX = `${exports.ATTR_PREFIX}indexPath`;
42
- exports.IDX_PREFIX = `${exports.ATTR_PREFIX}index`;
43
- const isAttr = (k) => k.substring(0, 2) === exports.ATTR_PREFIX;
44
- const isNode = (k) => !isAttr(k);
45
- function transformSourceXml(xmlStr, platform, { metadata = {}, addIndexPath = false } = {}) {
46
- // first thing we want to do is modify the ios source root node, because it doesn't include the
47
- // necessary index attribute, so we add it if it's not there
48
- xmlStr = xmlStr.replace('<AppiumAUT>', '<AppiumAUT index="0">');
49
- const xmlObj = fast_xml_parser_1.default.parse(xmlStr, PARSE_OPTS);
50
- const unknowns = transformNode(xmlObj, platform, { metadata, addIndexPath, parentPath: '' });
51
- const jParser = new fast_xml_parser_1.j2xParser(GEN_OPTS);
52
- let transformedXml = jParser.parse(xmlObj).trim();
53
- transformedXml = `<?xml version="1.0" encoding="UTF-8"?>\n${transformedXml}`;
54
- return { xml: transformedXml, unknowns };
41
+ const ATTR_PREFIX = '@_';
42
+ exports.ATTR_PREFIX = ATTR_PREFIX;
43
+ const IDX_PATH_PREFIX = `${ATTR_PREFIX}indexPath`;
44
+ exports.IDX_PATH_PREFIX = IDX_PATH_PREFIX;
45
+ const IDX_PREFIX = `${ATTR_PREFIX}index`;
46
+ exports.IDX_PREFIX = IDX_PREFIX;
47
+
48
+ const isAttr = k => k.substring(0, 2) === ATTR_PREFIX;
49
+
50
+ const isNode = k => !isAttr(k);
51
+
52
+ function transformSourceXml(xmlStr, platform, {
53
+ metadata = {},
54
+ addIndexPath = false
55
+ } = {}) {
56
+ xmlStr = xmlStr.replace('<AppiumAUT>', '<AppiumAUT index="0">');
57
+
58
+ const xmlObj = _fastXmlParser.default.parse(xmlStr, PARSE_OPTS);
59
+
60
+ const unknowns = transformNode(xmlObj, platform, {
61
+ metadata,
62
+ addIndexPath,
63
+ parentPath: ''
64
+ });
65
+ const jParser = new _fastXmlParser.j2xParser(GEN_OPTS);
66
+ let transformedXml = jParser.parse(xmlObj).trim();
67
+ transformedXml = `<?xml version="1.0" encoding="UTF-8"?>\n${transformedXml}`;
68
+ return {
69
+ xml: transformedXml,
70
+ unknowns
71
+ };
55
72
  }
56
- exports.transformSourceXml = transformSourceXml;
73
+
57
74
  function getUniversalName(nameMap, name, platform) {
58
- var _a;
59
- for (const translatedName of Object.keys(nameMap)) {
60
- const sourceNodes = (_a = nameMap[translatedName]) === null || _a === void 0 ? void 0 : _a[platform];
61
- if (lodash_1.default.isArray(sourceNodes) && sourceNodes.includes(name)) {
62
- return translatedName;
63
- }
64
- if (sourceNodes === name) {
65
- return translatedName;
66
- }
75
+ for (const translatedName of Object.keys(nameMap)) {
76
+ var _nameMap$translatedNa;
77
+
78
+ const sourceNodes = (_nameMap$translatedNa = nameMap[translatedName]) === null || _nameMap$translatedNa === void 0 ? void 0 : _nameMap$translatedNa[platform];
79
+
80
+ if (_lodash.default.isArray(sourceNodes) && sourceNodes.includes(name)) {
81
+ return translatedName;
67
82
  }
68
- return null;
83
+
84
+ if (sourceNodes === name) {
85
+ return translatedName;
86
+ }
87
+ }
88
+
89
+ return null;
69
90
  }
91
+
70
92
  function getUniversalNodeName(nodeName, platform) {
71
- return getUniversalName(node_map_1.default, nodeName, platform);
93
+ return getUniversalName(_nodeMap.default, nodeName, platform);
72
94
  }
73
- exports.getUniversalNodeName = getUniversalNodeName;
95
+
74
96
  function getUniversalAttrName(attrName, platform) {
75
- return getUniversalName(attr_map_1.ATTR_MAP, attrName, platform);
97
+ return getUniversalName(_attrMap.ATTR_MAP, attrName, platform);
76
98
  }
77
- exports.getUniversalAttrName = getUniversalAttrName;
78
- function transformNode(nodeObj, platform, { metadata, addIndexPath, parentPath }) {
79
- var _a;
80
- const unknownNodes = [];
81
- const unknownAttrs = [];
82
- if (lodash_1.default.isPlainObject(nodeObj)) {
83
- const keys = Object.keys(nodeObj);
84
- const childNodeNames = keys.filter(isNode);
85
- const attrs = keys.filter(isAttr);
86
- let thisIndexPath = parentPath;
87
- if (attrs.length && addIndexPath) {
88
- if (!attrs.includes(exports.IDX_PREFIX)) {
89
- throw new Error(`Index path is required but node found with no 'index' attribute`);
90
- }
91
- thisIndexPath = `${parentPath}/${nodeObj[exports.IDX_PREFIX]}`;
92
- nodeObj[exports.IDX_PATH_PREFIX] = thisIndexPath;
93
- }
94
- (_a = transformers_1.default[platform]) === null || _a === void 0 ? void 0 : _a.call(transformers_1.default, nodeObj, metadata);
95
- unknownAttrs.push(...transformAttrs(nodeObj, attrs, platform));
96
- const unknowns = transformChildNodes(nodeObj, childNodeNames, platform, {
97
- metadata, addIndexPath, parentPath: thisIndexPath
98
- });
99
- unknownAttrs.push(...unknowns.attrs);
100
- unknownNodes.push(...unknowns.nodes);
99
+
100
+ function transformNode(nodeObj, platform, {
101
+ metadata,
102
+ addIndexPath,
103
+ parentPath
104
+ }) {
105
+ const unknownNodes = [];
106
+ const unknownAttrs = [];
107
+
108
+ if (_lodash.default.isPlainObject(nodeObj)) {
109
+ var _TRANSFORMS$platform;
110
+
111
+ const keys = Object.keys(nodeObj);
112
+ const childNodeNames = keys.filter(isNode);
113
+ const attrs = keys.filter(isAttr);
114
+ let thisIndexPath = parentPath;
115
+
116
+ if (attrs.length && addIndexPath) {
117
+ if (!attrs.includes(IDX_PREFIX)) {
118
+ throw new Error(`Index path is required but node found with no 'index' attribute`);
119
+ }
120
+
121
+ thisIndexPath = `${parentPath}/${nodeObj[IDX_PREFIX]}`;
122
+ nodeObj[IDX_PATH_PREFIX] = thisIndexPath;
101
123
  }
102
- else if (lodash_1.default.isArray(nodeObj)) {
103
- for (const childObj of nodeObj) {
104
- const { nodes, attrs } = transformNode(childObj, platform, {
105
- metadata, addIndexPath, parentPath
106
- });
107
- unknownNodes.push(...nodes);
108
- unknownAttrs.push(...attrs);
109
- }
124
+
125
+ (_TRANSFORMS$platform = _transformers.default[platform]) === null || _TRANSFORMS$platform === void 0 ? void 0 : _TRANSFORMS$platform.call(_transformers.default, nodeObj, metadata);
126
+ unknownAttrs.push(...transformAttrs(nodeObj, attrs, platform));
127
+ const unknowns = transformChildNodes(nodeObj, childNodeNames, platform, {
128
+ metadata,
129
+ addIndexPath,
130
+ parentPath: thisIndexPath
131
+ });
132
+ unknownAttrs.push(...unknowns.attrs);
133
+ unknownNodes.push(...unknowns.nodes);
134
+ } else if (_lodash.default.isArray(nodeObj)) {
135
+ for (const childObj of nodeObj) {
136
+ const {
137
+ nodes,
138
+ attrs
139
+ } = transformNode(childObj, platform, {
140
+ metadata,
141
+ addIndexPath,
142
+ parentPath
143
+ });
144
+ unknownNodes.push(...nodes);
145
+ unknownAttrs.push(...attrs);
110
146
  }
111
- return {
112
- nodes: lodash_1.default.uniq(unknownNodes),
113
- attrs: lodash_1.default.uniq(unknownAttrs),
114
- };
147
+ }
148
+
149
+ return {
150
+ nodes: _lodash.default.uniq(unknownNodes),
151
+ attrs: _lodash.default.uniq(unknownAttrs)
152
+ };
115
153
  }
116
- exports.transformNode = transformNode;
117
- function transformChildNodes(nodeObj, childNodeNames, platform, { metadata, addIndexPath, parentPath }) {
118
- const unknownNodes = [];
119
- const unknownAttrs = [];
120
- for (const nodeName of childNodeNames) {
121
- // before modifying the name of this child node, recurse down and modify the subtree
122
- const { nodes, attrs } = transformNode(nodeObj[nodeName], platform, { metadata, addIndexPath, parentPath });
123
- unknownNodes.push(...nodes);
124
- unknownAttrs.push(...attrs);
125
- // now translate the node name and replace the subtree with this node
126
- const universalName = getUniversalNodeName(nodeName, platform);
127
- if (universalName === null) {
128
- unknownNodes.push(nodeName);
129
- continue;
130
- }
131
- // since multiple child node names could map to the same new transformed node name, we can't
132
- // simply assign nodeObj[universalName] = nodeObj[nodeName]; we need to be sensitive to the
133
- // situation where the end result is an array of children having the same node name
134
- if (nodeObj[universalName]) {
135
- // if we already have a node with the universal name, that means we are mapping a second
136
- // original node name to the same universal node name, so we just push all its children into
137
- // the list
138
- nodeObj[universalName].push(...nodeObj[nodeName]);
139
- }
140
- else {
141
- nodeObj[universalName] = nodeObj[nodeName];
142
- }
143
- delete nodeObj[nodeName];
154
+
155
+ function transformChildNodes(nodeObj, childNodeNames, platform, {
156
+ metadata,
157
+ addIndexPath,
158
+ parentPath
159
+ }) {
160
+ const unknownNodes = [];
161
+ const unknownAttrs = [];
162
+
163
+ for (const nodeName of childNodeNames) {
164
+ const {
165
+ nodes,
166
+ attrs
167
+ } = transformNode(nodeObj[nodeName], platform, {
168
+ metadata,
169
+ addIndexPath,
170
+ parentPath
171
+ });
172
+ unknownNodes.push(...nodes);
173
+ unknownAttrs.push(...attrs);
174
+ const universalName = getUniversalNodeName(nodeName, platform);
175
+
176
+ if (universalName === null) {
177
+ unknownNodes.push(nodeName);
178
+ continue;
179
+ }
180
+
181
+ if (nodeObj[universalName]) {
182
+ nodeObj[universalName].push(...nodeObj[nodeName]);
183
+ } else {
184
+ nodeObj[universalName] = nodeObj[nodeName];
144
185
  }
145
- return { nodes: unknownNodes, attrs: unknownAttrs };
186
+
187
+ delete nodeObj[nodeName];
188
+ }
189
+
190
+ return {
191
+ nodes: unknownNodes,
192
+ attrs: unknownAttrs
193
+ };
146
194
  }
147
- exports.transformChildNodes = transformChildNodes;
195
+
148
196
  function transformAttrs(nodeObj, attrs, platform) {
149
- const unknownAttrs = [];
150
- for (const attr of attrs) {
151
- const cleanAttr = attr.substring(2);
152
- if (attr_map_1.REMOVE_ATTRS.includes(cleanAttr)) {
153
- delete nodeObj[attr];
154
- continue;
155
- }
156
- const universalAttr = getUniversalAttrName(cleanAttr, platform);
157
- if (universalAttr === null) {
158
- unknownAttrs.push(cleanAttr);
159
- continue;
160
- }
161
- const newAttr = `${exports.ATTR_PREFIX}${universalAttr}`;
162
- if (newAttr !== attr) {
163
- nodeObj[newAttr] = nodeObj[attr];
164
- delete nodeObj[attr];
165
- }
197
+ const unknownAttrs = [];
198
+
199
+ for (const attr of attrs) {
200
+ const cleanAttr = attr.substring(2);
201
+
202
+ if (_attrMap.REMOVE_ATTRS.includes(cleanAttr)) {
203
+ delete nodeObj[attr];
204
+ continue;
205
+ }
206
+
207
+ const universalAttr = getUniversalAttrName(cleanAttr, platform);
208
+
209
+ if (universalAttr === null) {
210
+ unknownAttrs.push(cleanAttr);
211
+ continue;
166
212
  }
167
- return unknownAttrs;
213
+
214
+ const newAttr = `${ATTR_PREFIX}${universalAttr}`;
215
+
216
+ if (newAttr !== attr) {
217
+ nodeObj[newAttr] = nodeObj[attr];
218
+ delete nodeObj[attr];
219
+ }
220
+ }
221
+
222
+ return unknownAttrs;
168
223
  }
169
- exports.transformAttrs = transformAttrs;
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3NvdXJjZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQXVCO0FBQ3ZCLG1FQUFvRDtBQUNwRCwwREFBa0M7QUFDbEMseUNBQW9EO0FBQ3BELGtFQUF3QztBQUV4QyxNQUFNLFVBQVUsR0FBRztJQUNqQixnQkFBZ0IsRUFBRSxLQUFLO0lBQ3ZCLFNBQVMsRUFBRSxJQUFJO0NBQ2hCLENBQUM7QUFFRixNQUFNLFFBQVEsR0FBRztJQUNmLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsU0FBUyxFQUFFLElBQUk7SUFDZixNQUFNLEVBQUUsSUFBSTtDQUNiLENBQUM7QUFFVyxRQUFBLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDbkIsUUFBQSxlQUFlLEdBQUcsR0FBRyxtQkFBVyxXQUFXLENBQUM7QUFDNUMsUUFBQSxVQUFVLEdBQUcsR0FBRyxtQkFBVyxPQUFPLENBQUM7QUFFaEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLG1CQUFXLENBQUM7QUFDeEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWpDLFNBQWdCLGtCQUFrQixDQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBQyxRQUFRLEdBQUcsRUFBRSxFQUFFLFlBQVksR0FBRyxLQUFLLEVBQUMsR0FBRyxFQUFFO0lBQzlGLCtGQUErRjtJQUMvRiw0REFBNEQ7SUFDNUQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFDaEUsTUFBTSxNQUFNLEdBQUcseUJBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFVBQVUs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
224
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQQVJTRV9PUFRTIiwiaWdub3JlQXR0cmlidXRlcyIsImFycmF5TW9kZSIsIkdFTl9PUFRTIiwiZm9ybWF0IiwiQVRUUl9QUkVGSVgiLCJJRFhfUEFUSF9QUkVGSVgiLCJJRFhfUFJFRklYIiwiaXNBdHRyIiwiayIsInN1YnN0cmluZyIsImlzTm9kZSIsInRyYW5zZm9ybVNvdXJjZVhtbCIsInhtbFN0ciIsInBsYXRmb3JtIiwibWV0YWRhdGEiLCJhZGRJbmRleFBhdGgiLCJyZXBsYWNlIiwieG1sT2JqIiwicGFyc2VyIiwicGFyc2UiLCJ1bmtub3ducyIsInRyYW5zZm9ybU5vZGUiLCJwYXJlbnRQYXRoIiwialBhcnNlciIsImoyeFBhcnNlciIsInRyYW5zZm9ybWVkWG1sIiwidHJpbSIsInhtbCIsImdldFVuaXZlcnNhbE5hbWUiLCJuYW1lTWFwIiwibmFtZSIsInRyYW5zbGF0ZWROYW1lIiwiT2JqZWN0Iiwia2V5cyIsInNvdXJjZU5vZGVzIiwiXyIsImlzQXJyYXkiLCJpbmNsdWRlcyIsImdldFVuaXZlcnNhbE5vZGVOYW1lIiwibm9kZU5hbWUiLCJOT0RFX01BUCIsImdldFVuaXZlcnNhbEF0dHJOYW1lIiwiYXR0ck5hbWUiLCJBVFRSX01BUCIsIm5vZGVPYmoiLCJ1bmtub3duTm9kZXMiLCJ1bmtub3duQXR0cnMiLCJpc1BsYWluT2JqZWN0IiwiY2hpbGROb2RlTmFtZXMiLCJmaWx0ZXIiLCJhdHRycyIsInRoaXNJbmRleFBhdGgiLCJsZW5ndGgiLCJFcnJvciIsInB1c2giLCJ0cmFuc2Zvcm1BdHRycyIsInRyYW5zZm9ybUNoaWxkTm9kZXMiLCJub2RlcyIsImNoaWxkT2JqIiwidW5pcSIsInVuaXZlcnNhbE5hbWUiLCJhdHRyIiwiY2xlYW5BdHRyIiwiUkVNT1ZFX0FUVFJTIiwidW5pdmVyc2FsQXR0ciIsIm5ld0F0dHIiXSwic291cmNlcyI6WyIuLi8uLi9saWIvc291cmNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGFyc2VyLCB7IGoyeFBhcnNlciB9IGZyb20gJ2Zhc3QteG1sLXBhcnNlcic7XG5pbXBvcnQgTk9ERV9NQVAgZnJvbSAnLi9ub2RlLW1hcCc7XG5pbXBvcnQgeyBBVFRSX01BUCwgUkVNT1ZFX0FUVFJTIH0gZnJvbSAnLi9hdHRyLW1hcCc7XG5pbXBvcnQgVFJBTlNGT1JNUyBmcm9tICcuL3RyYW5zZm9ybWVycyc7XG5cbmNvbnN0IFBBUlNFX09QVFMgPSB7XG4gIGlnbm9yZUF0dHJpYnV0ZXM6IGZhbHNlLFxuICBhcnJheU1vZGU6IHRydWUsXG59O1xuXG5jb25zdCBHRU5fT1BUUyA9IHtcbiAgaWdub3JlQXR0cmlidXRlczogZmFsc2UsXG4gIGFycmF5TW9kZTogdHJ1ZSxcbiAgZm9ybWF0OiB0cnVlLFxufTtcblxuZXhwb3J0IGNvbnN0IEFUVFJfUFJFRklYID0gJ0BfJztcbmV4cG9ydCBjb25zdCBJRFhfUEFUSF9QUkVGSVggPSBgJHtBVFRSX1BSRUZJWH1pbmRleFBhdGhgO1xuZXhwb3J0IGNvbnN0IElEWF9QUkVGSVggPSBgJHtBVFRSX1BSRUZJWH1pbmRleGA7XG5cbmNvbnN0IGlzQXR0ciA9IChrKSA9PiBrLnN1YnN0cmluZygwLCAyKSA9PT0gQVRUUl9QUkVGSVg7XG5jb25zdCBpc05vZGUgPSAoaykgPT4gIWlzQXR0cihrKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVNvdXJjZVhtbCAoeG1sU3RyLCBwbGF0Zm9ybSwge21ldGFkYXRhID0ge30sIGFkZEluZGV4UGF0aCA9IGZhbHNlfSA9IHt9KSB7XG4gIC8vIGZpcnN0IHRoaW5nIHdlIHdhbnQgdG8gZG8gaXMgbW9kaWZ5IHRoZSBpb3Mgc291cmNlIHJvb3Qgbm9kZSwgYmVjYXVzZSBpdCBkb2Vzbid0IGluY2x1ZGUgdGhlXG4gIC8vIG5lY2Vzc2FyeSBpbmRleCBhdHRyaWJ1dGUsIHNvIHdlIGFkZCBpdCBpZiBpdCdzIG5vdCB0aGVyZVxuICB4bWxTdHIgPSB4bWxTdHIucmVwbGFjZSgnPEFwcGl1bUFVVD4nLCAnPEFwcGl1bUFVVCBpbmRleD1cIjBcIj4nKTtcbiAgY29uc3QgeG1sT2JqID0gcGFyc2VyLnBhcnNlKHhtbFN0ciwgUEFSU0VfT1BUUyk7XG4gIGNvbnN0IHVua25vd25zID0gdHJhbnNmb3JtTm9kZSh4bWxPYmosIHBsYXRmb3JtLCB7bWV0YWRhdGEsIGFkZEluZGV4UGF0aCwgcGFyZW50UGF0aDogJyd9KTtcbiAgY29uc3QgalBhcnNlciA9IG5ldyBqMnhQYXJzZXIoR0VOX09QVFMpO1xuICBsZXQgdHJhbnNmb3JtZWRYbWwgPSBqUGFyc2VyLnBhcnNlKHhtbE9iaikudHJpbSgpO1xuICB0cmFuc2Zvcm1lZFhtbCA9IGA8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz5cXG4ke3RyYW5zZm9ybWVkWG1sfWA7XG4gIHJldHVybiB7eG1sOiB0cmFuc2Zvcm1lZFhtbCwgdW5rbm93bnN9O1xufVxuXG5mdW5jdGlvbiBnZXRVbml2ZXJzYWxOYW1lIChuYW1lTWFwLCBuYW1lLCBwbGF0Zm9ybSkge1xuICBmb3IgKGNvbnN0IHRyYW5zbGF0ZWROYW1lIG9mIE9iamVjdC5rZXlzKG5hbWVNYXApKSB7XG4gICAgY29uc3Qgc291cmNlTm9kZXMgPSBuYW1lTWFwW3RyYW5zbGF0ZWROYW1lXT8uW3BsYXRmb3JtXTtcbiAgICBpZiAoXy5pc0FycmF5KHNvdXJjZU5vZGVzKSAmJiBzb3VyY2VOb2Rlcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0ZWROYW1lO1xuICAgIH1cbiAgICBpZiAoc291cmNlTm9kZXMgPT09IG5hbWUpIHtcbiAgICAgIHJldHVybiB0cmFuc2xhdGVkTmFtZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVbml2ZXJzYWxOb2RlTmFtZSAobm9kZU5hbWUsIHBsYXRmb3JtKSB7XG4gIHJldHVybiBnZXRVbml2ZXJzYWxOYW1lKE5PREVfTUFQLCBub2RlTmFtZSwgcGxhdGZvcm0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pdmVyc2FsQXR0ck5hbWUgKGF0dHJOYW1lLCBwbGF0Zm9ybSkge1xuICByZXR1cm4gZ2V0VW5pdmVyc2FsTmFtZShBVFRSX01BUCwgYXR0ck5hbWUsIHBsYXRmb3JtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU5vZGUgKG5vZGVPYmosIHBsYXRmb3JtLCB7bWV0YWRhdGEsIGFkZEluZGV4UGF0aCwgcGFyZW50UGF0aH0pIHtcbiAgY29uc3QgdW5rbm93bk5vZGVzID0gW107XG4gIGNvbnN0IHVua25vd25BdHRycyA9IFtdO1xuICBpZiAoXy5pc1BsYWluT2JqZWN0KG5vZGVPYmopKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG5vZGVPYmopO1xuICAgIGNvbnN0IGNoaWxkTm9kZU5hbWVzID0ga2V5cy5maWx0ZXIoaXNOb2RlKTtcbiAgICBjb25zdCBhdHRycyA9IGtleXMuZmlsdGVyKGlzQXR0cik7XG4gICAgbGV0IHRoaXNJbmRleFBhdGggPSBwYXJlbnRQYXRoO1xuXG4gICAgaWYgKGF0dHJzLmxlbmd0aCAmJiBhZGRJbmRleFBhdGgpIHtcbiAgICAgIGlmICghYXR0cnMuaW5jbHVkZXMoSURYX1BSRUZJWCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbmRleCBwYXRoIGlzIHJlcXVpcmVkIGJ1dCBub2RlIGZvdW5kIHdpdGggbm8gJ2luZGV4JyBhdHRyaWJ1dGVgKTtcbiAgICAgIH1cblxuICAgICAgdGhpc0luZGV4UGF0aCA9IGAke3BhcmVudFBhdGh9LyR7bm9kZU9ialtJRFhfUFJFRklYXX1gO1xuICAgICAgbm9kZU9ialtJRFhfUEFUSF9QUkVGSVhdID0gdGhpc0luZGV4UGF0aDtcbiAgICB9XG5cbiAgICBUUkFOU0ZPUk1TW3BsYXRmb3JtXT8uKG5vZGVPYmosIG1ldGFkYXRhKTtcbiAgICB1bmtub3duQXR0cnMucHVzaCguLi50cmFuc2Zvcm1BdHRycyhub2RlT2JqLCBhdHRycywgcGxhdGZvcm0pKTtcbiAgICBjb25zdCB1bmtub3ducyA9IHRyYW5zZm9ybUNoaWxkTm9kZXMobm9kZU9iaiwgY2hpbGROb2RlTmFtZXMsIHBsYXRmb3JtLCB7XG4gICAgICBtZXRhZGF0YSwgYWRkSW5kZXhQYXRoLCBwYXJlbnRQYXRoOiB0aGlzSW5kZXhQYXRoXG4gICAgfSk7XG4gICAgdW5rbm93bkF0dHJzLnB1c2goLi4udW5rbm93bnMuYXR0cnMpO1xuICAgIHVua25vd25Ob2Rlcy5wdXNoKC4uLnVua25vd25zLm5vZGVzKTtcbiAgfSBlbHNlIGlmIChfLmlzQXJyYXkobm9kZU9iaikpIHtcbiAgICBmb3IgKGNvbnN0IGNoaWxkT2JqIG9mIG5vZGVPYmopIHtcbiAgICAgIGNvbnN0IHtub2RlcywgYXR0cnN9ID0gdHJhbnNmb3JtTm9kZShjaGlsZE9iaiwgcGxhdGZvcm0sIHtcbiAgICAgICAgbWV0YWRhdGEsIGFkZEluZGV4UGF0aCwgcGFyZW50UGF0aFxuICAgICAgfSk7XG4gICAgICB1bmtub3duTm9kZXMucHVzaCguLi5ub2Rlcyk7XG4gICAgICB1bmtub3duQXR0cnMucHVzaCguLi5hdHRycyk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgbm9kZXM6IF8udW5pcSh1bmtub3duTm9kZXMpLFxuICAgIGF0dHJzOiBfLnVuaXEodW5rbm93bkF0dHJzKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUNoaWxkTm9kZXMgKG5vZGVPYmosIGNoaWxkTm9kZU5hbWVzLCBwbGF0Zm9ybSwge21ldGFkYXRhLCBhZGRJbmRleFBhdGgsIHBhcmVudFBhdGh9KSB7XG4gIGNvbnN0IHVua25vd25Ob2RlcyA9IFtdO1xuICBjb25zdCB1bmtub3duQXR0cnMgPSBbXTtcbiAgZm9yIChjb25zdCBub2RlTmFtZSBvZiBjaGlsZE5vZGVOYW1lcykge1xuICAgIC8vIGJlZm9yZSBtb2RpZnlpbmcgdGhlIG5hbWUgb2YgdGhpcyBjaGlsZCBub2RlLCByZWN1cnNlIGRvd24gYW5kIG1vZGlmeSB0aGUgc3VidHJlZVxuICAgIGNvbnN0IHtub2RlcywgYXR0cnN9ID0gdHJhbnNmb3JtTm9kZShub2RlT2JqW25vZGVOYW1lXSwgcGxhdGZvcm0sIHttZXRhZGF0YSwgYWRkSW5kZXhQYXRoLCBwYXJlbnRQYXRofSk7XG4gICAgdW5rbm93bk5vZGVzLnB1c2goLi4ubm9kZXMpO1xuICAgIHVua25vd25BdHRycy5wdXNoKC4uLmF0dHJzKTtcblxuICAgIC8vIG5vdyB0cmFuc2xhdGUgdGhlIG5vZGUgbmFtZSBhbmQgcmVwbGFjZSB0aGUgc3VidHJlZSB3aXRoIHRoaXMgbm9kZVxuICAgIGNvbnN0IHVuaXZlcnNhbE5hbWUgPSBnZXRVbml2ZXJzYWxOb2RlTmFtZShub2RlTmFtZSwgcGxhdGZvcm0pO1xuICAgIGlmICh1bml2ZXJzYWxOYW1lID09PSBudWxsKSB7XG4gICAgICB1bmtub3duTm9kZXMucHVzaChub2RlTmFtZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBzaW5jZSBtdWx0aXBsZSBjaGlsZCBub2RlIG5hbWVzIGNvdWxkIG1hcCB0byB0aGUgc2FtZSBuZXcgdHJhbnNmb3JtZWQgbm9kZSBuYW1lLCB3ZSBjYW4ndFxuICAgIC8vIHNpbXBseSBhc3NpZ24gbm9kZU9ialt1bml2ZXJzYWxOYW1lXSA9IG5vZGVPYmpbbm9kZU5hbWVdOyB3ZSBuZWVkIHRvIGJlIHNlbnNpdGl2ZSB0byB0aGVcbiAgICAvLyBzaXR1YXRpb24gd2hlcmUgdGhlIGVuZCByZXN1bHQgaXMgYW4gYXJyYXkgb2YgY2hpbGRyZW4gaGF2aW5nIHRoZSBzYW1lIG5vZGUgbmFtZVxuICAgIGlmIChub2RlT2JqW3VuaXZlcnNhbE5hbWVdKSB7XG4gICAgICAvLyBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBub2RlIHdpdGggdGhlIHVuaXZlcnNhbCBuYW1lLCB0aGF0IG1lYW5zIHdlIGFyZSBtYXBwaW5nIGEgc2Vjb25kXG4gICAgICAvLyBvcmlnaW5hbCBub2RlIG5hbWUgdG8gdGhlIHNhbWUgdW5pdmVyc2FsIG5vZGUgbmFtZSwgc28gd2UganVzdCBwdXNoIGFsbCBpdHMgY2hpbGRyZW4gaW50b1xuICAgICAgLy8gdGhlIGxpc3RcbiAgICAgIG5vZGVPYmpbdW5pdmVyc2FsTmFtZV0ucHVzaCguLi5ub2RlT2JqW25vZGVOYW1lXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVPYmpbdW5pdmVyc2FsTmFtZV0gPSBub2RlT2JqW25vZGVOYW1lXTtcbiAgICB9XG4gICAgZGVsZXRlIG5vZGVPYmpbbm9kZU5hbWVdO1xuICB9XG4gIHJldHVybiB7bm9kZXM6IHVua25vd25Ob2RlcywgYXR0cnM6IHVua25vd25BdHRyc307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1BdHRycyAobm9kZU9iaiwgYXR0cnMsIHBsYXRmb3JtKSB7XG4gIGNvbnN0IHVua25vd25BdHRycyA9IFtdO1xuICBmb3IgKGNvbnN0IGF0dHIgb2YgYXR0cnMpIHtcbiAgICBjb25zdCBjbGVhbkF0dHIgPSBhdHRyLnN1YnN0cmluZygyKTtcbiAgICBpZiAoUkVNT1ZFX0FUVFJTLmluY2x1ZGVzKGNsZWFuQXR0cikpIHtcbiAgICAgIGRlbGV0ZSBub2RlT2JqW2F0dHJdO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHVuaXZlcnNhbEF0dHIgPSBnZXRVbml2ZXJzYWxBdHRyTmFtZShjbGVhbkF0dHIsIHBsYXRmb3JtKTtcbiAgICBpZiAodW5pdmVyc2FsQXR0ciA9PT0gbnVsbCkge1xuICAgICAgdW5rbm93bkF0dHJzLnB1c2goY2xlYW5BdHRyKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBuZXdBdHRyID0gYCR7QVRUUl9QUkVGSVh9JHt1bml2ZXJzYWxBdHRyfWA7XG4gICAgaWYgKG5ld0F0dHIgIT09IGF0dHIpIHtcbiAgICAgIG5vZGVPYmpbbmV3QXR0cl0gPSBub2RlT2JqW2F0dHJdO1xuICAgICAgZGVsZXRlIG5vZGVPYmpbYXR0cl07XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmtu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
@@ -0,0 +1,8 @@
1
+ declare namespace _default {
2
+ export { ios };
3
+ export { android };
4
+ }
5
+ export default _default;
6
+ declare function ios(nodeObj: any): any;
7
+ declare function android(nodeObj: any, metadata: any): void;
8
+ //# sourceMappingURL=transformers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../../lib/transformers.js"],"names":[],"mappings":";;;;;AAEA,wCAEC;AAED,4DAoBC"}
@@ -1,31 +1,40 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const source_1 = require("./source");
4
- function ios(nodeObj /*, metadata*/) {
5
- return nodeObj;
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ require("source-map-support/register");
9
+
10
+ var _source = require("./source");
11
+
12
+ function ios(nodeObj) {
13
+ return nodeObj;
6
14
  }
15
+
7
16
  function android(nodeObj, metadata) {
8
- // strip android:id from front of id
9
- const resId = nodeObj[`${source_1.ATTR_PREFIX}resource-id`];
10
- if (resId && metadata.appPackage) {
11
- nodeObj[`${source_1.ATTR_PREFIX}resource-id`] = resId.replace(`${metadata.appPackage}:id/`, '');
12
- }
13
- // turn bounds attr into rect-based attrs
14
- if (nodeObj[`${source_1.ATTR_PREFIX}bounds`]) {
15
- const boundsArray = nodeObj[`${source_1.ATTR_PREFIX}bounds`]
16
- .split(/\[|\]|,/)
17
- .filter((str) => str !== '');
18
- const [x, y, x2, y2] = boundsArray;
19
- const width = x2 - x;
20
- const height = y2 - y;
21
- nodeObj[`${source_1.ATTR_PREFIX}x`] = x;
22
- nodeObj[`${source_1.ATTR_PREFIX}y`] = y;
23
- nodeObj[`${source_1.ATTR_PREFIX}width`] = width;
24
- nodeObj[`${source_1.ATTR_PREFIX}height`] = height;
25
- }
17
+ const resId = nodeObj[`${_source.ATTR_PREFIX}resource-id`];
18
+
19
+ if (resId && metadata.appPackage) {
20
+ nodeObj[`${_source.ATTR_PREFIX}resource-id`] = resId.replace(`${metadata.appPackage}:id/`, '');
21
+ }
22
+
23
+ if (nodeObj[`${_source.ATTR_PREFIX}bounds`]) {
24
+ const boundsArray = nodeObj[`${_source.ATTR_PREFIX}bounds`].split(/\[|\]|,/).filter(str => str !== '');
25
+ const [x, y, x2, y2] = boundsArray;
26
+ const width = x2 - x;
27
+ const height = y2 - y;
28
+ nodeObj[`${_source.ATTR_PREFIX}x`] = x;
29
+ nodeObj[`${_source.ATTR_PREFIX}y`] = y;
30
+ nodeObj[`${_source.ATTR_PREFIX}width`] = width;
31
+ nodeObj[`${_source.ATTR_PREFIX}height`] = height;
32
+ }
26
33
  }
27
- exports.default = {
28
- ios,
29
- android,
34
+
35
+ var _default = {
36
+ ios,
37
+ android
30
38
  };
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3RyYW5zZm9ybWVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFDQUF1QztBQUV2QyxTQUFTLEdBQUcsQ0FBRSxPQUFPLENBQUEsY0FBYztJQUNqQyxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUUsT0FBTyxFQUFFLFFBQVE7SUFDakMsb0NBQW9DO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLG9CQUFXLGFBQWEsQ0FBQyxDQUFDO0lBQ25ELElBQUksS0FBSyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUU7UUFDaEMsT0FBTyxDQUFDLEdBQUcsb0JBQVcsYUFBYSxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxVQUFVLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztLQUN4RjtJQUVELHlDQUF5QztJQUN6QyxJQUFJLE9BQU8sQ0FBQyxHQUFHLG9CQUFXLFFBQVEsQ0FBQyxFQUFFO1FBQ25DLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLG9CQUFXLFFBQVEsQ0FBQzthQUNoRCxLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyQixNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLE9BQU8sQ0FBQyxHQUFHLG9CQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixPQUFPLENBQUMsR0FBRyxvQkFBVyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsT0FBTyxDQUFDLEdBQUcsb0JBQVcsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLE9BQU8sQ0FBQyxHQUFHLG9CQUFXLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztLQUMxQztBQUNILENBQUM7QUFFRCxrQkFBZTtJQUNiLEdBQUc7SUFDSCxPQUFPO0NBQ1IsQ0FBQyJ9
39
+ exports.default = _default;
40
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpb3MiLCJub2RlT2JqIiwiYW5kcm9pZCIsIm1ldGFkYXRhIiwicmVzSWQiLCJBVFRSX1BSRUZJWCIsImFwcFBhY2thZ2UiLCJyZXBsYWNlIiwiYm91bmRzQXJyYXkiLCJzcGxpdCIsImZpbHRlciIsInN0ciIsIngiLCJ5IiwieDIiLCJ5MiIsIndpZHRoIiwiaGVpZ2h0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3RyYW5zZm9ybWVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBVFRSX1BSRUZJWCB9IGZyb20gJy4vc291cmNlJztcblxuZnVuY3Rpb24gaW9zIChub2RlT2JqLyosIG1ldGFkYXRhKi8pIHtcbiAgcmV0dXJuIG5vZGVPYmo7XG59XG5cbmZ1bmN0aW9uIGFuZHJvaWQgKG5vZGVPYmosIG1ldGFkYXRhKSB7XG4gIC8vIHN0cmlwIGFuZHJvaWQ6aWQgZnJvbSBmcm9udCBvZiBpZFxuICBjb25zdCByZXNJZCA9IG5vZGVPYmpbYCR7QVRUUl9QUkVGSVh9cmVzb3VyY2UtaWRgXTtcbiAgaWYgKHJlc0lkICYmIG1ldGFkYXRhLmFwcFBhY2thZ2UpIHtcbiAgICBub2RlT2JqW2Ake0FUVFJfUFJFRklYfXJlc291cmNlLWlkYF0gPSByZXNJZC5yZXBsYWNlKGAke21ldGFkYXRhLmFwcFBhY2thZ2V9OmlkL2AsICcnKTtcbiAgfVxuXG4gIC8vIHR1cm4gYm91bmRzIGF0dHIgaW50byByZWN0LWJhc2VkIGF0dHJzXG4gIGlmIChub2RlT2JqW2Ake0FUVFJfUFJFRklYfWJvdW5kc2BdKSB7XG4gICAgY29uc3QgYm91bmRzQXJyYXkgPSBub2RlT2JqW2Ake0FUVFJfUFJFRklYfWJvdW5kc2BdXG4gICAgICAuc3BsaXQoL1xcW3xcXF18LC8pXG4gICAgICAuZmlsdGVyKChzdHIpID0+IHN0ciAhPT0gJycpO1xuICAgIGNvbnN0IFt4LCB5LCB4MiwgeTJdID0gYm91bmRzQXJyYXk7XG4gICAgY29uc3Qgd2lkdGggPSB4MiAtIHg7XG4gICAgY29uc3QgaGVpZ2h0ID0geTIgLSB5O1xuICAgIG5vZGVPYmpbYCR7QVRUUl9QUkVGSVh9eGBdID0geDtcbiAgICBub2RlT2JqW2Ake0FUVFJfUFJFRklYfXlgXSA9IHk7XG4gICAgbm9kZU9ialtgJHtBVFRSX1BSRUZJWH13aWR0aGBdID0gd2lkdGg7XG4gICAgbm9kZU9ialtgJHtBVFRSX1BSRUZJWH1oZWlnaHRgXSA9IGhlaWdodDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlvcyxcbiAgYW5kcm9pZCxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLFNBQVNBLEdBQVQsQ0FBY0MsT0FBZCxFQUFxQztFQUNuQyxPQUFPQSxPQUFQO0FBQ0Q7O0FBRUQsU0FBU0MsT0FBVCxDQUFrQkQsT0FBbEIsRUFBMkJFLFFBQTNCLEVBQXFDO0VBRW5DLE1BQU1DLEtBQUssR0FBR0gsT0FBTyxDQUFFLEdBQUVJLG1CQUFZLGFBQWhCLENBQXJCOztFQUNBLElBQUlELEtBQUssSUFBSUQsUUFBUSxDQUFDRyxVQUF0QixFQUFrQztJQUNoQ0wsT0FBTyxDQUFFLEdBQUVJLG1CQUFZLGFBQWhCLENBQVAsR0FBdUNELEtBQUssQ0FBQ0csT0FBTixDQUFlLEdBQUVKLFFBQVEsQ0FBQ0csVUFBVyxNQUFyQyxFQUE0QyxFQUE1QyxDQUF2QztFQUNEOztFQUdELElBQUlMLE9BQU8sQ0FBRSxHQUFFSSxtQkFBWSxRQUFoQixDQUFYLEVBQXFDO0lBQ25DLE1BQU1HLFdBQVcsR0FBR1AsT0FBTyxDQUFFLEdBQUVJLG1CQUFZLFFBQWhCLENBQVAsQ0FDakJJLEtBRGlCLENBQ1gsU0FEVyxFQUVqQkMsTUFGaUIsQ0FFVEMsR0FBRCxJQUFTQSxHQUFHLEtBQUssRUFGUCxDQUFwQjtJQUdBLE1BQU0sQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKLEVBQU9DLEVBQVAsRUFBV0MsRUFBWCxJQUFpQlAsV0FBdkI7SUFDQSxNQUFNUSxLQUFLLEdBQUdGLEVBQUUsR0FBR0YsQ0FBbkI7SUFDQSxNQUFNSyxNQUFNLEdBQUdGLEVBQUUsR0FBR0YsQ0FBcEI7SUFDQVosT0FBTyxDQUFFLEdBQUVJLG1CQUFZLEdBQWhCLENBQVAsR0FBNkJPLENBQTdCO0lBQ0FYLE9BQU8sQ0FBRSxHQUFFSSxtQkFBWSxHQUFoQixDQUFQLEdBQTZCUSxDQUE3QjtJQUNBWixPQUFPLENBQUUsR0FBRUksbUJBQVksT0FBaEIsQ0FBUCxHQUFpQ1csS0FBakM7SUFDQWYsT0FBTyxDQUFFLEdBQUVJLG1CQUFZLFFBQWhCLENBQVAsR0FBa0NZLE1BQWxDO0VBQ0Q7QUFDRjs7ZUFFYztFQUNiakIsR0FEYTtFQUViRTtBQUZhLEMifQ==
@@ -0,0 +1,4 @@
1
+ export function runQuery(query: any, xmlStr: any): import("xpath").SelectedValue[];
2
+ export function transformQuery(query: any, xmlStr: any, multiple: any): string | null;
3
+ export function getNodeAttrVal(node: any, attr: any): any;
4
+ //# sourceMappingURL=xpath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xpath.d.ts","sourceRoot":"","sources":["../../lib/xpath.js"],"names":[],"mappings":"AAGA,mFAIC;AAED,sFA4BC;AAED,0DAMC"}
@@ -1,48 +1,54 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getNodeAttrVal = exports.transformQuery = exports.runQuery = void 0;
4
- const xpath_1 = require("xpath");
5
- const xmldom_1 = require("xmldom");
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getNodeAttrVal = getNodeAttrVal;
7
+ exports.runQuery = runQuery;
8
+ exports.transformQuery = transformQuery;
9
+
10
+ require("source-map-support/register");
11
+
12
+ var _xpath = require("xpath");
13
+
14
+ var _xmldom = require("xmldom");
15
+
6
16
  function runQuery(query, xmlStr) {
7
- const dom = new xmldom_1.DOMParser().parseFromString(xmlStr);
8
- const nodes = xpath_1.select(query, dom);
9
- return nodes;
17
+ const dom = new _xmldom.DOMParser().parseFromString(xmlStr);
18
+ const nodes = (0, _xpath.select)(query, dom);
19
+ return nodes;
10
20
  }
11
- exports.runQuery = runQuery;
21
+
12
22
  function transformQuery(query, xmlStr, multiple) {
13
- const nodes = runQuery(query, xmlStr);
14
- const newQueries = nodes.map((node) => {
15
- const indexPath = getNodeAttrVal(node, 'indexPath');
16
- // at this point indexPath will look like /0/0/1/1/0/1/0/2
17
- let newQuery = indexPath
18
- .substring(1) // remove leading / so we can split
19
- .split('/') // split into idnexes
20
- .map((indexStr) => {
21
- const xpathIndex = parseInt(indexStr, 10) + 1;
22
- return `*[${xpathIndex}]`;
23
- })
24
- .join('/'); // reapply /
25
- // now to make this a valid xpath from the root, prepend the / we removed earlier
26
- return `/${newQuery}`;
27
- });
28
- let newSelector = null;
29
- if (newQueries.length) {
30
- if (multiple) {
31
- newSelector = newQueries.join(' | ');
32
- }
33
- else {
34
- newSelector = newQueries[0];
35
- }
23
+ const nodes = runQuery(query, xmlStr);
24
+ const newQueries = nodes.map(node => {
25
+ const indexPath = getNodeAttrVal(node, 'indexPath');
26
+ let newQuery = indexPath.substring(1).split('/').map(indexStr => {
27
+ const xpathIndex = parseInt(indexStr, 10) + 1;
28
+ return `*[${xpathIndex}]`;
29
+ }).join('/');
30
+ return `/${newQuery}`;
31
+ });
32
+ let newSelector = null;
33
+
34
+ if (newQueries.length) {
35
+ if (multiple) {
36
+ newSelector = newQueries.join(' | ');
37
+ } else {
38
+ newSelector = newQueries[0];
36
39
  }
37
- return newSelector;
40
+ }
41
+
42
+ return newSelector;
38
43
  }
39
- exports.transformQuery = transformQuery;
44
+
40
45
  function getNodeAttrVal(node, attr) {
41
- const attrObjs = Object.values(node.attributes).filter((obj) => obj.name === attr);
42
- if (!attrObjs.length) {
43
- throw new Error(`Tried to retrieve a node attribute '${attr}' but the node didn't have it`);
44
- }
45
- return attrObjs[0].value;
46
+ const attrObjs = Object.values(node.attributes).filter(obj => obj.name === attr);
47
+
48
+ if (!attrObjs.length) {
49
+ throw new Error(`Tried to retrieve a node attribute '${attr}' but the node didn't have it`);
50
+ }
51
+
52
+ return attrObjs[0].value;
46
53
  }
47
- exports.getNodeAttrVal = getNodeAttrVal;
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHBhdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIveHBhdGguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQTZDO0FBQzdDLG1DQUFtQztBQUVuQyxTQUFnQixRQUFRLENBQUUsS0FBSyxFQUFFLE1BQU07SUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxrQkFBUyxFQUFFLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELE1BQU0sS0FBSyxHQUFHLGNBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDckMsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBSkQsNEJBSUM7QUFFRCxTQUFnQixjQUFjLENBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRO0lBQ3JELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFdEMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDcEQsMERBQTBEO1FBQzFELElBQUksUUFBUSxHQUFHLFNBQVM7YUFDckIsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1DQUFtQzthQUNoRCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCO2FBQ2hDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2hCLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLE9BQU8sS0FBSyxVQUFVLEdBQUcsQ0FBQztRQUM1QixDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZO1FBRTFCLGlGQUFpRjtRQUNqRixPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7SUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDdkIsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFO1FBQ3JCLElBQUksUUFBUSxFQUFFO1lBQ1osV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNMLFdBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0I7S0FDRjtJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUE1QkQsd0NBNEJDO0FBRUQsU0FBZ0IsY0FBYyxDQUFFLElBQUksRUFBRSxJQUFJO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNuRixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxJQUFJLCtCQUErQixDQUFDLENBQUM7S0FDN0Y7SUFDRCxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDM0IsQ0FBQztBQU5ELHdDQU1DIn0=
54
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJydW5RdWVyeSIsInF1ZXJ5IiwieG1sU3RyIiwiZG9tIiwiRE9NUGFyc2VyIiwicGFyc2VGcm9tU3RyaW5nIiwibm9kZXMiLCJ0cmFuc2Zvcm1RdWVyeSIsIm11bHRpcGxlIiwibmV3UXVlcmllcyIsIm1hcCIsIm5vZGUiLCJpbmRleFBhdGgiLCJnZXROb2RlQXR0clZhbCIsIm5ld1F1ZXJ5Iiwic3Vic3RyaW5nIiwic3BsaXQiLCJpbmRleFN0ciIsInhwYXRoSW5kZXgiLCJwYXJzZUludCIsImpvaW4iLCJuZXdTZWxlY3RvciIsImxlbmd0aCIsImF0dHIiLCJhdHRyT2JqcyIsIk9iamVjdCIsInZhbHVlcyIsImF0dHJpYnV0ZXMiLCJmaWx0ZXIiLCJvYmoiLCJuYW1lIiwiRXJyb3IiLCJ2YWx1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi94cGF0aC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzZWxlY3QgYXMgeHBhdGhRdWVyeSB9IGZyb20gJ3hwYXRoJztcbmltcG9ydCB7IERPTVBhcnNlciB9IGZyb20gJ3htbGRvbSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5RdWVyeSAocXVlcnksIHhtbFN0cikge1xuICBjb25zdCBkb20gPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHhtbFN0cik7XG4gIGNvbnN0IG5vZGVzID0geHBhdGhRdWVyeShxdWVyeSwgZG9tKTtcbiAgcmV0dXJuIG5vZGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtUXVlcnkgKHF1ZXJ5LCB4bWxTdHIsIG11bHRpcGxlKSB7XG4gIGNvbnN0IG5vZGVzID0gcnVuUXVlcnkocXVlcnksIHhtbFN0cik7XG5cbiAgY29uc3QgbmV3UXVlcmllcyA9IG5vZGVzLm1hcCgobm9kZSkgPT4ge1xuICAgIGNvbnN0IGluZGV4UGF0aCA9IGdldE5vZGVBdHRyVmFsKG5vZGUsICdpbmRleFBhdGgnKTtcbiAgICAvLyBhdCB0aGlzIHBvaW50IGluZGV4UGF0aCB3aWxsIGxvb2sgbGlrZSAvMC8wLzEvMS8wLzEvMC8yXG4gICAgbGV0IG5ld1F1ZXJ5ID0gaW5kZXhQYXRoXG4gICAgICAuc3Vic3RyaW5nKDEpIC8vIHJlbW92ZSBsZWFkaW5nIC8gc28gd2UgY2FuIHNwbGl0XG4gICAgICAuc3BsaXQoJy8nKSAvLyBzcGxpdCBpbnRvIGlkbmV4ZXNcbiAgICAgIC5tYXAoKGluZGV4U3RyKSA9PiB7IC8vIG1hcCB0byB4cGF0aCBub2RlIGluZGV4ZXMgKDEtYmFzZWQpXG4gICAgICAgIGNvbnN0IHhwYXRoSW5kZXggPSBwYXJzZUludChpbmRleFN0ciwgMTApICsgMTtcbiAgICAgICAgcmV0dXJuIGAqWyR7eHBhdGhJbmRleH1dYDtcbiAgICAgIH0pXG4gICAgICAuam9pbignLycpOyAvLyByZWFwcGx5IC9cblxuICAgIC8vIG5vdyB0byBtYWtlIHRoaXMgYSB2YWxpZCB4cGF0aCBmcm9tIHRoZSByb290LCBwcmVwZW5kIHRoZSAvIHdlIHJlbW92ZWQgZWFybGllclxuICAgIHJldHVybiBgLyR7bmV3UXVlcnl9YDtcbiAgfSk7XG5cbiAgbGV0IG5ld1NlbGVjdG9yID0gbnVsbDtcbiAgaWYgKG5ld1F1ZXJpZXMubGVuZ3RoKSB7XG4gICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICBuZXdTZWxlY3RvciA9IG5ld1F1ZXJpZXMuam9pbignIHwgJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1NlbGVjdG9yID0gbmV3UXVlcmllc1swXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ld1NlbGVjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm9kZUF0dHJWYWwgKG5vZGUsIGF0dHIpIHtcbiAgY29uc3QgYXR0ck9ianMgPSBPYmplY3QudmFsdWVzKG5vZGUuYXR0cmlidXRlcykuZmlsdGVyKChvYmopID0+IG9iai5uYW1lID09PSBhdHRyKTtcbiAgaWYgKCFhdHRyT2Jqcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRyaWVkIHRvIHJldHJpZXZlIGEgbm9kZSBhdHRyaWJ1dGUgJyR7YXR0cn0nIGJ1dCB0aGUgbm9kZSBkaWRuJ3QgaGF2ZSBpdGApO1xuICB9XG4gIHJldHVybiBhdHRyT2Jqc1swXS52YWx1ZTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFTyxTQUFTQSxRQUFULENBQW1CQyxLQUFuQixFQUEwQkMsTUFBMUIsRUFBa0M7RUFDdkMsTUFBTUMsR0FBRyxHQUFHLElBQUlDLGlCQUFKLEdBQWdCQyxlQUFoQixDQUFnQ0gsTUFBaEMsQ0FBWjtFQUNBLE1BQU1JLEtBQUssR0FBRyxtQkFBV0wsS0FBWCxFQUFrQkUsR0FBbEIsQ0FBZDtFQUNBLE9BQU9HLEtBQVA7QUFDRDs7QUFFTSxTQUFTQyxjQUFULENBQXlCTixLQUF6QixFQUFnQ0MsTUFBaEMsRUFBd0NNLFFBQXhDLEVBQWtEO0VBQ3ZELE1BQU1GLEtBQUssR0FBR04sUUFBUSxDQUFDQyxLQUFELEVBQVFDLE1BQVIsQ0FBdEI7RUFFQSxNQUFNTyxVQUFVLEdBQUdILEtBQUssQ0FBQ0ksR0FBTixDQUFXQyxJQUFELElBQVU7SUFDckMsTUFBTUMsU0FBUyxHQUFHQyxjQUFjLENBQUNGLElBQUQsRUFBTyxXQUFQLENBQWhDO0lBRUEsSUFBSUcsUUFBUSxHQUFHRixTQUFTLENBQ3JCRyxTQURZLENBQ0YsQ0FERSxFQUVaQyxLQUZZLENBRU4sR0FGTSxFQUdaTixHQUhZLENBR1BPLFFBQUQsSUFBYztNQUNqQixNQUFNQyxVQUFVLEdBQUdDLFFBQVEsQ0FBQ0YsUUFBRCxFQUFXLEVBQVgsQ0FBUixHQUF5QixDQUE1QztNQUNBLE9BQVEsS0FBSUMsVUFBVyxHQUF2QjtJQUNELENBTlksRUFPWkUsSUFQWSxDQU9QLEdBUE8sQ0FBZjtJQVVBLE9BQVEsSUFBR04sUUFBUyxFQUFwQjtFQUNELENBZGtCLENBQW5CO0VBZ0JBLElBQUlPLFdBQVcsR0FBRyxJQUFsQjs7RUFDQSxJQUFJWixVQUFVLENBQUNhLE1BQWYsRUFBdUI7SUFDckIsSUFBSWQsUUFBSixFQUFjO01BQ1phLFdBQVcsR0FBR1osVUFBVSxDQUFDVyxJQUFYLENBQWdCLEtBQWhCLENBQWQ7SUFDRCxDQUZELE1BRU87TUFDTEMsV0FBVyxHQUFHWixVQUFVLENBQUMsQ0FBRCxDQUF4QjtJQUNEO0VBQ0Y7O0VBQ0QsT0FBT1ksV0FBUDtBQUNEOztBQUVNLFNBQVNSLGNBQVQsQ0FBeUJGLElBQXpCLEVBQStCWSxJQUEvQixFQUFxQztFQUMxQyxNQUFNQyxRQUFRLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjZixJQUFJLENBQUNnQixVQUFuQixFQUErQkMsTUFBL0IsQ0FBdUNDLEdBQUQsSUFBU0EsR0FBRyxDQUFDQyxJQUFKLEtBQWFQLElBQTVELENBQWpCOztFQUNBLElBQUksQ0FBQ0MsUUFBUSxDQUFDRixNQUFkLEVBQXNCO0lBQ3BCLE1BQU0sSUFBSVMsS0FBSixDQUFXLHVDQUFzQ1IsSUFBSywrQkFBdEQsQ0FBTjtFQUNEOztFQUNELE9BQU9DLFFBQVEsQ0FBQyxDQUFELENBQVIsQ0FBWVEsS0FBbkI7QUFDRCJ9