@gallop.software/canon 2.8.0 → 2.10.0

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.
@@ -142,6 +142,7 @@ function generateCursorrules() {
142
142
  lines.push('- Use Container inside Section - Section already provides containment');
143
143
  lines.push('- Use `classnames` package - use `clsx` instead');
144
144
  lines.push('- Use inline styles for hover states - use Tailwind classes');
145
+ lines.push('- Use native `IntersectionObserver` - use `react-intersection-observer` package');
145
146
  lines.push('');
146
147
  // File & Folder Authority section
147
148
  lines.push('## File & Folder Authority');
@@ -244,4 +245,4 @@ export async function generate(options) {
244
245
  console.log(` ${patterns.length} patterns, ${guarantees.length} guarantees`);
245
246
  }
246
247
  }
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL2dlbmVyYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBQ3hCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFjLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBTzFFOztHQUVHO0FBQ0gsU0FBUyxlQUFlLENBQUMsV0FBbUI7SUFDMUMsbURBQW1EO0lBQ25ELE1BQU0sYUFBYSxHQUFHO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLHFDQUFxQyxFQUFFLFdBQVcsQ0FBQztRQUM1RSwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO0tBQ3pELENBQUE7SUFFRCxLQUFLLE1BQU0sUUFBUSxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ3JDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLE9BQWU7SUFDdEMsTUFBTSxJQUFJLEdBQWEsRUFBRSxDQUFBO0lBQ3pCLE1BQU0sR0FBRyxHQUFhLEVBQUUsQ0FBQTtJQUV4Qix5REFBeUQ7SUFDekQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FB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QUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUVkLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN6QixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxRQUFRLENBQUMsT0FBd0I7SUFDckQsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQTtJQUVyQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDM0IsbUJBQW1CO1FBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDdEIsQ0FBQztTQUFNLENBQUM7UUFDTixnQkFBZ0I7UUFDaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzlELEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUM5QyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsT0FBTyxDQUFDLE1BQU0sZ0JBQWdCLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDbkUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxNQUFNLGNBQWMsVUFBVSxDQUFDLE1BQU0sYUFBYSxDQUFDLENBQUE7SUFDL0UsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcydcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCB7IHZlcnNpb24sIHBhdHRlcm5zLCBjYXRlZ29yaWVzLCBndWFyYW50ZWVzIH0gZnJvbSAnLi4vLi4vaW5kZXguanMnXG5cbmludGVyZmFjZSBHZW5lcmF0ZU9wdGlvbnMge1xuICBvdXRwdXQ6IHN0cmluZ1xuICBmb3JtYXQ6ICdjdXJzb3JydWxlcycgfCAnbWFya2Rvd24nXG59XG5cbi8qKlxuICogUmVhZCBhIHBhdHRlcm4gbWFya2Rvd24gZmlsZSBhbmQgZXh0cmFjdCBzZWN0aW9uc1xuICovXG5mdW5jdGlvbiByZWFkUGF0dGVybkZpbGUocGF0dGVybkZpbGU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAvLyBUcnkgdG8gZmluZCB0aGUgY2Fub24gcGFja2FnZSBwYXR0ZXJucyBkaXJlY3RvcnlcbiAgY29uc3QgcG9zc2libGVQYXRocyA9IFtcbiAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ25vZGVfbW9kdWxlcy9AZ2FsbG9wLnNvZnR3YXJlL2Nhbm9uJywgcGF0dGVybkZpbGUpLFxuICAgIC8vIEZhbGxiYWNrIGZvciBkZXZlbG9wbWVudFxuICAgIHBhdGguam9pbihpbXBvcnQubWV0YS5kaXJuYW1lLCAnLi4vLi4vLi4vJywgcGF0dGVybkZpbGUpLFxuICBdXG5cbiAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBwb3NzaWJsZVBhdGhzKSB7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZmlsZVBhdGgpKSB7XG4gICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCAndXRmLTgnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogRXh0cmFjdCBleGFtcGxlcyBmcm9tIHBhdHRlcm4gbWFya2Rvd25cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdEV4YW1wbGVzKGNvbnRlbnQ6IHN0cmluZyk6IHsgZ29vZDogc3RyaW5nW107IGJhZDogc3RyaW5nW10gfSB7XG4gIGNvbnN0IGdvb2Q6IHN0cmluZ1tdID0gW11cbiAgY29uc3QgYmFkOiBzdHJpbmdbXSA9IFtdXG5cbiAgLy8gRmluZCBjb2RlIGJsb2NrcyBhZnRlciBcIiMjIyBHb29kXCIgb3IgXCIjIyMgQmFkXCIgaGVhZGVyc1xuICBjb25zdCBnb29kTWF0Y2ggPSBjb250ZW50Lm1hdGNoKC8jIyMgR29vZFxccypcXG5gYGBbXFxzXFxTXSo/YGBgL2cpXG4gIGNvbnN0IGJhZE1hdGNoID0gY29udGVudC5tYXRjaCgvIyMjIEJhZFxccypcXG5gYGBbXFxzXFxTXSo/YGBgL2cpXG5cbiAgaWYgKGdvb2RNYXRjaCkge1xuICAgIGZvciAoY29uc3QgbWF0Y2ggb2YgZ29vZE1hdGNoKSB7XG4gICAgICBjb25zdCBjb2RlID0gbWF0Y2gucmVwbGFjZSgvIyMjIEdvb2RcXHMqXFxuLywgJycpLnRyaW0oKVxuICAgICAgZ29vZC5wdXNoKGNvZGUpXG4gICAgfVxuICB9XG5cbiAgaWYgKGJhZE1hdGNoKSB7XG4gICAgZm9yIChjb25zdCBtYXRjaCBvZiBiYWRNYXRjaCkge1xuICAgICAgY29uc3QgY29kZSA9IG1hdGNoLnJlcGxhY2UoLyMjIyBCYWRcXHMqXFxuLywgJycpLnRyaW0oKVxuICAgICAgYmFkLnB1c2goY29kZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBnb29kLCBiYWQgfVxufVxuXG4vKipcbiAqIEdlbmVyYXRlIC5jdXJzb3JydWxlcyBjb250ZW50IGZyb20gQ2Fub25cbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVDdXJzb3JydWxlcygpOiBzdHJpbmcge1xuICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXVxuXG4gIC8vIEhlYWRlclxuICBsaW5lcy5wdXNoKGAjIEdhbGxvcCBDYW5vbiB2JHt2ZXJzaW9ufSAtIEFJIFJ1bGVzYClcbiAgbGluZXMucHVzaCgnJylcbiAgbGluZXMucHVzaCgnVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gQGdhbGxvcC5zb2Z0d2FyZS9jYW5vbi4gRG8gbm90IGVkaXQgbWFudWFsbHkuJylcbiAgbGluZXMucHVzaCgnUmVnZW5lcmF0ZSB3aXRoOiBucG0gcnVuIGdlbmVyYXRlOmFpLXJ1bGVzJylcbiAgbGluZXMucHVzaCgnJylcblxuICAvLyBUZWNoIHN0YWNrIChDYW5vbi1jb21wYXRpYmxlIHRlbXBsYXRlcylcbiAgbGluZXMucHVzaCgnIyMgVGVjaCBTdGFjaycpXG4gIGxpbmVzLnB1c2goJycpXG4gIGxpbmVzLnB1c2goJy0gTmV4dC5qcyAxNiB3aXRoIEFwcCBSb3V0ZXInKVxuICBsaW5lcy5wdXNoKCctIFJlYWN0IDE5JylcbiAgbGluZXMucHVzaCgnLSBUeXBlU2NyaXB0JylcbiAgbGluZXMucHVzaCgnLSBUYWlsd2luZCBDU1MgdjQnKVxuICBsaW5lcy5wdXNoKCctIGNsc3ggZm9yIGNvbmRpdGlvbmFsIGNsYXNzIG5hbWVzJylcbiAgbGluZXMucHVzaCgnJylcblxuICAvLyBFbmZvcmNlZCBwYXR0ZXJucyAoRVNMaW50IHJ1bGVzKVxuICBsaW5lcy5wdXNoKCcjIyBFbmZvcmNlZCBQYXR0ZXJucyAoRVNMaW50KScpXG4gIGxpbmVzLnB1c2goJycpXG4gIGxpbmVzLnB1c2goJ1RoZXNlIHBhdHRlcm5zIGFyZSBlbmZvcmNlZCBieSBgQGdhbGxvcC5zb2Z0d2FyZS9jYW5vbi9lc2xpbnRgLiBWaW9sYXRpb25zIHdpbGwgYmUgZmxhZ2dlZC4nKVxuICBsaW5lcy5wdXNoKCcnKVxuXG4gIGNvbnN0IGVuZm9yY2VkUGF0dGVybnMgPSBwYXR0ZXJucy5maWx0ZXIocCA9PiBwLmVuZm9yY2VtZW50ID09PSAnZXNsaW50JyAmJiBwLnJ1bGUpXG4gIGZvciAoY29uc3QgcGF0dGVybiBvZiBlbmZvcmNlZFBhdHRlcm5zKSB7XG4gICAgbGluZXMucHVzaChgIyMjICR7cGF0dGVybi5pZH06ICR7cGF0dGVybi50aXRsZX1gKVxuICAgIGxpbmVzLnB1c2goJycpXG4gICAgbGluZXMucHVzaChwYXR0ZXJuLnN1bW1hcnkpXG4gICAgbGluZXMucHVzaCgnJylcbiAgICBsaW5lcy5wdXNoKGAtICoqRVNMaW50IFJ1bGU6KiogXFxgJHtwYXR0ZXJuLnJ1bGV9XFxgYClcbiAgICBsaW5lcy5wdXNoKGAtICoqQ2F0ZWdvcnk6KiogJHtwYXR0ZXJuLmNhdGVnb3J5fWApXG4gICAgbGluZXMucHVzaCgnJylcblxuICAgIC8vIFRyeSB0byByZWFkIGFuZCBpbmNsdWRlIGV4YW1wbGVzXG4gICAgY29uc3QgY29udGVudCA9IHJlYWRQYXR0ZXJuRmlsZShwYXR0ZXJuLmZpbGUpXG4gICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgIGNvbnN0IHsgZ29vZCwgYmFkIH0gPSBleHRyYWN0RXhhbXBsZXMoY29udGVudClcbiAgICAgIGlmIChiYWQubGVuZ3RoID4gMCkge1xuICAgICAgICBsaW5lcy5wdXNoKCcqKkJhZDoqKicpXG4gICAgICAgIGxpbmVzLnB1c2goJycpXG4gICAgICAgIGxpbmVzLnB1c2goYmFkWzBdKVxuICAgICAgICBsaW5lcy5wdXNoKCcnKVxuICAgICAgfVxuICAgICAgaWYgKGdvb2QubGVuZ3RoID4gMCkge1xuICAgICAgICBsaW5lcy5wdXNoKCcqKkdvb2Q6KionKVxuICAgICAgICBsaW5lcy5wdXNoKCcnKVxuICAgICAgICBsaW5lcy5wdXNoKGdvb2RbMF0pXG4gICAgICAgIGxpbmVzLnB1c2goJycpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRG9jdW1lbnRhdGlvbiBwYXR0ZXJuc1xuICBsaW5lcy5wdXNoKCcjIyBEb2N1bWVudGF0aW9uIFBhdHRlcm5zJylcbiAgbGluZXMucHVzaCgnJylcbiAgbGluZXMucHVzaCgnVGhlc2UgcGF0dGVybnMgYXJlIG5vdCBlbmZvcmNlZCBieSBFU0xpbnQgYnV0IHNob3VsZCBiZSBmb2xsb3dlZC4nKVxuICBsaW5lcy5wdXNoKCcnKVxuXG4gIGNvbnN0IGRvY1BhdHRlcm5zID0gcGF0dGVybnMuZmlsdGVyKHAgPT4gcC5lbmZvcmNlbWVudCA9PT0gJ2RvY3VtZW50YXRpb24nKVxuICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgZG9jUGF0dGVybnMpIHtcbiAgICBsaW5lcy5wdXNoKGAjIyMgJHtwYXR0ZXJuLmlkfTogJHtwYXR0ZXJuLnRpdGxlfWApXG4gICAgbGluZXMucHVzaCgnJylcbiAgICBsaW5lcy5wdXNoKHBhdHRlcm4uc3VtbWFyeSlcbiAgICBsaW5lcy5wdXNoKCcnKVxuICB9XG5cbiAgLy8gR3VhcmFudGVlc1xuICBsaW5lcy5wdXNoKCcjIyBDYW5vbiBHdWFyYW50ZWVzJylcbiAgbGluZXMucHVzaCgnJylcbiAgbGluZXMucHVzaCgnRm9sbG93aW5nIHRoZXNlIHBhdHRlcm5zIHByb3ZpZGVzIHRoZXNlIGd1YXJhbnRlZXM6JylcbiAgbGluZXMucHVzaCgnJylcblxuICBmb3IgKGNvbnN0IGd1YXJhbnRlZSBvZiBndWFyYW50ZWVzKSB7XG4gICAgbGluZXMucHVzaChgLSAqKiR7Z3VhcmFudGVlLm5hbWV9KiogKCR7Z3VhcmFudGVlLmlkfSk6IFBhdHRlcm5zICR7Z3VhcmFudGVlLnBhdHRlcm5zLmpvaW4oJywgJyl9YClcbiAgfVxuICBsaW5lcy5wdXNoKCcnKVxuXG4gIC8vIFF1aWNrIHJlZmVyZW5jZSBmb3IgY29tcG9uZW50c1xuICBsaW5lcy5wdXNoKCcjIyBDb21wb25lbnQgUXVpY2sgUmVmZXJlbmNlJylcbiAgbGluZXMucHVzaCgnJylcbiAgbGluZXMucHVzaCgnIyMjIFR5cG9ncmFwaHknKVxuICBsaW5lcy5wdXNoKCctIGBIZWFkaW5nYCAtIHByb3BzOiBgYXNgLCBgY29sb3JgLCBgbWFyZ2luYCwgYGZvbnRTaXplYCwgYGZvbnRXZWlnaHRgLCBgdGV4dEFsaWduYCcpXG4gIGxpbmVzLnB1c2goJy0gYFBhcmFncmFwaGAgLSBwcm9wczogYGNvbG9yYCwgYG1hcmdpbmAsIGBmb250U2l6ZWAsIGBsaW5lSGVpZ2h0YCwgYHRleHRBbGlnbmAnKVxuICBsaW5lcy5wdXNoKCctIGBTcGFuYCAtIHByb3BzOiBgY29sb3JgLCBgbWFyZ2luYCwgYGZvbnRTaXplYCAoaW5saW5lIHRleHQsIG1iLTAgZGVmYXVsdCknKVxuICBsaW5lcy5wdXNoKCctIGBMYWJlbGAgLSBwcm9wczogYGNvbG9yYCwgYG1hcmdpbmAsIGBmb250U2l6ZWAsIGBmb250V2VpZ2h0YCwgYHRleHRBbGlnbmAnKVxuICBsaW5lcy5wdXNoKCctIGBRdW90ZWAgLSBwcm9wczogYHZhcmlhbnRgLCBgY29sb3JgLCBgbWFyZ2luYCwgYGZvbnRTaXplYCwgYGZvbnRXZWlnaHRgLCBgdGV4dEFsaWduYCcpXG4gIGxpbmVzLnB1c2goJycpXG4gIGxpbmVzLnB1c2goJyMjIyBMYXlvdXQnKVxuICBsaW5lcy5wdXNoKCctIGBTZWN0aW9uYCAtIHNlbWFudGljIHNlY3Rpb24gd3JhcHBlcicpXG4gIGxpbmVzLnB1c2goJy0gYENvbHVtbnNgIC0gZ3JpZCBsYXlvdXQsIHByb3BzOiBgY29sc2AsIGBnYXBgLCBgYWxpZ25gJylcbiAgbGluZXMucHVzaCgnLSBgQ29sdW1uYCAtIGNvbHVtbiBjaGlsZCcpXG4gIGxpbmVzLnB1c2goJycpXG4gIGxpbmVzLnB1c2goJyMjIyBJbnRlcmFjdGl2ZScpXG4gIGxpbmVzLnB1c2goJy0gYEJ1dHRvbmAgLSBwcm9wczogYGhyZWZgLCBgdmFyaWFudGAsIGBpY29uYCwgYGljb25QbGFjZW1lbnRgLCBgbWFyZ2luYCcpXG4gIGxpbmVzLnB1c2goJy0gYEljb25gIC0gSWNvbmlmeSBpY29uIHdyYXBwZXInKVxuICBsaW5lcy5wdXNoKCcnKVxuXG4gIC8vIERvIE5PVCBzZWN0aW9uXG4gIGxpbmVzLnB1c2goJyMjIERvIE5PVCcpXG4gIGxpbmVzLnB1c2goJycpXG4gIGxpbmVzLnB1c2goJy0gVXNlIGBcXCd1c2UgY2xpZW50XFwnYCBpbiBibG9ja3MgLSBleHRyYWN0IHRvIGNvbXBvbmVudHMnKVxuICBsaW5lcy5wdXNoKCctIFVzZSByYXcgYDxwPmAgb3IgYDxzcGFuPmAgLSB1c2UgUGFyYWdyYXBoL1NwYW4gY29tcG9uZW50cycpXG4gIGxpbmVzLnB1c2goJy0gVXNlIGNsYXNzTmFtZSBmb3IgbWFyZ2luL2NvbG9yL2ZvbnRTaXplIHdoZW4gY29tcG9uZW50IGhhcyBwcm9wcycpXG4gIGxpbmVzLnB1c2goJy0gVXNlIENvbnRhaW5lciBpbnNpZGUgU2VjdGlvbiAtIFNlY3Rpb24gYWxyZWFkeSBwcm92aWRlcyBjb250YWlubWVudCcpXG4gIGxpbmVzLnB1c2goJy0gVXNlIGBjbGFzc25hbWVzYCBwYWNrYWdlIC0gdXNlIGBjbHN4YCBpbnN0ZWFkJylcbiAgbGluZXMucHVzaCgnLSBVc2UgaW5saW5lIHN0eWxlcyBmb3IgaG92ZXIgc3RhdGVzIC0gdXNlIFRhaWx3aW5kIGNsYXNzZXMnKVxuICBsaW5lcy5wdXNoKCcnKVxuXG4gIC8vIEZpbGUgJiBGb2xkZXIgQXV0aG9yaXR5IHNlY3Rpb25cbiAgbGluZXMucHVzaCgnIyMgRmlsZSAmIEZvbGRlciBBdXRob3JpdHknKVxuICBsaW5lcy5wdXNoKCcnKVxuICBsaW5lcy5wdXNoKCdUaGVzZSBydWxlcyBnb3Zlcm4gd2hhdCBBSSBpcyBhbGxvd2VkIGFuZCBmb3JiaWRkZW4gdG8gZG8gd2hlbiBjcmVhdGluZywgbW92aW5nLCBvciBtb2RpZnlpbmcgZmlsZXMgYW5kIGZvbGRlcnMuJylcbiAgbGluZXMucHVzaCgnJylcblxuICBsaW5lcy5wdXNoKCcjIyMgRGVmaW5lZCBgL3NyY2AgU3RydWN0dXJlJylcbiAgbGluZXMucHVzaCgnJylcbiAgbGluZXMucHVzaCgnYGBgJylcbiAgbGluZXMucHVzaCgnc3JjLycpXG4gIGxpbmVzLnB1c2goJ+KUnOKUgOKUgCBhcHAvICAgICAgICAgICMgUm91dGVzLCBsYXlvdXRzLCBtZXRhZGF0YSAoTmV4dC5qcyBBcHAgUm91dGVyKScpXG4gIGxpbmVzLnB1c2goJ+KUnOKUgOKUgCBibG9ja3MvICAgICAgICMgUGFnZS1sZXZlbCBjb250ZW50IHNlY3Rpb25zJylcbiAgbGluZXMucHVzaCgn4pSc4pSA4pSAIGJsb2cvICAgICAgICAgIyBCbG9nIGNvbnRlbnQgKGFyY2hpdmUgY29udGVudCB0eXBlKScpXG4gIGxpbmVzLnB1c2goJ+KUnOKUgOKUgCBjb21wb25lbnRzLyAgICMgUmV1c2FibGUgVUkgcHJpbWl0aXZlcycpXG4gIGxpbmVzLnB1c2goJ+KUnOKUgOKUgCBob29rcy8gICAgICAgICMgQ3VzdG9tIFJlYWN0IGhvb2tzJylcbiAgbGluZXMucHVzaCgn4pSc4pSA4pSAIHN0eWxlcy8gICAgICAgIyBDU1MsIFRhaWx3aW5kLCBmb250cycpXG4gIGxpbmVzLnB1c2goJ+KUnOKUgOKUgCB0ZW1wbGF0ZS8gICAgICMgVGVtcGxhdGUtbGV2ZWwgY29tcG9uZW50cycpXG4gIGxpbmVzLnB1c2goJ+KUnOKUgOKUgCB0b29scy8gICAgICAgICMgVXRpbGl0eSB0b29scycpXG4gIGxpbmVzLnB1c2goJ+KUnOKUgOKUgCB0eXBlcy8gICAgICAgICMgVHlwZVNjcmlwdCB0eXBlcycpXG4gIGxpbmVzLnB1c2goJ+KUnOKUgOKUgCB1dGlscy8gICAgICAgICMgVXRpbGl0eSBmdW5jdGlvbnMnKVxuICBsaW5lcy5wdXNoKCfilJTilIDilIAgc3RhdGUudHMgICAgICAjIEdsb2JhbCBzdGF0ZScpXG4gIGxpbmVzLnB1c2goJ2BgYCcpXG4gIGxpbmVzLnB1c2goJycpXG5cbiAgbGluZXMucHVzaCgnIyMjIEFwcCBSb3V0ZXIgU3RydWN0dXJlJylcbiAgbGluZXMucHVzaCgnJylcbiAgbGluZXMucHVzaCgnUm91dGVzIG11c3QgdXNlIE5leHQuanMgcm91dGUgZ3JvdXBzLiBBdCBtaW5pbXVtLCBgKGRlZmF1bHQpYCBtdXN0IGV4aXN0OicpXG4gIGxpbmVzLnB1c2goJycpXG4gIGxpbmVzLnB1c2goJ2BgYCcpXG4gIGxpbmVzLnB1c2goJ3NyYy9hcHAvJylcbiAgbGluZXMucHVzaCgn4pSc4pSA4pSAIChkZWZhdWx0KS8gICAgICAgICMgUmVxdWlyZWQgLSBkZWZhdWx0IGxheW91dCBncm91cCcpXG4gIGxpbmVzLnB1c2goJ+KUgiAgIOKUnOKUgOKUgCBsYXlvdXQudHN4JylcbiAgbGluZXMucHVzaCgn4pSCICAg4pSU4pSA4pSAIHtyb3V0ZXN9LycpXG4gIGxpbmVzLnB1c2goJ+KUnOKUgOKUgCAoaGVybykvICAgICAgICAgICAjIE9wdGlvbmFsIC0gaGVybyBsYXlvdXQgdmFyaWFudCcpXG4gIGxpbmVzLnB1c2goJ+KUnOKUgOKUgCBhcGkvICAgICAgICAgICAgICAjIEFQSSByb3V0ZXMgKGV4Y2VwdGlvbiAtIG5vIGdyb3VwaW5nKScpXG4gIGxpbmVzLnB1c2goJ+KUnOKUgOKUgCBsYXlvdXQudHN4ICAgICAgICAjIFJvb3QgbGF5b3V0JylcbiAgbGluZXMucHVzaCgn4pSU4pSA4pSAIG1ldGFkYXRhLnRzeCAgICAgICMgU2hhcmVkIG1ldGFkYXRhJylcbiAgbGluZXMucHVzaCgnYGBgJylcbiAgbGluZXMucHVzaCgnJylcbiAgbGluZXMucHVzaCgnLSBBbGwgcGFnZSByb3V0ZXMgbXVzdCBiZSBpbnNpZGUgYSByb3V0ZSBncm91cCAocGFyZW50aGVzZXMgZm9sZGVyKScpXG4gIGxpbmVzLnB1c2goJy0gTmV2ZXIgY3JlYXRlIHJvdXRlcyBkaXJlY3RseSB1bmRlciBgc3JjL2FwcC9gIChleGNlcHQgYGFwaS9gLCByb290IGZpbGVzKScpXG4gIGxpbmVzLnB1c2goJy0gTmV3IHJvdXRlIGdyb3VwcyBhcmUgYWxsb3dlZCBmcmVlbHkgd2hlbiBhIG5ldyBsYXlvdXQgdmFyaWFudCBpcyBuZWVkZWQnKVxuICBsaW5lcy5wdXNoKCcnKVxuXG4gIGxpbmVzLnB1c2goJyMjIyBGaWxlIFN0cnVjdHVyZSBSdWxlcycpXG4gIGxpbmVzLnB1c2goJycpXG4gIGxpbmVzLnB1c2goJyoqQmxvY2tzOioqJylcbiAgbGluZXMucHVzaCgnLSBBbHdheXMgc2luZ2xlIGZpbGVzIGRpcmVjdGx5IGluIGBzcmMvYmxvY2tzL2AnKVxuICBsaW5lcy5wdXNoKCctIE5ldmVyIGNyZWF0ZSBmb2xkZXJzIGluc2lkZSBgc3JjL2Jsb2Nrcy9gJylcbiAgbGluZXMucHVzaCgnLSBFeGFtcGxlOiBgc3JjL2Jsb2Nrcy9oZXJvLTEudHN4YCwgYHNyYy9ibG9ja3MvdGVzdGltb25pYWwtMy50c3hgJylcbiAgbGluZXMucHVzaCgnJylcbiAgbGluZXMucHVzaCgnKipDb21wb25lbnRzOioqJylcbiAgbGluZXMucHVzaCgnLSBTaW1wbGUgY29tcG9uZW50czogU2luZ2xlIGZpbGUgaW4gYHNyYy9jb21wb25lbnRzL2AnKVxuICBsaW5lcy5wdXNoKCctIENvbXBsZXggY29tcG9uZW50czogRm9sZGVyIHdpdGggYGluZGV4LnRzeGAnKVxuICBsaW5lcy5wdXNoKCctIFVzZSBmb2xkZXJzIHdoZW4gY29tcG9uZW50IGhhcyBtdWx0aXBsZSBzdWItZmlsZXMnKVxuICBsaW5lcy5wdXNoKCcnKVxuXG4gIGxpbmVzLnB1c2goJyMjIyBETyAtIFdoYXQgQUkgSVMgQWxsb3dlZCBUbyBEbycpXG4gIGxpbmVzLnB1c2goJycpXG4gIGxpbmVzLnB1c2goJy0gQ3JlYXRlIGZpbGVzIG9ubHkgaW5zaWRlIGV4aXN0aW5nIENhbm9uLWRlZmluZWQgem9uZXMnKVxuICBsaW5lcy5wdXNoKCctIFBsYWNlIG5ldyBmaWxlcyBpbiB0aGUgem9uZSB0aGF0IG1hdGNoZXMgdGhlaXIgYXJjaGl0ZWN0dXJhbCByb2xlJylcbiAgbGluZXMucHVzaCgnLSBGb2xsb3cgZXhpc3RpbmcgZm9sZGVyIGNvbnZlbnRpb25zIHdpdGhpbiBhIHpvbmUnKVxuICBsaW5lcy5wdXNoKCctIFJldXNlIGV4aXN0aW5nIGZvbGRlcnMgd2hlbiBwb3NzaWJsZScpXG4gIGxpbmVzLnB1c2goJy0gQ3JlYXRlIG5ldyByb3V0ZSBncm91cHMgaW4gYHNyYy9hcHAvYCB3aGVuIG5ldyBsYXlvdXRzIGFyZSBuZWVkZWQnKVxuICBsaW5lcy5wdXNoKCctIENyZWF0ZSBuZXcgYXJjaGl2ZSBjb250ZW50IGZvbGRlcnMgKGxpa2UgYGJsb2cvYCwgYHBvcnRmb2xpby9gKSBpbiBgL3NyY2AnKVxuICBsaW5lcy5wdXNoKCctIENyZWF0ZSBkb3RmaWxlcy9kaXJlY3RvcmllcyBhdCBwcm9qZWN0IHJvb3QgKGAuZ2l0aHViL2AsIGAuY3Vyc29yL2AsIGV0Yy4pJylcbiAgbGluZXMucHVzaCgnLSBBc2sgZm9yIGNvbmZpcm1hdGlvbiBpZiB0aGUgY29ycmVjdCB6b25lIGlzIGFtYmlndW91cycpXG4gIGxpbmVzLnB1c2goJycpXG5cbiAgbGluZXMucHVzaCgnIyMjIERPIE5PVCAtIFdoYXQgQUkgSXMgRm9yYmlkZGVuIFRvIERvJylcbiAgbGluZXMucHVzaCgnJylcbiAgbGluZXMucHVzaCgnLSBDcmVhdGUgbmV3IHRvcC1sZXZlbCBkaXJlY3RvcmllcyAoZXhjZXB0IGRvdGZpbGVzKScpXG4gIGxpbmVzLnB1c2goJy0gQ3JlYXRlIG5ldyBmb2xkZXJzIGluIGAvc3JjYCAoZXhjZXB0IGFyY2hpdmUgY29udGVudCBvciByb3V0ZSBncm91cHMpJylcbiAgbGluZXMucHVzaCgnLSBQbGFjZSBmaWxlcyBvdXRzaWRlIENhbm9uLWRlZmluZWQgem9uZXMnKVxuICBsaW5lcy5wdXNoKCctIE1peCByZXNwb25zaWJpbGl0aWVzIGFjcm9zcyB6b25lcyAoY29tcG9uZW50cyBpbXBvcnRpbmcgYmxvY2tzLCBldGMuKScpXG4gIGxpbmVzLnB1c2goJy0gUmVvcmdhbml6ZSBvciBtb3ZlIGZvbGRlcnMgd2l0aG91dCBleHBsaWNpdCBpbnN0cnVjdGlvbicpXG4gIGxpbmVzLnB1c2goJy0gSW52ZW50IG5ldyBvcmdhbml6YXRpb25hbCBjb252ZW50aW9ucycpXG4gIGxpbmVzLnB1c2goJy0gQ3JlYXRlIHBsYWNlaG9sZGVyIG9yIHNwZWN1bGF0aXZlIGZpbGVzJylcbiAgbGluZXMucHVzaCgnLSBJbXBvcnQgZnJvbSBgX3NjcmlwdHMvYCBvciBgX2RhdGEvYCBpbiBydW50aW1lIGNvZGUnKVxuICBsaW5lcy5wdXNoKCctIE1hbnVhbGx5IGVkaXQgZmlsZXMgaW4gYF9kYXRhL2AgKGdlbmVyYXRlZCBvbmx5KScpXG4gIGxpbmVzLnB1c2goJycpXG5cbiAgLy8gUG9zdC1lZGl0IHZlcmlmaWNhdGlvblxuICBsaW5lcy5wdXNoKCcjIyBQb3N0LUVkaXQgVmVyaWZpY2F0aW9uJylcbiAgbGluZXMucHVzaCgnJylcbiAgbGluZXMucHVzaCgnQWZ0ZXIgZWRpdGluZyBmaWxlczonKVxuICBsaW5lcy5wdXNoKCcxLiBSdW4gYG5wbSBydW4gbGludGAgdG8gY2hlY2sgZm9yIGVycm9ycycpXG4gIGxpbmVzLnB1c2goJzIuIEZpeCBhbnkgdmlvbGF0aW9ucyBiZWZvcmUgY29tbWl0dGluZycpXG4gIGxpbmVzLnB1c2goJycpXG4gIGxpbmVzLnB1c2goJ05vdGU6IE9ubHkgbGludCBmaWxlcyB5b3UgZWRpdGVkLCBub3QgdGhlIGVudGlyZSBjb2RlYmFzZS4nKVxuICBsaW5lcy5wdXNoKCcnKVxuXG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGUob3B0aW9uczogR2VuZXJhdGVPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNvbnRlbnQgPSBnZW5lcmF0ZUN1cnNvcnJ1bGVzKClcblxuICBpZiAob3B0aW9ucy5vdXRwdXQgPT09ICctJykge1xuICAgIC8vIE91dHB1dCB0byBzdGRvdXRcbiAgICBjb25zb2xlLmxvZyhjb250ZW50KVxuICB9IGVsc2Uge1xuICAgIC8vIFdyaXRlIHRvIGZpbGVcbiAgICBjb25zdCBvdXRwdXRQYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIG9wdGlvbnMub3V0cHV0KVxuICAgIGZzLndyaXRlRmlsZVN5bmMob3V0cHV0UGF0aCwgY29udGVudCwgJ3V0Zi04JylcbiAgICBjb25zb2xlLmxvZyhg4pyTIEdlbmVyYXRlZCAke29wdGlvbnMub3V0cHV0fSBmcm9tIENhbm9uIHYke3ZlcnNpb259YClcbiAgICBjb25zb2xlLmxvZyhgICAke3BhdHRlcm5zLmxlbmd0aH0gcGF0dGVybnMsICR7Z3VhcmFudGVlcy5sZW5ndGh9IGd1YXJhbnRlZXNgKVxuICB9XG59XG4iXX0=
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL2dlbmVyYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBQ3hCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFjLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBTzFFOztHQUVHO0FBQ0gsU0FBUyxlQUFlLENBQUMsV0FBbUI7SUFDMUMsbURBQW1EO0lBQ25ELE1BQU0sYUFBYSxHQUFHO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLHFDQUFxQyxFQUFFLFdBQVcsQ0FBQztRQUM1RSwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO0tBQ3pELENBQUE7SUFFRCxLQUFLLE1BQU0sUUFBUSxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ3JDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLE9BQWU7SUFDdEMsTUFBTSxJQUFJLEdBQWEsRUFBRSxDQUFBO0lBQ3pCLE1BQU0sR0FBRyxHQUFhLEVBQUUsQ0FBQTtJQUV4Qix5REFBeUQ7SUFDekQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FB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QUFDLElBQUksQ0FBQyw0REFBNEQsQ0FBQyxDQUFBO0lBQ3hFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFZCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDekIsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsUUFBUSxDQUFDLE9BQXdCO0lBQ3JELE1BQU0sT0FBTyxHQUFHLG1CQUFtQixFQUFFLENBQUE7SUFFckMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQzNCLG1CQUFtQjtRQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3RCLENBQUM7U0FBTSxDQUFDO1FBQ04sZ0JBQWdCO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM5RCxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLE9BQU8sQ0FBQyxNQUFNLGdCQUFnQixPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQ25FLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLENBQUMsTUFBTSxjQUFjLFVBQVUsQ0FBQyxNQUFNLGFBQWEsQ0FBQyxDQUFBO0lBQy9FLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgeyB2ZXJzaW9uLCBwYXR0ZXJucywgY2F0ZWdvcmllcywgZ3VhcmFudGVlcyB9IGZyb20gJy4uLy4uL2luZGV4LmpzJ1xuXG5pbnRlcmZhY2UgR2VuZXJhdGVPcHRpb25zIHtcbiAgb3V0cHV0OiBzdHJpbmdcbiAgZm9ybWF0OiAnY3Vyc29ycnVsZXMnIHwgJ21hcmtkb3duJ1xufVxuXG4vKipcbiAqIFJlYWQgYSBwYXR0ZXJuIG1hcmtkb3duIGZpbGUgYW5kIGV4dHJhY3Qgc2VjdGlvbnNcbiAqL1xuZnVuY3Rpb24gcmVhZFBhdHRlcm5GaWxlKHBhdHRlcm5GaWxlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgLy8gVHJ5IHRvIGZpbmQgdGhlIGNhbm9uIHBhY2thZ2UgcGF0dGVybnMgZGlyZWN0b3J5XG4gIGNvbnN0IHBvc3NpYmxlUGF0aHMgPSBbXG4gICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdub2RlX21vZHVsZXMvQGdhbGxvcC5zb2Z0d2FyZS9jYW5vbicsIHBhdHRlcm5GaWxlKSxcbiAgICAvLyBGYWxsYmFjayBmb3IgZGV2ZWxvcG1lbnRcbiAgICBwYXRoLmpvaW4oaW1wb3J0Lm1ldGEuZGlybmFtZSwgJy4uLy4uLy4uLycsIHBhdHRlcm5GaWxlKSxcbiAgXVxuXG4gIGZvciAoY29uc3QgZmlsZVBhdGggb2YgcG9zc2libGVQYXRocykge1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGZpbGVQYXRoKSkge1xuICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgJ3V0Zi04JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG4vKipcbiAqIEV4dHJhY3QgZXhhbXBsZXMgZnJvbSBwYXR0ZXJuIG1hcmtkb3duXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RFeGFtcGxlcyhjb250ZW50OiBzdHJpbmcpOiB7IGdvb2Q6IHN0cmluZ1tdOyBiYWQ6IHN0cmluZ1tdIH0ge1xuICBjb25zdCBnb29kOiBzdHJpbmdbXSA9IFtdXG4gIGNvbnN0IGJhZDogc3RyaW5nW10gPSBbXVxuXG4gIC8vIEZpbmQgY29kZSBibG9ja3MgYWZ0ZXIgXCIjIyMgR29vZFwiIG9yIFwiIyMjIEJhZFwiIGhlYWRlcnNcbiAgY29uc3QgZ29vZE1hdGNoID0gY29udGVudC5tYXRjaCgvIyMjIEdvb2RcXHMqXFxuYGBgW1xcc1xcU10qP2BgYC9nKVxuICBjb25zdCBiYWRNYXRjaCA9IGNvbnRlbnQubWF0Y2goLyMjIyBCYWRcXHMqXFxuYGBgW1xcc1xcU10qP2BgYC9nKVxuXG4gIGlmIChnb29kTWF0Y2gpIHtcbiAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIGdvb2RNYXRjaCkge1xuICAgICAgY29uc3QgY29kZSA9IG1hdGNoLnJlcGxhY2UoLyMjIyBHb29kXFxzKlxcbi8sICcnKS50cmltKClcbiAgICAgIGdvb2QucHVzaChjb2RlKVxuICAgIH1cbiAgfVxuXG4gIGlmIChiYWRNYXRjaCkge1xuICAgIGZvciAoY29uc3QgbWF0Y2ggb2YgYmFkTWF0Y2gpIHtcbiAgICAgIGNvbnN0IGNvZGUgPSBtYXRjaC5yZXBsYWNlKC8jIyMgQmFkXFxzKlxcbi8sICcnKS50cmltKClcbiAgICAgIGJhZC5wdXNoKGNvZGUpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgZ29vZCwgYmFkIH1cbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSAuY3Vyc29ycnVsZXMgY29udGVudCBmcm9tIENhbm9uXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlQ3Vyc29ycnVsZXMoKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW11cblxuICAvLyBIZWFkZXJcbiAgbGluZXMucHVzaChgIyBHYWxsb3AgQ2Fub24gdiR7dmVyc2lvbn0gLSBBSSBSdWxlc2ApXG4gIGxpbmVzLnB1c2goJycpXG4gIGxpbmVzLnB1c2goJ1RoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIEBnYWxsb3Auc29mdHdhcmUvY2Fub24uIERvIG5vdCBlZGl0IG1hbnVhbGx5LicpXG4gIGxpbmVzLnB1c2goJ1JlZ2VuZXJhdGUgd2l0aDogbnBtIHJ1biBnZW5lcmF0ZTphaS1ydWxlcycpXG4gIGxpbmVzLnB1c2goJycpXG5cbiAgLy8gVGVjaCBzdGFjayAoQ2Fub24tY29tcGF0aWJsZSB0ZW1wbGF0ZXMpXG4gIGxpbmVzLnB1c2goJyMjIFRlY2ggU3RhY2snKVxuICBsaW5lcy5wdXNoKCcnKVxuICBsaW5lcy5wdXNoKCctIE5leHQuanMgMTYgd2l0aCBBcHAgUm91dGVyJylcbiAgbGluZXMucHVzaCgnLSBSZWFjdCAxOScpXG4gIGxpbmVzLnB1c2goJy0gVHlwZVNjcmlwdCcpXG4gIGxpbmVzLnB1c2goJy0gVGFpbHdpbmQgQ1NTIHY0JylcbiAgbGluZXMucHVzaCgnLSBjbHN4IGZvciBjb25kaXRpb25hbCBjbGFzcyBuYW1lcycpXG4gIGxpbmVzLnB1c2goJycpXG5cbiAgLy8gRW5mb3JjZWQgcGF0dGVybnMgKEVTTGludCBydWxlcylcbiAgbGluZXMucHVzaCgnIyMgRW5mb3JjZWQgUGF0dGVybnMgKEVTTGludCknKVxuICBsaW5lcy5wdXNoKCcnKVxuICBsaW5lcy5wdXNoKCdUaGVzZSBwYXR0ZXJucyBhcmUgZW5mb3JjZWQgYnkgYEBnYWxsb3Auc29mdHdhcmUvY2Fub24vZXNsaW50YC4gVmlvbGF0aW9ucyB3aWxsIGJlIGZsYWdnZWQuJylcbiAgbGluZXMucHVzaCgnJylcblxuICBjb25zdCBlbmZvcmNlZFBhdHRlcm5zID0gcGF0dGVybnMuZmlsdGVyKHAgPT4gcC5lbmZvcmNlbWVudCA9PT0gJ2VzbGludCcgJiYgcC5ydWxlKVxuICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgZW5mb3JjZWRQYXR0ZXJucykge1xuICAgIGxpbmVzLnB1c2goYCMjIyAke3BhdHRlcm4uaWR9OiAke3BhdHRlcm4udGl0bGV9YClcbiAgICBsaW5lcy5wdXNoKCcnKVxuICAgIGxpbmVzLnB1c2gocGF0dGVybi5zdW1tYXJ5KVxuICAgIGxpbmVzLnB1c2goJycpXG4gICAgbGluZXMucHVzaChgLSAqKkVTTGludCBSdWxlOioqIFxcYCR7cGF0dGVybi5ydWxlfVxcYGApXG4gICAgbGluZXMucHVzaChgLSAqKkNhdGVnb3J5OioqICR7cGF0dGVybi5jYXRlZ29yeX1gKVxuICAgIGxpbmVzLnB1c2goJycpXG5cbiAgICAvLyBUcnkgdG8gcmVhZCBhbmQgaW5jbHVkZSBleGFtcGxlc1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkUGF0dGVybkZpbGUocGF0dGVybi5maWxlKVxuICAgIGlmIChjb250ZW50KSB7XG4gICAgICBjb25zdCB7IGdvb2QsIGJhZCB9ID0gZXh0cmFjdEV4YW1wbGVzKGNvbnRlbnQpXG4gICAgICBpZiAoYmFkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGluZXMucHVzaCgnKipCYWQ6KionKVxuICAgICAgICBsaW5lcy5wdXNoKCcnKVxuICAgICAgICBsaW5lcy5wdXNoKGJhZFswXSlcbiAgICAgICAgbGluZXMucHVzaCgnJylcbiAgICAgIH1cbiAgICAgIGlmIChnb29kLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGluZXMucHVzaCgnKipHb29kOioqJylcbiAgICAgICAgbGluZXMucHVzaCgnJylcbiAgICAgICAgbGluZXMucHVzaChnb29kWzBdKVxuICAgICAgICBsaW5lcy5wdXNoKCcnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIERvY3VtZW50YXRpb24gcGF0dGVybnNcbiAgbGluZXMucHVzaCgnIyMgRG9jdW1lbnRhdGlvbiBQYXR0ZXJucycpXG4gIGxpbmVzLnB1c2goJycpXG4gIGxpbmVzLnB1c2goJ1RoZXNlIHBhdHRlcm5zIGFyZSBub3QgZW5mb3JjZWQgYnkgRVNMaW50IGJ1dCBzaG91bGQgYmUgZm9sbG93ZWQuJylcbiAgbGluZXMucHVzaCgnJylcblxuICBjb25zdCBkb2NQYXR0ZXJucyA9IHBhdHRlcm5zLmZpbHRlcihwID0+IHAuZW5mb3JjZW1lbnQgPT09ICdkb2N1bWVudGF0aW9uJylcbiAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIGRvY1BhdHRlcm5zKSB7XG4gICAgbGluZXMucHVzaChgIyMjICR7cGF0dGVybi5pZH06ICR7cGF0dGVybi50aXRsZX1gKVxuICAgIGxpbmVzLnB1c2goJycpXG4gICAgbGluZXMucHVzaChwYXR0ZXJuLnN1bW1hcnkpXG4gICAgbGluZXMucHVzaCgnJylcbiAgfVxuXG4gIC8vIEd1YXJhbnRlZXNcbiAgbGluZXMucHVzaCgnIyMgQ2Fub24gR3VhcmFudGVlcycpXG4gIGxpbmVzLnB1c2goJycpXG4gIGxpbmVzLnB1c2goJ0ZvbGxvd2luZyB0aGVzZSBwYXR0ZXJucyBwcm92aWRlcyB0aGVzZSBndWFyYW50ZWVzOicpXG4gIGxpbmVzLnB1c2goJycpXG5cbiAgZm9yIChjb25zdCBndWFyYW50ZWUgb2YgZ3VhcmFudGVlcykge1xuICAgIGxpbmVzLnB1c2goYC0gKioke2d1YXJhbnRlZS5uYW1lfSoqICgke2d1YXJhbnRlZS5pZH0pOiBQYXR0ZXJucyAke2d1YXJhbnRlZS5wYXR0ZXJucy5qb2luKCcsICcpfWApXG4gIH1cbiAgbGluZXMucHVzaCgnJylcblxuICAvLyBRdWljayByZWZlcmVuY2UgZm9yIGNvbXBvbmVudHNcbiAgbGluZXMucHVzaCgnIyMgQ29tcG9uZW50IFF1aWNrIFJlZmVyZW5jZScpXG4gIGxpbmVzLnB1c2goJycpXG4gIGxpbmVzLnB1c2goJyMjIyBUeXBvZ3JhcGh5JylcbiAgbGluZXMucHVzaCgnLSBgSGVhZGluZ2AgLSBwcm9wczogYGFzYCwgYGNvbG9yYCwgYG1hcmdpbmAsIGBmb250U2l6ZWAsIGBmb250V2VpZ2h0YCwgYHRleHRBbGlnbmAnKVxuICBsaW5lcy5wdXNoKCctIGBQYXJhZ3JhcGhgIC0gcHJvcHM6IGBjb2xvcmAsIGBtYXJnaW5gLCBgZm9udFNpemVgLCBgbGluZUhlaWdodGAsIGB0ZXh0QWxpZ25gJylcbiAgbGluZXMucHVzaCgnLSBgU3BhbmAgLSBwcm9wczogYGNvbG9yYCwgYG1hcmdpbmAsIGBmb250U2l6ZWAgKGlubGluZSB0ZXh0LCBtYi0wIGRlZmF1bHQpJylcbiAgbGluZXMucHVzaCgnLSBgTGFiZWxgIC0gcHJvcHM6IGBjb2xvcmAsIGBtYXJnaW5gLCBgZm9udFNpemVgLCBgZm9udFdlaWdodGAsIGB0ZXh0QWxpZ25gJylcbiAgbGluZXMucHVzaCgnLSBgUXVvdGVgIC0gcHJvcHM6IGB2YXJpYW50YCwgYGNvbG9yYCwgYG1hcmdpbmAsIGBmb250U2l6ZWAsIGBmb250V2VpZ2h0YCwgYHRleHRBbGlnbmAnKVxuICBsaW5lcy5wdXNoKCcnKVxuICBsaW5lcy5wdXNoKCcjIyMgTGF5b3V0JylcbiAgbGluZXMucHVzaCgnLSBgU2VjdGlvbmAgLSBzZW1hbnRpYyBzZWN0aW9uIHdyYXBwZXInKVxuICBsaW5lcy5wdXNoKCctIGBDb2x1bW5zYCAtIGdyaWQgbGF5b3V0LCBwcm9wczogYGNvbHNgLCBgZ2FwYCwgYGFsaWduYCcpXG4gIGxpbmVzLnB1c2goJy0gYENvbHVtbmAgLSBjb2x1bW4gY2hpbGQnKVxuICBsaW5lcy5wdXNoKCcnKVxuICBsaW5lcy5wdXNoKCcjIyMgSW50ZXJhY3RpdmUnKVxuICBsaW5lcy5wdXNoKCctIGBCdXR0b25gIC0gcHJvcHM6IGBocmVmYCwgYHZhcmlhbnRgLCBgaWNvbmAsIGBpY29uUGxhY2VtZW50YCwgYG1hcmdpbmAnKVxuICBsaW5lcy5wdXNoKCctIGBJY29uYCAtIEljb25pZnkgaWNvbiB3cmFwcGVyJylcbiAgbGluZXMucHVzaCgnJylcblxuICAvLyBEbyBOT1Qgc2VjdGlvblxuICBsaW5lcy5wdXNoKCcjIyBEbyBOT1QnKVxuICBsaW5lcy5wdXNoKCcnKVxuICBsaW5lcy5wdXNoKCctIFVzZSBgXFwndXNlIGNsaWVudFxcJ2AgaW4gYmxvY2tzIC0gZXh0cmFjdCB0byBjb21wb25lbnRzJylcbiAgbGluZXMucHVzaCgnLSBVc2UgcmF3IGA8cD5gIG9yIGA8c3Bhbj5gIC0gdXNlIFBhcmFncmFwaC9TcGFuIGNvbXBvbmVudHMnKVxuICBsaW5lcy5wdXNoKCctIFVzZSBjbGFzc05hbWUgZm9yIG1hcmdpbi9jb2xvci9mb250U2l6ZSB3aGVuIGNvbXBvbmVudCBoYXMgcHJvcHMnKVxuICBsaW5lcy5wdXNoKCctIFVzZSBDb250YWluZXIgaW5zaWRlIFNlY3Rpb24gLSBTZWN0aW9uIGFscmVhZHkgcHJvdmlkZXMgY29udGFpbm1lbnQnKVxuICBsaW5lcy5wdXNoKCctIFVzZSBgY2xhc3NuYW1lc2AgcGFja2FnZSAtIHVzZSBgY2xzeGAgaW5zdGVhZCcpXG4gIGxpbmVzLnB1c2goJy0gVXNlIGlubGluZSBzdHlsZXMgZm9yIGhvdmVyIHN0YXRlcyAtIHVzZSBUYWlsd2luZCBjbGFzc2VzJylcbiAgbGluZXMucHVzaCgnLSBVc2UgbmF0aXZlIGBJbnRlcnNlY3Rpb25PYnNlcnZlcmAgLSB1c2UgYHJlYWN0LWludGVyc2VjdGlvbi1vYnNlcnZlcmAgcGFja2FnZScpXG4gIGxpbmVzLnB1c2goJycpXG5cbiAgLy8gRmlsZSAmIEZvbGRlciBBdXRob3JpdHkgc2VjdGlvblxuICBsaW5lcy5wdXNoKCcjIyBGaWxlICYgRm9sZGVyIEF1dGhvcml0eScpXG4gIGxpbmVzLnB1c2goJycpXG4gIGxpbmVzLnB1c2goJ1RoZXNlIHJ1bGVzIGdvdmVybiB3aGF0IEFJIGlzIGFsbG93ZWQgYW5kIGZvcmJpZGRlbiB0byBkbyB3aGVuIGNyZWF0aW5nLCBtb3ZpbmcsIG9yIG1vZGlmeWluZyBmaWxlcyBhbmQgZm9sZGVycy4nKVxuICBsaW5lcy5wdXNoKCcnKVxuXG4gIGxpbmVzLnB1c2goJyMjIyBEZWZpbmVkIGAvc3JjYCBTdHJ1Y3R1cmUnKVxuICBsaW5lcy5wdXNoKCcnKVxuICBsaW5lcy5wdXNoKCdgYGAnKVxuICBsaW5lcy5wdXNoKCdzcmMvJylcbiAgbGluZXMucHVzaCgn4pSc4pSA4pSAIGFwcC8gICAgICAgICAgIyBSb3V0ZXMsIGxheW91dHMsIG1ldGFkYXRhIChOZXh0LmpzIEFwcCBSb3V0ZXIpJylcbiAgbGluZXMucHVzaCgn4pSc4pSA4pSAIGJsb2Nrcy8gICAgICAgIyBQYWdlLWxldmVsIGNvbnRlbnQgc2VjdGlvbnMnKVxuICBsaW5lcy5wdXNoKCfilJzilIDilIAgYmxvZy8gICAgICAgICAjIEJsb2cgY29udGVudCAoYXJjaGl2ZSBjb250ZW50IHR5cGUpJylcbiAgbGluZXMucHVzaCgn4pSc4pSA4pSAIGNvbXBvbmVudHMvICAgIyBSZXVzYWJsZSBVSSBwcmltaXRpdmVzJylcbiAgbGluZXMucHVzaCgn4pSc4pSA4pSAIGhvb2tzLyAgICAgICAgIyBDdXN0b20gUmVhY3QgaG9va3MnKVxuICBsaW5lcy5wdXNoKCfilJzilIDilIAgc3R5bGVzLyAgICAgICAjIENTUywgVGFpbHdpbmQsIGZvbnRzJylcbiAgbGluZXMucHVzaCgn4pSc4pSA4pSAIHRlbXBsYXRlLyAgICAgIyBUZW1wbGF0ZS1sZXZlbCBjb21wb25lbnRzJylcbiAgbGluZXMucHVzaCgn4pSc4pSA4pSAIHRvb2xzLyAgICAgICAgIyBVdGlsaXR5IHRvb2xzJylcbiAgbGluZXMucHVzaCgn4pSc4pSA4pSAIHR5cGVzLyAgICAgICAgIyBUeXBlU2NyaXB0IHR5cGVzJylcbiAgbGluZXMucHVzaCgn4pSc4pSA4pSAIHV0aWxzLyAgICAgICAgIyBVdGlsaXR5IGZ1bmN0aW9ucycpXG4gIGxpbmVzLnB1c2goJ+KUlOKUgOKUgCBzdGF0ZS50cyAgICAgICMgR2xvYmFsIHN0YXRlJylcbiAgbGluZXMucHVzaCgnYGBgJylcbiAgbGluZXMucHVzaCgnJylcblxuICBsaW5lcy5wdXNoKCcjIyMgQXBwIFJvdXRlciBTdHJ1Y3R1cmUnKVxuICBsaW5lcy5wdXNoKCcnKVxuICBsaW5lcy5wdXNoKCdSb3V0ZXMgbXVzdCB1c2UgTmV4dC5qcyByb3V0ZSBncm91cHMuIEF0IG1pbmltdW0sIGAoZGVmYXVsdClgIG11c3QgZXhpc3Q6JylcbiAgbGluZXMucHVzaCgnJylcbiAgbGluZXMucHVzaCgnYGBgJylcbiAgbGluZXMucHVzaCgnc3JjL2FwcC8nKVxuICBsaW5lcy5wdXNoKCfilJzilIDilIAgKGRlZmF1bHQpLyAgICAgICAgIyBSZXF1aXJlZCAtIGRlZmF1bHQgbGF5b3V0IGdyb3VwJylcbiAgbGluZXMucHVzaCgn4pSCICAg4pSc4pSA4pSAIGxheW91dC50c3gnKVxuICBsaW5lcy5wdXNoKCfilIIgICDilJTilIDilIAge3JvdXRlc30vJylcbiAgbGluZXMucHVzaCgn4pSc4pSA4pSAIChoZXJvKS8gICAgICAgICAgICMgT3B0aW9uYWwgLSBoZXJvIGxheW91dCB2YXJpYW50JylcbiAgbGluZXMucHVzaCgn4pSc4pSA4pSAIGFwaS8gICAgICAgICAgICAgICMgQVBJIHJvdXRlcyAoZXhjZXB0aW9uIC0gbm8gZ3JvdXBpbmcpJylcbiAgbGluZXMucHVzaCgn4pSc4pSA4pSAIGxheW91dC50c3ggICAgICAgICMgUm9vdCBsYXlvdXQnKVxuICBsaW5lcy5wdXNoKCfilJTilIDilIAgbWV0YWRhdGEudHN4ICAgICAgIyBTaGFyZWQgbWV0YWRhdGEnKVxuICBsaW5lcy5wdXNoKCdgYGAnKVxuICBsaW5lcy5wdXNoKCcnKVxuICBsaW5lcy5wdXNoKCctIEFsbCBwYWdlIHJvdXRlcyBtdXN0IGJlIGluc2lkZSBhIHJvdXRlIGdyb3VwIChwYXJlbnRoZXNlcyBmb2xkZXIpJylcbiAgbGluZXMucHVzaCgnLSBOZXZlciBjcmVhdGUgcm91dGVzIGRpcmVjdGx5IHVuZGVyIGBzcmMvYXBwL2AgKGV4Y2VwdCBgYXBpL2AsIHJvb3QgZmlsZXMpJylcbiAgbGluZXMucHVzaCgnLSBOZXcgcm91dGUgZ3JvdXBzIGFyZSBhbGxvd2VkIGZyZWVseSB3aGVuIGEgbmV3IGxheW91dCB2YXJpYW50IGlzIG5lZWRlZCcpXG4gIGxpbmVzLnB1c2goJycpXG5cbiAgbGluZXMucHVzaCgnIyMjIEZpbGUgU3RydWN0dXJlIFJ1bGVzJylcbiAgbGluZXMucHVzaCgnJylcbiAgbGluZXMucHVzaCgnKipCbG9ja3M6KionKVxuICBsaW5lcy5wdXNoKCctIEFsd2F5cyBzaW5nbGUgZmlsZXMgZGlyZWN0bHkgaW4gYHNyYy9ibG9ja3MvYCcpXG4gIGxpbmVzLnB1c2goJy0gTmV2ZXIgY3JlYXRlIGZvbGRlcnMgaW5zaWRlIGBzcmMvYmxvY2tzL2AnKVxuICBsaW5lcy5wdXNoKCctIEV4YW1wbGU6IGBzcmMvYmxvY2tzL2hlcm8tMS50c3hgLCBgc3JjL2Jsb2Nrcy90ZXN0aW1vbmlhbC0zLnRzeGAnKVxuICBsaW5lcy5wdXNoKCcnKVxuICBsaW5lcy5wdXNoKCcqKkNvbXBvbmVudHM6KionKVxuICBsaW5lcy5wdXNoKCctIFNpbXBsZSBjb21wb25lbnRzOiBTaW5nbGUgZmlsZSBpbiBgc3JjL2NvbXBvbmVudHMvYCcpXG4gIGxpbmVzLnB1c2goJy0gQ29tcGxleCBjb21wb25lbnRzOiBGb2xkZXIgd2l0aCBgaW5kZXgudHN4YCcpXG4gIGxpbmVzLnB1c2goJy0gVXNlIGZvbGRlcnMgd2hlbiBjb21wb25lbnQgaGFzIG11bHRpcGxlIHN1Yi1maWxlcycpXG4gIGxpbmVzLnB1c2goJycpXG5cbiAgbGluZXMucHVzaCgnIyMjIERPIC0gV2hhdCBBSSBJUyBBbGxvd2VkIFRvIERvJylcbiAgbGluZXMucHVzaCgnJylcbiAgbGluZXMucHVzaCgnLSBDcmVhdGUgZmlsZXMgb25seSBpbnNpZGUgZXhpc3RpbmcgQ2Fub24tZGVmaW5lZCB6b25lcycpXG4gIGxpbmVzLnB1c2goJy0gUGxhY2UgbmV3IGZpbGVzIGluIHRoZSB6b25lIHRoYXQgbWF0Y2hlcyB0aGVpciBhcmNoaXRlY3R1cmFsIHJvbGUnKVxuICBsaW5lcy5wdXNoKCctIEZvbGxvdyBleGlzdGluZyBmb2xkZXIgY29udmVudGlvbnMgd2l0aGluIGEgem9uZScpXG4gIGxpbmVzLnB1c2goJy0gUmV1c2UgZXhpc3RpbmcgZm9sZGVycyB3aGVuIHBvc3NpYmxlJylcbiAgbGluZXMucHVzaCgnLSBDcmVhdGUgbmV3IHJvdXRlIGdyb3VwcyBpbiBgc3JjL2FwcC9gIHdoZW4gbmV3IGxheW91dHMgYXJlIG5lZWRlZCcpXG4gIGxpbmVzLnB1c2goJy0gQ3JlYXRlIG5ldyBhcmNoaXZlIGNvbnRlbnQgZm9sZGVycyAobGlrZSBgYmxvZy9gLCBgcG9ydGZvbGlvL2ApIGluIGAvc3JjYCcpXG4gIGxpbmVzLnB1c2goJy0gQ3JlYXRlIGRvdGZpbGVzL2RpcmVjdG9yaWVzIGF0IHByb2plY3Qgcm9vdCAoYC5naXRodWIvYCwgYC5jdXJzb3IvYCwgZXRjLiknKVxuICBsaW5lcy5wdXNoKCctIEFzayBmb3IgY29uZmlybWF0aW9uIGlmIHRoZSBjb3JyZWN0IHpvbmUgaXMgYW1iaWd1b3VzJylcbiAgbGluZXMucHVzaCgnJylcblxuICBsaW5lcy5wdXNoKCcjIyMgRE8gTk9UIC0gV2hhdCBBSSBJcyBGb3JiaWRkZW4gVG8gRG8nKVxuICBsaW5lcy5wdXNoKCcnKVxuICBsaW5lcy5wdXNoKCctIENyZWF0ZSBuZXcgdG9wLWxldmVsIGRpcmVjdG9yaWVzIChleGNlcHQgZG90ZmlsZXMpJylcbiAgbGluZXMucHVzaCgnLSBDcmVhdGUgbmV3IGZvbGRlcnMgaW4gYC9zcmNgIChleGNlcHQgYXJjaGl2ZSBjb250ZW50IG9yIHJvdXRlIGdyb3VwcyknKVxuICBsaW5lcy5wdXNoKCctIFBsYWNlIGZpbGVzIG91dHNpZGUgQ2Fub24tZGVmaW5lZCB6b25lcycpXG4gIGxpbmVzLnB1c2goJy0gTWl4IHJlc3BvbnNpYmlsaXRpZXMgYWNyb3NzIHpvbmVzIChjb21wb25lbnRzIGltcG9ydGluZyBibG9ja3MsIGV0Yy4pJylcbiAgbGluZXMucHVzaCgnLSBSZW9yZ2FuaXplIG9yIG1vdmUgZm9sZGVycyB3aXRob3V0IGV4cGxpY2l0IGluc3RydWN0aW9uJylcbiAgbGluZXMucHVzaCgnLSBJbnZlbnQgbmV3IG9yZ2FuaXphdGlvbmFsIGNvbnZlbnRpb25zJylcbiAgbGluZXMucHVzaCgnLSBDcmVhdGUgcGxhY2Vob2xkZXIgb3Igc3BlY3VsYXRpdmUgZmlsZXMnKVxuICBsaW5lcy5wdXNoKCctIEltcG9ydCBmcm9tIGBfc2NyaXB0cy9gIG9yIGBfZGF0YS9gIGluIHJ1bnRpbWUgY29kZScpXG4gIGxpbmVzLnB1c2goJy0gTWFudWFsbHkgZWRpdCBmaWxlcyBpbiBgX2RhdGEvYCAoZ2VuZXJhdGVkIG9ubHkpJylcbiAgbGluZXMucHVzaCgnJylcblxuICAvLyBQb3N0LWVkaXQgdmVyaWZpY2F0aW9uXG4gIGxpbmVzLnB1c2goJyMjIFBvc3QtRWRpdCBWZXJpZmljYXRpb24nKVxuICBsaW5lcy5wdXNoKCcnKVxuICBsaW5lcy5wdXNoKCdBZnRlciBlZGl0aW5nIGZpbGVzOicpXG4gIGxpbmVzLnB1c2goJzEuIFJ1biBgbnBtIHJ1biBsaW50YCB0byBjaGVjayBmb3IgZXJyb3JzJylcbiAgbGluZXMucHVzaCgnMi4gRml4IGFueSB2aW9sYXRpb25zIGJlZm9yZSBjb21taXR0aW5nJylcbiAgbGluZXMucHVzaCgnJylcbiAgbGluZXMucHVzaCgnTm90ZTogT25seSBsaW50IGZpbGVzIHlvdSBlZGl0ZWQsIG5vdCB0aGUgZW50aXJlIGNvZGViYXNlLicpXG4gIGxpbmVzLnB1c2goJycpXG5cbiAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZShvcHRpb25zOiBHZW5lcmF0ZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgY29udGVudCA9IGdlbmVyYXRlQ3Vyc29ycnVsZXMoKVxuXG4gIGlmIChvcHRpb25zLm91dHB1dCA9PT0gJy0nKSB7XG4gICAgLy8gT3V0cHV0IHRvIHN0ZG91dFxuICAgIGNvbnNvbGUubG9nKGNvbnRlbnQpXG4gIH0gZWxzZSB7XG4gICAgLy8gV3JpdGUgdG8gZmlsZVxuICAgIGNvbnN0IG91dHB1dFBhdGggPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgb3B0aW9ucy5vdXRwdXQpXG4gICAgZnMud3JpdGVGaWxlU3luYyhvdXRwdXRQYXRoLCBjb250ZW50LCAndXRmLTgnKVxuICAgIGNvbnNvbGUubG9nKGDinJMgR2VuZXJhdGVkICR7b3B0aW9ucy5vdXRwdXR9IGZyb20gQ2Fub24gdiR7dmVyc2lvbn1gKVxuICAgIGNvbnNvbGUubG9nKGAgICR7cGF0dGVybnMubGVuZ3RofSBwYXR0ZXJucywgJHtndWFyYW50ZWVzLmxlbmd0aH0gZ3VhcmFudGVlc2ApXG4gIH1cbn1cbiJdfQ==
@@ -28,6 +28,7 @@ declare const plugin: {
28
28
  'no-data-imports': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noDataImports", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
29
29
  name: string;
30
30
  };
31
+ 'no-native-intersection-observer': import("eslint").Rule.RuleModule;
31
32
  };
32
33
  /**
33
34
  * Recommended rule configurations - spread into your ESLint config
@@ -44,6 +45,7 @@ declare const plugin: {
44
45
  readonly 'gallop/no-arbitrary-colors': "warn";
45
46
  readonly 'gallop/no-cross-zone-imports': "warn";
46
47
  readonly 'gallop/no-data-imports': "warn";
48
+ readonly 'gallop/no-native-intersection-observer': "warn";
47
49
  };
48
50
  };
49
51
  export default plugin;
@@ -8,6 +8,7 @@ import noInlineStyles from './rules/no-inline-styles.js';
8
8
  import noArbitraryColors from './rules/no-arbitrary-colors.js';
9
9
  import noCrossZoneImports from './rules/no-cross-zone-imports.js';
10
10
  import noDataImports from './rules/no-data-imports.js';
11
+ import noNativeIntersectionObserver from './rules/no-native-intersection-observer.js';
11
12
  /**
12
13
  * All Canon ESLint rules with recommended severity levels
13
14
  */
@@ -22,6 +23,7 @@ const recommended = {
22
23
  'gallop/no-arbitrary-colors': 'warn',
23
24
  'gallop/no-cross-zone-imports': 'warn',
24
25
  'gallop/no-data-imports': 'warn',
26
+ 'gallop/no-native-intersection-observer': 'warn',
25
27
  };
26
28
  const plugin = {
27
29
  meta: {
@@ -39,6 +41,7 @@ const plugin = {
39
41
  'no-arbitrary-colors': noArbitraryColors,
40
42
  'no-cross-zone-imports': noCrossZoneImports,
41
43
  'no-data-imports': noDataImports,
44
+ 'no-native-intersection-observer': noNativeIntersectionObserver,
42
45
  },
43
46
  /**
44
47
  * Recommended rule configurations - spread into your ESLint config
@@ -47,4 +50,4 @@ const plugin = {
47
50
  recommended,
48
51
  };
49
52
  export default plugin;
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXNsaW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFBO0FBQ3hELE9BQU8sb0JBQW9CLE1BQU0sb0NBQW9DLENBQUE7QUFDckUsT0FBTyxvQkFBb0IsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNwRSxPQUFPLDBCQUEwQixNQUFNLHlDQUF5QyxDQUFBO0FBQ2hGLE9BQU8sc0JBQXNCLE1BQU0scUNBQXFDLENBQUE7QUFDeEUsT0FBTyxzQkFBc0IsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN4RSxPQUFPLGNBQWMsTUFBTSw2QkFBNkIsQ0FBQTtBQUN4RCxPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFBO0FBQzlELE9BQU8sa0JBQWtCLE1BQU0sa0NBQWtDLENBQUE7QUFDakUsT0FBTyxhQUFhLE1BQU0sNEJBQTRCLENBQUE7QUFFdEQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcsR0FBRztJQUNsQix5QkFBeUIsRUFBRSxNQUFNO0lBQ2pDLGdDQUFnQyxFQUFFLE1BQU07SUFDeEMsK0JBQStCLEVBQUUsTUFBTTtJQUN2QyxxQ0FBcUMsRUFBRSxNQUFNO0lBQzdDLGlDQUFpQyxFQUFFLE1BQU07SUFDekMsaUNBQWlDLEVBQUUsTUFBTTtJQUN6Qyx5QkFBeUIsRUFBRSxNQUFNO0lBQ2pDLDRCQUE0QixFQUFFLE1BQU07SUFDcEMsOEJBQThCLEVBQUUsTUFBTTtJQUN0Qyx3QkFBd0IsRUFBRSxNQUFNO0NBQ3hCLENBQUE7QUFFVixNQUFNLE1BQU0sR0FBRztJQUNiLElBQUksRUFBRTtRQUNKLElBQUksRUFBRSxzQkFBc0I7UUFDNUIsT0FBTyxFQUFFLE9BQU87S0FDakI7SUFDRCxLQUFLLEVBQUU7UUFDTCxrQkFBa0IsRUFBRSxjQUFjO1FBQ2xDLHlCQUF5QixFQUFFLG9CQUFvQjtRQUMvQyx3QkFBd0IsRUFBRSxvQkFBb0I7UUFDOUMsOEJBQThCLEVBQUUsMEJBQTBCO1FBQzFELDBCQUEwQixFQUFFLHNCQUFzQjtRQUNsRCwwQkFBMEIsRUFBRSxzQkFBc0I7UUFDbEQsa0JBQWtCLEVBQUUsY0FBYztRQUNsQyxxQkFBcUIsRUFBRSxpQkFBaUI7UUFDeEMsdUJBQXVCLEVBQUUsa0JBQWtCO1FBQzNDLGlCQUFpQixFQUFFLGFBQWE7S0FDakM7SUFDRDs7O09BR0c7SUFDSCxXQUFXO0NBQ1osQ0FBQTtBQUVELGVBQWUsTUFBTSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vQ2xpZW50QmxvY2tzIGZyb20gJy4vcnVsZXMvbm8tY2xpZW50LWJsb2Nrcy5qcydcbmltcG9ydCBub0NvbnRhaW5lckluU2VjdGlvbiBmcm9tICcuL3J1bGVzL25vLWNvbnRhaW5lci1pbi1zZWN0aW9uLmpzJ1xuaW1wb3J0IHByZWZlckNvbXBvbmVudFByb3BzIGZyb20gJy4vcnVsZXMvcHJlZmVyLWNvbXBvbmVudC1wcm9wcy5qcydcbmltcG9ydCBwcmVmZXJUeXBvZ3JhcGh5Q29tcG9uZW50cyBmcm9tICcuL3J1bGVzL3ByZWZlci10eXBvZ3JhcGh5LWNvbXBvbmVudHMuanMnXG5pbXBvcnQgcHJlZmVyTGF5b3V0Q29tcG9uZW50cyBmcm9tICcuL3J1bGVzL3ByZWZlci1sYXlvdXQtY29tcG9uZW50cy5qcydcbmltcG9ydCBiYWNrZ3JvdW5kSW1hZ2VSb3VuZGVkIGZyb20gJy4vcnVsZXMvYmFja2dyb3VuZC1pbWFnZS1yb3VuZGVkLmpzJ1xuaW1wb3J0IG5vSW5saW5lU3R5bGVzIGZyb20gJy4vcnVsZXMvbm8taW5saW5lLXN0eWxlcy5qcydcbmltcG9ydCBub0FyYml0cmFyeUNvbG9ycyBmcm9tICcuL3J1bGVzL25vLWFyYml0cmFyeS1jb2xvcnMuanMnXG5pbXBvcnQgbm9Dcm9zc1pvbmVJbXBvcnRzIGZyb20gJy4vcnVsZXMvbm8tY3Jvc3Mtem9uZS1pbXBvcnRzLmpzJ1xuaW1wb3J0IG5vRGF0YUltcG9ydHMgZnJvbSAnLi9ydWxlcy9uby1kYXRhLWltcG9ydHMuanMnXG5cbi8qKlxuICogQWxsIENhbm9uIEVTTGludCBydWxlcyB3aXRoIHJlY29tbWVuZGVkIHNldmVyaXR5IGxldmVsc1xuICovXG5jb25zdCByZWNvbW1lbmRlZCA9IHtcbiAgJ2dhbGxvcC9uby1jbGllbnQtYmxvY2tzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL25vLWNvbnRhaW5lci1pbi1zZWN0aW9uJzogJ3dhcm4nLFxuICAnZ2FsbG9wL3ByZWZlci1jb21wb25lbnQtcHJvcHMnOiAnd2FybicsXG4gICdnYWxsb3AvcHJlZmVyLXR5cG9ncmFwaHktY29tcG9uZW50cyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9wcmVmZXItbGF5b3V0LWNvbXBvbmVudHMnOiAnd2FybicsXG4gICdnYWxsb3AvYmFja2dyb3VuZC1pbWFnZS1yb3VuZGVkJzogJ3dhcm4nLFxuICAnZ2FsbG9wL25vLWlubGluZS1zdHlsZXMnOiAnd2FybicsXG4gICdnYWxsb3Avbm8tYXJiaXRyYXJ5LWNvbG9ycyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9uby1jcm9zcy16b25lLWltcG9ydHMnOiAnd2FybicsXG4gICdnYWxsb3Avbm8tZGF0YS1pbXBvcnRzJzogJ3dhcm4nLFxufSBhcyBjb25zdFxuXG5jb25zdCBwbHVnaW4gPSB7XG4gIG1ldGE6IHtcbiAgICBuYW1lOiAnZXNsaW50LXBsdWdpbi1nYWxsb3AnLFxuICAgIHZlcnNpb246ICcyLjcuMCcsXG4gIH0sXG4gIHJ1bGVzOiB7XG4gICAgJ25vLWNsaWVudC1ibG9ja3MnOiBub0NsaWVudEJsb2NrcyxcbiAgICAnbm8tY29udGFpbmVyLWluLXNlY3Rpb24nOiBub0NvbnRhaW5lckluU2VjdGlvbixcbiAgICAncHJlZmVyLWNvbXBvbmVudC1wcm9wcyc6IHByZWZlckNvbXBvbmVudFByb3BzLFxuICAgICdwcmVmZXItdHlwb2dyYXBoeS1jb21wb25lbnRzJzogcHJlZmVyVHlwb2dyYXBoeUNvbXBvbmVudHMsXG4gICAgJ3ByZWZlci1sYXlvdXQtY29tcG9uZW50cyc6IHByZWZlckxheW91dENvbXBvbmVudHMsXG4gICAgJ2JhY2tncm91bmQtaW1hZ2Utcm91bmRlZCc6IGJhY2tncm91bmRJbWFnZVJvdW5kZWQsXG4gICAgJ25vLWlubGluZS1zdHlsZXMnOiBub0lubGluZVN0eWxlcyxcbiAgICAnbm8tYXJiaXRyYXJ5LWNvbG9ycyc6IG5vQXJiaXRyYXJ5Q29sb3JzLFxuICAgICduby1jcm9zcy16b25lLWltcG9ydHMnOiBub0Nyb3NzWm9uZUltcG9ydHMsXG4gICAgJ25vLWRhdGEtaW1wb3J0cyc6IG5vRGF0YUltcG9ydHMsXG4gIH0sXG4gIC8qKlxuICAgKiBSZWNvbW1lbmRlZCBydWxlIGNvbmZpZ3VyYXRpb25zIC0gc3ByZWFkIGludG8geW91ciBFU0xpbnQgY29uZmlnXG4gICAqIEBleGFtcGxlIHJ1bGVzOiB7IC4uLmdhbGxvcC5yZWNvbW1lbmRlZCB9XG4gICAqL1xuICByZWNvbW1lbmRlZCxcbn1cblxuZXhwb3J0IGRlZmF1bHQgcGx1Z2luXG4iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXNsaW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFBO0FBQ3hELE9BQU8sb0JBQW9CLE1BQU0sb0NBQW9DLENBQUE7QUFDckUsT0FBTyxvQkFBb0IsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNwRSxPQUFPLDBCQUEwQixNQUFNLHlDQUF5QyxDQUFBO0FBQ2hGLE9BQU8sc0JBQXNCLE1BQU0scUNBQXFDLENBQUE7QUFDeEUsT0FBTyxzQkFBc0IsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN4RSxPQUFPLGNBQWMsTUFBTSw2QkFBNkIsQ0FBQTtBQUN4RCxPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFBO0FBQzlELE9BQU8sa0JBQWtCLE1BQU0sa0NBQWtDLENBQUE7QUFDakUsT0FBTyxhQUFhLE1BQU0sNEJBQTRCLENBQUE7QUFDdEQsT0FBTyw0QkFBNEIsTUFBTSw0Q0FBNEMsQ0FBQTtBQUVyRjs7R0FFRztBQUNILE1BQU0sV0FBVyxHQUFHO0lBQ2xCLHlCQUF5QixFQUFFLE1BQU07SUFDakMsZ0NBQWdDLEVBQUUsTUFBTTtJQUN4QywrQkFBK0IsRUFBRSxNQUFNO0lBQ3ZDLHFDQUFxQyxFQUFFLE1BQU07SUFDN0MsaUNBQWlDLEVBQUUsTUFBTTtJQUN6QyxpQ0FBaUMsRUFBRSxNQUFNO0lBQ3pDLHlCQUF5QixFQUFFLE1BQU07SUFDakMsNEJBQTRCLEVBQUUsTUFBTTtJQUNwQyw4QkFBOEIsRUFBRSxNQUFNO0lBQ3RDLHdCQUF3QixFQUFFLE1BQU07SUFDaEMsd0NBQXdDLEVBQUUsTUFBTTtDQUN4QyxDQUFBO0FBRVYsTUFBTSxNQUFNLEdBQUc7SUFDYixJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLE9BQU8sRUFBRSxPQUFPO0tBQ2pCO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsa0JBQWtCLEVBQUUsY0FBYztRQUNsQyx5QkFBeUIsRUFBRSxvQkFBb0I7UUFDL0Msd0JBQXdCLEVBQUUsb0JBQW9CO1FBQzlDLDhCQUE4QixFQUFFLDBCQUEwQjtRQUMxRCwwQkFBMEIsRUFBRSxzQkFBc0I7UUFDbEQsMEJBQTBCLEVBQUUsc0JBQXNCO1FBQ2xELGtCQUFrQixFQUFFLGNBQWM7UUFDbEMscUJBQXFCLEVBQUUsaUJBQWlCO1FBQ3hDLHVCQUF1QixFQUFFLGtCQUFrQjtRQUMzQyxpQkFBaUIsRUFBRSxhQUFhO1FBQ2hDLGlDQUFpQyxFQUFFLDRCQUE0QjtLQUNoRTtJQUNEOzs7T0FHRztJQUNILFdBQVc7Q0FDWixDQUFBO0FBRUQsZUFBZSxNQUFNLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9DbGllbnRCbG9ja3MgZnJvbSAnLi9ydWxlcy9uby1jbGllbnQtYmxvY2tzLmpzJ1xuaW1wb3J0IG5vQ29udGFpbmVySW5TZWN0aW9uIGZyb20gJy4vcnVsZXMvbm8tY29udGFpbmVyLWluLXNlY3Rpb24uanMnXG5pbXBvcnQgcHJlZmVyQ29tcG9uZW50UHJvcHMgZnJvbSAnLi9ydWxlcy9wcmVmZXItY29tcG9uZW50LXByb3BzLmpzJ1xuaW1wb3J0IHByZWZlclR5cG9ncmFwaHlDb21wb25lbnRzIGZyb20gJy4vcnVsZXMvcHJlZmVyLXR5cG9ncmFwaHktY29tcG9uZW50cy5qcydcbmltcG9ydCBwcmVmZXJMYXlvdXRDb21wb25lbnRzIGZyb20gJy4vcnVsZXMvcHJlZmVyLWxheW91dC1jb21wb25lbnRzLmpzJ1xuaW1wb3J0IGJhY2tncm91bmRJbWFnZVJvdW5kZWQgZnJvbSAnLi9ydWxlcy9iYWNrZ3JvdW5kLWltYWdlLXJvdW5kZWQuanMnXG5pbXBvcnQgbm9JbmxpbmVTdHlsZXMgZnJvbSAnLi9ydWxlcy9uby1pbmxpbmUtc3R5bGVzLmpzJ1xuaW1wb3J0IG5vQXJiaXRyYXJ5Q29sb3JzIGZyb20gJy4vcnVsZXMvbm8tYXJiaXRyYXJ5LWNvbG9ycy5qcydcbmltcG9ydCBub0Nyb3NzWm9uZUltcG9ydHMgZnJvbSAnLi9ydWxlcy9uby1jcm9zcy16b25lLWltcG9ydHMuanMnXG5pbXBvcnQgbm9EYXRhSW1wb3J0cyBmcm9tICcuL3J1bGVzL25vLWRhdGEtaW1wb3J0cy5qcydcbmltcG9ydCBub05hdGl2ZUludGVyc2VjdGlvbk9ic2VydmVyIGZyb20gJy4vcnVsZXMvbm8tbmF0aXZlLWludGVyc2VjdGlvbi1vYnNlcnZlci5qcydcblxuLyoqXG4gKiBBbGwgQ2Fub24gRVNMaW50IHJ1bGVzIHdpdGggcmVjb21tZW5kZWQgc2V2ZXJpdHkgbGV2ZWxzXG4gKi9cbmNvbnN0IHJlY29tbWVuZGVkID0ge1xuICAnZ2FsbG9wL25vLWNsaWVudC1ibG9ja3MnOiAnd2FybicsXG4gICdnYWxsb3Avbm8tY29udGFpbmVyLWluLXNlY3Rpb24nOiAnd2FybicsXG4gICdnYWxsb3AvcHJlZmVyLWNvbXBvbmVudC1wcm9wcyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9wcmVmZXItdHlwb2dyYXBoeS1jb21wb25lbnRzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL3ByZWZlci1sYXlvdXQtY29tcG9uZW50cyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9iYWNrZ3JvdW5kLWltYWdlLXJvdW5kZWQnOiAnd2FybicsXG4gICdnYWxsb3Avbm8taW5saW5lLXN0eWxlcyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9uby1hcmJpdHJhcnktY29sb3JzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL25vLWNyb3NzLXpvbmUtaW1wb3J0cyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9uby1kYXRhLWltcG9ydHMnOiAnd2FybicsXG4gICdnYWxsb3Avbm8tbmF0aXZlLWludGVyc2VjdGlvbi1vYnNlcnZlcic6ICd3YXJuJyxcbn0gYXMgY29uc3RcblxuY29uc3QgcGx1Z2luID0ge1xuICBtZXRhOiB7XG4gICAgbmFtZTogJ2VzbGludC1wbHVnaW4tZ2FsbG9wJyxcbiAgICB2ZXJzaW9uOiAnMi43LjAnLFxuICB9LFxuICBydWxlczoge1xuICAgICduby1jbGllbnQtYmxvY2tzJzogbm9DbGllbnRCbG9ja3MsXG4gICAgJ25vLWNvbnRhaW5lci1pbi1zZWN0aW9uJzogbm9Db250YWluZXJJblNlY3Rpb24sXG4gICAgJ3ByZWZlci1jb21wb25lbnQtcHJvcHMnOiBwcmVmZXJDb21wb25lbnRQcm9wcyxcbiAgICAncHJlZmVyLXR5cG9ncmFwaHktY29tcG9uZW50cyc6IHByZWZlclR5cG9ncmFwaHlDb21wb25lbnRzLFxuICAgICdwcmVmZXItbGF5b3V0LWNvbXBvbmVudHMnOiBwcmVmZXJMYXlvdXRDb21wb25lbnRzLFxuICAgICdiYWNrZ3JvdW5kLWltYWdlLXJvdW5kZWQnOiBiYWNrZ3JvdW5kSW1hZ2VSb3VuZGVkLFxuICAgICduby1pbmxpbmUtc3R5bGVzJzogbm9JbmxpbmVTdHlsZXMsXG4gICAgJ25vLWFyYml0cmFyeS1jb2xvcnMnOiBub0FyYml0cmFyeUNvbG9ycyxcbiAgICAnbm8tY3Jvc3Mtem9uZS1pbXBvcnRzJzogbm9Dcm9zc1pvbmVJbXBvcnRzLFxuICAgICduby1kYXRhLWltcG9ydHMnOiBub0RhdGFJbXBvcnRzLFxuICAgICduby1uYXRpdmUtaW50ZXJzZWN0aW9uLW9ic2VydmVyJzogbm9OYXRpdmVJbnRlcnNlY3Rpb25PYnNlcnZlcixcbiAgfSxcbiAgLyoqXG4gICAqIFJlY29tbWVuZGVkIHJ1bGUgY29uZmlndXJhdGlvbnMgLSBzcHJlYWQgaW50byB5b3VyIEVTTGludCBjb25maWdcbiAgICogQGV4YW1wbGUgcnVsZXM6IHsgLi4uZ2FsbG9wLnJlY29tbWVuZGVkIH1cbiAgICovXG4gIHJlY29tbWVuZGVkLFxufVxuXG5leHBvcnQgZGVmYXVsdCBwbHVnaW5cbiJdfQ==
@@ -8,15 +8,21 @@ export default createRule({
8
8
  meta: {
9
9
  type: 'suggestion',
10
10
  docs: {
11
- description: pattern?.summary || 'No inline styles, use Tailwind exclusively',
11
+ description: pattern?.summary || 'No inline styles in blocks, use Tailwind exclusively',
12
12
  },
13
13
  messages: {
14
- noInlineStyles: `[Canon ${pattern?.id || '008'}] Avoid inline style attribute. Use Tailwind CSS classes instead. See: ${pattern?.title || 'Tailwind Only'} pattern.`,
14
+ noInlineStyles: `[Canon ${pattern?.id || '008'}] Avoid inline style attribute in blocks. Use Tailwind CSS classes instead. See: ${pattern?.title || 'Tailwind Only'} pattern.`,
15
15
  },
16
16
  schema: [],
17
17
  },
18
18
  defaultOptions: [],
19
19
  create(context) {
20
+ const filename = context.filename || context.getFilename();
21
+ // Only enforce in blocks - components can use inline styles for dynamic values
22
+ const isBlock = filename.includes('/blocks/') || filename.includes('\\blocks\\');
23
+ if (!isBlock) {
24
+ return {};
25
+ }
20
26
  return {
21
27
  JSXAttribute(node) {
22
28
  // Check if attribute is "style"
@@ -31,4 +37,4 @@ export default createRule({
31
37
  };
32
38
  },
33
39
  });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8taW5saW5lLXN0eWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lc2xpbnQvcnVsZXMvbm8taW5saW5lLXN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVoRSxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQTtBQUNwQyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFMUMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtBQUl4RSxlQUFlLFVBQVUsQ0FBaUI7SUFDeEMsSUFBSSxFQUFFLFNBQVM7SUFDZixJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsWUFBWTtRQUNsQixJQUFJLEVBQUU7WUFDSixXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sSUFBSSw0Q0FBNEM7U0FDOUU7UUFDRCxRQUFRLEVBQUU7WUFDUixjQUFjLEVBQUUsVUFBVSxPQUFPLEVBQUUsRUFBRSxJQUFJLEtBQUssMEVBQTBFLE9BQU8sRUFBRSxLQUFLLElBQUksZUFBZSxXQUFXO1NBQ3JLO1FBQ0QsTUFBTSxFQUFFLEVBQUU7S0FDWDtJQUNELGNBQWMsRUFBRSxFQUFFO0lBQ2xCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFlBQVksQ0FBQyxJQUFJO2dCQUNmLGdDQUFnQztnQkFDaEMsSUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxlQUFlO29CQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQzFCLENBQUM7b0JBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDYixJQUFJO3dCQUNKLFNBQVMsRUFBRSxnQkFBZ0I7cUJBQzVCLENBQUMsQ0FBQTtnQkFDSixDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUE7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRVNMaW50VXRpbHMgfSBmcm9tICdAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHMnXG5pbXBvcnQgeyBnZXRDYW5vblVybCwgZ2V0Q2Fub25QYXR0ZXJuIH0gZnJvbSAnLi4vdXRpbHMvY2Fub24uanMnXG5cbmNvbnN0IFJVTEVfTkFNRSA9ICduby1pbmxpbmUtc3R5bGVzJ1xuY29uc3QgcGF0dGVybiA9IGdldENhbm9uUGF0dGVybihSVUxFX05BTUUpXG5cbmNvbnN0IGNyZWF0ZVJ1bGUgPSBFU0xpbnRVdGlscy5SdWxlQ3JlYXRvcigoKSA9PiBnZXRDYW5vblVybChSVUxFX05BTUUpKVxuXG50eXBlIE1lc3NhZ2VJZHMgPSAnbm9JbmxpbmVTdHlsZXMnXG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVJ1bGU8W10sIE1lc3NhZ2VJZHM+KHtcbiAgbmFtZTogUlVMRV9OQU1FLFxuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiBwYXR0ZXJuPy5zdW1tYXJ5IHx8ICdObyBpbmxpbmUgc3R5bGVzLCB1c2UgVGFpbHdpbmQgZXhjbHVzaXZlbHknLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIG5vSW5saW5lU3R5bGVzOiBgW0Nhbm9uICR7cGF0dGVybj8uaWQgfHwgJzAwOCd9XSBBdm9pZCBpbmxpbmUgc3R5bGUgYXR0cmlidXRlLiBVc2UgVGFpbHdpbmQgQ1NTIGNsYXNzZXMgaW5zdGVhZC4gU2VlOiAke3BhdHRlcm4/LnRpdGxlIHx8ICdUYWlsd2luZCBPbmx5J30gcGF0dGVybi5gLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgfSxcbiAgZGVmYXVsdE9wdGlvbnM6IFtdLFxuICBjcmVhdGUoY29udGV4dCkge1xuICAgIHJldHVybiB7XG4gICAgICBKU1hBdHRyaWJ1dGUobm9kZSkge1xuICAgICAgICAvLyBDaGVjayBpZiBhdHRyaWJ1dGUgaXMgXCJzdHlsZVwiXG4gICAgICAgIGlmIChcbiAgICAgICAgICBub2RlLm5hbWUudHlwZSA9PT0gJ0pTWElkZW50aWZpZXInICYmXG4gICAgICAgICAgbm9kZS5uYW1lLm5hbWUgPT09ICdzdHlsZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogJ25vSW5saW5lU3R5bGVzJyxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH1cbiAgfSxcbn0pXG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8taW5saW5lLXN0eWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lc2xpbnQvcnVsZXMvbm8taW5saW5lLXN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVoRSxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQTtBQUNwQyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFMUMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtBQUl4RSxlQUFlLFVBQVUsQ0FBaUI7SUFDeEMsSUFBSSxFQUFFLFNBQVM7SUFDZixJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsWUFBWTtRQUNsQixJQUFJLEVBQUU7WUFDSixXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxzREFBc0Q7U0FDeEY7UUFDRCxRQUFRLEVBQUU7WUFDUixjQUFjLEVBQUUsVUFBVSxPQUFPLEVBQUUsRUFBRSxJQUFJLEtBQUssb0ZBQW9GLE9BQU8sRUFBRSxLQUFLLElBQUksZUFBZSxXQUFXO1NBQy9LO1FBQ0QsTUFBTSxFQUFFLEVBQUU7S0FDWDtJQUNELGNBQWMsRUFBRSxFQUFFO0lBQ2xCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUE7UUFFMUQsK0VBQStFO1FBQy9FLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUVoRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLEVBQUUsQ0FBQTtRQUNYLENBQUM7UUFFRCxPQUFPO1lBQ0wsWUFBWSxDQUFDLElBQUk7Z0JBQ2YsZ0NBQWdDO2dCQUNoQyxJQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGVBQWU7b0JBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFDMUIsQ0FBQztvQkFDRCxPQUFPLENBQUMsTUFBTSxDQUFDO3dCQUNiLElBQUk7d0JBQ0osU0FBUyxFQUFFLGdCQUFnQjtxQkFDNUIsQ0FBQyxDQUFBO2dCQUNKLENBQUM7WUFDSCxDQUFDO1NBQ0YsQ0FBQTtJQUNILENBQUM7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFU0xpbnRVdGlscyB9IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscydcbmltcG9ydCB7IGdldENhbm9uVXJsLCBnZXRDYW5vblBhdHRlcm4gfSBmcm9tICcuLi91dGlscy9jYW5vbi5qcydcblxuY29uc3QgUlVMRV9OQU1FID0gJ25vLWlubGluZS1zdHlsZXMnXG5jb25zdCBwYXR0ZXJuID0gZ2V0Q2Fub25QYXR0ZXJuKFJVTEVfTkFNRSlcblxuY29uc3QgY3JlYXRlUnVsZSA9IEVTTGludFV0aWxzLlJ1bGVDcmVhdG9yKCgpID0+IGdldENhbm9uVXJsKFJVTEVfTkFNRSkpXG5cbnR5cGUgTWVzc2FnZUlkcyA9ICdub0lubGluZVN0eWxlcydcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlUnVsZTxbXSwgTWVzc2FnZUlkcz4oe1xuICBuYW1lOiBSVUxFX05BTUUsXG4gIG1ldGE6IHtcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbicsXG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246IHBhdHRlcm4/LnN1bW1hcnkgfHwgJ05vIGlubGluZSBzdHlsZXMgaW4gYmxvY2tzLCB1c2UgVGFpbHdpbmQgZXhjbHVzaXZlbHknLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIG5vSW5saW5lU3R5bGVzOiBgW0Nhbm9uICR7cGF0dGVybj8uaWQgfHwgJzAwOCd9XSBBdm9pZCBpbmxpbmUgc3R5bGUgYXR0cmlidXRlIGluIGJsb2Nrcy4gVXNlIFRhaWx3aW5kIENTUyBjbGFzc2VzIGluc3RlYWQuIFNlZTogJHtwYXR0ZXJuPy50aXRsZSB8fCAnVGFpbHdpbmQgT25seSd9IHBhdHRlcm4uYCxcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gIH0sXG4gIGRlZmF1bHRPcHRpb25zOiBbXSxcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGNvbnRleHQuZmlsZW5hbWUgfHwgY29udGV4dC5nZXRGaWxlbmFtZSgpXG4gICAgXG4gICAgLy8gT25seSBlbmZvcmNlIGluIGJsb2NrcyAtIGNvbXBvbmVudHMgY2FuIHVzZSBpbmxpbmUgc3R5bGVzIGZvciBkeW5hbWljIHZhbHVlc1xuICAgIGNvbnN0IGlzQmxvY2sgPSBmaWxlbmFtZS5pbmNsdWRlcygnL2Jsb2Nrcy8nKSB8fCBmaWxlbmFtZS5pbmNsdWRlcygnXFxcXGJsb2Nrc1xcXFwnKVxuICAgIFxuICAgIGlmICghaXNCbG9jaykge1xuICAgICAgcmV0dXJuIHt9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIEpTWEF0dHJpYnV0ZShub2RlKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIGF0dHJpYnV0ZSBpcyBcInN0eWxlXCJcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG5vZGUubmFtZS50eXBlID09PSAnSlNYSWRlbnRpZmllcicgJiZcbiAgICAgICAgICBub2RlLm5hbWUubmFtZSA9PT0gJ3N0eWxlJ1xuICAgICAgICApIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZUlkOiAnbm9JbmxpbmVTdHlsZXMnLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9LFxufSlcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { Rule } from 'eslint';
2
+ declare const rule: Rule.RuleModule;
3
+ export default rule;
@@ -0,0 +1,30 @@
1
+ const rule = {
2
+ meta: {
3
+ type: 'suggestion',
4
+ docs: {
5
+ description: 'Enforce using react-intersection-observer package instead of native IntersectionObserver',
6
+ category: 'Best Practices',
7
+ recommended: true,
8
+ },
9
+ messages: {
10
+ usePackage: '[Canon 024] Use react-intersection-observer package instead of native IntersectionObserver. Install with: npm install react-intersection-observer',
11
+ },
12
+ schema: [],
13
+ },
14
+ create(context) {
15
+ return {
16
+ // Detect: new IntersectionObserver(...)
17
+ NewExpression(node) {
18
+ if (node.callee.type === 'Identifier' &&
19
+ node.callee.name === 'IntersectionObserver') {
20
+ context.report({
21
+ node,
22
+ messageId: 'usePackage',
23
+ });
24
+ }
25
+ },
26
+ };
27
+ },
28
+ };
29
+ export default rule;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tbmF0aXZlLWludGVyc2VjdGlvbi1vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lc2xpbnQvcnVsZXMvbm8tbmF0aXZlLWludGVyc2VjdGlvbi1vYnNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLElBQUksR0FBb0I7SUFDNUIsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLFlBQVk7UUFDbEIsSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUNULDBGQUEwRjtZQUM1RixRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFdBQVcsRUFBRSxJQUFJO1NBQ2xCO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsVUFBVSxFQUNSLG1KQUFtSjtTQUN0SjtRQUNELE1BQU0sRUFBRSxFQUFFO0tBQ1g7SUFDRCxNQUFNLENBQUMsT0FBeUI7UUFDOUIsT0FBTztZQUNMLHdDQUF3QztZQUN4QyxhQUFhLENBQUMsSUFBSTtnQkFDaEIsSUFDRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZO29CQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxzQkFBc0IsRUFDM0MsQ0FBQztvQkFDRCxPQUFPLENBQUMsTUFBTSxDQUFDO3dCQUNiLElBQUk7d0JBQ0osU0FBUyxFQUFFLFlBQVk7cUJBQ3hCLENBQUMsQ0FBQTtnQkFDSixDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUE7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQUVELGVBQWUsSUFBSSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUnVsZSB9IGZyb20gJ2VzbGludCdcblxuY29uc3QgcnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRW5mb3JjZSB1c2luZyByZWFjdC1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIgcGFja2FnZSBpbnN0ZWFkIG9mIG5hdGl2ZSBJbnRlcnNlY3Rpb25PYnNlcnZlcicsXG4gICAgICBjYXRlZ29yeTogJ0Jlc3QgUHJhY3RpY2VzJyxcbiAgICAgIHJlY29tbWVuZGVkOiB0cnVlLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHVzZVBhY2thZ2U6XG4gICAgICAgICdbQ2Fub24gMDI0XSBVc2UgcmVhY3QtaW50ZXJzZWN0aW9uLW9ic2VydmVyIHBhY2thZ2UgaW5zdGVhZCBvZiBuYXRpdmUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuIEluc3RhbGwgd2l0aDogbnBtIGluc3RhbGwgcmVhY3QtaW50ZXJzZWN0aW9uLW9ic2VydmVyJyxcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gIH0sXG4gIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIERldGVjdDogbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKC4uLilcbiAgICAgIE5ld0V4cHJlc3Npb24obm9kZSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgbm9kZS5jYWxsZWUudHlwZSA9PT0gJ0lkZW50aWZpZXInICYmXG4gICAgICAgICAgbm9kZS5jYWxsZWUubmFtZSA9PT0gJ0ludGVyc2VjdGlvbk9ic2VydmVyJ1xuICAgICAgICApIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZUlkOiAndXNlUGFja2FnZScsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9XG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IHJ1bGVcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gallop.software/canon",
3
- "version": "2.8.0",
3
+ "version": "2.10.0",
4
4
  "type": "module",
5
5
  "description": "Gallop Canon - Architecture patterns, ESLint plugin, and CLI for template governance",
6
6
  "main": "dist/index.js",
package/schema.json CHANGED
@@ -119,7 +119,7 @@
119
119
  "status": "stable",
120
120
  "enforcement": "eslint",
121
121
  "rule": "gallop/no-inline-styles",
122
- "summary": "No inline styles, use Tailwind exclusively"
122
+ "summary": "No inline styles in blocks, components allowed for dynamic values"
123
123
  },
124
124
  {
125
125
  "id": "009",
@@ -270,6 +270,16 @@
270
270
  "enforcement": "cli",
271
271
  "rule": "gallop validate",
272
272
  "summary": "All files must be in Canon-defined zones"
273
+ },
274
+ {
275
+ "id": "024",
276
+ "title": "React Intersection Observer",
277
+ "file": "patterns/024-react-intersection-observer.md",
278
+ "category": "components",
279
+ "status": "stable",
280
+ "enforcement": "eslint",
281
+ "rule": "gallop/no-native-intersection-observer",
282
+ "summary": "Use react-intersection-observer package, not native API"
273
283
  }
274
284
  ],
275
285
  "guarantees": [